@poe-platform/safe-bash 0.1.533 → 0.1.534

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 (35) hide show
  1. package/dist/safe-bash/commands/archive/index.d.ts +2 -0
  2. package/dist/safe-bash/commands/archive/index.d.ts.map +1 -1
  3. package/dist/safe-bash/commands/archive/index.js +11 -3
  4. package/dist/safe-bash/commands/archive/index.js.map +1 -1
  5. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts +32 -0
  6. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts.map +1 -0
  7. package/dist/safe-bash/commands/archive/unzip/arguments.js +214 -0
  8. package/dist/safe-bash/commands/archive/unzip/arguments.js.map +1 -0
  9. package/dist/safe-bash/commands/archive/unzip/safety.d.ts +28 -0
  10. package/dist/safe-bash/commands/archive/unzip/safety.d.ts.map +1 -0
  11. package/dist/safe-bash/commands/archive/unzip/safety.js +288 -0
  12. package/dist/safe-bash/commands/archive/unzip/safety.js.map +1 -0
  13. package/dist/safe-bash/commands/archive/unzip.d.ts +4 -0
  14. package/dist/safe-bash/commands/archive/unzip.d.ts.map +1 -0
  15. package/dist/safe-bash/commands/archive/unzip.js +264 -0
  16. package/dist/safe-bash/commands/archive/unzip.js.map +1 -0
  17. package/dist/safe-bash/commands/archive/zip/safety.d.ts +28 -0
  18. package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -0
  19. package/dist/safe-bash/commands/archive/zip/safety.js +228 -0
  20. package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -0
  21. package/dist/safe-bash/commands/archive/zip-format.d.ts +39 -0
  22. package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -0
  23. package/dist/safe-bash/commands/archive/zip-format.js +509 -0
  24. package/dist/safe-bash/commands/archive/zip-format.js.map +1 -0
  25. package/dist/safe-bash/commands/archive/zip.d.ts +4 -0
  26. package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -0
  27. package/dist/safe-bash/commands/archive/zip.js +290 -0
  28. package/dist/safe-bash/commands/archive/zip.js.map +1 -0
  29. package/dist/safe-bash/commands/bytes/compression/codec.d.ts +1 -1
  30. package/dist/safe-bash/commands/bytes/compression/codec.d.ts.map +1 -1
  31. package/dist/safe-bash/commands/bytes/compression/codec.js +2 -2
  32. package/dist/safe-bash/commands/bytes/compression/codec.js.map +1 -1
  33. package/dist/safe-bash/core.browser.js +1932 -387
  34. package/dist/safe-bash/core.browser.js.map +4 -4
  35. package/package.json +2 -2
