@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,110 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.generateInterfaceEntrance = generateInterfaceEntrance;
|
|
40
|
+
const ts = __importStar(require("typescript"));
|
|
41
|
+
const format_interface_name_1 = require("../../utils/format-interface-name");
|
|
42
|
+
const generate_interface_ast_node_1 = require("./generate-interface-ast-node");
|
|
43
|
+
const generate_import_interface_ast_node_1 = require("./generate-import-interface-ast-node");
|
|
44
|
+
const debug_1 = __importDefault(require("debug"));
|
|
45
|
+
const generate_record_ast_node_1 = require("../record/generate-record-ast-node");
|
|
46
|
+
const generate_interface_desc_ast_node_1 = require("./generate-interface-desc-ast-node");
|
|
47
|
+
const logger = (0, debug_1.default)('cag:definitions');
|
|
48
|
+
function generateInterfaceEntrance(name, defintion, swaggerDefinitions, defintionsMap) {
|
|
49
|
+
const definitionName = (0, format_interface_name_1.formatInterfaceName)(name);
|
|
50
|
+
const { properties, type, additionalProperties, description } = defintion;
|
|
51
|
+
const nodes = [];
|
|
52
|
+
let dependency = new Set();
|
|
53
|
+
let descriptions = {};
|
|
54
|
+
let jsonData;
|
|
55
|
+
/**
|
|
56
|
+
* definitions中的additionalProperties直接使用type来定义
|
|
57
|
+
* "dto.ActivityCalendar": {
|
|
58
|
+
* "additionalProperties": {
|
|
59
|
+
* "type": "number"
|
|
60
|
+
* },
|
|
61
|
+
* "type": "array"
|
|
62
|
+
* },
|
|
63
|
+
*/
|
|
64
|
+
if (additionalProperties && !properties) {
|
|
65
|
+
const { recordContent, recordDependency, descriptionMap, recordJSON } = (0, generate_record_ast_node_1.generateRecordASTNode)(name, type, additionalProperties, swaggerDefinitions, defintionsMap);
|
|
66
|
+
jsonData = recordJSON;
|
|
67
|
+
if (recordDependency.size > 0) {
|
|
68
|
+
logger(`${definitionName} dependency [${Array.from(recordDependency)}]`);
|
|
69
|
+
recordDependency.forEach((item) => {
|
|
70
|
+
const dependencyItem = defintionsMap[item];
|
|
71
|
+
nodes.push((0, generate_import_interface_ast_node_1.generateImportInterfaceAstNode)(dependencyItem.type, dependencyItem.exportName, dependencyItem.filename));
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// 注释
|
|
75
|
+
if (description) {
|
|
76
|
+
nodes.push(ts.factory.createExpressionStatement(ts.factory.createStringLiteral(`<$${definitionName}$>`)));
|
|
77
|
+
}
|
|
78
|
+
nodes.push(ts.factory.createTypeAliasDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(definitionName), undefined, recordContent));
|
|
79
|
+
dependency = recordDependency;
|
|
80
|
+
descriptions = descriptionMap;
|
|
81
|
+
// 生成interface
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
const { interfaceContent, interfaceDependency, descriptionMap, jsonData: interfaceJSON } = (0, generate_interface_ast_node_1.generateInterfaceASTNode)(name, type, properties, swaggerDefinitions, defintionsMap);
|
|
85
|
+
jsonData = interfaceJSON;
|
|
86
|
+
// 当前interface存在依赖时,创建import代码
|
|
87
|
+
if (interfaceDependency.size > 0) {
|
|
88
|
+
logger(`${definitionName} dependency [${Array.from(interfaceDependency)}]`);
|
|
89
|
+
interfaceDependency.forEach((item) => {
|
|
90
|
+
const dependencyItem = defintionsMap[item];
|
|
91
|
+
nodes.push((0, generate_import_interface_ast_node_1.generateImportInterfaceAstNode)(dependencyItem.type, dependencyItem.exportName, dependencyItem.filename));
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// 添加注释
|
|
95
|
+
if (description) {
|
|
96
|
+
const descNodes = (0, generate_interface_desc_ast_node_1.generateInterfaceDescAstNode)(definitionName, description, descriptionMap);
|
|
97
|
+
nodes.push(...descNodes);
|
|
98
|
+
}
|
|
99
|
+
nodes.push(ts.factory.createInterfaceDeclaration([ts.factory.createToken(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier(definitionName), undefined, undefined, interfaceContent));
|
|
100
|
+
dependency = interfaceDependency;
|
|
101
|
+
descriptions = descriptionMap;
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
exportName: definitionName,
|
|
105
|
+
nodes,
|
|
106
|
+
importList: Array.from(dependency),
|
|
107
|
+
descriptions,
|
|
108
|
+
jsonData
|
|
109
|
+
};
|
|
110
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
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.printerSkillClientModules = printerSkillClientModules;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const get_skills_codegen_target_1 = require("../../utils/get-skills-codegen-target");
|
|
40
|
+
const get_codegen_target_1 = require("../../utils/get-codegen-target");
|
|
41
|
+
const printer_ts_ast_to_js_file_1 = require("./printer-ts-ast-to-js-file");
|
|
42
|
+
async function printerSkillClientModules(data) {
|
|
43
|
+
const { filename, astNode, descriptionMap, category, source } = data;
|
|
44
|
+
const filePath = path.join((0, get_codegen_target_1.getCodegenTarget)(), 'apis', category, `${filename}.ts`);
|
|
45
|
+
const skillScriptDir = path.join((0, get_skills_codegen_target_1.getSkillCodegenTarget)(), 'scripts');
|
|
46
|
+
if (!fs.existsSync(skillScriptDir)) {
|
|
47
|
+
fs.mkdirSync(skillScriptDir);
|
|
48
|
+
}
|
|
49
|
+
const skillScriptModulesDir = path.join(skillScriptDir, 'modules');
|
|
50
|
+
if (!fs.existsSync(skillScriptModulesDir)) {
|
|
51
|
+
fs.mkdirSync(skillScriptModulesDir);
|
|
52
|
+
}
|
|
53
|
+
const skillScriptModulesCategoryDir = path.join(skillScriptModulesDir, category);
|
|
54
|
+
if (!fs.existsSync(skillScriptModulesCategoryDir)) {
|
|
55
|
+
fs.mkdirSync(skillScriptModulesCategoryDir);
|
|
56
|
+
}
|
|
57
|
+
await (0, printer_ts_ast_to_js_file_1.printerTsASTToJsFile)(filePath, skillScriptModulesCategoryDir);
|
|
58
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.printerSkillsClientCore = printerSkillsClientCore;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const debug_1 = __importDefault(require("debug"));
|
|
43
|
+
const get_skills_codegen_target_1 = require("../../utils/get-skills-codegen-target");
|
|
44
|
+
const glob_1 = require("glob");
|
|
45
|
+
const printer_ts_ast_to_js_file_1 = require("./printer-ts-ast-to-js-file");
|
|
46
|
+
const logger = (0, debug_1.default)('csg:cli-core');
|
|
47
|
+
async function printerSkillsClientCore(helpData) {
|
|
48
|
+
const packageDir = path.resolve(__dirname, '../../../');
|
|
49
|
+
const clientDir = path.join(packageDir, 'client');
|
|
50
|
+
const requestFiles = glob_1.glob.sync(`${clientDir}/**/*.ts`);
|
|
51
|
+
const skillScriptDir = path.join((0, get_skills_codegen_target_1.getSkillCodegenTarget)(), 'scripts');
|
|
52
|
+
if (!fs.existsSync(skillScriptDir)) {
|
|
53
|
+
fs.mkdirSync(skillScriptDir);
|
|
54
|
+
}
|
|
55
|
+
const skillScriptCoreDir = path.join(skillScriptDir, 'core');
|
|
56
|
+
if (!fs.existsSync(skillScriptCoreDir)) {
|
|
57
|
+
fs.mkdirSync(skillScriptCoreDir);
|
|
58
|
+
}
|
|
59
|
+
for (const file of requestFiles) {
|
|
60
|
+
logger(`print ${file}`);
|
|
61
|
+
const relativePath = path.relative(clientDir, file);
|
|
62
|
+
const { dir } = path.parse(relativePath);
|
|
63
|
+
await (0, printer_ts_ast_to_js_file_1.printerTsASTToJsFile)(file, path.join(skillScriptCoreDir, dir));
|
|
64
|
+
}
|
|
65
|
+
// 输出help数据
|
|
66
|
+
const helpFile = path.join(skillScriptCoreDir, 'help.json');
|
|
67
|
+
fs.writeFileSync(helpFile, JSON.stringify(helpData, null, 2));
|
|
68
|
+
logger(`print ${helpFile}`);
|
|
69
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.printerApiASTToSourceFile = printerApiASTToSourceFile;
|
|
40
|
+
const ts = __importStar(require("typescript"));
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const fs_1 = __importDefault(require("fs"));
|
|
43
|
+
const get_codegen_target_1 = require("../../utils/get-codegen-target");
|
|
44
|
+
const get_generate_license_1 = require("../../utils/get-generate-license");
|
|
45
|
+
const prettier = __importStar(require("prettier"));
|
|
46
|
+
const prettier_1 = require("../../constants/prettier");
|
|
47
|
+
async function printerApiASTToSourceFile(data) {
|
|
48
|
+
const { filename, astNode, descriptionMap, category, source } = data;
|
|
49
|
+
const codegenTarget = (0, get_codegen_target_1.getCodegenTarget)();
|
|
50
|
+
const sourceFile = ts.factory.createSourceFile(astNode, ts.factory.createToken(ts.SyntaxKind.EndOfFileToken), ts.NodeFlags.None);
|
|
51
|
+
const generateLicense = (0, get_generate_license_1.getApiGenerateLicense)({ source });
|
|
52
|
+
const printer = ts.createPrinter({
|
|
53
|
+
newLine: ts.NewLineKind.LineFeed,
|
|
54
|
+
});
|
|
55
|
+
let result = printer.printFile(sourceFile);
|
|
56
|
+
const descKeys = Object.keys(descriptionMap);
|
|
57
|
+
for (let i = 0; i < descKeys.length; i++) {
|
|
58
|
+
const descKey = descKeys[i];
|
|
59
|
+
const descItem = descriptionMap[descKey];
|
|
60
|
+
const descPlaceholder = `"<$${descKey}$>";`;
|
|
61
|
+
// 替换placeholder
|
|
62
|
+
let replaceValue = `\n/**`;
|
|
63
|
+
if (descItem.description !== undefined) {
|
|
64
|
+
replaceValue += `\n* @description ${descItem.description}`;
|
|
65
|
+
}
|
|
66
|
+
if (descItem.tags !== undefined) {
|
|
67
|
+
replaceValue += `\n* @tags ${descItem.tags}`;
|
|
68
|
+
}
|
|
69
|
+
if (descItem.name !== undefined) {
|
|
70
|
+
replaceValue += `\n* @name ${descItem.name}`;
|
|
71
|
+
}
|
|
72
|
+
if (descItem.summary !== undefined) {
|
|
73
|
+
replaceValue += `\n* @summary ${descItem.summary}`;
|
|
74
|
+
}
|
|
75
|
+
if (descItem.request !== undefined) {
|
|
76
|
+
replaceValue += `\n* @request ${descItem.request}`;
|
|
77
|
+
}
|
|
78
|
+
if (descItem.secure !== undefined) {
|
|
79
|
+
replaceValue += `\n* @secure ${descItem.secure}`;
|
|
80
|
+
}
|
|
81
|
+
if (descItem.default !== undefined) {
|
|
82
|
+
replaceValue += `\n* @default ${descItem.default}`;
|
|
83
|
+
}
|
|
84
|
+
if (descItem.param !== undefined) {
|
|
85
|
+
replaceValue += `\n\n----------------------------------`;
|
|
86
|
+
if (Object.prototype.toString.call(descItem.param) === '[object Array]') {
|
|
87
|
+
const replaceContent = descItem.param
|
|
88
|
+
.map(formatParamDoc)
|
|
89
|
+
.join('\n');
|
|
90
|
+
replaceValue += `\n${replaceContent}`;
|
|
91
|
+
}
|
|
92
|
+
else if (typeof descItem.param === 'string') {
|
|
93
|
+
replaceValue += `\n${formatParamDoc(descItem.param, i)}`;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
replaceValue += `\n* @param ${descItem.param}`;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
replaceValue += `\n*/`;
|
|
100
|
+
result = result.replace(descPlaceholder, replaceValue);
|
|
101
|
+
}
|
|
102
|
+
result = await prettier.format(result, {
|
|
103
|
+
parser: 'typescript', // 指定解析器
|
|
104
|
+
tabWidth: prettier_1.TAB_WIDTH, // <-- 这里设置缩进为2个空格
|
|
105
|
+
useTabs: false, // 确保使用空格而不是制表符
|
|
106
|
+
});
|
|
107
|
+
// 输出api文件
|
|
108
|
+
const dir = path_1.default.join(`${codegenTarget}/apis`);
|
|
109
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
110
|
+
fs_1.default.mkdirSync(dir);
|
|
111
|
+
}
|
|
112
|
+
if (!!category) {
|
|
113
|
+
const categoryDir = path_1.default.join(`${dir}/${category}`);
|
|
114
|
+
if (!fs_1.default.existsSync(categoryDir)) {
|
|
115
|
+
fs_1.default.mkdirSync(categoryDir);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
fs_1.default.writeFileSync(path_1.default.join(dir, category, `${filename}.ts`), `${generateLicense}\n${result}`);
|
|
119
|
+
}
|
|
120
|
+
function formatParamDoc(item, index) {
|
|
121
|
+
const chunks = item.split(' ');
|
|
122
|
+
const [type, ...description] = chunks;
|
|
123
|
+
let param = `* @param {${type}} arg${index}`;
|
|
124
|
+
if (chunks.length > 1) {
|
|
125
|
+
param = `* @param {${type}} arg${index} - ${description.join(' ')}`;
|
|
126
|
+
}
|
|
127
|
+
return param;
|
|
128
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.printerDefinitionASTToSourceFile = printerDefinitionASTToSourceFile;
|
|
40
|
+
const ts = __importStar(require("typescript"));
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const fs_1 = __importDefault(require("fs"));
|
|
43
|
+
const get_codegen_target_1 = require("../../utils/get-codegen-target");
|
|
44
|
+
const get_generate_license_1 = require("../../utils/get-generate-license");
|
|
45
|
+
const get_printer_file_prefix_1 = require("../../utils/get-printer-file-prefix");
|
|
46
|
+
const prettier = __importStar(require("prettier"));
|
|
47
|
+
const prettier_1 = require("../../constants/prettier");
|
|
48
|
+
const constants_1 = require("../../constants");
|
|
49
|
+
async function printerDefinitionASTToSourceFile(data) {
|
|
50
|
+
const { filename, astNode, type, descriptions, source } = data;
|
|
51
|
+
const codegenTarget = (0, get_codegen_target_1.getCodegenTarget)();
|
|
52
|
+
const sourceFile = ts.factory.createSourceFile(astNode, ts.factory.createToken(ts.SyntaxKind.EndOfFileToken), ts.NodeFlags.None);
|
|
53
|
+
const generateLicense = (0, get_generate_license_1.getGenerateLicense)({ source });
|
|
54
|
+
const printer = ts.createPrinter({
|
|
55
|
+
newLine: ts.NewLineKind.LineFeed,
|
|
56
|
+
});
|
|
57
|
+
let result = printer.printFile(sourceFile);
|
|
58
|
+
const descKeys = Object.keys(descriptions);
|
|
59
|
+
for (const descKey of descKeys) {
|
|
60
|
+
result = result.replace(`"${descKey}";`, descriptions[descKey]);
|
|
61
|
+
}
|
|
62
|
+
// enum的content内注释需要特殊处理
|
|
63
|
+
if (type === constants_1.PrinterFilterType.ENUM) {
|
|
64
|
+
for (const descKey of descKeys) {
|
|
65
|
+
result = result.replace(`"${descKey}",`, descriptions[descKey]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
result = await prettier.format(result, {
|
|
69
|
+
parser: 'typescript', // 指定解析器
|
|
70
|
+
tabWidth: prettier_1.TAB_WIDTH, // <-- 这里设置缩进为2个空格
|
|
71
|
+
useTabs: false, // 确保使用空格而不是制表符
|
|
72
|
+
});
|
|
73
|
+
const fileTypeDir = (0, get_printer_file_prefix_1.getPrinterFilePrefix)(type);
|
|
74
|
+
// 输出interface文件
|
|
75
|
+
const dir = path_1.default.join(`${codegenTarget}/${fileTypeDir}`);
|
|
76
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
77
|
+
fs_1.default.mkdirSync(dir);
|
|
78
|
+
}
|
|
79
|
+
const printerFilePath = path_1.default.join(dir, `${filename}.ts`);
|
|
80
|
+
fs_1.default.writeFileSync(printerFilePath, `${generateLicense}\n${result}`);
|
|
81
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.printerTsASTToJsFile = printerTsASTToJsFile;
|
|
40
|
+
const babel = __importStar(require("@babel/core"));
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const debug_1 = __importDefault(require("debug"));
|
|
44
|
+
const skills_1 = require("../../constants/skills");
|
|
45
|
+
const logger = (0, debug_1.default)('csg:babel');
|
|
46
|
+
async function printerTsASTToJsFile(sourceFile, outputDir) {
|
|
47
|
+
const tsCode = fs.readFileSync(sourceFile, 'utf8');
|
|
48
|
+
const { name, base } = path.parse(sourceFile);
|
|
49
|
+
const result = babel.transformSync(tsCode, {
|
|
50
|
+
filename: base,
|
|
51
|
+
presets: [
|
|
52
|
+
['@babel/preset-env', { targets: { node: '20' } }],
|
|
53
|
+
'@babel/preset-typescript',
|
|
54
|
+
],
|
|
55
|
+
plugins: [
|
|
56
|
+
[
|
|
57
|
+
'transform-define',
|
|
58
|
+
{
|
|
59
|
+
'process.env.CNB_CLI_CMD': process.env.CNB_CLI_CMD || skills_1.CNB_CLI_PROD_CMD,
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
],
|
|
63
|
+
ast: false,
|
|
64
|
+
sourceMaps: false,
|
|
65
|
+
});
|
|
66
|
+
const targetDir = path.join(outputDir);
|
|
67
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
68
|
+
if (result === null || result === void 0 ? void 0 : result.code) {
|
|
69
|
+
fs.writeFileSync(path.join(targetDir, `${name}.js`), result.code);
|
|
70
|
+
logger(`print: ${sourceFile} -> ${path.join(targetDir, `${name}.js`)}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
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.generateRecordAnchorASTNode = generateRecordAnchorASTNode;
|
|
7
|
+
const debug_1 = __importDefault(require("debug"));
|
|
8
|
+
const get_defintion_name_1 = require("../../utils/get-defintion-name");
|
|
9
|
+
const swagger_definitions_to_ast_node_1 = require("../swagger-definitions-to-ast-node");
|
|
10
|
+
const logger = (0, debug_1.default)('cag:record');
|
|
11
|
+
function generateRecordAnchorASTNode(name, ref, definitions, defintionsMap, interfaceDependency) {
|
|
12
|
+
const refKey = (0, get_defintion_name_1.getDefinitionName)(ref);
|
|
13
|
+
const refTarget = definitions[refKey];
|
|
14
|
+
logger(`[${name}] additionalProperties is anchor point, $ref -> ${refKey}`);
|
|
15
|
+
(0, swagger_definitions_to_ast_node_1.swaggerDefinitionsToASTNode)(refKey, refTarget, definitions, defintionsMap);
|
|
16
|
+
// 检查锚点是否正确解析AST
|
|
17
|
+
if (!defintionsMap[refKey]) {
|
|
18
|
+
throw new Error(`[${name}] ${refKey} Object anchor point is not found!`);
|
|
19
|
+
}
|
|
20
|
+
// 添加依赖记录
|
|
21
|
+
interfaceDependency.add(refKey);
|
|
22
|
+
// 获取锚点对应的AST
|
|
23
|
+
const anchorPointItem = defintionsMap[refKey];
|
|
24
|
+
return anchorPointItem;
|
|
25
|
+
}
|