@poe-platform/safe-bash 0.1.545 → 0.1.547

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 (71) hide show
  1. package/dist/safe-bash/chunks/{chunk-FAA2WXKH.js → chunk-4JW32W4B.js} +163 -105
  2. package/dist/safe-bash/chunks/{chunk-FAA2WXKH.js.map → chunk-4JW32W4B.js.map} +3 -3
  3. package/dist/safe-bash/chunks/{chunk-XWCSJDGK.js → chunk-4V3NGZAG.js} +2 -2
  4. package/dist/safe-bash/chunks/{chunk-ASCV3OWE.js → chunk-AWP6Z3RR.js} +3 -3
  5. package/dist/safe-bash/chunks/{chunk-2YHZYNLC.js → chunk-DKT746UJ.js} +2 -2
  6. package/dist/safe-bash/chunks/{chunk-C7Z2SSTY.js → chunk-EUNOVYVT.js} +16 -3
  7. package/dist/safe-bash/chunks/chunk-EUNOVYVT.js.map +7 -0
  8. package/dist/safe-bash/chunks/{chunk-6E3FCEJ5.js → chunk-F5AOPLRZ.js} +2 -2
  9. package/dist/safe-bash/chunks/{chunk-GA43CRT3.js → chunk-FIY2BMTU.js} +2 -2
  10. package/dist/safe-bash/chunks/{chunk-EGLBB57T.js → chunk-IDJQT32M.js} +2 -2
  11. package/dist/safe-bash/chunks/{chunk-25GUOTPE.js → chunk-QX2X5EC5.js} +2 -2
  12. package/dist/safe-bash/chunks/{chunk-CTE3HGYS.js → chunk-VY5N6O6I.js} +3 -3
  13. package/dist/safe-bash/chunks/{chunk-K4RQ7ASH.js → chunk-WJWYJDQE.js} +2 -2
  14. package/dist/safe-bash/chunks/{chunk-R4HP2LEO.js → chunk-WXUZXY35.js} +2 -2
  15. package/dist/safe-bash/chunks/{chunk-IVJ5JGXZ.js → chunk-YFFFBLBC.js} +2 -2
  16. package/dist/safe-bash/commands/archive/unzip/safety.d.ts +3 -2
  17. package/dist/safe-bash/commands/archive/unzip/safety.d.ts.map +1 -1
  18. package/dist/safe-bash/commands/archive/unzip/safety.js +57 -62
  19. package/dist/safe-bash/commands/archive/unzip/safety.js.map +1 -1
  20. package/dist/safe-bash/commands/archive/unzip.d.ts.map +1 -1
  21. package/dist/safe-bash/commands/archive/unzip.js +12 -9
  22. package/dist/safe-bash/commands/archive/unzip.js.map +1 -1
  23. package/dist/safe-bash/commands/archive/zip/safety.d.ts +1 -0
  24. package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -1
  25. package/dist/safe-bash/commands/archive/zip/safety.js +19 -87
  26. package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -1
  27. package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
  28. package/dist/safe-bash/commands/archive/zip.js +2 -1
  29. package/dist/safe-bash/commands/archive/zip.js.map +1 -1
  30. package/dist/safe-bash/commands/csplit/command.d.ts.map +1 -1
  31. package/dist/safe-bash/commands/csplit/command.js +3 -1
  32. package/dist/safe-bash/commands/csplit/command.js.map +1 -1
  33. package/dist/safe-bash/commands/csplit/index.browser.js +3 -3
  34. package/dist/safe-bash/commands/csplit/internal.d.ts +2 -0
  35. package/dist/safe-bash/commands/csplit/internal.d.ts.map +1 -1
  36. package/dist/safe-bash/commands/csplit/internal.js +12 -0
  37. package/dist/safe-bash/commands/csplit/internal.js.map +1 -1
  38. package/dist/safe-bash/commands/csplit/io.d.ts +4 -2
  39. package/dist/safe-bash/commands/csplit/io.d.ts.map +1 -1
  40. package/dist/safe-bash/commands/csplit/io.js +98 -58
  41. package/dist/safe-bash/commands/csplit/io.js.map +1 -1
  42. package/dist/safe-bash/commands/factor/index.browser.js +2 -2
  43. package/dist/safe-bash/commands/getopt/index.browser.js +2 -2
  44. package/dist/safe-bash/commands/hexdump/index.browser.js +2 -2
  45. package/dist/safe-bash/commands/iconv/index.browser.js +2 -2
  46. package/dist/safe-bash/commands/line-endings/index.browser.js +3 -3
  47. package/dist/safe-bash/commands/llm/index.browser.js +2 -2
  48. package/dist/safe-bash/commands/network/index.browser.js +3 -3
  49. package/dist/safe-bash/commands/pr/index.browser.js +2 -2
  50. package/dist/safe-bash/commands/tsort/index.browser.js +2 -2
  51. package/dist/safe-bash/commands/yq/index.browser.js +2 -2
  52. package/dist/safe-bash/contracts/filesystem.d.ts +1 -1
  53. package/dist/safe-bash/contracts/filesystem.d.ts.map +1 -1
  54. package/dist/safe-bash/contracts/output.d.ts.map +1 -1
  55. package/dist/safe-bash/contracts/output.js +12 -2
  56. package/dist/safe-bash/contracts/output.js.map +1 -1
  57. package/dist/safe-bash/core.browser.js +255 -141
  58. package/dist/safe-bash/core.browser.js.map +3 -3
  59. package/package.json +2 -2
  60. package/dist/safe-bash/chunks/chunk-C7Z2SSTY.js.map +0 -7
  61. /package/dist/safe-bash/chunks/{chunk-XWCSJDGK.js.map → chunk-4V3NGZAG.js.map} +0 -0
  62. /package/dist/safe-bash/chunks/{chunk-ASCV3OWE.js.map → chunk-AWP6Z3RR.js.map} +0 -0
  63. /package/dist/safe-bash/chunks/{chunk-2YHZYNLC.js.map → chunk-DKT746UJ.js.map} +0 -0
  64. /package/dist/safe-bash/chunks/{chunk-6E3FCEJ5.js.map → chunk-F5AOPLRZ.js.map} +0 -0
  65. /package/dist/safe-bash/chunks/{chunk-GA43CRT3.js.map → chunk-FIY2BMTU.js.map} +0 -0
  66. /package/dist/safe-bash/chunks/{chunk-EGLBB57T.js.map → chunk-IDJQT32M.js.map} +0 -0
  67. /package/dist/safe-bash/chunks/{chunk-25GUOTPE.js.map → chunk-QX2X5EC5.js.map} +0 -0
  68. /package/dist/safe-bash/chunks/{chunk-CTE3HGYS.js.map → chunk-VY5N6O6I.js.map} +0 -0
  69. /package/dist/safe-bash/chunks/{chunk-K4RQ7ASH.js.map → chunk-WJWYJDQE.js.map} +0 -0
  70. /package/dist/safe-bash/chunks/{chunk-R4HP2LEO.js.map → chunk-WXUZXY35.js.map} +0 -0
  71. /package/dist/safe-bash/chunks/{chunk-IVJ5JGXZ.js.map → chunk-YFFFBLBC.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createOutputOperation
3
- } from "./chunk-C7Z2SSTY.js";
3
+ } from "./chunk-EUNOVYVT.js";
4
4
  import {
5
5
  PublicDiagnostic
6
6
  } from "./chunk-TTTOMUAY.js";
@@ -530,4 +530,4 @@ export {
530
530
  createFactorCommands,
531
531
  factorCommands
532
532
  };
533
- //# sourceMappingURL=chunk-XWCSJDGK.js.map
533
+ //# sourceMappingURL=chunk-4V3NGZAG.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  writeFileOutput
3
- } from "./chunk-R4HP2LEO.js";
3
+ } from "./chunk-WXUZXY35.js";
4
4
  import {
5
5
  createOutputOperation
6
- } from "./chunk-C7Z2SSTY.js";
6
+ } from "./chunk-EUNOVYVT.js";
7
7
  import {
8
8
  PublicDiagnostic
9
9
  } from "./chunk-TTTOMUAY.js";
@@ -1073,4 +1073,4 @@ export {
1073
1073
  createLineEndingCommands,
1074
1074
  lineEndingCommands
1075
1075
  };
1076
- //# sourceMappingURL=chunk-ASCV3OWE.js.map
1076
+ //# sourceMappingURL=chunk-AWP6Z3RR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createOutputOperation
3
- } from "./chunk-C7Z2SSTY.js";
3
+ } from "./chunk-EUNOVYVT.js";
4
4
  import {
5
5
  PublicDiagnostic
6
6
  } from "./chunk-TTTOMUAY.js";
@@ -624,4 +624,4 @@ export {
624
624
  createGetoptCommands,
625
625
  getoptCommands
626
626
  };
