Skip to content

Commit 6f0a5c9

Browse files
authored
fix: --exclude-deprecated flag is not applied to query and path (#1551)
* add test to confirm bug * fix missing excludeDeprecated on parameters * lint
1 parent 2dcb6eb commit 6f0a5c9

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

packages/openapi-typescript/src/transform/parameters-array.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export function transformParametersArray(
3333
"cookie",
3434
] as ParameterObject["in"][]) {
3535
const paramLocType: ts.TypeElement[] = [];
36-
const operationParameters = parametersArray.map((param) => ({
36+
let operationParameters = parametersArray.map((param) => ({
3737
original: param,
3838
resolved:
3939
"$ref" in param
@@ -46,6 +46,12 @@ export function transformParametersArray(
4646
(a.resolved?.name ?? "").localeCompare(b.resolved?.name ?? ""),
4747
);
4848
}
49+
if (options.ctx.excludeDeprecated) {
50+
operationParameters = operationParameters.filter(
51+
({ resolved }) =>
52+
!resolved?.deprecated && !resolved?.schema?.deprecated,
53+
);
54+
}
4955
for (const { original, resolved } of operationParameters) {
5056
if (resolved?.in !== paramIn) {
5157
continue;

packages/openapi-typescript/test/transform/operation-object.test.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,56 @@ responses: {
214214
};
215215
};
216216
};
217+
};`,
218+
},
219+
],
220+
[
221+
"parameters, responses > test excludeDeprecated option",
222+
{
223+
options: {
224+
...DEFAULT_OPTIONS,
225+
ctx: { ...DEFAULT_CTX, excludeDeprecated: true },
226+
},
227+
given: {
228+
parameters: [
229+
{ in: "path", name: "user_id", schema: { type: "string" } },
230+
{ in: "path", name: "user_id_deprecated", schema: { type: "string", deprecated: true } },
231+
{ in: "query", name: "search", schema: { type: "string" } },
232+
{ in: "query", name: "search_deprecated", schema: { type: "string", deprecated: true } },
233+
],
234+
responses: {
235+
"200": {
236+
description: "OK",
237+
content: { "application/json": { schema: { type: "object", properties: {
238+
hello: { type: "string" },
239+
hello_deprecated: { type: "string", deprecated: true }
240+
}}}},
241+
},
242+
},
243+
},
244+
want: `parameters: {
245+
query?: {
246+
search?: string;
247+
};
248+
header?: never;
249+
path: {
250+
user_id: string;
251+
};
252+
cookie?: never;
253+
};
254+
requestBody?: never;
255+
responses: {
256+
/** @description OK */
257+
200: {
258+
headers: {
259+
[name: string]: unknown;
260+
};
261+
content: {
262+
"application/json": {
263+
hello?: string;
264+
};
265+
};
266+
};
217267
};`,
218268
},
219269
],

0 commit comments

Comments
 (0)