@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
@@ -0,0 +1,67 @@
1
+ import {
2
+ init_buffer
3
+ } from "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
4
+
5
+ // packages/safe-bash-command-docx/dist/index.js
6
+ init_buffer();
7
+ import { shellValueByteLength } from "../safe-bash-contracts/value.js";
8
+ import { FsError, getCommandArguments } from "../safe-bash-contracts/index.js";
9
+ import { validateExitCode } from "../safe-bash-contracts/command.js";
10
+ function createDocxCommand(options) {
11
+ if (!options?.engine || typeof options.engine.execute !== "function")
12
+ throw new TypeError("An explicit docx command engine is required.");
13
+ if (options.replace !== void 0 && typeof options.replace !== "boolean")
14
+ throw new TypeError("docx replace must be boolean.");
15
+ const maxArgumentBytes = options.limits?.maxArgumentBytes ?? Infinity;
16
+ if (maxArgumentBytes !== Infinity && (!Number.isSafeInteger(maxArgumentBytes) || maxArgumentBytes < 0)) {
17
+ throw new RangeError("maxArgumentBytes must be a nonnegative safe integer or Infinity");
18
+ }
19
+ const engine = options.engine;
20
+ return {
21
+ name: "docx",
22
+ async execute(context) {
23
+ context.signal.throwIfAborted();
24
+ const arguments_ = getCommandArguments(context);
25
+ let argumentBytes = 0;
26
+ for (let index = 0; index < arguments_.args.length; index++) {
27
+ const bytes = shellValueByteLength(arguments_.values[index]);
28
+ if (bytes > maxArgumentBytes - argumentBytes)
29
+ throw new FsError("EFBIG", { message: "document argument limit exceeded" });
30
+ argumentBytes += bytes;
31
+ }
32
+ const result = await engine.execute({
33
+ args: Object.freeze(arguments_.args.map((_, index) => arguments_.bytes(index))),
34
+ cwd: context.cwd,
35
+ filesystem: context.fs,
36
+ stdin: context.stdin,
37
+ ...context.stdinIsDefault === void 0 ? {} : { stdinIsDefault: context.stdinIsDefault },
38
+ stdout: context.stdout,
39
+ stderr: context.stderr,
40
+ signal: context.signal,
41
+ ...context.registerCleanup === void 0 ? {} : { registerCleanup: context.registerCleanup }
42
+ });
43
+ context.signal.throwIfAborted();
44
+ return { exitCode: validateExitCode(result.exitCode) };
45
+ }
46
+ };
47
+ }
48
+ function createDocxCommands(options) {
49
+ return [createDocxCommand(options)];
50
+ }
51
+ function docxCommands(options) {
52
+ const command = createDocxCommand(options);
53
+ const replace = options.replace ?? false;
54
+ return {
55
+ name: "docx-commands",
56
+ setup(host) {
57
+ if (!replace && host.commands.has(command.name))
58
+ throw new Error("Command already registered: docx");
59
+ host.commands.register(command, { replace });
60
+ }
61
+ };
62
+ }
63
+ export {
64
+ createDocxCommand,
65
+ createDocxCommands,
66
+ docxCommands
67
+ };
@@ -0,0 +1,14 @@
1
+ import { type ByteSink, type ByteSource } from "../safe-bash-contracts/io.js";
2
+ import type { CommandContext } from "../safe-bash-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
+ };
@@ -0,0 +1,26 @@
1
+ import {
2
+ init_buffer
3
+ } from "../safe-bash/command-chunks/chunk-HX3SHTCE.js";
4
+
5
+ // packages/safe-bash-command-docx/dist/io.js
6
+ init_buffer();
7
+ import { readBytes, writeBytes } from "../safe-bash-contracts/io.js";
8
+ import { createOutputOperation } from "../safe-bash-contracts/output.js";
9
+ function documentByteSource(source) {
10
+ return { open: (signal) => readBytes(source, signal) };
11
+ }
12
+ function documentByteSink(sink) {
13
+ return { write: (bytes, signal) => writeBytes(sink, bytes, signal) };
14
+ }
15
+ function createDocumentOutput(context, destination) {
16
+ const operation = createOutputOperation(context, destination);
17
+ return {
18
+ sink: documentByteSink(operation.output),
19
+ cleanup: operation.close
20
+ };
21
+ }
22
+ export {
23
+ createDocumentOutput,
24
+ documentByteSink,
25
+ documentByteSource
26
+ };
@@ -4,6 +4,7 @@ import {
4
4
 
5
5
  // packages/safe-bash-command-envsubst/dist/index.js
6
6
  init_buffer();
7
+ import { yieldTurn } from "../safe-bash-contracts/yield.js";
7
8
  import { collectBytes, commandRuntimeIdentity, writeBytes, writeText } from "../safe-bash-contracts/index.js";
8
9
  function settings(options = {}) {
9
10
  const limits = {
@@ -87,6 +88,13 @@ function extractVariablesFromBytes(bytes) {
87
88
  return vars;
88
89
  }
89
90
  function substituteBytes(input, env, allowedVars, maxOutputBytes) {
91
+ const steps = substituteSteps(input, env, allowedVars, maxOutputBytes);
92
+ let step = steps.next();
93
+ while (!step.done)
94
+ step = steps.next();
95
+ return step.value;
96
+ }
97
+ function* substituteSteps(input, env, allowedVars, maxOutputBytes) {
90
98
  const chunks = [];
91
99
  let totalOut = 0;
92
100
  const pushChunk = (chunk) => {
@@ -100,7 +108,12 @@ function substituteBytes(input, env, allowedVars, maxOutputBytes) {
100
108
  };
101
109
  let segStart = 0;
102
110
  let i = 0;
111
+ let nextTurn = 4096;
103
112
  while (i < input.byteLength) {
113
+ if (i >= nextTurn) {
114
+ yield;
115
+ nextTurn = i + 4096;
116
+ }
104
117
  if (input[i] !== 36) {
105
118
  i++;
106
119
  continue;
@@ -116,8 +129,13 @@ function substituteBytes(input, env, allowedVars, maxOutputBytes) {
116
129
  let j = i + 2;
117
130
  if (j < input.byteLength && isIdentStart(input[j])) {
118
131
  j++;
119
- while (j < input.byteLength && isIdentPart(input[j]))
132
+ while (j < input.byteLength && isIdentPart(input[j])) {
133
+ if (j >= nextTurn) {
134
+ yield;
135
+ nextTurn = j + 4096;
136
+ }
120
137
  j++;
138
+ }
121
139
  if (j < input.byteLength && input[j] === 125) {
122
140
  varName = sharedDecoder.decode(input.subarray(i + 2, j));
123
141
  endIdx = j + 1;
@@ -125,8 +143,13 @@ function substituteBytes(input, env, allowedVars, maxOutputBytes) {
125
143
  }
126
144
  } else if (isIdentStart(next)) {
127
145
  let j = i + 2;
128
- while (j < input.byteLength && isIdentPart(input[j]))
146
+ while (j < input.byteLength && isIdentPart(input[j])) {
147
+ if (j >= nextTurn) {
148
+ yield;
149
+ nextTurn = j + 4096;
150
+ }
129
151
  j++;
152
+ }
130
153
  varName = sharedDecoder.decode(input.subarray(i + 1, j));
131
154
  endIdx = j;
132
155
  }
@@ -218,12 +241,20 @@ function createEnvsubstCommand(options = {}) {
218
241
  return { exitCode: 1 };
219
242
  }
220
243
  try {
221
- const output = substituteBytes(input, context.env, allowedVars, limits.maxOutputBytes);
244
+ const steps = substituteSteps(input, context.env, allowedVars, limits.maxOutputBytes);
245
+ let step = steps.next();
246
+ while (!step.done) {
247
+ await yieldTurn(context.signal);
248
+ context.signal.throwIfAborted();
249
+ step = steps.next();
250
+ }
251
+ const output = step.value;
222
252
  if (output.byteLength > 0) {
223
253
  await writeBytes(context.stdout, output);
224
254
  }
225
255
  return { exitCode: 0 };
226
256
  } catch (err) {
257
+ context.signal.throwIfAborted();
227
258
  await writeText(context.stderr, `${err instanceof Error ? err.message : "envsubst: error"}
228
259
  `);
229
260
  return { exitCode: 1 };
@@ -7,6 +7,7 @@ init_buffer();
7
7
 
8
8
  // packages/safe-bash-command-exiftool/dist/command.js
9
9
  init_buffer();
10
+ import { yieldTurn } from "../safe-bash-contracts/yield.js";
10
11
  import { commandRuntimeIdentity, getCommandArguments } from "../safe-bash-contracts/command.js";
11
12
  import { FsError as FsError2 } from "../safe-bash-contracts/errors.js";
12
13
  import { readBytes as readBytes2, writeBytes } from "../safe-bash-contracts/io.js";
@@ -2083,6 +2084,8 @@ function createExiftoolCommand(options = {}) {
2083
2084
  };
2084
2085
  let errors = 0, updated = 0, created = 0, unchanged = 0, read = 0;
2085
2086
  for (const file of invocation.files) {
2087
+ await yieldTurn(context.signal);
2088
+ context.signal.throwIfAborted();
2086
2089
  let tags = [];
2087
2090
  try {
2088
2091
  const { path, original, bytes } = await acquire(file);