@poe-platform/safe-bash 0.1.615 → 0.1.617

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 (38) hide show
  1. package/dist/safe-bash/chunks/{chunk-PW4WQSCS.js → chunk-3M5F7LD5.js} +2 -2
  2. package/dist/safe-bash/chunks/{chunk-CEPNDODE.js → chunk-4DBWBEU7.js} +2 -2
  3. package/dist/safe-bash/chunks/chunk-4DBWBEU7.js.map +7 -0
  4. package/dist/safe-bash/chunks/{chunk-PFMSKAFQ.js → chunk-KYNRHYHP.js} +4 -4
  5. package/dist/safe-bash/chunks/{chunk-PFMSKAFQ.js.map → chunk-KYNRHYHP.js.map} +2 -2
  6. package/dist/safe-bash/chunks/{chunk-F5TCC4UG.js → chunk-X55AMTNM.js} +2 -2
  7. package/dist/safe-bash/commands/archive/unzip.js +1 -1
  8. package/dist/safe-bash/commands/archive/unzip.js.map +1 -1
  9. package/dist/safe-bash/commands/archive/zip/safety.d.ts +2 -0
  10. package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -1
  11. package/dist/safe-bash/commands/archive/zip/safety.js +4 -0
  12. package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -1
  13. package/dist/safe-bash/commands/archive/zip/zip64.d.ts +10 -0
  14. package/dist/safe-bash/commands/archive/zip/zip64.d.ts.map +1 -0
  15. package/dist/safe-bash/commands/archive/zip/zip64.js +93 -0
  16. package/dist/safe-bash/commands/archive/zip/zip64.js.map +1 -0
  17. package/dist/safe-bash/commands/archive/zip-format.d.ts +2 -2
  18. package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -1
  19. package/dist/safe-bash/commands/archive/zip-format.js +69 -48
  20. package/dist/safe-bash/commands/archive/zip-format.js.map +1 -1
  21. package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -1
  22. package/dist/safe-bash/commands/archive/zip.js +83 -34
  23. package/dist/safe-bash/commands/archive/zip.js.map +1 -1
  24. package/dist/safe-bash/commands/csplit/index.browser.js +2 -2
  25. package/dist/safe-bash/commands/line-endings/index.browser.js +2 -2
  26. package/dist/safe-bash/commands/network/index.browser.js +2 -2
  27. package/dist/safe-bash/commands/network/output.js +2 -2
  28. package/dist/safe-bash/commands/network/output.js.map +1 -1
  29. package/dist/safe-bash/contracts/filesystem-output.d.ts +3 -1
  30. package/dist/safe-bash/contracts/filesystem-output.d.ts.map +1 -1
  31. package/dist/safe-bash/contracts/filesystem-output.js +2 -1
  32. package/dist/safe-bash/contracts/filesystem-output.js.map +1 -1
  33. package/dist/safe-bash/core.browser.js +214 -73
  34. package/dist/safe-bash/core.browser.js.map +4 -4
  35. package/package.json +2 -2
  36. package/dist/safe-bash/chunks/chunk-CEPNDODE.js.map +0 -7
  37. /package/dist/safe-bash/chunks/{chunk-PW4WQSCS.js.map → chunk-3M5F7LD5.js.map} +0 -0
  38. /package/dist/safe-bash/chunks/{chunk-F5TCC4UG.js.map → chunk-X55AMTNM.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  writeFileOutput
3
- } from "./chunk-CEPNDODE.js";
3
+ } from "./chunk-4DBWBEU7.js";
4
4
  import {
5
5
  PublicDiagnostic,
6
6
  getCommandArguments,
@@ -12156,4 +12156,4 @@ export {
12156
12156
  createCsplitCommands,
12157
12157
  csplitCommands
12158
12158
  };
12159
- //# sourceMappingURL=chunk-PW4WQSCS.js.map
12159
+ //# sourceMappingURL=chunk-3M5F7LD5.js.map
@@ -76,7 +76,7 @@ async function openFileOutput(context, path, flag, incremental) {
76
76
  await writing;
77
77
  }
78
78
  };
79
- const budget = context.registerCleanup && filesystemOutputBudgets.get(context.registerCleanup);
79
+ const budget = context.outputBudget !== "independent" && context.registerCleanup ? filesystemOutputBudgets.get(context.registerCleanup) : void 0;
80
80
  const operation = createOutputOperation(context, budget?.(destination) ?? destination);
