diff --git a/Build/lib/parse-filter.js b/Build/lib/parse-filter.js index 4d598ddb..b45db11c 100644 --- a/Build/lib/parse-filter.js +++ b/Build/lib/parse-filter.js @@ -133,11 +133,19 @@ async function processFilterRules(filterRulesUrl, fallbackUrls, includeThirdPart let filterRules; try { + const controller = new AbortController(); + const signal = controller.signal; + /** @type string[] */ filterRules = ( await Promise.any( [filterRulesUrl, ...(fallbackUrls || [])].map( - async url => (await fetchWithRetry(url)).text() + url => fetchWithRetry(url, { signal }) + .then(r => r.text()) + .then(text => { + controller.abort(); + return text; + }) ) ) ).split('\n').map(line => line.trim()); diff --git a/package.json b/package.json index b90b65a5..224fb9d8 100644 --- a/package.json +++ b/package.json @@ -135,5 +135,10 @@ }, "engines": { "node": ">=18.0.0" + }, + "pnpm": { + "patchedDependencies": { + "@vercel/fetch-retry@5.1.3": "patches/@vercel__fetch-retry@5.1.3.patch" + } } } diff --git a/patches/@vercel__fetch-retry@5.1.3.patch b/patches/@vercel__fetch-retry@5.1.3.patch new file mode 100644 index 00000000..3f3af7c0 --- /dev/null +++ b/patches/@vercel__fetch-retry@5.1.3.patch @@ -0,0 +1,13 @@ +diff --git a/index.js b/index.js +index e5eeb353f6da8968d926cb4e502207912b6c3594..eb1370dc19030404e3def46ce13938d34a9e6214 100644 +--- a/index.js ++++ b/index.js +@@ -66,7 +66,7 @@ function setup(fetch) { + return res; + } + } catch (err) { +- if (err.type === 'aborted') { ++ if (err.type === 'aborted' || err.name === 'AbortError') { + return bail(err); + } + const clientError = isClientError(err); \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82fe899d..1cc2a6c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,11 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +patchedDependencies: + '@vercel/fetch-retry@5.1.3': + hash: jczsp2gadg65vd4ekschpibzda + path: patches/@vercel__fetch-retry@5.1.3.patch + dependencies: '@cliqz/adblocker': specifier: ^1.26.6 @@ -13,7 +18,7 @@ dependencies: version: 0.2.0 '@vercel/fetch-retry': specifier: ^5.1.3 - version: 5.1.3(node-fetch@2.6.11) + version: 5.1.3(patch_hash=jczsp2gadg65vd4ekschpibzda)(node-fetch@2.6.11) ci-info: specifier: ^3.8.0 version: 3.8.0 @@ -248,7 +253,7 @@ packages: resolution: {integrity: sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==} dev: true - /@vercel/fetch-retry@5.1.3(node-fetch@2.6.11): + /@vercel/fetch-retry@5.1.3(patch_hash=jczsp2gadg65vd4ekschpibzda)(node-fetch@2.6.11): resolution: {integrity: sha512-UIbFc4VsEZHOr6dWuE+kxY4NxnOLXFMCWm0fSKRRHUEtrIzaJLzHpWk2QskCXTSzFgFvhkLAvSrBK2XZg7NSzg==} peerDependencies: node-fetch: ^2.6.7 @@ -259,6 +264,7 @@ packages: transitivePeerDependencies: - supports-color dev: false + patched: true /acorn-jsx@5.3.2(acorn@8.9.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}