zip-writer 1.1.1 → 2.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.
@@ -1,98 +1,7 @@
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, LITTLE_ENDIAN, BIG_ENDIAN, } from "./constants.js";
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, DATA_DESCRIPTOR_SIZE, DATA_DESCRIPTOR_SIZE_ZIP64, LITTLE_ENDIAN, BIG_ENDIAN, } from "./constants.js";
2
2
  import { getDosTime, getDosDate, writeDataView, UINT16, UINT32, UINT64, } from "./utils.js";
3
- const textEncoder = new TextEncoder();
4
- /**
5
- * Write a zip entry to the given writer from the given reader.
6
- */
7
- export async function writeZipEntry({ writer, reader, entryOptions, startOffset, crc32, }) {
8
- let uncompressedSize = BigInt(0);
9
- let compressedSize = BigInt(0);
10
- let checksum = 0;
11
- await writer.write(getLocalFileHeader(entryOptions));
12
- if (entryOptions.store) {
13
- // Store mode: no compression, direct copy
14
- while (true) {
15
- const { value, done } = await reader.read();
16
- if (done)
17
- break;
18
- const byteLength = BigInt(value.byteLength);
19
- uncompressedSize += byteLength;
20
- compressedSize += byteLength;
21
- checksum = crc32(value, checksum);
22
- await writer.write(value);
23
- }
24
- }
25
- else {
26
- // Deflate mode: manual reader/writer loops to minimize overhead
27
- const compressionStream = new CompressionStream("deflate-raw");
28
- const compressionWriter = compressionStream.writable.getWriter();
29
- const compressionReader = compressionStream.readable.getReader();
30
- const writePromise = (async () => {
31
- try {
32
- while (true) {
33
- const { value, done } = await reader.read();
34
- if (done)
35
- break;
36
- uncompressedSize += BigInt(value.byteLength);
37
- checksum = crc32(value, checksum);
38
- await compressionWriter.write(value);
39
- }
40
- await compressionWriter.close();
41
- }
42
- catch (err) {
43
- await compressionWriter.abort(err);
44
- throw err;
45
- }
46
- })();
47
- const readPromise = (async () => {
48
- try {
49
- while (true) {
50
- const { value, done } = await compressionReader.read();
51
- if (done)
52
- break;
53
- compressedSize += BigInt(value.byteLength);
54
- await writer.write(value);
55
- }
56
- compressionReader.releaseLock();
57
- }
58
- catch (err) {
59
- await compressionReader.cancel(err);
60
- throw err;
61
- }
62
- })();
63
- await Promise.all([writePromise, readPromise]);
64
- }
65
- const needsZip64 = uncompressedSize > ZIP64_LIMIT ||
66
- compressedSize > ZIP64_LIMIT ||
67
- startOffset > ZIP64_LIMIT;
68
- if (needsZip64) {
69
- const entryInfo = {
70
- ...entryOptions,
71
- startOffset,
72
- crc32: checksum,
73
- uncompressedSize,
74
- compressedSize,
75
- zip64: true,
76
- };
77
- await writer.write(getDataDescriptorZip64(entryInfo));
78
- return entryInfo;
79
- }
80
- else {
81
- const entryInfo = {
82
- ...entryOptions,
83
- startOffset: Number(startOffset),
84
- crc32: checksum,
85
- uncompressedSize: Number(uncompressedSize),
86
- compressedSize: Number(compressedSize),
87
- zip64: false,
88
- };
89
- await writer.write(getDataDescriptorStandard(entryInfo));
90
- return entryInfo;
91
- }
92
- }
93
3
  export function getLocalFileHeader(options) {
94
- const nameBytes = textEncoder.encode(options.name);
95
- const headerSize = LOCAL_FILE_HEADER_SIZE + nameBytes.length;
4
+ const headerSize = LOCAL_FILE_HEADER_SIZE + options.nameBytes.length;
96
5
  const header = new Uint8Array(headerSize);
97
6
  const view = new DataView(header.buffer);
98
7
  const date = options.date || new Date();
@@ -118,12 +27,12 @@ export function getLocalFileHeader(options) {
118
27
  // Uncompressed size (0 when using data descriptor)
119
28
  [UINT32, 0, LITTLE_ENDIAN],
120
29
  // File name length
121
- [UINT16, nameBytes.length, LITTLE_ENDIAN],
30
+ [UINT16, options.nameBytes.length, LITTLE_ENDIAN],
122
31
  // Extra field length
123
32
  [UINT16, 0, LITTLE_ENDIAN],
124
33
  ]);
125
34
  // File name
126
- header.set(nameBytes, offset);
35
+ header.set(options.nameBytes, offset);
127
36
  return header;
128
37
  }
129
38
  export function getDataDescriptorStandard(entryInfo) {
@@ -1 +1 @@
1
- {"version":3,"file":"write-entry.js","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-entry.js","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zip-writer",
3
- "version": "1.1.1",
3
+ "version": "2.0.0",
4
4
  "exports": {
5
5
  ".": {
6
6
  "types": "./dist/index.d.ts",
@@ -9,8 +9,8 @@
9
9
  },
10
10
  "imports": {
11
11
  "#crc32": {
12
- "browser": "./src/crc-browser.js",
13
- "default": "./src/crc-node.js"
12
+ "browser": "./dist/crc-browser.js",
13
+ "default": "./dist/crc-node.js"
14
14
  }
15
15
  },
16
16
  "type": "module",
@@ -21,16 +21,25 @@
21
21
  "test:lint": "eslint .",
22
22
  "test:vitest": "vitest",
23
23
  "bench": "vitest bench",
24
+ "coverage": "vitest run --coverage",
24
25
  "format": "prettier --write .",
25
26
  "prepack": "rimraf dist && tsc"
26
27
  },
27
28
  "files": [
28
29
  "dist"
29
30
  ],
30
- "keywords": [],
31
- "author": "",
32
- "license": "ISC",
33
- "description": "",
31
+ "keywords": [
32
+ "zip",
33
+ "archive",
34
+ "streaming",
35
+ "web streams",
36
+ "compression streams",
37
+ "javascript",
38
+ "typescript"
39
+ ],
40
+ "author": "Gregor MacLennan <gmaclennan@gmail.com>",
41
+ "license": "MIT",
42
+ "description": "A modern streaming ZIP archive writer for JavaScript that uses the Web Streams API and Compression Streams API.",
34
43
  "devDependencies": {
35
44
  "@node-rs/crc32": "^1.10.6",
36
45
  "@types/archiver": "^7.0.0",
@@ -38,6 +47,7 @@
38
47
  "@types/yauzl-promise": "^4.0.1",
39
48
  "@vitest/browser": "^4.0.7",
40
49
  "@vitest/browser-playwright": "^4.0.7",
50
+ "@vitest/coverage-istanbul": "^4.0.7",
41
51
  "@zip.js/zip.js": "^2.8.8",
42
52
  "archiver": "^7.0.1",
43
53
  "eslint": "^9.39.1",
@@ -57,5 +67,16 @@
57
67
  "lint-staged": {
58
68
  "*.js": "eslint --cache --fix",
59
69
  "*.{js,css,md}": "prettier --write"
70
+ },
71
+ "repository": {
72
+ "type": "git",
73
+ "url": "git+https://github.com/gmaclennan/zip-writer.git"
74
+ },
75
+ "bugs": {
76
+ "url": "https://github.com/gmaclennan/zip-writer/issues"
77
+ },
78
+ "homepage": "https://github.com/gmaclennan/zip-writer#readme",
79
+ "dependencies": {
80
+ "p-mutex": "^1.0.0"
60
81
  }
61
82
  }