627
- //# sourceMappingURL=chunk-2YHZYNLC.js.map
627
+ //# sourceMappingURL=chunk-DKT746UJ.js.map
@@ -14,6 +14,7 @@ function createOutputOperation(context, destination) {
14
14
  const capability = destination.ownedOutput;
15
15
  const callbacks = [];
16
16
  const children = [];
17
+ const writes = /* @__PURE__ */ new Set();
17
18
  const closedReason = new Error("Output operation is closed");
18
19
  let accepting = true;
19
20
  let drain;
@@ -27,7 +28,7 @@ function createOutputOperation(context, destination) {
27
28
  accepting = false;
28
29
  drain = Promise.resolve().then(async () => {
29
30
  try {
30
- const results = await Promise.allSettled(callbacks.map(async (cleanup) => cleanup()));
31
+ const results = await Promise.allSettled([...writes, ...callbacks.map(async (cleanup) => cleanup())]);
31
32
  const failures = results.filter((result) => result.status === "rejected").map((result) => result.reason);
32
33
  if (failures.length === 1) throw failures[0];
33
34
  if (failures.length) throw new AggregateError(failures, "Output operation cleanup failed");
@@ -79,7 +80,19 @@ function createOutputOperation(context, destination) {
79
80
  ...destination[outputFailure] ? { [outputFailure]: destination[outputFailure] } : {},
80
81
  async write(chunk) {
81
82
  assertOpen();
82
- await writeBytes(capability ?? destination, chunk, signal);
83
+ if (!capability) return writeBytes(destination, chunk, signal);
84
+ let settled;
85
+ const admitted = new Promise((resolve) => {
86
+ settled = resolve;
87
+ });
88
+ writes.add(admitted);
89
+ const pending = writeBytes(capability, chunk);
90
+ const finish = () => {
91
+ writes.delete(admitted);
92
+ settled();
93
+ };
94
+ void pending.then(finish, finish);
95
+ await wait(pending);
83
96
  }
84
97
  },
85
98
  registerCleanup,
@@ -135,4 +148,4 @@ function createOutputOperation(context, destination) {
135
148
  export {
136
149
  createOutputOperation
137
150
  };
138
- //# sourceMappingURL=chunk-C7Z2SSTY.js.map
151
+ //# sourceMappingURL=chunk-EUNOVYVT.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/contracts/output.ts"],
4
+ "sourcesContent": ["import type { CommandContext, InvocationCleanup } from \"./command.js\";\nimport { outputFailure, writeBytes, type ByteSink } from \"./io.js\";\n\nexport interface OutputOperation {\n readonly signal: AbortSignal;\n readonly output: ByteSink;\n child(destination: ByteSink): OutputOperation;\n registerCleanup(cleanup: InvocationCleanup): void;\n acquire<Value>(start: (signal: AbortSignal) => Value | Promise<Value>, release: (resource: Value) => void | Promise<void>): Promise<Value>;\n close(): Promise<void>;\n abort(reason: unknown): Promise<void>;\n}\n\nexport function createOutputOperation(context: Pick<CommandContext, \"signal\" | \"registerCleanup\">, destination: ByteSink): OutputOperation {\n const controller = new AbortController();\n const signal = controller.signal;\n const capability = destination.ownedOutput;\n const callbacks: InvocationCleanup[] = [];\n const children: OutputOperation[] = [];\n const writes = new Set<Promise<void>>();\n const closedReason = new Error(\"Output operation is closed\");\n let accepting = true;\n let drain: Promise<void> | undefined;\n const assertOpen = (): void => {\n context.signal.throwIfAborted();\n signal.throwIfAborted();\n if (!accepting) throw closedReason;\n };\n const close = (): Promise<void> => {\n if (drain) return drain;\n accepting = false;\n drain = Promise.resolve().then(async () => {\n try {\n const results = await Promise.allSettled([...writes, ...callbacks.map(async cleanup => cleanup())]);\n const failures = results.filter(result => result.status === \"rejected\").map(result => result.reason);\n if (failures.length === 1) throw failures[0];\n if (failures.length) throw new AggregateError(failures, \"Output operation cleanup failed\");\n } finally {\n context.signal.removeEventListener(\"abort\", callerAbort);\n capability?.consumerClosed.removeEventListener(\"abort\", outputAbort);\n }\n });\n void drain.catch(() => {});\n for (const child of children) void child.close().catch(() => {});\n return drain;\n };\n const abort = (reason: unknown): void => {\n controller.abort(reason);\n void close().catch(() => {});\n };\n const callerAbort = (): void => abort(context.signal.reason);\n const outputAbort = (): void => abort(capability?.consumerClosed.reason);\n const registerCleanup = (cleanup: InvocationCleanup): void => {\n assertOpen();\n if (typeof cleanup !== \"function\") throw new TypeError(\"Cleanup must be callable\");\n callbacks.push(cleanup);\n };\n const wait = <Value>(pending: Promise<Value>): Promise<Value> => new Promise((resolve, reject) => {\n const aborted = (): void => reject(signal.reason);\n if (signal.aborted) aborted();\n else signal.addEventListener(\"abort\", aborted, { once: true });\n pending.then(value => {\n signal.removeEventListener(\"abort\", aborted);\n resolve(value);\n }, error => {\n signal.removeEventListener(\"abort\", aborted);\n reject(error);\n });\n });\n context.registerCleanup?.(close);\n if (context.signal.aborted) callerAbort();\n else if (capability?.consumerClosed.aborted) outputAbort();\n else {\n context.signal.addEventListener(\"abort\", callerAbort, { once: true });\n capability?.consumerClosed.addEventListener(\"abort\", outputAbort, { once: true });\n }\n return {\n signal,\n output: {\n ...(destination[outputFailure] ? { [outputFailure]: destination[outputFailure] } : {}),\n async write(chunk) {\n assertOpen();\n if (!capability) return writeBytes(destination, chunk, signal);\n let settled!: () => void;\n const admitted = new Promise<void>(resolve => { settled = resolve; });\n writes.add(admitted);\n // Cancellation can settle the caller while the owned destination is still writing.\n const pending = writeBytes(capability, chunk);\n const finish = (): void => { writes.delete(admitted); settled(); };\n void pending.then(finish, finish);\n await wait(pending);\n },\n },\n registerCleanup,\n child(destination) {\n assertOpen();\n const child = createOutputOperation({ signal, registerCleanup }, destination);\n children.push(child);\n return child;\n },\n async acquire<Value>(start: (signal: AbortSignal) => Value | Promise<Value>, release: (resource: Value) => void | Promise<void>) {\n assertOpen();\n let resource: { value: Value } | undefined;\n let settled!: () => void;\n const admitted = new Promise<void>(resolve => { settled = resolve; });\n let released: Promise<void> | undefined;\n const dispose = (): Promise<void> => {\n released ??= admitted.then(async () => { if (resource) await release(resource.value); });\n return released;\n };\n registerCleanup(dispose);\n let acquisition: Promise<Value>;\n try { acquisition = Promise.resolve(start(signal)); }\n catch (error) { acquisition = Promise.reject(error); }\n const pending = acquisition.then(async value => {\n resource = { value };\n settled();\n if (!accepting) {\n await dispose();\n throw signal.aborted ? signal.reason : closedReason;\n }\n return value;\n }, error => {\n settled();\n throw error;\n });\n return wait(pending);\n },\n close,\n abort(reason) {\n abort(reason);\n return close();\n },\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["destination"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createOutputOperation
3
- } from "./chunk-C7Z2SSTY.js";
3
+ } from "./chunk-EUNOVYVT.js";
4
4
  import {
5
5
  resolvePath
6
6
  } from "./chunk-DPJWEGIX.js";
@@ -352,4 +352,4 @@ export {
352
352
  createLlmCommands,
353
353
  llmCommands
354
354
  };
355
- //# sourceMappingURL=chunk-6E3FCEJ5.js.map
355
+ //# sourceMappingURL=chunk-F5AOPLRZ.js.map
@@ -30,7 +30,7 @@ import {
30
30
  } from "./chunk-KYU6MXVK.js";
31
31
  import {
32
32
  createOutputOperation
33
- } from "./chunk-C7Z2SSTY.js";
33
+ } from "./chunk-EUNOVYVT.js";
34
34
  import {
35
35
  getCommandArguments,
36
36
  shellValueByteLength
@@ -5160,4 +5160,4 @@ export {
5160
5160
  createYqCommands,
5161
5161
  yqCommands
5162
5162
  };
5163
- //# sourceMappingURL=chunk-GA43CRT3.js.map
5163
+ //# sourceMappingURL=chunk-FIY2BMTU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createOutputOperation
3
- } from "./chunk-C7Z2SSTY.js";
3
+ } from "./chunk-EUNOVYVT.js";
4
4
  import {
5
5
  PublicDiagnostic
6
6
  } from "./chunk-TTTOMUAY.js";
@@ -699,4 +699,4 @@ export {
699
699
  createHexdumpCommands,
700
700
  hexdumpCommands
701
701
  };
702
- //# sourceMappingURL=chunk-EGLBB57T.js.map
702
+ //# sourceMappingURL=chunk-IDJQT32M.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createOutputOperation
3
- } from "./chunk-C7Z2SSTY.js";
3
+ } from "./chunk-EUNOVYVT.js";
4
4
  import {
5
5
  PublicDiagnostic,
6
6
  publicDiagnosticMessage
@@ -1274,4 +1274,4 @@ export {
1274
1274
  createPrCommands,
1275
1275
  prCommands
1276
1276
  };
1277
- //# sourceMappingURL=chunk-25GUOTPE.js.map
1277
+ //# sourceMappingURL=chunk-QX2X5EC5.js.map
@@ -13,10 +13,10 @@ import {
13
13
  } from "./chunk-O7BRWSKX.js";
14
14
  import {
15
15
  openFileOutput
16
- } from "./chunk-R4HP2LEO.js";
16
+ } from "./chunk-WXUZXY35.js";
17
17
  import {
18
18
  createOutputOperation
19
- } from "./chunk-C7Z2SSTY.js";
19
+ } from "./chunk-EUNOVYVT.js";
20
20
  import {
21
21
  normalizePath,
22
22
  posixPath
@@ -1341,4 +1341,4 @@ export {
1341
1341
  createCurlCommands,
1342
1342
  curlCommands
1343
1343
  };
1344
- //# sourceMappingURL=chunk-CTE3HGYS.js.map
1344
+ //# sourceMappingURL=chunk-VY5N6O6I.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createOutputOperation
3
- } from "./chunk-C7Z2SSTY.js";
3
+ } from "./chunk-EUNOVYVT.js";
4
4
  import {
5
5
  PublicDiagnostic
6
6
  } from "./chunk-TTTOMUAY.js";
