@poe-platform/safe-bash 0.1.656 → 0.1.658

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 (129) hide show
  1. package/dist/safe-bash/chunks/{chunk-43HWIHXB.js → chunk-Z4UKD5FF.js} +192 -61
  2. package/dist/safe-bash/chunks/chunk-Z4UKD5FF.js.map +7 -0
  3. package/dist/safe-bash/chunks/{xz-U4QDTPZL.js → xz-4V5FXSPG.js} +555 -514
  4. package/dist/safe-bash/chunks/xz-4V5FXSPG.js.map +7 -0
  5. package/dist/safe-bash/commands/archive/index.d.ts +1 -1
  6. package/dist/safe-bash/commands/archive/index.d.ts.map +1 -1
  7. package/dist/safe-bash/commands/archive/internal.d.ts +32 -0
  8. package/dist/safe-bash/commands/archive/internal.d.ts.map +1 -1
  9. package/dist/safe-bash/commands/archive/internal.js.map +1 -1
  10. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts +3 -0
  11. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts.map +1 -1
  12. package/dist/safe-bash/commands/archive/unzip/arguments.js +31 -5
  13. package/dist/safe-bash/commands/archive/unzip/arguments.js.map +1 -1
  14. package/dist/safe-bash/commands/archive/unzip/safety.d.ts +4 -0
  15. package/dist/safe-bash/commands/archive/unzip/safety.d.ts.map +1 -1
  16. package/dist/safe-bash/commands/archive/unzip/safety.js +3 -0
  17. package/dist/safe-bash/commands/archive/unzip/safety.js.map +1 -1
  18. package/dist/safe-bash/commands/archive/unzip.d.ts.map +1 -1
  19. package/dist/safe-bash/commands/archive/unzip.js +159 -112
  20. package/dist/safe-bash/commands/archive/unzip.js.map +1 -1
  21. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts +2 -0
  22. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.d.ts.map +1 -0
  23. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js +3 -0
  24. package/dist/safe-bash/commands/archive/zip/aes-primitives-unavailable.js.map +1 -0
  25. package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts +2 -0
  26. package/dist/safe-bash/commands/archive/zip/aes-primitives.d.ts.map +1 -0
  27. package/dist/safe-bash/commands/archive/zip/aes-primitives.js +3 -0
  28. package/dist/safe-bash/commands/archive/zip/aes-primitives.js.map +1 -0
  29. package/dist/safe-bash/commands/archive/zip/aes.d.ts +18 -0
  30. package/dist/safe-bash/commands/archive/zip/aes.d.ts.map +1 -0
  31. package/dist/safe-bash/commands/archive/zip/aes.js +157 -0
  32. package/dist/safe-bash/commands/archive/zip/aes.js.map +1 -0
  33. package/dist/safe-bash/commands/archive/zip/crypto.d.ts +16 -0
  34. package/dist/safe-bash/commands/archive/zip/crypto.d.ts.map +1 -1
  35. package/dist/safe-bash/commands/archive/zip/crypto.js +85 -0
  36. package/dist/safe-bash/commands/archive/zip/crypto.js.map +1 -1
  37. package/dist/safe-bash/commands/archive/zip/grow.d.ts +4 -0
  38. package/dist/safe-bash/commands/archive/zip/grow.d.ts.map +1 -0
  39. package/dist/safe-bash/commands/archive/zip/grow.js +3 -0
  40. package/dist/safe-bash/commands/archive/zip/grow.js.map +1 -0
  41. package/dist/safe-bash/commands/archive/zip/help.d.ts +4 -2
  42. package/dist/safe-bash/commands/archive/zip/help.d.ts.map +1 -1
  43. package/dist/safe-bash/commands/archive/zip/help.js +98 -3
  44. package/dist/safe-bash/commands/archive/zip/help.js.map +1 -1
  45. package/dist/safe-bash/commands/archive/zip/line-endings.d.ts +1 -0
  46. package/dist/safe-bash/commands/archive/zip/line-endings.d.ts.map +1 -1
  47. package/dist/safe-bash/commands/archive/zip/line-endings.js +158 -0
  48. package/dist/safe-bash/commands/archive/zip/line-endings.js.map +1 -1
  49. package/dist/safe-bash/commands/archive/zip/log.d.ts +23 -0
  50. package/dist/safe-bash/commands/archive/zip/log.d.ts.map +1 -0
  51. package/dist/safe-bash/commands/archive/zip/log.js +159 -0
  52. package/dist/safe-bash/commands/archive/zip/log.js.map +1 -0
  53. package/dist/safe-bash/commands/archive/zip/lzma.d.ts +10 -0
  54. package/dist/safe-bash/commands/archive/zip/lzma.d.ts.map +1 -0
  55. package/dist/safe-bash/commands/archive/zip/lzma.js +41 -0
  56. package/dist/safe-bash/commands/archive/zip/lzma.js.map +1 -0
  57. package/dist/safe-bash/commands/archive/zip/names.d.ts +3 -0
  58. package/dist/safe-bash/commands/archive/zip/names.d.ts.map +1 -0
  59. package/dist/safe-bash/commands/archive/zip/names.js +34 -0
  60. package/dist/safe-bash/commands/archive/zip/names.js.map +1 -0
  61. package/dist/safe-bash/commands/archive/zip/options.d.ts +7 -0
  62. package/dist/safe-bash/commands/archive/zip/options.d.ts.map +1 -1
  63. package/dist/safe-bash/commands/archive/zip/options.js +88 -17
  64. package/dist/safe-bash/commands/archive/zip/options.js.map +1 -1
  65. package/dist/safe-bash/commands/archive/zip/repair.d.ts +11 -0
  66. package/dist/safe-bash/commands/archive/zip/repair.d.ts.map +1 -0
  67. package/dist/safe-bash/commands/archive/zip/repair.js +392 -0
  68. package/dist/safe-bash/commands/archive/zip/repair.js.map +1 -0
  69. package/dist/safe-bash/commands/archive/zip/safety.d.ts +23 -4
  70. package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -1
  71. package/dist/safe-bash/commands/archive/zip/safety.js +73 -23
  72. package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -1
  73. package/dist/safe-bash/commands/archive/zip/sfx.d.ts +5 -0
  74. package/dist/safe-bash/commands/archive/zip/sfx.d.ts.map +1 -0
  75. package/dist/safe-bash/commands/archive/zip/sfx.js +56 -0
  76. package/dist/safe-bash/commands/archive/zip/sfx.js.map +1 -0
  77. package/dist/safe-bash/commands/archive/zip/test-command.d.ts +6 -0
  78. package/dist/safe-bash/commands/archive/zip/test-command.d.ts.map +1 -0
  79. package/dist/safe-bash/commands/archive/zip/test-command.js +101 -0
  80. package/dist/safe-bash/commands/archive/zip/test-command.js.map +1 -0
  81. package/dist/safe-bash/commands/archive/zip/volumes.d.ts +22 -0
  82. package/dist/safe-bash/commands/archive/zip/volumes.d.ts.map +1 -0
  83. package/dist/safe-bash/commands/archive/zip/volumes.js +265 -0
  84. package/dist/safe-bash/commands/archive/zip/volumes.js.map +1 -0
  85. package/dist/safe-bash/commands/archive/zip/zip64.d.ts +20 -1
  86. package/dist/safe-bash/commands/archive/zip/zip64.d.ts.map +1 -1
  87. package/dist/safe-bash/commands/archive/zip/zip64.js +127 -17
  88. package/dist/safe-bash/commands/archive/zip/zip64.js.map +1 -1
  89. package/dist/safe-bash/commands/archive/zip-format.d.ts +30 -5
  90. package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -1
  91. package/dist/safe-bash/commands/archive/zip-format.js +489 -91
  92. package/dist/safe-bash/commands/archive/zip-format.js.map +1 -1
  93. package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
  94. package/dist/safe-bash/commands/archive/zip.js +729 -128
  95. package/dist/safe-bash/commands/archive/zip.js.map +1 -1
  96. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts +7 -0
  97. package/dist/safe-bash/commands/bytes/compression/bounded-codec.d.ts.map +1 -1
  98. package/dist/safe-bash/commands/bytes/compression/bounded-codec.js.map +1 -1
  99. package/dist/safe-bash/commands/bytes/compression/codec-loader.d.ts.map +1 -1
  100. package/dist/safe-bash/commands/bytes/compression/codec-loader.js +8 -1
  101. package/dist/safe-bash/commands/bytes/compression/codec-loader.js.map +1 -1
  102. package/dist/safe-bash/commands/bytes/compression/native/generated/xz.mjs +1 -1
  103. package/dist/safe-bash/commands/bytes/compression/native/sources.json +2 -2
  104. package/dist/safe-bash/commands/bytes/compression/native/types.d.ts +1 -0
  105. package/dist/safe-bash/commands/bytes/compression/native/types.d.ts.map +1 -1
  106. package/dist/safe-bash/commands/python/cache.d.ts +11 -0
  107. package/dist/safe-bash/commands/python/cache.d.ts.map +1 -0
  108. package/dist/safe-bash/commands/python/cache.js +41 -0
  109. package/dist/safe-bash/commands/python/cache.js.map +1 -0
  110. package/dist/safe-bash/commands/python/index.browser.js +7 -1
  111. package/dist/safe-bash/commands/python/index.d.ts +6 -2
  112. package/dist/safe-bash/commands/python/index.d.ts.map +1 -1
  113. package/dist/safe-bash/commands/python/index.js +16 -10
  114. package/dist/safe-bash/commands/python/index.js.map +1 -1
  115. package/dist/safe-bash/commands/python/manifest.d.ts +23 -0
  116. package/dist/safe-bash/commands/python/manifest.d.ts.map +1 -0
  117. package/dist/safe-bash/commands/python/manifest.js +48 -0
  118. package/dist/safe-bash/commands/python/manifest.js.map +1 -0
  119. package/dist/safe-bash/commands/python/provisioning.d.ts +17 -13
  120. package/dist/safe-bash/commands/python/provisioning.d.ts.map +1 -1
  121. package/dist/safe-bash/commands/python/provisioning.js +88 -46
  122. package/dist/safe-bash/commands/python/provisioning.js.map +1 -1
  123. package/dist/safe-bash/commands/text.js +1 -1
  124. package/dist/safe-bash/commands/text.js.map +1 -1
  125. package/dist/safe-bash/core.browser.js +3113 -718
  126. package/dist/safe-bash/core.browser.js.map +4 -4
  127. package/package.json +11 -3
  128. package/dist/safe-bash/chunks/chunk-43HWIHXB.js.map +0 -7
  129. package/dist/safe-bash/chunks/xz-U4QDTPZL.js.map +0 -7
