From 9a05888538abc85b820bc08f39e8732db7776304 Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Mon, 23 Dec 2024 17:43:28 +0200 Subject: [PATCH] docs-util: fix query params not retrieved correctly for some routes (#10708) --- .../operations/store/get_store_products.ts | 24 ++++++++++++------- .../docs-generator/src/classes/kinds/oas.ts | 22 +++++++++++++---- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/www/utils/generated/oas-output/operations/store/get_store_products.ts b/www/utils/generated/oas-output/operations/store/get_store_products.ts index b791b8791b784..442e8f5ffcd67 100644 --- a/www/utils/generated/oas-output/operations/store/get_store_products.ts +++ b/www/utils/generated/oas-output/operations/store/get_store_products.ts @@ -680,14 +680,6 @@ * type: string * title: category_id * description: A product category's ID. - * - name: currency_code - * in: query - * description: The currency code to retrieve prices in. - * required: false - * schema: - * type: string - * title: currency_code - * description: The currency code to retrieve prices in. * - name: variants * in: query * description: Filter the products' variants. @@ -712,6 +704,22 @@ * type: string * title: value * description: Filter by a value of the option. + * - name: country_code + * in: query + * description: The product's country code. + * required: false + * schema: + * type: string + * title: country_code + * description: The product's country code. + * - name: cart_id + * in: query + * description: The product's cart id. + * required: false + * schema: + * type: string + * title: cart_id + * description: The product's cart id. * x-codeSamples: * - lang: Shell * label: cURL diff --git a/www/utils/packages/docs-generator/src/classes/kinds/oas.ts b/www/utils/packages/docs-generator/src/classes/kinds/oas.ts index 8657ae76d4c4d..73a39f8036265 100644 --- a/www/utils/packages/docs-generator/src/classes/kinds/oas.ts +++ b/www/utils/packages/docs-generator/src/classes/kinds/oas.ts @@ -67,6 +67,7 @@ class OasKindGenerator extends FunctionKindGenerator { "AuthenticatedMedusaRequest", "MedusaStoreRequest", ] + readonly REQUEST_CHECK_QUERY_ARGS = ["RequestWithContext"] // as it's not always possible to detect authenticated request // use this to override the default detection logic. readonly AUTH_REQUESTS: AuthRequests[] = [ @@ -1081,17 +1082,26 @@ class OasKindGenerator extends FunctionKindGenerator { const requestTypeArguments = requestType.typeArguments || requestType.aliasTypeArguments + const shouldCheckTypeArgumentForQuery = + this.REQUEST_CHECK_QUERY_ARGS.includes( + node.parameters[0].type.typeName.getText() + ) - if (!requestTypeArguments || requestTypeArguments.length < 2) { + if ( + !requestTypeArguments || + (requestTypeArguments.length < 2 && !shouldCheckTypeArgumentForQuery) + ) { return { queryParameters, requestSchema, } } + const checkQueryIndex = requestTypeArguments.length >= 2 ? 1 : 0 // Not all routes support a second type argument yet, // so the query param may be passed in the first type argument - const hasQueryParams = requestTypeArguments[1].getProperties().length > 0 + const hasQueryParams = + requestTypeArguments[checkQueryIndex].getProperties().length > 0 // Not all routes support a second type argument yet, // so we have to support routes that pass the query parameters type // in the first type argument @@ -1103,7 +1113,7 @@ class OasKindGenerator extends FunctionKindGenerator { }) const zodObjectQueryTypeName = getCorrectZodTypeName({ typeReferenceNode: node.parameters[0].type, - itemType: requestTypeArguments[1], + itemType: requestTypeArguments[checkQueryIndex], }) const requestBodyParameterSchema = this.typeToSchema({ @@ -1118,10 +1128,12 @@ class OasKindGenerator extends FunctionKindGenerator { }) const queryParameterSchema = hasQueryParams ? this.typeToSchema({ - itemType: requestTypeArguments[1], + itemType: requestTypeArguments[checkQueryIndex], descriptionOptions: { parentName: tagName, - rawParentName: this.checker.typeToString(requestTypeArguments[1]), + rawParentName: this.checker.typeToString( + requestTypeArguments[checkQueryIndex] + ), }, zodObjectTypeName: zodObjectQueryTypeName, context: "query",