@@ -2610,4 +2610,4 @@ export {
2610
2610
  createIconvCommands,
2611
2611
  iconvCommands
2612
2612
  };
2613
- //# sourceMappingURL=chunk-K4RQ7ASH.js.map
2613
+ //# sourceMappingURL=chunk-WJWYJDQE.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createOutputOperation
3
- } from "./chunk-C7Z2SSTY.js";
3
+ } from "./chunk-EUNOVYVT.js";
4
4
  import {
5
5
  FsError,
6
6
  createBytePipe,
@@ -191,4 +191,4 @@ export {
191
191
  writeFileOutput,
192
192
  openFileOutput
193
193
  };
194
- //# sourceMappingURL=chunk-R4HP2LEO.js.map
194
+ //# sourceMappingURL=chunk-WXUZXY35.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createOutputOperation
3
- } from "./chunk-C7Z2SSTY.js";
3
+ } from "./chunk-EUNOVYVT.js";
4
4
  import {
5
5
  PublicDiagnostic
6
6
  } from "./chunk-TTTOMUAY.js";
@@ -651,4 +651,4 @@ export {
651
651
  createTsortCommands,
652
652
  tsortCommands
653
653
  };
654
- //# sourceMappingURL=chunk-IVJ5JGXZ.js.map
654
+ //# sourceMappingURL=chunk-YFFFBLBC.js.map
@@ -16,13 +16,14 @@ export declare class Extraction {
16
16
  input(path: string): ByteSource;
17
17
  stat(path: string): Promise<FileStat | undefined>;
18
18
  directory(raw: string, create: boolean): Promise<string>;
19
+ createDirectory(path: string, parent: FileStat): Promise<FileStat>;
19
20
  parents(root: string, path: string, create: boolean): Promise<void>;
20
21
  member(root: string, name: string): string;
21
22
  target(root: string, path: string, target: string): Promise<void>;
22
23
  destination(path: string, archivePath: string, archiveStat: FileStat): Promise<FileStat | undefined>;
23
24
  checked(root: string, path: string, expected: FileStat): Promise<void>;
24
- metadata(root: string, path: string, identity: FileStat, mode: number, modified: Date): Promise<void>;
25
- publish(root: string, path: string, chunks: readonly Uint8Array[], expected: FileStat | undefined, mode: number, modified: Date, target?: string): Promise<void>;
25
+ metadata(root: string, path: string, identity: FileStat, parent: FileStat, mode: number, modified: Date): Promise<void>;
26
+ publish(root: string, path: string, chunks: readonly Uint8Array[], expected: FileStat | undefined, parent: FileStat, mode: number, modified: Date, target?: string): Promise<void>;
26
27
  private stage;
27
28
  }
