@ims-view/server 1.2.0 → 1.2.2
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 +20 -1
- package/lib/excel/excel-export.worker.cjs +70 -0
- package/lib/excel/excel-parse.worker.cjs +114 -0
- package/lib/server/src/app.module.js.map +1 -0
- package/lib/server/src/config/env.d.ts +31 -0
- package/lib/server/src/config/env.js +32 -0
- package/lib/server/src/config/env.js.map +1 -0
- package/lib/server/src/excel/dto/excel-task-id.dto.d.ts +19 -0
- package/lib/server/src/excel/dto/excel-task-id.dto.js +17 -0
- package/lib/server/src/excel/dto/excel-task-id.dto.js.map +1 -0
- package/lib/server/src/excel/dto/export-excel.dto.d.ts +67 -0
- package/lib/server/src/excel/dto/export-excel.dto.js +48 -0
- package/lib/server/src/excel/dto/export-excel.dto.js.map +1 -0
- package/lib/server/src/excel/excel-storage.service.d.ts +54 -0
- package/lib/server/src/excel/excel-storage.service.js +267 -0
- package/lib/server/src/excel/excel-storage.service.js.map +1 -0
- package/lib/server/src/excel/excel.controller.d.ts +17 -0
- package/lib/{excel → server/src/excel}/excel.controller.js +40 -11
- package/lib/server/src/excel/excel.controller.js.map +1 -0
- package/lib/server/src/excel/excel.converter.d.ts +15 -0
- package/lib/server/src/excel/excel.converter.js +53 -0
- package/lib/server/src/excel/excel.converter.js.map +1 -0
- package/lib/{excel → server/src/excel}/excel.module.js +3 -2
- package/lib/server/src/excel/excel.module.js.map +1 -0
- package/lib/server/src/excel/excel.service.d.ts +33 -0
- package/lib/server/src/excel/excel.service.js +390 -0
- package/lib/server/src/excel/excel.service.js.map +1 -0
- package/lib/server/src/excel/types.d.ts +6 -0
- package/lib/server/src/excel/types.js +44 -0
- package/lib/server/src/excel/types.js.map +1 -0
- package/lib/server/src/index.d.ts +12 -0
- package/lib/server/src/index.js +32 -0
- package/lib/server/src/index.js.map +1 -0
- package/lib/server/src/main.d.ts +1 -0
- package/lib/{main.js → server/src/main.js} +58 -2
- package/lib/server/src/main.js.map +1 -0
- package/lib/server/src/shared/create-zod-base-model.d.ts +29 -0
- package/lib/server/src/shared/create-zod-base-model.js +55 -0
- package/lib/server/src/shared/create-zod-base-model.js.map +1 -0
- package/lib/server/src/shared/index.d.ts +5 -0
- package/lib/server/src/shared/index.js +16 -0
- package/lib/server/src/shared/index.js.map +1 -0
- package/lib/server/src/shared/response-entity.d.ts +32 -0
- package/lib/server/src/shared/response-entity.js +74 -0
- package/lib/server/src/shared/response-entity.js.map +1 -0
- package/lib/server/src/shared/zod-exception.filter.d.ts +5 -0
- package/lib/server/src/shared/zod-exception.filter.js +25 -0
- package/lib/server/src/shared/zod-exception.filter.js.map +1 -0
- package/lib/server/src/shared/zod-validation.pipe.d.ts +4 -0
- package/lib/server/src/shared/zod-validation.pipe.js +25 -0
- package/lib/server/src/shared/zod-validation.pipe.js.map +1 -0
- package/lib/utils/src/excel/converter.d.ts +7 -0
- package/lib/utils/src/excel/converter.js +139 -0
- package/lib/utils/src/excel/converter.js.map +1 -0
- package/lib/utils/src/excel/exceljsChunked.d.ts +2 -0
- package/lib/utils/src/excel/exceljsChunked.js +16 -0
- package/lib/utils/src/excel/exceljsChunked.js.map +1 -0
- package/lib/utils/src/excel/exceljsDrawings.d.ts +2 -0
- package/lib/utils/src/excel/exceljsDrawings.js +8 -0
- package/lib/utils/src/excel/exceljsDrawings.js.map +1 -0
- package/lib/utils/src/excel/exceljsStyle.d.ts +2 -0
- package/lib/utils/src/excel/exceljsStyle.js +10 -0
- package/lib/utils/src/excel/exceljsStyle.js.map +1 -0
- package/lib/utils/src/excel/exportWorkerClient.d.ts +31 -0
- package/lib/utils/src/excel/exportWorkerClient.js +105 -0
- package/lib/utils/src/excel/exportWorkerClient.js.map +1 -0
- package/lib/utils/src/excel/index.d.ts +15 -0
- package/lib/utils/src/excel/index.js +57 -0
- package/lib/utils/src/excel/index.js.map +1 -0
- package/lib/utils/src/excel/luckyexcel.d.ts +13 -0
- package/lib/utils/src/excel/luckyexcel.js +211 -0
- package/lib/utils/src/excel/luckyexcel.js.map +1 -0
- package/lib/utils/src/excel/sheetjsConverter.d.ts +6 -0
- package/lib/utils/src/excel/sheetjsConverter.js +224 -0
- package/lib/utils/src/excel/sheetjsConverter.js.map +1 -0
- package/lib/utils/src/excel/types.d.ts +88 -0
- package/lib/utils/src/excel/types.js +11 -0
- package/lib/utils/src/excel/types.js.map +1 -0
- package/lib/utils/src/excel/workbookChunked.d.ts +13 -0
- package/lib/utils/src/excel/workbookChunked.js +152 -0
- package/lib/utils/src/excel/workbookChunked.js.map +1 -0
- package/package.json +12 -6
- package/lib/app.module.js.map +0 -1
- package/lib/excel/excel.controller.d.ts +0 -13
- package/lib/excel/excel.controller.js.map +0 -1
- package/lib/excel/excel.converter.d.ts +0 -2
- package/lib/excel/excel.converter.js +0 -11
- package/lib/excel/excel.converter.js.map +0 -1
- package/lib/excel/excel.module.js.map +0 -1
- package/lib/excel/excel.service.d.ts +0 -9
- package/lib/excel/excel.service.js +0 -33
- package/lib/excel/excel.service.js.map +0 -1
- package/lib/excel/types.d.ts +0 -6
- package/lib/excel/types.js +0 -6
- package/lib/excel/types.js.map +0 -1
- package/lib/index.d.ts +0 -7
- package/lib/index.js +0 -14
- package/lib/index.js.map +0 -1
- package/lib/main.d.ts +0 -1
- package/lib/main.js.map +0 -1
- /package/lib/{app.module.d.ts → server/src/app.module.d.ts} +0 -0
- /package/lib/{app.module.js → server/src/app.module.js} +0 -0
- /package/lib/{excel → server/src/excel}/excel.module.d.ts +0 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runExcelExportInBrowserWorker = exports.installExcelExportWorker = exports.workbookDataToExcelArrayBuffer = exports.resolveShouldUseExportWorker = exports.estimateWorkbookSnapshotBytes = exports.DEFAULT_EXPORT_WORKER_THRESHOLD_BYTES = void 0;
|
|
4
|
+
const luckyexcel_1 = require("./luckyexcel");
|
|
5
|
+
exports.DEFAULT_EXPORT_WORKER_THRESHOLD_BYTES = 512 * 1024;
|
|
6
|
+
const estimateWorkbookSnapshotBytes = (data) => {
|
|
7
|
+
try {
|
|
8
|
+
return JSON.stringify(data).length;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return Number.MAX_SAFE_INTEGER;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.estimateWorkbookSnapshotBytes = estimateWorkbookSnapshotBytes;
|
|
15
|
+
const resolveShouldUseExportWorker = (sizeBytes, options = {}) => {
|
|
16
|
+
const mode = options.worker || 'auto';
|
|
17
|
+
if (mode === 'off')
|
|
18
|
+
return false;
|
|
19
|
+
if (!options.createWorker)
|
|
20
|
+
return false;
|
|
21
|
+
if (mode === 'on')
|
|
22
|
+
return true;
|
|
23
|
+
const threshold = options.workerThresholdBytes ?? exports.DEFAULT_EXPORT_WORKER_THRESHOLD_BYTES;
|
|
24
|
+
return sizeBytes > threshold;
|
|
25
|
+
};
|
|
26
|
+
exports.resolveShouldUseExportWorker = resolveShouldUseExportWorker;
|
|
27
|
+
const workbookDataToExcelArrayBuffer = async (data, fileName = 'workbook.xlsx') => {
|
|
28
|
+
const name = fileName.endsWith('.xlsx') ? fileName : `${fileName}.xlsx`;
|
|
29
|
+
const buffer = await (0, luckyexcel_1.transformUniverToExcelBuffer)(data, name);
|
|
30
|
+
if (buffer instanceof ArrayBuffer)
|
|
31
|
+
return buffer;
|
|
32
|
+
const view = typeof Buffer !== 'undefined' && Buffer.isBuffer(buffer)
|
|
33
|
+
? new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength)
|
|
34
|
+
: buffer instanceof Uint8Array
|
|
35
|
+
? buffer
|
|
36
|
+
: null;
|
|
37
|
+
if (!view) {
|
|
38
|
+
throw new Error('LuckyExcel 导出结果类型未知');
|
|
39
|
+
}
|
|
40
|
+
const copy = new Uint8Array(view.byteLength);
|
|
41
|
+
copy.set(view);
|
|
42
|
+
return copy.buffer;
|
|
43
|
+
};
|
|
44
|
+
exports.workbookDataToExcelArrayBuffer = workbookDataToExcelArrayBuffer;
|
|
45
|
+
const installExcelExportWorker = (scope = self) => {
|
|
46
|
+
scope.addEventListener('message', (event) => {
|
|
47
|
+
const data = event.data;
|
|
48
|
+
if (!data || data.type !== 'export')
|
|
49
|
+
return;
|
|
50
|
+
(async () => {
|
|
51
|
+
const buffer = await (0, exports.workbookDataToExcelArrayBuffer)(data.snapshot, data.fileName);
|
|
52
|
+
const transferable = buffer.slice(0);
|
|
53
|
+
scope.postMessage({ type: 'done', buffer: transferable }, [transferable]);
|
|
54
|
+
})().catch((error) => {
|
|
55
|
+
scope.postMessage({
|
|
56
|
+
type: 'error',
|
|
57
|
+
error: error instanceof Error ? error.message : String(error),
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
exports.installExcelExportWorker = installExcelExportWorker;
|
|
63
|
+
const runExcelExportInBrowserWorker = (snapshot, options) => new Promise((resolve, reject) => {
|
|
64
|
+
let worker;
|
|
65
|
+
try {
|
|
66
|
+
worker = options.createWorker();
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const cleanup = () => {
|
|
73
|
+
try {
|
|
74
|
+
worker.terminate();
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
worker.onmessage = (event) => {
|
|
80
|
+
const msg = event.data;
|
|
81
|
+
if (!msg)
|
|
82
|
+
return;
|
|
83
|
+
if (msg.type === 'error') {
|
|
84
|
+
cleanup();
|
|
85
|
+
reject(new Error(msg.error));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (msg.type === 'done') {
|
|
89
|
+
cleanup();
|
|
90
|
+
resolve(msg.buffer);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
worker.onerror = (event) => {
|
|
94
|
+
cleanup();
|
|
95
|
+
reject(new Error(event.message || 'Excel export worker failed'));
|
|
96
|
+
};
|
|
97
|
+
const message = {
|
|
98
|
+
type: 'export',
|
|
99
|
+
snapshot,
|
|
100
|
+
fileName: options.fileName || 'workbook.xlsx',
|
|
101
|
+
};
|
|
102
|
+
worker.postMessage(message);
|
|
103
|
+
});
|
|
104
|
+
exports.runExcelExportInBrowserWorker = runExcelExportInBrowserWorker;
|
|
105
|
+
//# sourceMappingURL=exportWorkerClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exportWorkerClient.js","sourceRoot":"","sources":["../../../../../utils/src/excel/exportWorkerClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type { ExcelBinary, ExcelImportResult, ExcelSheetImage, ICellData, IRange, IWorkbookData, IWorksheetData, } from './types';
|
|
2
|
+
export { CellValueType } from './types';
|
|
3
|
+
export { assertSupportedExcelSource, ensureXlsxBytes, excelBufferToImportResult, excelBufferToWorkbookData, isLegacyExcelSource, 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, resolveWorksheetRowCount, shouldUseChunkedImport, skeletonWorkbookFromMeta, } from './exceljsChunked';
|
|
6
|
+
export type { ChunkedBlock, ChunkedConvertOptions, ChunkedProgress, ChunkedSheetMeta, ChunkedWorkbookMeta, } from './exceljsChunked';
|
|
7
|
+
export { BorderStyleTypes, StyleInterner, argbToRgb, excelColorToRgb, excelStyleToUniver, } from './exceljsStyle';
|
|
8
|
+
export type { UniverStyleData } from './exceljsStyle';
|
|
9
|
+
export { collectWorkbookDrawingResources, collectWorksheetFreeze, emuToPx, } from './exceljsDrawings';
|
|
10
|
+
export type { SheetFreeze } from './exceljsDrawings';
|
|
11
|
+
export { splitWorkbookDataToChunks } from './workbookChunked';
|
|
12
|
+
export type { SplitWorkbookOptions } from './workbookChunked';
|
|
13
|
+
export { fileToImportResult, importExcelBinary, transformExcelToUniver, transformUniverToExcelBuffer, workbookDataToExcelBlob, workbookDataToExcelBuffer, workbookHasDrawingResources, } from './luckyexcel';
|
|
14
|
+
export type { ExcelExportOptions, ExcelExportWorkerMode } from './exportWorkerClient';
|
|
15
|
+
export { DEFAULT_EXPORT_WORKER_THRESHOLD_BYTES, estimateWorkbookSnapshotBytes, installExcelExportWorker, resolveShouldUseExportWorker, runExcelExportInBrowserWorker, workbookDataToExcelArrayBuffer, } from './exportWorkerClient';
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.workbookDataToExcelArrayBuffer = exports.runExcelExportInBrowserWorker = exports.resolveShouldUseExportWorker = exports.installExcelExportWorker = exports.estimateWorkbookSnapshotBytes = exports.DEFAULT_EXPORT_WORKER_THRESHOLD_BYTES = exports.workbookHasDrawingResources = exports.workbookDataToExcelBuffer = exports.workbookDataToExcelBlob = exports.transformUniverToExcelBuffer = exports.transformExcelToUniver = exports.importExcelBinary = exports.fileToImportResult = exports.splitWorkbookDataToChunks = exports.emuToPx = exports.collectWorksheetFreeze = exports.collectWorkbookDrawingResources = exports.excelStyleToUniver = exports.excelColorToRgb = exports.argbToRgb = exports.StyleInterner = exports.BorderStyleTypes = exports.skeletonWorkbookFromMeta = exports.shouldUseChunkedImport = exports.resolveWorksheetRowCount = 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.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, "workbookDataToExcelBytes", { enumerable: true, get: function () { return converter_1.workbookDataToExcelBytes; } });
|
|
13
|
+
var sheetjsConverter_1 = require("./sheetjsConverter");
|
|
14
|
+
Object.defineProperty(exports, "excelBufferToWorkbookDataBySheetJs", { enumerable: true, get: function () { return sheetjsConverter_1.excelBufferToWorkbookDataBySheetJs; } });
|
|
15
|
+
Object.defineProperty(exports, "readExcelWithSheetJs", { enumerable: true, get: function () { return sheetjsConverter_1.readExcelWithSheetJs; } });
|
|
16
|
+
Object.defineProperty(exports, "workbookFromSheetJs", { enumerable: true, get: function () { return sheetjsConverter_1.workbookFromSheetJs; } });
|
|
17
|
+
Object.defineProperty(exports, "workbookHasCellValues", { enumerable: true, get: function () { return sheetjsConverter_1.workbookHasCellValues; } });
|
|
18
|
+
var exceljsChunked_1 = require("./exceljsChunked");
|
|
19
|
+
Object.defineProperty(exports, "CHUNKED_FILE_BYTES", { enumerable: true, get: function () { return exceljsChunked_1.CHUNKED_FILE_BYTES; } });
|
|
20
|
+
Object.defineProperty(exports, "CHUNKED_ROW_THRESHOLD", { enumerable: true, get: function () { return exceljsChunked_1.CHUNKED_ROW_THRESHOLD; } });
|
|
21
|
+
Object.defineProperty(exports, "DEFAULT_BLOCK_ROW_SIZE", { enumerable: true, get: function () { return exceljsChunked_1.DEFAULT_BLOCK_ROW_SIZE; } });
|
|
22
|
+
Object.defineProperty(exports, "DEFAULT_MAX_ROWS", { enumerable: true, get: function () { return exceljsChunked_1.DEFAULT_MAX_ROWS; } });
|
|
23
|
+
Object.defineProperty(exports, "DEFAULT_PARSE_TIMEOUT_MS", { enumerable: true, get: function () { return exceljsChunked_1.DEFAULT_PARSE_TIMEOUT_MS; } });
|
|
24
|
+
Object.defineProperty(exports, "chunkedBlockFileName", { enumerable: true, get: function () { return exceljsChunked_1.chunkedBlockFileName; } });
|
|
25
|
+
Object.defineProperty(exports, "chunkedMetaFileName", { enumerable: true, get: function () { return exceljsChunked_1.chunkedMetaFileName; } });
|
|
26
|
+
Object.defineProperty(exports, "excelBufferToChunkedWorkbook", { enumerable: true, get: function () { return exceljsChunked_1.excelBufferToChunkedWorkbook; } });
|
|
27
|
+
Object.defineProperty(exports, "resolveWorksheetRowCount", { enumerable: true, get: function () { return exceljsChunked_1.resolveWorksheetRowCount; } });
|
|
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 exceljsStyle_1 = require("./exceljsStyle");
|
|
31
|
+
Object.defineProperty(exports, "BorderStyleTypes", { enumerable: true, get: function () { return exceljsStyle_1.BorderStyleTypes; } });
|
|
32
|
+
Object.defineProperty(exports, "StyleInterner", { enumerable: true, get: function () { return exceljsStyle_1.StyleInterner; } });
|
|
33
|
+
Object.defineProperty(exports, "argbToRgb", { enumerable: true, get: function () { return exceljsStyle_1.argbToRgb; } });
|
|
34
|
+
Object.defineProperty(exports, "excelColorToRgb", { enumerable: true, get: function () { return exceljsStyle_1.excelColorToRgb; } });
|
|
35
|
+
Object.defineProperty(exports, "excelStyleToUniver", { enumerable: true, get: function () { return exceljsStyle_1.excelStyleToUniver; } });
|
|
36
|
+
var exceljsDrawings_1 = require("./exceljsDrawings");
|
|
37
|
+
Object.defineProperty(exports, "collectWorkbookDrawingResources", { enumerable: true, get: function () { return exceljsDrawings_1.collectWorkbookDrawingResources; } });
|
|
38
|
+
Object.defineProperty(exports, "collectWorksheetFreeze", { enumerable: true, get: function () { return exceljsDrawings_1.collectWorksheetFreeze; } });
|
|
39
|
+
Object.defineProperty(exports, "emuToPx", { enumerable: true, get: function () { return exceljsDrawings_1.emuToPx; } });
|
|
40
|
+
var workbookChunked_1 = require("./workbookChunked");
|
|
41
|
+
Object.defineProperty(exports, "splitWorkbookDataToChunks", { enumerable: true, get: function () { return workbookChunked_1.splitWorkbookDataToChunks; } });
|
|
42
|
+
var luckyexcel_1 = require("./luckyexcel");
|
|
43
|
+
Object.defineProperty(exports, "fileToImportResult", { enumerable: true, get: function () { return luckyexcel_1.fileToImportResult; } });
|
|
44
|
+
Object.defineProperty(exports, "importExcelBinary", { enumerable: true, get: function () { return luckyexcel_1.importExcelBinary; } });
|
|
45
|
+
Object.defineProperty(exports, "transformExcelToUniver", { enumerable: true, get: function () { return luckyexcel_1.transformExcelToUniver; } });
|
|
46
|
+
Object.defineProperty(exports, "transformUniverToExcelBuffer", { enumerable: true, get: function () { return luckyexcel_1.transformUniverToExcelBuffer; } });
|
|
47
|
+
Object.defineProperty(exports, "workbookDataToExcelBlob", { enumerable: true, get: function () { return luckyexcel_1.workbookDataToExcelBlob; } });
|
|
48
|
+
Object.defineProperty(exports, "workbookDataToExcelBuffer", { enumerable: true, get: function () { return luckyexcel_1.workbookDataToExcelBuffer; } });
|
|
49
|
+
Object.defineProperty(exports, "workbookHasDrawingResources", { enumerable: true, get: function () { return luckyexcel_1.workbookHasDrawingResources; } });
|
|
50
|
+
var exportWorkerClient_1 = require("./exportWorkerClient");
|
|
51
|
+
Object.defineProperty(exports, "DEFAULT_EXPORT_WORKER_THRESHOLD_BYTES", { enumerable: true, get: function () { return exportWorkerClient_1.DEFAULT_EXPORT_WORKER_THRESHOLD_BYTES; } });
|
|
52
|
+
Object.defineProperty(exports, "estimateWorkbookSnapshotBytes", { enumerable: true, get: function () { return exportWorkerClient_1.estimateWorkbookSnapshotBytes; } });
|
|
53
|
+
Object.defineProperty(exports, "installExcelExportWorker", { enumerable: true, get: function () { return exportWorkerClient_1.installExcelExportWorker; } });
|
|
54
|
+
Object.defineProperty(exports, "resolveShouldUseExportWorker", { enumerable: true, get: function () { return exportWorkerClient_1.resolveShouldUseExportWorker; } });
|
|
55
|
+
Object.defineProperty(exports, "runExcelExportInBrowserWorker", { enumerable: true, get: function () { return exportWorkerClient_1.runExcelExportInBrowserWorker; } });
|
|
56
|
+
Object.defineProperty(exports, "workbookDataToExcelArrayBuffer", { enumerable: true, get: function () { return exportWorkerClient_1.workbookDataToExcelArrayBuffer; } });
|
|
57
|
+
//# 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,yCAOqB;AANnB,uHAAA,0BAA0B,OAAA;AAC1B,4GAAA,eAAe,OAAA;AACf,sHAAA,yBAAyB,OAAA;AACzB,sHAAA,yBAAyB,OAAA;AACzB,gHAAA,mBAAmB,OAAA;AACnB,qHAAA,wBAAwB,OAAA;AAG1B,uDAK4B;AAJ1B,sIAAA,kCAAkC,OAAA;AAClC,wHAAA,oBAAoB,OAAA;AACpB,uHAAA,mBAAmB,OAAA;AACnB,yHAAA,qBAAqB,OAAA;AAIvB,mDAY0B;AAXxB,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,0HAAA,wBAAwB,OAAA;AACxB,wHAAA,sBAAsB,OAAA;AACtB,0HAAA,wBAAwB,OAAA;AAS1B,+CAMwB;AALtB,gHAAA,gBAAgB,OAAA;AAChB,6GAAA,aAAa,OAAA;AACb,yGAAA,SAAS,OAAA;AACT,+GAAA,eAAe,OAAA;AACf,kHAAA,kBAAkB,OAAA;AAGpB,qDAI2B;AAHzB,kIAAA,+BAA+B,OAAA;AAC/B,yHAAA,sBAAsB,OAAA;AACtB,0GAAA,OAAO,OAAA;AAGT,qDAA8D;AAArD,4HAAA,yBAAyB,OAAA;AAIlC,2CAQsB;AAPpB,gHAAA,kBAAkB,OAAA;AAClB,+GAAA,iBAAiB,OAAA;AACjB,oHAAA,sBAAsB,OAAA;AACtB,0HAAA,4BAA4B,OAAA;AAC5B,qHAAA,uBAAuB,OAAA;AACvB,uHAAA,yBAAyB,OAAA;AACzB,yHAAA,2BAA2B,OAAA;AAG7B,2DAO8B;AAN5B,2IAAA,qCAAqC,OAAA;AACrC,mIAAA,6BAA6B,OAAA;AAC7B,8HAAA,wBAAwB,OAAA;AACxB,kIAAA,4BAA4B,OAAA;AAC5B,mIAAA,6BAA6B,OAAA;AAC7B,oIAAA,8BAA8B,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type TransformExcelToUniverOptions } from '@ims-view/univer-import-excel';
|
|
2
|
+
import type { ExcelBinary, ExcelImportResult, IWorkbookData } from './types';
|
|
3
|
+
import type { ExcelExportOptions } from './exportWorkerClient';
|
|
4
|
+
export type { TransformExcelToUniverOptions };
|
|
5
|
+
export type { ExcelExportOptions };
|
|
6
|
+
type ExcelInput = File | Blob | Uint8Array | ArrayBuffer;
|
|
7
|
+
export declare const transformExcelToUniver: (input: ExcelInput, options?: TransformExcelToUniverOptions) => Promise<Partial<IWorkbookData>>;
|
|
8
|
+
export declare const transformUniverToExcelBuffer: (snapshot: Partial<IWorkbookData>, fileName: string) => Promise<ArrayBuffer | Uint8Array | Buffer>;
|
|
9
|
+
export declare const workbookHasDrawingResources: (workbookData?: Partial<IWorkbookData> | null) => boolean;
|
|
10
|
+
export declare const importExcelBinary: (input: ExcelBinary, fileName?: string, options?: TransformExcelToUniverOptions) => Promise<ExcelImportResult>;
|
|
11
|
+
export declare const fileToImportResult: (file: File, options?: TransformExcelToUniverOptions) => Promise<ExcelImportResult>;
|
|
12
|
+
export declare const workbookDataToExcelBuffer: (data: Partial<IWorkbookData>, fileName?: string) => Promise<Buffer>;
|
|
13
|
+
export declare const workbookDataToExcelBlob: (data: Partial<IWorkbookData>, fileName?: string, options?: ExcelExportOptions) => Promise<Blob>;
|
|
@@ -0,0 +1,211 @@
|
|
|
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.workbookDataToExcelBlob = exports.workbookDataToExcelBuffer = exports.fileToImportResult = exports.importExcelBinary = exports.workbookHasDrawingResources = exports.transformUniverToExcelBuffer = exports.transformExcelToUniver = void 0;
|
|
40
|
+
const luckyexcel_1 = __importDefault(require("@zwight/luckyexcel"));
|
|
41
|
+
const univer_import_excel_1 = require("@ims-view/univer-import-excel");
|
|
42
|
+
const converter_1 = require("./converter");
|
|
43
|
+
const sheetjsConverter_1 = require("./sheetjsConverter");
|
|
44
|
+
const XLSX_MIME = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
|
|
45
|
+
const toUint8Array = (input) => {
|
|
46
|
+
if (typeof Buffer !== 'undefined' && Buffer.isBuffer(input)) {
|
|
47
|
+
return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
|
|
48
|
+
}
|
|
49
|
+
if (input instanceof ArrayBuffer) {
|
|
50
|
+
return new Uint8Array(input);
|
|
51
|
+
}
|
|
52
|
+
return input;
|
|
53
|
+
};
|
|
54
|
+
const createXlsxFile = (bytes, fileName) => {
|
|
55
|
+
if (typeof File === 'undefined') {
|
|
56
|
+
throw new Error('当前环境不支持 File API');
|
|
57
|
+
}
|
|
58
|
+
const name = fileName.endsWith('.xlsx') ? fileName : `${fileName.replace(/\.xls$/i, '')}.xlsx`;
|
|
59
|
+
return new File([bytes.slice()], name, { type: XLSX_MIME });
|
|
60
|
+
};
|
|
61
|
+
const transformExcelToUniver = (input, options) => (0, univer_import_excel_1.transformExcelToUniver)(input, options).then((data) => {
|
|
62
|
+
if (!data?.sheets) {
|
|
63
|
+
throw new Error('Excel 解析结果为空');
|
|
64
|
+
}
|
|
65
|
+
return data;
|
|
66
|
+
});
|
|
67
|
+
exports.transformExcelToUniver = transformExcelToUniver;
|
|
68
|
+
const DEFAULT_FREEZE = { xSplit: 0, ySplit: 0, startRow: -1, startColumn: -1 };
|
|
69
|
+
const normalizeSnapshotForLuckyExcelExport = (snapshot) => {
|
|
70
|
+
const sheetsIn = snapshot.sheets || {};
|
|
71
|
+
const sheets = {};
|
|
72
|
+
for (const [sheetId, sheet] of Object.entries(sheetsIn)) {
|
|
73
|
+
const s = (sheet || {});
|
|
74
|
+
const freeze = (s.freeze || {});
|
|
75
|
+
sheets[sheetId] = {
|
|
76
|
+
...s,
|
|
77
|
+
id: s.id ?? sheetId,
|
|
78
|
+
name: s.name ?? sheetId,
|
|
79
|
+
cellData: s.cellData ?? {},
|
|
80
|
+
mergeData: s.mergeData ?? [],
|
|
81
|
+
rowCount: s.rowCount ?? 100,
|
|
82
|
+
columnCount: s.columnCount ?? 26,
|
|
83
|
+
rowData: s.rowData ?? {},
|
|
84
|
+
columnData: s.columnData ?? {},
|
|
85
|
+
freeze: {
|
|
86
|
+
xSplit: typeof freeze.xSplit === 'number' ? freeze.xSplit : DEFAULT_FREEZE.xSplit,
|
|
87
|
+
ySplit: typeof freeze.ySplit === 'number' ? freeze.ySplit : DEFAULT_FREEZE.ySplit,
|
|
88
|
+
startRow: typeof freeze.startRow === 'number' ? freeze.startRow : DEFAULT_FREEZE.startRow,
|
|
89
|
+
startColumn: typeof freeze.startColumn === 'number' ? freeze.startColumn : DEFAULT_FREEZE.startColumn,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
id: snapshot.id ?? 'workbook',
|
|
95
|
+
name: snapshot.name ?? 'workbook',
|
|
96
|
+
appVersion: snapshot.appVersion ?? '0.25.1',
|
|
97
|
+
locale: snapshot.locale ?? 'zhCN',
|
|
98
|
+
styles: snapshot.styles ?? {},
|
|
99
|
+
resources: snapshot.resources ?? [],
|
|
100
|
+
sheetOrder: snapshot.sheetOrder ?? Object.keys(sheets),
|
|
101
|
+
sheets,
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
const transformUniverToExcelBuffer = (snapshot, fileName) => new Promise((resolve, reject) => {
|
|
105
|
+
try {
|
|
106
|
+
luckyexcel_1.default.transformUniverToExcel({
|
|
107
|
+
snapshot: normalizeSnapshotForLuckyExcelExport(snapshot),
|
|
108
|
+
fileName,
|
|
109
|
+
getBuffer: true,
|
|
110
|
+
success: (buffer) => {
|
|
111
|
+
if (buffer == null) {
|
|
112
|
+
reject(new Error('LuckyExcel 导出结果为空'));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
resolve(buffer);
|
|
116
|
+
},
|
|
117
|
+
error: (error) => reject(error),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
exports.transformUniverToExcelBuffer = transformUniverToExcelBuffer;
|
|
125
|
+
const tryImportExcelJs = async (input, options) => {
|
|
126
|
+
try {
|
|
127
|
+
return await (0, exports.transformExcelToUniver)(input, options);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.warn('[@ims-view/utils/excel] ExcelJS 导入失败', error);
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const workbookHasDrawingResources = (workbookData) => {
|
|
135
|
+
try {
|
|
136
|
+
const drawing = (workbookData?.resources || []).find((item) => item?.name === 'SHEET_DRAWING_PLUGIN');
|
|
137
|
+
if (!drawing?.data)
|
|
138
|
+
return false;
|
|
139
|
+
const parsed = typeof drawing.data === 'string' ? JSON.parse(drawing.data) : drawing.data;
|
|
140
|
+
return Object.values(parsed || {}).some((sheetVal) => {
|
|
141
|
+
const data = sheetVal?.data;
|
|
142
|
+
return Boolean(data && typeof data === 'object' && Object.keys(data).length > 0);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
exports.workbookHasDrawingResources = workbookHasDrawingResources;
|
|
150
|
+
const importExcelBinary = async (input, fileName = 'workbook.xlsx', options) => {
|
|
151
|
+
const bytes = toUint8Array(input);
|
|
152
|
+
(0, converter_1.assertSupportedExcelSource)(bytes, fileName);
|
|
153
|
+
const parseOptions = { ...options, fileName };
|
|
154
|
+
let workbookData = await tryImportExcelJs(bytes, parseOptions);
|
|
155
|
+
if ((!workbookData || !(0, sheetjsConverter_1.workbookHasCellValues)(workbookData)) &&
|
|
156
|
+
!/\.csv$/i.test(fileName) &&
|
|
157
|
+
typeof window !== 'undefined' &&
|
|
158
|
+
typeof File !== 'undefined') {
|
|
159
|
+
try {
|
|
160
|
+
workbookData = await (0, exports.transformExcelToUniver)(createXlsxFile(bytes, fileName), parseOptions);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.warn('[@ims-view/utils/excel] ExcelJS(File) 失败', error);
|
|
164
|
+
workbookData = null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (workbookData && (0, sheetjsConverter_1.workbookHasCellValues)(workbookData)) {
|
|
168
|
+
return { workbookData, images: [] };
|
|
169
|
+
}
|
|
170
|
+
console.warn('[@ims-view/utils/excel] ExcelJS 返回空表,回退 SheetJS');
|
|
171
|
+
return {
|
|
172
|
+
workbookData: (0, sheetjsConverter_1.excelBufferToWorkbookDataBySheetJs)(bytes, fileName),
|
|
173
|
+
images: [],
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
exports.importExcelBinary = importExcelBinary;
|
|
177
|
+
const fileToImportResult = async (file, options) => {
|
|
178
|
+
const buffer = await file.arrayBuffer();
|
|
179
|
+
return (0, exports.importExcelBinary)(buffer, file.name, options);
|
|
180
|
+
};
|
|
181
|
+
exports.fileToImportResult = fileToImportResult;
|
|
182
|
+
const workbookDataToExcelBuffer = async (data, fileName = 'workbook.xlsx') => {
|
|
183
|
+
if (typeof Buffer === 'undefined') {
|
|
184
|
+
throw new Error('workbookDataToExcelBuffer 仅可在 Node.js 环境使用');
|
|
185
|
+
}
|
|
186
|
+
const name = fileName.endsWith('.xlsx') ? fileName : `${fileName}.xlsx`;
|
|
187
|
+
const { workbookDataToExcelArrayBuffer } = await Promise.resolve().then(() => __importStar(require('./exportWorkerClient')));
|
|
188
|
+
const ab = await workbookDataToExcelArrayBuffer(data, name);
|
|
189
|
+
return Buffer.from(ab);
|
|
190
|
+
};
|
|
191
|
+
exports.workbookDataToExcelBuffer = workbookDataToExcelBuffer;
|
|
192
|
+
const workbookDataToExcelBlob = async (data, fileName = 'workbook.xlsx', options) => {
|
|
193
|
+
const name = fileName.endsWith('.xlsx') ? fileName : `${fileName}.xlsx`;
|
|
194
|
+
if (typeof Blob === 'undefined') {
|
|
195
|
+
throw new Error('当前环境不支持 Blob,请使用 workbookDataToExcelBuffer');
|
|
196
|
+
}
|
|
197
|
+
const { estimateWorkbookSnapshotBytes, resolveShouldUseExportWorker, workbookDataToExcelArrayBuffer, runExcelExportInBrowserWorker, } = await Promise.resolve().then(() => __importStar(require('./exportWorkerClient')));
|
|
198
|
+
const sizeBytes = estimateWorkbookSnapshotBytes(data);
|
|
199
|
+
if (resolveShouldUseExportWorker(sizeBytes, options || {})) {
|
|
200
|
+
const buffer = await runExcelExportInBrowserWorker(data, {
|
|
201
|
+
...options,
|
|
202
|
+
fileName: name,
|
|
203
|
+
createWorker: options.createWorker,
|
|
204
|
+
});
|
|
205
|
+
return new Blob([buffer], { type: XLSX_MIME });
|
|
206
|
+
}
|
|
207
|
+
const buffer = await workbookDataToExcelArrayBuffer(data, name);
|
|
208
|
+
return new Blob([buffer], { type: XLSX_MIME });
|
|
209
|
+
};
|
|
210
|
+
exports.workbookDataToExcelBlob = workbookDataToExcelBlob;
|
|
211
|
+
//# 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>;
|