Browse Source

Chore: housekeeping

SukkaW 2 years ago
parent
commit
697cea84ed

File diff suppressed because it is too large
+ 0 - 0
Assets/nomo.json


+ 2 - 2
Build/build-internal-cdn-rules.js

@@ -1,5 +1,5 @@
 // @ts-check
 // @ts-check
-const fse = require('fs-extra');
+const fsp = require('fs/promises');
 const path = require('path');
 const path = require('path');
 const tldts = require('tldts');
 const tldts = require('tldts');
 const { processLine } = require('./lib/process-line');
 const { processLine } = require('./lib/process-line');
@@ -79,7 +79,7 @@ const buildInternalCDNDomains = task(__filename, async () => {
     processLocalDomainSet(path.resolve(__dirname, '../List/domainset/cdn.conf')),
     processLocalDomainSet(path.resolve(__dirname, '../List/domainset/cdn.conf')),
     processLocalDomainSet(path.resolve(__dirname, '../List/domainset/download.conf')),
     processLocalDomainSet(path.resolve(__dirname, '../List/domainset/download.conf')),
 
 
-    fse.ensureDir(path.resolve(__dirname, '../List/internal'))
+    fsp.mkdir(path.resolve(__dirname, '../List/internal'), { recursive: true })
   ]);
   ]);
 
 
   return compareAndWriteFile(
   return compareAndWriteFile(

+ 2 - 2
Build/build-internal-chn-domains.js

@@ -1,6 +1,6 @@
 // @ts-check
 // @ts-check
 const path = require('path');
 const path = require('path');
-const fse = require('fs-extra');
+const fsp = require('fs/promises');
 const { parseFelixDnsmasq } = require('./lib/parse-dnsmasq');
 const { parseFelixDnsmasq } = require('./lib/parse-dnsmasq');
 const { task } = require('./lib/trace-runner');
 const { task } = require('./lib/trace-runner');
 const { compareAndWriteFile } = require('./lib/create-file');
 const { compareAndWriteFile } = require('./lib/create-file');
@@ -8,7 +8,7 @@ const { compareAndWriteFile } = require('./lib/create-file');
 const buildInternalChnDomains = task(__filename, async () => {
 const buildInternalChnDomains = task(__filename, async () => {
   const [result] = await Promise.all([
   const [result] = await Promise.all([
     parseFelixDnsmasq('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf'),
     parseFelixDnsmasq('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf'),
-    fse.ensureDir(path.resolve(__dirname, '../List/internal'))
+    fsp.mkdir(path.resolve(__dirname, '../List/internal'), { recursive: true })
   ]);
   ]);
 
 
   return compareAndWriteFile(
   return compareAndWriteFile(

+ 2 - 2
Build/build-internal-reverse-chn-cidr.js

@@ -2,8 +2,8 @@
 const { fetchRemoteTextAndCreateReadlineInterface } = require('./lib/fetch-remote-text-by-line');
 const { fetchRemoteTextAndCreateReadlineInterface } = require('./lib/fetch-remote-text-by-line');
 const { processLineFromReadline } = require('./lib/process-line');
 const { processLineFromReadline } = require('./lib/process-line');
 const path = require('path');
 const path = require('path');
-const fse = require('fs-extra');
 const fs = require('fs');
 const fs = require('fs');
+const fsp = require('fs/promises');
 const { task } = require('./lib/trace-runner');
 const { task } = require('./lib/trace-runner');
 
 
 const RESERVED_IPV4_CIDR = [
 const RESERVED_IPV4_CIDR = [
@@ -28,7 +28,7 @@ const buildInternalReverseChnCIDR = task(__filename, async () => {
   const [{ exclude }, cidr] = await Promise.all([
   const [{ exclude }, cidr] = await Promise.all([
     import('cidr-tools-wasm'),
     import('cidr-tools-wasm'),
     processLineFromReadline(await fetchRemoteTextAndCreateReadlineInterface('https://raw.githubusercontent.com/misakaio/chnroutes2/master/chnroutes.txt')),
     processLineFromReadline(await fetchRemoteTextAndCreateReadlineInterface('https://raw.githubusercontent.com/misakaio/chnroutes2/master/chnroutes.txt')),
-    fse.ensureDir(path.resolve(__dirname, '../List/internal'))
+    fsp.mkdir(path.resolve(__dirname, '../List/internal'), { recursive: true })
   ]);
   ]);
 
 
   const reversedCidr = exclude(
   const reversedCidr = exclude(

+ 1 - 2
Build/build-phishing-domainset.js

@@ -72,8 +72,7 @@ const buildPhishingDomainSet = task(__filename, async () => {
         'https://phishing-filter.pages.dev/phishing-filter-agh.txt'
         'https://phishing-filter.pages.dev/phishing-filter-agh.txt'
         // Prefer mirror, since malware-filter.gitlab.io has not been updated for a while
         // Prefer mirror, since malware-filter.gitlab.io has not been updated for a while
         // 'https://malware-filter.gitlab.io/malware-filter/phishing-filter-agh.txt'
         // 'https://malware-filter.gitlab.io/malware-filter/phishing-filter-agh.txt'
-      ],
-      false
+      ]
     ),
     ),
     getGorhillPublicSuffixPromise()
     getGorhillPublicSuffixPromise()
   ]);
   ]);

+ 4 - 3
Build/build-public.js

@@ -1,7 +1,8 @@
 const listDir = require('@sukka/listdir');
 const listDir = require('@sukka/listdir');
 const path = require('path');
 const path = require('path');
 const fs = require('fs');
 const fs = require('fs');
-const fse = require('fs-extra');
+const fsp = require('fs/promises');
+const { copy } = require('fs-extra');
 const { task } = require('./lib/trace-runner');
 const { task } = require('./lib/trace-runner');
 
 
 const rootPath = path.resolve(__dirname, '../');
 const rootPath = path.resolve(__dirname, '../');
@@ -17,8 +18,8 @@ const folderAndFilesToBeDeployed = [
 ];
 ];
 
 
 const buildPublicHtml = task(__filename, async () => {
 const buildPublicHtml = task(__filename, async () => {
-  await fse.ensureDir(publicPath);
-  await Promise.all(folderAndFilesToBeDeployed.map(dir => fse.copy(path.resolve(rootPath, dir), path.resolve(publicPath, dir))));
+  await fsp.mkdir(publicPath, { recursive: true });
+  await Promise.all(folderAndFilesToBeDeployed.map(dir => copy(path.resolve(rootPath, dir), path.resolve(publicPath, dir))));
 
 
   const list = await listDir(publicPath, {
   const list = await listDir(publicPath, {
     ignoreHidden: true,
     ignoreHidden: true,

+ 2 - 2
Build/build-reject-domainset.js

@@ -1,5 +1,5 @@
 // @ts-check
 // @ts-check
-const fse = require('fs-extra');
+const { copy } = require('fs-extra');
 const { resolve: pathResolve } = require('path');
 const { resolve: pathResolve } = require('path');
 
 
 const { processHosts, processFilterRules } = require('./lib/parse-filter');
 const { processHosts, processFilterRules } = require('./lib/parse-filter');
@@ -225,7 +225,7 @@ const buildRejectDomainSet = task(__filename, async () => {
       pathResolve(__dirname, '../List/internal/reject-stats.txt')
       pathResolve(__dirname, '../List/internal/reject-stats.txt')
     ),
     ),
     // Copy reject_sukka.conf for backward compatibility
     // Copy reject_sukka.conf for backward compatibility
-    fse.copy(pathResolve(__dirname, '../Source/domainset/reject_sukka.conf'), pathResolve(__dirname, '../List/domainset/reject_sukka.conf'))
+    copy(pathResolve(__dirname, '../Source/domainset/reject_sukka.conf'), pathResolve(__dirname, '../List/domainset/reject_sukka.conf'))
   ]);
   ]);
 });
 });
 
 

+ 2 - 2
Build/download-previous-build.js

@@ -2,7 +2,7 @@ const { fetch } = require('undici');
 const tar = require('tar');
 const tar = require('tar');
 const fs = require('fs');
 const fs = require('fs');
 const fsp = fs.promises;
 const fsp = fs.promises;
-const fse = require('fs-extra');
+const { copy } = require('fs-extra');
 const path = require('path');
 const path = require('path');
 const { tmpdir } = require('os');
 const { tmpdir } = require('os');
 const { Readable } = require('stream');
 const { Readable } = require('stream');
@@ -72,7 +72,7 @@ const downloadPreviousBuild = task(__filename, async () => {
   await Promise.all(filesList.map(async p => {
   await Promise.all(filesList.map(async p => {
     const src = path.join(extractedPath, 'ruleset.skk.moe-master', p);
     const src = path.join(extractedPath, 'ruleset.skk.moe-master', p);
     if (await fileExists(src)) {
     if (await fileExists(src)) {
-      return fse.copy(
+      return copy(
         src,
         src,
         path.join(__dirname, '..', p),
         path.join(__dirname, '..', p),
         { overwrite: true }
         { overwrite: true }

+ 4 - 4
Build/lib/fetch-retry.js

@@ -2,10 +2,10 @@
 const undici = require('undici');
 const undici = require('undici');
 
 
 // Enable HTTP/2 supports
 // Enable HTTP/2 supports
-undici.setGlobalDispatcher(new undici.Agent({
-  allowH2: true,
-  pipelining: 10
-}));
+// undici.setGlobalDispatcher(new undici.Agent({
+//   allowH2: true,
+//   pipelining: 10
+// }));
 
 
 const fetchWithRetry = /** @type {import('undici').fetch} */(require('@vercel/fetch-retry')(undici.fetch));
 const fetchWithRetry = /** @type {import('undici').fetch} */(require('@vercel/fetch-retry')(undici.fetch));
 module.exports.fetchWithRetry = fetchWithRetry;
 module.exports.fetchWithRetry = fetchWithRetry;

+ 3 - 1
Build/lib/parse-filter.js

@@ -202,7 +202,9 @@ async function processFilterRules(filterRulesUrl, fallbackUrls) {
       filterRules = (
       filterRules = (
         await Promise.any(
         await Promise.any(
           [filterRulesUrl, ...(fallbackUrls || [])].map(async url => {
           [filterRulesUrl, ...(fallbackUrls || [])].map(async url => {
-            const text = await fetchWithRetry(url, { signal: controller.signal }).then(r => r.text());
+            const r = await fetchWithRetry(url, { signal: controller.signal });
+            const text = await r.text();
+
             controller.abort();
             controller.abort();
             return text;
             return text;
           })
           })

+ 12 - 12
package.json

@@ -3,24 +3,24 @@
   "version": "0.0.0",
   "version": "0.0.0",
   "private": true,
   "private": true,
   "description": "",
   "description": "",
-  "scripts": {
-    "build": "node ./Build/index.js",
-    "lint": "eslint --format=sukka ."
-  },
   "repository": {
   "repository": {
     "type": "git",
     "type": "git",
     "url": "git+https://github.com/SukkaW/Surge.git"
     "url": "git+https://github.com/SukkaW/Surge.git"
   },
   },
+  "scripts": {
+    "build": "node ./Build/index.js",
+    "lint": "eslint --format=sukka ."
+  },
   "author": "",
   "author": "",
   "license": "ISC",
   "license": "ISC",
   "dependencies": {
   "dependencies": {
-    "@cliqz/adblocker": "^1.26.6",
+    "@cliqz/adblocker": "^1.26.8",
     "@sukka/listdir": "^0.2.0",
     "@sukka/listdir": "^0.2.0",
     "@vercel/fetch-retry": "^5.1.3",
     "@vercel/fetch-retry": "^5.1.3",
     "async-sema": "^3.1.1",
     "async-sema": "^3.1.1",
-    "ci-info": "^3.8.0",
+    "ci-info": "^3.9.0",
     "cidr-tools-wasm": "^0.0.11",
     "cidr-tools-wasm": "^0.0.11",
-    "eslint": "^8.50.0",
+    "eslint": "^8.51.0",
     "fs-extra": "^11.1.1",
     "fs-extra": "^11.1.1",
     "gorhill-publicsuffixlist": "github:gorhill/publicsuffixlist.js",
     "gorhill-publicsuffixlist": "github:gorhill/publicsuffixlist.js",
     "jest-worker": "^29.7.0",
     "jest-worker": "^29.7.0",
@@ -30,16 +30,16 @@
     "punycode": "^2.3.0",
     "punycode": "^2.3.0",
     "table": "^6.8.1",
     "table": "^6.8.1",
     "tar": "^6.2.0",
     "tar": "^6.2.0",
-    "tldts": "^6.0.14",
-    "undici": "5.24.0"
+    "tldts": "^6.0.16",
+    "undici": "5.26.3"
   },
   },
   "devDependencies": {
   "devDependencies": {
-    "@eslint-sukka/node": "4.0.0-beta.14",
+    "@eslint-sukka/node": "4.1.3",
     "@types/mocha": "^10.0.2",
     "@types/mocha": "^10.0.2",
     "@types/node": "^20.6.0",
     "@types/node": "^20.6.0",
     "chai": "^4.3.8",
     "chai": "^4.3.8",
-    "eslint-config-sukka": "4.0.0-beta.14",
-    "eslint-formatter-sukka": "4.0.0-beta.11",
+    "eslint-config-sukka": "4.1.3",
+    "eslint-formatter-sukka": "4.1.3",
     "mocha": "^10.2.0"
     "mocha": "^10.2.0"
   },
   },
   "engines": {
   "engines": {

+ 193 - 259
pnpm-lock.yaml

@@ -14,8 +14,8 @@ patchedDependencies:
 
 
 dependencies:
 dependencies:
   '@cliqz/adblocker':
   '@cliqz/adblocker':
-    specifier: ^1.26.6
-    version: 1.26.6
+    specifier: ^1.26.8
+    version: 1.26.8
   '@sukka/listdir':
   '@sukka/listdir':
     specifier: ^0.2.0
     specifier: ^0.2.0
     version: 0.2.0
     version: 0.2.0
@@ -26,14 +26,14 @@ dependencies:
     specifier: ^3.1.1
     specifier: ^3.1.1
     version: 3.1.1
     version: 3.1.1
   ci-info:
   ci-info:
-    specifier: ^3.8.0
-    version: 3.8.0
+    specifier: ^3.9.0
+    version: 3.9.0
   cidr-tools-wasm:
   cidr-tools-wasm:
     specifier: ^0.0.11
     specifier: ^0.0.11
     version: 0.0.11
     version: 0.0.11
   eslint:
   eslint:
-    specifier: ^8.50.0
-    version: 8.50.0
+    specifier: ^8.51.0
+    version: 8.51.0
   fs-extra:
   fs-extra:
     specifier: ^11.1.1
     specifier: ^11.1.1
     version: 11.1.1
     version: 11.1.1
@@ -62,16 +62,16 @@ dependencies:
     specifier: ^6.2.0
     specifier: ^6.2.0
     version: 6.2.0
     version: 6.2.0
   tldts:
   tldts:
-    specifier: ^6.0.14
-    version: 6.0.14
+    specifier: ^6.0.16
+    version: 6.0.16
   undici:
   undici:
-    specifier: 5.24.0
-    version: 5.24.0
+    specifier: 5.26.3
+    version: 5.26.3
 
 
 devDependencies:
 devDependencies:
   '@eslint-sukka/node':
   '@eslint-sukka/node':
-    specifier: 4.0.0-beta.14
-    version: 4.0.0-beta.14(eslint@8.50.0)
+    specifier: 4.1.3
+    version: 4.1.3(eslint@8.51.0)
   '@types/mocha':
   '@types/mocha':
     specifier: ^10.0.2
     specifier: ^10.0.2
     version: 10.0.2
     version: 10.0.2
@@ -82,11 +82,11 @@ devDependencies:
     specifier: ^4.3.8
     specifier: ^4.3.8
     version: 4.3.8
     version: 4.3.8
   eslint-config-sukka:
   eslint-config-sukka:
-    specifier: 4.0.0-beta.14
-    version: 4.0.0-beta.14(eslint@8.50.0)(typescript@5.2.2)
+    specifier: 4.1.3
+    version: 4.1.3(eslint@8.51.0)
   eslint-formatter-sukka:
   eslint-formatter-sukka:
-    specifier: 4.0.0-beta.11
-    version: 4.0.0-beta.11
+    specifier: 4.1.3
+    version: 4.1.3
   mocha:
   mocha:
     specifier: ^10.2.0
     specifier: ^10.2.0
     version: 10.2.0
     version: 10.2.0
@@ -97,53 +97,53 @@ packages:
     resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
     resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
     engines: {node: '>=0.10.0'}
     engines: {node: '>=0.10.0'}
 
 
-  /@cliqz/adblocker-content@1.26.6:
-    resolution: {integrity: sha512-cebc5AjL/quVVdcClJ7dqqvW5SrqATfUhwqn5MzWtponZ3t3fRpgpFgkt2fNa5rd3iz1UfTcAtWrgpshHYurTA==}
+  /@cliqz/adblocker-content@1.26.8:
+    resolution: {integrity: sha512-tDg1K0fTdNtQjO+XCg19sONEy26dcndPJ9pXoPtNdw+PO8vhIHy8U9QnIme63dAGd8VGHUtmZ/Vxpw3jtwoZxw==}
     dependencies:
     dependencies:
-      '@cliqz/adblocker-extended-selectors': 1.26.6
+      '@cliqz/adblocker-extended-selectors': 1.26.8
     dev: false
     dev: false
 
 
-  /@cliqz/adblocker-extended-selectors@1.26.6:
-    resolution: {integrity: sha512-Gpvg6eLO2aHiY7r2y0jueve6YbGkYvWaZ4MiwhQ1wPTwj/MxFqAh9cVHnz3EzoJUtsqoy9bvkhmfkRUatpvvzw==}
+  /@cliqz/adblocker-extended-selectors@1.26.8:
+    resolution: {integrity: sha512-aeOfwr10svwZJROHWhBolAWdKu66oTGiE0GRmoKDbS+ZPVZJRY+N2PZO7spzjjRbYyqKXl08Rgzb3ussJwJlfA==}
     dev: false
     dev: false
 
 
-  /@cliqz/adblocker@1.26.6:
-    resolution: {integrity: sha512-fSNCvyl0FRgKcc2NmHEhaQqeTT0QCLBT3eVZ15ah6baPdCaQm7N5IN/annv9bRalS8Lwbxymb3TBLzXpFTghrw==}
+  /@cliqz/adblocker@1.26.8:
+    resolution: {integrity: sha512-/dhojt5S1gdcd1D4cGeLIJ9KLpglk9rVFBS0P78ErZUDOUfLfpb1i+n1LQhF8CiWlw4N6r5iscWMiMRBx9K0QQ==}
     dependencies:
     dependencies:
-      '@cliqz/adblocker-content': 1.26.6
-      '@cliqz/adblocker-extended-selectors': 1.26.6
+      '@cliqz/adblocker-content': 1.26.8
+      '@cliqz/adblocker-extended-selectors': 1.26.8
       '@remusao/guess-url-type': 1.2.1
       '@remusao/guess-url-type': 1.2.1
       '@remusao/small': 1.2.1
       '@remusao/small': 1.2.1
       '@remusao/smaz': 1.9.1
       '@remusao/smaz': 1.9.1
-      '@types/chrome': 0.0.228
-      '@types/firefox-webext-browser': 111.0.1
-      tldts-experimental: 6.0.8
+      '@types/chrome': 0.0.246
+      '@types/firefox-webext-browser': 111.0.2
+      tldts-experimental: 6.0.16
     dev: false
     dev: false
 
 
-  /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0):
+  /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0):
     resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
     resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
     peerDependencies:
       eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
       eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
     dependencies:
     dependencies:
-      eslint: 8.50.0
+      eslint: 8.51.0
       eslint-visitor-keys: 3.4.3
       eslint-visitor-keys: 3.4.3
 
 
   /@eslint-community/regexpp@4.6.1:
   /@eslint-community/regexpp@4.6.1:
     resolution: {integrity: sha512-O7x6dMstWLn2ktjcoiNLDkAGG2EjveHL+Vvc+n0fXumkJYAcSqcVYKtwDU+hDZ0uDUsnUagSYaZrOLAYE8un1A==}
     resolution: {integrity: sha512-O7x6dMstWLn2ktjcoiNLDkAGG2EjveHL+Vvc+n0fXumkJYAcSqcVYKtwDU+hDZ0uDUsnUagSYaZrOLAYE8un1A==}
     engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
     engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
 
 
-  /@eslint-sukka/js@4.0.0-beta.14(eslint@8.50.0)(typescript@5.2.2):
-    resolution: {integrity: sha512-SVvMjnDaiH9twrWN/dMhbmEc1FRp9EN23qGuMIamnWGzbhP44LdtAdxqHjNtZVHyXs6N75wK8u75DzuZFDgd1A==}
-    dependencies:
-      '@eslint-sukka/shared': 4.0.0-beta.14
-      '@eslint/js': 8.50.0
-      '@stylistic/eslint-plugin-js': 0.0.5
-      eslint-plugin-antfu: 1.0.0-beta.7(eslint@8.50.0)(typescript@5.2.2)
-      eslint-plugin-i: 2.28.1(eslint@8.50.0)
-      eslint-plugin-sukka: 4.0.0-beta.14
-      eslint-plugin-unused-imports: 3.0.0(eslint@8.50.0)
-      globals: 13.22.0
+  /@eslint-sukka/js@4.1.3(eslint@8.51.0):
+    resolution: {integrity: sha512-DcGmL8ssqAqsrtb4lapYRo3joZrA9IaGFEJB/1YznJ+rvBCil2E00rLZreqVjYbzEgWPHkVV6u/51G55iggIXg==}
+    dependencies:
+      '@eslint-sukka/json': 4.1.3(eslint@8.51.0)
+      '@eslint-sukka/shared': 4.1.3
+      '@eslint/js': 8.51.0
+      '@stylistic/eslint-plugin-js': 0.0.11(eslint@8.51.0)
+      eslint-plugin-i: 2.28.1(eslint@8.51.0)
+      eslint-plugin-sukka: 4.1.3
+      eslint-plugin-unused-imports: 3.0.0(eslint@8.51.0)
+      globals: 13.23.0
     transitivePeerDependencies:
     transitivePeerDependencies:
       - '@typescript-eslint/eslint-plugin'
       - '@typescript-eslint/eslint-plugin'
       - '@typescript-eslint/parser'
       - '@typescript-eslint/parser'
@@ -151,24 +151,33 @@ packages:
       - eslint-import-resolver-typescript
       - eslint-import-resolver-typescript
       - eslint-import-resolver-webpack
       - eslint-import-resolver-webpack
       - supports-color
       - supports-color
-      - typescript
     dev: true
     dev: true
 
 
-  /@eslint-sukka/node@4.0.0-beta.14(eslint@8.50.0):
-    resolution: {integrity: sha512-Jb+2trR83ZBMe33u/WGKXKutrspsk1wVoTZEaaVR2Corc10dnYh7s2g3V5bgP8jyUWINEc2eXIVT4GVxcONFXg==}
+  /@eslint-sukka/json@4.1.3(eslint@8.51.0):
+    resolution: {integrity: sha512-an96HwpfXeVoycFCkNKP2fxvivJSnbJGS9C4NGG1pKttHaFKVADJDmUUEjQ/T6DsibMUf5b+vwQToHGw2JPDzw==}
     dependencies:
     dependencies:
-      '@eslint-sukka/shared': 4.0.0-beta.14
-      eslint-plugin-n: 16.1.0(eslint@8.50.0)
-      eslint-plugin-sukka: 4.0.0-beta.14
-      globals: 13.22.0
+      '@eslint-sukka/shared': 4.1.3
+      eslint-plugin-jsonc: 2.10.0(eslint@8.51.0)
+      jsonc-eslint-parser: 2.3.0
+    transitivePeerDependencies:
+      - eslint
+    dev: true
+
+  /@eslint-sukka/node@4.1.3(eslint@8.51.0):
+    resolution: {integrity: sha512-7bssJcazdXZa5O3a2VkD+Rjwsercgvrff/LP95ysRBVUuUyZlkB+oe5PD+UE3sSeu5JNiRV6qsb4wW93guBnQg==}
+    dependencies:
+      '@eslint-sukka/shared': 4.1.3
+      eslint-plugin-n: 16.2.0(eslint@8.51.0)
+      eslint-plugin-sukka: 4.1.3
+      globals: 13.23.0
     transitivePeerDependencies:
     transitivePeerDependencies:
       - eslint
       - eslint
     dev: true
     dev: true
 
 
-  /@eslint-sukka/shared@4.0.0-beta.14:
-    resolution: {integrity: sha512-Ij6lsBn8kl89mrb5cLHrMEz8fogCqkNJTo1O2EOyW0lY+jIAvIX/oYkOSP1oGZAWNg8WdTnKru3169QdT8Kklw==}
+  /@eslint-sukka/shared@4.1.3:
+    resolution: {integrity: sha512-eDX4s+AlEBEaWP5tmo5XKn40kFcOXx4/DBPucxSsf6BugSEi1BkR1fIo5TU4CXsn6IZ9u8Rd7SBRF3HbHuBulg==}
     dependencies:
     dependencies:
-      '@types/eslint': 8.44.3
+      '@types/eslint': 8.44.4
     dev: true
     dev: true
 
 
   /@eslint/eslintrc@2.1.2:
   /@eslint/eslintrc@2.1.2:
@@ -187,10 +196,15 @@ packages:
     transitivePeerDependencies:
     transitivePeerDependencies:
       - supports-color
       - supports-color
 
 
-  /@eslint/js@8.50.0:
-    resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==}
+  /@eslint/js@8.51.0:
+    resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
 
+  /@fastify/busboy@2.0.0:
+    resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==}
+    engines: {node: '>=14'}
+    dev: false
+
   /@humanwhocodes/config-array@0.11.11:
   /@humanwhocodes/config-array@0.11.11:
     resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}
     resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}
     engines: {node: '>=10.10.0'}
     engines: {node: '>=10.10.0'}
@@ -289,30 +303,33 @@ packages:
     resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
     resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
     dev: false
     dev: false
 
 
-  /@stylistic/eslint-plugin-js@0.0.5:
-    resolution: {integrity: sha512-Ca3DAk4lHGELPHnHIOUc/SF3Pg58xd/AATqNMSTSoxjoadRk6MGDblriURXjEg7gif4ygiB3+EcIuphAceFYvQ==}
+  /@stylistic/eslint-plugin-js@0.0.11(eslint@8.51.0):
+    resolution: {integrity: sha512-rsMEsR26A6hlnFyq0Oh2tLPNgURVbEbD9vPa+wf0dhkY9fhZu35rZNeNu62zDFiG/HU9GW2WqseSfbZ4iz2RNw==}
     dependencies:
     dependencies:
+      '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0)
       acorn: 8.10.0
       acorn: 8.10.0
       escape-string-regexp: 4.0.0
       escape-string-regexp: 4.0.0
       eslint-visitor-keys: 3.4.3
       eslint-visitor-keys: 3.4.3
       espree: 9.6.1
       espree: 9.6.1
       esutils: 2.0.3
       esutils: 2.0.3
       graphemer: 1.4.0
       graphemer: 1.4.0
+    transitivePeerDependencies:
+      - eslint
     dev: true
     dev: true
 
 
   /@sukka/listdir@0.2.0:
   /@sukka/listdir@0.2.0:
     resolution: {integrity: sha512-UyVirNhAOXKwjiDehjUaGtpfk0QwNHyiXrlLb/FmWMtI+BGhaEvB9MypSfEAtiiMI3g6QTfG38ayNAorEuz5ow==}
     resolution: {integrity: sha512-UyVirNhAOXKwjiDehjUaGtpfk0QwNHyiXrlLb/FmWMtI+BGhaEvB9MypSfEAtiiMI3g6QTfG38ayNAorEuz5ow==}
     dev: false
     dev: false
 
 
-  /@types/chrome@0.0.228:
-    resolution: {integrity: sha512-rDmyVEF+l9H+6FQYqsEGqQOjBw/uaSx6KJ6o47FwbQmPPcskmt8XlPbKjy5KeQXU3ZLiV2x45Fk4kdtRMSghfQ==}
+  /@types/chrome@0.0.246:
+    resolution: {integrity: sha512-MxGxEomGxsJiL9xe/7ZwVgwdn8XVKWbPvxpVQl3nWOjrS0Ce63JsfzxUc4aU3GvRcUPYsfufHmJ17BFyKxeA4g==}
     dependencies:
     dependencies:
       '@types/filesystem': 0.0.32
       '@types/filesystem': 0.0.32
       '@types/har-format': 1.2.10
       '@types/har-format': 1.2.10
     dev: false
     dev: false
 
 
-  /@types/eslint@8.44.3:
-    resolution: {integrity: sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==}
+  /@types/eslint@8.44.4:
+    resolution: {integrity: sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==}
     dependencies:
     dependencies:
       '@types/estree': 1.0.2
       '@types/estree': 1.0.2
       '@types/json-schema': 7.0.13
       '@types/json-schema': 7.0.13
@@ -332,8 +349,8 @@ packages:
     resolution: {integrity: sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==}
     resolution: {integrity: sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==}
     dev: false
     dev: false
 
 
-  /@types/firefox-webext-browser@111.0.1:
-    resolution: {integrity: sha512-mmHWdQTCT68X0hh0URrsIyWhJeFzZHaiprj6nni/CmsAmqYq27T0eZyu1ePeKJ/zuDD3wqtTzm5TwRFAso+oPw==}
+  /@types/firefox-webext-browser@111.0.2:
+    resolution: {integrity: sha512-NS7izfYOnQI/Opf3YdZSKkI5Ox89SqEffJHK2zfGY2BYEVuWuM6pSwDRglGl4W0SM84oUQfvLyYH4X6EQZAJ2w==}
     dev: false
     dev: false
 
 
   /@types/har-format@1.2.10:
   /@types/har-format@1.2.10:
@@ -367,10 +384,6 @@ packages:
   /@types/node@20.6.0:
   /@types/node@20.6.0:
     resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==}
     resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==}
 
 
-  /@types/semver@7.5.3:
-    resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==}
-    dev: true
-
   /@types/yargs-parser@21.0.0:
   /@types/yargs-parser@21.0.0:
     resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
     resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
     dev: false
     dev: false
@@ -381,67 +394,6 @@ packages:
       '@types/yargs-parser': 21.0.0
       '@types/yargs-parser': 21.0.0
     dev: false
     dev: false
 
 
-  /@typescript-eslint/scope-manager@6.7.3:
-    resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==}
-    engines: {node: ^16.0.0 || >=18.0.0}
-    dependencies:
-      '@typescript-eslint/types': 6.7.3
-      '@typescript-eslint/visitor-keys': 6.7.3
-    dev: true
-
-  /@typescript-eslint/types@6.7.3:
-    resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==}
-    engines: {node: ^16.0.0 || >=18.0.0}
-    dev: true
-
-  /@typescript-eslint/typescript-estree@6.7.3(typescript@5.2.2):
-    resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==}
-    engines: {node: ^16.0.0 || >=18.0.0}
-    peerDependencies:
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
-    dependencies:
-      '@typescript-eslint/types': 6.7.3
-      '@typescript-eslint/visitor-keys': 6.7.3
-      debug: 4.3.4(supports-color@8.1.1)
-      globby: 11.1.0
-      is-glob: 4.0.3
-      semver: 7.5.4
-      ts-api-utils: 1.0.3(typescript@5.2.2)
-      typescript: 5.2.2
-    transitivePeerDependencies:
-      - supports-color
-    dev: true
-
-  /@typescript-eslint/utils@6.7.3(eslint@8.50.0)(typescript@5.2.2):
-    resolution: {integrity: sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==}
-    engines: {node: ^16.0.0 || >=18.0.0}
-    peerDependencies:
-      eslint: ^7.0.0 || ^8.0.0
-    dependencies:
-      '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
-      '@types/json-schema': 7.0.13
-      '@types/semver': 7.5.3
-      '@typescript-eslint/scope-manager': 6.7.3
-      '@typescript-eslint/types': 6.7.3
-      '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2)
-      eslint: 8.50.0
-      semver: 7.5.4
-    transitivePeerDependencies:
-      - supports-color
-      - typescript
-    dev: true
-
-  /@typescript-eslint/visitor-keys@6.7.3:
-    resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==}
-    engines: {node: ^16.0.0 || >=18.0.0}
-    dependencies:
-      '@typescript-eslint/types': 6.7.3
-      eslint-visitor-keys: 3.4.3
-    dev: true
-
   /@vercel/fetch-retry@5.1.3(patch_hash=jczsp2gadg65vd4ekschpibzda)(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:
@@ -510,11 +462,6 @@ packages:
   /argparse@2.0.1:
   /argparse@2.0.1:
     resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
     resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
 
 
-  /array-union@2.1.0:
-    resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
-    engines: {node: '>=8'}
-    dev: true
-
   /assertion-error@1.1.0:
   /assertion-error@1.1.0:
     resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
     resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
     dev: true
     dev: true
@@ -571,13 +518,6 @@ packages:
       semver: 7.5.4
       semver: 7.5.4
     dev: true
     dev: true
 
 
-  /busboy@1.6.0:
-    resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
-    engines: {node: '>=10.16.0'}
-    dependencies:
-      streamsearch: 1.1.0
-    dev: false
-
   /callsites@3.1.0:
   /callsites@3.1.0:
     resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
     resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
     engines: {node: '>=6'}
     engines: {node: '>=6'}
@@ -631,8 +571,8 @@ packages:
     engines: {node: '>=10'}
     engines: {node: '>=10'}
     dev: false
     dev: false
 
 
-  /ci-info@3.8.0:
-    resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==}
+  /ci-info@3.9.0:
+    resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
     engines: {node: '>=8'}
     engines: {node: '>=8'}
 
 
   /cidr-tools-wasm@0.0.11:
   /cidr-tools-wasm@0.0.11:
@@ -710,13 +650,6 @@ packages:
     engines: {node: '>=0.3.1'}
     engines: {node: '>=0.3.1'}
     dev: true
     dev: true
 
 
-  /dir-glob@3.0.1:
-    resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
-    engines: {node: '>=8'}
-    dependencies:
-      path-type: 4.0.0
-    dev: true
-
   /doctrine@2.1.0:
   /doctrine@2.1.0:
     resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
     resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
     engines: {node: '>=0.10.0'}
     engines: {node: '>=0.10.0'}
@@ -742,12 +675,23 @@ packages:
     resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
     resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
     engines: {node: '>=10'}
     engines: {node: '>=10'}
 
 
-  /eslint-config-sukka@4.0.0-beta.14(eslint@8.50.0)(typescript@5.2.2):
-    resolution: {integrity: sha512-i4k5qehG8kW5geHgbt9LRhMRFbcqz7ckwHrUv+6bOuObrvBidBso5SC9Jew7g6gnxy7SD09vdju0SkUwqN0+8Q==}
+  /eslint-compat-utils@0.1.2(eslint@8.51.0):
+    resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==}
+    engines: {node: '>=12'}
+    peerDependencies:
+      eslint: '>=6.0.0'
+    dependencies:
+      eslint: 8.51.0
+    dev: true
+
+  /eslint-config-sukka@4.1.3(eslint@8.51.0):
+    resolution: {integrity: sha512-8uCTsx6qz9SwfP4UDcpuqRcnrLsHd6bgWeMDdJGBE9J4i/lB2lpjhvSbZ1yRx0/0Y2oppML3RAUx9LhYuUspEg==}
     dependencies:
     dependencies:
-      '@eslint-sukka/js': 4.0.0-beta.14(eslint@8.50.0)(typescript@5.2.2)
-      '@eslint-sukka/shared': 4.0.0-beta.14
-      ci-info: 3.8.0
+      '@eslint-sukka/js': 4.1.3(eslint@8.51.0)
+      '@eslint-sukka/json': 4.1.3(eslint@8.51.0)
+      '@eslint-sukka/shared': 4.1.3
+      ci-info: 3.9.0
+      local-pkg: 0.5.0
     transitivePeerDependencies:
     transitivePeerDependencies:
       - '@typescript-eslint/eslint-plugin'
       - '@typescript-eslint/eslint-plugin'
       - '@typescript-eslint/parser'
       - '@typescript-eslint/parser'
@@ -755,13 +699,12 @@ packages:
       - eslint-import-resolver-typescript
       - eslint-import-resolver-typescript
       - eslint-import-resolver-webpack
       - eslint-import-resolver-webpack
       - supports-color
       - supports-color
-      - typescript
     dev: true
     dev: true
 
 
-  /eslint-formatter-sukka@4.0.0-beta.11:
-    resolution: {integrity: sha512-EzjTkygdb81UdrTk+HkWx8PE0pn7WFgN3mte6ia8/5vOzM9KOl6Z1cAHbv+3gczPS/ytnAS09rtKEHy9tTJugA==}
+  /eslint-formatter-sukka@4.1.3:
+    resolution: {integrity: sha512-WK22ZXF4MDD3N6X06RClkRYJdcGI507baRny4KQnc0Ini0sS0c+LeIx1pEPfobMvRODdLPfjE6qY9bq5tvrWeQ==}
     dependencies:
     dependencies:
-      ci-info: 3.8.0
+      ci-info: 3.9.0
       picocolors: 1.0.0
       picocolors: 1.0.0
     dev: true
     dev: true
 
 
@@ -775,7 +718,7 @@ packages:
       - supports-color
       - supports-color
     dev: true
     dev: true
 
 
-  /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.7)(eslint@8.50.0):
+  /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.7)(eslint@8.51.0):
     resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
     resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
     engines: {node: '>=4'}
     engines: {node: '>=4'}
     peerDependencies:
     peerDependencies:
@@ -797,34 +740,24 @@ packages:
         optional: true
         optional: true
     dependencies:
     dependencies:
       debug: 3.2.7
       debug: 3.2.7
-      eslint: 8.50.0
+      eslint: 8.51.0
       eslint-import-resolver-node: 0.3.7
       eslint-import-resolver-node: 0.3.7
     transitivePeerDependencies:
     transitivePeerDependencies:
       - supports-color
       - supports-color
     dev: true
     dev: true
 
 
-  /eslint-plugin-antfu@1.0.0-beta.7(eslint@8.50.0)(typescript@5.2.2):
-    resolution: {integrity: sha512-HERzbb3LPpRDm5FeLKPKP9XY2vwwAPKICA1GIXdunhy5pt5ecA6iYRomLHbBPlbeVEvVmwoTZuHNaPz1wW8hvw==}
-    dependencies:
-      '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2)
-    transitivePeerDependencies:
-      - eslint
-      - supports-color
-      - typescript
-    dev: true
-
-  /eslint-plugin-es-x@7.2.0(eslint@8.50.0):
+  /eslint-plugin-es-x@7.2.0(eslint@8.51.0):
     resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==}
     resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==}
     engines: {node: ^14.18.0 || >=16.0.0}
     engines: {node: ^14.18.0 || >=16.0.0}
     peerDependencies:
     peerDependencies:
       eslint: '>=8'
       eslint: '>=8'
     dependencies:
     dependencies:
-      '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
+      '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0)
       '@eslint-community/regexpp': 4.6.1
       '@eslint-community/regexpp': 4.6.1
-      eslint: 8.50.0
+      eslint: 8.51.0
     dev: true
     dev: true
 
 
-  /eslint-plugin-i@2.28.1(eslint@8.50.0):
+  /eslint-plugin-i@2.28.1(eslint@8.51.0):
     resolution: {integrity: sha512-a4oVt0j3ixNhGhvV4XF6NS7OWRFK2rrJ0Q5C4S2dSRb8FxZi31J0uUd5WJLL58wnVJ/OiQ1BxiXnFA4dWQO1Cg==}
     resolution: {integrity: sha512-a4oVt0j3ixNhGhvV4XF6NS7OWRFK2rrJ0Q5C4S2dSRb8FxZi31J0uUd5WJLL58wnVJ/OiQ1BxiXnFA4dWQO1Cg==}
     engines: {node: '>=12'}
     engines: {node: '>=12'}
     peerDependencies:
     peerDependencies:
@@ -832,9 +765,9 @@ packages:
     dependencies:
     dependencies:
       debug: 3.2.7
       debug: 3.2.7
       doctrine: 2.1.0
       doctrine: 2.1.0
-      eslint: 8.50.0
+      eslint: 8.51.0
       eslint-import-resolver-node: 0.3.7
       eslint-import-resolver-node: 0.3.7
-      eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.7)(eslint@8.50.0)
+      eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.7)(eslint@8.51.0)
       get-tsconfig: 4.7.0
       get-tsconfig: 4.7.0
       is-glob: 4.0.3
       is-glob: 4.0.3
       minimatch: 3.1.2
       minimatch: 3.1.2
@@ -847,16 +780,29 @@ packages:
       - supports-color
       - supports-color
     dev: true
     dev: true
 
 
-  /eslint-plugin-n@16.1.0(eslint@8.50.0):
-    resolution: {integrity: sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg==}
+  /eslint-plugin-jsonc@2.10.0(eslint@8.51.0):
+    resolution: {integrity: sha512-9d//o6Jyh4s1RxC9fNSt1+MMaFN2ruFdXPG9XZcb/mR2KkfjADYiNL/hbU6W0Cyxfg3tS/XSFuhl5LgtMD8hmw==}
+    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+    peerDependencies:
+      eslint: '>=6.0.0'
+    dependencies:
+      '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0)
+      eslint: 8.51.0
+      eslint-compat-utils: 0.1.2(eslint@8.51.0)
+      jsonc-eslint-parser: 2.3.0
+      natural-compare: 1.4.0
+    dev: true
+
+  /eslint-plugin-n@16.2.0(eslint@8.51.0):
+    resolution: {integrity: sha512-AQER2jEyQOt1LG6JkGJCCIFotzmlcCZFur2wdKrp1JX2cNotC7Ae0BcD/4lLv3lUAArM9uNS8z/fsvXTd0L71g==}
     engines: {node: '>=16.0.0'}
     engines: {node: '>=16.0.0'}
     peerDependencies:
     peerDependencies:
       eslint: '>=7.0.0'
       eslint: '>=7.0.0'
     dependencies:
     dependencies:
-      '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
+      '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0)
       builtins: 5.0.1
       builtins: 5.0.1
-      eslint: 8.50.0
-      eslint-plugin-es-x: 7.2.0(eslint@8.50.0)
+      eslint: 8.51.0
+      eslint-plugin-es-x: 7.2.0(eslint@8.51.0)
       get-tsconfig: 4.7.0
       get-tsconfig: 4.7.0
       ignore: 5.2.4
       ignore: 5.2.4
       is-core-module: 2.12.1
       is-core-module: 2.12.1
@@ -865,13 +811,13 @@ packages:
       semver: 7.5.4
       semver: 7.5.4
     dev: true
     dev: true
 
 
-  /eslint-plugin-sukka@4.0.0-beta.14:
-    resolution: {integrity: sha512-Lu3QwXE3lHWoaqqXNgkNztgsmkdDQMX6I5LvQME8DbII66bf2XQ12ijG5KptRu+nMcTUCeoP4MtnUMYtDP11zA==}
+  /eslint-plugin-sukka@4.1.3:
+    resolution: {integrity: sha512-xctBa6SMt2JjvR99CA7Rl7kGLEPUtYt8EX7lu7dTp2yOaY0VP9ncgZ+WLZXjOw/9QSkFbn4OPmWYtUzfU1x7Pg==}
     dependencies:
     dependencies:
-      '@eslint-sukka/shared': 4.0.0-beta.14
+      '@eslint-sukka/shared': 4.1.3
     dev: true
     dev: true
 
 
-  /eslint-plugin-unused-imports@3.0.0(eslint@8.50.0):
+  /eslint-plugin-unused-imports@3.0.0(eslint@8.51.0):
     resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==}
     resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
     peerDependencies:
@@ -881,7 +827,7 @@ packages:
       '@typescript-eslint/eslint-plugin':
       '@typescript-eslint/eslint-plugin':
         optional: true
         optional: true
     dependencies:
     dependencies:
-      eslint: 8.50.0
+      eslint: 8.51.0
       eslint-rule-composer: 0.3.0
       eslint-rule-composer: 0.3.0
     dev: true
     dev: true
 
 
@@ -901,15 +847,15 @@ packages:
     resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
     resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
 
-  /eslint@8.50.0:
-    resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==}
+  /eslint@8.51.0:
+    resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     hasBin: true
     hasBin: true
     dependencies:
     dependencies:
-      '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
+      '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0)
       '@eslint-community/regexpp': 4.6.1
       '@eslint-community/regexpp': 4.6.1
       '@eslint/eslintrc': 2.1.2
       '@eslint/eslintrc': 2.1.2
-      '@eslint/js': 8.50.0
+      '@eslint/js': 8.51.0
       '@humanwhocodes/config-array': 0.11.11
       '@humanwhocodes/config-array': 0.11.11
       '@humanwhocodes/module-importer': 1.0.1
       '@humanwhocodes/module-importer': 1.0.1
       '@nodelib/fs.walk': 1.2.8
       '@nodelib/fs.walk': 1.2.8
@@ -977,17 +923,6 @@ packages:
   /fast-deep-equal@3.1.3:
   /fast-deep-equal@3.1.3:
     resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
     resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
 
 
-  /fast-glob@3.3.1:
-    resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
-    engines: {node: '>=8.6.0'}
-    dependencies:
-      '@nodelib/fs.stat': 2.0.5
-      '@nodelib/fs.walk': 1.2.8
-      glob-parent: 5.1.2
-      merge2: 1.4.1
-      micromatch: 4.0.5
-    dev: true
-
   /fast-json-stable-stringify@2.1.0:
   /fast-json-stable-stringify@2.1.0:
     resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
     resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
 
 
@@ -1116,16 +1051,11 @@ packages:
     dependencies:
     dependencies:
       type-fest: 0.20.2
       type-fest: 0.20.2
 
 
-  /globby@11.1.0:
-    resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
-    engines: {node: '>=10'}
+  /globals@13.23.0:
+    resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==}
+    engines: {node: '>=8'}
     dependencies:
     dependencies:
-      array-union: 2.1.0
-      dir-glob: 3.0.1
-      fast-glob: 3.3.1
-      ignore: 5.2.4
-      merge2: 1.4.1
-      slash: 3.0.0
+      type-fest: 0.20.2
     dev: true
     dev: true
 
 
   /graceful-fs@4.2.10:
   /graceful-fs@4.2.10:
@@ -1224,7 +1154,7 @@ packages:
       '@jest/types': 29.6.3
       '@jest/types': 29.6.3
       '@types/node': 20.6.0
       '@types/node': 20.6.0
       chalk: 4.1.2
       chalk: 4.1.2
-      ci-info: 3.8.0
+      ci-info: 3.9.0
       graceful-fs: 4.2.10
       graceful-fs: 4.2.10
       picomatch: 2.3.1
       picomatch: 2.3.1
     dev: false
     dev: false
@@ -1255,6 +1185,20 @@ packages:
   /json-stable-stringify-without-jsonify@1.0.1:
   /json-stable-stringify-without-jsonify@1.0.1:
     resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
     resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
 
 
+  /jsonc-eslint-parser@2.3.0:
+    resolution: {integrity: sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ==}
+    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+    dependencies:
+      acorn: 8.10.0
+      eslint-visitor-keys: 3.4.3
+      espree: 9.6.1
+      semver: 7.5.4
+    dev: true
+
+  /jsonc-parser@3.2.0:
+    resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
+    dev: true
+
   /jsonfile@6.1.0:
   /jsonfile@6.1.0:
     resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
     resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
     dependencies:
     dependencies:
@@ -1270,6 +1214,14 @@ packages:
       prelude-ls: 1.2.1
       prelude-ls: 1.2.1
       type-check: 0.4.0
       type-check: 0.4.0
 
 
+  /local-pkg@0.5.0:
+    resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
+    engines: {node: '>=14'}
+    dependencies:
+      mlly: 1.4.2
+      pkg-types: 1.0.3
+    dev: true
+
   /locate-path@6.0.0:
   /locate-path@6.0.0:
     resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
     resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
     engines: {node: '>=10'}
     engines: {node: '>=10'}
@@ -1313,19 +1265,6 @@ packages:
     resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
     resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
     dev: false
     dev: false
 
 
-  /merge2@1.4.1:
-    resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
-    engines: {node: '>= 8'}
-    dev: true
-
-  /micromatch@4.0.5:
-    resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
-    engines: {node: '>=8.6'}
-    dependencies:
-      braces: 3.0.2
-      picomatch: 2.3.1
-    dev: true
-
   /minimatch@3.1.2:
   /minimatch@3.1.2:
     resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
     resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
     dependencies:
     dependencies:
@@ -1364,6 +1303,15 @@ packages:
     hasBin: true
     hasBin: true
     dev: false
     dev: false
 
 
+  /mlly@1.4.2:
+    resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
+    dependencies:
+      acorn: 8.10.0
+      pathe: 1.1.1
+      pkg-types: 1.0.3
+      ufo: 1.3.1
+    dev: true
+
   /mnemonist@0.39.5:
   /mnemonist@0.39.5:
     resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==}
     resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==}
     dependencies:
     dependencies:
@@ -1493,9 +1441,8 @@ packages:
       minipass: 5.0.0
       minipass: 5.0.0
     dev: false
     dev: false
 
 
-  /path-type@4.0.0:
-    resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
-    engines: {node: '>=8'}
+  /pathe@1.1.1:
+    resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
     dev: true
     dev: true
 
 
   /pathval@1.1.1:
   /pathval@1.1.1:
@@ -1509,6 +1456,14 @@ packages:
     resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
     resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
     engines: {node: '>=8.6'}
     engines: {node: '>=8.6'}
 
 
+  /pkg-types@1.0.3:
+    resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
+    dependencies:
+      jsonc-parser: 3.2.0
+      mlly: 1.4.2
+      pathe: 1.1.1
+    dev: true
+
   /prelude-ls@1.2.1:
   /prelude-ls@1.2.1:
     resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
     resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
     engines: {node: '>= 0.8.0'}
     engines: {node: '>= 0.8.0'}
@@ -1608,11 +1563,6 @@ packages:
     resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
     resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
     engines: {node: '>=8'}
     engines: {node: '>=8'}
 
 
-  /slash@3.0.0:
-    resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
-    engines: {node: '>=8'}
-    dev: true
-
   /slice-ansi@4.0.0:
   /slice-ansi@4.0.0:
     resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
     resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
     engines: {node: '>=10'}
     engines: {node: '>=10'}
@@ -1622,11 +1572,6 @@ packages:
       is-fullwidth-code-point: 3.0.0
       is-fullwidth-code-point: 3.0.0
     dev: false
     dev: false
 
 
-  /streamsearch@1.1.0:
-    resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
-    engines: {node: '>=10.0.0'}
-    dev: false
-
   /string-width@4.2.3:
   /string-width@4.2.3:
     resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
     resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
     engines: {node: '>=8'}
     engines: {node: '>=8'}
@@ -1688,21 +1633,21 @@ packages:
   /text-table@0.2.0:
   /text-table@0.2.0:
     resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
     resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
 
 
-  /tldts-core@6.0.14:
-    resolution: {integrity: sha512-ESYhU/bgs6jiHlnl5h029f+0dB7EKRiTaxM/jHLZ6powScbmsgsrFcFjmyrjDgCvI/BRY79TEBBClmqLNEPyjQ==}
+  /tldts-core@6.0.16:
+    resolution: {integrity: sha512-/ypKV6FdiDpXnVEUmPy9s5xfoSAyNPvj1r6V/3FqQBWi0ay3asObLX4Hn8eLwkHB0+VEr2bneu3CnX4uT3fO0w==}
     dev: false
     dev: false
 
 
-  /tldts-experimental@6.0.8:
-    resolution: {integrity: sha512-EuQv09eSTpwGvzMznDUxBv2DN597yF0hK63Dkzr3R4eVvIi3AcnCBOQOfFC3X8s9YmGA18FPGhBMlwNA7PGxbg==}
+  /tldts-experimental@6.0.16:
+    resolution: {integrity: sha512-4gmlrxa1Iwt983Xefsp0AJUu/9YdKzd+RU8irW4T5ZHQYNnE2bxTK7BGq1A4mUiSI7aOanXLQojLs1HUKUGjuA==}
     dependencies:
     dependencies:
-      tldts-core: 6.0.14
+      tldts-core: 6.0.16
     dev: false
     dev: false
 
 
-  /tldts@6.0.14:
-    resolution: {integrity: sha512-mYU7xwVGfiiC4lkWr4h3Q6U4kfAq3aWP1KsJZyRlVVeDQ3ZSBLmE20543dWSqI0U799PNzhpHObex5n60TeBGw==}
+  /tldts@6.0.16:
+    resolution: {integrity: sha512-TkEq38COU640mzOKPk4D1oH3FFVvwEtMaKIfw/+F/umVsy7ONWu8PPQH0c11qJ/Jq/zbcQGprXGsT8GcaDSmJg==}
     hasBin: true
     hasBin: true
     dependencies:
     dependencies:
-      tldts-core: 6.0.14
+      tldts-core: 6.0.16
     dev: false
     dev: false
 
 
   /to-regex-range@5.0.1:
   /to-regex-range@5.0.1:
@@ -1716,15 +1661,6 @@ packages:
     resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
     resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
     dev: false
     dev: false
 
 
-  /ts-api-utils@1.0.3(typescript@5.2.2):
-    resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
-    engines: {node: '>=16.13.0'}
-    peerDependencies:
-      typescript: '>=4.2.0'
-    dependencies:
-      typescript: 5.2.2
-    dev: true
-
   /type-check@0.4.0:
   /type-check@0.4.0:
     resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
     resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
     engines: {node: '>= 0.8.0'}
     engines: {node: '>= 0.8.0'}
@@ -1740,17 +1676,15 @@ packages:
     resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
     resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
     engines: {node: '>=10'}
     engines: {node: '>=10'}
 
 
-  /typescript@5.2.2:
-    resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
-    engines: {node: '>=14.17'}
-    hasBin: true
+  /ufo@1.3.1:
+    resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==}
     dev: true
     dev: true
 
 
-  /undici@5.24.0:
-    resolution: {integrity: sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ==}
+  /undici@5.26.3:
+    resolution: {integrity: sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==}
     engines: {node: '>=14.0'}
     engines: {node: '>=14.0'}
     dependencies:
     dependencies:
-      busboy: 1.6.0
+      '@fastify/busboy': 2.0.0
     dev: false
     dev: false
 
 
   /universalify@2.0.0:
   /universalify@2.0.0:

Some files were not shown because too many files changed in this diff