@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,134 @@
|
|
|
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.generateRecordASTNode = generateRecordASTNode;
|
|
40
|
+
const ts = __importStar(require("typescript"));
|
|
41
|
+
const constants_1 = require("../../constants");
|
|
42
|
+
const get_keyword_type_node_1 = require("../../utils/get-keyword-type-node");
|
|
43
|
+
const generate_record_anchor_ast_node_1 = require("./generate-record-anchor-ast-node");
|
|
44
|
+
const debug_1 = __importDefault(require("debug"));
|
|
45
|
+
const logger = (0, debug_1.default)('cag:record');
|
|
46
|
+
function generateRecordASTNode(name, type, additionalProperties, swaggerDefinitions, defintionsMap) {
|
|
47
|
+
logger(`[${name}] generate record start...`);
|
|
48
|
+
const recordDependency = new Set();
|
|
49
|
+
const propertieDesc = {};
|
|
50
|
+
let recordContent;
|
|
51
|
+
let recordNode;
|
|
52
|
+
const jsonData = {
|
|
53
|
+
type: 'object',
|
|
54
|
+
};
|
|
55
|
+
if (type === constants_1.DefinitionsType.OBJECT) {
|
|
56
|
+
const ref = additionalProperties.type === constants_1.DefinitionsType.ARRAY
|
|
57
|
+
? additionalProperties.items
|
|
58
|
+
.$ref
|
|
59
|
+
: additionalProperties === null || additionalProperties === void 0 ? void 0 : additionalProperties.$ref;
|
|
60
|
+
// 先处理锚点
|
|
61
|
+
if (ref) {
|
|
62
|
+
logger(`[${name}] is anchor point, $ref -> ${ref}`);
|
|
63
|
+
const anchorPointItem = (0, generate_record_anchor_ast_node_1.generateRecordAnchorASTNode)(name, ref, swaggerDefinitions, defintionsMap, recordDependency);
|
|
64
|
+
jsonData.properties = anchorPointItem.jsonData;
|
|
65
|
+
const typeReferenceNode = ts.factory.createTypeReferenceNode(ts.factory.createIdentifier(anchorPointItem.exportName), undefined);
|
|
66
|
+
recordContent = [
|
|
67
|
+
ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
|
68
|
+
additionalProperties.type === constants_1.DefinitionsType.ARRAY
|
|
69
|
+
? ts.factory.createArrayTypeNode(typeReferenceNode)
|
|
70
|
+
: typeReferenceNode,
|
|
71
|
+
];
|
|
72
|
+
// 处理普通类型数据
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const type = additionalProperties.type === constants_1.DefinitionsType.ARRAY
|
|
76
|
+
? additionalProperties.items
|
|
77
|
+
.type
|
|
78
|
+
: additionalProperties === null || additionalProperties === void 0 ? void 0 : additionalProperties.type;
|
|
79
|
+
logger(`[${name}] is Record<string, ${type || 'any'}>`);
|
|
80
|
+
if (additionalProperties.type === constants_1.DefinitionsType.ARRAY) {
|
|
81
|
+
jsonData.type = 'array';
|
|
82
|
+
jsonData.items = {
|
|
83
|
+
type: type || 'any',
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
jsonData.type = 'object';
|
|
88
|
+
jsonData.additionalProperties = {
|
|
89
|
+
type: type || 'any',
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const keywordTypeSyntaxKind = (0, get_keyword_type_node_1.getKeywordTypeNode)(type);
|
|
93
|
+
if (keywordTypeSyntaxKind === ts.SyntaxKind.ArrayType) {
|
|
94
|
+
throw new Error('[${name}] type: array, defintion other than object is not supported!');
|
|
95
|
+
}
|
|
96
|
+
let keywordNode;
|
|
97
|
+
if (keywordTypeSyntaxKind === ts.SyntaxKind.UnknownKeyword ||
|
|
98
|
+
keywordTypeSyntaxKind === ts.SyntaxKind.ObjectKeyword) {
|
|
99
|
+
keywordNode = ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
keywordNode = ts.factory.createKeywordTypeNode(keywordTypeSyntaxKind);
|
|
103
|
+
}
|
|
104
|
+
recordContent = [
|
|
105
|
+
ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
|
106
|
+
additionalProperties.type === constants_1.DefinitionsType.ARRAY
|
|
107
|
+
? ts.factory.createArrayTypeNode(keywordNode)
|
|
108
|
+
: keywordNode,
|
|
109
|
+
];
|
|
110
|
+
}
|
|
111
|
+
recordNode = ts.factory.createTypeReferenceNode(ts.factory.createIdentifier('Record'), recordContent);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// 兜底处理
|
|
115
|
+
if (type === constants_1.DefinitionsType.ARRAY) {
|
|
116
|
+
recordNode = ts.factory.createArrayTypeNode(ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword));
|
|
117
|
+
logger(`[${name}] is Record<string, ${type || 'any'}[]>`);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
const typeNode = (0, get_keyword_type_node_1.getKeywordTypeNode)(type);
|
|
121
|
+
if (typeNode === ts.SyntaxKind.ArrayType) {
|
|
122
|
+
throw new Error(`[${name}] type: array, defintion other than object is not supported!`);
|
|
123
|
+
}
|
|
124
|
+
recordNode = ts.factory.createKeywordTypeNode(typeNode || ts.SyntaxKind.AnyKeyword);
|
|
125
|
+
logger(`[${name}] is Record<string, any>`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
recordContent: recordNode,
|
|
130
|
+
recordDependency,
|
|
131
|
+
descriptionMap: propertieDesc,
|
|
132
|
+
recordJSON: jsonData,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.swaggerDefinitionsToASTNode = swaggerDefinitionsToASTNode;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const generate_map_item_1 = require("../utils/generate-map-item");
|
|
6
|
+
const get_defintion_type_1 = require("../utils/get-defintion-type");
|
|
7
|
+
const generate_enum_ast_node_1 = require("./enum/generate-enum-ast-node");
|
|
8
|
+
const generate_interface_entrance_1 = require("./interface/generate-interface-entrance");
|
|
9
|
+
function swaggerDefinitionsToASTNode(key, defintion, swaggerDefinitions, defintionsMap) {
|
|
10
|
+
const defintionType = (0, get_defintion_type_1.getDefinitionType)(defintion);
|
|
11
|
+
let tmp;
|
|
12
|
+
// 判断是enum还是interface
|
|
13
|
+
if (defintionType === constants_1.PrinterFilterType.ENUM) {
|
|
14
|
+
tmp = (0, generate_map_item_1.generateMapItem)(key, constants_1.PrinterFilterType.ENUM);
|
|
15
|
+
const { exportName, nodes, importList, descriptions, jsonData } = (0, generate_enum_ast_node_1.generateEnumASTNode)(key, defintion);
|
|
16
|
+
tmp.astNode = nodes;
|
|
17
|
+
tmp.exportName = exportName;
|
|
18
|
+
tmp.dependency = importList;
|
|
19
|
+
tmp.descriptions = descriptions;
|
|
20
|
+
tmp.jsonData = jsonData;
|
|
21
|
+
// eslint-disable-next-line no-param-reassign
|
|
22
|
+
defintionsMap[key] = tmp;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
tmp = (0, generate_map_item_1.generateMapItem)(key, constants_1.PrinterFilterType.INTERFACE);
|
|
26
|
+
const { exportName, nodes, importList, descriptions, jsonData } = (0, generate_interface_entrance_1.generateInterfaceEntrance)(key, defintion, swaggerDefinitions, defintionsMap);
|
|
27
|
+
tmp.astNode = nodes;
|
|
28
|
+
tmp.exportName = exportName;
|
|
29
|
+
tmp.dependency = importList;
|
|
30
|
+
tmp.descriptions = descriptions;
|
|
31
|
+
tmp.jsonData = jsonData;
|
|
32
|
+
// eslint-disable-next-line no-param-reassign
|
|
33
|
+
defintionsMap[key] = tmp;
|
|
34
|
+
}
|
|
35
|
+
return defintionsMap;
|
|
36
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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.mdArrayTypeContentAstNode = mdArrayTypeContentAstNode;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const get_defintion_name_1 = require("../../utils/get-defintion-name");
|
|
9
|
+
const get_keyword_type_node_1 = require("../../utils/get-keyword-type-node");
|
|
10
|
+
function mdArrayTypeContentAstNode(defintionsMap, operationId, schema) {
|
|
11
|
+
let dependencies = new Set();
|
|
12
|
+
let returnTypeName = 'any';
|
|
13
|
+
let returnType = typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.AnyKeyword));
|
|
14
|
+
const { items } = schema;
|
|
15
|
+
// 引用定义类型
|
|
16
|
+
if (items === null || items === void 0 ? void 0 : items.$ref) {
|
|
17
|
+
const defintionName = (0, get_defintion_name_1.getDefinitionName)(items === null || items === void 0 ? void 0 : items.$ref);
|
|
18
|
+
returnTypeName = defintionName;
|
|
19
|
+
const importResponseInterfaceName = defintionsMap[defintionName];
|
|
20
|
+
if (!importResponseInterfaceName) {
|
|
21
|
+
throw new Error(`${operationId} response ref ${defintionName} not found`);
|
|
22
|
+
}
|
|
23
|
+
returnType = typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier(importResponseInterfaceName.exportName), undefined));
|
|
24
|
+
dependencies.add(defintionName);
|
|
25
|
+
// 非引用类型
|
|
26
|
+
}
|
|
27
|
+
else if (items === null || items === void 0 ? void 0 : items.type) {
|
|
28
|
+
const keywordTypeNode = (0, get_keyword_type_node_1.getKeywordTypeNode)(items.type);
|
|
29
|
+
if (!keywordTypeNode || keywordTypeNode === typescript_1.default.SyntaxKind.ObjectKeyword) {
|
|
30
|
+
throw new Error(`[${operationId}] response schema [${items.type}] is not a valid type!`);
|
|
31
|
+
}
|
|
32
|
+
// 多维数组
|
|
33
|
+
if (keywordTypeNode === typescript_1.default.SyntaxKind.ArrayType) {
|
|
34
|
+
const { returnType: subReturnType, returnTypeName: subReturnTypeName, dependencies: subDependencies, } = mdArrayTypeContentAstNode(defintionsMap, operationId, items);
|
|
35
|
+
if (subDependencies && subDependencies.size > 0) {
|
|
36
|
+
dependencies = new Set([...dependencies, ...subDependencies]);
|
|
37
|
+
}
|
|
38
|
+
returnType = typescript_1.default.factory.createArrayTypeNode(subReturnType);
|
|
39
|
+
returnTypeName = subReturnTypeName;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
returnType = typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(keywordTypeNode));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return { returnType, dependencies, returnTypeName };
|
|
46
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeLiteralLabel = void 0;
|
|
4
|
+
var TypeLiteralLabel;
|
|
5
|
+
(function (TypeLiteralLabel) {
|
|
6
|
+
TypeLiteralLabel["Native"] = "native";
|
|
7
|
+
TypeLiteralLabel["Quoted"] = "quoted";
|
|
8
|
+
})(TypeLiteralLabel || (exports.TypeLiteralLabel = TypeLiteralLabel = {}));
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefinitionsKeywordTypeNodeKey = exports.DefinitionsType = void 0;
|
|
4
|
+
var DefinitionsType;
|
|
5
|
+
(function (DefinitionsType) {
|
|
6
|
+
DefinitionsType["OBJECT"] = "object";
|
|
7
|
+
DefinitionsType["ARRAY"] = "array";
|
|
8
|
+
DefinitionsType["STRING"] = "string";
|
|
9
|
+
DefinitionsType["NUMBER"] = "number";
|
|
10
|
+
DefinitionsType["INTEGER"] = "integer";
|
|
11
|
+
})(DefinitionsType || (exports.DefinitionsType = DefinitionsType = {}));
|
|
12
|
+
var DefinitionsKeywordTypeNodeKey;
|
|
13
|
+
(function (DefinitionsKeywordTypeNodeKey) {
|
|
14
|
+
DefinitionsKeywordTypeNodeKey["string"] = "string";
|
|
15
|
+
DefinitionsKeywordTypeNodeKey["number"] = "number";
|
|
16
|
+
DefinitionsKeywordTypeNodeKey["boolean"] = "boolean";
|
|
17
|
+
DefinitionsKeywordTypeNodeKey["integer"] = "integer";
|
|
18
|
+
DefinitionsKeywordTypeNodeKey["array"] = "array";
|
|
19
|
+
DefinitionsKeywordTypeNodeKey["object"] = "object";
|
|
20
|
+
})(DefinitionsKeywordTypeNodeKey || (exports.DefinitionsKeywordTypeNodeKey = DefinitionsKeywordTypeNodeKey = {}));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CONFIG_FILE_NAME = exports.INTERFACE_FILE_DIR = exports.DEFAULT_SKILLSGEN_TARGET_DIR = exports.DEFAULT_CODEGEN_TARGET_DIR = exports.PrinterFilterType = void 0;
|
|
4
|
+
var PrinterFilterType;
|
|
5
|
+
(function (PrinterFilterType) {
|
|
6
|
+
PrinterFilterType["INTERFACE"] = "interface";
|
|
7
|
+
PrinterFilterType["ENUM"] = "enum";
|
|
8
|
+
})(PrinterFilterType || (exports.PrinterFilterType = PrinterFilterType = {}));
|
|
9
|
+
exports.DEFAULT_CODEGEN_TARGET_DIR = 'generated';
|
|
10
|
+
exports.DEFAULT_SKILLSGEN_TARGET_DIR = 'skills';
|
|
11
|
+
exports.INTERFACE_FILE_DIR = 'interface';
|
|
12
|
+
exports.CONFIG_FILE_NAME = 'cag.config.js';
|
|
@@ -0,0 +1,20 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./definitions"), exports);
|
|
18
|
+
__exportStar(require("./file"), exports);
|
|
19
|
+
__exportStar(require("./request"), exports);
|
|
20
|
+
__exportStar(require("./actions"), exports);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CNB_REQUEST_BODY_PARAM_ORIGIN_NAME = exports.CNB_REQUEST_QUERY_PARAM_ORIGIN_NAME = exports.CNB_REQUEST_PATH_PARAM_ORIGIN_NAME = exports.CNB_REQUEST_ORIGIN_PARAM_NAME = exports.CNB_REDUX_ACTION_PACKAGENAME = exports.CNB_REDUX_ACTION_THUNK = exports.CNB_REQUEST_CONFIG_DATA = exports.CNB_REQUEST_CONFIG_METHOD = exports.CNB_REQUEST_CONFIG_API_TAG = exports.CNB_REQUEST_CONFIG_URL = exports.CNB_REQUEST_CONFIG_NEXT_REQ = exports.CNB_REQUEST_EXAMPLE_FUNCTION = exports.CNB_REQUEST_EXAMPLE = exports.AXIOS_CONFIG_INTERFACE = exports.CNB_REQUEST_RESULT_INTERFACE = exports.CNB_REQUEST_OPTIONS_NAME_INTERFACE = exports.CNB_REDUX_ACTION_PARAM_NAME = exports.CNB_REQUEST_FUNCTION_ERROR_RETURN_TYPE_SUFFIX_NAME = exports.CNB_REQUEST_FUNCTION_SUCCESS_RETURN_TYPE_SUFFIX_NAME = exports.CNB_REQUEST_PARAM_REQUEST_NAME = exports.CNB_REQUEST_PARAM_QUERY_NAME = exports.CNB_REQUEST_PARAM_QUERY_KEY_NAME = exports.CNB_REQUEST_PARAM_INCOMING_NAME = exports.CNB_REQUEST_PARAM_REQ_NAME = exports.CNB_REQUEST_CONFIG_NAME = exports.CNB_REQUEST_AXIOS_CONFIG_NAME = exports.CNB_REQUEST_PARAM_OPTIONS_NAME = exports.CNB_REQUEST_PARAM_TYPE_NAME = void 0;
|
|
4
|
+
exports.CNB_REQUEST_PARAM_TYPE_NAME = 'RequestConfig';
|
|
5
|
+
exports.CNB_REQUEST_PARAM_OPTIONS_NAME = 'options';
|
|
6
|
+
exports.CNB_REQUEST_AXIOS_CONFIG_NAME = 'axiosConfig';
|
|
7
|
+
exports.CNB_REQUEST_CONFIG_NAME = 'config';
|
|
8
|
+
exports.CNB_REQUEST_PARAM_REQ_NAME = 'req';
|
|
9
|
+
exports.CNB_REQUEST_PARAM_INCOMING_NAME = 'IncomingMessage';
|
|
10
|
+
exports.CNB_REQUEST_PARAM_QUERY_KEY_NAME = 'params';
|
|
11
|
+
exports.CNB_REQUEST_PARAM_QUERY_NAME = 'query';
|
|
12
|
+
exports.CNB_REQUEST_PARAM_REQUEST_NAME = 'request';
|
|
13
|
+
exports.CNB_REQUEST_FUNCTION_SUCCESS_RETURN_TYPE_SUFFIX_NAME = 'Res';
|
|
14
|
+
exports.CNB_REQUEST_FUNCTION_ERROR_RETURN_TYPE_SUFFIX_NAME = 'Error';
|
|
15
|
+
exports.CNB_REDUX_ACTION_PARAM_NAME = 'params';
|
|
16
|
+
// 请求函数各种定义
|
|
17
|
+
exports.CNB_REQUEST_OPTIONS_NAME_INTERFACE = 'CnbRequestOptions';
|
|
18
|
+
exports.CNB_REQUEST_RESULT_INTERFACE = 'CnbRequestResult';
|
|
19
|
+
exports.AXIOS_CONFIG_INTERFACE = 'AxiosRequestConfig';
|
|
20
|
+
exports.CNB_REQUEST_EXAMPLE = 'fetch';
|
|
21
|
+
exports.CNB_REQUEST_EXAMPLE_FUNCTION = 'request';
|
|
22
|
+
// 请求config参数
|
|
23
|
+
exports.CNB_REQUEST_CONFIG_NEXT_REQ = '_next_req';
|
|
24
|
+
exports.CNB_REQUEST_CONFIG_URL = 'url';
|
|
25
|
+
exports.CNB_REQUEST_CONFIG_API_TAG = '_apiTag';
|
|
26
|
+
exports.CNB_REQUEST_CONFIG_METHOD = 'method';
|
|
27
|
+
exports.CNB_REQUEST_CONFIG_DATA = 'data';
|
|
28
|
+
// redux action
|
|
29
|
+
exports.CNB_REDUX_ACTION_THUNK = 'createAsyncThunk';
|
|
30
|
+
exports.CNB_REDUX_ACTION_PACKAGENAME = '@reduxjs/toolkit';
|
|
31
|
+
// 原始请求参数
|
|
32
|
+
exports.CNB_REQUEST_ORIGIN_PARAM_NAME = '_originParams';
|
|
33
|
+
exports.CNB_REQUEST_PATH_PARAM_ORIGIN_NAME = 'path';
|
|
34
|
+
exports.CNB_REQUEST_QUERY_PARAM_ORIGIN_NAME = 'query';
|
|
35
|
+
exports.CNB_REQUEST_BODY_PARAM_ORIGIN_NAME = 'body';
|
|
@@ -0,0 +1,36 @@
|
|
|
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.generateApi = generateApi;
|
|
7
|
+
const generate_request_function_1 = require("./codegen/api/generate-request-function");
|
|
8
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
|
+
const get_config_1 = require("./utils/get-config");
|
|
10
|
+
const logger = (0, debug_1.default)('cag:api');
|
|
11
|
+
function generateApi(paths, definitions, defintionsMap) {
|
|
12
|
+
const config = (0, get_config_1.getConfig)();
|
|
13
|
+
const pathList = Object.keys(paths);
|
|
14
|
+
const requestMap = {};
|
|
15
|
+
let total = 0;
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
17
|
+
for (let i = 0; i < pathList.length; i++) {
|
|
18
|
+
const path = pathList[i];
|
|
19
|
+
const methods = paths[path];
|
|
20
|
+
requestMap[path] = requestMap[path] || {};
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
for (const method in methods) {
|
|
23
|
+
if (config.whitelist && (!config.whitelist[path] || !config.whitelist[path].includes(method)))
|
|
24
|
+
continue;
|
|
25
|
+
const methodName = method;
|
|
26
|
+
const methodDefinitions = methods[methodName];
|
|
27
|
+
if (!methodDefinitions) {
|
|
28
|
+
throw new Error(`[${methodName}] ${path} is not defined`);
|
|
29
|
+
}
|
|
30
|
+
requestMap[path][methodName] = (0, generate_request_function_1.generateRequestFunction)(path, methodName, methodDefinitions, definitions, defintionsMap);
|
|
31
|
+
logger(`generate success [${methodName}] ${path} >> ${requestMap[path][methodName].filename}.ts`);
|
|
32
|
+
total += 1;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return [requestMap, total];
|
|
36
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
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.generateDefinitions = generateDefinitions;
|
|
7
|
+
const swagger_definitions_to_ast_node_1 = require("./codegen/swagger-definitions-to-ast-node");
|
|
8
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
|
+
const logger = (0, debug_1.default)('cag:definitions');
|
|
10
|
+
function generateDefinitions(swaggerDefinitions) {
|
|
11
|
+
const defintionsMap = {};
|
|
12
|
+
const defintionKeys = Object.keys(swaggerDefinitions);
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
14
|
+
for (let i = 0; i < defintionKeys.length; i++) {
|
|
15
|
+
const key = defintionKeys[i];
|
|
16
|
+
const value = swaggerDefinitions[key];
|
|
17
|
+
// 已经生成过,跳过
|
|
18
|
+
if (defintionsMap[key]) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
(0, swagger_definitions_to_ast_node_1.swaggerDefinitionsToASTNode)(key, value, swaggerDefinitions, defintionsMap);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.error(err);
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
logger(`generate success ${key} >> ${defintionsMap[key].exportName}.ts`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return defintionsMap;
|
|
32
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
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.generateEntrypoint = generateEntrypoint;
|
|
40
|
+
const fs_1 = __importDefault(require("fs"));
|
|
41
|
+
const rimraf = __importStar(require("rimraf"));
|
|
42
|
+
const generate_defintions_1 = require("./generate-defintions");
|
|
43
|
+
const get_codegen_target_1 = require("./utils/get-codegen-target");
|
|
44
|
+
const get_swagger_file_1 = require("./utils/get-swagger-file");
|
|
45
|
+
const debug_1 = __importDefault(require("debug"));
|
|
46
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
47
|
+
const printer_swagger_definitions_to_file_1 = require("./codegen/printer/printer-swagger-definitions-to-file");
|
|
48
|
+
const constants_1 = require("./constants");
|
|
49
|
+
const generate_map_item_1 = require("./utils/generate-map-item");
|
|
50
|
+
const printer_swagger_api_to_file_1 = require("./codegen/printer/printer-swagger-api-to-file");
|
|
51
|
+
const generate_api_1 = require("./generate-api");
|
|
52
|
+
const progress_1 = require("./utils/progress");
|
|
53
|
+
const logger = (0, debug_1.default)('cag:main');
|
|
54
|
+
async function generateEntrypoint() {
|
|
55
|
+
const swaggerContent = await (0, get_swagger_file_1.getSwaggerFile)();
|
|
56
|
+
const codegenTarget = (0, get_codegen_target_1.getCodegenTarget)();
|
|
57
|
+
if (fs_1.default.existsSync(codegenTarget)) {
|
|
58
|
+
rimraf.sync(codegenTarget);
|
|
59
|
+
logger(`Delete ${codegenTarget} success`);
|
|
60
|
+
}
|
|
61
|
+
fs_1.default.mkdirSync(codegenTarget);
|
|
62
|
+
logger(`Create ${codegenTarget} success`);
|
|
63
|
+
const { swagger, info, definitions, paths } = swaggerContent;
|
|
64
|
+
// 保存所有定义的记录
|
|
65
|
+
let defintionsMap = {};
|
|
66
|
+
let _requestMap = {};
|
|
67
|
+
if (definitions) {
|
|
68
|
+
const definitionsSpinner = (0, progress_1.startProgress)('Generate Definitions...');
|
|
69
|
+
defintionsMap = (0, generate_defintions_1.generateDefinitions)(definitions);
|
|
70
|
+
(0, progress_1.successProgress)('Generate Definitions To AST Node Success!', definitionsSpinner);
|
|
71
|
+
const interfaceIndexFileAstNode = (0, generate_map_item_1.generateMapItem)('index', constants_1.PrinterFilterType.INTERFACE);
|
|
72
|
+
const enumfaceIndexFileAstNode = (0, generate_map_item_1.generateMapItem)('index', constants_1.PrinterFilterType.ENUM);
|
|
73
|
+
const printerDefinitionsProgressBar = (0, progress_1.createProgressBar)('Printer Definitions');
|
|
74
|
+
let count = 0;
|
|
75
|
+
(0, progress_1.startProgressBar)(Object.keys(defintionsMap).length, count, printerDefinitionsProgressBar);
|
|
76
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
77
|
+
for (const key in defintionsMap) {
|
|
78
|
+
const indexFileExportNode = typescript_1.default.factory.createExportDeclaration(undefined, false, undefined, typescript_1.default.factory.createStringLiteral(`./${defintionsMap[key].filename}`), undefined);
|
|
79
|
+
if (defintionsMap[key].type === constants_1.PrinterFilterType.INTERFACE) {
|
|
80
|
+
interfaceIndexFileAstNode.astNode.push(indexFileExportNode);
|
|
81
|
+
}
|
|
82
|
+
else if (defintionsMap[key].type === constants_1.PrinterFilterType.ENUM) {
|
|
83
|
+
enumfaceIndexFileAstNode.astNode.push(indexFileExportNode);
|
|
84
|
+
}
|
|
85
|
+
await (0, printer_swagger_definitions_to_file_1.printerDefinitionASTToSourceFile)(defintionsMap[key]);
|
|
86
|
+
count += 1;
|
|
87
|
+
(0, progress_1.updateProgressBar)(count, printerDefinitionsProgressBar);
|
|
88
|
+
}
|
|
89
|
+
(0, progress_1.stopProgressBar)(printerDefinitionsProgressBar);
|
|
90
|
+
(0, progress_1.successProgress)('Printer Definitions To File Success!', (0, progress_1.startProgress)());
|
|
91
|
+
// 补充interface index.ts文件
|
|
92
|
+
if (interfaceIndexFileAstNode.astNode.length > 0) {
|
|
93
|
+
const indexInterfaceSpinner = (0, progress_1.startProgress)('Printer Interface Index File...');
|
|
94
|
+
(0, printer_swagger_definitions_to_file_1.printerDefinitionASTToSourceFile)(interfaceIndexFileAstNode);
|
|
95
|
+
(0, progress_1.successProgress)('Printer Interface Index File Success!', indexInterfaceSpinner);
|
|
96
|
+
}
|
|
97
|
+
// 补充enum index.ts文件
|
|
98
|
+
if (enumfaceIndexFileAstNode.astNode.length > 0) {
|
|
99
|
+
const indexEnumSpinner = (0, progress_1.startProgress)('Printer Enum Index File...');
|
|
100
|
+
(0, printer_swagger_definitions_to_file_1.printerDefinitionASTToSourceFile)(enumfaceIndexFileAstNode);
|
|
101
|
+
(0, progress_1.successProgress)('Printer Enum Index File Success!', indexEnumSpinner);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (paths) {
|
|
105
|
+
const pathsSpinner = (0, progress_1.startProgress)('Generate Paths...');
|
|
106
|
+
// 保存所有接口的记录
|
|
107
|
+
const [requestMap, total] = (0, generate_api_1.generateApi)(paths, definitions, defintionsMap);
|
|
108
|
+
_requestMap = requestMap;
|
|
109
|
+
(0, progress_1.successProgress)('Generate Paths To AST Node Success!', pathsSpinner);
|
|
110
|
+
const printerPathProgressBar = (0, progress_1.createProgressBar)('Printer Paths');
|
|
111
|
+
let count = 0;
|
|
112
|
+
(0, progress_1.startProgressBar)(total, count, printerPathProgressBar);
|
|
113
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
114
|
+
for (const key in requestMap) {
|
|
115
|
+
const pathItem = requestMap[key];
|
|
116
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
117
|
+
for (const method in pathItem) {
|
|
118
|
+
await (0, printer_swagger_api_to_file_1.printerApiASTToSourceFile)(pathItem[method]);
|
|
119
|
+
count += 1;
|
|
120
|
+
(0, progress_1.updateProgressBar)(count, printerPathProgressBar);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
(0, progress_1.stopProgressBar)(printerPathProgressBar);
|
|
124
|
+
(0, progress_1.successProgress)('Printer Paths To File Success!', (0, progress_1.startProgress)());
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
requestMap: _requestMap,
|
|
128
|
+
defintionsMap,
|
|
129
|
+
};
|
|
130
|
+
}
|
package/built/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
const debug_1 = __importDefault(require("debug"));
|
|
7
|
+
const get_config_1 = require("./utils/get-config");
|
|
8
|
+
const progress_1 = require("./utils/progress");
|
|
9
|
+
const generate_entrypoint_1 = require("./generate-entrypoint");
|
|
10
|
+
const logger = (0, debug_1.default)('cag:main');
|
|
11
|
+
async function start() {
|
|
12
|
+
const configSpinner = (0, progress_1.startProgress)('get config...');
|
|
13
|
+
const config = (0, get_config_1.getConfig)();
|
|
14
|
+
(0, progress_1.successProgress)('Get CAG Config Success!', configSpinner);
|
|
15
|
+
(0, progress_1.infoProgress)(`Swagger File: ${config.target}`, configSpinner);
|
|
16
|
+
(0, progress_1.infoProgress)(`Output Dir: ${config.outputDir}`, configSpinner);
|
|
17
|
+
await (0, generate_entrypoint_1.generateEntrypoint)();
|
|
18
|
+
}
|
|
19
|
+
start();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiMethod = exports.ApiParametersType = void 0;
|
|
4
|
+
var ApiParametersType;
|
|
5
|
+
(function (ApiParametersType) {
|
|
6
|
+
ApiParametersType["PATH"] = "path";
|
|
7
|
+
ApiParametersType["QUERY"] = "query";
|
|
8
|
+
ApiParametersType["BODY"] = "body";
|
|
9
|
+
})(ApiParametersType || (exports.ApiParametersType = ApiParametersType = {}));
|
|
10
|
+
var ApiMethod;
|
|
11
|
+
(function (ApiMethod) {
|
|
12
|
+
ApiMethod["GET"] = "get";
|
|
13
|
+
ApiMethod["POST"] = "post";
|
|
14
|
+
ApiMethod["PUT"] = "put";
|
|
15
|
+
ApiMethod["DELETE"] = "delete";
|
|
16
|
+
})(ApiMethod || (exports.ApiMethod = ApiMethod = {}));
|
|
@@ -0,0 +1,28 @@
|
|
|
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.generateConfig = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const get_skills_codegen_target_1 = require("../utils/get-skills-codegen-target");
|
|
10
|
+
const constants_1 = require("../constants");
|
|
11
|
+
const generateConfig = () => {
|
|
12
|
+
const skillScriptDir = path_1.default.join((0, get_skills_codegen_target_1.getSkillCodegenTarget)(), 'scripts');
|
|
13
|
+
if (!fs_1.default.existsSync(skillScriptDir)) {
|
|
14
|
+
fs_1.default.mkdirSync(skillScriptDir);
|
|
15
|
+
}
|
|
16
|
+
const skillScriptCoreDir = path_1.default.join(skillScriptDir, 'core');
|
|
17
|
+
if (!fs_1.default.existsSync(skillScriptCoreDir)) {
|
|
18
|
+
fs_1.default.mkdirSync(skillScriptCoreDir);
|
|
19
|
+
}
|
|
20
|
+
const skillScriptConfigDir = path_1.default.join(skillScriptCoreDir, 'config');
|
|
21
|
+
if (!fs_1.default.existsSync(skillScriptConfigDir)) {
|
|
22
|
+
fs_1.default.mkdirSync(skillScriptConfigDir);
|
|
23
|
+
}
|
|
24
|
+
const pwd = process.cwd();
|
|
25
|
+
const configFilePath = path_1.default.join(pwd, constants_1.CONFIG_FILE_NAME);
|
|
26
|
+
fs_1.default.copyFileSync(configFilePath, path_1.default.join(skillScriptConfigDir, constants_1.CONFIG_FILE_NAME));
|
|
27
|
+
};
|
|
28
|
+
exports.generateConfig = generateConfig;
|