Skip to content

Commit 24f4a55

Browse files
authored
fix: comment for functional api (#100)
1 parent 8572d59 commit 24f4a55

18 files changed

+16157
-15086
lines changed

src/code-templates/functional-api-client/FunctionalApiClient/Method.ts renamed to src/code-templates/functional-api-client/FunctionalApiClient/ArrowFunction.ts

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,9 @@ const methodTypeParameters = (factory: TsGenerator.Factory.Type, { convertedPara
117117
};
118118

119119
/**
120-
* const {functionName} = async (params: {argumentParamsTypeDeclaration}<{RequestContentType}>): Promise<{requestBodyName}[ResponseContentType]> => {
121-
*
122-
* }
120+
* async (params: {argumentParamsTypeDeclaration}<{RequestContentType}>): Promise<{requestBodyName}[ResponseContentType]> => {}
123121
*/
124-
export const create = (factory: TsGenerator.Factory.Type, params: CodeGenerator.Params, option: Option): ts.VariableStatement => {
122+
export const create = (factory: TsGenerator.Factory.Type, params: CodeGenerator.Params, option: Option): ts.ArrowFunction => {
125123
const { convertedParams } = params;
126124
const typeParameters: ts.TypeParameterDeclaration[] = methodTypeParameters(factory, params);
127125
const methodArguments: ts.ParameterDeclaration[] = [];
@@ -153,7 +151,7 @@ export const create = (factory: TsGenerator.Factory.Type, params: CodeGenerator.
153151
}),
154152
);
155153

156-
const arrowFunction = factory.ArrowFunction.create({
154+
return factory.ArrowFunction.create({
157155
typeParameters: typeParameters,
158156
parameters: methodArguments,
159157
type: returnType,
@@ -162,18 +160,4 @@ export const create = (factory: TsGenerator.Factory.Type, params: CodeGenerator.
162160
multiLine: true,
163161
}),
164162
});
165-
166-
const variableDeclarationList = factory.VariableDeclarationList.create({
167-
declarations: [
168-
factory.VariableDeclaration.create({
169-
name: convertedParams.functionName,
170-
initializer: arrowFunction,
171-
}),
172-
],
173-
flag: "const",
174-
});
175-
176-
return factory.VariableStatement.create({
177-
declarationList: variableDeclarationList,
178-
});
179163
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { TsGenerator } from "../../../api";
2+
3+
export const create = (factory: TsGenerator.Factory.Type) => {
4+
return factory.TypeAliasDeclaration.create({
5+
export: true,
6+
name: "Client",
7+
type: factory.TypeReferenceNode.create({
8+
name: `ReturnType<typeof createClient>`,
9+
})
10+
})
11+
};

src/code-templates/functional-api-client/FunctionalApiClient/ReturnStatement.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export const create = (factory: TsGenerator.Factory.Type, list: CodeGenerator.Pa
1313
return factory.ReturnStatement.create({
1414
expression: factory.ObjectLiteralExpression.create({
1515
properties,
16+
multiLine: true,
1617
}),
1718
});
1819
};

src/code-templates/functional-api-client/FunctionalApiClient/index.ts

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,29 @@
1+
import { EOL } from "os";
12
import ts from "typescript";
23

34
import type { TsGenerator } from "../../../api";
45
import type { CodeGenerator } from "../../../types";
56
import type { Option } from "../../_shared/types";
6-
import * as Method from "./Method";
7-
import * as ReturnStatement from "./ReturnStatement";
8-
export { Method };
7+
import * as ArrowFunction from "./ArrowFunction";
98

109
export const create = (factory: TsGenerator.Factory.Type, list: CodeGenerator.Params[], option: Option): ts.VariableStatement => {
11-
const variableStatements = list.map(params => {
12-
return Method.create(factory, params, option);
10+
const properties = list.map(params => {
11+
return factory.PropertyAssignment.create({
12+
name: params.convertedParams.functionName,
13+
initializer: ArrowFunction.create(factory, params, option),
14+
comment: option.additionalMethodComment
15+
? [params.operationParams.comment, `operationId: ${params.operationId}`, `Request URI: ${params.operationParams.requestUri}`]
16+
.filter(t => !!t)
17+
.join(EOL)
18+
: params.operationParams.comment,
19+
});
20+
});
21+
22+
const returnValue = factory.ReturnStatement.create({
23+
expression: factory.ObjectLiteralExpression.create({
24+
properties,
25+
multiLine: true,
26+
}),
1327
});
1428

1529
const arrowFunction = factory.ArrowFunction.create({
@@ -36,7 +50,7 @@ export const create = (factory: TsGenerator.Factory.Type, list: CodeGenerator.Pa
3650
}),
3751
],
3852
body: factory.Block.create({
39-
statements: [...variableStatements, ReturnStatement.create(factory, list)],
53+
statements: [returnValue],
4054
multiLine: true,
4155
}),
4256
});

src/code-templates/functional-api-client/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type { CodeGenerator } from "../../types";
55
import * as ApiClientArgument from "../_shared/ApiClientArgument";
66
import * as FunctionalApiClient from "./FunctionalApiClient";
77
import * as ApiClientInterface from "../_shared/ApiClientInterface";
8+
import * as ClientTypeDefinition from "./FunctionalApiClient/ClientTypeDefinition";
89

910
import type { Option } from "../_shared/types";
1011

@@ -36,5 +37,6 @@ export const generator: CodeGenerator.GenerateFunction<Option> = (
3637

3738
const apiClientStatement = FunctionalApiClient.create(factory, codeGeneratorParamsList, option || {});
3839
statements.push(apiClientStatement);
40+
statements.push(ClientTypeDefinition.create(factory));
3941
return statements;
4042
};

src/internal/TsGenerator/factory/ArrowFunction.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export const create =
2323
params.equalsGreaterThanToken,
2424
params.body,
2525
);
26+
2627
return node;
2728
};
2829

src/internal/TsGenerator/factory/PropertyAssignment.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import ts from "typescript";
2+
import { generateComment } from "./utils";
23

34
export interface Params {
45
name: string;
56
initializer: ts.Expression;
7+
comment?: string;
8+
deprecated?: boolean;
69
}
710

811
export interface Factory {
@@ -13,6 +16,10 @@ export const create =
1316
({ factory }: Pick<ts.TransformationContext, "factory">): Factory["create"] =>
1417
(params: Params): ts.PropertyAssignment => {
1518
const node = factory.createPropertyAssignment(params.name, params.initializer);
19+
if (params.comment) {
20+
const comment = generateComment(params.comment, params.deprecated);
21+
return ts.addSyntheticLeadingComment(node, ts.SyntaxKind.MultiLineCommentTrivia, comment.value, comment.hasTrailingNewLine);
22+
}
1623
return node;
1724
};
1825

src/internal/TsGenerator/factory/VariableDeclaration.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import ts from "typescript";
2+
import { generateComment } from "./utils";
23

34
export interface Params {
45
name: string | ts.BindingName;

src/internal/TsGenerator/factory/VariableDeclarationList.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import ts from "typescript";
2+
import { generateComment } from "./utils";
23

34
const flags = {
45
const: ts.NodeFlags.Const,
@@ -7,6 +8,7 @@ const flags = {
78
export interface Params {
89
declarations: readonly ts.VariableDeclaration[];
910
flag: keyof typeof flags;
11+
1012
}
1113

1214
export interface Factory {

src/meta.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export const Name = "@himenon/openapi-typescript-code-generator";
2-
export const Version = "0.21.0";
2+
export const Version = "0.22.0";

0 commit comments

Comments
 (0)