@push.rocks/smartarchive 5.0.0 → 5.1.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.
Files changed (61) hide show
  1. package/dist_ts/00_commitinfo_data.js +2 -2
  2. package/dist_ts/classes.archiveanalyzer.d.ts +1 -1
  3. package/dist_ts/classes.archiveanalyzer.js +34 -4
  4. package/dist_ts/classes.smartarchive.d.ts +151 -54
  5. package/dist_ts/classes.smartarchive.js +484 -234
  6. package/dist_ts/classes.tartools.d.ts +9 -33
  7. package/dist_ts/classes.tartools.js +18 -153
  8. package/dist_ts/index.d.ts +2 -6
  9. package/dist_ts/index.js +7 -11
  10. package/dist_ts/paths.js +1 -1
  11. package/dist_ts/plugins.d.ts +2 -9
  12. package/dist_ts/plugins.js +6 -13
  13. package/npmextra.json +13 -7
  14. package/package.json +23 -14
  15. package/readme.hints.md +69 -23
  16. package/readme.md +360 -274
  17. package/ts/00_commitinfo_data.ts +1 -1
  18. package/ts/classes.archiveanalyzer.ts +33 -5
  19. package/ts/classes.smartarchive.ts +546 -256
  20. package/ts/classes.tartools.ts +20 -177
  21. package/ts/index.ts +7 -11
  22. package/ts/plugins.ts +5 -17
  23. package/{ts → ts_shared}/bzip2/bititerator.ts +1 -1
  24. package/{ts → ts_shared}/bzip2/bzip2.ts +2 -2
  25. package/{ts → ts_shared}/bzip2/index.ts +6 -6
  26. package/ts_shared/classes.bzip2tools.ts +14 -0
  27. package/ts_shared/classes.gziptools.ts +42 -0
  28. package/ts_shared/classes.tartools.ts +89 -0
  29. package/ts_shared/classes.ziptools.ts +107 -0
  30. package/ts_shared/index.ts +17 -0
  31. package/{ts → ts_shared}/interfaces.ts +23 -7
  32. package/ts_shared/plugins.ts +22 -0
  33. package/ts_web/00_commitinfo_data.ts +8 -0
  34. package/ts_web/index.ts +4 -0
  35. package/ts_web/plugins.ts +3 -0
  36. package/dist_ts/bzip2/bititerator.d.ts +0 -6
  37. package/dist_ts/bzip2/bititerator.js +0 -50
  38. package/dist_ts/bzip2/bzip2.d.ts +0 -29
  39. package/dist_ts/bzip2/bzip2.js +0 -398
  40. package/dist_ts/bzip2/index.d.ts +0 -5
  41. package/dist_ts/bzip2/index.js +0 -92
  42. package/dist_ts/classes.bzip2tools.d.ts +0 -7
  43. package/dist_ts/classes.bzip2tools.js +0 -11
  44. package/dist_ts/classes.gziptools.d.ts +0 -49
  45. package/dist_ts/classes.gziptools.js +0 -125
  46. package/dist_ts/classes.ziptools.d.ts +0 -56
  47. package/dist_ts/classes.ziptools.js +0 -185
  48. package/dist_ts/errors.d.ts +0 -44
  49. package/dist_ts/errors.js +0 -62
  50. package/dist_ts/interfaces.d.ts +0 -115
  51. package/dist_ts/interfaces.js +0 -2
  52. package/dist_ts/smartarchive.classes.smartarchive.d.ts +0 -34
  53. package/dist_ts/smartarchive.classes.smartarchive.js +0 -116
  54. package/dist_ts/smartarchive.paths.d.ts +0 -2
  55. package/dist_ts/smartarchive.paths.js +0 -4
  56. package/dist_ts/smartarchive.plugins.d.ts +0 -14
  57. package/dist_ts/smartarchive.plugins.js +0 -19
  58. package/ts/classes.bzip2tools.ts +0 -16
  59. package/ts/classes.gziptools.ts +0 -143
  60. package/ts/classes.ziptools.ts +0 -209
  61. /package/{ts → ts_shared}/errors.ts +0 -0
