diff --git a/package.json b/package.json index be6805b..7bcaecf 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "author": "geekgeekrun", "license": "ISC", "dependencies": { + "@geekgeekrun/puppeteer-extra-plugin-laodeng": "workspace:*", "cheerio": "1.0.0-rc.12", "dayjs": "^1.11.10", "json5": "^2.2.3", @@ -18,7 +19,6 @@ "puppeteer": "24.19.0", "puppeteer-extra": "3.3.6", "puppeteer-extra-plugin-stealth": "2.11.2", - "@geekgeekrun/puppeteer-extra-plugin-laodeng": "workspace:*", "rimraf": "^3.0.2", "tapable": "^2.2.1" }, @@ -30,5 +30,10 @@ }, "engines": { "pnpm": "=8.15.9" + }, + "pnpm": { + "patchedDependencies": { + "find-chrome-bin@2.0.4": "patches/find-chrome-bin@2.0.4.patch" + } } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 3929cf7..df8736c 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -72,7 +72,7 @@ "element-plus": "^2.8.4", "eslint": "^8.56.0", "eslint-plugin-vue": "^9.20.1", - "find-chrome-bin": "^2.0.1", + "find-chrome-bin": "^2.0.4", "js-yaml": "^4.1.0", "normalize.css": "^8.0.1", "prettier": "^3.2.4", @@ -89,4 +89,4 @@ "vue-router": "^4.2.5", "vue-tsc": "^1.8.27" } -} \ No newline at end of file +} diff --git a/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/utils/puppeteer-executable/index.ts b/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/utils/puppeteer-executable/index.ts index 5cf031a..60e63f0 100644 --- a/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/utils/puppeteer-executable/index.ts +++ b/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/utils/puppeteer-executable/index.ts @@ -9,7 +9,6 @@ import { removeLastUsedAndAvailableBrowserPath } from '../browser-history' import gtag from '../../../../utils/gtag' -import { sleep } from '@geekgeekrun/utils/sleep.mjs'; const getPuppeteerManagerModule = async () => { const puppeteerManager = await import('@puppeteer/browsers') @@ -65,32 +64,19 @@ export const checkAndDownloadPuppeteerExecutable = async ( } catch { throw new Error('USER_CANCEL_DOWNLOAD_PUPPETEER') } - let restRetriedTime = 10 - while (restRetriedTime > 0) { - try { - // maybe the exist installation is broken. - await puppeteerManager.uninstall({ - cacheDir, - buildId: EXPECT_CHROMIUM_BUILD_ID, - browser: puppeteerManager.Browser.CHROME - }) - installedBrowser = await puppeteerManager.install({ - browser: puppeteerManager.Browser.CHROME, - cacheDir, - buildId: EXPECT_CHROMIUM_BUILD_ID, - downloadProgressCallback: options.downloadProgressCallback, - baseUrl: `https://registry.npmmirror.com/-/binary/chrome-for-testing` - }) - break - } - catch (err) { - restRetriedTime-- - await sleep(5000) - } - } - if (!installedBrowser) { - throw new Error(`浏览器下载失败`) - } + // maybe the exist installation is broken. + await puppeteerManager.uninstall({ + cacheDir, + buildId: EXPECT_CHROMIUM_BUILD_ID, + browser: puppeteerManager.Browser.CHROME + }) + installedBrowser = await puppeteerManager.install({ + browser: puppeteerManager.Browser.CHROME, + cacheDir, + buildId: EXPECT_CHROMIUM_BUILD_ID, + downloadProgressCallback: options.downloadProgressCallback, + baseUrl: `https://registry.npmmirror.com/-/binary/chrome-for-testing` + }) } else { gtag('use_installed_browser') installedBrowser = ( @@ -116,16 +102,16 @@ export const getAnyAvailablePuppeteerExecutable = async (): Promise + + diff --git a/patches/find-chrome-bin@2.0.4.patch b/patches/find-chrome-bin@2.0.4.patch new file mode 100644 index 0000000..1864da6 --- /dev/null +++ b/patches/find-chrome-bin@2.0.4.patch @@ -0,0 +1,23 @@ +diff --git a/src/win32/index.js b/src/win32/index.js +index 53e2279e4a0c51dfe0725100005fafed2c6537a5..d9de7840e2ad0bfe625e6067cc764cee220035f1 100644 +--- a/src/win32/index.js ++++ b/src/win32/index.js +@@ -15,12 +15,13 @@ export function findChromeBinaryOnWin32(canary) { + ].filter(Boolean) + + let result +- +- prefixes.forEach(prefix => { ++ for (const prefix of prefixes) { + let chromePath = join(prefix, suffix) +- if (canAccess(chromePath)) result = chromePath +- }) +- ++ if (canAccess(chromePath)) { ++ result = chromePath ++ break ++ } ++ } + return result + } + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b9df2e1..f110530 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,11 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +patchedDependencies: + find-chrome-bin@2.0.4: + hash: hlvcqc4im4z7xkxtwwtz6sdzui + path: patches/find-chrome-bin@2.0.4.patch + importers: .: @@ -248,8 +253,8 @@ importers: specifier: ^9.20.1 version: 9.20.1(eslint@8.56.0) find-chrome-bin: - specifier: ^2.0.1 - version: 2.0.1 + specifier: ^2.0.4 + version: 2.0.4(patch_hash=hlvcqc4im4z7xkxtwwtz6sdzui) js-yaml: specifier: ^4.1.0 version: 4.1.0 @@ -1443,19 +1448,21 @@ packages: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} dev: true - /@puppeteer/browsers@1.9.0: - resolution: {integrity: sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg==} - engines: {node: '>=16.3.0'} + /@puppeteer/browsers@2.10.10: + resolution: {integrity: sha512-3ZG500+ZeLql8rE0hjfhkycJjDj0pI/btEh3L9IkWUYcOrgP0xCNRq3HbtbqOPbvDhFaAWD88pDFtlLv8ns8gA==} + engines: {node: '>=18'} hasBin: true dependencies: - debug: 4.3.4 + debug: 4.4.3 extract-zip: 2.0.1 progress: 2.0.3 - proxy-agent: 6.3.1 - tar-fs: 3.0.4 - unbzip2-stream: 1.4.3 + proxy-agent: 6.5.0 + semver: 7.7.3 + tar-fs: 3.1.1 yargs: 17.7.2 transitivePeerDependencies: + - bare-abort-controller + - bare-buffer - supports-color dev: true @@ -2398,15 +2405,6 @@ packages: transitivePeerDependencies: - supports-color - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} - dependencies: - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - dev: true - /agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -2772,10 +2770,12 @@ packages: /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + requiresBuild: true dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: true + optional: true /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -3939,14 +3939,17 @@ packages: to-regex-range: 5.0.1 dev: true - /find-chrome-bin@2.0.1: - resolution: {integrity: sha512-aDwC2y0dLxt0GFmQ+q8bqBCZ10VW9zYT/lNV806tRDqDAh5XpkTWulB96RKDHDuKu36m/dEvhmhD5IU237oOTg==} + /find-chrome-bin@2.0.4(patch_hash=hlvcqc4im4z7xkxtwwtz6sdzui): + resolution: {integrity: sha512-iKiqIb7FsA0hwnq0vvDay4RsmHUFLvWVquTb59XVlxfHS68XaWZfEjriF2vTZ3k/plicyKZxMJLqxKt10kSOtQ==} engines: {node: '>=18.0.0'} dependencies: - '@puppeteer/browsers': 1.9.0 + '@puppeteer/browsers': 2.10.10 transitivePeerDependencies: + - bare-abort-controller + - bare-buffer - supports-color dev: true + patched: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -4352,16 +4355,6 @@ packages: - supports-color dev: true - /http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - dev: true - /http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -4387,16 +4380,6 @@ packages: transitivePeerDependencies: - supports-color - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - dev: true - /https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -4492,12 +4475,11 @@ packages: resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} - /ip@1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - dev: true - /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + requiresBuild: true + dev: false + optional: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -5034,10 +5016,6 @@ packages: is-extendable: 0.1.1 dev: false - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: true - /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -5328,22 +5306,6 @@ packages: dev: false optional: true - /pac-proxy-agent@7.0.1: - resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} - engines: {node: '>= 14'} - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.0 - debug: 4.4.3 - get-uri: 6.0.2 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - pac-resolver: 7.0.0 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /pac-proxy-agent@7.2.0: resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} engines: {node: '>= 14'} @@ -5359,15 +5321,6 @@ packages: transitivePeerDependencies: - supports-color - /pac-resolver@7.0.0: - resolution: {integrity: sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==} - engines: {node: '>= 14'} - dependencies: - degenerator: 5.0.1 - ip: 1.1.8 - netmask: 2.0.2 - dev: true - /pac-resolver@7.0.1: resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} engines: {node: '>= 14'} @@ -5575,22 +5528,6 @@ packages: err-code: 2.0.3 retry: 0.12.0 - /proxy-agent@6.3.1: - resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.4.3 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - lru-cache: 7.18.3 - pac-proxy-agent: 7.0.1 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /proxy-agent@6.5.0: resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} engines: {node: '>= 14'} @@ -6052,17 +5989,6 @@ packages: dev: false optional: true - /socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.0 - debug: 4.4.3 - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - dev: true - /socks-proxy-agent@8.0.5: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} @@ -6076,9 +6002,12 @@ packages: /socks@2.7.1: resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + requiresBuild: true dependencies: ip: 2.0.0 smart-buffer: 4.2.0 + dev: false + optional: true /socks@2.8.7: resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} @@ -6265,14 +6194,6 @@ packages: engines: {node: '>=6'} dev: false - /tar-fs@3.0.4: - resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} - dependencies: - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 3.1.7 - dev: true - /tar-fs@3.1.1: resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} dependencies: @@ -6347,6 +6268,7 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: false /tiny-typed-emitter@2.1.0: resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} @@ -6557,13 +6479,6 @@ packages: resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} dev: true - /unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - dependencies: - buffer: 5.7.1 - through: 2.3.8 - dev: true - /unconfig@0.3.11: resolution: {integrity: sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==} dependencies: