node-liblzma 2.2.0 → 3.0.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 (48) hide show
  1. package/README.md +379 -778
  2. package/lib/cli/nxz.js +176 -84
  3. package/lib/cli/nxz.js.map +1 -1
  4. package/lib/lzma.browser.d.ts +24 -0
  5. package/lib/lzma.browser.d.ts.map +1 -0
  6. package/lib/lzma.browser.js +30 -0
  7. package/lib/lzma.browser.js.map +1 -0
  8. package/lib/lzma.inline.d.ts +30 -0
  9. package/lib/lzma.inline.d.ts.map +1 -0
  10. package/lib/lzma.inline.js +68 -0
  11. package/lib/lzma.inline.js.map +1 -0
  12. package/lib/wasm/bindings.d.ts +109 -0
  13. package/lib/wasm/bindings.d.ts.map +1 -0
  14. package/lib/wasm/bindings.js +307 -0
  15. package/lib/wasm/bindings.js.map +1 -0
  16. package/lib/wasm/compress.d.ts +32 -0
  17. package/lib/wasm/compress.d.ts.map +1 -0
  18. package/lib/wasm/compress.js +47 -0
  19. package/lib/wasm/compress.js.map +1 -0
  20. package/lib/wasm/decompress.d.ts +32 -0
  21. package/lib/wasm/decompress.d.ts.map +1 -0
  22. package/lib/wasm/decompress.js +45 -0
  23. package/lib/wasm/decompress.js.map +1 -0
  24. package/lib/wasm/index.d.ts +14 -0
  25. package/lib/wasm/index.d.ts.map +1 -0
  26. package/lib/wasm/index.js +18 -0
  27. package/lib/wasm/index.js.map +1 -0
  28. package/lib/wasm/liblzma.inline.d.ts +10 -0
  29. package/lib/wasm/liblzma.inline.d.ts.map +1 -0
  30. package/lib/wasm/liblzma.inline.js +10 -0
  31. package/lib/wasm/liblzma.inline.js.map +1 -0
  32. package/lib/wasm/memory.d.ts +57 -0
  33. package/lib/wasm/memory.d.ts.map +1 -0
  34. package/lib/wasm/memory.js +108 -0
  35. package/lib/wasm/memory.js.map +1 -0
  36. package/lib/wasm/stream.d.ts +35 -0
  37. package/lib/wasm/stream.d.ts.map +1 -0
  38. package/lib/wasm/stream.js +164 -0
  39. package/lib/wasm/stream.js.map +1 -0
  40. package/lib/wasm/types.d.ts +77 -0
  41. package/lib/wasm/types.d.ts.map +1 -0
  42. package/lib/wasm/types.js +55 -0
  43. package/lib/wasm/types.js.map +1 -0
  44. package/lib/wasm/utils.d.ts +62 -0
  45. package/lib/wasm/utils.d.ts.map +1 -0
  46. package/lib/wasm/utils.js +162 -0
  47. package/lib/wasm/utils.js.map +1 -0
  48. package/package.json +24 -3
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Web Streams API for WASM XZ compression/decompression.
3
+ *
4
+ * Returns standard Web TransformStream instances (not Node.js streams).
5
+ * Use `.pipeThrough()` instead of `.pipe()`.
6
+ */
7
+ import { createLZMAError } from '../errors.js';
8
+ import { code, decoderInit, encoderInit, end, getModule } from './bindings.js';
9
+ import { copyFromWasm, copyToWasm, WasmLzmaStream, wasmAlloc, wasmFree } from './memory.js';
10
+ import { LZMA_CHECK_CRC64, LZMA_FINISH, LZMA_OK, LZMA_RUN, LZMA_STREAM_END } from './types.js';
11
+ // Chunk size for streaming I/O (64KB)
12
+ const CHUNK_SIZE = 64 * 1024;
13
+ /**
14
+ * Create a Web TransformStream that compresses data to XZ format.
15
+ *
16
+ * @param opts - Compression options (preset, check)
17
+ * @returns A TransformStream<Uint8Array, Uint8Array>
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const compressed = await new Response(
22
+ * readableStream.pipeThrough(createXz())
23
+ * ).arrayBuffer();
24
+ * ```
25
+ */
26
+ export function createXz(opts) {
27
+ const preset = opts?.preset ?? 6;
28
+ const checkType = opts?.check ?? LZMA_CHECK_CRC64;
29
+ const module = getModule();
30
+ const stream = new WasmLzmaStream(module);
31
+ encoderInit(stream, preset, checkType);
32
+ const outPtr = wasmAlloc(module, CHUNK_SIZE);
33
+ let cleaned = false;
34
+ const doCleanup = () => {
35
+ if (!cleaned) {
36
+ cleaned = true;
37
+ cleanup(module, stream, outPtr);
38
+ }
39
+ };
40
+ return new TransformStream({
41
+ transform(chunk, controller) {
42
+ try {
43
+ processChunk(module, stream, outPtr, chunk, LZMA_RUN, controller);
44
+ }
45
+ catch (e) {
46
+ doCleanup();
47
+ throw e;
48
+ }
49
+ },
50
+ flush(controller) {
51
+ try {
52
+ processChunk(module, stream, outPtr, new Uint8Array(0), LZMA_FINISH, controller);
53
+ }
54
+ finally {
55
+ doCleanup();
56
+ }
57
+ },
58
+ /* cancel() frees WASM resources when the readable side is cancelled.
59
+ Part of the Streams spec but not yet in TypeScript's DOM lib. */
60
+ // @ts-expect-error cancel is a valid Transformer method per Streams spec
61
+ cancel: doCleanup,
62
+ });
63
+ }
64
+ /**
65
+ * Create a Web TransformStream that decompresses XZ data.
66
+ *
67
+ * @returns A TransformStream<Uint8Array, Uint8Array>
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * const decompressed = await new Response(
72
+ * xzStream.pipeThrough(createUnxz())
73
+ * ).arrayBuffer();
74
+ * ```
75
+ */
76
+ export function createUnxz() {
77
+ const module = getModule();
78
+ const stream = new WasmLzmaStream(module);
79
+ decoderInit(stream);
80
+ const outPtr = wasmAlloc(module, CHUNK_SIZE);
81
+ let finished = false;
82
+ let cleaned = false;
83
+ const doCleanup = () => {
84
+ if (!cleaned) {
85
+ cleaned = true;
86
+ cleanup(module, stream, outPtr);
87
+ }
88
+ };
89
+ return new TransformStream({
90
+ transform(chunk, controller) {
91
+ if (finished)
92
+ return;
93
+ try {
94
+ const done = processChunk(module, stream, outPtr, chunk, LZMA_RUN, controller);
95
+ if (done)
96
+ finished = true;
97
+ }
98
+ catch (e) {
99
+ doCleanup();
100
+ throw e;
101
+ }
102
+ },
103
+ flush(controller) {
104
+ try {
105
+ if (!finished) {
106
+ processChunk(module, stream, outPtr, new Uint8Array(0), LZMA_FINISH, controller);
107
+ }
108
+ }
109
+ finally {
110
+ doCleanup();
111
+ }
112
+ },
113
+ /* cancel() frees WASM resources when the readable side is cancelled.
114
+ Part of the Streams spec but not yet in TypeScript's DOM lib. */
115
+ // @ts-expect-error cancel is a valid Transformer method per Streams spec
116
+ cancel: doCleanup,
117
+ });
118
+ }
119
+ /**
120
+ * Process a single chunk through the lzma stream, enqueueing output.
121
+ * Returns true if LZMA_STREAM_END was reached.
122
+ */
123
+ function processChunk(module, stream, outPtr, chunk, action, controller) {
124
+ let inPtr = 0;
125
+ try {
126
+ if (chunk.byteLength > 0) {
127
+ inPtr = copyToWasm(module, chunk);
128
+ stream.setInput(inPtr, chunk.byteLength);
129
+ }
130
+ else {
131
+ stream.setInput(0, 0);
132
+ }
133
+ while (true) {
134
+ stream.setOutput(outPtr, CHUNK_SIZE);
135
+ const ret = code(stream, action);
136
+ const produced = CHUNK_SIZE - stream.availOut;
137
+ if (produced > 0) {
138
+ controller.enqueue(copyFromWasm(module, outPtr, produced));
139
+ }
140
+ if (ret === LZMA_STREAM_END) {
141
+ return true;
142
+ }
143
+ if (ret !== LZMA_OK) {
144
+ throw createLZMAError(ret);
145
+ }
146
+ // If all input consumed and no more output, we're done with this chunk
147
+ if (stream.availIn === 0 && stream.availOut > 0) {
148
+ break;
149
+ }
150
+ }
151
+ return false;
152
+ }
153
+ finally {
154
+ if (inPtr)
155
+ wasmFree(module, inPtr);
156
+ }
157
+ }
158
+ /** Free WASM resources */
159
+ function cleanup(module, stream, outPtr) {
160
+ end(stream);
161
+ stream.free();
162
+ wasmFree(module, outPtr);
163
+ }
164
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/wasm/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * WASM-specific types for the Emscripten-compiled liblzma module.
3
+ */
4
+ /** Emscripten module instance returned by createLZMA() */
5
+ export interface LZMAModule {
6
+ HEAPU8: Uint8Array;
7
+ _malloc(size: number): number;
8
+ _free(ptr: number): void;
9
+ setValue(ptr: number, value: number | bigint, type: string): void;
10
+ getValue(ptr: number, type: string): number;
11
+ ccall(ident: string, returnType: string | null, argTypes: string[], args: unknown[]): unknown;
12
+ cwrap(ident: string, returnType: string | null, argTypes: string[]): (...args: unknown[]) => unknown;
13
+ _lzma_easy_encoder(strm: number, preset: number, check: number): number;
14
+ _lzma_stream_decoder(strm: number, memlimit: bigint, flags: number): number;
15
+ _lzma_auto_decoder(strm: number, memlimit: bigint, flags: number): number;
16
+ _lzma_code(strm: number, action: number): number;
17
+ _lzma_end(strm: number): void;
18
+ _lzma_memusage(strm: number): bigint;
19
+ _lzma_memlimit_set(strm: number, memlimit: bigint): number;
20
+ _lzma_stream_buffer_encode(filters: number, check: number, allocator: number, inBuf: number, inSize: number, outBuf: number, outPos: number, outSize: number): number;
21
+ _lzma_stream_buffer_decode(memlimit: number, flags: number, allocator: number, inBuf: number, inPos: number, inSize: number, outBuf: number, outPos: number, outSize: number): number;
22
+ _lzma_easy_buffer_encode(preset: number, check: number, allocator: number, inBuf: number, inSize: number, outBuf: number, outPos: number, outSize: number): number;
23
+ _lzma_version_string(): number;
24
+ _lzma_check_is_supported(check: number): number;
25
+ _lzma_index_decoder(strm: number, indexPtr: number, memlimit: bigint): number;
26
+ _lzma_index_end(index: number, allocator: number): void;
27
+ _lzma_index_uncompressed_size(index: number): bigint;
28
+ }
29
+ export declare const LZMA_OK = 0;
30
+ export declare const LZMA_STREAM_END = 1;
31
+ export declare const LZMA_NO_CHECK = 2;
32
+ export declare const LZMA_UNSUPPORTED_CHECK = 3;
33
+ export declare const LZMA_GET_CHECK = 4;
34
+ export declare const LZMA_MEM_ERROR = 5;
35
+ export declare const LZMA_MEMLIMIT_ERROR = 6;
36
+ export declare const LZMA_FORMAT_ERROR = 7;
37
+ export declare const LZMA_OPTIONS_ERROR = 8;
38
+ export declare const LZMA_DATA_ERROR = 9;
39
+ export declare const LZMA_BUF_ERROR = 10;
40
+ export declare const LZMA_PROG_ERROR = 11;
41
+ export declare const LZMA_RUN = 0;
42
+ export declare const LZMA_SYNC_FLUSH = 1;
43
+ export declare const LZMA_FULL_FLUSH = 2;
44
+ export declare const LZMA_FINISH = 3;
45
+ export declare const LZMA_CHECK_NONE = 0;
46
+ export declare const LZMA_CHECK_CRC32 = 1;
47
+ export declare const LZMA_CHECK_CRC64 = 4;
48
+ export declare const LZMA_CHECK_SHA256 = 10;
49
+ /**
50
+ * Layout of lzma_stream struct in WASM32 memory.
51
+ *
52
+ * All offsets are for 32-bit Emscripten (WASM32):
53
+ * pointer = 4 bytes, size_t = 4 bytes, uint64_t = 8 bytes (8-byte aligned)
54
+ */
55
+ export declare const LZMA_STREAM_OFFSETS: {
56
+ readonly next_in: 0;
57
+ readonly avail_in: 4;
58
+ readonly total_in: 8;
59
+ readonly next_out: 16;
60
+ readonly avail_out: 20;
61
+ readonly total_out: 24;
62
+ readonly allocator: 32;
63
+ readonly internal: 36;
64
+ readonly reserved_ptr1: 40;
65
+ readonly reserved_ptr2: 44;
66
+ readonly reserved_ptr3: 48;
67
+ readonly reserved_ptr4: 52;
68
+ readonly reserved_int1: 56;
69
+ readonly reserved_int2: 64;
70
+ readonly reserved_int3: 72;
71
+ readonly reserved_int4: 80;
72
+ readonly reserved_enum1: 88;
73
+ readonly reserved_enum2: 92;
74
+ };
75
+ /** Total size of lzma_stream struct in WASM32 */
76
+ export declare const LZMA_STREAM_SIZE = 96;
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/wasm/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * WASM-specific types for the Emscripten-compiled liblzma module.
3
+ */
4
+ // --- LZMA Return Codes ---
5
+ export const LZMA_OK = 0;
6
+ export const LZMA_STREAM_END = 1;
7
+ export const LZMA_NO_CHECK = 2;
8
+ export const LZMA_UNSUPPORTED_CHECK = 3;
9
+ export const LZMA_GET_CHECK = 4;
10
+ export const LZMA_MEM_ERROR = 5;
11
+ export const LZMA_MEMLIMIT_ERROR = 6;
12
+ export const LZMA_FORMAT_ERROR = 7;
13
+ export const LZMA_OPTIONS_ERROR = 8;
14
+ export const LZMA_DATA_ERROR = 9;
15
+ export const LZMA_BUF_ERROR = 10;
16
+ export const LZMA_PROG_ERROR = 11;
17
+ // --- LZMA Actions ---
18
+ export const LZMA_RUN = 0;
19
+ export const LZMA_SYNC_FLUSH = 1;
20
+ export const LZMA_FULL_FLUSH = 2;
21
+ export const LZMA_FINISH = 3;
22
+ // --- Check Types ---
23
+ export const LZMA_CHECK_NONE = 0;
24
+ export const LZMA_CHECK_CRC32 = 1;
25
+ export const LZMA_CHECK_CRC64 = 4;
26
+ export const LZMA_CHECK_SHA256 = 10;
27
+ /**
28
+ * Layout of lzma_stream struct in WASM32 memory.
29
+ *
30
+ * All offsets are for 32-bit Emscripten (WASM32):
31
+ * pointer = 4 bytes, size_t = 4 bytes, uint64_t = 8 bytes (8-byte aligned)
32
+ */
33
+ export const LZMA_STREAM_OFFSETS = {
34
+ next_in: 0, // const uint8_t* (4 bytes)
35
+ avail_in: 4, // size_t (4 bytes)
36
+ total_in: 8, // uint64_t (8 bytes, 8-byte aligned)
37
+ next_out: 16, // uint8_t* (4 bytes)
38
+ avail_out: 20, // size_t (4 bytes)
39
+ total_out: 24, // uint64_t (8 bytes, 8-byte aligned)
40
+ allocator: 32, // lzma_allocator* (4 bytes)
41
+ internal: 36, // lzma_internal* (4 bytes)
42
+ reserved_ptr1: 40,
43
+ reserved_ptr2: 44,
44
+ reserved_ptr3: 48,
45
+ reserved_ptr4: 52,
46
+ reserved_int1: 56, // uint64_t (8 bytes)
47
+ reserved_int2: 64,
48
+ reserved_int3: 72,
49
+ reserved_int4: 80,
50
+ reserved_enum1: 88, // lzma_reserved_enum (4 bytes)
51
+ reserved_enum2: 92,
52
+ };
53
+ /** Total size of lzma_stream struct in WASM32 */
54
+ export const LZMA_STREAM_SIZE = 96;
55
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/wasm/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsEH,4BAA4B;AAE5B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AACzB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,uBAAuB;AAEvB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B,sBAAsB;AAEtB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO,EAAE,CAAC,EAAE,2BAA2B;IACvC,QAAQ,EAAE,CAAC,EAAE,mBAAmB;IAChC,QAAQ,EAAE,CAAC,EAAE,qCAAqC;IAClD,QAAQ,EAAE,EAAE,EAAE,qBAAqB;IACnC,SAAS,EAAE,EAAE,EAAE,mBAAmB;IAClC,SAAS,EAAE,EAAE,EAAE,qCAAqC;IACpD,SAAS,EAAE,EAAE,EAAE,4BAA4B;IAC3C,QAAQ,EAAE,EAAE,EAAE,2BAA2B;IACzC,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE,EAAE,qBAAqB;IACxC,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE,EAAE,+BAA+B;IACnD,cAAc,EAAE,EAAE;CACV,CAAC;AAEX,iDAAiD;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * WASM utility functions for browser usage.
3
+ *
4
+ * Provides isXZ, versionString, versionNumber, parseFileIndex
5
+ * matching the Node.js API signatures.
6
+ */
7
+ import { checkIsSupported } from './bindings.js';
8
+ /**
9
+ * Check if a buffer contains XZ compressed data.
10
+ *
11
+ * @param buffer - Data to check
12
+ * @returns true if the buffer starts with the XZ magic bytes
13
+ */
14
+ export declare function isXZ(buffer: Uint8Array | ArrayBuffer): boolean;
15
+ /**
16
+ * Get the liblzma version string (e.g. "5.6.3").
17
+ */
18
+ export declare function versionString(): string;
19
+ /**
20
+ * Get the liblzma version as a number (e.g. 50060030 for 5.6.3).
21
+ */
22
+ export declare function versionNumber(): number;
23
+ /**
24
+ * Get memory usage estimate for the easy encoder with given preset.
25
+ *
26
+ * Note: In WASM, this is approximated based on preset level.
27
+ * Presets 7-9 require significantly more memory at runtime than reported here
28
+ * and may exceed the default WASM memory limit (256MB).
29
+ */
30
+ export declare function easyEncoderMemusage(preset: number): number;
31
+ /**
32
+ * Get memory usage estimate for the easy decoder.
33
+ */
34
+ export declare function easyDecoderMemusage(): number;
35
+ /** XZ file index information */
36
+ export interface XZFileIndex {
37
+ /** Uncompressed size in bytes */
38
+ uncompressedSize: number;
39
+ /** Compressed size in bytes (total file size including headers) */
40
+ compressedSize: number;
41
+ /** Number of streams in the file */
42
+ streamCount: number;
43
+ /** Number of blocks in the file */
44
+ blockCount: number;
45
+ /** Integrity check type */
46
+ check: number;
47
+ /** Memory usage of the index structure */
48
+ memoryUsage: number;
49
+ }
50
+ /**
51
+ * Parse the index of an XZ file to extract metadata.
52
+ * Parses the XZ footer and the index section to extract real
53
+ * uncompressed size, block count, and integrity check type.
54
+ *
55
+ * @param buffer - Complete XZ file data
56
+ * @returns File index information
57
+ */
58
+ export declare function parseFileIndex(buffer: Uint8Array | ArrayBuffer): XZFileIndex;
59
+ export { checkIsSupported };
60
+ /** Convert various input types to Uint8Array */
61
+ export declare function toUint8Array(input: Uint8Array | ArrayBuffer | string): Uint8Array;
62
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/wasm/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAsC,MAAM,eAAe,CAAC;AAKrF;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAO9D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAe1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,gCAAgC;AAChC,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;CACrB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,CA6D5E;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAIjF"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * WASM utility functions for browser usage.
3
+ *
4
+ * Provides isXZ, versionString, versionNumber, parseFileIndex
5
+ * matching the Node.js API signatures.
6
+ */
7
+ import { checkIsSupported, versionString as wasmVersionString } from './bindings.js';
8
+ /** XZ magic bytes: 0xFD + "7zXZ" + 0x00 */
9
+ const XZ_MAGIC = new Uint8Array([0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00]);
10
+ /**
11
+ * Check if a buffer contains XZ compressed data.
12
+ *
13
+ * @param buffer - Data to check
14
+ * @returns true if the buffer starts with the XZ magic bytes
15
+ */
16
+ export function isXZ(buffer) {
17
+ const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
18
+ if (data.byteLength < XZ_MAGIC.length)
19
+ return false;
20
+ for (let i = 0; i < XZ_MAGIC.length; i++) {
21
+ if (data[i] !== XZ_MAGIC[i])
22
+ return false;
23
+ }
24
+ return true;
25
+ }
26
+ /**
27
+ * Get the liblzma version string (e.g. "5.6.3").
28
+ */
29
+ export function versionString() {
30
+ return wasmVersionString();
31
+ }
32
+ /**
33
+ * Get the liblzma version as a number (e.g. 50060030 for 5.6.3).
34
+ */
35
+ export function versionNumber() {
36
+ const parts = wasmVersionString().split('.');
37
+ const major = Number.parseInt(parts[0], 10);
38
+ const minor = Number.parseInt(parts[1], 10);
39
+ const patch = Number.parseInt(parts[2], 10);
40
+ return major * 10000000 + minor * 10000 + patch * 10;
41
+ }
42
+ /**
43
+ * Get memory usage estimate for the easy encoder with given preset.
44
+ *
45
+ * Note: In WASM, this is approximated based on preset level.
46
+ * Presets 7-9 require significantly more memory at runtime than reported here
47
+ * and may exceed the default WASM memory limit (256MB).
48
+ */
49
+ export function easyEncoderMemusage(preset) {
50
+ // Approximate memory usage per preset (from liblzma docs)
51
+ const usageByPreset = {
52
+ 0: 1572864, // ~1.5 MB
53
+ 1: 2097152, // ~2 MB
54
+ 2: 3145728, // ~3 MB
55
+ 3: 4194304, // ~4 MB
56
+ 4: 5242880, // ~5 MB
57
+ 5: 6291456, // ~6 MB
58
+ 6: 9437184, // ~9 MB
59
+ 7: 17825792, // ~17 MB
60
+ 8: 34603008, // ~33 MB
61
+ 9: 67108864, // ~64 MB
62
+ };
63
+ return usageByPreset[preset & 0x1f] ?? usageByPreset[6];
64
+ }
65
+ /**
66
+ * Get memory usage estimate for the easy decoder.
67
+ */
68
+ export function easyDecoderMemusage() {
69
+ // Decoder memory usage is typically ~2-65MB depending on the stream
70
+ // Default estimate for typical streams
71
+ return 67108864; // ~64 MB (worst case for preset 9)
72
+ }
73
+ /**
74
+ * Read a Variable-Length Integer (VLI) from XZ data.
75
+ * XZ VLI: 7 bits per byte, MSB = continuation bit, max 9 bytes (63 bits).
76
+ *
77
+ * @returns [value, bytesConsumed]
78
+ */
79
+ function readVLI(data, offset) {
80
+ let value = 0;
81
+ let shift = 0;
82
+ for (let i = 0; i < 9; i++) {
83
+ if (offset + i >= data.byteLength) {
84
+ throw new Error('Truncated VLI in XZ index');
85
+ }
86
+ const byte = data[offset + i];
87
+ value |= (byte & 0x7f) * 2 ** shift;
88
+ shift += 7;
89
+ if ((byte & 0x80) === 0) {
90
+ return [value, i + 1];
91
+ }
92
+ }
93
+ throw new Error('Invalid VLI in XZ index (too many bytes)');
94
+ }
95
+ /**
96
+ * Parse the index of an XZ file to extract metadata.
97
+ * Parses the XZ footer and the index section to extract real
98
+ * uncompressed size, block count, and integrity check type.
99
+ *
100
+ * @param buffer - Complete XZ file data
101
+ * @returns File index information
102
+ */
103
+ export function parseFileIndex(buffer) {
104
+ const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
105
+ if (!isXZ(data)) {
106
+ throw new Error('Not a valid XZ file');
107
+ }
108
+ // XZ footer is last 12 bytes: CRC32(4) + Backward Size(4) + Flags(2) + 'YZ'(2)
109
+ if (data.byteLength < 24) {
110
+ throw new Error('XZ file too small to contain valid index');
111
+ }
112
+ const footer = data.subarray(data.byteLength - 12);
113
+ // Verify footer magic 'YZ' (0x59, 0x5A)
114
+ if (footer[10] !== 0x59 || footer[11] !== 0x5a) {
115
+ throw new Error('Invalid XZ footer');
116
+ }
117
+ // Stream flags (check type is in bits 0-3 of the first flag byte)
118
+ const checkType = footer[8] & 0x0f;
119
+ // Backward size (little-endian uint32, value = (stored + 1) * 4)
120
+ const backwardSize = ((footer[4] | (footer[5] << 8) | (footer[6] << 16) | (footer[7] << 24)) + 1) * 4;
121
+ // Parse the index section
122
+ // Index starts at: footer_position - backwardSize
123
+ const indexStart = data.byteLength - 12 - backwardSize;
124
+ if (indexStart < 12 || indexStart >= data.byteLength - 12) {
125
+ throw new Error('Invalid backward size in XZ footer');
126
+ }
127
+ // Index indicator byte must be 0x00
128
+ if (data[indexStart] !== 0x00) {
129
+ throw new Error('Invalid XZ index indicator');
130
+ }
131
+ // Read number of records (VLI)
132
+ let pos = indexStart + 1;
133
+ const [recordCount, recordCountBytes] = readVLI(data, pos);
134
+ pos += recordCountBytes;
135
+ // Read each record: Unpadded Size (VLI) + Uncompressed Size (VLI)
136
+ let totalUncompressed = 0;
137
+ for (let i = 0; i < recordCount; i++) {
138
+ const [, unpaddedBytes] = readVLI(data, pos);
139
+ pos += unpaddedBytes;
140
+ const [uncompressedSize, uncompressedBytes] = readVLI(data, pos);
141
+ pos += uncompressedBytes;
142
+ totalUncompressed += uncompressedSize;
143
+ }
144
+ return {
145
+ uncompressedSize: totalUncompressed,
146
+ compressedSize: data.byteLength,
147
+ streamCount: 1,
148
+ blockCount: recordCount,
149
+ check: checkType,
150
+ memoryUsage: backwardSize,
151
+ };
152
+ }
153
+ export { checkIsSupported };
154
+ /** Convert various input types to Uint8Array */
155
+ export function toUint8Array(input) {
156
+ if (input instanceof Uint8Array)
157
+ return input;
158
+ if (input instanceof ArrayBuffer)
159
+ return new Uint8Array(input);
160
+ return new TextEncoder().encode(input);
161
+ }
162
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/wasm/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-liblzma",
3
- "version": "2.2.0",
3
+ "version": "3.0.0",
4
4
  "description": "NodeJS wrapper for liblzma",
