chore(frontend): add Knip unused file report

This commit is contained in:
Tunglies
2026-07-12 12:42:27 +08:00
parent 604fdb9252
commit 656b6b6d44
5 changed files with 525 additions and 2 deletions
+5
View File
@@ -30,6 +30,7 @@ jobs:
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
- 'knip.json'
- 'eslint.config.ts'
- 'tsconfig.json'
- 'vite.config.*'
@@ -73,3 +74,7 @@ jobs:
- name: Run TypeScript typecheck
if: steps.check_frontend.outputs.frontend == 'true'
run: pnpm typecheck
- name: Report unused frontend files
if: steps.check_frontend.outputs.frontend == 'true'
run: pnpm knip:report
+10 -1
View File
@@ -27,6 +27,14 @@ args = ["typecheck"]
[tasks.typecheck.windows]
command = "pnpm.cmd"
[tasks.knip-report]
description = "Report unused frontend files"
command = "pnpm"
args = ["knip:report"]
[tasks.knip-report.windows]
command = "pnpm.cmd"
[tasks.lint-staged]
description = "Run lint-staged for staged files"
command = "pnpm"
@@ -99,7 +107,7 @@ cm_run_task frontend-format
'''
[tasks.pre-push]
description = "Pre-push checks: lint and typecheck"
description = "Pre-push checks: lint, typecheck, and unused files"
script_runner = "@duckscript"
script = '''
has_upstream = exec git rev-parse --abbrev-ref --symbolic-full-name @{u}
@@ -118,5 +126,6 @@ end
has_frontend = exec git diff @{u}..HEAD --quiet -- "*.js" "*.jsx" "*.ts" "*.tsx" "*.json" "*.css" "*.scss" "*.html"
if eq ${has_frontend.code} 1
cm_run_task typecheck
cm_run_task knip-report
end
'''
+5
View File
@@ -0,0 +1,5 @@
{
"$schema": "https://unpkg.com/knip@6/schema.json",
"entry": ["src/polyfills/*.js!"],
"project": ["src/**/*.{js,jsx,ts,tsx}!"]
}
+3 -1
View File
@@ -31,7 +31,8 @@
"i18n:check": "node scripts/cleanup-unused-i18n.mjs",
"i18n:format": "node scripts/cleanup-unused-i18n.mjs --align --apply",
"i18n:types": "node scripts/generate-i18n-keys.mjs",
"typecheck": "tsc --noEmit"
"typecheck": "tsc --noEmit",
"knip:report": "knip --files --no-exit-code"
},
"dependencies": {
"@dnd-kit/core": "^6.3.1",
@@ -111,6 +112,7 @@
"https-proxy-agent": "^9.0.0",
"husky": "^9.1.7",
"jiti": "^2.7.0",
"knip": "6.26.0",
"lint-staged": "^17.0.5",
"sass": "^1.100.0",
"tar": "^7.5.15",
+502
View File
@@ -234,6 +234,9 @@ importers:
jiti:
specifier: ^2.7.0
version: 2.7.0
knip:
specifier: 6.26.0
version: 6.26.0
lint-staged:
specifier: ^17.0.5
version: 17.0.8
@@ -857,12 +860,18 @@ packages:
'@emnapi/core@1.10.0':
resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
'@emnapi/core@1.11.0':
resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==}
'@emnapi/core@1.11.1':
resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==}
'@emnapi/runtime@1.10.0':
resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
'@emnapi/runtime@1.11.0':
resolution: {integrity: sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==}
'@emnapi/runtime@1.11.1':
resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==}
@@ -1212,9 +1221,242 @@ packages:
'@octokit/types@16.0.0':
resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==}
'@oxc-parser/binding-android-arm-eabi@0.137.0':
resolution: {integrity: sha512-KDs+0VPdEmasOkpuJHW9V5WCF+cvYdMQv2Jd+aJXt+cxIx12NToRQRbXaRwUEDsZw+/jMk81Ve8ZFbjUkJTOwA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
'@oxc-parser/binding-android-arm64@0.137.0':
resolution: {integrity: sha512-WhALNzfy3x/RfC6bsqX+csavuUY0yHHE7XfgPE5M542uhoBZUUoGTPG+nkMbGoG4+gcfss5s7urMyn5QBHu0sw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
'@oxc-parser/binding-darwin-arm64@0.137.0':
resolution: {integrity: sha512-bFPr5hgmNMOMoyPTGtdsK4Ug21RovIPojRMgDDhSp1LtCnc/DkLwGONKjgRjszg677RlGnkYSviQ8hHaUPOVYA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
'@oxc-parser/binding-darwin-x64@0.137.0':
resolution: {integrity: sha512-CL5dMm1asqXIDZHg14FLxj3Mc36w8PI7xCWh1uA4is6z8g2XrIILoTcQYOxDbwzuk34RDPX5IAGUxZr6LA9KAg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
'@oxc-parser/binding-freebsd-x64@0.137.0':
resolution: {integrity: sha512-79h8rYGnSlKPGWo7mHr2ixO6ea7aW8B0CT965SZ8SLbNnCOH5aOYBTeVXUY6eMvEaiLyWr8Skuiugr5pDYgLGw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
'@oxc-parser/binding-linux-arm-gnueabihf@0.137.0':
resolution: {integrity: sha512-ASgmlSimhGyr0lksgVIo6hibz1obnDq4qJbiMX/AzltfgPnanRrzG1Q+23g8ljOHOjv6dsznkUuCYL3gg0sY1Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
'@oxc-parser/binding-linux-arm-musleabihf@0.137.0':
resolution: {integrity: sha512-AU2J9aa22Sx32wRGnDjybOU9TQXXQUud5sdUi+ZB0XxwM8aToWLweV+yA0wlQm0yIUVqljquqoHCYEq9II8gJQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
'@oxc-parser/binding-linux-arm64-gnu@0.137.0':
resolution: {integrity: sha512-GdEtiG89yMr7XkUGxifgodXEEm2f+xW2f9CpDjlgAnBOwhTmrpQMvhOGobLVKUyzf/qHBXW16smk5zbF3nZU6w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-arm64-musl@0.137.0':
resolution: {integrity: sha512-EGJ+Bs8iXx8KBH8DQ5BLoEm5lnHaYjlh4/8j8vFhrr/6z4tqONy5BZDzLpKmmNWlN6Hlc5r8YOuBVHqZ9vRFEQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
'@oxc-parser/binding-linux-ppc64-gnu@0.137.0':
resolution: {integrity: sha512-vzFUQENy/fnbSe5DZWovq6tIBc1uhuMztanSW6rz1e9WdQE4gHwYuD7ZII6JnrJifd1R3RSoqiZbgRFlVL2tYQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-riscv64-gnu@0.137.0':
resolution: {integrity: sha512-SfVI14HBQs9gtLcUD5hTt5hsNbdrqSUNg9S8muN+LhVQ5nf1WwH3hAoK6B9NKgdYgWAQSXFXGiiBedQ4r/BKuw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-riscv64-musl@0.137.0':
resolution: {integrity: sha512-e7Ppy4FCIFNQxT/ikSeIWFoQ0l+N9vgtRBtLcyZXeolTzApyVoPqEXsYPrcdM/9i0Bwk8knvYd37vaEMxHyi6g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@oxc-parser/binding-linux-s390x-gnu@0.137.0':
resolution: {integrity: sha512-Bho5qFwdhqsIFR7gipYEUlqvi3SRrY8sugxXig380MIaakBB1PyU9+7dBiBVScfImTNWhijUxdBwqrprGdq5WA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-x64-gnu@0.137.0':
resolution: {integrity: sha512-36mGWtg7PyFzjJwGDkH6/F4o2nIDEoKXLPr/X/lwqklkomQwJJt1I5GJVmGhovUEmgPK5WAeAZMqlFCehwiy9Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
'@oxc-parser/binding-linux-x64-musl@0.137.0':
resolution: {integrity: sha512-/Jqx6+N7A44n2BdvUr7pXhVr2vFjs6WGH3unZRczwrfiH0H1zY0QwKQMG/dtRiTlKGDKGukznPT8lx84/oEsZg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
'@oxc-parser/binding-openharmony-arm64@0.137.0':
resolution: {integrity: sha512-9Uj0qHNNl+OgT1UTGwF7ixIXU6T1u2SbMidmgPy/h1h/fl2gRS6YpAxxY1gwHofcWjoTwkoMFd8xs5Vuj6GOFA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
'@oxc-parser/binding-wasm32-wasi@0.137.0':
resolution: {integrity: sha512-gW2vfkytNGgMVADiuzdvOfw0mWG9za20F/1fCJsif5aBMAvWJTSbpIXbIe0XkOe0VENk+PadpQ7cZgUy2sUJcA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
'@oxc-parser/binding-win32-arm64-msvc@0.137.0':
resolution: {integrity: sha512-x+pFANF0yL5uK/6T7lu6SlR5qid6sp//eZXKLq5iNsIE+EQg6EaS8/wsW7E91nXXjpnPhSoMOHXShSVhGRdn8w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
'@oxc-parser/binding-win32-ia32-msvc@0.137.0':
resolution: {integrity: sha512-sQUqym80PFi6McRsIqfJrSu2JrSClEZIXXD+/FjAFoULEKzOPsldIdFBG96xdX8aVMzCNQ9792FPx3MfkEIrFA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
'@oxc-parser/binding-win32-x64-msvc@0.137.0':
resolution: {integrity: sha512-2AsevxlvNN4WKxpEn3RtqD5zbqMaXF+T7JXblsP4gVuY+vC9dXS4ED/PwfRCliFqoeisYS3Iro4DHzxr0TEvVA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
'@oxc-project/types@0.137.0':
resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==}
'@oxc-project/types@0.138.0':
resolution: {integrity: sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==}
'@oxc-resolver/binding-android-arm-eabi@11.21.3':
resolution: {integrity: sha512-eNU11A2WNizh04v3uyaJCootrHIaS0B9aHYXvAvVnPNk4xYSjMUjHnhQ6dewPN2MRYDskV85d1N0Aw0WNWhcyg==}
cpu: [arm]
os: [android]
'@oxc-resolver/binding-android-arm64@11.21.3':
resolution: {integrity: sha512-8Q+ZjTLvn2dIcWsrmhdrEihm7q+ag/k+mkry7Z+t0QbbHaVxXQfvH9AewyVMh/WrpEKhQ3DDgx9fYbqeCpeOEw==}
cpu: [arm64]
os: [android]
'@oxc-resolver/binding-darwin-arm64@11.21.3':
resolution: {integrity: sha512-wkh0qKZGHXVUDxFw3oA1TXnU2BDYY/r775oJflGeIr8uDPPoN2pk8gijQIzYRT6hoql/lg3+Tx/SaTn9e2/aGg==}
cpu: [arm64]
os: [darwin]
'@oxc-resolver/binding-darwin-x64@11.21.3':
resolution: {integrity: sha512-HbNc23FAQYbuyDV2vBWMez4u4mrsm5RAkniGZAWqr6lYZ3N4beeqIb776jzwRl8qL2zRhHVXpUj97X0QgogVzg==}
cpu: [x64]
os: [darwin]
'@oxc-resolver/binding-freebsd-x64@11.21.3':
resolution: {integrity: sha512-K6xNsTUPEUdfrn0+kbMq5nOUB5w1C5pavPQngt4TM2FpN91lP0PBe2srSpamb4d69O7h86oAi/qWX/kZNRSjkw==}
cpu: [x64]
os: [freebsd]
'@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3':
resolution: {integrity: sha512-VcFmOpcpWX1zoEy8M58tR2M9YxM+Z9RuQhqAx5q0CTmrruaP7Gveejg75hzd/5sg5nk9G3aLALEa3hE2FsmmTQ==}
cpu: [arm]
os: [linux]
'@oxc-resolver/binding-linux-arm-musleabihf@11.21.3':
resolution: {integrity: sha512-quVoxFLBy43hWaQbbDtQNRwAX5vX76mv7n64icAtQcJ3eNgVeblqmkupF/hAneNthdqSlnd1sTjb3aQSaDPaCQ==}
cpu: [arm]
os: [linux]
'@oxc-resolver/binding-linux-arm64-gnu@11.21.3':
resolution: {integrity: sha512-X0AqNZgcD07Q4V3RDK18/vYOj/HQT/FnmEFGYS2jTWqY7JO13ryE3TEs3eAIgUJhBnNkpEaiXqz3VK8M7qQhWQ==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-arm64-musl@11.21.3':
resolution: {integrity: sha512-YkaQnaKYdbuaXvRt5Qd0GpbihzVnyfR6z1SpYfIUC6RTu4NF7lDKPjVkYb+jRI2gedVO2rVpN35Y6akG6ud4Lw==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@oxc-resolver/binding-linux-ppc64-gnu@11.21.3':
resolution: {integrity: sha512-gB9HwhrPiFqUzDeEq+y/CgAijz1YdI6BnXz5GaH2Pa9cWdutchlkGFAiAuGb/PjVQpiK6NFKzFuztxrweoit7A==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-riscv64-gnu@11.21.3':
resolution: {integrity: sha512-zjDWBlYk8QGv0H8dsPUWqkfjYIIjG2TvspGkzXL0eImbgxtZorA/klKeHyolevoT3Kvbi+1iMr9Lhrh7jf54Og==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-riscv64-musl@11.21.3':
resolution: {integrity: sha512-4UfsQvacV388y1zpXL7C1x1FNYaV52JtuNRiuzrfQA2z1z6ElVrsidkGsrvQ5EgeSq1Pj7kaKqrgGkvFuxJ/tw==}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@oxc-resolver/binding-linux-s390x-gnu@11.21.3':
resolution: {integrity: sha512-b5uH+HKH0MP5mNBYaK75SKsJbw52URqrx2LavYdq6wb0l3ExAG5niYRP9DWUNHdKilpaBVM2bXk9HNWrH3ew7Q==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-x64-gnu@11.21.3':
resolution: {integrity: sha512-PjYlmilBpNRh2ntXNYAK3Am5w/nPfEpnU/96iNx7CI8EzAn12J4JRiec63wHJTH31nLoCNxBg/829pN+3CfG3Q==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@oxc-resolver/binding-linux-x64-musl@11.21.3':
resolution: {integrity: sha512-QTBAb7JuHlZ7JUEyM8UiQi2f7m/L4swBhP2TNpYIDc9Wp/wRw1G/8sl6i13aIzQAXH7LKIm294LeOHd0lQR8zA==}
cpu: [x64]
os: [linux]
libc: [musl]
'@oxc-resolver/binding-openharmony-arm64@11.21.3':
resolution: {integrity: sha512-4j1DFwjwv36ec9kds0jU/ucQ5Ha4ERO/H95BxR5JFf0kqUUAJ1kwII7XhTc1vZrkdJkvLGC9Q2MbpObpum8RBg==}
cpu: [arm64]
os: [openharmony]
'@oxc-resolver/binding-wasm32-wasi@11.21.3':
resolution: {integrity: sha512-i8oluoel5kru/j1WNrjmQSiA3GQ7wvIYVR1IwIoZtKogAhya2iub+ZKIeSIkcJOrnzQ18Tzl/F+kL3fYOxZLvA==}
engines: {node: '>=14.0.0'}
cpu: [wasm32]
'@oxc-resolver/binding-win32-arm64-msvc@11.21.3':
resolution: {integrity: sha512-M/8dw8dD6aOs+NlPJax401CZB9I7Aut84isQLgALGGwke4Afvw+/7yYhZb94yXf6t2sPLhQLmSmtSV+2FhsOWg==}
cpu: [arm64]
os: [win32]
'@oxc-resolver/binding-win32-x64-msvc@11.21.3':
resolution: {integrity: sha512-H7BCt/VnS9hnmMp42eGhZ99izSCRvlnWwy/N71K1/J8QoExwY4262Z8QiEkMDtduRJrztayDxETTckmUuAVL9Q==}
cpu: [x64]
os: [win32]
'@parcel/watcher-android-arm64@2.5.6':
resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
engines: {node: '>= 10.0.0'}
@@ -2408,6 +2650,9 @@ packages:
fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
fd-package-json@2.0.0:
resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==}
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
@@ -2448,6 +2693,11 @@ packages:
resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==}
engines: {node: '>= 6'}
formatly@0.3.0:
resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==}
engines: {node: '>=18.3.0'}
hasBin: true
foxact@0.3.8:
resolution: {integrity: sha512-lFakEG8xm6A6wMH4ycWhXvwUybq4ATnMxJfBD4hj6hm9CKo72q2M/YaiEemoWGh9sUjQqX+pPXfq8S/jxedWzA==}
peerDependencies:
@@ -2692,6 +2942,11 @@ packages:
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
knip@6.26.0:
resolution: {integrity: sha512-e9eELEEpBpGTd4H4HB7818/DYj9dMzMyUqAddfYwUN/EbSkgIjOuWEF96W/xHsmV0SDrsdXjIM+oZ2xpPzPsBA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@@ -3022,6 +3277,13 @@ packages:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
oxc-parser@0.137.0:
resolution: {integrity: sha512-yFImD+WLElJpLKy8llG1qe4DCmMsL18peRp8XP1JKfig/gISbJkglnpDtX2aTmAn10kZF7164HbN2H8QPsXxGg==}
engines: {node: ^20.19.0 || >=22.12.0}
oxc-resolver@11.21.3:
resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==}
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
@@ -3289,6 +3551,10 @@ packages:
resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==}
engines: {node: '>=20'}
smol-toml@1.7.0:
resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==}
engines: {node: '>= 18'}
snake-case@3.0.4:
resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
@@ -3339,6 +3605,10 @@ packages:
resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
engines: {node: '>=12'}
strip-json-comments@5.0.3:
resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==}
engines: {node: '>=14.16'}
style-to-js@1.1.21:
resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
@@ -3432,6 +3702,10 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
unbash@4.0.2:
resolution: {integrity: sha512-8gwNZ29+0/3zmXw7ToIHZtg6wK37xnniRUdBt7B27xZxaxfgR5tGMaGHT0t0dLtBV9fXE7zurh0s6Z1DHVjfWg==}
engines: {node: '>=14'}
undici-types@7.18.2:
resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
@@ -3574,6 +3848,10 @@ packages:
vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
walk-up-path@4.0.0:
resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==}
engines: {node: 20 || >=22}
web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
@@ -4389,6 +4667,12 @@ snapshots:
tslib: 2.8.1
optional: true
'@emnapi/core@1.11.0':
dependencies:
'@emnapi/wasi-threads': 1.2.2
tslib: 2.8.1
optional: true
'@emnapi/core@1.11.1':
dependencies:
'@emnapi/wasi-threads': 1.2.2
@@ -4400,6 +4684,11 @@ snapshots:
tslib: 2.8.1
optional: true
'@emnapi/runtime@1.11.0':
dependencies:
tslib: 2.8.1
optional: true
'@emnapi/runtime@1.11.1':
dependencies:
tslib: 2.8.1
@@ -4772,6 +5061,13 @@ snapshots:
'@tybys/wasm-util': 0.10.3
optional: true
'@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)':
dependencies:
'@emnapi/core': 1.11.0
'@emnapi/runtime': 1.11.0
'@tybys/wasm-util': 0.10.3
optional: true
'@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)':
dependencies:
'@emnapi/core': 1.11.1
@@ -4831,8 +5127,135 @@ snapshots:
dependencies:
'@octokit/openapi-types': 27.0.0
'@oxc-parser/binding-android-arm-eabi@0.137.0':
optional: true
'@oxc-parser/binding-android-arm64@0.137.0':
optional: true
'@oxc-parser/binding-darwin-arm64@0.137.0':
optional: true
'@oxc-parser/binding-darwin-x64@0.137.0':
optional: true
'@oxc-parser/binding-freebsd-x64@0.137.0':
optional: true
'@oxc-parser/binding-linux-arm-gnueabihf@0.137.0':
optional: true
'@oxc-parser/binding-linux-arm-musleabihf@0.137.0':
optional: true
'@oxc-parser/binding-linux-arm64-gnu@0.137.0':
optional: true
'@oxc-parser/binding-linux-arm64-musl@0.137.0':
optional: true
'@oxc-parser/binding-linux-ppc64-gnu@0.137.0':
optional: true
'@oxc-parser/binding-linux-riscv64-gnu@0.137.0':
optional: true
'@oxc-parser/binding-linux-riscv64-musl@0.137.0':
optional: true
'@oxc-parser/binding-linux-s390x-gnu@0.137.0':
optional: true
'@oxc-parser/binding-linux-x64-gnu@0.137.0':
optional: true
'@oxc-parser/binding-linux-x64-musl@0.137.0':
optional: true
'@oxc-parser/binding-openharmony-arm64@0.137.0':
optional: true
'@oxc-parser/binding-wasm32-wasi@0.137.0':
dependencies:
'@emnapi/core': 1.11.1
'@emnapi/runtime': 1.11.1
'@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)
optional: true
'@oxc-parser/binding-win32-arm64-msvc@0.137.0':
optional: true
'@oxc-parser/binding-win32-ia32-msvc@0.137.0':
optional: true
'@oxc-parser/binding-win32-x64-msvc@0.137.0':
optional: true
'@oxc-project/types@0.137.0': {}
'@oxc-project/types@0.138.0': {}
'@oxc-resolver/binding-android-arm-eabi@11.21.3':
optional: true
'@oxc-resolver/binding-android-arm64@11.21.3':
optional: true
'@oxc-resolver/binding-darwin-arm64@11.21.3':
optional: true
'@oxc-resolver/binding-darwin-x64@11.21.3':
optional: true
'@oxc-resolver/binding-freebsd-x64@11.21.3':
optional: true
'@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3':
optional: true
'@oxc-resolver/binding-linux-arm-musleabihf@11.21.3':
optional: true
'@oxc-resolver/binding-linux-arm64-gnu@11.21.3':
optional: true
'@oxc-resolver/binding-linux-arm64-musl@11.21.3':
optional: true
'@oxc-resolver/binding-linux-ppc64-gnu@11.21.3':
optional: true
'@oxc-resolver/binding-linux-riscv64-gnu@11.21.3':
optional: true
'@oxc-resolver/binding-linux-riscv64-musl@11.21.3':
optional: true
'@oxc-resolver/binding-linux-s390x-gnu@11.21.3':
optional: true
'@oxc-resolver/binding-linux-x64-gnu@11.21.3':
optional: true
'@oxc-resolver/binding-linux-x64-musl@11.21.3':
optional: true
'@oxc-resolver/binding-openharmony-arm64@11.21.3':
optional: true
'@oxc-resolver/binding-wasm32-wasi@11.21.3':
dependencies:
'@emnapi/core': 1.11.0
'@emnapi/runtime': 1.11.0
'@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)
optional: true
'@oxc-resolver/binding-win32-arm64-msvc@11.21.3':
optional: true
'@oxc-resolver/binding-win32-x64-msvc@11.21.3':
optional: true
'@parcel/watcher-android-arm64@2.5.6':
optional: true
@@ -5983,6 +6406,10 @@ snapshots:
fast-levenshtein@2.0.6: {}
fd-package-json@2.0.0:
dependencies:
walk-up-path: 4.0.0
fdir@6.5.0(picomatch@4.0.5):
optionalDependencies:
picomatch: 4.0.5
@@ -6015,6 +6442,10 @@ snapshots:
hasown: 2.0.4
mime-types: 2.1.35
formatly@0.3.0:
dependencies:
fd-package-json: 2.0.0
foxact@0.3.8(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
dependencies:
client-only: 0.0.1
@@ -6278,6 +6709,22 @@ snapshots:
dependencies:
json-buffer: 3.0.1
knip@6.26.0:
dependencies:
fdir: 6.5.0(picomatch@4.0.5)
formatly: 0.3.0
get-tsconfig: 4.14.0
jiti: 2.7.0
oxc-parser: 0.137.0
oxc-resolver: 11.21.3
picomatch: 4.0.5
smol-toml: 1.7.0
strip-json-comments: 5.0.3
tinyglobby: 0.2.17
unbash: 4.0.2
yaml: 2.9.0
zod: 4.4.3
levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
@@ -6727,6 +7174,53 @@ snapshots:
type-check: 0.4.0
word-wrap: 1.2.5
oxc-parser@0.137.0:
dependencies:
'@oxc-project/types': 0.137.0
optionalDependencies:
'@oxc-parser/binding-android-arm-eabi': 0.137.0
'@oxc-parser/binding-android-arm64': 0.137.0
'@oxc-parser/binding-darwin-arm64': 0.137.0
'@oxc-parser/binding-darwin-x64': 0.137.0
'@oxc-parser/binding-freebsd-x64': 0.137.0
'@oxc-parser/binding-linux-arm-gnueabihf': 0.137.0
'@oxc-parser/binding-linux-arm-musleabihf': 0.137.0
'@oxc-parser/binding-linux-arm64-gnu': 0.137.0
'@oxc-parser/binding-linux-arm64-musl': 0.137.0
'@oxc-parser/binding-linux-ppc64-gnu': 0.137.0
'@oxc-parser/binding-linux-riscv64-gnu': 0.137.0
'@oxc-parser/binding-linux-riscv64-musl': 0.137.0
'@oxc-parser/binding-linux-s390x-gnu': 0.137.0
'@oxc-parser/binding-linux-x64-gnu': 0.137.0
'@oxc-parser/binding-linux-x64-musl': 0.137.0
'@oxc-parser/binding-openharmony-arm64': 0.137.0
'@oxc-parser/binding-wasm32-wasi': 0.137.0
'@oxc-parser/binding-win32-arm64-msvc': 0.137.0
'@oxc-parser/binding-win32-ia32-msvc': 0.137.0
'@oxc-parser/binding-win32-x64-msvc': 0.137.0
oxc-resolver@11.21.3:
optionalDependencies:
'@oxc-resolver/binding-android-arm-eabi': 11.21.3
'@oxc-resolver/binding-android-arm64': 11.21.3
'@oxc-resolver/binding-darwin-arm64': 11.21.3
'@oxc-resolver/binding-darwin-x64': 11.21.3
'@oxc-resolver/binding-freebsd-x64': 11.21.3
'@oxc-resolver/binding-linux-arm-gnueabihf': 11.21.3
'@oxc-resolver/binding-linux-arm-musleabihf': 11.21.3
'@oxc-resolver/binding-linux-arm64-gnu': 11.21.3
'@oxc-resolver/binding-linux-arm64-musl': 11.21.3
'@oxc-resolver/binding-linux-ppc64-gnu': 11.21.3
'@oxc-resolver/binding-linux-riscv64-gnu': 11.21.3
'@oxc-resolver/binding-linux-riscv64-musl': 11.21.3
'@oxc-resolver/binding-linux-s390x-gnu': 11.21.3
'@oxc-resolver/binding-linux-x64-gnu': 11.21.3
'@oxc-resolver/binding-linux-x64-musl': 11.21.3
'@oxc-resolver/binding-openharmony-arm64': 11.21.3
'@oxc-resolver/binding-wasm32-wasi': 11.21.3
'@oxc-resolver/binding-win32-arm64-msvc': 11.21.3
'@oxc-resolver/binding-win32-x64-msvc': 11.21.3
p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
@@ -7000,6 +7494,8 @@ snapshots:
ansi-styles: 6.2.3
is-fullwidth-code-point: 5.1.0
smol-toml@1.7.0: {}
snake-case@3.0.4:
dependencies:
dot-case: 3.0.4
@@ -7046,6 +7542,8 @@ snapshots:
dependencies:
ansi-regex: 6.2.2
strip-json-comments@5.0.3: {}
style-to-js@1.1.21:
dependencies:
style-to-object: 1.0.14
@@ -7134,6 +7632,8 @@ snapshots:
typescript@6.0.3: {}
unbash@4.0.2: {}
undici-types@7.18.2: {}
undici@6.27.0: {}
@@ -7283,6 +7783,8 @@ snapshots:
vscode-uri@3.1.0: {}
walk-up-path@4.0.0: {}
web-namespaces@2.0.1: {}
which@2.0.2: