@poe-platform/safe-bash 0.1.788 → 0.1.789

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 (180) hide show
  1. package/README.md +1 -1
  2. package/dist/safe-bash/chunks/{chunk-WHURJBET.js → chunk-2MUJ7RLZ.js} +1 -1
  3. package/dist/safe-bash/chunks/{chunk-PYTLIUST.js → chunk-CTUHLNJM.js} +2 -2
  4. package/dist/safe-bash/chunks/{chunk-Z3HX3ZBA.js → chunk-D4PHJK4T.js} +1 -1
  5. package/dist/safe-bash/chunks/{chunk-O6356Z27.js → chunk-H7MMJS26.js} +2 -2
  6. package/dist/safe-bash/chunks/{chunk-Q3E6C3DX.js → chunk-KHJGUF2W.js} +14 -0
  7. package/dist/safe-bash/chunks/{chunk-FJZNUUOQ.js → chunk-VUVKC6HV.js} +1 -1
  8. package/dist/safe-bash/chunks/{chunk-ZMYVCRAF.js → chunk-X5ZCECM6.js} +2 -2
  9. package/dist/safe-bash/chunks/{git-UFNPAOYZ.js → git-HO7WDPHZ.js} +2 -2
  10. package/dist/safe-bash/command-chunks/{chunk-PFBJR2PY.js → chunk-2KRKKW5S.js} +2 -2
  11. package/dist/safe-bash/command-chunks/{chunk-4DSJDVBM.js → chunk-32F3RBUW.js} +10 -749
  12. package/dist/safe-bash/command-chunks/{chunk-L3MLMXL4.js → chunk-3ZK5F23O.js} +1 -1
  13. package/dist/safe-bash/command-chunks/{chunk-4QX6XCDD.js → chunk-4RNIZ3RT.js} +79 -0
  14. package/dist/safe-bash/command-chunks/{chunk-D7TADAYG.js → chunk-64LG3EVJ.js} +17 -0
  15. package/dist/safe-bash/command-chunks/{chunk-JUDOV5MJ.js → chunk-6F7QJMJ3.js} +1 -1
  16. package/dist/safe-bash/command-chunks/{chunk-IJ3FXP4Q.js → chunk-A3ZX6SCY.js} +1 -1
  17. package/dist/safe-bash/command-chunks/{chunk-YNT4ZJHW.js → chunk-AT6ZSOE6.js} +3 -3
  18. package/dist/safe-bash/command-chunks/{chunk-KSIGF4AG.js → chunk-BK4CMEE6.js} +1 -1
  19. package/dist/safe-bash/command-chunks/{chunk-XGMWWUHV.js → chunk-CZ5DAK4K.js} +1 -1
  20. package/dist/safe-bash/command-chunks/{chunk-Z57TV6TC.js → chunk-EZ2DTOLI.js} +4 -2
  21. package/dist/safe-bash/command-chunks/{chunk-ADCGH6A7.js → chunk-FH3D75FC.js} +1 -1
  22. package/dist/safe-bash/command-chunks/{chunk-WYJTWJZ5.js → chunk-G3G6W5ZE.js} +1 -1
  23. package/dist/safe-bash/command-chunks/{chunk-3HDIDEUJ.js → chunk-GF54KE2M.js} +1 -1
  24. package/dist/safe-bash/command-chunks/{chunk-Z7TYZG3A.js → chunk-IHHTTQX6.js} +5 -3
  25. package/dist/safe-bash/command-chunks/{chunk-INDIFLBW.js → chunk-JTAGNROA.js} +4 -0
  26. package/dist/safe-bash/command-chunks/chunk-PGEYORBZ.js +25 -0
  27. package/dist/safe-bash/command-chunks/chunk-QM4UZF3C.js +753 -0
  28. package/dist/safe-bash/command-chunks/{chunk-TOSM3T3A.js → chunk-UJOO6DKY.js} +20 -9
  29. package/dist/safe-bash/command-chunks/{chunk-2LP3VMPA.js → chunk-WFDW4XXD.js} +1 -17
  30. package/dist/safe-bash/command-chunks/chunk-WR37IS4O.js +318 -0
  31. package/dist/safe-bash/command-chunks/{chunk-Y5IHIAY3.js → chunk-XNHSCU6I.js} +7 -3
  32. package/dist/safe-bash/commands/basic.js +148 -48
  33. package/dist/safe-bash/commands/bytes/compression/index.js +5 -6
  34. package/dist/safe-bash/commands/cmp.d.ts +2 -3
  35. package/dist/safe-bash/commands/cmp.js +2 -689
  36. package/dist/safe-bash/commands/docx/index.browser.js +3 -46
  37. package/dist/safe-bash/commands/docx/index.d.ts +2 -24
  38. package/dist/safe-bash/commands/docx/index.js +2 -41
  39. package/dist/safe-bash/commands/docx/io.d.ts +1 -14
  40. package/dist/safe-bash/commands/docx/io.js +1 -15
  41. package/dist/safe-bash/commands/llm/index.browser.js +3 -3
  42. package/dist/safe-bash/commands/network/index.browser.js +3 -3
  43. package/dist/safe-bash/commands/node/index.browser.js +3 -3
  44. package/dist/safe-bash/commands/pptx/index.d.ts +2 -28
  45. package/dist/safe-bash/commands/pptx/index.js +2 -152
  46. package/dist/safe-bash/commands/printf-float.d.ts +1 -0
  47. package/dist/safe-bash/commands/printf-float.js +48 -38
  48. package/dist/safe-bash/commands/printf-format.js +9 -6
  49. package/dist/safe-bash/commands/printf-quote.d.ts +3 -0
  50. package/dist/safe-bash/commands/printf-quote.js +62 -0
  51. package/dist/safe-bash/commands/printf-wide.d.ts +5 -0
  52. package/dist/safe-bash/commands/printf-wide.js +41 -0
  53. package/dist/safe-bash/commands/python/index.browser.js +2 -2
  54. package/dist/safe-bash/commands/truncate.d.ts +2 -3
  55. package/dist/safe-bash/commands/truncate.js +2 -686
  56. package/dist/safe-bash/contracts/diagnostics.d.ts +2 -0
  57. package/dist/safe-bash/contracts/diagnostics.js +2 -0
  58. package/dist/safe-bash/contracts/runtime-control.d.ts +2 -0
  59. package/dist/safe-bash/contracts/runtime-control.js +2 -0
  60. package/dist/safe-bash/core.browser.d.ts +1 -1
  61. package/dist/safe-bash/core.browser.js +2651 -4871
  62. package/dist/safe-bash/core.d.ts +10 -0
  63. package/dist/safe-bash/opt-in/commands/cmp/index.d.ts +6 -2
  64. package/dist/safe-bash/opt-in/commands/cmp/index.js +776 -79
  65. package/dist/safe-bash/opt-in/commands/cmp/options.d.ts +0 -12
  66. package/dist/safe-bash/opt-in/commands/cmp/options.js +0 -153
  67. package/dist/safe-bash/opt-in/commands/truncate/index.d.ts +8 -3
  68. package/dist/safe-bash/opt-in/commands/truncate/index.js +790 -272
  69. package/dist/safe-bash/opt-in/commands/truncate/sync.d.ts +1 -0
  70. package/dist/safe-bash/opt-in/commands/truncate/sync.js +60 -0
  71. package/dist/safe-bash/optional-host.browser.js +9 -1
  72. package/dist/safe-bash/optional-host.d.ts +3 -1
  73. package/dist/safe-bash/optional-host.js +3 -1
  74. package/dist/safe-bash/shell/runtime.js +10 -6
  75. package/dist/safe-bash-checksum-engine/index.d.ts +1 -1
  76. package/dist/safe-bash-checksum-engine/index.js +14 -2
  77. package/dist/safe-bash-command-bzip2/index.js +2 -1
  78. package/dist/safe-bash-command-cmp/index.d.ts +10 -0
  79. package/dist/safe-bash-command-cmp/index.js +796 -0
  80. package/dist/safe-bash-command-cmp/options.d.ts +12 -0
  81. package/dist/safe-bash-command-cmp/options.js +42 -0
  82. package/dist/safe-bash-command-csvcut/index.js +11 -8
  83. package/dist/safe-bash-command-csvgrep/index.js +35 -7
  84. package/dist/safe-bash-command-csvkit/codecs/python.js +4 -3
  85. package/dist/safe-bash-command-csvkit/codecs/utf8.js +3 -2
  86. package/dist/safe-bash-command-csvkit/index.js +80 -324
  87. package/dist/safe-bash-command-csvkit/python-regex.d.ts +5 -0
  88. package/dist/safe-bash-command-csvkit/python-regex.js +14 -0
  89. package/dist/safe-bash-command-csvkit/runtime.d.ts +1 -0
  90. package/dist/safe-bash-command-csvkit/sync-support.js +4 -2
  91. package/dist/safe-bash-command-diff3/index.js +3 -0
  92. package/dist/safe-bash-command-docx/LICENSE +21 -0
  93. package/dist/safe-bash-command-docx/index.d.ts +30 -0
  94. package/dist/safe-bash-command-docx/index.js +67 -0
  95. package/dist/safe-bash-command-docx/io.d.ts +14 -0
  96. package/dist/safe-bash-command-docx/io.js +26 -0
  97. package/dist/safe-bash-command-envsubst/index.js +34 -3
  98. package/dist/safe-bash-command-exiftool/index.js +3 -0
  99. package/dist/safe-bash-command-ffmpeg/index.js +1102 -1088
  100. package/dist/safe-bash-command-fold/family.js +1 -1
  101. package/dist/safe-bash-command-fold/index.js +1 -1
  102. package/dist/safe-bash-command-htmlq/index.js +5 -0
  103. package/dist/safe-bash-command-imagemagick/index.d.ts +25 -21
  104. package/dist/safe-bash-command-imagemagick/index.js +669 -271
  105. package/dist/safe-bash-command-mmdc/index.js +48 -10
  106. package/dist/safe-bash-command-mmdc/svg.d.ts +1 -0
  107. package/dist/safe-bash-command-op/index.js +19 -14
  108. package/dist/safe-bash-command-pandoc/command.js +1 -1
  109. package/dist/safe-bash-command-pandoc/index.js +1 -1
  110. package/dist/safe-bash-command-pdfimages/index.d.ts +7 -1
  111. package/dist/safe-bash-command-pdfimages/index.js +63 -33
  112. package/dist/safe-bash-command-pdfinfo/index.d.ts +24 -20
  113. package/dist/safe-bash-command-pdfinfo/index.js +370 -161
  114. package/dist/safe-bash-command-pdftk/index.d.ts +7 -3
  115. package/dist/safe-bash-command-pdftk/index.js +114 -45
  116. package/dist/safe-bash-command-pdftoppm/index.d.ts +15 -7
  117. package/dist/safe-bash-command-pdftoppm/index.js +179 -109
  118. package/dist/safe-bash-command-pdftotext/index.d.ts +9 -5
  119. package/dist/safe-bash-command-pdftotext/index.js +90 -27
  120. package/dist/safe-bash-command-pptx/LICENSE +21 -0
  121. package/dist/safe-bash-command-pptx/index.d.ts +33 -0
  122. package/dist/safe-bash-command-pptx/index.js +168 -0
  123. package/dist/safe-bash-command-qpdf/index.d.ts +9 -3
  124. package/dist/safe-bash-command-qpdf/index.js +80 -29
  125. package/dist/safe-bash-command-sha512sum/index.js +12 -475
  126. package/dist/safe-bash-command-sips/index.d.ts +9 -5
  127. package/dist/safe-bash-command-sips/index.js +63 -44
  128. package/dist/safe-bash-command-soffice/index.d.ts +9 -3
  129. package/dist/safe-bash-command-soffice/index.js +65 -24
  130. package/dist/safe-bash-command-sqlite3/engine.d.ts +9 -0
  131. package/dist/safe-bash-command-sqlite3/index.d.ts +1 -0
  132. package/dist/safe-bash-command-sqlite3/index.js +851 -352
  133. package/dist/safe-bash-command-ssconvert/formats/xls.js +3 -3
  134. package/dist/safe-bash-command-timeout/index.js +3 -3
  135. package/dist/safe-bash-command-truncate/index.d.ts +8 -3
  136. package/dist/safe-bash-command-truncate/index.js +790 -272
  137. package/dist/safe-bash-command-truncate/sync.d.ts +1 -0
  138. package/dist/safe-bash-command-truncate/sync.js +60 -0
  139. package/dist/safe-bash-command-wkhtmltopdf/index.js +92 -38
  140. package/dist/safe-bash-command-wkhtmltopdf/pdf-renderer.d.ts +1 -1
  141. package/dist/safe-bash-command-xxd/index.js +78 -20
  142. package/dist/safe-bash-command-xz/command.d.ts +4 -0
  143. package/dist/safe-bash-command-xz/index.d.ts +1 -1
  144. package/dist/safe-bash-command-xz/index.js +1 -1
  145. package/dist/safe-bash-compression-engine/bounded-codec.js +3 -3
  146. package/dist/safe-bash-compression-engine/codec-loader.js +2 -2
  147. package/dist/safe-bash-compression-engine/files.js +6 -6
  148. package/dist/safe-bash-compression-engine/index.js +5 -5
  149. package/dist/safe-bash-compression-engine/operand.js +6 -6
  150. package/dist/safe-bash-compression-engine/stream.js +5 -5
  151. package/dist/safe-bash-compression-engine/zstd-decode.js +4 -4
  152. package/dist/safe-bash-contracts/command.js +3 -3
  153. package/dist/safe-bash-contracts/diagnostics.js +3 -3
  154. package/dist/safe-bash-contracts/escaping.js +9 -9
  155. package/dist/safe-bash-contracts/filesystem-descriptor.js +3 -3
  156. package/dist/safe-bash-contracts/filesystem-output.js +8 -8
  157. package/dist/safe-bash-contracts/index.js +21 -19
  158. package/dist/safe-bash-contracts/io.d.ts +12 -0
  159. package/dist/safe-bash-contracts/io.js +4 -1
  160. package/dist/safe-bash-contracts/output.js +3 -2
  161. package/dist/safe-bash-contracts/runtime-control.js +2 -2
  162. package/dist/safe-bash-contracts/signals.js +1 -1
  163. package/dist/safe-bash-contracts/yield.d.ts +1 -0
  164. package/dist/safe-bash-contracts/yield.js +3 -1
  165. package/dist/safe-bash-csv-engine/index.d.ts +10 -1
  166. package/dist/safe-bash-csv-engine/index.js +78 -6
  167. package/dist/safe-bash-io-engine/commands/search/requirements.js +3 -3
  168. package/dist/safe-bash-io-engine/commands/text-programs/shared.js +3 -3
  169. package/dist/safe-bash-io-engine/gnu-information.js +1 -1
  170. package/dist/safe-bash-io-engine/internal.d.ts +1 -1
  171. package/dist/safe-bash-io-engine/internal.js +2 -2
  172. package/dist/safe-bash-query-engine/index.js +4 -4
  173. package/dist/safe-bash-query-engine/interpreter.js +2 -2
  174. package/dist/safe-bash-query-engine/query-core.js +4 -4
  175. package/package.json +2 -2
  176. package/dist/safe-bash/opt-in/commands/cmp/compare.js +0 -95
  177. package/dist/safe-bash/opt-in/commands/cmp/io.js +0 -218
  178. package/dist/safe-bash/command-chunks/{chunk-FXYWQ6S4.js → chunk-2VTMZTV3.js} +0 -0
  179. package/dist/safe-bash/command-chunks/{chunk-RTOJNFFL.js → chunk-BJ6DGYJA.js} +4 -4
  180. package/dist/safe-bash/command-chunks/{chunk-DEH3CMGL.js → chunk-QJ3ONEBI.js} +3 -3
@@ -1,56 +1,13 @@
1
- import {
2
- contracts_exports
3
- } from "../../chunks/chunk-FJZNUUOQ.js";
4
- import "../../chunks/chunk-O6356Z27.js";
5
- import {
6
- command_exports
7
- } from "../../chunks/chunk-T3VDYWKZ.js";
8
1
  import {
9
2
  init_platform
10
3
  } from "../../chunks/chunk-Q45QCA4J.js";
11
4
 
12
5
  // packages/safe-bash/src/commands/docx/index.ts
13
6
  init_platform();
14
- function createDocxCommand(options) {
15
- if (!options?.engine || typeof options.engine.execute !== "function")
16
- throw new TypeError("An explicit docx command engine is required.");
17
- if (options.replace !== void 0 && typeof options.replace !== "boolean")
18
- throw new TypeError("docx replace must be boolean.");
19
- const engine = options.engine;
20
- return {
21
- name: "docx",
22
- async execute(context) {
23
- context.signal.throwIfAborted();
24
- const arguments_ = (0, contracts_exports.getCommandArguments)(context);
25
- const result = await engine.execute({
26
- args: Object.freeze(arguments_.args.map((_, index) => arguments_.bytes(index))),
27
- cwd: context.cwd,
28
- filesystem: context.fs,
29
- stdin: context.stdin,
30
- ...context.stdinIsDefault === void 0 ? {} : { stdinIsDefault: context.stdinIsDefault },
31
- stdout: context.stdout,
32
- stderr: context.stderr,
33
- signal: context.signal,
34
- ...context.registerCleanup === void 0 ? {} : { registerCleanup: context.registerCleanup }
35
- });
36
- context.signal.throwIfAborted();
37
- return { exitCode: (0, command_exports.validateExitCode)(result.exitCode) };
38
- }
39
- };
40
- }
41
- function docxCommands(options) {
42
- const command = createDocxCommand(options);
43
- const replace = options.replace ?? false;
44
- return {
45
- name: "docx-commands",
46
- setup(host) {
47
- if (!replace && host.commands.has(command.name))
48
- throw new Error("Command already registered: docx");
49
- host.commands.register(command, { replace });
50
- }
51
- };
52
- }
7
+ export * from "../../../safe-bash-command-docx/index.js";
8
+ import { createDocxCommand, createDocxCommands, docxCommands } from "../../../safe-bash-command-docx/index.js";
53
9
  export {
54
10
  createDocxCommand,
11
+ createDocxCommands,
55
12
  docxCommands
56
13
  };
