Housekeeping

This commit is contained in:
SukkaW
2024-10-17 16:28:57 +08:00
parent e18f57f568
commit 5aee1b6870
6 changed files with 382 additions and 169 deletions

View File

@@ -1,17 +1,17 @@
import { describe, it } from 'mocha';
import { expect } from 'chai';
import { expect } from 'expect';
import createKeywordFilter from './aho-corasick';
describe('AhoCorasick', () => {
it('basic', () => {
let kwfilter = createKeywordFilter(['ap', 'an']);
expect(kwfilter('bananan')).to.equal(true);
expect(kwfilter('apple')).to.equal(true);
expect(kwfilter('melon')).to.equal(false);
expect(kwfilter('bananan')).toBe(true);
expect(kwfilter('apple')).toBe(true);
expect(kwfilter('melon')).toBe(false);
kwfilter = createKeywordFilter(['cdn', 'sukka']);
expect(kwfilter('bananan')).to.equal(false);
expect(kwfilter('apple')).to.equal(false);
expect(kwfilter('melon')).to.equal(false);
expect(kwfilter('bananan')).toBe(false);
expect(kwfilter('apple')).toBe(false);
expect(kwfilter('melon')).toBe(false);
});
});

View File

@@ -1,4 +1,4 @@
import { expect } from 'chai';
import { expect } from 'expect';
import { fileEqual } from './create-file';
// eslint-disable-next-line @typescript-eslint/require-await -- async iterable
@@ -9,7 +9,7 @@ const createSource = async function *(input: string[]) {
};
async function test(a: string[], b: string[], expected: boolean) {
expect((await fileEqual(a, createSource(b)))).to.eq(expected);
expect((await fileEqual(a, createSource(b)))).toBe(expected);
}
describe('fileEqual', () => {

View File

@@ -1,5 +1,5 @@
import { describe, it } from 'mocha';
import { expect } from 'chai';
import { expect } from 'expect';
import { sortDomains } from './stable-sort-domain';
describe('sortDomains', () => {
@@ -8,7 +8,7 @@ describe('sortDomains', () => {
'.s3-website.ap-northeast-3.amazonaws.com',
'.s3.dualstack.ap-south-1.amazonaws.com',
'.s3-website.af-south-1.amazonaws.com'
])).to.deep.equal([
])).toStrictEqual([
'.s3-website.af-south-1.amazonaws.com',
'.s3.dualstack.ap-south-1.amazonaws.com',
'.s3-website.ap-northeast-3.amazonaws.com'
@@ -18,7 +18,7 @@ describe('sortDomains', () => {
'.s3.dualstack.ap-south-1.amazonaws.com',
'.s3-website.ap-northeast-3.amazonaws.com',
'.s3-website.af-south-1.amazonaws.com'
])).to.deep.equal([
])).toStrictEqual([
'.s3-website.af-south-1.amazonaws.com',
'.s3.dualstack.ap-south-1.amazonaws.com',
'.s3-website.ap-northeast-3.amazonaws.com'
@@ -27,7 +27,7 @@ describe('sortDomains', () => {
expect(sortDomains([
'.s3-website-us-west-2.amazonaws.com',
'.s3-1.amazonaws.com'
])).to.deep.equal([
])).toStrictEqual([
'.s3-1.amazonaws.com',
'.s3-website-us-west-2.amazonaws.com'
]);
@@ -35,7 +35,7 @@ describe('sortDomains', () => {
expect(sortDomains([
'.s3-1.amazonaws.com',
'.s3-website-us-west-2.amazonaws.com'
])).to.deep.equal([
])).toStrictEqual([
'.s3-1.amazonaws.com',
'.s3-website-us-west-2.amazonaws.com'
]);
@@ -46,7 +46,7 @@ describe('sortDomains', () => {
'.s3-accesspoint.dualstack.us-west-2.amazonaws.com',
'.s3.dualstack.us-west-2.amazonaws.com'
])
).to.deep.equal([
).toStrictEqual([
'.s3.dualstack.us-west-2.amazonaws.com',
'.s3-deprecated.us-west-2.amazonaws.com',
'.s3-accesspoint.dualstack.us-west-2.amazonaws.com'
@@ -58,7 +58,7 @@ describe('sortDomains', () => {
'.s3-accesspoint.dualstack.us-west-2.amazonaws.com',
'.s3.dualstack.us-west-2.amazonaws.com'
])
).to.deep.equal([
).toStrictEqual([
'.s3.dualstack.us-west-2.amazonaws.com',
'.s3-deprecated.us-west-2.amazonaws.com',
'.s3-accesspoint.dualstack.us-west-2.amazonaws.com'
@@ -69,7 +69,7 @@ describe('sortDomains', () => {
'.ec2-25-58-215-234.us-east-2.compute.amazonaws.com',
'.ec2-13-58-215-234.us-east-2.compute.amazonaws.com'
])
).to.deep.equal([
).toStrictEqual([
'.ec2-13-58-215-234.us-east-2.compute.amazonaws.com',
'.ec2-25-58-215-234.us-east-2.compute.amazonaws.com'
]);
@@ -80,7 +80,7 @@ describe('sortDomains', () => {
'.notice.samsungcloudsolution.com',
'samsungqbe.com',
'samsungcloudsolution.com'
])).to.deep.equal([
])).toStrictEqual([
'samsungqbe.com',
'samsungcloudsolution.com',
'.notice.samsungcloudsolution.com'
@@ -117,7 +117,7 @@ describe('sortDomains', () => {
'.rwww.samsungotn.net',
'.samsungpoland.com.pl'
])
).to.deep.equal([
).toStrictEqual([
'.gld.samsungosp.com',
'.rwww.samsungotn.net',
'samsungqbe.com',

View File

@@ -1,10 +1,10 @@
import { createTrie } from './trie';
import { describe, it } from 'mocha';
import { expect } from 'chai';
import { expect } from 'expect';
// describe('hostname to tokens', () => {
// it('should split hostname into tokens.', () => {
// expect(hostnameToTokens('.blog.skk.moe')).to.deep.equal([
// expect(hostnameToTokens('.blog.skk.moe')).toStrictEqual([
// '.',
// 'blog',
// '.',
@@ -13,7 +13,7 @@ import { expect } from 'chai';
// 'moe'
// ]);
// expect(hostnameToTokens('blog.skk.moe')).to.deep.equal([
// expect(hostnameToTokens('blog.skk.moe')).toStrictEqual([
// 'blog',
// '.',
// 'skk',
@@ -21,13 +21,13 @@ import { expect } from 'chai';
// 'moe'
// ]);
// expect(hostnameToTokens('skk.moe')).to.deep.equal([
// expect(hostnameToTokens('skk.moe')).toStrictEqual([
// 'skk',
// '.',
// 'moe'
// ]);
// expect(hostnameToTokens('moe')).to.deep.equal([
// expect(hostnameToTokens('moe')).toStrictEqual([
// 'moe'
// ]);
// });
@@ -41,14 +41,14 @@ describe('Trie', () => {
trie.add('skk.moe');
trie.add('anotherskk.moe');
expect(trie.size).to.equal(3);
expect(trie.size).toBe(3);
expect(trie.has('a.skk.moe'), 'a.skk.moe').to.equal(true);
expect(trie.has('skk.moe'), 'skk.moe').to.equal(true);
expect(trie.has('anotherskk.moe'), 'anotherskk.moe').to.equal(true);
expect(trie.has('example.com'), 'example.com').to.equal(false);
expect(trie.has('skk.mo'), 'skk.mo').to.equal(false);
expect(trie.has('another.skk.moe'), 'another.skk.moe').to.equal(false);
expect(trie.has('a.skk.moe')).toBe(true);
expect(trie.has('skk.moe')).toBe(true);
expect(trie.has('anotherskk.moe')).toBe(true);
expect(trie.has('example.com')).toBe(false);
expect(trie.has('skk.mo')).toBe(false);
expect(trie.has('another.skk.moe')).toBe(false);
});
it('adding the same item several times should not increase size.', () => {
@@ -59,19 +59,19 @@ describe('Trie', () => {
// eslint-disable-next-line sukka/no-element-overwrite -- deliberately do testing
trie.add('skk.moe');
expect(trie.size).to.equal(2);
expect(trie.has('skk.moe')).to.equal(true);
expect(trie.size).toBe(2);
expect(trie.has('skk.moe')).toBe(true);
});
it('should be possible to set the null sequence.', () => {
const trie = createTrie(null, false);
trie.add('');
expect(trie.has('')).to.equal(true);
expect(trie.has('')).toBe(true);
const trie2 = createTrie(null, true);
trie2.add('');
expect(trie2.has('')).to.equal(true);
expect(trie2.has('')).toBe(true);
});
it('should be possible to delete items.', () => {
@@ -82,20 +82,20 @@ describe('Trie', () => {
trie.add('example.com');
trie.add('moe.sb');
expect(trie.delete('')).to.equal(false);
expect(trie.delete('')).to.equal(false);
expect(trie.delete('example.org')).to.equal(false);
expect(trie.delete('')).toBe(false);
expect(trie.delete('')).toBe(false);
expect(trie.delete('example.org')).toBe(false);
expect(trie.delete('skk.moe')).to.equal(true);
expect(trie.has('skk.moe')).to.equal(false);
expect(trie.has('moe.sb')).to.equal(true);
expect(trie.delete('skk.moe')).toBe(true);
expect(trie.has('skk.moe')).toBe(false);
expect(trie.has('moe.sb')).toBe(true);
expect(trie.size).to.equal(3);
expect(trie.size).toBe(3);
expect(trie.delete('example.com')).to.equal(true);
expect(trie.size).to.equal(2);
expect(trie.delete('moe.sb')).to.equal(true);
expect(trie.size).to.equal(1);
expect(trie.delete('example.com')).toBe(true);
expect(trie.size).toBe(2);
expect(trie.delete('moe.sb')).toBe(true);
expect(trie.size).toBe(1);
});
it('should be possible to check the existence of a sequence in the Trie.', () => {
@@ -103,10 +103,10 @@ describe('Trie', () => {
trie.add('example.org.skk.moe');
expect(trie.has('example.org.skk.moe')).to.equal(true);
expect(trie.has('skk.moe')).to.equal(false);
expect(trie.has('example.org')).to.equal(false);
expect(trie.has('')).to.equal(false);
expect(trie.has('example.org.skk.moe')).toBe(true);
expect(trie.has('skk.moe')).toBe(false);
expect(trie.has('example.org')).toBe(false);
expect(trie.has('')).toBe(false);
});
it('should be possible to retrieve items matching the given prefix.', () => {
@@ -117,12 +117,12 @@ describe('Trie', () => {
trie.add('cdn.example.com');
trie.add('example.org');
expect(trie.find('example.com'), 'example.com').to.deep.equal(['example.com', 'cdn.example.com', 'blog.example.com']);
expect(trie.find('com'), 'com').to.deep.equal(['example.com', 'cdn.example.com', 'blog.example.com']);
expect(trie.find('.example.com'), '.example.com').to.deep.equal(['cdn.example.com', 'blog.example.com']);
expect(trie.find('org'), 'prg').to.deep.equal(['example.org']);
expect(trie.find('example.net'), 'example.net').to.deep.equal([]);
expect(trie.find(''), '').to.deep.equal(['example.org', 'example.com', 'cdn.example.com', 'blog.example.com']);
expect(trie.find('example.com')).toStrictEqual(['example.com', 'cdn.example.com', 'blog.example.com']);
expect(trie.find('com')).toStrictEqual(['example.com', 'cdn.example.com', 'blog.example.com']);
expect(trie.find('.example.com')).toStrictEqual(['cdn.example.com', 'blog.example.com']);
expect(trie.find('org')).toStrictEqual(['example.org']);
expect(trie.find('example.net')).toStrictEqual([]);
expect(trie.find('')).toStrictEqual(['example.org', 'example.com', 'cdn.example.com', 'blog.example.com']);
});
it('should be possible to retrieve items matching the given prefix even with a smol trie', () => {
@@ -134,23 +134,23 @@ describe('Trie', () => {
trie.add('cdn.example.com');
trie.add('example.org');
expect(trie.find('example.com')).to.deep.equal(['.example.com']);
expect(trie.find('com')).to.deep.equal(['.example.com']);
expect(trie.find('.example.com')).to.deep.equal(['.example.com']);
expect(trie.find('org')).to.deep.equal(['example.org']);
expect(trie.find('example.net')).to.deep.equal([]);
expect(trie.find('')).to.deep.equal(['example.org', '.example.com']);
expect(trie.find('example.com')).toStrictEqual(['.example.com']);
expect(trie.find('com')).toStrictEqual(['.example.com']);
expect(trie.find('.example.com')).toStrictEqual(['.example.com']);
expect(trie.find('org')).toStrictEqual(['example.org']);
expect(trie.find('example.net')).toStrictEqual([]);
expect(trie.find('')).toStrictEqual(['example.org', '.example.com']);
});
it('should be possible to create a trie from an arbitrary iterable.', () => {
let trie = createTrie(['skk.moe', 'blog.skk.moe'], false);
expect(trie.size).to.equal(2);
expect(trie.has('skk.moe')).to.equal(true);
expect(trie.size).toBe(2);
expect(trie.has('skk.moe')).toBe(true);
trie = createTrie(new Set(['skk.moe', 'example.com']), false);
expect(trie.size).to.equal(2);
expect(trie.has('skk.moe')).to.equal(true);
expect(trie.size).toBe(2);
expect(trie.has('skk.moe')).toBe(true);
});
});
@@ -158,27 +158,27 @@ describe('surge domainset dedupe', () => {
it('should not remove same entry', () => {
const trie = createTrie(['.skk.moe', 'noc.one'], false);
expect(trie.find('.skk.moe')).to.deep.equal(['.skk.moe']);
expect(trie.find('noc.one')).to.deep.equal(['noc.one']);
expect(trie.find('.skk.moe')).toStrictEqual(['.skk.moe']);
expect(trie.find('noc.one')).toStrictEqual(['noc.one']);
});
it('should match subdomain - 1', () => {
const trie = createTrie(['www.noc.one', 'www.sukkaw.com', 'blog.skk.moe', 'image.cdn.skk.moe', 'cdn.sukkaw.net'], false);
expect(trie.find('.skk.moe')).to.deep.equal(['image.cdn.skk.moe', 'blog.skk.moe']);
expect(trie.find('.sukkaw.com')).to.deep.equal(['www.sukkaw.com']);
expect(trie.find('.skk.moe')).toStrictEqual(['image.cdn.skk.moe', 'blog.skk.moe']);
expect(trie.find('.sukkaw.com')).toStrictEqual(['www.sukkaw.com']);
});
it('should match subdomain - 2', () => {
const trie = createTrie(['www.noc.one', 'www.sukkaw.com', '.skk.moe', 'blog.skk.moe', 'image.cdn.skk.moe', 'cdn.sukkaw.net'], false);
expect(trie.find('.skk.moe')).to.deep.equal(['.skk.moe', 'image.cdn.skk.moe', 'blog.skk.moe']);
expect(trie.find('.sukkaw.com')).to.deep.equal(['www.sukkaw.com']);
expect(trie.find('.skk.moe')).toStrictEqual(['.skk.moe', 'image.cdn.skk.moe', 'blog.skk.moe']);
expect(trie.find('.sukkaw.com')).toStrictEqual(['www.sukkaw.com']);
});
it('should not remove non-subdomain', () => {
const trie = createTrie(['skk.moe', 'sukkaskk.moe'], false);
expect(trie.find('.skk.moe')).to.deep.equal([]);
expect(trie.find('.skk.moe')).toStrictEqual([]);
});
});
@@ -190,7 +190,7 @@ describe('smol tree', () => {
'.blog.sub.example.com', 'sub.example.com', 'cdn.sub.example.com', '.sub.example.com'
], true);
expect(trie.dump()).to.deep.equal([
expect(trie.dump()).toStrictEqual([
'.sub.example.com',
'cdn.noc.one', 'www.noc.one',
'.skk.moe'
@@ -202,7 +202,7 @@ describe('smol tree', () => {
'.skk.moe', 'blog.skk.moe', '.cdn.skk.moe', 'skk.moe'
], true);
expect(trie.dump()).to.deep.equal([
expect(trie.dump()).toStrictEqual([
'.skk.moe'
]);
});
@@ -212,12 +212,12 @@ describe('smol tree', () => {
'.blog.sub.example.com', 'cdn.sub.example.com', '.sub.example.com'
], true);
expect(trie.dump()).to.deep.equal([
expect(trie.dump()).toStrictEqual([
'.sub.example.com'
]);
trie.add('.sub.example.com');
expect(trie.dump()).to.deep.equal([
expect(trie.dump()).toStrictEqual([
'.sub.example.com'
]);
});
@@ -230,7 +230,7 @@ describe('smol tree', () => {
'px.cdn.creative.medialytics.com'
], true);
expect(trie.dump()).to.deep.equal([
expect(trie.dump()).toStrictEqual([
'cdn.creative.medialytics.com',
'px.cdn.creative.medialytics.com',
'commercial.shouji.360.cn',
@@ -246,7 +246,7 @@ describe('smol tree', () => {
'blog.skk.moe'
], true);
expect(trie.dump()).to.deep.equal([
expect(trie.dump()).toStrictEqual([
'anotherskk.moe',
'blog.anotherskk.moe',
'skk.moe',
@@ -265,7 +265,7 @@ describe('smol tree', () => {
'img.skk.local'
], true);
expect(trie.dump(), '1').to.deep.equal([
expect(trie.dump()).toStrictEqual([
'img.skk.local',
'blog.img.skk.local',
'.cdn.local',
@@ -277,7 +277,7 @@ describe('smol tree', () => {
trie.whitelist('.skk.moe');
expect(trie.dump(), '2').to.deep.equal([
expect(trie.dump()).toStrictEqual([
'img.skk.local',
'blog.img.skk.local',
'.cdn.local',
@@ -286,7 +286,7 @@ describe('smol tree', () => {
]);
trie.whitelist('anotherskk.moe');
expect(trie.dump(), '3').to.deep.equal([
expect(trie.dump()).toStrictEqual([
'img.skk.local',
'blog.img.skk.local',
'.cdn.local',
@@ -296,25 +296,25 @@ describe('smol tree', () => {
trie.add('anotherskk.moe');
trie.whitelist('.anotherskk.moe');
expect(trie.dump(), '4').to.deep.equal([
expect(trie.dump()).toStrictEqual([
'img.skk.local',
'blog.img.skk.local',
'.cdn.local'
]);
trie.whitelist('img.skk.local');
expect(trie.dump(), '5').to.deep.equal([
expect(trie.dump()).toStrictEqual([
'blog.img.skk.local',
'.cdn.local'
]);
trie.whitelist('cdn.local');
expect(trie.dump(), '6').to.deep.equal([
expect(trie.dump()).toStrictEqual([
'blog.img.skk.local'
]);
trie.whitelist('.skk.local');
expect(trie.dump(), '7').to.deep.equal([]);
expect(trie.dump()).toStrictEqual([]);
});
it('should whitelist trie correctly', () => {
@@ -327,22 +327,22 @@ describe('smol tree', () => {
'cdn.example.com'
], true);
expect(trie.dump()).to.deep.equal([
expect(trie.dump()).toStrictEqual([
'cdn.example.com', 'blog.cdn.example.com',
'.skk.moe',
'.t.co'
]);
trie.whitelist('.t.co');
expect(trie.dump()).to.deep.equal([
expect(trie.dump()).toStrictEqual([
'cdn.example.com', 'blog.cdn.example.com',
'.skk.moe'
]);
trie.whitelist('skk.moe');
expect(trie.dump()).to.deep.equal(['cdn.example.com', 'blog.cdn.example.com']);
expect(trie.dump()).toStrictEqual(['cdn.example.com', 'blog.cdn.example.com']);
trie.whitelist('cdn.example.com');
expect(trie.dump()).to.deep.equal(['blog.cdn.example.com']);
expect(trie.dump()).toStrictEqual(['blog.cdn.example.com']);
});
});

View File

@@ -30,7 +30,7 @@
"cli-table3": "^0.6.5",
"csv-parse": "^5.5.6",
"fast-cidr-tools": "^0.3.1",
"fdir": "^6.4.1",
"fdir": "^6.4.2",
"foxact": "^0.2.39",
"hash-wasm": "^4.11.0",
"json-stringify-pretty-compact": "^3.0.0",
@@ -51,23 +51,22 @@
"@swc/core": "^1.7.36",
"@types/better-sqlite3": "^7.6.11",
"@types/cacache": "^17.0.2",
"@types/chai": "^4.3.20",
"@types/make-fetch-happen": "^10.0.4",
"@types/mocha": "^10.0.9",
"@types/node": "^22.7.5",
"@types/node": "^22.7.6",
"@types/node-fetch": "2",
"@types/punycode": "^2.1.4",
"@types/tar-fs": "^2.0.4",
"@types/tar-stream": "^3.1.3",
"chai": "4",
"eslint": "^9.12.0",
"eslint-config-sukka": "^6.7.0",
"eslint-formatter-sukka": "^6.7.0",
"expect": "^29.7.0",
"mitata": "^1.0.10",
"mocha": "^10.7.3",
"typescript": "^5.6.3"
},
"packageManager": "pnpm@9.12.1",
"packageManager": "pnpm@9.12.2",
"resolutions": {
"has": "npm:@nolyfill/has@latest"
},

362
pnpm-lock.yaml generated
View File

@@ -47,8 +47,8 @@ importers:
specifier: ^0.3.1
version: 0.3.1
fdir:
specifier: ^6.4.1
version: 6.4.1(picomatch@4.0.2)
specifier: ^6.4.2
version: 6.4.2(picomatch@4.0.2)
foxact:
specifier: ^0.2.39
version: 0.2.39
@@ -104,9 +104,6 @@ importers:
'@types/cacache':
specifier: ^17.0.2
version: 17.0.2
'@types/chai':
specifier: ^4.3.20
version: 4.3.20
'@types/make-fetch-happen':
specifier: ^10.0.4
version: 10.0.4
@@ -114,8 +111,8 @@ importers:
specifier: ^10.0.9
version: 10.0.9
'@types/node':
specifier: ^22.7.5
version: 22.7.5
specifier: ^22.7.6
version: 22.7.6
'@types/node-fetch':
specifier: '2'
version: 2.6.11
@@ -128,9 +125,6 @@ importers:
'@types/tar-stream':
specifier: ^3.1.3
version: 3.1.3
chai:
specifier: '4'
version: 4.4.1
eslint:
specifier: ^9.12.0
version: 9.12.0
@@ -140,6 +134,9 @@ importers:
eslint-formatter-sukka:
specifier: ^6.7.0
version: 6.7.0
expect:
specifier: ^29.7.0
version: 29.7.0
mitata:
specifier: ^1.0.10
version: 1.0.10
@@ -155,6 +152,18 @@ packages:
'@antfu/utils@0.7.10':
resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
'@babel/code-frame@7.25.7':
resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.25.7':
resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==}
engines: {node: '>=6.9.0'}
'@babel/highlight@7.25.7':
resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==}
engines: {node: '>=6.9.0'}
'@cliqz/adblocker-content@1.34.0':
resolution: {integrity: sha512-5LcV8UZv49RWwtpom9ve4TxJIFKd+bjT59tS/2Z2c22Qxx5CW1ncO/T+ybzk31z422XplQfd0ZE6gMGGKs3EMg==}
@@ -250,6 +259,18 @@ packages:
resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
engines: {node: '>=18.0.0'}
'@jest/expect-utils@29.7.0':
resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jest/schemas@29.6.3':
resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jest/types@29.6.3':
resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jsdevtools/ez-spawn@3.0.4':
resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==}
engines: {node: '>=10'}
@@ -357,6 +378,9 @@ packages:
'@remusao/trie@1.5.0':
resolution: {integrity: sha512-UX+3utJKgwCsg6sUozjxd38gNMVRXrY4TNX9VvCdSrlZBS1nZjRPi98ON3QjRAdf6KCguJFyQARRsulTeqQiPg==}
'@sinclair/typebox@0.27.8':
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
'@stylistic/eslint-plugin-js@2.8.0':
resolution: {integrity: sha512-/e7pSzVMrwBd6yzSDsKHwax3TS96+pd/xSKzELaTkOuYqUhYfj/becWdfDbFSBGQD7BBBCiiE4L8L2cUfu5h+A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -474,9 +498,6 @@ packages:
'@types/cacache@17.0.2':
resolution: {integrity: sha512-IrqHzVX2VRMDQQKa7CtKRnuoCLdRJiLW6hWU+w7i7+AaQ0Ii5bKwJxd5uRK4zBCyrHd3tG6G8zOm2LplxbSfQg==}
'@types/chai@4.3.20':
resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==}
'@types/chrome@0.0.278':
resolution: {integrity: sha512-PDIJodOu7o54PpSOYLybPW/MDZBCjM1TKgf31I3Q/qaEbNpIH09rOM3tSEH3N7Q+FAqb1933LhF8ksUPYeQLNg==}
@@ -498,6 +519,15 @@ packages:
'@types/har-format@1.2.16':
resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==}
'@types/istanbul-lib-coverage@2.0.6':
resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
'@types/istanbul-lib-report@3.0.3':
resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
'@types/istanbul-reports@3.0.4':
resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@@ -510,8 +540,8 @@ packages:
'@types/node-fetch@2.6.11':
resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==}
'@types/node@22.7.5':
resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==}
'@types/node@22.7.6':
resolution: {integrity: sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==}
'@types/punycode@2.1.4':
resolution: {integrity: sha512-trzh6NzBnq8yw5e35f8xe8VTYjqM3NE7bohBtvDVf/dtUer3zYTLK1Ka3DG3p7bdtoaOHZucma6FfVKlQ134pQ==}
@@ -522,12 +552,21 @@ packages:
'@types/ssri@7.1.5':
resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==}
'@types/stack-utils@2.0.3':
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
'@types/tar-fs@2.0.4':
resolution: {integrity: sha512-ipPec0CjTmVDWE+QKr9cTmIIoTl7dFG/yARCM5MqK8i6CNLIG1P8x4kwDsOQY1ChZOZjH0wO9nvfgBvWl4R3kA==}
'@types/tar-stream@3.1.3':
resolution: {integrity: sha512-Zbnx4wpkWBMBSu5CytMbrT5ZpMiF55qgM+EpHzR4yIDu7mv52cej8hTkOc6K+LzpkOAbxwn/m7j3iO+/l42YkQ==}
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
'@types/yargs@17.0.33':
resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
'@typescript-eslint/eslint-plugin@8.8.1':
resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -645,10 +684,18 @@ packages:
resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
engines: {node: '>=12'}
ansi-styles@3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
ansi-styles@5.2.0:
resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
engines: {node: '>=10'}
ansi-styles@6.2.1:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
@@ -660,9 +707,6 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
assertion-error@1.1.0:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
async-sema@3.1.1:
resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
@@ -744,17 +788,14 @@ packages:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
chai@4.4.1:
resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==}
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
check-error@1.0.3:
resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
@@ -766,6 +807,10 @@ packages:
resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
engines: {node: '>=18'}
ci-info@3.9.0:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
ci-info@4.0.0:
resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==}
engines: {node: '>=8'}
@@ -780,10 +825,16 @@ packages:
cliui@7.0.4:
resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
color-name@1.1.3:
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
@@ -833,10 +884,6 @@ packages:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
engines: {node: '>=10'}
deep-eql@4.1.4:
resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
engines: {node: '>=6'}
deep-extend@0.6.0:
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
engines: {node: '>=4.0.0'}
@@ -855,6 +902,10 @@ packages:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
diff-sequences@29.6.3:
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
diff@5.2.0:
resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
engines: {node: '>=0.3.1'}
@@ -889,6 +940,14 @@ packages:
resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
engines: {node: '>=6'}
escape-string-regexp@1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
escape-string-regexp@2.0.0:
resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
engines: {node: '>=8'}
escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
@@ -1029,6 +1088,10 @@ packages:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
expect@29.7.0:
resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
fast-cidr-tools@0.3.1:
resolution: {integrity: sha512-CixbR87xxUYpoZBR6xyFmOkhoOnd8YtmSW956evigw+AOc20fXAn3FXGL5eFAPpGcrs7qzOOEjEPxVMnvRJ87Q==}
engines: {node: '>=16'}
@@ -1052,8 +1115,8 @@ packages:
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
fdir@6.4.1:
resolution: {integrity: sha512-upAYvbFc8GU44qWv+r6YnWp3h13/hPFOnpCsuahbxFGmOCm7sc5UT1SytkHLS7Go/UwvhVD9k4dF6PJxpIjqAA==}
fdir@6.4.2:
resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@@ -1124,9 +1187,6 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
get-func-name@2.0.2:
resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
get-tsconfig@4.8.1:
resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
@@ -1164,6 +1224,10 @@ packages:
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
has-flag@3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
@@ -1261,6 +1325,29 @@ packages:
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
jest-diff@29.7.0:
resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-get-type@29.6.3:
resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-matcher-utils@29.7.0:
resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-message-util@29.7.0:
resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-util@29.7.0:
resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
@@ -1306,9 +1393,6 @@ packages:
resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
engines: {node: '>=10'}
loupe@2.3.7:
resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -1469,9 +1553,6 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
pathval@1.1.1:
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -1496,6 +1577,10 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
pretty-format@29.7.0:
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
proc-log@5.0.0:
resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==}
engines: {node: ^18.17.0 || >=20.5.0}
@@ -1524,6 +1609,9 @@ packages:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
react-is@18.3.1:
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
readable-stream@3.6.2:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
@@ -1609,6 +1697,10 @@ packages:
simple-get@4.0.1:
resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
smart-buffer@4.2.0:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
@@ -1638,6 +1730,10 @@ packages:
stable-hash@0.0.4:
resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==}
stack-utils@2.0.6:
resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
engines: {node: '>=10'}
streamx@2.20.0:
resolution: {integrity: sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==}
@@ -1676,6 +1772,10 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -1852,6 +1952,20 @@ snapshots:
'@antfu/utils@0.7.10': {}
'@babel/code-frame@7.25.7':
dependencies:
'@babel/highlight': 7.25.7
picocolors: 1.1.1
'@babel/helper-validator-identifier@7.25.7': {}
'@babel/highlight@7.25.7':
dependencies:
'@babel/helper-validator-identifier': 7.25.7
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.1.1
'@cliqz/adblocker-content@1.34.0':
dependencies:
'@cliqz/adblocker-extended-selectors': 1.34.0
@@ -1980,6 +2094,23 @@ snapshots:
dependencies:
minipass: 7.1.2
'@jest/expect-utils@29.7.0':
dependencies:
jest-get-type: 29.6.3
'@jest/schemas@29.6.3':
dependencies:
'@sinclair/typebox': 0.27.8
'@jest/types@29.6.3':
dependencies:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
'@types/node': 22.7.6
'@types/yargs': 17.0.33
chalk: 4.1.2
'@jsdevtools/ez-spawn@3.0.4':
dependencies:
call-me-maybe: 1.0.2
@@ -2077,6 +2208,8 @@ snapshots:
'@remusao/trie@1.5.0': {}
'@sinclair/typebox@0.27.8': {}
'@stylistic/eslint-plugin-js@2.8.0(eslint@9.12.0)':
dependencies:
eslint: 9.12.0
@@ -2181,13 +2314,11 @@ snapshots:
'@types/better-sqlite3@7.6.11':
dependencies:
'@types/node': 22.7.5
'@types/node': 22.7.6
'@types/cacache@17.0.2':
dependencies:
'@types/node': 22.7.5
'@types/chai@4.3.20': {}
'@types/node': 22.7.6
'@types/chrome@0.0.278':
dependencies:
@@ -2211,6 +2342,16 @@ snapshots:
'@types/har-format@1.2.16': {}
'@types/istanbul-lib-coverage@2.0.6': {}
'@types/istanbul-lib-report@3.0.3':
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports@3.0.4':
dependencies:
'@types/istanbul-lib-report': 3.0.3
'@types/json-schema@7.0.15': {}
'@types/make-fetch-happen@10.0.4':
@@ -2223,10 +2364,10 @@ snapshots:
'@types/node-fetch@2.6.11':
dependencies:
'@types/node': 22.7.5
'@types/node': 22.7.6
form-data: 4.0.1
'@types/node@22.7.5':
'@types/node@22.7.6':
dependencies:
undici-types: 6.19.8
@@ -2236,16 +2377,24 @@ snapshots:
'@types/ssri@7.1.5':
dependencies:
'@types/node': 22.7.5
'@types/node': 22.7.6
'@types/stack-utils@2.0.3': {}
'@types/tar-fs@2.0.4':
dependencies:
'@types/node': 22.7.5
'@types/node': 22.7.6
'@types/tar-stream': 3.1.3
'@types/tar-stream@3.1.3':
dependencies:
'@types/node': 22.7.5
'@types/node': 22.7.6
'@types/yargs-parser@21.0.3': {}
'@types/yargs@17.0.33':
dependencies:
'@types/yargs-parser': 21.0.3
'@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)':
dependencies:
@@ -2393,10 +2542,16 @@ snapshots:
ansi-regex@6.1.0: {}
ansi-styles@3.2.1:
dependencies:
color-convert: 1.9.3
ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
ansi-styles@5.2.0: {}
ansi-styles@6.2.1: {}
anymatch@3.1.3:
@@ -2406,8 +2561,6 @@ snapshots:
argparse@2.0.1: {}
assertion-error@1.1.0: {}
async-sema@3.1.1: {}
asynckit@0.4.0: {}
@@ -2504,25 +2657,17 @@ snapshots:
camelcase@6.3.0: {}
chai@4.4.1:
chalk@2.4.2:
dependencies:
assertion-error: 1.1.0
check-error: 1.0.3
deep-eql: 4.1.4
get-func-name: 2.0.2
loupe: 2.3.7
pathval: 1.1.1
type-detect: 4.0.8
ansi-styles: 3.2.1
escape-string-regexp: 1.0.5
supports-color: 5.5.0
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
check-error@1.0.3:
dependencies:
get-func-name: 2.0.2
chokidar@3.6.0:
dependencies:
anymatch: 3.1.3
@@ -2539,6 +2684,8 @@ snapshots:
chownr@3.0.0: {}
ci-info@3.9.0: {}
ci-info@4.0.0: {}
cli-table3@0.6.5:
@@ -2555,10 +2702,16 @@ snapshots:
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
color-convert@1.9.3:
dependencies:
color-name: 1.1.3
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
color-name@1.1.3: {}
color-name@1.1.4: {}
colorette@2.0.20: {}
@@ -2595,10 +2748,6 @@ snapshots:
dependencies:
mimic-response: 3.1.0
deep-eql@4.1.4:
dependencies:
type-detect: 4.0.8
deep-extend@0.6.0: {}
deep-is@0.1.4: {}
@@ -2609,6 +2758,8 @@ snapshots:
detect-libc@2.0.3: {}
diff-sequences@29.6.3: {}
diff@5.2.0: {}
doctrine@3.0.0:
@@ -2639,6 +2790,10 @@ snapshots:
escalade@3.1.2: {}
escape-string-regexp@1.0.5: {}
escape-string-regexp@2.0.0: {}
escape-string-regexp@4.0.0: {}
eslint-compat-utils@0.5.1(eslint@9.12.0):
@@ -2861,6 +3016,14 @@ snapshots:
expand-template@2.0.3: {}
expect@29.7.0:
dependencies:
'@jest/expect-utils': 29.7.0
jest-get-type: 29.6.3
jest-matcher-utils: 29.7.0
jest-message-util: 29.7.0
jest-util: 29.7.0
fast-cidr-tools@0.3.1: {}
fast-deep-equal@3.1.3: {}
@@ -2883,7 +3046,7 @@ snapshots:
dependencies:
reusify: 1.0.4
fdir@6.4.1(picomatch@4.0.2):
fdir@6.4.2(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
@@ -2942,8 +3105,6 @@ snapshots:
get-caller-file@2.0.5: {}
get-func-name@2.0.2: {}
get-tsconfig@4.8.1:
dependencies:
resolve-pkg-maps: 1.0.0
@@ -2983,6 +3144,8 @@ snapshots:
graphemer@1.4.0: {}
has-flag@3.0.0: {}
has-flag@4.0.0: {}
hash-wasm@4.11.0: {}
@@ -3069,6 +3232,45 @@ snapshots:
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
jest-diff@29.7.0:
dependencies:
chalk: 4.1.2
diff-sequences: 29.6.3
jest-get-type: 29.6.3
pretty-format: 29.7.0
jest-get-type@29.6.3: {}
jest-matcher-utils@29.7.0:
dependencies:
chalk: 4.1.2
jest-diff: 29.7.0
jest-get-type: 29.6.3
pretty-format: 29.7.0
jest-message-util@29.7.0:
dependencies:
'@babel/code-frame': 7.25.7
'@jest/types': 29.6.3
'@types/stack-utils': 2.0.3
chalk: 4.1.2
graceful-fs: 4.2.11
micromatch: 4.0.8
pretty-format: 29.7.0
slash: 3.0.0
stack-utils: 2.0.6
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
'@types/node': 22.7.6
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
picomatch: 2.3.1
js-tokens@4.0.0: {}
js-yaml@4.1.0:
dependencies:
argparse: 2.0.1
@@ -3112,10 +3314,6 @@ snapshots:
chalk: 4.1.2
is-unicode-supported: 0.1.0
loupe@2.3.7:
dependencies:
get-func-name: 2.0.2
lru-cache@10.4.3: {}
make-fetch-happen@14.0.2:
@@ -3301,8 +3499,6 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
pathval@1.1.1: {}
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@@ -3329,6 +3525,12 @@ snapshots:
prelude-ls@1.2.1: {}
pretty-format@29.7.0:
dependencies:
'@jest/schemas': 29.6.3
ansi-styles: 5.2.0
react-is: 18.3.1
proc-log@5.0.0: {}
promise-retry@2.0.1:
@@ -3358,6 +3560,8 @@ snapshots:
minimist: 1.2.8
strip-json-comments: 2.0.1
react-is@18.3.1: {}
readable-stream@3.6.2:
dependencies:
inherits: 2.0.4
@@ -3436,6 +3640,8 @@ snapshots:
once: 1.4.0
simple-concat: 1.0.1
slash@3.0.0: {}
smart-buffer@4.2.0: {}
socks-proxy-agent@8.0.4:
@@ -3466,6 +3672,10 @@ snapshots:
stable-hash@0.0.4: {}
stack-utils@2.0.6:
dependencies:
escape-string-regexp: 2.0.0
streamx@2.20.0:
dependencies:
fast-fifo: 1.3.2
@@ -3506,6 +3716,10 @@ snapshots:
strip-json-comments@3.1.1: {}
supports-color@5.5.0:
dependencies:
has-flag: 3.0.0
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0