diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d2804bf..bb06a2d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: - name: Install Node.js uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 cache: "pnpm" - name: Install dependencies diff --git a/docs/src/content/docs/contributing.md b/docs/src/content/docs/contributing.md index c2531c4..4d703e4 100644 --- a/docs/src/content/docs/contributing.md +++ b/docs/src/content/docs/contributing.md @@ -5,7 +5,7 @@ description: Contributing to OpenAPI React Query Codegen. ## Prerequisites -- Node.js v20.16.0 or later +- Node.js v24 or later - pnpm v9 ## Install dependencies @@ -45,3 +45,20 @@ npm run build && pnpm --filter @7nohe/react-app generate:api && pnpm --filter @7 ```bash pnpm --filter docs dev ``` + +## Type patches for dependencies + +This project compiles with `skipLibCheck: false`, so type errors inside dependency declaration files fail the build. Two mechanisms keep it green: + +- `patches/` contains [pnpm patches](https://pnpm.io/cli/patch) that insert `// @ts-ignore` comments over known typing bugs in the bundled declaration files of `@hey-api/openapi-ts` and `@hey-api/shared`. No implementation code is modified. +- `src/vendor-typestubs.d.ts` stubs modules referenced by `@hey-api/openapi-ts` type declarations but not installed here (framework-specific client plugins such as `ky`, `ofetch`, `nuxt/app`, `@angular/*`). + +When upgrading `@hey-api/openapi-ts`, recreate the patches against the new version: + +```bash +pnpm patch @hey-api/openapi-ts@ +# edit the printed directory, then +pnpm patch-commit +``` + +Run `pnpm build` afterwards — any remaining declaration errors point to patches or stubs that need updating, and patches that no longer apply can be removed. diff --git a/package.json b/package.json index 5a47107..549c9ee 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "license": "MIT", "author": "Daiki Urata (@7nohe)", "dependencies": { - "@hey-api/openapi-ts": "0.92.3", + "@hey-api/openapi-ts": "0.99.0", "cross-spawn": "^7.0.3" }, "devDependencies": { @@ -59,23 +59,24 @@ "commander": "^12.0.0", "lefthook": "^1.6.10", "rimraf": "^5.0.5", - "ts-morph": "^27.0.2", - "typescript": "^5.9.3", + "ts-morph": "^28.0.0", + "typescript": "^6.0.3", "vitest": "^1.5.0" }, "peerDependencies": { "commander": "12.x", - "ts-morph": "27.x", - "typescript": "5.x" + "ts-morph": "28.x", + "typescript": "5.x || 6.x" }, "packageManager": "pnpm@9.6.0", "engines": { - "node": ">=20.19.0", + "node": ">=22.18.0", "pnpm": ">=9" }, "pnpm": { "patchedDependencies": { - "@hey-api/openapi-ts@0.92.3": "patches/@hey-api__openapi-ts@0.92.3.patch" + "@hey-api/openapi-ts@0.99.0": "patches/@hey-api__openapi-ts@0.99.0.patch", + "@hey-api/shared@0.5.0": "patches/@hey-api__shared@0.5.0.patch" } } } diff --git a/patches/@hey-api__openapi-ts@0.92.3.patch b/patches/@hey-api__openapi-ts@0.92.3.patch deleted file mode 100644 index 91424ae..0000000 --- a/patches/@hey-api__openapi-ts@0.92.3.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/dist/index.d.mts b/dist/index.d.mts -index fd805770f0aff4a9f6c57560554908764ed5bdce..af40ec3b83741774a9e0ad82caf0acd3c97a3b55 100644 ---- a/dist/index.d.mts -+++ b/dist/index.d.mts -@@ -1354,6 +1354,7 @@ declare class ImplFuncTsDsl extends Mixed$27 { - decl(): FuncTsDsl<'decl'>; - /** Switches the function to a function expression form. */ - expr(): FuncTsDsl<'expr'>; -+ // @ts-ignore TS2416 - bundled declaration has incorrect base type TsDsl; conditional return is valid at source level - toAst(): M extends 'decl' ? ts.FunctionDeclaration : M extends 'expr' ? ts.FunctionExpression : ts.ArrowFunction; - $validate(): asserts this; - private missingRequiredCalls; diff --git a/patches/@hey-api__openapi-ts@0.99.0.patch b/patches/@hey-api__openapi-ts@0.99.0.patch new file mode 100644 index 0000000..5f08147 --- /dev/null +++ b/patches/@hey-api__openapi-ts@0.99.0.patch @@ -0,0 +1,20 @@ +diff --git a/dist/index.d.mts b/dist/index.d.mts +index f2ca29144731f9320cea459d0e290352e2701e92..4255212e3846fee11fa9dd77a782d5ce1a2e00c9 100644 +--- a/dist/index.d.mts ++++ b/dist/index.d.mts +@@ -1475,6 +1475,7 @@ declare class ImplFuncTsDsl extends Mixed$31 { + decl(): FuncTsDsl<'decl'>; + /** Switches the function to a function expression form. */ + expr(): FuncTsDsl<'expr'>; ++ // @ts-ignore TS2416 - bundled declaration has incorrect base type TsDsl; conditional return is valid at source level + toAst(): M extends 'decl' ? ts.FunctionDeclaration : M extends 'expr' ? ts.FunctionExpression : ts.ArrowFunction; + $validate(): asserts this; + private missingRequiredCalls; +@@ -1848,6 +1849,7 @@ declare class ImplForTsDsl extends Mixed$16 { + of(iterable?: ForIterable): ForTsDsl<'of'>; + /** Sets the update expression (e.g., `i++`). */ + update(update: ForIterable): this; ++ // @ts-ignore TS2416 - bundled declaration has incorrect base type TsDsl; conditional return is valid at source level + toAst(): M extends 'for' ? ts.ForStatement : M extends 'of' ? ts.ForOfStatement : ts.ForInStatement; + $validate(): asserts this is this & { + _iterableOrUpdate: ForIterable; diff --git a/patches/@hey-api__shared@0.5.0.patch b/patches/@hey-api__shared@0.5.0.patch new file mode 100644 index 0000000..f186cf5 --- /dev/null +++ b/patches/@hey-api__shared@0.5.0.patch @@ -0,0 +1,12 @@ +diff --git a/dist/index.d.mts b/dist/index.d.mts +index d4f7acfd6f4b0a65b9de871e7bc88a6151c8a520..1fdc18bb747a9dfc56b74e3e69e1e9ce3275ca85 100644 +--- a/dist/index.d.mts ++++ b/dist/index.d.mts +@@ -3190,6 +3190,7 @@ declare function definePluginConfig(pluginConfig: Plugin + plugin: PluginInstance; + }) => void; + imports?: ((plugin: PluginInstance) => T["imports"]) | undefined; ++ // @ts-ignore TS2749 - bundled declaration references value 'log' as a type; upstream typing bug + symbolMeta?: (symbol: Omit) => log; + tags?: ReadonlyArray; + }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38503bd..25298e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,17 +5,20 @@ settings: excludeLinksFromLockfile: false patchedDependencies: - '@hey-api/openapi-ts@0.92.3': - hash: vmh7y6s6iwmoonuevsqnpcbxwu - path: patches/@hey-api__openapi-ts@0.92.3.patch + '@hey-api/openapi-ts@0.99.0': + hash: uzpdsaqpo2bd4ydyvbzbqpdgxq + path: patches/@hey-api__openapi-ts@0.99.0.patch + '@hey-api/shared@0.5.0': + hash: yrzpnh6wq6q4fblbmxcdyvqm3a + path: patches/@hey-api__shared@0.5.0.patch importers: .: dependencies: '@hey-api/openapi-ts': - specifier: 0.92.3 - version: 0.92.3(patch_hash=vmh7y6s6iwmoonuevsqnpcbxwu)(magicast@0.3.5)(typescript@5.9.3) + specifier: 0.99.0 + version: 0.99.0(patch_hash=uzpdsaqpo2bd4ydyvbzbqpdgxq)(magicast@0.3.5)(typescript@6.0.3) cross-spawn: specifier: ^7.0.3 version: 7.0.3 @@ -45,11 +48,11 @@ importers: specifier: ^5.0.5 version: 5.0.7 ts-morph: - specifier: ^27.0.2 - version: 27.0.2 + specifier: ^28.0.0 + version: 28.0.0 typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 vitest: specifier: ^1.5.0 version: 1.6.0(@types/node@22.7.4)(terser@5.34.1) @@ -1312,33 +1315,30 @@ packages: resolution: {integrity: sha512-FlhFsVeH8RxJe/nq8xUzxNbiOpe+GadxlD2pfvDyOyLdCTU4o/LRv46ZVWstaW7DgF4nxhI328chy3+AulwVXw==} deprecated: Starting with v0.73.0, this package is bundled directly inside @hey-api/openapi-ts. - '@hey-api/codegen-core@0.7.0': - resolution: {integrity: sha512-HglL4B4QwpzocE+c8qDU6XK8zMf8W8Pcv0RpFDYxHuYALWLTnpDUuEsglC7NQ4vC1maoXsBpMbmwpco0N4QviA==} - engines: {node: '>=20.19.0'} - peerDependencies: - typescript: '>=5.5.3' + '@hey-api/codegen-core@0.9.1': + resolution: {integrity: sha512-s97jL1dgTMuiMHv2BZ1X4Tgd99Mf9GOvGdNqNcGwIMmnR+PgYNoraj4Zvp134MKsNCap/m7k0r0vKKnl56pj4w==} + engines: {node: '>=22.18.0'} - '@hey-api/json-schema-ref-parser@1.2.4': - resolution: {integrity: sha512-uuOaZ6tStUgRJFUqnX3Xdbs792++ezxOLI5NMxuikVklpbFWk2wcvIZbeX+qTWDv6kiS1Ik2EVKQgeQFWHML4A==} - engines: {node: '>= 16'} + '@hey-api/json-schema-ref-parser@1.4.4': + resolution: {integrity: sha512-otmd+zCxbYVBIp/mlMTnGkvlNYLkVKgs3VOIq0kSnenhB1+fRwLPQIeSwyWM6E51oXhUedkYjVsVpkVexeuJOA==} + engines: {node: '>=22.18.0'} - '@hey-api/openapi-ts@0.92.3': - resolution: {integrity: sha512-D+2ySL+PXvp1iZtS+1gTEeGChwjHT3d/a6o9IwAaNdGJVsI1lPqESZx7vxqjoUtE/DruovGZC2/jPc/kA5IQPg==} - engines: {node: '>=20.19.0'} + '@hey-api/openapi-ts@0.99.0': + resolution: {integrity: sha512-SePU/5oEWWkvUBYmvzdYRctseoLuskyhs4ET0RvLIcmzc8yLQoA2R+KtBIQ8bPsoSUB0m4E5SmBnl6aGSA0szQ==} + engines: {node: '>=22.18.0'} hasBin: true peerDependencies: - typescript: '>=5.5.3' + typescript: '>=5.5.3 || >=6.0.0 || 6.0.1-rc' - '@hey-api/shared@0.1.2': - resolution: {integrity: sha512-dcldulfNI1xiXl/zhdXKDlNX2bvY0TOBWRRyFXNtcfPddMEFcrlXGmi/wk6LN4fPyDO8lM7FAM9aEpkEdUo92A==} - engines: {node: '>=20.19.0'} - peerDependencies: - typescript: '>=5.5.3' + '@hey-api/shared@0.5.0': + resolution: {integrity: sha512-JN/j4Ebh4cJGYIQ5cwWuqe7GeSUyQoz7oC51WqyhKOcrejK6DKZMDkshc5d1eKTRuRL+rjozuRcoUaZZn2DGPw==} + engines: {node: '>=22.18.0'} - '@hey-api/types@0.1.3': - resolution: {integrity: sha512-mZaiPOWH761yD4GjDQvtjS2ZYLu5o5pI1TVSvV/u7cmbybv51/FVtinFBeaE1kFQCKZ8OQpn2ezjLBJrKsGATw==} - peerDependencies: - typescript: '>=5.5.3' + '@hey-api/spec-types@0.2.0': + resolution: {integrity: sha512-ibQ8Is7evMavzr8GNyJCcTg975d8DpaMUyLmOrQ85UBdy1l6t1KuRAwgChAbesJsIlNV6gjmlXruWyegDX18Fg==} + + '@hey-api/types@0.1.4': + resolution: {integrity: sha512-thWfawrDIP7wSI9ioT13I5soaaqB5vAPIiZmgD8PbeEVKNrkonc0N/Sjj97ezl7oQgusZmaNphGdMKipPO6IBg==} '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} @@ -1495,6 +1495,10 @@ packages: '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + '@lukeed/ms@2.0.2': + resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} + engines: {node: '>=8'} + '@mdx-js/mdx@3.0.1': resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} @@ -2017,8 +2021,8 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@ts-morph/common@0.28.1': - resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} + '@ts-morph/common@0.29.0': + resolution: {integrity: sha512-35oUmphHbJvQ/+UTwFNme/t2p3FoKiGJ5auTjjpNTop2dyREspirjMy82PLSC1pnDJ8ah1GU98hwpVt64YXQsg==} '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -2433,8 +2437,8 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - c12@3.3.3: - resolution: {integrity: sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q==} + c12@3.3.4: + resolution: {integrity: sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==} peerDependencies: magicast: '*' peerDependenciesMeta: @@ -2526,9 +2530,6 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -2596,9 +2597,9 @@ packages: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} - commander@14.0.3: - resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} - engines: {node: '>=20'} + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -2630,12 +2631,8 @@ packages: confbox@0.1.7: resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} @@ -2776,8 +2773,8 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -2791,8 +2788,8 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -2834,8 +2831,8 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dotenv@17.2.3: - resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} engines: {node: '>=12'} dset@3.1.4: @@ -3183,11 +3180,14 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - giget@2.0.0: - resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} + giget@3.3.0: + resolution: {integrity: sha512-gzi2D96p+AMfDcmJHGDj3KJ9NRiwvlFAU5yfa3ROwWZmFUjX4P43x3BcyRaOMMLto1vUo7C+86+MFhYTl6Ryiw==} hasBin: true github-from-package@0.0.0: @@ -3629,8 +3629,8 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} hasBin: true jsesc@2.5.2: @@ -3788,9 +3788,6 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - log-symbols@6.0.0: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} @@ -4175,9 +4172,6 @@ packages: node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - node-fetch-native@1.6.7: - resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -4232,11 +4226,6 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nypm@0.6.2: - resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} - 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'} @@ -4423,8 +4412,8 @@ packages: peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} - perfect-debounce@2.0.0: - resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} @@ -4650,8 +4639,8 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - rc9@2.1.2: - resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + rc9@3.0.1: + resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} @@ -4904,6 +4893,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -5216,10 +5210,6 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} - engines: {node: '>=18'} - tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -5256,8 +5246,8 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-morph@27.0.2: - resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==} + ts-morph@28.0.0: + resolution: {integrity: sha512-Wp3tnZ2bzwxyTZMtgWVzXDfm7lB1Drz+y9DmmYH/L702PQhPyVrp3pkou3yIz4qjS14GY9kcpmLiOOMvl8oG1g==} ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -5341,8 +5331,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true @@ -6819,52 +6809,55 @@ snapshots: '@hey-api/client-fetch@0.6.0': {} - '@hey-api/codegen-core@0.7.0(magicast@0.3.5)(typescript@5.9.3)': + '@hey-api/codegen-core@0.9.1(magicast@0.3.5)': dependencies: - '@hey-api/types': 0.1.3(typescript@5.9.3) + '@hey-api/types': 0.1.4 ansi-colors: 4.1.3 - c12: 3.3.3(magicast@0.3.5) + c12: 3.3.4(magicast@0.3.5) color-support: 1.1.3 - typescript: 5.9.3 transitivePeerDependencies: - magicast - '@hey-api/json-schema-ref-parser@1.2.4': + '@hey-api/json-schema-ref-parser@1.4.4': dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 - js-yaml: 4.1.1 - lodash: 4.17.23 + js-yaml: 4.2.0 - '@hey-api/openapi-ts@0.92.3(patch_hash=vmh7y6s6iwmoonuevsqnpcbxwu)(magicast@0.3.5)(typescript@5.9.3)': + '@hey-api/openapi-ts@0.99.0(patch_hash=uzpdsaqpo2bd4ydyvbzbqpdgxq)(magicast@0.3.5)(typescript@6.0.3)': dependencies: - '@hey-api/codegen-core': 0.7.0(magicast@0.3.5)(typescript@5.9.3) - '@hey-api/json-schema-ref-parser': 1.2.4 - '@hey-api/shared': 0.1.2(magicast@0.3.5)(typescript@5.9.3) - '@hey-api/types': 0.1.3(typescript@5.9.3) + '@hey-api/codegen-core': 0.9.1(magicast@0.3.5) + '@hey-api/json-schema-ref-parser': 1.4.4 + '@hey-api/shared': 0.5.0(patch_hash=yrzpnh6wq6q4fblbmxcdyvqm3a)(magicast@0.3.5) + '@hey-api/spec-types': 0.2.0 + '@hey-api/types': 0.1.4 + '@lukeed/ms': 2.0.2 ansi-colors: 4.1.3 color-support: 1.1.3 - commander: 14.0.3 - typescript: 5.9.3 + commander: 15.0.0 + get-tsconfig: 4.14.0 + typescript: 6.0.3 transitivePeerDependencies: - magicast - '@hey-api/shared@0.1.2(magicast@0.3.5)(typescript@5.9.3)': + '@hey-api/shared@0.5.0(patch_hash=yrzpnh6wq6q4fblbmxcdyvqm3a)(magicast@0.3.5)': dependencies: - '@hey-api/codegen-core': 0.7.0(magicast@0.3.5)(typescript@5.9.3) - '@hey-api/json-schema-ref-parser': 1.2.4 - '@hey-api/types': 0.1.3(typescript@5.9.3) + '@hey-api/codegen-core': 0.9.1(magicast@0.3.5) + '@hey-api/json-schema-ref-parser': 1.4.4 + '@hey-api/spec-types': 0.2.0 + '@hey-api/types': 0.1.4 ansi-colors: 4.1.3 cross-spawn: 7.0.6 open: 11.0.0 - semver: 7.7.3 - typescript: 5.9.3 + semver: 7.8.4 transitivePeerDependencies: - magicast - '@hey-api/types@0.1.3(typescript@5.9.3)': + '@hey-api/spec-types@0.2.0': dependencies: - typescript: 5.9.3 + '@hey-api/types': 0.1.4 + + '@hey-api/types@0.1.4': {} '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: @@ -6995,6 +6988,8 @@ snapshots: '@jsdevtools/ono@7.1.3': {} + '@lukeed/ms@2.0.2': {} + '@mdx-js/mdx@3.0.1': dependencies: '@types/estree': 1.0.6 @@ -7608,7 +7603,7 @@ snapshots: '@tootallnate/once@2.0.0': {} - '@ts-morph/common@0.28.1': + '@ts-morph/common@0.29.0': dependencies: minimatch: 10.1.1 path-browserify: 1.0.1 @@ -8197,20 +8192,20 @@ snapshots: bytes@3.1.2: {} - c12@3.3.3(magicast@0.3.5): + c12@3.3.4(magicast@0.3.5): dependencies: chokidar: 5.0.0 - confbox: 0.2.2 - defu: 6.1.4 - dotenv: 17.2.3 + confbox: 0.2.4 + defu: 6.1.7 + dotenv: 17.4.2 exsolve: 1.0.8 - giget: 2.0.0 + giget: 3.3.0 jiti: 2.6.1 ohash: 2.0.11 pathe: 2.0.3 - perfect-debounce: 2.0.0 + perfect-debounce: 2.1.0 pkg-types: 2.3.0 - rc9: 2.1.2 + rc9: 3.0.1 optionalDependencies: magicast: 0.3.5 @@ -8299,10 +8294,6 @@ snapshots: ci-info@4.0.0: {} - citty@0.1.6: - dependencies: - consola: 3.4.2 - cli-boxes@3.0.0: {} cli-cursor@5.0.0: @@ -8363,7 +8354,7 @@ snapshots: commander@12.1.0: {} - commander@14.0.3: {} + commander@15.0.0: {} commander@2.20.3: optional: true @@ -8405,9 +8396,7 @@ snapshots: confbox@0.1.7: {} - confbox@0.2.2: {} - - consola@3.4.2: {} + confbox@0.2.4: {} content-disposition@0.5.4: dependencies: @@ -8529,7 +8518,7 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.4: {} + defu@6.1.7: {} delayed-stream@1.0.0: {} @@ -8537,7 +8526,7 @@ snapshots: dequal@2.0.3: {} - destr@2.0.3: {} + destr@2.0.5: {} destroy@1.2.0: {} @@ -8566,7 +8555,7 @@ snapshots: dlv@1.1.3: {} - dotenv@17.2.3: {} + dotenv@17.4.2: {} dset@3.1.4: {} @@ -8812,7 +8801,7 @@ snapshots: execa@8.0.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 8.0.1 human-signals: 5.0.0 is-stream: 3.0.0 @@ -8961,7 +8950,7 @@ snapshots: foreground-child@3.2.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 form-data@4.0.0: @@ -9028,18 +9017,15 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.8.1: + get-tsconfig@4.14.0: dependencies: resolve-pkg-maps: 1.0.0 - giget@2.0.0: + get-tsconfig@4.8.1: dependencies: - citty: 0.1.6 - consola: 3.4.2 - defu: 6.1.4 - node-fetch-native: 1.6.7 - nypm: 0.6.2 - pathe: 2.0.3 + resolve-pkg-maps: 1.0.0 + + giget@3.3.0: {} github-from-package@0.0.0: {} @@ -9587,7 +9573,7 @@ snapshots: dependencies: argparse: 2.0.1 - js-yaml@4.1.1: + js-yaml@4.2.0: dependencies: argparse: 2.0.1 @@ -9721,8 +9707,6 @@ snapshots: lodash@4.17.21: {} - lodash@4.17.23: {} - log-symbols@6.0.0: dependencies: chalk: 5.3.0 @@ -10386,8 +10370,6 @@ snapshots: node-addon-api@6.1.0: {} - node-fetch-native@1.6.7: {} - node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -10452,14 +10434,6 @@ snapshots: dependencies: boolbase: 1.0.0 - nypm@0.6.2: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - pathe: 2.0.3 - pkg-types: 2.3.0 - tinyexec: 1.0.2 - object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -10653,7 +10627,7 @@ snapshots: duplexify: 3.7.1 through2: 2.0.5 - perfect-debounce@2.0.0: {} + perfect-debounce@2.1.0: {} periscopic@3.1.0: dependencies: @@ -10708,7 +10682,7 @@ snapshots: pkg-types@2.3.0: dependencies: - confbox: 0.2.2 + confbox: 0.2.4 exsolve: 1.0.8 pathe: 2.0.3 @@ -10888,10 +10862,10 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - rc9@2.1.2: + rc9@3.0.1: dependencies: - defu: 6.1.4 - destr: 2.0.3 + defu: 6.1.7 + destr: 2.0.5 rc@1.2.8: dependencies: @@ -11230,6 +11204,8 @@ snapshots: semver@7.7.3: {} + semver@7.8.4: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -11292,7 +11268,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.6.3 + semver: 7.7.3 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 @@ -11647,8 +11623,6 @@ snapshots: tinyexec@0.3.0: {} - tinyexec@1.0.2: {} - tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -11674,9 +11648,9 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-morph@27.0.2: + ts-morph@28.0.0: dependencies: - '@ts-morph/common': 0.28.1 + '@ts-morph/common': 0.29.0 code-block-writer: 13.0.3 ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5): @@ -11768,7 +11742,7 @@ snapshots: typescript@5.6.3: {} - typescript@5.9.3: {} + typescript@6.0.3: {} ufo@1.5.3: {} diff --git a/src/generate.mts b/src/generate.mts index 1ca7a4a..6a04b62 100644 --- a/src/generate.mts +++ b/src/generate.mts @@ -33,7 +33,10 @@ export async function generate(options: LimitedUserConfig, version: string) { formattedOptions.noOperationId ? { name: "@hey-api/sdk" as const, - operationId: false, + // `operationId: false` was deprecated in favor of `operations.nesting` + operations: { + nesting: "id" as const, + }, } : "@hey-api/sdk"; diff --git a/src/vendor-typestubs.d.ts b/src/vendor-typestubs.d.ts index e6a1be4..a0f7971 100644 --- a/src/vendor-typestubs.d.ts +++ b/src/vendor-typestubs.d.ts @@ -48,6 +48,26 @@ declare module "vue" { export type Ref = any; } +declare module "ky" { + // Modeled after ky's real Options, which extends the Fetch API's + // RequestInit. @hey-api/openapi-ts picks RequestInit members plus + // `retry`/`timeout` from it; the index signature covers the rest + // (hooks, searchParams, etc.) without pulling in ky's full types. + export interface Options extends RequestInit { + prefixUrl?: string | URL; + retry?: number | Record; + timeout?: number | false; + [key: string]: unknown; + } + export interface KyInstance { + (url: string | URL | Request, options?: Options): Promise; + create(options?: Options): KyInstance; + extend(options?: Options): KyInstance; + } + const ky: KyInstance; + export default ky; +} + declare module "ofetch" { export interface FetchOptions { [key: string]: any; diff --git a/tsconfig.json b/tsconfig.json index 864319e..39ce89e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,12 +6,10 @@ "strict": true, "esModuleInterop": true, "noImplicitAny": true, - "downlevelIteration": true, "resolveJsonModule": true, "outDir": "dist", "lib": ["ESNext", "DOM"], "target": "ESNext", - "baseUrl": ".", "rootDir": "src" }, "include": ["src"]