tfose5-xlsx 3.4.4 → 3.5.5
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
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
# 
|
|
@@ -2,7 +2,6 @@ import { IConverter } from './i-converter';
|
|
|
2
2
|
export declare class ConverterFactory {
|
|
3
3
|
private m_ToEnumConverter;
|
|
4
4
|
private m_AllToOtherConverter;
|
|
5
|
-
private m_DefaultConverter;
|
|
6
5
|
constructor(m_ToEnumConverter: IConverter, m_AllToOtherConverter: {
|
|
7
6
|
[type: string]: IConverter;
|
|
8
7
|
});
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ConverterFactory = void 0;
|
|
4
|
-
const default_converter_1 = require("./default-converter");
|
|
5
4
|
class ConverterFactory {
|
|
6
5
|
constructor(m_ToEnumConverter, m_AllToOtherConverter) {
|
|
7
6
|
this.m_ToEnumConverter = m_ToEnumConverter;
|
|
8
7
|
this.m_AllToOtherConverter = m_AllToOtherConverter;
|
|
9
|
-
this.m_DefaultConverter = new default_converter_1.DefaultConverter();
|
|
10
8
|
}
|
|
11
9
|
build(type) {
|
|
12
10
|
var _a;
|
|
13
|
-
|
|
14
|
-
return this.m_ToEnumConverter;
|
|
15
|
-
return (_a = this.m_AllToOtherConverter[type]) !== null && _a !== void 0 ? _a : this.m_DefaultConverter;
|
|
11
|
+
return (_a = this.m_AllToOtherConverter[type]) !== null && _a !== void 0 ? _a : this.m_ToEnumConverter;
|
|
16
12
|
}
|
|
17
13
|
}
|
|
18
14
|
exports.ConverterFactory = ConverterFactory;
|
|
@@ -10,18 +10,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.parseXlsxToEnumJson = parseXlsxToEnumJson;
|
|
13
|
+
const node_xlsx_1 = require("node-xlsx");
|
|
13
14
|
const path_1 = require("path");
|
|
14
15
|
const tfose5_fs_1 = require("tfose5-fs");
|
|
15
|
-
const xlsx_1 = require("xlsx");
|
|
16
16
|
const converter_factory_1 = require("./converter-factory");
|
|
17
17
|
const to_asset_converter_1 = require("./to-asset-converter");
|
|
18
18
|
const to_bool_converter_1 = require("./to-bool-converter");
|
|
19
|
+
const to_conditions_converter_1 = require("./to-conditions-converter");
|
|
19
20
|
const to_enum_no_converter_1 = require("./to-enum-no-converter");
|
|
20
21
|
const to_json_converter_1 = require("./to-json-converter");
|
|
21
22
|
const to_number_converter_1 = require("./to-number-converter");
|
|
22
23
|
const to_rewards_converter_1 = require("./to-rewards-converter");
|
|
24
|
+
const to_string_converter_1 = require("./to-string-converter");
|
|
23
25
|
const to_unix_converter_1 = require("./to-unix-converter");
|
|
24
|
-
const to_conditions_converter_1 = require("./to-conditions-converter");
|
|
25
26
|
const allEnumTextNo = {};
|
|
26
27
|
let converterFactory;
|
|
27
28
|
function parseXlsxToEnumJson(fsFactory, dstDirPath, srcDirPath, topEnums) {
|
|
@@ -35,13 +36,15 @@ function parseXlsxToEnumJson(fsFactory, dstDirPath, srcDirPath, topEnums) {
|
|
|
35
36
|
json: new to_json_converter_1.ToJsonConverter(),
|
|
36
37
|
number: new to_number_converter_1.ToNumberConverter(),
|
|
37
38
|
rewards: new to_rewards_converter_1.ToRewardsConverter(toEnumNoConverter, topEnums[topEnums.length - 1]),
|
|
38
|
-
|
|
39
|
+
string: new to_string_converter_1.ToStringConverter(),
|
|
40
|
+
unix: new to_unix_converter_1.ToUnixConverter(),
|
|
39
41
|
});
|
|
42
|
+
const topFiles = topEnums.map(r => r + '.xlsx');
|
|
40
43
|
const filePaths = [];
|
|
41
44
|
yield fsFactory.build(tfose5_fs_1.FsScanBase).scan({
|
|
42
45
|
fileAction: (filePath) => __awaiter(this, void 0, void 0, function* () {
|
|
43
|
-
const ok =
|
|
44
|
-
return
|
|
46
|
+
const ok = topFiles.some(r => {
|
|
47
|
+
return (0, path_1.basename)(filePath) == r;
|
|
45
48
|
});
|
|
46
49
|
if (ok)
|
|
47
50
|
return;
|
|
@@ -49,47 +52,55 @@ function parseXlsxToEnumJson(fsFactory, dstDirPath, srcDirPath, topEnums) {
|
|
|
49
52
|
}),
|
|
50
53
|
path: srcDirPath,
|
|
51
54
|
});
|
|
52
|
-
|
|
53
|
-
filePaths.unshift((0, path_1.join)(srcDirPath, r
|
|
55
|
+
topFiles.forEach(r => {
|
|
56
|
+
filePaths.unshift((0, path_1.join)(srcDirPath, r));
|
|
54
57
|
});
|
|
55
58
|
for (const r of filePaths) {
|
|
56
59
|
if (r.includes('~'))
|
|
57
60
|
continue;
|
|
58
|
-
const sheets = (0, xlsx_1.readFile)(r).Sheets;
|
|
59
61
|
const enumName = (0, path_1.basename)(r).replace('.xlsx', '');
|
|
60
62
|
console.log(`xlsx: ${enumName}`);
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
63
|
+
const res = (0, node_xlsx_1.parse)(r).map(r => {
|
|
64
|
+
return {
|
|
65
|
+
sort: r.name == enumName ? 'zzz' : r.name,
|
|
66
|
+
sheet: r,
|
|
67
|
+
};
|
|
68
|
+
}).sort((a, b) => {
|
|
69
|
+
return a.sort.localeCompare(b.sort);
|
|
70
|
+
}).map(r => r.sheet).reduce((memo, r) => {
|
|
71
|
+
console.log(` sheet: ${r.name}`);
|
|
72
|
+
if (r.name == enumName)
|
|
73
|
+
memo.enumItems = parseSheet(r.data, memo.allOtherSheetRows);
|
|
74
|
+
else
|
|
75
|
+
memo.allOtherSheetRows[r.name] = parseSheet(r.data);
|
|
76
|
+
return memo;
|
|
77
|
+
}, {
|
|
78
|
+
enumItems: [],
|
|
79
|
+
allOtherSheetRows: {},
|
|
80
|
+
});
|
|
81
|
+
if ((_a = res.enumItems[0]) === null || _a === void 0 ? void 0 : _a.text) {
|
|
82
|
+
allEnumTextNo[enumName] = res.enumItems.reduce((memo, r) => {
|
|
72
83
|
memo[r.text] = r.value;
|
|
73
84
|
return memo;
|
|
74
85
|
}, {});
|
|
75
86
|
}
|
|
76
87
|
yield fsFactory.build(tfose5_fs_1.FsWriteBase).write({
|
|
77
|
-
data: enumItems,
|
|
88
|
+
data: res.enumItems,
|
|
78
89
|
json: true,
|
|
79
90
|
path: (0, path_1.join)(dstDirPath, enumName + '.json'),
|
|
80
91
|
});
|
|
81
92
|
}
|
|
82
93
|
});
|
|
83
94
|
}
|
|
84
|
-
function parseSheet(
|
|
85
|
-
return
|
|
86
|
-
return
|
|
87
|
-
var _a, _b;
|
|
88
|
-
const [field, type, ext] = cr
|
|
95
|
+
function parseSheet(sheetRows, allOtherSheetRows) {
|
|
96
|
+
return sheetRows.slice(2).map(r => {
|
|
97
|
+
return r.length ? sheetRows[0].reduce((memo, cr, ci) => {
|
|
98
|
+
var _a, _b, _c;
|
|
99
|
+
const [field, type, ext] = cr.split(':');
|
|
89
100
|
let fieldValue;
|
|
90
101
|
if (type == '#') {
|
|
91
102
|
fieldValue = ((_a = allOtherSheetRows[ext]) !== null && _a !== void 0 ? _a : []).filter(sr => {
|
|
92
|
-
return
|
|
103
|
+
return r[ci] == sr.group;
|
|
93
104
|
}).map(sr => {
|
|
94
105
|
const copy = structuredClone(sr);
|
|
95
106
|
delete copy.group;
|
|
@@ -98,12 +109,12 @@ function parseSheet(sheet, allOtherSheetRows) {
|
|
|
98
109
|
});
|
|
99
110
|
}
|
|
100
111
|
else if (type == 'array') {
|
|
101
|
-
fieldValue =
|
|
112
|
+
fieldValue = r[ci] ? r[ci].toString().split(/\r\n|\n|\r/g).map(sr => {
|
|
102
113
|
return converterFactory.build(ext).convert(sr, ext);
|
|
103
|
-
});
|
|
114
|
+
}) : undefined;
|
|
104
115
|
}
|
|
105
116
|
else {
|
|
106
|
-
fieldValue = converterFactory.build(type).convert(
|
|
117
|
+
fieldValue = r[ci] ? converterFactory.build(type).convert(r[ci], type) : undefined;
|
|
107
118
|
}
|
|
108
119
|
const fieldParts = field.split('.');
|
|
109
120
|
let obj = memo;
|
|
@@ -114,7 +125,7 @@ function parseSheet(sheet, allOtherSheetRows) {
|
|
|
114
125
|
obj = obj[name];
|
|
115
126
|
}
|
|
116
127
|
else {
|
|
117
|
-
obj[name] = fieldValue;
|
|
128
|
+
(_c = obj[name]) !== null && _c !== void 0 ? _c : (obj[name] = fieldValue);
|
|
118
129
|
}
|
|
119
130
|
}
|
|
120
131
|
return memo;
|
package/package.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"author": "ahl5esoft",
|
|
3
3
|
"dependencies": {
|
|
4
4
|
"dayjs": "^1.11.20",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"node-xlsx": "^0.24.0",
|
|
6
|
+
"tfose5-fs": "^1.6.1"
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
|
9
9
|
"@types/mocha": "^10.0.10",
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
"test": "mocha -t 30s -r ./node_modules/ts-node/register/index.js --exit",
|
|
25
25
|
"version": "ts-node script version"
|
|
26
26
|
},
|
|
27
|
-
"version": "3.
|
|
27
|
+
"version": "3.5.5"
|
|
28
28
|
}
|