@cj-tech-master/excelts 4.2.1-canary.20260111102127.f808a37 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_NOTICES.md +31 -0
- package/dist/browser/index.browser.d.ts +0 -1
- package/dist/browser/index.browser.js +0 -12
- package/dist/browser/modules/archive/byte-queue.d.ts +18 -0
- package/dist/browser/modules/archive/byte-queue.js +125 -0
- package/dist/browser/modules/archive/{compression/compress.base.js → compress.base.js} +1 -1
- package/dist/browser/modules/archive/{compression/compress.browser.d.ts → compress.browser.d.ts} +8 -2
- package/dist/{esm/modules/archive/compression → browser/modules/archive}/compress.browser.js +11 -3
- package/dist/browser/modules/archive/{compression/compress.d.ts → compress.d.ts} +2 -2
- package/dist/{esm/modules/archive/compression → browser/modules/archive}/compress.js +1 -1
- package/dist/browser/modules/archive/{compression/crc32.browser.d.ts → crc32.browser.d.ts} +1 -1
- package/dist/browser/modules/archive/{compression/crc32.d.ts → crc32.d.ts} +1 -1
- package/dist/browser/modules/archive/{compression/crc32.js → crc32.js} +1 -1
- package/dist/browser/modules/archive/defaults.d.ts +0 -1
- package/dist/browser/modules/archive/defaults.js +3 -6
- package/dist/browser/modules/archive/{compression/deflate-fallback.js → deflate-fallback.js} +1 -1
- package/dist/browser/modules/archive/{unzip/extract.d.ts → extract.d.ts} +2 -2
- package/dist/browser/modules/archive/index.base.d.ts +4 -4
- package/dist/browser/modules/archive/index.base.js +6 -3
- package/dist/browser/modules/archive/index.browser.d.ts +4 -3
- package/dist/browser/modules/archive/index.browser.js +7 -3
- package/dist/browser/modules/archive/index.d.ts +4 -3
- package/dist/browser/modules/archive/index.js +5 -3
- package/dist/browser/modules/archive/{unzip/stream.base.d.ts → parse.base.d.ts} +2 -36
- package/dist/browser/modules/archive/parse.base.js +644 -0
- package/dist/browser/modules/archive/{unzip/stream.browser.d.ts → parse.browser.d.ts} +1 -1
- package/dist/{esm/modules/archive/unzip/stream.browser.js → browser/modules/archive/parse.browser.js} +110 -371
- package/dist/browser/modules/archive/{unzip/stream.d.ts → parse.d.ts} +2 -2
- package/dist/{esm/modules/archive/unzip/stream.js → browser/modules/archive/parse.js} +5 -6
- package/dist/browser/modules/archive/{compression/streaming-compress.browser.d.ts → streaming-compress.browser.d.ts} +2 -2
- package/dist/browser/modules/archive/{compression/streaming-compress.browser.js → streaming-compress.browser.js} +3 -3
- package/dist/browser/modules/archive/{compression/streaming-compress.d.ts → streaming-compress.d.ts} +2 -2
- package/dist/browser/modules/archive/{compression/streaming-compress.js → streaming-compress.js} +2 -2
- package/dist/browser/modules/archive/{zip/stream.d.ts → streaming-zip.d.ts} +5 -28
- package/dist/{esm/modules/archive/zip/stream.js → browser/modules/archive/streaming-zip.js} +48 -192
- package/dist/browser/modules/archive/utils/bytes.js +16 -16
- package/dist/browser/modules/archive/utils/parse-buffer.js +23 -21
- package/dist/browser/modules/archive/utils/timestamps.js +1 -62
- package/dist/browser/modules/archive/utils/zip-extra-fields.d.ts +1 -1
- package/dist/browser/modules/archive/utils/zip-extra-fields.js +14 -26
- package/dist/browser/modules/archive/utils/zip-extra.d.ts +18 -0
- package/dist/browser/modules/archive/utils/zip-extra.js +68 -0
- package/dist/browser/modules/archive/zip-builder.d.ts +117 -0
- package/dist/browser/modules/archive/zip-builder.js +292 -0
- package/dist/browser/modules/archive/zip-constants.d.ts +18 -0
- package/dist/browser/modules/archive/zip-constants.js +23 -0
- package/dist/{esm/modules/archive/zip → browser/modules/archive}/zip-entry-metadata.js +3 -3
- package/dist/{types/modules/archive/unzip → browser/modules/archive}/zip-parser.d.ts +1 -1
- package/dist/{esm/modules/archive/unzip → browser/modules/archive}/zip-parser.js +24 -38
- package/dist/browser/modules/archive/{zip-spec/zip-records.d.ts → zip-records.d.ts} +0 -20
- package/dist/browser/modules/archive/zip-records.js +84 -0
- package/dist/browser/modules/excel/stream/workbook-reader.browser.js +1 -1
- package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +1 -1
- package/dist/browser/modules/excel/stream/workbook-writer.browser.js +1 -1
- package/dist/browser/modules/excel/xlsx/xlsx.browser.js +6 -3
- package/dist/browser/modules/excel/xlsx/xlsx.js +1 -1
- package/dist/browser/modules/stream/streams.browser.d.ts +30 -28
- package/dist/browser/modules/stream/streams.browser.js +710 -830
- package/dist/browser/modules/stream/streams.js +58 -140
- package/dist/cjs/modules/archive/byte-queue.js +129 -0
- package/dist/cjs/modules/archive/{compression/compress.base.js → compress.base.js} +1 -1
- package/dist/cjs/modules/archive/{compression/compress.browser.js → compress.browser.js} +11 -3
- package/dist/cjs/modules/archive/{compression/compress.js → compress.js} +1 -1
- package/dist/cjs/modules/archive/{compression/crc32.js → crc32.js} +1 -1
- package/dist/cjs/modules/archive/defaults.js +4 -7
- package/dist/cjs/modules/archive/{compression/deflate-fallback.js → deflate-fallback.js} +1 -1
- package/dist/cjs/modules/archive/index.base.js +19 -9
- package/dist/cjs/modules/archive/index.browser.js +10 -4
- package/dist/cjs/modules/archive/index.js +8 -4
- package/dist/cjs/modules/archive/parse.base.js +666 -0
- package/dist/cjs/modules/archive/{unzip/stream.browser.js → parse.browser.js} +111 -372
- package/dist/cjs/modules/archive/{unzip/stream.js → parse.js} +8 -9
- package/dist/cjs/modules/archive/{compression/streaming-compress.browser.js → streaming-compress.browser.js} +3 -3
- package/dist/cjs/modules/archive/{compression/streaming-compress.js → streaming-compress.js} +2 -2
- package/dist/cjs/modules/archive/{zip/stream.js → streaming-zip.js} +50 -194
- package/dist/cjs/modules/archive/utils/bytes.js +16 -16
- package/dist/cjs/modules/archive/utils/parse-buffer.js +23 -21
- package/dist/cjs/modules/archive/utils/timestamps.js +3 -64
- package/dist/cjs/modules/archive/utils/zip-extra-fields.js +14 -26
- package/dist/cjs/modules/archive/utils/zip-extra.js +74 -0
- package/dist/cjs/modules/archive/zip-builder.js +297 -0
- package/dist/cjs/modules/archive/zip-constants.js +26 -0
- package/dist/cjs/modules/archive/{zip/zip-entry-metadata.js → zip-entry-metadata.js} +5 -5
- package/dist/cjs/modules/archive/{unzip/zip-parser.js → zip-parser.js} +33 -47
- package/dist/cjs/modules/archive/zip-records.js +90 -0
- package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +2 -2
- package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +4 -4
- package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +9 -6
- package/dist/cjs/modules/excel/xlsx/xlsx.js +2 -2
- package/dist/cjs/modules/stream/streams.browser.js +710 -830
- package/dist/cjs/modules/stream/streams.js +58 -140
- package/dist/esm/index.browser.js +0 -12
- package/dist/esm/modules/archive/byte-queue.js +125 -0
- package/dist/esm/modules/archive/{compression/compress.base.js → compress.base.js} +1 -1
- package/dist/{browser/modules/archive/compression → esm/modules/archive}/compress.browser.js +11 -3
- package/dist/{browser/modules/archive/compression → esm/modules/archive}/compress.js +1 -1
- package/dist/esm/modules/archive/{compression/crc32.js → crc32.js} +1 -1
- package/dist/esm/modules/archive/defaults.js +3 -6
- package/dist/esm/modules/archive/{compression/deflate-fallback.js → deflate-fallback.js} +1 -1
- package/dist/esm/modules/archive/index.base.js +6 -3
- package/dist/esm/modules/archive/index.browser.js +7 -3
- package/dist/esm/modules/archive/index.js +5 -3
- package/dist/esm/modules/archive/parse.base.js +644 -0
- package/dist/{browser/modules/archive/unzip/stream.browser.js → esm/modules/archive/parse.browser.js} +110 -371
- package/dist/{browser/modules/archive/unzip/stream.js → esm/modules/archive/parse.js} +5 -6
- package/dist/esm/modules/archive/{compression/streaming-compress.browser.js → streaming-compress.browser.js} +3 -3
- package/dist/esm/modules/archive/{compression/streaming-compress.js → streaming-compress.js} +2 -2
- package/dist/{browser/modules/archive/zip/stream.js → esm/modules/archive/streaming-zip.js} +48 -192
- package/dist/esm/modules/archive/utils/bytes.js +16 -16
- package/dist/esm/modules/archive/utils/parse-buffer.js +23 -21
- package/dist/esm/modules/archive/utils/timestamps.js +1 -62
- package/dist/esm/modules/archive/utils/zip-extra-fields.js +14 -26
- package/dist/esm/modules/archive/utils/zip-extra.js +68 -0
- package/dist/esm/modules/archive/zip-builder.js +292 -0
- package/dist/esm/modules/archive/zip-constants.js +23 -0
- package/dist/{browser/modules/archive/zip → esm/modules/archive}/zip-entry-metadata.js +3 -3
- package/dist/{browser/modules/archive/unzip → esm/modules/archive}/zip-parser.js +24 -38
- package/dist/esm/modules/archive/zip-records.js +84 -0
- package/dist/esm/modules/excel/stream/workbook-reader.browser.js +1 -1
- package/dist/esm/modules/excel/stream/workbook-writer.browser.js +1 -1
- package/dist/esm/modules/excel/xlsx/xlsx.browser.js +6 -3
- package/dist/esm/modules/excel/xlsx/xlsx.js +1 -1
- package/dist/esm/modules/stream/streams.browser.js +710 -830
- package/dist/esm/modules/stream/streams.js +58 -140
- package/dist/iife/THIRD_PARTY_NOTICES.md +31 -0
- package/dist/iife/excelts.iife.js +4425 -6215
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +31 -103
- package/dist/types/index.browser.d.ts +0 -1
- package/dist/types/modules/archive/byte-queue.d.ts +18 -0
- package/dist/types/modules/archive/{compression/compress.browser.d.ts → compress.browser.d.ts} +8 -2
- package/dist/types/modules/archive/defaults.d.ts +0 -1
- package/dist/types/modules/archive/index.base.d.ts +4 -4
- package/dist/types/modules/archive/index.browser.d.ts +4 -3
- package/dist/types/modules/archive/index.d.ts +4 -3
- package/dist/types/modules/archive/{unzip/stream.base.d.ts → parse.base.d.ts} +4 -38
- package/dist/types/modules/archive/{unzip/stream.browser.d.ts → parse.browser.d.ts} +2 -2
- package/dist/types/modules/archive/{unzip/stream.d.ts → parse.d.ts} +3 -3
- package/dist/types/modules/archive/{compression/streaming-compress.browser.d.ts → streaming-compress.browser.d.ts} +1 -1
- package/dist/types/modules/archive/{zip/stream.d.ts → streaming-zip.d.ts} +6 -29
- package/dist/types/modules/archive/utils/zip-extra-fields.d.ts +1 -1
- package/dist/types/modules/archive/utils/zip-extra.d.ts +18 -0
- package/dist/types/modules/archive/zip-builder.d.ts +117 -0
- package/dist/types/modules/archive/zip-constants.d.ts +18 -0
- package/dist/types/modules/archive/{zip/zip-entry-metadata.d.ts → zip-entry-metadata.d.ts} +1 -1
- package/dist/{browser/modules/archive/unzip → types/modules/archive}/zip-parser.d.ts +1 -1
- package/dist/types/modules/archive/{zip-spec/zip-records.d.ts → zip-records.d.ts} +0 -20
- package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +1 -1
- package/dist/types/modules/stream/streams.browser.d.ts +30 -28
- package/package.json +1 -5
- package/dist/browser/modules/archive/internal/byte-queue.d.ts +0 -33
- package/dist/browser/modules/archive/internal/byte-queue.js +0 -407
- package/dist/browser/modules/archive/io/archive-sink.d.ts +0 -9
- package/dist/browser/modules/archive/io/archive-sink.js +0 -77
- package/dist/browser/modules/archive/io/archive-source.d.ts +0 -8
- package/dist/browser/modules/archive/io/archive-source.js +0 -107
- package/dist/browser/modules/archive/unzip/index.d.ts +0 -40
- package/dist/browser/modules/archive/unzip/index.js +0 -164
- package/dist/browser/modules/archive/unzip/stream.base.js +0 -1022
- package/dist/browser/modules/archive/utils/async-queue.d.ts +0 -7
- package/dist/browser/modules/archive/utils/async-queue.js +0 -103
- package/dist/browser/modules/archive/utils/compressibility.d.ts +0 -10
- package/dist/browser/modules/archive/utils/compressibility.js +0 -57
- package/dist/browser/modules/archive/utils/pattern-scanner.d.ts +0 -21
- package/dist/browser/modules/archive/utils/pattern-scanner.js +0 -27
- package/dist/browser/modules/archive/zip/index.d.ts +0 -42
- package/dist/browser/modules/archive/zip/index.js +0 -157
- package/dist/browser/modules/archive/zip/zip-bytes.d.ts +0 -73
- package/dist/browser/modules/archive/zip/zip-bytes.js +0 -239
- package/dist/browser/modules/archive/zip-spec/zip-records.js +0 -126
- package/dist/cjs/modules/archive/internal/byte-queue.js +0 -411
- package/dist/cjs/modules/archive/io/archive-sink.js +0 -82
- package/dist/cjs/modules/archive/io/archive-source.js +0 -114
- package/dist/cjs/modules/archive/unzip/index.js +0 -170
- package/dist/cjs/modules/archive/unzip/stream.base.js +0 -1044
- package/dist/cjs/modules/archive/utils/async-queue.js +0 -106
- package/dist/cjs/modules/archive/utils/compressibility.js +0 -60
- package/dist/cjs/modules/archive/utils/pattern-scanner.js +0 -31
- package/dist/cjs/modules/archive/zip/index.js +0 -162
- package/dist/cjs/modules/archive/zip/zip-bytes.js +0 -242
- package/dist/cjs/modules/archive/zip-spec/zip-records.js +0 -136
- package/dist/esm/modules/archive/internal/byte-queue.js +0 -407
- package/dist/esm/modules/archive/io/archive-sink.js +0 -77
- package/dist/esm/modules/archive/io/archive-source.js +0 -107
- package/dist/esm/modules/archive/unzip/index.js +0 -164
- package/dist/esm/modules/archive/unzip/stream.base.js +0 -1022
- package/dist/esm/modules/archive/utils/async-queue.js +0 -103
- package/dist/esm/modules/archive/utils/compressibility.js +0 -57
- package/dist/esm/modules/archive/utils/pattern-scanner.js +0 -27
- package/dist/esm/modules/archive/zip/index.js +0 -157
- package/dist/esm/modules/archive/zip/zip-bytes.js +0 -239
- package/dist/esm/modules/archive/zip-spec/zip-records.js +0 -126
- package/dist/types/modules/archive/internal/byte-queue.d.ts +0 -33
- package/dist/types/modules/archive/io/archive-sink.d.ts +0 -9
- package/dist/types/modules/archive/io/archive-source.d.ts +0 -8
- package/dist/types/modules/archive/unzip/index.d.ts +0 -40
- package/dist/types/modules/archive/utils/async-queue.d.ts +0 -7
- package/dist/types/modules/archive/utils/compressibility.d.ts +0 -10
- package/dist/types/modules/archive/utils/pattern-scanner.d.ts +0 -21
- package/dist/types/modules/archive/zip/index.d.ts +0 -42
- package/dist/types/modules/archive/zip/zip-bytes.d.ts +0 -73
- /package/dist/browser/modules/archive/{compression/compress.base.d.ts → compress.base.d.ts} +0 -0
- /package/dist/browser/modules/archive/{compression/crc32.base.d.ts → crc32.base.d.ts} +0 -0
- /package/dist/browser/modules/archive/{compression/crc32.base.js → crc32.base.js} +0 -0
- /package/dist/browser/modules/archive/{compression/crc32.browser.js → crc32.browser.js} +0 -0
- /package/dist/browser/modules/archive/{compression/deflate-fallback.d.ts → deflate-fallback.d.ts} +0 -0
- /package/dist/browser/modules/archive/{unzip/extract.js → extract.js} +0 -0
- /package/dist/browser/modules/archive/{compression/streaming-compress.base.d.ts → streaming-compress.base.d.ts} +0 -0
- /package/dist/browser/modules/archive/{compression/streaming-compress.base.js → streaming-compress.base.js} +0 -0
- /package/dist/browser/modules/archive/{zip-spec/zip-entry-info.d.ts → zip-entry-info.d.ts} +0 -0
- /package/dist/browser/modules/archive/{zip-spec/zip-entry-info.js → zip-entry-info.js} +0 -0
- /package/dist/browser/modules/archive/{zip/zip-entry-metadata.d.ts → zip-entry-metadata.d.ts} +0 -0
- /package/dist/cjs/modules/archive/{compression/crc32.base.js → crc32.base.js} +0 -0
- /package/dist/cjs/modules/archive/{compression/crc32.browser.js → crc32.browser.js} +0 -0
- /package/dist/cjs/modules/archive/{unzip/extract.js → extract.js} +0 -0
- /package/dist/cjs/modules/archive/{compression/streaming-compress.base.js → streaming-compress.base.js} +0 -0
- /package/dist/cjs/modules/archive/{zip-spec/zip-entry-info.js → zip-entry-info.js} +0 -0
- /package/dist/esm/modules/archive/{compression/crc32.base.js → crc32.base.js} +0 -0
- /package/dist/esm/modules/archive/{compression/crc32.browser.js → crc32.browser.js} +0 -0
- /package/dist/esm/modules/archive/{unzip/extract.js → extract.js} +0 -0
- /package/dist/esm/modules/archive/{compression/streaming-compress.base.js → streaming-compress.base.js} +0 -0
- /package/dist/esm/modules/archive/{zip-spec/zip-entry-info.js → zip-entry-info.js} +0 -0
- /package/dist/types/modules/archive/{compression/compress.base.d.ts → compress.base.d.ts} +0 -0
- /package/dist/types/modules/archive/{compression/compress.d.ts → compress.d.ts} +0 -0
- /package/dist/types/modules/archive/{compression/crc32.base.d.ts → crc32.base.d.ts} +0 -0
- /package/dist/types/modules/archive/{compression/crc32.browser.d.ts → crc32.browser.d.ts} +0 -0
- /package/dist/types/modules/archive/{compression/crc32.d.ts → crc32.d.ts} +0 -0
- /package/dist/types/modules/archive/{compression/deflate-fallback.d.ts → deflate-fallback.d.ts} +0 -0
- /package/dist/types/modules/archive/{unzip/extract.d.ts → extract.d.ts} +0 -0
- /package/dist/types/modules/archive/{compression/streaming-compress.base.d.ts → streaming-compress.base.d.ts} +0 -0
- /package/dist/types/modules/archive/{compression/streaming-compress.d.ts → streaming-compress.d.ts} +0 -0
- /package/dist/types/modules/archive/{zip-spec/zip-entry-info.d.ts → zip-entry-info.d.ts} +0 -0
|
@@ -16,34 +16,20 @@ export class Writable extends NodeWritable {
|
|
|
16
16
|
constructor(options) {
|
|
17
17
|
// If wrapping an existing stream, proxy to it
|
|
18
18
|
if (options?.stream) {
|
|
19
|
-
const underlying = options.stream;
|
|
20
19
|
// Create a pass-through wrapper that proxies to the underlying stream
|
|
21
20
|
super({
|
|
22
21
|
highWaterMark: options?.highWaterMark,
|
|
23
22
|
objectMode: options?.objectMode,
|
|
24
23
|
write(chunk, encoding, callback) {
|
|
25
|
-
|
|
24
|
+
options.stream.write(chunk, encoding, callback);
|
|
26
25
|
},
|
|
27
26
|
final(callback) {
|
|
28
|
-
|
|
27
|
+
options.stream.end(callback);
|
|
29
28
|
}
|
|
30
29
|
});
|
|
31
|
-
// Proxy events from underlying stream
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.emit("error", err);
|
|
35
|
-
};
|
|
36
|
-
const onUnderlyingClose = () => {
|
|
37
|
-
this.emit("close");
|
|
38
|
-
};
|
|
39
|
-
const cleanup = () => {
|
|
40
|
-
underlying.off("error", onUnderlyingError);
|
|
41
|
-
underlying.off("close", onUnderlyingClose);
|
|
42
|
-
};
|
|
43
|
-
underlying.on("error", onUnderlyingError);
|
|
44
|
-
underlying.on("close", onUnderlyingClose);
|
|
45
|
-
this.once("close", cleanup);
|
|
46
|
-
this.once("finish", cleanup);
|
|
30
|
+
// Proxy events from underlying stream
|
|
31
|
+
options.stream.on("error", err => this.emit("error", err));
|
|
32
|
+
options.stream.on("close", () => this.emit("close"));
|
|
47
33
|
}
|
|
48
34
|
else {
|
|
49
35
|
super({
|
|
@@ -71,16 +57,17 @@ export function normalizeWritable(stream) {
|
|
|
71
57
|
if (stream instanceof Writable) {
|
|
72
58
|
return stream;
|
|
73
59
|
}
|
|
74
|
-
// Node.js Writable:
|
|
60
|
+
// Node.js Writable: accept structurally even if typed as unknown.
|
|
75
61
|
if (stream instanceof NodeWritable) {
|
|
76
|
-
return stream;
|
|
62
|
+
return new Writable({ stream: stream });
|
|
77
63
|
}
|
|
78
64
|
// Web WritableStream: detect by getWriter() (avoid relying on global WritableStream).
|
|
79
65
|
if (stream?.getWriter) {
|
|
80
|
-
|
|
66
|
+
const nodeWritable = NodeWritable.fromWeb(stream);
|
|
67
|
+
return new Writable({ stream: nodeWritable });
|
|
81
68
|
}
|
|
82
|
-
// Assume it structurally matches Node's Writable.
|
|
83
|
-
return stream;
|
|
69
|
+
// Assume it structurally matches Node's Writable; wrap for consistent API.
|
|
70
|
+
return new Writable({ stream: stream });
|
|
84
71
|
}
|
|
85
72
|
// Import for internal use
|
|
86
73
|
import { textDecoder } from "./shared.js";
|
|
@@ -193,13 +180,12 @@ export function finished(stream, optionsOrCallback, callback) {
|
|
|
193
180
|
const promise = new Promise((resolve, reject) => {
|
|
194
181
|
const normalizedStream = toNodePipelineStream(stream);
|
|
195
182
|
nodeFinished(normalizedStream, options, (err) => {
|
|
196
|
-
|
|
197
|
-
// If options.error === false, ignore errors and resolve.
|
|
198
|
-
if (err && options?.error !== false) {
|
|
183
|
+
if (err && !(options && options.error)) {
|
|
199
184
|
reject(err);
|
|
200
|
-
return;
|
|
201
185
|
}
|
|
202
|
-
|
|
186
|
+
else {
|
|
187
|
+
resolve();
|
|
188
|
+
}
|
|
203
189
|
});
|
|
204
190
|
});
|
|
205
191
|
if (cb) {
|
|
@@ -547,28 +533,13 @@ export function addAbortSignal(signal, stream) {
|
|
|
547
533
|
stream.destroy(new Error("Aborted"));
|
|
548
534
|
return stream;
|
|
549
535
|
}
|
|
550
|
-
const cleanup = () => {
|
|
551
|
-
signal.removeEventListener("abort", onAbort);
|
|
552
|
-
stream.off?.("close", onDone);
|
|
553
|
-
stream.off?.("end", onDone);
|
|
554
|
-
stream.off?.("finish", onDone);
|
|
555
|
-
stream.off?.("error", onError);
|
|
556
|
-
};
|
|
557
536
|
const onAbort = () => {
|
|
558
|
-
cleanup();
|
|
559
537
|
stream.destroy(new Error("Aborted"));
|
|
560
538
|
};
|
|
561
|
-
const onDone = () => {
|
|
562
|
-
cleanup();
|
|
563
|
-
};
|
|
564
|
-
const onError = () => {
|
|
565
|
-
cleanup();
|
|
566
|
-
};
|
|
567
539
|
signal.addEventListener("abort", onAbort, { once: true });
|
|
568
|
-
stream.
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
stream.once?.("error", onError);
|
|
540
|
+
stream.on("close", () => {
|
|
541
|
+
signal.removeEventListener("abort", onAbort);
|
|
542
|
+
});
|
|
572
543
|
return stream;
|
|
573
544
|
}
|
|
574
545
|
/**
|
|
@@ -611,109 +582,56 @@ export function compose(...transforms) {
|
|
|
611
582
|
if (len === 1 && isNativeTransform(transforms[0])) {
|
|
612
583
|
return transforms[0];
|
|
613
584
|
}
|
|
614
|
-
// Chain all transforms together
|
|
585
|
+
// Chain all transforms together
|
|
615
586
|
for (let i = 0; i < len - 1; i++) {
|
|
616
587
|
transforms[i].pipe(transforms[i + 1]);
|
|
617
588
|
}
|
|
589
|
+
// Create a Duplex that writes to first and reads from last
|
|
618
590
|
const first = transforms[0];
|
|
619
591
|
const last = transforms[len - 1];
|
|
620
|
-
//
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
while (true) {
|
|
630
|
-
const chunk = output.read();
|
|
631
|
-
if (chunk === null) {
|
|
632
|
-
break;
|
|
633
|
-
}
|
|
634
|
-
if (!target.push(chunk)) {
|
|
635
|
-
break;
|
|
636
|
-
}
|
|
592
|
+
// Create a PassThrough as the composed stream
|
|
593
|
+
const composed = new PassThrough({ objectMode: first.readableObjectMode });
|
|
594
|
+
// Store original methods for forwarding
|
|
595
|
+
const passthroughWrite = composed.write.bind(composed);
|
|
596
|
+
const passthroughEnd = composed.end.bind(composed);
|
|
597
|
+
// Override write to write to first transform
|
|
598
|
+
composed.write = function (chunk, encodingOrCallback, callback) {
|
|
599
|
+
if (typeof encodingOrCallback === "function") {
|
|
600
|
+
return first.write(chunk, encodingOrCallback);
|
|
637
601
|
}
|
|
602
|
+
return first.write(chunk, encodingOrCallback, callback);
|
|
638
603
|
};
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
try {
|
|
644
|
-
// Forward writes into the head of the chain.
|
|
645
|
-
first.write(chunk, encoding, callback);
|
|
646
|
-
}
|
|
647
|
-
catch (err) {
|
|
648
|
-
callback(err);
|
|
649
|
-
}
|
|
650
|
-
},
|
|
651
|
-
flush(callback) {
|
|
652
|
-
// End the head of the chain; readable completion is driven by `output` ending.
|
|
653
|
-
const onFinish = () => {
|
|
654
|
-
cleanupFlush();
|
|
655
|
-
callback();
|
|
656
|
-
};
|
|
657
|
-
const onError = (err) => {
|
|
658
|
-
cleanupFlush();
|
|
659
|
-
callback(err);
|
|
660
|
-
};
|
|
661
|
-
const cleanupFlush = () => {
|
|
662
|
-
first.off?.("finish", onFinish);
|
|
663
|
-
first.off?.("error", onError);
|
|
664
|
-
};
|
|
665
|
-
first.once?.("finish", onFinish);
|
|
666
|
-
first.once?.("error", onError);
|
|
667
|
-
first.end();
|
|
668
|
-
},
|
|
669
|
-
read() {
|
|
670
|
-
pumpOutput(this);
|
|
671
|
-
},
|
|
672
|
-
destroy(err, callback) {
|
|
673
|
-
try {
|
|
674
|
-
output.destroy(err ?? undefined);
|
|
675
|
-
for (const t of transforms) {
|
|
676
|
-
t.destroy?.(err ?? undefined);
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
finally {
|
|
680
|
-
callback(err);
|
|
681
|
-
}
|
|
604
|
+
// Override end to end first transform
|
|
605
|
+
composed.end = function (chunkOrCallback, encodingOrCallback, callback) {
|
|
606
|
+
if (typeof chunkOrCallback === "function") {
|
|
607
|
+
first.end(chunkOrCallback);
|
|
682
608
|
}
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
cleanupListeners();
|
|
689
|
-
outputEnded = true;
|
|
690
|
-
composed.push(null);
|
|
691
|
-
};
|
|
692
|
-
const onAnyError = (err) => {
|
|
693
|
-
cleanupListeners();
|
|
694
|
-
composed.destroy(err);
|
|
695
|
-
};
|
|
696
|
-
const transformErrorListeners = [];
|
|
697
|
-
const cleanupListeners = () => {
|
|
698
|
-
output.off("readable", onOutputReadable);
|
|
699
|
-
output.off("end", onOutputEnd);
|
|
700
|
-
output.off("error", onAnyError);
|
|
701
|
-
for (const { t, fn } of transformErrorListeners) {
|
|
702
|
-
t.off?.("error", fn);
|
|
609
|
+
else if (typeof encodingOrCallback === "function") {
|
|
610
|
+
first.end(chunkOrCallback, encodingOrCallback);
|
|
611
|
+
}
|
|
612
|
+
else {
|
|
613
|
+
first.end(chunkOrCallback, encodingOrCallback, callback);
|
|
703
614
|
}
|
|
704
|
-
|
|
615
|
+
return composed;
|
|
616
|
+
};
|
|
617
|
+
// Override pipe to pipe from last transform
|
|
618
|
+
composed.pipe = function (dest) {
|
|
619
|
+
return last.pipe(dest);
|
|
705
620
|
};
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
}
|
|
714
|
-
composed.once("close", () => {
|
|
715
|
-
cleanupListeners();
|
|
621
|
+
// Forward data from last to composed
|
|
622
|
+
last.on("data", (chunk) => {
|
|
623
|
+
passthroughWrite(chunk);
|
|
624
|
+
});
|
|
625
|
+
// Forward end from last
|
|
626
|
+
last.on("end", () => {
|
|
627
|
+
passthroughEnd();
|
|
716
628
|
});
|
|
629
|
+
// Forward errors from any transform
|
|
630
|
+
for (const transform of transforms) {
|
|
631
|
+
transform.on("error", (err) => {
|
|
632
|
+
composed.emit("error", err);
|
|
633
|
+
});
|
|
634
|
+
}
|
|
717
635
|
return composed;
|
|
718
636
|
}
|
|
719
637
|
/**
|
|
@@ -794,7 +712,7 @@ export function once(emitter, event, options) {
|
|
|
794
712
|
onAbort();
|
|
795
713
|
return;
|
|
796
714
|
}
|
|
797
|
-
options.signal.addEventListener("abort", onAbort
|
|
715
|
+
options.signal.addEventListener("abort", onAbort);
|
|
798
716
|
}
|
|
799
717
|
});
|
|
800
718
|
}
|
|
@@ -62,6 +62,37 @@ SOFTWARE.
|
|
|
62
62
|
|
|
63
63
|
## Third-party component
|
|
64
64
|
|
|
65
|
+
unzipper is licensed under the MIT License:
|
|
66
|
+
|
|
67
|
+
The MIT License (MIT)
|
|
68
|
+
|
|
69
|
+
Copyright (c) 2012 - 2013 Near Infinity Corporation
|
|
70
|
+
|
|
71
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
72
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
73
|
+
in the Software without restriction, including without limitation the rights
|
|
74
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
75
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
76
|
+
furnished to do so, subject to the following conditions:
|
|
77
|
+
|
|
78
|
+
The above copyright notice and this permission notice shall be included in all
|
|
79
|
+
copies or substantial portions of the Software.
|
|
80
|
+
|
|
81
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
82
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
83
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
84
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
85
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
86
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
87
|
+
SOFTWARE.
|
|
88
|
+
|
|
89
|
+
Commits in this fork are (c) Ziggy Jonsson (ziggy.jonsson.nyc@gmail.com) and
|
|
90
|
+
fall under same licence structure as the original repo (MIT).
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Third-party component
|
|
95
|
+
|
|
65
96
|
saxes is licensed under the ISC License:
|
|
66
97
|
|
|
67
98
|
The ISC License
|