From f9a0445cbf3e06a7a2a09babcee43ebc27d04cf4 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Tue, 16 Apr 2024 11:06:00 +0800 Subject: [PATCH] Chore: housekeeping --- Build/build-anti-bogus-domain.ts | 2 +- Build/lib/aho-corasick.test.ts | 2 +- Build/lib/cache-filesystem.ts | 2 +- Build/lib/fetch-assets.ts | 4 ++-- Build/lib/fetch-retry.ts | 15 ++++++++------- Build/lib/trie.test.ts | 2 +- Build/validate-domestic.ts | 1 - bun.lockb | Bin 98274 -> 108602 bytes package.json | 10 +++++----- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Build/build-anti-bogus-domain.ts b/Build/build-anti-bogus-domain.ts index 127b9464a..9ecfa61d5 100644 --- a/Build/build-anti-bogus-domain.ts +++ b/Build/build-anti-bogus-domain.ts @@ -14,7 +14,7 @@ const getBogusNxDomainIPsPromise = fsFetchCache.apply( async () => { const result: string[] = []; for await (const line of await fetchRemoteTextByLine(URL)) { - if (line && line.startsWith('bogus-nxdomain=')) { + if (line.startsWith('bogus-nxdomain=')) { const ip = line.slice(15).trim(); if (isProbablyIpv4(ip)) { result.push(`IP-CIDR,${ip}/32,no-resolve`); diff --git a/Build/lib/aho-corasick.test.ts b/Build/lib/aho-corasick.test.ts index a47d537ce..a6713f4c9 100644 --- a/Build/lib/aho-corasick.test.ts +++ b/Build/lib/aho-corasick.test.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/no-unresolved -- bun +// eslint-disable-next-line import-x/no-unresolved -- bun import { describe, expect, it } from 'bun:test'; import createKeywordFilter from './aho-corasick'; diff --git a/Build/lib/cache-filesystem.ts b/Build/lib/cache-filesystem.ts index c0387c320..1135e791a 100644 --- a/Build/lib/cache-filesystem.ts +++ b/Build/lib/cache-filesystem.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line import/no-unresolved -- bun built-in module +// eslint-disable-next-line import-x/no-unresolved -- bun built-in module import { Database } from 'bun:sqlite'; import os from 'os'; import path from 'path'; diff --git a/Build/lib/fetch-assets.ts b/Build/lib/fetch-assets.ts index f1ef4aa7c..81debfb27 100644 --- a/Build/lib/fetch-assets.ts +++ b/Build/lib/fetch-assets.ts @@ -8,11 +8,11 @@ class CustomAbortError extends Error { const sleepWithAbort = (ms: number, signal: AbortSignal) => new Promise((resolve, reject) => { if (signal.aborted) { - reject(signal.reason); + reject(signal.reason as Error); return; } - function stop(this: AbortSignal) { reject(this.reason); } + function stop(this: AbortSignal) { reject(this.reason as Error); } signal.addEventListener('abort', stop, { once: true }); Bun.sleep(ms).then(resolve).catch(reject).finally(() => signal.removeEventListener('abort', stop)); diff --git a/Build/lib/fetch-retry.ts b/Build/lib/fetch-retry.ts index ace61eec3..09539272d 100644 --- a/Build/lib/fetch-retry.ts +++ b/Build/lib/fetch-retry.ts @@ -7,12 +7,13 @@ const MAX_RETRIES = 5; const MAX_RETRY_AFTER = 20; const FACTOR = 6; -function isClientError(err: any): err is NodeJS.ErrnoException { - if (!err) return false; - return ( - err.code === 'ERR_UNESCAPED_CHARACTERS' - || err.message === 'Request path contains unescaped characters' - ); +function isClientError(err: unknown): err is NodeJS.ErrnoException { + if (!err || typeof err !== 'object') return false; + + if ('code' in err) return err.code === 'ERR_UNESCAPED_CHARACTERS'; + if ('message' in err) return err.message === 'Request path contains unescaped characters'; + + return false; } export class ResponseError extends Error { @@ -70,7 +71,7 @@ function createFetchRetry($fetch: typeof fetch): FetchWithRetry { return await retry(async (bail) => { try { // this will be retried - const res = (await $fetch(url, opts)) as Response; + const res = (await $fetch(url, opts)); if ((res.status >= 500 && res.status < 600) || res.status === 429) { // NOTE: doesn't support http-date format diff --git a/Build/lib/trie.test.ts b/Build/lib/trie.test.ts index ecbe63016..4fbefc4f4 100644 --- a/Build/lib/trie.test.ts +++ b/Build/lib/trie.test.ts @@ -1,5 +1,5 @@ import { createTrie } from './trie'; -// eslint-disable-next-line import/no-unresolved -- fuck eslint-import +// eslint-disable-next-line import-x/no-unresolved -- fuck eslint-import import { describe, expect, it } from 'bun:test'; describe('Trie', () => { diff --git a/Build/validate-domestic.ts b/Build/validate-domestic.ts index 49f672913..290f561c2 100644 --- a/Build/validate-domestic.ts +++ b/Build/validate-domestic.ts @@ -1,5 +1,4 @@ import { fetchRemoteTextByLine, readFileByLine } from './lib/fetch-text-by-line'; -import { Readable } from 'stream'; import { parse } from 'csv-parse/sync'; import { createTrie } from './lib/trie'; import path from 'path'; diff --git a/bun.lockb b/bun.lockb index 2ba123b4e797e85f3d6ee6b5d087f1aa5cb096db..2a82fa4239cbce3c55c00feaa5631fb9c97c84b3 100755 GIT binary patch delta 25045 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