@@ -1,25 +1,3 @@
1
- import { type ByteSink, type ByteSource, type CommandContext, type CommandDefinition, type FileSystem, type VirtualShellPlugin } from "../../contracts/index.js";
2
- /** Explicit invocation capabilities for an injected document operation engine. */
3
- export interface DocxCommandRequest {
4
- readonly args: readonly Uint8Array[];
5
- readonly cwd: string;
6
- readonly filesystem: FileSystem;
7
- readonly stdin: ByteSource;
8
- readonly stdinIsDefault?: boolean;
9
- readonly stdout: ByteSink;
10
- readonly stderr: ByteSink;
11
- readonly signal: AbortSignal;
12
- readonly registerCleanup?: CommandContext["registerCleanup"];
13
- }
14
- export interface DocxCommandEngine {
15
- execute(request: DocxCommandRequest): Promise<{
16
- readonly exitCode: number;
17
- }>;
18
- }
19
- export interface DocxCommandOptions {
20
- readonly engine: DocxCommandEngine;
21
- readonly replace?: boolean;
22
- }
23
- export declare function createDocxCommand(options: DocxCommandOptions): CommandDefinition;
24
- export declare function docxCommands(options: DocxCommandOptions): VirtualShellPlugin;
1
+ export * from "../../../safe-bash-command-docx/index.js";
2
+ export { createDocxCommand, createDocxCommands, docxCommands } from "../../../safe-bash-command-docx/index.js";
25
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,42 +1,3 @@
1
- import { getCommandArguments } from "../../contracts/index.js";
2
- import { validateExitCode } from "../../contracts/command.js";
3
- export function createDocxCommand(options) {
4
- if (!options?.engine || typeof options.engine.execute !== "function")
5
- throw new TypeError("An explicit docx command engine is required.");
6
- if (options.replace !== undefined && typeof options.replace !== "boolean")
7
- throw new TypeError("docx replace must be boolean.");
8
- const engine = options.engine;
9
- return {
10
- name: "docx",
11
- async execute(context) {
12
- context.signal.throwIfAborted();
13
- const arguments_ = getCommandArguments(context);
14
- const result = await engine.execute({
15
- args: Object.freeze(arguments_.args.map((_, index) => arguments_.bytes(index))),
16
- cwd: context.cwd,
17
- filesystem: context.fs,
18
- stdin: context.stdin,
19
- ...(context.stdinIsDefault === undefined ? {} : { stdinIsDefault: context.stdinIsDefault }),
20
- stdout: context.stdout,
21
- stderr: context.stderr,
22
- signal: context.signal,
23
- ...(context.registerCleanup === undefined ? {} : { registerCleanup: context.registerCleanup })
24
- });
25
- context.signal.throwIfAborted();
26
- return { exitCode: validateExitCode(result.exitCode) };
27
- }
28
- };
29
- }
30
- export function docxCommands(options) {
31
- const command = createDocxCommand(options);
32
- const replace = options.replace ?? false;
33
- return {
34
- name: "docx-commands",
35
- setup(host) {
36
- if (!replace && host.commands.has(command.name))
37
- throw new Error("Command already registered: docx");
38
- host.commands.register(command, { replace });
39
- }
40
- };
41
- }
1
+ export * from "../../../safe-bash-command-docx/index.js";
2
+ export { createDocxCommand, createDocxCommands, docxCommands } from "../../../safe-bash-command-docx/index.js";
42
3
  //# sourceMappingURL=index.js.map
@@ -1,15 +1,2 @@
1
- import { type ByteSink, type ByteSource } from "../../contracts/io.js";
2
- import type { CommandContext } from "../../contracts/command.js";
3
- export declare function documentByteSource(source: ByteSource): {
4
- open(signal: AbortSignal): AsyncIterable<Uint8Array>;
5
- };
6
- export declare function documentByteSink(sink: ByteSink): {
7
- write(bytes: Uint8Array, signal: AbortSignal): Promise<void>;
8
- };
9
- export declare function createDocumentOutput(context: Pick<CommandContext, "signal" | "registerCleanup">, destination: ByteSink): {
10
- readonly sink: {
11
- write(bytes: Uint8Array, signal: AbortSignal): Promise<void>;
12
- };
13
- readonly cleanup: () => Promise<void>;
14
- };
1
+ export * from "../../../safe-bash-command-docx/io.js";
15
2
  //# sourceMappingURL=io.d.ts.map
@@ -1,16 +1,2 @@
1
- import { readBytes, writeBytes } from "../../contracts/io.js";
2
- import { createOutputOperation } from "../../contracts/output.js";
3
- export function documentByteSource(source) {
4
- return { open: signal => readBytes(source, signal) };
5
- }
6
- export function documentByteSink(sink) {
7
- return { write: (bytes, signal) => writeBytes(sink, bytes, signal) };
8
- }
9
- export function createDocumentOutput(context, destination) {
10
- const operation = createOutputOperation(context, destination);
11
- return {
12
- sink: documentByteSink(operation.output),
13
- cleanup: operation.close,
14
- };
15
- }
1
+ export * from "../../../safe-bash-command-docx/io.js";
16
2
  //# sourceMappingURL=io.js.map
