From 7b5da6b66d8f0efd31f2266e1fc1fadee1328743 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Thu, 13 Jul 2023 16:38:59 -0700 Subject: [PATCH] Omit path parmaeters from queryParms Closes https://github.com/seamapi/nextlove/issues/62. Depends on https://github.com/seamapi/nextlove/pull/83. --- packages/nextlove/src/generate-route-types/index.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/nextlove/src/generate-route-types/index.ts b/packages/nextlove/src/generate-route-types/index.ts index c8baa6e7e..424efa89a 100644 --- a/packages/nextlove/src/generate-route-types/index.ts +++ b/packages/nextlove/src/generate-route-types/index.ts @@ -30,14 +30,21 @@ export const generateRouteTypes = async (opts: GenerateRouteTypesOpts) => { // TODO when less lazy, use ts-morph for better generation const routeDefs: string[] = [] for (const [_, { route, routeSpec, setupParams }] of filteredRoutes) { + const queryKeys = Object.keys(routeSpec.queryParams?.shape ?? {}) + const pathParameters = queryKeys.filter((key) => route.includes(`[${key}]`)) + + const queryParamsSchemaWithoutPathParameters = routeSpec.queryParams?.omit( + Object.fromEntries(pathParameters.map((param) => [param, true])) + ) + routeDefs.push( ` "${route}": { route: "${route}", method: ${routeSpec.methods.map((m) => `"${m}"`).join(" | ")}, queryParams: ${ - routeSpec.queryParams - ? printNode(zodToTs(routeSpec.queryParams).node) + queryParamsSchemaWithoutPathParameters + ? printNode(zodToTs(queryParamsSchemaWithoutPathParameters).node) : "{}" }, jsonBody: ${