@@ -0,0 +1,392 @@
1
+ import { yieldTurn } from "../../../contracts/yield.js";
2
+ import { fail } from "../internal.js";
3
+ import { decodeZipEntry, readZipArchive } from "../zip-format.js";
4
+ import { zipEnd, zip64Fields, stripZip64 } from "./zip64.js";
5
+ import { ZipFailure } from "./options.js";
6
+ function zip64Payload(bytes) {
7
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
8
+ let result;
9
+ for (let offset = 0; offset < bytes.length;) {
10
+ if (offset + 4 > bytes.length)
11
+ fail("ZIP truncated extra field");
12
+ const next = offset + 4 + view.getUint16(offset + 2, true);
13
+ if (next > bytes.length)
14
+ fail("ZIP truncated extra field");
15
+ if (view.getUint16(offset, true) === 1) {
16
+ if (result)
17
+ fail("ZIP duplicate ZIP64 extra field");
18
+ result = bytes.subarray(offset + 4, next);
19
+ }
20
+ offset = next;
21
+ }
22
+ return result;
23
+ }
24
+ /** Recovery is opt-in. Signatures nominate records; the normal reader and
25
+ * codecs validate metadata, descriptors, names, sizes and CRC before retention. */
26
+ export async function repairZip(bytes, mode, limits, signal, password) {
27
+ signal.throwIfAborted();
28
+ if (bytes.length > limits.maxArchiveBytes)
29
+ fail("ZIP archive byte limit exceeded");
30
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
31
+ let work = 0, candidates = 0, decoded = 0;
32
+ const charge = (amount) => {
33
+ signal.throwIfAborted();
34
+ if (amount > limits.maxPatternSteps - work)
35
+ throw new ZipFailure(4, "Out of memory", "ZIP recovery work limit exceeded");
36
+ work += amount;
37
+ };
38
+ const verify = async (archive) => {
39
+ for (const entry of archive.entries) {
40
+ for await (const chunk of decodeZipEntry(entry, limits, signal, password)) {
41
+ charge(chunk.length);
42
+ if (chunk.length > limits.maxTotalBytes - decoded)
43
+ throw new ZipFailure(4, "Out of memory", "ZIP recovery total byte limit exceeded");
44
+ decoded += chunk.length;
45
+ }
46
+ }
47
+ };
48
+ const recoverCentral = async (archive) => {
49
+ const entries = [];
50
+ let partial = false;
51
+ for (const entry of archive.entries) {
52
+ try {
53
+ await verify({ entries: [entry], comment: new Uint8Array() });
54
+ entries.push(entry);
55
+ }
56
+ catch (error) {
57
+ signal.throwIfAborted();
58
+ if (error instanceof ZipFailure)
59
+ throw error;
60
+ if (mode === "F")
61
+ throw new ZipFailure(3, "Zip file structure invalid", "entry payload could not be verified; try -FF with a separate --out file");
62
+ partial = true;
63
+ }
64
+ }
65
+ if (partial && !entries.length)
66
+ throw new ZipFailure(3, "Zip file structure invalid", "no verified members recovered");
67
+ return { archive: { ...archive, entries }, partial };
68
+ };
69
+ const admitCandidate = (length) => {
70
+ if (++candidates > limits.maxMembers)
71
+ fail("ZIP recovery candidate limit exceeded");
72
+ charge(length);
73
+ if (length > limits.maxArchiveBytes)
74
+ fail("ZIP recovery archive byte limit exceeded");
75
+ };
76
+ charge(bytes.length);
77
+ let complete;
78
+ try {
79
+ complete = await readZipArchive(bytes, limits, signal, { prefix: true });
80
+ }
81
+ catch {
82
+ signal.throwIfAborted();
83
+ }
84
+ if (complete?.prefix?.length) {
85
+ // A complete ZIP at EOF can itself be a bounded outer member's payload.
86
+ // Recovery must not reinterpret that preceding local record as an SFX stub.
87
+ const prefixLength = complete.prefix.length;
88
+ for (let offset = 0; offset + 30 <= prefixLength; offset++) {
89
+ charge(1);
90
+ if (offset % 4096 === 0)
91
+ await yieldTurn(signal);
92
+ if (view.getUint32(offset, true) !== 0x04034b50)
93
+ continue;
94
+ const payload = offset + 30 + view.getUint16(offset + 26, true) + view.getUint16(offset + 28, true);
95
+ if (view.getUint16(offset + 26, true) && payload <= prefixLength) {
96
+ complete = undefined;
97
+ break;
98
+ }
99
+ }
100
+ }
101
+ if (complete)
102
+ return recoverCentral(complete);
103
+ // -F uses existing central metadata. It never invents attributes or guesses
104
+ // missing members. A synthetic EOCD must pass the complete strict reader.
105
+ {
106
+ let firstLocal = -1;
107
+ for (let start = 0; start + 46 <= bytes.length; start++) {
108
+ charge(1);
109
+ if (start % 4096 === 0)
110
+ await yieldTurn(signal);
111
+ if (start + 30 <= bytes.length && view.getUint32(start, true) === 0x04034b50) {
112
+ if (firstLocal < 0)
113
+ firstLocal = start;
114
+ const payload = start + 30 + view.getUint16(start + 26, true) + view.getUint16(start + 28, true);
115
+ let compressed = view.getUint32(start + 18, true);
116
+ if (compressed === 0xffffffff && payload <= bytes.length) {
117
+ try {
118
+ const extra = bytes.subarray(start + 30 + view.getUint16(start + 26, true), payload);
119
+ compressed = zip64Fields(zip64Payload(extra), [view.getUint32(start + 22, true), compressed])[1];
120
+ }
121
+ catch {
122
+ signal.throwIfAborted();
123
+ }
124
+ }
125
+ const end = payload + compressed;
126
+ if (compressed !== 0xffffffff && compressed && end <= bytes.length) {
127
+ start = end - 1;
128
+ continue;
129
+ }
130
+ }
131
+ if (view.getUint32(start, true) !== 0x02014b50)
132
+ continue;
133
+ let end = start, members = 0, minimumLocal = Infinity;
134
+ while (end + 46 <= bytes.length && view.getUint32(end, true) === 0x02014b50) {
135
+ charge(46);
136
+ if (++members > limits.maxMembers)
137
+ fail("ZIP recovery member limit exceeded");
138
+ const next = end + 46 + view.getUint16(end + 28, true) + view.getUint16(end + 30, true) + view.getUint16(end + 32, true);
139
+ if (next > bytes.length)
140
+ break;
141
+ try {
142
+ const extra = end + 46 + view.getUint16(end + 28, true);
143
+ const values = zip64Fields(zip64Payload(bytes.subarray(extra, extra + view.getUint16(end + 30, true))), [view.getUint32(end + 24, true), view.getUint32(end + 20, true), view.getUint32(end + 42, true)]);
144
+ minimumLocal = Math.min(minimumLocal, values[2]);
145
+ }
146
+ catch {
147
+ signal.throwIfAborted();
148
+ }
149
+ end = next;
150
+ }
151
+ const displacement = firstLocal >= 0 && minimumLocal !== Infinity ? Math.max(0, firstLocal - minimumLocal) : 0;
152
+ const tail = zipEnd(members, end - start, start - displacement, new Uint8Array());
153
+ admitCandidate(end + tail.length);
154
+ const candidate = new Uint8Array(end + tail.length);
155
+ candidate.set(bytes.subarray(0, end));
156
+ candidate.set(tail, end);
157
+ let archive;
158
+ try {
159
+ archive = await readZipArchive(candidate, limits, signal, { prefix: true });
160
+ }
161
+ catch {
162
+ signal.throwIfAborted();
163
+ continue;
164
+ }
165
+ if (firstLocal >= 0 && archive.prefix?.length !== firstLocal)
166
+ continue;
167
+ return recoverCentral(archive);
168
+ }
169
+ if (mode === "F")
170
+ throw new ZipFailure(3, "Zip file structure invalid", "central directory could not be verified; try -FF with a separate --out file");
171
+ }
172
+ const entries = [];
173
+ const names = new Set();
174
+ let partial = false, total = 0;
175
+ for (let start = 0; start + 4 <= bytes.length; start++) {
176
+ charge(1);
177
+ if (start % 4096 === 0)
178
+ await yieldTurn(signal);
179
+ if (view.getUint32(start, true) !== 0x04034b50)
180
+ continue;
181
+ if (start + 30 > bytes.length) {
182
+ partial = true;
183
+ break;
184
+ }
185
+ const flags = view.getUint16(start + 6, true);
186
+ const nameLength = view.getUint16(start + 26, true), extraLength = view.getUint16(start + 28, true);
187
+ const payload = start + 30 + nameLength + extraLength;
188
+ if (payload > bytes.length || nameLength > limits.maxPathBytes || extraLength > limits.maxPaxBytes) {
189
+ partial = true;
190
+ break;
191
+ }
192
+ const rawCompressed = view.getUint32(start + 18, true), rawSize = view.getUint32(start + 22, true);
193
+ const checksum = view.getUint32(start + 14, true);
194
+ const wide = rawCompressed === 0xffffffff || rawSize === 0xffffffff;
195
+ const localExtra = bytes.subarray(start + 30 + nameLength, payload);
196
+ let compressed = rawCompressed, size = rawSize;
197
+ let centralExtra;
198
+ try {
199
+ [size, compressed] = zip64Fields(zip64Payload(localExtra), [rawSize, rawCompressed]);
200
+ centralExtra = stripZip64(localExtra);
201
+ // Local UT fields may contain access/creation times; central UT contains
202
+ // only mtime. Retain opaque fields and the existing name codecs.
203
+ const fields = [];
204
+ const centralView = new DataView(centralExtra.buffer);
205
+ for (let offset = 0; offset < centralExtra.length;) {
206
+ const next = offset + 4 + centralView.getUint16(offset + 2, true);
207
+ if (centralView.getUint16(offset, true) === 0x5455 && next - offset >= 5) {
208
+ const mtime = centralExtra[offset + 4] & 1;
209
+ const stamp = new Uint8Array(centralExtra.subarray(offset, offset + (mtime ? 9 : 5)));
210
+ new DataView(stamp.buffer).setUint16(2, mtime ? 5 : 1, true);
211
+ stamp[4] = mtime;
212
+ fields.push(stamp);
213
+ }
214
+ else
215
+ fields.push(centralExtra.subarray(offset, next));
216
+ offset = next;
217
+ }
218
+ centralExtra = new Uint8Array(Buffer.concat(fields));
219
+ }
220
+ catch {
221
+ signal.throwIfAborted();
222
+ partial = true;
223
+ // A non-descriptor classic header still bounds the rejected record.
224
+ // Skip its entire payload, including apparent embedded members. ZIP64
225
+ // and descriptor records need verified metadata to establish that end.
226
+ if (!(flags & 8) && !wide && payload + rawCompressed <= bytes.length) {
227
+ start = payload + rawCompressed - 1;
228
+ continue;
229
+ }
230
+ break;
231
+ }
232
+ const attempt = async (end, compressedSize, expanded, crc) => {
233
+ if (expanded > limits.maxTotalBytes - total)
234
+ throw new ZipFailure(4, "Out of memory", "ZIP recovery total byte limit exceeded");
235
+ if (expanded > limits.maxEntryBytes || compressedSize > limits.maxArchiveBytes || expanded >= 0xffffffff)
236
+ return undefined;
237
+ const localLength = end - start, centralLength = 46 + nameLength + centralExtra.length;
238
+ const tail = zipEnd(1, centralLength, localLength, new Uint8Array());
239
+ admitCandidate(localLength + centralLength + tail.length);
240
+ const candidate = new Uint8Array(localLength + centralLength + tail.length);
241
+ candidate.set(bytes.subarray(start, end));
242
+ const central = new DataView(candidate.buffer, localLength, centralLength);
243
+ central.setUint32(0, 0x02014b50, true);
244
+ central.setUint16(4, 20, true);
245
+ candidate.set(bytes.subarray(start + 4, start + 14), localLength + 6);
246
+ central.setUint32(16, crc, true);
247
+ central.setUint32(20, compressedSize, true);
248
+ central.setUint32(24, expanded, true);
249
+ central.setUint16(28, nameLength, true);
250
+ central.setUint16(30, centralExtra.length, true);
251
+ candidate.set(bytes.subarray(start + 30, start + 30 + nameLength), localLength + 46);
252
+ candidate.set(centralExtra, localLength + 46 + nameLength);
253
+ candidate.set(tail, localLength + centralLength);
254
+ try {
255
+ const archive = await readZipArchive(candidate, limits, signal);
256
+ await verify(archive);
257
+ return archive.entries[0];
258
+ }
259
+ catch (error) {
260
+ signal.throwIfAborted();
261
+ if (error instanceof ZipFailure)
262
+ throw error;
263
+ return undefined;
264
+ }
265
+ };
266
+ let end = payload + compressed, entry;
267
+ if (flags & 8) {
268
+ const length = wide ? 20 : 12;
269
+ let matches = 0;
270
+ for (let offset = payload; offset + length <= bytes.length; offset++) {
271
+ charge(1);
272
+ if ((offset - payload) % 4096 === 0)
273
+ await yieldTurn(signal);
274
+ const signed = view.getUint32(offset, true) === 0x08074b50;
275
+ const base = offset + (signed ? 4 : 0), next = base + length;
276
+ if (next > bytes.length)
277
+ continue;
278
+ const packed = wide ? view.getBigUint64(base + 4, true) : BigInt(view.getUint32(base + 4, true));
279
+ const expanded = wide ? view.getBigUint64(base + 12, true) : BigInt(view.getUint32(base + 8, true));
280
+ if (packed !== BigInt(offset - payload) || expanded > BigInt(limits.maxEntryBytes))
281
+ continue;
282
+ if (compressed && packed !== BigInt(compressed) || size && expanded !== BigInt(size) || checksum && checksum !== view.getUint32(base, true))
283
+ continue;
284
+ // An unknown-size descriptor needs a record boundary, not arbitrary
285
+ // matching integers embedded in a payload.
286
+ if (next !== bytes.length && (next + 4 > bytes.length || ![0x04034b50, 0x02014b50, 0x06054b50, 0x06064b50].includes(view.getUint32(next, true))))
287
+ continue;
288
+ const candidateEntry = await attempt(next, Number(packed), Number(expanded), view.getUint32(base, true));
289
+ if (!candidateEntry)
290
+ continue;
291
+ entry = candidateEntry;
292
+ end = next;
293
+ if (++matches > 1) {
294
+ partial = true;
295
+ entry = undefined;
296
+ break;
297
+ }
298
+ if (compressed)
299
+ break;
300
+ }
301
+ // No safe end is known: do not scan that payload for apparent members.
302
+ if (!entry) {
303
+ partial = true;
304
+ if (matches > 1) {
305
+ start = end - 1;
306
+ continue;
307
+ }
308
+ break;
309
+ }
310
+ }
311
+ else {
312
+ if (end > bytes.length) {
313
+ partial = true;
314
+ break;
315
+ }
316
+ entry = await attempt(end, compressed, size, checksum);
317
+ }
318
+ start = end - 1;
319
+ if (!entry || names.has(entry.name)) {
320
+ partial = true;
321
+ continue;
322
+ }
323
+ if (entry.size > limits.maxTotalBytes - total)
324
+ fail("ZIP recovery total byte limit exceeded");
325
+ names.add(entry.name);
326
+ total += entry.size;
327
+ entries.push(entry);
328
+ }
329
+ if (!entries.length)
330
+ throw new ZipFailure(3, "Zip file structure invalid", "no verified members recovered");
331
+ return { archive: { entries, comment: new Uint8Array() }, partial };
332
+ }
333
+ /** Adjust a validated SFX using owned bytes; prefix bytes are inert. */
334
+ export async function adjustZipSfx(bytes, archive, limits, signal, password) {
335
+ const prefix = archive.prefix?.length ?? 0;
336
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
337
+ const end = bytes.length - 22 - archive.comment.length;
338
+ let centralEnd = end, central = end - view.getUint32(end + 12, true);
339
+ let displacement = central - view.getUint32(end + 16, true);
340
+ const wide = end >= 20 && view.getUint32(end - 20, true) === 0x07064b50;
341
+ if (wide) {
342
+ const declared = Number(view.getBigUint64(end - 12, true));
343
+ centralEnd = declared;
344
+ if (declared + 12 > end - 20 || view.getUint32(declared, true) !== 0x06064b50)
345
+ centralEnd += prefix;
346
+ displacement = centralEnd - declared;
347
+ central = Number(view.getBigUint64(centralEnd + 48, true)) + displacement;
348
+ }
349
+ if (displacement !== 0 && displacement !== prefix)
350
+ fail("ZIP inconsistent SFX offsets");
351
+ for (const entry of archive.entries)
352
+ for await (const chunk of decodeZipEntry(entry, limits, signal, password)) {
353
+ void chunk;
354
+ }
355
+ const result = new Uint8Array(bytes);
356
+ const output = new DataView(result.buffer);
357
+ for (let offset = central; offset < centralEnd;) {
358
+ await yieldTurn(signal);
359
+ const local = view.getUint32(offset + 42, true);
360
+ if (local === 0xffffffff) {
361
+ const extraStart = offset + 46 + view.getUint16(offset + 28, true);
362
+ const extraEnd = extraStart + view.getUint16(offset + 30, true);
363
+ for (let extra = extraStart; extra < extraEnd; extra += 4 + view.getUint16(extra + 2, true)) {
364
+ if (view.getUint16(extra, true) !== 1)
365
+ continue;
366
+ const position = extra + 4 + (view.getUint32(offset + 24, true) === 0xffffffff ? 8 : 0) + (view.getUint32(offset + 20, true) === 0xffffffff ? 8 : 0);
367
+ const adjusted = view.getBigUint64(position, true) + BigInt(displacement);
368
+ if (adjusted > BigInt(Number.MAX_SAFE_INTEGER))
369
+ fail("ZIP64 unsafe adjusted offset");
370
+ output.setBigUint64(position, adjusted, true);
371
+ }
372
+ }
373
+ else {
374
+ if (local + displacement >= 0xffffffff)
375
+ fail("ZIP SFX adjusted offset requires ZIP64 promotion");
376
+ output.setUint32(offset + 42, local + displacement, true);
377
+ }
378
+ offset += 46 + view.getUint16(offset + 28, true) + view.getUint16(offset + 30, true) + view.getUint16(offset + 32, true);
379
+ }
380
+ if (view.getUint32(end + 16, true) !== 0xffffffff) {
381
+ if (central >= 0xffffffff)
382
+ fail("ZIP SFX adjusted directory requires ZIP64 promotion");
383
+ output.setUint32(end + 16, central, true);
384
+ }
385
+ if (wide) {
386
+ output.setBigUint64(centralEnd + 48, BigInt(central), true);
387
+ output.setBigUint64(end - 12, BigInt(centralEnd), true);
388
+ }
389
+ await readZipArchive(result, limits, signal, { prefix: true });
390
+ return result;
391
+ }
392
+ //# sourceMappingURL=repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/repair.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type ByteSource, type CommandContext, type FileStat } from "../../../contracts/index.js";
1
+ import { type ByteSource, type CommandContext, type FileStat, type FileStaging } from "../../../contracts/index.js";
2
2
  import { type ArchiveLimits } from "../internal.js";