81
81
  operation.registerCleanup(async () => {
82
82
  closing = true;
@@ -191,4 +191,4 @@ export {
191
191
  writeFileOutput,
192
192
  openFileOutput
193
193
  };
194
- //# sourceMappingURL=chunk-CEPNDODE.js.map
194
+ //# sourceMappingURL=chunk-4DBWBEU7.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/contracts/filesystem-output.ts"],
4
+ "sourcesContent": ["import type { CommandContext } from \"./command.js\";\nimport { FsError } from \"./errors.js\";\nimport { createBytePipe, outputFailure, type BytePipe, type ByteSink, type ByteSource } from \"./io.js\";\nimport { createOutputOperation } from \"./output.js\";\n\nconst filesystemOutputBudgets = new WeakMap<NonNullable<CommandContext[\"registerCleanup\"]>, (sink: ByteSink) => ByteSink>();\n\nexport type FileOutputContext = Pick<CommandContext, \"fs\" | \"signal\" | \"registerCleanup\"> & {\n readonly outputBudget?: \"shell\" | \"independent\";\n};\n\nexport function bindFileOutputBudget(context: Pick<CommandContext, \"registerCleanup\">, budget: (sink: ByteSink) => ByteSink): void {\n if (!context.registerCleanup) throw new TypeError(\"Shell output budgets require invocation cleanup ownership\");\n filesystemOutputBudgets.set(context.registerCleanup, budget);\n}\n\nexport async function writeFileOutput(context: Pick<CommandContext, \"signal\" | \"registerCleanup\">, bytes: Uint8Array, write: (bytes: Uint8Array) => Promise<void>): Promise<void> {\n context.signal.throwIfAborted();\n const budget = context.registerCleanup && filesystemOutputBudgets.get(context.registerCleanup);\n let pending: Promise<void> | undefined;\n const destination: ByteSink = { write(chunk) {\n context.signal.throwIfAborted();\n return pending = (async () => { await write(chunk); })();\n } };\n try { await (budget?.(destination) ?? destination).write(bytes); }\n catch (error) {\n // Shell sink cancellation may win its race before the direct host call.\n // Keep the original awaited-write lifetime without a retained cleanup hook.\n await pending?.catch(() => {});\n context.signal.throwIfAborted();\n throw error;\n }\n context.signal.throwIfAborted();\n}\n\nexport interface FileOutput {\n readonly sink: ByteSink;\n readonly signal: AbortSignal;\n finish(): Promise<void>;\n abort(reason: unknown): Promise<void>;\n}\n\nexport async function openFileOutput(context: FileOutputContext, path: string, flag: \"w\" | \"a\", incremental?: () => Promise<ByteSink>): Promise<FileOutput> {\n let pipe: BytePipe | undefined;\n let task: Promise<void> | undefined;\n let completed = false;\n let ended = false;\n let closing = false;\n let failure: { reason: unknown } | undefined;\n const consumer = new AbortController();\n let writes = Promise.resolve();\n let acknowledge: (() => void) | undefined;\n const acknowledgeWrite = (): void => {\n const accepted = acknowledge;\n acknowledge = undefined;\n accepted?.();\n };\n let ready!: () => void;\n const opened = new Promise<void>(resolve => { ready = resolve; });\n const destination: ByteSink = {\n [outputFailure]: reason => operation.abort(reason),\n async write(chunk) {\n if (closing) throw new FsError(\"EBADF\", { path, syscall: \"write\" });\n const writing = writes.then(async () => {\n for (let offset = 0; offset < chunk.byteLength; offset += 64 * 1024) {\n const accepted = new Promise<void>(resolve => { acknowledge = resolve; });\n await pipe!.writable.write(chunk.subarray(offset, offset + 64 * 1024));\n await accepted;\n if (failure) throw failure.reason;\n operation.signal.throwIfAborted();\n }\n });\n writes = writing.catch(() => {});\n await writing;\n },\n };\n const budget = context.outputBudget !== \"independent\" && context.registerCleanup\n ? filesystemOutputBudgets.get(context.registerCleanup) : undefined;\n const operation = createOutputOperation(context, budget?.(destination) ?? destination);\n operation.registerCleanup(async () => {\n closing = true;\n if (!completed) {\n void operation.abort(operation.signal.aborted ? operation.signal.reason : new FsError(\"ECANCELED\", { path, syscall: \"write\" }));\n await pipe?.abort(operation.signal.reason);\n }\n await task?.catch(() => {});\n await writes;\n });\n try {\n pipe = createBytePipe({ highWaterMark: 1, signal: operation.signal });\n let reading = false;\n const source: ByteSource = {\n [Symbol.asyncIterator]() {\n return (async function* () {\n reading = true;\n ready();\n for await (const chunk of pipe!.readable) {\n yield chunk;\n acknowledgeWrite();\n }\n operation.signal.throwIfAborted();\n ended = true;\n })();\n },\n };\n task = (async () => {\n const { fs } = context;\n const signal = operation.signal;\n signal.throwIfAborted();\n const capabilities = await fs.capabilitiesFor?.(path, { signal }) ?? fs.capabilities;\n if (capabilities.readOnly === true) throw new FsError(\"EROFS\", { path, syscall: \"write\" });\n try { await fs.access(path, 2, { signal }); }\n catch (error) {\n signal.throwIfAborted();\n if (!(error instanceof FsError) || error.code !== \"ENOENT\" && error.code !== \"ENOTSUP\") throw error;\n }\n signal.throwIfAborted();\n const streaming = flag === \"a\" ? capabilities.streamingAppend ?? capabilities.streamingWrite : capabilities.streamingWrite;\n if ((!incremental || capabilities.descriptorWriteStream === true) && streaming !== false && fs.writeStream) {\n try {\n await fs.writeStream(path, source, { flag, signal });\n if (!ended) throw new FsError(\"EIO\", { path, message: \"Streaming writer returned before consuming output\" });\n return;\n } catch (error) {\n signal.throwIfAborted();\n if (reading || !(error instanceof FsError) || error.code !== \"ENOTSUP\") throw error;\n }\n }\n if (flag === \"w\" && capabilities.write === false) throw new FsError(\"ENOTSUP\", { path, syscall: \"writeFile\" });\n if ((!incremental || flag === \"a\") && capabilities.append === false) throw new FsError(\"ENOTSUP\", { path, syscall: \"appendFile\" });\n const sink = incremental ? await incremental() : await (async (): Promise<ByteSink> => {\n if (flag === \"a\") await fs.appendFile(path, new Uint8Array(), { signal });\n else await fs.writeFile(path, new Uint8Array(), { flag, signal });\n return { write: chunk => fs.appendFile(path, chunk, { signal }) };\n })();\n for await (const chunk of source) {\n signal.throwIfAborted();\n await sink.write(chunk);\n }\n })();\n void task.then(acknowledgeWrite, error => {\n failure = { reason: error };\n acknowledgeWrite();\n if (!operation.signal.aborted) consumer.abort(error);\n void operation.abort(error).catch(() => {});\n });\n await Promise.race([opened, task]);\n operation.signal.throwIfAborted();\n const write = async (chunk: Uint8Array): Promise<void> => {\n try { await operation.output.write(chunk); }\n catch (error) { throw failure ? failure.reason : error; }\n };\n return {\n signal: operation.signal,\n sink: {\n [outputFailure]: destination[outputFailure]!,\n ownedOutput: { consumerClosed: consumer.signal, write },\n write,\n },\n async finish() {\n closing = true;\n try {\n await writes;\n await pipe!.close();\n await task;\n operation.signal.throwIfAborted();\n completed = true;\n } catch (error) { throw failure ? failure.reason : error; }\n finally { await operation.close(); }\n },\n abort: reason => operation.abort(reason),\n };\n } catch (error) {\n await operation.abort(error);\n throw error;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-GFZKQIPL.js";
5
5
  import {
6
6
  openFileOutput
7
- } from "./chunk-CEPNDODE.js";
7
+ } from "./chunk-4DBWBEU7.js";
8
8
  import {
9
9
  createOutputOperation
10
10
  } from "./chunk-RNKTWFEM.js";
@@ -636,7 +636,7 @@ async function writeOutput(context, path, source, signal) {
636
636
  return;
637
637
  }
638
638
  try {
639
- const target = await openFileOutput({ ...context, signal }, pathOf(context, path), "w");
639
+ const target = await openFileOutput({ ...context, signal, outputBudget: "independent" }, pathOf(context, path), "w");
640
640
  try {
641
641
  for await (const chunk of readBytes(source, target.signal)) await target.sink.write(chunk);
642
642
  await target.finish();
@@ -654,7 +654,7 @@ async function dumpHeaders(context, path, bytes, append, signal) {
654
654
  try {
655
655
  if (path === "-") await writeBytes(context.stdout, bytes, signal);
656
656
  else {
657
- const target = await openFileOutput({ ...context, signal }, pathOf(context, path), append ? "a" : "w");
657
+ const target = await openFileOutput({ ...context, signal, outputBudget: "independent" }, pathOf(context, path), append ? "a" : "w");
658
658
  try {
659
659
  await target.sink.write(bytes);
660
660
  await target.finish();
@@ -1430,4 +1430,4 @@ export {
1430
1430
  createCurlCommands,
1431
1431
  curlCommands
1432
1432
  };
1433
- //# sourceMappingURL=chunk-PFMSKAFQ.js.map
1433
+ //# sourceMappingURL=chunk-KYNRHYHP.js.map