| 123456789101112131415161718192021222324252627282930 |
- import { toASCII } from 'punycode';
- import path from 'path';
- import { traceAsync } from './trace-runner';
- import { defaultRequestInit, fetchWithRetry } from './fetch-retry';
- import { createMemoizedPromise } from './memo-promise';
- const publicSuffixPath = path.resolve(import.meta.dir, '../../node_modules/.cache/public_suffix_list_dat.txt');
- const getGorhillPublicSuffix = () => traceAsync('create gorhill public suffix instance', async () => {
- const customFetch = (url: string | URL) => Promise.resolve(Bun.file(url));
- const publicSuffixFile = Bun.file(publicSuffixPath);
- const [publicSuffixListDat, { default: gorhill }] = await Promise.all([
- await publicSuffixFile.exists()
- ? publicSuffixFile.text()
- : fetchWithRetry('https://publicsuffix.org/list/public_suffix_list.dat', defaultRequestInit).then(r => {
- console.log('public_suffix_list.dat not found, fetch directly from remote.');
- return r.text();
- }),
- import('@gorhill/publicsuffixlist')
- ]);
- gorhill.parse(publicSuffixListDat, toASCII);
- await gorhill.enableWASM({ customFetch });
- return gorhill;
- });
- export const getGorhillPublicSuffixPromise = createMemoizedPromise(getGorhillPublicSuffix);
|