@cj-tech-master/excelts 1.4.2 → 1.4.4

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 (49) hide show
  1. package/README.md +3 -3
  2. package/README_zh.md +3 -3
  3. package/dist/browser/excelts.iife.js +8135 -2722
  4. package/dist/browser/excelts.iife.js.map +1 -1
  5. package/dist/browser/excelts.iife.min.js +86 -23
  6. package/dist/cjs/stream/xlsx/workbook-writer.js +3 -2
  7. package/dist/cjs/utils/cell-format.js +13 -9
  8. package/dist/cjs/utils/sheet-utils.js +125 -15
  9. package/dist/cjs/utils/unzip/extract.js +166 -0
  10. package/dist/cjs/utils/unzip/index.js +7 -1
  11. package/dist/cjs/utils/xml-stream.js +25 -3
  12. package/dist/cjs/utils/zip/compress.js +261 -0
  13. package/dist/cjs/utils/zip/crc32.js +154 -0
  14. package/dist/cjs/utils/zip/index.js +70 -0
  15. package/dist/cjs/utils/zip/zip-builder.js +378 -0
  16. package/dist/cjs/utils/zip-stream.js +30 -34
  17. package/dist/cjs/xlsx/xform/book/defined-name-xform.js +36 -2
  18. package/dist/cjs/xlsx/xform/list-xform.js +6 -0
  19. package/dist/cjs/xlsx/xform/sheet/cell-xform.js +6 -1
  20. package/dist/cjs/xlsx/xform/sheet/row-xform.js +24 -2
  21. package/dist/cjs/xlsx/xform/table/filter-column-xform.js +4 -0
  22. package/dist/esm/stream/xlsx/workbook-writer.js +3 -2
  23. package/dist/esm/utils/cell-format.js +13 -9
  24. package/dist/esm/utils/sheet-utils.js +125 -15
  25. package/dist/esm/utils/unzip/extract.js +160 -0
  26. package/dist/esm/utils/unzip/index.js +2 -0
  27. package/dist/esm/utils/xml-stream.js +25 -3
  28. package/dist/esm/utils/zip/compress.js +220 -0
  29. package/dist/esm/utils/zip/crc32.js +116 -0
  30. package/dist/esm/utils/zip/index.js +55 -0
  31. package/dist/esm/utils/zip/zip-builder.js +372 -0
  32. package/dist/esm/utils/zip-stream.js +30 -34
  33. package/dist/esm/xlsx/xform/book/defined-name-xform.js +36 -2
  34. package/dist/esm/xlsx/xform/list-xform.js +6 -0
  35. package/dist/esm/xlsx/xform/sheet/cell-xform.js +6 -1
  36. package/dist/esm/xlsx/xform/sheet/row-xform.js +24 -2
  37. package/dist/esm/xlsx/xform/table/filter-column-xform.js +4 -0
  38. package/dist/types/utils/sheet-utils.d.ts +8 -2
  39. package/dist/types/utils/unzip/extract.d.ts +92 -0
  40. package/dist/types/utils/unzip/index.d.ts +1 -0
  41. package/dist/types/utils/xml-stream.d.ts +2 -0
  42. package/dist/types/utils/zip/compress.d.ts +83 -0
  43. package/dist/types/utils/zip/crc32.d.ts +55 -0
  44. package/dist/types/utils/zip/index.d.ts +52 -0
  45. package/dist/types/utils/zip/zip-builder.d.ts +110 -0
  46. package/dist/types/utils/zip-stream.d.ts +6 -12
  47. package/dist/types/xlsx/xform/list-xform.d.ts +1 -0
  48. package/dist/types/xlsx/xform/sheet/row-xform.d.ts +2 -0
  49. package/package.json +1 -1
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ /**
3
+ * Native compression utilities using platform APIs
4
+ *
5
+ * - Node.js: Uses native zlib module (C++ implementation, fastest)
6
+ * - Browser: Uses CompressionStream API (Chrome 80+, Firefox 113+, Safari 16.4+)
7
+ *
8
+ * Both use "deflate-raw" format which is required for ZIP files
9
+ * (raw DEFLATE without zlib header/trailer)
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.ensureZlib = ensureZlib;
46
+ exports.hasNativeZlib = hasNativeZlib;
47
+ exports.hasCompressionStream = hasCompressionStream;
48
+ exports.compress = compress;
49
+ exports.compressSync = compressSync;
50
+ exports.decompress = decompress;
51
+ exports.decompressSync = decompressSync;
52
+ // Detect environment
53
+ const isNode = typeof process !== "undefined" && process.versions?.node;
54
+ // Lazy-loaded zlib module for Node.js
55
+ let _zlib = null;
56
+ let _zlibLoading = null;
57
+ // Auto-initialize zlib in Node.js environment
58
+ if (isNode) {
59
+ _zlibLoading = Promise.resolve().then(() => __importStar(require("zlib"))).then(module => {
60
+ _zlib = module.default ?? module;
61
+ return _zlib;
62
+ })
63
+ .catch(() => {
64
+ _zlib = null;
65
+ return null;
66
+ });
67
+ }
68
+ /**
69
+ * Get zlib module (Node.js only)
70
+ * Returns null if not yet loaded or not in Node.js
71
+ */
72
+ function getZlib() {
73
+ return _zlib;
74
+ }
75
+ /**
76
+ * Ensure zlib is loaded (Node.js only)
77
+ * Call this before using sync methods if you need to guarantee availability
78
+ */
79
+ async function ensureZlib() {
80
+ if (_zlibLoading) {
81
+ return _zlibLoading;
82
+ }
83
+ return _zlib;
84
+ }
85
+ /**
86
+ * Check if native zlib is available (Node.js)
87
+ */
88
+ function hasNativeZlib() {
89
+ const zlib = getZlib();
90
+ return zlib !== null && typeof zlib.deflateRawSync === "function";
91
+ }
92
+ /**
93
+ * Check if CompressionStream is available (Browser/Node.js 17+)
94
+ */
95
+ function hasCompressionStream() {
96
+ return typeof CompressionStream !== "undefined";
97
+ }
98
+ /**
99
+ * Compress data using the best available native method
100
+ *
101
+ * Priority:
102
+ * 1. Node.js zlib (if available) - fastest, supports compression levels
103
+ * 2. CompressionStream (browser/Node.js 17+) - no level support
104
+ * 3. Return uncompressed data (fallback)
105
+ *
106
+ * @param data - Data to compress
107
+ * @param options - Compression options
108
+ * @returns Compressed data
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * const data = new TextEncoder().encode("Hello, World!");
113
+ * const compressed = await compress(data, { level: 6 });
114
+ * ```
115
+ */
116
+ async function compress(data, options = {}) {
117
+ const level = options.level ?? 6;
118
+ // Level 0 means no compression
119
+ if (level === 0) {
120
+ return data;
121
+ }
122
+ // Ensure zlib is loaded first
123
+ const zlib = await ensureZlib();
124
+ // Try Node.js zlib first (fastest, supports levels)
125
+ if (zlib && typeof zlib.deflateRawSync === "function") {
126
+ const result = zlib.deflateRawSync(Buffer.from(data), { level });
127
+ return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
128
+ }
129
+ // Fall back to CompressionStream (browser/Node.js 17+)
130
+ if (typeof CompressionStream !== "undefined") {
131
+ return compressWithCompressionStream(data);
132
+ }
133
+ // No compression available - return original data
134
+ console.warn("No native compression available, returning uncompressed data");
135
+ return data;
136
+ }
137
+ /**
138
+ * Compress data synchronously using Node.js zlib
139
+ * Only available in Node.js environment
140
+ *
141
+ * @param data - Data to compress
142
+ * @param options - Compression options
143
+ * @returns Compressed data
144
+ * @throws Error if not in Node.js environment
145
+ */
146
+ function compressSync(data, options = {}) {
147
+ const level = options.level ?? 6;
148
+ if (level === 0) {
149
+ return data;
150
+ }
151
+ const zlib = getZlib();
152
+ if (!zlib || typeof zlib.deflateRawSync !== "function") {
153
+ throw new Error("Synchronous compression is only available in Node.js environment");
154
+ }
155
+ const result = zlib.deflateRawSync(Buffer.from(data), { level });
156
+ return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
157
+ }
158
+ /**
159
+ * Compress using browser's native CompressionStream
160
+ * Uses "deflate-raw" format (required for ZIP files)
161
+ *
162
+ * Note: CompressionStream does not support compression level configuration
163
+ *
164
+ * @param data - Data to compress
165
+ * @returns Compressed data
166
+ */
167
+ async function compressWithCompressionStream(data) {
168
+ const cs = new CompressionStream("deflate-raw");
169
+ const writer = cs.writable.getWriter();
170
+ const reader = cs.readable.getReader();
171
+ // Write data and close
172
+ writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
173
+ writer.close();
174
+ // Read all compressed chunks
175
+ const chunks = [];
176
+ let totalLength = 0;
177
+ while (true) {
178
+ const { done, value } = await reader.read();
179
+ if (done) {
180
+ break;
181
+ }
182
+ chunks.push(value);
183
+ totalLength += value.length;
184
+ }
185
+ // Combine chunks into single array
186
+ const result = new Uint8Array(totalLength);
187
+ let offset = 0;
188
+ for (const chunk of chunks) {
189
+ result.set(chunk, offset);
190
+ offset += chunk.length;
191
+ }
192
+ return result;
193
+ }
194
+ /**
195
+ * Decompress data using the best available native method
196
+ *
197
+ * @param data - Compressed data (deflate-raw format)
198
+ * @returns Decompressed data
199
+ */
200
+ async function decompress(data) {
201
+ // Ensure zlib is loaded first
202
+ const zlib = await ensureZlib();
203
+ // Try Node.js zlib first
204
+ if (zlib && typeof zlib.inflateRawSync === "function") {
205
+ const result = zlib.inflateRawSync(Buffer.from(data));
206
+ return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
207
+ }
208
+ // Fall back to DecompressionStream
209
+ if (typeof DecompressionStream !== "undefined") {
210
+ return decompressWithDecompressionStream(data);
211
+ }
212
+ throw new Error("No native decompression available");
213
+ }
214
+ /**
215
+ * Decompress data synchronously using Node.js zlib
216
+ *
217
+ * @param data - Compressed data (deflate-raw format)
218
+ * @returns Decompressed data
219
+ * @throws Error if not in Node.js environment
220
+ */
221
+ function decompressSync(data) {
222
+ const zlib = getZlib();
223
+ if (!zlib || typeof zlib.inflateRawSync !== "function") {
224
+ throw new Error("Synchronous decompression is only available in Node.js environment");
225
+ }
226
+ const result = zlib.inflateRawSync(Buffer.from(data));
227
+ return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
228
+ }
229
+ /**
230
+ * Decompress using browser's native DecompressionStream
231
+ *
232
+ * @param data - Compressed data (deflate-raw format)
233
+ * @returns Decompressed data
234
+ */
235
+ async function decompressWithDecompressionStream(data) {
236
+ const ds = new DecompressionStream("deflate-raw");
237
+ const writer = ds.writable.getWriter();
238
+ const reader = ds.readable.getReader();
239
+ // Write data and close
240
+ writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
241
+ writer.close();
242
+ // Read all decompressed chunks
243
+ const chunks = [];
244
+ let totalLength = 0;
245
+ while (true) {
246
+ const { done, value } = await reader.read();
247
+ if (done) {
248
+ break;
249
+ }
250
+ chunks.push(value);
251
+ totalLength += value.length;
252
+ }
253
+ // Combine chunks into single array
254
+ const result = new Uint8Array(totalLength);
255
+ let offset = 0;
256
+ for (const chunk of chunks) {
257
+ result.set(chunk, offset);
258
+ offset += chunk.length;
259
+ }
260
+ return result;
261
+ }
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ /**
3
+ * CRC32 calculation utility for ZIP files
4
+ *
5
+ * - Node.js: Uses native zlib.crc32 (C++ implementation, ~100x faster)
6
+ * - Browser: Uses lookup table optimization
7
+ *
8
+ * The polynomial used is the standard CRC-32 IEEE 802.3:
9
+ * x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1
10
+ * Represented as 0xEDB88320 in reversed (LSB-first) form
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.crc32 = crc32;
47
+ exports.ensureCrc32 = ensureCrc32;
48
+ exports.crc32Update = crc32Update;
49
+ exports.crc32Finalize = crc32Finalize;
50
+ // Detect Node.js environment
51
+ const isNode = typeof process !== "undefined" && process.versions?.node;
52
+ // Lazy-loaded zlib module for Node.js
53
+ let _zlib = null;
54
+ let _zlibLoading = null;
55
+ // Auto-initialize zlib in Node.js environment
56
+ if (isNode) {
57
+ _zlibLoading = Promise.resolve().then(() => __importStar(require("zlib"))).then(module => {
58
+ _zlib = module.default ?? module;
59
+ return _zlib;
60
+ })
61
+ .catch(() => {
62
+ _zlib = null;
63
+ return null;
64
+ });
65
+ }
66
+ /**
67
+ * Pre-computed CRC32 lookup table (256 entries)
68
+ * Generated using the standard polynomial 0xEDB88320
69
+ * Used as fallback when native zlib is not available
70
+ */
71
+ const CRC32_TABLE = /* @__PURE__ */ (() => {
72
+ const table = new Uint32Array(256);
73
+ for (let i = 0; i < 256; i++) {
74
+ let crc = i;
75
+ for (let j = 0; j < 8; j++) {
76
+ crc = crc & 1 ? 0xedb88320 ^ (crc >>> 1) : crc >>> 1;
77
+ }
78
+ table[i] = crc;
79
+ }
80
+ return table;
81
+ })();
82
+ /**
83
+ * JavaScript fallback CRC32 implementation using lookup table
84
+ */
85
+ function crc32JS(data) {
86
+ let crc = 0xffffffff;
87
+ for (let i = 0; i < data.length; i++) {
88
+ crc = CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
89
+ }
90
+ return (crc ^ 0xffffffff) >>> 0;
91
+ }
92
+ /**
93
+ * Calculate CRC32 checksum for the given data
94
+ * Uses native zlib.crc32 in Node.js for ~100x better performance
95
+ *
96
+ * @param data - Input data as Uint8Array or Buffer
97
+ * @returns CRC32 checksum as unsigned 32-bit integer
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * const data = new TextEncoder().encode("Hello, World!");
102
+ * const checksum = crc32(data);
103
+ * console.log(checksum.toString(16)); // "ec4ac3d0"
104
+ * ```
105
+ */
106
+ function crc32(data) {
107
+ // Use native zlib.crc32 if available (Node.js)
108
+ if (_zlib && typeof _zlib.crc32 === "function") {
109
+ return _zlib.crc32(data) >>> 0;
110
+ }
111
+ // Fallback to JS implementation
112
+ return crc32JS(data);
113
+ }
114
+ /**
115
+ * Ensure zlib is loaded (for use before calling crc32)
116
+ */
117
+ async function ensureCrc32() {
118
+ if (_zlibLoading) {
119
+ await _zlibLoading;
120
+ }
121
+ }
122
+ /**
123
+ * Calculate CRC32 incrementally (useful for streaming)
124
+ * Call with initial crc of 0xffffffff, then finalize with crc32Finalize
125
+ * Note: This always uses JS implementation for consistency in streaming
126
+ *
127
+ * @param crc - Current CRC value (start with 0xffffffff)
128
+ * @param data - Input data chunk
129
+ * @returns Updated CRC value (not finalized)
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * let crc = 0xffffffff;
134
+ * crc = crc32Update(crc, chunk1);
135
+ * crc = crc32Update(crc, chunk2);
136
+ * const checksum = crc32Finalize(crc);
137
+ * ```
138
+ */
139
+ function crc32Update(crc, data) {
140
+ for (let i = 0; i < data.length; i++) {
141
+ crc = CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
142
+ }
143
+ return crc;
144
+ }
145
+ /**
146
+ * Finalize CRC32 calculation
147
+ * XOR with 0xffffffff and convert to unsigned 32-bit
148
+ *
149
+ * @param crc - CRC value from crc32Update
150
+ * @returns Final CRC32 checksum
151
+ */
152
+ function crc32Finalize(crc) {
153
+ return (crc ^ 0xffffffff) >>> 0;
154
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * Native ZIP utilities - Pure native implementation without third-party dependencies
4
+ *
5
+ * This module provides ZIP file creation using only native platform APIs:
6
+ * - Node.js: Uses native zlib module (C++ implementation, fastest)
7
+ * - Browser: Uses CompressionStream API (Chrome 80+, Firefox 113+, Safari 16.4+)
8
+ *
9
+ * Features:
10
+ * - Full ZIP format support (Local File Headers, Central Directory, EOCD)
11
+ * - DEFLATE compression (level 0-9 on Node.js, fixed level on browser)
12
+ * - STORE mode (no compression)
13
+ * - UTF-8 filename support
14
+ * - File comments and ZIP comments
15
+ * - Streaming API for large files
16
+ * - Both sync (Node.js) and async APIs
17
+ *
18
+ * @example Basic usage
19
+ * ```ts
20
+ * import { createZip } from "./utils/zip/index.js";
21
+ *
22
+ * const zipData = await createZip([
23
+ * { name: "hello.txt", data: new TextEncoder().encode("Hello!") },
24
+ * { name: "folder/nested.txt", data: new TextEncoder().encode("Nested file") }
25
+ * ], { level: 6 });
26
+ *
27
+ * // Write to file (Node.js)
28
+ * fs.writeFileSync("output.zip", zipData);
29
+ * ```
30
+ *
31
+ * @example Streaming usage
32
+ * ```ts
33
+ * import { ZipBuilder } from "./utils/zip/index.js";
34
+ *
35
+ * const builder = new ZipBuilder({ level: 1 });
36
+ *
37
+ * // Add files one by one
38
+ * const [header1, data1] = await builder.addFile({
39
+ * name: "file1.txt",
40
+ * data: new TextEncoder().encode("File 1 content")
41
+ * });
42
+ * stream.write(header1);
43
+ * stream.write(data1);
44
+ *
45
+ * // Finalize and write central directory
46
+ * for (const chunk of builder.finalize()) {
47
+ * stream.write(chunk);
48
+ * }
49
+ * ```
50
+ */
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.ZipBuilder = exports.createZipSync = exports.createZip = exports.hasCompressionStream = exports.hasNativeZlib = exports.decompressSync = exports.decompress = exports.compressSync = exports.compress = exports.crc32Finalize = exports.crc32Update = exports.crc32 = void 0;
53
+ // CRC32 utilities
54
+ var crc32_js_1 = require("./crc32");
55
+ Object.defineProperty(exports, "crc32", { enumerable: true, get: function () { return crc32_js_1.crc32; } });
56
+ Object.defineProperty(exports, "crc32Update", { enumerable: true, get: function () { return crc32_js_1.crc32Update; } });
57
+ Object.defineProperty(exports, "crc32Finalize", { enumerable: true, get: function () { return crc32_js_1.crc32Finalize; } });
58
+ // Compression utilities
59
+ var compress_js_1 = require("./compress");
60
+ Object.defineProperty(exports, "compress", { enumerable: true, get: function () { return compress_js_1.compress; } });
61
+ Object.defineProperty(exports, "compressSync", { enumerable: true, get: function () { return compress_js_1.compressSync; } });
62
+ Object.defineProperty(exports, "decompress", { enumerable: true, get: function () { return compress_js_1.decompress; } });
63
+ Object.defineProperty(exports, "decompressSync", { enumerable: true, get: function () { return compress_js_1.decompressSync; } });
64
+ Object.defineProperty(exports, "hasNativeZlib", { enumerable: true, get: function () { return compress_js_1.hasNativeZlib; } });
65
+ Object.defineProperty(exports, "hasCompressionStream", { enumerable: true, get: function () { return compress_js_1.hasCompressionStream; } });
66
+ // ZIP builder
67
+ var zip_builder_js_1 = require("./zip-builder");
68
+ Object.defineProperty(exports, "createZip", { enumerable: true, get: function () { return zip_builder_js_1.createZip; } });
69
+ Object.defineProperty(exports, "createZipSync", { enumerable: true, get: function () { return zip_builder_js_1.createZipSync; } });
70
+ Object.defineProperty(exports, "ZipBuilder", { enumerable: true, get: function () { return zip_builder_js_1.ZipBuilder; } });