@@ -2,11 +2,11 @@ import {
2
2
  createLlmCommands,
3
3
  createLlmService,
4
4
  llmCommands
5
- } from "../../chunks/chunk-WHURJBET.js";
5
+ } from "../../chunks/chunk-2MUJ7RLZ.js";
6
6
  import "../../chunks/chunk-2G2T5MEM.js";
7
- import "../../chunks/chunk-FJZNUUOQ.js";
7
+ import "../../chunks/chunk-VUVKC6HV.js";
8
8
  import "../../chunks/chunk-LAPF2XE6.js";
9
- import "../../chunks/chunk-O6356Z27.js";
9
+ import "../../chunks/chunk-H7MMJS26.js";
10
10
  import "../../chunks/chunk-T3VDYWKZ.js";
11
11
  import "../../chunks/chunk-GJWUEOT6.js";
12
12
  import {
@@ -12,12 +12,12 @@ import {
12
12
  evalSyncCurl,
13
13
  evalSyncWget,
14
14
  networkCommands
15
- } from "../../chunks/chunk-ZMYVCRAF.js";
15
+ } from "../../chunks/chunk-X5ZCECM6.js";
16
16
  import "../../chunks/chunk-BI6JV62X.js";
17
17
  import "../../chunks/chunk-2G2T5MEM.js";
18
- import "../../chunks/chunk-FJZNUUOQ.js";
18
+ import "../../chunks/chunk-VUVKC6HV.js";
19
19
  import "../../chunks/chunk-LAPF2XE6.js";
20
- import "../../chunks/chunk-O6356Z27.js";
20
+ import "../../chunks/chunk-H7MMJS26.js";
21
21
  import "../../chunks/chunk-T3VDYWKZ.js";
22
22
  import "../../chunks/chunk-GJWUEOT6.js";
23
23
  import "../../chunks/chunk-Q45QCA4J.js";
@@ -2,11 +2,11 @@ import {
2
2
  createSafeJsNodeCommand,
3
3
  createSafeJsNodeCommands,
4
4
  safeJsNodeCommands
5
- } from "../../chunks/chunk-PYTLIUST.js";
5
+ } from "../../chunks/chunk-CTUHLNJM.js";
6
6
  import "../../chunks/chunk-2G2T5MEM.js";
7
- import "../../chunks/chunk-FJZNUUOQ.js";
7
+ import "../../chunks/chunk-VUVKC6HV.js";
8
8
  import "../../chunks/chunk-LAPF2XE6.js";
9
- import "../../chunks/chunk-O6356Z27.js";
9
+ import "../../chunks/chunk-H7MMJS26.js";
10
10
  import "../../chunks/chunk-T3VDYWKZ.js";
11
11
  import "../../chunks/chunk-GJWUEOT6.js";
12
12
  import "../../chunks/chunk-Q45QCA4J.js";
