@ims-view/server 1.1.0 → 1.2.1

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.
Files changed (93) hide show
  1. package/README.md +18 -1
  2. package/lib/excel/excel-parse.worker.cjs +279 -0
  3. package/lib/server/src/app.module.js.map +1 -0
  4. package/lib/server/src/config/env.d.ts +40 -0
  5. package/lib/server/src/config/env.js +35 -0
  6. package/lib/server/src/config/env.js.map +1 -0
  7. package/lib/server/src/excel/dto/excel-task-id.dto.d.ts +19 -0
  8. package/lib/server/src/excel/dto/excel-task-id.dto.js +17 -0
  9. package/lib/server/src/excel/dto/excel-task-id.dto.js.map +1 -0
  10. package/lib/server/src/excel/dto/export-excel.dto.d.ts +67 -0
  11. package/lib/server/src/excel/dto/export-excel.dto.js +48 -0
  12. package/lib/server/src/excel/dto/export-excel.dto.js.map +1 -0
  13. package/lib/server/src/excel/excel-storage.service.d.ts +54 -0
  14. package/lib/server/src/excel/excel-storage.service.js +258 -0
  15. package/lib/server/src/excel/excel-storage.service.js.map +1 -0
  16. package/lib/server/src/excel/excel.controller.d.ts +17 -0
  17. package/lib/{excel → server/src/excel}/excel.controller.js +40 -11
  18. package/lib/server/src/excel/excel.controller.js.map +1 -0
  19. package/lib/server/src/excel/excel.converter.d.ts +15 -0
  20. package/lib/server/src/excel/excel.converter.js +53 -0
  21. package/lib/server/src/excel/excel.converter.js.map +1 -0
  22. package/lib/{excel → server/src/excel}/excel.module.js +3 -2
  23. package/lib/server/src/excel/excel.module.js.map +1 -0
  24. package/lib/server/src/excel/excel.service.d.ts +33 -0
  25. package/lib/server/src/excel/excel.service.js +244 -0
  26. package/lib/server/src/excel/excel.service.js.map +1 -0
  27. package/lib/server/src/excel/types.d.ts +6 -0
  28. package/lib/server/src/excel/types.js +44 -0
  29. package/lib/server/src/excel/types.js.map +1 -0
  30. package/lib/server/src/index.d.ts +12 -0
  31. package/lib/server/src/index.js +32 -0
  32. package/lib/server/src/index.js.map +1 -0
  33. package/lib/server/src/main.d.ts +1 -0
  34. package/lib/{main.js → server/src/main.js} +55 -2
  35. package/lib/server/src/main.js.map +1 -0
  36. package/lib/server/src/shared/create-zod-base-model.d.ts +29 -0
  37. package/lib/server/src/shared/create-zod-base-model.js +55 -0
  38. package/lib/server/src/shared/create-zod-base-model.js.map +1 -0
  39. package/lib/server/src/shared/index.d.ts +5 -0
  40. package/lib/server/src/shared/index.js +16 -0
  41. package/lib/server/src/shared/index.js.map +1 -0
  42. package/lib/server/src/shared/response-entity.d.ts +32 -0
  43. package/lib/server/src/shared/response-entity.js +74 -0
  44. package/lib/server/src/shared/response-entity.js.map +1 -0
  45. package/lib/server/src/shared/zod-exception.filter.d.ts +5 -0
  46. package/lib/server/src/shared/zod-exception.filter.js +25 -0
  47. package/lib/server/src/shared/zod-exception.filter.js.map +1 -0
  48. package/lib/server/src/shared/zod-validation.pipe.d.ts +4 -0
  49. package/lib/server/src/shared/zod-validation.pipe.js +25 -0
  50. package/lib/server/src/shared/zod-validation.pipe.js.map +1 -0
  51. package/lib/utils/src/excel/converter.d.ts +8 -0
  52. package/lib/utils/src/excel/converter.js +144 -0
  53. package/lib/utils/src/excel/converter.js.map +1 -0
  54. package/lib/utils/src/excel/exceljsChunked.d.ts +75 -0
  55. package/lib/utils/src/excel/exceljsChunked.js +338 -0
  56. package/lib/utils/src/excel/exceljsChunked.js.map +1 -0
  57. package/lib/utils/src/excel/index.d.ts +9 -0
  58. package/lib/utils/src/excel/index.js +39 -0
  59. package/lib/utils/src/excel/index.js.map +1 -0
  60. package/lib/utils/src/excel/luckyexcel.d.ts +9 -0
  61. package/lib/utils/src/excel/luckyexcel.js +137 -0
  62. package/lib/utils/src/excel/luckyexcel.js.map +1 -0
  63. package/lib/utils/src/excel/sheetjsConverter.d.ts +6 -0
  64. package/lib/utils/src/excel/sheetjsConverter.js +224 -0
  65. package/lib/utils/src/excel/sheetjsConverter.js.map +1 -0
  66. package/lib/utils/src/excel/types.d.ts +88 -0
  67. package/lib/utils/src/excel/types.js +11 -0
  68. package/lib/utils/src/excel/types.js.map +1 -0
  69. package/lib/utils/src/excel/workbookChunked.d.ts +13 -0
  70. package/lib/utils/src/excel/workbookChunked.js +152 -0
  71. package/lib/utils/src/excel/workbookChunked.js.map +1 -0
  72. package/package.json +10 -5
  73. package/lib/app.module.js.map +0 -1
  74. package/lib/excel/excel.controller.d.ts +0 -13
  75. package/lib/excel/excel.controller.js.map +0 -1
  76. package/lib/excel/excel.converter.d.ts +0 -2
  77. package/lib/excel/excel.converter.js +0 -11
  78. package/lib/excel/excel.converter.js.map +0 -1
  79. package/lib/excel/excel.module.js.map +0 -1
  80. package/lib/excel/excel.service.d.ts +0 -9
  81. package/lib/excel/excel.service.js +0 -33
  82. package/lib/excel/excel.service.js.map +0 -1
  83. package/lib/excel/types.d.ts +0 -6
  84. package/lib/excel/types.js +0 -6
  85. package/lib/excel/types.js.map +0 -1
  86. package/lib/index.d.ts +0 -7
  87. package/lib/index.js +0 -14
  88. package/lib/index.js.map +0 -1
  89. package/lib/main.d.ts +0 -1
  90. package/lib/main.js.map +0 -1
  91. /package/lib/{app.module.d.ts → server/src/app.module.d.ts} +0 -0
  92. /package/lib/{app.module.js → server/src/app.module.js} +0 -0
  93. /package/lib/{excel → server/src/excel}/excel.module.d.ts +0 -0
@@ -0,0 +1,338 @@
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.chunkedMetaFileName = exports.chunkedBlockFileName = exports.excelBufferToChunkedWorkbook = exports.skeletonWorkbookFromMeta = exports.shouldUseChunkedImport = exports.DEFAULT_PARSE_TIMEOUT_MS = exports.DEFAULT_MAX_ROWS = exports.DEFAULT_BLOCK_ROW_SIZE = exports.CHUNKED_ROW_THRESHOLD = exports.CHUNKED_FILE_BYTES = void 0;
7
+ const exceljs_1 = __importDefault(require("exceljs"));
8
+ const converter_1 = require("./converter");
9
+ const types_1 = require("./types");
10
+ exports.CHUNKED_FILE_BYTES = 2 * 1024 * 1024;
11
+ exports.CHUNKED_ROW_THRESHOLD = 50_000;
12
+ exports.DEFAULT_BLOCK_ROW_SIZE = 5_000;
13
+ exports.DEFAULT_MAX_ROWS = 150_000;
14
+ exports.DEFAULT_PARSE_TIMEOUT_MS = 10 * 60 * 1000;
15
+ const toUint8Array = (input) => {
16
+ if (typeof Buffer !== 'undefined' && Buffer.isBuffer(input)) {
17
+ return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
18
+ }
19
+ if (input instanceof ArrayBuffer) {
20
+ return new Uint8Array(input);
21
+ }
22
+ return input;
23
+ };
24
+ const argbToRgb = (argb) => {
25
+ if (!argb || typeof argb !== 'string')
26
+ return undefined;
27
+ const hex = argb.replace(/^#/, '');
28
+ if (hex.length === 8)
29
+ return `#${hex.slice(2)}`;
30
+ if (hex.length === 6)
31
+ return `#${hex}`;
32
+ return undefined;
33
+ };
34
+ const excelColorToRgb = (color) => {
35
+ if (!color)
36
+ return undefined;
37
+ if (color.argb)
38
+ return argbToRgb(color.argb);
39
+ return undefined;
40
+ };
41
+ const cellFromExcelJs = (cell) => {
42
+ const value = cell.value;
43
+ if (value == null || value === '')
44
+ return null;
45
+ let mapped = null;
46
+ if (typeof value === 'object' && value !== null && 'formula' in value) {
47
+ const formula = String(value.formula || '').replace(/^=/, '');
48
+ const result = value.result;
49
+ mapped = {
50
+ f: `=${formula}`,
51
+ v: result,
52
+ t: typeof result === 'number'
53
+ ? types_1.CellValueType.NUMBER
54
+ : typeof result === 'boolean'
55
+ ? types_1.CellValueType.BOOLEAN
56
+ : types_1.CellValueType.STRING,
57
+ };
58
+ }
59
+ else if (typeof value === 'object' && value !== null && 'richText' in value) {
60
+ const text = (value.richText || [])
61
+ .map((part) => part.text || '')
62
+ .join('');
63
+ if (!text)
64
+ return null;
65
+ mapped = { v: text, t: types_1.CellValueType.STRING };
66
+ }
67
+ else if (typeof value === 'object' && value !== null && 'text' in value && 'hyperlink' in value) {
68
+ const text = String(value.text || '');
69
+ mapped = { v: text, t: types_1.CellValueType.STRING };
70
+ }
71
+ else if (typeof value === 'object' && value !== null && 'error' in value) {
72
+ mapped = { v: String(value.error), t: types_1.CellValueType.STRING };
73
+ }
74
+ else if (value instanceof Date) {
75
+ mapped = { v: value.toISOString(), t: types_1.CellValueType.STRING };
76
+ }
77
+ else if (typeof value === 'number') {
78
+ mapped = { v: value, t: types_1.CellValueType.NUMBER };
79
+ }
80
+ else if (typeof value === 'boolean') {
81
+ mapped = { v: value, t: types_1.CellValueType.BOOLEAN };
82
+ }
83
+ else {
84
+ const text = String(value);
85
+ if (!text)
86
+ return null;
87
+ mapped = { v: text, t: types_1.CellValueType.STRING };
88
+ }
89
+ if (!mapped)
90
+ return null;
91
+ const style = {};
92
+ const font = cell.font;
93
+ if (font) {
94
+ if (font.bold)
95
+ style.bl = 1;
96
+ if (font.italic)
97
+ style.it = 1;
98
+ if (font.size)
99
+ style.fs = font.size;
100
+ if (font.name)
101
+ style.ff = font.name;
102
+ const fc = excelColorToRgb(font.color);
103
+ if (fc)
104
+ style.cl = { rgb: fc };
105
+ }
106
+ const fill = cell.fill;
107
+ if (fill && fill.type === 'pattern' && fill.fgColor) {
108
+ const bg = excelColorToRgb(fill.fgColor);
109
+ if (bg)
110
+ style.bg = { rgb: bg };
111
+ }
112
+ if (cell.alignment) {
113
+ const ht = cell.alignment.horizontal === 'center'
114
+ ? 2
115
+ : cell.alignment.horizontal === 'right'
116
+ ? 3
117
+ : cell.alignment.horizontal === 'left'
118
+ ? 1
119
+ : undefined;
120
+ const vt = cell.alignment.vertical === 'middle'
121
+ ? 2
122
+ : cell.alignment.vertical === 'top'
123
+ ? 1
124
+ : cell.alignment.vertical === 'bottom'
125
+ ? 3
126
+ : undefined;
127
+ if (ht != null)
128
+ style.ht = ht;
129
+ if (vt != null)
130
+ style.vt = vt;
131
+ }
132
+ if (Object.keys(style).length) {
133
+ mapped.s = style;
134
+ }
135
+ return mapped;
136
+ };
137
+ const shouldUseChunkedImport = (sizeBytes, options) => {
138
+ const bytesThreshold = options?.bytesThreshold ?? exports.CHUNKED_FILE_BYTES;
139
+ const rowsThreshold = options?.rowsThreshold ?? exports.CHUNKED_ROW_THRESHOLD;
140
+ if (sizeBytes > bytesThreshold)
141
+ return true;
142
+ if (options?.estimatedRows != null && options.estimatedRows > rowsThreshold)
143
+ return true;
144
+ return false;
145
+ };
146
+ exports.shouldUseChunkedImport = shouldUseChunkedImport;
147
+ const skeletonWorkbookFromMeta = (meta) => {
148
+ const sheets = {};
149
+ meta.sheets.forEach((sheet) => {
150
+ sheets[sheet.id] = {
151
+ id: sheet.id,
152
+ name: sheet.name,
153
+ cellData: {},
154
+ mergeData: sheet.mergeData || [],
155
+ rowCount: Math.max(sheet.rowCount, 1),
156
+ columnCount: Math.max(sheet.columnCount, 1),
157
+ ...(sheet.columnData ? { columnData: sheet.columnData } : {}),
158
+ ...(sheet.rowData ? { rowData: sheet.rowData } : {}),
159
+ ...(sheet.defaultColumnWidth != null
160
+ ? { defaultColumnWidth: sheet.defaultColumnWidth }
161
+ : {}),
162
+ ...(sheet.defaultRowHeight != null ? { defaultRowHeight: sheet.defaultRowHeight } : {}),
163
+ };
164
+ });
165
+ return {
166
+ id: meta.workbookId || `wb-chunked-${Date.now()}`,
167
+ name: meta.name,
168
+ appVersion: meta.appVersion || '0.25.1',
169
+ locale: meta.locale || 'zhCN',
170
+ sheetOrder: meta.sheetOrder,
171
+ sheets,
172
+ styles: meta.styles,
173
+ resources: meta.resources,
174
+ };
175
+ };
176
+ exports.skeletonWorkbookFromMeta = skeletonWorkbookFromMeta;
177
+ const collectMerges = (worksheet, maxRowExclusive) => {
178
+ const merges = [];
179
+ const raw = worksheet.model?.merges;
180
+ if (!Array.isArray(raw))
181
+ return merges;
182
+ raw.forEach((ref) => {
183
+ try {
184
+ const [start, end] = String(ref).split(':');
185
+ if (!start)
186
+ return;
187
+ const startCell = worksheet.getCell(start);
188
+ const endCell = worksheet.getCell(end || start);
189
+ const top = Number(startCell.row) - 1;
190
+ const left = Number(startCell.col) - 1;
191
+ const bottom = Number(endCell.row) - 1;
192
+ const right = Number(endCell.col) - 1;
193
+ if (top >= maxRowExclusive)
194
+ return;
195
+ merges.push({
196
+ startRow: top,
197
+ startColumn: left,
198
+ endRow: Math.min(bottom, maxRowExclusive - 1),
199
+ endColumn: right,
200
+ });
201
+ }
202
+ catch {
203
+ }
204
+ });
205
+ return merges;
206
+ };
207
+ const excelBufferToChunkedWorkbook = async (input, options = {}) => {
208
+ const fileName = options.fileName || 'workbook.xlsx';
209
+ const blockRowSize = Math.max(100, options.blockRowSize || exports.DEFAULT_BLOCK_ROW_SIZE);
210
+ const maxRows = options.maxRows === 0
211
+ ? Number.POSITIVE_INFINITY
212
+ : options.maxRows ?? exports.DEFAULT_MAX_ROWS;
213
+ const bytes = (0, converter_1.ensureXlsxBytes)(toUint8Array(input), fileName);
214
+ options.onProgress?.({ percent: 5, parsedBlocks: 0, totalBlocks: 0, phase: 'load' });
215
+ const workbook = new exceljs_1.default.Workbook();
216
+ const loadInput = typeof Buffer !== 'undefined' ? Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength) : bytes;
217
+ await workbook.xlsx.load(loadInput);
218
+ options.onProgress?.({ percent: 20, parsedBlocks: 0, totalBlocks: 0, phase: 'convert' });
219
+ const sheetsMeta = [];
220
+ const sheetOrder = [];
221
+ const blocks = [];
222
+ let truncated = false;
223
+ let emittedBlocks = 0;
224
+ const sheetInfos = workbook.worksheets.map((worksheet, sheetIndex) => {
225
+ const id = `sheet-${sheetIndex}`;
226
+ const actualRowCount = worksheet.rowCount || 0;
227
+ const cappedRows = Math.min(actualRowCount, maxRows);
228
+ if (actualRowCount > maxRows)
229
+ truncated = true;
230
+ const blockCount = Math.max(1, Math.ceil(Math.max(cappedRows, 1) / blockRowSize));
231
+ return { worksheet, sheetIndex, id, cappedRows, blockCount, actualRowCount };
232
+ });
233
+ const totalBlocks = sheetInfos.reduce((sum, info) => sum + info.blockCount, 0) || 1;
234
+ for (const info of sheetInfos) {
235
+ const { worksheet, sheetIndex, id, cappedRows, blockCount } = info;
236
+ sheetOrder.push(id);
237
+ let maxCol = 0;
238
+ const columnData = {};
239
+ worksheet.columns?.forEach((col, idx) => {
240
+ if (!col)
241
+ return;
242
+ if (col.width != null || col.values?.length) {
243
+ maxCol = Math.max(maxCol, idx + 1);
244
+ }
245
+ if (col.width != null && Number.isFinite(col.width)) {
246
+ columnData[idx] = { w: Math.round(Number(col.width) * 8) };
247
+ }
248
+ });
249
+ const rowData = {};
250
+ if (cappedRows > 0) {
251
+ for (let excelRow = 1; excelRow <= cappedRows; excelRow += 1) {
252
+ const height = worksheet.getRow(excelRow).height;
253
+ if (height != null && Number.isFinite(height)) {
254
+ rowData[excelRow - 1] = { h: Math.round(Number(height) * (4 / 3)) };
255
+ }
256
+ }
257
+ }
258
+ const mergeData = collectMerges(worksheet, cappedRows);
259
+ for (let blockIndex = 0; blockIndex < blockCount; blockIndex += 1) {
260
+ const startRow = blockIndex * blockRowSize;
261
+ const endRow = Math.min(cappedRows, startRow + blockRowSize) - 1;
262
+ const cellData = {};
263
+ if (cappedRows > 0 && endRow >= startRow) {
264
+ for (let excelRow = startRow + 1; excelRow <= endRow + 1; excelRow += 1) {
265
+ const row = worksheet.getRow(excelRow);
266
+ row.eachCell({ includeEmpty: false }, (cell, colNumber) => {
267
+ const mapped = cellFromExcelJs(cell);
268
+ if (!mapped)
269
+ return;
270
+ const r = excelRow - 1;
271
+ const c = colNumber - 1;
272
+ if (!cellData[r])
273
+ cellData[r] = {};
274
+ cellData[r][c] = mapped;
275
+ });
276
+ }
277
+ for (const rowCells of Object.values(cellData)) {
278
+ for (const key of Object.keys(rowCells || {})) {
279
+ const col = Number(key);
280
+ if (Number.isFinite(col))
281
+ maxCol = Math.max(maxCol, col + 1);
282
+ }
283
+ }
284
+ }
285
+ const block = {
286
+ sheetId: id,
287
+ sheetIndex,
288
+ blockIndex,
289
+ startRow: Math.max(0, startRow),
290
+ endRow: Math.max(0, endRow),
291
+ cellData,
292
+ };
293
+ blocks.push(block);
294
+ emittedBlocks += 1;
295
+ await options.onBlock?.(block);
296
+ const percent = Math.min(95, 20 + Math.round((emittedBlocks / totalBlocks) * 75));
297
+ options.onProgress?.({
298
+ percent,
299
+ parsedBlocks: emittedBlocks,
300
+ totalBlocks,
301
+ phase: 'convert',
302
+ });
303
+ }
304
+ sheetsMeta.push({
305
+ id,
306
+ name: worksheet.name || `Sheet${sheetIndex + 1}`,
307
+ rowCount: Math.max(cappedRows, 1),
308
+ columnCount: Math.max(maxCol, 1),
309
+ blockCount,
310
+ mergeData: mergeData.length ? mergeData : undefined,
311
+ columnData: Object.keys(columnData).length ? columnData : undefined,
312
+ rowData: Object.keys(rowData).length ? rowData : undefined,
313
+ });
314
+ }
315
+ const meta = {
316
+ parseEngine: 'exceljs',
317
+ fileName,
318
+ name: fileName.replace(/\.xlsx$/i, '') || 'workbook',
319
+ sheetOrder,
320
+ sheets: sheetsMeta,
321
+ blockRowSize,
322
+ truncated: truncated || undefined,
323
+ maxRows: Number.isFinite(maxRows) ? maxRows : undefined,
324
+ };
325
+ options.onProgress?.({
326
+ percent: 100,
327
+ parsedBlocks: emittedBlocks,
328
+ totalBlocks,
329
+ phase: 'done',
330
+ });
331
+ return { meta, blocks };
332
+ };
333
+ exports.excelBufferToChunkedWorkbook = excelBufferToChunkedWorkbook;
334
+ const chunkedBlockFileName = (id, sheetIndex, blockIndex) => `${id}.block.${sheetIndex}.${blockIndex}.json`;
335
+ exports.chunkedBlockFileName = chunkedBlockFileName;
336
+ const chunkedMetaFileName = (id) => `${id}.meta.json`;
337
+ exports.chunkedMetaFileName = chunkedMetaFileName;
338
+ //# sourceMappingURL=exceljsChunked.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceljsChunked.js","sourceRoot":"","sources":["../../../../../utils/src/excel/exceljsChunked.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type { ExcelBinary, ExcelImportResult, ExcelSheetImage, ICellData, IRange, IWorkbookData, IWorksheetData, } from './types';
2
+ export { CellValueType } from './types';
3
+ export { assertSupportedExcelSource, ensureXlsxBytes, excelBufferToImportResult, excelBufferToWorkbookData, isLegacyExcelSource, workbookDataToExcelBuffer, workbookDataToExcelBytes, } from './converter';
4
+ export { excelBufferToWorkbookDataBySheetJs, readExcelWithSheetJs, workbookFromSheetJs, workbookHasCellValues, } from './sheetjsConverter';
5
+ export { CHUNKED_FILE_BYTES, CHUNKED_ROW_THRESHOLD, DEFAULT_BLOCK_ROW_SIZE, DEFAULT_MAX_ROWS, DEFAULT_PARSE_TIMEOUT_MS, chunkedBlockFileName, chunkedMetaFileName, excelBufferToChunkedWorkbook, shouldUseChunkedImport, skeletonWorkbookFromMeta, } from './exceljsChunked';
6
+ export type { ChunkedBlock, ChunkedConvertOptions, ChunkedProgress, ChunkedSheetMeta, ChunkedWorkbookMeta, } from './exceljsChunked';
7
+ export { splitWorkbookDataToChunks } from './workbookChunked';
8
+ export type { SplitWorkbookOptions } from './workbookChunked';
9
+ export { fileToImportResult, importExcelBinary, transformExcelToUniver, transformUniverToExcelBuffer, workbookDataToExcelBlob, workbookHasDrawingResources, } from './luckyexcel';
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.workbookHasDrawingResources = exports.workbookDataToExcelBlob = exports.transformUniverToExcelBuffer = exports.transformExcelToUniver = exports.importExcelBinary = exports.fileToImportResult = exports.splitWorkbookDataToChunks = exports.skeletonWorkbookFromMeta = exports.shouldUseChunkedImport = exports.excelBufferToChunkedWorkbook = exports.chunkedMetaFileName = exports.chunkedBlockFileName = exports.DEFAULT_PARSE_TIMEOUT_MS = exports.DEFAULT_MAX_ROWS = exports.DEFAULT_BLOCK_ROW_SIZE = exports.CHUNKED_ROW_THRESHOLD = exports.CHUNKED_FILE_BYTES = exports.workbookHasCellValues = exports.workbookFromSheetJs = exports.readExcelWithSheetJs = exports.excelBufferToWorkbookDataBySheetJs = exports.workbookDataToExcelBytes = exports.workbookDataToExcelBuffer = exports.isLegacyExcelSource = exports.excelBufferToWorkbookData = exports.excelBufferToImportResult = exports.ensureXlsxBytes = exports.assertSupportedExcelSource = exports.CellValueType = void 0;
4
+ var types_1 = require("./types");
5
+ Object.defineProperty(exports, "CellValueType", { enumerable: true, get: function () { return types_1.CellValueType; } });
6
+ var converter_1 = require("./converter");
7
+ Object.defineProperty(exports, "assertSupportedExcelSource", { enumerable: true, get: function () { return converter_1.assertSupportedExcelSource; } });
8
+ Object.defineProperty(exports, "ensureXlsxBytes", { enumerable: true, get: function () { return converter_1.ensureXlsxBytes; } });
9
+ Object.defineProperty(exports, "excelBufferToImportResult", { enumerable: true, get: function () { return converter_1.excelBufferToImportResult; } });
10
+ Object.defineProperty(exports, "excelBufferToWorkbookData", { enumerable: true, get: function () { return converter_1.excelBufferToWorkbookData; } });
11
+ Object.defineProperty(exports, "isLegacyExcelSource", { enumerable: true, get: function () { return converter_1.isLegacyExcelSource; } });
12
+ Object.defineProperty(exports, "workbookDataToExcelBuffer", { enumerable: true, get: function () { return converter_1.workbookDataToExcelBuffer; } });
13
+ Object.defineProperty(exports, "workbookDataToExcelBytes", { enumerable: true, get: function () { return converter_1.workbookDataToExcelBytes; } });
14
+ var sheetjsConverter_1 = require("./sheetjsConverter");
15
+ Object.defineProperty(exports, "excelBufferToWorkbookDataBySheetJs", { enumerable: true, get: function () { return sheetjsConverter_1.excelBufferToWorkbookDataBySheetJs; } });
16
+ Object.defineProperty(exports, "readExcelWithSheetJs", { enumerable: true, get: function () { return sheetjsConverter_1.readExcelWithSheetJs; } });
17
+ Object.defineProperty(exports, "workbookFromSheetJs", { enumerable: true, get: function () { return sheetjsConverter_1.workbookFromSheetJs; } });
18
+ Object.defineProperty(exports, "workbookHasCellValues", { enumerable: true, get: function () { return sheetjsConverter_1.workbookHasCellValues; } });
19
+ var exceljsChunked_1 = require("./exceljsChunked");
20
+ Object.defineProperty(exports, "CHUNKED_FILE_BYTES", { enumerable: true, get: function () { return exceljsChunked_1.CHUNKED_FILE_BYTES; } });
21
+ Object.defineProperty(exports, "CHUNKED_ROW_THRESHOLD", { enumerable: true, get: function () { return exceljsChunked_1.CHUNKED_ROW_THRESHOLD; } });
22
+ Object.defineProperty(exports, "DEFAULT_BLOCK_ROW_SIZE", { enumerable: true, get: function () { return exceljsChunked_1.DEFAULT_BLOCK_ROW_SIZE; } });
23
+ Object.defineProperty(exports, "DEFAULT_MAX_ROWS", { enumerable: true, get: function () { return exceljsChunked_1.DEFAULT_MAX_ROWS; } });
24
+ Object.defineProperty(exports, "DEFAULT_PARSE_TIMEOUT_MS", { enumerable: true, get: function () { return exceljsChunked_1.DEFAULT_PARSE_TIMEOUT_MS; } });
25
+ Object.defineProperty(exports, "chunkedBlockFileName", { enumerable: true, get: function () { return exceljsChunked_1.chunkedBlockFileName; } });
26
+ Object.defineProperty(exports, "chunkedMetaFileName", { enumerable: true, get: function () { return exceljsChunked_1.chunkedMetaFileName; } });
27
+ Object.defineProperty(exports, "excelBufferToChunkedWorkbook", { enumerable: true, get: function () { return exceljsChunked_1.excelBufferToChunkedWorkbook; } });
28
+ Object.defineProperty(exports, "shouldUseChunkedImport", { enumerable: true, get: function () { return exceljsChunked_1.shouldUseChunkedImport; } });
29
+ Object.defineProperty(exports, "skeletonWorkbookFromMeta", { enumerable: true, get: function () { return exceljsChunked_1.skeletonWorkbookFromMeta; } });
30
+ var workbookChunked_1 = require("./workbookChunked");
31
+ Object.defineProperty(exports, "splitWorkbookDataToChunks", { enumerable: true, get: function () { return workbookChunked_1.splitWorkbookDataToChunks; } });
32
+ var luckyexcel_1 = require("./luckyexcel");
33
+ Object.defineProperty(exports, "fileToImportResult", { enumerable: true, get: function () { return luckyexcel_1.fileToImportResult; } });
34
+ Object.defineProperty(exports, "importExcelBinary", { enumerable: true, get: function () { return luckyexcel_1.importExcelBinary; } });
35
+ Object.defineProperty(exports, "transformExcelToUniver", { enumerable: true, get: function () { return luckyexcel_1.transformExcelToUniver; } });
36
+ Object.defineProperty(exports, "transformUniverToExcelBuffer", { enumerable: true, get: function () { return luckyexcel_1.transformUniverToExcelBuffer; } });
37
+ Object.defineProperty(exports, "workbookDataToExcelBlob", { enumerable: true, get: function () { return luckyexcel_1.workbookDataToExcelBlob; } });
38
+ Object.defineProperty(exports, "workbookHasDrawingResources", { enumerable: true, get: function () { return luckyexcel_1.workbookHasDrawingResources; } });
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../utils/src/excel/index.ts"],"names":[],"mappings":";;;AASA,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AAEtB,yCAQqB;AAPnB,uHAAA,0BAA0B,OAAA;AAC1B,4GAAA,eAAe,OAAA;AACf,sHAAA,yBAAyB,OAAA;AACzB,sHAAA,yBAAyB,OAAA;AACzB,gHAAA,mBAAmB,OAAA;AACnB,sHAAA,yBAAyB,OAAA;AACzB,qHAAA,wBAAwB,OAAA;AAG1B,uDAK4B;AAJ1B,sIAAA,kCAAkC,OAAA;AAClC,wHAAA,oBAAoB,OAAA;AACpB,uHAAA,mBAAmB,OAAA;AACnB,yHAAA,qBAAqB,OAAA;AAIvB,mDAW0B;AAVxB,oHAAA,kBAAkB,OAAA;AAClB,uHAAA,qBAAqB,OAAA;AACrB,wHAAA,sBAAsB,OAAA;AACtB,kHAAA,gBAAgB,OAAA;AAChB,0HAAA,wBAAwB,OAAA;AACxB,sHAAA,oBAAoB,OAAA;AACpB,qHAAA,mBAAmB,OAAA;AACnB,8HAAA,4BAA4B,OAAA;AAC5B,wHAAA,sBAAsB,OAAA;AACtB,0HAAA,wBAAwB,OAAA;AAS1B,qDAA8D;AAArD,4HAAA,yBAAyB,OAAA;AAIlC,2CAOsB;AANpB,gHAAA,kBAAkB,OAAA;AAClB,+GAAA,iBAAiB,OAAA;AACjB,oHAAA,sBAAsB,OAAA;AACtB,0HAAA,4BAA4B,OAAA;AAC5B,qHAAA,uBAAuB,OAAA;AACvB,yHAAA,2BAA2B,OAAA"}
@@ -0,0 +1,9 @@
1
+ import type { ExcelBinary, ExcelImportResult, IWorkbookData } from './types';
2
+ type LuckyExcelInput = File | Blob | Uint8Array | ArrayBuffer;
3
+ export declare const transformExcelToUniver: (input: LuckyExcelInput) => Promise<Partial<IWorkbookData>>;
4
+ export declare const transformUniverToExcelBuffer: (snapshot: Partial<IWorkbookData>, fileName: string) => Promise<ArrayBuffer | Uint8Array | Buffer>;
5
+ export declare const workbookHasDrawingResources: (workbookData?: Partial<IWorkbookData> | null) => boolean;
6
+ export declare const importExcelBinary: (input: ExcelBinary, fileName?: string) => Promise<ExcelImportResult>;
7
+ export declare const fileToImportResult: (file: File) => Promise<ExcelImportResult>;
8
+ export declare const workbookDataToExcelBlob: (data: Partial<IWorkbookData>, fileName?: string) => Promise<Blob>;
9
+ export {};
@@ -0,0 +1,137 @@
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.workbookDataToExcelBlob = exports.fileToImportResult = exports.importExcelBinary = exports.workbookHasDrawingResources = exports.transformUniverToExcelBuffer = exports.transformExcelToUniver = void 0;
7
+ const luckyexcel_1 = __importDefault(require("@zwight/luckyexcel"));
8
+ const converter_1 = require("./converter");
9
+ const sheetjsConverter_1 = require("./sheetjsConverter");
10
+ const XLSX_MIME = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
11
+ const toUint8Array = (input) => {
12
+ if (typeof Buffer !== 'undefined' && Buffer.isBuffer(input)) {
13
+ return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
14
+ }
15
+ if (input instanceof ArrayBuffer) {
16
+ return new Uint8Array(input);
17
+ }
18
+ return input;
19
+ };
20
+ const createXlsxFile = (bytes, fileName) => {
21
+ if (typeof File === 'undefined') {
22
+ throw new Error('当前环境不支持 File API,无法使用 LuckyExcel');
23
+ }
24
+ const name = fileName.endsWith('.xlsx') ? fileName : `${fileName.replace(/\.xls$/i, '')}.xlsx`;
25
+ return new File([bytes.slice()], name, { type: XLSX_MIME });
26
+ };
27
+ const transformExcelToUniver = (input) => new Promise((resolve, reject) => {
28
+ try {
29
+ luckyexcel_1.default.transformExcelToUniver(input, (exportJson) => {
30
+ const data = exportJson;
31
+ if (!data?.sheets) {
32
+ reject(new Error('LuckyExcel 解析结果为空'));
33
+ return;
34
+ }
35
+ resolve(data);
36
+ }, (error) => {
37
+ reject(error instanceof Error ? error : new Error(String(error)));
38
+ });
39
+ }
40
+ catch (error) {
41
+ reject(error instanceof Error ? error : new Error(String(error)));
42
+ }
43
+ });
44
+ exports.transformExcelToUniver = transformExcelToUniver;
45
+ const transformUniverToExcelBuffer = (snapshot, fileName) => new Promise((resolve, reject) => {
46
+ try {
47
+ luckyexcel_1.default.transformUniverToExcel({
48
+ snapshot: snapshot,
49
+ fileName,
50
+ getBuffer: true,
51
+ success: (buffer) => {
52
+ if (buffer == null) {
53
+ reject(new Error('LuckyExcel 导出结果为空'));
54
+ return;
55
+ }
56
+ resolve(buffer);
57
+ },
58
+ error: (error) => reject(error),
59
+ });
60
+ }
61
+ catch (error) {
62
+ reject(error instanceof Error ? error : new Error(String(error)));
63
+ }
64
+ });
65
+ exports.transformUniverToExcelBuffer = transformUniverToExcelBuffer;
66
+ const tryLuckyExcel = async (input) => {
67
+ try {
68
+ return await (0, exports.transformExcelToUniver)(input);
69
+ }
70
+ catch (error) {
71
+ console.warn('[@ims-view/utils/excel] LuckyExcel 失败', error);
72
+ return null;
73
+ }
74
+ };
75
+ const workbookHasDrawingResources = (workbookData) => {
76
+ try {
77
+ const drawing = (workbookData?.resources || []).find((item) => item?.name === 'SHEET_DRAWING_PLUGIN');
78
+ if (!drawing?.data)
79
+ return false;
80
+ const parsed = typeof drawing.data === 'string' ? JSON.parse(drawing.data) : drawing.data;
81
+ return Object.values(parsed || {}).some((sheetVal) => {
82
+ const data = sheetVal?.data;
83
+ return Boolean(data && typeof data === 'object' && Object.keys(data).length > 0);
84
+ });
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ };
90
+ exports.workbookHasDrawingResources = workbookHasDrawingResources;
91
+ const importExcelBinary = async (input, fileName = 'workbook.xlsx') => {
92
+ const bytes = toUint8Array(input);
93
+ (0, converter_1.assertSupportedExcelSource)(bytes, fileName);
94
+ let workbookData = await tryLuckyExcel(bytes);
95
+ if ((!workbookData || !(0, sheetjsConverter_1.workbookHasCellValues)(workbookData)) &&
96
+ typeof window !== 'undefined' &&
97
+ typeof File !== 'undefined') {
98
+ try {
99
+ workbookData = await (0, exports.transformExcelToUniver)(createXlsxFile(bytes, fileName));
100
+ }
101
+ catch (error) {
102
+ console.warn('[@ims-view/utils/excel] LuckyExcel(File) 失败', error);
103
+ workbookData = null;
104
+ }
105
+ }
106
+ if (workbookData && (0, sheetjsConverter_1.workbookHasCellValues)(workbookData)) {
107
+ return { workbookData, images: [] };
108
+ }
109
+ console.warn('[@ims-view/utils/excel] LuckyExcel 返回空表,回退 SheetJS');
110
+ return {
111
+ workbookData: (0, sheetjsConverter_1.excelBufferToWorkbookDataBySheetJs)(bytes, fileName),
112
+ images: [],
113
+ };
114
+ };
115
+ exports.importExcelBinary = importExcelBinary;
116
+ const fileToImportResult = async (file) => {
117
+ const buffer = await file.arrayBuffer();
118
+ return (0, exports.importExcelBinary)(buffer, file.name);
119
+ };
120
+ exports.fileToImportResult = fileToImportResult;
121
+ const workbookDataToExcelBlob = async (data, fileName = 'workbook.xlsx') => {
122
+ const name = fileName.endsWith('.xlsx') ? fileName : `${fileName}.xlsx`;
123
+ if (typeof Blob === 'undefined') {
124
+ throw new Error('当前环境不支持 Blob,请使用 workbookDataToExcelBuffer');
125
+ }
126
+ try {
127
+ const buffer = await (0, exports.transformUniverToExcelBuffer)(data, name);
128
+ return new Blob([buffer], { type: XLSX_MIME });
129
+ }
130
+ catch (error) {
131
+ console.warn('[@ims-view/utils/excel] LuckyExcel 导出失败,回退 exceljs', error);
132
+ const excelBytes = await (0, converter_1.workbookDataToExcelBytes)(data);
133
+ return new Blob([new Uint8Array(excelBytes)], { type: XLSX_MIME });
134
+ }
135
+ };
136
+ exports.workbookDataToExcelBlob = workbookDataToExcelBlob;
137
+ //# sourceMappingURL=luckyexcel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"luckyexcel.js","sourceRoot":"","sources":["../../../../../utils/src/excel/luckyexcel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import * as XLSX from 'xlsx';
2
+ import { type ExcelBinary, type IWorkbookData } from './types';
3
+ export declare const readExcelWithSheetJs: (input: ExcelBinary) => XLSX.WorkBook;
4
+ export declare const workbookFromSheetJs: (wb: XLSX.WorkBook, fileName?: string) => Partial<IWorkbookData>;
5
+ export declare const workbookHasCellValues: (data: Partial<IWorkbookData>) => boolean;
6
+ export declare const excelBufferToWorkbookDataBySheetJs: (input: ExcelBinary, fileName?: string) => Partial<IWorkbookData>;