Skip to content

Commit bfb00bf

Browse files
committed
feat: rewrite response transformers to new parser
1 parent 2834ccf commit bfb00bf

File tree

56 files changed

+17224
-13725
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+17224
-13725
lines changed

packages/openapi-ts/src/compiler/classes.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import ts from 'typescript';
33
import { createCallExpression } from './module';
44
import {
55
type AccessLevel,
6+
createBlock,
67
createTypeNode,
78
type FunctionParameter,
89
type FunctionTypeParameter,
@@ -39,7 +40,7 @@ export const createConstructorDeclaration = ({
3940
const node = ts.factory.createConstructorDeclaration(
4041
toAccessLevelModifiers(accessLevel),
4142
toParameterDeclarations(parameters),
42-
ts.factory.createBlock(statements, multiLine),
43+
createBlock({ multiLine, statements }),
4344
);
4445

4546
addLeadingComments({
@@ -100,7 +101,7 @@ export const createMethodDeclaration = ({
100101
types ? toTypeParameters(types) : undefined,
101102
toParameterDeclarations(parameters),
102103
returnType ? createTypeNode(returnType) : undefined,
103-
ts.factory.createBlock(statements, multiLine),
104+
createBlock({ multiLine, statements }),
104105
);
105106

106107
addLeadingComments({

packages/openapi-ts/src/compiler/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ export const compiler = {
1616
anonymousFunction: types.createAnonymousFunction,
1717
arrayLiteralExpression: types.createArrayLiteralExpression,
1818
arrowFunction: types.createArrowFunction,
19+
assignment: types.createAssignment,
1920
awaitExpression: types.createAwaitExpression,
2021
binaryExpression: transform.createBinaryExpression,
22+
block: types.createBlock,
2123
callExpression: module.createCallExpression,
2224
classDeclaration: classes.createClassDeclaration,
2325
conditionalExpression: types.createConditionalExpression,
@@ -27,6 +29,8 @@ export const compiler = {
2729
exportAllDeclaration: module.createExportAllDeclaration,
2830
exportNamedDeclaration: module.createNamedExportDeclarations,
2931
expressionToStatement: convert.expressionToStatement,
32+
forOfStatement: types.createForOfStatement,
33+
functionTypeNode: types.createFunctionTypeNode,
3034
identifier: utils.createIdentifier,
3135
ifStatement: transform.createIfStatement,
3236
indexedAccessTypeNode: types.createIndexedAccessTypeNode,
@@ -36,13 +40,16 @@ export const compiler = {
3640
methodDeclaration: classes.createMethodDeclaration,
3741
namedImportDeclarations: module.createNamedImportDeclarations,
3842
namespaceDeclaration: types.createNamespaceDeclaration,
43+
newExpression: types.createNewExpression,
3944
nodeToString: utils.tsNodeToString,
4045
null: types.createNull,
4146
objectExpression: types.createObjectType,
4247
ots: utils.ots,
48+
parameterDeclaration: types.createParameterDeclaration,
4349
propertyAccessExpression: types.createPropertyAccessExpression,
4450
propertyAccessExpressions: transform.createPropertyAccessExpressions,
4551
returnFunctionCall: _return.createReturnFunctionCall,
52+
returnStatement: _return.createReturnStatement,
4653
returnVariable: _return.createReturnVariable,
4754
safeAccessExpression: transform.createSafeAccessExpression,
4855
stringLiteral: types.createStringLiteral,

packages/openapi-ts/src/compiler/return.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { createCallExpression } from './module';
44
import { createTypeReferenceNode } from './types';
55
import { createIdentifier, isType } from './utils';
66

7-
const createReturnStatement = ({
7+
export const createReturnStatement = ({
88
expression,
99
}: {
1010
expression?: ts.Expression;

packages/openapi-ts/src/compiler/transform.ts

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { expressionToStatement } from './convert';
55
import { createCallExpression } from './module';
66
import {
77
createArrowFunction,
8+
createBlock,
9+
createNewExpression,
810
createPropertyAccessChain,
911
createPropertyAccessExpression,
1012
} from './types';
@@ -99,19 +101,20 @@ export const createDateTransformMutation = ({
99101
const safeAccessExpression = createSafeAccessExpression(path);
100102
const accessExpression = createAccessExpression(path);
101103

102-
const thenStatement = ts.factory.createBlock([
103-
expressionToStatement({
104-
expression: ts.factory.createBinaryExpression(
105-
accessExpression,
106-
ts.SyntaxKind.EqualsToken,
107-
ts.factory.createNewExpression(
108-
createIdentifier({ text: 'Date' }),
109-
undefined,
110-
[accessExpression],
104+
const thenStatement = createBlock({
105+
statements: [
106+
expressionToStatement({
107+
expression: ts.factory.createBinaryExpression(
108+
accessExpression,
109+
ts.SyntaxKind.EqualsToken,
110+
createNewExpression({
111+
argumentsArray: [accessExpression],
112+
expression: createIdentifier({ text: 'Date' }),
113+
}),
111114
),
112-
),
113-
}),
114-
]);
115+
}),
116+
],
117+
});
115118

116119
const statement = createIfStatement({
117120
expression: safeAccessExpression,
@@ -131,17 +134,16 @@ export const createFunctionTransformMutation = ({
131134
const safeAccessExpression = createSafeAccessExpression(path);
132135
const accessExpression = createAccessExpression(path);
133136

134-
const thenStatement = ts.factory.createBlock(
135-
[
137+
const thenStatement = createBlock({
138+
statements: [
136139
expressionToStatement({
137140
expression: createCallExpression({
138141
functionName: transformerName,
139142
parameters: [accessExpression],
140143
}),
141144
}),
142145
],
143-
true,
144-
);
146+
});
145147

146148
const statement = [
147149
createIfStatement({
@@ -171,8 +173,8 @@ export const createArrayTransformMutation = ({
171173
}),
172174
parameters: [safeAccessExpression],
173175
}),
174-
thenStatement: ts.factory.createBlock(
175-
[
176+
thenStatement: createBlock({
177+
statements: [
176178
expressionToStatement({
177179
expression: ts.factory.createCallChain(
178180
createPropertyAccessExpression({
@@ -185,8 +187,7 @@ export const createArrayTransformMutation = ({
185187
),
186188
}),
187189
],
188-
true,
189-
),
190+
}),
190191
});
191192

192193
return statement;
@@ -198,9 +199,10 @@ export const createDateTransformerExpression = ({
198199
parameterName: string;
199200
}) => {
200201
const expression = createIdentifier({ text: 'Date' });
201-
const newExpression = ts.factory.createNewExpression(expression, undefined, [
202-
createIdentifier({ text: parameterName }),
203-
]);
202+
const newExpression = createNewExpression({
203+
argumentsArray: [createIdentifier({ text: parameterName })],
204+
expression,
205+
});
204206
return newExpression;
205207
};
206208

@@ -222,8 +224,8 @@ export const createArrayMapTransform = ({
222224
}),
223225
parameters: [safeAccessExpression],
224226
}),
225-
thenStatement: ts.factory.createBlock(
226-
[
227+
thenStatement: createBlock({
228+
statements: [
227229
expressionToStatement({
228230
expression: ts.factory.createBinaryExpression(
229231
accessExpression,
@@ -249,8 +251,7 @@ export const createArrayMapTransform = ({
249251
),
250252
}),
251253
],
252-
true,
253-
),
254+
}),
254255
});
255256

256257
return statement;

packages/openapi-ts/src/compiler/typedef.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import ts from 'typescript';
33
import { validTypescriptIdentifierRegExp } from '../utils/regexp';
44
import {
55
createKeywordTypeNode,
6+
createParameterDeclaration,
67
createStringLiteral,
78
createTypeNode,
89
createTypeReferenceNode,
@@ -109,16 +110,10 @@ export const createTypeInterfaceNode = ({
109110
const indexSignature = ts.factory.createIndexSignature(
110111
modifiers,
111112
[
112-
ts.factory.createParameterDeclaration(
113-
undefined,
114-
undefined,
115-
createIdentifier({ text: indexProperty.name }),
116-
undefined,
117-
createKeywordTypeNode({
118-
keyword: 'string',
119-
}),
120-
undefined,
121-
),
113+
createParameterDeclaration({
114+
name: createIdentifier({ text: indexProperty.name }),
115+
type: createKeywordTypeNode({ keyword: 'string' }),
116+
}),
122117
],
123118
createTypeNode(indexProperty.type),
124119
);

0 commit comments

Comments
 (0)