mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-12 01:00:34 +08:00
25 lines
832 B
TypeScript
25 lines
832 B
TypeScript
import fsp from 'fs/promises';
|
|
import { toASCII } from 'punycode/punycode';
|
|
import { createMemoizedPromise } from './memo-promise';
|
|
import { getPublicSuffixListTextPromise } from './download-publicsuffixlist';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
// TODO: node undfici fetch doesn't support file URL reading yet
|
|
const customFetch = async (url: URL) => {
|
|
const filePath = fileURLToPath(url);
|
|
const file = await fsp.readFile(filePath);
|
|
return new Blob([file]) as any;
|
|
};
|
|
|
|
export const getGorhillPublicSuffixPromise = createMemoizedPromise(async () => {
|
|
const [publicSuffixListDat, { default: gorhill }] = await Promise.all([
|
|
getPublicSuffixListTextPromise(),
|
|
import('@gorhill/publicsuffixlist')
|
|
]);
|
|
|
|
gorhill.parse(publicSuffixListDat, toASCII);
|
|
await gorhill.enableWASM({ customFetch });
|
|
|
|
return gorhill;
|
|
});
|