@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
@@ -1,5 +1,6 @@
1
1
  import { readBytes } from "../../../contracts/index.js";
2
2
  import { retainFileSystemCleanup } from "@poe-platform/safe-fs/core";
3
+ import { writeFileOutput } from "../../../contracts/filesystem-output.js";
3
4
  import { checkPath, fail } from "../internal.js";
4
5
  export class ZipScope {
5
6
  original;
@@ -10,6 +11,7 @@ export class ZipScope {
10
11
  readers = new Set();
11
12
  closedReason = new Error("ZIP command is closed");
12
13
  drain;
14
+ inputDrain;
13
15
  work = 0;
14
16
  stdinSource;
15
17
  constructor(original, limits) {
@@ -23,17 +25,21 @@ export class ZipScope {
23
25
  this.drain = Promise.resolve().then(async () => {
24
26
  while (this.pending.size)
25
27
  await Promise.allSettled([...this.pending]);
26
- const results = await Promise.allSettled([...this.readers].map(close => close()));
27
- const failures = results.filter(result => result.status === "rejected").map(result => result.reason);
28
- if (failures.length === 1)
29
- throw failures[0];
30
- if (failures.length)
31
- throw new AggregateError(failures, "ZIP reader cleanup failed");
28
+ await this.closeInputs();
32
29
  });
33
30
  this.controller.abort(this.original.signal.aborted ? this.original.signal.reason : this.closedReason);
34
31
  }
35
32
  return this.drain;
36
33
  };
34
+ closeInputs() {
35
+ return this.inputDrain ??= Promise.allSettled([...this.readers].map(close => close())).then(results => {
36
+ const failures = results.filter(result => result.status === "rejected").map(result => result.reason);
37
+ if (failures.length === 1)
38
+ throw failures[0];
39
+ if (failures.length)
40
+ throw new AggregateError(failures, "ZIP reader cleanup failed");
41
+ });
42
+ }
37
43
  async operation(action) {
38
44
  this.context.signal.throwIfAborted();
39
45
  if (++this.work > this.limits.maxPatternSteps)
@@ -63,10 +69,13 @@ export class ZipScope {
63
69
  get stdin() {
64
70
  return this.stdinSource ??= this.source(this.original.stdin);
65
71
  }
66
- source(source) {
72
+ source(source, controller) {
73
+ if (this.inputDrain)
74
+ fail("ZIP inputs are closed");
67
75
  const iterator = source[Symbol.asyncIterator]();
68
76
  let closing;
69
77
  const close = () => closing ??= (async () => {
78
+ controller?.abort(this.closedReason);
70
79
  try {
71
80
  await iterator.return?.();
72
81
  }
@@ -85,11 +94,15 @@ export class ZipScope {
85
94
  async return() { await close(); return { done: true, value: undefined }; },
86
95
  }) };
87
96
  }
88
- async *input(path) {
89
- const { fs, signal } = this.context;
97
+ async *input(path, fifo = false) {
98
+ const { fs } = this.context;
99
+ const controller = new AbortController();
100
+ const signal = AbortSignal.any([this.context.signal, controller.signal]);
90
101
  const capabilities = await this.operation(() => fs.capabilitiesFor?.(path, { signal }) ?? fs.capabilities);
102
+ if (fifo && (!fs.readStream || capabilities.streamingRead !== true))
103
+ fail("filesystem lacks explicit FIFO byte stream capability");
91
104
  if (fs.readStream && capabilities.streamingRead !== false) {
92
- const source = await this.operation(() => this.source(fs.readStream(path, { signal, chunkSize: this.limits.chunkSize })));
105
+ const source = await this.operation(() => this.source(fs.readStream(path, { signal, chunkSize: this.limits.chunkSize }), controller));
93
106
  yield* readBytes(source, signal);
94
107
  }
95
108
  else {
@@ -103,11 +116,14 @@ export class ZipScope {
103
116
  }
104
117
  }
105
118
  }
106
- export async function publishZip(scope, prepared) {
119
+ /** Own a temporary archive through acquisition, writing, consumption and cleanup. */
120
+ export async function stageZip(scope, prepared, consume) {
107
121
  const { fs, signal } = scope.context;
108
- const capabilities = await scope.operation(() => fs.capabilitiesFor?.(prepared.output, { signal, create: true }) ?? fs.capabilities);
109
- if (capabilities.atomicFileStaging !== true || !fs.createStagedFile || !fs.publishStagedFile || !fs.removeStagedFile)
110
- fail("ZIP publication requires atomic owned file staging");
122
+ const capabilities = await scope.operation(() => fs.capabilitiesFor?.(prepared.parent, { signal }) ?? fs.capabilities);
123
+ if (capabilities.atomicFileStaging !== true || !fs.createStagedFile || !fs.removeStagedFile)
124
+ fail("ZIP temporary path requires atomic owned file staging");
125
+ if (prepared.source && (capabilities.atomicFileMutation !== true || !fs.writeFileConditional))
126
+ fail("ZIP temporary path requires atomic conditional writes");
111
127
  let staging;
112
128
  let failure;
113
129
  const close = retainFileSystemCleanup(fs, async (cleanup) => {
@@ -119,14 +135,14 @@ export async function publishZip(scope, prepared) {
119
135
  }, { maxOperations: 16 });
120
136
  try {
121
137
  for (let attempt = 0; attempt < Math.min(64, scope.limits.maxMembers); attempt++) {
122
- const path = `${prepared.parent === "/" ? "" : prepared.parent}/.zip-${attempt + 1}`;
138
+ const path = `${prepared.parent === "/" ? "" : prepared.parent}/.${prepared.stagingPrefix ?? "zip"}-${attempt + 1}`;
123
139
  checkPath(path, scope.limits);
124
140
  checkPath(`${path}/archive.zip`, scope.limits);
125
- if (path === prepared.output)
141
+ if (path === prepared.reservedPath)
126
142
  continue;
127
143
  try {
128
144
  await scope.operation(async () => {
129
- staging = await fs.createStagedFile(path, "archive.zip", { type: "file", data: prepared.bytes }, {
145
+ staging = await fs.createStagedFile(path, "archive.zip", { type: "file", data: prepared.bytes ?? new Uint8Array() }, {
130
146
  signal, parent: prepared.parentStat, ...(prepared.existing ? { mode: prepared.existing.mode & 0o7777 } : {}),
131
147
  ...(prepared.mtimeMs === undefined ? {} : { mtimeMs: prepared.mtimeMs, atimeMs: prepared.mtimeMs }),
132
148
  });
@@ -141,14 +157,25 @@ export async function publishZip(scope, prepared) {
141
157
  }
142
158
  if (!staging)
143
159
  fail("ZIP temporary directory attempt limit exceeded");
160
+ if (prepared.source) {
161
+ for await (const chunk of readBytes(prepared.source, signal)) {
162
+ try {
163
+ await writeFileOutput(scope.context, chunk, bytes => scope.operation(async () => {
164
+ const stat = await fs.writeFileConditional(staging.file.path, bytes, {
165
+ signal, parent: staging.directory.stat, expected: staging.file.stat, append: true,
166
+ });
167
+ staging = { ...staging, file: { path: staging.file.path, stat } };
168
+ }));
169
+ }
170
+ catch (error) {
171
+ void scope.closeInputs().catch(() => { });
172
+ throw error;
173
+ }
174
+ }
175
+ }
144
176
  if (prepared.mtimeMs !== undefined && (staging.file.stat.mtimeMs !== prepared.mtimeMs || staging.file.stat.atimeMs !== prepared.mtimeMs))
145
177
  fail("ZIP staging did not retain archive modification time");
146
- const parent = await scope.operation(() => fs.realpath(prepared.parentName, { signal }));
147
- if (parent !== prepared.parent)
148
- fail("archive parent changed before publication");
149
- await scope.operation(() => fs.publishStagedFile(staging, prepared.output, {
150
- signal, parent: prepared.parentStat, destination: prepared.existing ?? null,
151
- }));
178
+ await consume(staging);
152
179
  }
153
180
  catch (error) {
154
181
  failure = { reason: error };
@@ -164,4 +191,27 @@ export async function publishZip(scope, prepared) {
164
191
  if (failure)
165
192
  throw failure.reason;
166
193
  }
194
+ export async function publishZip(scope, prepared) {
195
+ const { fs, signal } = scope.context;
196
+ const capabilities = await scope.operation(() => fs.capabilitiesFor?.(prepared.output, { signal, create: true }) ?? fs.capabilities);
197
+ if (capabilities.atomicFileStaging !== true || !fs.publishStagedFile)
198
+ fail("ZIP publication requires atomic owned file staging");
199
+ await stageZip(scope, {
200
+ ...prepared, reservedPath: prepared.output, parent: prepared.stagingParent ?? prepared.parent, parentStat: prepared.stagingParentStat ?? prepared.parentStat,
201
+ }, async (staging) => {
202
+ if (prepared.validate)
203
+ await prepared.validate(staging.file.path);
204
+ if (prepared.stagingName !== undefined) {
205
+ const current = await scope.operation(() => fs.realpath(prepared.stagingName, { signal }));
206
+ if (current !== prepared.stagingParent)
207
+ fail("ZIP temporary path changed before publication");
208
+ }
209
+ const parent = await scope.operation(() => fs.realpath(prepared.parentName, { signal }));
210
+ if (parent !== prepared.parent)
211
+ fail("archive parent changed before publication");
212
+ await scope.operation(() => fs.publishStagedFile(staging, prepared.output, {
213
+ signal, parent: prepared.parentStat, destination: prepared.existing ?? null,
214
+ }));
215
+ });
216
+ }
167
217
  //# sourceMappingURL=safety.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/safety.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/safety.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type ArchiveLimits } from "../internal.js";
2
+ import { type ZipArchive } from "../zip-format.js";
3
+ /** Accept only a complete validated archive following a prefix. Never execute it. */
4
+ export declare function readZipSfx(bytes: Uint8Array, limits: ArchiveLimits, signal: AbortSignal, password?: Uint8Array): Promise<ZipArchive>;
5
+ //# sourceMappingURL=sfx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sfx.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/sfx.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnF,qFAAqF;AACrF,wBAAsB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAkC1I"}
@@ -0,0 +1,56 @@
1
+ import { yieldTurn } from "../../../contracts/yield.js";
2
+ import { fail } from "../internal.js";
3
+ import { decodeZipEntry, readZipArchive } from "../zip-format.js";
4
+ /** Accept only a complete validated archive following a prefix. Never execute it. */
5
+ export async function readZipSfx(bytes, limits, signal, password) {
6
+ signal.throwIfAborted();
7
+ if (bytes.length > limits.maxArchiveBytes)
8
+ fail("ZIP archive byte limit exceeded");
9
+ let archive;
10
+ try {
11
+ archive = await readZipArchive(bytes, limits, signal, { prefix: true });
12
+ }
13
+ catch {
14
+ signal.throwIfAborted();
15
+ }
16
+ if (!archive) {
17
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
18
+ let attempts = 0;
19
+ // Unadjusted SFX offsets are relative to the embedded ZIP. Signature
20
+ // recognition only nominates a candidate; the strict reader proves all spans.
21
+ for (let offset = 1; offset + 22 <= bytes.length; offset++) {
22
+ if (offset > limits.maxPatternSteps)
23
+ fail("ZIP SFX scan work limit exceeded");
24
+ if (offset % 4096 === 0)
25
+ await yieldTurn(signal);
26
+ const signature = view.getUint32(offset, true);
27
+ if (signature !== 0x04034b50 && signature !== 0x06054b50)
28
+ continue;
29
+ if (++attempts > Math.min(64, limits.maxMembers))
30
+ fail("ZIP SFX candidate limit exceeded");
31
+ let candidate;
32
+ try {
33
+ candidate = await readZipArchive(bytes.subarray(offset), limits, signal);
34
+ }
35
+ catch {
36
+ signal.throwIfAborted();
37
+ continue;
38
+ }
39
+ archive = candidate;
40
+ break;
41
+ }
42
+ }
43
+ if (!archive)
44
+ fail("ZIP SFX prefix does not contain a validated archive");
45
+ // CRC/expanded-size validation is required before prefix removal publication.
46
+ let decoded = 0;
47
+ for (const entry of archive.entries) {
48
+ for await (const chunk of decodeZipEntry(entry, limits, signal, password)) {
49
+ if (chunk.length > limits.maxTotalBytes - decoded)
50
+ fail("ZIP SFX decoded byte limit exceeded");
51
+ decoded += chunk.length;
52
+ }
53
+ }
54
+ return archive;
55
+ }
56
+ //# sourceMappingURL=sfx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sfx.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/sfx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAsB,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAEnF,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAiB,EAAE,MAAqB,EAAE,MAAmB,EAAE,QAAqB;IACnH,MAAM,CAAC,cAAc,EAAE,CAAC;IACxB,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,eAAe;QAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACnF,IAAI,OAA+B,CAAC;IACpC,IAAI,CAAC;QAAC,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAChF,MAAM,CAAC;QAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAAC,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,qEAAqE;QACrE,8EAA8E;QAC9E,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;YAC3D,IAAI,MAAM,GAAG,MAAM,CAAC,eAAe;gBAAE,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAC9E,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC;gBAAE,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,UAAU;gBAAE,SAAS;YACnE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC;gBAAE,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAC3F,IAAI,SAAqB,CAAC;YAC1B,IAAI,CAAC;gBAAC,SAAS,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAAC,CAAC;YACjF,MAAM,CAAC;gBAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC5C,OAAO,GAAG,SAAS,CAAC;YACpB,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAC1E,8EAA8E;IAC9E,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,GAAG,OAAO;gBAAE,IAAI,CAAC,qCAAqC,CAAC,CAAC;YAC/F,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Budget } from "../internal.js";
2
+ import type { ZipScope } from "./safety.js";
3
+ /** A literal argv grammar: spaces, quotes and backslash escapes, with no shell. */
4
+ export declare function parseZipTestCommand(value: string): readonly string[];
5
+ export declare function testZipCommand(scope: ZipScope, command: readonly string[] | undefined, path: string, budget: Budget, archive: string, quiet: boolean, password?: Uint8Array): Promise<void>;
6
+ //# sourceMappingURL=test-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-command.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/test-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAQ,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAwBpE;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCjM"}
@@ -0,0 +1,101 @@
1
+ import { shellValueFromBytes } from "../../../contracts/value.js";
2
+ import { createCommandArguments, toByteSource } from "../../../contracts/index.js";
3
+ import { Budget, fail } from "../internal.js";
4
+ import { ZipFailure, zipPublicText } from "./options.js";
5
+ /** A literal argv grammar: spaces, quotes and backslash escapes, with no shell. */
6
+ export function parseZipTestCommand(value) {
7
+ const words = [];
8
+ let word = "";
9
+ let quote = "";
10
+ let active = false;
11
+ for (let index = 0; index < value.length; index++) {
12
+ const character = value[index];
13
+ if ("\n\r\0;|&<>$`".includes(character))
14
+ throw new ZipFailure(16, "Invalid command arguments", "unsupported virtual test-command syntax");
15
+ if (character === "\\" && quote !== "'") {
16
+ const next = value[++index];
17
+ if (next === undefined || "\n\r\0;|&<>$`".includes(next))
18
+ throw new ZipFailure(16, "Invalid command arguments", "invalid test-command escape");
19
+ word += next;
20
+ active = true;
21
+ }
22
+ else if (quote) {
23
+ if (character === quote)
24
+ quote = "";
25
+ else
26
+ word += character;
27
+ }
28
+ else if (character === "'" || character === '"') {
29
+ quote = character;
30
+ active = true;
31
+ }
32
+ else if (character === " " || character === "\t") {
33
+ if (active) {
34
+ words.push(word);
35
+ word = "";
36
+ active = false;
37
+ }
38
+ }
39
+ else {
40
+ word += character;
41
+ active = true;
42
+ }
43
+ }
44
+ if (quote)
45
+ throw new ZipFailure(16, "Invalid command arguments", "unterminated test-command quote");
46
+ if (active)
47
+ words.push(word);
48
+ if (!words[0] || words[0].includes("{}"))
49
+ throw new ZipFailure(16, "Invalid command arguments", "invalid virtual test command");
50
+ return words;
51
+ }
52
+ export async function testZipCommand(scope, command, path, budget, archive, quiet, password) {
53
+ const { context, limits } = scope;
54
+ let outputBytes = 0;
55
+ const sink = { async write(chunk) {
56
+ context.signal.throwIfAborted();
57
+ if (chunk.length > limits.maxTextBytes - outputBytes)
58
+ fail("ZIP test-command output limit exceeded");
59
+ outputBytes += chunk.length;
60
+ } };
61
+ try {
62
+ if (!context.invoke)
63
+ fail("virtual command invocation unavailable");
64
+ const virtualCommand = command ?? ["unzip", "-tqq"];
65
+ const placeholders = virtualCommand.slice(1).some(word => word.includes("{}"));
66
+ let argumentBytes = command === undefined && password !== undefined ? password.length + 4 : 0;
67
+ for (const word of virtualCommand.slice(1)) {
68
+ let placeholders = 0;
69
+ for (let index = 0; index + 1 < word.length; index++)
70
+ if (word[index] === "{" && word[index + 1] === "}") {
71
+ placeholders++;
72
+ index++;
73
+ }
74
+ const size = Buffer.byteLength(word) + placeholders * (Buffer.byteLength(path) - 2) + 1;
75
+ if (size > limits.maxArgumentBytes - argumentBytes)
76
+ fail("ZIP test-command argument byte limit exceeded");
77
+ argumentBytes += size;
78
+ }
79
+ if (!placeholders && Buffer.byteLength(path) + 1 > limits.maxArgumentBytes - argumentBytes)
80
+ fail("ZIP test-command argument byte limit exceeded");
81
+ const args = virtualCommand.slice(1).map(word => word.split("{}").join(path));
82
+ if (!placeholders)
83
+ args.push(path);
84
+ const values = createCommandArguments(command === undefined && password !== undefined ? ["-P", shellValueFromBytes(password), ...args] : args);
85
+ const result = await scope.operation(() => context.invoke(virtualCommand[0], values.args, {
86
+ argumentValues: values,
87
+ signal: context.signal, stdin: toByteSource(""), stdinIsDefault: true, stdout: sink, stderr: sink,
88
+ }));
89
+ if (result.exitCode !== 0)
90
+ fail("ZIP virtual test command failed");
91
+ }
92
+ catch {
93
+ context.signal.throwIfAborted();
94
+ if (!quiet)
95
+ await budget.output(`test of ${zipPublicText(archive)} FAILED\n`);
96
+ throw new ZipFailure(8, "Zip file invalid, could not spawn unzip, or wrong unzip", "virtual test command failed; original files unmodified");
97
+ }
98
+ if (!quiet)
99
+ await budget.output(`test of ${zipPublicText(archive)} OK\n`);
100
+ }
101
+ //# sourceMappingURL=test-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-command.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/test-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type FileStat } from "../../../contracts/index.js";
2
+ import { type ArchiveLimits, type ZipHost } from "../internal.js";
3
+ import { type ZipPublication, type ZipScope } from "./safety.js";
4
+ import { type ZipDisks } from "./zip64.js";
5
+ export declare function splitSize(value: string): number;
6
+ export declare function volumeName(archive: string, disk: number, disks: number): string;
7
+ export declare function zipEndOffset(bytes: Uint8Array): number;
8
+ /** Input disks are supplied by the host, then read solely through the invocation VFS. */
9
+ export declare function resolveZipVolumes(scope: Pick<ZipScope, "context" | "limits" | "operation" | "stat" | "input">, archive: string, final: Uint8Array, host?: ZipHost): Promise<{
10
+ bytes: Uint8Array;
11
+ disks?: ZipDisks;
12
+ paths: readonly string[];
13
+ volumes?: readonly {
14
+ path: string;
15
+ stat: FileStat;
16
+ }[];
17
+ }>;
18
+ /** Partition a validated single-disk encoding, preserving record boundaries and ciphertext. */
19
+ export declare function splitZipVolumes(input: Uint8Array, size: number, limits: ArchiveLimits, signal: AbortSignal): Promise<Uint8Array[]>;
20
+ /** All destinations preflight; all volumes staged before the first per-volume publication. */
21
+ export declare function publishZipVolumes(scope: ZipScope, publication: ZipPublication, parts: readonly Uint8Array[], inputPaths: readonly string[], before: (path: string, disk: number) => Promise<void>): Promise<void>;
22
+ //# sourceMappingURL=volumes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volumes.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/volumes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,QAAQ,EAAoB,MAAM,6BAA6B,CAAC;AAG5F,OAAO,EAAuD,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEvH,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAA+B,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAExE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU/C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAWtD;AAED,yFAAyF;AACzF,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CA6C3S;AAID,+FAA+F;AAC/F,wBAAsB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA4FxI;AAED,8FAA8F;AAC9F,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCvN"}