docs-util: fix query params not retrieved correctly for some routes (#10708)

This commit is contained in:
Shahed Nasser
2024-12-23 17:43:28 +02:00
committed by GitHub
parent c804ae575b
commit 9a05888538
2 changed files with 33 additions and 13 deletions

View File

@@ -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

View File

@@ -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",