diff --git a/package.json b/package.json index d69bdc9aff..71467466f7 100644 --- a/package.json +++ b/package.json @@ -123,6 +123,7 @@ "electron-store": "^8.1.0", "electron-unhandled": "^4.0.1", "electron-updater": "^5.3.0", + "fast-average-color-node": "^2.6.0", "filenamify": "^4.3.0", "howler": "^2.2.3", "html-to-text": "^9.0.5", diff --git a/plugins/album-color-theme/back.js b/plugins/album-color-theme/back.js new file mode 100644 index 0000000000..9a7611760b --- /dev/null +++ b/plugins/album-color-theme/back.js @@ -0,0 +1,47 @@ +const path = require("path"); +const { injectCSS } = require("../utils"); + +const getAverageColor = require('fast-average-color-node').getAverageColor; + +const registerCallback = require("../../providers/song-info"); + + +//var randomColor = "#A020F0"; +//module.exports.randomColor = randomColor; + + +module.exports = (win) => { + injectCSS(win.webContents, path.join(__dirname, "style.css")); + + registerCallback((songInfo) => { + if (!songInfo.title && !songInfo.artist) { + return; + } + songTitle = songInfo.title; + songImage = songInfo.imageSrc; + + if(songTitle){ + getAverageColor(songImage, {algorithm: "simple"}) + .then(color => { + //div.style.backgroundColor = color.rgba; + //console.log('Average color', color); + if (color.hex === "#000000") { + color.rgb = "rgb(238,238,238)"; + color.isDark = false; + color.isLight = true; + } else if (color.hex === "#ffffff") { + color.rgb = "rgb(0,0,0)"; + color.isDark = true; + color.isLight = false; + } + const albumColor = color; + console.log(albumColor.hex); + win.webContents.send("album-color-changed", albumColor); + }) + .catch(e => { + console.log(e); + }); + } + }) + +}; diff --git a/plugins/album-color-theme/front.js b/plugins/album-color-theme/front.js new file mode 100644 index 0000000000..3fe4657158 --- /dev/null +++ b/plugins/album-color-theme/front.js @@ -0,0 +1,125 @@ +//const { albumColor } = require('./back'); +const { ipcRenderer } = require("electron"); +//const { ElementFromFile, templatePath } = require("../utils"); + + +var songTitle; +var songImage; + +function hexToHSL(H) { + // Convert hex to RGB first + let r = 0, g = 0, b = 0; + if (H.length == 4) { + r = "0x" + H[1] + H[1]; + g = "0x" + H[2] + H[2]; + b = "0x" + H[3] + H[3]; + } else if (H.length == 7) { + r = "0x" + H[1] + H[2]; + g = "0x" + H[3] + H[4]; + b = "0x" + H[5] + H[6]; + } + // Then to HSL + r /= 255; + g /= 255; + b /= 255; + let cmin = Math.min(r,g,b), + cmax = Math.max(r,g,b), + delta = cmax - cmin, + h = 0, + s = 0, + l = 0; + + if (delta == 0) + h = 0; + else if (cmax == r) + h = ((g - b) / delta) % 6; + else if (cmax == g) + h = (b - r) / delta + 2; + else + h = (r - g) / delta + 4; + + h = Math.round(h * 60); + + if (h < 0) + h += 360; + + l = (cmax + cmin) / 2; + s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1)); + s = +(s * 100).toFixed(1); + l = +(l * 100).toFixed(1); + + //return "hsl(" + h + "," + s + "%," + l + "%)"; + return [h,s,l]; + } + + //updated elements +const playerPage = document.querySelector("#player-page"); +const navBarBackground = document.querySelector("#nav-bar-background"); +const ytmusicPlayerBar = document.querySelector("ytmusic-player-bar"); +//const ytmusicAvToggle1 = document.querySelector(".song-button.ytmusic-av-toggle"); +//const ytmusicAvToggle2 = document.querySelector(".video-button.ytmusic-av-toggle"); +//const ytmusicAvToggleBg = document.querySelector(".av-toggle.ytmusic-av-toggle"); +const playerBarBackground = document.querySelector("#player-bar-background"); +const songImageElement = document.querySelector("#song-image"); +const sidebarBig = document.querySelector("#guide-wrapper"); +const sidebarSmall = document.querySelector("#mini-guide-background"); +const ytmusicAppLayout = document.querySelector("#layout"); + +var [hue, saturation, lightness] = [0,0,0]; + +//songImageElement.style.filter = "drop-shadow(0 0 3rem black)"; + +function changeElementColor(element, hue, saturation, lightness){ + element.style.backgroundColor = `hsl(${hue}, ${saturation}%, ${lightness}%)`; + //element.style.color = albumColor.isDark ? '#ffffff' : '#000000'; +} + +function changeColor() { + + const observer = new MutationObserver((mutationsList) => { + for (const mutation of mutationsList) { + /*if (mutation.type === 'attributes' && mutation.attributeName === 'style') { + const visibility = window.getComputedStyle(playerPage).getPropertyValue('visibility'); + if (visibility === 'visible') { + changeElementColor(sidebarSmall, hue, saturation, 30); + } else { + sidebarSmall.style.backgroundColor = 'black'; + } + }*/ + if (mutation.type === 'attributes') { + const isPageOpen = ytmusicAppLayout.hasAttribute('player-page-open'); + if(isPageOpen) { + changeElementColor(sidebarSmall, hue, saturation, 30); + //sidebarSmall.style.backgroundColor = 'blue'; + } + else{ + sidebarSmall.style.backgroundColor = 'black'; + } + } + } + }); + + observer.observe(playerPage, { attributes: true }); + + ipcRenderer.on("album-color-changed", (_, albumColor) => { + if (albumColor) { + [hue, saturation, lightness] = hexToHSL(albumColor.hex); + changeElementColor(playerPage, hue, saturation, 30); + changeElementColor(navBarBackground, hue, saturation, 15); + changeElementColor(ytmusicPlayerBar, hue, saturation, 15); + changeElementColor(playerBarBackground, hue, saturation, 15); + changeElementColor(sidebarBig, hue, saturation, 15); + if (ytmusicAppLayout.hasAttribute('player-page-open')) + changeElementColor(sidebarSmall, hue, saturation, 30); + const ytRightClickList = document.querySelector("tp-yt-paper-listbox"); + changeElementColor(ytRightClickList, hue, saturation, 15); + + } else { + playerPage.style.backgroundColor = "#000000"; + } + }); +} + + + +module.exports = changeColor; \ No newline at end of file diff --git a/plugins/album-color-theme/style.css b/plugins/album-color-theme/style.css new file mode 100644 index 0000000000..1debf6ad90 --- /dev/null +++ b/plugins/album-color-theme/style.css @@ -0,0 +1,43 @@ +/*:root { + --blue: #1e90ff; + --albumColor: #095e00; + } + + .left-content.ytmusic-nav-bar{ + filter: hue-rotate(-100deg) !important; +}*/ + +#progress-bar { + --paper-slider-active-color: white !important; + --paper-slider-knob-color: transparent !important; + } + +yt-page-navigation-progress{ + --yt-page-navigation-container-color: #00000046 !important; + --yt-page-navigation-progress-color: white !important; + } + + #player-page { + transition: transform 300ms,background-color 300ms cubic-bezier(0.2,0,0.6,1) !important; + } + + #nav-bar-background { + transition: opacity 200ms,background-color 300ms cubic-bezier(0.2,0,0.6,1) !important; + } + + #mini-guide-background { + transition: opacity 200ms,background-color 300ms cubic-bezier(0.2,0,0.6,1) !important; + border-right: 0px !important; + } + + #guide-wrapper { + transition: opacity 200ms,background-color 300ms cubic-bezier(0.2,0,0.6,1) !important; + } + + #img, #player, .song-media-controls.style-scope.ytmusic-player { + border-radius: 2% !important; + } + + #items { + border-radius: 10px !important; + } diff --git a/plugins/in-app-menu/front.js b/plugins/in-app-menu/front.js index e0fcfded8b..7e3ec94218 100644 --- a/plugins/in-app-menu/front.js +++ b/plugins/in-app-menu/front.js @@ -33,6 +33,19 @@ module.exports = (options) => { } }); + /*if (isEnabled("album-color-theme")) { + ipcRenderer.on("album-color-changed", (_, albumColor) => { + if (albumColor) { + //const [hue, saturation, lightness] = hexToHSL(albumColor.hex); + //changeElementColor(playerPage, hue, saturation, 30); + //changeElementColor(navBarBackground, hue, saturation, 30); + bar.updateBackground(Color.fromHex(albumColor.hex + "00")); + } else { + bar.updateBackground(Color.fromHex("#050505")); + } + }); + }*/ + if (isEnabled("picture-in-picture")) { ipcRenderer.on("pip-toggle", (_, pipEnabled) => { bar.refreshMenu(); diff --git a/plugins/in-app-menu/style.css b/plugins/in-app-menu/style.css index f0f31ed8af..35176a0a00 100644 --- a/plugins/in-app-menu/style.css +++ b/plugins/in-app-menu/style.css @@ -9,7 +9,7 @@ opacity: 1 !important; pointer-events: none !important; top: 30px !important; - height: 75px !important; + height: 60px !important; } /* fix top gap between nav-bar and browse-page */ @@ -34,7 +34,7 @@ ytmusic-pivot-bar-item-renderer { /* move up item selection renderers */ ytmusic-item-section-renderer.stuck #header.ytmusic-item-section-renderer, ytmusic-tabs.stuck { - top: calc(var(--ytmusic-nav-bar-height) - 15px) !important; + top: calc(var(--ytmusic-nav-bar-height) - 30px) !important; } /* fix weird positioning in search screen*/ @@ -56,14 +56,14 @@ yt-page-navigation-progress, /* custom scrollbar */ ::-webkit-scrollbar { width: 12px; - background-color: #030303; + background-color: #03030300; border-radius: 100px; -moz-border-radius: 100px; -webkit-border-radius: 100px; } /* hover effect for both scrollbar area, and scrollbar 'thumb' */ ::-webkit-scrollbar:hover { - background-color: rgba(15, 15, 15, 0.699); + background-color: rgba(15, 15, 15, 0); } /* the scrollbar 'thumb' ...that marque oval shape in a scrollbar */ @@ -109,3 +109,7 @@ ytmusic-nav-bar yt-icon, tp-yt-iron-dropdown { -webkit-app-region: no-drag; } + +ytmusic-search-box.style-scope.ytmusic-nav-bar { + margin-top: 0px !important; +} diff --git a/yarn.lock b/yarn.lock index c5676fac7b..b82aa0a03a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1220,6 +1220,17 @@ __metadata: languageName: node linkType: hard +"bl@npm:^4.0.3": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: ^5.5.0 + inherits: ^2.0.4 + readable-stream: ^3.4.0 + checksum: 9e8521fa7e83aa9427c6f8ccdcba6e8167ef30cc9a22df26effcc5ab682ef91d2cbc23a239f945d099289e4bbcfae7a192e9c28c84c6202e710a0dfec3722662 + languageName: node + linkType: hard + "bluebird-lst@npm:^1.0.9": version: 1.0.9 resolution: "bluebird-lst@npm:1.0.9" @@ -1330,7 +1341,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.1.0": +"buffer@npm:^5.1.0, buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -1552,6 +1563,13 @@ __metadata: languageName: node linkType: hard +"chownr@npm:^1.1.1": + version: 1.1.4 + resolution: "chownr@npm:1.1.4" + checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -1653,13 +1671,23 @@ __metadata: languageName: node linkType: hard -"color-name@npm:~1.1.4": +"color-name@npm:^1.0.0, color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard +"color-string@npm:^1.9.0": + version: 1.9.1 + resolution: "color-string@npm:1.9.1" + dependencies: + color-name: ^1.0.0 + simple-swizzle: ^0.2.2 + checksum: c13fe7cff7885f603f49105827d621ce87f4571d78ba28ef4a3f1a104304748f620615e6bf065ecd2145d0d9dad83a3553f52bb25ede7239d18e9f81622f1cc5 + languageName: node + linkType: hard + "color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" @@ -1669,6 +1697,16 @@ __metadata: languageName: node linkType: hard +"color@npm:^4.2.3": + version: 4.2.3 + resolution: "color@npm:4.2.3" + dependencies: + color-convert: ^2.0.1 + color-string: ^1.9.0 + checksum: 0579629c02c631b426780038da929cca8e8d80a40158b09811a0112a107c62e10e4aad719843b791b1e658ab4e800558f2e87ca4522c8b32349d497ecb6adeb4 + languageName: node + linkType: hard + "combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" @@ -1963,6 +2001,13 @@ __metadata: languageName: node linkType: hard +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + languageName: node + linkType: hard + "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -2058,6 +2103,13 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.1": + version: 2.0.1 + resolution: "detect-libc@npm:2.0.1" + checksum: ccb05fcabbb555beb544d48080179c18523a343face9ee4e1a86605a8715b4169f94d663c21a03c310ac824592f2ba9a5270218819bb411ad7be578a527593d7 + languageName: node + linkType: hard + "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" @@ -2430,7 +2482,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0": +"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -3059,6 +3111,13 @@ __metadata: languageName: node linkType: hard +"expand-template@npm:^2.0.3": + version: 2.0.3 + resolution: "expand-template@npm:2.0.3" + checksum: 588c19847216421ed92befb521767b7018dc88f88b0576df98cb242f20961425e96a92cbece525ef28cc5becceae5d544ae0f5b9b5e2aa05acb13716ca5b3099 + languageName: node + linkType: hard + "extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" @@ -3083,6 +3142,24 @@ __metadata: languageName: node linkType: hard +"fast-average-color-node@npm:^2.6.0": + version: 2.6.0 + resolution: "fast-average-color-node@npm:2.6.0" + dependencies: + fast-average-color: ^9.3.0 + node-fetch: ^2.6.7 + sharp: ^0.31.3 + checksum: 0daa070f46313491816e8338bd157ec78953a0381f1a71377722102ccfe02d0fd17d4e3ff1514f56feef07f12fffea2dec84f874518218deea558b6ae1e1ca99 + languageName: node + linkType: hard + +"fast-average-color@npm:^9.3.0": + version: 9.3.0 + resolution: "fast-average-color@npm:9.3.0" + checksum: 0e24b7cedfc8d57b2d4196e37618d1aa0a77b5e2138cdb0b53761d4fffc29b4ddbe76f0574743dc84a240453eefb85ff93b14c2b1e33ef375bbd4011b233eec5 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -3304,6 +3381,13 @@ __metadata: languageName: node linkType: hard +"fs-constants@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-constants@npm:1.0.0" + checksum: 18f5b718371816155849475ac36c7d0b24d39a11d91348cfcb308b4494824413e03572c403c86d3a260e049465518c4f0d5bd00f0371cdfcad6d4f30a85b350d + languageName: node + linkType: hard + "fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" @@ -3473,6 +3557,13 @@ __metadata: languageName: node linkType: hard +"github-from-package@npm:0.0.0": + version: 0.0.0 + resolution: "github-from-package@npm:0.0.0" + checksum: 14e448192a35c1e42efee94c9d01a10f42fe790375891a24b25261246ce9336ab9df5d274585aedd4568f7922246c2a78b8a8cd2571bfe99c693a9718e7dd0e3 + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -3942,13 +4033,20 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 languageName: node linkType: hard +"ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 + languageName: node + linkType: hard + "internal-slot@npm:^1.0.5": version: 1.0.5 resolution: "internal-slot@npm:1.0.5" @@ -4019,6 +4117,13 @@ __metadata: languageName: node linkType: hard +"is-arrayish@npm:^0.3.1": + version: 0.3.2 + resolution: "is-arrayish@npm:0.3.2" + checksum: 977e64f54d91c8f169b59afcd80ff19227e9f5c791fa28fa2e5bce355cbaf6c2c356711b734656e80c9dd4a854dd7efcf7894402f1031dfc5de5d620775b4d5f + languageName: node + linkType: hard + "is-bigint@npm:^1.0.1": version: 1.0.4 resolution: "is-bigint@npm:1.0.4" @@ -5002,7 +5107,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": +"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -5086,6 +5191,13 @@ __metadata: languageName: node linkType: hard +"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": + version: 0.5.3 + resolution: "mkdirp-classic@npm:0.5.3" + checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac + languageName: node + linkType: hard + "mkdirp@npm:^0.5.1": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" @@ -5147,6 +5259,13 @@ __metadata: languageName: node linkType: hard +"napi-build-utils@npm:^1.0.1": + version: 1.0.2 + resolution: "napi-build-utils@npm:1.0.2" + checksum: 06c14271ee966e108d55ae109f340976a9556c8603e888037145d6522726aebe89dd0c861b4b83947feaf6d39e79e08817559e8693deedc2c94e82c5cbd090c7 + languageName: node + linkType: hard + "natural-compare-lite@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare-lite@npm:1.4.0" @@ -5175,6 +5294,15 @@ __metadata: languageName: node linkType: hard +"node-abi@npm:^3.3.0": + version: 3.45.0 + resolution: "node-abi@npm:3.45.0" + dependencies: + semver: ^7.3.5 + checksum: 18c4305d7de5f1132741a2a66ba652941518210d02c9268702abe97ce1c166db468b4fc3e85fff04b9c19218c2e47f4e295f9a46422dc834932f4e11443400cd + languageName: node + linkType: hard + "node-addon-api@npm:^1.6.3": version: 1.7.2 resolution: "node-addon-api@npm:1.7.2" @@ -5184,6 +5312,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^5.0.0": + version: 5.1.0 + resolution: "node-addon-api@npm:5.1.0" + dependencies: + node-gyp: latest + checksum: 2508bd2d2981945406243a7bd31362fc7af8b70b8b4d65f869c61731800058fb818cc2fd36c8eac714ddd0e568cc85becf5e165cebbdf7b5024d5151bbc75ea1 + languageName: node + linkType: hard + "node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.9": version: 2.6.9 resolution: "node-fetch@npm:2.6.9" @@ -5198,6 +5335,20 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:^2.6.7": + version: 2.6.12 + resolution: "node-fetch@npm:2.6.12" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 3bc1655203d47ee8e313c0d96664b9673a3d4dd8002740318e9d27d14ef306693a4b2ef8d6525775056fd912a19e23f3ac0d7111ad8925877b7567b29a625592 + languageName: node + linkType: hard + "node-gyp@npm:^9.3.1, node-gyp@npm:latest": version: 9.3.1 resolution: "node-gyp@npm:9.3.1" @@ -5705,6 +5856,28 @@ __metadata: languageName: node linkType: hard +"prebuild-install@npm:^7.1.1": + version: 7.1.1 + resolution: "prebuild-install@npm:7.1.1" + dependencies: + detect-libc: ^2.0.0 + expand-template: ^2.0.3 + github-from-package: 0.0.0 + minimist: ^1.2.3 + mkdirp-classic: ^0.5.3 + napi-build-utils: ^1.0.1 + node-abi: ^3.3.0 + pump: ^3.0.0 + rc: ^1.2.7 + simple-get: ^4.0.0 + tar-fs: ^2.0.0 + tunnel-agent: ^0.6.0 + bin: + prebuild-install: bin.js + checksum: dbf96d0146b6b5827fc8f67f72074d2e19c69628b9a7a0a17d0fad1bf37e9f06922896972e074197fc00a52eae912993e6ef5a0d471652f561df5cb516f3f467 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -5813,6 +5986,20 @@ __metadata: languageName: node linkType: hard +"rc@npm:^1.2.7": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: ^0.6.0 + ini: ~1.3.0 + minimist: ^1.2.0 + strip-json-comments: ~2.0.1 + bin: + rc: ./cli.js + checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e + languageName: node + linkType: hard + "read-config-file@npm:6.2.0": version: 6.2.0 resolution: "read-config-file@npm:6.2.0" @@ -5895,7 +6082,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.6.0": +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -6106,7 +6293,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.1.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -6249,6 +6436,23 @@ __metadata: languageName: node linkType: hard +"sharp@npm:^0.31.3": + version: 0.31.3 + resolution: "sharp@npm:0.31.3" + dependencies: + color: ^4.2.3 + detect-libc: ^2.0.1 + node-addon-api: ^5.0.0 + node-gyp: latest + prebuild-install: ^7.1.1 + semver: ^7.3.8 + simple-get: ^4.0.1 + tar-fs: ^2.1.1 + tunnel-agent: ^0.6.0 + checksum: 29fd1dfbc616c6389f53f366cec342b4353d9f2a37e98952ca273db38dca57dfa0f336322d6d763f0fae876042ead22fd86ffe26d70c32ade2458d421db60d04 + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -6283,6 +6487,33 @@ __metadata: languageName: node linkType: hard +"simple-concat@npm:^1.0.0": + version: 1.0.1 + resolution: "simple-concat@npm:1.0.1" + checksum: 4d211042cc3d73a718c21ac6c4e7d7a0363e184be6a5ad25c8a1502e49df6d0a0253979e3d50dbdd3f60ef6c6c58d756b5d66ac1e05cda9cacd2e9fc59e3876a + languageName: node + linkType: hard + +"simple-get@npm:^4.0.0, simple-get@npm:^4.0.1": + version: 4.0.1 + resolution: "simple-get@npm:4.0.1" + dependencies: + decompress-response: ^6.0.0 + once: ^1.3.1 + simple-concat: ^1.0.0 + checksum: e4132fd27cf7af230d853fa45c1b8ce900cb430dd0a3c6d3829649fe4f2b26574c803698076c4006450efb0fad2ba8c5455fbb5755d4b0a5ec42d4f12b31d27e + languageName: node + linkType: hard + +"simple-swizzle@npm:^0.2.2": + version: 0.2.2 + resolution: "simple-swizzle@npm:0.2.2" + dependencies: + is-arrayish: ^0.3.1 + checksum: a7f3f2ab5c76c4472d5c578df892e857323e452d9f392e1b5cf74b74db66e6294a1e1b8b390b519fa1b96b5b613f2a37db6cffef52c3f1f8f3c5ea64eb2d54c0 + languageName: node + linkType: hard + "simple-update-notifier@npm:^1.0.7": version: 1.1.0 resolution: "simple-update-notifier@npm:1.1.0" @@ -6568,6 +6799,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 + languageName: node + linkType: hard + "strip-outer@npm:^1.0.1": version: 1.0.1 resolution: "strip-outer@npm:1.0.1" @@ -6628,6 +6866,31 @@ __metadata: languageName: node linkType: hard +"tar-fs@npm:^2.0.0, tar-fs@npm:^2.1.1": + version: 2.1.1 + resolution: "tar-fs@npm:2.1.1" + dependencies: + chownr: ^1.1.1 + mkdirp-classic: ^0.5.2 + pump: ^3.0.0 + tar-stream: ^2.1.4 + checksum: f5b9a70059f5b2969e65f037b4e4da2daf0fa762d3d232ffd96e819e3f94665dbbbe62f76f084f1acb4dbdcce16c6e4dac08d12ffc6d24b8d76720f4d9cf032d + languageName: node + linkType: hard + +"tar-stream@npm:^2.1.4": + version: 2.2.0 + resolution: "tar-stream@npm:2.2.0" + dependencies: + bl: ^4.0.3 + end-of-stream: ^1.4.1 + fs-constants: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^3.1.1 + checksum: 699831a8b97666ef50021c767f84924cfee21c142c2eb0e79c63254e140e6408d6d55a065a2992548e72b06de39237ef2b802b99e3ece93ca3904a37622a66f3 + languageName: node + linkType: hard + "tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.13 resolution: "tar@npm:6.1.13" @@ -6788,6 +7051,15 @@ __metadata: languageName: node linkType: hard +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: ^5.0.1 + checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -7349,6 +7621,7 @@ __metadata: electron-store: ^8.1.0 electron-unhandled: ^4.0.1 electron-updater: ^5.3.0 + fast-average-color-node: ^2.6.0 filenamify: ^4.3.0 howler: ^2.2.3 html-to-text: ^9.0.5