Skip to content

Commit 7624b95

Browse files
feat: handle x-codegen operation extension to customize codegen output
1 parent 4a3d968 commit 7624b95

File tree

4 files changed

+12
-1
lines changed

4 files changed

+12
-1
lines changed

src/client/interfaces/Operation.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { OperationError } from './OperationError';
22
import type { OperationParameters } from './OperationParameters';
33
import type { OperationResponse } from './OperationResponse';
4+
import type { OperationCodegen } from './OperationCodegen';
45

56
export interface Operation extends OperationParameters {
67
service: string;
@@ -13,4 +14,5 @@ export interface Operation extends OperationParameters {
1314
errors: OperationError[];
1415
results: OperationResponse[];
1516
responseHeader: string | null;
17+
codegen: OperationCodegen;
1618
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface OperationCodegen {
2+
method?: string;
3+
queryParams?: string;
4+
}

src/openApi/v3/interfaces/OpenApiOperation.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ export interface OpenApiOperation {
2323
deprecated?: boolean;
2424
security?: OpenApiSecurityRequirement[];
2525
servers?: OpenApiServer[];
26+
'x-codegen'?: Record<string, unknown>;
2627
}

src/openApi/v3/parser/getOperation.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { Operation } from '../../../client/interfaces/Operation';
22
import type { OperationParameters } from '../../../client/interfaces/OperationParameters';
3+
import type { OperationCodegen } from '../../../client/interfaces/OperationCodegen';
34
import type { OpenApi } from '../interfaces/OpenApi';
45
import type { OpenApiOperation } from '../interfaces/OpenApiOperation';
56
import type { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';
@@ -24,11 +25,13 @@ export const getOperation = (
2425
): Operation => {
2526
const serviceName = getServiceName(tag);
2627
const operationName = getOperationName(url, method, op.operationId);
28+
const codegen: OperationCodegen = op['x-codegen'] || {};
2729

2830
// Create a new operation object for this method.
2931
const operation: Operation = {
3032
service: serviceName,
31-
name: operationName,
33+
name: codegen.method || operationName,
34+
operationId: op.operationId || null,
3235
summary: op.summary || null,
3336
description: op.description || null,
3437
deprecated: op.deprecated === true,
@@ -45,6 +48,7 @@ export const getOperation = (
4548
errors: [],
4649
results: [],
4750
responseHeader: null,
51+
codegen,
4852
};
4953

5054
// Parse the operation parameters (path, query, body, etc).

0 commit comments

Comments
 (0)