zstd-wasm-vn 1.0.0 → 1.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.
package/README.md CHANGED
@@ -1,21 +1,149 @@
1
1
  # zstd-wasm-vn
2
2
  [![npm](https://img.shields.io/npm/v/zstd-wasm-vn)](https://www.npmjs.com/package/zstd-wasm-vn)
3
3
 
4
- ## Installing `wasm-bindgen-cli`
4
+ ## Browser
5
5
 
6
- ```sh
7
- cargo install wasm-bindgen-cli
8
- cargo install wasm-opt --locked
6
+ ### Bulk (One-shot)
7
+
8
+ For simple, full-buffer compression/decompression.
9
+
10
+ ```js
11
+ import init, { Zstd } from 'zstd-wasm-vn/web';
12
+
13
+ await init();
14
+
15
+ const str = "Compresses data using Zstandard compression";
16
+
17
+ const data = new TextEncoder().encode(str);
18
+ const compressed = Zstd.compress(data, 6);
19
+ const decompressed = Zstd.decompress(compressed);
20
+
21
+ console.log("Original String: ", str);
22
+ console.log("Decompressed String: ", new TextDecoder().decode(decompressed));
9
23
  ```
10
24
 
11
- ## Building via `wasm-bindgen-cli`
25
+ ### Streaming
26
+
27
+ For processing large files read from a drag-and-drop event or an HTTP fetch stream.
28
+
29
+ ```js
30
+ import init, { ZstdCompressor, ZstdDecompressor } from 'zstd-wasm-vn/web';
31
+
32
+ await init();
12
33
 
13
- ```sh
14
- chmod +x build.sh && ./build.sh
34
+ // --- Decompression Stream Example (Browser File Input) ---
35
+ // Assuming you have the full compressed Uint8Array (e.g., loaded from a file input)
36
+ async function streamDecompress(compressedData) {
37
+ const decompressor = new ZstdDecompressor(compressedData);
38
+ const CHUNK_SIZE = 1024 * 128; // Request 128KB chunks
39
+
40
+ const decompressedChunks = [];
41
+
42
+ while (true) {
43
+ // 1. Decompress a chunk
44
+ const chunk = decompressor.decompress_chunk(CHUNK_SIZE);
45
+
46
+ // 2. Stop condition
47
+ if (chunk.length === 0) {
48
+ break;
49
+ }
50
+
51
+ // 3. Collect the chunk for processing
52
+ decompressedChunks.push(chunk);
53
+
54
+ // Optionally, yield or process the chunk here
55
+ // console.log(`Processed ${chunk.length} bytes`);
56
+ }
57
+
58
+ // Combine all chunks into a final array
59
+ const totalLength = decompressedChunks.reduce((sum, chunk) => sum + chunk.length, 0);
60
+ const finalData = new Uint8Array(totalLength);
61
+ let offset = 0;
62
+ for (const chunk of decompressedChunks) {
63
+ finalData.set(chunk, offset);
64
+ offset += chunk.length;
65
+ }
66
+
67
+ console.log(`Total decompressed bytes: ${finalData.length}`);
68
+ return finalData;
69
+ }
70
+
71
+ // Example usage with placeholder compressed data
72
+ // const compressedFileBytes = await fetch('data.zst').then(r => r.arrayBuffer()).then(b => new Uint8Array(b));
73
+ // streamDecompress(compressedFileBytes);
15
74
  ```
16
75
 
17
- ### Publish to NPM
76
+ ## Node.js
77
+
78
+ ### Bulk (One-shot)
79
+
80
+ For simple, full-buffer compression/decompression.
81
+
82
+ ```js
83
+ const { randomBytes } = require('node:crypto');
84
+ const { Zstd } = require('zstd-wasm-vn/nodejs');
85
+
86
+ // Generate 32 bytes of random data
87
+ const data = randomBytes(32);
88
+
89
+ // Compress the entire buffer at level 6
90
+ const compressed = Zstd.compress(data, 6);
91
+
92
+ // Decompress the entire buffer
93
+ const decompressed = Zstd.decompress(compressed);
94
+
95
+ // Verify
96
+ console.log('Match:', data.equals(decompressed));
97
+ ```
98
+
99
+ ### Streaming
100
+
101
+ For handling large files or continuous network data without loading the entire content into memory.
102
+
103
+ ```js
104
+ const { ZstdCompressor, ZstdDecompressor } = require('zstd-wasm-vn/nodejs');
105
+ const { createReadStream, createWriteStream } = require('node:fs');
106
+
107
+ // --- Compression Stream Example ---
108
+
109
+ // 1. Create a stream compressor instance (level 3)
110
+ const compressor = new ZstdCompressor(3);
111
+
112
+ createReadStream('large_input.txt', { highWaterMark: 64 * 1024 }) // Read 64KB chunks
113
+ .on('data', (chunk) => {
114
+ // 2. Compress each chunk
115
+ compressor.compress_chunk(chunk);
116
+ })
117
+ .on('end', () => {
118
+ // 3. Finalize and get the full compressed output
119
+ const compressedData = compressor.finalize();
120
+ console.log(`Compressed size: ${compressedData.length} bytes`);
121
+ // Write the result to a file (optional)
122
+ // createWriteStream('output.zst').write(compressedData);
123
+ });
124
+
125
+ // --- Decompression Stream Example ---
126
+
127
+ // Assuming 'compressed_data' is a Buffer containing the Zstd file content
128
+ const compressedData = /* ... load compressed data Buffer here ... */;
129
+ const decompressor = new ZstdDecompressor(compressedData);
130
+
131
+ let totalDecompressedSize = 0;
132
+ const CHUNK_SIZE = 1024 * 64; // Request 64KB uncompressed chunks
133
+
134
+ while (true) {
135
+ // 1. Decompress a chunk
136
+ const chunk = decompressor.decompress_chunk(CHUNK_SIZE);
137
+
138
+ // 2. Stop condition (empty chunk means EOF)
139
+ if (chunk.length === 0) {
140
+ break;
141
+ }
142
+
143
+ // 3. Process/write the uncompressed chunk
144
+ // createWriteStream('decompressed.txt').write(chunk);
145
+ totalDecompressedSize += chunk.length;
146
+ }
18
147
 
19
- ```sh
20
- cd pkg && npm publish
148
+ console.log(`Total decompressed size: ${totalDecompressedSize} bytes`);
21
149
  ```
@@ -1,5 +1,22 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ /**
4
+ * Compresses data using Zstandard compression
5
+ *
6
+ * # Arguments
7
+ *
8
+ * * `data` - Input data to compress
9
+ * * `level` - Compression level (1-22, default 6). Higher = better compression but slower
10
+ */
11
+ export function compress(data: Uint8Array, level?: number | null): Uint8Array;
12
+ /**
13
+ * Decompresses Zstandard compressed data
14
+ *
15
+ * # Arguments
16
+ *
17
+ * * `compressed_data` - Zstandard compressed data
18
+ */
19
+ export function decompress(compressed_data: Uint8Array): Uint8Array;
3
20
  /**
4
21
  * ZSTD compression and decompression for WebAssembly
5
22
  */
@@ -7,22 +24,7 @@ export class Zstd {
7
24
  private constructor();
8
25
  free(): void;
9
26
  [Symbol.dispose](): void;
10
- /**
11
- * Compresses data using Zstandard compression
12
- *
13
- * # Arguments
14
- *
15
- * * `data` - Input data to compress
16
- * * `level` - Compression level (1-22, default 3). Higher = better compression but slower
17
- */
18
27
  static compress(data: Uint8Array, level?: number | null): Uint8Array;
19
- /**
20
- * Decompresses Zstandard compressed data
21
- *
22
- * # Arguments
23
- *
24
- * * `compressed_data` - Zstandard compressed data
25
- */
26
28
  static decompress(compressed_data: Uint8Array): Uint8Array;
27
29
  /**
28
30
  * Returns the recommended default compression level
@@ -67,10 +69,6 @@ export class ZstdCompressor {
67
69
  * Finalizes compression and returns the compressed data
68
70
  */
69
71
  finalize(): Uint8Array;
70
- /**
71
- * Gets the current compression level
72
- */
73
- readonly level: number;
74
72
  }
75
73
  /**
76
74
  * Streaming decompression for large data
@@ -87,7 +85,7 @@ export class ZstdDecompressor {
87
85
  */
88
86
  decompress_chunk(max_output_size: number): Uint8Array;
89
87
  /**
90
- * Decompresses all remaining data
88
+ * Decompresses all remaining data and consumes the decoder.
91
89
  */
92
90
  finalize(): Uint8Array;
93
91
  }
@@ -57,6 +57,49 @@ function getArrayU8FromWasm0(ptr, len) {
57
57
  ptr = ptr >>> 0;
58
58
  return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
59
59
  }
60
+ /**
61
+ * Compresses data using Zstandard compression
62
+ *
63
+ * # Arguments
64
+ *
65
+ * * `data` - Input data to compress
66
+ * * `level` - Compression level (1-22, default 6). Higher = better compression but slower
67
+ * @param {Uint8Array} data
68
+ * @param {number | null} [level]
69
+ * @returns {Uint8Array}
70
+ */
71
+ export function compress(data, level) {
72
+ const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
73
+ const len0 = WASM_VECTOR_LEN;
74
+ const ret = wasm.compress(ptr0, len0, isLikeNone(level) ? 0x100000001 : (level) >> 0);
75
+ if (ret[3]) {
76
+ throw takeFromExternrefTable0(ret[2]);
77
+ }
78
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
79
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
80
+ return v2;
81
+ }
82
+
83
+ /**
84
+ * Decompresses Zstandard compressed data
85
+ *
86
+ * # Arguments
87
+ *
88
+ * * `compressed_data` - Zstandard compressed data
89
+ * @param {Uint8Array} compressed_data
90
+ * @returns {Uint8Array}
91
+ */
92
+ export function decompress(compressed_data) {
93
+ const ptr0 = passArray8ToWasm0(compressed_data, wasm.__wbindgen_malloc);
94
+ const len0 = WASM_VECTOR_LEN;
95
+ const ret = wasm.decompress(ptr0, len0);
96
+ if (ret[3]) {
97
+ throw takeFromExternrefTable0(ret[2]);
98
+ }
99
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
100
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
101
+ return v2;
102
+ }
60
103
 
61
104
  const ZstdFinalization = (typeof FinalizationRegistry === 'undefined')
62
105
  ? { register: () => {}, unregister: () => {} }
@@ -78,12 +121,6 @@ export class Zstd {
78
121
  wasm.__wbg_zstd_free(ptr, 0);
79
122
  }
80
123
  /**
81
- * Compresses data using Zstandard compression
82
- *
83
- * # Arguments
84
- *
85
- * * `data` - Input data to compress
86
- * * `level` - Compression level (1-22, default 3). Higher = better compression but slower
87
124
  * @param {Uint8Array} data
88
125
  * @param {number | null} [level]
89
126
  * @returns {Uint8Array}
@@ -100,11 +137,6 @@ export class Zstd {
100
137
  return v2;
101
138
  }
102
139
  /**
103
- * Decompresses Zstandard compressed data
104
- *
105
- * # Arguments
106
- *
107
- * * `compressed_data` - Zstandard compressed data
108
140
  * @param {Uint8Array} compressed_data
109
141
  * @returns {Uint8Array}
110
142
  */
@@ -232,14 +264,6 @@ export class ZstdCompressor {
232
264
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
233
265
  return v1;
234
266
  }
235
- /**
236
- * Gets the current compression level
237
- * @returns {number}
238
- */
239
- get level() {
240
- const ret = wasm.zstdcompressor_level(this.__wbg_ptr);
241
- return ret;
242
- }
243
267
  }
244
268
  if (Symbol.dispose) ZstdCompressor.prototype[Symbol.dispose] = ZstdCompressor.prototype.free;
245
269
 
@@ -292,7 +316,7 @@ export class ZstdDecompressor {
292
316
  return v1;
293
317
  }
294
318
  /**
295
- * Decompresses all remaining data
319
+ * Decompresses all remaining data and consumes the decoder.
296
320
  * @returns {Uint8Array}
297
321
  */
298
322
  finalize() {
Binary file
@@ -1,6 +1,8 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
+ export const compress: (a: number, b: number, c: number) => [number, number, number, number];
5
+ export const decompress: (a: number, b: number) => [number, number, number, number];
4
6
  export const __wbg_zstd_free: (a: number, b: number) => void;
5
7
  export const zstd_compress: (a: number, b: number, c: number) => [number, number, number, number];
6
8
  export const zstd_decompress: (a: number, b: number) => [number, number, number, number];
@@ -14,7 +16,6 @@ export const __wbg_zstdcompressor_free: (a: number, b: number) => void;
14
16
  export const zstdcompressor_new: (a: number) => [number, number, number];
15
17
  export const zstdcompressor_compress_chunk: (a: number, b: number, c: number) => [number, number];
16
18
  export const zstdcompressor_finalize: (a: number) => [number, number, number, number];
17
- export const zstdcompressor_level: (a: number) => number;
18
19
  export const __wbg_zstddecompressor_free: (a: number, b: number) => void;
19
20
  export const zstddecompressor_new: (a: number, b: number) => [number, number, number];
20
21
  export const zstddecompressor_decompress_chunk: (a: number, b: number) => [number, number, number, number];
@@ -1,5 +1,22 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ /**
4
+ * Compresses data using Zstandard compression
5
+ *
6
+ * # Arguments
7
+ *
8
+ * * `data` - Input data to compress
9
+ * * `level` - Compression level (1-22, default 6). Higher = better compression but slower
10
+ */
11
+ export function compress(data: Uint8Array, level?: number | null): Uint8Array;
12
+ /**
13
+ * Decompresses Zstandard compressed data
14
+ *
15
+ * # Arguments
16
+ *
17
+ * * `compressed_data` - Zstandard compressed data
18
+ */
19
+ export function decompress(compressed_data: Uint8Array): Uint8Array;
3
20
  /**
4
21
  * ZSTD compression and decompression for WebAssembly
5
22
  */
@@ -7,22 +24,7 @@ export class Zstd {
7
24
  private constructor();
8
25
  free(): void;
9
26
  [Symbol.dispose](): void;
10
- /**
11
- * Compresses data using Zstandard compression
12
- *
13
- * # Arguments
14
- *
15
- * * `data` - Input data to compress
16
- * * `level` - Compression level (1-22, default 3). Higher = better compression but slower
17
- */
18
27
  static compress(data: Uint8Array, level?: number | null): Uint8Array;
19
- /**
20
- * Decompresses Zstandard compressed data
21
- *
22
- * # Arguments
23
- *
24
- * * `compressed_data` - Zstandard compressed data
25
- */
26
28
  static decompress(compressed_data: Uint8Array): Uint8Array;
27
29
  /**
28
30
  * Returns the recommended default compression level
@@ -67,10 +69,6 @@ export class ZstdCompressor {
67
69
  * Finalizes compression and returns the compressed data
68
70
  */
69
71
  finalize(): Uint8Array;
70
- /**
71
- * Gets the current compression level
72
- */
73
- readonly level: number;
74
72
  }
75
73
  /**
76
74
  * Streaming decompression for large data
@@ -87,7 +85,7 @@ export class ZstdDecompressor {
87
85
  */
88
86
  decompress_chunk(max_output_size: number): Uint8Array;
89
87
  /**
90
- * Decompresses all remaining data
88
+ * Decompresses all remaining data and consumes the decoder.
91
89
  */
92
90
  finalize(): Uint8Array;
93
91
  }
@@ -45,6 +45,49 @@ function getArrayU8FromWasm0(ptr, len) {
45
45
  ptr = ptr >>> 0;
46
46
  return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
47
47
  }
48
+ /**
49
+ * Compresses data using Zstandard compression
50
+ *
51
+ * # Arguments
52
+ *
53
+ * * `data` - Input data to compress
54
+ * * `level` - Compression level (1-22, default 6). Higher = better compression but slower
55
+ * @param {Uint8Array} data
56
+ * @param {number | null} [level]
57
+ * @returns {Uint8Array}
58
+ */
59
+ export function compress(data, level) {
60
+ const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
61
+ const len0 = WASM_VECTOR_LEN;
62
+ const ret = wasm.compress(ptr0, len0, isLikeNone(level) ? 0x100000001 : (level) >> 0);
63
+ if (ret[3]) {
64
+ throw takeFromExternrefTable0(ret[2]);
65
+ }
66
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
67
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
68
+ return v2;
69
+ }
70
+
71
+ /**
72
+ * Decompresses Zstandard compressed data
73
+ *
74
+ * # Arguments
75
+ *
76
+ * * `compressed_data` - Zstandard compressed data
77
+ * @param {Uint8Array} compressed_data
78
+ * @returns {Uint8Array}
79
+ */
80
+ export function decompress(compressed_data) {
81
+ const ptr0 = passArray8ToWasm0(compressed_data, wasm.__wbindgen_malloc);
82
+ const len0 = WASM_VECTOR_LEN;
83
+ const ret = wasm.decompress(ptr0, len0);
84
+ if (ret[3]) {
85
+ throw takeFromExternrefTable0(ret[2]);
86
+ }
87
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
88
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
89
+ return v2;
90
+ }
48
91
 
49
92
  const ZstdFinalization = (typeof FinalizationRegistry === 'undefined')
50
93
  ? { register: () => {}, unregister: () => {} }
@@ -66,12 +109,6 @@ export class Zstd {
66
109
  wasm.__wbg_zstd_free(ptr, 0);
67
110
  }
68
111
  /**
69
- * Compresses data using Zstandard compression
70
- *
71
- * # Arguments
72
- *
73
- * * `data` - Input data to compress
74
- * * `level` - Compression level (1-22, default 3). Higher = better compression but slower
75
112
  * @param {Uint8Array} data
76
113
  * @param {number | null} [level]
77
114
  * @returns {Uint8Array}
@@ -88,11 +125,6 @@ export class Zstd {
88
125
  return v2;
89
126
  }
90
127
  /**
91
- * Decompresses Zstandard compressed data
92
- *
93
- * # Arguments
94
- *
95
- * * `compressed_data` - Zstandard compressed data
96
128
  * @param {Uint8Array} compressed_data
97
129
  * @returns {Uint8Array}
98
130
  */
@@ -220,14 +252,6 @@ export class ZstdCompressor {
220
252
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
221
253
  return v1;
222
254
  }
223
- /**
224
- * Gets the current compression level
225
- * @returns {number}
226
- */
227
- get level() {
228
- const ret = wasm.zstdcompressor_level(this.__wbg_ptr);
229
- return ret;
230
- }
231
255
  }
232
256
  if (Symbol.dispose) ZstdCompressor.prototype[Symbol.dispose] = ZstdCompressor.prototype.free;
233
257
 
@@ -280,7 +304,7 @@ export class ZstdDecompressor {
280
304
  return v1;
281
305
  }
282
306
  /**
283
- * Decompresses all remaining data
307
+ * Decompresses all remaining data and consumes the decoder.
284
308
  * @returns {Uint8Array}
285
309
  */
286
310
  finalize() {
Binary file
@@ -1,6 +1,8 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
+ export const compress: (a: number, b: number, c: number) => [number, number, number, number];
5
+ export const decompress: (a: number, b: number) => [number, number, number, number];
4
6
  export const __wbg_zstd_free: (a: number, b: number) => void;
5
7
  export const zstd_compress: (a: number, b: number, c: number) => [number, number, number, number];
6
8
  export const zstd_decompress: (a: number, b: number) => [number, number, number, number];
@@ -14,7 +16,6 @@ export const __wbg_zstdcompressor_free: (a: number, b: number) => void;
14
16
  export const zstdcompressor_new: (a: number) => [number, number, number];
15
17
  export const zstdcompressor_compress_chunk: (a: number, b: number, c: number) => [number, number];
16
18
  export const zstdcompressor_finalize: (a: number) => [number, number, number, number];
17
- export const zstdcompressor_level: (a: number) => number;
18
19
  export const __wbg_zstddecompressor_free: (a: number, b: number) => void;
19
20
  export const zstddecompressor_new: (a: number, b: number) => [number, number, number];
20
21
  export const zstddecompressor_decompress_chunk: (a: number, b: number) => [number, number, number, number];
@@ -1,5 +1,22 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ /**
4
+ * Compresses data using Zstandard compression
5
+ *
6
+ * # Arguments
7
+ *
8
+ * * `data` - Input data to compress
9
+ * * `level` - Compression level (1-22, default 6). Higher = better compression but slower
10
+ */
11
+ export function compress(data: Uint8Array, level?: number | null): Uint8Array;
12
+ /**
13
+ * Decompresses Zstandard compressed data
14
+ *
15
+ * # Arguments
16
+ *
17
+ * * `compressed_data` - Zstandard compressed data
18
+ */
19
+ export function decompress(compressed_data: Uint8Array): Uint8Array;
3
20
  /**
4
21
  * ZSTD compression and decompression for WebAssembly
5
22
  */
@@ -7,22 +24,7 @@ export class Zstd {
7
24
  private constructor();
8
25
  free(): void;
9
26
  [Symbol.dispose](): void;
10
- /**
11
- * Compresses data using Zstandard compression
12
- *
13
- * # Arguments
14
- *
15
- * * `data` - Input data to compress
16
- * * `level` - Compression level (1-22, default 3). Higher = better compression but slower
17
- */
18
27
  static compress(data: Uint8Array, level?: number | null): Uint8Array;
19
- /**
20
- * Decompresses Zstandard compressed data
21
- *
22
- * # Arguments
23
- *
24
- * * `compressed_data` - Zstandard compressed data
25
- */
26
28
  static decompress(compressed_data: Uint8Array): Uint8Array;
27
29
  /**
28
30
  * Returns the recommended default compression level
@@ -67,10 +69,6 @@ export class ZstdCompressor {
67
69
  * Finalizes compression and returns the compressed data
68
70
  */
69
71
  finalize(): Uint8Array;
70
- /**
71
- * Gets the current compression level
72
- */
73
- readonly level: number;
74
72
  }
75
73
  /**
76
74
  * Streaming decompression for large data
@@ -87,7 +85,7 @@ export class ZstdDecompressor {
87
85
  */
88
86
  decompress_chunk(max_output_size: number): Uint8Array;
89
87
  /**
90
- * Decompresses all remaining data
88
+ * Decompresses all remaining data and consumes the decoder.
91
89
  */
92
90
  finalize(): Uint8Array;
93
91
  }
@@ -47,6 +47,49 @@ function getArrayU8FromWasm0(ptr, len) {
47
47
  ptr = ptr >>> 0;
48
48
  return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
49
49
  }
50
+ /**
51
+ * Compresses data using Zstandard compression
52
+ *
53
+ * # Arguments
54
+ *
55
+ * * `data` - Input data to compress
56
+ * * `level` - Compression level (1-22, default 6). Higher = better compression but slower
57
+ * @param {Uint8Array} data
58
+ * @param {number | null} [level]
59
+ * @returns {Uint8Array}
60
+ */
61
+ exports.compress = function(data, level) {
62
+ const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
63
+ const len0 = WASM_VECTOR_LEN;
64
+ const ret = wasm.compress(ptr0, len0, isLikeNone(level) ? 0x100000001 : (level) >> 0);
65
+ if (ret[3]) {
66
+ throw takeFromExternrefTable0(ret[2]);
67
+ }
68
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
69
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
70
+ return v2;
71
+ };
72
+
73
+ /**
74
+ * Decompresses Zstandard compressed data
75
+ *
76
+ * # Arguments
77
+ *
78
+ * * `compressed_data` - Zstandard compressed data
79
+ * @param {Uint8Array} compressed_data
80
+ * @returns {Uint8Array}
81
+ */
82
+ exports.decompress = function(compressed_data) {
83
+ const ptr0 = passArray8ToWasm0(compressed_data, wasm.__wbindgen_malloc);
84
+ const len0 = WASM_VECTOR_LEN;
85
+ const ret = wasm.decompress(ptr0, len0);
86
+ if (ret[3]) {
87
+ throw takeFromExternrefTable0(ret[2]);
88
+ }
89
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
90
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
91
+ return v2;
92
+ };
50
93
 
51
94
  const ZstdFinalization = (typeof FinalizationRegistry === 'undefined')
52
95
  ? { register: () => {}, unregister: () => {} }
@@ -68,12 +111,6 @@ class Zstd {
68
111
  wasm.__wbg_zstd_free(ptr, 0);
69
112
  }
70
113
  /**
71
- * Compresses data using Zstandard compression
72
- *
73
- * # Arguments
74
- *
75
- * * `data` - Input data to compress
76
- * * `level` - Compression level (1-22, default 3). Higher = better compression but slower
77
114
  * @param {Uint8Array} data
78
115
  * @param {number | null} [level]
79
116
  * @returns {Uint8Array}
@@ -90,11 +127,6 @@ class Zstd {
90
127
  return v2;
91
128
  }
92
129
  /**
93
- * Decompresses Zstandard compressed data
94
- *
95
- * # Arguments
96
- *
97
- * * `compressed_data` - Zstandard compressed data
98
130
  * @param {Uint8Array} compressed_data
99
131
  * @returns {Uint8Array}
100
132
  */
@@ -224,14 +256,6 @@ class ZstdCompressor {
224
256
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
225
257
  return v1;
226
258
  }
227
- /**
228
- * Gets the current compression level
229
- * @returns {number}
230
- */
231
- get level() {
232
- const ret = wasm.zstdcompressor_level(this.__wbg_ptr);
233
- return ret;
234
- }
235
259
  }
236
260
  if (Symbol.dispose) ZstdCompressor.prototype[Symbol.dispose] = ZstdCompressor.prototype.free;
237
261
 
@@ -286,7 +310,7 @@ class ZstdDecompressor {
286
310
  return v1;
287
311
  }
288
312
  /**
289
- * Decompresses all remaining data
313
+ * Decompresses all remaining data and consumes the decoder.
290
314
  * @returns {Uint8Array}
291
315
  */
292
316
  finalize() {
Binary file
@@ -1,6 +1,8 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
+ export const compress: (a: number, b: number, c: number) => [number, number, number, number];
5
+ export const decompress: (a: number, b: number) => [number, number, number, number];
4
6
  export const __wbg_zstd_free: (a: number, b: number) => void;
5
7
  export const zstd_compress: (a: number, b: number, c: number) => [number, number, number, number];
6
8
  export const zstd_decompress: (a: number, b: number) => [number, number, number, number];
@@ -14,7 +16,6 @@ export const __wbg_zstdcompressor_free: (a: number, b: number) => void;
14
16
  export const zstdcompressor_new: (a: number) => [number, number, number];
15
17
  export const zstdcompressor_compress_chunk: (a: number, b: number, c: number) => [number, number];
16
18
  export const zstdcompressor_finalize: (a: number) => [number, number, number, number];
17
- export const zstdcompressor_level: (a: number) => number;
18
19
  export const __wbg_zstddecompressor_free: (a: number, b: number) => void;
19
20
  export const zstddecompressor_new: (a: number, b: number) => [number, number, number];
20
21
  export const zstddecompressor_decompress_chunk: (a: number, b: number) => [number, number, number, number];
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "ndtao2020"
6
6
  ],
7
7
  "description": "ZSTD for WebAssembly",
8
- "version": "1.0.0",
8
+ "version": "1.1.0",
9
9
  "license": "MIT License",
10
10
  "repository": {
11
11
  "type": "git",
@@ -1,5 +1,22 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ /**
4
+ * Compresses data using Zstandard compression
5
+ *
6
+ * # Arguments
7
+ *
8
+ * * `data` - Input data to compress
9
+ * * `level` - Compression level (1-22, default 6). Higher = better compression but slower
10
+ */
11
+ export function compress(data: Uint8Array, level?: number | null): Uint8Array;
12
+ /**
13
+ * Decompresses Zstandard compressed data
14
+ *
15
+ * # Arguments
16
+ *
17
+ * * `compressed_data` - Zstandard compressed data
18
+ */
19
+ export function decompress(compressed_data: Uint8Array): Uint8Array;
3
20
  /**
4
21
  * ZSTD compression and decompression for WebAssembly
5
22
  */
@@ -7,22 +24,7 @@ export class Zstd {
7
24
  private constructor();
8
25
  free(): void;
9
26
  [Symbol.dispose](): void;
10
- /**
11
- * Compresses data using Zstandard compression
12
- *
13
- * # Arguments
14
- *
15
- * * `data` - Input data to compress
16
- * * `level` - Compression level (1-22, default 3). Higher = better compression but slower
17
- */
18
27
  static compress(data: Uint8Array, level?: number | null): Uint8Array;
19
- /**
20
- * Decompresses Zstandard compressed data
21
- *
22
- * # Arguments
23
- *
24
- * * `compressed_data` - Zstandard compressed data
25
- */
26
28
  static decompress(compressed_data: Uint8Array): Uint8Array;
27
29
  /**
28
30
  * Returns the recommended default compression level
@@ -67,10 +69,6 @@ export class ZstdCompressor {
67
69
  * Finalizes compression and returns the compressed data
68
70
  */
69
71
  finalize(): Uint8Array;
70
- /**
71
- * Gets the current compression level
72
- */
73
- readonly level: number;
74
72
  }
75
73
  /**
76
74
  * Streaming decompression for large data
@@ -87,7 +85,7 @@ export class ZstdDecompressor {
87
85
  */
88
86
  decompress_chunk(max_output_size: number): Uint8Array;
89
87
  /**
90
- * Decompresses all remaining data
88
+ * Decompresses all remaining data and consumes the decoder.
91
89
  */
92
90
  finalize(): Uint8Array;
93
91
  }
@@ -96,6 +94,8 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
96
94
 
97
95
  export interface InitOutput {
98
96
  readonly memory: WebAssembly.Memory;
97
+ readonly compress: (a: number, b: number, c: number) => [number, number, number, number];
98
+ readonly decompress: (a: number, b: number) => [number, number, number, number];
99
99
  readonly __wbg_zstd_free: (a: number, b: number) => void;
100
100
  readonly zstd_compress: (a: number, b: number, c: number) => [number, number, number, number];
101
101
  readonly zstd_decompress: (a: number, b: number) => [number, number, number, number];
@@ -109,7 +109,6 @@ export interface InitOutput {
109
109
  readonly zstdcompressor_new: (a: number) => [number, number, number];
110
110
  readonly zstdcompressor_compress_chunk: (a: number, b: number, c: number) => [number, number];
111
111
  readonly zstdcompressor_finalize: (a: number) => [number, number, number, number];
112
- readonly zstdcompressor_level: (a: number) => number;
113
112
  readonly __wbg_zstddecompressor_free: (a: number, b: number) => void;
114
113
  readonly zstddecompressor_new: (a: number, b: number) => [number, number, number];
115
114
  readonly zstddecompressor_decompress_chunk: (a: number, b: number) => [number, number, number, number];
@@ -53,6 +53,49 @@ function getArrayU8FromWasm0(ptr, len) {
53
53
  ptr = ptr >>> 0;
54
54
  return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
55
55
  }
56
+ /**
57
+ * Compresses data using Zstandard compression
58
+ *
59
+ * # Arguments
60
+ *
61
+ * * `data` - Input data to compress
62
+ * * `level` - Compression level (1-22, default 6). Higher = better compression but slower
63
+ * @param {Uint8Array} data
64
+ * @param {number | null} [level]
65
+ * @returns {Uint8Array}
66
+ */
67
+ export function compress(data, level) {
68
+ const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
69
+ const len0 = WASM_VECTOR_LEN;
70
+ const ret = wasm.compress(ptr0, len0, isLikeNone(level) ? 0x100000001 : (level) >> 0);
71
+ if (ret[3]) {
72
+ throw takeFromExternrefTable0(ret[2]);
73
+ }
74
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
75
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
76
+ return v2;
77
+ }
78
+
79
+ /**
80
+ * Decompresses Zstandard compressed data
81
+ *
82
+ * # Arguments
83
+ *
84
+ * * `compressed_data` - Zstandard compressed data
85
+ * @param {Uint8Array} compressed_data
86
+ * @returns {Uint8Array}
87
+ */
88
+ export function decompress(compressed_data) {
89
+ const ptr0 = passArray8ToWasm0(compressed_data, wasm.__wbindgen_malloc);
90
+ const len0 = WASM_VECTOR_LEN;
91
+ const ret = wasm.decompress(ptr0, len0);
92
+ if (ret[3]) {
93
+ throw takeFromExternrefTable0(ret[2]);
94
+ }
95
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
96
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
97
+ return v2;
98
+ }
56
99
 
57
100
  const ZstdFinalization = (typeof FinalizationRegistry === 'undefined')
58
101
  ? { register: () => {}, unregister: () => {} }
@@ -74,12 +117,6 @@ export class Zstd {
74
117
  wasm.__wbg_zstd_free(ptr, 0);
75
118
  }
76
119
  /**
77
- * Compresses data using Zstandard compression
78
- *
79
- * # Arguments
80
- *
81
- * * `data` - Input data to compress
82
- * * `level` - Compression level (1-22, default 3). Higher = better compression but slower
83
120
  * @param {Uint8Array} data
84
121
  * @param {number | null} [level]
85
122
  * @returns {Uint8Array}
@@ -96,11 +133,6 @@ export class Zstd {
96
133
  return v2;
97
134
  }
98
135
  /**
99
- * Decompresses Zstandard compressed data
100
- *
101
- * # Arguments
102
- *
103
- * * `compressed_data` - Zstandard compressed data
104
136
  * @param {Uint8Array} compressed_data
105
137
  * @returns {Uint8Array}
106
138
  */
@@ -228,14 +260,6 @@ export class ZstdCompressor {
228
260
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
229
261
  return v1;
230
262
  }
231
- /**
232
- * Gets the current compression level
233
- * @returns {number}
234
- */
235
- get level() {
236
- const ret = wasm.zstdcompressor_level(this.__wbg_ptr);
237
- return ret;
238
- }
239
263
  }
240
264
  if (Symbol.dispose) ZstdCompressor.prototype[Symbol.dispose] = ZstdCompressor.prototype.free;
241
265
 
@@ -288,7 +312,7 @@ export class ZstdDecompressor {
288
312
  return v1;
289
313
  }
290
314
  /**
291
- * Decompresses all remaining data
315
+ * Decompresses all remaining data and consumes the decoder.
292
316
  * @returns {Uint8Array}
293
317
  */
294
318
  finalize() {
Binary file
@@ -1,6 +1,8 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
+ export const compress: (a: number, b: number, c: number) => [number, number, number, number];
5
+ export const decompress: (a: number, b: number) => [number, number, number, number];
4
6
  export const __wbg_zstd_free: (a: number, b: number) => void;
5
7
  export const zstd_compress: (a: number, b: number, c: number) => [number, number, number, number];
6
8
  export const zstd_decompress: (a: number, b: number) => [number, number, number, number];
@@ -14,7 +16,6 @@ export const __wbg_zstdcompressor_free: (a: number, b: number) => void;
14
16
  export const zstdcompressor_new: (a: number) => [number, number, number];
15
17
  export const zstdcompressor_compress_chunk: (a: number, b: number, c: number) => [number, number];
16
18
  export const zstdcompressor_finalize: (a: number) => [number, number, number, number];
17
- export const zstdcompressor_level: (a: number) => number;
18
19
  export const __wbg_zstddecompressor_free: (a: number, b: number) => void;
19
20
  export const zstddecompressor_new: (a: number, b: number) => [number, number, number];
20
21
  export const zstddecompressor_decompress_chunk: (a: number, b: number) => [number, number, number, number];