Open
Description
Environment
- Operating System:
Darwin
- Node Version:
v22.13.1
- Nuxt Version:
3.17.0
- CLI Version:
3.25.0
- Nitro Version:
2.11.11
- Package Manager:
pnpm@10.10.0
- Builder:
-
- User Config:
future
,compatibilityDate
,devtools
,modules
,colorMode
,i18n
,nitro
,alias
- Runtime Modules:
@nuxtjs/i18n@9.5.4
,@nuxtjs/tailwindcss@6.14.0
,@pinia/nuxt@0.11.0
,@eschricht/nuxt-color-mode@1.1.5
,radix-vue/nuxt@1.9.17
,@nuxt/eslint@1.3.0
- Build Modules:
-
Reproduction
https://github.com/kaaax0815/nuxt-repro
Describe the bug
When using Nuxt 3.16.2 everything works fine.
When updating to Nuxt 3.17.0 or 3.17.1 it stops working.
I want to use use the return type of the api routes dynamically for a composable (useSubmit), but for whatever reason updating nuxt breaks the types to nitropack and i get a Excessive stack depth comparing types
Additional context
No response
Logs
> nuxt typecheck
ℹ Using default Tailwind CSS file nuxt:tailwindcss 11:00:10 AM
ℹ Running with compatibility version 4 nuxt 11:00:10 AM
app/composables/useSubmit.ts:16:7 - error TS2321: Excessive stack depth comparing types 'Exclude<R extends "/api/admin/general" ? { key: "/api/admin/general"; exact: true; score: []; catchAll: false; } : { key: "/api/admin/general"; exact: false; score: `${R}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegWithoutQuery}?${string}` ? RouteSegWithoutQuery extends...' and '{ score: MaxTuple<((R extends "/api/admin/general" ? { key: "/api/admin/general"; exact: true; score: []; catchAll: false; } : { key: "/api/admin/general"; exact: false; score: `${R}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegWithoutQuery}?${string}` ? RouteSegWithoutQ...'.
16 | TypedInternalResponse<
~~~~~~~~~~~~~~~~~~~~~~
17 R,
~~~~~~~~~~
...
19 NitroFetchOptions<R> extends O ? 'get' : ExtractedRouteMethod<R, O>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 >
~~~~~~~
app/composables/useSubmit.ts:16:7 - error TS2321: Excessive stack depth comparing types 'Exclude<{ key: "/__nuxt_error"; exact: false; score: `${R}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegWithoutQuery}?${string}` ? RouteSegWithoutQuery extends "" ? `${RouteRest}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegW...' and '{ score: MaxTuple<((R extends "/api/admin/general" ? { key: "/api/admin/general"; exact: true; score: []; catchAll: false; } : { key: "/api/admin/general"; exact: false; score: `${R}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegWithoutQuery}?${string}` ? RouteSegWithoutQ...'.
16 | TypedInternalResponse<
~~~~~~~~~~~~~~~~~~~~~~
17 R,
~~~~~~~~~~
...
19 NitroFetchOptions<R> extends O ? 'get' : ExtractedRouteMethod<R, O>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 >
~~~~~~~
app/pages/login.vue:83:17 - error TS2321: Excessive stack depth comparing types 'Exclude<R extends "/api/admin/general" ? { key: "/api/admin/general"; exact: true; score: []; catchAll: false; } : { key: "/api/admin/general"; exact: false; score: `${R}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegWithoutQuery}?${string}` ? RouteSegWithoutQuery extends...' and '{ score: MaxTuple<((R extends "/api/admin/general" ? { key: "/api/admin/general"; exact: true; score: []; catchAll: false; } : { key: "/api/admin/general"; exact: false; score: `${R}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegWithoutQuery}?${string}` ? RouteSegWithoutQ...'.
83 const _submit = useSubmit(
~~~~~~~~~~
84 '/api/session',
~~~~~~~~~~~~~~~~~
...
117 }
~~~
118 );
~
app/pages/login.vue:83:17 - error TS2321: Excessive stack depth comparing types 'Exclude<{ key: "/__nuxt_error"; exact: false; score: `${R}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegWithoutQuery}?${string}` ? RouteSegWithoutQuery extends "" ? `${RouteRest}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegW...' and '{ score: MaxTuple<((R extends "/api/admin/general" ? { key: "/api/admin/general"; exact: true; score: []; catchAll: false; } : { key: "/api/admin/general"; exact: false; score: `${R}/` extends `${infer RouteSeg}/${infer RouteRest}` ? `${RouteSeg}?` extends `${infer RouteSegWithoutQuery}?${string}` ? RouteSegWithoutQ...'.
83 const _submit = useSubmit(
~~~~~~~~~~
84 '/api/session',
~~~~~~~~~~~~~~~~~
...
117 }
~~~
118 );
~
Found 4 errors in 2 files.
Errors Files
2 app/composables/useSubmit.ts:16
2 app/pages/login.vue:83
ERROR Process exited with non-zero status (2) 11:00:16 AM
at R._waitForOutput (node_modules/.pnpm/tinyexec@1.0.1/node_modules/tinyexec/dist/main.js:530:13)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async Object.run (node_modules/.pnpm/@nuxt+cli@3.25.0_magicast@0.3.5/node_modules/@nuxt/cli/dist/chunks/typecheck.mjs:45:7)
at async runCommand (node_modules/.pnpm/citty@0.1.6/node_modules/citty/dist/index.mjs:316:16)
at async runCommand (node_modules/.pnpm/citty@0.1.6/node_modules/citty/dist/index.mjs:307:11)
at async runMain (node_modules/.pnpm/citty@0.1.6/node_modules/citty/dist/index.mjs:445:7)