@@ -0,0 +1,39 @@
1
+ import { type ByteSource } from "../../contracts/index.js";
2
+ import { type ArchiveLimits } from "./internal.js";
3
+ export interface ZipEntry {
4
+ name: string;
5
+ data: Uint8Array;
6
+ size: number;
7
+ method: number;
8
+ crc32: number;
9
+ modified: Date;
10
+ mode: number;
11
+ directory: boolean;
12
+ symlink: boolean;
13
+ rawName?: Uint8Array;
14
+ localName?: Uint8Array;
15
+ comment?: Uint8Array;
16
+ localExtra?: Uint8Array;
17
+ centralExtra?: Uint8Array;
18
+ flags?: number;
19
+ versionMadeBy?: number;
20
+ internalAttributes?: number;
21
+ externalAttributes?: number;
22
+ dosTime?: number;
23
+ dosDate?: number;
24
+ }
25
+ export interface ZipArchive {
26
+ entries: readonly ZipEntry[];
27
+ comment: Uint8Array;
28
+ }
29
+ export declare function crc32(bytes: Uint8Array, previous?: number): number;
30
+ export declare function readZipArchive(bytes: Uint8Array, limits: ArchiveLimits, signal: AbortSignal): Promise<ZipArchive>;
31
+ export declare function decodeZipEntry(entry: ZipEntry, limits: ArchiveLimits, signal: AbortSignal): ByteSource;
32
+ export declare function makeZipEntry(name: string, bytes: Uint8Array, attributes: {
33
+ modified: Date;
34
+ mode: number;
35
+ directory: boolean;
36
+ symlink: boolean;
37
+ }, limits: ArchiveLimits, signal: AbortSignal): Promise<ZipEntry>;
38
+ export declare function writeZipArchive(archive: ZipArchive, limits: ArchiveLimits, signal: AbortSignal): Promise<Uint8Array>;
39
+ //# sourceMappingURL=zip-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-format.d.ts","sourceRoot":"","sources":["../../../src/commands/archive/zip-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB;AAUD,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,SAAI,GAAG,MAAM,CAI7D;AA8HD,wBAAsB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA+HvH;AAED,wBAAuB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAwB7G;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkCrN;AAmBD,wBAAsB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAmG1H"}
@@ -0,0 +1,509 @@
1
+ import {} from "../../contracts/index.js";
2
+ import { yieldTurn } from "../../contracts/yield.js";
3
+ import { codec, CodecReader } from "../bytes/compression/codec.js";
4
+ import { fail, text } from "./internal.js";
5
+ const encoder = new TextEncoder();
6
+ const cp437 = "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ";
7
+ const crcTable = Uint32Array.from({ length: 256 }, (_, index) => {
8
+ let value = index;
9
+ for (let bit = 0; bit < 8; bit++)
10
+ value = (value >>> 1) ^ (value & 1 ? 0xedb88320 : 0);
11
+ return value >>> 0;
12
+ });
13
+ export function crc32(bytes, previous = 0) {
14
+ let value = previous ^ 0xffffffff;
15
+ for (const byte of bytes)
16
+ value = (value >>> 8) ^ crcTable[(value ^ byte) & 255];
17
+ return (value ^ 0xffffffff) >>> 0;
18
+ }
19
+ function number(value, maximum, label) {
20
+ if (!Number.isSafeInteger(value) || value < 0 || value > maximum)
21
+ fail(`ZIP ${label} limit exceeded or invalid value`);
22
+ }
23
+ function admit(limits, signal) {
24
+ signal.throwIfAborted();
25
+ for (const key of ["maxArchiveBytes", "maxEntryBytes", "maxTotalBytes", "maxMembers", "maxPathBytes", "maxDepth", "maxPaxBytes", "maxTextBytes", "chunkSize"]) {
26
+ number(limits[key], Number.MAX_SAFE_INTEGER, key);
27
+ }
28
+ if (limits.chunkSize < 512 || limits.chunkSize > 1024 * 1024)
29
+ fail("ZIP chunk size must be between 512 and 1048576");
30
+ return Math.min(limits.chunkSize, 64 * 1024);
31
+ }
32
+ function pathBytes(name, limits) {
33
+ if (name.length > Math.min(limits.maxPathBytes, 65535))
34
+ fail("ZIP path byte limit exceeded");
35
+ const bytes = encoder.encode(name);
36
+ if (!name || text(bytes) !== name || name.includes("\0"))
37
+ fail("ZIP invalid or unsafe path");
38
+ number(bytes.length, Math.min(limits.maxPathBytes, 65535), "path byte");
39
+ const parts = name.split("/");
40
+ if (parts.at(-1) === "")
41
+ parts.pop();
42
+ if (parts.some(part => !part || part === "." || part === ".."))
43
+ fail("ZIP unsafe traversal or absolute path");
44
+ number(parts.length, limits.maxDepth, "path depth");
45
+ return bytes;
46
+ }
47
+ function equal(first, second) {
48
+ return first.length === second.length && first.every((byte, index) => byte === second[index]);
49
+ }
50
+ function legacyName(bytes) {
51
+ let name = "";
52
+ for (const byte of bytes)
53
+ name += byte < 128 ? String.fromCharCode(byte) : cp437[byte - 128];
54
+ return name;
55
+ }
56
+ function extras(bytes, rawName, comment, central, limits) {
57
+ number(bytes.length, Math.min(limits.maxPaxBytes, 65535), "extra field");
58
+ const result = {};
59
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
60
+ const seen = new Set();
61
+ let offset = 0;
62
+ while (offset < bytes.length) {
63
+ if (offset + 4 > bytes.length)
64
+ fail("ZIP truncated extra field");
65
+ const identifier = view.getUint16(offset, true);
66
+ const length = view.getUint16(offset + 2, true);
67
+ offset += 4;
68
+ if (offset + length > bytes.length)
69
+ fail("ZIP truncated extra field payload");
70
+ if (seen.has(identifier))
71
+ fail("ZIP duplicate extra field");
72
+ seen.add(identifier);
73
+ if (identifier === 1)
74
+ fail("ZIP64 is unsupported");
75
+ if (identifier === 0x9901 || identifier === 0x0017 || identifier === 0x0018 || identifier === 0x0019)
76
+ fail("ZIP encryption is unsupported");
77
+ if (identifier === 0x7075 || identifier === 0x6375) {
78
+ if (length < 5 || bytes[offset] !== 1)
79
+ fail("ZIP unsupported or truncated Unicode extra field");
80
+ const original = identifier === 0x7075 ? rawName : comment;
81
+ if (view.getUint32(offset + 1, true) !== crc32(original))
82
+ fail("ZIP Unicode extra field CRC mismatch");
83
+ const decoded = text(bytes.subarray(offset + 5, offset + length));
84
+ if (identifier === 0x7075) {
85
+ pathBytes(decoded, limits);
86
+ result.name = decoded;
87
+ }
88
+ else
89
+ number(length - 5, limits.maxTextBytes, "Unicode comment");
90
+ }
91
+ if (identifier === 0x5455) {
92
+ if (!length)
93
+ fail("ZIP truncated timestamp extra field");
94
+ const flags = bytes[offset];
95
+ if (flags & ~7)
96
+ fail("ZIP unsupported timestamp flags");
97
+ const count = (flags & 1) + (central ? 0 : ((flags >>> 1) & 1) + ((flags >>> 2) & 1));
98
+ if (length !== 1 + count * 4)
99
+ fail("ZIP truncated or inconsistent timestamp extra field");
100
+ if (flags & 1)
101
+ result.modified = view.getInt32(offset + 1, true) * 1000;
102
+ }
103
+ offset += length;
104
+ }
105
+ return result;
106
+ }
107
+ function nameFrom(rawName, flags, metadata, limits) {
108
+ number(rawName.length, Math.min(limits.maxPathBytes, 65535), "raw path byte");
109
+ const raw = flags & 0x800 ? text(rawName) : legacyName(rawName);
110
+ pathBytes(raw, limits);
111
+ if (flags & 0x800 && metadata.name !== undefined && metadata.name !== raw)
112
+ fail("ZIP conflicting UTF-8 and Unicode extra names");
113
+ return metadata.name ?? raw;
114
+ }
115
+ function format(method, flags, version) {
116
+ number(flags, 65535, "general purpose flags");
117
+ if (flags & (1 | 64 | 0x2000))
118
+ fail("ZIP encryption is unsupported");
119
+ if (flags & ~0x80e || method === 0 && flags & 6)
120
+ fail("ZIP unsupported general purpose flags");
121
+ if (method !== 0 && method !== 8)
122
+ fail("ZIP unsupported compression method");
123
+ if (version < (method === 8 || flags & 8 ? 20 : 10) || version > 20)
124
+ fail("ZIP unsupported extraction version (including ZIP64)");
125
+ }
126
+ function dosModified(date, time) {
127
+ if (!date && !time)
128
+ return new Date(1980, 0, 1);
129
+ const year = 1980 + (date >>> 9);
130
+ const month = ((date >>> 5) & 15) - 1;
131
+ const day = date & 31;
132
+ const hours = time >>> 11;
133
+ const minutes = (time >>> 5) & 63;
134
+ const seconds = (time & 31) * 2;
135
+ const result = new Date(Date.UTC(year, month, day, hours, minutes, seconds));
136
+ if (result.getUTCFullYear() !== year || result.getUTCMonth() !== month || result.getUTCDate() !== day || hours > 23 || minutes > 59 || seconds > 59)
137
+ fail("ZIP invalid DOS timestamp");
138
+ return new Date(year, month, day, hours, minutes, seconds);
139
+ }
140
+ function entryBounds(entry, limits) {
141
+ pathBytes(entry.name, limits);
142
+ number(entry.size, Math.min(limits.maxEntryBytes, limits.maxTotalBytes, 0xfffffffe), "entry byte");
143
+ number(entry.data.length, Math.min(limits.maxArchiveBytes, 0xfffffffe), "compressed byte");
144
+ number(entry.crc32, 0xffffffff, "CRC32");
145
+ number(entry.mode, 0xffff, "mode");
146
+ format(entry.method, entry.flags ?? 0x800, entry.method === 8 || (entry.flags ?? 0) & 8 ? 20 : 10);
147
+ if (entry.directory !== entry.name.endsWith("/") || entry.directory && (entry.symlink || entry.size !== 0))
148
+ fail("ZIP inconsistent directory metadata");
149
+ const type = entry.mode & 0o170000;
150
+ if (type !== 0 && type !== (entry.directory ? 0o040000 : entry.symlink ? 0o120000 : 0o100000))
151
+ fail("ZIP unsupported or conflicting file type");
152
+ if (!Number.isFinite(entry.modified.getTime()))
153
+ fail("ZIP invalid modification time");
154
+ }
155
+ async function copyBytes(source, destination, start, chunkSize, signal) {
156
+ for (let offset = 0; offset < source.length; offset += chunkSize) {
157
+ signal.throwIfAborted();
158
+ destination.set(source.subarray(offset, offset + chunkSize), start + offset);
159
+ if (offset + chunkSize < source.length)
160
+ await yieldTurn(signal);
161
+ }
162
+ }
163
+ export async function readZipArchive(bytes, limits, signal) {
164
+ const chunkSize = admit(limits, signal);
165
+ number(bytes.length, Math.min(limits.maxArchiveBytes, 0xfffffffe), "archive byte");
166
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
167
+ let end = -1;
168
+ const lower = Math.max(0, bytes.length - 22 - 65535);
169
+ for (let offset = bytes.length - 22; offset >= lower; offset--) {
170
+ if ((bytes.length - offset) % 4096 === 0)
171
+ await yieldTurn(signal);
172
+ if (view.getUint32(offset, true) === 0x06054b50 && offset + 22 + view.getUint16(offset + 20, true) === bytes.length) {
173
+ const size = view.getUint32(offset + 12, true);
174
+ const start = view.getUint32(offset + 16, true);
175
+ const zip64 = size === 0xffffffff || start === 0xffffffff || view.getUint16(offset + 10, true) === 65535 || offset >= 20 && view.getUint32(offset - 20, true) === 0x07064b50;
176
+ if (!zip64 && start + size !== offset)
177
+ continue;
178
+ if (end !== -1)
179
+ fail("ZIP ambiguous end records");
180
+ end = offset;
181
+ }
182
+ }
183
+ if (end === -1)
184
+ fail("ZIP truncated or missing end of central directory");
185
+ const members = view.getUint16(end + 10, true);
186
+ const centralSize = view.getUint32(end + 12, true);
187
+ const centralStart = view.getUint32(end + 16, true);
188
+ if (members === 65535 || centralSize === 0xffffffff || centralStart === 0xffffffff)
189
+ fail("ZIP64 is unsupported");
190
+ if (view.getUint16(end + 4, true) || view.getUint16(end + 6, true) || view.getUint16(end + 8, true) !== members)
191
+ fail("ZIP multi-disk or inconsistent member count is unsupported");
192
+ if (centralStart + centralSize !== end)
193
+ fail("ZIP invalid central directory span or unsupported ZIP64/trailing records");
194
+ number(members, limits.maxMembers, "member");
195
+ number(bytes.length - end - 22, limits.maxTextBytes, "archive comment");
196
+ const entries = [];
197
+ const spans = [];
198
+ let offset = centralStart;
199
+ let total = 0;
200
+ for (let index = 0; index < members; index++) {
201
+ await yieldTurn(signal);
202
+ if (offset + 46 > end || view.getUint32(offset, true) !== 0x02014b50)
203
+ fail("ZIP truncated or invalid central header");
204
+ const versionMadeBy = view.getUint16(offset + 4, true);
205
+ const version = view.getUint16(offset + 6, true);
206
+ const flags = view.getUint16(offset + 8, true);
207
+ const method = view.getUint16(offset + 10, true);
208
+ format(method, flags, version);
209
+ const dosTime = view.getUint16(offset + 12, true);
210
+ const dosDate = view.getUint16(offset + 14, true);
211
+ const checksum = view.getUint32(offset + 16, true);
212
+ const compressedSize = view.getUint32(offset + 20, true);
213
+ const size = view.getUint32(offset + 24, true);
214
+ const nameLength = view.getUint16(offset + 28, true);
215
+ const extraLength = view.getUint16(offset + 30, true);
216
+ const commentLength = view.getUint16(offset + 32, true);
217
+ const internalAttributes = view.getUint16(offset + 36, true);
218
+ if (internalAttributes & ~1)
219
+ fail("ZIP unsupported internal attributes");
220
+ const externalAttributes = view.getUint32(offset + 38, true);
221
+ const local = view.getUint32(offset + 42, true);
222
+ if (view.getUint16(offset + 34, true))
223
+ fail("ZIP multi-disk member is unsupported");
224
+ if (compressedSize === 0xffffffff || size === 0xffffffff || local === 0xffffffff)
225
+ fail("ZIP64 is unsupported");
226
+ number(size, limits.maxEntryBytes, "entry byte");
227
+ if (method === 0 && compressedSize !== size)
228
+ fail("ZIP stored size mismatch");
229
+ total += size;
230
+ number(total, limits.maxTotalBytes, "total byte");
231
+ const next = offset + 46 + nameLength + extraLength + commentLength;
232
+ if (next > end)
233
+ fail("ZIP truncated central metadata");
234
+ number(commentLength, limits.maxTextBytes, "entry comment");
235
+ const rawName = bytes.subarray(offset + 46, offset + 46 + nameLength);
236
+ const centralExtra = bytes.subarray(offset + 46 + nameLength, next - commentLength);
237
+ const comment = bytes.subarray(next - commentLength, next);
238
+ if (flags & 0x800)
239
+ text(comment);
240
+ const centralMetadata = extras(centralExtra, rawName, comment, true, limits);
241
+ const name = nameFrom(rawName, flags, centralMetadata, limits);
242
+ if (local + 30 > centralStart || view.getUint32(local, true) !== 0x04034b50)
243
+ fail("ZIP invalid local header span");
244
+ if (view.getUint16(local + 4, true) !== version || view.getUint16(local + 6, true) !== flags || view.getUint16(local + 8, true) !== method || view.getUint16(local + 10, true) !== dosTime || view.getUint16(local + 12, true) !== dosDate)
245
+ fail("ZIP central/local metadata mismatch");
246
+ const localNameLength = view.getUint16(local + 26, true);
247
+ const localExtraLength = view.getUint16(local + 28, true);
248
+ const payloadStart = local + 30 + localNameLength + localExtraLength;
249
+ let payloadEnd = payloadStart + compressedSize;
250
+ if (payloadEnd > centralStart)
251
+ fail("ZIP truncated or overlapping local payload");
252
+ const localName = bytes.subarray(local + 30, local + 30 + localNameLength);
253
+ if (!equal(rawName, localName))
254
+ fail("ZIP central/local filename mismatch");
255
+ const localExtra = bytes.subarray(local + 30 + localNameLength, payloadStart);
256
+ const localMetadata = extras(localExtra, localName, comment, false, limits);
257
+ const localEffective = nameFrom(localName, flags, localMetadata, limits);
258
+ if (localMetadata.name !== undefined && localEffective !== name)
259
+ fail("ZIP central/local Unicode name mismatch");
260
+ if (centralMetadata.modified !== undefined && localMetadata.modified !== undefined && centralMetadata.modified !== localMetadata.modified)
261
+ fail("ZIP central/local timestamp mismatch");
262
+ for (const [position, expected] of [[14, checksum], [18, compressedSize], [22, size]]) {
263
+ const actual = view.getUint32(local + position, true);
264
+ if (actual !== expected && (!(flags & 8) || actual !== 0))
265
+ fail("ZIP central/local size or CRC mismatch");
266
+ }
267
+ if (flags & 8) {
268
+ const matches = [];
269
+ for (const signed of [false, true]) {
270
+ const descriptor = payloadEnd + (signed ? 4 : 0);
271
+ if (descriptor + 12 <= centralStart && (!signed || view.getUint32(payloadEnd, true) === 0x08074b50) && view.getUint32(descriptor, true) === checksum && view.getUint32(descriptor + 4, true) === compressedSize && view.getUint32(descriptor + 8, true) === size)
272
+ matches.push(descriptor + 12);
273
+ }
274
+ if (matches.length !== 1)
275
+ fail("ZIP truncated, ambiguous or mismatched data descriptor");
276
+ payloadEnd = matches[0];
277
+ }
278
+ const host = versionMadeBy >>> 8;
279
+ const unixMode = host === 3 || host === 19 ? externalAttributes >>> 16 : 0;
280
+ const directory = name.endsWith("/");
281
+ if (Boolean(externalAttributes & 16) && !directory)
282
+ fail("ZIP conflicting directory attributes");
283
+ const mode = unixMode || (directory ? 0o040755 : 0o100644);
284
+ const symlink = (mode & 0o170000) === 0o120000;
285
+ const modified = dosModified(dosDate, dosTime);
286
+ const timestamp = centralMetadata.modified ?? localMetadata.modified;
287
+ if (timestamp !== undefined)
288
+ modified.setTime(timestamp);
289
+ const entry = { name, data: bytes.subarray(payloadStart, payloadStart + compressedSize), size, method, crc32: checksum, modified, mode, directory, symlink, rawName, localName, comment, localExtra, centralExtra, flags, versionMadeBy, internalAttributes, externalAttributes, dosTime, dosDate };
290
+ entryBounds(entry, limits);
291
+ entries.push(entry);
292
+ spans.push({ start: local, end: payloadEnd });
293
+ offset = next;
294
+ }
295
+ if (offset !== end)
296
+ fail("ZIP central directory size or member count mismatch");
297
+ spans.sort((first, second) => first.start - second.start);
298
+ let covered = 0;
299
+ for (const span of spans) {
300
+ if (span.start !== covered)
301
+ fail("ZIP overlapping spans, gaps or self-extracting prefix are unsupported");
302
+ covered = span.end;
303
+ }
304
+ if (covered !== centralStart)
305
+ fail("ZIP unreferenced local data is unsupported");
306
+ for (const entry of entries) {
307
+ const data = new Uint8Array(entry.data.length);
308
+ await copyBytes(entry.data, data, 0, chunkSize, signal);
309
+ entry.data = data;
310
+ entry.rawName = new Uint8Array(entry.rawName);
311
+ entry.localName = new Uint8Array(entry.localName);
312
+ entry.comment = new Uint8Array(entry.comment);
313
+ entry.localExtra = new Uint8Array(entry.localExtra);
314
+ entry.centralExtra = new Uint8Array(entry.centralExtra);
315
+ await yieldTurn(signal);
316
+ }
317
+ return { entries, comment: new Uint8Array(bytes.subarray(end + 22)) };
318
+ }
319
+ export async function* decodeZipEntry(entry, limits, signal) {
320
+ const chunkSize = admit(limits, signal);
321
+ entryBounds(entry, limits);
322
+ const reader = new CodecReader((async function* () { yield entry.data; })(), signal);
323
+ let length = 0;
324
+ let checksum = 0;
325
+ const source = entry.method === 8 ? codec(reader, { mode: "inflate-raw", chunkSize }, signal) : (async function* () {
326
+ for (let offset = 0; offset < entry.data.length; offset += chunkSize) {
327
+ yield new Uint8Array(entry.data.subarray(offset, offset + chunkSize));
328
+ await yieldTurn(signal);
329
+ }
330
+ })();
331
+ try {
332
+ for await (const chunk of source) {
333
+ signal.throwIfAborted();
334
+ length += chunk.length;
335
+ number(length, Math.min(limits.maxEntryBytes, limits.maxTotalBytes), "decoded byte");
336
+ checksum = crc32(chunk, checksum);
337
+ yield chunk;
338
+ }
339
+ if (entry.method === 8 && await reader.chunk() !== undefined)
340
+ fail("ZIP trailing compressed data");
341
+ if (length !== entry.size)
342
+ fail("ZIP uncompressed size mismatch");
343
+ if (checksum !== entry.crc32)
344
+ fail("ZIP CRC32 mismatch");
345
+ }
346
+ finally {
347
+ await reader.close();
348
+ }
349
+ }
350
+ export async function makeZipEntry(name, bytes, attributes, limits, signal) {
351
+ const chunkSize = admit(limits, signal);
352
+ const entry = { name, data: bytes, size: bytes.length, method: 0, crc32: 0, ...attributes, modified: new Date(attributes.modified.getTime()) };
353
+ entryBounds(entry, limits);
354
+ for (let offset = 0; offset < bytes.length; offset += chunkSize) {
355
+ entry.crc32 = crc32(bytes.subarray(offset, offset + chunkSize), entry.crc32);
356
+ await yieldTurn(signal);
357
+ }
358
+ const reader = new CodecReader((async function* () { yield bytes; })(), signal);
359
+ try {
360
+ if (bytes.length && !entry.directory && !entry.symlink) {
361
+ const chunks = [];
362
+ let length = 0;
363
+ for await (const chunk of codec(reader, { mode: "deflate-raw", chunkSize }, signal)) {
364
+ length += chunk.length;
365
+ if (length >= bytes.length)
366
+ break;
367
+ chunks.push(new Uint8Array(chunk));
368
+ }
369
+ if (length < bytes.length) {
370
+ entry.data = new Uint8Array(length);
371
+ let offset = 0;
372
+ for (const chunk of chunks) {
373
+ entry.data.set(chunk, offset);
374
+ offset += chunk.length;
375
+ await yieldTurn(signal);
376
+ }
377
+ entry.method = 8;
378
+ return entry;
379
+ }
380
+ }
381
+ entry.data = new Uint8Array(bytes.length);
382
+ await copyBytes(bytes, entry.data, 0, chunkSize, signal);
383
+ return entry;
384
+ }
385
+ finally {
386
+ await reader.close();
387
+ }
388
+ }
389
+ function timestampExtra(modified) {
390
+ const seconds = Math.floor(modified.getTime() / 1000);
391
+ if (seconds < -0x80000000 || seconds > 0x7fffffff)
392
+ return new Uint8Array();
393
+ const bytes = new Uint8Array(9);
394
+ const view = new DataView(bytes.buffer);
395
+ view.setUint16(0, 0x5455, true);
396
+ view.setUint16(2, 5, true);
397
+ bytes[4] = 1;
398
+ view.setInt32(5, seconds, true);
399
+ return bytes;
400
+ }
401
+ export async function writeZipArchive(archive, limits, signal) {
402
+ const chunkSize = admit(limits, signal);
403
+ number(archive.entries.length, Math.min(limits.maxMembers, 65534), "member");
404
+ number(archive.comment.length, Math.min(limits.maxTextBytes, 65535), "archive comment");
405
+ let length = 22 + archive.comment.length;
406
+ let localLength = 0;
407
+ let total = 0;
408
+ const encoded = [];
409
+ for (const entry of archive.entries) {
410
+ await yieldTurn(signal);
411
+ entryBounds(entry, limits);
412
+ if (entry.method === 0 && entry.data.length !== entry.size)
413
+ fail("ZIP stored size mismatch");
414
+ total += entry.size;
415
+ number(total, limits.maxTotalBytes, "total byte");
416
+ const rawName = entry.rawName ?? pathBytes(entry.name, limits);
417
+ const flags = (entry.flags ?? 0x800) & ~8;
418
+ const comment = entry.comment ?? new Uint8Array();
419
+ number(comment.length, Math.min(limits.maxTextBytes, 65535), "entry comment");
420
+ if (flags & 0x800)
421
+ text(comment);
422
+ const localExtra = entry.localExtra ?? timestampExtra(entry.modified);
423
+ const centralExtra = entry.centralExtra ?? timestampExtra(entry.modified);
424
+ const localMetadata = extras(localExtra, rawName, comment, false, limits);
425
+ const centralMetadata = extras(centralExtra, rawName, comment, true, limits);
426
+ if (nameFrom(rawName, flags, centralMetadata, limits) !== entry.name || localMetadata.name !== undefined && nameFrom(rawName, flags, localMetadata, limits) !== entry.name || entry.localName && !equal(rawName, entry.localName))
427
+ fail("ZIP retained filename metadata mismatch");
428
+ if (localMetadata.modified !== undefined && centralMetadata.modified !== undefined && localMetadata.modified !== centralMetadata.modified)
429
+ fail("ZIP retained timestamp metadata mismatch");
430
+ const rounded = new Date(Math.ceil(Math.floor(entry.modified.getTime() / 1000) / 2) * 2000);
431
+ const year = Math.max(1980, Math.min(2107, rounded.getFullYear()));
432
+ const date = entry.dosDate ?? (((year - 1980) << 9) | ((rounded.getMonth() + 1) << 5) | rounded.getDate());
433
+ const time = entry.dosTime ?? ((rounded.getHours() << 11) | (rounded.getMinutes() << 5) | (rounded.getSeconds() >>> 1));
434
+ number(date, 65535, "DOS date");
435
+ number(time, 65535, "DOS time");
436
+ const dosTimestamp = dosModified(date, time).getTime();
437
+ const extendedTimestamp = centralMetadata.modified ?? localMetadata.modified;
438
+ if (extendedTimestamp === undefined ? dosTimestamp !== rounded.getTime() : Math.floor(extendedTimestamp / 1000) !== Math.floor(entry.modified.getTime() / 1000))
439
+ fail("ZIP retained or unrepresentable timestamp metadata mismatch");
440
+ for (const [value, maximum, label] of [[entry.versionMadeBy ?? 0x31e, 65535, "creator version"], [entry.internalAttributes ?? 0, 65535, "internal attributes"], [entry.externalAttributes ?? 0, 0xffffffff, "external attributes"]])
441
+ number(value, maximum, label);
442
+ if ((entry.internalAttributes ?? 0) & ~1)
443
+ fail("ZIP unsupported internal attributes");
444
+ if (entry.externalAttributes !== undefined) {
445
+ const host = (entry.versionMadeBy ?? 0x31e) >>> 8;
446
+ const unixMode = host === 3 || host === 19 ? entry.externalAttributes >>> 16 : 0;
447
+ const mode = unixMode || (entry.directory ? 0o040755 : 0o100644);
448
+ if (mode !== entry.mode || Boolean(entry.externalAttributes & 16) && !entry.directory)
449
+ fail("ZIP retained file attributes mismatch");
450
+ }
451
+ encoded.push({ entry, rawName, flags, localExtra, centralExtra, comment, date, time, offset: localLength });
452
+ localLength += 30 + rawName.length + localExtra.length + entry.data.length;
453
+ length += 76 + 2 * rawName.length + localExtra.length + centralExtra.length + comment.length + entry.data.length;
454
+ number(length, Math.min(limits.maxArchiveBytes, 0xfffffffe), "archive byte");
455
+ }
456
+ number(length, Math.min(limits.maxArchiveBytes, 0xfffffffe), "archive byte");
457
+ const bytes = new Uint8Array(length);
458
+ const view = new DataView(bytes.buffer);
459
+ let central = localLength;
460
+ for (const item of encoded) {
461
+ await yieldTurn(signal);
462
+ const { entry, rawName, flags, localExtra, centralExtra, comment, date, time, offset } = item;
463
+ const version = entry.method === 8 ? 20 : 10;
464
+ view.setUint32(offset, 0x04034b50, true);
465
+ view.setUint16(offset + 4, version, true);
466
+ view.setUint16(offset + 6, flags, true);
467
+ view.setUint16(offset + 8, entry.method, true);
468
+ view.setUint16(offset + 10, time, true);
469
+ view.setUint16(offset + 12, date, true);
470
+ view.setUint32(offset + 14, entry.crc32, true);
471
+ view.setUint32(offset + 18, entry.data.length, true);
472
+ view.setUint32(offset + 22, entry.size, true);
473
+ view.setUint16(offset + 26, rawName.length, true);
474
+ view.setUint16(offset + 28, localExtra.length, true);
475
+ bytes.set(rawName, offset + 30);
476
+ bytes.set(localExtra, offset + 30 + rawName.length);
477
+ await copyBytes(entry.data, bytes, offset + 30 + rawName.length + localExtra.length, chunkSize, signal);
478
+ view.setUint32(central, 0x02014b50, true);
479
+ view.setUint16(central + 4, entry.versionMadeBy ?? 0x31e, true);
480
+ view.setUint16(central + 6, version, true);
481
+ view.setUint16(central + 8, flags, true);
482
+ view.setUint16(central + 10, entry.method, true);
483
+ view.setUint16(central + 12, time, true);
484
+ view.setUint16(central + 14, date, true);
485
+ view.setUint32(central + 16, entry.crc32, true);
486
+ view.setUint32(central + 20, entry.data.length, true);
487
+ view.setUint32(central + 24, entry.size, true);
488
+ view.setUint16(central + 28, rawName.length, true);
489
+ view.setUint16(central + 30, centralExtra.length, true);
490
+ view.setUint16(central + 32, comment.length, true);
491
+ view.setUint16(central + 36, entry.internalAttributes ?? 0, true);
492
+ view.setUint32(central + 38, entry.externalAttributes ?? ((entry.mode | (entry.directory ? 0o040000 : entry.symlink ? 0o120000 : 0o100000)) * 65536 + (entry.directory ? 16 : 0)), true);
493
+ view.setUint32(central + 42, offset, true);
494
+ bytes.set(rawName, central + 46);
495
+ bytes.set(centralExtra, central + 46 + rawName.length);
496
+ bytes.set(comment, central + 46 + rawName.length + centralExtra.length);
497
+ central += 46 + rawName.length + centralExtra.length + comment.length;
498
+ }
499
+ view.setUint32(central, 0x06054b50, true);
500
+ view.setUint16(central + 8, encoded.length, true);
501
+ view.setUint16(central + 10, encoded.length, true);
502
+ view.setUint32(central + 12, central - localLength, true);
503
+ view.setUint32(central + 16, localLength, true);
504
+ view.setUint16(central + 20, archive.comment.length, true);
505
+ bytes.set(archive.comment, central + 22);
506
+ signal.throwIfAborted();
507
+ return bytes;
508
+ }
509
+ //# sourceMappingURL=zip-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-format.js","sourceRoot":"","sources":["../../../src/commands/archive/zip-format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type CommandDefinition } from "../../contracts/index.js";
2
+ import { type ArchiveCommandsOptions } from "./internal.js";
3
+ export declare function createZipCommand(options?: ArchiveCommandsOptions): CommandDefinition;
4
+ //# sourceMappingURL=zip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../../../src/commands/archive/zip.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+E,KAAK,iBAAiB,EAAiB,MAAM,0BAA0B,CAAC;AAM9J,OAAO,EAAwF,KAAK,sBAAsB,EAAsB,MAAM,eAAe,CAAC;AAoMtK,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,sBAA2B,GAAG,iBAAiB,CA4BxF"}