3
3
  export declare class ZipScope {
4
4
  private readonly original;
@@ -9,15 +9,17 @@ export declare class ZipScope {
9
9
  private readonly readers;
10
10
  private readonly closedReason;
11
11
  private drain;
12
+ private inputDrain;
12
13
  private work;
13
14
  private stdinSource;
14
15
  constructor(original: CommandContext, limits: ArchiveLimits);
15
16
  readonly close: () => Promise<void>;
17
+ closeInputs(): Promise<void>;
16
18
  operation<Value>(action: () => Value | PromiseLike<Value>): Promise<Value>;
17
19
  stat(path: string): Promise<FileStat | undefined>;
18
20
  get stdin(): ByteSource;
19
- source(source: ByteSource): ByteSource;
20
- input(path: string): ByteSource;
21
+ source(source: ByteSource, controller?: AbortController): ByteSource;
22
+ input(path: string, fifo?: boolean): ByteSource;
21
23
  }
22
24
  export interface ZipPublication {
23
25
  readonly output: string;
@@ -25,8 +27,25 @@ export interface ZipPublication {
25
27
  readonly parentName: string;
26
28
  readonly existing: FileStat | undefined;
27
29
  readonly parentStat: FileStat;
28
- readonly bytes: Uint8Array;
30
+ readonly bytes?: Uint8Array;
31
+ readonly source?: ByteSource;
29
32
  readonly mtimeMs?: number;
33
+ readonly stagingName?: string;
34
+ readonly stagingParent?: string;
35
+ readonly stagingParentStat?: FileStat;
36
+ readonly validate?: (path: string) => Promise<void>;
30
37
  }
38
+ export interface ZipStaging {
39
+ readonly stagingPrefix?: string;
40
+ readonly reservedPath?: string;
41
+ readonly parent: string;
42
+ readonly parentStat: FileStat;
43
+ readonly existing?: FileStat | undefined;
44
+ readonly bytes?: Uint8Array;
45
+ readonly source?: ByteSource;
46
+ readonly mtimeMs?: number;
47
+ }
48
+ /** Own a temporary archive through acquisition, writing, consumption and cleanup. */
49
+ export declare function stageZip(scope: ZipScope, prepared: ZipStaging, consume: (staging: FileStaging) => Promise<void>): Promise<void>;
31
50
  export declare function publishZip(scope: ZipScope, prepared: ZipPublication): Promise<void>;
32
51
  //# sourceMappingURL=safety.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAoB,MAAM,6BAA6B,CAAC;AAE/H,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAErE,qBAAa,QAAQ;IASP,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAkB,QAAQ,CAAC,MAAM,EAAE,aAAa;IARrF,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,WAAW,CAAyB;gBACf,QAAQ,EAAE,cAAc,EAAW,MAAM,EAAE,aAAa;IAIrF,QAAQ,CAAC,KAAK,QAAO,OAAO,CAAC,IAAI,CAAC,CAYhC;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAW1E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAQvD,IAAI,KAAK,IAAI,UAAU,CAEtB;IACD,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAiB/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;CAcvC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CzF"}
1
+ {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/safety.ts"],"names":[],"mappings":"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"}