浏览代码

Housekeeping & Update Reject Hosts

SukkaW 1 年之前
父节点
当前提交
3651999afb
共有 7 个文件被更改,包括 105 次插入125 次删除
  1. 27 39
      Build/constants/reject-data-source.ts
  2. 2 3
      Build/index.ts
  3. 5 8
      Build/lib/get-phishing-domains.ts
  4. 7 4
      Build/trace/index.ts
  5. 1 0
      Source/domainset/reject_sukka.conf
  6. 2 3
      package.json
  7. 61 68
      pnpm-lock.yaml

+ 27 - 39
Build/constants/reject-data-source.ts

@@ -34,7 +34,12 @@ export const DOMAIN_LISTS: HostsSource[] = [
 export const DOMAIN_LISTS_EXTRA: HostsSource[] = [
   // BarbBlock
   // The barbblock list has never been updated since 2019-05, so we set a 14 days cache ttl
-  ['https://paulgb.github.io/BarbBlock/blacklists/domain-list.txt', [], true, TTL.TWO_WEEKS()],
+  [
+    'https://paulgb.github.io/BarbBlock/blacklists/domain-list.txt',
+    ['https://raw.githubusercontent.com/paulgb/BarbBlock/refs/heads/main/blacklists/domain-list.txt'],
+    true,
+    TTL.TWO_WEEKS()
+  ],
   // DigitalSide Threat-Intel - OSINT Hub
   // Update once per day
   ['https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt', [], true, TTL.ONE_DAY()],
@@ -44,28 +49,28 @@ export const DOMAIN_LISTS_EXTRA: HostsSource[] = [
   ['https://raw.githubusercontent.com/AdguardTeam/cname-trackers/master/data/combined_disguised_trackers_justdomains.txt', [], true, TTL.THREE_DAYS()],
   ['https://raw.githubusercontent.com/AdguardTeam/cname-trackers/master/data/combined_disguised_clickthroughs_justdomains.txt', [], true, TTL.THREE_DAYS()],
   ['https://raw.githubusercontent.com/AdguardTeam/cname-trackers/master/data/combined_disguised_microsites_justdomains.txt', [], true, TTL.THREE_DAYS()],
-  ['https://raw.githubusercontent.com/AdguardTeam/cname-trackers/master/data/combined_disguised_mail_trackers_justdomains.txt', [], true, TTL.THREE_DAYS()],
+  // ['https://raw.githubusercontent.com/AdguardTeam/cname-trackers/master/data/combined_disguised_mail_trackers_justdomains.txt', [], true, TTL.THREE_DAYS()],
   // Curben's PUP Domains Blocklist
   // The PUP filter has paused the update since 2023-05, so we set a 14 days cache ttl, and move it to extra
-  [
-    'https://pup-filter.pages.dev/pup-filter-domains.txt',
-    [
-      // 'https://malware-filter.pages.dev/pup-filter-domains.txt',
-      // 'https://malware-filter.gitlab.io/malware-filter/pup-filter-domains.txt',
-      'https://malware-filter.gitlab.io/pup-filter/pup-filter-domains.txt'
-      // 'https://curbengh.github.io/pup-filter/pup-filter-domains.txt',
-      // 'https://malware-filter.pages.dev/pup-filter-domains.txt'
-    ],
-    true, TTL.TWO_WEEKS()
-  ],
+  // [
+  //   'https://pup-filter.pages.dev/pup-filter-domains.txt',
+  //   [
+  //     // 'https://malware-filter.pages.dev/pup-filter-domains.txt',
+  //     // 'https://malware-filter.gitlab.io/malware-filter/pup-filter-domains.txt',
+  //     'https://malware-filter.gitlab.io/pup-filter/pup-filter-domains.txt'
+  //     // 'https://curbengh.github.io/pup-filter/pup-filter-domains.txt',
+  //     // 'https://malware-filter.pages.dev/pup-filter-domains.txt'
+  //   ],
+  //   true, TTL.TWO_WEEKS()
+  // ],
   // Curben's UrlHaus Malicious URL Blocklist
   [
     'https://urlhaus-filter.pages.dev/urlhaus-filter-domains.txt',
     [
       'https://malware-filter.pages.dev/urlhaus-filter-domains.txt',
       'https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-domains.txt',
-      'https://malware-filter.gitlab.io/malware-filter/urlhaus-filter-domains.txt'
-      // 'https://curbengh.github.io/urlhaus-filter/urlhaus-filter-domains.txt',
+      'https://malware-filter.gitlab.io/malware-filter/urlhaus-filter-domains.txt',
+      'https://curbengh.github.io/urlhaus-filter/urlhaus-filter-domains.txt'
     ],
     true, TTL.THREE_HOURS()
   ],
@@ -80,8 +85,8 @@ export const PHISHING_DOMAIN_LISTS_EXTRA: HostsSource[] = [
     [
       'https://malware-filter.pages.dev/phishing-filter-domains.txt',
       'https://malware-filter.gitlab.io/phishing-filter/phishing-filter-domains.txt',
-      'https://malware-filter.gitlab.io/malware-filter/phishing-filter-domains.txt'
-      // 'https://curbengh.github.io/phishing-filter/phishing-filter-domains.txt'
+      'https://malware-filter.gitlab.io/malware-filter/phishing-filter-domains.txt',
+      'https://curbengh.github.io/phishing-filter/phishing-filter-domains.txt'
     ],
     true, TTL.THREE_HOURS()
   ],
@@ -232,24 +237,18 @@ export const ADGUARD_FILTERS_EXTRA: AdGuardFilterSource[] = [
   // uBlock Origin Resource Abuse: merged in uBlock Origin Privacy List
   // [
   //   'https://ublockorigin.github.io/uAssetsCDN/filters/resource-abuse.txt',
-  //   [
-  //     'https://ublockorigin.pages.dev/filters/resource-abuse.txt'
-  //   ]
+  //   ['https://ublockorigin.pages.dev/filters/resource-abuse.txt']
   // ],
   // uBlock Origin Annoyances
   [
     'https://ublockorigin.github.io/uAssetsCDN/filters/annoyances.min.txt',
-    [
-      'https://ublockorigin.pages.dev/filters/annoyances.min.txt'
-    ],
+    ['https://ublockorigin.pages.dev/filters/annoyances.min.txt'],
     TTL.THREE_HOURS()
   ],
   // EasyList Annoyances
   [
     'https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-annoyances.txt',
-    [
-      'https://ublockorigin.pages.dev/thirdparties/easylist-annoyances.txt'
-    ],
+    ['https://ublockorigin.pages.dev/thirdparties/easylist-annoyances.txt'],
     TTL.THREE_HOURS()
   ],
   // Dandelion Sprout's Annoyances
@@ -257,17 +256,13 @@ export const ADGUARD_FILTERS_EXTRA: AdGuardFilterSource[] = [
   // EasyList - Newsletters
   [
     'https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-newsletters.txt',
-    [
-      'https://ublockorigin.pages.dev/thirdparties/easylist-newsletters.txt'
-    ],
+    ['https://ublockorigin.pages.dev/thirdparties/easylist-newsletters.txt'],
     TTL.THREE_HOURS()
   ],
   // EasyList - Notifications
   [
     'https://ublockorigin.github.io/uAssets/thirdparties/easylist-notifications.txt',
-    [
-      'https://ublockorigin.pages.dev/thirdparties/easylist-notifications.txt'
-    ],
+    ['https://ublockorigin.pages.dev/thirdparties/easylist-notifications.txt'],
     TTL.THREE_HOURS()
   ],
   // Fanboy Cookie Monster (EasyList Cookie List)
@@ -279,12 +274,6 @@ export const ADGUARD_FILTERS_EXTRA: AdGuardFilterSource[] = [
     ],
     TTL.TWLVE_HOURS()
   ]
-  // Bypass Paywall Cleaner
-  // [
-  //   'https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=bpc-paywall-filter.txt',
-  //   [],
-  //   TTL.ONE_DAY()
-  // ]
 ];
 
 // In a hostile network like when an ad blocker is present, apps might be crashing, and these errors need to be
@@ -326,7 +315,6 @@ export const CRASHLYTICS_WHITELIST = [
   '.applicationinsights.azure.com',
   '.api.loganalytics.io',
   '.bugly.qcloud.com',
-  // '.signalfx.com',
   '.cdn.signalfx.com',
   '.crash-reports.browser.yandex.net',
   '.crashlytics2.l.google.com',

+ 2 - 3
Build/index.ts

@@ -1,6 +1,5 @@
 import process from 'node:process';
 import os from 'node:os';
-import wtf from 'wtfnode';
 
 import { downloadPreviousBuild } from './download-previous-build';
 import { buildCommon } from './build-common';
@@ -26,7 +25,7 @@ import { downloadMockAssets } from './download-mock-assets';
 
 import { buildCloudMounterRules } from './build-cloudmounter-rules';
 
-import { createSpan, printTraceResult } from './trace';
+import { createSpan, printTraceResult, whyIsNodeRunning } from './trace';
 import { buildDeprecateFiles } from './build-deprecate-files';
 
 process.on('uncaughtException', (error) => {
@@ -122,7 +121,7 @@ process.on('unhandledRejection', (reason) => {
     printTraceResult(rootSpan.traceResult);
 
     // Finish the build to avoid leaking timer/fetch ref
-    wtf.dump();
+    await whyIsNodeRunning();
     process.exit(0);
   } catch (e) {
     console.error('Something went wrong!');

+ 5 - 8
Build/lib/get-phishing-domains.ts

@@ -13,8 +13,8 @@ import { fastStringArrayJoin } from './misc';
 import { stringHash } from './string-hash';
 
 const BLACK_TLD = new Set([
-  'accountant', 'autos',
-  'bar', 'beauty', 'bid', 'biz', 'bond', 'business', 'buzz',
+  'accountant', 'art', 'autos',
+  'bar', 'beauty', 'bid', 'bio', 'biz', 'bond', 'business', 'buzz',
   'cc', 'cf', 'cfd', 'click', 'cloud', 'club', 'cn', 'codes',
   'co.uk', 'co.in', 'com.br', 'com.cn', 'com.pl', 'com.vn',
   'cool', 'cricket', 'cyou',
@@ -72,7 +72,8 @@ const sensitiveKeywords = createKeywordFilter([
   'login-microsoft',
   'microsoftonline',
   'google.com-',
-  'minecraft'
+  'minecraft',
+  'staemco'
 ]);
 const lowKeywords = createKeywordFilter([
   'transactions-',
@@ -181,16 +182,12 @@ async function processPhihsingDomains(domainArr: string[], cacheHash = '') {
           domainScoreMap[apexDomain] >= 16
           || (domainScoreMap[apexDomain] >= 13 && domainCountMap[apexDomain] >= 7)
           || (domainScoreMap[apexDomain] >= 5 && domainCountMap[apexDomain] >= 10)
+          || (domainScoreMap[apexDomain] >= 3 && domainCountMap[apexDomain] >= 16)
         ) {
           domainArr.push('.' + apexDomain);
         }
       }
 
-      // console.log({
-      //   count: domainCountMap['google.com'],
-      //   score: domainScoreMap['google.com']
-      // });
-
       return Promise.resolve(domainArr);
     },
     {

+ 7 - 4
Build/trace/index.ts

@@ -1,6 +1,5 @@
 import { basename, extname } from 'node:path';
 import picocolors from 'picocolors';
-import wtf from 'wtfnode';
 
 const SPAN_STATUS_START = 0;
 const SPAN_STATUS_END = 1;
@@ -103,11 +102,10 @@ export function task(importMetaMain: boolean, importMetaPath: string) {
 
     const dummySpan = createSpan(taskName);
     if (importMetaMain) {
-      fn(dummySpan).finally(() => {
+      dummySpan.traceChildAsync('dummy', fn).finally(() => {
         dummySpan.stop();
         printTraceResult(dummySpan.traceResult);
-
-        console.log(wtf.dump());
+        whyIsNodeRunning();
       });
     }
 
@@ -120,6 +118,11 @@ export function task(importMetaMain: boolean, importMetaPath: string) {
   };
 }
 
+export async function whyIsNodeRunning() {
+  const mod = await import('why-is-node-running');
+  return mod.default();
+}
+
 // const isSpan = (obj: any): obj is Span => {
 //   return typeof obj === 'object' && obj && spanTag in obj;
 // };

+ 1 - 0
Source/domainset/reject_sukka.conf

@@ -314,6 +314,7 @@ inst.360safe.com
 .goonline-bnpparibas-pl.xyz
 .dkonto.pl
 .googleplay.pro
+.printondemandmerchandise.com
 # Phishing domain like `www-facebook.to-kr.com`
 .to-kr.com
 # Poland Hosting dhosting.pl's free subdomain

+ 2 - 3
package.json

@@ -42,13 +42,13 @@
     "tldts": "^6.1.51",
     "tldts-experimental": "^6.1.51",
     "undici": "6.20.1",
-    "wtfnode": "^0.9.3",
+    "why-is-node-running": "^3.2.0",
     "yaml": "^2.6.0"
   },
   "devDependencies": {
     "@eslint-sukka/node": "^6.7.0",
     "@swc-node/register": "^1.10.9",
-    "@swc/core": "^1.7.35",
+    "@swc/core": "^1.7.36",
     "@types/better-sqlite3": "^7.6.11",
     "@types/cacache": "^17.0.2",
     "@types/chai": "^4.3.20",
@@ -59,7 +59,6 @@
     "@types/punycode": "^2.1.4",
     "@types/tar-fs": "^2.0.4",
     "@types/tar-stream": "^3.1.3",
-    "@types/wtfnode": "^0.7.3",
     "chai": "4",
     "eslint": "^9.12.0",
     "eslint-config-sukka": "^6.7.0",

+ 61 - 68
pnpm-lock.yaml

@@ -77,9 +77,9 @@ importers:
       undici:
         specifier: 6.20.1
         version: 6.20.1
-      wtfnode:
-        specifier: ^0.9.3
-        version: 0.9.3
+      why-is-node-running:
+        specifier: ^3.2.0
+        version: 3.2.0
       yaml:
         specifier: ^2.6.0
         version: 2.6.0
@@ -89,10 +89,10 @@ importers:
         version: 6.7.0(eslint@9.12.0)(typescript@5.6.3)
       '@swc-node/register':
         specifier: ^1.10.9
-        version: 1.10.9(@swc/core@1.7.35)(@swc/types@0.1.13)(typescript@5.6.3)
+        version: 1.10.9(@swc/core@1.7.36)(@swc/types@0.1.13)(typescript@5.6.3)
       '@swc/core':
-        specifier: ^1.7.35
-        version: 1.7.35
+        specifier: ^1.7.36
+        version: 1.7.36
       '@types/better-sqlite3':
         specifier: ^7.6.11
         version: 7.6.11
@@ -123,9 +123,6 @@ importers:
       '@types/tar-stream':
         specifier: ^3.1.3
         version: 3.1.3
-      '@types/wtfnode':
-        specifier: ^0.7.3
-        version: 0.7.3
       chai:
         specifier: '4'
         version: 4.4.1
@@ -388,68 +385,68 @@ packages:
   '@swc-node/sourcemap-support@0.5.1':
     resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==}
 
-  '@swc/core-darwin-arm64@1.7.35':
-    resolution: {integrity: sha512-BQSSozVxjxS+SVQz6e3GC/+OBWGIK3jfe52pWdANmycdjF3ch7lrCKTHTU7eHwyoJ96mofszPf5AsiVJF34Fwg==}
+  '@swc/core-darwin-arm64@1.7.36':
+    resolution: {integrity: sha512-8vDczXzCgv3ceTPhEivlpGprN44YlrCK1nbfU9g2TrhV/Aiqi09W/eM5zLesdoM1Z3mJl492gc/8nlTkpDdusw==}
     engines: {node: '>=10'}
     cpu: [arm64]
     os: [darwin]
 
-  '@swc/core-darwin-x64@1.7.35':
-    resolution: {integrity: sha512-44TYdKN/EWtkU88foXR7IGki9JzhEJzaFOoPevfi9Xe7hjAD/x2+AJOWWqQNzDPMz9+QewLdUVLyR6s5okRgtg==}
+  '@swc/core-darwin-x64@1.7.36':
+    resolution: {integrity: sha512-Pa2Gao7+Wf5m3SsK4abKRtd48AtoUnJInvaC3d077swBfgZjbjUbQvcpdc2dOeQtWwo49rFqUZJonMsL0jnPgQ==}
     engines: {node: '>=10'}
     cpu: [x64]
     os: [darwin]
 
-  '@swc/core-linux-arm-gnueabihf@1.7.35':
-    resolution: {integrity: sha512-ccfA5h3zxwioD+/z/AmYtkwtKz9m4rWTV7RoHq6Jfsb0cXHrd6tbcvgqRWXra1kASlE+cDWsMtEZygs9dJRtUQ==}
+  '@swc/core-linux-arm-gnueabihf@1.7.36':
+    resolution: {integrity: sha512-3YsMWd7V+WZEjbfBnLkkz/olcRBa8nyoK0iIOnNARJBMcYaJxjkJSMZpmSojCnIVwvjA1N83CPAbUL+W+fCnHg==}
     engines: {node: '>=10'}
     cpu: [arm]
     os: [linux]
 
-  '@swc/core-linux-arm64-gnu@1.7.35':
-    resolution: {integrity: sha512-hx65Qz+G4iG/IVtxJKewC5SJdki8PAPFGl6gC/57Jb0+jA4BIoGLD/J3Q3rCPeoHfdqpkCYpahtyUq8CKx41Jg==}
+  '@swc/core-linux-arm64-gnu@1.7.36':
+    resolution: {integrity: sha512-lqM3aBB7kJazJYOwHeA5OGNLqXoQPZ/76b3dV+XcjN1GhD0CcXz6mW5PRYVin6OSN1eKrKBKJjtDA1mqADDEvw==}
     engines: {node: '>=10'}
     cpu: [arm64]
     os: [linux]
 
-  '@swc/core-linux-arm64-musl@1.7.35':
-    resolution: {integrity: sha512-kL6tQL9No7UEoEvDRuPxzPTpxrvbwYteNRbdChSSP74j13/55G2/2hLmult5yFFaWuyoyU/2lvzjRL/i8OLZxg==}
+  '@swc/core-linux-arm64-musl@1.7.36':
+    resolution: {integrity: sha512-bqei2YDzvUfG0pth5W2xJaj0eG4XWYk0d/NJ75vBX6bkIzK6dC8iuKQ41jOfUWonnrAs7rTDDJW0sTn/evvRdw==}
     engines: {node: '>=10'}
     cpu: [arm64]
     os: [linux]
 
-  '@swc/core-linux-x64-gnu@1.7.35':
-    resolution: {integrity: sha512-Ke4rcLQSwCQ2LHdJX1FtnqmYNQ3IX6BddKlUtS7mcK13IHkQzZWp0Dcu6MgNA3twzb/dBpKX5GLy07XdGgfmyw==}
+  '@swc/core-linux-x64-gnu@1.7.36':
+    resolution: {integrity: sha512-03maXTUyaBjeCxlDltmdzHje1ryQt1C4OWmmNgSSRXjLb+GNnAenwOJMSrcvHP/aNClD2pwsFCnYKDGy+sYE6w==}
     engines: {node: '>=10'}
     cpu: [x64]
     os: [linux]
 
-  '@swc/core-linux-x64-musl@1.7.35':
-    resolution: {integrity: sha512-T30tlLnz0kYyDFyO5RQF5EQ4ENjW9+b56hEGgFUYmfhFhGA4E4V67iEx7KIG4u0whdPG7oy3qjyyIeTb7nElEw==}
+  '@swc/core-linux-x64-musl@1.7.36':
+    resolution: {integrity: sha512-XXysqLkvjtQnXm1zHqLhy00UYPv/gk5OtwR732X+piNisnEbcJBqI8Qp9O7YvLWllRcoP8IMBGDWLGdGLSpViA==}
     engines: {node: '>=10'}
     cpu: [x64]
     os: [linux]
 
-  '@swc/core-win32-arm64-msvc@1.7.35':
-    resolution: {integrity: sha512-CfM/k8mvtuMyX+okRhemfLt784PLS0KF7Q9djA8/Dtavk0L5Ghnq+XsGltO3d8B8+XZ7YOITsB14CrjehzeHsg==}
+  '@swc/core-win32-arm64-msvc@1.7.36':
+    resolution: {integrity: sha512-k7+dmb13a/zPw+E4XYfPmLZFWJgcOcBRKIjYl9nQErtYsgsg3Ji6TBbsvJVETy23lNHyewZ17V5Vq6NzaG0hzg==}
     engines: {node: '>=10'}
     cpu: [arm64]
     os: [win32]
 
-  '@swc/core-win32-ia32-msvc@1.7.35':
-    resolution: {integrity: sha512-ATB3uuH8j/RmS64EXQZJSbo2WXfRNpTnQszHME/sGaexsuxeijrp3DTYSFAA3R2Bu6HbIIX6jempe1Au8I3j+A==}
+  '@swc/core-win32-ia32-msvc@1.7.36':
+    resolution: {integrity: sha512-ridD3ay6YM2PEYHZXXFN+edYEv0FOynaqOBP+NSnGNHA35azItIjoIe+KNi4WltGtAjpKCHSpjGCNfna12wdYQ==}
     engines: {node: '>=10'}
     cpu: [ia32]
     os: [win32]
 
-  '@swc/core-win32-x64-msvc@1.7.35':
-    resolution: {integrity: sha512-iDGfQO1571NqWUXtLYDhwIELA/wadH42ioGn+J9R336nWx40YICzy9UQyslWRhqzhQ5kT+QXAW/MoCWc058N6Q==}
+  '@swc/core-win32-x64-msvc@1.7.36':
+    resolution: {integrity: sha512-j1z2Z1Ln9d0E3dHsPkC1K9XDh0ojhRPwV+GfRTu4D61PE+aYhYLvbJC6xPvL4/204QrStRS7eDu3m+BcDp3rgQ==}
     engines: {node: '>=10'}
     cpu: [x64]
     os: [win32]
 
-  '@swc/core@1.7.35':
-    resolution: {integrity: sha512-3cUteCTbr2r5jqfgx0r091sfq5Mgh6F1SQh8XAOnSvtKzwv2bC31mvBHVAieD1uPa2kHJhLav20DQgXOhpEitw==}
+  '@swc/core@1.7.36':
+    resolution: {integrity: sha512-bu7ymMX+LCJOSSrKank25Jaq66ymLVA9fOUuy4ck3/6rbXdLw+pIJPnIDKQ9uNcxww8KDxOuJk9Ui9pqR+aGFw==}
     engines: {node: '>=10'}
     peerDependencies:
       '@swc/helpers': '*'
@@ -526,9 +523,6 @@ packages:
   '@types/tar-stream@3.1.3':
     resolution: {integrity: sha512-Zbnx4wpkWBMBSu5CytMbrT5ZpMiF55qgM+EpHzR4yIDu7mv52cej8hTkOc6K+LzpkOAbxwn/m7j3iO+/l42YkQ==}
 
-  '@types/wtfnode@0.7.3':
-    resolution: {integrity: sha512-UMkHpx+o2xRWLJ7PmT3bBzvIA9/0oFw80oPtY/xO4jfdq+Gznn4wP7K9B/JjMxyxy+wF+5oRPIykxeBbEDjwRg==}
-
   '@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}
@@ -1794,6 +1788,11 @@ packages:
     engines: {node: '>= 8'}
     hasBin: true
 
+  why-is-node-running@3.2.0:
+    resolution: {integrity: sha512-euOPfZRxdZBcD/vL0sH+NtuC/nDpdsZ/aeoq9w5sOcQtfkmhztf/JS76IiD0CJEULlSAPSMy/ZLejex5MsFCcw==}
+    engines: {node: '>=20.11'}
+    hasBin: true
+
   word-wrap@1.2.5:
     resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
     engines: {node: '>=0.10.0'}
@@ -1812,10 +1811,6 @@ packages:
   wrappy@1.0.2:
     resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
 
-  wtfnode@0.9.3:
-    resolution: {integrity: sha512-MXjgxJovNVYUkD85JBZTKT5S5ng/e56sNuRZlid7HcGTNrIODa5UPtqE3i0daj7fJ2SGj5Um2VmiphQVyVKK5A==}
-    hasBin: true
-
   y18n@5.0.8:
     resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
     engines: {node: '>=10'}
@@ -2097,16 +2092,16 @@ snapshots:
       - supports-color
       - typescript
 
-  '@swc-node/core@1.13.3(@swc/core@1.7.35)(@swc/types@0.1.13)':
+  '@swc-node/core@1.13.3(@swc/core@1.7.36)(@swc/types@0.1.13)':
     dependencies:
-      '@swc/core': 1.7.35
+      '@swc/core': 1.7.36
       '@swc/types': 0.1.13
 
-  '@swc-node/register@1.10.9(@swc/core@1.7.35)(@swc/types@0.1.13)(typescript@5.6.3)':
+  '@swc-node/register@1.10.9(@swc/core@1.7.36)(@swc/types@0.1.13)(typescript@5.6.3)':
     dependencies:
-      '@swc-node/core': 1.13.3(@swc/core@1.7.35)(@swc/types@0.1.13)
+      '@swc-node/core': 1.13.3(@swc/core@1.7.36)(@swc/types@0.1.13)
       '@swc-node/sourcemap-support': 0.5.1
-      '@swc/core': 1.7.35
+      '@swc/core': 1.7.36
       colorette: 2.0.20
       debug: 4.3.7(supports-color@8.1.1)
       oxc-resolver: 1.10.2
@@ -2122,51 +2117,51 @@ snapshots:
       source-map-support: 0.5.21
       tslib: 2.7.0
 
-  '@swc/core-darwin-arm64@1.7.35':
+  '@swc/core-darwin-arm64@1.7.36':
     optional: true
 
-  '@swc/core-darwin-x64@1.7.35':
+  '@swc/core-darwin-x64@1.7.36':
     optional: true
 
-  '@swc/core-linux-arm-gnueabihf@1.7.35':
+  '@swc/core-linux-arm-gnueabihf@1.7.36':
     optional: true
 
-  '@swc/core-linux-arm64-gnu@1.7.35':
+  '@swc/core-linux-arm64-gnu@1.7.36':
     optional: true
 
-  '@swc/core-linux-arm64-musl@1.7.35':
+  '@swc/core-linux-arm64-musl@1.7.36':
     optional: true
 
-  '@swc/core-linux-x64-gnu@1.7.35':
+  '@swc/core-linux-x64-gnu@1.7.36':
     optional: true
 
-  '@swc/core-linux-x64-musl@1.7.35':
+  '@swc/core-linux-x64-musl@1.7.36':
     optional: true
 
-  '@swc/core-win32-arm64-msvc@1.7.35':
+  '@swc/core-win32-arm64-msvc@1.7.36':
     optional: true
 
-  '@swc/core-win32-ia32-msvc@1.7.35':
+  '@swc/core-win32-ia32-msvc@1.7.36':
     optional: true
 
-  '@swc/core-win32-x64-msvc@1.7.35':
+  '@swc/core-win32-x64-msvc@1.7.36':
     optional: true
 
-  '@swc/core@1.7.35':
+  '@swc/core@1.7.36':
     dependencies:
       '@swc/counter': 0.1.3
       '@swc/types': 0.1.13
     optionalDependencies:
-      '@swc/core-darwin-arm64': 1.7.35
-      '@swc/core-darwin-x64': 1.7.35
-      '@swc/core-linux-arm-gnueabihf': 1.7.35
-      '@swc/core-linux-arm64-gnu': 1.7.35
-      '@swc/core-linux-arm64-musl': 1.7.35
-      '@swc/core-linux-x64-gnu': 1.7.35
-      '@swc/core-linux-x64-musl': 1.7.35
-      '@swc/core-win32-arm64-msvc': 1.7.35
-      '@swc/core-win32-ia32-msvc': 1.7.35
-      '@swc/core-win32-x64-msvc': 1.7.35
+      '@swc/core-darwin-arm64': 1.7.36
+      '@swc/core-darwin-x64': 1.7.36
+      '@swc/core-linux-arm-gnueabihf': 1.7.36
+      '@swc/core-linux-arm64-gnu': 1.7.36
+      '@swc/core-linux-arm64-musl': 1.7.36
+      '@swc/core-linux-x64-gnu': 1.7.36
+      '@swc/core-linux-x64-musl': 1.7.36
+      '@swc/core-win32-arm64-msvc': 1.7.36
+      '@swc/core-win32-ia32-msvc': 1.7.36
+      '@swc/core-win32-x64-msvc': 1.7.36
 
   '@swc/counter@0.1.3': {}
 
@@ -2247,8 +2242,6 @@ snapshots:
     dependencies:
       '@types/node': 22.7.5
 
-  '@types/wtfnode@0.7.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:
       '@eslint-community/regexpp': 4.11.1
@@ -3633,6 +3626,8 @@ snapshots:
     dependencies:
       isexe: 2.0.0
 
+  why-is-node-running@3.2.0: {}
+
   word-wrap@1.2.5: {}
 
   workerpool@6.5.1: {}
@@ -3651,8 +3646,6 @@ snapshots:
 
   wrappy@1.0.2: {}
 
-  wtfnode@0.9.3: {}
-
   y18n@5.0.8: {}
 
   yallist@4.0.0: {}