@@ -1,29 +1,3 @@
1
- import { type CommandDefinition, type VirtualShellPlugin } from "../../contracts/index.js";
2
- export interface PptxCommandEngine {
3
- execute(request: {
4
- readonly args: readonly Uint8Array[];
5
- readonly signal: AbortSignal;
6
- readonly readInput: (path: string, maxBytes: number) => Promise<Uint8Array>;
7
- readonly publishOutput?: (publication: {
8
- readonly inputPath?: string;
9
- readonly protectedInputPaths?: readonly string[];
10
- readonly outputPath: string;
11
- readonly bytes: Uint8Array;
12
- readonly originalBytes: Uint8Array;
13
- readonly inPlace: boolean;
14
- readonly force: boolean;
15
- readonly dryRun: boolean;
16
- }) => Promise<void>;
17
- }): Promise<{
18
- readonly exitCode: number;
19
- readonly stdout: Uint8Array;
20
- readonly stderr: Uint8Array;
21
- }>;
22
- }
23
- export interface PptxCommandsOptions {
24
- readonly engine: PptxCommandEngine;
25
- readonly replace?: boolean;
26
- }
27
- export declare function createPptxCommands(options: PptxCommandsOptions): readonly CommandDefinition[];
28
- export declare function pptxCommands(options: PptxCommandsOptions): VirtualShellPlugin;
1
+ export * from "../../../safe-bash-command-pptx/index.js";
2
+ export { createPptxCommand, createPptxCommands, pptxCommands } from "../../../safe-bash-command-pptx/index.js";
29
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,153 +1,3 @@
1
- import { collectBytes, FsError, getCommandArguments, writeBytes } from "../../contracts/index.js";
2
- import { writeFileOutput } from "../../contracts/filesystem-output.js";
3
- import { compareObservedEntries } from "../copy-identity.js";
4
- import { pathOf } from "../internal.js";
5
- import { inputRequirements } from "../portable-requirements.js";
6
- export function createPptxCommands(options) {
7
- if (!options?.engine || typeof options.engine.execute !== "function")
8
- throw new TypeError("An explicit pptx command engine is required.");
9
- if (options.replace !== undefined && typeof options.replace !== "boolean")
10
- throw new TypeError("pptx replace must be boolean");
11
- const engine = options.engine;
12
- return [{ name: "pptx", filesystemRequirements: inputRequirements, async execute(context) {
13
- const arguments_ = getCommandArguments(context);
14
- const snapshots = new Map();
15
- const result = await engine.execute({
16
- args: arguments_.args.map((_, index) => arguments_.bytes(index)),
17
- signal: context.signal,
18
- async readInput(path, maxBytes) {
19
- try {
20
- context.signal.throwIfAborted();
21
- if (path === "-")
22
- return await collectBytes(context.stdin, { maxBytes, signal: context.signal });
23
- const resolved = pathOf(context, path);
24
- if (!snapshots.has(resolved)) {
25
- try {
26
- snapshots.set(resolved, await context.fs.lstat(resolved, { signal: context.signal }));
27
- }
28
- catch {
29
- context.signal.throwIfAborted();
30
- }
31
- }
32
- const capabilities = await context.fs.capabilitiesFor?.(resolved, { signal: context.signal }) ?? context.fs.capabilities;
33
- context.signal.throwIfAborted();
34
- if (context.fs.readStream && capabilities.streamingRead !== false) {
35
- let emitted = false;
36
- try {
37
- const stream = context.fs.readStream(resolved, { signal: context.signal });
38
- return await collectBytes((async function* () {
39
- for await (const chunk of stream) {
40
- if (chunk.byteLength)
41
- emitted = true;
42
- yield chunk;
43
- }
44
- })(), { maxBytes, signal: context.signal });
45
- }
46
- catch (error) {
47
- context.signal.throwIfAborted();
48
- if (emitted || !(error instanceof FsError) || error.code !== "ENOTSUP")
49
- throw error;
50
- }
51
- }
52
- if (capabilities.read === false)
53
- throw new FsError("ENOTSUP");
54
- const bytes = await context.fs.readFile(resolved, { maxBytes, signal: context.signal });
55
- context.signal.throwIfAborted();
56
- if (bytes.byteLength > maxBytes)
57
- throw new FsError("EFBIG");
58
- return bytes;
59
- }
60
- catch (error) {
61
- context.signal.throwIfAborted();
62
- throw Object.assign(new Error("Input could not be read."), { code: error instanceof FsError && error.code === "EFBIG" ? "resource-limit" : "io-failure" });
63
- }
64
- },
65
- async publishOutput(publication) {
66
- try {
67
- const { fs, signal } = context;
68
- signal.throwIfAborted();
69
- const input = publication.inputPath === undefined || publication.inputPath === "-" ? undefined : pathOf(context, publication.inputPath);
70
- const output = pathOf(context, publication.outputPath);
71
- if (publication.inPlace ? !input || input !== output : input === output)
72
- throw new FsError("EINVAL");
73
- const capabilities = await fs.capabilitiesFor?.(output, { signal }) ?? fs.capabilities;
74
- signal.throwIfAborted();
75
- if (capabilities.readOnly === true || capabilities.write === false || !capabilities.atomicFileMutation || !fs.writeFileConditional)
76
- throw new FsError("ENOTSUP");
77
- let destination;
78
- try {
79
- destination = await fs.lstat(output, { signal });
80
- }
81
- catch (error) {
82
- signal.throwIfAborted();
83
- if (!(error instanceof FsError) || error.code !== "ENOENT")
84
- throw error;
85
- destination = null;
86
- }
87
- if (destination && destination.type !== "file")
88
- throw new FsError("EINVAL");
89
- if (destination) {
90
- const protectedInputs = new Set((publication.protectedInputPaths ?? []).filter(path => path !== "-").map(path => pathOf(context, path)));
91
- for (const [source, observed] of snapshots) {
92
- if (source === input && !protectedInputs.has(source))
93
- continue;
94
- const identity = observed.type === "symlink" ? await fs.stat(source, { signal }) : observed;
95
- if (source === output || await compareObservedEntries(fs, source, identity, fs, output, destination, { signal }) !== "distinct")
96
- throw new FsError("EINVAL");
97
- }
98
- }
99
- if (destination && !publication.inPlace) {
100
- if (!publication.force)
101
- throw new FsError("EEXIST");
102
- if (input && await compareObservedEntries(fs, input, await fs.stat(input, { signal }), fs, output, destination, { signal }) !== "distinct")
103
- throw new FsError("EINVAL");
104
- }
105
- const parentPath = output.slice(0, output.lastIndexOf("/")) || "/";
106
- const parent = await fs.stat(parentPath, { signal });
107
- if (parent.type !== "directory")
108
- throw new FsError("ENOTDIR");
109
- if (publication.inPlace) {
110
- const original = snapshots.get(input);
111
- if (!original || original.type !== "file" || !destination || original.revision === undefined
112
- || original.revision !== destination.revision || original.size !== destination.size
113
- || original.mode !== destination.mode || original.nlink !== destination.nlink
114
- || original.mtimeMs !== destination.mtimeMs || original.ctimeMs !== destination.ctimeMs
115
- || await compareObservedEntries(fs, input, original, fs, output, destination, { signal }) !== "same")
116
- throw new FsError("EAGAIN");
117
- const current = await fs.readFile(input, { maxBytes: publication.originalBytes.length, signal });
118
- if (current.length !== publication.originalBytes.length || current.some((byte, index) => byte !== publication.originalBytes[index]))
119
- throw new FsError("EAGAIN");
120
- destination = original;
121
- }
122
- signal.throwIfAborted();
123
- if (!publication.dryRun)
124
- await writeFileOutput(context, publication.bytes, async (bytes) => {
125
- await fs.writeFileConditional(output, bytes, { parent, expected: destination, signal });
126
- });
127
- }
128
- catch (error) {
129
- context.signal.throwIfAborted();
130
- const code = error instanceof FsError && error.code === "EAGAIN" ? "stale-input"
131
- : error instanceof FsError && error.code === "ENOTSUP" ? "publication-unsupported" : "io-failure";
132
- throw Object.assign(new Error("Output could not be published."), { code });
133
- }
134
- }
135
- });
136
- if (result.stdout.length)
137
- await writeBytes(context.stdout, result.stdout, context.signal);
138
- if (result.stderr.length)
139
- await writeBytes(context.stderr, result.stderr, context.signal);
140
- return { exitCode: result.exitCode };
141
- } }];
142
- }
143
- export function pptxCommands(options) {
144
- const commands = createPptxCommands(options);
145
- const replace = options.replace ?? false;
146
- return { name: "pptx-commands", setup(host) {
147
- if (!replace && host.commands.has("pptx"))
148
- throw new Error("Command already registered: pptx");
149
- for (const command of commands)
150
- host.commands.register(command, { replace });
151
- } };
152
- }
1
+ export * from "../../../safe-bash-command-pptx/index.js";
2
+ export { createPptxCommand, createPptxCommands, pptxCommands } from "../../../safe-bash-command-pptx/index.js";
153
3
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,6 @@
1
1
  export declare function parsePrintfFloat(operand: string): {
2
2
  value: number;
3
3
  special?: string;
4
+ error?: string;
4
5
  } | undefined;
