@cnbcool/cnb-api-generate 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +399 -0
- package/bin/cag.js +3 -0
- package/bin/csg.js +3 -0
- package/built/codegen/action/generate-redux-action-ast-node.js +85 -0
- package/built/codegen/action/generate-redux-action-call-api-function-param-ast-node.js +40 -0
- package/built/codegen/action/generate-redux-action-normal-params-ast-node.js +52 -0
- package/built/codegen/action/generate-redux-action-params-binding-element-ast-node.js +40 -0
- package/built/codegen/action/generate-redux-action-params-type-literal-ast-node.js +58 -0
- package/built/codegen/api/generate-api-error-response-ast-node.js +83 -0
- package/built/codegen/api/generate-api-function-ast-node.js +133 -0
- package/built/codegen/api/generate-api-function-request-params-type-ast-node.js +59 -0
- package/built/codegen/api/generate-api-response-return-type-content.js +80 -0
- package/built/codegen/api/generate-api-success-response-ast-node.js +84 -0
- package/built/codegen/api/generate-function-content-ast-node.js +104 -0
- package/built/codegen/api/generate-function-normal-params-ast-node.js +49 -0
- package/built/codegen/api/generate-function-params-ast-node.js +249 -0
- package/built/codegen/api/generate-function-refs-type-params-ast-node.js +102 -0
- package/built/codegen/api/generate-import-ast-node.js +58 -0
- package/built/codegen/api/generate-request-function.js +81 -0
- package/built/codegen/api/generate-request-url-ast-node.js +98 -0
- package/built/codegen/enum/generate-enum-ast-node.js +95 -0
- package/built/codegen/enum/generate-enum-content-ast-node.js +74 -0
- package/built/codegen/interface/generate-import-interface-ast-node.js +47 -0
- package/built/codegen/interface/generate-interface-anchor-ast-node.js +25 -0
- package/built/codegen/interface/generate-interface-ast-node.js +322 -0
- package/built/codegen/interface/generate-interface-desc-ast-node.js +51 -0
- package/built/codegen/interface/generate-interface-entrance.js +110 -0
- package/built/codegen/printer/printer-skill-client-modules.js +58 -0
- package/built/codegen/printer/printer-skills-client-core.js +69 -0
- package/built/codegen/printer/printer-swagger-api-to-file.js +128 -0
- package/built/codegen/printer/printer-swagger-definitions-to-file.js +81 -0
- package/built/codegen/printer/printer-ts-ast-to-js-file.js +72 -0
- package/built/codegen/record/generate-record-anchor-ast-node.js +25 -0
- package/built/codegen/record/generate-record-ast-node.js +134 -0
- package/built/codegen/swagger-definitions-to-ast-node.js +36 -0
- package/built/codegen/types/md-array-type-content-ast-node.js +46 -0
- package/built/constants/actions.js +8 -0
- package/built/constants/definitions.js +20 -0
- package/built/constants/file.js +12 -0
- package/built/constants/index.js +20 -0
- package/built/constants/prettier.js +4 -0
- package/built/constants/request.js +35 -0
- package/built/constants/skills.js +5 -0
- package/built/generate-api.js +36 -0
- package/built/generate-defintions.js +32 -0
- package/built/generate-entrypoint.js +130 -0
- package/built/index.js +19 -0
- package/built/interface/index.js +16 -0
- package/built/skills-tools/generate-config.js +28 -0
- package/built/skills-tools/generate-skill-cli-help.js +156 -0
- package/built/skills-tools/generate-skill-cli-scripts.js +20 -0
- package/built/skills-tools/generate-skill-md.js +25 -0
- package/built/skills.js +36 -0
- package/built/test.js +1 -0
- package/built/utils/camel-to-kebab.js +13 -0
- package/built/utils/comment-line-break.js +6 -0
- package/built/utils/filter-api-param.js +64 -0
- package/built/utils/format-interface-name.js +12 -0
- package/built/utils/format-type-name.js +12 -0
- package/built/utils/gen-operation-id.js +24 -0
- package/built/utils/generate-map-item.js +16 -0
- package/built/utils/get-codegen-target.js +8 -0
- package/built/utils/get-config.js +68 -0
- package/built/utils/get-defintion-name.js +8 -0
- package/built/utils/get-defintion-type.js +13 -0
- package/built/utils/get-generate-license.js +39 -0
- package/built/utils/get-keyword-type-node.js +60 -0
- package/built/utils/get-printer-file-prefix.js +21 -0
- package/built/utils/get-skills-codegen-target.js +15 -0
- package/built/utils/get-swagger-file.js +60 -0
- package/built/utils/inject-param-to-path.js +12 -0
- package/built/utils/is-english-only.js +8 -0
- package/built/utils/is-skills.js +6 -0
- package/built/utils/lower-first-char.js +8 -0
- package/built/utils/path-to-camel-case.js +31 -0
- package/built/utils/progress.js +76 -0
- package/built/utils/to-camel-case.js +8 -0
- package/built/utils/translations-keyworad-to-string.js +55 -0
- package/client/core.ts +114 -0
- package/client/fetch-response-handler.ts +36 -0
- package/client/index.ts +377 -0
- package/client/modules.help.ts +36 -0
- package/client/schemaToJson.ts +26 -0
- package/client/shortcuts.ts +208 -0
- package/client/tools.help.ts +104 -0
- package/client/utils/convert-link.ts +139 -0
- package/client/utils/generate-unique-id.ts +3 -0
- package/package.json +75 -0
- package/skills-template/SKILL.md +100 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateApiErrorResponseASTNode = generateApiErrorResponseASTNode;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const constants_1 = require("../../constants");
|
|
39
|
+
const generate_api_response_return_type_content_1 = require("./generate-api-response-return-type-content");
|
|
40
|
+
const format_interface_name_1 = require("../../utils/format-interface-name");
|
|
41
|
+
function generateApiErrorResponseASTNode(methodData, definitions, defintionsMap, requestFileASTNodes) {
|
|
42
|
+
let dependencies = new Set();
|
|
43
|
+
const { original } = methodData;
|
|
44
|
+
const { responses, operationId } = original;
|
|
45
|
+
// 定义api的response的type,默认为any
|
|
46
|
+
const requestResponseTypeName = (0, format_interface_name_1.formatInterfaceName)(`${methodData.exportName}${constants_1.CNB_REQUEST_FUNCTION_ERROR_RETURN_TYPE_SUFFIX_NAME}`);
|
|
47
|
+
methodData.descriptionMap[requestResponseTypeName] = {
|
|
48
|
+
description: `${requestResponseTypeName} Error Response Type`,
|
|
49
|
+
indent: 0,
|
|
50
|
+
};
|
|
51
|
+
let apiResponseTypeASTNode = ts.factory.createTypeAliasDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(requestResponseTypeName), undefined, ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword));
|
|
52
|
+
const apiReturnType = ts.factory.createTypeReferenceNode(ts.factory.createIdentifier(requestResponseTypeName), undefined);
|
|
53
|
+
if (responses) {
|
|
54
|
+
// 定义失败返回的AST Node
|
|
55
|
+
const errorResponseKeys = Object.keys(responses || {}).filter((statusCode) => !['200', '201'].includes(statusCode));
|
|
56
|
+
const errorResponseReturnTypeContent = [];
|
|
57
|
+
const errorResponseReturnTypeContentMap = {};
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
59
|
+
for (let i = 0; i < errorResponseKeys.length; i++) {
|
|
60
|
+
const responseData = responses[errorResponseKeys[i]];
|
|
61
|
+
if (responseData === null || responseData === void 0 ? void 0 : responseData.schema) {
|
|
62
|
+
const { returnType, dependencies: subDependencies, returnTypeName, } = (0, generate_api_response_return_type_content_1.generateApiResponseReturnTypeContent)(responseData, operationId, requestResponseTypeName, definitions, defintionsMap);
|
|
63
|
+
dependencies = new Set([...dependencies, ...subDependencies]);
|
|
64
|
+
// 默认any
|
|
65
|
+
if (returnType && !errorResponseReturnTypeContentMap[returnTypeName]) {
|
|
66
|
+
errorResponseReturnTypeContentMap[returnTypeName] = true;
|
|
67
|
+
errorResponseReturnTypeContent.push(returnType);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// 定义
|
|
72
|
+
if (errorResponseReturnTypeContent.length === 1) {
|
|
73
|
+
apiResponseTypeASTNode = ts.factory.createTypeAliasDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(requestResponseTypeName), undefined, errorResponseReturnTypeContent[0]);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
apiResponseTypeASTNode = ts.factory.createTypeAliasDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(requestResponseTypeName), undefined, ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// 添加AST Node到文件中
|
|
80
|
+
requestFileASTNodes.push(ts.factory.createExpressionStatement(ts.factory.createStringLiteral(`<$${requestResponseTypeName}$>`)));
|
|
81
|
+
requestFileASTNodes.push(apiResponseTypeASTNode);
|
|
82
|
+
return { apiReturnType, dependencies };
|
|
83
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateApiFunctionASTNode = generateApiFunctionASTNode;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const filter_api_param_1 = require("../../utils/filter-api-param");
|
|
39
|
+
const generate_import_ast_node_1 = require("./generate-import-ast-node");
|
|
40
|
+
const generate_function_params_ast_node_1 = require("./generate-function-params-ast-node");
|
|
41
|
+
const constants_1 = require("../../constants");
|
|
42
|
+
const generate_function_content_ast_node_1 = require("./generate-function-content-ast-node");
|
|
43
|
+
const generate_api_function_request_params_type_ast_node_1 = require("./generate-api-function-request-params-type-ast-node");
|
|
44
|
+
const generate_api_success_response_ast_node_1 = require("./generate-api-success-response-ast-node");
|
|
45
|
+
const generate_api_error_response_ast_node_1 = require("./generate-api-error-response-ast-node");
|
|
46
|
+
const generate_redux_action_ast_node_1 = require("../action/generate-redux-action-ast-node");
|
|
47
|
+
const get_config_1 = require("../../utils/get-config");
|
|
48
|
+
const is_skills_1 = require("../../utils/is-skills");
|
|
49
|
+
function generateApiFunctionASTNode(methodData, definitions, defintionsMap) {
|
|
50
|
+
var _a;
|
|
51
|
+
const { original, path, category } = methodData;
|
|
52
|
+
const { parameters = [], responses, operationId } = original;
|
|
53
|
+
const requestFileDependenciesASTNodes = [];
|
|
54
|
+
const requestFileASTNodes = [];
|
|
55
|
+
let dependencies = new Set();
|
|
56
|
+
// 根据parameters的类型,处理请求中不同的数据的处理方式
|
|
57
|
+
const { pathParams, bodyParams, queryParams } = (0, filter_api_param_1.filterApiParam)(path, parameters);
|
|
58
|
+
const { requestParamsASTNodes: paramASTNodes, reduxActionMap, dependencies: paramsDependencies, requestInterfaceASTNodes: paramsInterfaceASTNodes, } = (0, generate_function_params_ast_node_1.generateFunctionParamsASTNode)(methodData, pathParams, queryParams, bodyParams, defintionsMap);
|
|
59
|
+
if (paramsDependencies && paramsDependencies.size > 0) {
|
|
60
|
+
dependencies = new Set([...dependencies, ...paramsDependencies]);
|
|
61
|
+
}
|
|
62
|
+
// 当存在接口的interface时,添加在文件的astNode中
|
|
63
|
+
if (paramsInterfaceASTNodes.length > 0) {
|
|
64
|
+
for (const interfaceNode of paramsInterfaceASTNodes) {
|
|
65
|
+
requestFileASTNodes.push(interfaceNode);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// 添加函数的param参数的type
|
|
69
|
+
requestFileASTNodes.push(...(0, generate_api_function_request_params_type_ast_node_1.generateApiFunctionRequestParamsTypeASTNode)(methodData));
|
|
70
|
+
// 添加函数的success return type
|
|
71
|
+
const { apiReturnType: successApiReturnType, dependencies: successResponseDependencies, } = (0, generate_api_success_response_ast_node_1.generateApiSuccessResponseASTNode)(methodData, definitions, defintionsMap, requestFileASTNodes);
|
|
72
|
+
if (successResponseDependencies && successResponseDependencies.size > 0) {
|
|
73
|
+
dependencies = new Set([...dependencies, ...successResponseDependencies]);
|
|
74
|
+
}
|
|
75
|
+
// 添加函数的error return type
|
|
76
|
+
const { apiReturnType: errorApiReturnType, dependencies: errorResponseDependencies, } = (0, generate_api_error_response_ast_node_1.generateApiErrorResponseASTNode)(methodData, definitions, defintionsMap, requestFileASTNodes);
|
|
77
|
+
if (errorResponseDependencies && errorResponseDependencies.size > 0) {
|
|
78
|
+
dependencies = new Set([...dependencies, ...errorResponseDependencies]);
|
|
79
|
+
}
|
|
80
|
+
// redux会统计当前api的参数顺序,可用于api function中的param
|
|
81
|
+
const apiFunctionParams = [];
|
|
82
|
+
for (const item of reduxActionMap.paramsSequence) {
|
|
83
|
+
if (item === null || item === void 0 ? void 0 : item.typeLiteral) {
|
|
84
|
+
const description = ((_a = methodData.descriptionMap[item.typeLiteral]) === null || _a === void 0 ? void 0 : _a.description) || null;
|
|
85
|
+
apiFunctionParams.push(`${item.typeLiteral}${description ? ` ${description}` : ''}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// 添加注释
|
|
89
|
+
methodData.descriptionMap[methodData.exportName] = {
|
|
90
|
+
description: methodData.description && methodData.description !== ''
|
|
91
|
+
? methodData.description
|
|
92
|
+
: 'No description',
|
|
93
|
+
tags: methodData.tags,
|
|
94
|
+
name: methodData.exportName,
|
|
95
|
+
summary: methodData.summary,
|
|
96
|
+
request: `${methodData.method}:${methodData.path}`,
|
|
97
|
+
indent: 0,
|
|
98
|
+
param: apiFunctionParams,
|
|
99
|
+
};
|
|
100
|
+
requestFileASTNodes.push(ts.factory.createExpressionStatement(ts.factory.createStringLiteral(`<$${methodData.exportName}$>`)));
|
|
101
|
+
const requestFunctionModifiers = (0, is_skills_1.isSkills)()
|
|
102
|
+
? [
|
|
103
|
+
ts.factory.createToken(ts.SyntaxKind.ExportKeyword),
|
|
104
|
+
ts.factory.createToken(ts.SyntaxKind.DefaultKeyword),
|
|
105
|
+
ts.factory.createToken(ts.SyntaxKind.AsyncKeyword),
|
|
106
|
+
]
|
|
107
|
+
: [
|
|
108
|
+
ts.factory.createToken(ts.SyntaxKind.ExportKeyword),
|
|
109
|
+
ts.factory.createToken(ts.SyntaxKind.AsyncKeyword),
|
|
110
|
+
];
|
|
111
|
+
// 添加函数request
|
|
112
|
+
requestFileASTNodes.push(ts.factory.createFunctionDeclaration(requestFunctionModifiers, undefined, (0, is_skills_1.isSkills)()
|
|
113
|
+
? undefined
|
|
114
|
+
: ts.factory.createIdentifier(methodData.exportName), undefined, paramASTNodes, ts.factory.createTypeReferenceNode(ts.factory.createIdentifier('Promise'), [
|
|
115
|
+
ts.factory.createTypeReferenceNode(ts.factory.createIdentifier(constants_1.CNB_REQUEST_RESULT_INTERFACE), [successApiReturnType, errorApiReturnType]),
|
|
116
|
+
]), (0, generate_function_content_ast_node_1.generateFunctionContentASTNode)(methodData, successApiReturnType, errorApiReturnType, pathParams, queryParams, bodyParams)));
|
|
117
|
+
for (const dependency of dependencies) {
|
|
118
|
+
const defintion = defintionsMap[dependency];
|
|
119
|
+
requestFileDependenciesASTNodes.push((0, generate_import_ast_node_1.generateImportAstNode)(defintion.exportName, defintion.filename, false, category, defintion.type));
|
|
120
|
+
}
|
|
121
|
+
const config = (0, get_config_1.getConfig)();
|
|
122
|
+
const reduxActionFileASTNodes = [];
|
|
123
|
+
if (config.printeReduxAction) {
|
|
124
|
+
reduxActionFileASTNodes.push(...(0, generate_redux_action_ast_node_1.generateReduxActionASTNode)(methodData, reduxActionMap));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
}
|
|
128
|
+
return [
|
|
129
|
+
...requestFileDependenciesASTNodes,
|
|
130
|
+
...requestFileASTNodes,
|
|
131
|
+
...reduxActionFileASTNodes,
|
|
132
|
+
];
|
|
133
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateApiFunctionRequestParamsTypeASTNode = generateApiFunctionRequestParamsTypeASTNode;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const request_1 = require("../../constants/request");
|
|
39
|
+
function generateApiFunctionRequestParamsTypeASTNode(methodData) {
|
|
40
|
+
const propertieDescKey = request_1.CNB_REQUEST_PARAM_TYPE_NAME;
|
|
41
|
+
methodData.descriptionMap[propertieDescKey] = {
|
|
42
|
+
description: 'Other reuqest params',
|
|
43
|
+
indent: 0,
|
|
44
|
+
};
|
|
45
|
+
return [
|
|
46
|
+
ts.factory.createExpressionStatement(ts.factory.createStringLiteral(`<$${propertieDescKey}$>`)),
|
|
47
|
+
ts.factory.createTypeAliasDeclaration(undefined, ts.factory.createIdentifier(request_1.CNB_REQUEST_PARAM_TYPE_NAME), [
|
|
48
|
+
ts.factory.createTypeParameterDeclaration(undefined, ts.factory.createIdentifier('DataType'), undefined, ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)),
|
|
49
|
+
], ts.factory.createIntersectionTypeNode([
|
|
50
|
+
ts.factory.createTypeReferenceNode(ts.factory.createIdentifier(request_1.AXIOS_CONFIG_INTERFACE), [
|
|
51
|
+
ts.factory.createTypeReferenceNode(ts.factory.createIdentifier('DataType'), undefined),
|
|
52
|
+
]),
|
|
53
|
+
ts.factory.createTypeLiteralNode([
|
|
54
|
+
ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(request_1.CNB_REQUEST_PARAM_OPTIONS_NAME), ts.factory.createToken(ts.SyntaxKind.QuestionToken), ts.factory.createTypeReferenceNode(ts.factory.createIdentifier(request_1.CNB_REQUEST_OPTIONS_NAME_INTERFACE), undefined)),
|
|
55
|
+
ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(request_1.CNB_REQUEST_PARAM_REQ_NAME), ts.factory.createToken(ts.SyntaxKind.QuestionToken), ts.factory.createTypeReferenceNode(ts.factory.createIdentifier(request_1.CNB_REQUEST_PARAM_INCOMING_NAME), undefined)),
|
|
56
|
+
]),
|
|
57
|
+
])),
|
|
58
|
+
];
|
|
59
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateApiResponseReturnTypeContent = generateApiResponseReturnTypeContent;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const constants_1 = require("../../constants");
|
|
9
|
+
const get_defintion_name_1 = require("../../utils/get-defintion-name");
|
|
10
|
+
const generate_record_ast_node_1 = require("../record/generate-record-ast-node");
|
|
11
|
+
const md_array_type_content_ast_node_1 = require("../types/md-array-type-content-ast-node");
|
|
12
|
+
function generateApiResponseReturnTypeContent(data, operationId, requestResponseTypeName, definitions, defintionsMap) {
|
|
13
|
+
var _a, _b, _c;
|
|
14
|
+
let dependencies = new Set();
|
|
15
|
+
let returnTypeName = 'any';
|
|
16
|
+
// 获取接口返回定义
|
|
17
|
+
let returnType = typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.AnyKeyword);
|
|
18
|
+
// 数组
|
|
19
|
+
/**
|
|
20
|
+
* "schema": {
|
|
21
|
+
* "items": {
|
|
22
|
+
* "$ref": "#/definitions/scope.GroupItem"
|
|
23
|
+
* },
|
|
24
|
+
* "type": "array"
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* export type deployKeyScopeConfigRes = ScopeGroupItem[];
|
|
28
|
+
*/
|
|
29
|
+
if (((_a = data.schema) === null || _a === void 0 ? void 0 : _a.type) ===
|
|
30
|
+
constants_1.DefinitionsKeywordTypeNodeKey.array) {
|
|
31
|
+
const { returnType: subReturnType, returnTypeName: subReturnTypeName, dependencies: subDependencies, } = (0, md_array_type_content_ast_node_1.mdArrayTypeContentAstNode)(defintionsMap, operationId, data.schema);
|
|
32
|
+
returnType = subReturnType;
|
|
33
|
+
returnTypeName = subReturnTypeName;
|
|
34
|
+
if (subDependencies && subDependencies.size > 0) {
|
|
35
|
+
dependencies = new Set([...dependencies, ...subDependencies]);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* "schema": {
|
|
39
|
+
* "$ref": "#/definitions/dto.Repos4User"
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* export type uploadCommitAssetsRes = DtoUploadAssetsResponse;
|
|
43
|
+
*
|
|
44
|
+
*/
|
|
45
|
+
}
|
|
46
|
+
else if ((_b = data.schema) === null || _b === void 0 ? void 0 : _b.$ref) {
|
|
47
|
+
const { $ref } = data.schema;
|
|
48
|
+
const defintionName = (0, get_defintion_name_1.getDefinitionName)($ref);
|
|
49
|
+
returnTypeName = defintionName;
|
|
50
|
+
const importResponseInterfaceName = defintionsMap[defintionName];
|
|
51
|
+
if (!importResponseInterfaceName) {
|
|
52
|
+
throw new Error(`${operationId} response ref ${defintionName} not found`);
|
|
53
|
+
}
|
|
54
|
+
returnType = typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier(importResponseInterfaceName.exportName), undefined);
|
|
55
|
+
dependencies.add(defintionName);
|
|
56
|
+
/**
|
|
57
|
+
* "schema": {
|
|
58
|
+
* "additionalProperties": {
|
|
59
|
+
* "$ref": "#/definitions/dto.BudgetItemPrice"
|
|
60
|
+
* },
|
|
61
|
+
* "type": "object"
|
|
62
|
+
* }
|
|
63
|
+
*
|
|
64
|
+
* export type getPriceRes = Record<string, DtoBudgetItemPrice>;
|
|
65
|
+
*
|
|
66
|
+
*/
|
|
67
|
+
}
|
|
68
|
+
else if ((_c = data.schema) === null || _c === void 0 ? void 0 : _c.additionalProperties) {
|
|
69
|
+
const { additionalProperties } = data.schema;
|
|
70
|
+
const { recordContent, recordDependency } = (0, generate_record_ast_node_1.generateRecordASTNode)(requestResponseTypeName, constants_1.DefinitionsType.OBJECT, additionalProperties, definitions, defintionsMap);
|
|
71
|
+
returnType = recordContent;
|
|
72
|
+
// record永不重复
|
|
73
|
+
returnTypeName = `record<${Date.now()}>`;
|
|
74
|
+
// 添加依赖
|
|
75
|
+
if (recordDependency && recordDependency.size > 0) {
|
|
76
|
+
dependencies = new Set([...dependencies, ...recordDependency]);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return { returnType, dependencies, returnTypeName };
|
|
80
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateApiSuccessResponseASTNode = generateApiSuccessResponseASTNode;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const constants_1 = require("../../constants");
|
|
39
|
+
const generate_api_response_return_type_content_1 = require("./generate-api-response-return-type-content");
|
|
40
|
+
const format_interface_name_1 = require("../../utils/format-interface-name");
|
|
41
|
+
function generateApiSuccessResponseASTNode(methodData, definitions, defintionsMap, requestFileASTNodes) {
|
|
42
|
+
let dependencies = new Set();
|
|
43
|
+
const { original } = methodData;
|
|
44
|
+
const { responses, operationId } = original;
|
|
45
|
+
// 定义api的response的type,默认为any
|
|
46
|
+
const requestResponseTypeName = (0, format_interface_name_1.formatInterfaceName)(`${methodData.exportName}${constants_1.CNB_REQUEST_FUNCTION_SUCCESS_RETURN_TYPE_SUFFIX_NAME}`);
|
|
47
|
+
methodData.descriptionMap[requestResponseTypeName] = {
|
|
48
|
+
description: `${requestResponseTypeName} Success Response Type`,
|
|
49
|
+
indent: 0,
|
|
50
|
+
};
|
|
51
|
+
let apiResponseTypeASTNode = ts.factory.createTypeAliasDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(requestResponseTypeName), undefined, ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword));
|
|
52
|
+
const apiReturnType = ts.factory.createTypeReferenceNode(ts.factory.createIdentifier(requestResponseTypeName), undefined);
|
|
53
|
+
if (responses) {
|
|
54
|
+
// 定义成功返回的AST Node
|
|
55
|
+
const successResponseKeys = Object.keys(responses || {}).filter((statusCode) => ['200', '201'].includes(statusCode));
|
|
56
|
+
const successResponseReturnTypeContent = [];
|
|
57
|
+
const successResponseReturnTypeContentMap = {};
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
59
|
+
for (let i = 0; i < successResponseKeys.length; i++) {
|
|
60
|
+
const responseData = responses[successResponseKeys[i]];
|
|
61
|
+
if (responseData === null || responseData === void 0 ? void 0 : responseData.schema) {
|
|
62
|
+
const { returnType, dependencies: subDependencies, returnTypeName, } = (0, generate_api_response_return_type_content_1.generateApiResponseReturnTypeContent)(responseData, operationId, requestResponseTypeName, definitions, defintionsMap);
|
|
63
|
+
dependencies = new Set([...dependencies, ...subDependencies]);
|
|
64
|
+
// 默认any 防止重复引入相同的类型
|
|
65
|
+
if (returnType &&
|
|
66
|
+
!successResponseReturnTypeContentMap[returnTypeName]) {
|
|
67
|
+
successResponseReturnTypeContentMap[returnTypeName] = true;
|
|
68
|
+
successResponseReturnTypeContent.push(returnType);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// 定义
|
|
73
|
+
if (successResponseReturnTypeContent.length === 1) {
|
|
74
|
+
apiResponseTypeASTNode = ts.factory.createTypeAliasDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(requestResponseTypeName), undefined, successResponseReturnTypeContent[0]);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
apiResponseTypeASTNode = ts.factory.createTypeAliasDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(requestResponseTypeName), undefined, ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// 添加AST Node到文件中
|
|
81
|
+
requestFileASTNodes.push(ts.factory.createExpressionStatement(ts.factory.createStringLiteral(`<$${requestResponseTypeName}$>`)));
|
|
82
|
+
requestFileASTNodes.push(apiResponseTypeASTNode);
|
|
83
|
+
return { apiReturnType, dependencies };
|
|
84
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateFunctionContentASTNode = generateFunctionContentASTNode;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const constants_1 = require("../../constants");
|
|
39
|
+
const generate_request_url_ast_node_1 = require("./generate-request-url-ast-node");
|
|
40
|
+
const is_skills_1 = require("../../utils/is-skills");
|
|
41
|
+
function generateFunctionContentASTNode(methodData, fetchSuccessResponse, fetchErrorResponse, pathParams, queryParams, bodyParams) {
|
|
42
|
+
const requestParams = [
|
|
43
|
+
ts.factory.createSpreadAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_AXIOS_CONFIG_NAME)),
|
|
44
|
+
ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_CONFIG_NEXT_REQ), ts.factory.createIdentifier(constants_1.CNB_REQUEST_PARAM_REQ_NAME)),
|
|
45
|
+
ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_PARAM_OPTIONS_NAME), ts.factory.createIdentifier(constants_1.CNB_REQUEST_PARAM_OPTIONS_NAME)),
|
|
46
|
+
];
|
|
47
|
+
// 请求路径
|
|
48
|
+
requestParams.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_CONFIG_URL), (0, generate_request_url_ast_node_1.generateRequestUrlASTNode)(methodData.path, pathParams)));
|
|
49
|
+
// api标记
|
|
50
|
+
requestParams.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_CONFIG_API_TAG), ts.factory.createStringLiteral(methodData.path)));
|
|
51
|
+
// 请求方式
|
|
52
|
+
requestParams.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_CONFIG_METHOD), ts.factory.createStringLiteral(methodData.method)));
|
|
53
|
+
// 请求query
|
|
54
|
+
if (queryParams && queryParams.length > 0) {
|
|
55
|
+
requestParams.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_PARAM_QUERY_KEY_NAME), ts.factory.createIdentifier(constants_1.CNB_REQUEST_PARAM_QUERY_NAME)));
|
|
56
|
+
}
|
|
57
|
+
// 请求body
|
|
58
|
+
if (bodyParams) {
|
|
59
|
+
requestParams.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_CONFIG_DATA), ts.factory.createIdentifier(bodyParams.name)));
|
|
60
|
+
}
|
|
61
|
+
// 生成skills时,请求参数需要包含_originalParams,用于后处理时使用
|
|
62
|
+
if ((0, is_skills_1.isSkills)()) {
|
|
63
|
+
const objectLiteralExpression = [
|
|
64
|
+
// ts.factory.createPropertyAssignment(
|
|
65
|
+
// ts.factory.createIdentifier(CNB_REQUEST_CONFIG_METHOD),
|
|
66
|
+
// ts.factory.createStringLiteral(methodData.method),
|
|
67
|
+
// ),
|
|
68
|
+
ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_CONFIG_METHOD), ts.factory.createStringLiteral(methodData.method)),
|
|
69
|
+
ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_CONFIG_API_TAG), ts.factory.createStringLiteral(methodData.path)),
|
|
70
|
+
];
|
|
71
|
+
if (pathParams.length > 0) {
|
|
72
|
+
objectLiteralExpression.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_PATH_PARAM_ORIGIN_NAME), ts.factory.createObjectLiteralExpression(pathParams.map((p) => ts.factory.createShorthandPropertyAssignment(ts.factory.createIdentifier(p.name), undefined)), false)));
|
|
73
|
+
}
|
|
74
|
+
if (queryParams.length > 0) {
|
|
75
|
+
objectLiteralExpression.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_QUERY_PARAM_ORIGIN_NAME), ts.factory.createIdentifier(constants_1.CNB_REQUEST_PARAM_QUERY_NAME)));
|
|
76
|
+
}
|
|
77
|
+
if (bodyParams) {
|
|
78
|
+
objectLiteralExpression.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_BODY_PARAM_ORIGIN_NAME), ts.factory.createIdentifier(bodyParams.name)));
|
|
79
|
+
}
|
|
80
|
+
requestParams.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(constants_1.CNB_REQUEST_ORIGIN_PARAM_NAME), ts.factory.createObjectLiteralExpression(objectLiteralExpression, true)));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* return await fetch.request<CreateOrganizationRes, CreateOrganizationError>({
|
|
84
|
+
_next_req: params?.req,
|
|
85
|
+
options: params?.options,
|
|
86
|
+
url: `/groups/${id}`,
|
|
87
|
+
_apiTag: "/groups/{id}",
|
|
88
|
+
method: "post",
|
|
89
|
+
params: query,
|
|
90
|
+
data: request,
|
|
91
|
+
...params, <- 目前不需要,先注释
|
|
92
|
+
});
|
|
93
|
+
*/
|
|
94
|
+
// requestParams.push(
|
|
95
|
+
// ts.factory.createSpreadAssignment(
|
|
96
|
+
// ts.factory.createIdentifier(CNB_REQUEST_PARAM_NAME),
|
|
97
|
+
// ),
|
|
98
|
+
// );
|
|
99
|
+
const astNode = // 函数体
|
|
100
|
+
ts.factory.createBlock([
|
|
101
|
+
ts.factory.createReturnStatement(ts.factory.createAwaitExpression(ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(constants_1.CNB_REQUEST_EXAMPLE), ts.factory.createIdentifier(constants_1.CNB_REQUEST_EXAMPLE_FUNCTION)), [fetchSuccessResponse, fetchErrorResponse], [ts.factory.createObjectLiteralExpression(requestParams, true)]))),
|
|
102
|
+
], true);
|
|
103
|
+
return astNode;
|
|
104
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generateFunctionNormalParamsASTNode = generateFunctionNormalParamsASTNode;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const get_keyword_type_node_1 = require("../../utils/get-keyword-type-node");
|
|
39
|
+
function generateFunctionNormalParamsASTNode(param) {
|
|
40
|
+
const keywordTypeNode = (0, get_keyword_type_node_1.getKeywordTypeNode)(param.type);
|
|
41
|
+
if (!keywordTypeNode ||
|
|
42
|
+
keywordTypeNode === ts.SyntaxKind.ObjectKeyword ||
|
|
43
|
+
keywordTypeNode === ts.SyntaxKind.ArrayType) {
|
|
44
|
+
throw new Error(`[${param.type}] ${param.name} is not a valid type!`);
|
|
45
|
+
}
|
|
46
|
+
return ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createIdentifier(param.name), param.required
|
|
47
|
+
? undefined
|
|
48
|
+
: ts.factory.createToken(ts.SyntaxKind.QuestionToken), ts.factory.createKeywordTypeNode(keywordTypeNode), undefined);
|
|
49
|
+
}
|