5
5
  "type": "module",
6
6
  "main": "./lib/lzma.js",
@@ -9,14 +9,33 @@
9
9
  },
10
10
  "exports": {
11
11
  ".": {
12
- "import": "./lib/lzma.js",
12
+ "browser": {
13
+ "types": "./lib/lzma.browser.d.ts",
14
+ "import": "./lib/lzma.browser.js",
15
+ "default": "./lib/lzma.browser.js"
16
+ },
13
17
  "types": "./index.d.ts",
18
+ "import": "./lib/lzma.js",
14
19
  "default": "./lib/lzma.js"
20
+ },
21
+ "./wasm": {
22
+ "types": "./lib/wasm/index.d.ts",
23
+ "import": "./lib/wasm/index.js",
24
+ "default": "./lib/wasm/index.js"
25
+ },
26
+ "./inline": {
27
+ "types": "./lib/lzma.inline.d.ts",
28
+ "import": "./lib/lzma.inline.js",
29
+ "default": "./lib/lzma.inline.js"
15
30
  }
16
31
  },
17
32
  "scripts": {
18
33
  "postinstall": "node-gyp-build",
19
- "build": "tsc",
34
+ "build": "tsc && node scripts/copy-wasm-artifacts.js",
35
+ "build:wasm": "bash src/wasm/build.sh",
36
+ "build:wasm:size": "bash src/wasm/build.sh --size-only",
37
+ "build:wasm:inline": "node scripts/generate-wasm-inline.js",
38
+ "build:wasm:all": "pnpm build:wasm && pnpm build:wasm:inline",
20
39
  "build:watch": "tsc --watch",
21
40
  "prepare": "simple-git-hooks && pnpm run build",
22
41
  "prebuildify": "prebuildify --napi --strip -t $(node -v)",
@@ -66,6 +85,8 @@
66
85
  "files": [
67
86
  "lib/",
68
87
  "src/bindings/",
88
+ "src/wasm/liblzma.js",
89
+ "src/wasm/liblzma.wasm",
69
90
  "scripts/build_xz_with_cmake.py",
70
91
  "scripts/download_xz_from_github.py",
71
92
  "scripts/copy_dll.py",