config2ts 2.3.3 → 2.4.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/lib/config2ts.d.ts +7 -9
- package/lib/config2ts.js +259 -105
- package/lib/main.d.ts +1 -9
- package/lib/main.js +52 -18
- package/package.json +2 -2
package/lib/config2ts.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export declare function
|
|
7
|
-
export
|
|
8
|
-
export declare function GetValidFileList(fileList: any): any;
|
|
9
|
-
export declare function startConvert(dir: string, outDir: string, merge: string | null): void;
|
|
1
|
+
type ConvertHandler = (str: string, moduleName: string) => string;
|
|
2
|
+
export declare const Convert: Record<string, ConvertHandler>;
|
|
3
|
+
export declare function GetTsString(filePath: string): string;
|
|
4
|
+
export declare function GetTsStringFromFileList(fileList: string[]): string;
|
|
5
|
+
export declare function GetValidFileList(fileList: string[]): string[];
|
|
6
|
+
export declare function startConvert(dir: string, outDir: string, merge: string): void;
|
|
7
|
+
export {};
|
package/lib/config2ts.js
CHANGED
|
@@ -1,65 +1,134 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.Convert = void 0;
|
|
4
37
|
exports.GetTsString = GetTsString;
|
|
5
38
|
exports.GetTsStringFromFileList = GetTsStringFromFileList;
|
|
6
39
|
exports.GetValidFileList = GetValidFileList;
|
|
7
40
|
exports.startConvert = startConvert;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const d3_dsv_1 = require("d3-dsv");
|
|
44
|
+
const json5 = __importStar(require("json5"));
|
|
45
|
+
const changeCase = __importStar(require("change-case"));
|
|
46
|
+
const toml = __importStar(require("toml"));
|
|
47
|
+
const EnumStr = "Enum";
|
|
48
|
+
const EnumIndexStr = "EnumIndex";
|
|
49
|
+
const EnumArrayString = "Enum[]";
|
|
50
|
+
const IndexStr = "Index";
|
|
51
|
+
const ObjectStr = "Object";
|
|
52
|
+
const RefPrefix = "Ref[";
|
|
53
|
+
const RefSuffix = "]";
|
|
54
|
+
const RefEnumPrefix = "RefEnum[";
|
|
55
|
+
const RefEnumArraySuffix = "][]";
|
|
18
56
|
exports.Convert = {
|
|
19
57
|
ini: function (str, moduleName) {
|
|
20
|
-
|
|
21
|
-
return
|
|
58
|
+
const obj = toml.parse(str);
|
|
59
|
+
return `export const ${moduleName} = ${json5.stringify(obj, null, 4)};`;
|
|
22
60
|
},
|
|
23
61
|
csv: function (str, moduleName) {
|
|
24
62
|
return csv2ts(str, moduleName);
|
|
25
63
|
},
|
|
26
64
|
toml: function (str, moduleName) {
|
|
27
|
-
|
|
28
|
-
return
|
|
29
|
-
}
|
|
65
|
+
const obj = toml.parse(str);
|
|
66
|
+
return `export const ${moduleName} = ${json5.stringify(obj, null, 4)};`;
|
|
67
|
+
},
|
|
30
68
|
};
|
|
31
69
|
function csv2ts(csvString, moduleName) {
|
|
32
|
-
|
|
33
|
-
|
|
70
|
+
let convert = {};
|
|
71
|
+
const refFields = [];
|
|
72
|
+
const refEnumFields = [];
|
|
73
|
+
const result = (0, d3_dsv_1.csvParse)(csvString, function (d, i) {
|
|
34
74
|
if (i === 0) {
|
|
35
75
|
convert = d;
|
|
76
|
+
for (const k in convert) {
|
|
77
|
+
if (convert[k].startsWith(RefPrefix) && convert[k].endsWith(RefSuffix)) {
|
|
78
|
+
refFields.push(k);
|
|
79
|
+
}
|
|
80
|
+
if (parseRefEnum(convert[k])) {
|
|
81
|
+
refEnumFields.push(k);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
36
84
|
return null;
|
|
37
85
|
}
|
|
38
86
|
else {
|
|
39
|
-
for (
|
|
40
|
-
|
|
41
|
-
|
|
87
|
+
for (const k in d) {
|
|
88
|
+
if (convert[k] === ObjectStr) {
|
|
89
|
+
d[k] = parseObject(d[k]);
|
|
90
|
+
}
|
|
91
|
+
else if (typeof global[convert[k]] === "function") {
|
|
42
92
|
d[k] = global[convert[k]](d[k]);
|
|
43
93
|
}
|
|
44
|
-
else if (convert[k] ===
|
|
45
|
-
if (d[k] ===
|
|
46
|
-
// Enum array do not include empty string
|
|
94
|
+
else if (convert[k] === "String[]") {
|
|
95
|
+
if (d[k] === "") {
|
|
47
96
|
d[k] = [];
|
|
48
97
|
}
|
|
49
98
|
else {
|
|
50
|
-
d[k] = d[k].trim().split(
|
|
99
|
+
d[k] = d[k].trim().split(",").map((v) => v.trim());
|
|
51
100
|
}
|
|
52
101
|
}
|
|
53
|
-
else if (convert[k] ===
|
|
54
|
-
d[k] = d[k].trim().split(
|
|
102
|
+
else if (convert[k] === "Number[]") {
|
|
103
|
+
d[k] = d[k].trim().split(",").map((val) => Number(val));
|
|
55
104
|
}
|
|
56
|
-
else if (convert[k] ===
|
|
57
|
-
if (d[k] ===
|
|
58
|
-
// Enum array do not include empty string
|
|
105
|
+
else if (convert[k] === "Enum[]") {
|
|
106
|
+
if (d[k] === "") {
|
|
59
107
|
d[k] = [];
|
|
60
108
|
}
|
|
61
109
|
else {
|
|
62
|
-
d[k] = d[k].trim().split(
|
|
110
|
+
d[k] = d[k].trim().split(",").map((v) => v.trim());
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else if (convert[k].startsWith(RefPrefix) && convert[k].endsWith(RefSuffix)) {
|
|
114
|
+
if (d[k] === "") {
|
|
115
|
+
console.warn(`[config2ts] warning: ${moduleName} row ${i} field "${k}" ref value is empty`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (parseRefEnum(convert[k])) {
|
|
119
|
+
const refEnum = parseRefEnum(convert[k]);
|
|
120
|
+
if (refEnum.isArray) {
|
|
121
|
+
if (d[k] === "") {
|
|
122
|
+
d[k] = [];
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
d[k] = d[k].trim().split(",").map((v) => v.trim());
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
if (d[k] === "") {
|
|
130
|
+
console.warn(`[config2ts] warning: ${moduleName} row ${i} field "${k}" ref enum value is empty`);
|
|
131
|
+
}
|
|
63
132
|
}
|
|
64
133
|
}
|
|
65
134
|
else {
|
|
@@ -69,54 +138,62 @@ function csv2ts(csvString, moduleName) {
|
|
|
69
138
|
return d;
|
|
70
139
|
}
|
|
71
140
|
});
|
|
72
|
-
// 删除columns属性
|
|
73
141
|
delete result.columns;
|
|
74
142
|
if (result.length <= 0) {
|
|
75
143
|
return "";
|
|
76
144
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
for (var field in convert) {
|
|
145
|
+
let template = `export namespace ${moduleName} {\n\n`;
|
|
146
|
+
for (const field in convert) {
|
|
80
147
|
if (convert[field] == EnumStr || convert[field] == EnumIndexStr) {
|
|
81
|
-
|
|
82
|
-
for (
|
|
83
|
-
|
|
84
|
-
var enumValue = row[field];
|
|
148
|
+
const enumValues = [];
|
|
149
|
+
for (const row of result) {
|
|
150
|
+
const enumValue = row[field];
|
|
85
151
|
if (!enumValues.includes(enumValue)) {
|
|
86
152
|
enumValues.push(enumValue);
|
|
87
153
|
}
|
|
88
154
|
}
|
|
89
|
-
|
|
90
|
-
template +=
|
|
91
|
-
|
|
92
|
-
template += " export const ".concat(field, "List: ").concat(field, "[] = [").concat(enumValues.join(', '), "];\n\n");
|
|
155
|
+
const enumValueStrings = enumValues.map((value) => `"${value}"`);
|
|
156
|
+
template += ` export type ${field} = ${enumValueStrings.join(" | ")};\n`;
|
|
157
|
+
template += ` export const ${field}List: ${field}[] = [${enumValueStrings.join(", ")}];\n\n`;
|
|
93
158
|
}
|
|
94
159
|
else if (convert[field] == EnumArrayString) {
|
|
95
|
-
|
|
96
|
-
for (
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
for (var _b = 0, enumArrayValue_1 = enumArrayValue; _b < enumArrayValue_1.length; _b++) {
|
|
100
|
-
var enumValue = enumArrayValue_1[_b];
|
|
160
|
+
const enumValues = [];
|
|
161
|
+
for (const row of result) {
|
|
162
|
+
const enumArrayValue = row[field];
|
|
163
|
+
for (const enumValue of enumArrayValue) {
|
|
101
164
|
if (!enumValues.includes(enumValue)) {
|
|
102
165
|
enumValues.push(enumValue);
|
|
103
166
|
}
|
|
104
167
|
}
|
|
105
168
|
}
|
|
106
|
-
|
|
107
|
-
template +=
|
|
108
|
-
|
|
109
|
-
|
|
169
|
+
const enumValueStrings = enumValues.map((value) => `"${value}"`);
|
|
170
|
+
template += ` export type ${field} = ${enumValueStrings.join(" | ")};\n`;
|
|
171
|
+
template += ` export const ${field}List: ${field}[] = [${enumValueStrings.join(", ")}];\n\n`;
|
|
172
|
+
}
|
|
173
|
+
else if (convert[field] == ObjectStr) {
|
|
174
|
+
const keyTypes = {};
|
|
175
|
+
for (const row of result) {
|
|
176
|
+
const objValue = row[field];
|
|
177
|
+
for (const key in objValue) {
|
|
178
|
+
if (!keyTypes[key]) {
|
|
179
|
+
keyTypes[key] = new Set();
|
|
180
|
+
}
|
|
181
|
+
keyTypes[key].add(getTypeName(objValue[key]));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
template += ` export type ${field} = {\n`;
|
|
185
|
+
for (const key in keyTypes) {
|
|
186
|
+
const types = Array.from(keyTypes[key]).join(" | ");
|
|
187
|
+
template += ` ${serializeField(key)}?: ${types};\n`;
|
|
188
|
+
}
|
|
189
|
+
template += ` };\n\n`;
|
|
110
190
|
}
|
|
111
191
|
}
|
|
112
|
-
// generate interface
|
|
113
192
|
template += " export interface Record {\n";
|
|
114
|
-
|
|
115
|
-
for (
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
var fieldType = 'string';
|
|
119
|
-
if (convert[field] != '') {
|
|
193
|
+
let indexField = null;
|
|
194
|
+
for (const field in convert) {
|
|
195
|
+
let fieldType = "string";
|
|
196
|
+
if (convert[field] != "") {
|
|
120
197
|
if (convert[field] == EnumStr) {
|
|
121
198
|
fieldType = field;
|
|
122
199
|
}
|
|
@@ -128,67 +205,154 @@ function csv2ts(csvString, moduleName) {
|
|
|
128
205
|
indexField = field;
|
|
129
206
|
}
|
|
130
207
|
else if (convert[field] == EnumArrayString) {
|
|
131
|
-
fieldType = field +
|
|
208
|
+
fieldType = field + "[]";
|
|
209
|
+
}
|
|
210
|
+
else if (convert[field] == ObjectStr) {
|
|
211
|
+
fieldType = field;
|
|
212
|
+
}
|
|
213
|
+
else if (convert[field].startsWith(RefPrefix) && convert[field].endsWith(RefSuffix)) {
|
|
214
|
+
const refModule = convert[field].slice(RefPrefix.length, -RefSuffix.length);
|
|
215
|
+
const refModuleName = changeCase.pascalCase(refModule);
|
|
216
|
+
fieldType = `${refModuleName}.Record`;
|
|
217
|
+
}
|
|
218
|
+
else if (parseRefEnum(convert[field])) {
|
|
219
|
+
const refEnum = parseRefEnum(convert[field]);
|
|
220
|
+
const refModuleName = changeCase.pascalCase(refEnum.refModule);
|
|
221
|
+
fieldType = refEnum.isArray ? `${refModuleName}.${refEnum.refField}[]` : `${refModuleName}.${refEnum.refField}`;
|
|
132
222
|
}
|
|
133
223
|
else {
|
|
134
224
|
fieldType = convert[field].toLowerCase();
|
|
135
225
|
}
|
|
136
226
|
}
|
|
137
|
-
|
|
138
|
-
template +=
|
|
227
|
+
const serializedField = serializeField(field);
|
|
228
|
+
template += ` ${serializedField}: ${fieldType};\n`;
|
|
139
229
|
}
|
|
140
|
-
template +=
|
|
141
|
-
// remove object when index is empty
|
|
230
|
+
template += " };\n\n";
|
|
142
231
|
if (indexField) {
|
|
143
|
-
|
|
144
|
-
return v[indexField] !==
|
|
232
|
+
const filteredResult = result.filter((v) => {
|
|
233
|
+
return v[indexField] !== "";
|
|
145
234
|
});
|
|
235
|
+
for (let i = 0; i < filteredResult.length; i++) {
|
|
236
|
+
result[i] = filteredResult[i];
|
|
237
|
+
}
|
|
238
|
+
result.length = filteredResult.length;
|
|
146
239
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
240
|
+
template += " export const List: Record[] = [\n";
|
|
241
|
+
for (let i = 0; i < result.length; i++) {
|
|
242
|
+
const row = result[i];
|
|
243
|
+
template += " {\n";
|
|
244
|
+
for (const field in convert) {
|
|
245
|
+
let value = row[field];
|
|
246
|
+
if (convert[field].startsWith(RefPrefix) && convert[field].endsWith(RefSuffix)) {
|
|
247
|
+
const refModule = convert[field].slice(RefPrefix.length, -RefSuffix.length);
|
|
248
|
+
const refModuleName = changeCase.pascalCase(refModule);
|
|
249
|
+
template += ` ${serializeField(field)}: ${refModuleName}.Map[${JSON.stringify(value)}],\n`;
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
template += ` ${serializeField(field)}: ${json5.stringify(value)},\n`;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
template += " }";
|
|
256
|
+
if (i < result.length - 1) {
|
|
257
|
+
template += ",";
|
|
258
|
+
}
|
|
259
|
+
template += "\n";
|
|
260
|
+
}
|
|
261
|
+
template += " ];\n\n";
|
|
152
262
|
if (indexField != null) {
|
|
153
263
|
template += " export const Map: { [id: string]: Record } = {};\n";
|
|
154
|
-
template +=
|
|
264
|
+
template += ` for (const v of List) { Map[v.${indexField}] = v; };\n\n`;
|
|
155
265
|
}
|
|
156
266
|
template += "};";
|
|
157
267
|
return template;
|
|
158
268
|
}
|
|
159
|
-
/**
|
|
160
|
-
* serialize interface field
|
|
161
|
-
* @param {string} field
|
|
162
|
-
*/
|
|
163
269
|
function serializeField(key) {
|
|
164
|
-
|
|
270
|
+
const obj = {};
|
|
165
271
|
obj[key] = true;
|
|
166
|
-
|
|
167
|
-
// console.log('serializeField:', json5.stringify(obj))
|
|
272
|
+
const objString = json5.stringify(obj);
|
|
168
273
|
return objString.includes("'") ? "'" + key + "'" : key;
|
|
169
274
|
}
|
|
275
|
+
function parseObject(str) {
|
|
276
|
+
const result = {};
|
|
277
|
+
const trimmed = str.trim();
|
|
278
|
+
if (trimmed === "") {
|
|
279
|
+
return result;
|
|
280
|
+
}
|
|
281
|
+
const pairs = trimmed.split(",");
|
|
282
|
+
for (const pair of pairs) {
|
|
283
|
+
const colonIndex = pair.indexOf(":");
|
|
284
|
+
if (colonIndex > 0) {
|
|
285
|
+
const key = pair.slice(0, colonIndex).trim();
|
|
286
|
+
const value = pair.slice(colonIndex + 1).trim();
|
|
287
|
+
result[key] = parseObjectValue(value);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return result;
|
|
291
|
+
}
|
|
292
|
+
function parseObjectValue(value) {
|
|
293
|
+
if (value === "true")
|
|
294
|
+
return true;
|
|
295
|
+
if (value === "false")
|
|
296
|
+
return false;
|
|
297
|
+
if (value === "")
|
|
298
|
+
return "";
|
|
299
|
+
const num = Number(value);
|
|
300
|
+
if (!isNaN(num)) {
|
|
301
|
+
return num;
|
|
302
|
+
}
|
|
303
|
+
return value;
|
|
304
|
+
}
|
|
305
|
+
function getTypeName(value) {
|
|
306
|
+
if (typeof value === "number")
|
|
307
|
+
return "number";
|
|
308
|
+
if (typeof value === "boolean")
|
|
309
|
+
return "boolean";
|
|
310
|
+
return "string";
|
|
311
|
+
}
|
|
312
|
+
function parseRefEnum(typeStr) {
|
|
313
|
+
if (typeStr.startsWith(RefEnumPrefix)) {
|
|
314
|
+
let isArray = false;
|
|
315
|
+
let inner = typeStr;
|
|
316
|
+
if (typeStr.endsWith(RefEnumArraySuffix)) {
|
|
317
|
+
isArray = true;
|
|
318
|
+
inner = typeStr.slice(0, -RefEnumArraySuffix.length) + RefSuffix;
|
|
319
|
+
}
|
|
320
|
+
if (inner.endsWith(RefSuffix)) {
|
|
321
|
+
const content = inner.slice(RefEnumPrefix.length, -RefSuffix.length);
|
|
322
|
+
const dotIndex = content.lastIndexOf(".");
|
|
323
|
+
if (dotIndex > 0) {
|
|
324
|
+
const refModule = content.slice(0, dotIndex);
|
|
325
|
+
const refField = content.slice(dotIndex + 1);
|
|
326
|
+
return { refModule, refField, isArray };
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return null;
|
|
331
|
+
}
|
|
170
332
|
function GetFileExt(filePath) {
|
|
171
|
-
|
|
333
|
+
const pathObject = path.parse(filePath);
|
|
172
334
|
return pathObject.ext.slice(1);
|
|
173
335
|
}
|
|
174
336
|
function GetTsString(filePath) {
|
|
175
|
-
|
|
176
|
-
|
|
337
|
+
const pathObject = path.parse(filePath);
|
|
338
|
+
const handle = exports.Convert[GetFileExt(filePath)];
|
|
177
339
|
if (handle) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
if (fileString.charAt(0) ===
|
|
340
|
+
const moduleName = changeCase.pascalCase(pathObject.base);
|
|
341
|
+
let fileString = fs.readFileSync(filePath).toString();
|
|
342
|
+
if (fileString.charAt(0) === "\uFEFF")
|
|
181
343
|
fileString = fileString.substr(1);
|
|
182
344
|
return handle(fileString, moduleName);
|
|
183
345
|
}
|
|
184
346
|
else {
|
|
185
|
-
return
|
|
347
|
+
return "";
|
|
186
348
|
}
|
|
187
349
|
}
|
|
188
350
|
function GetTsStringFromFileList(fileList) {
|
|
189
|
-
return fileList
|
|
351
|
+
return fileList
|
|
352
|
+
.map(function (filePath) {
|
|
190
353
|
return GetTsString(filePath);
|
|
191
|
-
})
|
|
354
|
+
})
|
|
355
|
+
.join("\n\n");
|
|
192
356
|
}
|
|
193
357
|
function GetValidFileList(fileList) {
|
|
194
358
|
return fileList.filter(function (filePath) {
|
|
@@ -196,21 +360,11 @@ function GetValidFileList(fileList) {
|
|
|
196
360
|
});
|
|
197
361
|
}
|
|
198
362
|
function startConvert(dir, outDir, merge) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
console.log("config2ts, ".concat(fileList.length, " config files, merge into: ").concat(mergeFile));
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
GetValidFileList(fileList).forEach(function (filename) {
|
|
210
|
-
var target = path.join(outDir, "".concat(filename, ".ts"));
|
|
211
|
-
fs.writeFileSync(target, GetTsString(path.join(dir, filename)), { encoding: 'utf-8' });
|
|
212
|
-
console.log("config2ts, convert: ".concat(filename, " , to: ").concat(target));
|
|
213
|
-
});
|
|
214
|
-
console.log('config2ts convert done!');
|
|
215
|
-
}
|
|
363
|
+
const fileList = fs.readdirSync(dir);
|
|
364
|
+
const fullFileList = GetValidFileList(fileList).map(function (filename) {
|
|
365
|
+
return path.join(dir, filename);
|
|
366
|
+
});
|
|
367
|
+
const mergeFile = path.join(outDir, merge);
|
|
368
|
+
fs.writeFileSync(mergeFile, GetTsStringFromFileList(fullFileList), { encoding: "utf-8" });
|
|
369
|
+
console.log(`config2ts, ${fullFileList.length} config files, merge into: ${mergeFile}`);
|
|
216
370
|
}
|
package/lib/main.d.ts
CHANGED
package/lib/main.js
CHANGED
|
@@ -1,24 +1,58 @@
|
|
|
1
|
-
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
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
|
+
const fs = __importStar(require("fs"));
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const commander_1 = require("commander");
|
|
39
|
+
const config2ts_1 = require("./config2ts");
|
|
40
|
+
const pkgPath = path.join(__dirname, "..", "package.json");
|
|
41
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
42
|
+
const program = new commander_1.Command();
|
|
6
43
|
program
|
|
7
|
-
.
|
|
8
|
-
.option(
|
|
9
|
-
.option(
|
|
44
|
+
.version(pkg.version)
|
|
45
|
+
.option("-n, --name <name>", "output file name", "csv.ts")
|
|
46
|
+
.option("-d, --dir <path>", "set convert path", ".")
|
|
47
|
+
.option("-o, --outDir <path>", "set outDir path")
|
|
10
48
|
.parse(process.argv);
|
|
11
|
-
|
|
49
|
+
const options = program.opts();
|
|
12
50
|
console.log(options);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
outDir = path.resolve(outDir);
|
|
18
|
-
console.log('outDir:', outDir);
|
|
51
|
+
const dir = path.resolve(options.dir);
|
|
52
|
+
console.log("dir:", dir);
|
|
53
|
+
let outDir = options.outDir ? path.resolve(options.outDir) : dir;
|
|
54
|
+
console.log("outDir:", outDir);
|
|
19
55
|
if (!fs.existsSync(outDir)) {
|
|
20
56
|
fs.mkdirSync(outDir, { recursive: true });
|
|
21
57
|
}
|
|
22
|
-
|
|
23
|
-
var fileList = fs.readdirSync(dir);
|
|
24
|
-
config2ts.startConvert(dir, outDir, merge);
|
|
58
|
+
(0, config2ts_1.startConvert)(dir, outDir, options.name);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "config2ts",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "convert config to ts file.",
|
|
5
5
|
"main": "lib/config2ts.js",
|
|
6
6
|
"types": "lib/config2ts.d.ts",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
15
|
"build": "tsc",
|
|
16
|
-
"convert": "node ./bin/config2ts -d ./config -o ./config",
|
|
16
|
+
"convert": "node ./bin/config2ts -n total.ts -d ./config -o ./config",
|
|
17
17
|
"test": "jest",
|
|
18
18
|
"watch-test": "node_modules/.bin/jest --watch"
|
|
19
19
|
},
|