Make reject filter download abortable

This commit is contained in:
SukkaW 2023-07-13 22:45:30 +08:00
parent 685427472b
commit 2c4d5a33a5
4 changed files with 35 additions and 3 deletions

View File

@ -133,11 +133,19 @@ async function processFilterRules(filterRulesUrl, fallbackUrls, includeThirdPart
let filterRules; let filterRules;
try { try {
const controller = new AbortController();
const signal = controller.signal;
/** @type string[] */ /** @type string[] */
filterRules = ( filterRules = (
await Promise.any( await Promise.any(
[filterRulesUrl, ...(fallbackUrls || [])].map( [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()); ).split('\n').map(line => line.trim());

View File

@ -135,5 +135,10 @@
}, },
"engines": { "engines": {
"node": ">=18.0.0" "node": ">=18.0.0"
},
"pnpm": {
"patchedDependencies": {
"@vercel/fetch-retry@5.1.3": "patches/@vercel__fetch-retry@5.1.3.patch"
}
} }
} }

View File

@ -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);

10
pnpm-lock.yaml generated
View File

@ -4,6 +4,11 @@ settings:
autoInstallPeers: true autoInstallPeers: true
excludeLinksFromLockfile: false excludeLinksFromLockfile: false
patchedDependencies:
'@vercel/fetch-retry@5.1.3':
hash: jczsp2gadg65vd4ekschpibzda
path: patches/@vercel__fetch-retry@5.1.3.patch
dependencies: dependencies:
'@cliqz/adblocker': '@cliqz/adblocker':
specifier: ^1.26.6 specifier: ^1.26.6
@ -13,7 +18,7 @@ dependencies:
version: 0.2.0 version: 0.2.0
'@vercel/fetch-retry': '@vercel/fetch-retry':
specifier: ^5.1.3 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: ci-info:
specifier: ^3.8.0 specifier: ^3.8.0
version: 3.8.0 version: 3.8.0
@ -248,7 +253,7 @@ packages:
resolution: {integrity: sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==} resolution: {integrity: sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==}
dev: true 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==} resolution: {integrity: sha512-UIbFc4VsEZHOr6dWuE+kxY4NxnOLXFMCWm0fSKRRHUEtrIzaJLzHpWk2QskCXTSzFgFvhkLAvSrBK2XZg7NSzg==}
peerDependencies: peerDependencies:
node-fetch: ^2.6.7 node-fetch: ^2.6.7
@ -259,6 +264,7 @@ packages:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: false dev: false
patched: true
/acorn-jsx@5.3.2(acorn@8.9.0): /acorn-jsx@5.3.2(acorn@8.9.0):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}