Skip to content

Commit ccc0975

Browse files
authored
Fix error on parameters being an object instead of an array (#3623)
Co-authored-by: Nicolas Dorseuil <nicolas@gitbook.io>
1 parent 7911350 commit ccc0975

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

packages/react-openapi/src/OpenAPICodeSample.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,11 @@ function generateCodeSamples(props: {
6666
const searchParams = new URLSearchParams();
6767
const headersObject: { [k: string]: string } = {};
6868

69-
data.operation.parameters?.forEach((param) => {
69+
// The parser can sometimes returns invalid parameters (an object instead of an array).
70+
// It should get fixed in scalar, but in the meantime we just ignore the parameters in that case.
71+
const params = Array.isArray(data.operation.parameters) ? data.operation.parameters : [];
72+
73+
params.forEach((param) => {
7074
if (!param) {
7175
return;
7276
}

packages/react-openapi/src/OpenAPISpec.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,19 +117,22 @@ function getParameterGroupName(paramIn: string, context: OpenAPIClientContext):
117117
/** Deduplicate parameters by name and in.
118118
* Some specs have both parameters define at path and operation level.
119119
* We only want to display one of them.
120+
* Parameters can have the wrong type (object instead of array) sometimes, we just return an empty array in that case.
120121
*/
121122
function deduplicateParameters(parameters: OpenAPI.Parameters): OpenAPI.Parameters {
122123
const seen = new Set();
123124

124-
return parameters.filter((param) => {
125-
const key = `${param.name}:${param.in}`;
125+
return Array.isArray(parameters)
126+
? parameters.filter((param) => {
127+
const key = `${param.name}:${param.in}`;
126128

127-
if (seen.has(key)) {
128-
return false;
129-
}
129+
if (seen.has(key)) {
130+
return false;
131+
}
130132

131-
seen.add(key);
133+
seen.add(key);
132134

133-
return true;
134-
});
135+
return true;
136+
})
137+
: [];
135138
}

0 commit comments

Comments
 (0)