28
29
  //# sourceMappingURL=safety.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/unzip/safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEjJ,OAAO,EAAuD,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEzG,qBAAa,UAAU;IAOT,QAAQ,CAAC,OAAO,EAAE,cAAc;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa;IAN5E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;gBACE,OAAO,EAAE,cAAc,EAAW,MAAM,EAAE,aAAa;IACtE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAS9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAqB/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAchC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAQjD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAaxD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAQpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCjE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAOpG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3G,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAKlJ,KAAK;CA4DpB"}
1
+ {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/unzip/safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAoB,MAAM,6BAA6B,CAAC;AAEnK,OAAO,EAAuD,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEzG,qBAAa,UAAU;IAOT,QAAQ,CAAC,OAAO,EAAE,cAAc;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa;IAN5E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;gBACE,OAAO,EAAE,cAAc,EAAW,MAAM,EAAE,aAAa;IACtE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAS9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAqB/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAchC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAQjD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAcxD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IASlE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAQpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCjE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAOpG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7H,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAKpK,KAAK;CA6CpB"}
@@ -100,15 +100,26 @@ export class Extraction {
100
100
  for (const component of raw.split("/")) {
101
101
  if (!component || component === ".")
102
102
  continue;
103
+ const parent = await this.operation(() => fs.lstat(current, { signal }));
103
104
  current = resolvePath(current, component);
104
105
  const stat = await this.stat(current);
105
106
  if (!stat && create)
106
- await this.operation(() => fs.mkdir(current, { signal, mode: 0o755 }));
107
+ await this.createDirectory(current, parent);
107
108
  else if (!stat || stat.type !== "directory")
108
109
  fail(`unsafe non-directory or symlink ancestor: ${display(current)}`);
109
110
  }
110
111
  return current;
111
112
  }
113
+ async createDirectory(path, parent) {
114
+ const { fs, signal } = this.context;
115
+ const capabilities = await this.operation(async () => await fs.capabilitiesFor?.(path, { signal, create: true }) ?? fs.capabilities);
116
+ if (capabilities.atomicDirectoryMetadata !== true || !fs.prepareDirectory)
117
+ fail("extraction requires atomic directory creation");
118
+ return this.operation(() => fs.prepareDirectory(path, {
119
+ signal, parent, expected: null,
120
+ ...(capabilities.permissions === false ? {} : { mode: 0o755 }),
121
+ }));
122
+ }
112
123
  async parents(root, path, create) {
113
124
  if (!isPathWithin(root, path))
114
125
  fail("extraction path escapes root");
@@ -191,84 +202,68 @@ export class Extraction {
191
202
  if (!current || current.type !== expected.type || !sameIdentity(current, expected))
192
203
  fail("extraction entry changed before mutation");
193
204
  }
194
- async metadata(root, path, identity, mode, modified) {
205
+ async metadata(root, path, identity, parent, mode, modified) {
195
206
  const { fs, signal } = this.context;
196
- if (fs.chmod && fs.capabilities.permissions !== false) {
197
- await this.checked(root, path, identity);
198
- await this.operation(() => fs.chmod(path, mode & 0o777, { signal }));
199
- }
200
- if (fs.utimes && fs.capabilities.timestamps !== false) {
201
- await this.checked(root, path, identity);
202
- await this.operation(() => fs.utimes(path, modified.getTime(), modified.getTime(), { signal }));
203
- }
207
+ await this.parents(root, path, false);
208
+ const capabilities = await this.operation(async () => await fs.capabilitiesFor?.(path, { signal }) ?? fs.capabilities);
209
+ if (capabilities.permissions === false && capabilities.timestamps === false)
210
+ return;
211
+ if (capabilities.atomicDirectoryMetadata !== true || !fs.prepareDirectory)
212
+ fail("extraction metadata requires atomic entry conditions");
213
+ await this.operation(() => fs.prepareDirectory(path, {
214
+ signal, expected: identity, parent,
215
+ ...(capabilities.permissions === false ? {} : { mode: mode & 0o777 }),
216
+ ...(capabilities.timestamps === false ? {} : { atimeMs: modified.getTime(), mtimeMs: modified.getTime() }),
217
+ }));
204
218
  }
205
- publish(root, path, chunks, expected, mode, modified, target) {
206
- const publication = this.stage(root, path, chunks, expected, mode, modified, target);
219
+ publish(root, path, chunks, expected, parent, mode, modified, target) {
220
+ const publication = this.stage(root, path, chunks, expected, parent, mode, modified, target);
207
221
  this.publications.add(publication);
208
222
  return publication.finally(() => { this.publications.delete(publication); });
209
223
  }
210
- async stage(root, path, chunks, expected, mode, modified, target) {
224
+ async stage(root, path, chunks, expected, parent, mode, modified, target) {
211
225
  const { fs, signal } = this.context;
212
- let temporary = "";
213
- let identity;
214
- let created = false;
226
+ const capabilities = await this.operation(async () => await fs.capabilitiesFor?.(path, { signal, create: true }) ?? fs.capabilities);
227
+ if (capabilities.atomicFileStaging !== true || !fs.createStagedFile || !fs.publishStagedFile || !fs.removeStagedFile)
228
+ fail("extraction requires atomic owned file staging");
229
+ let staging;
215
230
  let failure;
216
231
  const cleanup = retainFileSystemCleanup(fs, async (view) => {
217
- if (!created || !identity)
218
- return;
219
- try {
220
- let parent = "/";
221
- for (const component of dirname(temporary).split("/").filter(Boolean)) {
222
- parent = resolvePath(parent, component);
223
- if ((await view.lstat(parent)).type !== "directory")
224
- return;
225
- }
226
- const current = await view.lstat(temporary);
227
- if (current.type === identity.type && sameIdentity(current, identity))
228
- await view.rm(temporary);
229
- }
230
- catch (error) {
231
- if (typeof error !== "object" || error === null || !("code" in error) || error.code !== "ENOENT")
232
- throw error;
232
+ if (staging) {
233
+ if (!view.removeStagedFile)
234
+ fail("extraction atomic cleanup unavailable");
235
+ await view.removeStagedFile(staging);
233
236
  }
234
237
  }, { maxOperations: Math.min(4096, this.limits.maxDepth + 3) });
235
238
  try {
236
- await this.parents(root, path, true);
239
+ await this.parents(root, path, false);
240
+ const content = target === undefined ? { type: "file", data: Buffer.concat(chunks) } : { type: "symlink", target };
237
241
  for (let attempt = 0; attempt < this.limits.maxMembers; attempt++) {
238
- temporary = resolvePath(dirname(path), `.unzip-${++this.serial}`);
242
+ const temporary = resolvePath(dirname(path), `.unzip-${++this.serial}`);
239
243
  checkPath(temporary, this.limits);
240
- if (temporary === path || await this.stat(temporary))
244
+ checkPath(`${temporary}/entry`, this.limits);
245
+ if (temporary === path)
241
246
  continue;
242
- await this.operation(async () => {
243
- if (target === undefined)
244
- await fs.writeFile(temporary, new Uint8Array(), { signal, flag: "wx", mode: 0o600 });
245
- else
246
- await fs.symlink(target, temporary, { signal });
247
- created = true;
248
- identity = await fs.lstat(temporary);
249
- });
250
- if (!identity || !hasIdentity(identity))
251
- fail("temporary file backing identity unavailable");
252
- break;
253
- }
254
- if (!created)
255
- fail("temporary file attempt limit exceeded");
256
- if (target === undefined) {
257
- for (const chunk of chunks) {
258
- await this.checked(root, temporary, identity);
259
- await this.operation(() => fs.appendFile(temporary, chunk, { signal }));
247
+ try {
248
+ await this.operation(async () => {
249
+ staging = await fs.createStagedFile(temporary, "entry", content, {
250
+ signal, parent,
251
+ ...(target !== undefined || capabilities.permissions === false ? {} : { mode: mode & 0o777 }),
252
+ ...(target !== undefined || capabilities.timestamps === false ? {} : { atimeMs: modified.getTime(), mtimeMs: modified.getTime() }),
253
+ });
254
+ });
255
+ break;
256
+ }
257
+ catch (error) {
258
+ signal.throwIfAborted();
259
+ if (typeof error !== "object" || error === null || !("code" in error) || error.code !== "EEXIST")
260
+ throw error;
260
261
  }
261
- await this.metadata(root, temporary, identity, mode, modified);
262
262
  }
263
+ if (!staging)
264
+ fail("temporary file attempt limit exceeded");
263
265
  await this.parents(root, path, false);
264
- const current = await this.stat(path);
265
- if (current ? !expected || !sameIdentity(current, expected) || current.type !== "file" : expected !== undefined)
266
- fail("destination changed before publication");
267
- const staging = await this.stat(temporary);
268
- if (!staging || !identity || !sameIdentity(staging, identity) || staging.type !== (target === undefined ? "file" : "symlink"))
269
- fail("temporary file changed before publication");
270
- await this.operation(() => fs.rename(temporary, path, { signal }));
271
- created = false;
266
+ await this.operation(() => fs.publishStagedFile(staging, path, { signal, parent, destination: expected ?? null }));
272
267
  }
273
268
  catch (error) {
274
269
  failure = { reason: error };
@@ -1 +1 @@
1
- {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../../src/commands/archive/unzip/safety.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../../src/commands/archive/unzip/safety.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"unzip.d.ts","sourceRoot":"","sources":["../../../src/commands/archive/unzip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyE,KAAK,iBAAiB,EAAiB,MAAM,0BAA0B,CAAC;AAGxJ,OAAO,EAAsE,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAC;AA8ChI,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,sBAA2B,GAAG,iBAAiB,CAmK1F"}
1
+ {"version":3,"file":"unzip.d.ts","sourceRoot":"","sources":["../../../src/commands/archive/unzip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkF,KAAK,iBAAiB,EAAiB,MAAM,0BAA0B,CAAC;AAGjK,OAAO,EAAsE,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAC;AA8ChI,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,sBAA2B,GAAG,iBAAiB,CAsK1F"}
@@ -1,4 +1,4 @@
1
- import { collectBytes, readBytes, resolvePath, writeBytes } from "../../contracts/index.js";
1
+ import { dirname, collectBytes, readBytes, resolvePath, writeBytes } from "../../contracts/index.js";
2
2
  import { writeFileOutput } from "../../contracts/filesystem-output.js";
3
3
  import { publicDiagnosticMessage } from "../../diagnostics.js";
4
4
  import { Budget, bounded, checkPath, display, fail, settings, text, vfsPath } from "./internal.js";
@@ -138,19 +138,21 @@ export function createUnzipCommand(options = {}) {
138
138
  await writeFileOutput(context, chunk, async () => { if (chunk.length)
139
139
  fail("directory has nonempty payload"); });
140
140
  }
141
+ const parent = await extraction.operation(() => context.fs.lstat(dirname(path), { signal: context.signal }));
141
142
  const existing = await extraction.stat(path);
143
+ let identity = existing;
142
144
  if (existing && existing.type !== "directory")
143
145
  fail("directory destination is not a directory");
144
146
  if (!existing) {
145
- await extraction.operation(() => context.fs.mkdir(path, { signal: context.signal, mode: 0o755 }));
147
+ identity = await extraction.createDirectory(path, parent);
146
148
  await budget.output(` creating: ${filtered(shown)}\n`);
147
149
  }
148
- const identity = await extraction.stat(path);
149
150
  if (!identity || identity.type !== "directory")
150
151
  fail("directory changed during creation");
151
- directories.push({ path, entry, identity });
152
+ directories.push({ path, entry, identity, parent });
152
153
  continue;
153
154
  }
155
+ let parent = await extraction.operation(() => context.fs.lstat(dirname(path), { signal: context.signal }));
154
156
  let existing = await extraction.destination(path, archivePath, archiveStat);
155
157
  let skip = false;
156
158
  let prompting = 0;
@@ -195,6 +197,7 @@ export function createUnzipCommand(options = {}) {
195
197
  path = extraction.member(root, renamed);
196
198
  shown = parsed.destination === undefined ? renamed : `${parsed.destination.endsWith("/") ? parsed.destination : `${parsed.destination}/`}${renamed}`;
197
199
  await extraction.parents(root, path, true);
200
+ parent = await extraction.operation(() => context.fs.lstat(dirname(path), { signal: context.signal }));
198
201
  existing = await extraction.destination(path, archivePath, archiveStat);
199
202
  continue;
200
203
  }
@@ -219,11 +222,11 @@ export function createUnzipCommand(options = {}) {
219
222
  await extraction.target(root, path, target);
220
223
  if (!context.fs.symlink || context.fs.capabilities.symlinks === false)
221
224
  fail("filesystem does not support symlinks");
222
- links.push({ path, shown, target, existing, entry });
225
+ links.push({ path, shown, target, existing, parent, entry });
223
226
  await budget.output(` linking: ${padded(filtered(shown))} -> ${filtered(target)} \n`);
224
227
  }
225
228
  else {
226
- await extraction.publish(root, path, chunks, existing, entry.mode, entry.modified);
229
+ await extraction.publish(root, path, chunks, existing, parent, entry.mode, entry.modified);
227
230
  await budget.output(`${entry.method === 0 ? " extracting" : " inflating"}: ${padded(filtered(shown))} \n`);
228
231
  }
229
232
  }
@@ -236,11 +239,11 @@ export function createUnzipCommand(options = {}) {
236
239
  await extraction.parents(root, link.path, false);
237
240
  await extraction.target(root, link.path, link.target);
238
241
  await extraction.destination(link.path, archivePath, archiveStat);
239
- await extraction.publish(root, link.path, [], link.existing, link.entry.mode, link.entry.modified, link.target);
242
+ await extraction.publish(root, link.path, [], link.existing, link.parent, link.entry.mode, link.entry.modified, link.target);
240
243
  await budget.output(` ${padded(filtered(link.shown))} -> ${filtered(link.target)}\n`);
241
244
  }
242
- for (const { path, entry, identity } of directories.reverse()) {
243
- await extraction.metadata(root, path, identity, entry.mode, entry.modified);
245
+ for (const { path, entry, identity, parent } of directories.reverse()) {
246
+ await extraction.metadata(root, path, identity, parent, entry.mode, entry.modified);
244
247
  }
245
248
  for (let index = 0; index < parsed.patterns.length; index++)
246
249
  if (!selection.matched.has(index)) {