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
- # ![Version](https://img.shields.io/badge/version-3.4.4-green.svg)
1
+ # ![Version](https://img.shields.io/badge/version-3.5.5-green.svg)
@@ -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
- if (type.endsWith('Enum'))
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
- unit: new to_unix_converter_1.ToUnixConverter(),
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 = topEnums.some(r => {
44
- return filePath.includes(r);
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
- topEnums.forEach(r => {
53
- filePaths.unshift((0, path_1.join)(srcDirPath, r + '.xlsx'));
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 allOtherSheetRows = {};
62
- for (const k in sheets) {
63
- if (k == enumName)
64
- continue;
65
- console.log(` sheet: ${k}`);
66
- allOtherSheetRows[k] = parseSheet(sheets[k]);
67
- }
68
- console.log(` sheet: ${enumName}`);
69
- const enumItems = parseSheet(sheets[enumName], allOtherSheetRows);
70
- if ((_a = enumItems[0]) === null || _a === void 0 ? void 0 : _a.text) {
71
- allEnumTextNo[enumName] = enumItems.reduce((memo, r) => {
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(sheet, allOtherSheetRows) {
85
- return xlsx_1.utils.sheet_to_json(sheet).map((r, i) => {
86
- return i ? Object.entries(r).reduce((memo, cr) => {
87
- var _a, _b;
88
- const [field, type, ext] = cr[0].split(':');
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 cr[1] == sr.group;
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 = cr[1].toString().split(/\r\n|\n|\r/g).map(sr => {
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(cr[1], type);
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;
@@ -0,0 +1,4 @@
1
+ import { IConverter } from './i-converter';
2
+ export declare class ToStringConverter implements IConverter {
3
+ convert(s: unknown): string;
4
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToStringConverter = void 0;
4
+ class ToStringConverter {
5
+ convert(s) {
6
+ return s.toString();
7
+ }
8
+ }
9
+ exports.ToStringConverter = ToStringConverter;
package/package.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "author": "ahl5esoft",
3
3
  "dependencies": {
4
4
  "dayjs": "^1.11.20",
5
- "tfose5-fs": "^1.6.1",
6
- "xlsx": "^0.18.5"
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.4.4"
27
+ "version": "3.5.5"
28
28
  }