From 7aa970cebc8e1407ff6937b402ba303e14c73efd Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Wed, 11 Oct 2023 18:24:11 +0900 Subject: [PATCH 1/4] fix: bump dependencies --- index.ts | 13 +- package-lock.json | 134 +++++++++--------- package.json | 17 +-- plugins/bypass-age-restrictions/front.ts | 2 +- ...simple-youtube-age-restriction-bypass.d.ts | 4 + plugins/visualizer/butterchurn.d.ts | 4 +- plugins/visualizer/visualizers/butterchurn.ts | 4 +- utils/generate-package-json.js | 42 ------ 8 files changed, 86 insertions(+), 134 deletions(-) create mode 100644 plugins/bypass-age-restrictions/simple-youtube-age-restriction-bypass.d.ts delete mode 100755 utils/generate-package-json.js diff --git a/index.ts b/index.ts index 573207b4..b813a2fe 100644 --- a/index.ts +++ b/index.ts @@ -1,14 +1,12 @@ import path from 'node:path'; import { BrowserWindow, app, screen, globalShortcut, session, shell, dialog, ipcMain } from 'electron'; -import enhanceWebRequest from 'electron-better-web-request'; +import enhanceWebRequest, { BetterSession } from '@jellybrick/electron-better-web-request'; import is from 'electron-is'; import unhandled from 'electron-unhandled'; import { autoUpdater } from 'electron-updater'; import electronDebug from 'electron-debug'; -import { BetterWebRequest } from 'electron-better-web-request/lib/electron-better-web-request'; - import config from './config'; import { setApplicationMenu } from './menu'; import { fileExists, injectCSS, injectCSSAsFile } from './plugins/utils'; @@ -603,8 +601,6 @@ function showUnresponsiveDialog(win: BrowserWindow, details: Electron.RenderProc }); } -// HACK: electron-better-web-request's typing is wrong -type BetterSession = Omit & { webRequest: BetterWebRequest & Electron.WebRequest }; function removeContentSecurityPolicy( betterSession: BetterSession = session.defaultSession as BetterSession, ) { @@ -624,11 +620,10 @@ function removeContentSecurityPolicy( callback({ cancel: false, responseHeaders: details.responseHeaders }); }); - type ResolverListener = { apply: () => Promise>; context: unknown }; // When multiple listeners are defined, apply them all - betterSession.webRequest.setResolver('onHeadersReceived', async (listeners: ResolverListener[]) => { - return listeners.reduce>>( - async (accumulator: Promise>, listener: ResolverListener) => { + betterSession.webRequest.setResolver('onHeadersReceived', async (listeners) => { + return listeners.reduce( + async (accumulator, listener) => { const acc = await accumulator; if (acc.cancel) { return acc; diff --git a/package-lock.json b/package-lock.json index bcd7fcb4..939b737e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,14 +14,14 @@ "@ffmpeg.wasm/core-mt": "0.12.0", "@ffmpeg.wasm/main": "0.12.0", "@foobar404/wave": "2.0.4", + "@jellybrick/electron-better-web-request": "1.0.4", "@jellybrick/mpris-service": "2.1.4", "@xhayper/discord-rpc": "1.0.23", "async-mutex": "0.4.0", - "butterchurn": "2.6.7", - "butterchurn-presets": "2.4.7", + "butterchurn": "3.0.0-beta.4", + "butterchurn-presets": "3.0.0-beta.4", "conf": "10.2.0", "custom-electron-prompt": "1.5.7", - "electron-better-web-request": "1.0.1", "electron-debug": "3.2.0", "electron-is": "3.0.0", "electron-localshortcut": "3.2.1", @@ -35,7 +35,7 @@ "keyboardevent-from-electron-accelerator": "2.0.0", "keyboardevents-areequal": "0.2.2", "node-id3": "0.2.6", - "simple-youtube-age-restriction-bypass": "git+https://github.com/MiepHD/Simple-YouTube-Age-Restriction-Bypass.git#v2.5.5", + "simple-youtube-age-restriction-bypass": "git+https://github.com/organization/Simple-YouTube-Age-Restriction-Bypass.git#v2.5.8", "vudio": "2.1.1", "x11": "2.3.0", "youtubei.js": "6.4.1", @@ -62,7 +62,7 @@ "electron-devtools-installer": "3.2.0", "eslint": "8.51.0", "eslint-plugin-import": "2.28.1", - "eslint-plugin-prettier": "5.0.0", + "eslint-plugin-prettier": "5.0.1", "node-gyp": "9.4.0", "patch-package": "8.0.0", "playwright": "1.38.1", @@ -85,6 +85,11 @@ "node": ">=0.10.0" } }, + "node_modules/@assemblyscript/loader": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.17.14.tgz", + "integrity": "sha512-+PVTOfla/0XMLRTQLJFPg4u40XcdTfon6GGea70hBGi8Pd7ZymIXyVUR+vK8wt5Jb4MVKTKPIz43Myyebw5mZA==" + }, "node_modules/@babel/code-frame": { "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", @@ -882,6 +887,27 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@jellybrick/electron-better-web-request": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jellybrick/electron-better-web-request/-/electron-better-web-request-1.0.4.tgz", + "integrity": "sha512-vL2lv7Gz8BWgCpwXb3ha17oaEmJqG5ZLdVWssAkA/0PGPMCWH2lLWq7vDymyTswmZ+zKpfOdzwTomvMqn9nElg==", + "dependencies": { + "browser-extension-url-match": "^1.0.0", + "uuid": "^9.0.1" + } + }, + "node_modules/@jellybrick/electron-better-web-request/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@jellybrick/mpris-service": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@jellybrick/mpris-service/-/mpris-service-2.1.4.tgz", @@ -2725,20 +2751,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2838,6 +2850,14 @@ "node": ">=8" } }, + "node_modules/browser-extension-url-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-extension-url-match/-/browser-extension-url-match-1.0.0.tgz", + "integrity": "sha512-LfIs9SYgPjYksjxkgOVYZhxMIroR56isQB3YHTAmzunWuT9qrH6Fxt7TD9/s9MoKo7GP37JZbLlZhL9vwQAk3w==", + "dependencies": { + "fancy-regex": "^0.5.4" + } + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -2987,22 +3007,22 @@ } }, "node_modules/butterchurn": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/butterchurn/-/butterchurn-2.6.7.tgz", - "integrity": "sha512-BJiRA8L0L2+84uoG2SSfkp0kclBuN+vQKf217pK7pMlwEO2ZEg3MtO2/o+l8Qpr8Nbejg8tmL1ZHD1jmhiaaqg==", + "version": "3.0.0-beta.4", + "resolved": "https://registry.npmjs.org/butterchurn/-/butterchurn-3.0.0-beta.4.tgz", + "integrity": "sha512-hiY1ktHYHQ8MT65nnZi7GjrgZZ6sl/ipT5rBqEfaYJd90L4SvOtB6lVxtKadtzAyJo2TQJc4gJfEca4cpZo0DA==", "dependencies": { - "@babel/runtime": "^7.0.0", - "ecma-proposal-math-extensions": "0.0.2" + "@assemblyscript/loader": "^0.17.11", + "@babel/runtime": "^7.11.2", + "ecma-proposal-math-extensions": "0.0.2", + "eel-wasm": "^0.0.15" } }, "node_modules/butterchurn-presets": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/butterchurn-presets/-/butterchurn-presets-2.4.7.tgz", - "integrity": "sha512-4MdM8ripz/VfH1BCldrIKdAc/1ryJFBDvqlyow6Ivo1frwj0H3duzvSMFC7/wIjAjxb1QpwVHVqGqS9uAFKhpg==", + "version": "3.0.0-beta.4", + "resolved": "https://registry.npmjs.org/butterchurn-presets/-/butterchurn-presets-3.0.0-beta.4.tgz", + "integrity": "sha512-TbQLUPvGOYMZAtWKoCmBtludh9aQZ6NaMGQU4lvPeadBPy3Du3yNmwBjlTMLP5c5mRWElxQPjTL1PtR7FZK3OQ==", "dependencies": { - "babel-runtime": "^6.26.0", - "ecma-proposal-math-extensions": "0.0.2", - "lodash": "^4.17.4" + "@babel/runtime": "^7.12.5" } }, "node_modules/cacache": { @@ -3445,13 +3465,6 @@ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "devOptional": true }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -4031,6 +4044,11 @@ "resolved": "https://registry.npmjs.org/ecma-proposal-math-extensions/-/ecma-proposal-math-extensions-0.0.2.tgz", "integrity": "sha512-80BnDp2Fn7RxXlEr5HHZblniY4aQ97MOAicdWWpSo0vkQiISSE9wLR4SqxKsu4gCtXFBIPPzy8JMhay4NWRg/Q==" }, + "node_modules/eel-wasm": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/eel-wasm/-/eel-wasm-0.0.15.tgz", + "integrity": "sha512-FSTWf6lwGn7Zc3QiV+KxWTznIqq4j9eST/aXmyN/cC39+1Arqs13YOMosHQ7tqUt+OjQmG79Vd41f9gu+w1lvA==" + }, "node_modules/ejs": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", @@ -4063,15 +4081,6 @@ "node": ">= 12.20.55" } }, - "node_modules/electron-better-web-request": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/electron-better-web-request/-/electron-better-web-request-1.0.1.tgz", - "integrity": "sha512-euwLeL82k6fbVODfH5Uz9c4BN047/XyYKfsZcaFhdWfqx05JPu2J0xE7nciJ/1Bb0sTClU1FDLW5H2zQWBB5Gw==", - "dependencies": { - "url-match-patterns": "^0.2.0", - "uuid": "^3.3.2" - } - }, "node_modules/electron-builder": { "version": "24.6.4", "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz", @@ -4739,9 +4748,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", + "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", @@ -4990,6 +4999,11 @@ ], "optional": true }, + "node_modules/fancy-regex": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/fancy-regex/-/fancy-regex-0.5.4.tgz", + "integrity": "sha512-O6qfjtMnrPRs+3XOavCxGQDFaMS9K1vEsQMhPowqx2P/h1fDCvK5RUyeWeyDusMH2FkSHAsRE3IbSBMMg53fmw==" + }, "node_modules/fast-average-color": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/fast-average-color/-/fast-average-color-9.4.0.tgz", @@ -6769,7 +6783,8 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -8926,7 +8941,7 @@ }, "node_modules/simple-youtube-age-restriction-bypass": { "version": "2.5.9", - "resolved": "git+ssh://git@github.com/MiepHD/Simple-YouTube-Age-Restriction-Bypass.git#79b9456c290df42f35f081413e18dc336d340724", + "resolved": "git+ssh://git@github.com/organization/Simple-YouTube-Age-Restriction-Bypass.git#816a882c68fcfe6cdd9410a6877b88093ed15b28", "license": "MIT", "workspaces": [ "account-proxy" @@ -9783,14 +9798,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-match-patterns": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/url-match-patterns/-/url-match-patterns-0.2.0.tgz", - "integrity": "sha512-vtaWyxq+CyrQP4/dapGddkSGwGypQOD2qjHcsqp9ahsjRWzGtjqm+ANxApH46OfWQfpkL6cuyPwsm80386jdjQ==", - "dependencies": { - "lodash": "^4.3.0" - } - }, "node_modules/usocket": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/usocket/-/usocket-0.3.0.tgz", @@ -9815,15 +9822,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "devOptional": true }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", diff --git a/package.json b/package.json index 21243655..7db89350 100644 --- a/package.json +++ b/package.json @@ -96,8 +96,7 @@ "build": "npm run rollup:preload && npm run rollup:main", "start": "npm run build && electron ./dist/index.js", "start:debug": "ELECTRON_ENABLE_LOGGING=1 npm run start", - "generate:package": "node utils/generate-package-json.js", - "postinstall": "patch-package && npm run plugins && npm run clean", + "postinstall": "patch-package", "clean": "del-cli dist && del-cli pack", "dist": "npm run clean && npm run build && electron-builder --win --mac --linux -p never", "dist:linux": "npm run clean && npm run build && electron-builder --linux -p never", @@ -107,8 +106,6 @@ "dist:win:x64": "npm run clean && npm run build && electron-builder --win nsis-web:x64 -p never", "lint": "eslint .", "changelog": "auto-changelog", - "plugins": "npm run plugin:bypass-age-restrictions", - "plugin:bypass-age-restrictions": "del-cli node_modules/simple-youtube-age-restriction-bypass/package.json && npm run generate:package simple-youtube-age-restriction-bypass", "release:linux": "npm run clean && npm run build && electron-builder --linux -p always -c.snap.publish=github", "release:mac": "npm run clean && npm run build && electron-builder --mac -p always", "release:win": "npm run clean && npm run build && electron-builder --win -p always", @@ -122,14 +119,14 @@ "@ffmpeg.wasm/core-mt": "0.12.0", "@ffmpeg.wasm/main": "0.12.0", "@foobar404/wave": "2.0.4", + "@jellybrick/electron-better-web-request": "1.0.4", "@jellybrick/mpris-service": "2.1.4", "@xhayper/discord-rpc": "1.0.23", "async-mutex": "0.4.0", - "butterchurn": "2.6.7", - "butterchurn-presets": "2.4.7", + "butterchurn": "3.0.0-beta.4", + "butterchurn-presets": "3.0.0-beta.4", "conf": "10.2.0", "custom-electron-prompt": "1.5.7", - "electron-better-web-request": "1.0.1", "electron-debug": "3.2.0", "electron-is": "3.0.0", "electron-localshortcut": "3.2.1", @@ -143,7 +140,7 @@ "keyboardevent-from-electron-accelerator": "2.0.0", "keyboardevents-areequal": "0.2.2", "node-id3": "0.2.6", - "simple-youtube-age-restriction-bypass": "git+https://github.com/MiepHD/Simple-YouTube-Age-Restriction-Bypass.git#v2.5.5", + "simple-youtube-age-restriction-bypass": "git+https://github.com/organization/Simple-YouTube-Age-Restriction-Bypass.git#v2.5.8", "vudio": "2.1.1", "x11": "2.3.0", "youtubei.js": "6.4.1", @@ -155,7 +152,7 @@ "xml2js": "0.6.2", "node-fetch": "2.7.0", "@electron/universal": "1.4.2", - "electron": "27.0.0" + "@babel/runtime": "7.23.1" }, "devDependencies": { "@playwright/test": "1.38.1", @@ -178,7 +175,7 @@ "electron-devtools-installer": "3.2.0", "eslint": "8.51.0", "eslint-plugin-import": "2.28.1", - "eslint-plugin-prettier": "5.0.0", + "eslint-plugin-prettier": "5.0.1", "node-gyp": "9.4.0", "patch-package": "8.0.0", "playwright": "1.38.1", diff --git a/plugins/bypass-age-restrictions/front.ts b/plugins/bypass-age-restrictions/front.ts index 21dcab69..d0e9d227 100644 --- a/plugins/bypass-age-restrictions/front.ts +++ b/plugins/bypass-age-restrictions/front.ts @@ -1,4 +1,4 @@ export default () => { // See https://github.com/zerodytrash/Simple-YouTube-Age-Restriction-Bypass#userscript - require('simple-youtube-age-restriction-bypass/dist/Simple-YouTube-Age-Restriction-Bypass.user.js'); + import('simple-youtube-age-restriction-bypass'); }; diff --git a/plugins/bypass-age-restrictions/simple-youtube-age-restriction-bypass.d.ts b/plugins/bypass-age-restrictions/simple-youtube-age-restriction-bypass.d.ts new file mode 100644 index 00000000..b3a67ff8 --- /dev/null +++ b/plugins/bypass-age-restrictions/simple-youtube-age-restriction-bypass.d.ts @@ -0,0 +1,4 @@ +declare module 'simple-youtube-age-restriction-bypass' { + const nothing: never; + export default nothing; +} diff --git a/plugins/visualizer/butterchurn.d.ts b/plugins/visualizer/butterchurn.d.ts index bd8df9e5..2803e6cd 100644 --- a/plugins/visualizer/butterchurn.d.ts +++ b/plugins/visualizer/butterchurn.d.ts @@ -49,5 +49,7 @@ declare module 'butterchurn' { } declare module 'butterchurn-presets' { - export function getPresets(): Record; + const presets: Record; + + export default presets; } diff --git a/plugins/visualizer/visualizers/butterchurn.ts b/plugins/visualizer/visualizers/butterchurn.ts index d6e36623..5c44cc33 100644 --- a/plugins/visualizer/visualizers/butterchurn.ts +++ b/plugins/visualizer/visualizers/butterchurn.ts @@ -5,8 +5,6 @@ import { Visualizer } from './visualizer'; import { ConfigType } from '../../../config/dynamic'; -const presets = ButterchurnPresets.getPresets(); - class ButterchurnVisualizer extends Visualizer { name = 'butterchurn'; @@ -41,7 +39,7 @@ class ButterchurnVisualizer extends Visualizer { } ); - const preset = presets[options.butterchurn.preset]; + const preset = ButterchurnPresets[options.butterchurn.preset]; this.visualizer.loadPreset(preset, options.butterchurn.blendTimeInSeconds); this.visualizer.connectAudio(audioNode); diff --git a/utils/generate-package-json.js b/utils/generate-package-json.js deleted file mode 100755 index 7c424d69..00000000 --- a/utils/generate-package-json.js +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env node - -const { existsSync, writeFile } = require('node:fs'); -const { join } = require('node:path'); -const { promisify } = require('node:util'); - -/** - * Generates a fake package.json for given packages that don't have any. - * Allows electron-builder to resolve them - */ - -const generatePackageJson = async (packageName) => { - const packageFolder = join('node_modules', packageName); - if (!existsSync(packageFolder)) { - console.log( - `${packageName} module not found, exiting…`, - ); - return; - } - - const filepath = join(packageFolder, 'package.json'); - if (!existsSync(filepath)) { - console.log( - `No package.json found for ${packageName} module, generating one…`, - ); - let pkg = { - name: packageName, - version: '0.0.0', - description: '-', - repository: { type: 'git', url: '-' }, - readme: '-', - }; - const writeFileAsync = promisify(writeFile); - await writeFileAsync(filepath, JSON.stringify(pkg, null, 2)); - } -}; - -if (require.main === module) { - process.argv.slice(2).forEach(async (packageName) => { - await generatePackageJson(packageName); - }); -} From d7df4d7d104fb9857ed56b8a760a7c24c987b1fb Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Wed, 11 Oct 2023 19:28:01 +0900 Subject: [PATCH 2/4] fix: fix `It Just Works` Fixed an issue that caused inconsistent execution results. --- index.ts | 3 ++- menu.ts | 20 +++++++++++--------- package.json | 2 -- plugins/adblocker/inject-cliqz-preload.ts | 5 ++--- plugins/adblocker/preload.ts | 8 ++++---- plugins/bypass-age-restrictions/front.ts | 4 ++-- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/index.ts b/index.ts index b813a2fe..9fc215bd 100644 --- a/index.ts +++ b/index.ts @@ -8,7 +8,7 @@ import { autoUpdater } from 'electron-updater'; import electronDebug from 'electron-debug'; import config from './config'; -import { setApplicationMenu } from './menu'; +import { refreshMenu, setApplicationMenu } from './menu'; import { fileExists, injectCSS, injectCSSAsFile } from './plugins/utils'; import { isTesting } from './utils/testing'; import { setUpTray } from './tray'; @@ -470,6 +470,7 @@ app.on('ready', async () => { mainWindow = await createMainWindow(); setApplicationMenu(mainWindow); + refreshMenu(mainWindow); setUpTray(app, mainWindow); setupProtocolHandler(mainWindow); diff --git a/menu.ts b/menu.ts index 5432078f..1c99e037 100644 --- a/menu.ts +++ b/menu.ts @@ -62,13 +62,15 @@ const pluginEnabledMenu = (plugin: string, label = '', hasSubmenu = false, refre }, }); +export const refreshMenu = (win: BrowserWindow) => { + setApplicationMenu(win); + if (inAppMenuActive) { + win.webContents.send('refreshMenu'); + } +}; + export const mainMenuTemplate = (win: BrowserWindow): MenuTemplate => { - const refreshMenu = () => { - setApplicationMenu(win); - if (inAppMenuActive) { - win.webContents.send('refreshMenu'); - } - }; + const innerRefreshMenu = () => refreshMenu(win); return [ { @@ -84,15 +86,15 @@ export const mainMenuTemplate = (win: BrowserWindow): MenuTemplate => { const getPluginMenu = pluginMenus[pluginName as keyof typeof pluginMenus]; if (!config.plugins.isEnabled(pluginName)) { - return pluginEnabledMenu(pluginName, pluginLabel, true, refreshMenu); + return pluginEnabledMenu(pluginName, pluginLabel, true, innerRefreshMenu); } return { label: pluginLabel, submenu: [ - pluginEnabledMenu(pluginName, 'Enabled', true, refreshMenu), + pluginEnabledMenu(pluginName, 'Enabled', true, innerRefreshMenu), { type: 'separator' }, - ...getPluginMenu(win, config.plugins.getOptions(pluginName), refreshMenu), + ...getPluginMenu(win, config.plugins.getOptions(pluginName), innerRefreshMenu), ], } satisfies Electron.MenuItemConstructorOptions; } diff --git a/package.json b/package.json index 7db89350..36b215bd 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,6 @@ "!node_modules", "node_modules/custom-electron-prompt/**", "node_modules/@cliqz/adblocker-electron-preload/**", - "node_modules/@cliqz/adblocker-content/**", - "node_modules/@cliqz/adblocker-extended-selectors/**", "node_modules/@ffmpeg.wasm/core-mt/**", "!node_modules/**/*.map", "!node_modules/**/*.ts" diff --git a/plugins/adblocker/inject-cliqz-preload.ts b/plugins/adblocker/inject-cliqz-preload.ts index 8660df0f..e2419bee 100644 --- a/plugins/adblocker/inject-cliqz-preload.ts +++ b/plugins/adblocker/inject-cliqz-preload.ts @@ -1,4 +1,3 @@ -export default () => { - const path = '@cliqz/adblocker-electron-preload'; // prevent require hoisting - require(path); +export default async () => { + await import('@cliqz/adblocker-electron-preload'); }; diff --git a/plugins/adblocker/preload.ts b/plugins/adblocker/preload.ts index 4f17488e..c0facb2b 100644 --- a/plugins/adblocker/preload.ts +++ b/plugins/adblocker/preload.ts @@ -1,15 +1,15 @@ -import config from './config'; +import config, { shouldUseBlocklists } from './config'; import inject from './inject'; import injectCliqzPreload from './inject-cliqz-preload'; import { blockers } from './blocker-types'; export default async () => { - if (await config.shouldUseBlocklists()) { + if (shouldUseBlocklists()) { // Preload adblocker to inject scripts/styles - injectCliqzPreload(); + await injectCliqzPreload(); // eslint-disable-next-line @typescript-eslint/await-thenable - } else if ((await config.get('blocker')) === blockers.InPlayer) { + } else if ((config.get('blocker')) === blockers.InPlayer) { inject(); } }; diff --git a/plugins/bypass-age-restrictions/front.ts b/plugins/bypass-age-restrictions/front.ts index d0e9d227..42df78ea 100644 --- a/plugins/bypass-age-restrictions/front.ts +++ b/plugins/bypass-age-restrictions/front.ts @@ -1,4 +1,4 @@ -export default () => { +export default async () => { // See https://github.com/zerodytrash/Simple-YouTube-Age-Restriction-Bypass#userscript - import('simple-youtube-age-restriction-bypass'); + await import('simple-youtube-age-restriction-bypass'); }; From 17ba0710574d4a71b97a86a713011fe74562f20e Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Wed, 11 Oct 2023 21:59:03 +0900 Subject: [PATCH 3/4] fix: crash before window loaded --- index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.ts b/index.ts index 9fc215bd..e8d6b78a 100644 --- a/index.ts +++ b/index.ts @@ -335,7 +335,7 @@ async function createMainWindow() { removeContentSecurityPolicy(); - await win.webContents.loadURL(urlToLoad); + win.webContents.loadURL(urlToLoad); return win; } From 85228fd7d23677a41e28d4e6b31b3bb90a414306 Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Wed, 11 Oct 2023 22:12:54 +0900 Subject: [PATCH 4/4] fix: set default adblocker as InPlayer Fixed an issue with the initial launch in certain regions, such as South Korea. --- config/defaults.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/defaults.ts b/config/defaults.ts index e8a3a704..b7bbade6 100644 --- a/config/defaults.ts +++ b/config/defaults.ts @@ -74,7 +74,7 @@ const defaultConfig = { 'adblocker': { enabled: true, cache: true, - blocker: blockers.WithBlocklists as string, + blocker: blockers.InPlayer as string, // Fixed an issue with the initial launch in certain regions, such as South Korea. additionalBlockLists: [], // Additional list of filters, e.g "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt" disableDefaultLists: false, },