zip-writer 1.0.1 → 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 +427 -0
- package/dist/{crc.d.ts → crc-browser.d.ts} +1 -1
- package/dist/crc-browser.d.ts.map +1 -0
- package/dist/{crc.js → crc-browser.js} +22 -2
- package/dist/crc-browser.js.map +1 -0
- package/dist/crc-node.d.ts +2 -0
- package/dist/crc-node.d.ts.map +1 -0
- package/dist/crc-node.js +3 -0
- package/dist/crc-node.js.map +1 -0
- package/dist/index.d.ts +44 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +64 -11
- package/dist/index.js.map +1 -1
- package/dist/write-central-directory.js +2 -2
- package/dist/write-central-directory.js.map +1 -1
- package/dist/write-entry.d.ts +3 -1
- package/dist/write-entry.d.ts.map +1 -1
- package/dist/write-entry.js +1 -2
- package/dist/write-entry.js.map +1 -1
- package/package.json +21 -3
- package/dist/crc-lookup.d.ts +0 -6
- package/dist/crc-lookup.d.ts.map +0 -1
- package/dist/crc-lookup.js +0 -22
- package/dist/crc-lookup.js.map +0 -1
- package/dist/crc.d.ts.map +0 -1
- package/dist/crc.js.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
# zip-writable
|
|
2
|
+
|
|
3
|
+
A modern streaming ZIP archive writer for JavaScript that uses the
|
|
4
|
+
[Web Streams API](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API)
|
|
5
|
+
and
|
|
6
|
+
[Compression Streams API](https://developer.mozilla.org/en-US/docs/Web/API/Compression_Streams_API).
|
|
7
|
+
|
|
8
|
+
## Features
|
|
9
|
+
|
|
10
|
+
- **Streaming API** - Write ZIP archives using Web Streams
|
|
11
|
+
- **Memory efficient** - Process large files without loading them entirely into
|
|
12
|
+
memory
|
|
13
|
+
- **ZIP64 support** - Automatic handling of large files and archives
|
|
14
|
+
- **Modern JavaScript** - Built with TypeScript, uses native Web Streams API
|
|
15
|
+
- **Flexible** - Reorder, rename, or remove entries before finalizing
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install zip-writable
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Basic Usage
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { ZipWriter } from "zip-writable";
|
|
27
|
+
|
|
28
|
+
const zipWriter = new ZipWriter();
|
|
29
|
+
|
|
30
|
+
// Pipe the ZIP output somewhere
|
|
31
|
+
zipWriter.readable.pipeTo(writableStream);
|
|
32
|
+
|
|
33
|
+
// Add entries to the ZIP
|
|
34
|
+
const entryWriter = zipWriter.createEntryStream({ name: "hello.txt" });
|
|
35
|
+
const writer = entryWriter.writable.getWriter();
|
|
36
|
+
await writer.write(new TextEncoder().encode("Hello, World!"));
|
|
37
|
+
await writer.close();
|
|
38
|
+
|
|
39
|
+
// Get entry info after writing
|
|
40
|
+
const info = await entryWriter.getEntryInfo();
|
|
41
|
+
console.log(info);
|
|
42
|
+
|
|
43
|
+
// Finalize the ZIP archive
|
|
44
|
+
await zipWriter.finalize();
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## API Reference
|
|
48
|
+
|
|
49
|
+
### `ZipWriter`
|
|
50
|
+
|
|
51
|
+
The main class for creating ZIP archives.
|
|
52
|
+
|
|
53
|
+
#### Constructor
|
|
54
|
+
|
|
55
|
+
##### `new ZipWriter(options?)`
|
|
56
|
+
|
|
57
|
+
**Parameters:**
|
|
58
|
+
|
|
59
|
+
- `options.crc32?: (data: Uint8Array, value?: number) => number` - Optional
|
|
60
|
+
CRC32 function to use. Defaults to `zlib.crc32` on Node.js and a pure
|
|
61
|
+
JavaScript implementation in browsers.
|
|
62
|
+
|
|
63
|
+
#### Properties
|
|
64
|
+
|
|
65
|
+
##### `readable: ReadableStream<Uint8Array>`
|
|
66
|
+
|
|
67
|
+
The readable stream containing the ZIP archive data. Pipe this to a file, HTTP
|
|
68
|
+
response, or any other writable destination.
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
// Save to file (Node.js with fs/promises)
|
|
72
|
+
import { createWriteStream } from "fs";
|
|
73
|
+
import { Writable } from "stream";
|
|
74
|
+
|
|
75
|
+
zipWriter.readable.pipeTo(Writable.toWeb(createWriteStream("archive.zip")));
|
|
76
|
+
|
|
77
|
+
// Send as HTTP response (in a web server)
|
|
78
|
+
return new Response(zipWriter.readable, {
|
|
79
|
+
headers: {
|
|
80
|
+
"Content-Type": "application/zip",
|
|
81
|
+
"Content-Disposition": 'attachment; filename="archive.zip"',
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
##### `entries: ReadonlyArray<Readonly<EntryInfo>>`
|
|
87
|
+
|
|
88
|
+
Array of all entries that have been written to the archive. Each entry contains
|
|
89
|
+
metadata like size, CRC32, compression info, etc.
|
|
90
|
+
|
|
91
|
+
#### Methods
|
|
92
|
+
|
|
93
|
+
##### `createEntry(data: Uint8Array, options: EntryOptions): Promise<EntryInfo>`
|
|
94
|
+
|
|
95
|
+
Convenience method to add a buffer as an entry to the zip archive. Returns a
|
|
96
|
+
promise that resolves to the entry info once written. For more efficient
|
|
97
|
+
streaming writes, use `createEntryStream()`.
|
|
98
|
+
|
|
99
|
+
**Parameters:**
|
|
100
|
+
|
|
101
|
+
- `data: Uint8Array` - Entry data to write
|
|
102
|
+
- `options.name: string` - Entry name including internal path (required)
|
|
103
|
+
- `options.comment?: string` - Entry comment
|
|
104
|
+
- `options.date?: Date` - Entry date (defaults to current date)
|
|
105
|
+
- `options.mode?: number` - Entry permissions (Unix-style mode)
|
|
106
|
+
- `options.store?: boolean` - Set to `true` to disable compression (defaults to
|
|
107
|
+
`false`, using DEFLATE compression)
|
|
108
|
+
|
|
109
|
+
**Example:**
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
const data = new TextEncoder().encode("Hello, World!");
|
|
113
|
+
const entryInfo = await zipWriter.createEntry(data, { name: "hello.txt" });
|
|
114
|
+
console.log(entryInfo);
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
##### `createEntryStream(options: EntryOptions): EntryWriter`
|
|
118
|
+
|
|
119
|
+
Create a new entry in the ZIP archive. Returns an `EntryWriter` that you can
|
|
120
|
+
write data to via streams.
|
|
121
|
+
|
|
122
|
+
**Parameters:**
|
|
123
|
+
|
|
124
|
+
- `options.name: string` - Entry name including internal path (required)
|
|
125
|
+
- `options.comment?: string` - Entry comment
|
|
126
|
+
- `options.date?: Date` - Entry date (defaults to current date)
|
|
127
|
+
- `options.mode?: number` - Entry permissions (Unix-style mode)
|
|
128
|
+
- `options.store?: boolean` - Set to `true` to disable compression (defaults to
|
|
129
|
+
`false`, using DEFLATE compression)
|
|
130
|
+
|
|
131
|
+
**Examples:**
|
|
132
|
+
|
|
133
|
+
```ts
|
|
134
|
+
// Simple text file
|
|
135
|
+
const entry = zipWriter.createEntryStream({ name: "readme.txt" });
|
|
136
|
+
const writer = entry.writable.getWriter();
|
|
137
|
+
await writer.write(new TextEncoder().encode("Hello!"));
|
|
138
|
+
await writer.close();
|
|
139
|
+
|
|
140
|
+
// Stream a fetch response
|
|
141
|
+
const response = await fetch(imageUrl);
|
|
142
|
+
response.body.pipeTo(
|
|
143
|
+
zipWriter.createEntryStream({ name: "images/photo.jpg" }).writable,
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
// With custom date and permissions
|
|
147
|
+
zipWriter.createEntryStream({
|
|
148
|
+
name: "script.sh",
|
|
149
|
+
date: new Date("2024-01-01"),
|
|
150
|
+
mode: 0o755, // executable
|
|
151
|
+
}).writable;
|
|
152
|
+
|
|
153
|
+
// Disable compression for already-compressed files
|
|
154
|
+
zipWriter.createEntryStream({
|
|
155
|
+
name: "video.mp4",
|
|
156
|
+
store: true, // no compression
|
|
157
|
+
}).writable;
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
##### `onceQueueEmpty(): Promise<void>`
|
|
161
|
+
|
|
162
|
+
Wait until all currently queued entries have been written. Useful when you need
|
|
163
|
+
to ensure entries are complete before continuing.
|
|
164
|
+
|
|
165
|
+
```ts
|
|
166
|
+
// Add multiple entries
|
|
167
|
+
zipWriter.createEntryStream({ name: "file1.txt" }).writable;
|
|
168
|
+
zipWriter.createEntryStream({ name: "file2.txt" }).writable;
|
|
169
|
+
|
|
170
|
+
// Wait for all to complete
|
|
171
|
+
await zipWriter.onceQueueEmpty();
|
|
172
|
+
console.log(`Wrote ${zipWriter.entries.length} entries`);
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
##### `finalize(options?): Promise<{ zip64: boolean, uncompressedEntriesSize: bigint, compressedEntriesSize: bigint, fileSize: bigint }>`
|
|
176
|
+
|
|
177
|
+
Finalize the ZIP archive by writing the central directory and end of central
|
|
178
|
+
directory records. This must be called after all entries have been added. This
|
|
179
|
+
will await any pending entries to finish writing before finalizing.
|
|
180
|
+
|
|
181
|
+
**Parameters:**
|
|
182
|
+
|
|
183
|
+
- `options.entries?: ReadonlyArray<Readonly<EntryInfo>>` - (Advanced) Override
|
|
184
|
+
the entries to write in the central directory. This can be used to reorder,
|
|
185
|
+
remove, or rename entries before finalizing the archive. You cannot change the
|
|
186
|
+
offset, CRC32, compressed size, or uncompressed size of entries - only the
|
|
187
|
+
name, comment, date, and order.
|
|
188
|
+
|
|
189
|
+
**Returns:**
|
|
190
|
+
|
|
191
|
+
- `zip64: boolean` - Whether the archive uses ZIP64 format
|
|
192
|
+
- `uncompressedEntriesSize: bigint` - Total uncompressed size of all entries
|
|
193
|
+
- `compressedEntriesSize: bigint` - Total compressed size of all entries
|
|
194
|
+
- `fileSize: bigint` - Total size of the ZIP file
|
|
195
|
+
|
|
196
|
+
```ts
|
|
197
|
+
const result = await zipWriter.finalize();
|
|
198
|
+
console.log(`Created ${result.zip64 ? "ZIP64" : "standard"} archive`);
|
|
199
|
+
console.log(`File size: ${result.fileSize} bytes`);
|
|
200
|
+
console.log(
|
|
201
|
+
`Compression ratio: ${Number(result.compressedEntriesSize) / Number(result.uncompressedEntriesSize)}`,
|
|
202
|
+
);
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Example with entries option:**
|
|
206
|
+
|
|
207
|
+
```ts
|
|
208
|
+
// Wait for all entries to be written
|
|
209
|
+
await zipWriter.onceQueueEmpty();
|
|
210
|
+
|
|
211
|
+
// Get current entries and modify them
|
|
212
|
+
const entries = [...zipWriter.entries];
|
|
213
|
+
|
|
214
|
+
// Remove an entry
|
|
215
|
+
const filtered = entries.filter((e) => e.name !== "temp.txt");
|
|
216
|
+
|
|
217
|
+
// Rename entries
|
|
218
|
+
const renamed = entries.map((e) => ({
|
|
219
|
+
...e,
|
|
220
|
+
name: e.name.replace(/^old\//, "new/"),
|
|
221
|
+
}));
|
|
222
|
+
|
|
223
|
+
// Sort entries alphabetically
|
|
224
|
+
const sorted = [...entries].sort((a, b) => a.name.localeCompare(b.name));
|
|
225
|
+
|
|
226
|
+
// Finalize with modified entries
|
|
227
|
+
await zipWriter.finalize({ entries: sorted });
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### `EntryWriter`
|
|
231
|
+
|
|
232
|
+
Returned by `ZipWriter.createEntryStream()`. Provides a writable stream to write
|
|
233
|
+
entry data.
|
|
234
|
+
|
|
235
|
+
#### Properties
|
|
236
|
+
|
|
237
|
+
##### `writable: WritableStream<Uint8Array>`
|
|
238
|
+
|
|
239
|
+
The writable stream to write entry data to. Close this stream when done writing.
|
|
240
|
+
|
|
241
|
+
```ts
|
|
242
|
+
const entryWriter = zipWriter.createEntryStream({ name: "data.txt" });
|
|
243
|
+
|
|
244
|
+
// Using a writer
|
|
245
|
+
const writer = entryWriter.writable.getWriter();
|
|
246
|
+
await writer.write(new TextEncoder().encode("chunk 1"));
|
|
247
|
+
await writer.write(new TextEncoder().encode("chunk 2"));
|
|
248
|
+
await writer.close();
|
|
249
|
+
|
|
250
|
+
// Using pipeTo
|
|
251
|
+
someReadableStream.pipeTo(entryWriter.writable);
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
#### Methods
|
|
255
|
+
|
|
256
|
+
##### `getEntryInfo(): Promise<EntryInfo>`
|
|
257
|
+
|
|
258
|
+
Get entry info. Resolves once all data has been written to the ZIP stream.
|
|
259
|
+
|
|
260
|
+
**Returns `EntryInfo`:**
|
|
261
|
+
|
|
262
|
+
- `name: string` - Entry name
|
|
263
|
+
- `comment?: string` - Entry comment
|
|
264
|
+
- `date?: Date` - Entry date
|
|
265
|
+
- `mode?: number` - Entry permissions
|
|
266
|
+
- `store?: boolean` - Whether compression was disabled
|
|
267
|
+
- `startOffset: bigint | number` - Byte offset in the archive
|
|
268
|
+
- `crc32: number` - CRC32 checksum
|
|
269
|
+
- `uncompressedSize: bigint | number` - Uncompressed size in bytes
|
|
270
|
+
- `compressedSize: bigint | number` - Compressed size in bytes
|
|
271
|
+
- `zip64: boolean` - Whether this entry uses ZIP64 format
|
|
272
|
+
|
|
273
|
+
```ts
|
|
274
|
+
const entryWriter = zipWriter.createEntryStream({ name: "test.txt" });
|
|
275
|
+
await someStream.pipeTo(entryWriter.writable);
|
|
276
|
+
|
|
277
|
+
const info = await entryWriter.getEntryInfo();
|
|
278
|
+
console.log(
|
|
279
|
+
`Wrote ${info.name}: ${info.uncompressedSize} bytes (compressed to ${info.compressedSize})`,
|
|
280
|
+
);
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Complete Example
|
|
284
|
+
|
|
285
|
+
```ts
|
|
286
|
+
import { ZipWriter } from "zip-writable";
|
|
287
|
+
import { createWriteStream } from "fs";
|
|
288
|
+
import { Writable } from "stream";
|
|
289
|
+
|
|
290
|
+
async function createZip() {
|
|
291
|
+
const zipWriter = new ZipWriter();
|
|
292
|
+
|
|
293
|
+
// Pipe output to file
|
|
294
|
+
const fileStream = Writable.toWeb(createWriteStream("output.zip"));
|
|
295
|
+
zipWriter.readable.pipeTo(fileStream);
|
|
296
|
+
|
|
297
|
+
// Add a text file using createEntry
|
|
298
|
+
const data1 = new TextEncoder().encode("This is a readme");
|
|
299
|
+
await zipWriter.createEntry(data1, { name: "readme.txt" });
|
|
300
|
+
|
|
301
|
+
// Add files from URLs using createEntryStream
|
|
302
|
+
const imageResponse = await fetch("https://example.com/image.png");
|
|
303
|
+
await imageResponse.body.pipeTo(
|
|
304
|
+
zipWriter.createEntryStream({ name: "images/photo.png" }).writable,
|
|
305
|
+
);
|
|
306
|
+
|
|
307
|
+
// Add a JSON file using createEntry
|
|
308
|
+
const data = { hello: "world" };
|
|
309
|
+
const jsonData = new TextEncoder().encode(JSON.stringify(data, null, 2));
|
|
310
|
+
await zipWriter.createEntry(jsonData, { name: "data.json" });
|
|
311
|
+
|
|
312
|
+
// Wait for all entries and check results
|
|
313
|
+
await zipWriter.onceQueueEmpty();
|
|
314
|
+
console.log(`Added ${zipWriter.entries.length} entries`);
|
|
315
|
+
|
|
316
|
+
// Finalize the archive
|
|
317
|
+
const result = await zipWriter.finalize();
|
|
318
|
+
console.log(`Created archive: ${result.fileSize} bytes`);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
createZip().catch(console.error);
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Browser Usage
|
|
325
|
+
|
|
326
|
+
```ts
|
|
327
|
+
// Create a ZIP and trigger download
|
|
328
|
+
const zipWriter = new ZipWriter();
|
|
329
|
+
|
|
330
|
+
// Add entries...
|
|
331
|
+
const data = new TextEncoder().encode("Hello");
|
|
332
|
+
zipWriter
|
|
333
|
+
.createEntry(data, { name: "file.txt" })
|
|
334
|
+
.then(() => zipWriter.finalize());
|
|
335
|
+
|
|
336
|
+
// Create download link
|
|
337
|
+
const blob = await new Response(zipWriter.readable).blob();
|
|
338
|
+
const url = URL.createObjectURL(blob);
|
|
339
|
+
const a = document.createElement("a");
|
|
340
|
+
a.href = url;
|
|
341
|
+
a.download = "archive.zip";
|
|
342
|
+
a.click();
|
|
343
|
+
URL.revokeObjectURL(url);
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Benchmarks
|
|
347
|
+
|
|
348
|
+
Run using `npm run bench`. On a MacBook Pro (M2 Pro, 2023), Node.js 20.19.0:
|
|
349
|
+
|
|
350
|
+
### Small files (10 × 10KB)
|
|
351
|
+
|
|
352
|
+
| Library | ops/sec | Relative Speed |
|
|
353
|
+
| ----------------------------- | ------- | -------------- |
|
|
354
|
+
| zip-writable (@node-rs/crc32) | 721.94 | **fastest** |
|
|
355
|
+
| zip-writable | 674.57 | 1.07x slower |
|
|
356
|
+
| zip-writable (js crc32) | 659.90 | 1.09x slower |
|
|
357
|
+
| fflate | 553.00 | 1.31x slower |
|
|
358
|
+
| archiver | 338.14 | 2.14x slower |
|
|
359
|
+
| @zip.js/zip.js | 279.19 | 2.59x slower |
|
|
360
|
+
|
|
361
|
+
### Medium files (100 × 100KB)
|
|
362
|
+
|
|
363
|
+
| Library | ops/sec | Relative Speed |
|
|
364
|
+
| ----------------------------- | ------- | -------------- |
|
|
365
|
+
| zip-writable | 23.91 | **fastest** |
|
|
366
|
+
| zip-writable (@node-rs/crc32) | 22.91 | 1.04x slower |
|
|
367
|
+
| zip-writable (js crc32) | 18.93 | 1.26x slower |
|
|
368
|
+
| archiver | 18.10 | 1.32x slower |
|
|
369
|
+
| @zip.js/zip.js | 11.65 | 2.05x slower |
|
|
370
|
+
| fflate | 10.27 | 2.33x slower |
|
|
371
|
+
|
|
372
|
+
### Large files (5 × 10MB)
|
|
373
|
+
|
|
374
|
+
| Library | ops/sec | Relative Speed |
|
|
375
|
+
| ----------------------------- | ------- | -------------- |
|
|
376
|
+
| zip-writable | 7.22 | **fastest** |
|
|
377
|
+
| zip-writable (@node-rs/crc32) | 6.78 | 1.06x slower |
|
|
378
|
+
| archiver | 5.65 | 1.28x slower |
|
|
379
|
+
| zip-writable (js crc32) | 4.82 | 1.50x slower |
|
|
380
|
+
| fflate | 4.20 | 1.72x slower |
|
|
381
|
+
| @zip.js/zip.js | 4.00 | 1.81x slower |
|
|
382
|
+
|
|
383
|
+
### Many files (1000 × 1KB)
|
|
384
|
+
|
|
385
|
+
| Library | ops/sec | Relative Speed |
|
|
386
|
+
| ----------------------------- | ------- | -------------- |
|
|
387
|
+
| fflate | 10.08 | **fastest** |
|
|
388
|
+
| zip-writable | 6.89 | 1.46x slower |
|
|
389
|
+
| zip-writable (@node-rs/crc32) | 5.94 | 1.70x slower |
|
|
390
|
+
| zip-writable (js crc32) | 5.63 | 1.79x slower |
|
|
391
|
+
| archiver | 4.98 | 2.02x slower |
|
|
392
|
+
| @zip.js/zip.js | 2.93 | 3.44x slower |
|
|
393
|
+
|
|
394
|
+
Note: These benchmarks vary quite a bit, and they aren't an indication that any
|
|
395
|
+
library is "better" than any other. For ZipWriter, these exist as a check to
|
|
396
|
+
ensure that performance isn't significantly worse than other libraries.
|
|
397
|
+
|
|
398
|
+
## ZIP64 Support
|
|
399
|
+
|
|
400
|
+
The library automatically uses ZIP64 format when needed:
|
|
401
|
+
|
|
402
|
+
- Archives with more than 65,535 entries
|
|
403
|
+
- Files larger than 4GB
|
|
404
|
+
- Central directory larger than 4GB
|
|
405
|
+
- Central directory offset greater than 4GB
|
|
406
|
+
|
|
407
|
+
No special configuration is needed - it's handled automatically.
|
|
408
|
+
|
|
409
|
+
## Error Handling
|
|
410
|
+
|
|
411
|
+
```ts
|
|
412
|
+
try {
|
|
413
|
+
const entryWriter = zipWriter.entry({ name: "test.txt" });
|
|
414
|
+
await someStream.pipeTo(entryWriter.writable);
|
|
415
|
+
await entryWriter.getEntryInfo();
|
|
416
|
+
} catch (error) {
|
|
417
|
+
console.error("Failed to write entry:", error);
|
|
418
|
+
// The ZIP stream is aborted on error - cannot add more entries
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
Once an error occurs during entry writing, the ZIP stream is corrupted and
|
|
423
|
+
cannot be recovered. You must create a new `ZipWriter` instance.
|
|
424
|
+
|
|
425
|
+
## License
|
|
426
|
+
|
|
427
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crc-browser.d.ts","sourceRoot":"","sources":["../src/crc-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA8BH;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAC7B,KAAK,GAAE,MAAU,GAChB,MAAM,CAgCR"}
|
|
@@ -20,7 +20,27 @@
|
|
|
20
20
|
* misrepresented as being the original software.
|
|
21
21
|
* 3. This notice may not be removed or altered from any source distribution.
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* From https://github.com/holepunchto/crc-universal/blob/main/lookup.js
|
|
25
|
+
* Licensed under Apache-2.0
|
|
26
|
+
*/
|
|
27
|
+
const lookup = new Array(16);
|
|
28
|
+
for (let i = 0; i < 16; i++) {
|
|
29
|
+
lookup[i] = new Uint32Array(0x100);
|
|
30
|
+
}
|
|
31
|
+
for (let i = 0; i <= 0xff; i++) {
|
|
32
|
+
let crc = i;
|
|
33
|
+
for (let j = 0; j < 8; j++) {
|
|
34
|
+
crc = (crc >>> 1) ^ ((crc & 1) * 0xedb88320);
|
|
35
|
+
}
|
|
36
|
+
lookup[0][i] = crc;
|
|
37
|
+
}
|
|
38
|
+
for (let i = 0; i <= 0xff; i++) {
|
|
39
|
+
for (let j = 1; j < 16; j++) {
|
|
40
|
+
lookup[j][i] =
|
|
41
|
+
(lookup[j - 1][i] >>> 8) ^ lookup[0][lookup[j - 1][i] & 0xff];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
24
44
|
/**
|
|
25
45
|
* Computes a 32-bit Cyclic Redundancy Check checksum of data. If value is
|
|
26
46
|
* specified, it is used as the starting value of the checksum, otherwise, 0 is
|
|
@@ -59,4 +79,4 @@ export function crc32(data, value = 0) {
|
|
|
59
79
|
}
|
|
60
80
|
return ~crc >>> 0;
|
|
61
81
|
}
|
|
62
|
-
//# sourceMappingURL=crc.js.map
|
|
82
|
+
//# sourceMappingURL=crc-browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crc-browser.js","sourceRoot":"","sources":["../src/crc-browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crc-node.d.ts","sourceRoot":"","sources":["../src/crc-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/crc-node.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crc-node.js","sourceRoot":"","sources":["../src/crc-node.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,16 +28,40 @@ export type EntryInfoStandard = {
|
|
|
28
28
|
export type EntryInfo = EntryInfoZip64 | EntryInfoStandard;
|
|
29
29
|
export declare class ZipWriter<TIsZip64 extends boolean = false> {
|
|
30
30
|
#private;
|
|
31
|
+
/**
|
|
32
|
+
* @param crc Optional CRC32 function to use. Defaults to zlib.crc32 on Node and a pure JS implementation in browsers.
|
|
33
|
+
*/
|
|
34
|
+
constructor({ crc32, }?: {
|
|
35
|
+
crc32?: (data: Uint8Array<ArrayBuffer>, value?: number) => number;
|
|
36
|
+
});
|
|
31
37
|
get readable(): ReadableStream<ArrayBufferView<ArrayBufferLike>>;
|
|
32
38
|
get entries(): ReadonlyArray<Readonly<EntryInfo>>;
|
|
33
39
|
/**
|
|
34
40
|
* Wait until all currently queued entries have been written.
|
|
35
41
|
*/
|
|
36
42
|
onceQueueEmpty(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Convenience wrapper around `createEntryStream` to write all data at once.
|
|
45
|
+
* Use `createEntryStream` for more efficient streaming writes. Calls to
|
|
46
|
+
* createEntry() will be queued internally and each will resolve once it's
|
|
47
|
+
* written to the archive.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* const data = new TextEncoder().encode("Hello, World!");
|
|
52
|
+
* const entryInfo = await zipWriter.createEntry(data, { name: "hello.txt" });
|
|
53
|
+
* console.log(entryInfo);
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @param data Entry data
|
|
57
|
+
* @param options Entry filename, comment, compression method, etc.
|
|
58
|
+
* @returns Entry information once the entry has been written.
|
|
59
|
+
*/
|
|
60
|
+
createEntry(data: Uint8Array<ArrayBuffer>, options: EntryOptions): Promise<EntryInfo>;
|
|
37
61
|
/**
|
|
38
62
|
* Create a new entry in the Zip archive. Use the returned
|
|
39
63
|
* entryWriter.writable to write data to the entry. You can await
|
|
40
|
-
* entryWriter.
|
|
64
|
+
* entryWriter.getEntryInfo() to get the entry info once all data has been written.
|
|
41
65
|
*
|
|
42
66
|
* @example
|
|
43
67
|
* ```ts
|
|
@@ -55,20 +79,30 @@ export declare class ZipWriter<TIsZip64 extends boolean = false> {
|
|
|
55
79
|
* new TextEncoder().encode("Hello, World!")
|
|
56
80
|
* );
|
|
57
81
|
* await writer.close();
|
|
58
|
-
* console.log(await entryWriter.
|
|
82
|
+
* console.log(await entryWriter.getEntryInfo()); // Entry info
|
|
59
83
|
* ```
|
|
60
84
|
*
|
|
61
85
|
* @param options Entry options
|
|
62
86
|
*/
|
|
63
|
-
|
|
87
|
+
createEntryStream(options: EntryOptions): EntryWriter;
|
|
64
88
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
89
|
+
* Finalize the ZIP archive by writing the central directory and end of
|
|
90
|
+
* central directory records. You may not add any more entries after calling
|
|
91
|
+
* this method. This will await any pending entries to finish writing before
|
|
92
|
+
* finalizing.
|
|
93
|
+
*
|
|
94
|
+
* @param options.entries (Advanced) Optionally override the entries to write
|
|
95
|
+
* in the central directory. This can be used to reorder, remove, or rename
|
|
96
|
+
* entries before finalizing the archive, however you cannot add invalid
|
|
97
|
+
* entries, add additional entries, or modify their crc32, offsets or sizes.
|
|
98
|
+
* Use zipWriter.entries or entryWriter.getEntryInfo() to get the current
|
|
99
|
+
* entries for sorting or filtering.
|
|
67
100
|
*
|
|
68
|
-
* @
|
|
101
|
+
* @returns Information about the finalized archive.
|
|
69
102
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
103
|
+
finalize({ entries, }?: {
|
|
104
|
+
entries?: ReadonlyArray<Readonly<EntryInfo>>;
|
|
105
|
+
}): Promise<{
|
|
72
106
|
/** Does the archive use ZIP64 format? */
|
|
73
107
|
zip64: boolean;
|
|
74
108
|
/** Total uncompressed size of all entries */
|
|
@@ -94,11 +128,11 @@ declare class EntryWriter {
|
|
|
94
128
|
* .pipeTo(entryWriter.writable);
|
|
95
129
|
* ```
|
|
96
130
|
*/
|
|
97
|
-
get writable(): WritableStream<
|
|
131
|
+
get writable(): WritableStream<Uint8Array<ArrayBuffer>>;
|
|
98
132
|
/**
|
|
99
133
|
* Get entry info. Resolves once all data has been written to the Zip stream.
|
|
100
134
|
*/
|
|
101
|
-
|
|
135
|
+
getEntryInfo(): Promise<EntryInfo>;
|
|
102
136
|
}
|
|
103
137
|
export {};
|
|
104
138
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,KAAK,EAAE,IAAI,CAAC;CACb;AAED,MAAM,MAAM,iBAAiB,GAAG;KAC7B,CAAC,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,MAAM,GACzD,MAAM,GACN,CAAC,SAAS,OAAO,GACf,KAAK,GACL,cAAc,CAAC,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAE3D,qBAAa,SAAS,CAAC,QAAQ,SAAS,OAAO,GAAG,KAAK;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,KAAK,EAAE,IAAI,CAAC;CACb;AAED,MAAM,MAAM,iBAAiB,GAAG;KAC7B,CAAC,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,MAAM,GACzD,MAAM,GACN,CAAC,SAAS,OAAO,GACf,KAAK,GACL,cAAc,CAAC,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAE3D,qBAAa,SAAS,CAAC,QAAQ,SAAS,OAAO,GAAG,KAAK;;IAqBrD;;OAEG;gBACS,EACV,KAAoB,GACrB,GAAE;QACD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;KAC9D;IAIN,IAAI,QAAQ,qDAEX;IAED,IAAI,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAEhD;IAED;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrC;;;;;;;;;;;;;;;;OAgBG;IACG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,YAAY;IAWtE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY;IAgGvC;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,EACb,OAAO,GACR,GAAE;QAAE,OAAO,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;KAAO,GAAG,OAAO,CAAC;QACjE,yCAAyC;QACzC,KAAK,EAAE,OAAO,CAAC;QACf,6CAA6C;QAC7C,uBAAuB,EAAE,MAAM,CAAC;QAChC,2CAA2C;QAC3C,qBAAqB,EAAE,MAAM,CAAC;QAC9B,iCAAiC;QACjC,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CA6EH;AAED,cAAM,WAAW;;IAQf;;OAEG;gBAED,cAAc,EAAE,CACd,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAC9C,OAAO,CAAC,SAAS,CAAC;IAazB;;;;;;;;OAQG;IACH,IAAI,QAAQ,4CAEX;IAED;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CAGzC"}
|
package/dist/index.js
CHANGED
|
@@ -2,11 +2,11 @@ import { writeZipEntry } from "./write-entry.js";
|
|
|
2
2
|
import { getCDFH, getEOCDZip64, getEOCDStandard, } from "./write-central-directory.js";
|
|
3
3
|
import { ZIP64_LIMIT } from "./constants.js";
|
|
4
4
|
import { noop } from "./utils.js";
|
|
5
|
+
import { crc32 as crc32Default } from "#crc32";
|
|
5
6
|
const BUFFER_SIZE = 16 * 1024; // 16 KB
|
|
6
7
|
const bufferedQueue = new ByteLengthQueuingStrategy({
|
|
7
8
|
highWaterMark: BUFFER_SIZE,
|
|
8
9
|
});
|
|
9
|
-
const unbufferedQueue = { highWaterMark: 0 };
|
|
10
10
|
export class ZipWriter {
|
|
11
11
|
#offset = BigInt(0);
|
|
12
12
|
#zipStream = new TransformStream({
|
|
@@ -15,8 +15,8 @@ export class ZipWriter {
|
|
|
15
15
|
this.#offset += BigInt(chunk.byteLength);
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
|
-
//
|
|
19
|
-
|
|
18
|
+
// default buffer on the writable side, we already queue entries
|
|
19
|
+
bufferedQueue,
|
|
20
20
|
// Readable buffer, so that temporary delays on writable consumers don't
|
|
21
21
|
// block the zip writing.
|
|
22
22
|
bufferedQueue);
|
|
@@ -24,6 +24,13 @@ export class ZipWriter {
|
|
|
24
24
|
#queued = Promise.resolve();
|
|
25
25
|
#entryCount = 0;
|
|
26
26
|
#finalized = false;
|
|
27
|
+
#crc32;
|
|
28
|
+
/**
|
|
29
|
+
* @param crc Optional CRC32 function to use. Defaults to zlib.crc32 on Node and a pure JS implementation in browsers.
|
|
30
|
+
*/
|
|
31
|
+
constructor({ crc32 = crc32Default, } = {}) {
|
|
32
|
+
this.#crc32 = crc32;
|
|
33
|
+
}
|
|
27
34
|
get readable() {
|
|
28
35
|
return this.#zipStream.readable;
|
|
29
36
|
}
|
|
@@ -38,10 +45,38 @@ export class ZipWriter {
|
|
|
38
45
|
await this.#queued;
|
|
39
46
|
}
|
|
40
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Convenience wrapper around `createEntryStream` to write all data at once.
|
|
50
|
+
* Use `createEntryStream` for more efficient streaming writes. Calls to
|
|
51
|
+
* createEntry() will be queued internally and each will resolve once it's
|
|
52
|
+
* written to the archive.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* const data = new TextEncoder().encode("Hello, World!");
|
|
57
|
+
* const entryInfo = await zipWriter.createEntry(data, { name: "hello.txt" });
|
|
58
|
+
* console.log(entryInfo);
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @param data Entry data
|
|
62
|
+
* @param options Entry filename, comment, compression method, etc.
|
|
63
|
+
* @returns Entry information once the entry has been written.
|
|
64
|
+
*/
|
|
65
|
+
async createEntry(data, options) {
|
|
66
|
+
const entryWriter = this.createEntryStream(options);
|
|
67
|
+
const writer = entryWriter.writable.getWriter();
|
|
68
|
+
try {
|
|
69
|
+
await writer.write(data);
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
await writer.close();
|
|
73
|
+
}
|
|
74
|
+
return entryWriter.getEntryInfo();
|
|
75
|
+
}
|
|
41
76
|
/**
|
|
42
77
|
* Create a new entry in the Zip archive. Use the returned
|
|
43
78
|
* entryWriter.writable to write data to the entry. You can await
|
|
44
|
-
* entryWriter.
|
|
79
|
+
* entryWriter.getEntryInfo() to get the entry info once all data has been written.
|
|
45
80
|
*
|
|
46
81
|
* @example
|
|
47
82
|
* ```ts
|
|
@@ -59,12 +94,12 @@ export class ZipWriter {
|
|
|
59
94
|
* new TextEncoder().encode("Hello, World!")
|
|
60
95
|
* );
|
|
61
96
|
* await writer.close();
|
|
62
|
-
* console.log(await entryWriter.
|
|
97
|
+
* console.log(await entryWriter.getEntryInfo()); // Entry info
|
|
63
98
|
* ```
|
|
64
99
|
*
|
|
65
100
|
* @param options Entry options
|
|
66
101
|
*/
|
|
67
|
-
|
|
102
|
+
createEntryStream(options) {
|
|
68
103
|
if (this.#finalized) {
|
|
69
104
|
throw new TypeError("Cannot add entry after finalize() has been called");
|
|
70
105
|
}
|
|
@@ -88,6 +123,7 @@ export class ZipWriter {
|
|
|
88
123
|
const reader = readable.getReader();
|
|
89
124
|
try {
|
|
90
125
|
const entryInfo = await writeZipEntry({
|
|
126
|
+
crc32: this.#crc32,
|
|
91
127
|
writer,
|
|
92
128
|
reader,
|
|
93
129
|
entryOptions: options,
|
|
@@ -120,7 +156,7 @@ export class ZipWriter {
|
|
|
120
156
|
*
|
|
121
157
|
* @param entries New entries array
|
|
122
158
|
*/
|
|
123
|
-
setEntries(entries) {
|
|
159
|
+
#setEntries(entries) {
|
|
124
160
|
const currentEntriesByOffset = new Map();
|
|
125
161
|
for (const entry of this.#entries) {
|
|
126
162
|
currentEntriesByOffset.set(BigInt(entry.startOffset), entry);
|
|
@@ -145,11 +181,29 @@ export class ZipWriter {
|
|
|
145
181
|
}
|
|
146
182
|
this.#entries = entries.map((entry) => ({ ...entry }));
|
|
147
183
|
}
|
|
148
|
-
|
|
184
|
+
/**
|
|
185
|
+
* Finalize the ZIP archive by writing the central directory and end of
|
|
186
|
+
* central directory records. You may not add any more entries after calling
|
|
187
|
+
* this method. This will await any pending entries to finish writing before
|
|
188
|
+
* finalizing.
|
|
189
|
+
*
|
|
190
|
+
* @param options.entries (Advanced) Optionally override the entries to write
|
|
191
|
+
* in the central directory. This can be used to reorder, remove, or rename
|
|
192
|
+
* entries before finalizing the archive, however you cannot add invalid
|
|
193
|
+
* entries, add additional entries, or modify their crc32, offsets or sizes.
|
|
194
|
+
* Use zipWriter.entries or entryWriter.getEntryInfo() to get the current
|
|
195
|
+
* entries for sorting or filtering.
|
|
196
|
+
*
|
|
197
|
+
* @returns Information about the finalized archive.
|
|
198
|
+
*/
|
|
199
|
+
async finalize({ entries, } = {}) {
|
|
149
200
|
if (this.#finalized) {
|
|
150
201
|
throw new TypeError("finalize() has already been called");
|
|
151
202
|
}
|
|
152
203
|
this.#finalized = true;
|
|
204
|
+
if (entries) {
|
|
205
|
+
this.#setEntries(entries);
|
|
206
|
+
}
|
|
153
207
|
// We do this as an IIFE to avoid an unhandled error, so that a user can
|
|
154
208
|
// call finalize() without needing to await and catch an error. Any error
|
|
155
209
|
// will be propagated to the stream output, but the user can optionally
|
|
@@ -206,8 +260,7 @@ export class ZipWriter {
|
|
|
206
260
|
}
|
|
207
261
|
}
|
|
208
262
|
class EntryWriter {
|
|
209
|
-
|
|
210
|
-
#entryStream = new TransformStream(undefined, unbufferedQueue, unbufferedQueue);
|
|
263
|
+
#entryStream = new TransformStream(undefined, bufferedQueue, bufferedQueue);
|
|
211
264
|
#written;
|
|
212
265
|
/**
|
|
213
266
|
* @param enqueueAndPipe Function that enqueues the entry data readable, pipes it to the Zip stream, and returns a promise that resolves to the entry info once done.
|
|
@@ -238,7 +291,7 @@ class EntryWriter {
|
|
|
238
291
|
/**
|
|
239
292
|
* Get entry info. Resolves once all data has been written to the Zip stream.
|
|
240
293
|
*/
|
|
241
|
-
async
|
|
294
|
+
async getEntryInfo() {
|
|
242
295
|
return this.#written;
|
|
243
296
|
}
|
|
244
297
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,OAAO,EACP,YAAY,EACZ,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -255,10 +255,10 @@ export function getEOCDZip64(entriesCount, centralDirectoryOffset, centralDirect
|
|
|
255
255
|
view.setUint32(offset, END_OF_CENTRAL_DIR_SIGNATURE);
|
|
256
256
|
offset += 4;
|
|
257
257
|
// Number of this disk
|
|
258
|
-
view.setUint16(offset,
|
|
258
|
+
view.setUint16(offset, 0, true);
|
|
259
259
|
offset += 2;
|
|
260
260
|
// Disk where central directory starts
|
|
261
|
-
view.setUint16(offset,
|
|
261
|
+
view.setUint16(offset, 0, true);
|
|
262
262
|
offset += 2;
|
|
263
263
|
// Number of central directory records on this disk
|
|
264
264
|
view.setUint16(offset, 0xffff, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-central-directory.js","sourceRoot":"","sources":["../src/write-central-directory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"write-central-directory.js","sourceRoot":"","sources":["../src/write-central-directory.ts"],"names":[],"mappings":"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"}
|
package/dist/write-entry.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { EntryInfoStandard, EntryInfoZip64, EntryOptions } from "./index.js
|
|
|
2
2
|
/**
|
|
3
3
|
* Write a zip entry to the given writer from the given reader.
|
|
4
4
|
*/
|
|
5
|
-
export declare function writeZipEntry({ writer, reader, entryOptions, startOffset, }: {
|
|
5
|
+
export declare function writeZipEntry({ writer, reader, entryOptions, startOffset, crc32, }: {
|
|
6
6
|
/** Writer for the zip archive */
|
|
7
7
|
writer: WritableStreamDefaultWriter<Uint8Array<ArrayBuffer>>;
|
|
8
8
|
/** Reader for the entry data */
|
|
@@ -11,6 +11,8 @@ export declare function writeZipEntry({ writer, reader, entryOptions, startOffse
|
|
|
11
11
|
entryOptions: EntryOptions;
|
|
12
12
|
/** Offset in the zip archive where this entry starts */
|
|
13
13
|
startOffset: bigint;
|
|
14
|
+
/** CRC32 function to use */
|
|
15
|
+
crc32: (data: Uint8Array<ArrayBuffer>, value?: number) => number;
|
|
14
16
|
}): Promise<EntryInfoZip64 | EntryInfoStandard>;
|
|
15
17
|
export declare function getLocalFileHeader(options: EntryOptions): Uint8Array<ArrayBuffer>;
|
|
16
18
|
export declare function getDataDescriptorStandard(entryInfo: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-entry.d.ts","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,YAAY,EACb,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"write-entry.d.ts","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,YAAY,EACb,MAAM,YAAY,CAAC;AAiBpB;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAClC,MAAM,EACN,MAAM,EACN,YAAY,EACZ,WAAW,EACX,KAAK,GACN,EAAE;IACD,iCAAiC;IACjC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7D,gCAAgC;IAChC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7D,gCAAgC;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAClE,+CAsFA;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,GACpB,UAAU,CAAC,WAAW,CAAC,CA4DzB;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,UAAU,CAAC,WAAW,CAAC,CAuB1B;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,UAAU,CAAC,WAAW,CAAC,CAuB1B"}
|
package/dist/write-entry.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { LOCAL_FILE_HEADER_SIGNATURE, DATA_DESCRIPTOR_SIGNATURE, VERSION_NEEDED_STANDARD, GENERAL_PURPOSE_FLAGS, COMPRESSION_METHOD_STORE, COMPRESSION_METHOD_DEFLATE, LOCAL_FILE_HEADER_SIZE, ZIP64_LIMIT, DATA_DESCRIPTOR_SIZE, DATA_DESCRIPTOR_SIZE_ZIP64, } from "./constants.js";
|
|
2
2
|
import { getDosTime, getDosDate } from "./utils.js";
|
|
3
|
-
import { crc32 } from "./crc.js";
|
|
4
3
|
const textEncoder = new TextEncoder();
|
|
5
4
|
/**
|
|
6
5
|
* Write a zip entry to the given writer from the given reader.
|
|
7
6
|
*/
|
|
8
|
-
export async function writeZipEntry({ writer, reader, entryOptions, startOffset, }) {
|
|
7
|
+
export async function writeZipEntry({ writer, reader, entryOptions, startOffset, crc32, }) {
|
|
9
8
|
let uncompressedSize = BigInt(0);
|
|
10
9
|
let compressedSize = BigInt(0);
|
|
11
10
|
let crc = 0;
|
package/dist/write-entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-entry.js","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,EACtB,WAAW,EACX,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"write-entry.js","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zip-writer",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"exports": {
|
|
5
5
|
".": {
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"import": "./dist/index.js"
|
|
8
8
|
}
|
|
9
9
|
},
|
|
10
|
+
"imports": {
|
|
11
|
+
"#crc32": {
|
|
12
|
+
"browser": "./src/crc-browser.ts",
|
|
13
|
+
"default": "./src/crc-node.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
10
16
|
"type": "module",
|
|
11
17
|
"scripts": {
|
|
12
|
-
"test": "run-s test:types test:lint test:
|
|
18
|
+
"test": "run-s test:types test:lint test:vitest",
|
|
13
19
|
"prepare": "husky",
|
|
14
20
|
"test:types": "tsc --noEmit",
|
|
15
21
|
"test:lint": "eslint .",
|
|
16
|
-
"test:
|
|
22
|
+
"test:vitest": "vitest",
|
|
23
|
+
"bench": "vitest bench",
|
|
24
|
+
"format": "prettier --write .",
|
|
17
25
|
"prepack": "rimraf dist && tsc"
|
|
18
26
|
},
|
|
19
27
|
"files": [
|
|
@@ -24,11 +32,17 @@
|
|
|
24
32
|
"license": "ISC",
|
|
25
33
|
"description": "",
|
|
26
34
|
"devDependencies": {
|
|
35
|
+
"@node-rs/crc32": "^1.10.6",
|
|
36
|
+
"@types/archiver": "^7.0.0",
|
|
27
37
|
"@types/node": "^24.10.0",
|
|
28
38
|
"@types/yauzl-promise": "^4.0.1",
|
|
29
39
|
"@vitest/browser": "^4.0.7",
|
|
30
40
|
"@vitest/browser-playwright": "^4.0.7",
|
|
41
|
+
"@zip.js/zip.js": "^2.8.8",
|
|
42
|
+
"archiver": "^7.0.1",
|
|
31
43
|
"eslint": "^9.39.1",
|
|
44
|
+
"execa": "^9.6.0",
|
|
45
|
+
"fflate": "^0.8.2",
|
|
32
46
|
"globals": "^16.5.0",
|
|
33
47
|
"husky": "^9.1.7",
|
|
34
48
|
"lint-staged": "^16.2.6",
|
|
@@ -39,5 +53,9 @@
|
|
|
39
53
|
"typescript": "^5.9.3",
|
|
40
54
|
"vitest": "^4.0.7",
|
|
41
55
|
"yauzl-promise": "^4.0.0"
|
|
56
|
+
},
|
|
57
|
+
"lint-staged": {
|
|
58
|
+
"*.js": "eslint --cache --fix",
|
|
59
|
+
"*.{js,css,md}": "prettier --write"
|
|
42
60
|
}
|
|
43
61
|
}
|
package/dist/crc-lookup.d.ts
DELETED
package/dist/crc-lookup.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crc-lookup.d.ts","sourceRoot":"","sources":["../src/crc-lookup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,MAAM,EAAoB,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC"}
|
package/dist/crc-lookup.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* From https://github.com/holepunchto/crc-universal/blob/main/lookup.js
|
|
3
|
-
* Licensed under Apache-2.0
|
|
4
|
-
*/
|
|
5
|
-
export const lookup = new Array(16);
|
|
6
|
-
for (let i = 0; i < 16; i++) {
|
|
7
|
-
lookup[i] = new Uint32Array(0x100);
|
|
8
|
-
}
|
|
9
|
-
for (let i = 0; i <= 0xff; i++) {
|
|
10
|
-
let crc = i;
|
|
11
|
-
for (let j = 0; j < 8; j++) {
|
|
12
|
-
crc = (crc >>> 1) ^ ((crc & 1) * 0xedb88320);
|
|
13
|
-
}
|
|
14
|
-
lookup[0][i] = crc;
|
|
15
|
-
}
|
|
16
|
-
for (let i = 0; i <= 0xff; i++) {
|
|
17
|
-
for (let j = 1; j < 16; j++) {
|
|
18
|
-
lookup[j][i] =
|
|
19
|
-
(lookup[j - 1][i] >>> 8) ^ lookup[0][lookup[j - 1][i] & 0xff];
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=crc-lookup.js.map
|
package/dist/crc-lookup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crc-lookup.js","sourceRoot":"","sources":["../src/crc-lookup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,CAA+B,CAAC;AAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC5B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,CAAC;AAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|
package/dist/crc.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crc.d.ts","sourceRoot":"","sources":["../src/crc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAC7B,KAAK,GAAE,MAAU,GAChB,MAAM,CAgCR"}
|
package/dist/crc.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crc.js","sourceRoot":"","sources":["../src/crc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CACnB,IAA6B,EAC7B,QAAgB,CAAC;IAEjB,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;IACjB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAE7B,OAAO,MAAM,IAAI,EAAE,EAAE,CAAC;QACpB,GAAG;YACD,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;gBACpC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrB,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvB,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAED,OAAO,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QACpB,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC"}
|