diff --git a/package.json b/package.json index ac7de2245..34bee3ef0 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "zip-local": "^0.3.5", "zustand": "^3.7.2" }, - "packageManager": "pnpm@9.1.0", + "packageManager": "pnpm@10.4.1", "pnpm": { "patchedDependencies": { "eslint@9.20.1": "patches/eslint@9.20.1.patch", @@ -109,18 +109,14 @@ "source-map-resolve": "*", "resolve-url": "*", "source-map-url": "*", - "urix": "*" - } - }, - "webExt": { - "artifactsDir": "./dist", - "build": { - "overwriteDest": true + "urix": "*", + "q": "*" }, - "sourceDir": "./dist/firefox-unpacked" + "onlyBuiltDependencies": [ + "esbuild" + ] }, "engines": { - "node": ">=18", - "pnpm": ">=9" + "node": ">=18" } } diff --git a/src/debug/loadLazyChunks.ts b/src/debug/loadLazyChunks.ts index 9c06e3aa4..f8c71caea 100644 --- a/src/debug/loadLazyChunks.ts +++ b/src/debug/loadLazyChunks.ts @@ -68,7 +68,7 @@ export async function loadLazyChunks() { const isWorkerAsset = await fetch(wreq.p + wreq.u(id)) .then(r => r.text()) - .then(t => t.includes("importScripts(")); + .then(t => /importScripts\(|self\.postMessage/.test(t)); if (isWorkerAsset) { invalidChunks.add(id); @@ -174,7 +174,7 @@ export async function loadLazyChunks() { await Promise.all(chunksLeft.map(async id => { const isWorkerAsset = await fetch(wreq.p + wreq.u(id)) .then(r => r.text()) - .then(t => t.includes("importScripts(")); + .then(t => /importScripts\(|self\.postMessage/.test(t)); // Loads the chunk. Currently this only happens with the language packs which are loaded differently if (!isWorkerAsset) { diff --git a/src/webpack/patchWebpack.ts b/src/webpack/patchWebpack.ts index 895fd0c7b..abc4301e6 100644 --- a/src/webpack/patchWebpack.ts +++ b/src/webpack/patchWebpack.ts @@ -298,11 +298,6 @@ function updateExistingFactory(moduleFactories: AnyWebpackRequire["m"], moduleId } if (existingFactory != null) { - // Sanity check to make sure these factories are equal - if (String(newFactory) !== String(existingFactory)) { - return false; - } - // If existingFactory exists in any of the Webpack instances we track, it's either wrapped in our proxy, or it has already been required. // In the case it is wrapped in our proxy, and the instance we are setting does not already have it, we need to make sure the instance contains our proxy too. if (moduleFactoriesWithFactory !== moduleFactories && existingFactory[SYM_IS_PROXIED_FACTORY]) { @@ -575,8 +570,13 @@ function patchFactory(moduleId: PropertyKey, originalFactory: AnyModuleFactory): continue; } + const pluginsList = [...patchedBy]; + if (!patchedBy.has(patch.plugin)) { + pluginsList.push(patch.plugin); + } + code = newCode; - patchedSource = `// Webpack Module ${String(moduleId)} - Patched by ${[...patchedBy, patch.plugin].join(", ")}\n${newCode}\n//# sourceURL=WebpackModule${String(moduleId)}`; + patchedSource = `// Webpack Module ${String(moduleId)} - Patched by ${pluginsList.join(", ")}\n${newCode}\n//# sourceURL=WebpackModule${String(moduleId)}`; patchedFactory = (0, eval)(patchedSource); if (!patchedBy.has(patch.plugin)) {