@bilig/xlsx 0.164.0
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 +25 -0
- package/dist/address.d.ts +15 -0
- package/dist/address.js +82 -0
- package/dist/address.js.map +1 -0
- package/dist/external-workbook-types.d.ts +44 -0
- package/dist/external-workbook-types.js +12 -0
- package/dist/external-workbook-types.js.map +1 -0
- package/dist/file-source.d.ts +10 -0
- package/dist/file-source.js +76 -0
- package/dist/file-source.js.map +1 -0
- package/dist/formula-cache-reader.d.ts +30 -0
- package/dist/formula-cache-reader.js +350 -0
- package/dist/formula-cache-reader.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/simple-workbook-writer.d.ts +114 -0
- package/dist/simple-workbook-writer.js +621 -0
- package/dist/simple-workbook-writer.js.map +1 -0
- package/dist/source-preserving-literal-patches.d.ts +43 -0
- package/dist/source-preserving-literal-patches.js +615 -0
- package/dist/source-preserving-literal-patches.js.map +1 -0
- package/dist/source-preserving-zip.d.ts +25 -0
- package/dist/source-preserving-zip.js +341 -0
- package/dist/source-preserving-zip.js.map +1 -0
- package/dist/streaming-native-cell-arena.d.ts +57 -0
- package/dist/streaming-native-cell-arena.js +233 -0
- package/dist/streaming-native-cell-arena.js.map +1 -0
- package/dist/streaming-native-external-cache.d.ts +13 -0
- package/dist/streaming-native-external-cache.js +753 -0
- package/dist/streaming-native-external-cache.js.map +1 -0
- package/dist/streaming-native-inspect.d.ts +42 -0
- package/dist/streaming-native-inspect.js +297 -0
- package/dist/streaming-native-inspect.js.map +1 -0
- package/dist/streaming-native-lookup-wasm.d.ts +13 -0
- package/dist/streaming-native-lookup-wasm.js +250 -0
- package/dist/streaming-native-lookup-wasm.js.map +1 -0
- package/dist/streaming-native-recalc-evaluator.d.ts +17 -0
- package/dist/streaming-native-recalc-evaluator.js +743 -0
- package/dist/streaming-native-recalc-evaluator.js.map +1 -0
- package/dist/streaming-native-recalc.d.ts +97 -0
- package/dist/streaming-native-recalc.js +652 -0
- package/dist/streaming-native-recalc.js.map +1 -0
- package/dist/streaming-native-row-chain-conditionals.d.ts +8 -0
- package/dist/streaming-native-row-chain-conditionals.js +385 -0
- package/dist/streaming-native-row-chain-conditionals.js.map +1 -0
- package/dist/streaming-native-row-chain-dependencies.d.ts +17 -0
- package/dist/streaming-native-row-chain-dependencies.js +365 -0
- package/dist/streaming-native-row-chain-dependencies.js.map +1 -0
- package/dist/streaming-native-row-chain-references.d.ts +3 -0
- package/dist/streaming-native-row-chain-references.js +36 -0
- package/dist/streaming-native-row-chain-references.js.map +1 -0
- package/dist/streaming-native-row-chain-wasm.d.ts +56 -0
- package/dist/streaming-native-row-chain-wasm.js +546 -0
- package/dist/streaming-native-row-chain-wasm.js.map +1 -0
- package/dist/streaming-native-text.d.ts +2 -0
- package/dist/streaming-native-text.js +14 -0
- package/dist/streaming-native-text.js.map +1 -0
- package/dist/streaming-native-workbook-core.d.ts +47 -0
- package/dist/streaming-native-workbook-core.js +110 -0
- package/dist/streaming-native-workbook-core.js.map +1 -0
- package/dist/targeted-cell-reader.d.ts +11 -0
- package/dist/targeted-cell-reader.js +92 -0
- package/dist/targeted-cell-reader.js.map +1 -0
- package/dist/workbook-cell-reader.d.ts +29 -0
- package/dist/workbook-cell-reader.js +200 -0
- package/dist/workbook-cell-reader.js.map +1 -0
- package/dist/workbook-compatibility-report.d.ts +101 -0
- package/dist/workbook-compatibility-report.js +654 -0
- package/dist/workbook-compatibility-report.js.map +1 -0
- package/dist/workbook-sheet-paths.d.ts +8 -0
- package/dist/workbook-sheet-paths.js +79 -0
- package/dist/workbook-sheet-paths.js.map +1 -0
- package/dist/xml-part-patch.d.ts +12 -0
- package/dist/xml-part-patch.js +45 -0
- package/dist/xml-part-patch.js.map +1 -0
- package/dist/xml.d.ts +9 -0
- package/dist/xml.js +42 -0
- package/dist/xml.js.map +1 -0
- package/dist/zip-reader.d.ts +51 -0
- package/dist/zip-reader.js +448 -0
- package/dist/zip-reader.js.map +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import { inflateRawSync } from 'node:zlib';
|
|
2
|
+
import { Inflate } from 'fflate-stream';
|
|
3
|
+
const localFileHeaderSignature = 0x04034b50;
|
|
4
|
+
const centralDirectoryFileHeaderSignature = 0x02014b50;
|
|
5
|
+
const endOfCentralDirectorySignature = 0x06054b50;
|
|
6
|
+
const storedCompressionMethod = 0;
|
|
7
|
+
const deflatedCompressionMethod = 8;
|
|
8
|
+
const zip64Sentinel = 0xffffffff;
|
|
9
|
+
const maxEndOfCentralDirectorySearch = 65_557;
|
|
10
|
+
const defaultZipEntryChunkSize = 64 * 1024;
|
|
11
|
+
const xlsxZipCentralDirectorySourceSymbol = Symbol('bilig.xlsxZipCentralDirectorySource');
|
|
12
|
+
const textDecoder = new TextDecoder();
|
|
13
|
+
export function normalizeZipPath(path) {
|
|
14
|
+
return path.replace(/^\/+/u, '');
|
|
15
|
+
}
|
|
16
|
+
export function readXlsxZipEntries(source) {
|
|
17
|
+
if (!(source instanceof Uint8Array)) {
|
|
18
|
+
return source;
|
|
19
|
+
}
|
|
20
|
+
const entries = readCentralDirectoryEntries(byteSourceFromUint8Array(source));
|
|
21
|
+
if (!entries) {
|
|
22
|
+
throw new Error('Invalid XLSX ZIP central directory');
|
|
23
|
+
}
|
|
24
|
+
const output = {};
|
|
25
|
+
const byteSource = byteSourceFromUint8Array(source);
|
|
26
|
+
for (const entry of entries) {
|
|
27
|
+
output[entry.path] = inflateCentralDirectoryEntry(byteSource, entry.localHeaderOffset, entry.compressedSize, entry.compressionMethod);
|
|
28
|
+
}
|
|
29
|
+
return output;
|
|
30
|
+
}
|
|
31
|
+
export function readXlsxZipEntriesLazy(source) {
|
|
32
|
+
if (!(source instanceof Uint8Array)) {
|
|
33
|
+
return source;
|
|
34
|
+
}
|
|
35
|
+
return readXlsxZipEntriesLazyFromByteSource(byteSourceFromUint8Array(source)) ?? readXlsxZipEntries(source);
|
|
36
|
+
}
|
|
37
|
+
export function readXlsxZipEntriesLazyFromByteSource(source) {
|
|
38
|
+
const entries = readCentralDirectoryEntries(source);
|
|
39
|
+
if (!entries) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const output = {};
|
|
43
|
+
const metadata = {
|
|
44
|
+
source,
|
|
45
|
+
entriesByPath: new Map(entries.map((entry) => [entry.path, entry])),
|
|
46
|
+
};
|
|
47
|
+
for (const entry of entries) {
|
|
48
|
+
defineLazyZipEntry(output, metadata, entry);
|
|
49
|
+
}
|
|
50
|
+
defineLazyZipCentralDirectorySource(output, metadata);
|
|
51
|
+
return output;
|
|
52
|
+
}
|
|
53
|
+
export function readXlsxZipEntryMetadata(source) {
|
|
54
|
+
return (readCentralDirectoryEntries(source)?.map((entry) => ({
|
|
55
|
+
path: entry.path,
|
|
56
|
+
compressedSize: entry.compressedSize,
|
|
57
|
+
uncompressedSize: entry.uncompressedSize,
|
|
58
|
+
compressionMethod: entry.compressionMethod,
|
|
59
|
+
})) ?? null);
|
|
60
|
+
}
|
|
61
|
+
export function readLazyXlsxZipEntryCompressedSource(zip, path) {
|
|
62
|
+
const metadata = zip[xlsxZipCentralDirectorySourceSymbol];
|
|
63
|
+
const source = metadata?.source;
|
|
64
|
+
const entry = metadata?.entriesByPath.get(normalizeZipPath(path));
|
|
65
|
+
if (!source || !entry) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const { dataStart, dataEnd } = readEntryDataRange(source, entry.localHeaderOffset, entry.compressedSize);
|
|
69
|
+
return {
|
|
70
|
+
source,
|
|
71
|
+
dataStart,
|
|
72
|
+
dataEnd,
|
|
73
|
+
compressedSize: entry.compressedSize,
|
|
74
|
+
uncompressedSize: entry.uncompressedSize,
|
|
75
|
+
compressionMethod: entry.compressionMethod,
|
|
76
|
+
crc: entry.crc,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function getZipText(zip, path) {
|
|
80
|
+
const file = zip[normalizeZipPath(path)];
|
|
81
|
+
return file ? textDecoder.decode(file) : null;
|
|
82
|
+
}
|
|
83
|
+
export function setZipText(zip, path, text) {
|
|
84
|
+
zip[normalizeZipPath(path)] = new TextEncoder().encode(text);
|
|
85
|
+
}
|
|
86
|
+
export function forEachInflatedXlsxZipEntryChunk(zip, path, onChunk, options = {}) {
|
|
87
|
+
const normalizedPath = normalizeZipPath(path);
|
|
88
|
+
const metadata = zip[xlsxZipCentralDirectorySourceSymbol];
|
|
89
|
+
const source = metadata?.source;
|
|
90
|
+
const entry = metadata?.entriesByPath.get(normalizedPath);
|
|
91
|
+
const chunkSize = options.chunkSize ?? defaultZipEntryChunkSize;
|
|
92
|
+
if (metadata && (!source || !entry)) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
if (source && entry) {
|
|
96
|
+
inflateCentralDirectoryEntryChunks(source, entry.localHeaderOffset, entry.compressedSize, entry.compressionMethod, onChunk, {
|
|
97
|
+
chunkSize,
|
|
98
|
+
forceStreamingInflate: options.forceStreamingInflate === true,
|
|
99
|
+
uncompressedSize: entry.uncompressedSize,
|
|
100
|
+
});
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
const inflated = zip[normalizedPath];
|
|
104
|
+
if (!inflated) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
emitInflatedChunks(inflated, chunkSize, onChunk);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
export async function forEachInflatedXlsxZipEntryChunkAsync(zip, path, onChunk, options = {}) {
|
|
111
|
+
const normalizedPath = normalizeZipPath(path);
|
|
112
|
+
const metadata = zip[xlsxZipCentralDirectorySourceSymbol];
|
|
113
|
+
const source = metadata?.source;
|
|
114
|
+
const entry = metadata?.entriesByPath.get(normalizedPath);
|
|
115
|
+
const chunkSize = options.chunkSize ?? defaultZipEntryChunkSize;
|
|
116
|
+
if (metadata && (!source || !entry)) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
if (!source || !entry) {
|
|
120
|
+
const inflated = zip[normalizedPath];
|
|
121
|
+
if (!inflated) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
await emitInflatedChunksAsync(inflated, chunkSize, onChunk);
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
await inflateCentralDirectoryEntryChunksAsync(source, entry.localHeaderOffset, entry.compressedSize, entry.compressionMethod, onChunk, {
|
|
128
|
+
chunkSize,
|
|
129
|
+
});
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
export function releaseLazyXlsxZipSource(zip) {
|
|
133
|
+
const metadata = zip[xlsxZipCentralDirectorySourceSymbol];
|
|
134
|
+
if (!metadata?.source) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
metadata.source.release?.();
|
|
138
|
+
metadata.source = null;
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
export function replaceLazyXlsxZipSource(zip, source) {
|
|
142
|
+
const metadata = zip[xlsxZipCentralDirectorySourceSymbol];
|
|
143
|
+
if (!metadata?.source) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
metadata.source.release?.();
|
|
147
|
+
metadata.source = source;
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
export function releaseInflatedLazyXlsxZipEntries(zip) {
|
|
151
|
+
const metadata = zip[xlsxZipCentralDirectorySourceSymbol];
|
|
152
|
+
if (!metadata?.source) {
|
|
153
|
+
return 0;
|
|
154
|
+
}
|
|
155
|
+
let releasedByteLength = 0;
|
|
156
|
+
for (const [path, entry] of metadata.entriesByPath) {
|
|
157
|
+
const descriptor = Object.getOwnPropertyDescriptor(zip, path);
|
|
158
|
+
if (!descriptor || !('value' in descriptor) || !(descriptor.value instanceof Uint8Array)) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
releasedByteLength += descriptor.value.byteLength;
|
|
162
|
+
defineLazyZipEntry(zip, metadata, entry);
|
|
163
|
+
}
|
|
164
|
+
return releasedByteLength;
|
|
165
|
+
}
|
|
166
|
+
export function readLazyXlsxZipSource(zip) {
|
|
167
|
+
const metadata = zip[xlsxZipCentralDirectorySourceSymbol];
|
|
168
|
+
const source = metadata?.source;
|
|
169
|
+
return source && isUint8ArrayZipByteSource(source) ? source.bytes : undefined;
|
|
170
|
+
}
|
|
171
|
+
export function readLazyXlsxZipSourceByteLength(zip) {
|
|
172
|
+
const metadata = zip[xlsxZipCentralDirectorySourceSymbol];
|
|
173
|
+
return metadata ? (metadata.source?.byteLength ?? 0) : undefined;
|
|
174
|
+
}
|
|
175
|
+
export function readXlsxZipEntryUncompressedSize(zip, path) {
|
|
176
|
+
const normalizedPath = normalizeZipPath(path);
|
|
177
|
+
const metadata = zip[xlsxZipCentralDirectorySourceSymbol];
|
|
178
|
+
const entry = metadata?.entriesByPath.get(normalizedPath);
|
|
179
|
+
if (entry) {
|
|
180
|
+
return entry.uncompressedSize;
|
|
181
|
+
}
|
|
182
|
+
return zip[normalizedPath]?.byteLength;
|
|
183
|
+
}
|
|
184
|
+
function byteSourceFromUint8Array(source) {
|
|
185
|
+
return {
|
|
186
|
+
byteLength: source.byteLength,
|
|
187
|
+
bytes: source,
|
|
188
|
+
readRange(start, end) {
|
|
189
|
+
return source.subarray(start, end);
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function isUint8ArrayZipByteSource(source) {
|
|
194
|
+
return 'bytes' in source && source.bytes instanceof Uint8Array;
|
|
195
|
+
}
|
|
196
|
+
function readCentralDirectoryEntries(source) {
|
|
197
|
+
const endOfCentralDirectoryOffset = findEndOfCentralDirectoryOffset(source);
|
|
198
|
+
if (endOfCentralDirectoryOffset === null) {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
const endOfCentralDirectory = source.readRange(endOfCentralDirectoryOffset, endOfCentralDirectoryOffset + 22);
|
|
202
|
+
const centralDirectoryOffset = readUint32(endOfCentralDirectory, 16);
|
|
203
|
+
const centralDirectorySize = readUint32(endOfCentralDirectory, 12);
|
|
204
|
+
if (centralDirectoryOffset === zip64Sentinel ||
|
|
205
|
+
centralDirectorySize === zip64Sentinel ||
|
|
206
|
+
centralDirectoryOffset + centralDirectorySize > source.byteLength) {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
const centralDirectory = source.readRange(centralDirectoryOffset, centralDirectoryOffset + centralDirectorySize);
|
|
210
|
+
const entries = [];
|
|
211
|
+
let offset = 0;
|
|
212
|
+
const endOffset = centralDirectory.byteLength;
|
|
213
|
+
while (offset + 46 <= endOffset && readUint32(centralDirectory, offset) === centralDirectoryFileHeaderSignature) {
|
|
214
|
+
const compressionMethod = readUint16(centralDirectory, offset + 10);
|
|
215
|
+
const crc = readUint32(centralDirectory, offset + 16);
|
|
216
|
+
const compressedSize = readUint32(centralDirectory, offset + 20);
|
|
217
|
+
const uncompressedSize = readUint32(centralDirectory, offset + 24);
|
|
218
|
+
const fileNameLength = readUint16(centralDirectory, offset + 28);
|
|
219
|
+
const extraFieldLength = readUint16(centralDirectory, offset + 30);
|
|
220
|
+
const fileCommentLength = readUint16(centralDirectory, offset + 32);
|
|
221
|
+
const localHeaderOffset = readUint32(centralDirectory, offset + 42);
|
|
222
|
+
const fileNameStart = offset + 46;
|
|
223
|
+
const fileNameEnd = fileNameStart + fileNameLength;
|
|
224
|
+
const nextOffset = fileNameEnd + extraFieldLength + fileCommentLength;
|
|
225
|
+
if (fileNameEnd > endOffset ||
|
|
226
|
+
nextOffset > endOffset ||
|
|
227
|
+
localHeaderOffset === zip64Sentinel ||
|
|
228
|
+
localHeaderOffset + 30 > source.byteLength) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
const path = normalizeZipPath(textDecoder.decode(centralDirectory.subarray(fileNameStart, fileNameEnd)));
|
|
232
|
+
entries.push({ path, localHeaderOffset, compressedSize, uncompressedSize, compressionMethod, crc });
|
|
233
|
+
offset = nextOffset;
|
|
234
|
+
}
|
|
235
|
+
return offset === endOffset ? entries : null;
|
|
236
|
+
}
|
|
237
|
+
function defineLazyZipEntry(output, metadata, entry) {
|
|
238
|
+
Object.defineProperty(output, entry.path, {
|
|
239
|
+
configurable: true,
|
|
240
|
+
enumerable: true,
|
|
241
|
+
get() {
|
|
242
|
+
const source = metadata.source;
|
|
243
|
+
if (!source) {
|
|
244
|
+
throw new Error('XLSX ZIP source has been released');
|
|
245
|
+
}
|
|
246
|
+
const bytes = inflateCentralDirectoryEntry(source, entry.localHeaderOffset, entry.compressedSize, entry.compressionMethod);
|
|
247
|
+
Object.defineProperty(output, entry.path, {
|
|
248
|
+
configurable: true,
|
|
249
|
+
enumerable: true,
|
|
250
|
+
value: bytes,
|
|
251
|
+
writable: true,
|
|
252
|
+
});
|
|
253
|
+
return bytes;
|
|
254
|
+
},
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
function defineLazyZipCentralDirectorySource(output, metadata) {
|
|
258
|
+
Object.defineProperty(output, xlsxZipCentralDirectorySourceSymbol, {
|
|
259
|
+
configurable: false,
|
|
260
|
+
enumerable: false,
|
|
261
|
+
value: metadata,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
function inflateCentralDirectoryEntry(source, localHeaderOffset, compressedSize, compressionMethod) {
|
|
265
|
+
const { dataStart, dataEnd } = readEntryDataRange(source, localHeaderOffset, compressedSize);
|
|
266
|
+
if (compressionMethod === storedCompressionMethod) {
|
|
267
|
+
return new Uint8Array(source.readRange(dataStart, dataEnd));
|
|
268
|
+
}
|
|
269
|
+
if (compressionMethod === deflatedCompressionMethod) {
|
|
270
|
+
return source.inflateRawRange ? source.inflateRawRange(dataStart, dataEnd) : inflateRawSync(source.readRange(dataStart, dataEnd));
|
|
271
|
+
}
|
|
272
|
+
throw new Error(`Unsupported XLSX compression method: ${String(compressionMethod)}`);
|
|
273
|
+
}
|
|
274
|
+
function inflateCentralDirectoryEntryChunks(source, localHeaderOffset, compressedSize, compressionMethod, onChunk, options) {
|
|
275
|
+
const { dataStart, dataEnd } = readEntryDataRange(source, localHeaderOffset, compressedSize);
|
|
276
|
+
if (compressionMethod === storedCompressionMethod) {
|
|
277
|
+
forEachSourceChunk(source, dataStart, dataEnd, options.chunkSize, onChunk);
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
if (compressionMethod !== deflatedCompressionMethod) {
|
|
281
|
+
throw new Error(`Unsupported XLSX compression method: ${String(compressionMethod)}`);
|
|
282
|
+
}
|
|
283
|
+
if (!options.forceStreamingInflate && options.uncompressedSize <= defaultZipEntryChunkSize) {
|
|
284
|
+
emitInflatedChunks(source.inflateRawRange ? source.inflateRawRange(dataStart, dataEnd) : inflateRawSync(source.readRange(dataStart, dataEnd)), options.chunkSize, onChunk);
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
let stopped = false;
|
|
288
|
+
const inflate = new Inflate((chunk) => {
|
|
289
|
+
if (stopped) {
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
stopped = !emitInflatedChunks(chunk, options.chunkSize, onChunk);
|
|
293
|
+
});
|
|
294
|
+
if (compressedSize === 0) {
|
|
295
|
+
inflate.push(source.readRange(dataStart, dataEnd), true);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
const normalizedChunkSize = Math.max(1, Math.trunc(options.chunkSize));
|
|
299
|
+
const scratch = source.readRangeInto ? new Uint8Array(normalizedChunkSize) : undefined;
|
|
300
|
+
for (let offset = dataStart; offset < dataEnd; offset += normalizedChunkSize) {
|
|
301
|
+
const end = Math.min(dataEnd, offset + normalizedChunkSize);
|
|
302
|
+
inflate.push(readSourceRange(source, offset, end, scratch), end === dataEnd);
|
|
303
|
+
if (stopped) {
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
async function inflateCentralDirectoryEntryChunksAsync(source, localHeaderOffset, compressedSize, compressionMethod, onChunk, options) {
|
|
309
|
+
const { dataStart, dataEnd } = readEntryDataRange(source, localHeaderOffset, compressedSize);
|
|
310
|
+
if (compressionMethod === storedCompressionMethod) {
|
|
311
|
+
await forEachSourceChunkAsync(source, dataStart, dataEnd, options.chunkSize, onChunk);
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
if (compressionMethod !== deflatedCompressionMethod) {
|
|
315
|
+
throw new Error(`Unsupported XLSX compression method: ${String(compressionMethod)}`);
|
|
316
|
+
}
|
|
317
|
+
if (source.inflateRawRangeChunksAsync &&
|
|
318
|
+
(await source.inflateRawRangeChunksAsync(dataStart, dataEnd, onChunk, { chunkSize: options.chunkSize }))) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
if (await inflateCentralDirectoryEntryChunksWithNodeZlibAsync(source, dataStart, dataEnd, onChunk, options.chunkSize)) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
await emitInflatedChunksAsync(source.inflateRawRange ? source.inflateRawRange(dataStart, dataEnd) : inflateRawSync(source.readRange(dataStart, dataEnd)), options.chunkSize, onChunk);
|
|
325
|
+
}
|
|
326
|
+
function readEntryDataRange(source, localHeaderOffset, compressedSize) {
|
|
327
|
+
const localHeader = readSourceRange(source, localHeaderOffset, localHeaderOffset + 30, source.readRangeInto ? new Uint8Array(30) : undefined);
|
|
328
|
+
if (readUint32(localHeader, 0) !== localFileHeaderSignature) {
|
|
329
|
+
throw new Error('Invalid XLSX local file header');
|
|
330
|
+
}
|
|
331
|
+
const fileNameLength = readUint16(localHeader, 26);
|
|
332
|
+
const extraFieldLength = readUint16(localHeader, 28);
|
|
333
|
+
const dataStart = localHeaderOffset + 30 + fileNameLength + extraFieldLength;
|
|
334
|
+
const dataEnd = dataStart + compressedSize;
|
|
335
|
+
if (dataEnd > source.byteLength) {
|
|
336
|
+
throw new Error('Invalid XLSX compressed data range');
|
|
337
|
+
}
|
|
338
|
+
return { dataStart, dataEnd };
|
|
339
|
+
}
|
|
340
|
+
async function inflateCentralDirectoryEntryChunksWithNodeZlibAsync(source, dataStart, dataEnd, onChunk, chunkSize) {
|
|
341
|
+
try {
|
|
342
|
+
const [{ createInflateRaw }, { Readable }] = await Promise.all([import('node:zlib'), import('node:stream')]);
|
|
343
|
+
let offset = dataStart;
|
|
344
|
+
const compressedChunkSize = Math.max(1, Math.trunc(chunkSize));
|
|
345
|
+
const compressedStream = new Readable({
|
|
346
|
+
read() {
|
|
347
|
+
if (offset >= dataEnd) {
|
|
348
|
+
this.push(null);
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
const end = Math.min(dataEnd, offset + compressedChunkSize);
|
|
352
|
+
this.push(source.readRange(offset, end));
|
|
353
|
+
offset = end;
|
|
354
|
+
},
|
|
355
|
+
});
|
|
356
|
+
const inflate = createInflateRaw();
|
|
357
|
+
try {
|
|
358
|
+
for await (const chunk of compressedStream.pipe(inflate)) {
|
|
359
|
+
const bytes = chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk);
|
|
360
|
+
if (!(await emitInflatedChunksAsync(bytes, chunkSize, onChunk))) {
|
|
361
|
+
compressedStream.destroy();
|
|
362
|
+
inflate.destroy();
|
|
363
|
+
return true;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
finally {
|
|
368
|
+
compressedStream.destroy();
|
|
369
|
+
inflate.destroy();
|
|
370
|
+
}
|
|
371
|
+
return true;
|
|
372
|
+
}
|
|
373
|
+
catch {
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
function emitInflatedChunks(chunk, chunkSize, onChunk) {
|
|
378
|
+
for (let offset = 0; offset < chunk.byteLength; offset += chunkSize) {
|
|
379
|
+
if (onChunk(chunk.subarray(offset, Math.min(chunk.byteLength, offset + chunkSize))) === false) {
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return true;
|
|
384
|
+
}
|
|
385
|
+
function forEachSourceChunk(source, start, end, chunkSize, onChunk) {
|
|
386
|
+
const normalizedChunkSize = Math.max(1, Math.trunc(chunkSize));
|
|
387
|
+
const scratch = source.readRangeInto ? new Uint8Array(normalizedChunkSize) : undefined;
|
|
388
|
+
if (start === end) {
|
|
389
|
+
onChunk(readSourceRange(source, start, end, scratch));
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
for (let offset = start; offset < end; offset += normalizedChunkSize) {
|
|
393
|
+
if (onChunk(readSourceRange(source, offset, Math.min(end, offset + normalizedChunkSize), scratch)) === false) {
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
async function emitInflatedChunksAsync(chunk, chunkSize, onChunk) {
|
|
399
|
+
for (let offset = 0; offset < chunk.byteLength; offset += chunkSize) {
|
|
400
|
+
// oxlint-disable-next-line eslint(no-await-in-loop) -- ZIP stream chunks must preserve order and backpressure.
|
|
401
|
+
if ((await onChunk(chunk.subarray(offset, Math.min(chunk.byteLength, offset + chunkSize)))) === false) {
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return true;
|
|
406
|
+
}
|
|
407
|
+
async function forEachSourceChunkAsync(source, start, end, chunkSize, onChunk) {
|
|
408
|
+
const normalizedChunkSize = Math.max(1, Math.trunc(chunkSize));
|
|
409
|
+
const scratch = source.readRangeInto ? new Uint8Array(normalizedChunkSize) : undefined;
|
|
410
|
+
if (start === end) {
|
|
411
|
+
await onChunk(readSourceRange(source, start, end, scratch));
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
for (let offset = start; offset < end; offset += normalizedChunkSize) {
|
|
415
|
+
// oxlint-disable-next-line eslint(no-await-in-loop) -- Source chunks must preserve read order and consumer backpressure.
|
|
416
|
+
if ((await onChunk(readSourceRange(source, offset, Math.min(end, offset + normalizedChunkSize), scratch))) === false) {
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
function readSourceRange(source, start, end, scratch) {
|
|
422
|
+
const length = end - start;
|
|
423
|
+
if (!scratch || !source.readRangeInto || length > scratch.byteLength) {
|
|
424
|
+
return source.readRange(start, end);
|
|
425
|
+
}
|
|
426
|
+
const chunk = source.readRangeInto(start, end, scratch);
|
|
427
|
+
if (chunk.byteLength !== length) {
|
|
428
|
+
throw new Error('XLSX ZIP byte source returned an invalid chunk length');
|
|
429
|
+
}
|
|
430
|
+
return chunk;
|
|
431
|
+
}
|
|
432
|
+
function findEndOfCentralDirectoryOffset(source) {
|
|
433
|
+
const tailStart = Math.max(0, source.byteLength - maxEndOfCentralDirectorySearch);
|
|
434
|
+
const tail = source.readRange(tailStart, source.byteLength);
|
|
435
|
+
for (let offset = tail.byteLength - 22; offset >= 0; offset -= 1) {
|
|
436
|
+
if (readUint32(tail, offset) === endOfCentralDirectorySignature) {
|
|
437
|
+
return tailStart + offset;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
return null;
|
|
441
|
+
}
|
|
442
|
+
function readUint16(source, offset) {
|
|
443
|
+
return source[offset] | (source[offset + 1] << 8);
|
|
444
|
+
}
|
|
445
|
+
function readUint32(source, offset) {
|
|
446
|
+
return (source[offset] | (source[offset + 1] << 8) | (source[offset + 2] << 16) | (source[offset + 3] << 24)) >>> 0;
|
|
447
|
+
}
|
|
448
|
+
//# sourceMappingURL=zip-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip-reader.js","sourceRoot":"","sources":["../src/zip-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAuCvC,MAAM,wBAAwB,GAAG,UAAU,CAAA;AAC3C,MAAM,mCAAmC,GAAG,UAAU,CAAA;AACtD,MAAM,8BAA8B,GAAG,UAAU,CAAA;AACjD,MAAM,uBAAuB,GAAG,CAAC,CAAA;AACjC,MAAM,yBAAyB,GAAG,CAAC,CAAA;AACnC,MAAM,aAAa,GAAG,UAAU,CAAA;AAChC,MAAM,8BAA8B,GAAG,MAAM,CAAA;AAC7C,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAA;AAC1C,MAAM,mCAAmC,GAAkB,MAAM,CAAC,qCAAqC,CAAC,CAAA;AACxG,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAwBrC,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAqB;IACtD,IAAI,CAAC,CAAC,MAAM,YAAY,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,OAAO,GAAG,2BAA2B,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IACD,MAAM,MAAM,GAAmB,EAAE,CAAA;IACjC,MAAM,UAAU,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAA;IACnD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,UAAU,EAAE,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACvI,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAqB;IAC1D,IAAI,CAAC,CAAC,MAAM,YAAY,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,oCAAoC,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAC7G,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,MAAyB;IAC5E,MAAM,OAAO,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAA;IACnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,MAAM,GAAmB,EAAE,CAAA;IACjC,MAAM,QAAQ,GAAkC;QAC9C,MAAM;QACN,aAAa,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;KACpE,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC7C,CAAC;IACD,mCAAmC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACrD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAyB;IAChE,OAAO,CACL,2BAA2B,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;KAC3C,CAAC,CAAC,IAAI,IAAI,CACZ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,GAAmB,EAAE,IAAY;IACpF,MAAM,QAAQ,GAAI,GAAgD,CAAC,mCAAmC,CAAC,CAAA;IACvG,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAA;IAC/B,MAAM,KAAK,GAAG,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;IACjE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxG,OAAO;QACL,MAAM;QACN,SAAS;QACT,OAAO;QACP,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAmB,EAAE,IAAY;IAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;IACxC,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAmB,EAAE,IAAY,EAAE,IAAY;IACxE,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,GAAmB,EACnB,IAAY,EACZ,OAA6B,EAC7B,UAAqF,EAAE;IAEvF,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAI,GAAgD,CAAC,mCAAmC,CAAC,CAAA;IACvG,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAA;IAC/B,MAAM,KAAK,GAAG,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,wBAAwB,CAAA;IAC/D,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACpB,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,EAAE;YAC1H,SAAS;YACT,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,KAAK,IAAI;YAC7D,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;SACzC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAA;IACd,CAAC;IACD,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAChD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,GAAmB,EACnB,IAAY,EACZ,OAAkC,EAClC,UAAqF,EAAE;IAEvF,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAI,GAAgD,CAAC,mCAAmC,CAAC,CAAA;IACvG,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAA;IAC/B,MAAM,KAAK,GAAG,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,wBAAwB,CAAA;IAC/D,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAC3D,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,uCAAuC,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,EAAE;QACrI,SAAS;KACV,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAmB;IAC1D,MAAM,QAAQ,GAAI,GAAgD,CAAC,mCAAmC,CAAC,CAAA;IACvG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAA;IAC3B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAmB,EAAE,MAAyB;IACrF,MAAM,QAAQ,GAAI,GAAgD,CAAC,mCAAmC,CAAC,CAAA;IACvG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAA;IAC3B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,GAAmB;IACnE,MAAM,QAAQ,GAAI,GAAgD,CAAC,mCAAmC,CAAC,CAAA;IACvG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,CAAA;IACV,CAAC;IACD,IAAI,kBAAkB,GAAG,CAAC,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC7D,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;YACzF,SAAQ;QACV,CAAC;QACD,kBAAkB,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAA;QACjD,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAmB;IACvD,MAAM,QAAQ,GAAI,GAAgD,CAAC,mCAAmC,CAAC,CAAA;IACvG,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAA;IAC/B,OAAO,MAAM,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC/E,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,GAAmB;IACjE,MAAM,QAAQ,GAAI,GAAgD,CAAC,mCAAmC,CAAC,CAAA;IACvG,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,GAAmB,EAAE,IAAY;IAChF,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAI,GAAgD,CAAC,mCAAmC,CAAC,CAAA;IACvG,MAAM,KAAK,GAAG,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACzD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,gBAAgB,CAAA;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC,cAAc,CAAC,EAAE,UAAU,CAAA;AACxC,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAkB;IAClD,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,MAAM;QACb,SAAS,CAAC,KAAK,EAAE,GAAG;YAClB,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACpC,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAyB;IAC1D,OAAO,OAAO,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,YAAY,UAAU,CAAA;AAChE,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAyB;IAC5D,MAAM,2BAA2B,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAA;IAC3E,IAAI,2BAA2B,KAAK,IAAI,EAAE,CAAC;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,2BAA2B,EAAE,2BAA2B,GAAG,EAAE,CAAC,CAAA;IAC7G,MAAM,sBAAsB,GAAG,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;IACpE,MAAM,oBAAoB,GAAG,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;IAClE,IACE,sBAAsB,KAAK,aAAa;QACxC,oBAAoB,KAAK,aAAa;QACtC,sBAAsB,GAAG,oBAAoB,GAAG,MAAM,CAAC,UAAU,EACjE,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,oBAAoB,CAAC,CAAA;IAChH,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAA;IAC7C,OAAO,MAAM,GAAG,EAAE,IAAI,SAAS,IAAI,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,mCAAmC,EAAE,CAAC;QAChH,MAAM,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;QACnE,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;QACrD,MAAM,cAAc,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;QAChE,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;QAChE,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;QAClE,MAAM,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;QACnE,MAAM,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;QACnE,MAAM,aAAa,GAAG,MAAM,GAAG,EAAE,CAAA;QACjC,MAAM,WAAW,GAAG,aAAa,GAAG,cAAc,CAAA;QAClD,MAAM,UAAU,GAAG,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,CAAA;QACrE,IACE,WAAW,GAAG,SAAS;YACvB,UAAU,GAAG,SAAS;YACtB,iBAAiB,KAAK,aAAa;YACnC,iBAAiB,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,EAC1C,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;QACxG,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAA;QACnG,MAAM,GAAG,UAAU,CAAA;IACrB,CAAC;IACD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAsB,EAAE,QAAuC,EAAE,KAA4B;IACvH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;QACxC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,GAAG;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;YAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;YACtD,CAAC;YACD,MAAM,KAAK,GAAG,4BAA4B,CAAC,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA;YAC1H,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;gBACxC,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,IAAI;aACf,CAAC,CAAA;YACF,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,mCAAmC,CAAC,MAAsB,EAAE,QAAuC;IAC1G,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,mCAAmC,EAAE;QACjE,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,MAAyB,EACzB,iBAAyB,EACzB,cAAsB,EACtB,iBAAyB;IAEzB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAA;IAC5F,IAAI,iBAAiB,KAAK,uBAAuB,EAAE,CAAC;QAClD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7D,CAAC;IACD,IAAI,iBAAiB,KAAK,yBAAyB,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IACnI,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;AACtF,CAAC;AAED,SAAS,kCAAkC,CACzC,MAAyB,EACzB,iBAAyB,EACzB,cAAsB,EACtB,iBAAyB,EACzB,OAA6B,EAC7B,OAAmH;IAEnH,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAA;IAC5F,IAAI,iBAAiB,KAAK,uBAAuB,EAAE,CAAC;QAClD,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAC1E,OAAM;IACR,CAAC;IACD,IAAI,iBAAiB,KAAK,yBAAyB,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,gBAAgB,IAAI,wBAAwB,EAAE,CAAC;QAC3F,kBAAkB,CAChB,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAC1H,OAAO,CAAC,SAAS,EACjB,OAAO,CACR,CAAA;QACD,OAAM;IACR,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAM;QACR,CAAC;QACD,OAAO,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IACF,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;QACxD,OAAM;IACR,CAAC;IACD,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,KAAK,IAAI,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,mBAAmB,EAAE,CAAC;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAA;QAC3D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;QAC5E,IAAI,OAAO,EAAE,CAAC;YACZ,OAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uCAAuC,CACpD,MAAyB,EACzB,iBAAyB,EACzB,cAAsB,EACtB,iBAAyB,EACzB,OAAkC,EAClC,OAAuC;IAEvC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAA;IAC5F,IAAI,iBAAiB,KAAK,uBAAuB,EAAE,CAAC;QAClD,MAAM,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACrF,OAAM;IACR,CAAC;IACD,IAAI,iBAAiB,KAAK,yBAAyB,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;IACtF,CAAC;IACD,IACE,MAAM,CAAC,0BAA0B;QACjC,CAAC,MAAM,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EACxG,CAAC;QACD,OAAM;IACR,CAAC;IACD,IAAI,MAAM,mDAAmD,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACtH,OAAM;IACR,CAAC;IACD,MAAM,uBAAuB,CAC3B,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAC1H,OAAO,CAAC,SAAS,EACjB,OAAO,CACR,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAyB,EACzB,iBAAyB,EACzB,cAAsB;IAEtB,MAAM,WAAW,GAAG,eAAe,CACjC,MAAM,EACN,iBAAiB,EACjB,iBAAiB,GAAG,EAAE,EACtB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CACtD,CAAA;IACD,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,wBAAwB,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACnD,CAAC;IACD,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IAClD,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,iBAAiB,GAAG,EAAE,GAAG,cAAc,GAAG,gBAAgB,CAAA;IAC5E,MAAM,OAAO,GAAG,SAAS,GAAG,cAAc,CAAA;IAC1C,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAC/B,CAAC;AAED,KAAK,UAAU,mDAAmD,CAChE,MAAyB,EACzB,SAAiB,EACjB,OAAe,EACf,OAAkC,EAClC,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QAC5G,IAAI,MAAM,GAAG,SAAS,CAAA;QACtB,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;QAC9D,MAAM,gBAAgB,GAAG,IAAI,QAAQ,CAAC;YACpC,IAAI;gBACF,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACf,OAAM;gBACR,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAA;gBAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;gBACxC,MAAM,GAAG,GAAG,CAAA;YACd,CAAC;SACF,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAA;QAClC,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzD,MAAM,KAAK,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;gBACzE,IAAI,CAAC,CAAC,MAAM,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;oBAChE,gBAAgB,CAAC,OAAO,EAAE,CAAA;oBAC1B,OAAO,CAAC,OAAO,EAAE,CAAA;oBACjB,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,gBAAgB,CAAC,OAAO,EAAE,CAAA;YAC1B,OAAO,CAAC,OAAO,EAAE,CAAA;QACnB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAiB,EAAE,SAAiB,EAAE,OAA6B;IAC7F,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;QACpE,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YAC9F,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAyB,EAAE,KAAa,EAAE,GAAW,EAAE,SAAiB,EAAE,OAA6B;IACjI,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAClB,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QACrD,OAAM;IACR,CAAC;IACD,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACrE,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YAC7G,OAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,KAAiB,EAAE,SAAiB,EAAE,OAAkC;IAC7G,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;QACpE,+GAA+G;QAC/G,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACtG,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,MAAyB,EACzB,KAAa,EACb,GAAW,EACX,SAAiB,EACjB,OAAkC;IAElC,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAClB,MAAM,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QAC3D,OAAM;IACR,CAAC;IACD,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACrE,yHAAyH;QACzH,IAAI,CAAC,MAAM,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACrH,OAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAAyB,EAAE,KAAa,EAAE,GAAW,EAAE,OAA+B;IAC7G,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK,CAAA;IAC1B,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACrE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACrC,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IACvD,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,+BAA+B,CAAC,MAAyB;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,8BAA8B,CAAC,CAAA;IACjF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAC3D,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACjE,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,8BAA8B,EAAE,CAAC;YAChE,OAAO,SAAS,GAAG,MAAM,CAAA;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,UAAU,CAAC,MAAkB,EAAE,MAAc;IACpD,OAAO,MAAM,CAAC,MAAM,CAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,CAAA;AACrD,CAAC;AAED,SAAS,UAAU,CAAC,MAAkB,EAAE,MAAc;IACpD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;AACzH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bilig/xlsx",
|
|
3
|
+
"version": "0.164.0",
|
|
4
|
+
"description": "@bilig/xlsx ZIP, address, streaming formula-cache, and source-preserving patch primitives for Bilig.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"bilig",
|
|
7
|
+
"source-preserving",
|
|
8
|
+
"spreadsheet",
|
|
9
|
+
"xlsx",
|
|
10
|
+
"zip"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://github.com/proompteng/bilig/tree/main/packages/xlsx#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/proompteng/bilig/issues"
|
|
15
|
+
},
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/proompteng/bilig.git",
|
|
20
|
+
"directory": "packages/xlsx"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"README.md",
|
|
25
|
+
"LICENSE"
|
|
26
|
+
],
|
|
27
|
+
"type": "module",
|
|
28
|
+
"sideEffects": false,
|
|
29
|
+
"main": "./dist/index.js",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"import": "./dist/index.js",
|
|
35
|
+
"default": "./dist/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./address": {
|
|
38
|
+
"types": "./dist/address.d.ts",
|
|
39
|
+
"import": "./dist/address.js",
|
|
40
|
+
"default": "./dist/address.js"
|
|
41
|
+
},
|
|
42
|
+
"./file-source": {
|
|
43
|
+
"types": "./dist/file-source.d.ts",
|
|
44
|
+
"import": "./dist/file-source.js",
|
|
45
|
+
"default": "./dist/file-source.js"
|
|
46
|
+
},
|
|
47
|
+
"./formula-cache-reader": {
|
|
48
|
+
"types": "./dist/formula-cache-reader.d.ts",
|
|
49
|
+
"import": "./dist/formula-cache-reader.js",
|
|
50
|
+
"default": "./dist/formula-cache-reader.js"
|
|
51
|
+
},
|
|
52
|
+
"./streaming-native-inspect": {
|
|
53
|
+
"types": "./dist/streaming-native-inspect.d.ts",
|
|
54
|
+
"import": "./dist/streaming-native-inspect.js",
|
|
55
|
+
"default": "./dist/streaming-native-inspect.js"
|
|
56
|
+
},
|
|
57
|
+
"./streaming-native-recalc": {
|
|
58
|
+
"types": "./dist/streaming-native-recalc.d.ts",
|
|
59
|
+
"import": "./dist/streaming-native-recalc.js",
|
|
60
|
+
"default": "./dist/streaming-native-recalc.js"
|
|
61
|
+
},
|
|
62
|
+
"./source-preserving-zip": {
|
|
63
|
+
"types": "./dist/source-preserving-zip.d.ts",
|
|
64
|
+
"import": "./dist/source-preserving-zip.js",
|
|
65
|
+
"default": "./dist/source-preserving-zip.js"
|
|
66
|
+
},
|
|
67
|
+
"./source-preserving-literal-patches": {
|
|
68
|
+
"types": "./dist/source-preserving-literal-patches.d.ts",
|
|
69
|
+
"import": "./dist/source-preserving-literal-patches.js",
|
|
70
|
+
"default": "./dist/source-preserving-literal-patches.js"
|
|
71
|
+
},
|
|
72
|
+
"./simple-workbook-writer": {
|
|
73
|
+
"types": "./dist/simple-workbook-writer.d.ts",
|
|
74
|
+
"import": "./dist/simple-workbook-writer.js",
|
|
75
|
+
"default": "./dist/simple-workbook-writer.js"
|
|
76
|
+
},
|
|
77
|
+
"./targeted-cell-reader": {
|
|
78
|
+
"types": "./dist/targeted-cell-reader.d.ts",
|
|
79
|
+
"import": "./dist/targeted-cell-reader.js",
|
|
80
|
+
"default": "./dist/targeted-cell-reader.js"
|
|
81
|
+
},
|
|
82
|
+
"./workbook-cell-reader": {
|
|
83
|
+
"types": "./dist/workbook-cell-reader.d.ts",
|
|
84
|
+
"import": "./dist/workbook-cell-reader.js",
|
|
85
|
+
"default": "./dist/workbook-cell-reader.js"
|
|
86
|
+
},
|
|
87
|
+
"./workbook-compatibility-report": {
|
|
88
|
+
"types": "./dist/workbook-compatibility-report.d.ts",
|
|
89
|
+
"import": "./dist/workbook-compatibility-report.js",
|
|
90
|
+
"default": "./dist/workbook-compatibility-report.js"
|
|
91
|
+
},
|
|
92
|
+
"./zip-reader": {
|
|
93
|
+
"types": "./dist/zip-reader.d.ts",
|
|
94
|
+
"import": "./dist/zip-reader.js",
|
|
95
|
+
"default": "./dist/zip-reader.js"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"publishConfig": {
|
|
99
|
+
"access": "public"
|
|
100
|
+
},
|
|
101
|
+
"scripts": {
|
|
102
|
+
"build": "tsc -p tsconfig.json"
|
|
103
|
+
},
|
|
104
|
+
"dependencies": {
|
|
105
|
+
"@bilig/formula": "0.164.0",
|
|
106
|
+
"@bilig/protocol": "0.164.0",
|
|
107
|
+
"@bilig/wasm-kernel": "0.164.0",
|
|
108
|
+
"fflate-stream": "npm:fflate@0.8.3"
|
|
109
|
+
},
|
|
110
|
+
"engines": {
|
|
111
|
+
"node": ">=22.0.0"
|
|
112
|
+
}
|
|
113
|
+
}
|