@@ -1,92 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- import { Bzip2Error, BZIP2_ERROR_CODES } from '../errors.js';
3
- import { Bzip2 } from './bzip2.js';
4
- import { bitIterator } from './bititerator.js';
5
- /**
6
- * Creates a streaming BZIP2 decompression transform
7
- */
8
- export function unbzip2Stream() {
9
- const bzip2Instance = new Bzip2();
10
- const bufferQueue = [];
11
- let hasBytes = 0;
12
- let blockSize = 0;
13
- let broken = false;
14
- let bitReader = null;
15
- let streamCRC = null;
16
- function decompressBlock() {
17
- if (!blockSize) {
18
- blockSize = bzip2Instance.header(bitReader);
19
- streamCRC = 0;
20
- return undefined;
21
- }
22
- const bufsize = 100000 * blockSize;
23
- const buf = new Int32Array(bufsize);
24
- const chunk = [];
25
- const outputFunc = (b) => {
26
- chunk.push(b);
27
- };
28
- streamCRC = bzip2Instance.decompress(bitReader, outputFunc, buf, bufsize, streamCRC);
29
- if (streamCRC === null) {
30
- // Reset for next bzip2 header
31
- blockSize = 0;
32
- return undefined;
33
- }
34
- return Buffer.from(chunk);
35
- }
36
- let outlength = 0;
37
- const decompressAndPush = async () => {
38
- if (broken)
39
- return undefined;
40
- try {
41
- const resultChunk = decompressBlock();
42
- if (resultChunk) {
43
- outlength += resultChunk.length;
44
- }
45
- return resultChunk;
46
- }
47
- catch (e) {
48
- broken = true;
49
- if (e instanceof Error) {
50
- throw new Bzip2Error(`Decompression failed: ${e.message}`, BZIP2_ERROR_CODES.INVALID_BLOCK_DATA);
51
- }
52
- throw e;
53
- }
54
- };
55
- return new plugins.smartstream.SmartDuplex({
56
- objectMode: true,
57
- name: 'bzip2',
58
- highWaterMark: 1,
59
- writeFunction: async function (data, streamTools) {
60
- bufferQueue.push(data);
61
- hasBytes += data.length;
62
- if (bitReader === null) {
63
- bitReader = bitIterator(function () {
64
- return bufferQueue.shift();
65
- });
66
- }
67
- const threshold = 25000 + 100000 * blockSize || 4;
68
- while (!broken && hasBytes - bitReader.bytesRead + 1 >= threshold) {
69
- const result = await decompressAndPush();
70
- if (!result) {
71
- continue;
72
- }
73
- await streamTools.push(result);
74
- }
75
- return null;
76
- },
77
- finalFunction: async function (streamTools) {
78
- while (!broken && bitReader && hasBytes > bitReader.bytesRead) {
79
- const result = await decompressAndPush();
80
- if (!result) {
81
- continue;
82
- }
83
- await streamTools.push(result);
84
- }
85
- if (!broken && streamCRC !== null) {
86
- this.emit('error', new Bzip2Error('Input stream ended prematurely', BZIP2_ERROR_CODES.PREMATURE_END));
87
- }
88
- return null;
89
- },
90
- });
91
- }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9iemlwMi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzdELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWE7SUFDM0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUNsQyxNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUM7SUFDakMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNsQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsSUFBSSxTQUFTLEdBQXNCLElBQUksQ0FBQztJQUN4QyxJQUFJLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBRXBDLFNBQVMsZUFBZTtRQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixTQUFTLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFVLENBQUMsQ0FBQztZQUM3QyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBRTNCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBUyxFQUFRLEVBQUU7WUFDckMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztR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
@@ -1,7 +0,0 @@
1
- import type { SmartArchive } from './classes.smartarchive.js';
2
- import * as plugins from './plugins.js';
3
- export declare class Bzip2Tools {
4
- smartArchiveRef: SmartArchive;
5
- constructor(smartArchiveRefArg: SmartArchive);
6
- getDecompressionStream(): plugins.smartstream.SmartDuplex<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>;
7
- }
@@ -1,11 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import { unbzip2Stream } from './bzip2/index.js';
3
- export class Bzip2Tools {
4
- constructor(smartArchiveRefArg) {
5
- this.smartArchiveRef = smartArchiveRefArg;
6
- }
7
- getDecompressionStream() {
8
- return unbzip2Stream();
9
- }
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5iemlwMnRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5iemlwMnRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxNQUFNLE9BQU8sVUFBVTtJQUdyQixZQUFZLGtCQUFnQztRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBQ0YifQ==
@@ -1,49 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import type { TCompressionLevel } from './interfaces.js';
3
- /**
4
- * Transform stream for GZIP compression using fflate
5
- */
6
- export declare class GzipCompressionTransform extends plugins.stream.Transform {
7
- private gzip;
8
- constructor(level?: TCompressionLevel);
9
- _transform(chunk: Buffer, encoding: BufferEncoding, callback: plugins.stream.TransformCallback): void;
10
- _flush(callback: plugins.stream.TransformCallback): void;
11
- }
12
- /**
13
- * Transform stream for GZIP decompression using fflate
14
- */
15
- export declare class GzipDecompressionTransform extends plugins.stream.Transform {
16
- private gunzip;
17
- constructor();
18
- _transform(chunk: Buffer, encoding: BufferEncoding, callback: plugins.stream.TransformCallback): void;
19
- _flush(callback: plugins.stream.TransformCallback): void;
20
- }
21
- /**
22
- * GZIP compression and decompression utilities
23
- */
24
- export declare class GzipTools {
25
- /**
26
- * Get a streaming compression transform
27
- */
28
- getCompressionStream(level?: TCompressionLevel): plugins.stream.Transform;
29
- /**
30
- * Get a streaming decompression transform
31
- */
32
- getDecompressionStream(): plugins.stream.Transform;
33
- /**
34
- * Compress data synchronously
35
- */
36
- compressSync(data: Buffer, level?: TCompressionLevel): Buffer;
37
- /**
38
- * Decompress data synchronously
39
- */
40
- decompressSync(data: Buffer): Buffer;
41
- /**
42
- * Compress data asynchronously
43
- */
44
- compress(data: Buffer, level?: TCompressionLevel): Promise<Buffer>;
45
- /**
46
- * Decompress data asynchronously
47
- */
48
- decompress(data: Buffer): Promise<Buffer>;
49
- }
@@ -1,125 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- /**
3
- * Transform stream for GZIP compression using fflate
4
- */
5
- export class GzipCompressionTransform extends plugins.stream.Transform {
6
- constructor(level = 6) {
7
- super();
8
- // Create a streaming Gzip compressor
9
- this.gzip = new plugins.fflate.Gzip({ level }, (chunk, final) => {
10
- this.push(Buffer.from(chunk));
11
- if (final) {
12
- this.push(null);
13
- }
14
- });
15
- }
16
- _transform(chunk, encoding, callback) {
17
- try {
18
- this.gzip.push(chunk, false);
19
- callback();
20
- }
21
- catch (err) {
22
- callback(err);
23
- }
24
- }
25
- _flush(callback) {
26
- try {
27
- this.gzip.push(new Uint8Array(0), true);
28
- callback();
29
- }
30
- catch (err) {
31
- callback(err);
32
- }
33
- }
34
- }
35
- /**
36
- * Transform stream for GZIP decompression using fflate
37
- */
38
- export class GzipDecompressionTransform extends plugins.stream.Transform {
39
- constructor() {
40
- super();
41
- // Create a streaming Gunzip decompressor
42
- this.gunzip = new plugins.fflate.Gunzip((chunk, final) => {
43
- this.push(Buffer.from(chunk));
44
- if (final) {
45
- this.push(null);
46
- }
47
- });
48
- }
49
- _transform(chunk, encoding, callback) {
50
- try {
51
- this.gunzip.push(chunk, false);
52
- callback();
53
- }
54
- catch (err) {
55
- callback(err);
56
- }
57
- }
58
- _flush(callback) {
59
- try {
60
- this.gunzip.push(new Uint8Array(0), true);
61
- callback();
62
- }
63
- catch (err) {
64
- callback(err);
65
- }
66
- }
67
- }
68
- /**
69
- * GZIP compression and decompression utilities
70
- */
71
- export class GzipTools {
72
- /**
73
- * Get a streaming compression transform
74
- */
75
- getCompressionStream(level) {
76
- return new GzipCompressionTransform(level);
77
- }
78
- /**
79
- * Get a streaming decompression transform
80
- */
81
- getDecompressionStream() {
82
- return new GzipDecompressionTransform();
83
- }
84
- /**
85
- * Compress data synchronously
86
- */
87
- compressSync(data, level) {
88
- const options = level !== undefined ? { level } : undefined;
89
- return Buffer.from(plugins.fflate.gzipSync(data, options));
90
- }
91
- /**
92
- * Decompress data synchronously
93
- */
94
- decompressSync(data) {
95
- return Buffer.from(plugins.fflate.gunzipSync(data));
96
- }
97
- /**
98
- * Compress data asynchronously
99
- */
100
- async compress(data, level) {
101
- return new Promise((resolve, reject) => {
102
- const options = level !== undefined ? { level } : undefined;
103
- plugins.fflate.gzip(data, options, (err, result) => {
104
- if (err)
105
- reject(err);
106
- else
107
- resolve(Buffer.from(result));
108
- });
109
- });
110
- }
111
- /**
112
- * Decompress data asynchronously
113
- */
114
- async decompress(data) {
115
- return new Promise((resolve, reject) => {
116
- plugins.fflate.gunzip(data, (err, result) => {
117
- if (err)
118
- reject(err);
119
- else
120
- resolve(Buffer.from(result));
121
- });
122
- });
123
- }
124
- }
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5nemlwdG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmd6aXB0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUd4Qzs7R0FFRztBQUNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVM7SUFHcEUsWUFBWSxRQUEyQixDQUFDO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRVIscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUNSLEtBQWEsRUFDYixRQUF3QixFQUN4QixRQUEwQztRQUUxQyxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0IsUUFBUSxFQUFFLENBQUM7UUFDYixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxHQUFZLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUEwQztRQUMvQyxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMs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QyxHQUFHLENBQUMsQ0FBQzs7b0JBQ2hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBWTtRQUNsQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDMUMsSUFBSSxHQUFHO29CQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzs7b0JBQ2hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
@@ -1,56 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import type { IArchiveEntry, TCompressionLevel } from './interfaces.js';
3
- /**
4
- * Transform stream for ZIP decompression using fflate
5
- * Emits StreamFile objects for each file in the archive
6
- */
7
- export declare class ZipDecompressionTransform extends plugins.smartstream.SmartDuplex<Buffer, plugins.smartfile.StreamFile> {
8
- private streamtools;
9
- private unzipper;
10
- constructor();
11
- }
12
- /**
13
- * Streaming ZIP compression using fflate
14
- * Allows adding multiple entries before finalizing
15
- */
16
- export declare class ZipCompressionStream extends plugins.stream.Duplex {
17
- private files;
18
- private finalized;
19
- constructor();
20
- /**
21
- * Add a file entry to the ZIP archive
22
- */
23
- addEntry(fileName: string, content: Buffer | plugins.stream.Readable, options?: {
24
- compressionLevel?: TCompressionLevel;
25
- }): Promise<void>;
26
- /**
27
- * Finalize the ZIP archive and emit the compressed data
28
- */
29
- finalize(): Promise<void>;
30
- _read(): void;
31
- _write(_chunk: Buffer, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
32
- }
33
- /**
34
- * ZIP compression and decompression utilities
35
- */
36
- export declare class ZipTools {
37
- /**
38
- * Get a streaming compression object for creating ZIP archives
39
- */
40
- getCompressionStream(): ZipCompressionStream;
41
- /**
42
- * Get a streaming decompression transform for extracting ZIP archives
43
- */
44
- getDecompressionStream(): ZipDecompressionTransform;
45
- /**
46
- * Create a ZIP archive from an array of entries
47
- */
48
- createZip(entries: IArchiveEntry[], compressionLevel?: TCompressionLevel): Promise<Buffer>;
49
- /**
50
- * Extract a ZIP buffer to an array of entries
51
- */
52
- extractZip(data: Buffer): Promise<Array<{
53
- path: string;
54
- content: Buffer;
55
- }>>;
56
- }
@@ -1,185 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- /**
3
- * Transform stream for ZIP decompression using fflate
4
- * Emits StreamFile objects for each file in the archive
5
- */
6
- export class ZipDecompressionTransform extends plugins.smartstream.SmartDuplex {
7
- constructor() {
8
- super({
9
- objectMode: true,
10
- writeFunction: async (chunkArg, streamtoolsArg) => {
11
- this.streamtools ? null : (this.streamtools = streamtoolsArg);
12
- this.unzipper.push(Buffer.isBuffer(chunkArg) ? chunkArg : Buffer.from(chunkArg), false);
13
- return null;
14
- },
15
- finalFunction: async () => {
16
- this.unzipper.push(Buffer.from(''), true);
17
- await plugins.smartdelay.delayFor(0);
18
- await this.streamtools.push(null);
19
- return null;
20
- },
21
- });
22
- this.unzipper = new plugins.fflate.Unzip(async (fileArg) => {
23
- let resultBuffer;
24
- fileArg.ondata = async (_flateError, dat, final) => {
25
- resultBuffer
26
- ? (resultBuffer = Buffer.concat([resultBuffer, Buffer.from(dat)]))
27
- : (resultBuffer = Buffer.from(dat));
28
- if (final) {
29
- const streamFile = plugins.smartfile.StreamFile.fromBuffer(resultBuffer);
30
- streamFile.relativeFilePath = fileArg.name;
31
- this.streamtools.push(streamFile);
32
- }
33
- };
34
- fileArg.start();
35
- });
36
- this.unzipper.register(plugins.fflate.UnzipInflate);
37
- }
38
- }
39
- /**
40
- * Streaming ZIP compression using fflate
41
- * Allows adding multiple entries before finalizing
42
- */
43
- export class ZipCompressionStream extends plugins.stream.Duplex {
44
- constructor() {
45
- super();
46
- this.files = new Map();
47
- this.finalized = false;
48
- }
49
- /**
50
- * Add a file entry to the ZIP archive
51
- */
52
- async addEntry(fileName, content, options) {
53
- if (this.finalized) {
54
- throw new Error('Cannot add entries to a finalized ZIP archive');
55
- }
56
- let data;
57
- if (Buffer.isBuffer(content)) {
58
- data = content;
59
- }
60
- else {
61
- // Collect stream to buffer
62
- const chunks = [];
63
- for await (const chunk of content) {
64
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
65
- }
66
- data = Buffer.concat(chunks);
67
- }
68
- this.files.set(fileName, {
69
- data: new Uint8Array(data),
70
- options: options?.compressionLevel !== undefined ? { level: options.compressionLevel } : undefined,
71
- });
72
- }
73
- /**
74
- * Finalize the ZIP archive and emit the compressed data
75
- */
76
- async finalize() {
77
- if (this.finalized) {
78
- return;
79
- }
80
- this.finalized = true;
81
- const filesObj = {};
82
- for (const [name, { data, options }] of this.files) {
83
- filesObj[name] = options ? [data, options] : data;
84
- }
85
- return new Promise((resolve, reject) => {
86
- plugins.fflate.zip(filesObj, (err, result) => {
87
- if (err) {
88
- reject(err);
89
- }
90
- else {
91
- this.push(Buffer.from(result));
92
- this.push(null);
93
- resolve();
94
- }
95
- });
96
- });
97
- }
98
- _read() {
99
- // No-op: data is pushed when finalize() is called
100
- }
101
- _write(_chunk, _encoding, callback) {
102
- // Not used for ZIP creation - use addEntry() instead
103
- callback(new Error('Use addEntry() to add files to the ZIP archive'));
104
- }
105
- }
106
- /**
107
- * ZIP compression and decompression utilities
108
- */
109
- export class ZipTools {
110
- /**
111
- * Get a streaming compression object for creating ZIP archives
112
- */
113
- getCompressionStream() {
114
- return new ZipCompressionStream();
115
- }
116
- /**
117
- * Get a streaming decompression transform for extracting ZIP archives
118
- */
119
- getDecompressionStream() {
120
- return new ZipDecompressionTransform();
121
- }
122
- /**
123
- * Create a ZIP archive from an array of entries
124
- */
125
- async createZip(entries, compressionLevel) {
126
- const filesObj = {};
127
- for (const entry of entries) {
128
- let data;
129
- if (typeof entry.content === 'string') {
130
- data = new TextEncoder().encode(entry.content);
131
- }
132
- else if (Buffer.isBuffer(entry.content)) {
133
- data = new Uint8Array(entry.content);
134
- }
135
- else if (entry.content instanceof plugins.smartfile.SmartFile) {
136
- data = new Uint8Array(entry.content.contents);
137
- }
138
- else if (entry.content instanceof plugins.smartfile.StreamFile) {
139
- const buffer = await entry.content.getContentAsBuffer();
140
- data = new Uint8Array(buffer);
141
- }
142
- else {
143
- // Readable stream
144
- const chunks = [];
145
- for await (const chunk of entry.content) {
146
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
147
- }
148
- data = new Uint8Array(Buffer.concat(chunks));
149
- }
150
- if (compressionLevel !== undefined) {
151
- filesObj[entry.archivePath] = [data, { level: compressionLevel }];
152
- }
153
- else {
154
- filesObj[entry.archivePath] = data;
155
- }
156
- }
157
- return new Promise((resolve, reject) => {
158
- plugins.fflate.zip(filesObj, (err, result) => {
159
- if (err)
160
- reject(err);
161
- else
162
- resolve(Buffer.from(result));
163
- });
164
- });
165
- }
166
- /**
167
- * Extract a ZIP buffer to an array of entries
168
- */
169
- async extractZip(data) {
170
- return new Promise((resolve, reject) => {
171
- plugins.fflate.unzip(data, (err, result) => {
172
- if (err) {
173
- reject(err);
174
- return;
175
- }
176
- const entries = [];
177
- for (const [path, content] of Object.entries(result)) {
178
- entries.push({ path, content: Buffer.from(content) });
179
- }
180
- resolve(entries);
181
- });
182
- });
183
- }
184
- }
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy56aXB0b29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuemlwdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFHeEM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHlCQUEwQixTQUFRLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBaUQ7SUFpQmxIO1FBQ0UsS0FBSyxDQUFDO1lBQ0osVUFBVSxFQUFFLElBQUk7WUFDaEIsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQWtDLENBQUMsRUFDdEYsS0FBSyxDQUNOLENBQUM7Z0JBQ0YsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsYUFBYSxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMxQyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7U0FDRixDQUFDLENBQUM7UUFoQ0csYUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQzVELElBQUksWUFBb0IsQ0FBQztZQUN6QixPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNqRCxZQUFZO29CQUNWLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNsRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDekUsVUFBVSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDO1lBQ0YsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBb0JELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTTtJQUk3RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBSkYsVUFBSyxHQUEyRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzFGLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFJMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FDbkIsUUFBZ0IsRUFDaEIsT0FBeUMsRUFDekMsT0FBa0Q7UUFFbEQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxJQUFJLElBQVksQ0FBQztRQUNqQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ04sMkJBQTJCO1lBQzNCLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztZQUM1QixJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDO1lBQ0QsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUN2QixJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNuRyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsUUFBUTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLE1BQU0sUUFBUSxHQUE0QixFQUFFLENBQUM7UUFDN0MsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25ELFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDcEQsQ0FBQztRQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUMzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDSCxrREFBa0Q7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FDSixNQUFjLEVBQ2QsU0FBeUIsRUFDekIsUUFBd0M7UUFFeEMscURBQXFEO1FBQ3JELFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUNuQjs7T0FFRztJQUNJLG9CQUFvQjtRQUN6QixPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLHlCQUF5QixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUF3QixFQUFFLGdCQUFvQztRQUNuRixNQUFNLFFBQVEsR0FBNEIsRUFBRSxDQUFDO1FBRTdDLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxJQUFnQixDQUFDO1lBRXJCLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxZQUFZLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hFLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxZQUFZLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGtCQUFrQjtnQkFDbEIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO2dCQUM1QixJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBa0MsRUFBRSxDQUFDO29CQUNuRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO2dCQUNELElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ25DLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUMzQyxJQUFJLEdBQUc7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDOztvQkFDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQ2xDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN6QyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDWixPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxPQUFPLEdBQTZDLEVBQUUsQ0FBQztnQkFDN0QsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELENBQUM7Z0JBQ0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
@@ -1,44 +0,0 @@
1
- /**
2
- * Base error class for smartarchive
3
- */
4
- export declare class SmartArchiveError extends Error {
5
- readonly code: string;
6
- constructor(message: string, code: string);
7
- }
8
- /**
9
- * BZIP2-specific decompression errors
10
- */
11
- export declare class Bzip2Error extends SmartArchiveError {
12
- constructor(message: string, code?: string);
13
- }
14
- /**
15
- * Archive format detection errors
16
- */
17
- export declare class ArchiveFormatError extends SmartArchiveError {
18
- constructor(message: string);
19
- }
20
- /**
21
- * Stream processing errors
22
- */
23
- export declare class StreamError extends SmartArchiveError {
24
- constructor(message: string);
25
- }
26
- /**
27
- * BZIP2 error codes for programmatic error handling
28
- */
29
- export declare const BZIP2_ERROR_CODES: {
30
- readonly NO_MAGIC_NUMBER: "BZIP2_NO_MAGIC";
31
- readonly INVALID_ARCHIVE: "BZIP2_INVALID_ARCHIVE";
32
- readonly CRC_MISMATCH: "BZIP2_CRC_MISMATCH";
33
- readonly INVALID_BLOCK_DATA: "BZIP2_INVALID_BLOCK";
34
- readonly BUFFER_OVERFLOW: "BZIP2_BUFFER_OVERFLOW";
35
- readonly INVALID_HUFFMAN: "BZIP2_INVALID_HUFFMAN";
36
- readonly INVALID_SELECTOR: "BZIP2_INVALID_SELECTOR";
37
- readonly INVALID_POSITION: "BZIP2_INVALID_POSITION";
38
- readonly PREMATURE_END: "BZIP2_PREMATURE_END";
39
- };
40
- export type TBzip2ErrorCode = typeof BZIP2_ERROR_CODES[keyof typeof BZIP2_ERROR_CODES];
41
- /**
42
- * Throw a BZIP2 error with a specific code
43
- */
44
- export declare function throwBzip2Error(message: string, code: TBzip2ErrorCode): never;
package/dist_ts/errors.js DELETED
@@ -1,62 +0,0 @@
1
- /**
2
- * Base error class for smartarchive
3
- */
4
- export class SmartArchiveError extends Error {
5
- constructor(message, code) {
6
- super(message);
7
- this.name = 'SmartArchiveError';
8
- this.code = code;
9
- // Maintains proper stack trace for where error was thrown (V8)
10
- if (Error.captureStackTrace) {
11
- Error.captureStackTrace(this, this.constructor);
12
- }
13
- }
14
- }
15
- /**
16
- * BZIP2-specific decompression errors
17
- */
18
- export class Bzip2Error extends SmartArchiveError {
19
- constructor(message, code = 'BZIP2_ERROR') {
20
- super(message, code);
21
- this.name = 'Bzip2Error';
22
- }
23
- }
24
- /**
25
- * Archive format detection errors
26
- */
27
- export class ArchiveFormatError extends SmartArchiveError {
28
- constructor(message) {
29
- super(message, 'ARCHIVE_FORMAT_ERROR');
30
- this.name = 'ArchiveFormatError';
31
- }
32
- }
33
- /**
34
- * Stream processing errors
35
- */
36
- export class StreamError extends SmartArchiveError {
37
- constructor(message) {
38
- super(message, 'STREAM_ERROR');
39
- this.name = 'StreamError';
40
- }
41
- }
42
- /**
43
- * BZIP2 error codes for programmatic error handling
44
- */
45
- export const BZIP2_ERROR_CODES = {
46
- NO_MAGIC_NUMBER: 'BZIP2_NO_MAGIC',
47
- INVALID_ARCHIVE: 'BZIP2_INVALID_ARCHIVE',
48
- CRC_MISMATCH: 'BZIP2_CRC_MISMATCH',
49
- INVALID_BLOCK_DATA: 'BZIP2_INVALID_BLOCK',
50
- BUFFER_OVERFLOW: 'BZIP2_BUFFER_OVERFLOW',
51
- INVALID_HUFFMAN: 'BZIP2_INVALID_HUFFMAN',
52
- INVALID_SELECTOR: 'BZIP2_INVALID_SELECTOR',
53
- INVALID_POSITION: 'BZIP2_INVALID_POSITION',
54
- PREMATURE_END: 'BZIP2_PREMATURE_END',
55
- };
56
- /**
57
- * Throw a BZIP2 error with a specific code
58
- */
59
- export function throwBzip2Error(message, code) {
60
- throw new Bzip2Error(message, code);
61
- }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFrQixTQUFRLEtBQUs7SUFHMUMsWUFBWSxPQUFlLEVBQUUsSUFBWTtRQUN2QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLCtEQUErRDtRQUMvRCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsaUJBQWlCO0lBQy9DLFlBQVksT0FBZSxFQUFFLE9BQWUsYUFBYTtRQUN2RCxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQUN2RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLGlCQUFpQjtJQUNoRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLGVBQWUsRUFBRSxnQkFBZ0I7SUFDakMsZUFBZSxFQUFFLHVCQUF1QjtJQUN4QyxZQUFZLEVBQUUsb0JBQW9CO0lBQ2xDLGtCQUFrQixFQUFFLHFCQUFxQjtJQUN6QyxlQUFlLEVBQUUsdUJBQXVCO0lBQ3hDLGVBQWUsRUFBRSx1QkFBdUI7SUFDeEMsZ0JBQWdCLEVBQUUsd0JBQXdCO0lBQzFDLGdCQUFnQixFQUFFLHdCQUF3QjtJQUMxQyxhQUFhLEVBQUUscUJBQXFCO0NBQzVCLENBQUM7QUFJWDs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBZSxFQUFFLElBQXFCO0lBQ3BFLE1BQU0sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUMifQ==