From d0532d691e56f955ef0b41f5fe2efe6295dddf9e Mon Sep 17 00:00:00 2001 From: TC Date: Sat, 9 Apr 2022 15:02:06 +0200 Subject: [PATCH 1/5] Process lyrics HTML in Genius util --- package.json | 1 + plugins/lyrics-genius/back.js | 33 +++++++-- plugins/lyrics-genius/front.js | 23 ++---- yarn.lock | 130 ++++++++++++++++++++++++++++++++- 4 files changed, 164 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index 5262cbc4..3f15d99a 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,7 @@ "electron-updater": "^4.6.3", "filenamify": "^4.3.0", "hark": "^1.2.3", + "html-to-text": "^8.2.0", "md5": "^2.3.0", "mpris-service": "^2.1.2", "node-fetch": "^2.6.7", diff --git a/plugins/lyrics-genius/back.js b/plugins/lyrics-genius/back.js index 9991ab78..42304df9 100644 --- a/plugins/lyrics-genius/back.js +++ b/plugins/lyrics-genius/back.js @@ -2,6 +2,7 @@ const { join } = require("path"); const { ipcMain } = require("electron"); const is = require("electron-is"); +const { convert } = require("html-to-text"); const fetch = require("node-fetch"); const { cleanupName } = require("../../providers/song-info"); @@ -12,15 +13,14 @@ module.exports = async (win) => { ipcMain.on("search-genius-lyrics", async (event, extractedSongInfo) => { const metadata = JSON.parse(extractedSongInfo); - const queryString = `${cleanupName(metadata.artist)} ${cleanupName( - metadata.title - )}`; - - event.returnValue = await fetchFromGenius(queryString); + event.returnValue = await fetchFromGenius(metadata); }); }; -const fetchFromGenius = async (queryString) => { +const fetchFromGenius = async (metadata) => { + const queryString = `${cleanupName(metadata.artist)} ${cleanupName( + metadata.title + )}`; let response = await fetch( `https://genius.com/api/search/multi?per_page=5&q=${encodeURI(queryString)}` ); @@ -46,5 +46,24 @@ const fetchFromGenius = async (queryString) => { return null; } - return await response.text(); + const html = await response.text(); + const lyrics = convert(html, { + baseElements: { + selectors: ['[class^="Lyrics__Container"]', ".lyrics"], + }, + selectors: [ + { + selector: "a", + format: "linkFormatter", + }, + ], + formatters: { + // Remove links by keeping only the content + linkFormatter: (elem, walk, builder) => { + walk(elem.children, builder); + }, + }, + }); + + return lyrics; }; diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js index d000a13c..c62bfb0c 100644 --- a/plugins/lyrics-genius/front.js +++ b/plugins/lyrics-genius/front.js @@ -17,11 +17,11 @@ module.exports = () => { let hasLyrics = true; - const html = ipcRenderer.sendSync( + const lyrics = ipcRenderer.sendSync( "search-genius-lyrics", extractedSongInfo ); - if (!html) { + if (!lyrics) { // Delete previous lyrics if tab is open and couldn't get new lyrics checkLyricsContainer(() => { hasLyrics = false; @@ -34,16 +34,6 @@ module.exports = () => { console.log("Fetched lyrics from Genius"); } - const wrapper = document.createElement("div"); - wrapper.innerHTML = html; - - const lyrics = [...wrapper.querySelectorAll('[class^="Lyrics__Container"]')].map(d => d.innerHTML).join('
') - || wrapper.querySelector(".lyrics")?.innerHTML; - - if (!lyrics) { - return; - } - enableLyricsTab(); setTabsOnclick(enableLyricsTab); @@ -73,9 +63,12 @@ module.exports = () => { } function setLyrics(lyricsContainer) { - lyricsContainer.innerHTML = - `
- ${hasLyrics ? lyrics : 'Could not retrieve lyrics from genius'} + lyricsContainer.innerHTML = `
+ ${ + hasLyrics + ? lyrics.replace(/(?:\r\n|\r|\n)/g, "
") + : "Could not retrieve lyrics from genius" + }
`; diff --git a/yarn.lock b/yarn.lock index 9013f414..8583bd89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1344,6 +1344,14 @@ resolved "https://registry.yarnpkg.com/@remusao/trie/-/trie-1.4.1.tgz#755d09f8a007476334e611f42719b2d581f00720" integrity sha512-yvwa+aCyYI/UjeD39BnpMypG8N06l86wIDW1/PAc6ihBRnodIfZDwccxQN3n1t74wduzaz74m4ZMHZnB06567Q== +"@selderee/plugin-htmlparser2@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz#27e994afd1c2cb647ceb5406a185a5574188069d" + integrity sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA== + dependencies: + domhandler "^4.2.0" + selderee "^0.6.0" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -2589,6 +2597,11 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" @@ -2940,6 +2953,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= + discord-rpc@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/discord-rpc/-/discord-rpc-4.0.1.tgz#a89aa04a048aa83ad4f347d53fa0162501eae0d8" @@ -2993,11 +3011,25 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -3005,6 +3037,22 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domhandler@^4.0.0, domhandler@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.5.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -3270,6 +3318,11 @@ ensure-error@^2.0.0: resolved "https://registry.yarnpkg.com/ensure-error/-/ensure-error-2.1.0.tgz#f11fbe383c0cf4a54850ac77acceb7bc06e0f99d" integrity sha512-+BMSJHw9gxiJAAp2ZR1E0TNcL09dD3lOvkl7WVm4+Y6xnes/pMetP/TzCHiDduh8ihNDjbGfuYxl7l4PA1xZ8A== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + env-editor@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/env-editor/-/env-editor-0.4.2.tgz#4e76568d0bd8f5c2b6d314a9412c8fe9aa3ae861" @@ -4396,6 +4449,11 @@ hasha@^2.2.0: is-stream "^1.0.1" pinkie-promise "^2.0.0" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hexy@^0.2.10: version "0.2.11" resolved "https://registry.yarnpkg.com/hexy/-/hexy-0.2.11.tgz#9939c25cb6f86a91302f22b8a8a72573518e25b4" @@ -4425,6 +4483,28 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +html-to-text@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/html-to-text/-/html-to-text-8.2.0.tgz#8b35e280ba7fc27710b7aa76d4500aab30731924" + integrity sha512-CLXExYn1b++Lgri+ZyVvbUEFwzkLZppjjZOwB7X1qv2jIi8MrMEvxWX5KQ7zATAzTvcqgmtO00M2kCRMtEdOKQ== + dependencies: + "@selderee/plugin-htmlparser2" "^0.6.0" + deepmerge "^4.2.2" + he "^1.2.0" + htmlparser2 "^6.1.0" + minimist "^1.2.6" + selderee "^0.6.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -6058,7 +6138,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@1.2.0, minimist@1.2.5, minimist@^1.2.0, minimist@^1.2.5: +minimist@1.2.0, minimist@1.2.5, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -6070,6 +6150,11 @@ mkdirp@^0.5.1, mkdirp@^0.5.4: dependencies: minimist "^1.2.5" +moo@^0.5.0, moo@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" + integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== + mpris-service@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/mpris-service/-/mpris-service-2.1.2.tgz#ed6db2574f48e1fc356413fd3fc8e857d93d2e7b" @@ -6109,6 +6194,16 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +nearley@^2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== + dependencies: + commander "^2.19.0" + moo "^0.5.0" + railroad-diagrams "^1.0.0" + randexp "0.4.6" + neo-async@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -6498,6 +6593,14 @@ parse5@6.0.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +parseley@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/parseley/-/parseley-0.7.0.tgz#9949e3a0ed05c5072adb04f013c2810cf49171a8" + integrity sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw== + dependencies: + moo "^0.5.1" + nearley "^2.20.1" + path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -6868,6 +6971,19 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= + +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -7119,6 +7235,11 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -7201,6 +7322,13 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" +selderee@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/selderee/-/selderee-0.6.0.tgz#f3bee66cfebcb6f33df98e4a1df77388b42a96f7" + integrity sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg== + dependencies: + parseley "^0.7.0" + semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" From dbc34e6d0d349c1b1617d02d8521a5edd242aaea Mon Sep 17 00:00:00 2001 From: TC Date: Sat, 9 Apr 2022 15:01:39 +0200 Subject: [PATCH 2/5] Export fetchFromGenius util --- plugins/lyrics-genius/back.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/lyrics-genius/back.js b/plugins/lyrics-genius/back.js index 42304df9..05548648 100644 --- a/plugins/lyrics-genius/back.js +++ b/plugins/lyrics-genius/back.js @@ -67,3 +67,5 @@ const fetchFromGenius = async (metadata) => { return lyrics; }; + +module.exports.fetchFromGenius = fetchFromGenius; From 71e9f280a107e322ab5929be093c88020f02e9b7 Mon Sep 17 00:00:00 2001 From: TC Date: Sat, 9 Apr 2022 15:02:54 +0200 Subject: [PATCH 3/5] Set lyrics metadata if Genius plugin is enabled --- plugins/downloader/back.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/downloader/back.js b/plugins/downloader/back.js index 060245ed..daea62b2 100644 --- a/plugins/downloader/back.js +++ b/plugins/downloader/back.js @@ -8,7 +8,9 @@ const registerCallback = require("../../providers/song-info"); const { injectCSS, listenAction } = require("../utils"); const { cropMaxWidth } = require("./utils"); const { ACTIONS, CHANNEL } = require("./actions.js"); +const { isEnabled } = require("../../config/plugins"); const { getImage } = require("../../providers/song-info"); +const { fetchFromGenius } = require("../lyrics-genius/back"); const sendError = (win, error) => { win.setProgressBar(-1); // close progress bar @@ -71,6 +73,15 @@ function handle(win) { description: "" }); } + if (isEnabled("lyrics-genius")) { + const lyrics = await fetchFromGenius(songMetadata); + if (lyrics) { + writer.setFrame("USLT", { + description: lyrics, + lyrics: lyrics, + }); + } + } writer.addTag(); fileBuffer = Buffer.from(writer.arrayBuffer); } catch (error) { From 05b6435a5ca8d36f5054513b87e3336153cd3d71 Mon Sep 17 00:00:00 2001 From: TC Date: Sat, 9 Apr 2022 15:03:06 +0200 Subject: [PATCH 4/5] nit: lint package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3f15d99a..e9207156 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "hideCredit": true, "package": true, "unreleased": true, - "output": "changelog.md" + "output": "changelog.md" }, "xo": { "envs": [ From e071f768b4e59919ff6ae7a48db69739b39e26c1 Mon Sep 17 00:00:00 2001 From: TC Date: Sat, 9 Apr 2022 15:21:59 +0200 Subject: [PATCH 5/5] Force minimist 1.2.6 to fix vuln --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e9207156..fa14990e 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ }, "resolutions": { "glob-parent": "5.1.2", - "minimist": "1.2.5", + "minimist": "1.2.6", "yargs-parser": "18.1.3" }, "auto-changelog": { diff --git a/yarn.lock b/yarn.lock index 8583bd89..12d060ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6138,10 +6138,10 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@1.2.0, minimist@1.2.5, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@1.2.0, minimist@1.2.6, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== mkdirp@^0.5.1, mkdirp@^0.5.4: version "0.5.5"