5
6
  //# sourceMappingURL=printf-float.d.ts.map
@@ -1,18 +1,36 @@
1
- // Parse C floating operands without a host libc or shell fallback.
1
+ // Parse the C numeric prefix while retaining trailing-input diagnostics.
2
2
  export function parsePrintfFloat(operand) {
3
- const token = operand.trim().toLowerCase();
3
+ let start = 0;
4
+ while (start < operand.length && " \t\n\r\v\f".includes(operand[start]))
5
+ start++;
6
+ let end = operand.length;
7
+ while (end > start && " \t\n\r\v\f".includes(operand[end - 1]))
8
+ end--;
9
+ const token = operand.slice(start, end).toLowerCase();
4
10
  if (token.length > 4096)
5
11
  return undefined;
6
12
  const negative = token.startsWith("-");
7
13
  const magnitude = token.startsWith("+") || negative ? token.slice(1) : token;
8
- const payload = magnitude.startsWith("nan(") && magnitude.endsWith(")") ? magnitude.slice(4, -1) : undefined;
9
- const nan = magnitude === "nan" || payload !== undefined && [...payload].every(char => "abcdefghijklmnopqrstuvwxyz0123456789_".includes(char));
10
- if (nan || magnitude === "inf" || magnitude === "infinity") {
11
- return { value: nan ? NaN : negative ? -Infinity : Infinity, special: (negative ? "-" : "") + (nan ? "nan" : "inf") };
14
+ const converted = (value, end, special) => ({
15
+ value, ...(special === undefined ? {} : { special }), ...(end < magnitude.length || operand.length > start + token.length ? { error: "invalid number" } : {}),
16
+ });
17
+ if (magnitude.startsWith("inf")) {
18
+ return converted(negative ? -Infinity : Infinity, magnitude.startsWith("infinity") ? 8 : 3, (negative ? "-" : "") + "inf");
12
19
  }
13
- if (!magnitude.startsWith("0x")) {
14
- let offset = 0;
15
- let digits = 0;
20
+ if (magnitude.startsWith("nan")) {
21
+ let end = 3;
22
+ if (magnitude[end] === "(") {
23
+ let offset = end + 1;
24
+ while (offset < magnitude.length && "abcdefghijklmnopqrstuvwxyz0123456789_".includes(magnitude[offset]))
25
+ offset++;
26
+ if (magnitude[offset] === ")")
27
+ end = offset + 1;
28
+ }
29
+ return converted(NaN, end, (negative ? "-" : "") + "nan");
30
+ }
31
+ const hexadecimal = magnitude.startsWith("0x") && ("0123456789abcdef".includes(magnitude[2] ?? "!") || magnitude[2] === "." && "0123456789abcdef".includes(magnitude[3] ?? "!"));
32
+ if (!hexadecimal) {
33
+ let offset = 0, digits = 0;
16
34
  while (offset < magnitude.length && "0123456789".includes(magnitude[offset])) {
17
35
  offset++;
18
36
  digits++;
@@ -27,64 +45,56 @@ export function parsePrintfFloat(operand) {
27
45
  if (!digits)
28
46
  return undefined;
29
47
  if (magnitude[offset] === "e") {
30
- offset++;
48
+ const exponentStart = offset++;
31
49
  if (magnitude[offset] === "+" || magnitude[offset] === "-")
32
50
  offset++;
33
- const start = offset;
51
+ const firstDigit = offset;
34
52
  while (offset < magnitude.length && "0123456789".includes(magnitude[offset]))
35
53
  offset++;
36
- if (offset === start)
37
- return undefined;
54
+ if (offset === firstDigit)
55
+ offset = exponentStart;
38
56
  }
39
- if (offset !== magnitude.length)
40
- return undefined;
41
- const value = Number(operand);
42
- return Number.isFinite(value) ? { value } : undefined;
57
+ const value = Number((negative ? "-" : "") + magnitude.slice(0, offset));
58
+ return Number.isFinite(value) ? converted(value, offset) : undefined;
43
59
  }
44
- let offset = 2;
45
- let digits = "";
46
- let fractionDigits = 0;
47
- let point = false;
60
+ let offset = 2, digits = "", fractionDigits = 0, point = false;
48
61
  while (offset < magnitude.length) {
49
- const char = magnitude[offset];
50
- if ("0123456789abcdef".includes(char)) {
51
- digits += char;
62
+ const character = magnitude[offset];
63
+ if ("0123456789abcdef".includes(character)) {
64
+ digits += character;
52
65
  if (point)
53
66
  fractionDigits++;
54
67
  }
55
- else if (char === "." && !point)
68
+ else if (character === "." && !point)
56
69
  point = true;
57
70
  else
58
71
  break;
59
72
  offset++;
60
73
  }
61
- if (!digits)
62
- return undefined;
63
74
  let exponent = 0;
64
- if (offset < magnitude.length) {
65
- if (magnitude[offset++] !== "p")
66
- return undefined;
67
- const start = offset;
75
+ if (magnitude[offset] === "p") {
76
+ const exponentStart = offset++;
77
+ const numberStart = offset;
68
78
  if (magnitude[offset] === "+" || magnitude[offset] === "-")
69
79
  offset++;
70
80
  const firstDigit = offset;
71
81
  while (offset < magnitude.length && "0123456789".includes(magnitude[offset]))
72
82
  offset++;
73
- if (offset === firstDigit || offset !== magnitude.length)
74
- return undefined;
75
- exponent = Number(magnitude.slice(start));
83
+ if (offset === firstDigit)
84
+ offset = exponentStart;
85
+ else
86
+ exponent = Number(magnitude.slice(numberStart, offset));
76
87
  }
77
88
  const significand = BigInt("0x" + digits);
78
89
  if (significand === 0n)
79
- return { value: negative ? -0 : 0 };
90
+ return converted(negative ? -0 : 0, offset);
80
91
  const bits = significand.toString(2).length;
81
92
  const scale = exponent - fractionDigits * 4;
82
93
  const top = bits - 1 + scale;
83
94
  if (top > 1023)
84
95
  return undefined;
85
96
  if (top < -1075)
86
- return { value: negative ? -0 : 0 };
87
- // Round once to binary64, including the fixed subnormal quantum.
97
+ return converted(negative ? -0 : 0, offset);
88
98
  const shift = Math.max(bits - 53, -1074 - scale);
89
99
  let rounded = significand;
90
100
  if (shift > 0) {
@@ -95,6 +105,6 @@ export function parsePrintfFloat(operand) {
95
105
  rounded++;
96
106
  }
97
107
  const value = Number(rounded) * 2 ** (scale + Math.max(0, shift)) * (negative ? -1 : 1);
98
- return Number.isFinite(value) ? { value } : undefined;
108
+ return Number.isFinite(value) ? converted(value, offset) : undefined;
99
109
  }
100
110
  //# sourceMappingURL=printf-float.js.map
@@ -37,14 +37,17 @@ export async function parsePrintfDirective(format, start, signal) {
37
37
  offset++;
38
38
  precision = await field();
39
39
  }
40
- const length = character();
41
- if (length && "hlLjzt".includes(length)) {
40
+ let wide = false;
41
+ for (let modifier = character(); modifier && "hlLjzt".includes(modifier); modifier = character()) {
42
+ wide ||= modifier === "l";
42
43
  offset++;
43
- if ((length === "h" || length === "l") && character() === length)
44
- offset++;
44
+ if ((offset - start) % 1024 === 0)
45
+ await yieldTurn(signal);
45
46
  }
46
- const specifier = character();
47
- if (!specifier || !"sbqcdiouxXfFeEgGaA".includes(specifier)) {
47
+ let specifier = character();
48
+ if (wide && (specifier === "s" || specifier === "c"))
49
+ specifier = specifier.toUpperCase();
50
+ if (!specifier || !"sbqQcCSdiouxXfFeEgGaA".includes(specifier)) {
48
51
  const end = start + 64;
49
52
  const preview = typeof format === "string" ? format.slice(start, end) : decoder.decode(format.subarray(start, end));
50
53
  throw new UsageError(`invalid format near '${preview}${format.length > end ? "..." : ""}'`);
@@ -0,0 +1,3 @@
1
+ /** Preserve valid printable UTF-8 units even beside invalid octets. */
2
+ export declare function quotePrintf(bytes: Uint8Array, utf8: boolean, signal: AbortSignal, alternate?: boolean): Promise<Uint8Array>;
3
+ //# sourceMappingURL=printf-quote.d.ts.map