From 2cf38e3fc6059abc213139898e5491b6f1397b0f Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Tue, 6 May 2025 00:41:58 +0900 Subject: [PATCH 1/5] feat: resolve positional argument values with argument schema --- package.json | 18 +- pnpm-lock.yaml | 1139 +++++++++++++++------- src/__snapshots__/cli.test.ts.snap | 36 +- src/__snapshots__/generator.test.ts.snap | 2 +- src/__snapshots__/renderer.test.ts.snap | 53 +- src/cli.test.ts | 97 +- src/cli.ts | 3 +- src/constants.ts | 1 + src/locales/en-US.json | 1 + src/locales/ja-JP.json | 1 + src/renderer.test.ts | 94 +- src/renderer/usage.ts | 74 +- 12 files changed, 1110 insertions(+), 409 deletions(-) diff --git a/package.json b/package.json index acd98a82..e052fee6 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "typecheck:tsc": "tsc --noEmit" }, "dependencies": { - "args-tokens": "^0.17.0" + "args-tokens": "^0.17.1" }, "devDependencies": { "@eslint/markdown": "^6.4.0", @@ -117,10 +117,10 @@ "@kazupon/eslint-config": "^0.29.0", "@kazupon/prettier-config": "^0.1.1", "@types/node": "^22.15.3", - "@vitest/eslint-plugin": "^1.1.43", + "@vitest/eslint-plugin": "^1.1.44", "bumpp": "^10.1.0", - "deno": "^2.2.12", - "eslint": "^9.25.1", + "deno": "^2.3.1", + "eslint": "^9.26.0", "eslint-config-prettier": "^10.1.2", "eslint-import-resolver-typescript": "^4.3.4", "eslint-plugin-import": "^2.31.0", @@ -130,27 +130,27 @@ "eslint-plugin-regexp": "^2.7.0", "eslint-plugin-unicorn": "^58.0.0", "eslint-plugin-unused-imports": "^4.1.4", - "eslint-plugin-vue": "^10.0.1", + "eslint-plugin-vue": "^10.1.0", "eslint-plugin-vue-composable": "^1.0.0", "eslint-plugin-yml": "^1.18.0", "gh-changelogen": "^0.2.8", "jsr": "^0.13.4", "jsr-exports-lint": "^0.2.0", - "knip": "^5.50.5", + "knip": "^5.53.0", "lint-staged": "^15.5.1", "messageformat": "4.0.0-10", "pkg-pr-new": "^0.0.43", "prettier": "^3.5.3", "publint": "^0.3.12", - "tsdown": "^0.10.0", - "typedoc": "^0.28.3", + "tsdown": "^0.10.2", + "typedoc": "^0.28.4", "typedoc-plugin-markdown": "^4.6.3", "typedoc-vitepress-theme": "^1.1.2", "typescript": "^5.8.3", "typescript-eslint": "^8.31.1", "vitepress": "^1.6.3", "vitepress-plugin-group-icons": "^1.5.2", - "vitepress-plugin-llms": "^1.1.1", + "vitepress-plugin-llms": "^1.1.3", "vitest": "^3.1.2", "vue": "^3.5.13" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7cc53a41..186fcdf2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: .: dependencies: args-tokens: - specifier: ^0.17.0 - version: 0.17.0 + specifier: ^0.17.1 + version: 0.17.1 devDependencies: '@eslint/markdown': specifier: ^6.4.0 @@ -26,7 +26,7 @@ importers: version: 12.0.0-alpha.2 '@kazupon/eslint-config': specifier: ^0.29.0 - version: 0.29.0(d6c1aae95f0a5d8164500cd7d1be7474) + version: 0.29.0(0efaef002bf7436f1f98044a6c5f69a3) '@kazupon/prettier-config': specifier: ^0.1.1 version: 0.1.1 @@ -34,53 +34,53 @@ importers: specifier: ^22.15.3 version: 22.15.3 '@vitest/eslint-plugin': - specifier: ^1.1.43 - version: 1.1.43(@typescript-eslint/utils@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)) + specifier: ^1.1.44 + version: 1.1.44(@typescript-eslint/utils@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)) bumpp: specifier: ^10.1.0 version: 10.1.0 deno: - specifier: ^2.2.12 - version: 2.2.12 + specifier: ^2.3.1 + version: 2.3.1 eslint: - specifier: ^9.25.1 - version: 9.25.1(jiti@2.4.2) + specifier: ^9.26.0 + version: 9.26.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.2 - version: 10.1.2(eslint@9.25.1(jiti@2.4.2)) + version: 10.1.2(eslint@9.26.0(jiti@2.4.2)) eslint-import-resolver-typescript: specifier: ^4.3.4 - version: 4.3.4(eslint-plugin-import@2.31.0)(eslint@9.25.1(jiti@2.4.2)) + version: 4.3.4(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.25.1(jiti@2.4.2)) + version: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-jsonc: specifier: ^2.20.0 - version: 2.20.0(eslint@9.25.1(jiti@2.4.2)) + version: 2.20.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-module-interop: specifier: ^0.3.1 - version: 0.3.1(eslint@9.25.1(jiti@2.4.2)) + version: 0.3.1(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-promise: specifier: ^7.2.1 - version: 7.2.1(eslint@9.25.1(jiti@2.4.2)) + version: 7.2.1(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-regexp: specifier: ^2.7.0 - version: 2.7.0(eslint@9.25.1(jiti@2.4.2)) + version: 2.7.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-unicorn: specifier: ^58.0.0 - version: 58.0.0(eslint@9.25.1(jiti@2.4.2)) + version: 58.0.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2)) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-vue: - specifier: ^10.0.1 - version: 10.0.1(eslint@9.25.1(jiti@2.4.2))(vue-eslint-parser@9.4.3(eslint@9.25.1(jiti@2.4.2))) + specifier: ^10.1.0 + version: 10.1.0(eslint@9.26.0(jiti@2.4.2))(vue-eslint-parser@9.4.3(eslint@9.26.0(jiti@2.4.2))) eslint-plugin-vue-composable: specifier: ^1.0.0 - version: 1.0.0(eslint@9.25.1(jiti@2.4.2)) + version: 1.0.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-yml: specifier: ^1.18.0 - version: 1.18.0(eslint@9.25.1(jiti@2.4.2)) + version: 1.18.0(eslint@9.26.0(jiti@2.4.2)) gh-changelogen: specifier: ^0.2.8 version: 0.2.8 @@ -89,10 +89,10 @@ importers: version: 0.13.4 jsr-exports-lint: specifier: ^0.2.0 - version: 0.2.0(tsdown@0.10.0(publint@0.3.12)(typescript@5.8.3)) + version: 0.2.0(tsdown@0.10.2(publint@0.3.12)(typescript@5.8.3)) knip: - specifier: ^5.50.5 - version: 5.50.5(@types/node@22.15.3)(typescript@5.8.3) + specifier: ^5.53.0 + version: 5.53.0(@types/node@22.15.3)(typescript@5.8.3) lint-staged: specifier: ^15.5.1 version: 15.5.1 @@ -109,23 +109,23 @@ importers: specifier: ^0.3.12 version: 0.3.12 tsdown: - specifier: ^0.10.0 - version: 0.10.0(publint@0.3.12)(typescript@5.8.3) + specifier: ^0.10.2 + version: 0.10.2(publint@0.3.12)(typescript@5.8.3) typedoc: - specifier: ^0.28.3 - version: 0.28.3(typescript@5.8.3) + specifier: ^0.28.4 + version: 0.28.4(typescript@5.8.3) typedoc-plugin-markdown: specifier: ^4.6.3 - version: 4.6.3(typedoc@0.28.3(typescript@5.8.3)) + version: 4.6.3(typedoc@0.28.4(typescript@5.8.3)) typedoc-vitepress-theme: specifier: ^1.1.2 - version: 1.1.2(typedoc-plugin-markdown@4.6.3(typedoc@0.28.3(typescript@5.8.3))) + version: 1.1.2(typedoc-plugin-markdown@4.6.3(typedoc@0.28.4(typescript@5.8.3))) typescript: specifier: ^5.8.3 version: 5.8.3 typescript-eslint: specifier: ^8.31.1 - version: 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) + version: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) vitepress: specifier: ^1.6.3 version: 1.6.3(@algolia/client-search@5.23.4)(@types/node@22.15.3)(lightningcss@1.29.3)(postcss@8.5.3)(search-insights@2.17.3)(typescript@5.8.3) @@ -133,8 +133,8 @@ importers: specifier: ^1.5.2 version: 1.5.2 vitepress-plugin-llms: - specifier: ^1.1.1 - version: 1.1.1 + specifier: ^1.1.3 + version: 1.1.3 vitest: specifier: ^3.1.2 version: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) @@ -319,54 +319,71 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.27.0': resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.27.1': + resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/types@7.27.0': resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} - '@deno/darwin-arm64@2.2.12': - resolution: {integrity: sha512-wa/eEE3NxQCynjrKC+DOWajcUpfcsF7ZYcGSRhcfVqVjA9ivx+768gRz2N88+NL6k4tHrLtWwpH2R3X7CIkxhg==} + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@deno/darwin-arm64@2.3.1': + resolution: {integrity: sha512-lKUfHFvtygPNajIUY7QTjpGyIetOSRD+NCsZjiWlyXVPzZQLSXYtqRSDth31N9ORs5dP9tj0/rnho0yoF08lyg==} cpu: [arm64] os: [darwin] - '@deno/darwin-x64@2.2.12': - resolution: {integrity: sha512-p3rpDtni++GCFIUtyZnJMldji5jSEprFW/Oxq2ELv/vpnisCOtKxqPqRIFDEOBleMv+Kbn29IEjzsua+Cs/ZqQ==} + '@deno/darwin-x64@2.3.1': + resolution: {integrity: sha512-NoKA2HLnlCk/oVTE+YJr0zYtT0hGdLd9fM09RAXNHQmgn572NoK2Mbs+maZJxHRw30QOXqoheOwi+S8Z9turzQ==} cpu: [x64] os: [darwin] - '@deno/linux-arm64-glibc@2.2.12': - resolution: {integrity: sha512-dwcz8iZ+8RFsWjXLINvXhMLDF0bj5b9iyRtqjbZyHuO/GYjYzE1VS+bnTd+GTnHdUkmYRpycW9F72+SS2pFELw==} + '@deno/linux-arm64-glibc@2.3.1': + resolution: {integrity: sha512-/sc7tDVZHmjfNO5ghuIQINlHugyBhqMr6/tCtSdi/3rWA3lfP2OV3gh4myVjOurR0kaB5HjrLpxXVUq5hD5Vag==} cpu: [arm64] os: [linux] - '@deno/linux-x64-glibc@2.2.12': - resolution: {integrity: sha512-LLPfOE8JxJ0RpTLqLbOjmyBElCq6N2S2VyJaprOfWc2ZmzxHNTw0A0q4CcdSzQkzzkxnznIEQM1l9Ic7ygB8eQ==} + '@deno/linux-x64-glibc@2.3.1': + resolution: {integrity: sha512-ipQqXDtjc3Lln1q1TuPG7SygWrxJga1RODofP/pNwozc14wwZEeCNE4z7z4jDqes6eH5XL8ZH+qZa5beS7118Q==} cpu: [x64] os: [linux] - '@deno/win32-arm64@2.2.12': - resolution: {integrity: sha512-qAG+MtnkVxT1wJKikNEPK5KHD1K6HewQHDIWQHxzu/6qbUJAv3GS7Na56msgg9GmRAFQ784c9XD9IFnODKwIdQ==} + '@deno/win32-arm64@2.3.1': + resolution: {integrity: sha512-UKwl7uqmuP4qcTR210ZlwozFqH5eb7o3cgNgp5eXZSdFbejKxz+dTKsiSOMjoxTbbKZHofVdp/Dc7jVUvlwShQ==} cpu: [arm64] os: [win32] - '@deno/win32-x64@2.2.12': - resolution: {integrity: sha512-FTKAtS+t29rGEdfNnL1dcpYzifrqDHSeiwCw+zUb5W4HvKtSnu4S1k06aKiZpuiZpHtEaroS+6VWWHVM8vFlXQ==} + '@deno/win32-x64@2.3.1': + resolution: {integrity: sha512-vbnSEXjL3+dz6EwvV8qUFrDvtluQQdYxEJo+FaSkUu9x2Hws5YpLln4l0tT/KS58RXI9DpWS9dxwMIPbe5kQQQ==} cpu: [x64] os: [win32] @@ -734,8 +751,8 @@ packages: resolution: {integrity: sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.25.1': - resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==} + '@eslint/js@9.26.0': + resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/markdown@6.4.0': @@ -934,6 +951,10 @@ packages: resolution: {integrity: sha512-ppcUP2yPVnvl/ZSixn5+bSOWXXRXt+Xi7Xb1dUME4uKUCIJp5/hvU0HAzbw2GbiVyPzJ3bUxhrogRZ8KLRJLEw==} engines: {node: '>= 18'} + '@modelcontextprotocol/sdk@1.11.0': + resolution: {integrity: sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==} + engines: {node: '>=18'} + '@napi-rs/wasm-runtime@0.2.9': resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==} @@ -1070,8 +1091,8 @@ packages: '@oxc-project/types@0.64.0': resolution: {integrity: sha512-B0dxuEZFV6M4tXjPFwDSaED5/J55YUhODBaF09xNFNRrEyzQLKZuhKXAw1xYK8bO4K8Jn1d21TZfei3kAIE8dA==} - '@oxc-project/types@0.66.0': - resolution: {integrity: sha512-KF5Wlo2KzQ+jmuCtrGISZoUfdHom7qHavNfPLW2KkeYJfYMGwtiia8KjwtsvNJ49qRiXImOCkPeVPd4bMlbR7w==} + '@oxc-project/types@0.67.0': + resolution: {integrity: sha512-AI7inoYvnVro7b8S2Z+Fxi295xQvNKLP1CM/xzx5il4R3aiGgnFt9qiXaRo9vIutataX8AjHcaPnOsjdcItU0w==} '@oxc-resolver/binding-darwin-arm64@5.3.0': resolution: {integrity: sha512-hXem5ZAguS7IlSiHg/LK0tEfLj4eUo+9U6DaFwwBEGd0L0VIF9LmuiHydRyOrdnnmi9iAAFMAn/wl2cUoiuruA==} @@ -1209,8 +1230,8 @@ packages: cpu: [arm64] os: [darwin] - '@oxc-transform/binding-darwin-arm64@0.66.0': - resolution: {integrity: sha512-EVaarR0u/ohSc66oOsMY+SIhLy0YXRIvVeCEoNKOQe+UCzDrd344YH0qxlfQ3EIGzUhf4NqBWuXvZTWJq4qdTA==} + '@oxc-transform/binding-darwin-arm64@0.67.0': + resolution: {integrity: sha512-P3zBMhpOQceNSys3/ZqvrjuRvcIbVzfGFN/tH34HlVkOjOmfGK1mOWjORsGAZtbgh1muXrF6mQETLzFjfYndXQ==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [darwin] @@ -1221,8 +1242,8 @@ packages: cpu: [x64] os: [darwin] - '@oxc-transform/binding-darwin-x64@0.66.0': - resolution: {integrity: sha512-nmvKnIsqkVAHfpQkdEoWYcYFSiPjWc5ioM4UfdJB3RbIdusoyqBJLywDec1PHE770lTfHxHccMy1vk2dr25cVw==} + '@oxc-transform/binding-darwin-x64@0.67.0': + resolution: {integrity: sha512-B52aeo/C3spYHcwFQ4nAbDkwbMKf0K6ncWM8GrVUgGu8PPECLBhjPCW11kPW/lt9FxwrdgVYVzPYlZ6wmJmpEA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [darwin] @@ -1233,8 +1254,8 @@ packages: cpu: [arm] os: [linux] - '@oxc-transform/binding-linux-arm-gnueabihf@0.66.0': - resolution: {integrity: sha512-RX94vb6+8JWylYuW0Restg6Gs7xxzmdZ96nHRSw281XPoHX94wHkGd8VMo7bUrPYsoRn5AmyIjH67gUNvsJiqw==} + '@oxc-transform/binding-linux-arm-gnueabihf@0.67.0': + resolution: {integrity: sha512-5Ir1eQrC9lvj/rR1TJVGwOR4yLgXTLmfKHIfpVH7GGSQrzK7VMUfHWX+dAsX1VutaeE8puXIqtYvf9cHLw78dw==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] @@ -1245,8 +1266,8 @@ packages: cpu: [arm64] os: [linux] - '@oxc-transform/binding-linux-arm64-gnu@0.66.0': - resolution: {integrity: sha512-KX2XLdeEnM8AxlL5IyylR0HkfEMD1z8OgNm3WKMB1CFxdJumni7EAPr1AlLVhvoiHyELk73Rrt6BR3+iVE3kEw==} + '@oxc-transform/binding-linux-arm64-gnu@0.67.0': + resolution: {integrity: sha512-zTqfPET5+hZfJ3/dMqJboKxrpXMXk+j2HVdvX0wVhW2MI7n7hwELl+In6Yu20nXuEyJkNQlWHbNPCUfpM+cBWw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] @@ -1257,8 +1278,8 @@ packages: cpu: [arm64] os: [linux] - '@oxc-transform/binding-linux-arm64-musl@0.66.0': - resolution: {integrity: sha512-fIiNlCEJFpVOWeFUVvEpfU06WShfseIsbNYmna9ah69XUYTivKYRelctLp3OGyUZusO0Hux6eA6vXj/K0X4NNA==} + '@oxc-transform/binding-linux-arm64-musl@0.67.0': + resolution: {integrity: sha512-jzz/ATUhZ8wetb4gm5GwzheZns3Qj1CZ+DIMmD8nBxQXszmTS/fqnAPpgzruyLqkXBUuUfF3pHv5f/UmuHReuQ==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] @@ -1269,8 +1290,8 @@ packages: cpu: [x64] os: [linux] - '@oxc-transform/binding-linux-x64-gnu@0.66.0': - resolution: {integrity: sha512-RawpLg84jX7EB5RORjPXycOqlYqSHS40oPewrcYrn6uNKmQKBjZZQ99p+hNj7QKoON6GxfAPGKmYxXMgFRNuNg==} + '@oxc-transform/binding-linux-x64-gnu@0.67.0': + resolution: {integrity: sha512-Qy2+tfglJ8yX6guC1EDAnuuzRZIXciXO9UwOewxyiahLxwuTpj/wvvZN3Cb1SA3c14zrwb2TNMZvaXS1/OS5Pg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] @@ -1281,8 +1302,8 @@ packages: cpu: [x64] os: [linux] - '@oxc-transform/binding-linux-x64-musl@0.66.0': - resolution: {integrity: sha512-L5ftqB+nNVCcWhwfmhhWLVWfjII2WxmF6JbjiSoqJdsDBnb+EzlZKRk3pYhe9ESD2Kl5rhGCPSBcWkdqsmIreQ==} + '@oxc-transform/binding-linux-x64-musl@0.67.0': + resolution: {integrity: sha512-tHoYgDIRhgvh+/wIrzAk3cUoj/LSSoJAdsZW9XRlaixFW/TF2puxRyaS1hRco0bcKTwotXl/eDYqZmhIfUyGRQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] @@ -1292,8 +1313,8 @@ packages: engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-transform/binding-wasm32-wasi@0.66.0': - resolution: {integrity: sha512-8W8iifV4uvXP4n7qbsxHw3QzLib4F4Er3DOWqvjaSj/A0Ipyc4foX8mitVV6kJrh0DwP+Bcx6ohvawh9xN9AzQ==} + '@oxc-transform/binding-wasm32-wasi@0.67.0': + resolution: {integrity: sha512-ZPT+1HECf7WUnotodIuS8tvSkwaiCdC2DDw8HVRmlerbS6iPYIPKyBCvkSM4RyUx0kljZtB9AciLCkEbwy5/zA==} engines: {node: '>=14.0.0'} cpu: [wasm32] @@ -1303,8 +1324,8 @@ packages: cpu: [arm64] os: [win32] - '@oxc-transform/binding-win32-arm64-msvc@0.66.0': - resolution: {integrity: sha512-E+dsoSIb9Ei/YSAZZGg4qLX7jiSbD/SzZEkxTl1pJpBVF9Dbq5D/9FcWe52qe3VegkUG2w8XwGmtaeeLikR/wA==} + '@oxc-transform/binding-win32-arm64-msvc@0.67.0': + resolution: {integrity: sha512-+E3lOHCk4EuIk6IjshBAARknAUpgH+gHTtZxCPqK4AWYA+Tls2J6C0FVM48uZ4m3rZpAq8ZszM9JZVAkOaynBQ==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [win32] @@ -1315,8 +1336,8 @@ packages: cpu: [x64] os: [win32] - '@oxc-transform/binding-win32-x64-msvc@0.66.0': - resolution: {integrity: sha512-ZsIZeXr4Zexz/Sm4KoRlkjHda56eSCQizCM0E0fSyROwCjSiG+LT+L5czydBxietD1dZ4gSif8nMKzTMQrra7A==} + '@oxc-transform/binding-win32-x64-msvc@0.67.0': + resolution: {integrity: sha512-3pIIFb9g5aFrAODTQVJYitq+ONHgDJ4IYk/7pk+jsG6JpKUkURd0auUlxvriO11fFit5hdwy+wIbU4kBvyRUkg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [win32] @@ -1338,8 +1359,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-2F4bhDtV6CHBx7JMiT9xvmxkcZLHFmonfbli36RyfvgThDOAu92bis28zDTdguDY85lN/jBRKX/eOvX+T5hMkg==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-V0zbNPcyRVZFUUtCiJxXMuOYriszcgzc5wW5DUA5mHDlM0gDc1snsLzM245q5fGlSLmq+Rgerkclv0ZEjgHwDw==} cpu: [arm64] os: [darwin] @@ -1348,8 +1369,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-8VMChhFLeD/oOAQUspFtxZaV7ctDob63w626kwvBBIHtlpY2Ohw4rsfjjtGckyrTCI/RROgZv/TVVEsG3GkgLw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-7RXXJo0U52YocMH/Bv829U3ZCXIL/+HhXme165HHflpg2flTk8dkk65Ft1lOtV80JNmUFwgfHYhvWeKz8j7qWQ==} cpu: [x64] os: [darwin] @@ -1358,8 +1379,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-4W28EgaIidbWIpwB3hESMBfiOSs7LBFpJGa8JIV488qLEnTR/pqzxDEoOPobhRSJ1lJlv0vUgA8+DKBIldo2gw==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-vQUshBpPMdvQUfERsyjo1iNcV7wwU65mKoCwlX0e2YFI9zqyxq+fOKUEGEVrxpz4dm0kmQ5/rPdDPZQ6TcodUA==} cpu: [x64] os: [freebsd] @@ -1368,8 +1389,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-1ECtyzIKlAHikR7BhS4hk7Hxw8xCH6W3S+Sb74EM0vy5AqPvWSbgLfAwagYC7gNDcMMby3I757X7qih5fIrGiw==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-MIeNUPb7qHB/X2Lh76Rk5cxXi0O0Cc3hRGPg8Mzwxkr5Ox5fbsJjjPHNE4g3es4VEt1NEjpZmo7XFyi1Szfbww==} cpu: [arm] os: [linux] @@ -1378,8 +1399,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-wU1kp8qPRUKC8N82dNs3F5+UyKRww9TUEO5dQ5mxCb0cG+y4l5rVaXpMgvL0VuQahPVvTMs577QPhJGb4iDONw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-f9fNXp+yROAAC49aqAeSXMFcoqNlwIsmO5Spsp2ifdFb7XWSnD1EodoCC7xIjjswMvYKnHqfQbr6dP297kN2uw==} cpu: [arm64] os: [linux] @@ -1388,8 +1409,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-odDjO2UtEEMAzwmLHEOKylJjQa+em1REAO9H19PA+O+lPu6evVbre5bqu8qCjEtHG1Q034LpZR86imCP2arb/w==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-08FSjitC8i7WWBI1DXacfhKZZ/TzjDg5uWi53aeppVWc2oT/x0TdlNVam9coU1Xs4ra6/pMe7wGroYWh/j4Lsg==} cpu: [arm64] os: [linux] @@ -1398,8 +1419,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-Ty2T67t2Oj1lg417ATRENxdk8Jkkksc/YQdCJyvkGqteHe60pSU2GGP/tLWGB+I0Ox+u387bzU/SmfmrHZk9aw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-NqoANlbIhYAR8ZnF8v1d8Kw8tsd0ObpVEqNxhELqcV5HKXTtlN9uwMNWWH2G953Yj3sqTdQZWVenwr7e/YchgA==} cpu: [x64] os: [linux] @@ -1408,8 +1429,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-Fm1TxyeVE+gy74HM26CwbEOUndIoWAMgWkVDxYBD64tayvp5JvltpGHaqCg6x5i+X2F5XCDCItqwVlC7/mTxIw==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-ikpkqqurJsC1ijpY7vRP+qrg+7zP0JbpoMma5PyptfGeK7MQ0hhMUNr/NzMMrI11KJjkpRYJEyJ880pFknj0tQ==} cpu: [x64] os: [linux] @@ -1418,8 +1439,8 @@ packages: engines: {node: '>=14.21.3'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-AEZzTyGerfkffXmtv7kFJbHWkryNeolk0Br+yhH1wZyN6Tt6aebqICDL8KNRO2iExoEWzyYS6dPxh0QmvNTfUQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-IwMWmxkI/I60iC6M7kIhyv7X1nx61JaaeseNHARXmU3ds0d0+Sck6YuJQH8o8I3AUzWGhltOcnUHwX97qG+KgA==} engines: {node: '>=14.21.3'} cpu: [wasm32] @@ -1428,8 +1449,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-0lskDFKQwf5PMjl17qHAroU6oVU0Zn8NbAH/PdM9QB1emOzyFDGa20d4kESGeo3Uq7xOKXcTORJV/JwKIBORqw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-mgHMApQ9Ygfd70I4tmlENrdf6kot/T1UTA//Z9R3/xbXiPXwVjdw/BnTe+7AXG9t0QHXsocNx/47dj48BDuqOQ==} cpu: [arm64] os: [win32] @@ -1438,8 +1459,8 @@ packages: cpu: [ia32] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-DfG1S0zGKnUfr95cNCmR4YPiZ/moS7Tob5eV+9r5JGeHZVWFHWwvJdR0jArj6Ty0LbBFDTVVB3iAvqRSji+l0Q==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-pvv3FLLx2Mw2BL+YSAJeE+DNDjpRgk7oCsqf28e3sr7+zfv+VnOMxHHkJTjFzl3R8BA58OMG3C4J7Fv1SVkqbQ==} cpu: [ia32] os: [win32] @@ -1448,8 +1469,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.151352b': - resolution: {integrity: sha512-5HZEtc8U2I1O903hXBynWtWaf+qzAFj66h5B7gOtVcvqIk+lKRVSupA85OdIvR7emrsYU25ikpfiU5Jhg9kTbQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.852c603': + resolution: {integrity: sha512-4gv06TqlMp3IArfyznTOWopMY1ZBZLkE4QZKY+BnxPh8NuDngXrBoQeOauW6w0ZN/8cuTYqX03N+3Hu7t3dNGw==} cpu: [x64] os: [win32] @@ -1821,8 +1842,8 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@vitest/eslint-plugin@1.1.43': - resolution: {integrity: sha512-OLoUMO67Yg+kr7E6SjF5+Qvl2f6uNJ7ImQYnXT8WgnPiZE41ZQBsnzn70jehXrhFVadphHs2smk+yl0TFKLV5Q==} + '@vitest/eslint-plugin@1.1.44': + resolution: {integrity: sha512-m4XeohMT+Dj2RZfxnbiFR+Cv5dEC0H7C6TlxRQT7GK2556solm99kxgzJp/trKrZvanZcOFyw7aABykUTfWyrg==} peerDependencies: '@typescript-eslint/utils': '>= 8.24.0' eslint: '>= 8.57.0' @@ -1951,6 +1972,10 @@ packages: '@vueuse/shared@12.8.2': resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2001,8 +2026,8 @@ packages: args-tokenizer@0.3.0: resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} - args-tokens@0.17.0: - resolution: {integrity: sha512-NRpp00rqKOKCBadQYbz2XldBvX2watxVl9EJzPCvVgzPkTLNvtZxQZZ6/4lUAPK13ej0M64syQY190VPfxM60g==} + args-tokens@0.17.1: + resolution: {integrity: sha512-kWceoEa1zXbcBvgy+BT1ddTLyB7B51u32EhOK/ZMY324nxmQAm767HD+g+9avBEPVmoDjWIYLvsSCQqtbcph/g==} engines: {node: '>= 20'} array-buffer-byte-length@1.0.2: @@ -2057,6 +2082,10 @@ packages: birpc@2.3.0: resolution: {integrity: sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==} + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -2096,6 +2125,10 @@ packages: '@75lb/nature': optional: true + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + c12@3.0.3: resolution: {integrity: sha512-uC3MacKBb0Z15o5QWCHvHWj5Zv34pGQj9P+iXKSpTuSGFS0KKhUWf4t9AJ+gWjYOdmWCPEGpEzm8sS0iqbpo1w==} peerDependencies: @@ -2185,10 +2218,6 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -2223,6 +2252,22 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + copy-anything@3.0.5: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} @@ -2230,6 +2275,10 @@ packages: core-js-compat@3.41.0: resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -2285,9 +2334,6 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2299,10 +2345,14 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - deno@2.2.12: - resolution: {integrity: sha512-+uvh18hg2HxVrDNDNcplS6GKFjLwqMBqjm2dR6usyQVwgrZEOPlSwdEpm8uYo8RkX9srrDLW45W5trsikmShsw==} + deno@2.3.1: + resolution: {integrity: sha512-ZkXW3Th3BvfhSz2XjVdlFIQby8+jimiG1NdEOa5dadxMMNCPlvSgMzTwhFgFQIal7w12F5QQSf82i2ruHq0n6w==} hasBin: true + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} @@ -2343,8 +2393,8 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - easy-table@1.2.0: - resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} electron-to-chromium@1.5.139: resolution: {integrity: sha512-GGnRYOTdN5LYpwbIr0rwP/ZHOQSvAF6TG0LSzp28uCBb9JiXHJGmaaKw29qjNJc5bGnnp6kXJqRnGMQoELwi5w==} @@ -2362,6 +2412,10 @@ packages: resolution: {integrity: sha512-qtKgI1Mv8rTacvpaTkh28HM2Lbf+IOjXb7rhpt/42kZxRm8TBb/IVlo5iL2ztT19kc/EHAFN0fZ641avlXAgdg==} engines: {node: '>=16'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -2419,6 +2473,9 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -2553,8 +2610,8 @@ packages: peerDependencies: eslint: '>=8.0.0' - eslint-plugin-vue@10.0.1: - resolution: {integrity: sha512-A5dRYc3eQ5i2rJFBW8J6F69ur/H7YfYg+5SCg6v829FU0BhM4fUTrRVR2d4MdZgzw0ioJEk6otYHEAnoGFqO4A==} + eslint-plugin-vue@10.1.0: + resolution: {integrity: sha512-/VTiJ1eSfNLw6lvG9ENySbGmcVvz6wZ9nA7ZqXlLBY2RkaF15iViYKxglWiIch12KiLAj0j1iXPYU6W4wTROFA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2582,8 +2639,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.25.1: - resolution: {integrity: sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==} + eslint@9.26.0: + resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2627,9 +2684,21 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventsource-parser@3.0.1: + resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.6: + resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==} + engines: {node: '>=18.0.0'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -2638,6 +2707,16 @@ packages: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + exsolve@1.0.5: resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} @@ -2687,6 +2766,10 @@ packages: resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} engines: {node: '>=14.16'} + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + find-up-simple@1.0.1: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} @@ -2713,6 +2796,14 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2845,10 +2936,18 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -2869,10 +2968,17 @@ packages: resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} engines: {node: '>=18'} + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -2960,6 +3066,9 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -3086,8 +3195,8 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - knip@5.50.5: - resolution: {integrity: sha512-I3mfebuG5x8i/mJJA41xjnmHMbLw75ymbDxlS7HMP+4CjY+jXEDSJyP3A2xmI5JF5/o47Fr8D7Pq3BVT0/nQPw==} + knip@5.53.0: + resolution: {integrity: sha512-z8tTV59Rkwd/FRaSikKUIyLx9YY846muUJtmF+nM7e7f63LGyjqnSSsGBfE9RorqNanVqXvTjosGYkfKCmV7Nw==} engines: {node: '>=18.18.0'} hasBin: true peerDependencies: @@ -3274,6 +3383,14 @@ packages: mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3379,6 +3496,14 @@ packages: resolution: {integrity: sha512-H/E3J6t+DQs/F2YgfDhxUVZz/dF8JXPPKTLHL/yHCcLZLtCXJDUaqvhJXQwqOVBvbyNn4T0WjLpIHd7PAw7fBA==} hasBin: true + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -3434,6 +3559,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + node-fetch-native@0.1.8: resolution: {integrity: sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==} @@ -3463,6 +3592,10 @@ packages: engines: {node: ^14.16.0 || >=16.10.0} hasBin: true + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -3494,6 +3627,10 @@ packages: resolution: {integrity: sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==} deprecated: Package renamed to https://github.com/unjs/ofetch + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3530,8 +3667,8 @@ packages: resolution: {integrity: sha512-b4fN/7l+/frPZ7/Z3XYcjvgFXfctYiOKNP0cYFDUOZR4P1NbrpfYlLVAXiCAE66kLo7um1TS/JFCSl1JbUsb9g==} engines: {node: '>=14.0.0'} - oxc-transform@0.66.0: - resolution: {integrity: sha512-vfs0oVJAAgX8GrZ5jO1sQp29c4HYSZ4MTtievyqawSeNpqF0yj69tpAwpDZ+MxYt3dqZ8lrGh9Ji80YlG0hpoA==} + oxc-transform@0.67.0: + resolution: {integrity: sha512-QXwmpLfNrXZoHgIjEtDEf6lhwmvHouNtstNgg/UveczVIjo8VSzd5h25Ea96PoX9KzReJUY/qYa4QSNkJpZGfA==} engines: {node: '>=14.0.0'} p-limit@3.1.0: @@ -3556,9 +3693,9 @@ packages: resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -3575,6 +3712,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -3601,6 +3742,10 @@ packages: engines: {node: '>=0.10'} hasBin: true + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + engines: {node: '>=16.20.0'} + pkg-pr-new@0.0.43: resolution: {integrity: sha512-BxadQyJbbt7BtInyg82I73ztPOftPmDF1ttpTiJ1FpCp4p3zt5sXvDLm3V1GA8ukxa8MSvsI1+BJmsR54FLBpg==} hasBin: true @@ -3639,13 +3784,13 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-ms@9.2.0: - resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} - engines: {node: '>=18'} - property-information@7.0.0: resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + publint@0.3.12: resolution: {integrity: sha512-1w3MMtL9iotBjm1mmXtG3Nk06wnq9UhGNRpQ2j6n1Zq7YAD6gnxMMZMIxlRPAydVjVbjSm+n0lhwqsD1m4LD5w==} engines: {node: '>=18'} @@ -3659,6 +3804,10 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + quansync@0.2.10: resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} @@ -3677,6 +3826,14 @@ packages: resolution: {integrity: sha512-kLjThirJMkWKutUKbZ8ViqFc09tDQhlbQo2MNuVeLWbRauqYP96Sm6nzlQ24F0HFjUNZ4i9+AgldJ9H6DZXi7g==} engines: {node: '>=18'} + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} @@ -3764,8 +3921,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rolldown-plugin-dts@0.9.6: - resolution: {integrity: sha512-KmF3AU9rw98TY+T+oXucxkupj19ixN4UBXfDPtZGO70BfL14YWzzQ5XHoHIEhPJ8L/mK/hyt52IUvWiy6fHN/A==} + rolldown-plugin-dts@0.9.11: + resolution: {integrity: sha512-iCIRKmvPLwRV4UKSxhaBo+5wDkvc3+MFiqYYvu7sGLSohzxoDn9WEsjN3y7A6xg3aCuxHh6rlRp8xbX98r1rSg==} engines: {node: '>=20.18.0'} peerDependencies: rolldown: ^1.0.0-beta.7 @@ -3783,11 +3940,11 @@ packages: '@oxc-project/runtime': optional: true - rolldown@1.0.0-beta.8-commit.151352b: - resolution: {integrity: sha512-TCb6GVaFBk4wB0LERofFDxTO5X1/Sgahr7Yn5UA9XjuFtCwL1CyEhUHX5lUIstcMxjbkLjn2z4TAGwisr6Blvw==} + rolldown@1.0.0-beta.8-commit.852c603: + resolution: {integrity: sha512-5sq8IPiJ8q/IlL084zf8fPhflsdNrKE7gwXma7m820u8oQtkAEmhb8cmHw6jztlidgOe3hpUIm55HevPmVRelQ==} hasBin: true peerDependencies: - '@oxc-project/runtime': 0.66.0 + '@oxc-project/runtime': 0.67.0 peerDependenciesMeta: '@oxc-project/runtime': optional: true @@ -3804,6 +3961,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -3815,6 +3976,9 @@ packages: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-push-apply@1.0.0: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} @@ -3823,6 +3987,9 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + scslre@0.3.0: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} @@ -3847,6 +4014,14 @@ packages: engines: {node: '>=10'} hasBin: true + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -3859,6 +4034,9 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -3941,6 +4119,10 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} @@ -4055,6 +4237,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + tokenx@0.4.1: resolution: {integrity: sha512-LCMniis0WsHel07xh3K9OIt5c9Xla1awtOoWBmUHZBQR7pvTvgGFuYpLiCZWohXPC1YuZORnN0+fCVYI/ie8Jg==} @@ -4073,8 +4259,8 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsdown@0.10.0: - resolution: {integrity: sha512-xz995k/78OrbU3hXpADxe/mCXAXBwOJ5lbb4t+C0K11IHfzlW5jHZdO/qvW8N82QR1DZKUk5V0oeu0gTcGLxjQ==} + tsdown@0.10.2: + resolution: {integrity: sha512-MhauwcNNVMeW3TTvpADDVPoAC3kfBfwPru3gtQ5pbVvGIF399VtbH3szUuXmw56P+DDlYjtQd0gKGJ8K5xRayQ==} engines: {node: '>=18.0.0'} hasBin: true peerDependencies: @@ -4119,6 +4305,10 @@ packages: resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==} engines: {node: '>=16'} + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -4146,8 +4336,8 @@ packages: peerDependencies: typedoc-plugin-markdown: '>=4.4.0' - typedoc@0.28.3: - resolution: {integrity: sha512-5svOCTfXvVSh6zbZKSQluZhR8yN2tKpTeHZxlmWpE6N5vc3R8k/jhg9nnD6n5tN9/ObuQTojkONrOxFdUFUG9w==} + typedoc@0.28.4: + resolution: {integrity: sha512-xKvKpIywE1rnqqLgjkoq0F3wOqYaKO9nV6YkkSat6IxOWacUCc/7Es0hR3OPmkIqkPoEn7U3x+sYdG72rstZQA==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: @@ -4223,6 +4413,10 @@ packages: universal-user-agent@6.0.1: resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + unplugin-isolated-decl@0.13.7: resolution: {integrity: sha512-jVA9RqJsrvDF+IZsWDucpi9GleQMrfLfPYPFrGlDHCwbQ8uH7tg5slS85SJixMHks0deChKJ5QdJo4gXw/nmtA==} engines: {node: '>=18.12.0'} @@ -4281,6 +4475,10 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -4366,8 +4564,8 @@ packages: vitepress-plugin-group-icons@1.5.2: resolution: {integrity: sha512-zen07KxZ83y3eecou4EraaEgwIriwHaB5Q0cHAmS4yO1UZEQvbljTylHPqiJ7LNkV39U8VehfcyquAJXg/26LA==} - vitepress-plugin-llms@1.1.1: - resolution: {integrity: sha512-QuMXQVlGvXOnF2G3Rr/32Jebl9tdy/Gg9p4Rx52YMo+e7tasWW/m6LHwW2kqJQR39bOe/SDO0fEtRXOCCuSbbQ==} + vitepress-plugin-llms@1.1.3: + resolution: {integrity: sha512-7pJbG92hI70KerMc0SViIsKzwQHNz6ftrwfmwaT/z1TyfIH3p0X2sZ+fHmSIYYtrYhGPEpqiUhGfAVLhLX54hQ==} vitepress@1.6.3: resolution: {integrity: sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==} @@ -4423,9 +4621,6 @@ packages: typescript: optional: true - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -4503,6 +4698,11 @@ packages: resolution: {integrity: sha512-RvEsa3W/NCqEBMtnoE09GRVelA3IqRcKaijEiM6CEGsD19qLurf0HjrYMHwOqImOszlLL0ja63DPJeeU4pm7oQ==} engines: {node: '>=20'} + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + zod-validation-error@3.4.0: resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==} engines: {node: '>=18.0.0'} @@ -4640,43 +4840,56 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/generator@7.27.0': + '@babel/generator@7.27.1': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} + '@babel/parser@7.27.0': dependencies: '@babel/types': 7.27.0 + '@babel/parser@7.27.1': + dependencies: + '@babel/types': 7.27.1 + '@babel/types@7.27.0': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@deno/darwin-arm64@2.2.12': + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@deno/darwin-arm64@2.3.1': optional: true - '@deno/darwin-x64@2.2.12': + '@deno/darwin-x64@2.3.1': optional: true - '@deno/linux-arm64-glibc@2.2.12': + '@deno/linux-arm64-glibc@2.3.1': optional: true - '@deno/linux-x64-glibc@2.2.12': + '@deno/linux-x64-glibc@2.3.1': optional: true - '@deno/win32-arm64@2.2.12': + '@deno/win32-arm64@2.3.1': optional: true - '@deno/win32-x64@2.2.12': + '@deno/win32-x64@2.3.1': optional: true '@docsearch/css@3.8.2': {} @@ -4872,15 +5085,15 @@ snapshots: '@esbuild/win32-x64@0.25.2': optional: true - '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.25.1(jiti@2.4.2))': + '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.26.0(jiti@2.4.2))': dependencies: escape-string-regexp: 4.0.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) ignore: 5.3.2 - '@eslint-community/eslint-utils@4.6.1(eslint@9.25.1(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.6.1(eslint@9.26.0(jiti@2.4.2))': dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -4919,7 +5132,7 @@ snapshots: '@eslint/js@9.25.0': {} - '@eslint/js@9.25.1': {} + '@eslint/js@9.26.0': {} '@eslint/markdown@6.4.0': dependencies: @@ -5031,33 +5244,33 @@ snapshots: string-argv: 0.3.2 type-detect: 4.1.0 - '@kazupon/eslint-config@0.29.0(d6c1aae95f0a5d8164500cd7d1be7474)': + '@kazupon/eslint-config@0.29.0(0efaef002bf7436f1f98044a6c5f69a3)': dependencies: - '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.26.0(jiti@2.4.2)) '@eslint/js': 9.25.0 - '@kazupon/eslint-plugin': 0.2.2(eslint@9.25.1(jiti@2.4.2)) + '@kazupon/eslint-plugin': 0.2.2(eslint@9.26.0(jiti@2.4.2)) '@kazupon/jts-utils': 0.6.0(@vue/reactivity@3.5.13)(publint@0.3.12)(typescript@5.8.3) - '@stylistic/eslint-plugin': 4.2.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.25.1(jiti@2.4.2) + '@stylistic/eslint-plugin': 4.2.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) eslint-flat-config-utils: 2.0.1 - eslint-merge-processors: 2.0.0(eslint@9.25.1(jiti@2.4.2)) + eslint-merge-processors: 2.0.0(eslint@9.26.0(jiti@2.4.2)) globals: 16.0.0 optionalDependencies: '@eslint/markdown': 6.4.0 - '@vitest/eslint-plugin': 1.1.43(@typescript-eslint/utils@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)) - eslint-config-prettier: 10.1.2(eslint@9.25.1(jiti@2.4.2)) - eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import@2.31.0)(eslint@9.25.1(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.25.1(jiti@2.4.2)) - eslint-plugin-jsonc: 2.20.0(eslint@9.25.1(jiti@2.4.2)) - eslint-plugin-module-interop: 0.3.1(eslint@9.25.1(jiti@2.4.2)) - eslint-plugin-promise: 7.2.1(eslint@9.25.1(jiti@2.4.2)) - eslint-plugin-regexp: 2.7.0(eslint@9.25.1(jiti@2.4.2)) - eslint-plugin-unicorn: 58.0.0(eslint@9.25.1(jiti@2.4.2)) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2)) - eslint-plugin-vue: 10.0.1(eslint@9.25.1(jiti@2.4.2))(vue-eslint-parser@9.4.3(eslint@9.25.1(jiti@2.4.2))) - eslint-plugin-vue-composable: 1.0.0(eslint@9.25.1(jiti@2.4.2)) - eslint-plugin-yml: 1.18.0(eslint@9.25.1(jiti@2.4.2)) - typescript-eslint: 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) + '@vitest/eslint-plugin': 1.1.44(@typescript-eslint/utils@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1)) + eslint-config-prettier: 10.1.2(eslint@9.26.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-jsonc: 2.20.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-module-interop: 0.3.1(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-promise: 7.2.1(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-regexp: 2.7.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-unicorn: 58.0.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-vue: 10.1.0(eslint@9.26.0(jiti@2.4.2))(vue-eslint-parser@9.4.3(eslint@9.26.0(jiti@2.4.2))) + eslint-plugin-vue-composable: 1.0.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-yml: 1.18.0(eslint@9.26.0(jiti@2.4.2)) + typescript-eslint: 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - '@oxc-project/runtime' - '@swc/core' @@ -5067,11 +5280,11 @@ snapshots: - typescript - unplugin-unused - '@kazupon/eslint-plugin@0.2.2(eslint@9.25.1(jiti@2.4.2))': + '@kazupon/eslint-plugin@0.2.2(eslint@9.26.0(jiti@2.4.2))': dependencies: '@es-joy/jsdoccomment': 0.50.0 '@eslint/core': 0.13.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) '@kazupon/jts-utils@0.6.0(@vue/reactivity@3.5.13)(publint@0.3.12)(typescript@5.8.3)': dependencies: @@ -5088,6 +5301,21 @@ snapshots: '@kazupon/prettier-config@0.1.1': {} + '@modelcontextprotocol/sdk@1.11.0': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.6 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.24.3 + zod-to-json-schema: 3.24.5(zod@3.24.3) + transitivePeerDependencies: + - supports-color + '@napi-rs/wasm-runtime@0.2.9': dependencies: '@emnapi/core': 1.4.3 @@ -5215,7 +5443,7 @@ snapshots: '@oxc-project/types@0.64.0': {} - '@oxc-project/types@0.66.0': {} + '@oxc-project/types@0.67.0': {} '@oxc-resolver/binding-darwin-arm64@5.3.0': optional: true @@ -5302,43 +5530,43 @@ snapshots: '@oxc-transform/binding-darwin-arm64@0.64.0': optional: true - '@oxc-transform/binding-darwin-arm64@0.66.0': + '@oxc-transform/binding-darwin-arm64@0.67.0': optional: true '@oxc-transform/binding-darwin-x64@0.64.0': optional: true - '@oxc-transform/binding-darwin-x64@0.66.0': + '@oxc-transform/binding-darwin-x64@0.67.0': optional: true '@oxc-transform/binding-linux-arm-gnueabihf@0.64.0': optional: true - '@oxc-transform/binding-linux-arm-gnueabihf@0.66.0': + '@oxc-transform/binding-linux-arm-gnueabihf@0.67.0': optional: true '@oxc-transform/binding-linux-arm64-gnu@0.64.0': optional: true - '@oxc-transform/binding-linux-arm64-gnu@0.66.0': + '@oxc-transform/binding-linux-arm64-gnu@0.67.0': optional: true '@oxc-transform/binding-linux-arm64-musl@0.64.0': optional: true - '@oxc-transform/binding-linux-arm64-musl@0.66.0': + '@oxc-transform/binding-linux-arm64-musl@0.67.0': optional: true '@oxc-transform/binding-linux-x64-gnu@0.64.0': optional: true - '@oxc-transform/binding-linux-x64-gnu@0.66.0': + '@oxc-transform/binding-linux-x64-gnu@0.67.0': optional: true '@oxc-transform/binding-linux-x64-musl@0.64.0': optional: true - '@oxc-transform/binding-linux-x64-musl@0.66.0': + '@oxc-transform/binding-linux-x64-musl@0.67.0': optional: true '@oxc-transform/binding-wasm32-wasi@0.64.0': @@ -5346,7 +5574,7 @@ snapshots: '@napi-rs/wasm-runtime': 0.2.9 optional: true - '@oxc-transform/binding-wasm32-wasi@0.66.0': + '@oxc-transform/binding-wasm32-wasi@0.67.0': dependencies: '@napi-rs/wasm-runtime': 0.2.9 optional: true @@ -5354,13 +5582,13 @@ snapshots: '@oxc-transform/binding-win32-arm64-msvc@0.64.0': optional: true - '@oxc-transform/binding-win32-arm64-msvc@0.66.0': + '@oxc-transform/binding-win32-arm64-msvc@0.67.0': optional: true '@oxc-transform/binding-win32-x64-msvc@0.64.0': optional: true - '@oxc-transform/binding-win32-x64-msvc@0.66.0': + '@oxc-transform/binding-win32-x64-msvc@0.67.0': optional: true '@pkgr/core@0.2.4': {} @@ -5374,49 +5602,49 @@ snapshots: '@rolldown/binding-darwin-arm64@1.0.0-beta.7': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-darwin-arm64@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.7': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-darwin-x64@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.7': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-freebsd-x64@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.7': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.7': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.7': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.7': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.7': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-beta.7': @@ -5424,7 +5652,7 @@ snapshots: '@napi-rs/wasm-runtime': 0.2.9 optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.8-commit.852c603': dependencies: '@napi-rs/wasm-runtime': 0.2.9 optional: true @@ -5432,19 +5660,19 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.7': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.7': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8-commit.852c603': optional: true '@rolldown/binding-win32-x64-msvc@1.0.0-beta.7': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.151352b': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.8-commit.852c603': optional: true '@rollup/rollup-android-arm-eabi@4.40.0': @@ -5567,10 +5795,10 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@stylistic/eslint-plugin@4.2.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3)': + '@stylistic/eslint-plugin@4.2.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.30.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.25.1(jiti@2.4.2) + '@typescript-eslint/utils': 8.30.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) eslint-visitor-keys: 4.2.0 espree: 10.3.0 estraverse: 5.3.0 @@ -5632,15 +5860,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/type-utils': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.31.1 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -5649,14 +5877,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.31.1 '@typescript-eslint/types': 8.31.1 '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.31.1 debug: 4.4.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -5671,12 +5899,12 @@ snapshots: '@typescript-eslint/types': 8.31.1 '@typescript-eslint/visitor-keys': 8.31.1 - '@typescript-eslint/type-utils@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -5714,24 +5942,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.30.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.30.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.30.1 '@typescript-eslint/types': 8.30.1 '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.31.1 '@typescript-eslint/types': 8.31.1 '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -5810,10 +6038,10 @@ snapshots: vite: 5.4.18(@types/node@22.15.3)(lightningcss@1.29.3) vue: 3.5.13(typescript@5.8.3) - '@vitest/eslint-plugin@1.1.43(@typescript-eslint/utils@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1))': + '@vitest/eslint-plugin@1.1.44(@typescript-eslint/utils@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1))': dependencies: - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.25.1(jiti@2.4.2) + '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) optionalDependencies: typescript: 5.8.3 vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(lightningcss@1.29.3)(tsx@4.19.3)(yaml@2.7.1) @@ -5957,6 +6185,11 @@ snapshots: transitivePeerDependencies: - typescript + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -6010,7 +6243,7 @@ snapshots: args-tokenizer@0.3.0: {} - args-tokens@0.17.0: {} + args-tokens@0.17.1: {} array-buffer-byte-length@1.0.2: dependencies: @@ -6064,7 +6297,7 @@ snapshots: ast-kit@1.4.3: dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 pathe: 2.0.3 async-function@1.0.0: {} @@ -6081,6 +6314,20 @@ snapshots: birpc@2.3.0: {} + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.0 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + boolbase@1.0.0: {} brace-expansion@1.1.11: @@ -6127,6 +6374,8 @@ snapshots: byte-size@9.0.1: {} + bytes@3.1.2: {} + c12@3.0.3: dependencies: chokidar: 4.0.3 @@ -6221,9 +6470,6 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone@1.0.4: - optional: true - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -6246,6 +6492,16 @@ snapshots: consola@3.4.2: {} + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + copy-anything@3.0.5: dependencies: is-what: 4.1.16 @@ -6254,6 +6510,11 @@ snapshots: dependencies: browserslist: 4.24.4 + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -6300,11 +6561,6 @@ snapshots: deep-is@0.1.4: {} - defaults@1.0.4: - dependencies: - clone: 1.0.4 - optional: true - define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -6319,14 +6575,16 @@ snapshots: defu@6.1.4: {} - deno@2.2.12: + deno@2.3.1: optionalDependencies: - '@deno/darwin-arm64': 2.2.12 - '@deno/darwin-x64': 2.2.12 - '@deno/linux-arm64-glibc': 2.2.12 - '@deno/linux-x64-glibc': 2.2.12 - '@deno/win32-arm64': 2.2.12 - '@deno/win32-x64': 2.2.12 + '@deno/darwin-arm64': 2.3.1 + '@deno/darwin-x64': 2.3.1 + '@deno/linux-arm64-glibc': 2.3.1 + '@deno/linux-x64-glibc': 2.3.1 + '@deno/win32-arm64': 2.3.1 + '@deno/win32-x64': 2.3.1 + + depd@2.0.0: {} deprecation@2.3.1: {} @@ -6361,11 +6619,7 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - easy-table@1.2.0: - dependencies: - ansi-regex: 5.0.1 - optionalDependencies: - wcwidth: 1.0.1 + ee-first@1.1.1: {} electron-to-chromium@1.5.139: {} @@ -6377,6 +6631,8 @@ snapshots: empathic@1.0.0: {} + encodeurl@2.0.0: {} + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -6523,20 +6779,22 @@ snapshots: escalade@3.2.0: {} + escape-html@1.0.3: {} + escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.6.5(eslint@9.25.1(jiti@2.4.2)): + eslint-compat-utils@0.6.5(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) semver: 7.7.1 - eslint-config-prettier@10.1.2(eslint@9.25.1(jiti@2.4.2)): + eslint-config-prettier@10.1.2(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) eslint-flat-config-utils@2.0.1: dependencies: @@ -6550,42 +6808,42 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@4.3.4(eslint-plugin-import@2.31.0)(eslint@9.25.1(jiti@2.4.2)): + eslint-import-resolver-typescript@4.3.4(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 4.4.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) get-tsconfig: 4.10.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.13 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.25.1(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-json-compat-utils@0.2.1(eslint@9.25.1(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): + eslint-json-compat-utils@0.2.1(eslint@9.26.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) esquery: 1.6.0 jsonc-eslint-parser: 2.4.0 - eslint-merge-processors@2.0.0(eslint@9.25.1(jiti@2.4.2)): + eslint-merge-processors@2.0.0(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.25.1(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.25.1(jiti@2.4.2) + '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import@2.31.0)(eslint@9.25.1(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import@2.31.0)(eslint@9.26.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -6594,9 +6852,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.25.1(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.4)(eslint@9.26.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -6608,18 +6866,18 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsonc@2.20.0(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-jsonc@2.20.0(eslint@9.26.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) - eslint: 9.25.1(jiti@2.4.2) - eslint-compat-utils: 0.6.5(eslint@9.25.1(jiti@2.4.2)) - eslint-json-compat-utils: 0.2.1(eslint@9.25.1(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0(jiti@2.4.2)) + eslint: 9.26.0(jiti@2.4.2) + eslint-compat-utils: 0.6.5(eslint@9.26.0(jiti@2.4.2)) + eslint-json-compat-utils: 0.2.1(eslint@9.26.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) espree: 10.3.0 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 @@ -6628,38 +6886,38 @@ snapshots: transitivePeerDependencies: - '@eslint/json' - eslint-plugin-module-interop@0.3.1(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-module-interop@0.3.1(eslint@9.26.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0(jiti@2.4.2)) enhanced-resolve: 5.18.1 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) get-tsconfig: 4.10.0 - eslint-plugin-promise@7.2.1(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-promise@7.2.1(eslint@9.26.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) - eslint: 9.25.1(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0(jiti@2.4.2)) + eslint: 9.26.0(jiti@2.4.2) - eslint-plugin-regexp@2.7.0(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-regexp@2.7.0(eslint@9.26.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-unicorn@58.0.0(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-unicorn@58.0.0(eslint@9.26.0(jiti@2.4.2)): dependencies: '@babel/helper-validator-identifier': 7.25.9 - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0(jiti@2.4.2)) '@eslint/plugin-kit': 0.2.8 ci-info: 4.2.0 clean-regexp: 1.0.0 core-js-compat: 3.41.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) esquery: 1.6.0 globals: 16.0.0 indent-string: 5.0.0 @@ -6672,36 +6930,36 @@ snapshots: semver: 7.7.1 strip-indent: 4.0.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-vue-composable@1.0.0(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-vue-composable@1.0.0(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.25.1(jiti@2.4.2) - vue-eslint-parser: 9.4.3(eslint@9.25.1(jiti@2.4.2)) + eslint: 9.26.0(jiti@2.4.2) + vue-eslint-parser: 9.4.3(eslint@9.26.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-vue@10.0.1(eslint@9.25.1(jiti@2.4.2))(vue-eslint-parser@9.4.3(eslint@9.25.1(jiti@2.4.2))): + eslint-plugin-vue@10.1.0(eslint@9.26.0(jiti@2.4.2))(vue-eslint-parser@9.4.3(eslint@9.26.0(jiti@2.4.2))): dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) - eslint: 9.25.1(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0(jiti@2.4.2)) + eslint: 9.26.0(jiti@2.4.2) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 semver: 7.7.1 - vue-eslint-parser: 9.4.3(eslint@9.25.1(jiti@2.4.2)) + vue-eslint-parser: 9.4.3(eslint@9.26.0(jiti@2.4.2)) xml-name-validator: 4.0.0 - eslint-plugin-yml@1.18.0(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-yml@1.18.0(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 4.4.0 escape-string-regexp: 4.0.0 - eslint: 9.25.1(jiti@2.4.2) - eslint-compat-utils: 0.6.5(eslint@9.25.1(jiti@2.4.2)) + eslint: 9.26.0(jiti@2.4.2) + eslint-compat-utils: 0.6.5(eslint@9.26.0(jiti@2.4.2)) natural-compare: 1.4.0 yaml-eslint-parser: 1.3.0 transitivePeerDependencies: @@ -6721,19 +6979,20 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.25.1(jiti@2.4.2): + eslint@9.26.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.1 '@eslint/core': 0.13.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.25.1 + '@eslint/js': 9.26.0 '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 + '@modelcontextprotocol/sdk': 1.11.0 '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -6758,6 +7017,7 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + zod: 3.24.3 optionalDependencies: jiti: 2.4.2 transitivePeerDependencies: @@ -6795,8 +7055,16 @@ snapshots: esutils@2.0.3: {} + etag@1.8.1: {} + eventemitter3@5.0.1: {} + eventsource-parser@3.0.1: {} + + eventsource@3.0.6: + dependencies: + eventsource-parser: 3.0.1 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -6811,6 +7079,42 @@ snapshots: expect-type@1.2.1: {} + express-rate-limit@7.5.0(express@5.1.0): + dependencies: + express: 5.1.0 + + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + exsolve@1.0.5: {} extend-shallow@2.0.1: @@ -6855,6 +7159,17 @@ snapshots: filter-obj@5.1.0: {} + finalhandler@2.1.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + find-up-simple@1.0.1: {} find-up@5.0.0: @@ -6879,6 +7194,10 @@ snapshots: format@0.2.2: {} + forwarded@0.2.0: {} + + fresh@2.0.0: {} + fsevents@2.3.3: optional: true @@ -7025,8 +7344,20 @@ snapshots: html-void-elements@3.0.0: {} + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + human-signals@5.0.0: {} + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + ignore@5.3.2: {} import-fresh@3.3.1: @@ -7040,12 +7371,16 @@ snapshots: index-to-position@1.1.0: {} + inherits@2.0.4: {} + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.1.0 + ipaddr.js@1.9.1: {} + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -7132,6 +7467,8 @@ snapshots: is-plain-obj@4.1.0: {} + is-promise@4.0.0: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -7219,11 +7556,11 @@ snapshots: jsonc-parser@3.3.1: {} - jsr-exports-lint@0.2.0(tsdown@0.10.0(publint@0.3.12)(typescript@5.8.3)): + jsr-exports-lint@0.2.0(tsdown@0.10.2(publint@0.3.12)(typescript@5.8.3)): dependencies: picocolors: 1.1.1 optionalDependencies: - tsdown: 0.10.0(publint@0.3.12)(typescript@5.8.3) + tsdown: 0.10.2(publint@0.3.12)(typescript@5.8.3) jsr@0.13.4: dependencies: @@ -7237,11 +7574,10 @@ snapshots: kind-of@6.0.3: {} - knip@5.50.5(@types/node@22.15.3)(typescript@5.8.3): + knip@5.53.0(@types/node@22.15.3)(typescript@5.8.3): dependencies: '@nodelib/fs.walk': 1.2.8 '@types/node': 22.15.3 - easy-table: 1.2.0 enhanced-resolve: 5.18.1 fast-glob: 3.3.3 jiti: 2.4.2 @@ -7249,7 +7585,6 @@ snapshots: minimist: 1.2.8 picocolors: 1.1.1 picomatch: 4.0.2 - pretty-ms: 9.2.0 smol-toml: 1.3.3 strip-json-comments: 5.0.1 typescript: 5.8.3 @@ -7516,6 +7851,10 @@ snapshots: mdurl@2.0.0: {} + media-typer@1.1.0: {} + + merge-descriptors@2.0.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -7729,6 +8068,12 @@ snapshots: dependencies: yargs: 17.7.2 + mime-db@1.54.0: {} + + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + mimic-fn@4.0.0: {} mimic-function@5.0.1: {} @@ -7770,6 +8115,8 @@ snapshots: natural-compare@1.4.0: {} + negotiator@1.0.0: {} + node-fetch-native@0.1.8: {} node-fetch-native@1.6.6: {} @@ -7800,6 +8147,8 @@ snapshots: pkg-types: 2.1.0 tinyexec: 0.3.2 + object-assign@4.1.1: {} + object-inspect@1.13.4: {} object-keys@1.1.1: {} @@ -7842,6 +8191,10 @@ snapshots: ufo: 0.8.6 undici: 5.29.0 + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -7935,18 +8288,18 @@ snapshots: '@oxc-transform/binding-win32-arm64-msvc': 0.64.0 '@oxc-transform/binding-win32-x64-msvc': 0.64.0 - oxc-transform@0.66.0: + oxc-transform@0.67.0: optionalDependencies: - '@oxc-transform/binding-darwin-arm64': 0.66.0 - '@oxc-transform/binding-darwin-x64': 0.66.0 - '@oxc-transform/binding-linux-arm-gnueabihf': 0.66.0 - '@oxc-transform/binding-linux-arm64-gnu': 0.66.0 - '@oxc-transform/binding-linux-arm64-musl': 0.66.0 - '@oxc-transform/binding-linux-x64-gnu': 0.66.0 - '@oxc-transform/binding-linux-x64-musl': 0.66.0 - '@oxc-transform/binding-wasm32-wasi': 0.66.0 - '@oxc-transform/binding-win32-arm64-msvc': 0.66.0 - '@oxc-transform/binding-win32-x64-msvc': 0.66.0 + '@oxc-transform/binding-darwin-arm64': 0.67.0 + '@oxc-transform/binding-darwin-x64': 0.67.0 + '@oxc-transform/binding-linux-arm-gnueabihf': 0.67.0 + '@oxc-transform/binding-linux-arm64-gnu': 0.67.0 + '@oxc-transform/binding-linux-arm64-musl': 0.67.0 + '@oxc-transform/binding-linux-x64-gnu': 0.67.0 + '@oxc-transform/binding-linux-x64-musl': 0.67.0 + '@oxc-transform/binding-wasm32-wasi': 0.67.0 + '@oxc-transform/binding-win32-arm64-msvc': 0.67.0 + '@oxc-transform/binding-win32-x64-msvc': 0.67.0 p-limit@3.1.0: dependencies: @@ -7972,7 +8325,7 @@ snapshots: index-to-position: 1.1.0 type-fest: 4.40.0 - parse-ms@4.0.0: {} + parseurl@1.3.3: {} path-exists@4.0.0: {} @@ -7982,6 +8335,8 @@ snapshots: path-parse@1.0.7: {} + path-to-regexp@8.2.0: {} + pathe@2.0.3: {} pathval@2.0.0: {} @@ -7996,6 +8351,8 @@ snapshots: pidtree@0.6.0: {} + pkce-challenge@5.0.0: {} + pkg-pr-new@0.0.43: dependencies: '@jsdevtools/ez-spawn': 3.0.4 @@ -8039,12 +8396,13 @@ snapshots: prettier@3.5.3: {} - pretty-ms@9.2.0: - dependencies: - parse-ms: 4.0.0 - property-information@7.0.0: {} + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + publint@0.3.12: dependencies: '@publint/pack': 0.1.2 @@ -8056,6 +8414,10 @@ snapshots: punycode@2.3.1: {} + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + quansync@0.2.10: {} query-registry@3.0.1: @@ -8077,6 +8439,15 @@ snapshots: quick-lru@7.0.1: {} + range-parser@1.2.1: {} + + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + rc9@2.1.2: dependencies: defu: 6.1.4 @@ -8197,17 +8568,17 @@ snapshots: rfdc@1.4.1: {} - rolldown-plugin-dts@0.9.6(rolldown@1.0.0-beta.8-commit.151352b(typescript@5.8.3))(typescript@5.8.3): + rolldown-plugin-dts@0.9.11(rolldown@1.0.0-beta.8-commit.852c603(typescript@5.8.3))(typescript@5.8.3): dependencies: - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 ast-kit: 1.4.3 debug: 4.4.0 dts-resolver: 1.0.1 get-tsconfig: 4.10.0 - oxc-transform: 0.66.0 - rolldown: 1.0.0-beta.8-commit.151352b(typescript@5.8.3) + oxc-transform: 0.67.0 + rolldown: 1.0.0-beta.8-commit.852c603(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -8234,25 +8605,25 @@ snapshots: transitivePeerDependencies: - typescript - rolldown@1.0.0-beta.8-commit.151352b(typescript@5.8.3): + rolldown@1.0.0-beta.8-commit.852c603(typescript@5.8.3): dependencies: - '@oxc-project/types': 0.66.0 + '@oxc-project/types': 0.67.0 '@valibot/to-json-schema': 1.0.0(valibot@1.0.0(typescript@5.8.3)) ansis: 3.17.0 valibot: 1.0.0(typescript@5.8.3) optionalDependencies: - '@rolldown/binding-darwin-arm64': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-darwin-x64': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-freebsd-x64': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.8-commit.151352b - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.8-commit.151352b + '@rolldown/binding-darwin-arm64': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-darwin-x64': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.8-commit.852c603 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.8-commit.852c603 transitivePeerDependencies: - typescript @@ -8290,6 +8661,16 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.40.0 fsevents: 2.3.3 + router@2.2.0: + dependencies: + debug: 4.4.0 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -8306,6 +8687,8 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 + safe-buffer@5.2.1: {} + safe-push-apply@1.0.0: dependencies: es-errors: 1.3.0 @@ -8317,6 +8700,8 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safer-buffer@2.1.2: {} + scslre@0.3.0: dependencies: '@eslint-community/regexpp': 4.12.1 @@ -8336,6 +8721,31 @@ snapshots: semver@7.7.1: {} + send@1.2.0: + dependencies: + debug: 4.4.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -8358,6 +8768,8 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 + setprototypeof@1.2.0: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -8447,6 +8859,8 @@ snapshots: stackback@0.0.2: {} + statuses@2.0.1: {} + std-env@3.9.0: {} string-argv@0.3.2: {} @@ -8553,6 +8967,8 @@ snapshots: dependencies: is-number: 7.0.0 + toidentifier@1.0.1: {} + tokenx@0.4.1: {} trim-lines@3.0.1: {} @@ -8570,7 +8986,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.10.0(publint@0.3.12)(typescript@5.8.3): + tsdown@0.10.2(publint@0.3.12)(typescript@5.8.3): dependencies: ansis: 3.17.0 cac: 6.7.14 @@ -8581,8 +8997,8 @@ snapshots: empathic: 1.0.0 hookable: 5.5.3 lightningcss: 1.29.3 - rolldown: 1.0.0-beta.8-commit.151352b(typescript@5.8.3) - rolldown-plugin-dts: 0.9.6(rolldown@1.0.0-beta.8-commit.151352b(typescript@5.8.3))(typescript@5.8.3) + rolldown: 1.0.0-beta.8-commit.852c603(typescript@5.8.3) + rolldown-plugin-dts: 0.9.11(rolldown@1.0.0-beta.8-commit.852c603(typescript@5.8.3))(typescript@5.8.3) tinyexec: 1.0.1 tinyglobby: 0.2.13 unconfig: 7.3.2 @@ -8635,6 +9051,12 @@ snapshots: type-fest@4.40.0: {} + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -8668,15 +9090,15 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typedoc-plugin-markdown@4.6.3(typedoc@0.28.3(typescript@5.8.3)): + typedoc-plugin-markdown@4.6.3(typedoc@0.28.4(typescript@5.8.3)): dependencies: - typedoc: 0.28.3(typescript@5.8.3) + typedoc: 0.28.4(typescript@5.8.3) - typedoc-vitepress-theme@1.1.2(typedoc-plugin-markdown@4.6.3(typedoc@0.28.3(typescript@5.8.3))): + typedoc-vitepress-theme@1.1.2(typedoc-plugin-markdown@4.6.3(typedoc@0.28.4(typescript@5.8.3))): dependencies: - typedoc-plugin-markdown: 4.6.3(typedoc@0.28.3(typescript@5.8.3)) + typedoc-plugin-markdown: 4.6.3(typedoc@0.28.4(typescript@5.8.3)) - typedoc@0.28.3(typescript@5.8.3): + typedoc@0.28.4(typescript@5.8.3): dependencies: '@gerrit0/mini-shiki': 3.2.3 lunr: 2.3.9 @@ -8685,12 +9107,12 @@ snapshots: typescript: 5.8.3 yaml: 2.7.1 - typescript-eslint@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.25.1(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -8775,6 +9197,8 @@ snapshots: universal-user-agent@6.0.1: {} + unpipe@1.0.0: {} + unplugin-isolated-decl@0.13.7(typescript@5.8.3): dependencies: debug: 4.4.0 @@ -8852,6 +9276,8 @@ snapshots: validate-npm-package-name@5.0.1: {} + vary@1.1.2: {} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 @@ -8917,7 +9343,7 @@ snapshots: transitivePeerDependencies: - supports-color - vitepress-plugin-llms@1.1.1: + vitepress-plugin-llms@1.1.3: dependencies: byte-size: 9.0.1 gray-matter: 4.0.3 @@ -9022,10 +9448,10 @@ snapshots: - tsx - yaml - vue-eslint-parser@9.4.3(eslint@9.25.1(jiti@2.4.2)): + vue-eslint-parser@9.4.3(eslint@9.26.0(jiti@2.4.2)): dependencies: debug: 4.4.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -9045,11 +9471,6 @@ snapshots: optionalDependencies: typescript: 5.8.3 - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - optional: true - webpack-virtual-modules@0.6.2: {} which-boxed-primitive@1.1.1: @@ -9147,6 +9568,10 @@ snapshots: dependencies: zod: 3.24.3 + zod-to-json-schema@3.24.5(zod@3.24.3): + dependencies: + zod: 3.24.3 + zod-validation-error@3.4.0(zod@3.24.3): dependencies: zod: 3.24.3 diff --git a/src/__snapshots__/cli.test.ts.snap b/src/__snapshots__/cli.test.ts.snap index a2a063ea..53f628ea 100644 --- a/src/__snapshots__/cli.test.ts.snap +++ b/src/__snapshots__/cli.test.ts.snap @@ -1,14 +1,14 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`auto generate usage > inline function > USAGE: - COMMAND + COMMAND OPTIONS: -h, --help Display this help message -v, --version Display this version 1`] = ` "USAGE: - COMMAND + COMMAND OPTIONS: -h, --help Display this help message @@ -18,7 +18,7 @@ OPTIONS: exports[`auto generate usage > inline function 1`] = ` "USAGE: - COMMAND + COMMAND OPTIONS: -h, --help Display this help message @@ -30,7 +30,7 @@ exports[`auto generate usage > locale resource not found 1`] = ` "Modern CLI tool (gunshi v0.0.0) USAGE: - gunshi + gunshi OPTIONS: -f, --foo [string] The foo option @@ -46,7 +46,7 @@ EXAMPLES: `; exports[`auto generate usage > loosely entry command > USAGE: - COMMAND + COMMAND OPTIONS: -f, --foo @@ -54,7 +54,7 @@ OPTIONS: -v, --version Display this version 1`] = ` "USAGE: - COMMAND + COMMAND OPTIONS: -f, --foo @@ -65,7 +65,7 @@ OPTIONS: exports[`auto generate usage > loosely entry command 1`] = ` "USAGE: - COMMAND + COMMAND OPTIONS: -f, --foo @@ -87,7 +87,7 @@ OPTIONS: exports[`auto generate usage > loosely sub commands > main 1`] = ` "USAGE: - COMMAND + COMMAND OPTIONS: -f, --foo @@ -98,7 +98,7 @@ OPTIONS: exports[`auto generate usage > loosely sub commands 1`] = ` "USAGE: - COMMAND + COMMAND OPTIONS: -f, --foo @@ -117,7 +117,7 @@ OPTIONS: exports[`auto generate usage > strictly entry command > Modern CLI tool (gunshi v0.0.0) USAGE: - gunshi + gunshi OPTIONS: -f, --foo [string] The foo option @@ -133,7 +133,7 @@ EXAMPLES: "Modern CLI tool (gunshi v0.0.0) USAGE: - gunshi + gunshi OPTIONS: -f, --foo [string] The foo option @@ -169,7 +169,7 @@ EXAMPLES: exports[`auto generate usage > strictly sub commands > main 1`] = ` "Modern CLI tool (gunshi v0.0.0) 使い方: - gunshi [command1] <オプション> + gunshi [command1] <オプション> gunshi <コマンド> コマンド: @@ -197,7 +197,7 @@ exports[`auto generate usage > strictly sub commands 1`] = ` "Modern CLI tool (gunshi v0.0.0) 使い方: - gunshi [command1] <オプション> + gunshi [command1] <オプション> gunshi <コマンド> コマンド: @@ -248,16 +248,16 @@ Options: --help [boolean] Display this help message --version [boolean] Display this version -****************************** -* Option '--bar' is required * -******************************" +***************************************** +* Optional argument '--bar' is required * +*****************************************" `; exports[`edge cases > 'description' option 1`] = ` "Modern CLI tool (gunshi v0.0.0) USAGE: - gunshi + gunshi OPTIONS: -d, --description This is a description of description option @@ -269,7 +269,7 @@ OPTIONS: exports[`usageSilent 1`] = ` "Modern CLI tool (gunshi v0.0.0) USAGE: - gunshi + gunshi OPTIONS: -f, --foo this is foo option diff --git a/src/__snapshots__/generator.test.ts.snap b/src/__snapshots__/generator.test.ts.snap index e16e3a7b..a18dba9b 100644 --- a/src/__snapshots__/generator.test.ts.snap +++ b/src/__snapshots__/generator.test.ts.snap @@ -3,7 +3,7 @@ exports[`single 1`] = ` "This is a generator (generator v1.0.0) USAGE: - generator + generator OPTIONS: -c, --catalog Display the catalog only (default: false) diff --git a/src/__snapshots__/renderer.test.ts.snap b/src/__snapshots__/renderer.test.ts.snap index 4304cf1b..0cd979c9 100644 --- a/src/__snapshots__/renderer.test.ts.snap +++ b/src/__snapshots__/renderer.test.ts.snap @@ -40,21 +40,23 @@ EXAMPLES: " `; -exports[`renderUsage > no examples 1`] = ` +exports[`renderUsage > mixed positionals and optionals 1`] = ` "A test command USAGE: - cmd1 test + cmd1 test + +ARGUMENTS: + foo The foo argument + baz The bar argument OPTIONS: - -f, --foo The foo option - --bar The bar option - -b, --baz [baz] The baz option (default: 42) - -q, --qux The qux option + -b, --bar The bar option + --qux The qux option (choices: a | b | c) " `; -exports[`renderUsage > no options 1`] = ` +exports[`renderUsage > no arguments 1`] = ` "A test command USAGE: @@ -68,7 +70,7 @@ EXAMPLES: " `; -exports[`renderUsage > no required options 1`] = ` +exports[`renderUsage > no examples 1`] = ` "A test command USAGE: @@ -78,12 +80,38 @@ OPTIONS: -f, --foo The foo option --bar The bar option -b, --baz [baz] The baz option (default: 42) + -q, --qux The qux option +" +`; + +exports[`renderUsage > no required on optional arguments 1`] = ` +"A test command + +USAGE: + cmd1 test + +OPTIONS: + -f, --foo The foo option + --bar The bar option + -b, --baz [baz] The baz option (default: 42) +" +`; + +exports[`renderUsage > positional arguments 1`] = ` +"A test command + +USAGE: + cmd1 test + +ARGUMENTS: + foo The foo argument + bar The bar argument " `; exports[`renderUsage > sub commands 1`] = ` "USAGE: - cmd1 [show] + cmd1 [show] cmd1 COMMANDS: @@ -96,6 +124,9 @@ For more info, run any command with the \`--help\` flag: cmd1 command1 --help cmd1 command2 --help +ARGUMENTS: + positional1 The positional argument 1 + OPTIONS: -f, --foo The foo option --bar The bar option @@ -112,6 +143,6 @@ EXAMPLES: `; exports[`renderValidationErrors 1`] = ` -"Option '--dependency' or '-d' is required -Option '--alias' or '-a' is required" +"Optional argument '--dependency' or '-d' is required +Optional argument '--alias' or '-a' is required" `; diff --git a/src/cli.test.ts b/src/cli.test.ts index e3c51726..1705aaa2 100644 --- a/src/cli.test.ts +++ b/src/cli.test.ts @@ -676,7 +676,102 @@ test('enum optional argument', async () => { run: vi.fn() }) const stdout = log() - expect(stdout).toEqual(`Option '--foo' should be chosen from 'enum' ["a", "b", "c"] values`) + expect(stdout).toEqual( + `Optional argument '--foo' should be chosen from 'enum' ["a", "b", "c"] values` + ) +}) + +describe('positional arguments', async () => { + test('basic', async () => { + const utils = await import('./utils.ts') + const log = defineMockLog(utils) + + // success case + const args = { + foo: { + type: 'positional' + }, + bar: { + type: 'positional' + } + } satisfies Args + const mockFn1 = vi.fn() + await cli(['value1', 'value2'], { + args, + run: mockFn1 + }) + expect(mockFn1.mock.calls[0][0].values).toEqual({ foo: 'value1', bar: 'value2' }) + + // failure case + await cli(['value1'], { + args, + run: vi.fn() + }) + const stdout = log() + expect(stdout).toEqual(`Positional argument 'bar' is required`) + }) + + test('sub commands', async () => { + const utils = await import('./utils.ts') + const log = defineMockLog(utils) + const mockFn1 = vi.fn() + const mockFn2 = vi.fn() + + const subCommands = new Map() + const command1 = define({ + name: 'command1', + args: { + foo: { + type: 'positional' + }, + option1: { + type: 'string', + short: 'o' + } + }, + run: mockFn1 + }) + const command2 = define({ + name: 'command2', + args: { + bar: { + type: 'positional' + }, + option2: { + type: 'number', + short: 'o' + } + }, + run: mockFn2 + }) + subCommands.set(command1.name, command1) + subCommands.set(command2.name, command2) + + // success case + await cli( + ['command1', '-o=option1', 'value1'], + { + run: vi.fn() + }, + { + subCommands + } + ) + expect(mockFn1.mock.calls[0][0].values).toEqual({ foo: 'value1', option1: 'option1' }) + + // failure case + await cli( + ['command2', '-o=1'], + { + run: vi.fn() + }, + { + subCommands + } + ) + const stdout = log() + expect(stdout).toEqual(`Positional argument 'bar' is required`) + }) }) describe('edge cases', () => { diff --git a/src/cli.ts b/src/cli.ts index e4b4a48b..8e4a59d9 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -36,7 +36,8 @@ export async function cli( const args = resolveArguments(command.args) const { values, positionals, rest, error } = resolveArgs(args, tokens, { - optionGrouping: true + optionGrouping: true, + skipPositional: resolvedCommandOptions.subCommands!.size > 0 ? 0 : -1 }) const omitted = !subCommand const ctx = await createCommandContext({ diff --git a/src/constants.ts b/src/constants.ts index 88782c3d..738c4106 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -67,6 +67,7 @@ export const COMMAND_BUILTIN_RESOURCE_KEYS = [ 'COMMAND', 'SUBCOMMAND', 'COMMANDS', + 'ARGUMENTS', 'OPTIONS', 'EXAMPLES', 'FORMORE', diff --git a/src/locales/en-US.json b/src/locales/en-US.json index f83b593c..5c8757d6 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -3,6 +3,7 @@ "COMMANDS": "COMMANDS", "SUBCOMMAND": "SUBCOMMAND", "USAGE": "USAGE", + "ARGUMENTS": "ARGUMENTS", "OPTIONS": "OPTIONS", "EXAMPLES": "EXAMPLES", "FORMORE": "For more info, run any command with the `--help` flag:", diff --git a/src/locales/ja-JP.json b/src/locales/ja-JP.json index fa2d3fb4..d08c0a3c 100644 --- a/src/locales/ja-JP.json +++ b/src/locales/ja-JP.json @@ -3,6 +3,7 @@ "COMMANDS": "コマンド", "SUBCOMMAND": "サブコマンド", "USAGE": "使い方", + "ARGUMENTS": "引数", "OPTIONS": "オプション", "EXAMPLES": "例", "FORMORE": "詳細は、コマンドと`--help`フラグを実行してください:", diff --git a/src/renderer.test.ts b/src/renderer.test.ts index d375baf2..6571c028 100644 --- a/src/renderer.test.ts +++ b/src/renderer.test.ts @@ -40,6 +40,10 @@ const SHOW = { description: 'The log option', choices: ['debug', 'info', 'warn', 'error'], default: 'info' + }, + positional1: { + type: 'positional', + description: 'The positional argument 1' } }, name: 'show', @@ -212,7 +216,7 @@ describe('renderUsage', () => { expect(await renderUsage(ctx)).toMatchSnapshot() }) - test('no options', async () => { + test('no arguments', async () => { const command = { name: 'test', description: 'A test command', @@ -240,7 +244,7 @@ describe('renderUsage', () => { expect(await renderUsage(ctx)).toMatchSnapshot() }) - test('no required options', async () => { + test('no required on optional arguments', async () => { const command = { args: { foo: { @@ -282,6 +286,88 @@ describe('renderUsage', () => { expect(await renderUsage(ctx)).toMatchSnapshot() }) + test('positional arguments', async () => { + const command = { + args: { + foo: { + type: 'positional', + description: 'The foo argument' + }, + bar: { + type: 'positional', + description: 'The bar argument' + } + }, + name: 'test', + description: 'A test command', + run: NOOP + } as Command + + const ctx = await createCommandContext({ + args: command.args!, + values: {}, + positionals: [], + rest: [], + argv: [], + tokens: [], // dummy, due to test + omitted: false, + command, + commandOptions: { + cwd: '/path/to/cmd1', + version: '0.0.0', + name: 'cmd1' + } + }) + + expect(await renderUsage(ctx)).toMatchSnapshot() + }) + + test('mixed positionals and optionals', async () => { + const command = { + args: { + foo: { + type: 'positional', + description: 'The foo argument' + }, + bar: { + type: 'string', + short: 'b', + description: 'The bar option' + }, + baz: { + type: 'positional', + description: 'The bar argument' + }, + qux: { + type: 'enum', + description: 'The qux option', + choices: ['a', 'b', 'c'] + } + }, + name: 'test', + description: 'A test command', + run: NOOP + } as Command + + const ctx = await createCommandContext({ + args: command.args!, + values: {}, + positionals: [], + rest: [], + argv: [], + tokens: [], // dummy, due to test + omitted: false, + command, + commandOptions: { + cwd: '/path/to/cmd1', + version: '0.0.0', + name: 'cmd1' + } + }) + + expect(await renderUsage(ctx)).toMatchSnapshot() + }) + test('no examples', async () => { const command = { args: { @@ -423,8 +509,8 @@ test('renderValidationErrors', async () => { // eslint-disable-next-line unicorn/error-message const error = new AggregateError([ - new Error(`Option '--dependency' or '-d' is required`), - new Error(`Option '--alias' or '-a' is required`) + new Error(`Optional argument '--dependency' or '-d' is required`), + new Error(`Optional argument '--alias' or '-a' is required`) ]) await expect(renderValidationErrors(ctx, error)).resolves.toMatchSnapshot() }) diff --git a/src/renderer/usage.ts b/src/renderer/usage.ts index fa7b79c4..f60a493f 100644 --- a/src/renderer/usage.ts +++ b/src/renderer/usage.ts @@ -37,8 +37,13 @@ export async function renderUsage( messages.push(...(await renderCommandsSection(ctx)), '') } + // render positional arguments section + if (hasPositionalArgs(ctx)) { + messages.push(...(await renderPositionalArgsSection(ctx)), '') + } + // render optional arguments section - if (hasOptions(ctx)) { + if (hasOptionalArgs(ctx)) { messages.push(...(await renderOptionalArgsSection(ctx)), '') } @@ -51,6 +56,20 @@ export async function renderUsage( return messages.join('\n') } +/** + * Render the positional arguments section + * @param ctx A {@link CommandContext | command context} + * @returns A rendered arguments section + */ +async function renderPositionalArgsSection( + ctx: Readonly> +): Promise { + const messages: string[] = [] + messages.push(`${ctx.translate(resolveBuiltInKey('ARGUMENTS'))}:`) + messages.push(await generatePositionalArgsUsage(ctx)) + return messages +} + /** * Render the optional arguments section * @param ctx A {@link CommandContext | command context} @@ -94,14 +113,14 @@ async function renderUsageSection( ): Promise { const messages: string[] = [`${ctx.translate(resolveBuiltInKey('USAGE'))}:`] if (ctx.omitted) { - const defaultCommand = `${resolveEntry(ctx)}${(await hasCommands(ctx)) ? ` [${resolveSubCommand(ctx)}]` : ''} ${hasOptions(ctx) ? `<${ctx.translate(resolveBuiltInKey('OPTIONS'))}>` : ''} ` + const defaultCommand = `${resolveEntry(ctx)}${(await hasCommands(ctx)) ? ` [${resolveSubCommand(ctx)}]` : ''} ${[generateOptionsSymbols(ctx), generatePositionalSymbols(ctx)].filter(Boolean).join(' ')}` messages.push(defaultCommand.padStart(ctx.env.leftMargin + defaultCommand.length)) if (await hasCommands(ctx)) { const commandsUsage = `${resolveEntry(ctx)} <${ctx.translate(resolveBuiltInKey('COMMANDS'))}>` messages.push(commandsUsage.padStart(ctx.env.leftMargin + commandsUsage.length)) } } else { - const usageStr = `${resolveEntry(ctx)} ${resolveSubCommand(ctx)} ${generateOptionsSymbols(ctx)}` + const usageStr = `${resolveEntry(ctx)} ${resolveSubCommand(ctx)} ${[generateOptionsSymbols(ctx), generatePositionalSymbols(ctx)].filter(Boolean).join(' ')}` messages.push(usageStr.padStart(ctx.env.leftMargin + usageStr.length)) } return messages @@ -188,12 +207,21 @@ async function hasCommands(ctx: CommandContext): Promise(ctx: CommandContext): boolean { + return !!(ctx.args && Object.values(ctx.args).some(arg => arg.type !== 'positional')) +} + +/** + * Check if the command has positional arguments * @param ctx A {@link CommandContext | command context} * @returns True if the command has options */ -function hasOptions(ctx: CommandContext): boolean { - return !!(ctx.args && Object.keys(ctx.args).length > 0) +function hasPositionalArgs(ctx: CommandContext): boolean { + return !!(ctx.args && Object.values(ctx.args).some(arg => arg.type === 'positional')) } /** @@ -211,7 +239,7 @@ function hasAllDefaultOptions(ctx: CommandContext): boolean { * @returns Options symbols for usage */ function generateOptionsSymbols(ctx: CommandContext): string { - return hasOptions(ctx) + return hasOptionalArgs(ctx) ? hasAllDefaultOptions(ctx) ? `[${ctx.translate(resolveBuiltInKey('OPTIONS'))}]` : `<${ctx.translate(resolveBuiltInKey('OPTIONS'))}>` @@ -233,6 +261,9 @@ function makeShortLongOptionPair(schema: ArgSchema, name: string): string { */ function getOptionalArgsPairs(ctx: CommandContext): Record { return Object.entries(ctx.args).reduce((acc, [name, value]) => { + if (value.type === 'positional') { + return acc + } let key = makeShortLongOptionPair(value, name) if (value.type !== 'boolean') { key = value.default ? `${key} [${name}]` : `${key} <${name}>` @@ -325,3 +356,32 @@ async function generateOptionalArgsUsage( return usages.join('\n') } + +function getPositionalArgs(ctx: CommandContext): [string, ArgSchema][] { + return Object.entries(ctx.args).filter(([_, schema]) => schema.type === 'positional') +} + +async function generatePositionalArgsUsage( + ctx: CommandContext +): Promise { + const positionals = getPositionalArgs(ctx) + const argsMaxLength = Math.max(...positionals.map(([name, _]) => name.length)) + + const usages = await Promise.all( + positionals.map(([name, _]) => { + const desc = ctx.translate(resolveArgKey(name)) + const arg = `${name.padEnd(argsMaxLength + ctx.env.middleMargin)} ${desc}` + return `${arg.padStart(ctx.env.leftMargin + arg.length)}` + }) + ) + + return usages.join('\n') +} + +function generatePositionalSymbols(ctx: CommandContext): string { + return hasPositionalArgs(ctx) + ? `${getPositionalArgs(ctx) + .map(([name, _], __) => `<${name}>`) + .join(' ')}` + : '' +} From 4d59c3a85834c4f8e98b08e3e2727b5b0cd66a72 Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Tue, 6 May 2025 01:06:21 +0900 Subject: [PATCH 2/5] docs: update --- .../essentials/declarative-configuration.md | 82 +++++++++++++++---- 1 file changed, 65 insertions(+), 17 deletions(-) diff --git a/docs/guide/essentials/declarative-configuration.md b/docs/guide/essentials/declarative-configuration.md index c4084c20..46496388 100644 --- a/docs/guide/essentials/declarative-configuration.md +++ b/docs/guide/essentials/declarative-configuration.md @@ -47,6 +47,11 @@ const command = { short: 'n', description: 'Name to greet' }, + // Add a positional argument using 'file' as the key + file: { + type: 'positional', + description: 'Input file to process' + }, greeting: { type: 'string', short: 'g', @@ -75,19 +80,19 @@ const command = { // Command examples examples: `# Examples -$ node index.js --name World +$ node index.js --name World -$ node index.js -n World -g "Hey there" -t 3 +$ node index.js -n World -g "Hey there" -t 3 # Boolean short options can be grouped: -V -b is the same as -Vb -$ node index.js -Vb -n World +$ node index.js -Vb -n World # Using the negatable option -$ node index.js --no-verbose -n World +$ node index.js --no-verbose -n World # Using rest arguments after \`--\` (arguments after \`--\` are not parsed by gunshi) -$ node index.js -n User -- --foo --bar buz -`, +$ node index.js -n User -- --foo --bar buz +`, // Added comma here // Command execution function run: ctx => { @@ -95,7 +100,9 @@ $ node index.js -n User -- --foo --bar buz // - true if -V or --verbose is passed // - false if --no-verbose is passed // - undefined if neither is passed (or default value if set) - const { name = 'World', greeting, times, verbose, banner } = ctx.values // Added banner + + // Access positional argument 'file' via ctx.values.file + const { name = 'World', greeting, times, verbose, banner, file } = ctx.values if (banner) { // Added check for banner @@ -104,9 +111,13 @@ $ node index.js -n User -- --foo --bar buz if (verbose) { console.log('Running in verbose mode...') console.log('Context values:', ctx.values) - console.log('Positional arguments:', ctx.positionals) // Show positionals + console.log('Input file (from positional via ctx.values.file):', file) + console.log('Raw positional array (ctx.positionals):', ctx.positionals) // Still available } + // Process the input file (example placeholder) + console.log(`\nProcessing file: ${file}...`) + // Repeat the greeting the specified number of times for (let i = 0; i < times; i++) { console.log(`${greeting}, ${name}!`) @@ -149,7 +160,39 @@ Each option can have the following properties: - `description`: A description of what the option does - `default`: Default value if the option is not provided -- `required`: Set to `true` if the option is required +- `required`: Set to `true` if the option is required (Note: Positional arguments defined with `type: 'positional'` are implicitly required by the parser). + +#### Positional Arguments + +To define arguments that are identified by their position rather than a name/flag (like `--name`), set their `type` to `'positional'`. The _key_ you use for the argument in the `args` object serves as its name for accessing the value later. + +```js +const command = { + args: { + // ... other options + + // 'source' is the key and the name used to access the value + source: { + type: 'positional', + description: 'The source file path' + }, + + // 'destination' is the key and the name used to access the value + destination: { + type: 'positional', + description: 'The destination file path' + } + // ... potentially more positional arguments + } +} +``` + +- **Implicitly Required**: When you define an argument with `type: 'positional'` in the schema, Gunshi (via `args-tokens`) expects it to be present on the command line. If it's missing, a validation error will occur. They cannot be truly optional like named flags. +- **Order Matters**: Positional arguments are matched based on the order they appear on the command line and the order they are defined in the `args` object. +- **Accessing Values**: The resolved value is accessible via `ctx.values`, using the _key_ you defined in the `args` object (e.g., `ctx.values.source`, `ctx.values.destination`). +- **`ctx.positionals`**: This array still exists and contains the raw string values of positional arguments in the order they were parsed (e.g., `ctx.positionals[0]`, `ctx.positionals[1]`). While available, using `ctx.values.` is generally preferred for clarity and consistency. +- **Descriptions**: The `description` property is used for generating help/usage messages. +- **Type Conversion**: `args-tokens` resolves positional arguments as strings. You typically need to perform type conversions or further validation on the values accessed via `ctx.values.` within your `run` function based on your application's needs. #### Negatable Boolean Options @@ -172,14 +215,19 @@ The `examples` property provides example commands showing how to use the CLI. The `run` function receives a command context object (`ctx`) with: -- `args`: The command arguments configuration -- `values`: The resolved option values -- `positionals`: Positional arguments -- `rest`: Rest arguments (arguments appearing after `--`) -- `_`: The raw arguments is passed from `cli` function -- `name`: The command name -- `description`: The command description -- `env`: The command environment +- `args`: The command arguments configuration (`ArgSchema` object). +- `values`: An object containing the resolved values for both named options (e.g., `ctx.values.name`) and positional arguments (accessed via their _key_ from the `args` definition, e.g., `ctx.values.file`). Positional values are stored as strings. +- `positionals`: An array of strings containing the raw values of the arguments identified as positional, in the order they were parsed. Useful if you need the original order, but `ctx.values.` is generally recommended. +- `rest`: An array of strings containing arguments that appear after the `--` separator. +- `argv`: The raw argument array passed to the `cli` function. +- `tokens`: The raw tokens parsed by `args-tokens`. +- `omitted`: A boolean indicating if the command was run without specifying a subcommand name. +- `command`: The resolved command definition object itself. +- `commandOptions`: The resolved command options passed to `cli`. +- `name`: The name of the _currently executing_ command. +- `description`: The description of the _currently executing_ command. +- `env`: The command environment settings (version, logger, renderers, etc.). +- `log`: Logger function (defaults to `console.log`). ## CLI Configuration From 6d756ba7b617415c4e30c0b9ffab458b50c9a125 Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Tue, 6 May 2025 01:08:34 +0900 Subject: [PATCH 3/5] Update src/renderer/usage.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- src/renderer/usage.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/renderer/usage.ts b/src/renderer/usage.ts index f60a493f..c3f488a1 100644 --- a/src/renderer/usage.ts +++ b/src/renderer/usage.ts @@ -357,10 +357,6 @@ async function generateOptionalArgsUsage( return usages.join('\n') } -function getPositionalArgs(ctx: CommandContext): [string, ArgSchema][] { - return Object.entries(ctx.args).filter(([_, schema]) => schema.type === 'positional') -} - async function generatePositionalArgsUsage( ctx: CommandContext ): Promise { @@ -369,7 +365,10 @@ async function generatePositionalArgsUsage( const usages = await Promise.all( positionals.map(([name, _]) => { - const desc = ctx.translate(resolveArgKey(name)) + const desc = + ctx.translate(resolveArgKey(name)) || + (ctx.args[name] as ArgSchema & { description?: string }).description || + '' const arg = `${name.padEnd(argsMaxLength + ctx.env.middleMargin)} ${desc}` return `${arg.padStart(ctx.env.leftMargin + arg.length)}` }) From ed5b289652afcfd343414b6640f843958aba6d36 Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Tue, 6 May 2025 01:11:46 +0900 Subject: [PATCH 4/5] fix --- src/renderer/usage.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/renderer/usage.ts b/src/renderer/usage.ts index c3f488a1..912b5ec7 100644 --- a/src/renderer/usage.ts +++ b/src/renderer/usage.ts @@ -357,6 +357,10 @@ async function generateOptionalArgsUsage( return usages.join('\n') } +function getPositionalArgs(ctx: CommandContext): [string, ArgSchema][] { + return Object.entries(ctx.args).filter(([_, schema]) => schema.type === 'positional') +} + async function generatePositionalArgsUsage( ctx: CommandContext ): Promise { From dc824c05da1378154d6d1f700278895fcd1d4e74 Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Tue, 6 May 2025 01:16:41 +0900 Subject: [PATCH 5/5] refactor --- src/renderer/usage.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/renderer/usage.ts b/src/renderer/usage.ts index 912b5ec7..33e34b97 100644 --- a/src/renderer/usage.ts +++ b/src/renderer/usage.ts @@ -332,7 +332,7 @@ async function generateOptionalArgsUsage( const optionSchemaMaxLength = ctx.env.usageOptionType ? Math.max( - ...Object.entries(optionsPairs).map(([key, _]) => resolveNegatableType(key, ctx).length) + ...Object.entries(optionsPairs).map(([key]) => resolveNegatableType(key, ctx).length) ) : 0 @@ -365,10 +365,10 @@ async function generatePositionalArgsUsage( ctx: CommandContext ): Promise { const positionals = getPositionalArgs(ctx) - const argsMaxLength = Math.max(...positionals.map(([name, _]) => name.length)) + const argsMaxLength = Math.max(...positionals.map(([name]) => name.length)) const usages = await Promise.all( - positionals.map(([name, _]) => { + positionals.map(([name]) => { const desc = ctx.translate(resolveArgKey(name)) || (ctx.args[name] as ArgSchema & { description?: string }).description || @@ -383,8 +383,8 @@ async function generatePositionalArgsUsage( function generatePositionalSymbols(ctx: CommandContext): string { return hasPositionalArgs(ctx) - ? `${getPositionalArgs(ctx) - .map(([name, _], __) => `<${name}>`) - .join(' ')}` + ? getPositionalArgs(ctx) + .map(([name]) => `<${name}>`) + .join(' ') : '' }