@poe-platform/safe-bash 0.1.0

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 (1023) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +300 -0
  3. package/dist/safe-bash/browser.d.ts +13 -0
  4. package/dist/safe-bash/browser.d.ts.map +1 -0
  5. package/dist/safe-bash/browser.js +14478 -0
  6. package/dist/safe-bash/browser.js.map +7 -0
  7. package/dist/safe-bash/commands/apply-patch/apply.d.ts +6 -0
  8. package/dist/safe-bash/commands/apply-patch/apply.d.ts.map +1 -0
  9. package/dist/safe-bash/commands/apply-patch/apply.js +273 -0
  10. package/dist/safe-bash/commands/apply-patch/apply.js.map +1 -0
  11. package/dist/safe-bash/commands/apply-patch/index.d.ts +7 -0
  12. package/dist/safe-bash/commands/apply-patch/index.d.ts.map +1 -0
  13. package/dist/safe-bash/commands/apply-patch/index.js +23 -0
  14. package/dist/safe-bash/commands/apply-patch/index.js.map +1 -0
  15. package/dist/safe-bash/commands/apply-patch/matcher.d.ts +4 -0
  16. package/dist/safe-bash/commands/apply-patch/matcher.d.ts.map +1 -0
  17. package/dist/safe-bash/commands/apply-patch/matcher.js +164 -0
  18. package/dist/safe-bash/commands/apply-patch/matcher.js.map +1 -0
  19. package/dist/safe-bash/commands/apply-patch/options.d.ts +22 -0
  20. package/dist/safe-bash/commands/apply-patch/options.d.ts.map +1 -0
  21. package/dist/safe-bash/commands/apply-patch/options.js +34 -0
  22. package/dist/safe-bash/commands/apply-patch/options.js.map +1 -0
  23. package/dist/safe-bash/commands/apply-patch/parser.d.ts +22 -0
  24. package/dist/safe-bash/commands/apply-patch/parser.d.ts.map +1 -0
  25. package/dist/safe-bash/commands/apply-patch/parser.js +164 -0
  26. package/dist/safe-bash/commands/apply-patch/parser.js.map +1 -0
  27. package/dist/safe-bash/commands/apply-patch/shared.d.ts +40 -0
  28. package/dist/safe-bash/commands/apply-patch/shared.d.ts.map +1 -0
  29. package/dist/safe-bash/commands/apply-patch/shared.js +248 -0
  30. package/dist/safe-bash/commands/apply-patch/shared.js.map +1 -0
  31. package/dist/safe-bash/commands/archive/create.d.ts +17 -0
  32. package/dist/safe-bash/commands/archive/create.d.ts.map +1 -0
  33. package/dist/safe-bash/commands/archive/create.js +168 -0
  34. package/dist/safe-bash/commands/archive/create.js.map +1 -0
  35. package/dist/safe-bash/commands/archive/extract.d.ts +5 -0
  36. package/dist/safe-bash/commands/archive/extract.d.ts.map +1 -0
  37. package/dist/safe-bash/commands/archive/extract.js +343 -0
  38. package/dist/safe-bash/commands/archive/extract.js.map +1 -0
  39. package/dist/safe-bash/commands/archive/format.d.ts +33 -0
  40. package/dist/safe-bash/commands/archive/format.d.ts.map +1 -0
  41. package/dist/safe-bash/commands/archive/format.js +225 -0
  42. package/dist/safe-bash/commands/archive/format.js.map +1 -0
  43. package/dist/safe-bash/commands/archive/index.d.ts +8 -0
  44. package/dist/safe-bash/commands/archive/index.d.ts.map +1 -0
  45. package/dist/safe-bash/commands/archive/index.js +70 -0
  46. package/dist/safe-bash/commands/archive/index.js.map +1 -0
  47. package/dist/safe-bash/commands/archive/internal.d.ts +48 -0
  48. package/dist/safe-bash/commands/archive/internal.d.ts.map +1 -0
  49. package/dist/safe-bash/commands/archive/internal.js +183 -0
  50. package/dist/safe-bash/commands/archive/internal.js.map +1 -0
  51. package/dist/safe-bash/commands/archive/options.d.ts +26 -0
  52. package/dist/safe-bash/commands/archive/options.d.ts.map +1 -0
  53. package/dist/safe-bash/commands/archive/options.js +265 -0
  54. package/dist/safe-bash/commands/archive/options.js.map +1 -0
  55. package/dist/safe-bash/commands/archive/stream.d.ts +18 -0
  56. package/dist/safe-bash/commands/archive/stream.d.ts.map +1 -0
  57. package/dist/safe-bash/commands/archive/stream.js +108 -0
  58. package/dist/safe-bash/commands/archive/stream.js.map +1 -0
  59. package/dist/safe-bash/commands/basic.d.ts +3 -0
  60. package/dist/safe-bash/commands/basic.d.ts.map +1 -0
  61. package/dist/safe-bash/commands/basic.js +208 -0
  62. package/dist/safe-bash/commands/basic.js.map +1 -0
  63. package/dist/safe-bash/commands/bytes/checksums/index.d.ts +3 -0
  64. package/dist/safe-bash/commands/bytes/checksums/index.d.ts.map +1 -0
  65. package/dist/safe-bash/commands/bytes/checksums/index.js +334 -0
  66. package/dist/safe-bash/commands/bytes/checksums/index.js.map +1 -0
  67. package/dist/safe-bash/commands/bytes/compression/files.d.ts +13 -0
  68. package/dist/safe-bash/commands/bytes/compression/files.d.ts.map +1 -0
  69. package/dist/safe-bash/commands/bytes/compression/files.js +213 -0
  70. package/dist/safe-bash/commands/bytes/compression/files.js.map +1 -0
  71. package/dist/safe-bash/commands/bytes/compression/gunzip.d.ts +3 -0
  72. package/dist/safe-bash/commands/bytes/compression/gunzip.d.ts.map +1 -0
  73. package/dist/safe-bash/commands/bytes/compression/gunzip.js +191 -0
  74. package/dist/safe-bash/commands/bytes/compression/gunzip.js.map +1 -0
  75. package/dist/safe-bash/commands/bytes/compression/index.d.ts +3 -0
  76. package/dist/safe-bash/commands/bytes/compression/index.d.ts.map +1 -0
  77. package/dist/safe-bash/commands/bytes/compression/index.js +46 -0
  78. package/dist/safe-bash/commands/bytes/compression/index.js.map +1 -0
  79. package/dist/safe-bash/commands/bytes/compression/options.d.ts +12 -0
  80. package/dist/safe-bash/commands/bytes/compression/options.d.ts.map +1 -0
  81. package/dist/safe-bash/commands/bytes/compression/options.js +58 -0
  82. package/dist/safe-bash/commands/bytes/compression/options.js.map +1 -0
  83. package/dist/safe-bash/commands/bytes/compression/stream.d.ts +6 -0
  84. package/dist/safe-bash/commands/bytes/compression/stream.d.ts.map +1 -0
  85. package/dist/safe-bash/commands/bytes/compression/stream.js +94 -0
  86. package/dist/safe-bash/commands/bytes/compression/stream.js.map +1 -0
  87. package/dist/safe-bash/commands/bytes/encoding/base.d.ts +3 -0
  88. package/dist/safe-bash/commands/bytes/encoding/base.d.ts.map +1 -0
  89. package/dist/safe-bash/commands/bytes/encoding/base.js +120 -0
  90. package/dist/safe-bash/commands/bytes/encoding/base.js.map +1 -0
  91. package/dist/safe-bash/commands/bytes/encoding/index.d.ts +3 -0
  92. package/dist/safe-bash/commands/bytes/encoding/index.d.ts.map +1 -0
  93. package/dist/safe-bash/commands/bytes/encoding/index.js +7 -0
  94. package/dist/safe-bash/commands/bytes/encoding/index.js.map +1 -0
  95. package/dist/safe-bash/commands/bytes/encoding/od.d.ts +3 -0
  96. package/dist/safe-bash/commands/bytes/encoding/od.d.ts.map +1 -0
  97. package/dist/safe-bash/commands/bytes/encoding/od.js +135 -0
  98. package/dist/safe-bash/commands/bytes/encoding/od.js.map +1 -0
  99. package/dist/safe-bash/commands/bytes/encoding/shared.d.ts +10 -0
  100. package/dist/safe-bash/commands/bytes/encoding/shared.d.ts.map +1 -0
  101. package/dist/safe-bash/commands/bytes/encoding/shared.js +107 -0
  102. package/dist/safe-bash/commands/bytes/encoding/shared.js.map +1 -0
  103. package/dist/safe-bash/commands/bytes/encoding/xxd.d.ts +3 -0
  104. package/dist/safe-bash/commands/bytes/encoding/xxd.d.ts.map +1 -0
  105. package/dist/safe-bash/commands/bytes/encoding/xxd.js +153 -0
  106. package/dist/safe-bash/commands/bytes/encoding/xxd.js.map +1 -0
  107. package/dist/safe-bash/commands/bytes/index.d.ts +7 -0
  108. package/dist/safe-bash/commands/bytes/index.d.ts.map +1 -0
  109. package/dist/safe-bash/commands/bytes/index.js +22 -0
  110. package/dist/safe-bash/commands/bytes/index.js.map +1 -0
  111. package/dist/safe-bash/commands/column/column.d.ts +4 -0
  112. package/dist/safe-bash/commands/column/column.d.ts.map +1 -0
  113. package/dist/safe-bash/commands/column/column.js +141 -0
  114. package/dist/safe-bash/commands/column/column.js.map +1 -0
  115. package/dist/safe-bash/commands/column/display.d.ts +11 -0
  116. package/dist/safe-bash/commands/column/display.d.ts.map +1 -0
  117. package/dist/safe-bash/commands/column/display.js +74 -0
  118. package/dist/safe-bash/commands/column/display.js.map +1 -0
  119. package/dist/safe-bash/commands/column/index.d.ts +7 -0
  120. package/dist/safe-bash/commands/column/index.d.ts.map +1 -0
  121. package/dist/safe-bash/commands/column/index.js +18 -0
  122. package/dist/safe-bash/commands/column/index.js.map +1 -0
  123. package/dist/safe-bash/commands/column/internal.d.ts +35 -0
  124. package/dist/safe-bash/commands/column/internal.d.ts.map +1 -0
  125. package/dist/safe-bash/commands/column/internal.js +193 -0
  126. package/dist/safe-bash/commands/column/internal.js.map +1 -0
  127. package/dist/safe-bash/commands/column/options.d.ts +34 -0
  128. package/dist/safe-bash/commands/column/options.d.ts.map +1 -0
  129. package/dist/safe-bash/commands/column/options.js +141 -0
  130. package/dist/safe-bash/commands/column/options.js.map +1 -0
  131. package/dist/safe-bash/commands/column/table.d.ts +4 -0
  132. package/dist/safe-bash/commands/column/table.d.ts.map +1 -0
  133. package/dist/safe-bash/commands/column/table.js +87 -0
  134. package/dist/safe-bash/commands/column/table.js.map +1 -0
  135. package/dist/safe-bash/commands/copy-identity.d.ts +4 -0
  136. package/dist/safe-bash/commands/copy-identity.d.ts.map +1 -0
  137. package/dist/safe-bash/commands/copy-identity.js +46 -0
  138. package/dist/safe-bash/commands/copy-identity.js.map +1 -0
  139. package/dist/safe-bash/commands/diff-patch/diff-format.d.ts +9 -0
  140. package/dist/safe-bash/commands/diff-patch/diff-format.d.ts.map +1 -0
  141. package/dist/safe-bash/commands/diff-patch/diff-format.js +155 -0
  142. package/dist/safe-bash/commands/diff-patch/diff-format.js.map +1 -0
  143. package/dist/safe-bash/commands/diff-patch/diff.d.ts +3 -0
  144. package/dist/safe-bash/commands/diff-patch/diff.d.ts.map +1 -0
  145. package/dist/safe-bash/commands/diff-patch/diff.js +291 -0
  146. package/dist/safe-bash/commands/diff-patch/diff.js.map +1 -0
  147. package/dist/safe-bash/commands/diff-patch/index.d.ts +6 -0
  148. package/dist/safe-bash/commands/diff-patch/index.d.ts.map +1 -0
  149. package/dist/safe-bash/commands/diff-patch/index.js +21 -0
  150. package/dist/safe-bash/commands/diff-patch/index.js.map +1 -0
  151. package/dist/safe-bash/commands/diff-patch/patch-envelope.d.ts +3 -0
  152. package/dist/safe-bash/commands/diff-patch/patch-envelope.d.ts.map +1 -0
  153. package/dist/safe-bash/commands/diff-patch/patch-envelope.js +56 -0
  154. package/dist/safe-bash/commands/diff-patch/patch-envelope.js.map +1 -0
  155. package/dist/safe-bash/commands/diff-patch/patch-formats.d.ts +8 -0
  156. package/dist/safe-bash/commands/diff-patch/patch-formats.d.ts.map +1 -0
  157. package/dist/safe-bash/commands/diff-patch/patch-formats.js +247 -0
  158. package/dist/safe-bash/commands/diff-patch/patch-formats.js.map +1 -0
  159. package/dist/safe-bash/commands/diff-patch/patch-gnu-paths.d.ts +34 -0
  160. package/dist/safe-bash/commands/diff-patch/patch-gnu-paths.d.ts.map +1 -0
  161. package/dist/safe-bash/commands/diff-patch/patch-gnu-paths.js +215 -0
  162. package/dist/safe-bash/commands/diff-patch/patch-gnu-paths.js.map +1 -0
  163. package/dist/safe-bash/commands/diff-patch/patch-gnu-reject.d.ts +4 -0
  164. package/dist/safe-bash/commands/diff-patch/patch-gnu-reject.d.ts.map +1 -0
  165. package/dist/safe-bash/commands/diff-patch/patch-gnu-reject.js +89 -0
  166. package/dist/safe-bash/commands/diff-patch/patch-gnu-reject.js.map +1 -0
  167. package/dist/safe-bash/commands/diff-patch/patch-path.d.ts +4 -0
  168. package/dist/safe-bash/commands/diff-patch/patch-path.d.ts.map +1 -0
  169. package/dist/safe-bash/commands/diff-patch/patch-path.js +95 -0
  170. package/dist/safe-bash/commands/diff-patch/patch-path.js.map +1 -0
  171. package/dist/safe-bash/commands/diff-patch/patch.d.ts +3 -0
  172. package/dist/safe-bash/commands/diff-patch/patch.d.ts.map +1 -0
  173. package/dist/safe-bash/commands/diff-patch/patch.js +389 -0
  174. package/dist/safe-bash/commands/diff-patch/patch.js.map +1 -0
  175. package/dist/safe-bash/commands/diff-patch/shared.d.ts +42 -0
  176. package/dist/safe-bash/commands/diff-patch/shared.d.ts.map +1 -0
  177. package/dist/safe-bash/commands/diff-patch/shared.js +177 -0
  178. package/dist/safe-bash/commands/diff-patch/shared.js.map +1 -0
  179. package/dist/safe-bash/commands/diff-patch/unified.d.ts +50 -0
  180. package/dist/safe-bash/commands/diff-patch/unified.d.ts.map +1 -0
  181. package/dist/safe-bash/commands/diff-patch/unified.js +263 -0
  182. package/dist/safe-bash/commands/diff-patch/unified.js.map +1 -0
  183. package/dist/safe-bash/commands/du/arguments.d.ts +17 -0
  184. package/dist/safe-bash/commands/du/arguments.d.ts.map +1 -0
  185. package/dist/safe-bash/commands/du/arguments.js +164 -0
  186. package/dist/safe-bash/commands/du/arguments.js.map +1 -0
  187. package/dist/safe-bash/commands/du/budget.d.ts +37 -0
  188. package/dist/safe-bash/commands/du/budget.d.ts.map +1 -0
  189. package/dist/safe-bash/commands/du/budget.js +127 -0
  190. package/dist/safe-bash/commands/du/budget.js.map +1 -0
  191. package/dist/safe-bash/commands/du/du.d.ts +4 -0
  192. package/dist/safe-bash/commands/du/du.d.ts.map +1 -0
  193. package/dist/safe-bash/commands/du/du.js +205 -0
  194. package/dist/safe-bash/commands/du/du.js.map +1 -0
  195. package/dist/safe-bash/commands/du/format.d.ts +10 -0
  196. package/dist/safe-bash/commands/du/format.d.ts.map +1 -0
  197. package/dist/safe-bash/commands/du/format.js +54 -0
  198. package/dist/safe-bash/commands/du/format.js.map +1 -0
  199. package/dist/safe-bash/commands/du/index.d.ts +7 -0
  200. package/dist/safe-bash/commands/du/index.d.ts.map +1 -0
  201. package/dist/safe-bash/commands/du/index.js +19 -0
  202. package/dist/safe-bash/commands/du/index.js.map +1 -0
  203. package/dist/safe-bash/commands/du/options.d.ts +17 -0
  204. package/dist/safe-bash/commands/du/options.d.ts.map +1 -0
  205. package/dist/safe-bash/commands/du/options.js +14 -0
  206. package/dist/safe-bash/commands/du/options.js.map +1 -0
  207. package/dist/safe-bash/commands/env-split.d.ts +8 -0
  208. package/dist/safe-bash/commands/env-split.d.ts.map +1 -0
  209. package/dist/safe-bash/commands/env-split.js +343 -0
  210. package/dist/safe-bash/commands/env-split.js.map +1 -0
  211. package/dist/safe-bash/commands/execution.d.ts +4 -0
  212. package/dist/safe-bash/commands/execution.d.ts.map +1 -0
  213. package/dist/safe-bash/commands/execution.js +230 -0
  214. package/dist/safe-bash/commands/execution.js.map +1 -0
  215. package/dist/safe-bash/commands/expr/bre-worker.d.ts +3 -0
  216. package/dist/safe-bash/commands/expr/bre-worker.d.ts.map +1 -0
  217. package/dist/safe-bash/commands/expr/bre-worker.js +445 -0
  218. package/dist/safe-bash/commands/expr/bre-worker.js.map +1 -0
  219. package/dist/safe-bash/commands/expr/evaluate.d.ts +15 -0
  220. package/dist/safe-bash/commands/expr/evaluate.d.ts.map +1 -0
  221. package/dist/safe-bash/commands/expr/evaluate.js +150 -0
  222. package/dist/safe-bash/commands/expr/evaluate.js.map +1 -0
  223. package/dist/safe-bash/commands/expr/index.d.ts +7 -0
  224. package/dist/safe-bash/commands/expr/index.d.ts.map +1 -0
  225. package/dist/safe-bash/commands/expr/index.js +86 -0
  226. package/dist/safe-bash/commands/expr/index.js.map +1 -0
  227. package/dist/safe-bash/commands/expr/internal.d.ts +45 -0
  228. package/dist/safe-bash/commands/expr/internal.d.ts.map +1 -0
  229. package/dist/safe-bash/commands/expr/internal.js +145 -0
  230. package/dist/safe-bash/commands/expr/internal.js.map +1 -0
  231. package/dist/safe-bash/commands/expr/syntax.d.ts +4 -0
  232. package/dist/safe-bash/commands/expr/syntax.d.ts.map +1 -0
  233. package/dist/safe-bash/commands/expr/syntax.js +120 -0
  234. package/dist/safe-bash/commands/expr/syntax.js.map +1 -0
  235. package/dist/safe-bash/commands/file/classify.d.ts +8 -0
  236. package/dist/safe-bash/commands/file/classify.d.ts.map +1 -0
  237. package/dist/safe-bash/commands/file/classify.js +125 -0
  238. package/dist/safe-bash/commands/file/classify.js.map +1 -0
  239. package/dist/safe-bash/commands/file/index.d.ts +7 -0
  240. package/dist/safe-bash/commands/file/index.d.ts.map +1 -0
  241. package/dist/safe-bash/commands/file/index.js +257 -0
  242. package/dist/safe-bash/commands/file/index.js.map +1 -0
  243. package/dist/safe-bash/commands/file/shared.d.ts +48 -0
  244. package/dist/safe-bash/commands/file/shared.d.ts.map +1 -0
  245. package/dist/safe-bash/commands/file/shared.js +166 -0
  246. package/dist/safe-bash/commands/file/shared.js.map +1 -0
  247. package/dist/safe-bash/commands/filesystem.d.ts +3 -0
  248. package/dist/safe-bash/commands/filesystem.d.ts.map +1 -0
  249. package/dist/safe-bash/commands/filesystem.js +427 -0
  250. package/dist/safe-bash/commands/filesystem.js.map +1 -0
  251. package/dist/safe-bash/commands/find.d.ts +3 -0
  252. package/dist/safe-bash/commands/find.d.ts.map +1 -0
  253. package/dist/safe-bash/commands/find.js +238 -0
  254. package/dist/safe-bash/commands/find.js.map +1 -0
  255. package/dist/safe-bash/commands/git/arguments.d.ts +17 -0
  256. package/dist/safe-bash/commands/git/arguments.d.ts.map +1 -0
  257. package/dist/safe-bash/commands/git/arguments.js +150 -0
  258. package/dist/safe-bash/commands/git/arguments.js.map +1 -0
  259. package/dist/safe-bash/commands/git/codec.d.ts +8 -0
  260. package/dist/safe-bash/commands/git/codec.d.ts.map +1 -0
  261. package/dist/safe-bash/commands/git/codec.js +225 -0
  262. package/dist/safe-bash/commands/git/codec.js.map +1 -0
  263. package/dist/safe-bash/commands/git/config.d.ts +8 -0
  264. package/dist/safe-bash/commands/git/config.d.ts.map +1 -0
  265. package/dist/safe-bash/commands/git/config.js +100 -0
  266. package/dist/safe-bash/commands/git/config.js.map +1 -0
  267. package/dist/safe-bash/commands/git/crc.d.ts +3 -0
  268. package/dist/safe-bash/commands/git/crc.d.ts.map +1 -0
  269. package/dist/safe-bash/commands/git/crc.js +14 -0
  270. package/dist/safe-bash/commands/git/crc.js.map +1 -0
  271. package/dist/safe-bash/commands/git/delta.d.ts +4 -0
  272. package/dist/safe-bash/commands/git/delta.d.ts.map +1 -0
  273. package/dist/safe-bash/commands/git/delta.js +62 -0
  274. package/dist/safe-bash/commands/git/delta.js.map +1 -0
  275. package/dist/safe-bash/commands/git/diff.d.ts +9 -0
  276. package/dist/safe-bash/commands/git/diff.d.ts.map +1 -0
  277. package/dist/safe-bash/commands/git/diff.js +131 -0
  278. package/dist/safe-bash/commands/git/diff.js.map +1 -0
  279. package/dist/safe-bash/commands/git/ignore.d.ts +22 -0
  280. package/dist/safe-bash/commands/git/ignore.d.ts.map +1 -0
  281. package/dist/safe-bash/commands/git/ignore.js +153 -0
  282. package/dist/safe-bash/commands/git/ignore.js.map +1 -0
  283. package/dist/safe-bash/commands/git/index.d.ts +7 -0
  284. package/dist/safe-bash/commands/git/index.d.ts.map +1 -0
  285. package/dist/safe-bash/commands/git/index.js +66 -0
  286. package/dist/safe-bash/commands/git/index.js.map +1 -0
  287. package/dist/safe-bash/commands/git/io.d.ts +46 -0
  288. package/dist/safe-bash/commands/git/io.d.ts.map +1 -0
  289. package/dist/safe-bash/commands/git/io.js +388 -0
  290. package/dist/safe-bash/commands/git/io.js.map +1 -0
  291. package/dist/safe-bash/commands/git/limits.d.ts +39 -0
  292. package/dist/safe-bash/commands/git/limits.d.ts.map +1 -0
  293. package/dist/safe-bash/commands/git/limits.js +43 -0
  294. package/dist/safe-bash/commands/git/limits.js.map +1 -0
  295. package/dist/safe-bash/commands/git/pack.d.ts +14 -0
  296. package/dist/safe-bash/commands/git/pack.d.ts.map +1 -0
  297. package/dist/safe-bash/commands/git/pack.js +273 -0
  298. package/dist/safe-bash/commands/git/pack.js.map +1 -0
  299. package/dist/safe-bash/commands/git/queries.d.ts +6 -0
  300. package/dist/safe-bash/commands/git/queries.d.ts.map +1 -0
  301. package/dist/safe-bash/commands/git/queries.js +292 -0
  302. package/dist/safe-bash/commands/git/queries.js.map +1 -0
  303. package/dist/safe-bash/commands/git/repository.d.ts +49 -0
  304. package/dist/safe-bash/commands/git/repository.d.ts.map +1 -0
  305. package/dist/safe-bash/commands/git/repository.js +473 -0
  306. package/dist/safe-bash/commands/git/repository.js.map +1 -0
  307. package/dist/safe-bash/commands/grep-aliases/index.d.ts +11 -0
  308. package/dist/safe-bash/commands/grep-aliases/index.d.ts.map +1 -0
  309. package/dist/safe-bash/commands/grep-aliases/index.js +52 -0
  310. package/dist/safe-bash/commands/grep-aliases/index.js.map +1 -0
  311. package/dist/safe-bash/commands/grep.d.ts +4 -0
  312. package/dist/safe-bash/commands/grep.d.ts.map +1 -0
  313. package/dist/safe-bash/commands/grep.js +112 -0
  314. package/dist/safe-bash/commands/grep.js.map +1 -0
  315. package/dist/safe-bash/commands/html-to-markdown/budget.d.ts +34 -0
  316. package/dist/safe-bash/commands/html-to-markdown/budget.d.ts.map +1 -0
  317. package/dist/safe-bash/commands/html-to-markdown/budget.js +94 -0
  318. package/dist/safe-bash/commands/html-to-markdown/budget.js.map +1 -0
  319. package/dist/safe-bash/commands/html-to-markdown/entities.d.ts +5 -0
  320. package/dist/safe-bash/commands/html-to-markdown/entities.d.ts.map +1 -0
  321. package/dist/safe-bash/commands/html-to-markdown/entities.js +126 -0
  322. package/dist/safe-bash/commands/html-to-markdown/entities.js.map +1 -0
  323. package/dist/safe-bash/commands/html-to-markdown/index.d.ts +7 -0
  324. package/dist/safe-bash/commands/html-to-markdown/index.d.ts.map +1 -0
  325. package/dist/safe-bash/commands/html-to-markdown/index.js +91 -0
  326. package/dist/safe-bash/commands/html-to-markdown/index.js.map +1 -0
  327. package/dist/safe-bash/commands/html-to-markdown/input.d.ts +18 -0
  328. package/dist/safe-bash/commands/html-to-markdown/input.d.ts.map +1 -0
  329. package/dist/safe-bash/commands/html-to-markdown/input.js +118 -0
  330. package/dist/safe-bash/commands/html-to-markdown/input.js.map +1 -0
  331. package/dist/safe-bash/commands/html-to-markdown/options.d.ts +28 -0
  332. package/dist/safe-bash/commands/html-to-markdown/options.d.ts.map +1 -0
  333. package/dist/safe-bash/commands/html-to-markdown/options.js +56 -0
  334. package/dist/safe-bash/commands/html-to-markdown/options.js.map +1 -0
  335. package/dist/safe-bash/commands/html-to-markdown/parser.d.ts +31 -0
  336. package/dist/safe-bash/commands/html-to-markdown/parser.d.ts.map +1 -0
  337. package/dist/safe-bash/commands/html-to-markdown/parser.js +293 -0
  338. package/dist/safe-bash/commands/html-to-markdown/parser.js.map +1 -0
  339. package/dist/safe-bash/commands/html-to-markdown/render.d.ts +25 -0
  340. package/dist/safe-bash/commands/html-to-markdown/render.d.ts.map +1 -0
  341. package/dist/safe-bash/commands/html-to-markdown/render.js +445 -0
  342. package/dist/safe-bash/commands/html-to-markdown/render.js.map +1 -0
  343. package/dist/safe-bash/commands/html-to-markdown/text.d.ts +5 -0
  344. package/dist/safe-bash/commands/html-to-markdown/text.d.ts.map +1 -0
  345. package/dist/safe-bash/commands/html-to-markdown/text.js +51 -0
  346. package/dist/safe-bash/commands/html-to-markdown/text.js.map +1 -0
  347. package/dist/safe-bash/commands/index.d.ts +10 -0
  348. package/dist/safe-bash/commands/index.d.ts.map +1 -0
  349. package/dist/safe-bash/commands/index.js +45 -0
  350. package/dist/safe-bash/commands/index.js.map +1 -0
  351. package/dist/safe-bash/commands/internal.d.ts +38 -0
  352. package/dist/safe-bash/commands/internal.d.ts.map +1 -0
  353. package/dist/safe-bash/commands/internal.js +328 -0
  354. package/dist/safe-bash/commands/internal.js.map +1 -0
  355. package/dist/safe-bash/commands/metadata/chmod.d.ts +3 -0
  356. package/dist/safe-bash/commands/metadata/chmod.d.ts.map +1 -0
  357. package/dist/safe-bash/commands/metadata/chmod.js +144 -0
  358. package/dist/safe-bash/commands/metadata/chmod.js.map +1 -0
  359. package/dist/safe-bash/commands/metadata/index.d.ts +6 -0
  360. package/dist/safe-bash/commands/metadata/index.d.ts.map +1 -0
  361. package/dist/safe-bash/commands/metadata/index.js +20 -0
  362. package/dist/safe-bash/commands/metadata/index.js.map +1 -0
  363. package/dist/safe-bash/commands/metadata/internal.d.ts +29 -0
  364. package/dist/safe-bash/commands/metadata/internal.d.ts.map +1 -0
  365. package/dist/safe-bash/commands/metadata/internal.js +67 -0
  366. package/dist/safe-bash/commands/metadata/internal.js.map +1 -0
  367. package/dist/safe-bash/commands/metadata/mktemp.d.ts +3 -0
  368. package/dist/safe-bash/commands/metadata/mktemp.d.ts.map +1 -0
  369. package/dist/safe-bash/commands/metadata/mktemp.js +142 -0
  370. package/dist/safe-bash/commands/metadata/mktemp.js.map +1 -0
  371. package/dist/safe-bash/commands/metadata/stat.d.ts +3 -0
  372. package/dist/safe-bash/commands/metadata/stat.d.ts.map +1 -0
  373. package/dist/safe-bash/commands/metadata/stat.js +245 -0
  374. package/dist/safe-bash/commands/metadata/stat.js.map +1 -0
  375. package/dist/safe-bash/commands/move.d.ts +10 -0
  376. package/dist/safe-bash/commands/move.d.ts.map +1 -0
  377. package/dist/safe-bash/commands/move.js +161 -0
  378. package/dist/safe-bash/commands/move.js.map +1 -0
  379. package/dist/safe-bash/commands/network/args.d.ts +37 -0
  380. package/dist/safe-bash/commands/network/args.d.ts.map +1 -0
  381. package/dist/safe-bash/commands/network/args.js +228 -0
  382. package/dist/safe-bash/commands/network/args.js.map +1 -0
  383. package/dist/safe-bash/commands/network/body.d.ts +10 -0
  384. package/dist/safe-bash/commands/network/body.d.ts.map +1 -0
  385. package/dist/safe-bash/commands/network/body.js +188 -0
  386. package/dist/safe-bash/commands/network/body.js.map +1 -0
  387. package/dist/safe-bash/commands/network/curl.d.ts +4 -0
  388. package/dist/safe-bash/commands/network/curl.d.ts.map +1 -0
  389. package/dist/safe-bash/commands/network/curl.js +404 -0
  390. package/dist/safe-bash/commands/network/curl.js.map +1 -0
  391. package/dist/safe-bash/commands/network/index.d.ts +10 -0
  392. package/dist/safe-bash/commands/network/index.d.ts.map +1 -0
  393. package/dist/safe-bash/commands/network/index.js +22 -0
  394. package/dist/safe-bash/commands/network/index.js.map +1 -0
  395. package/dist/safe-bash/commands/network/output.d.ts +7 -0
  396. package/dist/safe-bash/commands/network/output.d.ts.map +1 -0
  397. package/dist/safe-bash/commands/network/output.js +93 -0
  398. package/dist/safe-bash/commands/network/output.js.map +1 -0
  399. package/dist/safe-bash/commands/network/shared.d.ts +10 -0
  400. package/dist/safe-bash/commands/network/shared.d.ts.map +1 -0
  401. package/dist/safe-bash/commands/network/shared.js +52 -0
  402. package/dist/safe-bash/commands/network/shared.js.map +1 -0
  403. package/dist/safe-bash/commands/network/transport.d.ts +7 -0
  404. package/dist/safe-bash/commands/network/transport.d.ts.map +1 -0
  405. package/dist/safe-bash/commands/network/transport.js +81 -0
  406. package/dist/safe-bash/commands/network/transport.js.map +1 -0
  407. package/dist/safe-bash/commands/network/types.d.ts +49 -0
  408. package/dist/safe-bash/commands/network/types.d.ts.map +1 -0
  409. package/dist/safe-bash/commands/network/types.js +19 -0
  410. package/dist/safe-bash/commands/network/types.js.map +1 -0
  411. package/dist/safe-bash/commands/node/admission.d.ts +8 -0
  412. package/dist/safe-bash/commands/node/admission.d.ts.map +1 -0
  413. package/dist/safe-bash/commands/node/admission.js +557 -0
  414. package/dist/safe-bash/commands/node/admission.js.map +1 -0
  415. package/dist/safe-bash/commands/node/channel.d.ts +31 -0
  416. package/dist/safe-bash/commands/node/channel.d.ts.map +1 -0
  417. package/dist/safe-bash/commands/node/channel.js +58 -0
  418. package/dist/safe-bash/commands/node/channel.js.map +1 -0
  419. package/dist/safe-bash/commands/node/cli.d.ts +9 -0
  420. package/dist/safe-bash/commands/node/cli.d.ts.map +1 -0
  421. package/dist/safe-bash/commands/node/cli.js +55 -0
  422. package/dist/safe-bash/commands/node/cli.js.map +1 -0
  423. package/dist/safe-bash/commands/node/diagnostics.d.ts +8 -0
  424. package/dist/safe-bash/commands/node/diagnostics.d.ts.map +1 -0
  425. package/dist/safe-bash/commands/node/diagnostics.js +48 -0
  426. package/dist/safe-bash/commands/node/diagnostics.js.map +1 -0
  427. package/dist/safe-bash/commands/node/host.d.ts +30 -0
  428. package/dist/safe-bash/commands/node/host.d.ts.map +1 -0
  429. package/dist/safe-bash/commands/node/host.js +411 -0
  430. package/dist/safe-bash/commands/node/host.js.map +1 -0
  431. package/dist/safe-bash/commands/node/index.d.ts +15 -0
  432. package/dist/safe-bash/commands/node/index.d.ts.map +1 -0
  433. package/dist/safe-bash/commands/node/index.js +212 -0
  434. package/dist/safe-bash/commands/node/index.js.map +1 -0
  435. package/dist/safe-bash/commands/node/lifecycle.d.ts +29 -0
  436. package/dist/safe-bash/commands/node/lifecycle.d.ts.map +1 -0
  437. package/dist/safe-bash/commands/node/lifecycle.js +205 -0
  438. package/dist/safe-bash/commands/node/lifecycle.js.map +1 -0
  439. package/dist/safe-bash/commands/node/lower.d.ts +3 -0
  440. package/dist/safe-bash/commands/node/lower.d.ts.map +1 -0
  441. package/dist/safe-bash/commands/node/lower.js +407 -0
  442. package/dist/safe-bash/commands/node/lower.js.map +1 -0
  443. package/dist/safe-bash/commands/node/program.d.ts +3 -0
  444. package/dist/safe-bash/commands/node/program.d.ts.map +1 -0
  445. package/dist/safe-bash/commands/node/program.js +216 -0
  446. package/dist/safe-bash/commands/node/program.js.map +1 -0
  447. package/dist/safe-bash/commands/node/rules.d.ts +2 -0
  448. package/dist/safe-bash/commands/node/rules.d.ts.map +1 -0
  449. package/dist/safe-bash/commands/node/rules.js +134 -0
  450. package/dist/safe-bash/commands/node/rules.js.map +1 -0
  451. package/dist/safe-bash/commands/node/safejs.d.ts +4 -0
  452. package/dist/safe-bash/commands/node/safejs.d.ts.map +1 -0
  453. package/dist/safe-bash/commands/node/safejs.js +79 -0
  454. package/dist/safe-bash/commands/node/safejs.js.map +1 -0
  455. package/dist/safe-bash/commands/node/types.d.ts +143 -0
  456. package/dist/safe-bash/commands/node/types.d.ts.map +1 -0
  457. package/dist/safe-bash/commands/node/types.js +16 -0
  458. package/dist/safe-bash/commands/node/types.js.map +1 -0
  459. package/dist/safe-bash/commands/node/values.d.ts +13 -0
  460. package/dist/safe-bash/commands/node/values.d.ts.map +1 -0
  461. package/dist/safe-bash/commands/node/values.js +128 -0
  462. package/dist/safe-bash/commands/node/values.js.map +1 -0
  463. package/dist/safe-bash/commands/node/worker-main.d.ts +2 -0
  464. package/dist/safe-bash/commands/node/worker-main.d.ts.map +1 -0
  465. package/dist/safe-bash/commands/node/worker-main.js +179 -0
  466. package/dist/safe-bash/commands/node/worker-main.js.map +1 -0
  467. package/dist/safe-bash/commands/node/worker-provider.d.ts +4 -0
  468. package/dist/safe-bash/commands/node/worker-provider.d.ts.map +1 -0
  469. package/dist/safe-bash/commands/node/worker-provider.js +355 -0
  470. package/dist/safe-bash/commands/node/worker-provider.js.map +1 -0
  471. package/dist/safe-bash/commands/node/worker-types.d.ts +30 -0
  472. package/dist/safe-bash/commands/node/worker-types.d.ts.map +1 -0
  473. package/dist/safe-bash/commands/node/worker-types.js +2 -0
  474. package/dist/safe-bash/commands/node/worker-types.js.map +1 -0
  475. package/dist/safe-bash/commands/predicates.d.ts +3 -0
  476. package/dist/safe-bash/commands/predicates.d.ts.map +1 -0
  477. package/dist/safe-bash/commands/predicates.js +151 -0
  478. package/dist/safe-bash/commands/predicates.js.map +1 -0
  479. package/dist/safe-bash/commands/regex-execution/client.d.ts +70 -0
  480. package/dist/safe-bash/commands/regex-execution/client.d.ts.map +1 -0
  481. package/dist/safe-bash/commands/regex-execution/client.js +385 -0
  482. package/dist/safe-bash/commands/regex-execution/client.js.map +1 -0
  483. package/dist/safe-bash/commands/regex-execution/ere/errors.d.ts +22 -0
  484. package/dist/safe-bash/commands/regex-execution/ere/errors.d.ts.map +1 -0
  485. package/dist/safe-bash/commands/regex-execution/ere/errors.js +37 -0
  486. package/dist/safe-bash/commands/regex-execution/ere/errors.js.map +1 -0
  487. package/dist/safe-bash/commands/regex-execution/ere/limits.d.ts +14 -0
  488. package/dist/safe-bash/commands/regex-execution/ere/limits.d.ts.map +1 -0
  489. package/dist/safe-bash/commands/regex-execution/ere/limits.js +87 -0
  490. package/dist/safe-bash/commands/regex-execution/ere/limits.js.map +1 -0
  491. package/dist/safe-bash/commands/regex-execution/ere/matcher.d.ts +4 -0
  492. package/dist/safe-bash/commands/regex-execution/ere/matcher.d.ts.map +1 -0
  493. package/dist/safe-bash/commands/regex-execution/ere/matcher.js +202 -0
  494. package/dist/safe-bash/commands/regex-execution/ere/matcher.js.map +1 -0
  495. package/dist/safe-bash/commands/regex-execution/ere/syntax.d.ts +6 -0
  496. package/dist/safe-bash/commands/regex-execution/ere/syntax.d.ts.map +1 -0
  497. package/dist/safe-bash/commands/regex-execution/ere/syntax.js +291 -0
  498. package/dist/safe-bash/commands/regex-execution/ere/syntax.js.map +1 -0
  499. package/dist/safe-bash/commands/regex-execution/ere/transport/accounting.d.ts +54 -0
  500. package/dist/safe-bash/commands/regex-execution/ere/transport/accounting.d.ts.map +1 -0
  501. package/dist/safe-bash/commands/regex-execution/ere/transport/accounting.js +175 -0
  502. package/dist/safe-bash/commands/regex-execution/ere/transport/accounting.js.map +1 -0
  503. package/dist/safe-bash/commands/regex-execution/ere/transport/owner.d.ts +15 -0
  504. package/dist/safe-bash/commands/regex-execution/ere/transport/owner.d.ts.map +1 -0
  505. package/dist/safe-bash/commands/regex-execution/ere/transport/owner.js +253 -0
  506. package/dist/safe-bash/commands/regex-execution/ere/transport/owner.js.map +1 -0
  507. package/dist/safe-bash/commands/regex-execution/ere/transport/protocol.d.ts +68 -0
  508. package/dist/safe-bash/commands/regex-execution/ere/transport/protocol.d.ts.map +1 -0
  509. package/dist/safe-bash/commands/regex-execution/ere/transport/protocol.js +35 -0
  510. package/dist/safe-bash/commands/regex-execution/ere/transport/protocol.js.map +1 -0
  511. package/dist/safe-bash/commands/regex-execution/ere/transport/root.d.ts +15 -0
  512. package/dist/safe-bash/commands/regex-execution/ere/transport/root.d.ts.map +1 -0
  513. package/dist/safe-bash/commands/regex-execution/ere/transport/root.js +372 -0
  514. package/dist/safe-bash/commands/regex-execution/ere/transport/root.js.map +1 -0
  515. package/dist/safe-bash/commands/regex-execution/ere/transport/validation.d.ts +22 -0
  516. package/dist/safe-bash/commands/regex-execution/ere/transport/validation.d.ts.map +1 -0
  517. package/dist/safe-bash/commands/regex-execution/ere/transport/validation.js +286 -0
  518. package/dist/safe-bash/commands/regex-execution/ere/transport/validation.js.map +1 -0
  519. package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.d.ts +3 -0
  520. package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.d.ts.map +1 -0
  521. package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.js +47 -0
  522. package/dist/safe-bash/commands/regex-execution/ere/transport/wire-engine.js.map +1 -0
  523. package/dist/safe-bash/commands/regex-execution/ere/transport/worker-entry.d.ts +2 -0
  524. package/dist/safe-bash/commands/regex-execution/ere/transport/worker-entry.d.ts.map +1 -0
  525. package/dist/safe-bash/commands/regex-execution/ere/transport/worker-entry.js +32 -0
  526. package/dist/safe-bash/commands/regex-execution/ere/transport/worker-entry.js.map +1 -0
  527. package/dist/safe-bash/commands/regex-execution/ere/types.d.ts +56 -0
  528. package/dist/safe-bash/commands/regex-execution/ere/types.d.ts.map +1 -0
  529. package/dist/safe-bash/commands/regex-execution/ere/types.js +2 -0
  530. package/dist/safe-bash/commands/regex-execution/ere/types.js.map +1 -0
  531. package/dist/safe-bash/commands/regex-execution/matching.d.ts +3 -0
  532. package/dist/safe-bash/commands/regex-execution/matching.d.ts.map +1 -0
  533. package/dist/safe-bash/commands/regex-execution/matching.js +321 -0
  534. package/dist/safe-bash/commands/regex-execution/matching.js.map +1 -0
  535. package/dist/safe-bash/commands/regex-execution/protocol.d.ts +116 -0
  536. package/dist/safe-bash/commands/regex-execution/protocol.d.ts.map +1 -0
  537. package/dist/safe-bash/commands/regex-execution/protocol.js +159 -0
  538. package/dist/safe-bash/commands/regex-execution/protocol.js.map +1 -0
  539. package/dist/safe-bash/commands/regex-execution/worker.d.ts +2 -0
  540. package/dist/safe-bash/commands/regex-execution/worker.d.ts.map +1 -0
  541. package/dist/safe-bash/commands/regex-execution/worker.js +52 -0
  542. package/dist/safe-bash/commands/regex-execution/worker.js.map +1 -0
  543. package/dist/safe-bash/commands/safejs/index.d.ts +18 -0
  544. package/dist/safe-bash/commands/safejs/index.d.ts.map +1 -0
  545. package/dist/safe-bash/commands/safejs/index.js +184 -0
  546. package/dist/safe-bash/commands/safejs/index.js.map +1 -0
  547. package/dist/safe-bash/commands/safejs/io.d.ts +36 -0
  548. package/dist/safe-bash/commands/safejs/io.d.ts.map +1 -0
  549. package/dist/safe-bash/commands/safejs/io.js +127 -0
  550. package/dist/safe-bash/commands/safejs/io.js.map +1 -0
  551. package/dist/safe-bash/commands/safejs/options.d.ts +12 -0
  552. package/dist/safe-bash/commands/safejs/options.d.ts.map +1 -0
  553. package/dist/safe-bash/commands/safejs/options.js +46 -0
  554. package/dist/safe-bash/commands/safejs/options.js.map +1 -0
  555. package/dist/safe-bash/commands/safejs/render.d.ts +2 -0
  556. package/dist/safe-bash/commands/safejs/render.d.ts.map +1 -0
  557. package/dist/safe-bash/commands/safejs/render.js +100 -0
  558. package/dist/safe-bash/commands/safejs/render.js.map +1 -0
  559. package/dist/safe-bash/commands/safejs/types.d.ts +64 -0
  560. package/dist/safe-bash/commands/safejs/types.d.ts.map +1 -0
  561. package/dist/safe-bash/commands/safejs/types.js +10 -0
  562. package/dist/safe-bash/commands/safejs/types.js.map +1 -0
  563. package/dist/safe-bash/commands/search/glob.d.ts +21 -0
  564. package/dist/safe-bash/commands/search/glob.d.ts.map +1 -0
  565. package/dist/safe-bash/commands/search/glob.js +79 -0
  566. package/dist/safe-bash/commands/search/glob.js.map +1 -0
  567. package/dist/safe-bash/commands/search/index.d.ts +6 -0
  568. package/dist/safe-bash/commands/search/index.d.ts.map +1 -0
  569. package/dist/safe-bash/commands/search/index.js +20 -0
  570. package/dist/safe-bash/commands/search/index.js.map +1 -0
  571. package/dist/safe-bash/commands/search/matcher.d.ts +12 -0
  572. package/dist/safe-bash/commands/search/matcher.d.ts.map +1 -0
  573. package/dist/safe-bash/commands/search/matcher.js +24 -0
  574. package/dist/safe-bash/commands/search/matcher.js.map +1 -0
  575. package/dist/safe-bash/commands/search/options.d.ts +56 -0
  576. package/dist/safe-bash/commands/search/options.d.ts.map +1 -0
  577. package/dist/safe-bash/commands/search/options.js +307 -0
  578. package/dist/safe-bash/commands/search/options.js.map +1 -0
  579. package/dist/safe-bash/commands/search/output.d.ts +37 -0
  580. package/dist/safe-bash/commands/search/output.d.ts.map +1 -0
  581. package/dist/safe-bash/commands/search/output.js +63 -0
  582. package/dist/safe-bash/commands/search/output.js.map +1 -0
  583. package/dist/safe-bash/commands/search/rg.d.ts +4 -0
  584. package/dist/safe-bash/commands/search/rg.d.ts.map +1 -0
  585. package/dist/safe-bash/commands/search/rg.js +219 -0
  586. package/dist/safe-bash/commands/search/rg.js.map +1 -0
  587. package/dist/safe-bash/commands/search/shared.d.ts +37 -0
  588. package/dist/safe-bash/commands/search/shared.d.ts.map +1 -0
  589. package/dist/safe-bash/commands/search/shared.js +111 -0
  590. package/dist/safe-bash/commands/search/shared.js.map +1 -0
  591. package/dist/safe-bash/commands/search/walk.d.ts +28 -0
  592. package/dist/safe-bash/commands/search/walk.d.ts.map +1 -0
  593. package/dist/safe-bash/commands/search/walk.js +201 -0
  594. package/dist/safe-bash/commands/search/walk.js.map +1 -0
  595. package/dist/safe-bash/commands/split/index.d.ts +6 -0
  596. package/dist/safe-bash/commands/split/index.d.ts.map +1 -0
  597. package/dist/safe-bash/commands/split/index.js +18 -0
  598. package/dist/safe-bash/commands/split/index.js.map +1 -0
  599. package/dist/safe-bash/commands/split/io.d.ts +28 -0
  600. package/dist/safe-bash/commands/split/io.d.ts.map +1 -0
  601. package/dist/safe-bash/commands/split/io.js +101 -0
  602. package/dist/safe-bash/commands/split/io.js.map +1 -0
  603. package/dist/safe-bash/commands/split/names.d.ts +11 -0
  604. package/dist/safe-bash/commands/split/names.d.ts.map +1 -0
  605. package/dist/safe-bash/commands/split/names.js +42 -0
  606. package/dist/safe-bash/commands/split/names.js.map +1 -0
  607. package/dist/safe-bash/commands/split/options.d.ts +28 -0
  608. package/dist/safe-bash/commands/split/options.d.ts.map +1 -0
  609. package/dist/safe-bash/commands/split/options.js +130 -0
  610. package/dist/safe-bash/commands/split/options.js.map +1 -0
  611. package/dist/safe-bash/commands/split/outputs.d.ts +19 -0
  612. package/dist/safe-bash/commands/split/outputs.d.ts.map +1 -0
  613. package/dist/safe-bash/commands/split/outputs.js +105 -0
  614. package/dist/safe-bash/commands/split/outputs.js.map +1 -0
  615. package/dist/safe-bash/commands/split/split.d.ts +4 -0
  616. package/dist/safe-bash/commands/split/split.d.ts.map +1 -0
  617. package/dist/safe-bash/commands/split/split.js +146 -0
  618. package/dist/safe-bash/commands/split/split.js.map +1 -0
  619. package/dist/safe-bash/commands/stream-format/index.d.ts +6 -0
  620. package/dist/safe-bash/commands/stream-format/index.d.ts.map +1 -0
  621. package/dist/safe-bash/commands/stream-format/index.js +22 -0
  622. package/dist/safe-bash/commands/stream-format/index.js.map +1 -0
  623. package/dist/safe-bash/commands/stream-format/nl.d.ts +4 -0
  624. package/dist/safe-bash/commands/stream-format/nl.d.ts.map +1 -0
  625. package/dist/safe-bash/commands/stream-format/nl.js +96 -0
  626. package/dist/safe-bash/commands/stream-format/nl.js.map +1 -0
  627. package/dist/safe-bash/commands/stream-format/rev.d.ts +4 -0
  628. package/dist/safe-bash/commands/stream-format/rev.d.ts.map +1 -0
  629. package/dist/safe-bash/commands/stream-format/rev.js +65 -0
  630. package/dist/safe-bash/commands/stream-format/rev.js.map +1 -0
  631. package/dist/safe-bash/commands/stream-format/seq.d.ts +4 -0
  632. package/dist/safe-bash/commands/stream-format/seq.d.ts.map +1 -0
  633. package/dist/safe-bash/commands/stream-format/seq.js +249 -0
  634. package/dist/safe-bash/commands/stream-format/seq.js.map +1 -0
  635. package/dist/safe-bash/commands/stream-format/shared.d.ts +49 -0
  636. package/dist/safe-bash/commands/stream-format/shared.d.ts.map +1 -0
  637. package/dist/safe-bash/commands/stream-format/shared.js +209 -0
  638. package/dist/safe-bash/commands/stream-format/shared.js.map +1 -0
  639. package/dist/safe-bash/commands/stream-format/unexpand.d.ts +4 -0
  640. package/dist/safe-bash/commands/stream-format/unexpand.d.ts.map +1 -0
  641. package/dist/safe-bash/commands/stream-format/unexpand.js +130 -0
  642. package/dist/safe-bash/commands/stream-format/unexpand.js.map +1 -0
  643. package/dist/safe-bash/commands/stream-inspection/expand.d.ts +4 -0
  644. package/dist/safe-bash/commands/stream-inspection/expand.d.ts.map +1 -0
  645. package/dist/safe-bash/commands/stream-inspection/expand.js +100 -0
  646. package/dist/safe-bash/commands/stream-inspection/expand.js.map +1 -0
  647. package/dist/safe-bash/commands/stream-inspection/fold.d.ts +4 -0
  648. package/dist/safe-bash/commands/stream-inspection/fold.d.ts.map +1 -0
  649. package/dist/safe-bash/commands/stream-inspection/fold.js +55 -0
  650. package/dist/safe-bash/commands/stream-inspection/fold.js.map +1 -0
  651. package/dist/safe-bash/commands/stream-inspection/index.d.ts +6 -0
  652. package/dist/safe-bash/commands/stream-inspection/index.d.ts.map +1 -0
  653. package/dist/safe-bash/commands/stream-inspection/index.js +22 -0
  654. package/dist/safe-bash/commands/stream-inspection/index.js.map +1 -0
  655. package/dist/safe-bash/commands/stream-inspection/numeric-options.d.ts +5 -0
  656. package/dist/safe-bash/commands/stream-inspection/numeric-options.d.ts.map +1 -0
  657. package/dist/safe-bash/commands/stream-inspection/numeric-options.js +53 -0
  658. package/dist/safe-bash/commands/stream-inspection/numeric-options.js.map +1 -0
  659. package/dist/safe-bash/commands/stream-inspection/shared.d.ts +55 -0
  660. package/dist/safe-bash/commands/stream-inspection/shared.d.ts.map +1 -0
  661. package/dist/safe-bash/commands/stream-inspection/shared.js +202 -0
  662. package/dist/safe-bash/commands/stream-inspection/shared.js.map +1 -0
  663. package/dist/safe-bash/commands/stream-inspection/strings.d.ts +4 -0
  664. package/dist/safe-bash/commands/stream-inspection/strings.d.ts.map +1 -0
  665. package/dist/safe-bash/commands/stream-inspection/strings.js +54 -0
  666. package/dist/safe-bash/commands/stream-inspection/strings.js.map +1 -0
  667. package/dist/safe-bash/commands/stream-inspection/tac.d.ts +4 -0
  668. package/dist/safe-bash/commands/stream-inspection/tac.d.ts.map +1 -0
  669. package/dist/safe-bash/commands/stream-inspection/tac.js +54 -0
  670. package/dist/safe-bash/commands/stream-inspection/tac.js.map +1 -0
  671. package/dist/safe-bash/commands/streams.d.ts +3 -0
  672. package/dist/safe-bash/commands/streams.d.ts.map +1 -0
  673. package/dist/safe-bash/commands/streams.js +477 -0
  674. package/dist/safe-bash/commands/streams.js.map +1 -0
  675. package/dist/safe-bash/commands/structured/index.d.ts +7 -0
  676. package/dist/safe-bash/commands/structured/index.d.ts.map +1 -0
  677. package/dist/safe-bash/commands/structured/index.js +21 -0
  678. package/dist/safe-bash/commands/structured/index.js.map +1 -0
  679. package/dist/safe-bash/commands/structured/input.d.ts +18 -0
  680. package/dist/safe-bash/commands/structured/input.d.ts.map +1 -0
  681. package/dist/safe-bash/commands/structured/input.js +438 -0
  682. package/dist/safe-bash/commands/structured/input.js.map +1 -0
  683. package/dist/safe-bash/commands/structured/interpreter.d.ts +21 -0
  684. package/dist/safe-bash/commands/structured/interpreter.d.ts.map +1 -0
  685. package/dist/safe-bash/commands/structured/interpreter.js +644 -0
  686. package/dist/safe-bash/commands/structured/interpreter.js.map +1 -0
  687. package/dist/safe-bash/commands/structured/jq.d.ts +4 -0
  688. package/dist/safe-bash/commands/structured/jq.d.ts.map +1 -0
  689. package/dist/safe-bash/commands/structured/jq.js +278 -0
  690. package/dist/safe-bash/commands/structured/jq.js.map +1 -0
  691. package/dist/safe-bash/commands/structured/limits.d.ts +61 -0
  692. package/dist/safe-bash/commands/structured/limits.d.ts.map +1 -0
  693. package/dist/safe-bash/commands/structured/limits.js +162 -0
  694. package/dist/safe-bash/commands/structured/limits.js.map +1 -0
  695. package/dist/safe-bash/commands/structured/numbers.d.ts +17 -0
  696. package/dist/safe-bash/commands/structured/numbers.d.ts.map +1 -0
  697. package/dist/safe-bash/commands/structured/numbers.js +143 -0
  698. package/dist/safe-bash/commands/structured/numbers.js.map +1 -0
  699. package/dist/safe-bash/commands/structured/parser.d.ts +54 -0
  700. package/dist/safe-bash/commands/structured/parser.d.ts.map +1 -0
  701. package/dist/safe-bash/commands/structured/parser.js +320 -0
  702. package/dist/safe-bash/commands/structured/parser.js.map +1 -0
  703. package/dist/safe-bash/commands/structured/split.d.ts +3 -0
  704. package/dist/safe-bash/commands/structured/split.d.ts.map +1 -0
  705. package/dist/safe-bash/commands/structured/split.js +65 -0
  706. package/dist/safe-bash/commands/structured/split.js.map +1 -0
  707. package/dist/safe-bash/commands/structured/values.d.ts +12 -0
  708. package/dist/safe-bash/commands/structured/values.d.ts.map +1 -0
  709. package/dist/safe-bash/commands/structured/values.js +213 -0
  710. package/dist/safe-bash/commands/structured/values.js.map +1 -0
  711. package/dist/safe-bash/commands/table-text/comm.d.ts +4 -0
  712. package/dist/safe-bash/commands/table-text/comm.d.ts.map +1 -0
  713. package/dist/safe-bash/commands/table-text/comm.js +101 -0
  714. package/dist/safe-bash/commands/table-text/comm.js.map +1 -0
  715. package/dist/safe-bash/commands/table-text/index.d.ts +6 -0
  716. package/dist/safe-bash/commands/table-text/index.d.ts.map +1 -0
  717. package/dist/safe-bash/commands/table-text/index.js +21 -0
  718. package/dist/safe-bash/commands/table-text/index.js.map +1 -0
  719. package/dist/safe-bash/commands/table-text/internal.d.ts +73 -0
  720. package/dist/safe-bash/commands/table-text/internal.d.ts.map +1 -0
  721. package/dist/safe-bash/commands/table-text/internal.js +223 -0
  722. package/dist/safe-bash/commands/table-text/internal.js.map +1 -0
  723. package/dist/safe-bash/commands/table-text/join.d.ts +4 -0
  724. package/dist/safe-bash/commands/table-text/join.d.ts.map +1 -0
  725. package/dist/safe-bash/commands/table-text/join.js +252 -0
  726. package/dist/safe-bash/commands/table-text/join.js.map +1 -0
  727. package/dist/safe-bash/commands/table-text/paste.d.ts +4 -0
  728. package/dist/safe-bash/commands/table-text/paste.d.ts.map +1 -0
  729. package/dist/safe-bash/commands/table-text/paste.js +125 -0
  730. package/dist/safe-bash/commands/table-text/paste.js.map +1 -0
  731. package/dist/safe-bash/commands/text-programs/awk-runtime.d.ts +45 -0
  732. package/dist/safe-bash/commands/text-programs/awk-runtime.d.ts.map +1 -0
  733. package/dist/safe-bash/commands/text-programs/awk-runtime.js +679 -0
  734. package/dist/safe-bash/commands/text-programs/awk-runtime.js.map +1 -0
  735. package/dist/safe-bash/commands/text-programs/awk-syntax.d.ts +141 -0
  736. package/dist/safe-bash/commands/text-programs/awk-syntax.d.ts.map +1 -0
  737. package/dist/safe-bash/commands/text-programs/awk-syntax.js +495 -0
  738. package/dist/safe-bash/commands/text-programs/awk-syntax.js.map +1 -0
  739. package/dist/safe-bash/commands/text-programs/awk-values.d.ts +29 -0
  740. package/dist/safe-bash/commands/text-programs/awk-values.d.ts.map +1 -0
  741. package/dist/safe-bash/commands/text-programs/awk-values.js +155 -0
  742. package/dist/safe-bash/commands/text-programs/awk-values.js.map +1 -0
  743. package/dist/safe-bash/commands/text-programs/awk.d.ts +4 -0
  744. package/dist/safe-bash/commands/text-programs/awk.d.ts.map +1 -0
  745. package/dist/safe-bash/commands/text-programs/awk.js +45 -0
  746. package/dist/safe-bash/commands/text-programs/awk.js.map +1 -0
  747. package/dist/safe-bash/commands/text-programs/index.d.ts +6 -0
  748. package/dist/safe-bash/commands/text-programs/index.d.ts.map +1 -0
  749. package/dist/safe-bash/commands/text-programs/index.js +21 -0
  750. package/dist/safe-bash/commands/text-programs/index.js.map +1 -0
  751. package/dist/safe-bash/commands/text-programs/regex.d.ts +19 -0
  752. package/dist/safe-bash/commands/text-programs/regex.d.ts.map +1 -0
  753. package/dist/safe-bash/commands/text-programs/regex.js +387 -0
  754. package/dist/safe-bash/commands/text-programs/regex.js.map +1 -0
  755. package/dist/safe-bash/commands/text-programs/sed.d.ts +4 -0
  756. package/dist/safe-bash/commands/text-programs/sed.d.ts.map +1 -0
  757. package/dist/safe-bash/commands/text-programs/sed.js +602 -0
  758. package/dist/safe-bash/commands/text-programs/sed.js.map +1 -0
  759. package/dist/safe-bash/commands/text-programs/shared.d.ts +33 -0
  760. package/dist/safe-bash/commands/text-programs/shared.d.ts.map +1 -0
  761. package/dist/safe-bash/commands/text-programs/shared.js +102 -0
  762. package/dist/safe-bash/commands/text-programs/shared.js.map +1 -0
  763. package/dist/safe-bash/commands/text.d.ts +3 -0
  764. package/dist/safe-bash/commands/text.d.ts.map +1 -0
  765. package/dist/safe-bash/commands/text.js +428 -0
  766. package/dist/safe-bash/commands/text.js.map +1 -0
  767. package/dist/safe-bash/commands/time-env/calendar.d.ts +30 -0
  768. package/dist/safe-bash/commands/time-env/calendar.d.ts.map +1 -0
  769. package/dist/safe-bash/commands/time-env/calendar.js +184 -0
  770. package/dist/safe-bash/commands/time-env/calendar.js.map +1 -0
  771. package/dist/safe-bash/commands/time-env/date.d.ts +3 -0
  772. package/dist/safe-bash/commands/time-env/date.d.ts.map +1 -0
  773. package/dist/safe-bash/commands/time-env/date.js +149 -0
  774. package/dist/safe-bash/commands/time-env/date.js.map +1 -0
  775. package/dist/safe-bash/commands/time-env/format.d.ts +4 -0
  776. package/dist/safe-bash/commands/time-env/format.d.ts.map +1 -0
  777. package/dist/safe-bash/commands/time-env/format.js +247 -0
  778. package/dist/safe-bash/commands/time-env/format.js.map +1 -0
  779. package/dist/safe-bash/commands/time-env/index.d.ts +6 -0
  780. package/dist/safe-bash/commands/time-env/index.d.ts.map +1 -0
  781. package/dist/safe-bash/commands/time-env/index.js +21 -0
  782. package/dist/safe-bash/commands/time-env/index.js.map +1 -0
  783. package/dist/safe-bash/commands/time-env/printenv.d.ts +3 -0
  784. package/dist/safe-bash/commands/time-env/printenv.d.ts.map +1 -0
  785. package/dist/safe-bash/commands/time-env/printenv.js +59 -0
  786. package/dist/safe-bash/commands/time-env/printenv.js.map +1 -0
  787. package/dist/safe-bash/commands/time-env/shared.d.ts +38 -0
  788. package/dist/safe-bash/commands/time-env/shared.d.ts.map +1 -0
  789. package/dist/safe-bash/commands/time-env/shared.js +68 -0
  790. package/dist/safe-bash/commands/time-env/shared.js.map +1 -0
  791. package/dist/safe-bash/commands/time-env/sleep.d.ts +3 -0
  792. package/dist/safe-bash/commands/time-env/sleep.d.ts.map +1 -0
  793. package/dist/safe-bash/commands/time-env/sleep.js +150 -0
  794. package/dist/safe-bash/commands/time-env/sleep.js.map +1 -0
  795. package/dist/safe-bash/commands/timeout/duration.d.ts +10 -0
  796. package/dist/safe-bash/commands/timeout/duration.d.ts.map +1 -0
  797. package/dist/safe-bash/commands/timeout/duration.js +82 -0
  798. package/dist/safe-bash/commands/timeout/duration.js.map +1 -0
  799. package/dist/safe-bash/commands/timeout/index.d.ts +18 -0
  800. package/dist/safe-bash/commands/timeout/index.d.ts.map +1 -0
  801. package/dist/safe-bash/commands/timeout/index.js +218 -0
  802. package/dist/safe-bash/commands/timeout/index.js.map +1 -0
  803. package/dist/safe-bash/commands/timeout/scheduler.d.ts +17 -0
  804. package/dist/safe-bash/commands/timeout/scheduler.d.ts.map +1 -0
  805. package/dist/safe-bash/commands/timeout/scheduler.js +110 -0
  806. package/dist/safe-bash/commands/timeout/scheduler.js.map +1 -0
  807. package/dist/safe-bash/commands/tree/arguments.d.ts +24 -0
  808. package/dist/safe-bash/commands/tree/arguments.d.ts.map +1 -0
  809. package/dist/safe-bash/commands/tree/arguments.js +125 -0
  810. package/dist/safe-bash/commands/tree/arguments.js.map +1 -0
  811. package/dist/safe-bash/commands/tree/charset.d.ts +5 -0
  812. package/dist/safe-bash/commands/tree/charset.d.ts.map +1 -0
  813. package/dist/safe-bash/commands/tree/charset.js +36 -0
  814. package/dist/safe-bash/commands/tree/charset.js.map +1 -0
  815. package/dist/safe-bash/commands/tree/index.d.ts +7 -0
  816. package/dist/safe-bash/commands/tree/index.d.ts.map +1 -0
  817. package/dist/safe-bash/commands/tree/index.js +19 -0
  818. package/dist/safe-bash/commands/tree/index.js.map +1 -0
  819. package/dist/safe-bash/commands/tree/io.d.ts +28 -0
  820. package/dist/safe-bash/commands/tree/io.d.ts.map +1 -0
  821. package/dist/safe-bash/commands/tree/io.js +95 -0
  822. package/dist/safe-bash/commands/tree/io.js.map +1 -0
  823. package/dist/safe-bash/commands/tree/options.d.ts +17 -0
  824. package/dist/safe-bash/commands/tree/options.d.ts.map +1 -0
  825. package/dist/safe-bash/commands/tree/options.js +14 -0
  826. package/dist/safe-bash/commands/tree/options.js.map +1 -0
  827. package/dist/safe-bash/commands/tree/pattern.d.ts +10 -0
  828. package/dist/safe-bash/commands/tree/pattern.d.ts.map +1 -0
  829. package/dist/safe-bash/commands/tree/pattern.js +90 -0
  830. package/dist/safe-bash/commands/tree/pattern.js.map +1 -0
  831. package/dist/safe-bash/commands/tree/tree.d.ts +4 -0
  832. package/dist/safe-bash/commands/tree/tree.d.ts.map +1 -0
  833. package/dist/safe-bash/commands/tree/tree.js +242 -0
  834. package/dist/safe-bash/commands/tree/tree.js.map +1 -0
  835. package/dist/safe-bash/commands/which/index.d.ts +7 -0
  836. package/dist/safe-bash/commands/which/index.d.ts.map +1 -0
  837. package/dist/safe-bash/commands/which/index.js +22 -0
  838. package/dist/safe-bash/commands/which/index.js.map +1 -0
  839. package/dist/safe-bash/commands/which/options.d.ts +15 -0
  840. package/dist/safe-bash/commands/which/options.d.ts.map +1 -0
  841. package/dist/safe-bash/commands/which/options.js +24 -0
  842. package/dist/safe-bash/commands/which/options.js.map +1 -0
  843. package/dist/safe-bash/commands/which/which.d.ts +4 -0
  844. package/dist/safe-bash/commands/which/which.d.ts.map +1 -0
  845. package/dist/safe-bash/commands/which/which.js +284 -0
  846. package/dist/safe-bash/commands/which/which.js.map +1 -0
  847. package/dist/safe-bash/contracts/command.d.ts +67 -0
  848. package/dist/safe-bash/contracts/command.d.ts.map +1 -0
  849. package/dist/safe-bash/contracts/command.js +209 -0
  850. package/dist/safe-bash/contracts/command.js.map +1 -0
  851. package/dist/safe-bash/contracts/errors.d.ts +3 -0
  852. package/dist/safe-bash/contracts/errors.d.ts.map +1 -0
  853. package/dist/safe-bash/contracts/errors.js +2 -0
  854. package/dist/safe-bash/contracts/errors.js.map +1 -0
  855. package/dist/safe-bash/contracts/filesystem.d.ts +3 -0
  856. package/dist/safe-bash/contracts/filesystem.d.ts.map +1 -0
  857. package/dist/safe-bash/contracts/filesystem.js +2 -0
  858. package/dist/safe-bash/contracts/filesystem.js.map +1 -0
  859. package/dist/safe-bash/contracts/index.d.ts +8 -0
  860. package/dist/safe-bash/contracts/index.d.ts.map +1 -0
  861. package/dist/safe-bash/contracts/index.js +8 -0
  862. package/dist/safe-bash/contracts/index.js.map +1 -0
  863. package/dist/safe-bash/contracts/io.d.ts +26 -0
  864. package/dist/safe-bash/contracts/io.d.ts.map +1 -0
  865. package/dist/safe-bash/contracts/io.js +154 -0
  866. package/dist/safe-bash/contracts/io.js.map +1 -0
  867. package/dist/safe-bash/contracts/output.d.ts +12 -0
  868. package/dist/safe-bash/contracts/output.d.ts.map +1 -0
  869. package/dist/safe-bash/contracts/output.js +126 -0
  870. package/dist/safe-bash/contracts/output.js.map +1 -0
  871. package/dist/safe-bash/contracts/path.d.ts +2 -0
  872. package/dist/safe-bash/contracts/path.d.ts.map +1 -0
  873. package/dist/safe-bash/contracts/path.js +2 -0
  874. package/dist/safe-bash/contracts/path.js.map +1 -0
  875. package/dist/safe-bash/contracts/plugin.d.ts +16 -0
  876. package/dist/safe-bash/contracts/plugin.d.ts.map +1 -0
  877. package/dist/safe-bash/contracts/plugin.js +47 -0
  878. package/dist/safe-bash/contracts/plugin.js.map +1 -0
  879. package/dist/safe-bash/contracts/value.d.ts +21 -0
  880. package/dist/safe-bash/contracts/value.d.ts.map +1 -0
  881. package/dist/safe-bash/contracts/value.js +203 -0
  882. package/dist/safe-bash/contracts/value.js.map +1 -0
  883. package/dist/safe-bash/fs/memory/index.d.ts +2 -0
  884. package/dist/safe-bash/fs/memory/index.d.ts.map +1 -0
  885. package/dist/safe-bash/fs/memory/index.js +2 -0
  886. package/dist/safe-bash/fs/memory/index.js.map +1 -0
  887. package/dist/safe-bash/fs/mount/index.d.ts +3 -0
  888. package/dist/safe-bash/fs/mount/index.d.ts.map +1 -0
  889. package/dist/safe-bash/fs/mount/index.js +2 -0
  890. package/dist/safe-bash/fs/mount/index.js.map +1 -0
  891. package/dist/safe-bash/fs/overlay/index.d.ts +3 -0
  892. package/dist/safe-bash/fs/overlay/index.d.ts.map +1 -0
  893. package/dist/safe-bash/fs/overlay/index.js +2 -0
  894. package/dist/safe-bash/fs/overlay/index.js.map +1 -0
  895. package/dist/safe-bash/fs/readonly/index.d.ts +2 -0
  896. package/dist/safe-bash/fs/readonly/index.d.ts.map +1 -0
  897. package/dist/safe-bash/fs/readonly/index.js +2 -0
  898. package/dist/safe-bash/fs/readonly/index.js.map +1 -0
  899. package/dist/safe-bash/fs/real/index.d.ts +3 -0
  900. package/dist/safe-bash/fs/real/index.d.ts.map +1 -0
  901. package/dist/safe-bash/fs/real/index.js +2 -0
  902. package/dist/safe-bash/fs/real/index.js.map +1 -0
  903. package/dist/safe-bash/fs/s3/http/index.d.ts +3 -0
  904. package/dist/safe-bash/fs/s3/http/index.d.ts.map +1 -0
  905. package/dist/safe-bash/fs/s3/http/index.js +2 -0
  906. package/dist/safe-bash/fs/s3/http/index.js.map +1 -0
  907. package/dist/safe-bash/fs/s3/index.d.ts +3 -0
  908. package/dist/safe-bash/fs/s3/index.d.ts.map +1 -0
  909. package/dist/safe-bash/fs/s3/index.js +2 -0
  910. package/dist/safe-bash/fs/s3/index.js.map +1 -0
  911. package/dist/safe-bash/fs/webdav/index.d.ts +3 -0
  912. package/dist/safe-bash/fs/webdav/index.d.ts.map +1 -0
  913. package/dist/safe-bash/fs/webdav/index.js +2 -0
  914. package/dist/safe-bash/fs/webdav/index.js.map +1 -0
  915. package/dist/safe-bash/index.d.ts +40 -0
  916. package/dist/safe-bash/index.d.ts.map +1 -0
  917. package/dist/safe-bash/index.js +39 -0
  918. package/dist/safe-bash/index.js.map +1 -0
  919. package/dist/safe-bash/integrations/safejs/filesystem.d.ts +7 -0
  920. package/dist/safe-bash/integrations/safejs/filesystem.d.ts.map +1 -0
  921. package/dist/safe-bash/integrations/safejs/filesystem.js +5 -0
  922. package/dist/safe-bash/integrations/safejs/filesystem.js.map +1 -0
  923. package/dist/safe-bash/integrations/safejs/index.d.ts +5 -0
  924. package/dist/safe-bash/integrations/safejs/index.d.ts.map +1 -0
  925. package/dist/safe-bash/integrations/safejs/index.js +3 -0
  926. package/dist/safe-bash/integrations/safejs/index.js.map +1 -0
  927. package/dist/safe-bash/integrations/safejs/shell.d.ts +31 -0
  928. package/dist/safe-bash/integrations/safejs/shell.d.ts.map +1 -0
  929. package/dist/safe-bash/integrations/safejs/shell.js +53 -0
  930. package/dist/safe-bash/integrations/safejs/shell.js.map +1 -0
  931. package/dist/safe-bash/integrations/safejs/values.d.ts +8 -0
  932. package/dist/safe-bash/integrations/safejs/values.d.ts.map +1 -0
  933. package/dist/safe-bash/integrations/safejs/values.js +71 -0
  934. package/dist/safe-bash/integrations/safejs/values.js.map +1 -0
  935. package/dist/safe-bash/plugins/index.d.ts +50 -0
  936. package/dist/safe-bash/plugins/index.d.ts.map +1 -0
  937. package/dist/safe-bash/plugins/index.js +63 -0
  938. package/dist/safe-bash/plugins/index.js.map +1 -0
  939. package/dist/safe-bash/shell/arithmetic-parameters.d.ts +14 -0
  940. package/dist/safe-bash/shell/arithmetic-parameters.d.ts.map +1 -0
  941. package/dist/safe-bash/shell/arithmetic-parameters.js +156 -0
  942. package/dist/safe-bash/shell/arithmetic-parameters.js.map +1 -0
  943. package/dist/safe-bash/shell/arithmetic.d.ts +35 -0
  944. package/dist/safe-bash/shell/arithmetic.d.ts.map +1 -0
  945. package/dist/safe-bash/shell/arithmetic.js +265 -0
  946. package/dist/safe-bash/shell/arithmetic.js.map +1 -0
  947. package/dist/safe-bash/shell/arrays/bindings.d.ts +83 -0
  948. package/dist/safe-bash/shell/arrays/bindings.d.ts.map +1 -0
  949. package/dist/safe-bash/shell/arrays/bindings.js +284 -0
  950. package/dist/safe-bash/shell/arrays/bindings.js.map +1 -0
  951. package/dist/safe-bash/shell/arrays/ledger.d.ts +73 -0
  952. package/dist/safe-bash/shell/arrays/ledger.d.ts.map +1 -0
  953. package/dist/safe-bash/shell/arrays/ledger.js +270 -0
  954. package/dist/safe-bash/shell/arrays/ledger.js.map +1 -0
  955. package/dist/safe-bash/shell/arrays/state.d.ts +75 -0
  956. package/dist/safe-bash/shell/arrays/state.d.ts.map +1 -0
  957. package/dist/safe-bash/shell/arrays/state.js +444 -0
  958. package/dist/safe-bash/shell/arrays/state.js.map +1 -0
  959. package/dist/safe-bash/shell/arrays/syntax.d.ts +47 -0
  960. package/dist/safe-bash/shell/arrays/syntax.d.ts.map +1 -0
  961. package/dist/safe-bash/shell/arrays/syntax.js +122 -0
  962. package/dist/safe-bash/shell/arrays/syntax.js.map +1 -0
  963. package/dist/safe-bash/shell/cancellation.d.ts +129 -0
  964. package/dist/safe-bash/shell/cancellation.d.ts.map +1 -0
  965. package/dist/safe-bash/shell/cancellation.js +703 -0
  966. package/dist/safe-bash/shell/cancellation.js.map +1 -0
  967. package/dist/safe-bash/shell/cleanup.d.ts +19 -0
  968. package/dist/safe-bash/shell/cleanup.d.ts.map +1 -0
  969. package/dist/safe-bash/shell/cleanup.js +83 -0
  970. package/dist/safe-bash/shell/cleanup.js.map +1 -0
  971. package/dist/safe-bash/shell/conditional.d.ts +48 -0
  972. package/dist/safe-bash/shell/conditional.d.ts.map +1 -0
  973. package/dist/safe-bash/shell/conditional.js +218 -0
  974. package/dist/safe-bash/shell/conditional.js.map +1 -0
  975. package/dist/safe-bash/shell/display.d.ts +3 -0
  976. package/dist/safe-bash/shell/display.d.ts.map +1 -0
  977. package/dist/safe-bash/shell/display.js +57 -0
  978. package/dist/safe-bash/shell/display.js.map +1 -0
  979. package/dist/safe-bash/shell/getopts.d.ts +46 -0
  980. package/dist/safe-bash/shell/getopts.d.ts.map +1 -0
  981. package/dist/safe-bash/shell/getopts.js +215 -0
  982. package/dist/safe-bash/shell/getopts.js.map +1 -0
  983. package/dist/safe-bash/shell/index.d.ts +5 -0
  984. package/dist/safe-bash/shell/index.d.ts.map +1 -0
  985. package/dist/safe-bash/shell/index.js +4 -0
  986. package/dist/safe-bash/shell/index.js.map +1 -0
  987. package/dist/safe-bash/shell/input.d.ts +26 -0
  988. package/dist/safe-bash/shell/input.d.ts.map +1 -0
  989. package/dist/safe-bash/shell/input.js +323 -0
  990. package/dist/safe-bash/shell/input.js.map +1 -0
  991. package/dist/safe-bash/shell/locale.d.ts +2 -0
  992. package/dist/safe-bash/shell/locale.d.ts.map +1 -0
  993. package/dist/safe-bash/shell/locale.js +5 -0
  994. package/dist/safe-bash/shell/locale.js.map +1 -0
  995. package/dist/safe-bash/shell/parser.d.ts +149 -0
  996. package/dist/safe-bash/shell/parser.d.ts.map +1 -0
  997. package/dist/safe-bash/shell/parser.js +1023 -0
  998. package/dist/safe-bash/shell/parser.js.map +1 -0
  999. package/dist/safe-bash/shell/pattern.d.ts +9 -0
  1000. package/dist/safe-bash/shell/pattern.d.ts.map +1 -0
  1001. package/dist/safe-bash/shell/pattern.js +134 -0
  1002. package/dist/safe-bash/shell/pattern.js.map +1 -0
  1003. package/dist/safe-bash/shell/pipestatus.d.ts +6 -0
  1004. package/dist/safe-bash/shell/pipestatus.d.ts.map +1 -0
  1005. package/dist/safe-bash/shell/pipestatus.js +82 -0
  1006. package/dist/safe-bash/shell/pipestatus.js.map +1 -0
  1007. package/dist/safe-bash/shell/runtime.d.ts +282 -0
  1008. package/dist/safe-bash/shell/runtime.d.ts.map +1 -0
  1009. package/dist/safe-bash/shell/runtime.js +5400 -0
  1010. package/dist/safe-bash/shell/runtime.js.map +1 -0
  1011. package/dist/safe-bash/shell/shell.d.ts +15 -0
  1012. package/dist/safe-bash/shell/shell.d.ts.map +1 -0
  1013. package/dist/safe-bash/shell/shell.js +355 -0
  1014. package/dist/safe-bash/shell/shell.js.map +1 -0
  1015. package/dist/safe-bash/shell/types.d.ts +76 -0
  1016. package/dist/safe-bash/shell/types.d.ts.map +1 -0
  1017. package/dist/safe-bash/shell/types.js +25 -0
  1018. package/dist/safe-bash/shell/types.js.map +1 -0
  1019. package/dist/safe-bash/shell/value-state.d.ts +57 -0
  1020. package/dist/safe-bash/shell/value-state.d.ts.map +1 -0
  1021. package/dist/safe-bash/shell/value-state.js +275 -0
  1022. package/dist/safe-bash/shell/value-state.js.map +1 -0
  1023. package/package.json +143 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/base64-js/index.js", "../../../node_modules/ieee754/index.js", "../../../node_modules/buffer/index.js", "../browser/platform.mjs", "../src/browser.ts", "../src/commands/basic.ts", "../src/contracts/index.ts", "../src/contracts/command.ts", "../src/contracts/value.ts", "../src/contracts/errors.ts", "../src/contracts/filesystem.ts", "../src/contracts/io.ts", "../src/contracts/output.ts", "../src/contracts/path.ts", "../src/contracts/plugin.ts", "../src/commands/internal.ts", "../src/commands/filesystem.ts", "../src/commands/copy-identity.ts", "../src/commands/move.ts", "../src/commands/predicates.ts", "../src/commands/streams.ts", "../src/commands/text.ts", "../src/shell/index.ts", "../src/shell/shell.ts", "../src/shell/parser.ts", "../src/shell/types.ts", "../src/shell/arithmetic.ts", "../src/shell/arrays/syntax.ts", "../src/shell/conditional.ts", "../src/shell/pattern.ts", "../src/shell/input.ts", "../src/shell/runtime.ts", "../src/shell/value-state.ts", "../src/shell/arithmetic-parameters.ts", "../src/shell/locale.ts", "../src/shell/display.ts", "../src/shell/cleanup.ts", "../src/commands/execution.ts", "../src/commands/env-split.ts", "../src/shell/getopts.ts", "../src/shell/cancellation.ts", "../src/shell/arrays/ledger.ts", "../src/shell/arrays/bindings.ts", "../src/shell/arrays/state.ts", "../src/shell/pipestatus.ts", "../browser/regex.mjs", "../src/commands/regex-execution/ere/transport/protocol.ts", "../src/commands/regex-execution/ere/errors.ts", "../src/fs/memory/index.ts", "../src/fs/readonly/index.ts", "../src/fs/mount/index.ts", "../src/fs/overlay/index.ts"],
4
+ "sourcesContent": ["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "export { Buffer } from \"buffer\";\nexport const TransformStream = globalThis.TransformStream;\nexport const setImmediate = (callback, ...args) => setTimeout(callback, 0, ...args);\nexport const clearImmediate = clearTimeout;\n", "import type { CommandDefinition, VirtualShellPlugin } from \"./contracts/index.js\";\nimport { basicCommands } from \"./commands/basic.js\";\nimport { filesystemCommands } from \"./commands/filesystem.js\";\nimport { predicateCommands } from \"./commands/predicates.js\";\nimport { streamCommands } from \"./commands/streams.js\";\nimport { textCommands } from \"./commands/text.js\";\n\nexport * from \"./contracts/index.js\";\nexport * from \"./shell/index.js\";\nexport * from \"./fs/memory/index.js\";\nexport * from \"./fs/readonly/index.js\";\nexport * from \"./fs/mount/index.js\";\nexport * from \"./fs/overlay/index.js\";\n\nexport interface BrowserCommandsOptions {\n readonly replace?: boolean;\n}\n\nexport function createBrowserCommands(): readonly CommandDefinition[] {\n return [\n ...basicCommands(), ...filesystemCommands(), ...predicateCommands(),\n ...streamCommands(), ...textCommands(),\n ];\n}\n\nexport function browserCommands(options: BrowserCommandsOptions = {}): VirtualShellPlugin {\n return {\n name: \"browser-commands\",\n setup(host) {\n const commands = createBrowserCommands();\n if (!options.replace) {\n for (const command of commands) {\n if (host.commands.has(command.name)) throw new Error(`Command already registered: ${command.name}`);\n }\n }\n for (const command of commands) host.commands.register(command, { replace: options.replace ?? false });\n },\n };\n}\n", "import { basename, dirname, getCommandArguments, writeBytes, type CommandDefinition } from \"../contracts/index.js\";\nimport { decoder, define, encoder, escapeBytes, options, output, requireOperands, UsageError, value } from \"./internal.js\";\n\nexport function basicCommands(): CommandDefinition[] {\n return [\n define(\"true\", () => ({ exitCode: 0 })),\n define(\"false\", () => ({ exitCode: 1 })),\n define(\"echo\", async (context) => {\n const arguments_ = getCommandArguments(context);\n let newline = true;\n let escapes = false;\n let offset = 0;\n while (/^-[neE]+$/u.test(arguments_.args[offset] ?? \"\")) {\n for (const flag of arguments_.args[offset]!.slice(1)) {\n if (flag === \"n\") newline = false;\n else escapes = flag === \"e\";\n }\n offset++;\n }\n const joined = arguments_.slice(offset).join(\" \");\n const text = typeof joined === \"string\" ? joined : arguments_.withValues([joined]).bytes(0)!;\n if (escapes) {\n const escaped = escapeBytes(text, true);\n await output(context, escaped.bytes);\n if (escaped.stop) newline = false;\n } else await output(context, text);\n if (newline) await output(context, \"\\n\");\n return { exitCode: 0 };\n }),\n define(\"pwd\", async (context) => {\n const parsed = options(context.args, \"LP\");\n requireOperands(parsed.operands, 0, 0);\n await output(context, `${parsed.flags.has(\"P\") ? await context.fs.realpath(context.cwd, { signal: context.signal }) : context.cwd}\\n`);\n return { exitCode: 0 };\n }),\n define(\"basename\", async (context) => {\n const parsed = options(context.args, \"as:z\", { multiple: \"a\", suffix: \"s\", zero: \"z\" });\n const multiple = parsed.flags.has(\"a\") || parsed.flags.has(\"s\");\n requireOperands(parsed.operands, 1, multiple ? Infinity : 2);\n const suffix = value(parsed, \"s\") ?? (multiple ? undefined : parsed.operands[1]);\n for (const operand of multiple ? parsed.operands : parsed.operands.slice(0, 1)) {\n let result = /^\\/+$/u.test(operand) ? \"/\" : basename(operand);\n if (suffix && result !== suffix && result.endsWith(suffix)) result = result.slice(0, -suffix.length);\n await output(context, result + (parsed.flags.has(\"z\") ? \"\\0\" : \"\\n\"));\n }\n return { exitCode: 0 };\n }),\n define(\"dirname\", async (context) => {\n const parsed = options(context.args, \"z\", { zero: \"z\" });\n requireOperands(parsed.operands);\n for (const operand of parsed.operands) await output(context, dirname(operand.replace(/\\/+$/u, \"\") || (operand.startsWith(\"/\") ? \"/\" : \".\")) + (parsed.flags.has(\"z\") ? \"\\0\" : \"\\n\"));\n return { exitCode: 0 };\n }),\n define(\"printf\", async (context) => {\n const incoming = getCommandArguments(context);\n const arguments_ = incoming.args[0] === \"--\" ? incoming.slice(1) : incoming;\n const args = arguments_.args;\n requireOperands(args);\n const format = args[0]!;\n if (format.startsWith(\"-\") && incoming.args[0] !== \"--\") throw new UsageError(`invalid option '${format}'`);\n const rawFormat = typeof arguments_.values[0] === \"string\" ? undefined : arguments_.bytes(0)!;\n const formatLength = rawFormat?.length ?? format.length;\n let argument = 1;\n let exitCode = 0;\n let stopped = false;\n do {\n const before = argument;\n for (let offset = 0; offset < formatLength && !stopped;) {\n if (rawFormat ? rawFormat[offset] !== 37 : format[offset] !== \"%\") {\n const end = rawFormat ? rawFormat.indexOf(37, offset) : format.indexOf(\"%\", offset);\n const limit = end < 0 ? formatLength : end;\n const literal = rawFormat ? rawFormat.subarray(offset, limit) : format.slice(offset, limit);\n const escaped = escapeBytes(literal);\n await output(context, escaped.bytes);\n stopped = escaped.stop;\n offset += literal.length;\n continue;\n }\n if (rawFormat ? rawFormat[offset + 1] === 37 : format[offset + 1] === \"%\") { await output(context, \"%\"); offset += 2; continue; }\n let tokenEnd = offset + 1;\n if (rawFormat) while (tokenEnd < rawFormat.length && (rawFormat[tokenEnd]! >= 48 && rawFormat[tokenEnd]! <= 57 || [32, 35, 43, 45, 46].includes(rawFormat[tokenEnd]!))) tokenEnd++;\n const fragment = rawFormat ? decoder.decode(rawFormat.subarray(offset, tokenEnd + 1)) : format.slice(offset);\n const match = /^%([-+ #0]*)(\\d+)?(?:\\.(\\d+))?([sbqcdiouxXfFeEgG])/u.exec(fragment);\n if (!match) throw new UsageError(`invalid format near '${fragment}'`);\n offset += match[0].length;\n const flags = match[1]!;\n const width = Number(match[2] ?? 0);\n const precision = match[3] === undefined ? undefined : Number(match[3]);\n if (width > 1_000_000 || (precision ?? 0) > 1000) throw new UsageError(\"format width or precision is too large\");\n const specifier = match[4]!;\n if (/[fFeEgG]/u.test(specifier) && (precision ?? 0) > 100) throw new UsageError(\"floating-point precision is too large\");\n const suppliedIndex = argument++;\n const supplied = args[suppliedIndex] ?? \"\";\n let text: string;\n if (specifier === \"b\" || specifier === \"s\") {\n const suppliedValue = arguments_.values[suppliedIndex] ?? \"\";\n const raw = specifier === \"b\" && typeof suppliedValue === \"string\" ? suppliedValue : arguments_.bytes(suppliedIndex) ?? new Uint8Array();\n const escaped = specifier === \"b\" ? escapeBytes(raw, true, true) : { bytes: raw as Uint8Array, stop: false };\n const bytes = escaped.bytes.subarray(0, precision);\n const padding = \" \".repeat(Math.max(0, width - bytes.length));\n if (!flags.includes(\"-\")) await output(context, padding);\n await output(context, bytes);\n if (flags.includes(\"-\")) await output(context, padding);\n stopped = escaped.stop;\n continue;\n }\n if (specifier === \"q\") text = supplied === \"\" ? \"''\" : supplied.replace(/[^a-zA-Z0-9_./-]/gu, character => character === \"\\n\" ? \"$'\\\\n'\" : `\\\\${character}`);\n else if (specifier === \"c\") text = supplied ? String.fromCodePoint(supplied.codePointAt(0)!) : \"\\0\";\n else {\n let number = supplied === \"\" ? 0 : /^[\"']/u.test(supplied) ? supplied.codePointAt(1) ?? 0 : Number(supplied);\n if (/^[+-]0[xX][0-9a-fA-F]+$/u.test(supplied.trim())) {\n number = Number(supplied.trim().slice(1)) * (supplied.trim().startsWith(\"-\") ? -1 : 1);\n }\n if (/^[+-]?0[0-9]+$/u.test(supplied) && !/[fFeEgG]/u.test(specifier)) {\n if (/[89]/u.test(supplied)) number = NaN;\n else number = parseInt(supplied.replace(/^[+-]?0/u, \"\"), 8) * (supplied.startsWith(\"-\") ? -1 : 1);\n }\n if (!Number.isFinite(number)) {\n await writeBytes(context.stderr, encoder.encode(`printf: '${supplied}': invalid number\\n`), context.signal);\n exitCode = 1; number = 0;\n }\n if (/[fF]/u.test(specifier)) text = number.toFixed(precision ?? 6);\n else if (/[eE]/u.test(specifier)) text = number.toExponential(precision ?? 6).replace(/e([+-])(\\d)$/u, \"e$10$2\");\n else if (/[gG]/u.test(specifier)) text = Number(number.toPrecision(Math.max(1, precision ?? 6))).toString();\n else {\n const radix = /[xX]/u.test(specifier) ? 16 : specifier === \"o\" ? 8 : 10;\n const unsigned = /[uoxX]/u.test(specifier);\n let integral: bigint;\n try {\n const token = supplied.trim();\n if (!token || /^[\"']/u.test(token)) integral = BigInt(Math.trunc(number));\n else {\n const magnitude = token.replace(/^[+-]/u, \"\");\n if (!/^(?:0[xX][0-9a-fA-F]+|0[0-7]*|[1-9][0-9]*)$/u.test(magnitude)) throw new Error(\"invalid integer\");\n integral = BigInt(/^0[0-7]+$/u.test(magnitude) ? `0o${magnitude.slice(1)}` : magnitude) * (token.startsWith(\"-\") ? -1n : 1n);\n }\n } catch {\n integral = 0n;\n if (exitCode === 0) await writeBytes(context.stderr, encoder.encode(`printf: '${supplied}': invalid integer\\n`), context.signal);\n exitCode = 1;\n }\n text = (unsigned ? BigInt.asUintN(64, integral) : integral).toString(radix);\n if (precision === 0 && integral === 0n) text = \"\";\n if (precision !== undefined) text = text.startsWith(\"-\") ? `-${text.slice(1).padStart(precision, \"0\")}` : text.padStart(precision, \"0\");\n if (flags.includes(\"#\")) {\n if (radix === 16 && integral !== 0n) text = \"0x\" + text;\n else if (radix === 8 && !text.startsWith(\"0\")) text = \"0\" + text;\n }\n }\n if (/[XFEG]/u.test(specifier)) text = text.toUpperCase();\n if (number >= 0 && /[difFeEgG]/u.test(specifier)) text = (flags.includes(\"+\") ? \"+\" : flags.includes(\" \") ? \" \" : \"\") + text;\n }\n if (flags.includes(\"-\")) text = text.padEnd(width, \" \");\n else if (flags.includes(\"0\") && /[diouxXfFeEgG]/u.test(specifier)\n && (precision === undefined || /[fFeEgG]/u.test(specifier))) {\n const prefix = /^[+ -]|^0[xX]/u.exec(text)?.[0] ?? \"\";\n text = prefix + text.slice(prefix.length).padStart(Math.max(0, width - prefix.length), \"0\");\n } else text = text.padStart(width, \" \");\n await output(context, text);\n }\n if (argument === before) break;\n } while (argument < args.length && !stopped);\n return { exitCode };\n }),\n ];\n}\n", "export * from \"./command.js\";\nexport * from \"./errors.js\";\nexport * from \"./filesystem.js\";\nexport * from \"./io.js\";\nexport * from \"./output.js\";\nexport * from \"./path.js\";\nexport * from \"./plugin.js\";\n", "import type { FileSystem } from \"./filesystem.js\";\nimport type { ByteSink, ByteSource } from \"./io.js\";\nimport { concatShellValues, shellValueBytes, shellValueFromBytes, shellValueText, type ShellValue, type ValueAllocation, type ValueReservation } from \"./value.js\";\n\nexport interface CommandArguments {\n readonly args: readonly string[];\n readonly values: readonly ShellValue[];\n bytes(index: number): Uint8Array | undefined;\n slice(start?: number, end?: number): CommandArguments;\n select(indices: readonly number[]): CommandArguments;\n concat(...others: readonly CommandArguments[]): CommandArguments;\n withValues(values: readonly (ShellValue | Uint8Array)[]): CommandArguments;\n join(separator?: ShellValue): ShellValue;\n}\n\nconst argumentCarriers = new WeakSet<CommandArguments>();\n\nfunction argumentAllocation(allocation?: ValueAllocation) {\n const reservations: ValueReservation[] = [];\n const tracked: ValueAllocation | undefined = allocation && {\n assertOpen() { allocation.assertOpen(); },\n reserve(bytes, slots) {\n const reservation = allocation.reserve(bytes, slots);\n let released = false;\n const owned: ValueReservation = {\n commit(value) { reservation.commit(value); },\n release() {\n if (released) return;\n released = true;\n reservation.release();\n },\n };\n reservations.push(owned);\n return owned;\n },\n };\n return {\n allocation: tracked,\n rollback(error: unknown): never {\n const failures: unknown[] = [error];\n for (let index = reservations.length - 1; index >= 0; index--) {\n try { reservations[index]!.release(); }\n catch (cleanup) { failures.push(cleanup); }\n }\n if (failures.length > 1) throw new AggregateError(failures, \"Command argument allocation and release failed\");\n throw error;\n },\n };\n}\n\nfunction ownedCommandArguments(\n size: number | (() => number), valueAt: (index: number) => ShellValue | Uint8Array, allocation?: ValueAllocation,\n extent?: () => number,\n): CommandArguments {\n allocation?.assertOpen();\n const length = typeof size === \"number\" ? size : size();\n const bytes = 128 + length * 40;\n const slots = length * 4 + 1;\n if (!Number.isSafeInteger(length) || length < 0 || !Number.isSafeInteger(bytes) || !Number.isSafeInteger(slots)) {\n throw new RangeError(\"Command argument allocation is too large\");\n }\n const transaction = argumentAllocation(allocation);\n const reservation = transaction.allocation?.reserve(bytes, slots);\n try {\n if (extent && extent() !== length) throw new TypeError(\"Command argument extent changed during admission\");\n const snapshot: (ShellValue | Uint8Array)[] = [];\n for (let index = 0; index < length; index++) snapshot.push(valueAt(index));\n if (extent && extent() !== length) throw new TypeError(\"Command argument extent changed during admission\");\n const values: ShellValue[] = [];\n const args: string[] = [];\n for (const incoming of snapshot) {\n const value = incoming instanceof Uint8Array ? shellValueFromBytes(incoming, transaction.allocation) : incoming;\n args.push(shellValueText(value));\n values.push(value);\n }\n Object.freeze(values);\n Object.freeze(args);\n const carrier: CommandArguments = Object.freeze({\n args, values,\n bytes(index: number) {\n return Number.isInteger(index) && index >= 0 && index < length ? shellValueBytes(values[index]!, allocation) : undefined;\n },\n slice(start = 0, end = length) {\n const offset = (index: number): number => {\n const integral = Math.trunc(index) || 0;\n return integral < 0 ? Math.max(0, length + integral) : Math.min(length, integral);\n };\n const first = offset(start);\n return ownedCommandArguments(Math.max(0, offset(end) - first), index => values[first + index]!, allocation);\n },\n select(indices: readonly number[]) {\n return ownedCommandArguments(() => {\n if (!Array.isArray(indices)) throw new TypeError(\"Command argument selection must be an array\");\n return indices.length;\n }, index => {\n const selected = indices[index]!;\n if (!Number.isInteger(selected) || selected < 0 || selected >= length) throw new RangeError(\"Command argument index is out of range\");\n return values[selected]!;\n }, allocation, () => indices.length);\n },\n concat(...others: readonly CommandArguments[]) {\n let total = length;\n for (const other of others) {\n if (!argumentCarriers.has(other)) throw new TypeError(\"Expected owned command arguments\");\n total += other.values.length;\n }\n return ownedCommandArguments(total, index => {\n if (index < length) return values[index]!;\n let offset = index - length;\n for (const other of others) {\n if (offset < other.values.length) return other.values[offset]!;\n offset -= other.values.length;\n }\n throw new RangeError(\"Command argument index is out of range\");\n }, allocation);\n },\n withValues(incoming: readonly (ShellValue | Uint8Array)[]) {\n return ownedCommandArguments(() => {\n if (!Array.isArray(incoming)) throw new TypeError(\"Command arguments must be an array\");\n return incoming.length;\n }, index => incoming[index]!, allocation, () => incoming.length);\n },\n join(separator: ShellValue = \"\") {\n allocation?.assertOpen();\n const count = Math.max(0, length * 2 - 1);\n const bytes = 128 + count * 16;\n if (!Number.isSafeInteger(bytes) || !Number.isSafeInteger(count + 1)) throw new RangeError(\"Command argument join allocation is too large\");\n const transaction = argumentAllocation(allocation);\n const scratch = transaction.allocation?.reserve(bytes, count + 1);\n try {\n const parts: ShellValue[] = [];\n for (let index = 0; index < length; index++) {\n if (index) parts.push(separator);\n parts.push(values[index]!);\n }\n Object.freeze(parts);\n scratch?.commit(parts);\n const result = concatShellValues(parts, transaction.allocation);\n scratch?.release();\n return result;\n } catch (error) {\n return transaction.rollback(error);\n }\n },\n });\n reservation?.commit(carrier);\n argumentCarriers.add(carrier);\n return carrier;\n } catch (error) {\n return transaction.rollback(error);\n }\n}\n\nexport function createCommandArguments(values: readonly ShellValue[], allocation?: ValueAllocation): CommandArguments {\n return ownedCommandArguments(() => {\n if (!Array.isArray(values)) throw new TypeError(\"Command arguments must be an array\");\n return values.length;\n }, index => values[index]!, allocation, () => values.length);\n}\n\nexport function getCommandArguments(context: Pick<CommandContext, \"args\" | \"argumentValues\">): CommandArguments {\n const carrier = context.argumentValues;\n if (carrier === undefined) return createCommandArguments(context.args);\n if (!argumentCarriers.has(carrier)) throw new TypeError(\"Expected owned command arguments\");\n if (carrier.args !== context.args) throw new TypeError(\"Command argument identity does not match its carrier\");\n return carrier;\n}\n\nexport interface CommandInvokeOptions {\n readonly argumentValues?: CommandArguments;\n readonly signal?: AbortSignal | undefined;\n readonly stdin?: ByteSource;\n readonly stdinIsDefault?: boolean;\n readonly stdout?: ByteSink;\n readonly stderr?: ByteSink;\n readonly cwd?: string;\n readonly env?: Readonly<Record<string, string>>;\n readonly replaceEnv?: boolean;\n}\n\nexport type CommandInvoker = (\n command: string,\n args: readonly string[],\n options?: CommandInvokeOptions,\n) => Promise<CommandResult>;\n\nexport type InvocationCleanup = () => void | Promise<void>;\n\nexport interface CommandContext {\n readonly command: string;\n readonly args: readonly string[];\n readonly argumentValues?: CommandArguments;\n readonly stdin: ByteSource;\n readonly stdinIsDefault?: boolean;\n readonly stdout: ByteSink;\n readonly stderr: ByteSink;\n cwd: string;\n env: Record<string, string>;\n readonly fs: FileSystem;\n readonly signal: AbortSignal;\n readonly invoke?: CommandInvoker;\n readonly registerCleanup?: (cleanup: InvocationCleanup) => void;\n}\n\nexport interface CommandResult {\n readonly exitCode: number;\n}\n\nexport type CommandHandler = (\n context: CommandContext,\n) => CommandResult | Promise<CommandResult>;\n\nexport type AsyncCommandHandler = (context: CommandContext) => Promise<CommandResult>;\n\nexport interface CommandDefinition {\n readonly name: string;\n readonly description?: string;\n readonly execute: CommandHandler;\n}\n\nexport interface RegisterCommandOptions {\n readonly replace?: boolean;\n}\n\nexport class CommandRegistry {\n readonly #commands = new Map<string, CommandDefinition>();\n\n constructor(commands: Iterable<CommandDefinition> = []) {\n for (const command of commands) this.register(command);\n }\n\n register(command: CommandDefinition, options: RegisterCommandOptions = {}): this {\n const { name, execute } = command;\n if (typeof name !== \"string\" || !name || /[\\s/\\0]/u.test(name)) {\n throw new TypeError(\"Command names must be nonempty and contain no whitespace, slash, or NUL\");\n }\n if (typeof execute !== \"function\") {\n throw new TypeError(\"Command execute must be a function\");\n }\n if (this.#commands.has(name) && !options.replace) {\n throw new Error(`Command already registered: ${name}`);\n }\n this.#commands.set(name, Object.freeze({ ...command, name, execute }));\n return this;\n }\n\n get(name: string): CommandDefinition | undefined {\n return this.#commands.get(name);\n }\n\n has(name: string): boolean {\n return this.#commands.has(name);\n }\n\n unregister(name: string): boolean {\n return this.#commands.delete(name);\n }\n\n list(): readonly CommandDefinition[] {\n return Array.from(this.#commands.values());\n }\n}\n\nexport function validateExitCode(exitCode: number): number {\n if (!Number.isInteger(exitCode) || exitCode < 0 || exitCode > 255) {\n throw new RangeError(\"Exit status must be an integer between 0 and 255\");\n }\n return exitCode;\n}\n", "declare const byteValueBrand: unique symbol;\n\nexport interface ByteShellValue {\n readonly [byteValueBrand]: true;\n}\n\nexport type ShellValue = string | ByteShellValue;\n\nexport interface ValueReservation {\n commit(value: object): void;\n release(): void;\n}\n\nexport interface ValueAllocation {\n assertOpen(): void;\n reserve(bytes: number, slots: number): ValueReservation;\n}\n\nconst byteValues = new WeakMap<ByteShellValue, { bytes: Uint8Array; text: string }>();\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder(\"utf-8\", { ignoreBOM: true });\nconst typedArrayPrototype = Object.getPrototypeOf(Uint8Array.prototype) as object;\nconst viewBuffer = Object.getOwnPropertyDescriptor(typedArrayPrototype, \"buffer\")!.get!;\nconst viewOffset = Object.getOwnPropertyDescriptor(typedArrayPrototype, \"byteOffset\")!.get!;\nconst viewLength = Object.getOwnPropertyDescriptor(typedArrayPrototype, \"byteLength\")!.get!;\n\nfunction record(value: ByteShellValue): { bytes: Uint8Array; text: string } {\n const result = byteValues.get(value);\n if (!result) throw new TypeError(\"Expected an owned shell byte value\");\n return result;\n}\n\nfunction allocationSize(length: number, multiplier: number): number {\n const result = length * multiplier + 64;\n if (!Number.isSafeInteger(result)) throw new RangeError(\"Shell value allocation is too large\");\n return result;\n}\n\nfunction allocate<Result extends object>(bytes: number, allocation: ValueAllocation | undefined, create: () => Result, slots = 1): Result {\n allocation?.assertOpen();\n const reservation = allocation?.reserve(bytes, slots);\n try {\n const result = create();\n reservation?.commit(result);\n return result;\n } catch (error) {\n try { reservation?.release(); }\n catch (cleanup) { throw new AggregateError([error, cleanup], \"Shell value allocation and release failed\"); }\n throw error;\n }\n}\n\nfunction ownedBytes(bytes: Uint8Array): ByteShellValue {\n const value = Object.freeze({}) as ByteShellValue;\n byteValues.set(value, { bytes, text: decoder.decode(bytes) });\n return value;\n}\n\nexport function shellValueFromBytes(bytes: Uint8Array, allocation?: ValueAllocation): ByteShellValue {\n if (!(bytes instanceof Uint8Array)) throw new TypeError(\"Shell bytes must be Uint8Array\");\n const buffer = viewBuffer.call(bytes) as ArrayBuffer;\n const offset = viewOffset.call(bytes) as number;\n const length = viewLength.call(bytes) as number;\n return allocate(allocationSize(length, 3), allocation, () => {\n if (viewOffset.call(bytes) !== offset || viewLength.call(bytes) < length) throw new TypeError(\"Shell byte input extent changed during admission\");\n return ownedBytes(new Uint8Array(new Uint8Array(buffer, offset, length)));\n });\n}\n\nexport function shellValueText(value: ShellValue): string {\n return typeof value === \"string\" ? value : record(value).text;\n}\n\nexport function shellValueByteLength(value: ShellValue): number {\n return typeof value === \"string\" ? Buffer.byteLength(value) : record(value).bytes.byteLength;\n}\n\nexport function shellValueRetainedBytes(value: ByteShellValue): number {\n const stored = record(value);\n return stored.bytes.byteLength + stored.text.length * 2 + 64;\n}\n\nexport function shellValueBytes(value: ShellValue, allocation?: ValueAllocation): Uint8Array {\n const length = shellValueByteLength(value);\n return allocate(allocationSize(length, 1), allocation, () => typeof value === \"string\" ? encoder.encode(value) : new Uint8Array(record(value).bytes));\n}\n\nexport function concatShellValues(values: readonly ShellValue[], allocation?: ValueAllocation): ShellValue {\n allocation?.assertOpen();\n if (!Array.isArray(values)) throw new TypeError(\"Shell value concatenation requires an array\");\n const count = values.length;\n if (!Number.isSafeInteger(count) || count < 0 || count > 0xffffffff) throw new RangeError(\"Invalid shell value input extent\");\n if (!count) return \"\";\n if (count === 1) {\n const value = values[0]!;\n if (typeof value !== \"string\") record(value);\n if (values.length !== count) throw new TypeError(\"Shell value input extent changed\");\n return value;\n }\n let textOnly = true;\n for (let index = 0; index < count; index++) {\n if (typeof values[index] !== \"string\") { textOnly = false; break; }\n }\n if (textOnly) {\n let text = \"\";\n for (let index = 0; index < count; index++) {\n const value = values[index];\n if (typeof value !== \"string\") throw new TypeError(\"Shell value input type changed during text concatenation\");\n text += value;\n }\n if (values.length !== count) throw new TypeError(\"Shell value input extent changed\");\n return text;\n }\n let reservation = allocation?.reserve(allocationSize(count, 16), count + 1);\n const release = (): void => { const pending = reservation; reservation = undefined; pending?.release(); };\n try {\n if (values.length !== count) throw new TypeError(\"Shell value input extent changed during metadata admission\");\n const snapshot: ShellValue[] = new Array(count);\n for (let index = 0; index < count; index++) {\n const value = values[index]!;\n if (typeof value !== \"string\") record(value);\n snapshot[index] = value;\n }\n if (values.length !== count) throw new TypeError(\"Shell value input extent changed during snapshot capture\");\n Object.freeze(snapshot);\n reservation?.commit(snapshot);\n if (snapshot.every(value => typeof value === \"string\")) {\n const result = snapshot.join(\"\");\n release();\n return result;\n }\n const length = encodeValues(snapshot);\n return allocate(allocationSize(length, 3), allocation, () => {\n const bytes = new Uint8Array(length);\n encodeValues(snapshot, bytes);\n const result = ownedBytes(bytes);\n release();\n return result;\n });\n } catch (error) {\n try { release(); }\n catch (cleanup) { throw new AggregateError([error, cleanup], \"Shell value snapshot and release failed\"); }\n throw error;\n }\n}\n\nfunction encodeValues(values: readonly ShellValue[], output?: Uint8Array): number {\n let offset = 0;\n let high = 0;\n const write = (byte: number): void => { if (output) output[offset] = byte; offset++; };\n const point = (code: number): void => {\n if (code < 0x80) write(code);\n else if (code < 0x800) { write(0xc0 | code >> 6); write(0x80 | code & 0x3f); }\n else if (code < 0x10000) { write(0xe0 | code >> 12); write(0x80 | code >> 6 & 0x3f); write(0x80 | code & 0x3f); }\n else { write(0xf0 | code >> 18); write(0x80 | code >> 12 & 0x3f); write(0x80 | code >> 6 & 0x3f); write(0x80 | code & 0x3f); }\n };\n for (const value of values) {\n if (typeof value !== \"string\") {\n if (high) { point(0xfffd); high = 0; }\n const bytes = record(value).bytes;\n output?.set(bytes, offset);\n offset += bytes.byteLength;\n continue;\n }\n for (let index = 0; index < value.length; index++) {\n const code = value.charCodeAt(index);\n if (high) {\n const previous = high;\n high = 0;\n if (code >= 0xdc00 && code <= 0xdfff) { point(0x10000 + ((previous - 0xd800) << 10) + code - 0xdc00); continue; }\n point(0xfffd);\n }\n if (code >= 0xd800 && code <= 0xdbff) high = code;\n else point(code >= 0xdc00 && code <= 0xdfff ? 0xfffd : code);\n }\n }\n if (high) point(0xfffd);\n if (!Number.isSafeInteger(offset)) throw new RangeError(\"Shell value allocation is too large\");\n return offset;\n}\n", "export { isErrnoCode, isFsError, toFsError, FsError } from \"poe-code/safe-fs\";\nexport type { ErrnoCode, FsErrorOptions } from \"poe-code/safe-fs\";\n", "export { ACCESS_MODES } from \"poe-code/safe-fs\";\nexport type { FileType, EntryComparison, FileStat, DirectoryEntry, FileSystemCapabilities, FsOptions, ReadFileOptions, WriteFileOptions, AppendFileOptions, MkdirOptions, RemoveOptions, CopyFileOptions, ReadStreamOptions, FileSystem, FileSystemFactory } from \"poe-code/safe-fs\";\n", "import { collectBytes, readBytes } from \"poe-code/safe-fs\";\nimport type { ByteSource, CollectOptions } from \"poe-code/safe-fs\";\nexport { collectBytes, readBytes, toByteSource } from \"poe-code/safe-fs\";\nexport type { ByteSource, CollectOptions } from \"poe-code/safe-fs\";\nimport { TransformStream } from \"node:stream/web\";\nimport { FsError } from \"./errors.js\";\n\nexport interface ByteSink {\n write(chunk: Uint8Array): Promise<void>;\n readonly ownedOutput?: {\n readonly consumerClosed: AbortSignal;\n write(chunk: Uint8Array): Promise<void>;\n };\n}\n\nexport interface BytePipe {\n readonly readable: ByteSource;\n readonly writable: ByteSink;\n close(): Promise<void>;\n abort(reason?: unknown): Promise<void>;\n}\n\nexport interface BytePipeOptions {\n readonly highWaterMark?: number;\n readonly signal?: AbortSignal;\n}\n\nexport function createBytePipe(options: BytePipeOptions = {}): BytePipe {\n const highWaterMark = options.highWaterMark ?? 64 * 1024;\n const signal = options.signal;\n if (!Number.isSafeInteger(highWaterMark) || highWaterMark < 1) {\n throw new RangeError(\"highWaterMark must be a positive safe integer\");\n }\n const stream = new TransformStream<Uint8Array, Uint8Array>(\n undefined,\n { highWaterMark: 1 },\n { highWaterMark, size: (chunk) => chunk.byteLength },\n );\n const reader = stream.readable.getReader();\n const writer = stream.writable.getWriter();\n let ended = false;\n let failed = false;\n let failure: unknown;\n let closePromise: Promise<void> | undefined;\n let abortPromise: Promise<void> | undefined;\n let finished = false;\n const consumer = new AbortController();\n const abort = (reason: unknown = new FsError(\"EPIPE\", { syscall: \"pipe\" })): Promise<void> => {\n if (abortPromise) return abortPromise;\n if (finished) return Promise.resolve();\n failed = true;\n failure = reason;\n ended = true;\n consumer.abort(reason);\n abortPromise = Promise.allSettled([reader.cancel(reason), writer.abort(reason)]).then(() => {});\n return abortPromise;\n };\n const onAbort = (): void => { void abort(signal?.reason); };\n const cleanup = (): void => signal?.removeEventListener(\"abort\", onAbort);\n void writer.closed.catch(() => {});\n void reader.closed.then(cleanup, cleanup);\n if (signal?.aborted) onAbort();\n else signal?.addEventListener(\"abort\", onAbort, { once: true });\n const iterator = (async function* (): AsyncGenerator<Uint8Array> {\n try {\n while (true) {\n if (failed) throw failure;\n const result = await reader.read();\n if (failed) throw failure;\n if (result.done) {\n finished = true;\n return;\n }\n yield result.value;\n }\n } finally {\n if (!finished) await abort();\n reader.releaseLock();\n }\n })();\n const readable: AsyncIterableIterator<Uint8Array> = {\n [Symbol.asyncIterator]() { return this; },\n next() { return iterator.next(); },\n async return() {\n if (!finished) await abort();\n try {\n return await iterator.return(undefined);\n } finally {\n reader.releaseLock();\n }\n },\n async throw(reason) {\n await abort(reason);\n try {\n return await iterator.throw(reason);\n } finally {\n reader.releaseLock();\n }\n },\n };\n const write = async (chunk: Uint8Array): Promise<void> => {\n if (failed) throw failure;\n if (ended) throw new FsError(\"EPIPE\", { syscall: \"write\" });\n if (!(chunk instanceof Uint8Array)) throw new TypeError(\"Byte sinks require Uint8Array chunks\");\n if (chunk.byteLength > 0) await writer.write(new Uint8Array(chunk));\n };\n return {\n readable,\n writable: {\n write,\n ownedOutput: { consumerClosed: consumer.signal, write },\n },\n close() {\n if (failed) return Promise.reject(failure);\n ended = true;\n closePromise ??= writer.close();\n return closePromise;\n },\n abort,\n };\n}\n\nexport async function writeText(sink: ByteSink, text: string): Promise<void> {\n await sink.write(new TextEncoder().encode(text));\n}\n\nexport async function writeBytes(sink: ByteSink, chunk: Uint8Array, signal?: AbortSignal): Promise<void> {\n if (!(chunk instanceof Uint8Array)) throw new TypeError(\"Byte sinks require Uint8Array chunks\");\n await abortable(() => sink.write(chunk), signal);\n}\n\nexport async function pipeBytes(source: ByteSource, sink: ByteSink, signal?: AbortSignal): Promise<void> {\n signal?.throwIfAborted();\n for await (const chunk of readBytes(source, signal)) {\n await writeBytes(sink, chunk, signal);\n }\n signal?.throwIfAborted();\n}\n\nexport async function collectText(source: ByteSource, options: CollectOptions): Promise<string> {\n return new TextDecoder().decode(await collectBytes(source, options));\n}\n\nasync function abortable<Result>(operation: () => PromiseLike<Result>, signal?: AbortSignal): Promise<Result> {\n signal?.throwIfAborted();\n if (!signal) return operation();\n return new Promise<Result>((resolve, reject) => {\n const onAbort = (): void => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(signal.reason);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n try {\n Promise.resolve(operation()).then(\n (result) => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve(result);\n },\n (error: unknown) => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n },\n );\n } catch (error) {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n }\n });\n}\n", "import type { CommandContext, InvocationCleanup } from \"./command.js\";\nimport { 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}\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 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(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 async write(chunk) {\n assertOpen();\n await writeBytes(capability ?? destination, chunk, signal);\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 };\n}\n", "export { validatePath, resolvePath, normalizePath, relativePath, isPathWithin, assertPathWithin, posixPath, basename, dirname, extname, joinPath, isAbsolutePath } from \"poe-code/safe-fs\";\n", "import type { AsyncCommandHandler, CommandContext, CommandHandler, CommandRegistry, CommandResult } from \"./command.js\";\nimport type { FileSystemFactory } from \"./filesystem.js\";\n\nexport type Next = () => Promise<CommandResult>;\n\nexport type Middleware = (\n context: CommandContext,\n next: Next,\n) => CommandResult | Promise<CommandResult>;\n\nexport interface PluginHost {\n readonly commands: CommandRegistry;\n use(middleware: Middleware): void;\n registerFileSystem(scheme: string, factory: FileSystemFactory): void;\n}\n\nexport interface VirtualShellPlugin {\n readonly name: string;\n setup(host: PluginHost): void | Promise<void>;\n dispose?(): void | Promise<void>;\n}\n\nexport function composeMiddleware(\n middleware: readonly Middleware[],\n terminal: CommandHandler,\n): AsyncCommandHandler {\n const stack = [...middleware];\n if (typeof terminal !== \"function\" || stack.some((handler) => typeof handler !== \"function\")) {\n throw new TypeError(\"Middleware and terminal handlers must be functions\");\n }\n return async (context) => {\n let lastIndex = -1;\n const dispatch = async (index: number): Promise<CommandResult> => {\n if (index <= lastIndex) throw new Error(\"next() may only be called once per middleware\");\n lastIndex = index;\n context.signal.throwIfAborted();\n const handler = stack[index];\n if (!handler) return terminal(context);\n let active = true;\n let downstream: Promise<CommandResult> | undefined;\n let downstreamPending = false;\n const next: Next = () => {\n const result = active\n ? dispatch(index + 1)\n : Promise.reject<CommandResult>(new Error(\"next() cannot be called after middleware completed\"));\n if (active && !downstream) {\n downstream = result;\n downstreamPending = true;\n void result.then(\n () => { downstreamPending = false; },\n () => { downstreamPending = false; },\n );\n } else void result.catch(() => {});\n return result;\n };\n try {\n const result = await handler(context, next);\n if (downstreamPending) throw new Error(\"Middleware must await or return next()\");\n return result;\n } finally {\n active = false;\n if (downstream) await downstream.then(() => {}, () => {});\n }\n };\n return dispatch(0);\n };\n}\n", "import {\n FsError, isAbsolutePath, readBytes, toByteSource, validatePath, writeBytes,\n type ByteSource, type CommandContext, type CommandDefinition, type CommandHandler,\n} from \"../contracts/index.js\";\n\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nexport const bufferLimit = 32 * 1024 * 1024;\n\nexport class UsageError extends Error {}\n\nexport interface ParsedOptions {\n readonly flags: Set<string>;\n readonly values: Map<string, string[]>;\n readonly operands: string[];\n}\n\nexport function options(\n args: readonly string[], short: string, long: Readonly<Record<string, string>> = {},\n stopAtOperand = false, onOperand?: (index: number) => void,\n): ParsedOptions {\n const flags = new Set<string>();\n const values = new Map<string, string[]>();\n const operands: string[] = [];\n const specifications = new Map<string, boolean>();\n for (let index = 0; index < short.length; index++) {\n const key = short[index]!;\n specifications.set(key, short[index + 1] === \":\");\n if (short[index + 1] === \":\") index++;\n }\n let ended = false;\n for (let index = 0; index < args.length; index++) {\n const argument = args[index]!;\n if (ended || argument === \"-\" || !argument.startsWith(\"-\")) {\n operands.push(argument);\n onOperand?.(index);\n if (stopAtOperand) ended = true;\n continue;\n }\n if (argument === \"--\") { ended = true; continue; }\n if (argument.startsWith(\"--\")) {\n const equals = argument.indexOf(\"=\");\n const name = argument.slice(2, equals < 0 ? undefined : equals);\n const key = long[name];\n if (!key || !specifications.has(key)) throw new UsageError(`unrecognized option '${argument}'`);\n if (specifications.get(key)) {\n const value = equals >= 0 ? argument.slice(equals + 1) : args[++index];\n if (value === undefined) throw new UsageError(`option '--${name}' requires an argument`);\n values.set(key, [...values.get(key) ?? [], value]);\n } else if (equals >= 0) throw new UsageError(`option '--${name}' does not take an argument`);\n flags.add(key);\n continue;\n }\n for (let offset = 1; offset < argument.length; offset++) {\n const key = argument[offset]!;\n if (!specifications.has(key)) throw new UsageError(`invalid option -- '${key}'`);\n if (specifications.get(key)) {\n const value = argument.slice(offset + 1) || args[++index];\n if (value === undefined) throw new UsageError(`option requires an argument -- '${key}'`);\n values.set(key, [...values.get(key) ?? [], value]);\n offset = argument.length;\n }\n flags.add(key);\n }\n }\n return { flags, values, operands };\n}\n\nexport function value(parsed: ParsedOptions, key: string): string | undefined {\n return parsed.values.get(key)?.at(-1);\n}\n\nexport function integer(text: string, minimum = 0): number {\n if (!/^[+]?[0-9]+$/u.test(text)) throw new UsageError(`invalid number '${text}'`);\n const number = Number(text);\n if (!Number.isSafeInteger(number) || number < minimum) throw new UsageError(`invalid number '${text}'`);\n return number;\n}\n\nexport function requireOperands(operands: readonly string[], minimum = 1, maximum = Infinity): void {\n if (operands.length < minimum) throw new UsageError(\"missing operand\");\n if (operands.length > maximum) throw new UsageError(`extra operand '${operands[maximum]}'`);\n}\n\nexport function pathOf(context: CommandContext, path: string): string {\n if (!path) throw new FsError(\"ENOENT\", { path });\n validatePath(path);\n validatePath(context.cwd);\n if (!isAbsolutePath(context.cwd)) throw new FsError(\"EINVAL\", { path: context.cwd, message: \"cwd must be absolute\" });\n return isAbsolutePath(path) ? path : `${context.cwd.replace(/\\/$/u, \"\")}/${path}`;\n}\n\nexport function codeOf(error: unknown): string | undefined {\n return error instanceof Error && \"code\" in error ? String(error.code) : undefined;\n}\n\nexport async function output(context: CommandContext, text: string | Uint8Array): Promise<void> {\n context.signal.throwIfAborted();\n await writeBytes(context.stdout, typeof text === \"string\" ? encoder.encode(text) : text, context.signal);\n}\n\nexport async function diagnostic(context: CommandContext, error: unknown): Promise<void> {\n context.signal.throwIfAborted();\n await writeBytes(context.stderr, encoder.encode(`${context.command}: ${error instanceof Error ? error.message : String(error)}\\n`), context.signal);\n}\n\nexport function define(name: string, handler: CommandHandler, failureCode = 1): CommandDefinition {\n return {\n name,\n async execute(context) {\n context.signal.throwIfAborted();\n try { return await handler(context); }\n catch (error) {\n context.signal.throwIfAborted();\n await diagnostic(context, error);\n return { exitCode: error instanceof UsageError ? 2 : failureCode };\n }\n },\n };\n}\n\nexport async function eachOperand(\n context: CommandContext, operands: readonly string[], operation: (operand: string) => Promise<void>,\n): Promise<{ exitCode: number }> {\n let exitCode = 0;\n for (const operand of operands) {\n context.signal.throwIfAborted();\n try { await operation(operand); }\n catch (error) { await diagnostic(context, error); exitCode = 1; }\n }\n return { exitCode };\n}\n\nexport async function* input(context: CommandContext, name = \"-\"): ByteSource {\n context.signal.throwIfAborted();\n if (name === \"-\") {\n yield* readBytes(context.stdin, context.signal);\n } else {\n const path = pathOf(context, name);\n if (context.fs.readStream && context.fs.capabilities.streamingRead !== false) {\n let emitted = false;\n let reading = true;\n try {\n for await (const chunk of readBytes(context.fs.readStream(path, { signal: context.signal }), context.signal)) {\n reading = false;\n if (chunk.byteLength) emitted = true;\n yield chunk;\n reading = true;\n }\n return;\n } catch (error) {\n context.signal.throwIfAborted();\n if (!reading || emitted || !(error instanceof FsError) || error.code !== \"ENOTSUP\") throw error;\n }\n }\n yield* readBytes({\n async *[Symbol.asyncIterator]() {\n const bytes = await context.fs.readFile(path, { signal: context.signal, maxBytes: bufferLimit });\n context.signal.throwIfAborted();\n if (bytes.byteLength > bufferLimit) throw new FsError(\"EFBIG\", { syscall: \"readFile\", path });\n yield bytes;\n },\n }, context.signal);\n }\n}\n\nexport function concatenate(chunks: readonly Uint8Array[], size = chunks.reduce((sum, chunk) => sum + chunk.length, 0)): Uint8Array {\n const result = new Uint8Array(size);\n let offset = 0;\n for (const chunk of chunks) { result.set(chunk, offset); offset += chunk.length; }\n return result;\n}\n\nexport async function collect(source: ByteSource, signal: AbortSignal, limit = bufferLimit): Promise<Uint8Array> {\n const chunks: Uint8Array[] = [];\n let size = 0;\n for await (const chunk of source) {\n signal.throwIfAborted();\n size += chunk.length;\n if (size > limit) throw new FsError(\"EFBIG\", { message: `buffer limit exceeded (${limit} bytes)` });\n chunks.push(new Uint8Array(chunk));\n }\n return concatenate(chunks, size);\n}\n\nexport interface Line { readonly bytes: Uint8Array; readonly terminated: boolean }\n\nexport async function* lines(source: ByteSource, separator = 10): AsyncGenerator<Line> {\n let pending: Uint8Array[] = [];\n let size = 0;\n for await (const chunk of source) {\n let start = 0;\n for (let offset = 0; offset < chunk.length; offset++) {\n if (chunk[offset] !== separator) continue;\n const part = chunk.slice(start, offset);\n size += part.length;\n if (size > bufferLimit) throw new FsError(\"EFBIG\", { message: \"line buffer limit exceeded\" });\n pending.push(part);\n yield { bytes: concatenate(pending, size), terminated: true };\n pending = [];\n size = 0;\n start = offset + 1;\n }\n if (start < chunk.length) {\n pending.push(new Uint8Array(chunk.subarray(start)));\n size += chunk.length - start;\n if (size > bufferLimit) throw new FsError(\"EFBIG\", { message: \"line buffer limit exceeded\" });\n }\n }\n if (size) yield { bytes: concatenate(pending, size), terminated: false };\n}\n\nexport function emptyInput(): ByteSource { return toByteSource(\"\"); }\n\nexport function replaceArgument(source: string | Uint8Array, pattern: string, replacement: string): string | Uint8Array {\n if (typeof source === \"string\") return source.split(pattern).join(replacement);\n const needle = encoder.encode(pattern);\n if (!needle.length) throw new UsageError(\"replacement string cannot be empty\");\n const substituted = encoder.encode(replacement);\n const chunks: Uint8Array[] = [];\n let start = 0;\n for (let offset = 0; offset <= source.length - needle.length;) {\n if (needle.every((byte, index) => source[offset + index] === byte)) {\n chunks.push(source.subarray(start, offset), substituted);\n offset += needle.length;\n start = offset;\n } else offset++;\n }\n chunks.push(source.subarray(start));\n return concatenate(chunks);\n}\n\nexport function escapeBytes(text: string | Uint8Array, zeroOctal = false, bareOctal = false): { bytes: Uint8Array; stop: boolean } {\n if (typeof text === \"string\") {\n const chunks: Uint8Array[] = [];\n const control: Record<string, number> = { a: 7, b: 8, e: 27, E: 27, f: 12, n: 10, r: 13, t: 9, v: 11, \"\\\\\": 92 };\n for (let index = 0; index < text.length;) {\n if (text[index] !== \"\\\\\" || index + 1 === text.length) {\n const character = String.fromCodePoint(text.codePointAt(index)!);\n chunks.push(encoder.encode(character)); index += character.length; continue;\n }\n const next = text[index + 1]!;\n if (next === \"c\") return { bytes: concatenate(chunks), stop: true };\n if (control[next] !== undefined) { chunks.push(Uint8Array.of(control[next])); index += 2; continue; }\n const rest = text.slice(index + 1);\n const octal = zeroOctal ? (bareOctal ? /^(?:0([0-7]{0,3})|([1-7][0-7]{0,2}))/u : /^0([0-7]{0,3})/u).exec(rest) : /^([0-7]{1,3})/u.exec(rest);\n if (octal) { chunks.push(Uint8Array.of(parseInt(octal[1] || octal[2] || \"0\", 8) & 255)); index += 1 + octal[0].length; continue; }\n const hexadecimal = /^x([0-9a-fA-F]{1,2})/u.exec(rest);\n if (hexadecimal) { chunks.push(Uint8Array.of(parseInt(hexadecimal[1]!, 16))); index += 1 + hexadecimal[0].length; continue; }\n chunks.push(encoder.encode(`\\\\${next}`)); index += 2;\n }\n return { bytes: concatenate(chunks), stop: false };\n }\n const source = text;\n const bytes = new Uint8Array(source.length);\n const control: Record<number, number> = { 97: 7, 98: 8, 101: 27, 69: 27, 102: 12, 110: 10, 114: 13, 116: 9, 118: 11, 92: 92 };\n let size = 0;\n for (let index = 0; index < source.length;) {\n if (source[index] !== 92 || index + 1 === source.length) { bytes[size++] = source[index++]!; continue; }\n const next = source[index + 1]!;\n if (next === 99) return { bytes: bytes.subarray(0, size), stop: true };\n if (control[next] !== undefined) { bytes[size++] = control[next]; index += 2; continue; }\n if (zeroOctal ? next === 48 || bareOctal && next >= 49 && next <= 55 : next >= 48 && next <= 55) {\n let offset = index + (zeroOctal && next === 48 ? 2 : 1);\n const end = Math.min(source.length, offset + 3);\n let value = 0;\n while (offset < end && source[offset]! >= 48 && source[offset]! <= 55) value = value * 8 + source[offset++]! - 48;\n bytes[size++] = value & 255;\n index = offset;\n continue;\n }\n if (next === 120) {\n let offset = index + 2;\n const end = Math.min(source.length, offset + 2);\n let value = 0;\n while (offset < end) {\n const digit = source[offset]!;\n const number = digit >= 48 && digit <= 57 ? digit - 48 : digit >= 65 && digit <= 70 ? digit - 55 : digit >= 97 && digit <= 102 ? digit - 87 : -1;\n if (number < 0) break;\n value = value * 16 + number;\n offset++;\n }\n if (offset > index + 2) { bytes[size++] = value; index = offset; continue; }\n }\n bytes[size++] = 92;\n bytes[size++] = next;\n index += 2;\n }\n return { bytes: bytes.subarray(0, size), stop: false };\n}\n", "import {\n basename, dirname, FsError, isPathWithin, joinPath, relativePath,\n type CommandContext, type CommandDefinition, type FileStat,\n} from \"../contracts/index.js\";\nimport { codeOf, define, eachOperand, options, output, pathOf, requireOperands, UsageError, value } from \"./internal.js\";\nimport { compareCopyIdentity, compareObservedEntries } from \"./copy-identity.js\";\nimport { MoveBudget, moveAcrossDevices } from \"./move.js\";\n\nasync function maybeStat(context: CommandContext, path: string, follow = true): Promise<FileStat | undefined> {\n try { return await context.fs[follow ? \"stat\" : \"lstat\"](path, { signal: context.signal }); }\n catch (error) { context.signal.throwIfAborted(); if (codeOf(error) === \"ENOENT\") return undefined; throw error; }\n}\n\nasync function canonicalMissing(context: CommandContext, path: string): Promise<string> {\n try { return await context.fs.realpath(path, { signal: context.signal }); }\n catch (error) {\n context.signal.throwIfAborted();\n if (codeOf(error) !== \"ENOENT\" || path === \"/\") throw error;\n const link = await maybeStat(context, path, false);\n if (link?.type === \"symlink\") throw error;\n return joinPath(await canonicalMissing(context, dirname(path)), basename(path));\n }\n}\n\nfunction needCapability(context: CommandContext, capability: \"symlink\" | \"link\" | \"readlink\" | \"utimes\"): void {\n if (!context.fs[capability]) throw new FsError(\"ENOTSUP\", { syscall: capability });\n}\n\nasync function removeEmptyDirectory(context: CommandContext, path: string): Promise<void> {\n context.signal.throwIfAborted();\n if (!context.fs.rmdir) throw new FsError(\"ENOTSUP\", { syscall: \"rmdir\", path });\n await context.fs.rmdir(path, { signal: context.signal });\n}\n\nasync function destinations(context: CommandContext, operands: readonly string[]) {\n requireOperands(operands, 2);\n const target = pathOf(context, operands.at(-1)!);\n const directory = (await maybeStat(context, target))?.type === \"directory\";\n if (operands.length > 2 && !directory) throw new FsError(\"ENOTDIR\", { path: target });\n return { target, directory, sources: operands.slice(0, -1) };\n}\n\nasync function copy(\n context: CommandContext, source: string, target: string,\n flags: ReadonlySet<string>, top = true, ancestors = new Set<string>(),\n): Promise<void> {\n context.signal.throwIfAborted();\n const link = await context.fs.lstat(source, { signal: context.signal });\n const preserveLink = link.type === \"symlink\" && !flags.has(\"L\") && (flags.has(\"P\") || !top);\n const sourceStat = preserveLink ? link : await context.fs.stat(source, { signal: context.signal });\n const targetStat = await maybeStat(context, target, !preserveLink);\n const physicalSource = preserveLink\n ? joinPath(await context.fs.realpath(dirname(source), { signal: context.signal }), basename(source))\n : await context.fs.realpath(source, { signal: context.signal });\n const physicalTarget = preserveLink\n ? joinPath(await context.fs.realpath(dirname(target), { signal: context.signal }), basename(target))\n : await canonicalMissing(context, target);\n if (physicalSource === physicalTarget || compareCopyIdentity(sourceStat, targetStat) === \"same\") {\n throw new FsError(\"EINVAL\", { path: source, dest: target, message: \"source and destination are the same file\" });\n }\n if (flags.has(\"n\") && await maybeStat(context, target, false)) return;\n if (!preserveLink && targetStat && await compareObservedEntries(context.fs, source, sourceStat, context.fs, target, targetStat, { signal: context.signal }) === \"same\") {\n throw new FsError(\"EINVAL\", { path: source, dest: target, message: \"source and destination are the same file\" });\n }\n if (sourceStat.type === \"directory\") {\n if (!flags.has(\"r\") && !flags.has(\"R\")) throw new FsError(\"EISDIR\", { path: source, message: \"omitting directory (use -R)\" });\n if (isPathWithin(physicalSource, physicalTarget)) throw new FsError(\"EINVAL\", { path: target, message: \"cannot copy a directory into itself\" });\n if (ancestors.has(physicalSource)) throw new FsError(\"ELOOP\", { path: source });\n if (targetStat && targetStat.type !== \"directory\") throw new FsError(\"ENOTDIR\", { path: target });\n if (!targetStat) await context.fs.mkdir(target, { mode: sourceStat.mode & 0o777, signal: context.signal });\n const next = new Set(ancestors).add(physicalSource);\n for (const entry of (await context.fs.readdir(source, { signal: context.signal })).sort((left, right) => left.name < right.name ? -1 : left.name > right.name ? 1 : 0)) {\n await copy(context, joinPath(source, entry.name), joinPath(target, entry.name), flags, false, next);\n }\n } else if (preserveLink) {\n needCapability(context, \"symlink\"); needCapability(context, \"readlink\");\n const linkTarget = await context.fs.readlink!(source, { signal: context.signal });\n const existing = await maybeStat(context, target, false);\n if (existing) {\n if (existing.type === \"directory\") throw new FsError(\"EISDIR\", { path: target });\n const sourceEntry = await context.fs.lstat(source, { signal: context.signal });\n const identity = compareCopyIdentity(sourceEntry, existing);\n if (identity === \"same\") throw new FsError(\"EINVAL\", { path: source, dest: target, message: \"source and destination are the same file\" });\n if (identity === \"unknown\") throw new FsError(\"ENOTSUP\", { path: source, dest: target, message: \"symbolic link copy unlink lacks authoritative distinctness\" });\n context.signal.throwIfAborted();\n await context.fs.rm(target, { recursive: false, signal: context.signal });\n }\n await context.fs.symlink!(linkTarget, target, { signal: context.signal });\n } else {\n if (targetStat?.type === \"directory\") throw new FsError(\"EISDIR\", { path: target });\n try { await context.fs.copyFile(source, target, { signal: context.signal }); }\n catch (error) {\n context.signal.throwIfAborted();\n if (!flags.has(\"f\") || !targetStat || codeOf(error) !== \"EACCES\") throw error;\n const existing = await maybeStat(context, target, false);\n if (existing) {\n const sourceEntry = await context.fs.lstat(source, { signal: context.signal });\n const sourceContents = await context.fs.stat(source, { signal: context.signal });\n const contentsIdentity = existing.type === \"symlink\" ? compareCopyIdentity(sourceContents, existing)\n : await compareObservedEntries(context.fs, source, sourceContents, context.fs, target, existing, { signal: context.signal });\n const entryIdentity = sourceEntry.type === \"symlink\" ? compareCopyIdentity(sourceEntry, existing) : contentsIdentity;\n const identities = [entryIdentity, contentsIdentity];\n if (identities.includes(\"same\")) throw new FsError(\"EINVAL\", { path: source, dest: target, message: \"source and destination are the same file\" });\n if (identities.includes(\"unknown\")) throw new FsError(\"ENOTSUP\", { path: source, dest: target, message: \"forced copy unlink lacks authoritative distinctness\" });\n await context.fs.rm(target, { recursive: false, signal: context.signal });\n }\n await context.fs.copyFile(source, target, { exclusive: true, signal: context.signal });\n }\n }\n if (flags.has(\"v\")) await output(context, `'${source}' -> '${target}'\\n`);\n}\n\nfunction modeText(stat: FileStat): string {\n let text = stat.type === \"directory\" ? \"d\" : stat.type === \"symlink\" ? \"l\" : \"-\";\n for (const shift of [6, 3, 0]) {\n const mode = stat.mode >> shift;\n text += (mode & 4 ? \"r\" : \"-\") + (mode & 2 ? \"w\" : \"-\") + (mode & 1 ? \"x\" : \"-\");\n }\n if (stat.mode & 0o4000) text = text.slice(0, 3) + (stat.mode & 0o100 ? \"s\" : \"S\") + text.slice(4);\n if (stat.mode & 0o2000) text = text.slice(0, 6) + (stat.mode & 0o010 ? \"s\" : \"S\") + text.slice(7);\n if (stat.mode & 0o1000) text = text.slice(0, 9) + (stat.mode & 0o001 ? \"t\" : \"T\");\n return text;\n}\n\nexport function filesystemCommands(): CommandDefinition[] {\n return [\n define(\"mkdir\", async context => {\n const parsed = options(context.args, \"pm:v\", { parents: \"p\", mode: \"m\", verbose: \"v\" });\n requireOperands(parsed.operands);\n const mode = value(parsed, \"m\");\n if (mode !== undefined && !/^[0-7]{1,4}$/u.test(mode)) throw new UsageError(`invalid mode '${mode}' (octal required)`);\n return eachOperand(context, parsed.operands, async operand => {\n await context.fs.mkdir(pathOf(context, operand), { recursive: parsed.flags.has(\"p\"), ...(mode === undefined ? {} : { mode: parseInt(mode, 8) }), signal: context.signal });\n if (parsed.flags.has(\"v\")) await output(context, `mkdir: created directory '${operand}'\\n`);\n });\n }),\n define(\"touch\", async context => {\n const parsed = options(context.args, \"camr:\", { \"no-create\": \"c\", reference: \"r\" });\n requireOperands(parsed.operands);\n const reference = value(parsed, \"r\");\n const times = reference === undefined ? undefined : await context.fs.stat(pathOf(context, reference), { signal: context.signal });\n const now = Date.now();\n return eachOperand(context, parsed.operands, async operand => {\n const path = pathOf(context, operand);\n let existing = await maybeStat(context, path);\n if (!existing) {\n if (parsed.flags.has(\"c\")) return;\n if (reference !== undefined) needCapability(context, \"utimes\");\n await context.fs.writeFile(path, new Uint8Array(), { flag: \"wx\", signal: context.signal });\n if (reference === undefined) return;\n existing = await context.fs.stat(path, { signal: context.signal });\n }\n needCapability(context, \"utimes\");\n const accessOnly = parsed.flags.has(\"a\") && !parsed.flags.has(\"m\");\n const modifyOnly = parsed.flags.has(\"m\") && !parsed.flags.has(\"a\");\n await context.fs.utimes!(path, modifyOnly ? existing.atimeMs : times?.atimeMs ?? now,\n accessOnly ? existing.mtimeMs : times?.mtimeMs ?? now, { signal: context.signal });\n });\n }),\n define(\"cp\", async context => {\n const parsed = options(context.args, \"rRfnvPL\", { recursive: \"R\", force: \"f\", \"no-clobber\": \"n\", verbose: \"v\", dereference: \"L\", \"no-dereference\": \"P\" });\n if (parsed.flags.has(\"P\") && parsed.flags.has(\"L\")) throw new UsageError(\"-P and -L cannot be combined\");\n const destination = await destinations(context, parsed.operands);\n return eachOperand(context, destination.sources, async operand => {\n const source = pathOf(context, operand);\n await copy(context, source, destination.directory ? joinPath(destination.target, basename(source)) : destination.target, parsed.flags);\n });\n }),\n define(\"mv\", async context => {\n const parsed = options(context.args, \"fnv\", { force: \"f\", \"no-clobber\": \"n\", verbose: \"v\" });\n const destination = await destinations(context, parsed.operands);\n const budget = new MoveBudget(context.signal);\n return eachOperand(context, destination.sources, async operand => {\n const source = pathOf(context, operand);\n const target = destination.directory ? joinPath(destination.target, basename(source)) : destination.target;\n if (parsed.flags.has(\"n\") && await maybeStat(context, target, false)) return;\n try { await context.fs.rename(source, target, { signal: context.signal }); }\n catch (error) {\n context.signal.throwIfAborted();\n if (codeOf(error) !== \"EXDEV\") throw error;\n if (!await moveAcrossDevices(context, source, target, parsed.flags.has(\"n\"), budget)) {\n if (!parsed.flags.has(\"n\")) throw new FsError(\"EINVAL\", { path: source, dest: target, message: \"source and destination are the same file\" });\n return;\n }\n }\n if (parsed.flags.has(\"v\")) await output(context, `'${operand}' -> '${target}'\\n`);\n });\n }),\n define(\"rm\", async context => {\n const parsed = options(context.args, \"rRfdv\", { recursive: \"r\", force: \"f\", dir: \"d\", verbose: \"v\" });\n if (!parsed.flags.has(\"f\")) requireOperands(parsed.operands);\n return eachOperand(context, parsed.operands, async operand => {\n const path = pathOf(context, operand);\n if (path === \"/\" || [\".\", \"..\"].includes(operand.replace(/\\/+$/u, \"\").split(\"/\").at(-1)!)) throw new FsError(\"EBUSY\", { path, message: \"refusing to remove root, '.' or '..'\" });\n const stat = await maybeStat(context, path, false);\n if (!stat) {\n if (parsed.flags.has(\"f\")) return;\n throw new FsError(\"ENOENT\", { path });\n }\n const recursive = parsed.flags.has(\"r\") || parsed.flags.has(\"R\");\n if (stat.type === \"directory\" && !recursive && !parsed.flags.has(\"d\")) throw new FsError(\"EISDIR\", { path });\n if (stat.type === \"directory\" && !recursive) {\n try { await removeEmptyDirectory(context, path); }\n catch (error) {\n context.signal.throwIfAborted();\n if (!parsed.flags.has(\"f\") || codeOf(error) !== \"ENOENT\") throw error;\n }\n } else {\n await context.fs.rm(path, { recursive, force: parsed.flags.has(\"f\"), signal: context.signal });\n }\n if (parsed.flags.has(\"v\")) await output(context, `removed '${operand}'\\n`);\n });\n }),\n define(\"rmdir\", async context => {\n const parsed = options(context.args, \"pv\", { parents: \"p\", verbose: \"v\" });\n requireOperands(parsed.operands);\n return eachOperand(context, parsed.operands, async operand => {\n let path = pathOf(context, operand);\n const stop = dirname(pathOf(context, operand.split(\"/\").find(part => part && part !== \".\") ?? operand));\n do {\n if (path === \"/\") throw new FsError(\"EBUSY\", { path });\n await removeEmptyDirectory(context, path);\n if (parsed.flags.has(\"v\")) await output(context, `rmdir: removing directory '${path}'\\n`);\n path = dirname(path);\n } while (parsed.flags.has(\"p\") && path !== \"/\" && path !== stop);\n });\n }),\n define(\"ln\", async context => {\n const parsed = options(context.args, \"sfnT\", { symbolic: \"s\", force: \"f\", \"no-dereference\": \"n\", \"no-target-directory\": \"T\" });\n requireOperands(parsed.operands);\n if (parsed.flags.has(\"T\")) requireOperands(parsed.operands, 2, 2);\n const operands = parsed.operands.length === 1 ? [...parsed.operands, \".\"] : parsed.operands;\n const target = pathOf(context, operands.at(-1)!);\n const directory = !parsed.flags.has(\"T\") && (await maybeStat(context, target, !parsed.flags.has(\"n\")))?.type === \"directory\";\n if (operands.length > 2 && !directory) throw new FsError(\"ENOTDIR\", { path: target });\n const symbolic = parsed.flags.has(\"s\");\n needCapability(context, symbolic ? \"symlink\" : \"link\");\n return eachOperand(context, operands.slice(0, -1), async operand => {\n const destination = directory ? joinPath(target, basename(operand)) : target;\n const source = pathOf(context, operand);\n if (!symbolic && source === destination) throw new FsError(\"EEXIST\", { path: destination });\n const existing = await maybeStat(context, destination, false);\n if (existing && parsed.flags.has(\"f\")) {\n if (existing.type === \"directory\") throw new FsError(\"EISDIR\", { path: destination });\n if (!symbolic) {\n await context.fs.stat(source, { signal: context.signal });\n const sourceEntry = joinPath(await context.fs.realpath(dirname(source), { signal: context.signal }), basename(source));\n const targetEntry = joinPath(await context.fs.realpath(dirname(destination), { signal: context.signal }), basename(destination));\n if (sourceEntry === targetEntry) throw new FsError(\"EEXIST\", { path: destination, message: \"source and destination are the same file\" });\n }\n await context.fs.rm(destination, { signal: context.signal });\n }\n if (symbolic) await context.fs.symlink!(operand, destination, { signal: context.signal });\n else await context.fs.link!(source, destination, { signal: context.signal });\n });\n }),\n define(\"readlink\", async context => {\n const parsed = options(context.args, \"fenz\", { canonicalize: \"f\", \"canonicalize-existing\": \"e\", zero: \"z\", \"no-newline\": \"n\" });\n requireOperands(parsed.operands);\n return eachOperand(context, parsed.operands, async operand => {\n const path = pathOf(context, operand);\n let result: string;\n if (parsed.flags.has(\"e\")) result = await context.fs.realpath(path, { signal: context.signal });\n else if (parsed.flags.has(\"f\")) {\n const existing = await maybeStat(context, path, false);\n result = existing ? await context.fs.realpath(path, { signal: context.signal }) : joinPath(await context.fs.realpath(dirname(path), { signal: context.signal }), basename(path));\n } else {\n needCapability(context, \"readlink\");\n result = await context.fs.readlink!(path, { signal: context.signal });\n }\n await output(context, result + (parsed.flags.has(\"n\") ? \"\" : parsed.flags.has(\"z\") ? \"\\0\" : \"\\n\"));\n });\n }),\n define(\"realpath\", async context => {\n const args: string[] = [];\n const relative = new Map<string, string>();\n let ended = false;\n for (let index = 0; index < context.args.length; index++) {\n const argument = context.args[index]!;\n if (argument === \"--\") ended = true;\n const key = argument.split(\"=\", 1)[0]!;\n if (!ended && (key === \"--relative-to\" || key === \"--relative-base\")) {\n const equals = argument.indexOf(\"=\");\n const directory = equals < 0 ? context.args[++index] : argument.slice(equals + 1);\n if (directory === undefined) throw new UsageError(`option '${key}' requires an argument`);\n relative.set(key, directory);\n } else args.push(argument);\n }\n const parsed = options(args, \"emz\", { \"canonicalize-existing\": \"e\", \"canonicalize-missing\": \"m\", zero: \"z\" });\n requireOperands(parsed.operands);\n const canonical = async (operand: string): Promise<string> => {\n const path = pathOf(context, operand);\n const existing = await maybeStat(context, path, false);\n return parsed.flags.has(\"m\") ? await canonicalMissing(context, path)\n : parsed.flags.has(\"e\") || existing ? await context.fs.realpath(path, { signal: context.signal })\n : joinPath(await context.fs.realpath(dirname(path), { signal: context.signal }), basename(path));\n };\n const baseOperand = relative.get(\"--relative-base\");\n const toOperand = relative.get(\"--relative-to\") ?? baseOperand;\n const base = baseOperand === undefined ? undefined : await canonical(baseOperand);\n const to = toOperand === undefined ? undefined : await canonical(toOperand);\n return eachOperand(context, parsed.operands, async operand => {\n const resolved = await canonical(operand);\n const display = to !== undefined && (base === undefined || isPathWithin(base, to) && isPathWithin(base, resolved))\n ? relativePath(to, resolved) || \".\" : resolved;\n await output(context, display + (parsed.flags.has(\"z\") ? \"\\0\" : \"\\n\"));\n });\n }),\n define(\"ls\", async context => {\n const parsed = options(context.args, \"aAl1dFprRL\", { all: \"a\", \"almost-all\": \"A\", directory: \"d\", classify: \"F\", reverse: \"r\", recursive: \"R\", dereference: \"L\" });\n const operands = parsed.operands.length ? parsed.operands : [\".\"];\n let headerWritten = false;\n const render = async (path: string, display: string) => {\n const stat = await context.fs[parsed.flags.has(\"L\") ? \"stat\" : \"lstat\"](path, { signal: context.signal });\n let suffix = stat.type === \"directory\" && (parsed.flags.has(\"F\") || parsed.flags.has(\"p\")) ? \"/\" : \"\";\n if (parsed.flags.has(\"F\") && stat.type === \"symlink\") suffix = \"@\";\n else if (parsed.flags.has(\"F\") && stat.type === \"file\" && stat.mode & 0o111) suffix = \"*\";\n if (parsed.flags.has(\"l\")) {\n const date = new Date(stat.mtimeMs).toISOString().slice(0, 16).replace(\"T\", \" \");\n let target = \"\";\n if (stat.type === \"symlink\") { needCapability(context, \"readlink\"); target = ` -> ${await context.fs.readlink!(path, { signal: context.signal })}`; }\n await output(context, `${modeText(stat)} ${stat.nlink ?? 1} ${stat.uid ?? 0} ${stat.gid ?? 0} ${stat.size} ${date} ${display}${suffix}${target}\\n`);\n } else await output(context, `${display}${suffix}\\n`);\n };\n const list = async (path: string, display: string, header: boolean, ancestors = new Set<string>()): Promise<void> => {\n context.signal.throwIfAborted();\n const stat = await context.fs[parsed.flags.has(\"L\") || !parsed.flags.has(\"d\") && !parsed.flags.has(\"l\") ? \"stat\" : \"lstat\"](path, { signal: context.signal });\n if (stat.type !== \"directory\" || parsed.flags.has(\"d\")) { await render(path, display); return; }\n const physical = await context.fs.realpath(path, { signal: context.signal });\n if (ancestors.has(physical)) throw new FsError(\"ELOOP\", { path });\n const next = new Set(ancestors).add(physical);\n if (header) { await output(context, `${headerWritten ? \"\\n\" : \"\"}${display}:\\n`); headerWritten = true; }\n const entries = await context.fs.readdir(path, { signal: context.signal });\n const names = entries.map(entry => entry.name).filter(name => parsed.flags.has(\"a\") || parsed.flags.has(\"A\") || !name.startsWith(\".\"));\n if (parsed.flags.has(\"a\")) names.push(\".\", \"..\");\n names.sort();\n if (parsed.flags.has(\"r\")) names.reverse();\n for (const name of names) await render(joinPath(path, name), name);\n if (parsed.flags.has(\"R\")) for (const name of names) {\n if (name === \".\" || name === \"..\") continue;\n const child = joinPath(path, name);\n const childStat = await context.fs[parsed.flags.has(\"L\") ? \"stat\" : \"lstat\"](child, { signal: context.signal });\n if (childStat.type === \"directory\") await list(child, `${display.replace(/\\/$/u, \"\")}/${name}`, true, next);\n }\n };\n return eachOperand(context, operands, operand => list(pathOf(context, operand), operand, operands.length > 1 || parsed.flags.has(\"R\")));\n }),\n ];\n}\n", "import { FsError, type EntryComparison, type FileStat, type FileSystem, type FsOptions } from \"../contracts/index.js\";\n\nfunction complete(stat: FileStat): boolean {\n return ((typeof stat.identityScope === \"object\" && stat.identityScope !== null) || typeof stat.identityScope === \"symbol\")\n && typeof stat.dev === \"number\" && Number.isSafeInteger(stat.dev) && stat.dev >= 0\n && typeof stat.ino === \"number\" && Number.isSafeInteger(stat.ino) && stat.ino >= 0;\n}\n\nexport function compareCopyIdentity(left: FileStat | undefined, right: FileStat | undefined): \"same\" | \"distinct\" | \"unknown\" {\n if (!left || !right || !complete(left) || !complete(right)) return \"unknown\";\n return left.identityScope === right.identityScope && left.dev === right.dev && left.ino === right.ino ? \"same\" : \"distinct\";\n}\n\nexport async function compareObservedEntries(\n fs: FileSystem, path: string, stat: FileStat,\n peer: FileSystem, peerPath: string, peerStat: FileStat,\n options: FsOptions = {},\n): Promise<EntryComparison> {\n options.signal?.throwIfAborted();\n const identity = compareCopyIdentity(stat, peerStat);\n if (identity !== \"unknown\") return identity;\n let result: EntryComparison = \"unknown\";\n const operands: readonly [FileSystem, string, FileSystem, string][] = fs === peer\n ? [[fs, path, peer, peerPath]]\n : [[fs, path, peer, peerPath], [peer, peerPath, fs, path]];\n for (const [owner, ownPath, other, otherPath] of operands) {\n options.signal?.throwIfAborted();\n if (!owner.compareEntry) continue;\n let answer: EntryComparison;\n try { answer = await owner.compareEntry(ownPath, other, otherPath, options); }\n catch (error) { options.signal?.throwIfAborted(); throw error; }\n options.signal?.throwIfAborted();\n if (answer !== \"same\" && answer !== \"distinct\" && answer !== \"unknown\") {\n throw new FsError(\"EIO\", { path, dest: peerPath, message: \"invalid entry comparison answer\" });\n }\n if (answer === \"unknown\") continue;\n if (result !== \"unknown\" && result !== answer) {\n throw new FsError(\"EIO\", { path, dest: peerPath, message: \"conflicting entry comparison answers\" });\n }\n result = answer;\n }\n return result;\n}\n", "import { dirname, FsError, isPathWithin, joinPath, type CommandContext, type FileStat } from \"../contracts/index.js\";\nimport { compareCopyIdentity, compareObservedEntries } from \"./copy-identity.js\";\nimport { codeOf, diagnostic } from \"./internal.js\";\n\ninterface MoveEntry {\n readonly source: string;\n readonly target: string;\n readonly stat: FileStat;\n readonly targetStat: FileStat | undefined;\n readonly link: string | undefined;\n}\n\nexport class MoveBudget {\n private steps = 0;\n constructor(readonly signal: AbortSignal) {}\n get remaining(): number { return 100_000 - this.steps; }\n async step(): Promise<void> {\n this.signal.throwIfAborted();\n if (++this.steps > 100_000) throw new FsError(\"EFBIG\", { message: \"cross-device move entry limit exceeded\" });\n if (this.steps % 128 === 0) await new Promise<void>(resolve => setImmediate(resolve));\n this.signal.throwIfAborted();\n }\n}\n\nasync function optionalStat(context: CommandContext, path: string): Promise<FileStat | undefined> {\n try { return await context.fs.lstat(path, { signal: context.signal }); }\n catch (error) { context.signal.throwIfAborted(); if (codeOf(error) === \"ENOENT\") return undefined; throw error; }\n}\n\nfunction unchanged(before: FileStat, after: FileStat, content: boolean): boolean {\n const identity = compareCopyIdentity(before, after);\n const stableIdentity = compareCopyIdentity(before, before) === \"same\" ? identity === \"same\" : identity !== \"distinct\";\n return stableIdentity && before.type === after.type\n && (!content || (before.size === after.size && before.mtimeMs === after.mtimeMs && before.mode === after.mode));\n}\n\nasync function recheck(context: CommandContext, entry: MoveEntry, content = true): Promise<void> {\n context.signal.throwIfAborted();\n const current = await context.fs.lstat(entry.source, { signal: context.signal });\n if (!unchanged(entry.stat, current, content)) throw new FsError(\"EBUSY\", { path: entry.source, message: \"move source changed before removal\" });\n}\n\nexport async function moveAcrossDevices(context: CommandContext, source: string, target: string, noClobber: boolean, budget: MoveBudget): Promise<boolean> {\n const plan: MoveEntry[] = [];\n const sourceStat = await context.fs.lstat(source, { signal: context.signal });\n const targetStat = await optionalStat(context, target);\n if (noClobber && targetStat) return false;\n if (source === target || compareCopyIdentity(sourceStat, targetStat) === \"same\") return false;\n const compare = (origin: string, destination: string, stat: FileStat, existing: FileStat) =>\n stat.type === \"symlink\" || existing.type === \"symlink\" ? Promise.resolve(compareCopyIdentity(stat, existing))\n : compareObservedEntries(context.fs, origin, stat, context.fs, destination, existing, { signal: context.signal });\n const rootIdentity = targetStat ? await compare(source, target, sourceStat, targetStat) : \"unknown\";\n if (rootIdentity === \"same\") return false;\n if (source === \"/\") throw new FsError(\"EBUSY\", { path: source });\n if (sourceStat.type === \"directory\") {\n if (!context.fs.rmdir) throw new FsError(\"ENOTSUP\", { syscall: \"rmdir\", path: source });\n if (isPathWithin(source, target)) throw new FsError(\"EINVAL\", { path: target, message: \"cannot move a directory into itself\" });\n let parent = dirname(target);\n while (true) {\n await budget.step();\n const parentStat = await optionalStat(context, parent);\n if (compareCopyIdentity(sourceStat, parentStat) === \"same\") throw new FsError(\"EINVAL\", { path: target, message: \"cannot move a directory into itself\" });\n if (parent === \"/\") break;\n parent = dirname(parent);\n }\n }\n const visit = async (origin: string, destination: string, stat: FileStat, existing: FileStat | undefined, depth: number): Promise<void> => {\n await budget.step();\n if (depth > 128) throw new FsError(\"EFBIG\", { message: \"cross-device move depth limit exceeded\" });\n if (existing) {\n const identity = depth === 0 ? rootIdentity : await compare(origin, destination, stat, existing);\n if (identity === \"same\") throw new FsError(\"EINVAL\", { path: origin, dest: destination, message: \"move source and destination are aliases\" });\n if (identity === \"unknown\") throw new FsError(\"ENOTSUP\", { path: origin, dest: destination, message: \"existing move destination lacks authoritative distinctness\" });\n if ((stat.type === \"directory\") !== (existing.type === \"directory\")) throw new FsError(existing.type === \"directory\" ? \"EISDIR\" : \"ENOTDIR\", { path: destination });\n if (stat.type === \"directory\" && (await context.fs.readdir(destination, { signal: context.signal })).length) throw new FsError(\"ENOTEMPTY\", { path: destination });\n }\n let link: string | undefined;\n if (stat.type === \"symlink\") {\n if (!context.fs.readlink || !context.fs.symlink) throw new FsError(\"ENOTSUP\", { syscall: \"symlink\", path: origin });\n link = await context.fs.readlink(origin, { signal: context.signal });\n }\n plan.push({ source: origin, target: destination, stat, targetStat: existing, link });\n if (stat.type === \"directory\") {\n const entries = await context.fs.readdir(origin, { signal: context.signal });\n if (entries.length > budget.remaining) throw new FsError(\"EFBIG\", { message: \"cross-device move entry limit exceeded\" });\n for (const entry of entries.sort((left, right) => left.name < right.name ? -1 : left.name > right.name ? 1 : 0)) {\n const child = joinPath(origin, entry.name), childTarget = joinPath(destination, entry.name);\n await visit(child, childTarget, await context.fs.lstat(child, { signal: context.signal }), await optionalStat(context, childTarget), depth + 1);\n }\n }\n };\n await visit(source, target, sourceStat, targetStat, 0);\n for (const entry of plan) {\n await recheck(context, entry);\n try {\n if (entry.stat.type === \"directory\") {\n if (!entry.targetStat) await context.fs.mkdir(entry.target, { mode: 0o700, signal: context.signal });\n } else if (entry.stat.type === \"symlink\") {\n if (entry.targetStat) await context.fs.rm(entry.target, { recursive: false, signal: context.signal });\n await context.fs.symlink!(entry.link!, entry.target, { signal: context.signal });\n } else {\n if (entry.targetStat?.type === \"symlink\") await context.fs.rm(entry.target, { recursive: false, signal: context.signal });\n await context.fs.copyFile(entry.source, entry.target, { exclusive: !entry.targetStat || entry.targetStat.type === \"symlink\", signal: context.signal });\n }\n } catch (error) {\n context.signal.throwIfAborted();\n if (noClobber && entry === plan[0] && !entry.targetStat && codeOf(error) === \"EEXIST\") return false;\n throw error;\n }\n }\n for (const entry of [...plan].reverse()) {\n context.signal.throwIfAborted();\n if (entry.stat.type !== \"symlink\") {\n if (context.fs.capabilities.permissions === true && context.fs.chmod) await context.fs.chmod(entry.target, entry.stat.mode & 0o7777, { signal: context.signal });\n if (context.fs.capabilities.timestamps === true && context.fs.utimes) {\n try { await context.fs.utimes(entry.target, entry.stat.atimeMs, entry.stat.mtimeMs, { signal: context.signal }); }\n catch (error) {\n context.signal.throwIfAborted();\n if (codeOf(error) !== \"ENOTSUP\" && codeOf(error) !== \"EOPNOTSUPP\") throw error;\n await diagnostic(context, new Error(`cannot preserve timestamps for '${entry.target}': operation not supported; retaining copied data`));\n }\n }\n }\n }\n for (const entry of plan) await recheck(context, entry);\n for (const entry of [...plan].reverse()) {\n await recheck(context, entry, entry.stat.type !== \"directory\");\n if (entry.stat.type === \"directory\") await context.fs.rmdir!(entry.source, { signal: context.signal });\n else await context.fs.rm(entry.source, { recursive: false, signal: context.signal });\n }\n return true;\n}\n", "import { type CommandContext, type CommandDefinition, type FileStat } from \"../contracts/index.js\";\nimport { codeOf, define, pathOf, UsageError } from \"./internal.js\";\n\ntype Predicate = () => Promise<boolean>;\n\nasync function metadata(context: CommandContext, path: string, link = false): Promise<FileStat | undefined> {\n try { return await context.fs[link ? \"lstat\" : \"stat\"](pathOf(context, path), { signal: context.signal }); }\n catch (error) {\n context.signal.throwIfAborted();\n if ([\"ENOENT\", \"ENOTDIR\", \"EACCES\", \"ELOOP\"].includes(codeOf(error) ?? \"\")) return undefined;\n throw error;\n }\n}\n\nexport function predicateCommands(): CommandDefinition[] {\n return [\"test\", \"[\"].map(name => define(name, async context => {\n const args = [...context.args];\n if (name === \"[\") {\n if (args.pop() !== \"]\") throw new UsageError(\"missing ']'\");\n }\n if (!args.length) return { exitCode: 1 };\n if (args.length === 1) return { exitCode: args[0] ? 0 : 1 };\n if (args.length === 2 && args[0] === \"!\") return { exitCode: args[1] ? 1 : 0 };\n const unary = new Set([\"-n\", \"-z\", \"-e\", \"-a\", \"-f\", \"-d\", \"-L\", \"-h\", \"-s\", \"-r\", \"-w\", \"-x\"]);\n const binary = new Set([\"=\", \"==\", \"!=\", \"<\", \">\", \"-eq\", \"-ne\", \"-lt\", \"-le\", \"-gt\", \"-ge\", \"-nt\", \"-ot\", \"-ef\"]);\n let offset = 0;\n const number = (text: string): bigint => {\n if (!/^[ \\t]*[+-]?[0-9]+[ \\t]*$/u.test(text)) throw new UsageError(`integer expression expected: '${text}'`);\n return BigInt(text.trim());\n };\n const primary = (): Predicate => {\n const token = args[offset++];\n if (token === undefined) throw new UsageError(\"argument expected\");\n if (token === \"!\" && !binary.has(args[offset] ?? \"\")) { const inner = primary(); return async () => !await inner(); }\n if (token === \"(\" && !binary.has(args[offset] ?? \"\")) {\n const inner = disjunction();\n if (args[offset++] !== \")\") throw new UsageError(\"missing ')'\");\n return inner;\n }\n const operator = args[offset];\n if (operator !== undefined && binary.has(operator)) {\n offset++;\n const right = args[offset++];\n if (right === undefined) throw new UsageError(\"binary operator requires two operands\");\n return async () => {\n if (operator === \"=\" || operator === \"==\") return token === right;\n if (operator === \"!=\") return token !== right;\n if (operator === \"<\") return token < right;\n if (operator === \">\") return token > right;\n if ([\"-nt\", \"-ot\", \"-ef\"].includes(operator)) {\n const leftStat = await metadata(context, token);\n const rightStat = await metadata(context, right);\n if (operator === \"-nt\") return leftStat !== undefined && (!rightStat || leftStat.mtimeMs > rightStat.mtimeMs);\n if (operator === \"-ot\") return rightStat !== undefined && (!leftStat || leftStat.mtimeMs < rightStat.mtimeMs);\n return leftStat?.ino !== undefined && rightStat?.ino !== undefined && leftStat.ino === rightStat.ino && leftStat.dev === rightStat.dev;\n }\n const leftNumber = number(token);\n const rightNumber = number(right);\n if (operator === \"-eq\") return leftNumber === rightNumber;\n if (operator === \"-ne\") return leftNumber !== rightNumber;\n if (operator === \"-lt\") return leftNumber < rightNumber;\n if (operator === \"-le\") return leftNumber <= rightNumber;\n if (operator === \"-gt\") return leftNumber > rightNumber;\n return leftNumber >= rightNumber;\n };\n }\n if (unary.has(token)) {\n const operand = args[offset++];\n if (operand === undefined) throw new UsageError(\"unary operator requires an operand\");\n return async () => {\n if (token === \"-n\") return operand !== \"\";\n if (token === \"-z\") return operand === \"\";\n if ([\"-r\", \"-w\", \"-x\"].includes(token)) {\n try { await context.fs.access(pathOf(context, operand), token === \"-r\" ? 4 : token === \"-w\" ? 2 : 1, { signal: context.signal }); return true; }\n catch (error) { context.signal.throwIfAborted(); if ([\"ENOENT\", \"ENOTDIR\", \"EACCES\", \"EROFS\"].includes(codeOf(error) ?? \"\")) return false; throw error; }\n }\n const stat = await metadata(context, operand, token === \"-L\" || token === \"-h\");\n if (!stat) return false;\n if (token === \"-f\") return stat.type === \"file\";\n if (token === \"-d\") return stat.type === \"directory\";\n if (token === \"-L\" || token === \"-h\") return stat.type === \"symlink\";\n if (token === \"-s\") return stat.size > 0;\n return true;\n };\n }\n return async () => token !== \"\";\n };\n const conjunction = (): Predicate => {\n let predicate = primary();\n while (args[offset] === \"-a\") {\n offset++;\n const left = predicate;\n const right = primary();\n predicate = async () => await left() && await right();\n }\n return predicate;\n };\n const disjunction = (): Predicate => {\n let predicate = conjunction();\n while (args[offset] === \"-o\") {\n offset++;\n const left = predicate;\n const right = conjunction();\n predicate = async () => await left() || await right();\n }\n return predicate;\n };\n const evaluate = disjunction();\n if (offset !== args.length) throw new UsageError(`unexpected argument '${args[offset]}'`);\n return { exitCode: await evaluate() ? 0 : 1 };\n }));\n}\n", "import { createOutputOperation, FsError, type ByteSource, type CommandContext, type CommandDefinition } from \"../contracts/index.js\";\nimport {\n bufferLimit, concatenate, define, diagnostic, encoder, escapeBytes, input, integer,\n lines, options, output, pathOf, UsageError, value,\n} from \"./internal.js\";\n\nasync function* combinedInput(context: CommandContext, names: readonly string[], state: { exitCode: number }): ByteSource {\n for (const name of names.length ? names : [\"-\"]) {\n try { yield* input(context, name); }\n catch (error) { await diagnostic(context, error); state.exitCode = 1; }\n }\n}\n\nasync function prefix(context: CommandContext, source: ByteSource, count: number, bytes: boolean, skip: boolean): Promise<void> {\n let remaining = count;\n if (!remaining && !skip) return;\n for await (const chunk of source) {\n context.signal.throwIfAborted();\n let offset = 0;\n if (remaining) {\n if (bytes) { offset = Math.min(chunk.length, remaining); remaining -= offset; }\n else {\n for (; offset < chunk.length && remaining; offset++) if (chunk[offset] === 10) remaining--;\n }\n }\n if (skip) { if (!remaining && offset < chunk.length) await output(context, chunk.subarray(offset)); }\n else {\n if (offset) await output(context, chunk.subarray(0, offset));\n if (!remaining) return;\n }\n }\n}\n\nasync function suffix(context: CommandContext, source: ByteSource, count: number, bytes: boolean, omit: boolean): Promise<void> {\n let pending: Uint8Array[] = [];\n let start = 0;\n let size = 0;\n const records: ByteSource = bytes ? source : (async function* () {\n for await (const line of lines(source)) yield line.terminated ? concatenate([line.bytes, Uint8Array.of(10)]) : line.bytes;\n })();\n for await (const chunk of records) {\n context.signal.throwIfAborted();\n if (bytes && !chunk.length) continue;\n pending.push(new Uint8Array(chunk));\n size += chunk.length;\n if (bytes) {\n let excess = Math.max(0, size - count);\n while (excess && start < pending.length) {\n const first = pending[start]!;\n const consume = Math.min(excess, first.length);\n if (omit) await output(context, first.subarray(0, consume));\n if (consume === first.length) delete pending[start++];\n else {\n const remaining = first.subarray(consume);\n pending[start] = remaining.length * 2 <= first.buffer.byteLength ? new Uint8Array(remaining) : remaining;\n }\n size -= consume; excess -= consume;\n }\n } else while (pending.length - start > count) {\n const first = pending[start++]!;\n size -= first.length;\n if (omit) await output(context, first);\n }\n if (size > bufferLimit) throw new FsError(\"EFBIG\", { message: \"tail buffer limit exceeded\" });\n if (start > 1024) { pending = pending.slice(start); start = 0; }\n }\n if (!omit) for (const chunk of pending.slice(start)) await output(context, chunk);\n}\n\nfunction wcUtf8(consume: (point: number | undefined) => void) {\n let remaining = 0;\n let lead = 0;\n let point = 0;\n let first = false;\n return {\n write(bytes: Uint8Array): void {\n for (const byte of bytes) {\n if (remaining) {\n const continuation = byte >= 0x80 && byte <= 0xbf\n && (!first || (lead !== 0xe0 || byte >= 0xa0) && (lead !== 0xed || byte <= 0x9f)\n && (lead !== 0xf0 || byte >= 0x90) && (lead !== 0xf4 || byte <= 0x8f));\n if (continuation) {\n point = point * 64 + (byte & 0x3f);\n first = false;\n if (--remaining === 0) consume(point);\n continue;\n }\n consume(undefined);\n remaining = 0;\n }\n if (byte < 0x80) consume(byte);\n else if (byte >= 0xc2 && byte <= 0xf4) {\n lead = byte;\n remaining = byte < 0xe0 ? 1 : byte < 0xf0 ? 2 : 3;\n point = byte & (remaining === 1 ? 0x1f : remaining === 2 ? 0x0f : 0x07);\n first = true;\n } else consume(undefined);\n }\n },\n finish(): void { if (remaining) consume(undefined); remaining = 0; },\n };\n}\n\nfunction wcSpace(point: number, posix: boolean): boolean {\n return point === 32 || point >= 9 && point <= 13 || point === 0xa0 || point === 0x1680\n || point >= 0x2000 && point <= 0x200a || point === 0x2028 || point === 0x2029\n || point === 0x202f || point === 0x205f || point === 0x3000 || !posix && point === 0x2060;\n}\n\nfunction headTail(name: \"head\" | \"tail\"): CommandDefinition {\n return define(name, async context => {\n const args = context.args[0] && /^-[0-9]+$/u.test(context.args[0]) ? [\"-n\", context.args[0].slice(1), ...context.args.slice(1)] : context.args;\n const parsed = options(args, \"n:c:qv\", { lines: \"n\", bytes: \"c\", quiet: \"q\", silent: \"q\", verbose: \"v\" });\n if (parsed.flags.has(\"n\") && parsed.flags.has(\"c\")) throw new UsageError(\"cannot combine line and byte counts\");\n const bytes = parsed.flags.has(\"c\");\n const amount = value(parsed, bytes ? \"c\" : \"n\") ?? \"10\";\n const positive = amount.startsWith(\"+\");\n const negative = amount.startsWith(\"-\");\n const count = integer(amount.replace(/^[+-]/u, \"\"));\n const names = parsed.operands.length ? parsed.operands : [\"-\"];\n let exitCode = 0;\n let headerWritten = false;\n for (const file of names) {\n try {\n if (file !== \"-\") {\n const path = pathOf(context, file);\n if ((await context.fs.stat(path, { signal: context.signal })).type === \"directory\") throw new FsError(\"EISDIR\", { path });\n await context.fs.access(path, 4, { signal: context.signal });\n }\n if (parsed.flags.has(\"v\") || names.length > 1 && !parsed.flags.has(\"q\")) {\n await output(context, `${headerWritten ? \"\\n\" : \"\"}==> ${file === \"-\" ? \"standard input\" : file} <==\\n`);\n headerWritten = true;\n }\n if (name === \"head\" && !negative) await prefix(context, input(context, file), count, bytes, false);\n else if (name === \"tail\" && positive) await prefix(context, input(context, file), Math.max(0, count - 1), bytes, true);\n else await suffix(context, input(context, file), count, bytes, name === \"head\");\n } catch (error) { await diagnostic(context, error); exitCode = 1; }\n }\n return { exitCode };\n });\n}\n\nfunction characterSet(specification: string): number[] {\n const classes: Record<string, number[]> = {\n lower: Array.from({ length: 26 }, (_, offset) => 97 + offset),\n upper: Array.from({ length: 26 }, (_, offset) => 65 + offset),\n digit: Array.from({ length: 10 }, (_, offset) => 48 + offset),\n space: [9, 10, 11, 12, 13, 32], blank: [9, 32],\n cntrl: [...Array.from({ length: 32 }, (_, offset) => offset), 127],\n graph: Array.from({ length: 94 }, (_, offset) => 33 + offset),\n print: Array.from({ length: 95 }, (_, offset) => 32 + offset),\n };\n classes.alpha = [...classes.upper!, ...classes.lower!];\n classes.alnum = [...classes.digit!, ...classes.alpha];\n classes.xdigit = [...classes.digit!, ...classes.upper!.slice(0, 6), ...classes.lower!.slice(0, 6)];\n classes.punct = classes.graph!.filter(byte => !classes.alnum!.includes(byte));\n const tokens: { bytes: number[]; literal: boolean }[] = [];\n for (let offset = 0; offset < specification.length;) {\n const classMatch = /^\\[:([a-z]+):\\]/u.exec(specification.slice(offset));\n if (classMatch) {\n const bytes = classes[classMatch[1]!];\n if (!bytes) throw new UsageError(`unknown character class '${classMatch[1]}'`);\n tokens.push({ bytes, literal: false }); offset += classMatch[0].length; continue;\n }\n if (specification.startsWith(\"[:\", offset)) throw new UsageError(\"unterminated character class\");\n if (specification[offset] === \"\\\\\") {\n const escape = /^\\\\(?:[0-7]{1,3}|x[0-9a-fA-F]{1,2}|.)/su.exec(specification.slice(offset));\n if (!escape) throw new UsageError(\"trailing backslash in character set\");\n const decoded = escapeBytes(escape[0]);\n tokens.push({ bytes: [...decoded.bytes], literal: false }); offset += escape[0].length; continue;\n }\n const character = String.fromCodePoint(specification.codePointAt(offset)!);\n tokens.push({ bytes: [...encoder.encode(character)], literal: character === \"-\" }); offset += character.length;\n }\n const result: number[] = [];\n for (let index = 0; index < tokens.length; index++) {\n const current = tokens[index]!;\n if (current.bytes.length === 1 && tokens[index + 1]?.literal && tokens[index + 2]?.bytes.length === 1) {\n const first = current.bytes[0]!;\n const last = tokens[index + 2]!.bytes[0]!;\n if (last < first) throw new UsageError(\"range endpoints are in reverse order\");\n for (let byte = first; byte <= last; byte++) result.push(byte);\n index += 2;\n } else result.push(...current.bytes);\n }\n return result;\n}\n\nexport function streamCommands(): CommandDefinition[] {\n return [\n define(\"cat\", async context => {\n const parsed = options(context.args, \"nbsvETAute\", { number: \"n\", \"number-nonblank\": \"b\", \"squeeze-blank\": \"s\", \"show-ends\": \"E\", \"show-tabs\": \"T\", \"show-nonprinting\": \"v\", \"show-all\": \"A\" });\n if (parsed.flags.has(\"A\")) for (const flag of [\"v\", \"E\", \"T\"]) parsed.flags.add(flag);\n if (parsed.flags.has(\"e\")) { parsed.flags.add(\"v\"); parsed.flags.add(\"E\"); }\n if (parsed.flags.has(\"t\")) { parsed.flags.add(\"v\"); parsed.flags.add(\"T\"); }\n const caller = context;\n const operation = parsed.operands.length && !parsed.operands.includes(\"-\") ? createOutputOperation(context, context.stdout) : undefined;\n if (operation) context = { ...context, signal: operation.signal, stdout: operation.output };\n try {\n const state = { exitCode: 0 };\n const source = combinedInput(context, parsed.operands, state);\n operation?.registerCleanup(async () => { await source[Symbol.asyncIterator]().return?.(); });\n if (![...parsed.flags].some(flag => flag !== \"u\")) {\n for await (const chunk of source) await output(context, chunk);\n return state;\n }\n let lineStart = true;\n let blankCount = 0;\n let number = 1;\n for await (const chunk of source) {\n const transformed: number[] = [];\n const append = (text: string) => { for (const byte of encoder.encode(text)) transformed.push(byte); };\n for (const byte of chunk) {\n if (lineStart && byte === 10 && parsed.flags.has(\"s\") && blankCount > 0) continue;\n if (lineStart && (parsed.flags.has(\"b\") ? byte !== 10 : parsed.flags.has(\"n\"))) append(`${String(number++).padStart(6)}\\t`);\n if (byte === 10) {\n if (parsed.flags.has(\"E\")) transformed.push(36);\n transformed.push(10);\n blankCount = lineStart ? blankCount + 1 : 0;\n lineStart = true;\n } else {\n lineStart = false; blankCount = 0;\n if (byte === 9) {\n if (parsed.flags.has(\"T\")) append(\"^I\");\n else transformed.push(byte);\n } else if (parsed.flags.has(\"v\")) {\n let visible = byte;\n if (visible >= 128) { append(\"M-\"); visible -= 128; }\n if (visible < 32) append(`^${String.fromCharCode(visible + 64)}`);\n else if (visible === 127) append(\"^?\");\n else transformed.push(visible);\n } else transformed.push(byte);\n }\n if (transformed.length >= 8192) { await output(context, Uint8Array.from(transformed)); transformed.length = 0; }\n }\n if (transformed.length) await output(context, Uint8Array.from(transformed));\n }\n return state;\n } catch (error) {\n caller.signal.throwIfAborted();\n if (operation?.signal.aborted && operation.signal.reason instanceof FsError && operation.signal.reason.code === \"EPIPE\") return { exitCode: 141 };\n throw error;\n } finally { await operation?.close(); }\n }),\n headTail(\"head\"), headTail(\"tail\"),\n define(\"wc\", async context => {\n const parsed = options(context.args, \"lwcm\", { lines: \"l\", words: \"w\", bytes: \"c\", chars: \"m\" });\n if (!parsed.flags.size) for (const flag of [\"l\", \"w\", \"c\"]) parsed.flags.add(flag);\n const selected = [\"l\", \"w\", \"m\", \"c\"].filter(flag => parsed.flags.has(flag));\n const names = parsed.operands.length ? parsed.operands : [\"-\"];\n const totals: Record<string, number> = { l: 0, w: 0, m: 0, c: 0 };\n const locale = context.env.LC_ALL || context.env.LC_CTYPE || context.env.LANG || \"C.UTF-8\";\n const singleByte = locale === \"C\" || locale === \"POSIX\";\n const posix = Object.hasOwn(context.env, \"POSIXLY_CORRECT\");\n let width = 1;\n if (names.length > 1 || selected.length > 1) {\n let totalSize = 0n;\n for (const name of names) {\n if (name === \"-\") { width = Math.max(width, 7); continue; }\n try {\n const stat = await context.fs.stat(pathOf(context, name), { signal: context.signal });\n if (stat.type !== \"file\") width = Math.max(width, 7);\n else if (Number.isSafeInteger(stat.size) && stat.size >= 0) totalSize += BigInt(stat.size);\n } catch { context.signal.throwIfAborted(); }\n }\n width = Math.max(width, totalSize.toString().length);\n }\n let exitCode = 0;\n const print = async (counts: Record<string, number>, name?: string) => output(context, selected.map(flag => String(counts[flag]).padStart(width)).join(\" \") + (name === undefined ? \"\" : ` ${name}`) + \"\\n\");\n for (const name of names) {\n const counts: Record<string, number> = { l: 0, w: 0, m: 0, c: 0 };\n let inWord = false;\n const word = (whitespace: boolean) => {\n if (!whitespace && !inWord) counts.w!++;\n inWord = !whitespace;\n };\n const utf8 = wcUtf8(point => {\n if (point !== undefined) counts.m!++;\n word(point !== undefined && wcSpace(point, posix));\n });\n try {\n for await (const chunk of input(context, name)) {\n context.signal.throwIfAborted();\n counts.c! += chunk.length;\n for (const byte of chunk) {\n if (byte === 10) counts.l!++;\n if (singleByte) word(byte === 32 || byte >= 9 && byte <= 13 || !posix && byte === 0xa0);\n }\n if (singleByte) counts.m! += chunk.length;\n else utf8.write(chunk);\n }\n if (!singleByte) utf8.finish();\n for (const field of Object.keys(totals)) totals[field]! += counts[field]!;\n await print(counts, parsed.operands.length ? name : undefined);\n } catch (error) { await diagnostic(context, error); exitCode = 1; }\n }\n if (names.length > 1) await print(totals, \"total\");\n return { exitCode };\n }),\n define(\"tee\", async context => {\n const parsed = options(context.args, \"a\", { append: \"a\" });\n const targets: string[] = [];\n let exitCode = 0;\n for (const operand of parsed.operands) {\n try {\n const path = pathOf(context, operand);\n await context.fs.writeFile(path, new Uint8Array(), { flag: parsed.flags.has(\"a\") ? \"a\" : \"w\", signal: context.signal });\n targets.push(path);\n } catch (error) { await diagnostic(context, error); exitCode = 1; }\n }\n for await (const chunk of input(context)) {\n await output(context, chunk);\n for (let index = 0; index < targets.length;) {\n try { await context.fs.appendFile(targets[index]!, chunk, { signal: context.signal }); index++; }\n catch (error) { await diagnostic(context, error); targets.splice(index, 1); exitCode = 1; }\n }\n }\n return { exitCode };\n }),\n define(\"tr\", async context => {\n const parsed = options(context.args, \"dscC\", { delete: \"d\", \"squeeze-repeats\": \"s\", complement: \"c\" });\n const deleting = parsed.flags.has(\"d\");\n const squeezing = parsed.flags.has(\"s\");\n const translating = !deleting && parsed.operands.length === 2;\n if (parsed.operands.length < 1 || parsed.operands.length > 2 || !deleting && !squeezing && parsed.operands.length !== 2\n || deleting && !squeezing && parsed.operands.length !== 1 || deleting && squeezing && parsed.operands.length !== 2) throw new UsageError(\"invalid number of character sets\");\n let first = characterSet(parsed.operands[0]!);\n if (parsed.flags.has(\"c\") || parsed.flags.has(\"C\")) {\n const selected = new Set(first);\n first = Array.from({ length: 256 }, (_, offset) => offset).filter(byte => !selected.has(byte));\n }\n const second = parsed.operands[1] === undefined ? [] : characterSet(parsed.operands[1]);\n if (translating && !second.length) throw new UsageError(\"second character set must not be empty\");\n const mapping = Array.from({ length: 256 }, (_, offset) => offset);\n if (translating) first.forEach((byte, index) => { mapping[byte] = second[Math.min(index, second.length - 1)]!; });\n const removed = new Set(deleting ? first : []);\n const squeezed = new Set(squeezing ? parsed.operands.length === 2 ? second : first : []);\n let previous = -1;\n for await (const chunk of input(context)) {\n context.signal.throwIfAborted();\n const transformed = new Uint8Array(chunk.length);\n let count = 0;\n for (const byte of chunk) {\n if (removed.has(byte)) continue;\n const translated = mapping[byte]!;\n if (translated === previous && squeezed.has(translated)) continue;\n transformed[count++] = translated; previous = translated;\n }\n if (count) await output(context, transformed.subarray(0, count));\n }\n return { exitCode: 0 };\n }),\n ];\n}\n", "import { FsError, type ByteSource, type CommandContext, type CommandDefinition } from \"../contracts/index.js\";\nimport { bufferLimit, concatenate, define, diagnostic, encoder, input, integer, lines, options, output, pathOf, requireOperands, UsageError, value } from \"./internal.js\";\n\nfunction compareBytes(left: Uint8Array, right: Uint8Array): number { return Buffer.compare(left, right); }\nfunction fold(bytes: Uint8Array): Uint8Array { return bytes.map(byte => byte >= 97 && byte <= 122 ? byte - 32 : byte); }\n\ninterface NumericValue { whole: string; fraction: string; negative: boolean }\n\nfunction parseNumeric(bytes: Uint8Array): NumericValue {\n const match = /^[ \\t]*(-?)([0-9]*)(?:\\.([0-9]*))?/u.exec(Buffer.from(bytes).toString(\"latin1\"))!;\n const whole = (match[2] ?? \"\").replace(/^0+/u, \"\") || \"0\";\n const fraction = (match[3] ?? \"\").replace(/0+$/u, \"\");\n return { whole, fraction, negative: match[1] === \"-\" && (whole !== \"0\" || fraction !== \"\") };\n}\n\nfunction compareNumericValues(first: NumericValue, second: NumericValue): number {\n if (first.negative !== second.negative) return first.negative ? -1 : 1;\n let compared = first.whole.length - second.whole.length;\n if (!compared) compared = first.whole < second.whole ? -1 : first.whole > second.whole ? 1 : 0;\n if (!compared) {\n const width = Math.max(first.fraction.length, second.fraction.length);\n const firstFraction = first.fraction.padEnd(width, \"0\");\n const secondFraction = second.fraction.padEnd(width, \"0\");\n compared = firstFraction < secondFraction ? -1 : firstFraction > secondFraction ? 1 : 0;\n }\n return first.negative ? -compared : compared;\n}\n\nfunction numericCompare(left: Uint8Array, right: Uint8Array): number {\n return compareNumericValues(parseNumeric(left), parseNumeric(right));\n}\n\ninterface SortKey { start: number; startCharacter: number; end?: number; endCharacter?: number; flags: Set<string> }\n\nfunction sortKey(specification: string): SortKey {\n const match = /^([0-9]+)(?:\\.([0-9]+))?([bfnr]*)(?:,([0-9]+)(?:\\.([0-9]+))?([bfnr]*))?$/u.exec(specification);\n if (!match) throw new UsageError(`invalid key '${specification}'`);\n return {\n start: integer(match[1]!, 1), startCharacter: integer(match[2] ?? \"1\", 1),\n ...(match[4] === undefined ? {} : { end: integer(match[4], 1) }),\n ...(match[5] === undefined ? {} : { endCharacter: integer(match[5], 1) }),\n flags: new Set((match[3] ?? \"\") + (match[6] ?? \"\")),\n };\n}\n\nfunction keyBytes(line: Uint8Array, key: SortKey, separator: number | undefined, blanks: boolean): Uint8Array {\n const fields: { start: number; end: number }[] = [];\n if (separator !== undefined) {\n let start = 0;\n for (let offset = 0; offset <= line.length; offset++) if (offset === line.length || line[offset] === separator) {\n fields.push({ start, end: offset }); start = offset + 1;\n }\n } else {\n let offset = 0;\n while (offset < line.length) {\n const leading = offset;\n while (offset < line.length && (line[offset] === 32 || line[offset] === 9)) offset++;\n const start = blanks ? offset : leading;\n if (offset === line.length) break;\n while (offset < line.length && line[offset] !== 32 && line[offset] !== 9) offset++;\n fields.push({ start, end: offset });\n }\n }\n const start = (fields[key.start - 1]?.start ?? line.length) + key.startCharacter - 1;\n const last = key.end === undefined ? undefined : fields[key.end - 1];\n const end = key.end === undefined ? line.length : last === undefined ? line.length\n : key.endCharacter === undefined ? last.end : Math.min(last.end, last.start + key.endCharacter);\n return line.subarray(Math.min(start, line.length), Math.max(start, end));\n}\n\nasync function emitRecords(context: CommandContext, records: ByteSource, destination?: string): Promise<void> {\n if (destination === undefined) { for await (const bytes of records) await output(context, bytes); return; }\n if (context.fs.writeStream) await context.fs.writeStream(pathOf(context, destination), records, { signal: context.signal });\n else {\n let size = 0;\n const chunks: Uint8Array[] = [];\n for await (const bytes of records) {\n size += bytes.length;\n if (size > bufferLimit) throw new FsError(\"EFBIG\", { message: \"output buffer limit exceeded\" });\n chunks.push(bytes);\n }\n await context.fs.writeFile(pathOf(context, destination), concatenate(chunks, size), { signal: context.signal });\n }\n}\n\nasync function collectSortRecords(source: ByteSource, delimiter: number, accept: (bytes: Uint8Array) => void): Promise<void> {\n let pending: Uint8Array[] = [];\n let size = 0;\n for await (const chunk of source) {\n let start = 0;\n for (let offset = 0; offset < chunk.length; offset++) {\n if (chunk[offset] !== delimiter) continue;\n const part = chunk.subarray(start, offset);\n size += part.length;\n if (size > bufferLimit) throw new FsError(\"EFBIG\", { message: \"line buffer limit exceeded\" });\n if (pending.length) { pending.push(part); accept(concatenate(pending, size)); }\n else accept(new Uint8Array(part));\n pending = []; size = 0; start = offset + 1;\n }\n if (start < chunk.length) {\n pending.push(new Uint8Array(chunk.subarray(start)));\n size += chunk.length - start;\n if (size > bufferLimit) throw new FsError(\"EFBIG\", { message: \"line buffer limit exceeded\" });\n }\n }\n if (size) accept(concatenate(pending, size));\n}\n\nexport function textCommands(): CommandDefinition[] {\n return [\n define(\"sort\", async context => {\n const parsed = options(context.args, \"nrfbuszt:k:o:c\", { \"numeric-sort\": \"n\", reverse: \"r\", \"ignore-case\": \"f\", \"ignore-leading-blanks\": \"b\", unique: \"u\", stable: \"s\", \"zero-terminated\": \"z\", \"field-separator\": \"t\", key: \"k\", output: \"o\", check: \"c\" });\n const separatorText = value(parsed, \"t\");\n if (separatorText !== undefined && encoder.encode(separatorText).length !== 1) throw new UsageError(\"field separator must be one byte\");\n const separator = separatorText === undefined ? undefined : encoder.encode(separatorText)[0];\n const keys = (parsed.values.get(\"k\") ?? []).map(sortKey);\n const simple = !keys.length && ![\"b\", \"f\", \"n\"].some(flag => parsed.flags.has(flag));\n const direction = parsed.flags.has(\"r\") ? -1 : 1;\n let compareNumeric = numericCompare;\n if (!keys.length && parsed.flags.has(\"n\") && ![\"b\", \"f\", \"c\"].some(flag => parsed.flags.has(flag))) {\n const numericValues = new Map<Uint8Array, NumericValue>();\n let retainedBytes = 0;\n const numericValue = (bytes: Uint8Array): NumericValue => {\n const cached = numericValues.get(bytes);\n if (cached !== undefined) return cached;\n context.signal.throwIfAborted();\n const charge = 6 * bytes.length + 2;\n if (numericValues.size >= 16_384 || charge > 1_048_576 - retainedBytes) return parseNumeric(bytes);\n const parsedValue = parseNumeric(bytes);\n numericValues.set(bytes, parsedValue);\n retainedBytes += charge;\n return parsedValue;\n };\n compareNumeric = (left, right) => compareNumericValues(numericValue(left), numericValue(right));\n }\n let keyCompare = simple ? (left: Uint8Array, right: Uint8Array) => compareBytes(left, right) * direction : (left: Uint8Array, right: Uint8Array) => {\n for (const key of keys.length ? keys : [undefined]) {\n const flags = key?.flags.size ? key.flags : parsed.flags;\n let first = key ? keyBytes(left, key, separator, flags.has(\"b\")) : left;\n let second = key ? keyBytes(right, key, separator, flags.has(\"b\")) : right;\n if (!key && flags.has(\"b\")) {\n const trim = (bytes: Uint8Array) => { let offset = 0; while (bytes[offset] === 9 || bytes[offset] === 32) offset++; return bytes.subarray(offset); };\n first = trim(first); second = trim(second);\n }\n if (flags.has(\"f\")) { first = fold(first); second = fold(second); }\n let result = flags.has(\"n\") ? compareNumeric(first, second) : compareBytes(first, second);\n if (flags.has(\"r\")) result = -result;\n if (result) return result;\n }\n return 0;\n };\n const numericKey = keys.length === 1 ? keys[0] : undefined;\n const numericKeyFlags = numericKey?.flags.size ? numericKey.flags : parsed.flags;\n if (numericKey && numericKeyFlags.has(\"n\") && ![\"b\", \"f\"].some(flag => numericKeyFlags.has(flag)) && !parsed.flags.has(\"c\")) {\n const keyedNumericValues = new Map<Uint8Array, NumericValue>();\n let retainedKeyBytes = 0;\n const keyedNumericValue = (record: Uint8Array): NumericValue => {\n const cached = keyedNumericValues.get(record);\n if (cached !== undefined) return cached;\n context.signal.throwIfAborted();\n const bytes = keyBytes(record, numericKey, separator, false);\n const charge = 6 * bytes.length + 2;\n if (keyedNumericValues.size >= 16_384 || charge > 1_048_576 - retainedKeyBytes) return parseNumeric(bytes);\n const parsedValue = parseNumeric(bytes);\n keyedNumericValues.set(record, parsedValue);\n retainedKeyBytes += charge;\n return parsedValue;\n };\n keyCompare = (left, right) => {\n const result = compareNumericValues(keyedNumericValue(left), keyedNumericValue(right));\n return numericKeyFlags.has(\"r\") ? -result : result;\n };\n }\n const compare = simple ? keyCompare : (left: Uint8Array, right: Uint8Array) => keyCompare(left, right)\n || (parsed.flags.has(\"s\") || parsed.flags.has(\"u\") ? 0 : compareBytes(left, right) * (parsed.flags.has(\"r\") ? -1 : 1));\n const records: Uint8Array[] = [];\n let size = 0;\n const exitCode: number = 0;\n const delimiter = parsed.flags.has(\"z\") ? 0 : 10;\n for (const name of parsed.operands.length ? parsed.operands : [\"-\"]) {\n try {\n if (!parsed.flags.has(\"c\")) {\n await collectSortRecords(input(context, name), delimiter, bytes => {\n context.signal.throwIfAborted();\n size += bytes.length + 1;\n if (size > bufferLimit) throw new FsError(\"EFBIG\", { message: \"sort buffer limit exceeded\" });\n records.push(bytes);\n });\n continue;\n }\n for await (const line of lines(input(context, name), delimiter)) {\n context.signal.throwIfAborted();\n size += line.bytes.length + 1;\n if (size > bufferLimit) throw new FsError(\"EFBIG\", { message: \"sort buffer limit exceeded\" });\n if (parsed.flags.has(\"c\") && records.length && (compare(records.at(-1)!, line.bytes) > 0 || parsed.flags.has(\"u\") && keyCompare(records.at(-1)!, line.bytes) === 0)) {\n await diagnostic(context, new Error(`disorder at record ${records.length + 1}`));\n return { exitCode: 1 };\n }\n records.push(line.bytes);\n }\n } catch (error) { await diagnostic(context, error); return { exitCode: 2 }; }\n }\n if (parsed.flags.has(\"c\")) return { exitCode };\n records.sort(compare);\n const sorted = (async function* (): ByteSource {\n let previous: Uint8Array | undefined;\n let buffer = new Uint8Array(64 * 1024);\n let used = 0;\n for (const record of records) {\n context.signal.throwIfAborted();\n if (parsed.flags.has(\"u\") && previous !== undefined && keyCompare(previous, record) === 0) continue;\n let offset = 0;\n while (offset < record.length) {\n const length = Math.min(record.length - offset, buffer.length - used);\n buffer.set(record.subarray(offset, offset + length), used);\n offset += length; used += length;\n if (used === buffer.length) { yield buffer; buffer = new Uint8Array(64 * 1024); used = 0; }\n }\n buffer[used++] = delimiter;\n if (used === buffer.length) { yield buffer; buffer = new Uint8Array(64 * 1024); used = 0; }\n previous = record;\n }\n if (used) yield buffer.subarray(0, used);\n })();\n await emitRecords(context, sorted, value(parsed, \"o\"));\n return { exitCode };\n }),\n define(\"uniq\", async context => {\n const parsed = options(context.args, \"cduif:s:w:z\", { count: \"c\", repeated: \"d\", unique: \"u\", \"ignore-case\": \"i\", \"skip-fields\": \"f\", \"skip-chars\": \"s\", \"check-chars\": \"w\", \"zero-terminated\": \"z\" });\n requireOperands(parsed.operands, 0, 2);\n const skipFields = integer(value(parsed, \"f\") ?? \"0\");\n const skipCharacters = integer(value(parsed, \"s\") ?? \"0\");\n const width = value(parsed, \"w\") === undefined ? Infinity : integer(value(parsed, \"w\")!);\n const delimiter = parsed.flags.has(\"z\") ? 0 : 10;\n const key = (bytes: Uint8Array) => {\n let offset = 0;\n for (let field = 0; field < skipFields; field++) {\n while (offset < bytes.length && (bytes[offset] === 32 || bytes[offset] === 9)) offset++;\n while (offset < bytes.length && bytes[offset] !== 32 && bytes[offset] !== 9) offset++;\n }\n offset += skipCharacters;\n const result = bytes.subarray(offset, width === Infinity ? undefined : offset + width);\n return parsed.flags.has(\"i\") ? fold(result) : result;\n };\n const records = (async function* (): ByteSource {\n let previous: Uint8Array | undefined;\n let previousKey: Uint8Array | undefined;\n let count = 0;\n const selected = () => (!parsed.flags.has(\"d\") || count > 1) && (!parsed.flags.has(\"u\") || count === 1);\n const record = () => concatenate([...(parsed.flags.has(\"c\") ? [encoder.encode(`${String(count).padStart(7)} `)] : []), previous!, Uint8Array.of(delimiter)]);\n for await (const line of lines(input(context, parsed.operands[0]), delimiter)) {\n context.signal.throwIfAborted();\n const currentKey = key(line.bytes);\n if (previousKey && compareBytes(previousKey, currentKey) === 0) count++;\n else {\n if (previous !== undefined && selected()) yield record();\n previous = line.bytes; previousKey = currentKey; count = 1;\n }\n }\n if (previous !== undefined && selected()) yield record();\n })();\n if (parsed.operands[1] !== undefined && parsed.operands[0] !== \"-\"\n && pathOf(context, parsed.operands[0]!) === pathOf(context, parsed.operands[1])) throw new UsageError(\"input and output must be different files\");\n await emitRecords(context, records, parsed.operands[1]);\n return { exitCode: 0 };\n }),\n define(\"cut\", async context => {\n const parsed = options(context.args, \"b:c:f:d:szo:C\", { bytes: \"b\", characters: \"c\", fields: \"f\", delimiter: \"d\", \"only-delimited\": \"s\", \"zero-terminated\": \"z\", \"output-delimiter\": \"o\", complement: \"C\" });\n const modes = [\"b\", \"c\", \"f\"].filter(mode => parsed.flags.has(mode));\n if (modes.length !== 1) throw new UsageError(\"exactly one byte, character, or field list is required\");\n const mode = modes[0]!;\n if (mode !== \"f\" && (parsed.flags.has(\"d\") || parsed.flags.has(\"s\"))) throw new UsageError(\"delimiter options require field mode\");\n const ranges = value(parsed, mode)!.split(/[ ,]+/u).map(part => {\n const match = /^(?:([0-9]+)(?:-([0-9]*))?|-([0-9]+))$/u.exec(part);\n if (!match) throw new UsageError(`invalid range '${part}'`);\n const start = match[3] === undefined ? integer(match[1]!, 1) : 1;\n const end = match[3] !== undefined ? integer(match[3], 1) : match[2] === undefined ? start : match[2] === \"\" ? Infinity : integer(match[2], 1);\n if (end < start) throw new UsageError(`decreasing range '${part}'`);\n return { start, end };\n });\n const selected = (position: number) => ranges.some(range => position >= range.start && position <= range.end) !== parsed.flags.has(\"C\");\n const delimiter = value(parsed, \"d\") ?? \"\\t\";\n if ([...delimiter].length !== 1) throw new UsageError(\"delimiter must be a single character\");\n const outputDelimiter = value(parsed, \"o\");\n const recordDelimiter = parsed.flags.has(\"z\") ? 0 : 10;\n let exitCode = 0;\n for (const name of parsed.operands.length ? parsed.operands : [\"-\"]) {\n try {\n for await (const line of lines(input(context, name), recordDelimiter)) {\n context.signal.throwIfAborted();\n let bytes: Uint8Array;\n if (mode === \"f\") {\n const record = Buffer.from(line.bytes.buffer, line.bytes.byteOffset, line.bytes.byteLength);\n const separator = encoder.encode(delimiter);\n let boundary = record.indexOf(separator);\n if (boundary < 0) {\n if (parsed.flags.has(\"s\")) continue;\n bytes = line.bytes;\n } else {\n const pieces: Uint8Array[] = [];\n const joiner = encoder.encode(outputDelimiter ?? delimiter);\n let field = 1;\n let start = 0;\n let emitted = false;\n while (true) {\n if (selected(field++)) {\n if (emitted) pieces.push(joiner);\n pieces.push(record.subarray(start, boundary < 0 ? record.length : boundary));\n emitted = true;\n }\n if (boundary < 0) break;\n start = boundary + separator.length;\n boundary = record.indexOf(separator, start);\n }\n bytes = concatenate(pieces);\n }\n } else if (mode === \"b\") {\n const chunks: Uint8Array[] = [];\n let start = -1;\n let emitted = false;\n for (let index = 0; index <= line.bytes.length; index++) {\n const included = index < line.bytes.length && selected(index + 1);\n if (included && start < 0) start = index;\n if (!included && start >= 0) {\n if (emitted && outputDelimiter !== undefined) chunks.push(encoder.encode(outputDelimiter));\n chunks.push(line.bytes.subarray(start, index)); emitted = true; start = -1;\n }\n }\n bytes = concatenate(chunks);\n } else {\n const text = new TextDecoder().decode(line.bytes);\n const pieces: string[] = [];\n let index = 0;\n let offset = 0;\n let start = -1;\n for (const character of text) {\n const included = selected(++index);\n if (included && start < 0) start = offset;\n if (!included && start >= 0) { pieces.push(text.slice(start, offset)); start = -1; }\n offset += character.length;\n }\n if (start >= 0) pieces.push(text.slice(start));\n bytes = encoder.encode(pieces.join(outputDelimiter ?? \"\"));\n }\n await output(context, bytes);\n await output(context, Uint8Array.of(recordDelimiter));\n }\n } catch (error) { await diagnostic(context, error); exitCode = 1; }\n }\n return { exitCode };\n }),\n ];\n}\n", "export { Shell } from \"./shell.js\";\nexport { parseShell } from \"./parser.js\";\nexport { ShellLimitError, ShellSyntaxError } from \"./types.js\";\nexport type { ShellCommandContext, ShellExecOptions, ShellInvokeOptions, ShellLimits, ShellOptions, ShellResult } from \"./types.js\";\n", "import { CommandRegistry, resolvePath, toByteSource, writeText } from \"../contracts/index.js\";\nimport type {\n ByteSink, CommandDefinition, FileSystemFactory, Middleware, PluginHost,\n RegisterCommandOptions, VirtualShellPlugin,\n} from \"../contracts/index.js\";\nimport { parseShellUnit } from \"./parser.js\";\nimport { ShellInput } from \"./input.js\";\nimport { byteLocale } from \"./locale.js\";\nimport { Budget, Capture, interruptible, resolveLimits, Runtime, RuntimeCancellationState } from \"./runtime.js\";\nimport type { State } from \"./runtime.js\";\nimport { ShellLimitError, ShellSyntaxError } from \"./types.js\";\nimport type { ShellExecOptions, ShellOptions, ShellResult } from \"./types.js\";\nimport { InvocationScope, invocationScope, throwCleanupFailures } from \"./cleanup.js\";\nimport {\n createRootCancellationLink, selectRuntimeCancellationOutcome, subscribeCancellation,\n} from \"./cancellation.js\";\nimport type {\n CancellationBoundary, CancellationOrigin, CancellationSelection, CapturedCancellationOutcome,\n} from \"./cancellation.js\";\n\nclass RootInvocationCancellationOwner {\n readonly finalized: Promise<void>;\n #resolveFinalized!: () => void;\n #admissionOpen = true;\n #boundary: CancellationBoundary | undefined;\n #observedOrigin: CancellationOrigin | undefined;\n #captureCancellation: ((origin: CancellationOrigin) => void) | undefined;\n #detach: (() => void) | undefined;\n #finished = false;\n\n constructor(readonly scope: InvocationScope) {\n this.finalized = new Promise<void>(resolve => { this.#resolveFinalized = resolve; });\n scope.register(() => { this.#admissionOpen = false; });\n }\n\n activate(boundary: CancellationBoundary): void {\n if (!this.#admissionOpen) throw new Error(\"Root cancellation admission is closed\");\n this.#boundary = boundary;\n this.#detach = subscribeCancellation(boundary, origin => { this.#captureCancellation?.(origin); });\n }\n\n assertAdmissionOpen(): void {\n if (!this.#admissionOpen) throw new Error(\"Root cancellation admission is closed\");\n }\n\n capture<Value>(execute: () => Promise<Value>): Promise<CapturedCancellationOutcome<Value>> {\n return new Promise(resolve => {\n let settled = false;\n let raw: Promise<Value> | undefined;\n let queuedOrigin = false;\n const settle = (captured: CapturedCancellationOutcome<Value>): void => {\n if (settled) return;\n settled = true;\n this.#captureCancellation = undefined;\n resolve(captured);\n };\n this.#captureCancellation = origin => {\n if (settled || queuedOrigin) return;\n queuedOrigin = true;\n queueMicrotask(() => {\n if (settled) return;\n this.#observedOrigin = origin;\n settle({ kind: \"throw\", reason: origin.signal.reason });\n void raw?.catch(() => undefined);\n });\n };\n try { raw = Promise.resolve(execute()); }\n catch (reason) { settle({ kind: \"throw\", reason }); return; }\n void raw.then(\n value => settle({ kind: \"return\", value }),\n reason => settle({ kind: \"throw\", reason }),\n );\n if (settled) void raw.catch(() => undefined);\n });\n }\n\n finish<Value>(captured: CapturedCancellationOutcome<Value>): CancellationSelection<Value> {\n if (this.#finished) throw new Error(\"Root cancellation was already finalized\");\n this.#finished = true;\n this.#admissionOpen = false;\n try {\n try { this.#detach?.(); } catch (error) { this.scope.failures.push(error); }\n this.#detach = undefined;\n const close = this.#boundary!.close();\n this.scope.failures.push(...close.failures);\n return selectRuntimeCancellationOutcome(this.#boundary!, captured, this.#observedOrigin);\n } finally { this.#resolveFinalized(); }\n }\n}\n\nexport class Shell implements PluginHost {\n readonly commands: CommandRegistry;\n readonly #middleware: Middleware[] = [];\n readonly #filesystems = new Map<string, FileSystemFactory>();\n readonly #plugins: VirtualShellPlugin[] = [];\n readonly #options: ShellOptions;\n #ready: Promise<void> = Promise.resolve();\n #disposed = false;\n #disposal: Promise<void> | undefined;\n readonly #active = new Set<{ scope: InvocationScope; budget: Budget; owner: RootInvocationCancellationOwner }>();\n\n constructor(options: ShellOptions) {\n if (!options?.fs) throw new TypeError(\"Shell requires an explicit filesystem\");\n resolveLimits(options.limits);\n this.#options = { ...options, cwd: resolvePath(\"/\", options.cwd ?? \"/\"), env: { ...options.env }, limits: { ...options.limits } };\n this.commands = options.commands ?? new CommandRegistry();\n }\n\n use(middleware: Middleware | VirtualShellPlugin): this {\n if (this.#disposed) throw new Error(\"Shell is disposed\");\n this.#install(middleware);\n return this;\n }\n\n #install(middleware: Middleware | VirtualShellPlugin): void {\n if (typeof middleware === \"function\") this.#middleware.push(middleware);\n else {\n if (!middleware || typeof middleware.setup !== \"function\") throw new TypeError(\"Expected middleware or shell plugin\");\n this.#ready = this.#ready.then(async () => {\n let active = true;\n const admit = () => {\n if (this.#disposed && !active) throw new Error(\"Shell is disposed\");\n };\n const host: PluginHost = {\n commands: this.commands,\n use: (middleware) => { admit(); this.#install(middleware); },\n registerFileSystem: (scheme, factory) => { admit(); this.#registerFileSystem(scheme, factory); },\n };\n try {\n await middleware.setup(host);\n this.#plugins.push(middleware);\n } finally { active = false; }\n });\n void this.#ready.catch(() => undefined);\n }\n }\n\n register(command: CommandDefinition, options?: RegisterCommandOptions): this {\n if (this.#disposed) throw new Error(\"Shell is disposed\");\n this.commands.register(command, options);\n return this;\n }\n\n registerFileSystem(scheme: string, factory: FileSystemFactory): void {\n if (this.#disposed) throw new Error(\"Shell is disposed\");\n this.#registerFileSystem(scheme, factory);\n }\n\n #registerFileSystem(scheme: string, factory: FileSystemFactory): void {\n if (!/^[a-z][a-z0-9+.-]*$/u.test(scheme)) throw new TypeError(\"Invalid filesystem scheme\");\n if (this.#filesystems.has(scheme)) throw new Error(`Filesystem already registered: ${scheme}`);\n this.#filesystems.set(scheme, factory);\n }\n\n async createFileSystem(scheme: string, options: Readonly<Record<string, unknown>> = {}): Promise<Awaited<ReturnType<FileSystemFactory>>> {\n if (this.#disposed) throw new Error(\"Shell is disposed\");\n await this.#ready;\n const factory = this.#filesystems.get(scheme);\n if (!factory) throw new Error(`Unknown filesystem scheme: ${scheme}`);\n return factory(options);\n }\n\n async exec(source: string, options: ShellExecOptions = {}): Promise<ShellResult> {\n if (this.#disposed) throw new Error(\"Shell is disposed\");\n const budget = new Budget(resolveLimits(this.#options.limits, options.limits), options.signal);\n const scope = new InvocationScope(options.signal);\n const cancellationState = new RuntimeCancellationState();\n const owner = new RootInvocationCancellationOwner(scope);\n const boundary = createRootCancellationLink({\n admission: Runtime.rootCancellationAdmission(budget),\n callerSignal: options.signal,\n controls: [{ role: \"budget-control\", signal: budget.controller.signal }],\n });\n try { Runtime.registerEreRoot(budget, scope); owner.activate(boundary); }\n catch (error) {\n scope.failures.push(...boundary.close().failures);\n await scope.close();\n cancellationState.close();\n throw error;\n }\n const active = { scope, budget, owner };\n this.#active.add(active);\n let captured: CapturedCancellationOutcome<ShellResult>;\n try { captured = await owner.capture(() => this.#execute(source, options, scope, budget, boundary, cancellationState, owner)); }\n finally { await scope.close(); }\n const selection = owner.finish(captured);\n cancellationState.close();\n this.#active.delete(active);\n if (selection.outcome.kind === \"throw\") throw selection.outcome.reason;\n throwCleanupFailures(scope.failures);\n return selection.outcome.value;\n }\n\n async #execute(\n source: string,\n options: ShellExecOptions,\n scope: InvocationScope,\n budget: Budget,\n cancellation: CancellationBoundary,\n cancellationState: RuntimeCancellationState,\n owner: RootInvocationCancellationOwner,\n ): Promise<ShellResult> {\n if (typeof source !== \"string\") throw new TypeError(\"Shell source must be a string\");\n if (Buffer.byteLength(source) > budget.limits.maxSourceBytes) throw new ShellLimitError(\"maxSourceBytes\");\n budget.source(Buffer.byteLength(source));\n budget.signal.throwIfAborted();\n const stdout = new Capture();\n const stderr = new Capture();\n const sink = (capture: Capture, external?: ByteSink): ByteSink => budget.sink({\n ...(external?.ownedOutput ? { ownedOutput: {\n consumerClosed: external.ownedOutput.consumerClosed,\n write: async (chunk: Uint8Array) => {\n await capture.write(chunk);\n await external.ownedOutput!.write(chunk);\n },\n } } : {}),\n write: async (chunk) => {\n await capture.write(chunk);\n if (external) await external.write(chunk);\n },\n });\n let stdin: ShellInput | undefined;\n const io = {\n [invocationScope]: scope,\n stdin: toByteSource(\"\"),\n stdinIsDefault: options.stdin === undefined,\n stdout: sink(stdout, options.stdout), stderr: sink(stderr, options.stderr),\n };\n let exitCode: number;\n let failed = false;\n try {\n try {\n let unit = parseShellUnit(source, 0, byteLocale({ ...this.#options.env, ...options.env }));\n stdin = new ShellInput(typeof options.stdin === \"string\" || options.stdin instanceof Uint8Array ? toByteSource(options.stdin) : options.stdin ?? toByteSource(\"\"), budget);\n io.stdin = stdin;\n await interruptible(this.#ready, budget.signal);\n const cwd = resolvePath(\"/\", options.cwd ?? this.#options.cwd ?? \"/\");\n const variables = Object.assign(Object.create(null) as Record<string, string>, this.#options.env, options.env, { PWD: cwd });\n for (const [name, value] of Object.entries(variables)) {\n if (name.includes(\"\\0\") || name.includes(\"=\") || typeof value !== \"string\" || value.includes(\"\\0\")) throw new TypeError(\"Invalid environment entry\");\n }\n const exported = new Set(Object.keys(variables));\n variables.OPTIND = \"1\";\n variables.OPTERR = \"1\";\n const state: State = {\n cwd, variables, exported, functions: new Map(), positional: [], getopts: { cursor: { index: 0 }, integer: true },\n directoryStack: { entries: [], bytes: 0 },\n dotglob: false,\n status: 0, substitutionStatus: 0, depth: 0, loopDepth: 0, functionDepth: 0, locals: [], pipefail: false, profile: \"bash\",\n };\n const admission = Runtime.rootCancellationAdmission(budget);\n const runtime = new Runtime(\n options.fs ?? this.#options.fs,\n this.commands,\n [...this.#middleware],\n budget,\n AbortSignal.any([cancellation.deliverySignal, scope.signal]),\n undefined,\n undefined,\n cancellation.deliverySignal,\n cancellation,\n cancellationState,\n owner,\n 0,\n admission.maxDepth,\n );\n exitCode = 0;\n while (true) {\n for (const warning of unit.script.warnings ?? []) await writeText(io.stderr, `shell: warning: ${warning}\\n`);\n if (unit.script.lists.length) {\n const result = await interruptible(runtime.runUnit(unit.script, state, io), budget.signal);\n exitCode = result.exitCode;\n if (result.terminated) break;\n }\n if (unit.next >= source.length) break;\n budget.signal.throwIfAborted();\n unit = parseShellUnit(source, unit.next, byteLocale(state.variables));\n }\n } catch (error) {\n if (!(error instanceof ShellSyntaxError)) throw error;\n const line = source.slice(0, error.offset).split(\"\\n\").length;\n if (error.unclosedQuote) {\n await writeText(io.stderr, `shell: -c: line ${error.unclosedQuote.line}: unexpected EOF while looking for matching \\`${error.unclosedQuote.quote}'\\n`);\n } else if (error.exitCode === 127) {\n const token = /^[;&|()<>]|^[^\\s;&|()<>]+/u.exec(source.slice(error.offset))?.[0] ?? \"newline\";\n await writeText(io.stderr, `shell: -c: line ${line}: syntax error near unexpected token \\`${token}'\\nshell: -c: line ${line}: \\`${source.split(\"\\n\")[line - 1] ?? \"\"}'\\n`);\n } else if (error.offset >= source.length && !/Unterminated|nesting|Unsupported/u.test(error.reason)) {\n const context = error.incompleteCommand ? ` from \\`${error.incompleteCommand.name}' command on line ${error.incompleteCommand.line}` : \"\";\n await writeText(io.stderr, `shell: -c: line ${source.split(\"\\n\").length + Number(!source.endsWith(\"\\n\"))}: syntax error: unexpected end of file${context}\\n`);\n } else await writeText(io.stderr, `shell: ${error.message}\\n`);\n exitCode = error.exitCode;\n }\n } catch (error) { failed = true; throw error; }\n finally {\n if (failed) await stdin?.close().catch(() => {});\n else await stdin?.close();\n }\n const stdoutBytes = stdout.bytes();\n const stderrBytes = stderr.bytes();\n return {\n stdout: new TextDecoder(\"utf-8\", { ignoreBOM: true }).decode(stdoutBytes),\n stderr: new TextDecoder(\"utf-8\", { ignoreBOM: true }).decode(stderrBytes),\n stdoutBytes, stderrBytes, exitCode,\n };\n }\n\n dispose(): Promise<void> {\n if (this.#disposal) return this.#disposal;\n this.#disposed = true;\n const active = [...this.#active];\n const drains: Promise<void>[] = [];\n this.#disposal = Promise.resolve().then(() => this.#dispose(active, drains));\n for (const { scope, budget } of active) {\n const drain = scope.close();\n budget.controller.abort(new Error(\"Shell is disposed\"));\n drains.push(drain);\n }\n return this.#disposal;\n }\n\n async #dispose(active: readonly { scope: InvocationScope; owner: RootInvocationCancellationOwner }[], drains: readonly Promise<void>[]): Promise<void> {\n await Promise.all(drains);\n await Promise.all(active.map(({ owner }) => owner.finalized));\n let ready: Promise<void>;\n do {\n ready = this.#ready;\n await ready.catch(() => undefined);\n } while (ready !== this.#ready);\n const failures: unknown[] = [];\n for (const plugin of [...this.#plugins].reverse()) {\n try { await plugin.dispose?.(); } catch (error) { failures.push(error); }\n }\n const cleanupFailures = active.flatMap(({ scope }) => scope.failures);\n if (failures.length) throw new AggregateError([...cleanupFailures, ...failures], \"Plugin disposal failed\");\n throwCleanupFailures(cleanupFailures);\n }\n}\n", "import { ShellSyntaxError } from \"./types.js\";\nimport { arithmeticEnd, prepareArithmetic } from \"./arithmetic.js\";\nimport type { ArithmeticProgram } from \"./arithmetic.js\";\nimport { arraySelector, compoundEntry, compoundHead, elementAssignment, getArrayAssignment, scalarAssignmentName, setArrayAssignment, setArraySelector, setQuoteMarker } from \"./arrays/syntax.js\";\nimport type { ArrayEntry, ArraySelector } from \"./arrays/syntax.js\";\nimport { conditionalBinary, conditionalUnary } from \"./conditional.js\";\nimport type { ConditionalExpression } from \"./conditional.js\";\nimport { shellValueFromBytes, shellValueText } from \"../contracts/value.js\";\nimport type { ByteShellValue, ShellValue } from \"../contracts/value.js\";\n\nexport type WordPart =\n | { kind: \"text\"; value: string; quoted: boolean; byteValue?: ByteShellValue }\n | { kind: \"arithmetic\"; expression: ArithmeticProgram; source: string; line: number; quoted: boolean }\n | { kind: \"variable\"; name: string; quoted: boolean; line?: number; length?: boolean; operator?: string; alternate?: Word; replacement?: Word; substring?: { offset: Word; length?: Word; source: string } }\n | { kind: \"failed-substitution\"; diagnostic: string; quoted: boolean }\n | { kind: \"substitution\"; script: Script; line: number; sourceLine?: number; quoted: boolean };\n\nexport interface Word {\n readonly parts: WordPart[];\n readonly offset: number;\n readonly plain?: string;\n readonly spelling?: string;\n readonly printedNewlines?: number;\n}\n\ninterface Token {\n kind: \"word\" | \"operator\" | \"end\";\n value: string;\n offset: number;\n end: number;\n word?: Word;\n document?: HereDocument;\n}\n\nexport interface HereDocument {\n readonly delimiter: string;\n readonly quoted: boolean;\n readonly stripTabs: boolean;\n readonly offset: number;\n readonly depth: number;\n body: string;\n endLine: number;\n}\n\nexport class HereDocumentSyntaxError extends Error {\n constructor(readonly diagnostic: string) { super(diagnostic); }\n}\n\nexport interface Redirect {\n readonly descriptor: number;\n readonly operator: string;\n readonly target: Word;\n readonly move?: boolean;\n readonly document?: HereDocument;\n readonly line?: number;\n readonly implicitPipeline?: boolean;\n}\n\nexport interface CaseClause {\n readonly patterns: Word[];\n readonly body: Script;\n readonly terminator: \";;\" | \";&\" | \";;&\" | \"esac\";\n}\n\nexport type Command = (\n | { kind: \"simple\"; words: Word[] }\n | { kind: \"subshell\"; body: Script }\n | { kind: \"group\"; body: Script }\n | { kind: \"if\"; branches: { condition: Script; body: Script }[]; otherwise?: Script }\n | { kind: \"case\"; subject: Word; clauses: CaseClause[] }\n | { kind: \"while\"; condition: Script; body: Script }\n | { kind: \"until\"; condition: Script; body: Script }\n | { kind: \"for\"; name: string; words?: Word[]; body: Script }\n | { kind: \"function\"; name: string; body: Command }\n | { kind: \"arithmetic\"; expression: ArithmeticProgram; source: string }\n | { kind: \"conditional\"; expression: ConditionalExpression; source: string }\n) & { redirects: Redirect[]; line?: number; sourceName?: string };\n\nexport interface Pipeline {\n readonly commands: Command[];\n readonly negate: boolean;\n}\n\nexport interface AndOr {\n readonly pipelines: Pipeline[];\n readonly operators: (\"&&\" | \"||\")[];\n}\n\nexport interface Script {\n readonly lists: AndOr[];\n readonly warnings?: readonly string[];\n readonly line?: number;\n readonly printedLines?: ReadonlyMap<Command, number>;\n readonly printedNewlines?: number;\n}\n\nfunction printedSimpleLines(lists: readonly AndOr[], separators: readonly boolean[]): Pick<Script, \"printedLines\" | \"printedNewlines\"> {\n const printedLines = new Map<Command, number>();\n let line = 1;\n for (let index = 0; index < lists.length; index++) {\n for (const pipeline of lists[index]!.pipelines) for (const command of pipeline.commands) {\n if (command.kind !== \"simple\" || !command.words.length || command.redirects.some(redirect => redirect.document)) return {};\n const words = [...command.words, ...command.redirects.map(redirect => redirect.target)];\n if (words.some(word => word.printedNewlines === undefined)) return {};\n printedLines.set(command, line + command.words[0]!.printedNewlines!);\n for (const word of words) line += word.printedNewlines!;\n }\n if (index < lists.length - 1 && separators[index]) line++;\n }\n return { printedLines, printedNewlines: line - 1 };\n}\n\nclass IncompleteShellInput extends Error {}\n\nclass Lexer {\n position = 0;\n printedNewlineReduction = 0;\n unprintedWords = 0;\n delimiterOperator: string | undefined;\n conditional = false;\n conditionalPattern: \"pattern\" | \"regex\" | undefined;\n readonly documents: HereDocument[] = [];\n\n constructor(readonly source: string, readonly depth: number, readonly warnings: string[] = [], readonly lineOffset = 0, readonly byteLocale = false, readonly documentLine?: number, readonly partial = false) {\n if (depth > 64) throw new ShellSyntaxError(\"Syntax nesting exceeds 64\", 0);\n }\n\n lineAt(position: number): number { return this.lineOffset + this.source.slice(0, position).split(\"\\n\").length; }\n\n error(message: string, unclosedQuote?: { quote: string; line: number }): never {\n throw new ShellSyntaxError(message, this.position, 2, undefined, unclosedQuote);\n }\n\n next(): Token {\n while (this.position < this.source.length) {\n const current = this.source[this.position]!;\n if (current === \" \" || current === \"\\t\" || this.conditional && current === \"\\n\") {\n this.position++;\n } else if (current === \"\\\\\" && this.source[this.position + 1] === \"\\n\") {\n this.position += 2;\n } else if (current === \"#\") {\n while (this.position < this.source.length && this.source[this.position] !== \"\\n\") this.position++;\n } else break;\n }\n const offset = this.position;\n if (offset === this.source.length) {\n if (this.partial) throw new IncompleteShellInput();\n this.readDocuments();\n return { kind: \"end\", value: \"\", offset, end: offset };\n }\n let logical = \"\";\n let cursor = offset;\n const ends: number[] = [];\n while (cursor < this.source.length && logical.length < 3) {\n if (this.source.startsWith(\"\\\\\\n\", cursor)) { cursor += 2; continue; }\n logical += this.source[cursor++]!;\n ends.push(cursor);\n }\n const operator = this.conditionalPattern ? undefined : /^(?:;;&|<<<|<<-|&>>|;&|&&|\\|\\||\\|&|>>|>&|<&|>\\||<<|;;|&>|[;\\n|&()<>])/u.exec(logical)?.[0];\n if (operator) {\n if ([\"&\", \"&>>\"].includes(operator)) this.error(`Unsupported operator ${operator}`);\n this.position = ends[operator.length - 1]!;\n if (operator === \"<<\" || operator === \"<<-\") this.delimiterOperator = operator;\n if (operator === \"\\n\") this.readDocuments();\n return { kind: \"operator\", value: operator, offset, end: this.position };\n }\n const delimiterOperator = this.delimiterOperator;\n this.delimiterOperator = undefined;\n const word = this.word(undefined, false, delimiterOperator !== undefined);\n if (this.position <= offset) this.error(\"Tokenizer made no progress\");\n let document: HereDocument | undefined;\n if (delimiterOperator) {\n document = {\n delimiter: word.parts.map((part) => part.kind === \"text\" ? part.value : \"\").join(\"\"),\n quoted: word.parts.some((part) => part.quoted), stripTabs: delimiterOperator === \"<<-\", offset,\n body: \"\", endLine: this.lineAt(offset), depth: this.depth,\n };\n this.documents.push(document);\n }\n return { kind: \"word\", value: word.plain ?? \"\", offset, end: this.position, word: { ...word, spelling: this.source.slice(offset, this.position) }, ...(document ? { document } : {}) };\n }\n\n readDocuments(): void {\n for (const document of this.documents.splice(0)) {\n let body = \"\";\n let terminated = false;\n while (this.position < this.source.length) {\n let line = \"\";\n while (this.position < this.source.length) {\n const current = this.source[this.position++]!;\n if (!document.quoted && current === \"\\\\\" && this.position < this.source.length) {\n const next = this.source[this.position++]!;\n if (next !== \"\\n\") line += current + next;\n } else if (current === \"\\n\") break;\n else line += current;\n }\n if (line === document.delimiter || (document.stripTabs && line.replace(/^\\t+/u, \"\") === document.delimiter)) {\n terminated = true;\n break;\n }\n body += (document.stripTabs ? line.replace(/^\\t+/u, \"\") : line) + \"\\n\";\n }\n if (!terminated && this.partial) throw new IncompleteShellInput();\n if (!terminated) this.warnings.push(`here-document at offset ${document.offset} delimited by end-of-file (wanted ${JSON.stringify(document.delimiter)})`);\n document.body = body;\n document.endLine = this.lineAt(Math.max(0, this.position - 1));\n }\n }\n\n *documentWords(): Generator<Word> {\n let text = \"\";\n while (this.position < this.source.length) {\n const current = this.source[this.position]!;\n if (current === \"$\" || current === \"`\") {\n if (text) { yield { offset: 0, parts: [{ kind: \"text\", value: text, quoted: true }] }; text = \"\"; }\n const offset = this.position;\n const parts: WordPart[] = [];\n try { this.expansion(parts, true); }\n catch (error) {\n if (!(error instanceof ShellSyntaxError) || /nesting|exceeds/u.test(error.reason)) throw error;\n if (this.source.startsWith(\"${\", offset)) throw new HereDocumentSyntaxError(`shell: line ${this.documentLine}: ${this.source}: bad substitution\\n`);\n if (current === \"`\") throw new HereDocumentSyntaxError(`shell: line ${this.documentLine}: bad substitution: no closing \"\\`\" in ${this.source.slice(offset)}\\n`);\n if (this.source.startsWith(\"$((\", offset) && error.reason === \"Unterminated arithmetic expression\") throw new HereDocumentSyntaxError(`shell: line ${this.documentLine}: bad substitution: no closing \\`)' in ${this.source}\\n`);\n throw new HereDocumentSyntaxError(`shell: line ${this.documentLine}: ${error.message}\\n`);\n }\n yield { offset, parts };\n } else if (current === \"\\\\\" && /[$`\\\\]/u.test(this.source[this.position + 1] ?? \"\")) {\n text += this.source[this.position + 1]!;\n this.position += 2;\n } else {\n text += current;\n this.position++;\n }\n if (text.length >= 1024) { yield { offset: 0, parts: [{ kind: \"text\", value: text, quoted: true }] }; text = \"\"; }\n }\n if (text) yield { offset: 0, parts: [{ kind: \"text\", value: text, quoted: true }] };\n }\n\n documentSubstitutionError(source: string, error: ShellSyntaxError, backtick = false): HereDocumentSyntaxError {\n const line = this.documentLine! + source.slice(0, error.offset).split(\"\\n\").length;\n if (error.offset >= source.length) {\n return new HereDocumentSyntaxError(backtick\n ? `shell: command substitution: line ${line}: syntax error: unexpected end of file\\n`\n : `shell: command substitution: line ${line}: unexpected EOF while looking for matching \\`)'\\n`);\n }\n const token = /^[;&|()<>]|^[^\\s;&|()<>]+/u.exec(source.slice(error.offset))?.[0] ?? \"newline\";\n const sourceLine = source.split(\"\\n\")[source.slice(0, error.offset).split(\"\\n\").length - 1] ?? \"\";\n return new HereDocumentSyntaxError(`shell: command substitution: line ${line}: syntax error near unexpected token \\`${token}'\\nshell: command substitution: line ${line}: \\`${sourceLine}'\\n`);\n }\n\n literalExpansion(): string {\n const backtick = this.source[this.position] === \"`\";\n const opening = this.source[this.position + 1];\n if (!backtick && opening !== \"(\" && opening !== \"{\") return this.source[this.position++]!;\n let value = backtick ? \"`\" : `$${opening}`;\n this.position += backtick ? 1 : 2;\n const closers = [backtick ? \"`\" : opening === \"(\" ? \")\" : \"}\"];\n let quote = \"\";\n while (this.position < this.source.length) {\n const current = this.source[this.position++]!;\n if (current === \"\\\\\" && quote !== \"'\") {\n const next = this.source[this.position++];\n if (next === undefined) this.error(\"Trailing delimiter escape\");\n if (next !== \"\\n\") value += quote === '\"' && !/[$`\"\\\\]/u.test(next) ? current + next : next;\n } else if (quote) {\n if (current === quote) quote = \"\";\n else value += current;\n } else if (current === \"'\" || current === '\"') quote = current;\n else {\n value += current;\n if (current === closers.at(-1)) {\n closers.pop();\n if (!closers.length) return value;\n } else if ((current === \"(\" && (closers.at(-1) === \")\" || this.source[this.position - 2] === \"$\"))\n || (current === \"{\" && (closers.at(-1) === \"}\" || this.source[this.position - 2] === \"$\"))) {\n closers.push(current === \"(\" ? \")\" : \"}\");\n if (closers.length + this.depth > 64) this.error(\"Syntax nesting exceeds 64\");\n }\n }\n }\n this.error(\"Unterminated delimiter expansion syntax\");\n }\n\n word(terminator?: string, enclosingQuoted = false, literal = false, arithmetic = false): Word {\n const offset = this.position;\n const reduction = this.printedNewlineReduction;\n const unprinted = this.unprintedWords;\n const parts: WordPart[] = [];\n let parentheses = 0;\n let conditionals = 0;\n let patternParentheses = 0;\n let regexBracket = false;\n let regexBracketFirst = false;\n let regexBracketNegation = false;\n let regexClass = \"\";\n const conditionalPattern = terminator === undefined ? this.conditionalPattern : undefined;\n let plain = true;\n const text = (value: ShellValue, quoted: boolean, synthetic = false) => {\n const projection = shellValueText(value);\n if (conditionalPattern === \"regex\" && regexBracket && quoted && projection.length) { regexBracketFirst = false; regexBracketNegation = false; }\n const previous = parts.at(-1);\n if (previous?.kind === \"text\" && previous.quoted === quoted && !previous.byteValue && typeof value === \"string\") {\n previous.value += value;\n if (!synthetic) setQuoteMarker(previous, false);\n } else {\n const part: WordPart = { kind: \"text\", value: projection, quoted, ...(typeof value === \"string\" ? {} : { byteValue: value }) };\n setQuoteMarker(part, synthetic);\n parts.push(part);\n }\n };\n while (this.position < this.source.length) {\n const current = this.source[this.position]!;\n if (conditionalPattern) {\n if (/[ \\t\\n;]/u.test(current)) break;\n const bracketMaterial = conditionalPattern === \"regex\" && (regexBracket || current === \"[\");\n if (bracketMaterial) {\n if (!regexBracket) { regexBracket = true; regexBracketFirst = true; regexBracketNegation = true; }\n else if (regexClass) {\n if (current === \"]\" && this.source[this.position - 1] === regexClass) regexClass = \"\";\n } else if (current === \"[\" && [\":\", \".\", \"=\"].includes(this.source[this.position + 1] ?? \"\")) { regexClass = this.source[this.position + 1]!; regexBracketFirst = false; }\n else if (current === \"]\" && !regexBracketFirst) regexBracket = false;\n else if (current === \"^\" && regexBracketFirst && regexBracketNegation) regexBracketNegation = false;\n else { regexBracketFirst = false; regexBracketNegation = false; }\n } else if (current === \"(\" && (conditionalPattern === \"regex\" || patternParentheses > 0 || \"?*+@!\".includes(this.source[this.position - 1] ?? \" \"))) {\n if (++patternParentheses > 64) this.error(\"Conditional syntax nesting exceeds 64\");\n } else if (current === \")\" && patternParentheses > 0) patternParentheses--;\n else if (/[()<>]/u.test(current) || patternParentheses === 0 && (this.source.startsWith(\"&&\", this.position) || this.source.startsWith(\"||\", this.position))) break;\n } else if (terminator ? terminator.includes(current) && (!arithmetic || current !== \":\" || parentheses === 0 && conditionals === 0) : /[ \\t\\n;|&()<>]/u.test(current)) break;\n if (current === \"$\" && this.source[this.position + 1] === \"'\" && !enclosingQuoted && !literal) {\n plain = false;\n this.unprintedWords++;\n text(this.ansiWord(), true);\n } else if (current === \"'\" && !enclosingQuoted) {\n plain = false;\n const end = this.source.indexOf(\"'\", this.position + 1);\n if (end === -1) this.error(\"Unterminated single quote\", { quote: \"'\", line: this.lineAt(this.position) });\n text(this.source.slice(this.position + 1, end), true);\n this.position = end + 1;\n } else if (current === '\"') {\n plain = false;\n const quoteLine = this.lineAt(this.position);\n this.position++;\n text(\"\", true, true);\n const quoteParts = parts.length;\n while (this.position < this.source.length && this.source[this.position] !== '\"') {\n const inner = this.source[this.position]!;\n if (!literal && (inner === \"$\" || inner === \"`\")) this.expansion(parts, true);\n else if (inner === \"\\\\\" && /[$`\"\\\\\\n]/u.test(this.source[this.position + 1] ?? \"\")) {\n const escaped = this.source[this.position + 1]!;\n if (escaped !== \"\\n\") text(escaped, true);\n else this.printedNewlineReduction++;\n this.position += 2;\n } else {\n text(inner, true);\n this.position++;\n }\n }\n if (this.source[this.position] !== '\"') this.error(\"Unterminated double quote\", { quote: '\"', line: quoteLine });\n if (parts.length === quoteParts) setQuoteMarker(parts.at(-1)!, false);\n this.position++;\n } else if (current === \"\\\\\") {\n if (this.source[this.position + 1] !== \"\\n\") plain = false;\n this.position++;\n if (this.position === this.source.length) this.error(\"Trailing escape\");\n if (this.source[this.position] !== \"\\n\") text(this.source[this.position]!, true);\n else this.printedNewlineReduction++;\n this.position++;\n } else if (current === \"$\" || current === \"`\") {\n plain = false;\n if (literal) {\n if (current === \"$\" && [\"'\", '\"'].includes(this.source[this.position + 1] ?? \"\")) this.error(\"Unsupported shell quoting in here-document delimiter\");\n text(this.literalExpansion(), current === \"`\");\n }\n else this.expansion(parts, enclosingQuoted);\n } else {\n if (arithmetic) {\n if (current === \"(\") parentheses++;\n else if (current === \")\") parentheses--;\n else if (current === \"?\") conditionals++;\n else if (current === \":\" && conditionals > 0) conditionals--;\n }\n text(current, false);\n this.position++;\n }\n }\n if (conditionalPattern === \"regex\" && patternParentheses > 0) this.error(\"Unterminated conditional regular expression group\");\n const printedNewlines = this.source.slice(offset, this.position).split(\"\\n\").length - 1 - (this.printedNewlineReduction - reduction);\n return { parts, offset, ...(unprinted === this.unprintedWords ? { printedNewlines } : {}), ...(plain ? { plain: parts.map((part) => part.kind === \"text\" ? part.value : \"\").join(\"\") } : {}) };\n }\n\n ansiWord(): ShellValue {\n const quoteLine = this.lineAt(this.position);\n this.position += 2;\n const bytes: number[] = [];\n const encoder = new TextEncoder();\n const escapes: Readonly<Record<string, number>> = { a: 7, b: 8, e: 27, E: 27, f: 12, n: 10, r: 13, t: 9, v: 11, \"\\\\\": 92, \"'\": 39, '\"': 34, \"?\": 63 };\n while (this.position < this.source.length) {\n const character = String.fromCodePoint(this.source.codePointAt(this.position)!);\n this.position += character.length;\n if (character === \"'\") {\n const nul = bytes.indexOf(0);\n const raw = Uint8Array.from(nul < 0 ? bytes : bytes.slice(0, nul));\n try { return new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(raw); }\n catch (error) {\n if (!(error instanceof TypeError) || !(\"code\" in error) || error.code !== \"ERR_ENCODING_INVALID_ENCODED_DATA\") throw error;\n return shellValueFromBytes(raw);\n }\n }\n if (character !== \"\\\\\") { bytes.push(...encoder.encode(character)); continue; }\n const escape = this.source[this.position++];\n if (escape === undefined) this.error(\"Unterminated ANSI-C quote\", { quote: \"'\", line: quoteLine });\n if (escapes[escape] !== undefined) { bytes.push(escapes[escape]!); continue; }\n if (/[0-7]/u.test(escape)) {\n const digits = escape + (/^[0-7]{0,2}/u.exec(this.source.slice(this.position))?.[0] ?? \"\");\n this.position += digits.length - 1;\n bytes.push(parseInt(digits, 8) & 255);\n } else if ([\"x\", \"u\", \"U\"].includes(escape)) {\n const maximum = escape === \"x\" ? 2 : escape === \"u\" ? 4 : 8;\n const digits = new RegExp(`^[0-9a-fA-F]{1,${maximum}}`, \"u\").exec(this.source.slice(this.position))?.[0];\n if (!digits) { bytes.push(92, escape.charCodeAt(0)); continue; }\n this.position += digits.length;\n const code = parseInt(digits, 16);\n if (escape === \"x\") bytes.push(code);\n else if (this.byteLocale && code > 127) {\n bytes.push(...encoder.encode(`\\\\${code <= 0xffff ? \"u\" : \"U\"}${code.toString(16).toUpperCase().padStart(code <= 0xffff ? 4 : 8, \"0\")}`));\n } else {\n if (code > 0x10ffff || (code >= 0xd800 && code <= 0xdfff)) this.error(\"Unsupported non-scalar ANSI-C Unicode escape\");\n bytes.push(...encoder.encode(String.fromCodePoint(code)));\n }\n } else if (escape === \"c\" && this.source[this.position] !== \"'\" && this.position < this.source.length) {\n const control = this.source[this.position++]!;\n if (control === \"\\\\\" && this.source[this.position] === \"\\\\\") this.position++;\n bytes.push(control === \"?\" ? 127 : control.toUpperCase().charCodeAt(0) & 31);\n } else bytes.push(92, ...encoder.encode(escape));\n }\n this.error(\"Unterminated ANSI-C quote\", { quote: \"'\", line: quoteLine });\n }\n\n expansion(parts: WordPart[], quoted: boolean): void {\n const line = this.documentLine ?? this.lineAt(this.position);\n if (this.source[this.position] === \"`\") {\n this.position++;\n let source = \"\";\n while (this.position < this.source.length && this.source[this.position] !== \"`\") {\n if (this.source[this.position] === \"\\\\\" && /[$`\\\\]/u.test(this.source[this.position + 1] ?? \"\")) this.position++;\n source += this.source[this.position++]!;\n }\n if (this.source[this.position] !== \"`\") this.error(\"Unterminated command substitution\");\n this.position++;\n try { parts.push({ kind: \"substitution\", script: parseSource(source, this.depth + 1, this.warnings, line - 1, this.byteLocale), line, quoted }); }\n catch (error) {\n if (this.documentLine === undefined || !(error instanceof ShellSyntaxError) || /nesting|exceeds/u.test(error.reason)) throw error;\n parts.push({ kind: \"failed-substitution\", diagnostic: this.documentSubstitutionError(source, error, true).diagnostic, quoted });\n }\n return;\n }\n this.position++;\n if ([\"$\", \"!\"].includes(this.source[this.position] ?? \"\") || (!quoted && [\"'\", '\"'].includes(this.source[this.position] ?? \"\"))) this.error(\"Unsupported shell quoting or special parameter\");\n if (this.source.startsWith(\"((\", this.position)) {\n const start = this.position + 2;\n const end = arithmeticEnd(this.source, start);\n const source = this.source.slice(start, end);\n parts.push({ kind: \"arithmetic\", expression: prepareArithmetic(source), source, line, quoted });\n this.position = end + 2;\n } else if (this.source[this.position] === \"(\") {\n const start = this.position + 1;\n let nested: Parser;\n let script: Script;\n try {\n nested = new Parser(this.source.slice(start), this.depth + 1, this.warnings, this.lineAt(start) - 1, undefined, this.byteLocale);\n script = nested.script(new Set([\")\"]));\n }\n catch (error) {\n if (this.documentLine !== undefined && error instanceof ShellSyntaxError && !/nesting|exceeds/u.test(error.reason)) throw this.documentSubstitutionError(this.source.slice(start), error);\n if (error instanceof ShellSyntaxError && !/Unterminated|nesting|exceeds/u.test(error.reason)) throw new ShellSyntaxError(error.reason, start + error.offset, 127);\n throw error;\n }\n if (nested.current.value !== \")\") {\n if (this.documentLine !== undefined) throw this.documentSubstitutionError(this.source.slice(start), new ShellSyntaxError(\"Unterminated command substitution\", nested.current.offset));\n this.error(\"Unterminated command substitution\");\n }\n if (nested.lexer.documents.length) this.error(\"Here-document requires a newline before closing command substitution\");\n this.position += nested.current.end + 1;\n if (script.printedNewlines === undefined) this.unprintedWords++;\n else this.printedNewlineReduction += this.source.slice(start, this.position - 1).split(\"\\n\").length - 1 - script.printedNewlines;\n parts.push({ kind: \"substitution\", script, line, sourceLine: script.line ?? line, quoted });\n } else if (this.source[this.position] === \"{\") {\n this.position++;\n const parameterStart = this.position - 2;\n const length = this.source[this.position] === \"#\" && /[a-zA-Z_]/u.test(this.source[this.position + 1] ?? \"\");\n if (length) this.position++;\n const name = /^(?:[a-zA-Z_][a-zA-Z_0-9]*|[0-9]+|[?@*#-])/u.exec(this.source.slice(this.position))?.[0];\n if (!name) this.error(\"Unsupported parameter expansion\");\n this.position += name.length;\n let selector: ArraySelector | undefined;\n if (this.source[this.position] === \"[\") {\n if (!/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(name)) this.error(\"Unsupported indexed-array parameter\");\n const start = ++this.position;\n const end = this.source.indexOf(\"]\", start);\n if (end < 0) this.error(\"Unterminated indexed-array subscript\");\n selector = arraySelector(this.source.slice(start, end), start);\n this.position = end + 1;\n if (this.source[this.position] !== \"}\") this.error(\"Unsupported indexed-array operator\");\n }\n const operator = /^(?::[-=+?]|##|%%|\\/\\/|\\/[#%]?|[-=+?#%])/u.exec(this.source.slice(this.position))?.[0];\n let alternate: Word | undefined;\n let replacement: Word | undefined;\n let substring: Extract<WordPart, { kind: \"variable\" }>[\"substring\"];\n if (operator) {\n if (length) this.error(\"Invalid length expansion\");\n this.position += operator.length;\n alternate = this.word(operator.startsWith(\"/\") ? \"/}\" : \"}\", quoted && ![\"#\", \"##\", \"%\", \"%%\"].includes(operator) && !operator.startsWith(\"/\"));\n if (operator.startsWith(\"/\") && this.source[this.position] === \"/\") {\n this.position++;\n replacement = this.word(\"}\");\n }\n } else if (this.source[this.position] === \":\") {\n if (length || !/^(?:[a-zA-Z_][a-zA-Z_0-9]*|[0-9]+)$/u.test(name)) this.error(\"Unsupported non-scalar substring expansion\");\n this.position++;\n const offset = this.word(\":}\", true, false, true);\n let substringLength: Word | undefined;\n if (this.source[this.position] === \":\") {\n this.position++;\n substringLength = this.word(\"}\", true, false, true);\n }\n substring = { offset, ...(substringLength ? { length: substringLength } : {}), source: this.source.slice(parameterStart, this.position + 1) };\n }\n if (this.source[this.position] !== \"}\") this.error(\"Unterminated or unsupported parameter expansion\");\n this.position++;\n const part: WordPart = { kind: \"variable\", name, quoted, line, ...(length ? { length } : {}), ...(operator ? { operator, alternate: alternate! } : {}), ...(replacement ? { replacement } : {}), ...(substring ? { substring } : {}) };\n if (selector) setArraySelector(part, selector);\n parts.push(part);\n } else {\n const name = /^(?:[a-zA-Z_][a-zA-Z_0-9]*|[?@*#0-9-])/u.exec(this.source.slice(this.position))?.[0];\n if (name) {\n this.position += name.length;\n parts.push({ kind: \"variable\", name, quoted, line });\n } else parts.push({ kind: \"text\", value: \"$\", quoted });\n }\n }\n}\n\nclass Parser {\n readonly lexer: Lexer;\n current: Token;\n lookahead: Token | undefined;\n nesting = 0;\n readonly openCommands: { name: string; line: number }[] = [];\n\n constructor(source: string, depth: number, warnings: string[] = [], lineOffset = 0, position?: number, byteLocale = false, partial = false) {\n if (position === undefined && depth === 0 && source.includes(\"\\0\")) throw new ShellSyntaxError(\"NUL bytes are not valid shell source\", source.indexOf(\"\\0\"));\n this.lexer = new Lexer(source, depth, warnings, lineOffset, byteLocale, undefined, partial);\n this.lexer.position = position ?? 0;\n this.current = this.lexer.next();\n }\n\n error(message: string): never {\n const command = this.current.kind === \"end\" ? this.openCommands.findLast((command) => [\"{\", \"if\", \"while\", \"until\", \"for\", \"case\"].includes(command.name)) : undefined;\n throw new ShellSyntaxError(message, this.current.offset, 2, command);\n }\n\n advance(): Token {\n const previous = this.current;\n this.current = this.lookahead ?? this.lexer.next();\n this.lookahead = undefined;\n return previous;\n }\n\n peek(): Token {\n return this.lookahead ??= this.lexer.next();\n }\n\n is(value: string): boolean { return this.current.value === value; }\n\n isEnd(): boolean { return this.current.kind === \"end\"; }\n\n expect(value: string): void {\n if (!this.is(value)) this.error(`Expected ${value}`);\n this.advance();\n }\n\n newlines(): void { while (this.is(\"\\n\")) this.advance(); }\n\n script(stops = new Set<string>(), inputUnit = false): Script {\n const lists: AndOr[] = [];\n const separators: boolean[] = [];\n this.newlines();\n const line = this.lexer.lineAt(this.current.offset);\n while (this.current.kind !== \"end\" && !stops.has(this.current.value)) {\n const pipelines = [this.pipeline()];\n const operators: (\"&&\" | \"||\")[] = [];\n while (this.is(\"&&\") || this.is(\"||\")) {\n operators.push(this.advance().value as \"&&\" | \"||\");\n this.newlines();\n pipelines.push(this.pipeline());\n }\n lists.push({ pipelines, operators });\n separators.push(this.is(\"\\n\"));\n if (inputUnit && this.is(\"\\n\")) break;\n if (this.is(\";\") || this.is(\"\\n\")) {\n this.advance();\n if (inputUnit && this.is(\"\\n\")) break;\n this.newlines();\n } else if (!this.isEnd() && !this.is(\")\") && !(stops.has(this.current.value) && [\";;\", \";&\", \";;&\"].includes(this.current.value))) this.error(\"Expected command separator\");\n }\n const printed = printedSimpleLines(lists, separators);\n return { lists, line, ...printed };\n }\n\n pipeline(): Pipeline {\n const negate = this.is(\"!\");\n if (negate) this.advance();\n const commands = [this.command()];\n while (this.is(\"|\") || this.is(\"|&\")) {\n const operator = this.advance();\n if (operator.value === \"|&\") commands.at(-1)!.redirects.push({\n descriptor: 2, operator: \">&\", implicitPipeline: true,\n target: { offset: operator.offset, plain: \"1\", spelling: \"1\", parts: [{ kind: \"text\", value: \"1\", quoted: false }] },\n });\n this.newlines();\n commands.push(this.command());\n }\n return { commands, negate };\n }\n\n command(): Command {\n if (++this.nesting + this.lexer.depth > 64) this.error(\"Syntax nesting exceeds 64\");\n const line = this.lexer.lineAt(this.current.offset);\n this.openCommands.push({ name: this.current.value, line });\n try {\n const command = this.commandInner();\n return { ...command, line: command.line ?? line };\n } finally { this.nesting--; this.openCommands.pop(); }\n }\n\n commandInner(): Command {\n let command: Command;\n if (this.is(\"[[\")) {\n const start = this.current.end;\n this.lexer.conditional = true;\n this.advance();\n let nodes = 0;\n const grouped = new WeakSet<ConditionalExpression>();\n const admit = (): void => { if (nodes >= 4096) this.error(\"Conditional syntax exceeds 4096 nodes\"); nodes++; };\n const operand = (): Word => {\n if (this.current.kind !== \"word\" || this.is(\"]]\")) this.error(\"Expected conditional operand\");\n return this.advance().word!;\n };\n const primary = (depth: number): ConditionalExpression => {\n if (depth > 64) this.error(\"Conditional syntax nesting exceeds 64\");\n if (this.is(\"!\")) { admit(); this.advance(); const expression = primary(depth + 1); return expression.kind === \"not\" && !grouped.has(expression) ? expression.operand : { kind: \"not\", operand: expression }; }\n if (this.is(\"(\")) { this.advance(); const expression = disjunction(depth + 1); this.expect(\")\"); grouped.add(expression); return expression; }\n admit();\n const first = operand();\n if (conditionalBinary.has(this.current.value)) {\n const operator = this.current.value;\n this.lexer.conditionalPattern = operator === \"=~\" ? \"regex\" : [\"=\", \"==\", \"!=\"].includes(operator) ? \"pattern\" : undefined;\n this.advance();\n this.lexer.conditionalPattern = undefined;\n return { kind: \"binary\", operator, left: first, right: operand() };\n }\n if (first.plain !== undefined && conditionalUnary.has(first.plain) && this.current.kind === \"word\" && !this.is(\"]]\")) return { kind: \"unary\", operator: first.plain, operand: operand() };\n return { kind: \"nonempty\", operand: first };\n };\n const conjunction = (depth: number): ConditionalExpression => {\n let expression = primary(depth);\n while (this.is(\"&&\")) { admit(); this.advance(); expression = { kind: \"and\", left: expression, right: primary(depth) }; }\n return expression;\n };\n const disjunction = (depth: number): ConditionalExpression => {\n let expression = conjunction(depth);\n while (this.is(\"||\")) { admit(); this.advance(); expression = { kind: \"or\", left: expression, right: conjunction(depth) }; }\n return expression;\n };\n const expression = disjunction(1);\n if (!this.is(\"]]\")) this.error(\"Expected ]]\");\n const source = this.lexer.source.slice(start, this.current.offset);\n this.lexer.conditional = false;\n this.advance();\n command = { kind: \"conditional\", expression, source, redirects: [] };\n } else if (this.is(\"(\") && this.lexer.source.startsWith(\"((\", this.current.offset)) {\n const start = this.current.offset + 2;\n const end = arithmeticEnd(this.lexer.source, start);\n const source = this.lexer.source.slice(start, end);\n command = { kind: \"arithmetic\", expression: prepareArithmetic(source), source, redirects: [] };\n this.lexer.position = end + 2;\n this.lookahead = undefined;\n this.current = this.lexer.next();\n } else if (this.is(\"(\") || this.is(\"{\")) {\n const subshell = this.is(\"(\");\n this.advance();\n const body = this.script(new Set([subshell ? \")\" : \"}\"]));\n if (!body.lists.length) this.error(\"Empty compound command\");\n this.expect(subshell ? \")\" : \"}\");\n command = { kind: subshell ? \"subshell\" : \"group\", body, redirects: [] };\n } else if (this.is(\"if\")) {\n this.advance();\n const branches: { condition: Script; body: Script }[] = [];\n while (true) {\n const condition = this.nonemptyScript(new Set([\"then\"]));\n this.expect(\"then\");\n const body = this.nonemptyScript(new Set([\"elif\", \"else\", \"fi\"]));\n branches.push({ condition, body });\n if (!this.is(\"elif\")) break;\n this.advance();\n }\n let otherwise: Script | undefined;\n if (this.is(\"else\")) {\n this.advance();\n otherwise = this.nonemptyScript(new Set([\"fi\"]));\n }\n this.expect(\"fi\");\n command = { kind: \"if\", branches, ...(otherwise ? { otherwise } : {}), redirects: [] };\n } else if (this.is(\"case\")) {\n this.advance();\n if (!this.current.word) this.error(\"Expected case subject\");\n const subject = this.advance().word!;\n this.newlines();\n this.expect(\"in\");\n this.newlines();\n const clauses: CaseClause[] = [];\n while (!this.is(\"esac\")) {\n if (this.is(\"(\")) this.advance();\n const patterns: Word[] = [];\n while (true) {\n if (!this.current.word) this.error(\"Expected case pattern\");\n patterns.push(this.advance().word!);\n if (!this.is(\"|\")) break;\n this.advance();\n }\n this.expect(\")\");\n const body = this.script(new Set([\";;\", \";&\", \";;&\", \"esac\"]));\n if (![\";;\", \";&\", \";;&\", \"esac\"].includes(this.current.value)) this.error(\"Expected case terminator\");\n const terminator = this.current.value as CaseClause[\"terminator\"];\n clauses.push({ patterns, body, terminator });\n if (terminator === \"esac\") break;\n this.advance();\n this.newlines();\n }\n this.expect(\"esac\");\n command = { kind: \"case\", subject, clauses, redirects: [] };\n } else if (this.is(\"while\") || this.is(\"until\")) {\n const kind = this.advance().value as \"while\" | \"until\";\n const condition = this.nonemptyScript(new Set([\"do\"]));\n this.expect(\"do\");\n const body = this.nonemptyScript(new Set([\"done\"]));\n this.expect(\"done\");\n command = { kind, condition, body, redirects: [] };\n } else if (this.is(\"for\")) {\n this.advance();\n const name = this.advance().value;\n if (!/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(name)) this.error(\"Invalid for variable\");\n this.newlines();\n let words: Word[] | undefined;\n if (this.is(\"in\")) {\n this.advance();\n words = [];\n while (this.current.kind === \"word\") words.push(this.advance().word!);\n }\n if (this.is(\";\") || this.is(\"\\n\")) this.advance();\n else if (words) this.error(\"Expected for separator\");\n this.newlines();\n this.expect(\"do\");\n const body = this.nonemptyScript(new Set([\"done\"]));\n this.expect(\"done\");\n command = { kind: \"for\", name, ...(words ? { words } : {}), body, redirects: [] };\n } else if (this.is(\"function\")) {\n this.advance();\n if (this.current.kind !== \"word\" || !/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(this.current.value)) this.error(\"Invalid function name\");\n const name = this.advance().value;\n if (this.is(\"(\")) {\n this.advance();\n this.expect(\")\");\n }\n this.newlines();\n if (!this.is(\"{\")) this.error(\"Expected brace function body\");\n command = { kind: \"function\", name, body: this.command(), redirects: [] };\n } else if (this.current.kind === \"word\" && !compoundHead(this.current.word!) && this.peek().value === \"(\") {\n const name = this.advance().value;\n if (!/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(name)) this.error(\"Invalid function name\");\n this.expect(\"(\");\n this.expect(\")\");\n this.newlines();\n if (![\"{\", \"(\", \"if\", \"case\", \"while\", \"until\", \"for\", \"[[\"].includes(this.current.value)) this.error(\"Expected function body\");\n command = { kind: \"function\", name, body: this.command(), redirects: [] };\n } else {\n if ([\"!\", \"then\", \"else\", \"elif\", \"fi\", \"do\", \"done\", \"}\", \"case\", \"esac\", \"select\", \"function\", \"[[\", \"]]\"].includes(this.current.value)) this.error(`Unexpected or unsupported keyword ${this.current.value}`);\n const words: Word[] = [];\n const redirects: Redirect[] = [];\n let line: number | undefined;\n while (true) {\n const wordLine = this.lexer.lineAt(Math.max(this.current.offset, this.current.end - 1));\n const redirect = this.redirect();\n if (redirect) { line ??= redirect.line; redirects.push(redirect); }\n else if (this.current.kind === \"word\") {\n line ??= wordLine;\n let word = this.advance().word!;\n const head = compoundHead(word);\n if (head && this.is(\"(\")) {\n this.advance();\n const entries: ArrayEntry[] = [];\n this.newlines();\n while (this.current.kind === \"word\") {\n entries.push(compoundEntry(this.advance().word!));\n this.newlines();\n }\n if (!this.is(\")\")) this.error(\"Unsupported indexed-array compound assignment\");\n const end = this.advance().end;\n word = { offset: word.offset, parts: word.parts, spelling: this.lexer.source.slice(word.offset, end) };\n setArrayAssignment(word, { kind: \"compound\", ...head, entries });\n } else {\n const assignment = words.every(previous => getArrayAssignment(previous) || scalarAssignmentName(previous)) ? elementAssignment(word) : undefined;\n if (assignment) setArrayAssignment(word, assignment);\n }\n words.push(word);\n }\n else break;\n }\n if (!words.length && !redirects.length) this.error(\"Expected command\");\n if (words.some(word => getArrayAssignment(word)) && words.some(word => !getArrayAssignment(word) && !scalarAssignmentName(word))) this.error(\"Indexed-array command prefixes are unsupported\");\n return { kind: \"simple\", words, redirects, ...(line === undefined ? {} : { line }) };\n }\n let redirect: Redirect | undefined;\n while ((redirect = this.redirect())) command.redirects.push(redirect);\n return command;\n }\n\n nonemptyScript(stops: Set<string>): Script {\n const script = this.script(stops);\n if (!script.lists.length) this.error(\"Expected nonempty compound list\");\n return script;\n }\n\n redirect(): Redirect | undefined {\n let descriptor: number | undefined;\n if (this.current.kind === \"word\" && /^\\d+$/u.test(this.current.value)) {\n const next = this.peek();\n if (/^(?:>|>>|<|<<|<<-|<<<|>&|<&|>\\|)$/u.test(next.value) && this.current.end === next.offset) descriptor = Number(this.advance().value);\n }\n if (!/^(?:>|>>|<|<<|<<-|<<<|>&|<&|>\\||&>)$/u.test(this.current.value) || this.current.kind !== \"operator\") return undefined;\n const operator = this.advance().value;\n descriptor ??= operator.startsWith(\"<\") ? 0 : 1;\n if (!Number.isSafeInteger(descriptor) || descriptor > 255) this.error(\"File descriptor must be between 0 and 255\");\n if (!this.current.word) this.error(\"Expected redirect target\");\n const target = this.advance();\n return { descriptor, operator, target: target.word!, line: this.lexer.lineAt(Math.max(target.offset, target.end - 1)), ...((operator === \"<&\" || operator === \">&\") && this.lexer.source[target.end - 1] === \"-\" ? { move: true } : {}), ...(target.document ? { document: target.document } : {}) };\n }\n}\n\nexport function parseShell(source: string, depth = 0): Script {\n const warnings: string[] = [];\n const script = parseSource(source, depth, warnings);\n return { ...script, ...(warnings.length ? { warnings } : {}) };\n}\n\nexport function* hereDocumentWords(document: HereDocument, line: number, byteLocale: boolean, warnings: string[]): Generator<Word> {\n if (document.quoted) yield { offset: document.offset, parts: [{ kind: \"text\", value: document.body, quoted: true }] };\n else yield* new Lexer(document.body, document.depth, warnings, line - 1, byteLocale, line).documentWords();\n}\n\nexport function parseShellUnit(source: string, position = 0, byteLocale = false): { script: Script; next: number } {\n const warnings: string[] = [];\n const parser = new Parser(source, 0, warnings, 0, position, byteLocale);\n const script = parser.script(new Set(), true);\n const next = parser.current.end;\n const nul = source.indexOf(\"\\0\", position);\n if (nul >= 0 && nul < next) throw new ShellSyntaxError(\"NUL bytes are not valid shell source\", nul);\n return { script: { ...script, ...(warnings.length ? { warnings } : {}) }, next };\n}\n\nexport function parseShellInputUnit(source: string, byteLocale = false): { script: Script; next: number } | undefined {\n const warnings: string[] = [];\n try {\n const parser = new Parser(source, 0, warnings, 0, 0, byteLocale, true);\n const script = parser.script(new Set(), true);\n return { script: { ...script, ...(warnings.length ? { warnings } : {}) }, next: parser.current.end };\n } catch (error) {\n if (error instanceof IncompleteShellInput) return undefined;\n if (error instanceof ShellSyntaxError && (/^Unterminated|^Trailing escape/u.test(error.reason) || (error.offset >= source.length && !/Unsupported|unsupported|nesting|exceeds/u.test(error.reason)))) return undefined;\n throw error;\n }\n}\n\nfunction parseSource(source: string, depth: number, warnings: string[], lineOffset = 0, byteLocale = false): Script {\n const parser = new Parser(source, depth, warnings, lineOffset, undefined, byteLocale);\n const script = parser.script();\n if (parser.current.kind !== \"end\") parser.error(\"Unexpected token\");\n return script;\n}\n", "import type { ByteSink, ByteSource, CommandContext, CommandRegistry, CommandResult, FileSystem } from \"../contracts/index.js\";\nimport type { CommandArguments } from \"../contracts/command.js\";\n\nexport interface ShellInvokeOptions {\n readonly argumentValues?: CommandArguments;\n readonly signal?: AbortSignal | undefined;\n readonly stdin?: ByteSource;\n readonly stdinIsDefault?: boolean;\n readonly stdout?: ByteSink;\n readonly stderr?: ByteSink;\n readonly cwd?: string;\n readonly env?: Readonly<Record<string, string>>;\n readonly replaceEnv?: boolean;\n}\n\nexport interface ShellCommandContext extends CommandContext {\n readonly invoke: (command: string, args: readonly string[], options?: ShellInvokeOptions) => Promise<CommandResult>;\n}\n\nexport interface ShellLimits {\n readonly maxInputBytes?: number;\n readonly maxOutputBytes?: number;\n readonly maxCommands?: number;\n readonly maxLoopIterations?: number;\n readonly maxSubstitutionDepth?: number;\n readonly maxSourceBytes?: number;\n readonly maxExpansionFields?: number;\n readonly maxExpansionBytes?: number;\n readonly pipeHighWaterMark?: number;\n}\n\nexport interface ShellOptions {\n readonly fs: FileSystem;\n readonly commands?: CommandRegistry;\n readonly cwd?: string;\n readonly env?: Readonly<Record<string, string>>;\n readonly limits?: ShellLimits;\n}\n\nexport interface ShellExecOptions {\n readonly fs?: FileSystem;\n readonly cwd?: string;\n readonly env?: Readonly<Record<string, string>>;\n readonly stdin?: string | Uint8Array | ByteSource;\n readonly stdout?: ByteSink;\n readonly stderr?: ByteSink;\n readonly signal?: AbortSignal;\n readonly limits?: ShellLimits;\n}\n\nexport interface ShellResult {\n readonly stdout: string;\n readonly stderr: string;\n readonly stdoutBytes: Uint8Array;\n readonly stderrBytes: Uint8Array;\n readonly exitCode: number;\n}\n\nexport class ShellSyntaxError extends SyntaxError {\n constructor(readonly reason: string, readonly offset: number, readonly exitCode = 2, readonly incompleteCommand?: { name: string; line: number }, readonly unclosedQuote?: { quote: string; line: number }) {\n super(`${reason} at offset ${offset}`);\n this.name = \"ShellSyntaxError\";\n }\n}\n\nexport class ShellLimitError extends Error {\n constructor(readonly limit: keyof ShellLimits) {\n super(`Shell limit exceeded: ${limit}`);\n this.name = \"ShellLimitError\";\n }\n}\n", "import { ShellSyntaxError } from \"./types.js\";\n\nexport type Arithmetic = (\n | { kind: \"literal\"; value: bigint }\n | { kind: \"name\"; name: string }\n | { kind: \"unary\"; operator: string; operand: Arithmetic; postfix: boolean }\n | { kind: \"binary\"; operator: string; left: Arithmetic; right: Arithmetic }\n | { kind: \"conditional\"; condition: Arithmetic; yes: Arithmetic; no: Arithmetic }\n) & { start?: number };\n\nexport interface ArithmeticProgram {\n readonly source: string;\n readonly tree?: Arithmetic;\n readonly error?: ShellSyntaxError;\n}\n\nclass ArithmeticFailure extends Error {\n constructor(message: string, readonly offset: number) { super(message); }\n}\n\nexport function prepareArithmetic(source: string): ArithmeticProgram {\n try { return { source, tree: parseArithmetic(source) }; }\n catch (error) {\n if (!(error instanceof ShellSyntaxError) || /nesting/u.test(error.reason)) throw error;\n return { source, error };\n }\n}\n\nconst precedence: Record<string, number> = {\n \",\": 1, \"=\": 2, \"+=\": 2, \"-=\": 2, \"*=\": 2, \"/=\": 2, \"%=\": 2,\n \"<<=\": 2, \">>=\": 2, \"&=\": 2, \"^=\": 2, \"|=\": 2,\n \"?\": 3, \"||\": 4, \"&&\": 5, \"|\": 6, \"^\": 7, \"&\": 8,\n \"==\": 9, \"!=\": 9, \"<\": 10, \"<=\": 10, \">\": 10, \">=\": 10,\n \"<<\": 11, \">>\": 11, \"+\": 12, \"-\": 12, \"*\": 13, \"/\": 13, \"%\": 13, \"**\": 14,\n};\n\nfunction integer(text: string): bigint {\n if (/^0[xX][\\da-fA-F]+$/u.test(text)) return BigInt(text);\n if (/^0[0-7]+$/u.test(text)) return BigInt(`0o${text.slice(1)}`);\n if (/^0\\d+$/u.test(text)) throw new Error(\"Invalid octal constant\");\n if (/^\\d+$/u.test(text)) return BigInt(text);\n const match = /^(\\d+)#([\\da-zA-Z@_]+)$/u.exec(text);\n if (!match) throw new Error(\"Invalid arithmetic constant\");\n const base = Number(match[1]);\n if (base < 2 || base > 64) throw new Error(\"Invalid arithmetic base\");\n let value = 0n;\n for (const character of match[2]!) {\n const digit = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@_\".indexOf(base <= 36 ? character.toLowerCase() : character);\n if (digit >= base || digit < 0) throw new Error(\"Digit exceeds arithmetic base\");\n value = value * BigInt(base) + BigInt(digit);\n }\n return value;\n}\n\nexport function parseArithmetic(source: string, offset = 0): Arithmetic {\n const tokens: { value: string; offset: number }[] = [];\n let position = 0;\n while (position < source.length) {\n if (/\\s/u.test(source[position]!)) { position++; continue; }\n const value = /^(?:\\d+#[\\da-zA-Z@_]+|0[xX][\\da-fA-F]+|\\d+|[a-zA-Z_][a-zA-Z_0-9]*|<<=|>>=|\\*\\*|\\+\\+|--|&&|\\|\\||<<|>>|[+*/%&^|!<>=-]=|[()+*/%~!<>=&^|?:,\\-])/u.exec(source.slice(position))?.[0];\n if (!value) throw new ShellSyntaxError(\"Unsupported arithmetic token\", offset + position);\n tokens.push({ value, offset: offset + position });\n position += value.length;\n }\n let cursor = 0;\n let depth = 0;\n const current = () => tokens[cursor]?.value ?? \"\";\n const error = (message: string): never => { throw new ShellSyntaxError(message, tokens[cursor]?.offset ?? offset + source.length); };\n const expression = (minimum = 1): Arithmetic => {\n if (++depth > 64) error(\"Arithmetic nesting exceeds 64\");\n let left: Arithmetic;\n const start = tokens[cursor]?.offset ?? offset + source.length;\n const token = current();\n cursor++;\n if ([\"+\", \"-\", \"!\", \"~\", \"++\", \"--\"].includes(token)) {\n const operand = expression(15);\n if ([\"++\", \"--\"].includes(token) && operand.kind !== \"name\") error(\"Arithmetic assignment requires a variable\");\n left = { kind: \"unary\", operator: token, operand, postfix: false };\n } else if (token === \"(\") {\n left = expression();\n if (current() !== \")\") error(\"Unclosed arithmetic parenthesis\");\n cursor++;\n } else if (/^[a-zA-Z_]/u.test(token)) left = { kind: \"name\", name: token };\n else {\n try { left = { kind: \"literal\", value: BigInt.asIntN(64, integer(token)) }; }\n catch { error(\"Invalid arithmetic operand\"); }\n }\n left!.start = start;\n while (true) {\n const operator = current();\n if (operator === \"++\" || operator === \"--\") {\n if (left!.kind !== \"name\") error(\"Arithmetic assignment requires a variable\");\n cursor++;\n left = { kind: \"unary\", operator, operand: left!, postfix: true, start };\n continue;\n }\n const priority = Object.hasOwn(precedence, operator) ? precedence[operator]! : 0;\n if (priority < minimum || priority === 0) break;\n cursor++;\n if (operator === \"?\") {\n const yes = expression();\n if (current() !== \":\") error(\"Expected arithmetic colon\");\n cursor++;\n left = { kind: \"conditional\", condition: left!, yes, no: expression(3), start };\n } else {\n const assignment = priority === 2;\n if (assignment && left!.kind !== \"name\") error(\"Arithmetic assignment requires a variable\");\n const right = expression(priority + (assignment || operator === \"**\" ? 0 : 1));\n left = { kind: \"binary\", operator, left: left!, right, start };\n }\n }\n depth--;\n return left!;\n };\n if (!tokens.length) return { kind: \"literal\", value: 0n };\n const tree = expression();\n if (cursor < tokens.length) error(\"Unexpected arithmetic token\");\n return tree;\n}\n\nexport function arithmeticEnd(source: string, start: number): number {\n let depth = 0;\n for (let position = start; position < source.length; position++) {\n const character = source[position];\n if (character === \"(\") depth++;\n if (character === \")\") {\n if (depth === 0 && source[position + 1] === \")\") return position;\n if (--depth < 0) break;\n }\n }\n throw new ShellSyntaxError(\"Unterminated arithmetic expression\", start);\n}\n\nexport function evaluateArithmetic(program: ArithmeticProgram, variables: Record<string, string>): bigint {\n const visiting = new Set<string>();\n let steps = 0;\n const binary = (operator: string, left: bigint, right: bigint, offset: number): bigint => {\n switch (operator) {\n case \"+\": return left + right;\n case \"-\": return left - right;\n case \"*\": return left * right;\n case \"/\": if (right === 0n) throw new ArithmeticFailure(\"division by 0\", offset); return left / right;\n case \"%\": if (right === 0n) throw new ArithmeticFailure(\"division by 0\", offset); return left % right;\n case \"**\": {\n if (right < 0n) throw new ArithmeticFailure(\"exponent less than 0\", offset);\n let result = 1n;\n let base = left;\n let exponent = right;\n while (exponent) {\n if (exponent & 1n) result = BigInt.asIntN(64, result * base);\n exponent >>= 1n;\n base = BigInt.asIntN(64, base * base);\n }\n return result;\n }\n case \"<<\": return left << (right & 63n);\n case \">>\": return left >> (right & 63n);\n case \"&\": return left & right;\n case \"|\": return left | right;\n case \"^\": return left ^ right;\n case \"==\": return BigInt(left === right);\n case \"!=\": return BigInt(left !== right);\n case \"<\": return BigInt(left < right);\n case \"<=\": return BigInt(left <= right);\n case \">\": return BigInt(left > right);\n case \">=\": return BigInt(left >= right);\n default: throw new Error(`Unsupported arithmetic operator ${operator}`);\n }\n };\n const evaluate = (node: Arithmetic): bigint => {\n if (++steps > 10_000) throw new Error(\"Arithmetic operation limit exceeded\");\n let value: bigint;\n if (node.kind === \"literal\") return node.value;\n if (node.kind === \"name\") {\n if (visiting.has(node.name) || visiting.size >= 64) throw new Error(\"Arithmetic variable recursion\");\n visiting.add(node.name);\n try { return evaluate(parseArithmetic(variables[node.name] ?? \"0\")); }\n finally { visiting.delete(node.name); }\n }\n if (node.kind === \"conditional\") return evaluate(evaluate(node.condition) ? node.yes : node.no);\n if (node.kind === \"unary\") {\n const operand = evaluate(node.operand);\n if (node.operator === \"+\") value = operand;\n else if (node.operator === \"-\") value = -operand;\n else if (node.operator === \"!\") value = BigInt(!operand);\n else if (node.operator === \"~\") value = ~operand;\n else {\n value = BigInt.asIntN(64, operand + (node.operator === \"++\" ? 1n : -1n));\n variables[(node.operand as Extract<Arithmetic, { kind: \"name\" }>).name] = String(value);\n if (node.postfix) value = operand;\n }\n } else {\n if (node.operator === \"=\") value = evaluate(node.right);\n else {\n const left = evaluate(node.left);\n if (node.operator === \"&&\") return left ? BigInt(evaluate(node.right) !== 0n) : 0n;\n if (node.operator === \"||\") return left ? 1n : BigInt(evaluate(node.right) !== 0n);\n if (node.operator === \",\") return evaluate(node.right);\n value = binary(precedence[node.operator] === 2 ? node.operator.slice(0, -1) : node.operator, left, evaluate(node.right), node.right.start ?? 0);\n }\n if (precedence[node.operator] === 2) variables[(node.left as Extract<Arithmetic, { kind: \"name\" }>).name] = String(BigInt.asIntN(64, value));\n }\n return BigInt.asIntN(64, value);\n };\n try {\n if (program.error) throw program.error;\n return evaluate(program.tree!);\n } catch (error) {\n if (error instanceof ArithmeticFailure) throw new Error(`${program.source.trimStart()}: ${error.message} (error token is \"${program.source.slice(error.offset)}\")`);\n if (error instanceof ShellSyntaxError) {\n const offset = error.offset >= program.source.trimEnd().length ? Math.max(0, program.source.trimEnd().length - 1) : error.offset;\n const reason = error.reason === \"Invalid arithmetic operand\" ? \"arithmetic syntax error: operand expected\" : \"arithmetic syntax error in expression\";\n throw new Error(`${program.source.trimStart()}: ${reason} (error token is \"${program.source.slice(offset)}\")`);\n }\n throw error;\n }\n}\n", "import { ShellSyntaxError } from \"../types.js\";\nimport type { Word, WordPart } from \"../parser.js\";\n\nexport interface LiteralIndex {\n readonly decimal: string;\n}\n\nexport type ArraySelector =\n | { readonly kind: \"element\"; readonly index: LiteralIndex }\n | { readonly kind: \"members\"; readonly separator: \"@\" | \"*\" };\n\nexport interface ArrayEntry {\n readonly index?: LiteralIndex;\n readonly value: Word;\n}\n\nexport type ArrayAssignment =\n | { readonly kind: \"element\"; readonly name: string; readonly index: LiteralIndex; readonly append: boolean; readonly value: Word }\n | { readonly kind: \"compound\"; readonly name: string; readonly append: boolean; readonly entries: readonly ArrayEntry[] };\n\nconst assignments = new WeakMap<Word, ArrayAssignment>();\nconst selectors = new WeakMap<WordPart, ArraySelector>();\nconst quoteMarkers = new WeakSet<WordPart>();\n\nexport function setQuoteMarker(part: WordPart, synthetic: boolean): void {\n if (synthetic) quoteMarkers.add(part);\n else quoteMarkers.delete(part);\n}\n\nexport function isQuoteMarker(part: WordPart): boolean {\n return quoteMarkers.has(part);\n}\n\nexport function literalIndex(source: string, offset: number): LiteralIndex {\n let decimal = source;\n if (source[0] === \"'\" || source[0] === '\"') {\n if (source.length < 2 || source.at(-1) !== source[0]) throw new ShellSyntaxError(\"Unsupported indexed-array subscript\", offset);\n decimal = source.slice(1, -1);\n }\n if (!/^(?:0|[1-9][0-9]*)$/u.test(decimal)) throw new ShellSyntaxError(\"Unsupported indexed-array subscript\", offset);\n return { decimal };\n}\n\nexport function numericIndex(index: LiteralIndex): number | undefined {\n if (index.decimal.length > 10 || index.decimal.length === 10 && index.decimal > \"2147483647\") return undefined;\n return Number(index.decimal);\n}\n\nexport function arraySelector(source: string, offset: number): ArraySelector {\n return source === \"@\" || source === \"*\"\n ? { kind: \"members\", separator: source }\n : { kind: \"element\", index: literalIndex(source, offset) };\n}\n\nexport function setArraySelector(part: WordPart, selector: ArraySelector): void {\n selectors.set(part, selector);\n}\n\nexport function getArraySelector(part: WordPart): ArraySelector | undefined {\n return selectors.get(part);\n}\n\nexport function copyArraySelector(original: WordPart, copy: WordPart): WordPart {\n const selector = selectors.get(original);\n if (selector) selectors.set(copy, selector);\n setQuoteMarker(copy, isQuoteMarker(original));\n return copy;\n}\n\nexport function setArrayAssignment(word: Word, assignment: ArrayAssignment): void {\n assignments.set(word, assignment);\n}\n\nexport function getArrayAssignment(word: Word): ArrayAssignment | undefined {\n return assignments.get(word);\n}\n\nfunction removePrefix(word: Word, length: number): Word {\n const parts: WordPart[] = [];\n for (const part of word.parts) {\n if (length === 0) parts.push(part);\n else {\n if (part.kind !== \"text\") throw new ShellSyntaxError(\"Unsupported indexed-array subscript\", word.offset);\n if (part.value.length <= length) length -= part.value.length;\n else {\n parts.push({ ...part, value: part.value.slice(length) });\n length = 0;\n }\n }\n }\n if (length !== 0) throw new ShellSyntaxError(\"Invalid indexed-array assignment\", word.offset);\n return { offset: word.offset, parts };\n}\n\nexport function elementAssignment(word: Word): Extract<ArrayAssignment, { kind: \"element\" }> | undefined {\n const source = word.spelling;\n const first = word.parts[0];\n if (source === undefined || first?.kind !== \"text\" || first.quoted) return undefined;\n const name = /^([a-zA-Z_][a-zA-Z_0-9]*)\\[/u.exec(source)?.[1];\n if (!name) return undefined;\n const end = source.indexOf(\"]\", name.length + 1);\n if (end < 0 || !/^(?:\\+?=)/u.test(source.slice(end + 1))) {\n if (source.includes(\"=\")) throw new ShellSyntaxError(\"Invalid indexed-array assignment\", word.offset);\n return undefined;\n }\n const index = literalIndex(source.slice(name.length + 1, end), word.offset + name.length + 1);\n const append = source[end + 1] === \"+\";\n const value = removePrefix(word, name.length + index.decimal.length + (append ? 4 : 3));\n return { kind: \"element\", name, index, append, value };\n}\n\nexport function compoundHead(word: Word): { readonly name: string; readonly append: boolean } | undefined {\n if (word.parts.length !== 1) return undefined;\n const first = word.parts[0];\n if (first?.kind !== \"text\" || first.quoted) return undefined;\n const match = /^([a-zA-Z_][a-zA-Z_0-9]*)(\\+?)=$/u.exec(first.value);\n return match ? { name: match[1]!, append: match[2] === \"+\" } : undefined;\n}\n\nexport function compoundEntry(word: Word): ArrayEntry {\n const source = word.spelling;\n const first = word.parts[0];\n if (source === undefined || source[0] !== \"[\" || first?.kind !== \"text\" || first.quoted) return { value: word };\n const end = source.indexOf(\"]\", 1);\n if (end < 0 || source[end + 1] !== \"=\") {\n if (source.includes(\"=\")) throw new ShellSyntaxError(\"Invalid indexed-array entry\", word.offset);\n return { value: word };\n }\n const index = literalIndex(source.slice(1, end), word.offset + 1);\n return { index, value: removePrefix(word, index.decimal.length + 3) };\n}\n\nexport function scalarAssignmentName(word: Word): string | undefined {\n const first = word.parts[0];\n return first?.kind === \"text\" && !first.quoted\n ? /^([a-zA-Z_][a-zA-Z_0-9]*)\\+?=/u.exec(first.value)?.[1]\n : undefined;\n}\n", "import type { FileSystem } from \"../contracts/index.js\";\nimport { isFsError, resolvePath } from \"../contracts/index.js\";\nimport type { Word } from \"./parser.js\";\nimport { matchesPattern } from \"./pattern.js\";\n\nexport type ConditionalExpression =\n | { kind: \"nonempty\"; operand: Word }\n | { kind: \"unary\"; operator: string; operand: Word }\n | { kind: \"binary\"; operator: string; left: Word; right: Word }\n | { kind: \"not\"; operand: ConditionalExpression }\n | { kind: \"and\"; left: ConditionalExpression; right: ConditionalExpression }\n | { kind: \"or\"; left: ConditionalExpression; right: ConditionalExpression };\n\nexport const conditionalUnary = new Set([\"-n\", \"-z\", \"-e\", \"-a\", \"-f\", \"-d\", \"-s\", \"-L\", \"-h\", \"-r\", \"-w\", \"-x\", \"-v\", \"-o\", \"-b\", \"-c\", \"-p\", \"-S\", \"-t\", \"-O\", \"-G\", \"-R\", \"-N\", \"-u\", \"-g\", \"-k\"]);\nexport const conditionalBinary = new Set([\"=\", \"==\", \"!=\", \"<\", \">\", \"=~\", \"-eq\", \"-ne\", \"-lt\", \"-le\", \"-gt\", \"-ge\", \"-nt\", \"-ot\", \"-ef\"]);\n\nexport class ConditionalUnsupported extends Error {}\n\ninterface ConditionalContext {\n readonly fs: FileSystem;\n readonly cwd: string;\n readonly signal: AbortSignal;\n readonly locale: string;\n readonly work: { remaining: number; signal: AbortSignal; exhausted: () => never };\n expand(word: Word, pattern?: boolean): Promise<string>;\n regex?(subject: string, pattern: Word): Promise<number>;\n present(name: string): boolean;\n option(name: string): boolean;\n}\n\nfunction unsupported(detail: string): never { throw new ConditionalUnsupported(`[[ ${detail}: unsupported conditional profile`); }\n\nasync function charge(context: ConditionalContext, amount = 1): Promise<void> {\n context.signal.throwIfAborted();\n if (amount > context.work.remaining) context.work.exhausted();\n const previous = context.work.remaining;\n context.work.remaining -= amount;\n if ((previous >>> 10) !== (context.work.remaining >>> 10)) {\n await new Promise<void>(resolve => setImmediate(resolve));\n context.signal.throwIfAborted();\n }\n}\n\nfunction cLocale(context: ConditionalContext): void {\n if (context.locale !== \"C\" && context.locale !== \"POSIX\") unsupported(\"collation locale\");\n}\n\nasync function patternAdmission(pattern: string, context: ConditionalContext): Promise<void> {\n cLocale(context);\n let bracket = false;\n let bracketStart = 0;\n for (let index = 0; index < pattern.length; index++) {\n await charge(context);\n const character = pattern[index]!;\n if (character === \"\\\\\") { if (++index < pattern.length) await charge(context); continue; }\n if (\"?*+@!\".includes(character) && pattern[index + 1] === \"(\") unsupported(\"extglob\");\n if (character === \"[\") {\n if (bracket || [\":\", \".\", \"=\"].includes(pattern[index + 1] ?? \"\")) unsupported(\"bracket class or collation\");\n bracket = true; bracketStart = index;\n } else if (character === \"]\" && bracket && index > bracketStart + 1) bracket = false;\n }\n if (bracket) unsupported(\"unclosed bracket pattern\");\n}\n\nasync function integer(value: string, context: ConditionalContext): Promise<bigint> {\n await charge(context, value.length);\n const text = value.trim();\n if (!text) return 0n;\n let position = 0, sign = 1n;\n if (text[position] === \"+\" || text[position] === \"-\") { if (text[position] === \"-\") sign = -1n; position++; }\n let base = 10;\n const separator = text.indexOf(\"#\", position);\n if (separator >= 0) {\n base = 0;\n if (separator === position) unsupported(\"numeric literal\");\n while (position < separator) {\n const digit = text.charCodeAt(position++) - 48;\n if (digit < 0 || digit > 9 || base > 64) unsupported(\"numeric literal\");\n base = base * 10 + digit;\n }\n if (base < 2 || base > 64) unsupported(\"numeric base\");\n position++;\n } else if (text.slice(position, position + 2).toLowerCase() === \"0x\") { base = 16; position += 2; }\n else if (text[position] === \"0\" && position + 1 < text.length) base = 8;\n if (position >= text.length) unsupported(\"numeric literal\");\n let result = 0n;\n const digits = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@_\";\n for (; position < text.length; position++) {\n await charge(context);\n const character = text[position]!;\n const digit = digits.indexOf(base <= 36 ? character.toLowerCase() : character);\n if (digit < 0 || digit >= base) unsupported(\"numeric expression or literal\");\n result = BigInt.asIntN(64, result * BigInt(base) + BigInt(digit));\n }\n return BigInt.asIntN(64, result * sign);\n}\n\nasync function unary(operator: string, value: string, context: ConditionalContext): Promise<boolean> {\n if (operator === \"-n\") return value.length > 0;\n if (operator === \"-z\") return value.length === 0;\n if (operator === \"-v\") {\n if (value.endsWith(\"[@]\") || value.endsWith(\"[*]\")) unsupported(\"aggregate variable selector\");\n return context.present(value);\n }\n if (operator === \"-o\") return context.option(value);\n if (![\"-e\", \"-a\", \"-f\", \"-d\", \"-s\", \"-L\", \"-h\", \"-r\", \"-w\", \"-x\"].includes(operator)) unsupported(operator);\n if (value === \"\") return false;\n if (/^\\/dev\\/(?:fd(?:\\/|$)|stdin$|stdout$|stderr$)/u.test(value)) unsupported(\"descriptor predicate\");\n const access = [\"-r\", \"-w\", \"-x\"].includes(operator);\n if (access && context.fs.capabilities.permissions !== true) unsupported(\"unobservable access permission\");\n try {\n if (access) {\n await context.fs.access(resolvePath(context.cwd, value), operator === \"-r\" ? 4 : operator === \"-w\" ? 2 : 1, { signal: context.signal });\n context.signal.throwIfAborted(); return true;\n }\n const metadata = await (operator === \"-L\" || operator === \"-h\" ? context.fs.lstat(resolvePath(context.cwd, value), { signal: context.signal }) : context.fs.stat(resolvePath(context.cwd, value), { signal: context.signal }));\n context.signal.throwIfAborted();\n if (operator === \"-f\") return metadata.type === \"file\";\n if (operator === \"-d\") return metadata.type === \"directory\";\n if (operator === \"-s\") return metadata.size > 0;\n if (operator === \"-L\" || operator === \"-h\") return metadata.type === \"symlink\";\n return true;\n } catch (error) {\n context.signal.throwIfAborted();\n if (!isFsError(error)) throw error;\n const errno = error.code;\n if (errno === \"ENOENT\" || errno === \"ENOTDIR\" || errno === \"EACCES\" || errno === \"EPERM\") return false;\n if (access && errno === \"EROFS\") return false;\n if (errno === \"ENOTSUP\" || errno === \"EOPNOTSUPP\" || errno === \"ENOSYS\") unsupported(\"filesystem capability\");\n throw error;\n }\n}\n\nasync function leaf(node: Extract<ConditionalExpression, { kind: \"nonempty\" | \"unary\" | \"binary\" }>, context: ConditionalContext): Promise<boolean | number> {\n if (node.kind === \"nonempty\") return (await context.expand(node.operand)).length > 0;\n if (node.kind === \"unary\") return unary(node.operator, await context.expand(node.operand), context);\n const left = await context.expand(node.left);\n if (node.operator === \"=~\" && context.regex) return context.regex(left, node.right);\n const pattern = [\"=\", \"==\", \"!=\"].includes(node.operator);\n const right = await context.expand(node.right, pattern);\n if (node.operator === \"=~\" || [\"-nt\", \"-ot\", \"-ef\"].includes(node.operator)) unsupported(node.operator);\n if (pattern) {\n await patternAdmission(right, context);\n const match = await matchesPattern(right, left, context.work);\n return node.operator === \"!=\" ? !match : match;\n }\n if (node.operator === \"<\" || node.operator === \">\") {\n cLocale(context);\n await charge(context, Buffer.byteLength(left) + Buffer.byteLength(right));\n const order = Buffer.compare(Buffer.from(left), Buffer.from(right));\n return node.operator === \"<\" ? order < 0 : order > 0;\n }\n const first = await integer(left, context), second = await integer(right, context);\n switch (node.operator) {\n case \"-eq\": return first === second;\n case \"-ne\": return first !== second;\n case \"-lt\": return first < second;\n case \"-le\": return first <= second;\n case \"-gt\": return first > second;\n case \"-ge\": return first >= second;\n default: return unsupported(node.operator);\n }\n}\n\nexport async function evaluateConditional(expression: ConditionalExpression, context: ConditionalContext): Promise<number> {\n const stack: { node: ConditionalExpression; stage: number }[] = [{ node: expression, stage: 0 }];\n let result = 1;\n while (stack.length) {\n await charge(context);\n const frame = stack.at(-1)!, node = frame.node;\n if (node.kind === \"not\") {\n if (frame.stage++ === 0) stack.push({ node: node.operand, stage: 0 });\n else { result = result === 0 ? 1 : 0; stack.pop(); }\n } else if (node.kind === \"and\" || node.kind === \"or\") {\n if (frame.stage === 0) { frame.stage = 1; stack.push({ node: node.left, stage: 0 }); }\n else if (frame.stage === 1 && (node.kind === \"and\" ? result === 0 : result !== 0)) { frame.stage = 2; stack.push({ node: node.right, stage: 0 }); }\n else stack.pop();\n } else { const value = await leaf(node, context); result = typeof value === \"number\" ? value : Number(!value); stack.pop(); }\n }\n context.signal.throwIfAborted();\n return result;\n}\n", "type PatternToken = { kind: \"star\" } | { kind: \"any\" } | { kind: \"literal\"; value: string } | { kind: \"class\"; expression: RegExp };\n\nconst characterClasses: Readonly<Record<string, string>> = {\n alnum: \"a-zA-Z0-9\", alpha: \"a-zA-Z\", ascii: \"\\\\x00-\\\\x7f\", blank: \" \\\\t\",\n cntrl: \"\\\\x00-\\\\x1f\\\\x7f\", digit: \"0-9\", graph: \"\\\\x21-\\\\x7e\", lower: \"a-z\",\n print: \"\\\\x20-\\\\x7e\", punct: \"\\\\x21-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\x7e\",\n space: \" \\\\t\\\\r\\\\n\\\\v\\\\f\", upper: \"A-Z\", word: \"a-zA-Z0-9_\", xdigit: \"a-fA-F0-9\",\n};\n\ninterface PatternWork { remaining: number; signal: AbortSignal; exhausted(): never }\n\nasync function tokens(pattern: string, work: PatternWork): Promise<PatternToken[]> {\n const result: PatternToken[] = [];\n const characters = Array.from(pattern);\n const lastClosingBracket = characters.lastIndexOf(\"]\");\n let steps = 0;\n const tick = (): Promise<void> | undefined => {\n if (--work.remaining < 0) work.exhausted();\n if (++steps % 1024 === 0) return new Promise<void>((resolve) => setImmediate(resolve)).then(() => work.signal.throwIfAborted());\n return undefined;\n };\n for (let index = 0; index < characters.length; index++) {\n const pending = tick();\n if (pending) await pending;\n const character = characters[index]!;\n if (character === \"\\\\\" && index + 1 < characters.length) result.push({ kind: \"literal\", value: characters[++index]! });\n else if (character === \"*\") {\n if (result.at(-1)?.kind !== \"star\") result.push({ kind: \"star\" });\n } else if (character === \"?\") result.push({ kind: \"any\" });\n else if (character === \"[\" && index < lastClosingBracket) {\n let cursor = index + 1;\n let contents = \"\";\n if ([\"!\", \"^\"].includes(characters[cursor] ?? \"\")) { contents = \"^\"; cursor++; }\n if (characters[cursor] === \"]\") { contents += \"\\\\]\"; cursor++; }\n let valid = true;\n for (; cursor < characters.length && characters[cursor] !== \"]\"; cursor++) {\n const pending = tick();\n if (pending) await pending;\n const member = characters[cursor]!;\n if (member === \"\\\\\" && cursor + 1 < characters.length) {\n contents += `\\\\u{${characters[++cursor]!.codePointAt(0)!.toString(16)}}`;\n } else if (member === \"[\" && characters[cursor + 1] === \":\") {\n let end = cursor + 2;\n while (end < characters.length && characters[end] !== \":\" && characters[end] !== \"]\") {\n const pending = tick();\n if (pending) await pending;\n end++;\n }\n if (characters[end] === \":\" && characters[end + 1] === \"]\") {\n const name = characters.slice(cursor + 2, end).join(\"\");\n valid &&= characterClasses[name] !== undefined;\n contents += characterClasses[name] ?? \"\";\n cursor = end + 1;\n } else contents += \"\\\\[\";\n } else contents += member === \"[\" || member === \"^\" ? `\\\\${member}` : member;\n }\n if (cursor < characters.length && cursor > index + 1) {\n let expression: RegExp;\n try { expression = valid ? new RegExp(`^[${contents}](?![\\\\s\\\\S])`, \"u\") : /(?!)/u; }\n catch { expression = /(?!)/u; }\n result.push({ kind: \"class\", expression });\n index = cursor;\n } else result.push({ kind: \"literal\", value: character });\n } else result.push({ kind: \"literal\", value: character });\n }\n return result;\n}\n\nexport async function compilePattern(pattern: string, work: PatternWork): Promise<(value: string) => Promise<boolean>> {\n work.signal.throwIfAborted();\n const patternTokens = await tokens(pattern, work);\n return (value) => matchTokens(patternTokens, value, work);\n}\n\nexport async function matchesPattern(pattern: string, value: string, work: PatternWork): Promise<boolean> {\n return (await compilePattern(pattern, work))(value);\n}\n\nasync function matchTokens(patternTokens: PatternToken[], value: string, work: PatternWork): Promise<boolean> {\n work.signal.throwIfAborted();\n const characters = Array.from(value);\n let position = 0;\n let tokenIndex = 0;\n let star = -1;\n let retry = 0;\n let steps = 0;\n while (position < characters.length) {\n if (--work.remaining < 0) work.exhausted();\n if (++steps % 1024 === 0) {\n await new Promise<void>((resolve) => setImmediate(resolve));\n work.signal.throwIfAborted();\n }\n const token = patternTokens[tokenIndex];\n if (token?.kind === \"star\") { star = tokenIndex++; retry = position; }\n else if (token && (token.kind === \"any\" || (token.kind === \"literal\" ? token.value === characters[position] : token.expression.test(characters[position]!)))) {\n position++;\n tokenIndex++;\n } else if (star !== -1) { tokenIndex = star + 1; position = ++retry; }\n else return false;\n }\n while (patternTokens[tokenIndex]?.kind === \"star\") tokenIndex++;\n return tokenIndex === patternTokens.length;\n}\n", "import { FsError, toByteSource } from \"../contracts/index.js\";\nimport type { ByteSource, FileSystem } from \"../contracts/index.js\";\nimport { Budget, interruptible } from \"./runtime.js\";\n\nexport async function fileInput(fs: FileSystem, path: string, maxBytes: number, signal: AbortSignal): Promise<ByteSource> {\n if (!fs.readStream || fs.capabilities.streamingRead === false) {\n const bytes = await interruptible(fs.readFile(path, { signal, maxBytes }), signal);\n signal.throwIfAborted();\n if (bytes.byteLength > maxBytes) throw new FsError(\"EFBIG\", { syscall: \"readFile\", path });\n return toByteSource(bytes);\n }\n const iterator = fs.readStream(path, { signal })[Symbol.asyncIterator]();\n let size = 0;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n signal.throwIfAborted();\n const result = await interruptible(Promise.resolve(iterator.next()), signal);\n if (!result.done) {\n if (!(result.value instanceof Uint8Array)) throw new TypeError(\"Shell stdin must yield Uint8Array\");\n if (result.value.byteLength > maxBytes - size) throw new FsError(\"EFBIG\", { syscall: \"readFile\", path });\n size += result.value.byteLength;\n }\n return result;\n },\n ...(iterator.return ? { return: iterator.return.bind(iterator) } : {}),\n }),\n };\n}\n\nclass InputCursor {\n readonly #iterator: AsyncIterator<Uint8Array>;\n remainder: Uint8Array | undefined;\n #read: Promise<IteratorResult<Uint8Array>> | undefined;\n #readSettled = false;\n #readFailed = false;\n #turn = Promise.resolve();\n #returned: Promise<void> | undefined;\n #ended = false;\n #closed = false;\n\n constructor(source: ByteSource) {\n this.#iterator = source[Symbol.asyncIterator]();\n }\n\n async consume<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n const previous = this.#turn;\n let release!: () => void;\n const completed = new Promise<void>((resolve) => { release = resolve; });\n this.#turn = previous.then(() => completed);\n try {\n await interruptible(previous, signal);\n signal.throwIfAborted();\n return await operation();\n } finally { release(); }\n }\n\n async take(signal: AbortSignal): Promise<IteratorResult<Uint8Array>> {\n signal.throwIfAborted();\n if (this.remainder) {\n const value = this.remainder;\n this.remainder = undefined;\n return { value, done: false };\n }\n if (this.#ended || this.#closed) return { value: undefined, done: true };\n if (!this.#read) {\n this.#readSettled = false;\n this.#read = Promise.resolve().then(() => this.#closed ? { value: undefined, done: true as const } : this.#iterator.next()).then((result) => {\n if (result.done) return { value: undefined, done: true };\n if (!(result.value instanceof Uint8Array)) throw new TypeError(\"Shell stdin must yield Uint8Array\");\n return { value: new Uint8Array(result.value), done: false };\n });\n void this.#read.then(() => { this.#readSettled = true; }, () => { this.#readSettled = true; });\n }\n try {\n const result = await interruptible(this.#read, signal);\n signal.throwIfAborted();\n this.#read = undefined;\n if (result.done) this.#ended = true;\n return result;\n } catch (error) {\n if (!signal.aborted) { this.#read = undefined; this.#readFailed = true; this.#closed = true; }\n throw error;\n }\n }\n\n async close(signal: AbortSignal): Promise<void> {\n if (this.#ended) { signal.throwIfAborted(); return; }\n this.#closed = true;\n this.remainder = undefined;\n const pendingRead = this.#read !== undefined && !this.#readSettled;\n this.#returned ??= Promise.resolve().then(() => this.#iterator.return?.()).then(() => undefined);\n void this.#returned.catch(() => undefined);\n if (!pendingRead) {\n try { await interruptible(this.#returned, signal); }\n catch (error) { if (!this.#readFailed) throw error; }\n }\n signal.throwIfAborted();\n }\n}\n\nexport class ShellInput implements ByteSource {\n readonly #cursor: InputCursor;\n readonly #owned: boolean;\n readonly #lifetime = new AbortController();\n readonly #cleanupSignal: AbortSignal;\n readonly signal: AbortSignal;\n #closing: Promise<void> | undefined;\n\n constructor(source: ByteSource, readonly budget: Budget, signal = budget.signal) {\n this.#owned = !(source instanceof ShellInput);\n this.#cursor = source instanceof ShellInput ? source.#cursor : new InputCursor(source);\n this.#cleanupSignal = signal;\n this.signal = AbortSignal.any([signal, this.#lifetime.signal]);\n }\n\n next(): Promise<IteratorResult<Uint8Array>> {\n return this.#cursor.consume(this.signal, () => this.#cursor.take(this.signal));\n }\n\n [Symbol.asyncIterator](): AsyncIterableIterator<Uint8Array> {\n return { next: () => this.next(), [Symbol.asyncIterator]() { return this; } };\n }\n\n sourceLine(): Promise<Uint8Array | undefined> {\n return this.#cursor.consume(this.signal, async () => {\n const chunks: Uint8Array[] = [];\n let length = 0;\n let pulls = 0;\n while (true) {\n if (++pulls % 128 === 0) await interruptible(new Promise<void>(resolve => setImmediate(resolve)), this.signal);\n const result = await this.#cursor.take(this.signal);\n if (result.done) {\n if (!length) return undefined;\n break;\n }\n const newline = result.value.indexOf(10);\n const end = newline < 0 ? result.value.length : newline + 1;\n if (end < result.value.length) this.#cursor.remainder = result.value.subarray(end);\n this.budget.source(end);\n if (end) chunks.push(result.value.subarray(0, end));\n length += end;\n if (newline >= 0) break;\n }\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n return bytes;\n });\n }\n\n line(raw: boolean, options?: { count?: number; delimiter?: number; byteCount?: boolean; exact?: boolean }): Promise<{ value: string; escaped: ReadonlySet<number>; terminated: boolean }> {\n return this.#cursor.consume(this.signal, () => options ? this.readBounded(raw, options) : this.readLine(raw));\n }\n\n private async readBounded(raw: boolean, options: { count?: number; delimiter?: number; byteCount?: boolean; exact?: boolean }): Promise<{ value: string; escaped: ReadonlySet<number>; terminated: boolean }> {\n const characters: string[] = [];\n const escaped = new Set<number>();\n const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n const delimiter = options.delimiter ?? 10;\n let chunk: Uint8Array = new Uint8Array();\n let offset = 0;\n let length = 0;\n let escaping = false;\n let escapedCharacter = false;\n let units = 0;\n let pulls = 0;\n let terminated = options.count === 0;\n try {\n while (!terminated) {\n if (offset === chunk.length) {\n if (++pulls % 128 === 0) await interruptible(new Promise<void>(resolve => setImmediate(resolve)), this.signal);\n const result = await this.#cursor.take(this.signal);\n if (result.done) {\n break;\n }\n chunk = result.value;\n offset = 0;\n if (!chunk.length) continue;\n }\n const byte = chunk[offset++]!;\n if (!options.exact && !escaping && byte === delimiter) { terminated = true; break; }\n if (++length > this.budget.limits.maxOutputBytes) this.budget.fail(\"maxOutputBytes\");\n if (length % 1024 === 0) {\n await interruptible(new Promise<void>((resolve) => setImmediate(resolve)), this.signal);\n this.signal.throwIfAborted();\n }\n if (byte === 0) continue;\n if (!raw && !escaping && byte === 92) { escaping = true; continue; }\n if (escaping) {\n escaping = false;\n if (byte === 10) continue;\n escapedCharacter = true;\n }\n const decoded = decoder.decode(Uint8Array.of(byte), { stream: true });\n for (const character of decoded) {\n if (escapedCharacter) {\n escapedCharacter = false;\n escaped.add(characters.length);\n }\n characters.push(character);\n }\n units += options.byteCount ? 1 : Array.from(decoded).length;\n if (units === options.count) terminated = true;\n }\n decoder.decode();\n return { value: characters.join(\"\"), escaped, terminated };\n } catch (error) {\n if (error instanceof TypeError && error.message.includes(\"encoded data\")) throw new Error(\"read: unsupported non-UTF-8 text boundary\");\n throw error;\n } finally {\n if (offset < chunk.length) this.#cursor.remainder = chunk.subarray(offset);\n }\n }\n\n private async readLine(raw: boolean): Promise<{ value: string; escaped: ReadonlySet<number>; terminated: boolean }> {\n const chunks: Uint8Array[] = [];\n let length = 0;\n let terminated = false;\n while (true) {\n const result = await this.#cursor.take(this.signal);\n if (result.done) break;\n const newline = result.value.indexOf(10);\n const chunk = newline < 0 ? result.value : result.value.subarray(0, newline);\n if (chunk.byteLength > this.budget.limits.maxOutputBytes - length) this.budget.fail(\"maxOutputBytes\");\n chunks.push(new Uint8Array(chunk));\n length += chunk.byteLength;\n if (newline >= 0) {\n if (newline + 1 < result.value.length) this.#cursor.remainder = result.value.subarray(newline + 1);\n let slashes = 0;\n if (!raw) {\n for (let chunkIndex = chunks.length - 1; chunkIndex >= 0; chunkIndex--) {\n const bytes = chunks[chunkIndex]!;\n let offset = bytes.length - 1;\n while (offset >= 0 && bytes[offset] === 92) { slashes++; offset--; }\n if (offset >= 0) break;\n }\n }\n if (slashes % 2 === 1) {\n while (chunks.at(-1)?.length === 0) chunks.pop();\n chunks[chunks.length - 1] = chunks.at(-1)!.subarray(0, -1);\n length--;\n } else { terminated = true; break; }\n }\n }\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n const value = new TextDecoder().decode(bytes).replace(/\\0/gu, \"\");\n const escaped = new Set<number>();\n if (raw) return { value, escaped, terminated };\n const characters = Array.from(value);\n const unescaped: string[] = [];\n for (let index = 0; index < characters.length; index++) {\n if (characters[index] === \"\\\\\") {\n if (++index === characters.length) break;\n escaped.add(unescaped.length);\n }\n unescaped.push(characters[index]!);\n }\n return { value: unescaped.join(\"\"), escaped, terminated };\n }\n\n close(): Promise<void> {\n if (!this.#closing) {\n this.#lifetime.abort(new Error(\"Shell input view closed\"));\n this.#closing = this.#owned ? this.#cursor.close(this.#cleanupSignal) : Promise.resolve();\n }\n return this.#closing;\n }\n}\n", "import {\n ACCESS_MODES, FsError, composeMiddleware, createBytePipe, pipeBytes, resolvePath, toByteSource, validateExitCode, writeText,\n} from \"../contracts/index.js\";\nimport type {\n ByteSink, ByteSource, CommandContext, CommandInvoker, CommandRegistry, CommandResult, FileSystem, Middleware,\n} from \"../contracts/index.js\";\nimport { concatShellValues, shellValueByteLength, shellValueBytes, shellValueFromBytes, shellValueText } from \"../contracts/value.js\";\nimport type { ShellValue } from \"../contracts/value.js\";\nimport { createCommandArguments, getCommandArguments } from \"../contracts/command.js\";\nimport type { CommandArguments } from \"../contracts/command.js\";\nimport { ValueArena } from \"./value-state.js\";\nimport type { HeldValue, ValueScope } from \"./value-state.js\";\nimport type { Command, HereDocument, Pipeline, Redirect, Script, Word, WordPart } from \"./parser.js\";\nimport { HereDocumentSyntaxError, hereDocumentWords, parseShellInputUnit, parseShellUnit } from \"./parser.js\";\nimport { ShellLimitError, ShellSyntaxError } from \"./types.js\";\nimport type { ShellCommandContext, ShellInvokeOptions, ShellLimits } from \"./types.js\";\nimport { fileInput, ShellInput } from \"./input.js\";\nimport { evaluateArithmetic, prepareArithmetic } from \"./arithmetic.js\";\nimport { evaluatePositionalArithmetic } from \"./arithmetic-parameters.js\";\nimport { compilePattern, matchesPattern } from \"./pattern.js\";\nimport { byteLocale } from \"./locale.js\";\nimport { functionDisplay } from \"./display.js\";\nimport { ConditionalUnsupported, evaluateConditional } from \"./conditional.js\";\nimport { invocationScope, throwCleanupFailures, type InvocationScope } from \"./cleanup.js\";\nimport { executionCommands } from \"../commands/execution.js\";\nimport { cloneGetoptsState, createGetoptsState, GetoptsError, scanGetopts, withGetoptsIndex } from \"./getopts.js\";\nimport type { GetoptsState } from \"./getopts.js\";\nimport {\n activateChildCancellation, prepareChildCancellation, selectRuntimeCancellationOutcome, subscribeCancellation,\n} from \"./cancellation.js\";\nimport type {\n CancellationAdmissionSnapshot, CancellationBoundary, CancellationControlOriginInput, CancellationOrigin,\n CancellationReport, CancellationSelection, CapturedCancellationOutcome, PreparedChildCancellation,\n} from \"./cancellation.js\";\nimport { getArrayAssignment, getArraySelector, copyArraySelector, numericIndex, literalIndex, isQuoteMarker } from \"./arrays/syntax.js\";\nimport type { ArrayAssignment } from \"./arrays/syntax.js\";\nimport { ArrayFailure, ArrayOwner, exactSum } from \"./arrays/ledger.js\";\nimport { controlNames, IndexedBinding, textToken } from \"./arrays/bindings.js\";\nimport { arrayStore, guestArrays, requireArrays, snapshotState, stateMonitor, trackState } from \"./arrays/state.js\";\nimport { publishPipelineStatus } from \"./pipestatus.js\";\nimport type { Restoration } from \"./arrays/state.js\";\nimport type { Admission } from \"./arrays/ledger.js\";\nimport type { BindingWatch, OwnedText } from \"./arrays/bindings.js\";\nimport { EreTransportRoot } from \"../commands/regex-execution/ere/transport/root.js\";\nimport { EreTransportProfileLimitError, EreTransportSemanticError } from \"../commands/regex-execution/ere/transport/protocol.js\";\nimport type { EreTransportResult } from \"../commands/regex-execution/ere/transport/protocol.js\";\nimport { EreProfileLimitError, EreUnsupportedError } from \"../commands/regex-execution/ere/errors.js\";\nimport type { EreFragment } from \"../commands/regex-execution/ere/types.js\";\n\nexport const defaultLimits: Required<ShellLimits> = {\n maxInputBytes: 32 * 1024 * 1024,\n maxOutputBytes: 16 * 1024 * 1024,\n maxCommands: 10_000,\n maxLoopIterations: 10_000,\n maxSubstitutionDepth: 64,\n maxSourceBytes: 1024 * 1024,\n maxExpansionFields: 10_000,\n maxExpansionBytes: 16 * 1024 * 1024,\n pipeHighWaterMark: 64 * 1024,\n};\n\nconst shellBuiltinNames = new Set([\n \":\", \"true\", \"false\", \"pwd\", \"cd\", \"set\", \"shift\", \"export\", \"local\", \"unset\", \"read\",\n \"exit\", \"return\", \"break\", \"continue\", \"command\", \"builtin\", \"type\", \"readonly\", \"echo\", \"printf\", \"test\", \"[\", \".\", \"source\", \"eval\", \"getopts\", \"let\", \"pushd\", \"dirs\", \"popd\", \"shopt\",\n]);\n\nconst implementedBuiltins = new Set([...shellBuiltinNames].filter(name => ![\"echo\", \"printf\", \"test\", \"[\"].includes(name)));\nconst specialBuiltinNames = new Set([\":\", \".\", \"break\", \"continue\", \"eval\", \"exit\", \"export\", \"readonly\", \"return\", \"set\", \"shift\", \"unset\"]);\nconst unsupportedSetOptionNames = new Set([\n \"allexport\", \"braceexpand\", \"emacs\", \"errtrace\", \"functrace\", \"hashall\", \"histexpand\", \"history\",\n \"ignoreeof\", \"interactive-comments\", \"keyword\", \"monitor\", \"noclobber\", \"noexec\", \"noglob\", \"nolog\",\n \"notify\", \"onecmd\", \"physical\", \"posix\", \"privileged\", \"verbose\", \"vi\", \"xtrace\",\n]);\ntype Discovery = { kind: \"function\" | \"builtin\" | \"command\" | \"interpreter\" | \"file\"; name: string };\n\nexport function resolveLimits(...limits: (ShellLimits | undefined)[]): Required<ShellLimits> {\n const result = Object.assign({}, defaultLimits, ...limits) as Required<ShellLimits>;\n for (const [key, value] of Object.entries(result)) {\n if (!Number.isSafeInteger(value) || value < (key === \"pipeHighWaterMark\" ? 1 : 0)) {\n throw new RangeError(`${key} must be a ${key === \"pipeHighWaterMark\" ? \"positive\" : \"nonnegative\"} safe integer`);\n }\n }\n return result;\n}\n\nconst budgetedSinks = new WeakMap<ByteSink, { budget: Budget; write: ByteSink[\"write\"] }>();\n\nexport class Budget {\n readonly values: ValueArena;\n commands = 0;\n iterations = 0;\n bytes = 0;\n sourceBytes = 0;\n readonly controller = new AbortController();\n readonly signal: AbortSignal;\n\n constructor(readonly limits: Required<ShellLimits>, signal?: AbortSignal) {\n this.signal = signal ? AbortSignal.any([signal, this.controller.signal]) : this.controller.signal;\n this.values = new ValueArena(limits.maxExpansionBytes, limits.maxExpansionFields, () => this.signal.throwIfAborted(), limit => this.fail(limit));\n }\n\n fail(limit: keyof ShellLimits): never {\n const error = new ShellLimitError(limit);\n this.controller.abort(error);\n throw error;\n }\n\n tick(): void {\n this.signal.throwIfAborted();\n if (++this.commands > this.limits.maxCommands) this.fail(\"maxCommands\");\n }\n\n loop(): void {\n this.signal.throwIfAborted();\n if (++this.iterations > this.limits.maxLoopIterations) this.fail(\"maxLoopIterations\");\n }\n\n source(bytes: number): void {\n this.signal.throwIfAborted();\n if (bytes > this.limits.maxSourceBytes - this.sourceBytes) this.fail(\"maxSourceBytes\");\n this.sourceBytes += bytes;\n }\n\n sink(sink: ByteSink, signal = this.signal): ByteSink {\n const ownership = budgetedSinks.get(sink);\n if (ownership?.budget === this && ownership.write === sink.write) return signalSink(sink, signal);\n const output: ByteSink = {\n ...(sink.ownedOutput ? { ownedOutput: {\n consumerClosed: sink.ownedOutput.consumerClosed,\n write: async (chunk: Uint8Array) => {\n signal.throwIfAborted();\n if (!(chunk instanceof Uint8Array)) throw new TypeError(\"Shell output must be Uint8Array\");\n if (chunk.byteLength > this.limits.maxOutputBytes - this.bytes) this.fail(\"maxOutputBytes\");\n this.bytes += chunk.byteLength;\n await interruptible(sink.ownedOutput!.write(chunk), signal);\n },\n } } : {}),\n write: async (chunk) => {\n signal.throwIfAborted();\n if (!(chunk instanceof Uint8Array)) throw new TypeError(\"Shell output must be Uint8Array\");\n if (chunk.byteLength > this.limits.maxOutputBytes - this.bytes) this.fail(\"maxOutputBytes\");\n this.bytes += chunk.byteLength;\n await interruptible(sink.write(chunk), signal);\n },\n };\n budgetedSinks.set(output, { budget: this, write: output.write });\n return output;\n }\n}\n\nexport async function interruptible<Value>(promise: Promise<Value>, signal: AbortSignal): Promise<Value> {\n if (signal.aborted) {\n void promise.catch(() => undefined);\n throw signal.reason;\n }\n let abort: (() => void) | undefined;\n const aborted = new Promise<never>((_resolve, reject) => {\n abort = () => reject(signal.reason);\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try { return await Promise.race([promise, aborted]); }\n finally { signal.removeEventListener(\"abort\", abort!); }\n}\n\nexport class Capture implements ByteSink {\n readonly chunks: Uint8Array[] = [];\n length = 0;\n #tail: Uint8Array | undefined;\n #tailLength = 0;\n\n async write(chunk: Uint8Array): Promise<void> {\n if (!chunk.byteLength) return;\n let offset = 0;\n while (offset < chunk.byteLength) {\n if (!this.#tail || this.#tailLength === this.#tail.byteLength) {\n this.#tail = new Uint8Array(Math.max(4096, Math.min(64 * 1024, chunk.byteLength - offset)));\n this.#tailLength = 0;\n this.chunks.push(this.#tail.subarray(0, 0));\n }\n const size = Math.min(chunk.byteLength - offset, this.#tail.byteLength - this.#tailLength);\n this.#tail.set(chunk.subarray(offset, offset + size), this.#tailLength);\n this.#tailLength += size;\n offset += size;\n this.chunks[this.chunks.length - 1] = this.#tail.subarray(0, this.#tailLength);\n }\n this.length += chunk.byteLength;\n }\n\n bytes(): Uint8Array {\n const bytes = new Uint8Array(this.length);\n let offset = 0;\n for (const chunk of this.chunks) {\n bytes.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return bytes;\n }\n}\n\ninterface GetoptsBinding {\n cursor: GetoptsState;\n integer: boolean;\n}\n\ninterface SavedVariable {\n value: string | undefined;\n heldValue?: HeldValue;\n exported: boolean;\n readOnly?: boolean;\n getopts?: GetoptsBinding;\n superseded?: boolean;\n}\n\ninterface TypedSavedVariable {\n readonly owner: ArrayOwner;\n readonly binding: IndexedBinding | undefined;\n readonly tickets: Admission;\n readonly prepared: { readonly name: OwnedText; readonly admission: Admission };\n readonly watch: BindingWatch;\n overlayVersion?: number;\n readonly scalarLegacy: boolean;\n}\n\nconst typedSavedVariables = new WeakMap<SavedVariable, TypedSavedVariable>();\nconst valueScope = Symbol(\"shell value allocation scope\");\nconst invokedValues = new WeakMap<WordPart, ShellValue>();\n\nexport interface State {\n cwd: string;\n variables: Record<string, string>;\n exported: Set<string>;\n functions: Map<string, Command>;\n positional: string[];\n positionalSetVersion?: number;\n sourceDepth?: number;\n arg0?: string;\n profile?: \"bash\" | \"sh\";\n readonlyVariables?: Set<string>;\n pathUnset?: boolean;\n status: number;\n substitutionStatus: number;\n depth: number;\n loopDepth: number;\n functionDepth: number;\n locals: Map<string, SavedVariable>[];\n getopts?: GetoptsBinding;\n directoryStack?: { readonly entries: readonly string[]; readonly bytes: number };\n directoryStackCwdPublication?: symbol;\n dotglob?: boolean;\n pipefail: boolean;\n errexit?: boolean;\n nounset?: boolean;\n isolated?: boolean;\n redirectAssignments?: ReadonlyMap<string, ShellValue>;\n}\n\ninterface IO {\n readonly [invocationScope]: InvocationScope;\n readonly [valueScope]?: ValueScope;\n readonly execution?: { readonly ignoreErrexit: boolean };\n readonly stdin: ByteSource;\n readonly stdinIsDefault?: boolean;\n readonly stdout: ByteSink;\n readonly stderr: ByteSink;\n readonly diagnosticLine?: number;\n readonly diagnosticOffset?: number;\n readonly substitutionDiagnosticLine?: number;\n readonly substitutionDiagnosticLines?: ReadonlyMap<Command, number>;\n readonly scriptName?: string;\n descriptors?: ReadonlyMap<number, Descriptor>;\n}\n\ninterface Descriptor {\n closed?: boolean;\n readonly input?: ByteSource;\n readonly stdinIsDefault?: boolean;\n readonly output?: ByteSink;\n}\n\nfunction isolateIO(io: IO): IO {\n return { ...io, ...(io.descriptors ? { descriptors: new Map([...io.descriptors].map(([number, descriptor]) => [number, { ...descriptor }])) } : {}) };\n}\n\nfunction activeIO(io: IO): IO {\n const input = io.descriptors?.get(0);\n const output = io.descriptors?.get(1);\n const error = io.descriptors?.get(2);\n if (!(input?.closed && input.input === io.stdin) && !(output?.closed && output.output === io.stdout) && !(error?.closed && error.output === io.stderr)) return io;\n return {\n ...io,\n ...(input?.closed && input.input === io.stdin ? { stdin: closedSource, stdinIsDefault: false } : {}),\n ...(output?.closed && output.output === io.stdout ? { stdout: closedSink } : {}),\n ...(error?.closed && error.output === io.stderr ? { stderr: closedSink } : {}),\n };\n}\n\ninterface OutputFile {\n data: Uint8Array | undefined;\n references: number;\n}\n\nclass Flow extends Error {\n constructor(readonly kind: \"exit\" | \"return\" | \"break\" | \"continue\", readonly status: number, public levels = 1) {\n super(kind);\n }\n}\n\nconst completedFlows = new WeakSet<Flow>();\n\nfunction completedExit(status: number, kind: Flow[\"kind\"] = \"exit\", levels = 1): Flow {\n const flow = new Flow(kind, status, levels);\n completedFlows.add(flow);\n return flow;\n}\n\nclass ExecutionFailure extends Error {\n constructor(readonly original: unknown, readonly io: IO, readonly diagnostic?: string) { super(message(original)); }\n}\n\nclass ExpansionFailure extends Error {\n constructor(message: string, readonly line?: number) { super(message); }\n}\n\nclass CommandFailure extends Error {\n constructor(message: string, readonly status: number) { super(message); }\n}\n\nclass FatalCommandFailure extends CommandFailure {}\n\nclass ParameterExpansionFailure extends ExpansionFailure {}\n\nclass NounsetFailure extends ExpansionFailure {}\n\nclass NounsetDiagnosticFailure extends Flow {\n constructor(readonly reason: unknown) { super(\"exit\", 1); }\n}\n\nclass PipelineClosed extends Error {\n readonly code = \"EPIPE\";\n constructor() { super(\"Pipeline consumer exited\"); }\n}\n\nfunction signalSink(sink: ByteSink, signal: AbortSignal): ByteSink {\n const ownership = budgetedSinks.get(sink);\n const owned = ownership?.write === sink.write ? ownership : undefined;\n const write = owned ? owned.write.bind(sink) : (chunk: Uint8Array) => sink.write(chunk);\n const output: ByteSink = {\n ...(sink.ownedOutput ? { ownedOutput: {\n consumerClosed: sink.ownedOutput.consumerClosed,\n async write(chunk: Uint8Array) { signal.throwIfAborted(); await interruptible(sink.ownedOutput!.write(chunk), signal); },\n } } : {}),\n async write(chunk) { signal.throwIfAborted(); await interruptible(write(chunk), signal); },\n };\n if (owned) budgetedSinks.set(output, { budget: owned.budget, write: output.write });\n return output;\n}\n\nasync function cloneState(state: State, signal: AbortSignal): Promise<State> {\n const destination = await snapshotState(state, () => ({\n ...state,\n variables: Object.assign(Object.create(null) as Record<string, string>, state.variables),\n exported: new Set(state.exported), functions: new Map(state.functions), positional: [...state.positional],\n readonlyVariables: new Set(state.readonlyVariables),\n getopts: cloneGetoptsBinding(state),\n directoryStack: { entries: [...state.directoryStack?.entries ?? []], bytes: state.directoryStack?.bytes ?? 0 },\n locals: state.locals.map((scope) => new Map([...scope].map(([name, saved]) => [name, { ...saved, ...(saved.getopts ? { getopts: { integer: saved.getopts.integer, cursor: cloneGetoptsState(saved.getopts.cursor) } } : {}) }]))),\n }), signal, async (destination, owner) => {\n const store = arrayStore(destination) ?? requireArrays(destination);\n for (let index = 0; index < state.locals.length; index++) {\n const sourceFrame = state.locals[index]!;\n const copiedFrame = destination.locals[index]!;\n for (const [name, saved] of sourceFrame) {\n const typed = typedSavedVariables.get(saved);\n if (typed) {\n const copied = copiedFrame.get(name);\n if (!copied) throw new ArrayFailure(\"stale state snapshot\");\n const savedOwner = ArrayOwner.create(owner.ledger, owner);\n let binding: IndexedBinding | undefined;\n try {\n const watch = await store.watch(name, savedOwner, signal);\n const tickets = savedOwner.reserve({ generation: true, version: true, epoch: true, slots: 1, metadata: 64, work: 14 });\n const token = await textToken(savedOwner, name, signal);\n const admission = savedOwner.reserve({ slots: 1, metadata: 32, work: 5 });\n binding = typed.binding?.retain();\n typedSavedVariables.set(copied, { owner: savedOwner, binding, tickets, prepared: { name: token, admission }, watch, scalarLegacy: typed.scalarLegacy });\n tickets.cleanup = () => { typedSavedVariables.delete(copied); };\n } catch (error) { await binding?.release(); await savedOwner.close(); throw error; }\n }\n await owner.ledger.checkpoint(signal);\n }\n }\n });\n try {\n for (const frame of destination.locals) for (const saved of frame.values()) {\n if (saved.heldValue) saved.heldValue = stateMonitor(destination)!.values.scope.hold(saved.heldValue.value);\n }\n return destination;\n } catch (error) { stateMonitor(destination)?.closeValues(); throw error; }\n}\n\nfunction cloneGetoptsBinding(state: State): GetoptsBinding {\n return { cursor: state.getopts ? cloneGetoptsState(state.getopts.cursor) : createGetoptsState(), integer: state.getopts?.integer ?? false };\n}\n\nfunction saveVariable(state: State, name: string): SavedVariable {\n const monitor = stateMonitor(state);\n const value = monitor?.values.get(name, state.variables[name] ?? \"\");\n const heldValue = value !== undefined && typeof value !== \"string\" ? monitor!.values.scope.hold(value) : undefined;\n return { value: state.variables[name], ...(heldValue ? { heldValue } : {}), exported: state.exported.has(name), readOnly: state.readonlyVariables?.has(name) ?? false, ...(name === \"OPTIND\" ? { getopts: cloneGetoptsBinding(state) } : {}) };\n}\n\nfunction publishVariable(state: State, name: string, value: ShellValue): void {\n const text = shellValueText(value);\n const store = stateMonitor(state)?.values;\n if (store) store.publish(name, value, () => { state.variables[name] = text; return true; });\n else state.variables[name] = text;\n}\n\nasync function restoreVariable(state: State, name: string, saved: SavedVariable): Promise<void> {\n try {\n const restoreScalar = (): void => {\n const store = stateMonitor(state)?.values;\n if (saved.value === undefined) delete state.variables[name];\n else if (saved.heldValue && store) {\n store.restoreHeld(name, saved.heldValue, () => { state.variables[name] = saved.value!; });\n delete saved.heldValue;\n } else publishVariable(state, name, saved.value);\n };\n const typed = typedSavedVariables.get(saved);\n if (typed) {\n typedSavedVariables.delete(saved);\n const store = requireArrays(state);\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(typed.tickets, name, () => {\n if (typed.binding) {\n delete state.variables[name];\n released = store.publish(name, typed.binding, typed.tickets, typed.prepared, true);\n } else {\n released = store.remove(name, typed.tickets);\n restoreScalar();\n }\n if (saved.exported) state.exported.add(name);\n else state.exported.delete(name);\n if (!typed.scalarLegacy || name === \"OPTIND\") {\n if (saved.readOnly) { state.readonlyVariables ??= new Set(); state.readonlyVariables.add(name); }\n else state.readonlyVariables?.delete(name);\n }\n if (name === \"OPTIND\" && saved.getopts) state.getopts = saved.getopts;\n });\n typed.watch.close();\n await released;\n await typed.owner.close();\n return;\n }\n restoreScalar();\n if (saved.exported) state.exported.add(name);\n else state.exported.delete(name);\n if (name === \"OPTIND\" && saved.getopts) {\n state.getopts = { integer: saved.getopts.integer, cursor: cloneGetoptsState(saved.getopts.cursor) };\n if (!saved.readOnly) state.readonlyVariables?.delete(name);\n else { state.readonlyVariables ??= new Set(); state.readonlyVariables.add(name); }\n }\n } finally { saved.heldValue?.release(); delete saved.heldValue; }\n}\n\nfunction localDeclarationOptions(args: readonly string[], signal: AbortSignal): { readonly indexed: boolean; readonly offset: number; readonly error: string | undefined } {\n signal.throwIfAborted();\n let indexed = false;\n let offset = 0;\n while (args[offset]?.startsWith(\"-\")) {\n signal.throwIfAborted();\n const option = args[offset++]!;\n if (option === \"--\") break;\n if (option !== \"-a\") return { indexed, offset, error: option };\n indexed = true;\n }\n return { indexed, offset, error: undefined };\n}\n\nfunction decimalIndex(value: string): number {\n let position = 0;\n while (position < value.length && /[\\t\\n\\v\\f\\r ]/u.test(value[position]!)) position++;\n const negative = value[position] === \"-\";\n if (negative || value[position] === \"+\") position++;\n let index = 0;\n for (; position < value.length; position++) {\n const digit = value.charCodeAt(position) - 48;\n if (digit < 0 || digit > 9) break;\n index = (Math.imul(index, 10) + digit) | 0;\n }\n return negative ? -index | 0 : index;\n}\n\nfunction saturatedProduct(left: number, right: number): number {\n return right !== 0 && left > Math.floor(Number.MAX_SAFE_INTEGER / right) ? Number.MAX_SAFE_INTEGER : left * right;\n}\n\nfunction saturatedSum(left: number, right: number): number {\n return left > Number.MAX_SAFE_INTEGER - right ? Number.MAX_SAFE_INTEGER : left + right;\n}\n\nfunction errorCode(error: unknown): string | undefined {\n return typeof error === \"object\" && error !== null && \"code\" in error ? String(error.code) : undefined;\n}\n\nfunction message(error: unknown): string { return error instanceof Error ? error.message : String(error); }\n\nfunction filesystemDiagnostic(error: unknown, target: string): string | undefined {\n const descriptions: Readonly<Record<string, string>> = { ENOENT: \"No such file or directory\", EACCES: \"Permission denied\", EPERM: \"Operation not permitted\", ENOTDIR: \"Not a directory\", EISDIR: \"Is a directory\", ELOOP: \"Too many levels of symbolic links\", ENOSPC: \"No space left on device\", EROFS: \"Read-only file system\" };\n const description = descriptions[errorCode(error) ?? \"\"];\n return description ? `${target}: ${description}` : undefined;\n}\n\nfunction cdUtf8Width(codePoint: number): number {\n return codePoint <= 0x7f ? 1 : codePoint <= 0x7ff ? 2 : codePoint <= 0xffff ? 3 : 4;\n}\n\nfunction cdDiagnostic(fragments: readonly string[]): string {\n const chunks: string[] = [];\n let bytes = 0;\n let suffixBoundary = 0;\n let units = 0;\n for (const fragment of fragments) {\n let index = 0;\n while (index < fragment.length) {\n const codePoint = fragment.codePointAt(index)!;\n const width = cdUtf8Width(codePoint);\n if (bytes + width > 65_792) {\n chunks.push(fragment.slice(0, index));\n return `${chunks.join(\"\").slice(0, suffixBoundary)} [truncated]`;\n }\n bytes += width;\n const length = codePoint > 0xffff ? 2 : 1;\n index += length;\n units += length;\n if (bytes <= 65_780) suffixBoundary = units;\n }\n chunks.push(fragment);\n }\n return chunks.join(\"\");\n}\n\nclass CdLookup {\n private spent = 0;\n private probes = 0;\n\n constructor(private readonly signal: AbortSignal) {}\n\n private async charge(amount: number): Promise<void> {\n this.signal.throwIfAborted();\n if (amount > 8_388_608 - this.spent) throw new Error(\"cd: helper work limit exceeded\");\n while (amount > 0) {\n const step = Math.min(amount, 128 - this.spent % 128);\n this.spent += step;\n amount -= step;\n if (this.spent % 128 === 0) {\n this.signal.throwIfAborted();\n await interruptible(new Promise<void>(resolve => setImmediate(resolve)), this.signal);\n this.signal.throwIfAborted();\n }\n }\n }\n\n private async scan(value: string, search = false): Promise<{\n bytes: number; components: { start: number; end: number; bytes: number }[];\n }> {\n let bytes = 0;\n let start = 0;\n let startBytes = 0;\n let slots = 1;\n const components: { start: number; end: number; bytes: number }[] = [];\n for (let index = 0; index < value.length;) {\n const codePoint = value.codePointAt(index)!;\n const width = cdUtf8Width(codePoint);\n if (bytes + width > 65_536) throw new Error(search ? \"cd: CDPATH exceeds 65536 UTF-8 bytes\" : \"cd: path exceeds 65536 UTF-8 bytes\");\n if (search && codePoint === 58 && ++slots > 4096) throw new Error(\"cd: CDPATH exceeds 4096 components\");\n await this.charge(width);\n if (search && codePoint === 58) {\n components.push({ start, end: index, bytes: bytes - startBytes });\n start = index + 1;\n startBytes = bytes + width;\n }\n bytes += width;\n index += codePoint > 0xffff ? 2 : 1;\n }\n if (search) components.push({ start, end: value.length, bytes: bytes - startBytes });\n return { bytes, components };\n }\n\n async find(fs: FileSystem, cwd: string, target: string, cdpath: string | undefined): Promise<{ path: string; print: boolean }> {\n const targetBytes = (await this.scan(target)).bytes;\n const absolute = target.startsWith(\"/\");\n const cwdBytes = absolute ? 0 : (await this.scan(cwd)).bytes;\n const eligible = !absolute && target !== \".\" && target !== \"..\" && !target.startsWith(\"./\") && !target.startsWith(\"../\");\n const search = eligible && cdpath ? await this.scan(cdpath, true) : undefined;\n const probe = async (component: string, componentBytes: number): Promise<string> => {\n const rawBytes = absolute ? targetBytes : component.startsWith(\"/\") ? componentBytes + 1 + targetBytes\n : cwdBytes + 1 + (component ? componentBytes + 1 : 0) + targetBytes;\n if (rawBytes > 65_536) throw new Error(\"cd: path exceeds 65536 UTF-8 bytes\");\n await this.charge(2 * rawBytes);\n const raw = absolute ? target : component.startsWith(\"/\") ? `${component}/${target}`\n : component ? `${cwd}/${component}/${target}` : `${cwd}/${target}`;\n const path = resolvePath(cwd, raw);\n await this.scan(path);\n this.signal.throwIfAborted();\n if (++this.probes > 4097) throw new Error(\"cd: probe limit exceeded\");\n await this.charge(1);\n this.signal.throwIfAborted();\n const stat = await fs.stat(path, { signal: this.signal });\n this.signal.throwIfAborted();\n if (stat.type !== \"directory\") throw new FsError(\"ENOTDIR\", { path });\n await this.charge(1);\n this.signal.throwIfAborted();\n await fs.access(path, ACCESS_MODES.X_OK, { signal: this.signal });\n this.signal.throwIfAborted();\n return path;\n };\n for (const component of search?.components ?? []) {\n try {\n const path = await probe(cdpath!.slice(component.start, component.end), component.bytes);\n return { path, print: component.start !== component.end };\n } catch (error) {\n this.signal.throwIfAborted();\n if (!(error instanceof FsError) || ![\"ENOENT\", \"ENOTDIR\", \"EACCES\"].includes(error.code)) throw error;\n }\n }\n return { path: await probe(\"\", 0), print: false };\n }\n}\n\nclass DirectoryStackWork {\n private spent = 0;\n private flushed = 0;\n private outputBytes = 0;\n private chunk = \"\";\n private chunkBytes = 0;\n\n constructor(private readonly name: string, private readonly signal: AbortSignal, private readonly stdout: ByteSink) {}\n\n fail(text: string, status = 1): never {\n throw new CommandFailure(cdDiagnostic([this.name, \": \", text]), status);\n }\n\n async charge(amount: number): Promise<void> {\n this.signal.throwIfAborted();\n if (!Number.isSafeInteger(amount) || amount < 0 || amount > 8_388_608 - this.spent) this.fail(\"helper work limit exceeded\");\n while (amount > 0) {\n const step = Math.min(amount, 128 - this.spent % 128);\n this.spent += step;\n amount -= step;\n if (this.spent % 128 === 0) await this.flushWork();\n }\n }\n\n async flushWork(): Promise<void> {\n this.signal.throwIfAborted();\n if (this.flushed === this.spent) return;\n await interruptible(new Promise<void>(resolve => setImmediate(resolve)), this.signal);\n this.signal.throwIfAborted();\n this.flushed = this.spent;\n }\n\n async scan(value: string, kind: \"argument\" | \"path\" | \"HOME\"): Promise<number> {\n let bytes = 0;\n for (let offset = 0; offset < value.length;) {\n const point = value.codePointAt(offset)!;\n const width = cdUtf8Width(point);\n if (width > 65_536 - bytes) this.fail(`${kind} exceeds 65536 UTF-8 bytes`);\n await this.charge(width);\n bytes += width;\n offset += point > 0xffff ? 2 : 1;\n }\n return bytes;\n }\n\n async number(token: string): Promise<bigint> {\n let phase: \"leading\" | \"sign\" | \"digits\" | \"trailing\" = \"leading\";\n let negative = false;\n let digits = false;\n let value = 0n;\n await this.charge(1);\n for (let offset = 1; offset < token.length; offset++) {\n await this.charge(1);\n const code = token.charCodeAt(offset);\n const whitespace = code === 32 || code >= 9 && code <= 13;\n if (phase === \"leading\" && whitespace) continue;\n if (phase === \"leading\" && (code === 43 || code === 45)) {\n negative = code === 45;\n phase = \"sign\";\n continue;\n }\n if (code >= 48 && code <= 57 && phase !== \"trailing\") {\n phase = \"digits\";\n digits = true;\n value = value * 10n + BigInt(code - 48);\n if (value > (negative ? 9_223_372_036_854_775_808n : 9_223_372_036_854_775_807n)) this.fail(\"invalid directory stack index\", 2);\n } else if (phase === \"digits\" && whitespace || phase === \"trailing\" && whitespace) phase = \"trailing\";\n else this.fail(\"invalid directory stack index\", 2);\n }\n if (!digits) this.fail(\"invalid directory stack index\", 2);\n return negative ? -value : value;\n }\n\n async emit(text: string): Promise<void> {\n for (let offset = 0; offset < text.length;) {\n const point = text.codePointAt(offset)!;\n const width = cdUtf8Width(point);\n if (width > 8_388_608 - this.outputBytes) this.fail(\"display exceeds 8388608 UTF-8 bytes\");\n await this.charge(width);\n if (width > 16_384 - this.chunkBytes) await this.flushOutput();\n const units = point > 0xffff ? 2 : 1;\n this.chunk += text.slice(offset, offset + units);\n this.chunkBytes += width;\n this.outputBytes += width;\n offset += units;\n }\n }\n\n async flushOutput(): Promise<void> {\n this.signal.throwIfAborted();\n if (!this.chunkBytes) return;\n const text = this.chunk;\n this.chunk = \"\";\n this.chunkBytes = 0;\n await writeText(this.stdout, text);\n this.signal.throwIfAborted();\n }\n\n async display(cwd: string, entries: readonly string[], options: { long: boolean; lines: boolean; verbose: boolean; index?: number }, home: string | undefined): Promise<void> {\n await this.scan(cwd, \"path\");\n const homeBytes = !options.long && home !== undefined ? await this.scan(home, \"HOME\") : 0;\n const start = options.index ?? 0;\n const end = options.index ?? entries.length;\n for (let index = start; index <= end; index++) {\n await this.charge(1);\n let entry = index === 0 ? cwd : entries[index - 1]!;\n if (homeBytes > 1 && home !== undefined && entry.length >= home.length) {\n let matches = true;\n for (let offset = 0; offset < home.length; offset++) {\n await this.charge(1);\n if (entry.charCodeAt(offset) !== home.charCodeAt(offset)) { matches = false; break; }\n }\n if (matches) {\n if (entry.length > home.length) await this.charge(1);\n if (entry.length === home.length || entry[home.length] === \"/\") entry = `~${entry.slice(home.length)}`;\n }\n }\n if (index !== start && !options.lines && !options.verbose) await this.emit(\" \");\n if (options.verbose) await this.emit(`${String(index).padStart(2, \" \")} `);\n await this.emit(entry);\n if (options.lines || options.verbose) await this.emit(\"\\n\");\n }\n if (!options.lines && !options.verbose) await this.emit(\"\\n\");\n await this.flushOutput();\n }\n}\n\nconst closedSink: ByteSink = { async write() { throw Object.assign(new Error(\"Bad file descriptor\"), { code: \"EBADF\" }); } };\nconst closedSource: ByteSource = { [Symbol.asyncIterator]() {\n let closed = false;\n let completion = Promise.resolve();\n const enqueue = <Value>(operation: () => Value | PromiseLike<Value>): Promise<Value> => {\n const pending = completion.then(operation);\n completion = pending.then(() => {}, () => {});\n return pending;\n };\n const iterator: AsyncIterableIterator<Uint8Array> = {\n next() {\n return enqueue<IteratorResult<Uint8Array>>(() => {\n if (closed) return { done: true, value: undefined };\n closed = true;\n throw Object.assign(new Error(\"Bad file descriptor\"), { code: \"EBADF\" });\n });\n },\n return(value?: unknown) { return enqueue(async () => { closed = true; return { done: true, value: await value }; }); },\n throw(error?: unknown) { return enqueue(() => { closed = true; throw error; }); },\n [Symbol.asyncIterator]() { return this; },\n };\n return iterator;\n} };\n\ninterface RuntimeOutcomeFrame {\n report?: CancellationReport | undefined;\n}\n\ninterface InvokeOutcomeRecord {\n readonly promise: Promise<CommandResult>;\n readonly boundary: CancellationBoundary;\n finalized: boolean;\n consumed: boolean;\n selection?: CancellationSelection<CommandResult> | undefined;\n}\n\n/** Internal to the shell/runtime pair; it is not exported by the package root. */\nexport class RuntimeCancellationState {\n readonly #records = new Set<InvokeOutcomeRecord>();\n #diagnostics = new WeakMap<object, NounsetDiagnosticFailure>();\n #closed = false;\n\n recordDiagnostic(promise: Promise<CommandResult>, failure: NounsetDiagnosticFailure): void {\n if (!this.#closed) this.#diagnostics.set(promise, failure);\n }\n\n consumeDiagnostic(rawReturn: unknown): NounsetDiagnosticFailure | undefined {\n if (rawReturn === null || typeof rawReturn !== \"object\" && typeof rawReturn !== \"function\") return undefined;\n const failure = this.#diagnostics.get(rawReturn);\n this.#diagnostics.delete(rawReturn);\n return failure;\n }\n\n bind(promise: Promise<CommandResult>, boundary: CancellationBoundary): InvokeOutcomeRecord {\n if (this.#closed) throw new Error(\"Cancellation outcome admission is closed\");\n const record: InvokeOutcomeRecord = { promise, boundary, finalized: false, consumed: false };\n this.#records.add(record);\n return record;\n }\n\n finalize(record: InvokeOutcomeRecord, selection: CancellationSelection<CommandResult>): void {\n if (record.consumed || !this.#records.has(record)) return;\n record.selection = selection;\n record.finalized = true;\n }\n\n consume(rawReturn: unknown, capturedReason: unknown): CancellationReport | undefined {\n for (const record of this.#records) {\n if (record.promise !== rawReturn) continue;\n record.consumed = true;\n this.#records.delete(record);\n const selection = record.selection;\n if (!record.finalized || selection?.outcome.kind !== \"throw\"\n || !Object.is(selection.outcome.reason, capturedReason)) return undefined;\n return selection.report;\n }\n return undefined;\n }\n\n discard(record: InvokeOutcomeRecord | undefined): void {\n if (!record) return;\n record.consumed = true;\n this.#records.delete(record);\n }\n\n close(): void {\n this.#closed = true;\n for (const record of this.#records) record.consumed = true;\n this.#records.clear();\n this.#diagnostics = new WeakMap();\n }\n}\n\ninterface CancellationAdmissionOwner {\n assertAdmissionOpen(): void;\n}\n\nclass InvocationCancellationOwner implements CancellationAdmissionOwner {\n readonly finalized: Promise<void>;\n readonly #failures: unknown[];\n readonly #outcomes: RuntimeCancellationState;\n readonly #publicPromise: Promise<CommandResult> | undefined;\n #resolveFinalized!: () => void;\n #admissionOpen = true;\n #boundary: CancellationBoundary | undefined;\n #boundaryClosed = false;\n #record: InvokeOutcomeRecord | undefined;\n #observedOrigin: CancellationOrigin | undefined;\n #captureCancellation: ((origin: CancellationOrigin) => void) | undefined;\n #detach: (() => void) | undefined;\n #finish: Promise<CancellationSelection<CommandResult>> | undefined;\n\n constructor(\n parent: InvocationScope,\n readonly prepared: PreparedChildCancellation,\n outcomes: RuntimeCancellationState,\n publicPromise?: Promise<CommandResult>,\n ) {\n this.#failures = parent.failures;\n this.#outcomes = outcomes;\n this.#publicPromise = publicPromise;\n this.finalized = new Promise<void>(resolve => { this.#resolveFinalized = resolve; });\n parent.register(async () => {\n this.requestClose();\n await this.finalized;\n });\n }\n\n assertAdmissionOpen(): void {\n if (!this.#admissionOpen) throw new Error(\"Cancellation invocation admission is closed\");\n }\n\n requestClose(): void { this.#admissionOpen = false; }\n\n activate(): CancellationBoundary {\n this.assertAdmissionOpen();\n const boundary = activateChildCancellation(this.prepared);\n this.#boundary = boundary;\n try {\n this.#detach = subscribeCancellation(boundary, origin => { this.#captureCancellation?.(origin); });\n if (this.#publicPromise) this.#record = this.#outcomes.bind(this.#publicPromise, boundary);\n return boundary;\n } catch (error) {\n this.#closeBoundary();\n throw error;\n }\n }\n\n capture(\n execute: () => Promise<CommandResult>,\n frame: RuntimeOutcomeFrame,\n ): Promise<CapturedCancellationOutcome<CommandResult>> {\n return new Promise(resolve => {\n let settled = false;\n let raw: Promise<CommandResult> | undefined;\n let queuedOrigin = false;\n const settle = (captured: CapturedCancellationOutcome<CommandResult>): void => {\n if (settled) return;\n settled = true;\n this.#captureCancellation = undefined;\n resolve(captured);\n };\n this.#captureCancellation = origin => {\n if (settled || queuedOrigin) return;\n queuedOrigin = true;\n queueMicrotask(() => {\n if (settled) return;\n this.#observedOrigin = origin;\n settle({ kind: \"throw\", reason: origin.signal.reason });\n void raw?.catch(() => undefined);\n });\n };\n try { raw = Promise.resolve(execute()); }\n catch (reason) { settle({ kind: \"throw\", reason }); return; }\n void raw.then(\n value => settle({ kind: \"return\", value }),\n reason => settle(frame.report && Object.is(frame.report.origin.signal.reason, reason)\n ? { kind: \"throw\", reason, report: frame.report }\n : { kind: \"throw\", reason }),\n );\n if (settled) void raw.catch(() => undefined);\n });\n }\n\n finish(barrier: Promise<void>, captured: CapturedCancellationOutcome<CommandResult>): Promise<CancellationSelection<CommandResult>> {\n this.#finish ??= this.#finishOnce(barrier, captured);\n return this.#finish;\n }\n\n async abandon(barrier: Promise<void>): Promise<void> {\n this.requestClose();\n try { await barrier; }\n finally {\n this.#outcomes.discard(this.#record);\n this.#closeBoundary();\n this.#resolveFinalized();\n }\n }\n\n async #finishOnce(barrier: Promise<void>, captured: CapturedCancellationOutcome<CommandResult>): Promise<CancellationSelection<CommandResult>> {\n this.requestClose();\n try {\n await barrier;\n this.#closeBoundary();\n const selection = selectRuntimeCancellationOutcome(this.#boundary!, captured, this.#observedOrigin);\n if (this.#record) this.#outcomes.finalize(this.#record, selection);\n return selection;\n } finally { this.#resolveFinalized(); }\n }\n\n #closeBoundary(): void {\n if (!this.#boundary || this.#boundaryClosed) return;\n this.#boundaryClosed = true;\n try { this.#detach?.(); } catch (error) { this.#failures.push(error); }\n this.#detach = undefined;\n const result = this.#boundary.close();\n this.#failures.push(...result.failures);\n }\n}\n\nexport class Runtime {\n static readonly #ereRoots = new WeakMap<Budget, { root?: EreTransportRoot; cleanup?: () => Promise<void>; closed: boolean }>();\n\n static registerEreRoot(budget: Budget, scope: InvocationScope): void {\n const entry: { root?: EreTransportRoot; cleanup?: () => Promise<void>; closed: boolean } = { closed: false };\n scope.register(async () => {\n entry.closed = true;\n try { await entry.cleanup?.(); } finally { Runtime.#ereRoots.delete(budget); }\n });\n Runtime.#ereRoots.set(budget, entry);\n }\n\n constructor(\n readonly fs: FileSystem,\n readonly commands: CommandRegistry,\n readonly middleware: readonly Middleware[],\n readonly budget: Budget,\n readonly signal: AbortSignal = budget.signal,\n readonly fileWrites = new Map<string, Promise<void>>(),\n readonly outputFiles = new Map<string, OutputFile>(),\n readonly commandSignal: AbortSignal = signal,\n readonly cancellation: CancellationBoundary,\n readonly cancellationState: RuntimeCancellationState,\n readonly cancellationOwner: CancellationAdmissionOwner | undefined,\n readonly cancellationDepth: number,\n readonly cancellationMaxDepth: number,\n readonly outcomeFrame: RuntimeOutcomeFrame | undefined = undefined,\n ) {}\n\n private async ereDiagnostic(io: IO, detail: string): Promise<void> {\n try { await this.diagnostic(io, detail); }\n catch (reason) {\n this.signal.throwIfAborted();\n if (reason instanceof ShellLimitError) throw reason;\n throw new NounsetDiagnosticFailure(reason);\n }\n }\n\n private async ere(subject: string, pattern: Word, state: State, io: IO): Promise<number> {\n const scope = io[invocationScope];\n scope.assertOpen();\n const store = requireArrays(state);\n let operation: ArrayOwner | undefined;\n let holding: ReturnType<ArrayOwner[\"hold\"]> | undefined;\n let staged: IndexedBinding | undefined;\n let closing: Promise<void> | undefined;\n const close = (): Promise<void> => closing ??= Promise.resolve().then(async () => {\n try { await staged?.release(); } finally { try { await operation?.close(); } finally { holding?.release(); } }\n });\n let primary = false;\n try {\n operation = ArrayOwner.create(store.owner.ledger, store.owner);\n holding = store.owner.hold();\n await this.prepareArrayObservers(state, operation);\n operation.reserve({ metadata: 64, allocatedSlots: 1, work: 2 });\n const fragments: EreFragment[] = [];\n await this.word(pattern, state, io, false, false, false, false, (text, literal) => {\n operation!.reserve({ metadata: 64, allocatedSlots: 1, payload: Buffer.byteLength(text), work: text.length + 2 });\n fragments.push({ text, literal });\n });\n const collation = state.variables.LC_ALL || state.variables.LC_COLLATE || state.variables.LANG || \"C\";\n const characters = state.variables.LC_ALL || state.variables.LC_CTYPE || state.variables.LANG || \"C\";\n if (![collation, characters].every(locale => locale === \"C\" || locale === \"POSIX\")) {\n await this.ereDiagnostic(io, \"[[ unsupported ERE profile: locale must be C or POSIX\");\n return 2;\n }\n await textToken(operation, subject, this.signal);\n const name = \"BASH_REMATCH\";\n const watch = await store.watch(name, operation, this.signal);\n const entry = Runtime.#ereRoots.get(this.budget);\n if (!entry || entry.closed) throw new Error(\"ERE invocation owner is closed\");\n if (!entry.root) entry.root = new EreTransportRoot({ maxExpansionBytes: this.budget.limits.maxExpansionBytes, maxExpansionFields: this.budget.limits.maxExpansionFields }, cleanup => {\n scope.assertOpen();\n if (entry.closed) throw new Error(\"ERE invocation owner is closed\");\n entry.cleanup = cleanup;\n });\n const session = entry.root.openSession(cleanup => scope.register(cleanup));\n let result: EreTransportResult;\n let sessionEscaping = false;\n try { result = await session.execute({ pattern: fragments, subject }, this.signal); }\n catch (error) {\n sessionEscaping = true;\n this.signal.throwIfAborted();\n if (error instanceof EreTransportSemanticError || error instanceof EreUnsupportedError) {\n await this.ereDiagnostic(io, `[[ ${error.message}`);\n sessionEscaping = false;\n return 2;\n }\n throw error;\n } finally {\n await session.close().catch(error => {\n if (sessionEscaping) scope.failures.push(error);\n else throw new NounsetDiagnosticFailure(error);\n });\n }\n const status = result.matched ? 0 : 1;\n this.signal.throwIfAborted();\n scope.assertOpen();\n if (state.readonlyVariables?.has(name)) { await this.ereDiagnostic(io, `${name}: readonly variable`); return status; }\n if (state.exported.has(name)) throw new ArrayFailure(\"exported binding cannot be indexed\");\n if (!watch.valid()) throw new ArrayFailure(\"stale binding\");\n const supersede = await stateMonitor(state)!.prepareTypedPublication(name, operation, this.signal);\n const tickets = operation.reserve({ generation: true, version: true, epoch: true, work: 8 });\n const prepared = await store.prepareName(name, operation, this.signal);\n staged = IndexedBinding.create(store.owner);\n if (result.matched) for (let index = 0; index < result.spans.length; index++) {\n const span = result.spans[index]!;\n const size = span === null ? 0 : span.end - span.start;\n operation.reserve({ payload: size, metadata: 32, work: size + 2 });\n const value = span === null ? \"\" : subject.slice(span.start, span.end);\n const token = await textToken(staged.owner, value, this.signal);\n try { staged.insert(index, token); } catch (error) { token.release(); throw error; }\n }\n this.signal.throwIfAborted();\n scope.assertOpen();\n if (state.readonlyVariables?.has(name)) { await this.ereDiagnostic(io, `${name}: readonly variable`); return status; }\n if (state.exported.has(name)) throw new ArrayFailure(\"exported binding cannot be indexed\");\n if (!watch.valid()) throw new ArrayFailure(\"stale binding\");\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(tickets, name, () => {\n supersede();\n delete state.variables[name];\n released = store.publish(name, staged!, tickets, prepared);\n });\n staged = undefined;\n watch.close();\n await released;\n return status;\n } catch (error) { primary = true; throw error; }\n finally {\n await close().catch(error => {\n if (primary) scope.failures.push(error);\n else throw new NounsetDiagnosticFailure(error);\n });\n }\n }\n\n static rootCancellationAdmission(budget: Budget): CancellationAdmissionSnapshot {\n const maxDepth = saturatedSum(budget.limits.maxCommands, saturatedSum(budget.limits.maxSubstitutionDepth, 1));\n return {\n depth: 0,\n maxDepth,\n resourceLimit: Runtime.cancellationResourceLimit(budget, 0, maxDepth, 2),\n };\n }\n\n private static cancellationResourceLimit(budget: Budget, depth: number, maxDepth: number, controls: number): number {\n const remainingCommands = Math.max(0, budget.limits.maxCommands - budget.commands);\n const remainingDepth = Math.max(0, maxDepth - depth);\n return saturatedSum(saturatedSum(4, controls), saturatedSum(remainingCommands, remainingDepth));\n }\n\n private cancellationAdmission(depth: number, controls = 0): CancellationAdmissionSnapshot {\n return {\n depth,\n maxDepth: this.cancellationMaxDepth,\n resourceLimit: Runtime.cancellationResourceLimit(this.budget, depth, this.cancellationMaxDepth, controls),\n };\n }\n\n private observeRuntimeReturn<Value>(\n rawReturn: Value | PromiseLike<Value>,\n frame: RuntimeOutcomeFrame,\n downstream: () => Promise<CommandResult> | undefined = () => undefined,\n ): Promise<Value> {\n const raw = rawReturn as unknown;\n return Promise.resolve(rawReturn).then(\n value => {\n if (raw !== downstream()) frame.report = undefined;\n return value;\n },\n reason => {\n const report = this.cancellationState.consume(raw, reason);\n if (report) frame.report = report;\n else if (raw !== downstream()) frame.report = undefined;\n const diagnostic = this.cancellationState.consumeDiagnostic(raw);\n if (diagnostic) throw diagnostic;\n throw reason;\n },\n );\n }\n\n private invokeChild(\n options: ShellInvokeOptions,\n state: State,\n parent: InvocationScope,\n validate: () => void,\n execute: (runtime: Runtime, scope: InvocationScope) => Promise<CommandResult>,\n ): Promise<CommandResult> {\n const publicPromise: Promise<CommandResult> = Promise.resolve().then(async () => {\n if (!this.cancellation.deliverySignal.aborted) parent.assertOpen();\n const childDepth = this.cancellationDepth + 1;\n const prepared = prepareChildCancellation(\n this.cancellation,\n options,\n this.cancellationAdmission(childDepth),\n );\n this.cancellationOwner?.assertAdmissionOpen();\n validate();\n\n let scope: InvocationScope | undefined;\n let boundary: CancellationBoundary;\n let owner: InvocationCancellationOwner | undefined;\n try {\n if (prepared.owned) {\n owner = new InvocationCancellationOwner(parent, prepared, this.cancellationState, publicPromise);\n scope = parent.child();\n boundary = owner.activate();\n } else {\n scope = parent.child();\n boundary = activateChildCancellation(prepared);\n }\n } catch (error) {\n if (owner) await owner.abandon(scope?.close() ?? Promise.resolve());\n else await scope?.close();\n throw error;\n }\n\n const frame: RuntimeOutcomeFrame = {};\n const runtime = new Runtime(\n this.fs,\n this.commands,\n this.middleware,\n this.budget,\n AbortSignal.any([boundary.deliverySignal, scope.signal]),\n this.fileWrites,\n this.outputFiles,\n boundary.deliverySignal,\n boundary,\n this.cancellationState,\n owner ?? this.cancellationOwner,\n prepared.owned ? childDepth : this.cancellationDepth,\n this.cancellationMaxDepth,\n frame,\n );\n let captured: CapturedCancellationOutcome<CommandResult>;\n const executeChild = (): Promise<CommandResult> => execute(runtime, scope);\n if (owner) captured = await owner.capture(executeChild, frame);\n else {\n try { captured = { kind: \"return\", value: await executeChild() }; }\n catch (reason) {\n captured = frame.report && Object.is(frame.report.origin.signal.reason, reason)\n ? { kind: \"throw\", reason, report: frame.report }\n : { kind: \"throw\", reason };\n }\n }\n\n let selection: CancellationSelection<CommandResult>;\n if (owner) selection = await owner.finish(scope.close(), captured);\n else {\n await scope.close();\n const close = boundary.close();\n scope.failures.push(...close.failures);\n selection = selectRuntimeCancellationOutcome(boundary, captured);\n }\n if (selection.outcome.kind === \"throw\") {\n const reason = selection.outcome.reason;\n if (reason instanceof NounsetDiagnosticFailure) {\n this.cancellationState.recordDiagnostic(publicPromise, reason);\n throw reason.reason;\n }\n throw reason;\n }\n return selection.outcome.value;\n });\n return publicPromise;\n }\n\n private clearOutcomeReport(): void {\n if (this.outcomeFrame) this.outcomeFrame.report = undefined;\n }\n\n diagnostic(io: IO, text: string): Promise<void> {\n return writeText(io.stderr, `${io.scriptName ?? \"shell\"}: line ${io.diagnosticLine ?? 1}: ${text}\\n`);\n }\n\n writeVariable(state: State, name: string, value: ShellValue, origin: \"assignment\" | \"arithmetic\" | \"getopts\" = \"assignment\"): void {\n if (arrayStore(state)?.get(name)) throw new ArrayFailure(origin === \"arithmetic\" ? \"indexed arithmetic is unsupported\" : \"indexed write requires prepared publication\");\n if (state.readonlyVariables?.has(name)) throw new Error(`${name}: readonly variable`);\n if (name === \"OPTIND\" && state.getopts?.integer && origin !== \"arithmetic\") {\n try { value = String(evaluateArithmetic(prepareArithmetic(shellValueText(value) || \"0\"), this.arithmeticVariables(state))); }\n catch (error) { this.rethrowArithmeticControl(error); throw new ExpansionFailure(message(error)); }\n }\n publishVariable(state, name, value);\n if (name === \"OPTIND\" && origin !== \"getopts\") this.syncGetopts(state);\n }\n\n private syncGetopts(state: State): void {\n state.getopts ??= cloneGetoptsBinding(state);\n const value = state.variables.OPTIND;\n if (value === undefined) {\n state.getopts.integer = false;\n state.getopts.cursor = createGetoptsState();\n } else state.getopts.cursor = withGetoptsIndex(state.getopts.cursor, decimalIndex(value));\n }\n\n private reconcileGetopts(state: State, previous: string | undefined): void {\n if (state.variables.OPTIND !== previous) this.syncGetopts(state);\n }\n\n private unsetVariable(state: State, name: string, internal = false): void {\n if (state.readonlyVariables?.has(name)) throw new Error(`${name}: readonly variable`);\n delete state.variables[name];\n state.exported.delete(name);\n if (name === \"OPTIND\" && !internal) this.syncGetopts(state);\n }\n\n private rethrowArithmeticControl(error: unknown): void {\n this.signal.throwIfAborted();\n if (error instanceof NounsetFailure || error instanceof Flow || error instanceof ShellLimitError || error instanceof ShellSyntaxError) throw error;\n }\n\n arithmeticVariables(state: State, line?: number): Record<string, string> {\n return new Proxy(state.variables, {\n get: (target, key) => {\n this.signal.throwIfAborted();\n if (arrayStore(state)?.get(String(key))) throw new ArrayFailure(\"indexed arithmetic is unsupported\");\n const value = Reflect.get(target, key);\n if (state.nounset && typeof key === \"string\" && value === undefined) throw new NounsetFailure(`${key}: unbound variable`, line);\n return value;\n },\n set: (_target, key, value: string) => { this.writeVariable(state, String(key), value, \"arithmetic\"); return true; },\n });\n }\n\n variable(state: State, name: string): string | undefined {\n const binding = arrayStore(state)?.get(name);\n return binding ? binding.get(0) : state.variables[name];\n }\n\n private requireParameter(value: string | undefined, name: string, state: State, io: IO, line?: number): void {\n if (state.nounset && value === undefined) throw new NounsetFailure(`${name}: unbound variable`, io.diagnosticLine ?? line);\n }\n\n async assignVariable(state: State, name: string, value: ShellValue, origin: \"assignment\" | \"getopts\" = \"assignment\"): Promise<void> {\n if (!arrayStore(state)?.get(name)) { this.writeVariable(state, name, value, origin); return; }\n await this.arrayZero(state, name, async () => shellValueText(value));\n }\n\n async prepareVariable(state: State, name: string, saved: SavedVariable, scalarLegacy = false): Promise<void> {\n const store = requireArrays(state);\n const failures = stateMonitor(state)!.session.scope.failures;\n const owner = ArrayOwner.create(store.owner.ledger, store.owner);\n let holding: ReturnType<ArrayOwner[\"hold\"]> | undefined;\n let binding: IndexedBinding | undefined;\n let primaryPresent = false;\n let primary: unknown;\n const cleanup = async (action: () => void | Promise<void>): Promise<void> => {\n try { await action(); }\n catch (error) {\n if (primaryPresent) failures.push(error);\n else { primaryPresent = true; primary = error; }\n }\n };\n try {\n holding = store.owner.hold();\n const watch = await store.watch(name, owner, this.signal);\n const tickets = owner.reserve({ generation: true, version: true, epoch: true, slots: 1, metadata: 64, work: 14 });\n const token = await textToken(owner, name, this.signal);\n const admission = owner.reserve({ slots: 1, metadata: 32, work: 5 });\n if (saved.value !== undefined) await textToken(owner, saved.value, this.signal);\n if (!watch.valid()) throw new ArrayFailure(\"stale binding\");\n binding = scalarLegacy ? undefined : store.get(name)?.retain();\n typedSavedVariables.set(saved, { owner, binding, tickets, prepared: { name: token, admission }, watch, scalarLegacy });\n tickets.cleanup = () => { typedSavedVariables.delete(saved); };\n } catch (error) {\n primaryPresent = true;\n primary = error;\n await cleanup(() => binding?.release());\n await cleanup(() => owner.close());\n } finally { await cleanup(() => holding?.release()); }\n if (primaryPresent) throw primary;\n }\n\n async prepareArrayObservers(state: State, owner: ArrayOwner): Promise<void> {\n owner.reserve({ metadata: 128, work: 6 });\n for (const frame of state.locals) for (const [name, saved] of frame) {\n if (!typedSavedVariables.has(saved)) await this.prepareVariable(state, name, saved);\n await owner.ledger.checkpoint(this.signal);\n }\n for (const frame of stateMonitor(state)!.overlayFrames()) for (const [name, record] of frame) {\n const saved = record as SavedVariable;\n if (!saved.superseded && !typedSavedVariables.has(saved)) await this.prepareVariable(state, name, saved, true);\n await owner.ledger.checkpoint(this.signal);\n }\n }\n\n async discardVariable(saved: SavedVariable): Promise<void> {\n saved.heldValue?.release();\n delete saved.heldValue;\n const typed = typedSavedVariables.get(saved);\n if (!typed) return;\n typedSavedVariables.delete(saved);\n typed.watch.close();\n await typed.binding?.release();\n await typed.owner.close();\n }\n\n async indexedEnvironment(state: State, env: Readonly<Record<string, string>>): Promise<void> {\n const store = requireArrays(state);\n const operation = ArrayOwner.create(store.owner.ledger, store.owner);\n const holding = store.owner.hold();\n const epoch = stateMonitor(state)!.epoch;\n try {\n const keys = Object.keys(env);\n operation.reserve({ metadata: 128 + keys.length * 64, allocatedSlots: keys.length * 2, work: keys.length * 5 + 8 });\n for (const key of keys) {\n const value = env[key];\n if (key.includes(\"\\0\") || key.includes(\"=\") || typeof value !== \"string\" || value.includes(\"\\0\")) throw new TypeError(\"Invalid invoke environment entry\");\n if (state.readonlyVariables?.has(key)) throw new ArrayFailure(\"readonly environment collision\");\n }\n const publications = new Map<string, Admission>();\n for (const key of keys) {\n await textToken(store.owner, key, this.signal);\n await textToken(store.owner, env[key]!, this.signal);\n publications.set(key, operation.reserve({ generation: true, version: true, epoch: true, work: 8 }));\n }\n const controls = operation.reserve({ epoch: true, work: state.exported.size + keys.length + 5 });\n this.signal.throwIfAborted();\n if (stateMonitor(state)!.epoch !== epoch) throw new ArrayFailure(\"stale state snapshot\");\n stateMonitor(state)!.publish(controls, undefined, () => {\n for (const key of state.exported) delete state.variables[key];\n state.exported = new Set(keys);\n });\n for (const key of keys) {\n const tickets = publications.get(key)!;\n stateMonitor(state)!.publish(tickets, key, () => {\n void store.remove(key, tickets);\n state.variables[key] = env[key]!;\n });\n }\n } finally { try { await operation.close(); } finally { holding.release(); } }\n }\n\n async unsetIndexed(state: State, name: string, index?: number | \"members\"): Promise<void> {\n const store = requireArrays(state);\n const operation = ArrayOwner.create(store.owner.ledger, store.owner);\n const holding = store.owner.hold();\n let staged: IndexedBinding | undefined;\n try {\n if (state.readonlyVariables?.has(name)) throw new ArrayFailure(\"readonly binding\");\n const watch = await store.watch(name, operation, this.signal);\n const tickets = operation.reserve({ generation: true, version: true, epoch: true, work: 8 });\n const current = store.get(name);\n if (index !== undefined && current) {\n staged = index === \"members\" ? IndexedBinding.create(store.owner) : await current.copy(this.signal);\n let maximum = -1;\n for (const key of staged.values.keys()) {\n operation.reserve({ work: 2 }).release();\n if (key !== index && key > maximum) maximum = key;\n await operation.ledger.checkpoint(this.signal, 2);\n }\n if (typeof index === \"number\") staged.values.get(index)?.slot.release();\n staged.maximum = maximum;\n }\n this.signal.throwIfAborted();\n if (state.readonlyVariables?.has(name)) throw new ArrayFailure(\"readonly binding\");\n if (!watch.valid()) throw new ArrayFailure(\"stale binding\");\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(tickets, name, () => {\n if (staged) released = store.publish(name, staged, tickets);\n else if (index === undefined) {\n released = store.remove(name, tickets);\n delete state.variables[name];\n state.exported.delete(name);\n } else if (index === 0 || index === \"members\") delete state.variables[name];\n });\n staged = undefined;\n watch.close();\n await released;\n } finally { try { await staged?.release(); await operation.close(); } finally { holding.release(); } }\n }\n\n async arrayZero(state: State, name: string, expand: () => Promise<string>, append = false, freeze = false): Promise<void> {\n const store = requireArrays(state);\n const operation = ArrayOwner.create(store.owner.ledger, store.owner);\n const holding = store.owner.hold();\n let staged: IndexedBinding | undefined;\n try {\n const watch = await store.watch(name, operation, this.signal);\n const tickets = operation.reserve({ generation: true, version: true, epoch: true, work: 8 });\n let frozenAttributes: Set<string> | undefined;\n if (freeze) {\n store.owner.reserve({ metadata: state.readonlyVariables ? 32 : 96, slots: 1, work: 5 });\n if (!state.readonlyVariables) frozenAttributes = stateMonitor(state)!.prepareCollection(new Set<string>(), \"readonlyVariables\");\n }\n const expanded = await expand();\n this.signal.throwIfAborted();\n if (state.readonlyVariables?.has(name)) throw new ArrayFailure(\"readonly binding\");\n if (!watch.valid()) throw new ArrayFailure(\"stale binding\");\n const current = store.get(name);\n if (!current) throw new ArrayFailure(\"stale binding\");\n staged = await current.copy(this.signal);\n const value = append ? await this.arrayJoin(operation, [current.get(0) ?? \"\", expanded], \"\") : expanded;\n const token = await textToken(staged.owner, value, this.signal);\n try { staged.insert(0, token); } catch (error) { token.release(); throw error; }\n const supersede = await stateMonitor(state)!.prepareTypedPublication(name, operation, this.signal);\n this.signal.throwIfAborted();\n if (state.readonlyVariables?.has(name)) throw new ArrayFailure(\"readonly binding\");\n if (!watch.valid()) throw new ArrayFailure(\"stale binding\");\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(tickets, name, () => {\n supersede();\n released = store.publish(name, staged!, tickets);\n if (freeze) { state.readonlyVariables ??= frozenAttributes!; state.readonlyVariables.add(name); }\n });\n staged = undefined;\n watch.close();\n await released;\n } finally { try { await staged?.release(); await operation.close(); } finally { holding.release(); } }\n }\n\n async arrayJoin(owner: ArrayOwner, values: readonly string[], separator: string): Promise<string> {\n let bytes = 0;\n for (const value of values) {\n owner.reserve({ work: value.length + 1 }).release();\n bytes = exactSum(bytes, Buffer.byteLength(value));\n await owner.ledger.checkpoint(this.signal, value.length + 1);\n }\n bytes = exactSum(bytes, Math.max(0, values.length - 1) * Buffer.byteLength(separator));\n owner.reserve({ metadata: exactSum(96, values.length * 32), payload: bytes, allocatedSlots: values.length, work: values.length * 3 + 7 });\n this.signal.throwIfAborted();\n const result = values.join(separator);\n await owner.ledger.checkpoint(this.signal);\n return result;\n }\n\n async arrayAssignment(assignment: ArrayAssignment, state: State, io: IO): Promise<void> {\n const name = assignment.name;\n this.signal.throwIfAborted();\n if (state.readonlyVariables?.has(name)) throw new ArrayFailure(\"readonly binding\");\n if (controlNames.has(name)) throw new ArrayFailure(\"control binding cannot be indexed\");\n if (state.exported.has(name)) throw new ArrayFailure(\"exported binding cannot be indexed\");\n const store = requireArrays(state);\n const operation = ArrayOwner.create(store.owner.ledger, store.owner);\n const holding = store.owner.hold();\n let staged: IndexedBinding | undefined;\n try {\n const watch = await store.watch(name, operation, this.signal);\n const current = store.get(name);\n const initialMaximum = current?.maximum ?? (state.variables[name] === undefined ? -1 : 0);\n let planned: number | null = assignment.append && assignment.kind === \"compound\" ? initialMaximum + 1 : 0;\n if (assignment.kind === \"element\") {\n operation.reserve({ work: assignment.index.decimal.length + 1 }).release();\n if (numericIndex(assignment.index) === undefined) throw new ArrayFailure(\"index outside 0..2147483647\");\n } else for (const entry of assignment.entries) {\n operation.reserve({ work: entry.value.parts.length + (entry.index?.decimal.length ?? 0) + 2 }).release();\n if (entry.index) {\n const index = numericIndex(entry.index);\n if (index === undefined) throw new ArrayFailure(\"index outside 0..2147483647\");\n planned = index + 1;\n } else {\n const quotedScalar = (part: WordPart): boolean => {\n const selector = getArraySelector(part);\n return part.quoted && !(part.kind === \"variable\" && (part.name === \"@\" || selector?.kind === \"members\" && selector.separator === \"@\"));\n };\n const certain = entry.value.parts.every(part => part.kind === \"text\" ? part.quoted || !/[*?[]/u.test(part.value) : quotedScalar(part));\n const demanded = entry.value.parts.some(part => part.kind === \"text\" ? part.quoted || part.value.length > 0 : quotedScalar(part));\n if (demanded && planned !== null && planned > 2147483647) throw new ArrayFailure(\"index outside 0..2147483647\");\n if (certain && planned !== null) {\n planned++;\n } else planned = null;\n }\n await operation.ledger.checkpoint(this.signal, entry.value.parts.length + 2);\n }\n const supersede = await stateMonitor(state)!.prepareTypedPublication(name, operation, this.signal);\n await this.prepareArrayObservers(state, operation);\n const tickets = operation.reserve({ generation: true, version: true, epoch: true, work: 8 });\n const prepared = await store.prepareName(name, operation, this.signal);\n const preserve = assignment.kind === \"element\" || assignment.append;\n staged = preserve && current ? await current.copy(this.signal) : IndexedBinding.create(store.owner);\n if (preserve && !current && state.variables[name] !== undefined) {\n const token = await textToken(staged.owner, state.variables[name]!, this.signal);\n try { staged.insert(0, token); } catch (error) { token.release(); throw error; }\n }\n let writes = 0;\n let cursor = assignment.append && assignment.kind === \"compound\" ? initialMaximum + 1 : 0;\n const insert = async (index: number, value: string) => {\n if (index > 2147483647) throw new ArrayFailure(\"index outside 0..2147483647\");\n const token = await textToken(staged!.owner, value, this.signal);\n try { staged!.insert(index, token); } catch (error) { token.release(); throw error; }\n writes++;\n };\n if (assignment.kind === \"element\") {\n const index = numericIndex(assignment.index)!;\n const fields = await this.word(assignment.value, state, io, false);\n let value = await this.arrayJoin(operation, fields, \"\");\n if (assignment.append) value = await this.arrayJoin(operation, [staged.get(index) ?? \"\", value], \"\");\n await insert(index, value);\n } else for (const entry of assignment.entries) {\n const fields = await this.word(entry.value, state, io, entry.index === undefined);\n if (entry.index) {\n const index = numericIndex(entry.index)!;\n await insert(index, await this.arrayJoin(operation, fields, \"\"));\n cursor = index + 1;\n } else for (const value of fields) { await insert(cursor, value); cursor++; }\n }\n this.signal.throwIfAborted();\n if (state.readonlyVariables?.has(name)) throw new ArrayFailure(\"readonly binding\");\n if (!watch.valid()) throw new ArrayFailure(\"stale binding\");\n if (!(assignment.kind === \"compound\" && assignment.append && writes === 0)) {\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(tickets, name, () => {\n supersede();\n delete state.variables[name];\n released = store.publish(name, staged!, tickets, prepared);\n });\n staged = undefined;\n await released;\n }\n watch.close();\n } finally { try { await staged?.release(); await operation.close(); } finally { holding.release(); } }\n }\n\n async run(script: Script, state: State, io: IO): Promise<number> {\n return (await this.runUnit(script, state, io)).exitCode;\n }\n\n async runUnit(script: Script, state: State, io: IO): Promise<{ exitCode: number; terminated: boolean }> {\n state = trackState(state, this.budget, io[invocationScope]);\n try { return { exitCode: await this.script(script, state, io), terminated: false }; }\n catch (error) {\n if (error instanceof NounsetDiagnosticFailure) {\n if (state.isolated) throw error;\n throw error.reason;\n }\n if (error instanceof Flow && error.kind === \"exit\") return { exitCode: error.status, terminated: true };\n throw error;\n }\n }\n\n async script(script: Script, state: State, io: IO): Promise<number> {\n for (const list of script.lists) {\n for (let index = 0; index < list.pipelines.length; index++) {\n const operator = list.operators[index - 1];\n if ((operator === \"&&\" && state.status !== 0) || (operator === \"||\" && state.status === 0)) continue;\n const pipeline = list.pipelines[index]!;\n const ignored = io.execution?.ignoreErrexit || index < list.pipelines.length - 1 || pipeline.negate;\n const completion = stateMonitor(state)?.restoration();\n try {\n const status = await this.pipeline(pipeline, state, ignored ? { ...io, execution: { ignoreErrexit: true } } : io);\n if (completion) completion.apply(() => { state.status = status; });\n else state.status = status;\n } finally { completion?.close(); }\n }\n }\n return script.lists.length ? state.status : 0;\n }\n\n async pipeline(pipeline: Pipeline, state: State, io: IO): Promise<number> {\n this.signal.throwIfAborted();\n let status: number;\n if (pipeline.commands.length === 1) status = await this.command(pipeline.commands[0]!, state, io, false, pipeline.negate);\n else {\n const pipes = pipeline.commands.slice(1).map(() => createBytePipe({\n highWaterMark: this.budget.limits.pipeHighWaterMark, signal: this.signal,\n }));\n const controllers = pipeline.commands.map(() => new AbortController());\n const written = new Set<number>();\n const completed = new Set<number>();\n const closing = new Set<ReturnType<typeof setImmediate>>();\n const tasks = pipeline.commands.map(async (command, index) => {\n const incoming = pipes[index - 1];\n const outgoing = pipes[index];\n const childDepth = this.cancellationDepth + 1;\n const controls: readonly CancellationControlOriginInput[] = [\n { role: \"pipeline-control\", signal: controllers[index]!.signal },\n ];\n const prepared = prepareChildCancellation(\n this.cancellation,\n undefined,\n this.cancellationAdmission(childDepth, controls.length),\n controls,\n );\n const owner = new InvocationCancellationOwner(io[invocationScope], prepared, this.cancellationState);\n let boundary: CancellationBoundary;\n try { boundary = owner.activate(); }\n catch (error) { await owner.abandon(Promise.resolve()); throw error; }\n const signal = AbortSignal.any([boundary.deliverySignal, io[invocationScope].signal]);\n const frame: RuntimeOutcomeFrame = {};\n const runtime = new Runtime(\n this.fs, this.commands, this.middleware, this.budget, signal, this.fileWrites, this.outputFiles,\n boundary.deliverySignal, boundary, this.cancellationState, owner,\n childDepth, this.cancellationMaxDepth, frame,\n );\n const input = new ShellInput(incoming?.readable ?? io.stdin, this.budget, signal);\n const pipeOutput: ByteSink | undefined = outgoing && { ownedOutput: outgoing.writable.ownedOutput!, write: async (chunk) => {\n try {\n await outgoing.writable.write(chunk);\n if (chunk.byteLength) written.add(index);\n }\n catch (error) {\n if (errorCode(error) === \"EPIPE\") {\n const closed = new PipelineClosed();\n controllers[index]!.abort(closed);\n throw closed;\n }\n throw error;\n }\n } };\n const executeStage = async (): Promise<CommandResult> => {\n try {\n let exitCode: number;\n try {\n const child = await cloneState(state, this.signal);\n child.isolated = true;\n exitCode = await interruptible(runtime.runCommandIsolated(command, child, {\n ...isolateIO(io),\n stdin: input,\n ...(incoming ? { stdinIsDefault: false } : {}),\n stdout: pipeOutput ? this.budget.sink(pipeOutput, signal) : signalSink(io.stdout, signal),\n stderr: signalSink(io.stderr, signal),\n }).finally(() => stateMonitor(child)?.closeValues()), signal);\n } catch (error) {\n if (!(error instanceof PipelineClosed)) throw error;\n exitCode = 141;\n }\n return { exitCode };\n } finally {\n completed.add(index);\n if (incoming) {\n const upstream = index - 1;\n const close = setImmediate(() => {\n closing.delete(close);\n if (written.has(upstream) && !completed.has(upstream)) controllers[upstream]!.abort(new PipelineClosed());\n });\n closing.add(close);\n await incoming.abort();\n }\n await input.close().catch((error: unknown) => { if (!(error instanceof PipelineClosed)) throw error; });\n if (outgoing) await outgoing.close().catch(() => undefined);\n }\n };\n let captured: CapturedCancellationOutcome<CommandResult>;\n try { captured = { kind: \"return\", value: await executeStage() }; }\n catch (reason) {\n captured = frame.report && Object.is(frame.report.origin.signal.reason, reason)\n ? { kind: \"throw\", reason, report: frame.report }\n : { kind: \"throw\", reason };\n }\n const selection = await owner.finish(Promise.resolve(), captured);\n if (selection.outcome.kind === \"throw\") throw selection.outcome.reason;\n return selection.outcome.value.exitCode;\n });\n let statuses: number[];\n try {\n statuses = await interruptible(Promise.all(tasks), this.signal);\n } finally {\n for (const close of closing) clearImmediate(close);\n for (const [index, controller] of controllers.entries()) if (!completed.has(index) || written.has(index)) controller.abort(new PipelineClosed());\n await Promise.all(pipes.map((pipe) => pipe.abort()));\n }\n await this.publishStatus(state, statuses, io);\n status = state.pipefail ? statuses.findLast((status) => status !== 0) ?? 0 : statuses.at(-1)!;\n }\n if (pipeline.commands.length > 1) this.errexit(status, state, io);\n return pipeline.negate ? Number(status === 0) : status;\n }\n\n async runCommandIsolated(command: Command, state: State, io: IO, fileShortcut = false): Promise<number> {\n try { return await this.command(command, state, io, fileShortcut); }\n catch (error) {\n if (error instanceof NounsetDiagnosticFailure) throw error;\n if (error instanceof Flow && (error.kind === \"exit\" || error.kind === \"return\")) return error.status;\n throw error;\n }\n }\n\n errexit(status: number, state: State, io: IO): void {\n this.signal.throwIfAborted();\n if (status !== 0 && state.errexit && !io.execution?.ignoreErrexit) throw new Flow(\"exit\", status);\n }\n\n private async publishStatus(state: State, statuses: readonly number[], io: IO): Promise<void> {\n this.signal.throwIfAborted();\n try { throwCleanupFailures(io[invocationScope].failures); }\n catch (error) { throw new NounsetDiagnosticFailure(error); }\n await publishPipelineStatus(trackState(state, this.budget, io[invocationScope]), statuses, this.signal, io[invocationScope]);\n }\n\n async command(command: Command, state: State, io: IO, fileShortcut = false, publicationNegate = false): Promise<number> {\n io[invocationScope].assertOpen();\n const publishes = command.kind === \"simple\" || command.kind === \"subshell\" || command.kind === \"arithmetic\" || command.kind === \"conditional\";\n let status: number;\n try { status = await io[invocationScope].run(() => this.executeCommand(command, state, io, fileShortcut)); }\n catch (error) {\n if (publishes && error instanceof Flow && completedFlows.has(error)) {\n completedFlows.delete(error);\n this.signal.throwIfAborted();\n if (!io[invocationScope].failures.length) await this.publishStatus(state, [error.status], io);\n }\n throw error;\n }\n if (publishes) {\n const reported = publicationNegate && (command.kind === \"conditional\" || command.kind === \"arithmetic\") ? Number(status === 0) : status;\n await this.publishStatus(state, [reported], io);\n this.errexit(status, state, io);\n }\n return status;\n }\n\n async executeCommand(command: Command, state: State, originalIO: IO, fileShortcut = false): Promise<number> {\n state = trackState(state, this.budget, originalIO[invocationScope]);\n originalIO = activeIO(originalIO);\n originalIO.descriptors ??= new Map<number, Descriptor>([\n [0, { input: originalIO.stdin, ...(originalIO.stdinIsDefault === undefined ? {} : { stdinIsDefault: originalIO.stdinIsDefault }) }],\n [1, { output: originalIO.stdout }], [2, { output: originalIO.stderr }],\n ]);\n const diagnosticLine = (command.line ?? 1) + (originalIO.diagnosticOffset ?? 0);\n originalIO = { ...originalIO, diagnosticLine, substitutionDiagnosticLine: originalIO.substitutionDiagnosticLines?.get(command) ?? diagnosticLine };\n if (command.kind === \"subshell\") originalIO = isolateIO(originalIO);\n this.budget.tick();\n if (this.budget.commands % 128 === 0) await interruptible(new Promise<void>((resolve) => setImmediate(resolve)), this.signal);\n this.signal.throwIfAborted();\n const inputs = new Set<ShellInput>();\n const outputs = new Set<() => void>();\n const allocation = this.budget.values.scope();\n originalIO = { ...originalIO, [valueScope]: allocation };\n let io = originalIO;\n let diagnosticFailure: NounsetDiagnosticFailure | undefined;\n try {\n if (command.kind === \"function\") {\n if (state.profile === \"sh\" && specialBuiltinNames.has(command.name)) {\n await this.diagnostic(io, `\\`${command.name}': is a special builtin`);\n throw new Flow(\"exit\", 2);\n }\n state.functions.set(command.name, { ...command.body, sourceName: io.scriptName ?? \"shell\" });\n return 0;\n }\n if (command.kind === \"simple\") return await this.simple(command, state, originalIO, inputs, outputs, fileShortcut);\n io = await this.redirect(command.redirects, state, io, inputs, outputs, command.kind === \"subshell\", command.kind !== \"subshell\");\n if (command.kind === \"conditional\") {\n try {\n return await evaluateConditional(command.expression, {\n fs: this.fs, cwd: state.cwd, signal: this.signal,\n locale: state.variables.LC_ALL || state.variables.LC_COLLATE || state.variables.LANG || \"C\",\n work: { remaining: this.budget.limits.maxExpansionBytes, signal: this.signal, exhausted: (): never => this.budget.fail(\"maxExpansionBytes\") },\n expand: async (word, pattern = false) => (await this.word(word, state, io, false, pattern, false, pattern)).join(\"\"),\n regex: (subject, pattern) => this.ere(subject, pattern, state, io),\n option: name => name === \"errexit\" ? !!state.errexit : name === \"nounset\" ? !!state.nounset : name === \"pipefail\" ? state.pipefail : false,\n present: name => {\n const match = /^([a-zA-Z_][a-zA-Z_0-9]*)(?:\\[(0|[1-9][0-9]*|[@*])\\])?$/u.exec(name);\n if (!match) throw new ConditionalUnsupported(\"[[ variable selector: unsupported conditional profile\");\n const binding = arrayStore(state)?.get(match[1]!);\n const selector = match[2];\n if (selector === \"@\" || selector === \"*\") return binding ? binding.values.size > 0 : this.variable(state, match[1]!) !== undefined;\n const index = selector === undefined ? 0 : numericIndex({ decimal: selector });\n if (index === undefined) throw new ConditionalUnsupported(\"[[ variable index: unsupported conditional profile\");\n return binding ? binding.get(index) !== undefined : index === 0 && this.variable(state, match[1]!) !== undefined;\n },\n });\n } catch (error) {\n this.signal.throwIfAborted();\n if (error instanceof NounsetDiagnosticFailure) { diagnosticFailure = error; throw error; }\n if (error instanceof EreProfileLimitError || error instanceof EreTransportProfileLimitError) {\n try { await this.diagnostic(io, `[[ ${error.message}`); }\n catch (reason) { this.signal.throwIfAborted(); if (reason instanceof ShellLimitError) throw reason; diagnosticFailure = new NounsetDiagnosticFailure(reason); throw diagnosticFailure; }\n return 3;\n }\n if (error instanceof ConditionalUnsupported) {\n try { await this.diagnostic(io, error.message); }\n catch (reason) { this.signal.throwIfAborted(); if (reason instanceof ShellLimitError) throw reason; diagnosticFailure = new NounsetDiagnosticFailure(reason); throw diagnosticFailure; }\n return 2;\n }\n if (error instanceof ExpansionFailure || error instanceof Flow || error instanceof ShellLimitError || error instanceof ShellSyntaxError || error instanceof ArrayFailure) throw error;\n diagnosticFailure = new NounsetDiagnosticFailure(error);\n throw diagnosticFailure;\n }\n }\n if (command.kind === \"arithmetic\") {\n try {\n return Number(evaluatePositionalArithmetic(command.expression, {\n positional: state.positional, arg0: state.arg0 ?? \"virtual-bash\", owner: arrayStore(state)?.owner,\n maximumBytes: this.budget.limits.maxExpansionBytes,\n checkpoint: () => this.signal.throwIfAborted(),\n requireParameter: (name, value) => this.requireParameter(value, name, state, io),\n limit: () => this.budget.fail(\"maxExpansionBytes\"),\n }, (prepared) => evaluateArithmetic(prepared, this.arithmeticVariables(state, io.diagnosticLine))) === 0n);\n }\n catch (error) { this.rethrowArithmeticControl(error); throw new Error(`((: ${message(error)}`); }\n }\n if (command.kind === \"subshell\") {\n const child = await cloneState(state, this.signal);\n child.isolated = true;\n child.loopDepth = 0;\n try { return await this.run(command.body, child, io); }\n finally { stateMonitor(child)?.closeValues(); }\n }\n if (command.kind === \"group\") return await this.script(command.body, state, io);\n if (command.kind === \"if\") {\n for (const branch of command.branches) {\n if (await this.script(branch.condition, state, { ...io, execution: { ignoreErrexit: true } }) === 0) return await this.script(branch.body, state, io);\n }\n return command.otherwise ? await this.script(command.otherwise, state, io) : 0;\n }\n if (command.kind === \"case\") {\n const subject = (await this.word(command.subject, state, io, false)).join(\"\");\n const work = { remaining: this.budget.limits.maxExpansionBytes, signal: this.signal, exhausted: (): never => this.budget.fail(\"maxExpansionBytes\") };\n let status = 0;\n let fallthrough = false;\n let patterns = 0;\n for (const clause of command.clauses) {\n let matched = fallthrough;\n if (!matched) for (const word of clause.patterns) {\n if (++patterns % 128 === 0) await interruptible(new Promise<void>((resolve) => setImmediate(resolve)), this.signal);\n const pattern = (await this.word(word, state, io, false, true)).join(\"\");\n if (await matchesPattern(pattern, subject, work)) { matched = true; break; }\n }\n if (!matched) continue;\n if (clause.body.lists.length) status = await this.script(clause.body, state, io);\n if (clause.terminator === \";;\" || clause.terminator === \"esac\") break;\n fallthrough = clause.terminator === \";&\";\n }\n return status;\n }\n let status = 0;\n const loopRestoration = stateMonitor(state)?.restoration();\n state.loopDepth++;\n try {\n if (command.kind === \"for\") {\n const values = command.words ? await this.valueWords(command.words, state, io) : this.positionalValues(state);\n for (const value of values) {\n this.budget.loop();\n await this.assignVariable(state, command.name, value);\n const result = await this.loopBody(command.body, state, io);\n status = result.status;\n if (result.stop) break;\n }\n } else {\n while (true) {\n this.budget.loop();\n const condition = await this.script(command.condition, state, { ...io, execution: { ignoreErrexit: true } });\n if ((condition === 0) !== (command.kind === \"while\")) break;\n const result = await this.loopBody(command.body, state, io);\n status = result.status;\n if (result.stop) break;\n }\n }\n } finally {\n if (loopRestoration) loopRestoration.apply(() => { state.loopDepth--; });\n else state.loopDepth--;\n }\n return status;\n } catch (caught) {\n const diagnostic = caught instanceof ExecutionFailure ? caught.diagnostic : undefined;\n const error = caught instanceof ExecutionFailure ? caught.original : caught;\n if (caught instanceof ExecutionFailure) io = caught.io;\n if (error instanceof NounsetDiagnosticFailure) diagnosticFailure = error;\n this.signal.throwIfAborted();\n if (error instanceof Flow || error instanceof ShellLimitError || error instanceof ShellSyntaxError) throw error;\n this.clearOutcomeReport();\n if (error instanceof HereDocumentSyntaxError) {\n await writeText(io.stderr, error.diagnostic);\n if (command.kind !== \"simple\" && command.kind !== \"subshell\" && command.kind !== \"arithmetic\" && command.kind !== \"conditional\") this.errexit(1, state, io);\n return 1;\n }\n if (errorCode(error) === \"EPIPE\") {\n if (command.kind !== \"simple\" && command.kind !== \"subshell\" && command.kind !== \"arithmetic\" && command.kind !== \"conditional\") this.errexit(141, state, io);\n return 141;\n }\n const line = error instanceof ExpansionFailure ? error.line ?? io.diagnosticLine ?? 1 : io.diagnosticLine ?? 1;\n if (error instanceof NounsetFailure || error instanceof ParameterExpansionFailure) {\n const detail = error instanceof ParameterExpansionFailure ? diagnostic ?? message(error) : message(error);\n try { await writeText(io.stderr, `${io.scriptName ?? \"shell\"}: line ${line}: ${detail}\\n`); }\n catch (reason) {\n this.signal.throwIfAborted();\n if (reason instanceof ShellLimitError) throw reason;\n diagnosticFailure = new NounsetDiagnosticFailure(reason);\n throw diagnosticFailure;\n }\n throw completedExit(error instanceof ParameterExpansionFailure && !state.isolated ? 127 : 1);\n }\n if (error instanceof ArrayFailure) await writeText(io.stderr, `${io.scriptName ?? \"shell\"}: line ${line}: ${diagnostic ?? message(error)}\\n`);\n else {\n try { await writeText(io.stderr, `${io.scriptName ?? \"shell\"}: line ${line}: ${diagnostic ?? message(error)}\\n`); }\n catch { this.signal.throwIfAborted(); }\n }\n if (error instanceof ExpansionFailure) throw completedExit(error instanceof ParameterExpansionFailure && !state.isolated ? 127 : 1);\n if (error instanceof FatalCommandFailure) throw completedExit(error.status);\n const status = error instanceof CommandFailure ? error.status : 1;\n if (command.kind !== \"simple\" && command.kind !== \"subshell\" && command.kind !== \"arithmetic\" && command.kind !== \"conditional\") this.errexit(status, state, io);\n return status;\n } finally {\n await Promise.allSettled([\n ...[...outputs].map(async close => close()),\n ...[...inputs].map(async input => input.close()),\n ]).then(results => {\n const failures = results.filter(result => result.status === \"rejected\").map(result => result.reason);\n if (diagnosticFailure) io[invocationScope].failures.push(...failures);\n else throwCleanupFailures(failures);\n }).finally(() => allocation.close());\n }\n }\n\n async loopBody(body: Script, state: State, io: IO): Promise<{ status: number; stop: boolean }> {\n try { return { status: await this.script(body, state, io), stop: false }; }\n catch (error) {\n if (!(error instanceof Flow) || (error.kind !== \"break\" && error.kind !== \"continue\")) throw error;\n if (--error.levels > 0) throw error;\n return { status: 0, stop: error.kind === \"break\" };\n }\n }\n\n async document(document: HereDocument, state: State, io: IO, line = document.endLine): Promise<string> {\n this.signal.throwIfAborted();\n let value = \"\";\n let size = 0;\n let words = 0;\n const warnings: string[] = [];\n try {\n for (const word of hereDocumentWords(document, line, byteLocale(state.variables), warnings)) {\n this.signal.throwIfAborted();\n for (const warning of warnings.splice(0)) await writeText(io.stderr, `shell: warning: ${warning}\\n`);\n if (++words % 128 === 0) await interruptible(new Promise<void>((resolve) => setImmediate(resolve)), this.signal);\n const part = (await this.word(word, state, io, false)).join(\"\");\n size += Buffer.byteLength(part);\n if (size > this.budget.limits.maxExpansionBytes) this.budget.fail(\"maxExpansionBytes\");\n value += part;\n }\n } finally {\n for (const warning of warnings.splice(0)) await writeText(io.stderr, `shell: warning: ${warning}\\n`);\n }\n return value;\n }\n\n async redirect(redirects: readonly Redirect[], state: State, io: IO, inputs: Set<ShellInput>, outputs: Set<() => void>, isolatedInlineInput = false, persistMoves = false, fileShortcut = false, line?: number): Promise<IO> {\n io.descriptors ??= new Map<number, Descriptor>([\n [0, { input: io.stdin, ...(io.stdinIsDefault === undefined ? {} : { stdinIsDefault: io.stdinIsDefault }) }],\n [1, { output: io.stdout }], [2, { output: io.stderr }],\n ]);\n const inputDescriptor = io.descriptors.get(0);\n const outputDescriptor = io.descriptors.get(1);\n const errorDescriptor = io.descriptors.get(2);\n const descriptors = new Map<number, Descriptor>([\n ...io.descriptors ?? [],\n [0, inputDescriptor?.input === io.stdin ? inputDescriptor : { input: io.stdin, ...(io.stdinIsDefault === undefined ? {} : { stdinIsDefault: io.stdinIsDefault }) }],\n [1, outputDescriptor?.output === io.stdout ? outputDescriptor : { output: io.stdout }],\n [2, errorDescriptor?.output === io.stderr ? errorDescriptor : { output: io.stderr }],\n ]);\n const replaced = new Set<number>();\n let errorTarget: string | undefined;\n if (io.stdin === closedSource) descriptors.delete(0);\n if (io.stdout === closedSink) descriptors.delete(1);\n if (io.stderr === closedSink) descriptors.delete(2);\n const currentIO = (): IO => {\n const descriptor = descriptors.get(0)?.closed ? undefined : descriptors.get(0);\n const stdinIsDefault = descriptor?.input ? descriptor.stdinIsDefault : false;\n return {\n [invocationScope]: io[invocationScope],\n ...(io.execution === undefined ? {} : { execution: io.execution }),\n ...(io.diagnosticLine === undefined ? {} : { diagnosticLine: io.diagnosticLine }),\n ...(io.diagnosticOffset === undefined ? {} : { diagnosticOffset: io.diagnosticOffset }),\n ...(io.scriptName === undefined ? {} : { scriptName: io.scriptName }),\n ...(io.substitutionDiagnosticLine === undefined ? {} : { substitutionDiagnosticLine: io.substitutionDiagnosticLine }),\n ...(io.substitutionDiagnosticLines === undefined ? {} : { substitutionDiagnosticLines: io.substitutionDiagnosticLines }),\n stdin: descriptor?.input ?? closedSource,\n ...(stdinIsDefault === undefined ? {} : { stdinIsDefault }),\n stdout: descriptors.get(1)?.closed ? closedSink : descriptors.get(1)?.output ?? closedSink,\n stderr: descriptors.get(2)?.closed ? closedSink : descriptors.get(2)?.output ?? closedSink,\n descriptors,\n };\n };\n try { for (const redirect of redirects) {\n replaced.add(redirect.descriptor);\n if (redirect.document || redirect.operator === \"<<<\") {\n const hereString = redirect.operator === \"<<<\";\n let value: string;\n try { value = redirect.document ? await this.document(redirect.document, state, currentIO(), line) : (await this.word(redirect.target, state, currentIO(), false, false, hereString)).join(\"\"); }\n catch (error) {\n if (error instanceof NounsetFailure) throw error;\n if (error instanceof ParameterExpansionFailure && !isolatedInlineInput) throw error;\n if (error instanceof ParameterExpansionFailure) throw new CommandFailure(error.message, state.isolated ? 1 : 127);\n if (error instanceof ExpansionFailure) throw new Error(error.message);\n throw error;\n }\n if (hereString) {\n if (Buffer.byteLength(value) >= this.budget.limits.maxExpansionBytes) this.budget.fail(\"maxExpansionBytes\");\n value += \"\\n\";\n }\n const input = new ShellInput(toByteSource(value), this.budget, this.signal);\n inputs.add(input);\n descriptors.set(redirect.descriptor, { input, stdinIsDefault: false });\n continue;\n }\n const targets = await this.word(redirect.target, state, currentIO());\n if (targets.length !== 1) throw new Error(\"Ambiguous redirect\");\n const target = targets[0]!;\n errorTarget = target;\n if (redirect.operator.endsWith(\"&\")) {\n if (target === \"-\") descriptors.delete(redirect.descriptor);\n else {\n if (!/^\\d+-?$/u.test(target)) throw new Error(`${target}: Bad file descriptor`);\n const move = target.endsWith(\"-\");\n if (move && !redirect.move) throw new Error(`${target}: ambiguous redirect`);\n const sourceDescriptor = Number(move ? target.slice(0, -1) : target);\n const descriptor = descriptors.get(sourceDescriptor);\n if (!descriptor || descriptor.closed || (!move && (redirect.operator === \"<&\" ? !descriptor.input : !descriptor.output))) throw new Error(`${move ? sourceDescriptor : target}: Bad file descriptor`);\n descriptors.set(redirect.descriptor, { ...descriptor });\n if (move && sourceDescriptor !== redirect.descriptor) {\n descriptors.delete(sourceDescriptor);\n if (persistMoves && !replaced.has(sourceDescriptor)) descriptor.closed = true;\n }\n }\n } else {\n const path = resolvePath(state.cwd, target);\n const options = { signal: this.signal };\n if (redirect.operator === \"<\") {\n await interruptible(this.fs.access(path, 4, options), this.signal);\n const stat = await interruptible(this.fs.stat(path, options), this.signal);\n if (stat.type === \"directory\" && !fileShortcut) throw new Error(`${target}: Is a directory`);\n const source = stat.type === \"directory\" ? toByteSource(\"\")\n : await fileInput(this.fs, path, this.budget.limits.maxInputBytes, this.signal);\n const input = new ShellInput(source, this.budget, this.signal);\n inputs.add(input);\n descriptors.set(redirect.descriptor, { input, stdinIsDefault: false });\n } else {\n const append = redirect.operator === \">>\";\n let file!: OutputFile;\n await this.fileOperation(path, async () => {\n await this.fs.writeFile(path, new Uint8Array(), { ...options, flag: append ? \"a\" : \"w\" });\n file = this.outputFiles.get(path) ?? { data: undefined, references: 0 };\n if (!append) file.data = new Uint8Array();\n file.references++;\n this.outputFiles.set(path, file);\n });\n let closed = false;\n outputs.add(() => {\n closed = true;\n if (--file.references === 0 && this.outputFiles.get(path) === file) this.outputFiles.delete(path);\n });\n let offset = 0;\n const output = this.budget.sink({ write: (chunk) => {\n const copy = new Uint8Array(chunk);\n return this.fileOperation(path, async () => {\n if (closed) throw new Error(\"Output descriptor is closed\");\n const current = file.data;\n if (append) {\n await this.fs.appendFile(path, copy, options);\n if (current) {\n const bytes = new Uint8Array(current.length + copy.length);\n bytes.set(current);\n bytes.set(copy, current.length);\n file.data = bytes;\n }\n } else {\n const bytes = new Uint8Array(Math.max(current?.length ?? 0, offset + copy.length));\n if (current) bytes.set(current);\n bytes.set(copy, offset);\n await this.fs.writeFile(path, bytes, options);\n file.data = bytes;\n offset += copy.length;\n }\n });\n } }, this.signal);\n descriptors.set(redirect.descriptor, { output });\n if (redirect.operator === \"&>\") {\n replaced.add(2);\n descriptors.set(2, { output });\n }\n }\n }\n } } catch (error) {\n const diagnostic = errorTarget === undefined ? undefined : filesystemDiagnostic(error, errorTarget);\n throw new ExecutionFailure(error, currentIO(), diagnostic);\n }\n return currentIO();\n }\n\n async fileOperation(path: string, operation: () => Promise<void>): Promise<void> {\n const previous = this.fileWrites.get(path) ?? Promise.resolve();\n const pending = previous.catch(() => undefined).then(() => { this.signal.throwIfAborted(); return operation(); });\n this.fileWrites.set(path, pending);\n try { await interruptible(pending, this.signal); }\n finally { if (this.fileWrites.get(path) === pending) this.fileWrites.delete(path); }\n }\n\n assignment(word: Word): { name: string; value: Word; append: boolean } | undefined {\n const first = word.parts[0];\n if (first?.kind !== \"text\" || first.quoted) return undefined;\n const match = /^([a-zA-Z_][a-zA-Z_0-9]*)(\\+?)=/u.exec(first.value);\n if (!match) return undefined;\n return { name: match[1]!, append: match[2] === \"+\", value: { offset: word.offset, parts: [{ ...first, value: first.value.slice(match[0].length) }, ...word.parts.slice(1)] } };\n }\n\n async simple(command: Extract<Command, { kind: \"simple\" }>, state: State, originalIO: IO, inputs: Set<ShellInput>, outputs: Set<() => void>, fileShortcut = false): Promise<number> {\n state.substitutionStatus = 0;\n const assignments: ({ name: string; value: Word; append: boolean; kind?: undefined } | ArrayAssignment)[] = [];\n let wordIndex = 0;\n for (; wordIndex < command.words.length; wordIndex++) {\n const assignment = getArrayAssignment(command.words[wordIndex]!) ?? this.assignment(command.words[wordIndex]!);\n if (!assignment) break;\n assignments.push(assignment);\n }\n const commandWords = command.words.slice(wordIndex);\n let declarationIndex = 0;\n while (commandWords[declarationIndex]?.plain === \"command\") {\n declarationIndex++;\n if (commandWords[declarationIndex]?.plain === \"--\") declarationIndex++;\n }\n const wordValues = await this.valueWords(commandWords, state, originalIO, [\"export\", \"local\", \"readonly\"].includes(commandWords[declarationIndex]?.plain ?? \"\"));\n const words = wordValues.map(shellValueText);\n const special = state.profile === \"sh\" && specialBuiltinNames.has(words[0] ?? \"\");\n const inlineInput = command.redirects.some((redirect) => redirect.document || redirect.operator === \"<<<\");\n const functionCommand = words.length > 0 && state.functions.has(words[0]!);\n const isolatedInlineInput = inlineInput && words.length > 0 && !shellBuiltinNames.has(words[0]!) && !functionCommand;\n if (isolatedInlineInput) state = await cloneState(state, this.signal);\n let io = originalIO;\n const previous = new Map<string, SavedVariable>();\n const assign = async () => {\n for (const assignment of assignments) {\n if (assignment.kind) { await this.arrayAssignment(assignment, state, io); continue; }\n if (arrayStore(state)?.get(assignment.name)) {\n if (words.length) {\n await this.word(assignment.value, state, io, false);\n throw new ArrayFailure(\"indexed binding cannot be a command prefix\");\n }\n await this.arrayZero(state, assignment.name, async () => {\n const fields = await this.word(assignment.value, state, io, false);\n return this.arrayJoin(requireArrays(state).owner, fields, \"\");\n }, assignment.append);\n continue;\n }\n let value = concatShellValues(await this.valueWord(assignment.value, state, io, false), io[valueScope]);\n if (assignment.append) value = concatShellValues([stateMonitor(state)?.values.get(assignment.name, state.variables[assignment.name] ?? \"\") ?? state.variables[assignment.name] ?? \"\", value], io[valueScope]);\n if (state.readonlyVariables?.has(assignment.name)) {\n await this.diagnostic(io, `${assignment.name}: readonly variable`);\n if (state.profile === \"sh\" || !words.length) throw new Flow(\"exit\", state.profile === \"sh\" && (special || !words.length) ? 127 : 1);\n continue;\n }\n if (!previous.has(assignment.name)) {\n const saved = saveVariable(state, assignment.name);\n if (words.length && guestArrays(state)) await this.prepareVariable(state, assignment.name, saved, true);\n previous.set(assignment.name, saved);\n }\n this.writeVariable(state, assignment.name, value);\n if (words.length) state.exported.add(assignment.name);\n }\n };\n if (words.length) stateMonitor(state)?.openOverlay(previous);\n try {\n if (inlineInput || (state.profile === \"sh\" || !words.length) && assignments.some(assignment => state.readonlyVariables?.has(assignment.name))) await assign();\n if (inlineInput && functionCommand && previous.size) {\n const redirectState = await cloneState(state, this.signal);\n const variables = redirectState.variables;\n const redirectAssignments = new Map<string, ShellValue>();\n for (const [name, saved] of previous) {\n redirectAssignments.set(name, stateMonitor(state)!.values.get(name, state.variables[name]!));\n if (saved.value === undefined) delete variables[name];\n else publishVariable(redirectState, name, saved.heldValue?.value ?? saved.value);\n }\n redirectState.redirectAssignments = redirectAssignments;\n const savedIndex = previous.get(\"OPTIND\");\n if (savedIndex?.getopts) redirectState.getopts = { integer: savedIndex.getopts.integer, cursor: cloneGetoptsState(savedIndex.getopts.cursor) };\n const parentStore = arrayStore(state);\n const copyOwner = parentStore ? ArrayOwner.create(parentStore.owner.ledger, parentStore.owner) : undefined;\n const holding = parentStore?.owner.hold();\n copyOwner?.reserve({ metadata: 64, work: 3 });\n const publications = new Map<string, { binding: IndexedBinding; tickets: Admission }>();\n if (parentStore && copyOwner) for (const [name, entry] of parentStore.bindings) {\n copyOwner.reserve({ slots: 1, metadata: 32, work: 5 });\n publications.set(name, { binding: entry.binding, tickets: copyOwner.reserve({ generation: true, version: true, epoch: true, work: 8 }) });\n }\n const epoch = stateMonitor(state)?.epoch;\n try {\n io = await this.redirect(command.redirects, redirectState, io, inputs, outputs, false, true, false, command.line ?? 1);\n if (parentStore && stateMonitor(state)!.epoch !== epoch) throw new ArrayFailure(\"stale state snapshot\");\n } finally {\n try {\n const stale = parentStore && stateMonitor(state)!.epoch !== epoch;\n if (!stale) {\n if (parentStore) for (const [name, publication] of publications) {\n const changed = arrayStore(redirectState)!.get(name);\n if (!previous.has(name) && changed && changed !== publication.binding) {\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(publication.tickets, name, () => { released = parentStore.publish(name, changed.retain(), publication.tickets); });\n await released;\n }\n }\n state.substitutionStatus = redirectState.substitutionStatus;\n for (const [name, value] of Object.entries(variables)) {\n if (!previous.has(name)) publishVariable(state, name, stateMonitor(redirectState)!.values.get(name, value));\n }\n for (const [name, saved] of previous) {\n saved.value = variables[name];\n const value = stateMonitor(redirectState)!.values.get(name, saved.value ?? \"\");\n const held = typeof value === \"string\" ? undefined : stateMonitor(state)!.values.scope.hold(value);\n saved.heldValue?.release();\n if (held) saved.heldValue = held;\n else delete saved.heldValue;\n if (name === \"OPTIND\") saved.getopts = cloneGetoptsBinding(redirectState);\n }\n if (!previous.has(\"OPTIND\")) state.getopts = cloneGetoptsBinding(redirectState);\n }\n } finally { try { await copyOwner?.close(); } finally { holding?.release(); stateMonitor(redirectState)?.closeValues(); } }\n }\n } else io = await this.redirect(command.redirects, state, io, inputs, outputs, isolatedInlineInput, !words.length || shellBuiltinNames.has(words[0]!) || functionCommand, fileShortcut, command.line ?? 1);\n if (!inlineInput) await assign();\n if (fileShortcut) {\n const input = io.descriptors?.get(command.redirects[0]!.descriptor)?.input;\n if (!input) throw new Error(\"Bad file descriptor\");\n await pipeBytes(input, io.stdout, this.signal);\n return 0;\n }\n return words.length ? await this.dispatch(words[0]!, words.slice(1), state, io, previous, false, wordValues.slice(1)) : state.substitutionStatus;\n } catch (error) {\n if (error instanceof Flow) throw error;\n this.signal.throwIfAborted();\n const original = error instanceof ExecutionFailure ? error.original : error;\n if (special && !(original instanceof ShellLimitError) && !(original instanceof ExpansionFailure) && !(original instanceof Flow) && !(original instanceof ShellSyntaxError)) {\n throw new ExecutionFailure(new FatalCommandFailure(message(original), 1), error instanceof ExecutionFailure ? error.io : io, error instanceof ExecutionFailure ? error.diagnostic : undefined);\n }\n if (error instanceof ExecutionFailure) throw error;\n throw new ExecutionFailure(error, io);\n } finally {\n if (words.length) {\n for (const [key, saved] of previous) await originalIO[invocationScope].cleanup(async () => {\n if (saved.superseded) await this.discardVariable(saved);\n else await restoreVariable(state, key, saved);\n });\n await originalIO[invocationScope].cleanup(() => stateMonitor(state)?.closeOverlay(previous));\n } else for (const saved of previous.values()) saved.heldValue?.release();\n if (isolatedInlineInput) stateMonitor(state)?.closeValues();\n }\n }\n\n async dispatch(name: string, args: readonly string[], state: State, io: IO, assignments: Map<string, SavedVariable>, bypassFunctions = false, values: readonly ShellValue[] = args): Promise<number> {\n const scope = io[invocationScope].child();\n const runtime = new Runtime(\n this.fs, this.commands, this.middleware, this.budget,\n AbortSignal.any([this.signal, scope.signal]), this.fileWrites, this.outputFiles, this.commandSignal,\n this.cancellation, this.cancellationState, this.cancellationOwner,\n this.cancellationDepth, this.cancellationMaxDepth, this.outcomeFrame,\n );\n try { return await runtime.dispatchScoped(name, values, state, { ...io, [invocationScope]: scope }, assignments, bypassFunctions); }\n finally { await scope.close(); }\n }\n\n private async dispatchScoped(name: string, values: readonly ShellValue[], state: State, io: IO, assignments: Map<string, SavedVariable>, bypassFunctions: boolean): Promise<number> {\n const { [invocationScope]: scope, ...publicIO } = io;\n const allocation = this.budget.values.scope();\n scope.register(() => allocation.close());\n const argumentValues = this.admitArguments(values, allocation);\n let builtinFailure: { error: unknown; diagnostic: string } | undefined;\n const env = Object.create(null) as Record<string, string>;\n for (const key of state.exported) {\n const value = state.variables[key];\n if (value !== undefined) env[key] = value;\n }\n const initialEnv = { ...env };\n const runtimeFrame: RuntimeOutcomeFrame = {};\n const context: ShellCommandContext = {\n ...publicIO, command: name, args: argumentValues.args, argumentValues, env, cwd: state.cwd, fs: this.fs, signal: this.commandSignal,\n registerCleanup: (cleanup) => scope.register(cleanup),\n invoke: (name, args, options) => {\n const invocation = this.invoke(name, args, options, context, state, scope);\n void invocation.catch(() => undefined);\n return invocation;\n },\n };\n if (argumentValues.values.every(value => typeof value === \"string\")) Reflect.deleteProperty(context, \"argumentValues\");\n const middleware = this.middleware.map<Middleware>((handler) => (context, next) => {\n scope.assertOpen();\n let downstream: Promise<CommandResult> | undefined;\n const raw = handler(context, () => {\n downstream = next();\n return downstream;\n });\n return this.observeRuntimeReturn(raw, runtimeFrame, () => downstream);\n });\n const execute = composeMiddleware(middleware, (forwarded) => scope.run(async () => {\n scope.assertOpen();\n const forwardedValues = getCommandArguments(forwarded);\n const admitted = forwardedValues === argumentValues ? argumentValues : this.admitArguments(forwardedValues.values, allocation);\n const context = { ...forwarded, args: admitted.args, argumentValues: admitted, [invocationScope]: scope };\n const previous = new Map<string, SavedVariable & { overlay: string | undefined }>();\n const cwd = state.cwd;\n const directoryStackCwdPublication = state.directoryStackCwdPublication;\n const environmentKeys = new Set([...Object.keys(initialEnv), ...Object.keys(context.env)]);\n const typedEnvironment = [...environmentKeys].some(key => arrayStore(state)?.get(key) && initialEnv[key] !== context.env[key]);\n const cwdRestoration = stateMonitor(state)?.restoration(true);\n if (typedEnvironment) {\n const store = requireArrays(state);\n store.owner.reserve({ metadata: 64 + environmentKeys.size * 64, allocatedSlots: environmentKeys.size * 2, work: environmentKeys.size * 4 + 4 });\n const publications = new Map<string, Admission>();\n try {\n for (const key of environmentKeys) {\n const value: unknown = Object.hasOwn(context.env, key) ? context.env[key] : undefined;\n if (key.includes(\"\\0\") || key.includes(\"=\") || Object.hasOwn(context.env, key) && (typeof value !== \"string\" || value.includes(\"\\0\"))) throw new TypeError(\"Invalid middleware environment value\");\n if (initialEnv[key] === value) continue;\n if (state.readonlyVariables?.has(key)) throw new ArrayFailure(\"readonly environment collision\");\n }\n for (const key of environmentKeys) {\n const value = Object.hasOwn(context.env, key) ? context.env[key] : undefined;\n if (initialEnv[key] === value) continue;\n const saved = { ...saveVariable(state, key), overlay: value };\n await this.prepareVariable(state, key, saved);\n if (value !== undefined) await textToken(store.owner, value, this.signal);\n previous.set(key, saved);\n publications.set(key, store.tickets(key));\n }\n const cwdPublication = store.tickets();\n for (const [key, saved] of previous) {\n if (state.readonlyVariables?.has(key)) throw new ArrayFailure(\"readonly environment collision\");\n if (!typedSavedVariables.get(saved)!.watch.valid()) throw new ArrayFailure(\"stale binding\");\n }\n this.signal.throwIfAborted();\n stateMonitor(state)!.publish(cwdPublication, undefined, () => { state.cwd = resolvePath(\"/\", context.cwd); });\n cwdPublication.release();\n for (const [key, saved] of previous) {\n const publication = publications.get(key)!;\n stateMonitor(state)!.publish(publication, key, () => {\n void store.remove(key, publication);\n if (saved.overlay === undefined) { delete state.variables[key]; state.exported.delete(key); }\n else { state.variables[key] = saved.overlay; state.exported.add(key); }\n if (key === \"OPTIND\") this.reconcileGetopts(state, saved.value);\n });\n typedSavedVariables.get(saved)!.overlayVersion = publication.version;\n publication.release();\n }\n } catch (error) {\n for (const saved of previous.values()) await this.discardVariable(saved);\n for (const publication of publications.values()) publication.release();\n cwdRestoration?.close();\n throw error;\n }\n } else {\n state.cwd = resolvePath(\"/\", context.cwd);\n for (const key of environmentKeys) {\n if (Object.hasOwn(context.env, key) && typeof context.env[key] !== \"string\") throw new TypeError(\"Invalid middleware environment value\");\n if (initialEnv[key] === context.env[key]) continue;\n const value = context.env[key];\n if (key.includes(\"\\0\") || key.includes(\"=\") || (value !== undefined && (typeof value !== \"string\" || value.includes(\"\\0\")))) throw new TypeError(\"Invalid middleware environment value\");\n previous.set(key, { ...saveVariable(state, key), overlay: value });\n if (value === undefined) { delete state.variables[key]; state.exported.delete(key); }\n else { state.variables[key] = value; state.exported.add(key); }\n if (key === \"OPTIND\") this.reconcileGetopts(state, previous.get(key)!.value);\n }\n }\n stateMonitor(state)?.openOverlay(previous);\n try {\n const selected = this.internalDiscovery(context.command, state, bypassFunctions)[0];\n const body = selected?.kind === \"function\" ? state.functions.get(context.command) : undefined;\n if (body) {\n if (state.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n const positional = state.positional;\n const savedPositionals = stateMonitor(state)!.positionals.clone();\n const positionalSetVersion = state.positionalSetVersion ?? 0;\n const frameOwner = guestArrays(state)?.owner;\n frameOwner?.reserve({ metadata: 256 + context.args.length * 32, allocatedSlots: context.args.length + 1, work: context.args.length + 16 });\n const getoptsEntry = cloneGetoptsBinding(state);\n const functionRestoration = stateMonitor(state)?.restoration(true);\n let getoptsRestoration: Restoration | undefined;\n const locals = new Map<string, SavedVariable>();\n try {\n getoptsRestoration = stateMonitor(state)?.restoration();\n const stack = state.locals;\n const argumentsCopy = [...context.args];\n const monitor = stateMonitor(state);\n const preparedLocals = frameOwner ? monitor!.prepareCollection(locals, \"locals\") : locals;\n const preparedArguments = frameOwner ? monitor!.prepareCollection(argumentsCopy, \"positional\") : argumentsCopy;\n const entry = () => {\n this.replacePositionals(state, context.argumentValues.values, () => { state.positional = preparedArguments; });\n state.functionDepth++;\n state.depth++;\n stack.push(preparedLocals);\n };\n if (frameOwner) {\n const tickets = frameOwner.reserve({ epoch: true, work: 8 });\n monitor!.publish(tickets, undefined, entry);\n tickets.release();\n } else entry();\n } catch (error) { savedPositionals.close(); getoptsRestoration?.close(); functionRestoration?.close(); throw error; }\n try { return { exitCode: await this.command(body, state, { ...io, ...context, scriptName: body.sourceName ?? io.scriptName ?? \"shell\" }) }; }\n catch (error) {\n if (error instanceof Flow && error.kind === \"return\") return { exitCode: error.status };\n throw error;\n } finally {\n const restoreControls = () => {\n stateMonitor(state)!.positionals.restore(savedPositionals, () => { state.positional = positional; });\n savedPositionals.close();\n state.positionalSetVersion = positionalSetVersion;\n state.functionDepth--;\n state.depth--;\n state.locals.pop();\n };\n await scope.cleanup(() => {\n if (functionRestoration) functionRestoration.apply(restoreControls, false);\n else restoreControls();\n });\n for (const [name, previous] of locals) await scope.cleanup(async () => {\n const typed = typedSavedVariables.has(previous);\n await restoreVariable(state, name, previous);\n if (!typed && !previous.readOnly) state.readonlyVariables?.delete(name);\n });\n if (locals.has(\"OPTIND\")) await scope.cleanup(() => {\n const restoreGetopts = () => {\n state.getopts ??= getoptsEntry;\n state.getopts.cursor = getoptsEntry.cursor;\n };\n if (getoptsRestoration) getoptsRestoration.apply(restoreGetopts);\n else restoreGetopts();\n });\n await scope.cleanup(() => getoptsRestoration?.close());\n await scope.cleanup(() => functionRestoration?.close());\n }\n }\n if (selected?.kind === \"builtin\") {\n if (context.command === \"command\" || context.command === \"builtin\" || context.command === \"type\") return { exitCode: await this.discoveryBuiltin(context, state, io, assignments) };\n const special = state.profile === \"sh\" && !bypassFunctions && specialBuiltinNames.has(context.command);\n if (special) assignments.clear();\n if (context.command === \".\" || context.command === \"source\") return { exitCode: await this.sourceBuiltin(context, state, { ...io, ...context }, special) };\n if (context.command === \"eval\") return { exitCode: await this.evalBuiltin(context, state, { ...io, ...context }, special) };\n const builtinWork = this.builtin(context, state, assignments, (error, diagnostic) => { builtinFailure = { error, diagnostic }; }, bypassFunctions);\n const builtin = arrayStore(state) ? await interruptible(builtinWork, this.signal) : await builtinWork;\n if (builtin !== undefined) {\n if (special && builtin !== 0 && context.command !== \"shift\") throw new Flow(\"exit\", builtin);\n return { exitCode: builtin };\n }\n }\n const definition = this.commands.get(context.command);\n if (!definition) {\n if (context.command === \"bash\" || context.command === \"sh\") return { exitCode: await this.interpreter(context, state, io) };\n if (context.command.includes(\"/\") || state.variables.PATH === undefined && state.pathUnset) return { exitCode: await this.scriptFile(context, state, io, context.command, context.args, true) };\n const target = await this.searchPath(context.command, state);\n if (target !== undefined) return { exitCode: await this.scriptFile(context, state, io, target, context.args, true) };\n await this.diagnostic({ ...io, ...context }, `${context.command}: command not found`);\n return { exitCode: 127 };\n }\n const raw = definition.execute(forwarded);\n const observed = this.observeRuntimeReturn(raw, runtimeFrame);\n return await interruptible(observed, this.signal);\n } finally {\n const restoreCwd = () => {\n if (context.command !== \"cd\" && state.cwd === context.cwd && state.directoryStackCwdPublication === directoryStackCwdPublication) state.cwd = cwd;\n };\n await scope.cleanup(() => {\n if (cwdRestoration) cwdRestoration.apply(restoreCwd, false);\n else restoreCwd();\n });\n for (const [key, saved] of previous) await scope.cleanup(async () => {\n const typed = typedSavedVariables.get(saved);\n if (typed) {\n const owned = typed.binding ? typed.watch.watch.version === typed.overlayVersion : state.variables[key] === saved.overlay && typed.watch.watch.typedVersion === typed.watch.typedVersion;\n if (owned) await restoreVariable(state, key, saved);\n else await this.discardVariable(saved);\n return;\n }\n if (saved.superseded || state.variables[key] !== saved.overlay) return;\n await restoreVariable(state, key, saved);\n });\n await scope.cleanup(() => stateMonitor(state)?.closeOverlay(previous));\n await scope.cleanup(() => cwdRestoration?.close());\n }\n }));\n try { return validateExitCode((await interruptible(execute(context), this.signal)).exitCode); }\n catch (error) {\n if (builtinFailure && error === builtinFailure.error) throw new ExecutionFailure(error, io, builtinFailure.diagnostic);\n if (runtimeFrame.report && Object.is(runtimeFrame.report.origin.signal.reason, error) && this.outcomeFrame) {\n this.outcomeFrame.report = runtimeFrame.report;\n }\n throw error;\n }\n }\n\n internalDiscovery(name: string, state: State, bypassFunctions = false): Discovery[] {\n const matches: Discovery[] = [];\n if (!bypassFunctions && state.functions.has(name)) matches.push({ kind: \"function\", name });\n if (implementedBuiltins.has(name)) matches.push({ kind: \"builtin\", name });\n else if (this.commands.has(name)) matches.push({ kind: \"command\", name });\n else if (name === \"bash\" || name === \"sh\") matches.push({ kind: \"interpreter\", name });\n if (state.profile === \"sh\" && specialBuiltinNames.has(name)) matches.sort((left, right) => Number(right.kind === \"builtin\") - Number(left.kind === \"builtin\"));\n return matches;\n }\n\n async discoveryBuiltin(context: CommandContext, state: State, io: IO, assignments: Map<string, SavedVariable>): Promise<number> {\n const args = [...context.args];\n const command = context.command === \"command\";\n const builtin = context.command === \"builtin\";\n let mode: \"describe\" | \"name\" | \"kind\" | \"path\" = \"describe\";\n let discover = !command && !builtin;\n let all = false;\n let skipFunctions = false;\n let forcePath = false;\n while (args[0]?.startsWith(\"-\") && args[0] !== \"-\") {\n const option = args.shift()!;\n if (option === \"--\") break;\n if (builtin) { await this.diagnostic({ ...io, ...context }, `builtin: ${option}: invalid option`); return 2; }\n for (const flag of option.slice(1)) {\n if (command && (flag === \"v\" || flag === \"V\")) { discover = true; mode = flag === \"v\" ? \"name\" : \"describe\"; }\n else if (!command && flag === \"a\") all = true;\n else if (!command && flag === \"f\") skipFunctions = true;\n else if (!command && flag === \"t\") mode = \"kind\";\n else if (!command && (flag === \"p\" || flag === \"P\")) { mode = \"path\"; if (flag === \"P\") forcePath = true; }\n else {\n if (command && flag !== \"p\") {\n await this.diagnostic({ ...io, ...context }, `command: -${flag}: invalid option`);\n await writeText(context.stderr, \"command: usage: command [-pVv] command [arg ...]\\n\");\n } else await writeText(context.stderr, `${context.command}: ${option}: unsupported option\\n`);\n return 2;\n }\n }\n }\n if (!discover) {\n const target = args.shift();\n if (target === undefined) return 0;\n if (builtin && !shellBuiltinNames.has(target)) {\n await this.diagnostic({ ...io, ...context }, `builtin: ${target}: not a shell builtin`);\n return 1;\n }\n this.budget.tick();\n if (state.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n const restoration = stateMonitor(state)?.restoration(true);\n try { state.depth++; }\n catch (error) { restoration?.close(); throw error; }\n try { return await this.dispatch(target, args, state, { ...io, ...context }, assignments, true, getCommandArguments(context).values.slice(context.args.length - args.length)); }\n finally {\n const restore = () => { state.depth--; };\n if (restoration) restoration.apply(restore);\n else restore();\n }\n }\n let found = 0;\n for (const name of args) {\n this.signal.throwIfAborted();\n let matches = forcePath || all && mode === \"path\" ? [] : this.internalDiscovery(name, state, skipFunctions);\n if (!all) matches = matches.slice(0, 1);\n if (all || !matches.length) {\n const paths = await this.searchPaths(name, state, all, true);\n matches.push(...paths.map(path => {\n const absolute = command && mode === \"describe\";\n if ((absolute || state.profile === \"sh\") && !name.includes(\"/\") && !path.startsWith(\"/\")) {\n const relative = absolute && path.startsWith(\"./\") ? path.slice(2) : path;\n path = `${state.cwd === \"/\" ? \"\" : state.cwd}/${relative}`;\n }\n return { kind: \"file\" as const, name: path };\n }));\n }\n if (!matches.length) {\n if (mode === \"describe\") await writeText(context.stderr, `${io.scriptName ?? \"shell\"}: line ${io.diagnosticLine ?? 1}: ${context.command}: ${name}: not found\\n`);\n continue;\n }\n found++;\n for (const match of matches) {\n if (mode === \"path\" && match.kind !== \"file\") continue;\n let text: string;\n if (mode === \"kind\") text = `${match.kind}\\n`;\n else if (mode === \"name\" || mode === \"path\") text = `${match.name}\\n`;\n else if (match.kind === \"function\") text = `${name} is a function\\n${functionDisplay(name, state.functions.get(name)!)}`;\n else text = `${name} is ${match.kind === \"builtin\" ? \"a shell builtin\" : match.kind === \"command\" ? \"a registered command\" : match.kind === \"interpreter\" ? \"a virtual shell interpreter\" : match.name}\\n`;\n await writeText(context.stdout, text);\n }\n }\n return (command ? found > 0 || args.length === 0 : found === args.length) ? 0 : 1;\n }\n\n async searchPath(name: string, state: State): Promise<string | undefined> {\n return (await this.searchPaths(name, state))[0];\n }\n\n async searchPaths(name: string, state: State, all = false, discovery = false): Promise<string[]> {\n if (!name) return [];\n const path = state.variables.PATH;\n if (path !== undefined && Buffer.byteLength(path) > this.budget.limits.maxExpansionBytes) this.budget.fail(\"maxExpansionBytes\");\n const components = name.includes(\"/\") || path === undefined ? [undefined] : path.split(\":\");\n if (components.length > this.budget.limits.maxExpansionFields) this.budget.fail(\"maxExpansionFields\");\n let denied: CommandFailure | undefined;\n const matches: string[] = [];\n for (const component of components) {\n this.signal.throwIfAborted();\n const target = component === undefined ? name : `${component || \".\"}${component?.endsWith(\"/\") ? \"\" : \"/\"}${name}`;\n const resolved = resolvePath(state.cwd, target);\n try {\n const options = { signal: this.signal };\n if ((await interruptible(this.fs.stat(resolved, options), this.signal)).type !== \"file\") continue;\n if (this.fs.capabilities.permissions !== true) throw new CommandFailure(`${target}: execution permissions are not supported by this filesystem`, 126);\n await interruptible(this.fs.access(resolved, ACCESS_MODES.X_OK, options), this.signal);\n matches.push(target);\n if (!all) return matches;\n } catch (error) {\n this.signal.throwIfAborted();\n if (error instanceof CommandFailure) { if (discovery) continue; throw error; }\n const code = errorCode(error);\n if (code === \"ENOENT\" || code === \"ENOTDIR\") continue;\n if (code !== \"EACCES\" && code !== \"EPERM\") throw new CommandFailure(filesystemDiagnostic(error, target) ?? `${target}: ${message(error)}`, 126);\n denied ??= new CommandFailure(filesystemDiagnostic(error, target) ?? `${target}: ${message(error)}`, 126);\n }\n }\n if (denied && !matches.length && !discovery) throw denied;\n return matches;\n }\n\n processState(context: CommandContext, state: State, arg0: string, args: readonly string[]): State {\n if (state.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n const variables = Object.assign(Object.create(null) as Record<string, string>, context.env, { PWD: state.cwd });\n const exported = new Set(Object.keys(variables));\n variables.OPTIND = \"1\";\n variables.OPTERR = \"1\";\n return {\n cwd: state.cwd, variables, exported, functions: new Map(), getopts: { cursor: createGetoptsState(), integer: true },\n directoryStack: { entries: [], bytes: 0 },\n dotglob: false,\n positional: [...args], arg0, profile: context.command === \"sh\" ? \"sh\" : \"bash\", status: 0, substitutionStatus: 0, depth: state.depth + 1,\n loopDepth: 0, functionDepth: 0, locals: [], pipefail: false, isolated: true,\n errexit: false,\n };\n }\n\n async interpreter(context: CommandContext, state: State, io: IO, loadedSource?: { path: string; source: string }): Promise<number> {\n const args = [...context.args];\n let commandString = false;\n let standardInput = false;\n let errexit = false;\n while (args.length && /^[+-]/u.test(args[0]!)) {\n const option = args.shift()!;\n if (option === \"--\" || option === \"-\") break;\n if (!/^-[cse]+$|^\\+e+$/u.test(option)) {\n await writeText(context.stderr, `${context.command}: ${option}: unsupported option; supported flags are -c, -s, -e and +e\\n`);\n return 2;\n }\n commandString ||= option.includes(\"c\");\n standardInput ||= option.includes(\"s\");\n if (option.includes(\"e\")) errexit = option.startsWith(\"-\");\n }\n if (!commandString && !standardInput && args.length) return this.scriptFile(context, state, io, args[0]!, args.slice(1), false, errexit, loadedSource);\n const source = commandString ? args.shift() : undefined;\n if (commandString && source === undefined) {\n await writeText(context.stderr, `${context.command}: -c: option requires an argument\\n`);\n return 2;\n }\n const arg0 = commandString ? args.shift() ?? context.command : context.command;\n const child = this.processState(context, state, arg0, args);\n child.errexit = errexit;\n const childIO = isolateIO({ ...io, ...context, execution: { ignoreErrexit: false }, diagnosticLine: 1, diagnosticOffset: 0, scriptName: arg0 });\n if (source !== undefined) {\n this.budget.source(Buffer.byteLength(source));\n return this.runCommandString(source, child, childIO);\n }\n const input = new ShellInput(context.stdin, this.budget, this.signal);\n return this.runStandardInput(input, child, { ...childIO, stdin: input });\n }\n\n async syntaxFailure(error: ShellSyntaxError, source: string, io: IO, commandString: boolean): Promise<number> {\n const offset = io.diagnosticOffset ?? 0;\n const line = source.slice(0, error.offset).split(\"\\n\").length;\n const prefix = `${io.scriptName ?? \"shell\"}:${commandString ? \" -c:\" : \"\"}`;\n if (error.unclosedQuote) await writeText(io.stderr, `${prefix} line ${offset + error.unclosedQuote.line}: unexpected EOF while looking for matching \\`${error.unclosedQuote.quote}'\\n`);\n else if (error.offset >= source.length && !/Unterminated|nesting|Unsupported/u.test(error.reason)) {\n const context = error.incompleteCommand ? ` from \\`${error.incompleteCommand.name}' command on line ${offset + error.incompleteCommand.line}` : \"\";\n await writeText(io.stderr, `${prefix} line ${offset + source.split(\"\\n\").length + Number(!source.endsWith(\"\\n\"))}: syntax error: unexpected end of file${context}\\n`);\n } else {\n const token = /^[;&|()<>]|^[^\\s;&|()<>]+/u.exec(source.slice(error.offset))?.[0] ?? \"newline\";\n await writeText(io.stderr, `${prefix} line ${offset + line}: syntax error near unexpected token \\`${token}'\\n${prefix} line ${offset + line}: \\`${source.split(\"\\n\")[line - 1] ?? \"\"}'\\n`);\n }\n return error.exitCode;\n }\n\n async runCommandString(source: string, state: State, io: IO): Promise<number> {\n let position = 0;\n let status = 0;\n try {\n do {\n this.signal.throwIfAborted();\n const unit = parseShellUnit(source, position, byteLocale(state.variables));\n for (const warning of unit.script.warnings ?? []) await writeText(io.stderr, `${io.scriptName}: warning: ${warning}\\n`);\n if (unit.script.lists.length) {\n const result = await this.runUnit(unit.script, state, io);\n status = result.exitCode;\n if (result.terminated) return status;\n }\n position = unit.next;\n } while (position < source.length);\n return status;\n } catch (error) {\n if (!(error instanceof ShellSyntaxError)) throw error;\n return this.syntaxFailure(error, source, io, true);\n }\n }\n\n sourceText(bytes: Uint8Array, name: string): string {\n if (bytes.some(byte => byte < 9 || byte > 10 && byte < 13 || byte > 13 && byte < 32 || byte === 127)) throw new CommandFailure(`${name}: cannot execute binary script`, 126);\n try { return new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(bytes); }\n catch { throw new CommandFailure(`${name}: cannot execute binary or non-UTF-8 script`, 126); }\n }\n\n async runStandardInput(input: ShellInput, state: State, io: IO): Promise<number> {\n let source = \"\";\n let offset = 0;\n let status = 0;\n let lines = 0;\n while (true) {\n if (++lines % 32 === 0) await interruptible(new Promise<void>(resolve => setImmediate(resolve)), this.signal);\n this.signal.throwIfAborted();\n const bytes = await input.sourceLine();\n const eof = bytes === undefined;\n if (bytes) source += this.sourceText(bytes, io.scriptName ?? \"shell\");\n const unitIO = { ...io, diagnosticOffset: offset };\n try {\n const unit = eof ? parseShellUnit(source, 0, byteLocale(state.variables)) : parseShellInputUnit(source, byteLocale(state.variables));\n if (unit) {\n for (const warning of unit.script.warnings ?? []) await writeText(io.stderr, `${io.scriptName}: warning: ${warning}\\n`);\n if (unit.script.lists.length) {\n const result = await this.runUnit(unit.script, state, unitIO);\n status = result.exitCode;\n if (result.terminated) return status;\n }\n offset += source.slice(0, unit.next).split(\"\\n\").length - 1;\n source = source.slice(unit.next);\n }\n } catch (error) {\n if (!(error instanceof ShellSyntaxError)) throw error;\n return this.syntaxFailure(error, source, unitIO, false);\n }\n if (eof) return status;\n }\n }\n\n private static readonly envShebangCommand = executionCommands(() => { throw new Error(\"Unreserved shebang invocation\"); }).find(command => command.name === \"env\");\n\n private async shebangState(context: CommandContext, state: State): Promise<State> {\n const child = await cloneState(state, this.signal);\n child.cwd = resolvePath(\"/\", context.cwd);\n if (guestArrays(child) || Object.keys(context.env).some(key => arrayStore(child)?.get(key))) {\n await this.indexedEnvironment(child, context.env);\n this.reconcileGetopts(child, state.variables.OPTIND);\n return child;\n }\n for (const key of child.exported) delete child.variables[key];\n for (const [key, value] of Object.entries(context.env)) {\n if (key.includes(\"\\0\") || key.includes(\"=\") || typeof value !== \"string\" || value.includes(\"\\0\")) throw new TypeError(\"Invalid middleware environment value\");\n child.variables[key] = value;\n }\n child.exported = new Set(Object.keys(context.env));\n this.reconcileGetopts(child, state.variables.OPTIND);\n return child;\n }\n\n private async shebangStage(\n incoming: CommandContext, state: State, io: IO,\n terminal: (runtime: Runtime, context: ShellCommandContext, child: State, childIO: IO) => Promise<CommandResult>,\n prepare?: (runtime: Runtime, context: ShellCommandContext, child: State, childIO: IO) => CommandInvoker,\n replacementInput?: ByteSource,\n existingScope?: InvocationScope,\n ): Promise<number> {\n const scope = existingScope ?? io[invocationScope].child();\n const ownsScope = existingScope === undefined;\n const runtime = new Runtime(\n this.fs, this.commands, this.middleware, this.budget,\n AbortSignal.any([this.signal, scope.signal]), this.fileWrites, this.outputFiles, this.commandSignal,\n this.cancellation, this.cancellationState, this.cancellationOwner,\n this.cancellationDepth, this.cancellationMaxDepth, this.outcomeFrame,\n );\n let input: ShellInput | undefined;\n try {\n const allocation = this.budget.values.scope();\n scope.register(() => allocation.close());\n const argumentValues = this.admitArguments(getCommandArguments(incoming).values, allocation);\n scope.register(async () => {\n try { await input?.close(); }\n catch (error) { if (!this.signal.aborted || error !== this.signal.reason) throw error; }\n });\n if (replacementInput !== undefined) input = new ShellInput(replacementInput, this.budget, this.signal);\n const invocationOverride: { current: CommandInvoker | undefined } = { current: undefined };\n const context: ShellCommandContext = {\n ...incoming, args: argumentValues.args, argumentValues,\n env: Object.assign(Object.create(null) as Record<string, string>, incoming.env),\n stdin: input ?? incoming.stdin,\n stdout: this.budget.sink(incoming.stdout, runtime.signal), stderr: this.budget.sink(incoming.stderr, runtime.signal),\n signal: this.commandSignal, registerCleanup: cleanup => scope.register(cleanup),\n invoke: (name, args, options) => {\n const invocation = invocationOverride.current ? invocationOverride.current(name, args, options) : runtime.invoke(name, args, options, context, child, scope);\n void invocation.catch(() => undefined);\n return invocation;\n },\n };\n if (argumentValues.values.every(value => typeof value === \"string\")) Reflect.deleteProperty(context, \"argumentValues\");\n const child = await runtime.shebangState(context, state);\n const childIO = { ...io, ...context, [invocationScope]: scope };\n invocationOverride.current = prepare?.(runtime, context, child, childIO);\n const runtimeFrame: RuntimeOutcomeFrame = {};\n const middleware = this.middleware.map<Middleware>(handler => (context, next) => {\n scope.assertOpen();\n let downstream: Promise<CommandResult> | undefined;\n const raw = handler(context, () => {\n downstream = next();\n return downstream;\n });\n return runtime.observeRuntimeReturn(raw, runtimeFrame, () => downstream);\n });\n const execute = composeMiddleware(middleware, async () => {\n scope.assertOpen();\n const forwardedValues = getCommandArguments(context);\n const admitted = forwardedValues === argumentValues ? argumentValues : runtime.admitArguments(forwardedValues.values, allocation);\n const selected = { ...context, args: admitted.args, argumentValues: admitted };\n const forwarded = await runtime.shebangState(selected, child);\n selected.cwd = forwarded.cwd;\n const raw = terminal(runtime, selected, forwarded, { ...childIO, ...selected });\n return await runtime.observeRuntimeReturn(raw, runtimeFrame);\n });\n try {\n const result = await interruptible(execute(context), runtime.signal);\n runtime.signal.throwIfAborted();\n return validateExitCode(result.exitCode);\n } catch (error) {\n if (runtimeFrame.report && Object.is(runtimeFrame.report.origin.signal.reason, error) && runtime.outcomeFrame) {\n runtime.outcomeFrame.report = runtimeFrame.report;\n }\n throw error;\n }\n } finally { if (ownsScope) await scope.close(); }\n }\n\n private shebangTarget(context: CommandContext, state: State, io: IO, command: string, args: readonly string[], options: ShellInvokeOptions, target: string, loadedSource: { path: string; source: string }): Promise<CommandResult> {\n return this.invokeChild(options, state, io[invocationScope], () => {\n this.signal.throwIfAborted();\n io[invocationScope].assertOpen();\n if (typeof command !== \"string\" || command.includes(\"\\0\") || !Array.isArray(args)\n || args.some(argument => typeof argument !== \"string\" || argument.includes(\"\\0\"))) {\n throw new TypeError(\"invoke requires a command and literal string arguments without NUL\");\n }\n this.budget.tick();\n if (args.length + 1 > this.budget.limits.maxExpansionFields) this.budget.fail(\"maxExpansionFields\");\n for (const argument of [command, ...args]) {\n if (Buffer.byteLength(argument) > this.budget.limits.maxExpansionBytes) this.budget.fail(\"maxExpansionBytes\");\n }\n }, (runtime, scope) => runtime.shebangTargetScoped(context, state, io, command, args, options, target, loadedSource, scope));\n }\n\n private async shebangTargetScoped(context: CommandContext, state: State, io: IO, command: string, args: readonly string[], options: ShellInvokeOptions, target: string, loadedSource: { path: string; source: string }, scope: InvocationScope): Promise<CommandResult> {\n const reserved = command === \"bash\" || command === \"sh\";\n const direct = command.includes(\"/\");\n const definition = this.commands.get(command);\n const child = await this.shebangState(context, state);\n child.cwd = resolvePath(context.cwd, options.cwd ?? \".\");\n if (!reserved) {\n if (child.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n child.depth++;\n child.loopDepth = 0;\n child.functionDepth = 0;\n child.sourceDepth = 0;\n child.locals = [];\n }\n const stdinIsDefault = options.stdin === undefined ? context.stdinIsDefault : options.stdinIsDefault ?? false;\n const argumentValues = getCommandArguments({ args, ...(options.argumentValues ? { argumentValues: options.argumentValues } : {}) });\n const selected: CommandContext = {\n ...context, command, args: argumentValues.args, argumentValues, cwd: child.cwd,\n env: options.replaceEnv ? { ...options.env } : { ...context.env, ...options.env, PWD: child.cwd },\n stdin: options.stdin ?? context.stdin,\n stdout: options.stdout ?? context.stdout, stderr: options.stderr ?? context.stderr,\n ...(stdinIsDefault === undefined ? {} : { stdinIsDefault }),\n };\n const exitCode = await this.shebangStage(selected, child, io, async (runtime, forwarded, state, childIO) => {\n if (reserved) {\n if (definition) {\n await runtime.diagnostic(childIO, `${target}: unsupported interpreter override: ${command}`);\n return { exitCode: 126 };\n }\n return { exitCode: await runtime.interpreter(forwarded, state, childIO, loadedSource) };\n }\n if (direct) return { exitCode: await runtime.scriptFile(forwarded, state, childIO, command, forwarded.args, true) };\n if (definition) return definition.execute(forwarded);\n await writeText(forwarded.stderr, `env: ${command}: command not found\\n`);\n return { exitCode: 127 };\n }, undefined, options.stdin !== context.stdin ? options.stdin : undefined, scope);\n return { exitCode };\n }\n\n private async envShebang(context: CommandContext, state: State, io: IO, optionalArgument: string | undefined, target: string, args: readonly string[], loadedSource: { path: string; source: string }): Promise<number> {\n const definition = Runtime.envShebangCommand;\n if (!definition) throw new CommandFailure(`${target}: env interpreter is unavailable`, 126);\n const allocation = this.budget.values.scope();\n io[invocationScope].register(() => allocation.close());\n const incoming = getCommandArguments({ args, ...(context.argumentValues ? { argumentValues: context.argumentValues } : {}) });\n const argumentValues = this.admitArguments([...(optionalArgument === undefined ? [] : [optionalArgument]), target, ...incoming.values], allocation);\n return this.shebangStage({\n ...context, command: \"env\", args: argumentValues.args, argumentValues,\n }, state, io, async (runtime, forwarded) => {\n let failed = false;\n let failure: unknown;\n let failureReport: CancellationReport | undefined;\n const result = await interruptible(Promise.resolve(definition.execute({\n ...forwarded,\n invoke: (command, arguments_, options) => {\n const raw = forwarded.invoke(command, arguments_, options);\n return raw.catch(error => {\n failed = true;\n failure = error;\n failureReport = runtime.cancellationState.consume(raw, error);\n return { exitCode: 1 };\n });\n },\n })), runtime.signal);\n runtime.signal.throwIfAborted();\n if (failed) {\n if (failureReport && runtime.outcomeFrame) runtime.outcomeFrame.report = failureReport;\n throw failure;\n }\n return { exitCode: validateExitCode(result.exitCode) };\n }, (runtime, forwarded, child, childIO) => (command, arguments_, options = {}) =>\n runtime.shebangTarget(forwarded, child, childIO, command, arguments_, options, target, loadedSource));\n }\n\n async scriptFile(context: CommandContext, state: State, io: IO, target: string, args: readonly string[], direct: boolean, errexit = false, loadedSource?: { path: string; source: string }): Promise<number> {\n if (target === \"\") throw new CommandFailure(`${context.command}: : No such file or directory`, 127);\n if (state.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n const path = resolvePath(state.cwd, target);\n let source: string;\n let environmentInterpreter: RegExpExecArray | null = null;\n let interpreterProfile: \"bash\" | \"sh\" | undefined;\n try {\n if (loadedSource?.path === path) source = loadedSource.source;\n else {\n const options = { signal: this.signal };\n const stat = await interruptible(this.fs.stat(path, options), this.signal);\n if (stat.type !== \"file\") throw new CommandFailure(`${target}: ${stat.type === \"directory\" ? \"Is a directory\" : \"not a regular file\"}`, 126);\n if (direct && this.fs.capabilities.permissions !== true) throw new CommandFailure(`${target}: execution permissions are not supported by this filesystem`, 126);\n await interruptible(this.fs.access(path, ACCESS_MODES.R_OK | (direct ? ACCESS_MODES.X_OK : 0), options), this.signal);\n const maxBytes = this.budget.limits.maxSourceBytes - this.budget.sourceBytes;\n if (stat.size > maxBytes) this.budget.fail(\"maxSourceBytes\");\n const bytes = await interruptible(this.fs.readFile(path, { ...options, maxBytes }), this.signal);\n this.budget.source(bytes.byteLength);\n source = this.sourceText(bytes, target);\n }\n if (direct && source.startsWith(\"#!\")) {\n const interpreter = source.split(\"\\n\", 1)[0]!.slice(2).replace(/^[ \\t]+|[ \\t]+$/gu, \"\");\n environmentInterpreter = /^\\/usr\\/bin\\/env(?:[ \\t]+([^\\n]*))?$/u.exec(interpreter);\n if (!environmentInterpreter) {\n const shell = /^\\/(?:usr\\/)?bin\\/(bash|sh)(?:[ \\t]+([-+]e+))?$/u.exec(interpreter);\n if (!shell) throw new CommandFailure(`${target}: unsupported interpreter: ${interpreter}`, 126);\n interpreterProfile = shell[1] === \"sh\" ? \"sh\" : \"bash\";\n if (shell[2]) errexit = shell[2].startsWith(\"-\");\n }\n }\n } catch (error) {\n this.signal.throwIfAborted();\n if (error instanceof ShellLimitError || error instanceof CommandFailure) throw error;\n if (errorCode(error) === \"EFBIG\") this.budget.fail(\"maxSourceBytes\");\n throw new CommandFailure(filesystemDiagnostic(error, target) ?? `${target}: ${message(error)}`, errorCode(error) === \"ENOENT\" ? 127 : 126);\n }\n if (direct && environmentInterpreter) return this.envShebang(context, state, io, environmentInterpreter[1], target, args, { path, source });\n const units: Script[] = [];\n try {\n let position = 0;\n do {\n this.signal.throwIfAborted();\n const unit = parseShellUnit(source, position, byteLocale(context.env));\n units.push(unit.script);\n position = unit.next;\n } while (position < source.length);\n } catch (error) {\n if (!(error instanceof ShellSyntaxError)) throw error;\n const line = source.slice(0, error.offset).split(\"\\n\").length;\n await writeText(context.stderr, `${target}: line ${line}: syntax error: ${error.reason}\\n`);\n return error.exitCode;\n }\n const child = this.processState(context, state, target, args);\n child.errexit = errexit;\n if (direct) child.profile = interpreterProfile ?? state.profile ?? \"bash\";\n const childIO = isolateIO({ ...io, ...context, execution: { ignoreErrexit: false }, diagnosticLine: 1, diagnosticOffset: 0, scriptName: target });\n let status = 0;\n for (const unit of units) {\n for (const warning of unit.warnings ?? []) await writeText(context.stderr, `${target}: warning: ${warning}\\n`);\n if (!unit.lists.length) continue;\n const result = await this.runUnit(unit, child, childIO);\n status = result.exitCode;\n if (result.terminated) break;\n }\n return status;\n }\n\n async runCurrentText(source: string, state: State, io: IO, fatalSyntax: boolean, syntaxName?: string): Promise<number> {\n let position = 0;\n let status = 0;\n let executed = false;\n try {\n do {\n this.signal.throwIfAborted();\n const unit = parseShellUnit(source, position, byteLocale(state.variables));\n for (const warning of unit.script.warnings ?? []) await writeText(io.stderr, `${io.scriptName ?? \"shell\"}: warning: ${warning}\\n`);\n if (unit.script.lists.length) {\n status = await this.script(unit.script, state, io);\n executed = true;\n }\n position = unit.next;\n } while (position < source.length);\n return status;\n } catch (error) {\n if (!(error instanceof ShellSyntaxError)) throw error;\n const status = await this.syntaxFailure(error, source, syntaxName === undefined ? io : { ...io, scriptName: syntaxName }, false);\n if (fatalSyntax && !executed) throw new Flow(\"exit\", status);\n return status;\n }\n }\n\n async evalBuiltin(context: CommandContext, state: State, io: IO, special: boolean): Promise<number> {\n const args = [...context.args];\n if (args[0] === \"--\") args.shift();\n else if (args[0]?.startsWith(\"-\") && args[0] !== \"-\") {\n await this.diagnostic(io, `eval: -${args[0][1]}: invalid option`);\n await writeText(io.stderr, \"eval: usage: eval [arg ...]\\n\");\n if (special) throw new Flow(\"exit\", 2);\n return 2;\n }\n if (!args.length) return 0;\n if (state.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n const source = args.join(\" \");\n this.budget.source(Buffer.byteLength(source));\n this.sourceText(Buffer.from(source), \"eval\");\n const restoration = stateMonitor(state)?.restoration(true);\n try { state.depth++; }\n catch (error) { restoration?.close(); throw error; }\n try {\n return await this.runCurrentText(source, state, { ...io, diagnosticOffset: (io.diagnosticLine ?? 1) - 1 }, special, `${io.scriptName ?? \"shell\"}: eval`);\n } finally {\n const restore = () => { state.depth--; };\n if (restoration) restoration.apply(restore);\n else restore();\n }\n }\n\n async sourceBuiltin(context: CommandContext, state: State, io: IO, special: boolean): Promise<number> {\n const args = [...context.args];\n if (args[0] === \"--\") args.shift();\n else if (args[0]?.startsWith(\"-\") && args[0] !== \"-\") {\n await this.diagnostic(io, `${context.command}: ${args[0]}: unsupported option`);\n if (special) throw new Flow(\"exit\", 2);\n return 2;\n }\n const filename = args.shift();\n if (filename === undefined) {\n await this.diagnostic(io, `${context.command}: filename argument required`);\n await writeText(io.stderr, `${context.command}: usage: ${context.command} [-p path] filename [arguments]\\n`);\n if (special) throw new Flow(\"exit\", 2);\n return 2;\n }\n if (state.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n let target = filename;\n let source: string;\n try {\n const options = { signal: this.signal };\n if (filename && !filename.includes(\"/\") && state.variables.PATH) {\n if (Buffer.byteLength(state.variables.PATH) > this.budget.limits.maxExpansionBytes) this.budget.fail(\"maxExpansionBytes\");\n const components = state.variables.PATH.split(\":\");\n if (components.length > this.budget.limits.maxExpansionFields) this.budget.fail(\"maxExpansionFields\");\n let found = false;\n for (const component of components) {\n this.signal.throwIfAborted();\n const candidate = `${component || \".\"}${component.endsWith(\"/\") ? \"\" : \"/\"}${filename}`;\n const path = resolvePath(state.cwd, candidate);\n try {\n if ((await interruptible(this.fs.stat(path, options), this.signal)).type !== \"file\") continue;\n await interruptible(this.fs.access(path, ACCESS_MODES.R_OK, options), this.signal);\n target = candidate;\n found = true;\n break;\n } catch (error) {\n this.signal.throwIfAborted();\n if (![\"ENOENT\", \"ENOTDIR\", \"EACCES\", \"EPERM\"].includes(errorCode(error) ?? \"\")) throw error;\n }\n }\n if (!found && state.profile === \"sh\") throw new CommandFailure(`${context.command}: ${filename}: file not found`, 1);\n }\n if (!filename) throw new CommandFailure(\": No such file or directory\", 1);\n const path = resolvePath(state.cwd, target);\n const stat = await interruptible(this.fs.stat(path, options), this.signal);\n if (stat.type === \"directory\") throw new CommandFailure(`${context.command}: ${target}: is a directory`, 1);\n if (stat.type !== \"file\") throw new CommandFailure(`${target}: not a regular file`, 1);\n await interruptible(this.fs.access(path, ACCESS_MODES.R_OK, options), this.signal);\n const maxBytes = this.budget.limits.maxSourceBytes - this.budget.sourceBytes;\n if (stat.size > maxBytes) this.budget.fail(\"maxSourceBytes\");\n const bytes = await interruptible(this.fs.readFile(path, { ...options, maxBytes }), this.signal);\n this.budget.source(bytes.byteLength);\n source = this.sourceText(bytes, target);\n } catch (error) {\n this.signal.throwIfAborted();\n if (error instanceof ShellLimitError) throw error;\n if (errorCode(error) === \"EFBIG\") this.budget.fail(\"maxSourceBytes\");\n const diagnostic = error instanceof CommandFailure ? error.message : filesystemDiagnostic(error, target) ?? `${target}: ${message(error)}`;\n if (special) throw new FatalCommandFailure(diagnostic, 1);\n throw new CommandFailure(diagnostic, error instanceof CommandFailure ? error.status : 1);\n }\n const positional = state.positional;\n const version = state.positionalSetVersion ?? 0;\n const sourceDepth = state.sourceDepth ?? 0;\n const monitor = stateMonitor(state);\n const restoration = monitor?.restoration(true);\n try {\n const owner = arrayStore(state)?.owner;\n if (owner) {\n owner.reserve({ metadata: 64 + args.length * 32, allocatedSlots: args.length, work: args.length + 4 });\n monitor!.prepareCollection(args, \"positional\");\n }\n const entry = () => {\n if (args.length) state.positional = args;\n state.sourceDepth = (state.sourceDepth ?? 0) + 1;\n state.depth++;\n };\n if (owner) {\n const tickets = owner.reserve({ epoch: true, work: 8 });\n monitor!.publish(tickets, undefined, entry);\n tickets.release();\n } else entry();\n } catch (error) { restoration?.close(); throw error; }\n try {\n return await this.runCurrentText(source, state, { ...io, scriptName: target, diagnosticOffset: 0, diagnosticLine: 1 }, special);\n } catch (error) {\n if (error instanceof Flow && error.kind === \"return\") return error.status;\n throw error;\n } finally {\n const restore = () => {\n state.depth--;\n state.sourceDepth = sourceDepth;\n if (args.length && (state.functionDepth > 0 || (state.positionalSetVersion ?? 0) === version)) {\n state.positional = positional;\n state.positionalSetVersion = version;\n }\n };\n if (restoration) restoration.apply(restore);\n else restore();\n }\n }\n\n invoke(name: string, args: readonly string[], options: ShellInvokeOptions = {}, context: ShellCommandContext, state: State, parent: InvocationScope): Promise<{ exitCode: number }> {\n return this.invokeChild(options, state, parent, () => {\n if (typeof name !== \"string\" || name.includes(\"\\0\") || !Array.isArray(args)\n || args.some((arg) => typeof arg !== \"string\" || arg.includes(\"\\0\"))) {\n throw new TypeError(\"invoke requires a command and literal string arguments without NUL\");\n }\n if (state.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n }, (runtime, scope) => runtime.invokeScoped(name, args, options, context, state, scope));\n }\n\n private async invokeScoped(name: string, args: readonly string[], options: ShellInvokeOptions, context: ShellCommandContext, state: State, scope: InvocationScope): Promise<{ exitCode: number }> {\n this.signal.throwIfAborted();\n const allocation = this.budget.values.scope();\n scope.register(() => allocation.close());\n const carrier = this.admitArguments(getCommandArguments({ args, ...(options.argumentValues ? { argumentValues: options.argumentValues } : {}) }).values, allocation);\n const child = await cloneState(state, this.signal);\n child.cwd = resolvePath(context.cwd, options.cwd ?? \".\");\n const env = options.replaceEnv ? { ...options.env } : { ...context.env, ...options.env, PWD: child.cwd };\n if (guestArrays(child) || Object.keys(env).some(key => arrayStore(child)?.get(key))) await this.indexedEnvironment(child, env);\n else {\n for (const key of child.exported) delete child.variables[key];\n for (const [key, value] of Object.entries(env)) {\n if (key.includes(\"\\0\") || key.includes(\"=\") || typeof value !== \"string\" || value.includes(\"\\0\")) throw new TypeError(\"Invalid invoke environment entry\");\n child.variables[key] = value;\n }\n child.exported = new Set(Object.keys(env));\n }\n this.reconcileGetopts(child, state.variables.OPTIND);\n child.depth++;\n child.loopDepth = 0;\n child.functionDepth = 0;\n child.sourceDepth = 0;\n child.locals = [];\n const input = options.stdin === undefined ? undefined : new ShellInput(options.stdin, this.budget, this.signal);\n const stdinIsDefault = options.stdin === undefined ? context.stdinIsDefault : (options.stdinIsDefault ?? false);\n const io = {\n ...context,\n [invocationScope]: scope,\n stdin: input ?? context.stdin,\n ...(stdinIsDefault === undefined ? {} : { stdinIsDefault }),\n stdout: options.stdout ? this.budget.sink(options.stdout, this.signal) : context.stdout,\n stderr: options.stderr ? this.budget.sink(options.stderr, this.signal) : context.stderr,\n };\n const command: Command = {\n kind: \"simple\", redirects: [],\n words: [name, ...carrier.values].map((value) => {\n const part: WordPart = { kind: \"text\", value: shellValueText(value), quoted: true };\n if (typeof value !== \"string\") invokedValues.set(part, value);\n return { offset: 0, parts: [part] };\n }),\n };\n try { return { exitCode: await this.runCommandIsolated(command, child, io) }; }\n finally { stateMonitor(child)?.closeValues(); await input?.close(); }\n }\n\n private async setOptions(context: CommandContext & IO, state: State): Promise<number> {\n const { args, stdout, stderr } = context;\n let index = 0;\n let positionals = false;\n while (index < args.length) {\n this.signal.throwIfAborted();\n const option = args[index]!;\n if (option === \"--\") { index++; positionals = true; break; }\n if (option === \"-\") { index++; positionals = index < args.length; break; }\n if (option[0] !== \"-\" && option[0] !== \"+\") { positionals = true; break; }\n const enabled = option[0] === \"-\";\n let valid = option.length > 1;\n for (let position = 1; valid && position < option.length; position++) {\n const flag = option[position];\n if (flag === \"e\") state.errexit = enabled;\n else if (flag === \"u\") state.nounset = enabled;\n else if (flag === \"o\" && position === option.length - 1) {\n const name = args[index + 1];\n if (name === undefined) {\n const options = [[\"errexit\", !!state.errexit], [\"nounset\", !!state.nounset], [\"pipefail\", state.pipefail]] as const;\n for (const [name, active] of options) await writeText(stdout, enabled ? `${name}\\t${active ? \"on\" : \"off\"}\\n` : `set ${active ? \"-\" : \"+\"}o ${name}\\n`);\n } else {\n if (name === \"errexit\") state.errexit = enabled;\n else if (name === \"nounset\") state.nounset = enabled;\n else if (name === \"pipefail\") state.pipefail = enabled;\n else {\n const unsupported = unsupportedSetOptionNames.has(name);\n await this.diagnostic(context, `set: ${name}: ${unsupported ? \"unsupported shell option\" : \"invalid option name\"}`);\n return unsupported ? 1 : 2;\n }\n index++;\n }\n } else valid = false;\n }\n if (!valid) {\n await writeText(stderr, \"set: unsupported shell option; supported forms are +/- e/u clusters, -- arguments and terminal o with pipefail, errexit or nounset\\n\");\n return 1;\n }\n index++;\n }\n if (positionals) { this.replacePositionals(state, getCommandArguments(context).values.slice(index)); state.positionalSetVersion = (state.positionalSetVersion ?? 0) + 1; }\n return 0;\n }\n\n private async letBuiltin(context: CommandContext & IO, state: State): Promise<number> {\n this.signal.throwIfAborted();\n const { maxExpansionBytes: bytes, maxExpansionFields: fields } = this.budget.limits;\n const admit = (value: unknown): void => {\n if (typeof value !== \"string\" || value.includes(\"\\0\")) throw new CommandFailure(\"let: arguments must be strings without NUL\", 2);\n if (value.length > bytes || Buffer.byteLength(value) > bytes) this.budget.fail(\"maxExpansionBytes\");\n };\n const checkpoint = async (): Promise<void> => {\n this.signal.throwIfAborted();\n await interruptible(new Promise<void>(resolve => setImmediate(resolve)), this.signal);\n this.signal.throwIfAborted();\n };\n const { args } = context;\n if (!Array.isArray(args)) throw new CommandFailure(\"let: argument array required\", 2);\n if (args.length + 1 > fields) this.budget.fail(\"maxExpansionFields\");\n admit(context.command);\n for (let index = 0; index < args.length; index++) {\n this.signal.throwIfAborted();\n admit(args[index]);\n if ((index + 1) % 128 === 0) await checkpoint();\n }\n if (args[0] === \"--help\") throw new CommandFailure(\"let: --help: unsupported option\", 2);\n const offset = args[0] === \"--\" ? 1 : 0;\n if (args.length === offset) throw new CommandFailure(\"let: expression expected\", 1);\n const variables = new Proxy(this.arithmeticVariables(state, context.diagnosticLine), { get: (target, key) => {\n this.signal.throwIfAborted();\n const value: unknown = Reflect.get(target, key);\n if (typeof value === \"string\" && (value.length > bytes || Buffer.byteLength(value) > bytes)) this.budget.fail(\"maxExpansionBytes\");\n return value;\n } });\n let value = 0n;\n for (let index = offset; index < args.length; index++) {\n this.signal.throwIfAborted();\n try { value = evaluateArithmetic(prepareArithmetic(args[index]!), variables); }\n catch (error) {\n this.rethrowArithmeticControl(error);\n throw new Error(`let: ${message(error)}`);\n }\n if ((index - offset + 1) % 128 === 0) await checkpoint();\n }\n this.signal.throwIfAborted();\n return Number(value === 0n);\n }\n\n private async getoptsBuiltin(context: CommandContext & IO, state: State): Promise<number> {\n this.signal.throwIfAborted();\n const { maxExpansionBytes: bytes, maxExpansionFields: fields } = this.budget.limits;\n const admit = (value: unknown): void => {\n if (typeof value !== \"string\") throw new CommandFailure(\"getopts: arguments must be strings without NUL\", 2);\n if (value.length > bytes || Buffer.byteLength(value) > bytes) this.budget.fail(\"maxExpansionBytes\");\n if (value.includes(\"\\0\")) throw new CommandFailure(\"getopts: arguments must be strings without NUL\", 2);\n };\n const checkpoint = async (): Promise<void> => {\n this.signal.throwIfAborted();\n await interruptible(new Promise<void>(resolve => setImmediate(resolve)), this.signal);\n this.signal.throwIfAborted();\n };\n if (!Array.isArray(context.args)) throw new CommandFailure(\"getopts: argument array required\", 2);\n if (context.args.length + 1 > fields) this.budget.fail(\"maxExpansionFields\");\n admit(context.command);\n for (let index = 0; index < context.args.length; index++) {\n this.signal.throwIfAborted();\n admit(context.args[index]);\n if ((index + 1) % 128 === 0) await checkpoint();\n }\n const offset = context.args[0] === \"--\" ? 1 : 0;\n if (!offset && context.args[0]?.startsWith(\"-\") && context.args[0] !== \"-\") {\n await this.diagnostic(context, `getopts: -${context.args[0][1]}: invalid option`);\n await writeText(context.stderr, \"getopts: usage: getopts optstring name [arg ...]\\n\");\n return 2;\n }\n if (context.args.length - offset < 2) {\n await writeText(context.stderr, \"getopts: usage: getopts optstring name [arg ...]\\n\");\n return 2;\n }\n const optstring = context.args[offset]!;\n const name = context.args[offset + 1]!;\n const args = context.args.length > offset + 2 ? context.args.slice(offset + 2) : state.positional;\n if (args.length > fields) this.budget.fail(\"maxExpansionFields\");\n for (let index = 0; index < args.length; index++) {\n this.signal.throwIfAborted();\n admit(args[index]);\n if ((index + 1) % 128 === 0) await checkpoint();\n }\n const maxBytes = saturatedProduct(bytes, saturatedSum(args.length, 1));\n const maxSteps = saturatedSum(saturatedProduct(maxBytes, 2), saturatedSum(args.length, 2));\n state.getopts ??= cloneGetoptsBinding(state);\n let result;\n try {\n result = await scanGetopts(state.getopts.cursor, optstring, args, {\n reportErrors: state.variables.OPTERR === undefined || state.variables.OPTERR === \"\" || decimalIndex(state.variables.OPTERR) !== 0,\n work: { maxArguments: fields, maxBytes, maxSteps, yieldEvery: 128, signal: this.signal, checkpoint },\n });\n } catch (error) {\n this.signal.throwIfAborted();\n if (error instanceof GetoptsError && (error.code === \"NON_ASCII_OPTION\" || error.code === \"INVALID_INPUT\")) throw new CommandFailure(`getopts: ${error.message}`, 2);\n throw error;\n }\n this.signal.throwIfAborted();\n state.getopts.cursor = result.state;\n if (result.diagnostic) {\n const explanation = result.diagnostic.kind === \"unknown-option\" ? \"illegal option\" : \"option requires an argument\";\n await writeText(context.stderr, `${state.arg0 ?? context.scriptName ?? \"shell\"}: ${explanation} -- ${result.diagnostic.option}\\n`);\n }\n this.signal.throwIfAborted();\n this.writeVariable(state, \"OPTIND\", String(result.optind), \"getopts\");\n if (result.argument.kind === \"set\") this.writeVariable(state, \"OPTARG\", result.argument.value, \"getopts\");\n else this.unsetVariable(state, \"OPTARG\", true);\n if (!/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(name)) throw new Error(`getopts: \\`${name}': not a valid identifier`);\n await this.assignVariable(state, name, result.option, \"getopts\");\n return result.status;\n }\n\n private async changeDirectory(context: CommandContext & IO, state: State, args: readonly string[], diagnose?: (error: unknown, diagnostic: string) => void, stackHooks?: { name: string; onCwdPublished(): void; emit(text: string): Promise<void> }): Promise<number> {\n const name = stackHooks?.name ?? \"cd\";\n this.signal.throwIfAborted();\n if (args.length > 1) { await writeText(context.stderr, `${name}: too many arguments\\n`); return 1; }\n const target = args[0] === \"-\" ? state.variables.OLDPWD : (args[0] ?? state.variables.HOME);\n if (target === undefined) { await writeText(context.stderr, `${name}: ${args[0] === \"-\" ? \"OLDPWD\" : \"HOME\"} not set\\n`); return 1; }\n let selected: { path: string; print: boolean };\n try {\n selected = await new CdLookup(this.signal).find(this.fs, state.cwd, target || \".\", state.variables.CDPATH);\n } catch (error) {\n this.signal.throwIfAborted();\n const description = filesystemDiagnostic(error, \"\");\n const text = description ? \"\" : message(error);\n diagnose?.(error, cdDiagnostic(description ? [name, \": \", target, description]\n : stackHooks && text.startsWith(\"cd: \") ? [name, text.slice(2)] : [text]));\n throw error;\n }\n this.signal.throwIfAborted();\n const { path } = selected;\n this.writeVariable(state, \"OLDPWD\", state.cwd);\n state.cwd = path;\n stackHooks?.onCwdPublished();\n this.writeVariable(state, \"PWD\", path);\n state.exported.add(\"PWD\");\n state.exported.add(\"OLDPWD\");\n if (selected.print || args[0] === \"-\") {\n if (stackHooks) await stackHooks.emit(`${path}\\n`);\n else await writeText(context.stdout, `${path}\\n`);\n }\n return 0;\n }\n\n private async directoryStackBuiltin(context: CommandContext & IO, state: State, diagnose?: (error: unknown, diagnostic: string) => void): Promise<number> {\n const { command, args } = context;\n const work = new DirectoryStackWork(command, this.signal, context.stdout);\n const tail = state.directoryStack ?? { entries: [], bytes: 0 };\n const count = tail.entries.length;\n let noCd = false;\n let clear = false;\n let long = false;\n let lines = false;\n let verbose = false;\n let selected: bigint | undefined;\n let target: string | undefined;\n let targetBytes: number | undefined;\n const boundedIndex = (index: bigint): number => {\n if (index < 0n || index > BigInt(count)) work.fail(\"directory stack index out of range\");\n return Number(index);\n };\n const field = async (value: string): Promise<number> => {\n await work.charge(1);\n return work.scan(value, \"argument\");\n };\n const plan = async (length: number, removed: number | undefined, added: string | undefined, addedBytes: number | undefined, entry: (index: number) => string): Promise<NonNullable<State[\"directoryStack\"]>> => {\n if (length > 4096) work.fail(\"directory stack exceeds 4096 entries\");\n const removedBytes = removed === undefined ? 0 : await work.scan(tail.entries[removed]!, \"path\");\n const extraBytes = added === undefined ? 0 : addedBytes ?? await work.scan(added, \"path\");\n const bytes = tail.bytes - removedBytes + extraBytes;\n if (!Number.isSafeInteger(bytes) || bytes < 0 || bytes > 4_194_304) work.fail(\"directory stack exceeds 4194304 UTF-8 bytes\");\n await work.charge(length);\n const entries = new Array<string>(length);\n for (let index = 0; index < length; index++) entries[index] = entry(index);\n return { entries, bytes };\n };\n const publish = async (next: NonNullable<State[\"directoryStack\"]>): Promise<void> => {\n await work.flushWork();\n state.directoryStack = next;\n };\n const cd = async (path: string): Promise<number> => {\n await work.flushWork();\n return this.changeDirectory(context, state, [path], diagnose, {\n name: command,\n onCwdPublished() { state.directoryStackCwdPublication = Symbol(); },\n async emit(text) { await work.emit(text); await work.flushOutput(); },\n });\n };\n const display = async (index?: number): Promise<void> => {\n await work.display(state.cwd, state.directoryStack?.entries ?? [], { long, lines, verbose, ...(index !== undefined ? { index } : {}) }, state.variables.HOME);\n };\n try {\n for (let offset = 0; offset < args.length; offset++) {\n const token = args[offset]!;\n const bytes = await field(token);\n if (token === \"--\") {\n if (command === \"pushd\" && selected === undefined && offset + 1 < args.length) {\n target = args[offset + 1]!;\n targetBytes = await field(target);\n if (!noCd && offset + 2 < args.length) work.fail(\"too many arguments\");\n }\n break;\n }\n if (command === \"dirs\" && [\"-c\", \"-l\", \"-p\", \"-v\"].includes(token)) {\n if (token === \"-c\") clear = true;\n if (token === \"-l\") long = true;\n if (token === \"-p\") lines = true;\n if (token === \"-v\") verbose = true;\n continue;\n }\n if (command !== \"dirs\" && token === \"-n\") { noCd = true; continue; }\n if ((token.startsWith(\"+\") || token.startsWith(\"-\")) && !(command === \"pushd\" && token === \"-\")) {\n const number = await work.number(token);\n selected = token.startsWith(\"+\") ? number : BigInt(count) - number;\n if (command === \"pushd\") boundedIndex(selected);\n continue;\n }\n if (command === \"popd\" && token === \"\") break;\n if (command !== \"pushd\") work.fail(\"invalid directory stack argument\", 2);\n if (selected === undefined) {\n target = token;\n targetBytes = bytes;\n if (!noCd && offset + 1 < args.length) work.fail(\"too many arguments\");\n }\n break;\n }\n if (command === \"dirs\") {\n if (clear) await publish({ entries: [], bytes: 0 });\n else await display(selected === undefined ? undefined : boundedIndex(selected));\n } else if (command === \"pushd\") {\n if (selected !== undefined) {\n const index = boundedIndex(selected);\n if (!(noCd && index === 0)) {\n const cwd = state.cwd;\n const at = (fullIndex: number): string => fullIndex === 0 ? cwd : tail.entries[fullIndex - 1]!;\n const next = await plan(count, index === 0 ? undefined : index - 1, index === 0 ? undefined : cwd, undefined,\n slot => at((index + slot + 1) % (count + 1)));\n await publish(next);\n if (!noCd) {\n const status = await cd(at(index));\n if (status !== 0) return status;\n await display();\n }\n }\n } else if (target !== undefined) {\n const saved = noCd ? target : state.cwd;\n const next = await plan(count + 1, undefined, saved, noCd ? targetBytes : undefined,\n slot => slot === 0 ? saved : tail.entries[slot - 1]!);\n if (!noCd) {\n const status = await cd(target);\n if (status !== 0) return status;\n }\n await publish(next);\n await display();\n } else if (!noCd) {\n if (!count) work.fail(\"no other directory\");\n const cwd = state.cwd;\n const next = await plan(count, 0, cwd, undefined, slot => slot === 0 ? cwd : tail.entries[slot]!);\n await publish(next);\n const status = await cd(tail.entries[0]!);\n if (status !== 0) return status;\n await display();\n }\n } else {\n const index = boundedIndex(selected ?? 0n);\n if (!count) work.fail(\"directory stack empty\");\n const removed = Math.max(0, index - 1);\n const next = await plan(count - 1, removed, undefined, undefined,\n slot => tail.entries[slot < removed ? slot : slot + 1]!);\n if (index === 0 && !noCd) {\n const status = await cd(tail.entries[0]!);\n if (status !== 0) return status;\n }\n await publish(next);\n await display();\n }\n return 0;\n } finally {\n await work.flushWork();\n }\n }\n\n private async shoptBuiltin(context: CommandContext & IO, state: State): Promise<number> {\n let print = false;\n let quiet = false;\n let set = false;\n let unset = false;\n let index = 0;\n for (; index < context.args.length; index++) {\n this.signal.throwIfAborted();\n const option = context.args[index]!;\n if (option === \"--\") { index++; break; }\n if (!option.startsWith(\"-\") || option === \"-\") break;\n for (const flag of option.slice(1)) {\n this.signal.throwIfAborted();\n if (flag === \"p\") print = true;\n else if (flag === \"q\") quiet = true;\n else if (flag === \"s\") set = true;\n else if (flag === \"u\") unset = true;\n else {\n await this.diagnostic(context, `shopt: ${option.startsWith(\"--\") ? option : `-${flag}`}: unsupported option`);\n await writeText(context.stderr, \"shopt: usage: shopt [-pqsu] [--] [dotglob ...]\\n\");\n return 2;\n }\n }\n }\n if (set && unset) {\n await this.diagnostic(context, \"shopt: cannot set and unset shell options simultaneously\");\n return 1;\n }\n const emit = async (): Promise<void> => {\n if (!quiet) await writeText(context.stdout, print ? `shopt -${state.dotglob ? \"s\" : \"u\"} dotglob\\n` : `dotglob \\t${state.dotglob ? \"on\" : \"off\"}\\n`);\n };\n if (index === context.args.length) {\n if ((!set || state.dotglob) && (!unset || !state.dotglob)) await emit();\n return 0;\n }\n let status = 0;\n for (; index < context.args.length; index++) {\n this.signal.throwIfAborted();\n const name = context.args[index]!;\n if (name !== \"dotglob\") {\n await this.diagnostic(context, `shopt: ${name}: unsupported shell option name (only dotglob is supported)`);\n status = 1;\n } else if (set || unset) state.dotglob = set;\n else {\n await emit();\n if (!state.dotglob) status = 1;\n }\n }\n return status;\n }\n\n async builtin(context: CommandContext & IO, state: State, assignments: Map<string, SavedVariable>, diagnose?: (error: unknown, diagnostic: string) => void, suppressSpecial = false): Promise<number | undefined> {\n const { command, args, stdout, stderr } = context;\n if (command === \":\" || command === \"true\") return 0;\n if (command === \"false\") return 1;\n if (command === \"shopt\") return this.shoptBuiltin(context, state);\n if (command === \"let\") return this.letBuiltin(context, state);\n if (command === \"getopts\") return this.getoptsBuiltin(context, state);\n if (command === \"pushd\" || command === \"dirs\" || command === \"popd\") return this.directoryStackBuiltin(context, state, diagnose);\n if (command === \"pwd\") {\n if (args.some((arg) => arg !== \"-L\" && arg !== \"-P\")) { await writeText(stderr, \"pwd: invalid option\\n\"); return 2; }\n const path = args.at(-1) === \"-P\" ? await this.fs.realpath(state.cwd, { signal: this.signal }) : state.cwd;\n await writeText(stdout, `${path}\\n`);\n return 0;\n }\n if (command === \"cd\") return this.changeDirectory(context, state, args, diagnose);\n if (command === \"set\") {\n if (state.profile === \"bash\" && args.length) return this.setOptions(context, state);\n let index = 0;\n let positionals = false;\n while (index < args.length) {\n const option = args[index]!;\n if (option === \"--\") { index++; positionals = true; break; }\n if (option === \"-\") { index++; positionals = index < args.length; break; }\n const flags = /^[-+]([eu]*o|[eu]+)$/u.exec(option)?.[1];\n const named = flags?.endsWith(\"o\");\n const name = named ? args[index + 1] : undefined;\n if (flags && (!named || name === \"pipefail\" || name === \"errexit\" || name === \"nounset\")) {\n const enabled = option.startsWith(\"-\");\n for (const flag of flags) {\n if (flag === \"e\" || flag === \"o\" && name === \"errexit\") state.errexit = enabled;\n else if (flag === \"u\" || flag === \"o\" && name === \"nounset\") state.nounset = enabled;\n else if (flag === \"o\" && name === \"pipefail\") state.pipefail = enabled;\n }\n index += named ? 2 : 1;\n continue;\n }\n if (/^[+-]/u.test(option)) {\n await writeText(stderr, \"set: unsupported shell option; supported forms are +/- e/u clusters, -- arguments and terminal o with pipefail, errexit or nounset\\n\");\n if (state.profile === \"sh\" && suppressSpecial) return 2;\n throw new Flow(\"exit\", 2);\n }\n positionals = true;\n break;\n }\n if (positionals) { this.replacePositionals(state, getCommandArguments(context).values.slice(index)); state.positionalSetVersion = (state.positionalSetVersion ?? 0) + 1; }\n if (args.length) return 0;\n await writeText(stderr, \"set: supported forms are +/- e/u clusters, -- arguments and terminal o with pipefail, errexit or nounset\\n\");\n return 2;\n }\n if (command === \"shift\") {\n const count = args[0] === undefined ? 1 : Number(args[0]);\n if (args.length > 1 || !Number.isSafeInteger(count) || count < 0 || count > state.positional.length) return 1;\n this.replacePositionals(state, this.positionalValues(state).slice(count));\n return 0;\n }\n if (command === \"export\" || command === \"local\" || command === \"readonly\") {\n const declarationArgs = [...args];\n let indexedLocal = false;\n if (command === \"local\") {\n const options = localDeclarationOptions(declarationArgs, this.signal);\n if (options.error !== undefined) {\n await writeText(stderr, `local: ${options.error}: unsupported option\\n`);\n return 2;\n }\n indexedLocal = options.indexed;\n declarationArgs.splice(0, options.offset);\n if (indexedLocal && declarationArgs.length === 0) {\n await writeText(stderr, \"local: -a requires a variable name\\n\");\n return 2;\n }\n }\n if (command === \"readonly\") {\n while (declarationArgs[0]?.startsWith(\"-\")) {\n const option = declarationArgs.shift();\n if (option === \"--\") break;\n if (option !== \"-p\") { await writeText(stderr, `readonly: ${option}: unsupported option\\n`); return 2; }\n }\n }\n const locals = state.locals.at(-1);\n if (command === \"local\" && !locals) { await writeText(stderr, \"local: not in a function\\n\"); return 1; }\n let status = 0;\n if (!declarationArgs.length) {\n const names = command === \"readonly\" ? state.readonlyVariables ?? [] : state.exported;\n for (const name of names) if (arrayStore(state)?.get(name)) { await this.diagnostic(context, \"indexed array: listing indexed bindings is unsupported\"); return 2; }\n const prefix = state.profile === \"sh\" ? command : command === \"readonly\" ? \"declare -r\" : \"declare -x\";\n for (const name of [...names].sort()) await writeText(stdout, `${prefix} ${name}=${JSON.stringify(state.variables[name] ?? \"\")}\\n`);\n }\n const declarationValues = getCommandArguments(context).values;\n const declarationOffset = args.length - declarationArgs.length;\n for (let declarationIndex = 0; declarationIndex < declarationArgs.length; declarationIndex++) {\n const arg = declarationArgs[declarationIndex]!;\n const match = /^([a-zA-Z_][a-zA-Z_0-9]*)(?:=(.*))?$/su.exec(arg);\n if (!match) { await this.diagnostic(context, `${command}: \\`${arg}': not a valid identifier`); status = 1; continue; }\n const name = match[1]!;\n if (state.readonlyVariables?.has(name) && (match[2] !== undefined || command === \"local\")) {\n await this.diagnostic(context, `${name}: readonly variable`); status = 1; continue;\n }\n if (arrayStore(state)?.get(name) && command === \"export\") {\n await this.diagnostic(context, \"indexed array: indexed binding cannot be exported\"); status = 1; continue;\n }\n if (command === \"local\" && indexedLocal) {\n if (controlNames.has(name)) throw new ArrayFailure(\"control binding cannot be indexed\");\n if (state.exported.has(name)) throw new ArrayFailure(\"exported binding cannot be indexed\");\n const existingLocal = locals!.get(name);\n const saved = existingLocal ? undefined : assignments.get(name) ?? saveVariable(state, name);\n let operation: ArrayOwner | undefined;\n let holding: ReturnType<ArrayOwner[\"hold\"]> | undefined;\n let shadow: IndexedBinding | undefined;\n let preparedExisting = false;\n let preparedSaved = false;\n let published = false;\n let primaryPresent = false;\n let primary: unknown;\n try {\n if (existingLocal && !typedSavedVariables.has(existingLocal)) {\n preparedExisting = true;\n await this.prepareVariable(state, name, existingLocal, true);\n }\n if (saved && !typedSavedVariables.has(saved)) {\n preparedSaved = true;\n await this.prepareVariable(state, name, saved);\n }\n const store = requireArrays(state);\n operation = ArrayOwner.create(store.owner.ledger, store.owner);\n holding = store.owner.hold();\n const watch = await store.watch(name, operation, this.signal);\n const tickets = operation.reserve({ generation: true, version: true, epoch: true, work: 8 });\n const prepared = await store.prepareName(name, operation, this.signal);\n const current = store.get(name);\n shadow = !saved && current ? await current.copy(this.signal) : IndexedBinding.create(store.owner);\n const value = match[2] ?? (!saved && !current && Object.hasOwn(state.variables, name) ? state.variables[name] : undefined);\n if (value !== undefined) {\n const token = await textToken(shadow.owner, value, this.signal);\n try { shadow.insert(0, token); } catch (error) { token.release(); throw error; }\n }\n this.signal.throwIfAborted();\n if (state.readonlyVariables?.has(name)) throw new ArrayFailure(\"readonly binding\");\n if (!watch.valid()) throw new ArrayFailure(\"stale binding\");\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(tickets, name, () => {\n if (saved) locals!.set(name, saved);\n delete state.variables[name];\n released = store.publish(name, shadow!, tickets, prepared);\n });\n shadow = undefined;\n published = true;\n watch.close();\n await released;\n assignments.delete(name);\n } catch (error) {\n primaryPresent = true;\n primary = error;\n } finally {\n const cleanup = async (action: () => void | Promise<void>): Promise<void> => {\n try { await action(); }\n catch (error) {\n if (primaryPresent) context[invocationScope].failures.push(error);\n else { primaryPresent = true; primary = error; }\n }\n };\n if (preparedSaved && saved && !locals!.has(name)) await cleanup(() => this.discardVariable(saved));\n if (preparedExisting && existingLocal && !published) await cleanup(() => this.discardVariable(existingLocal));\n await cleanup(() => shadow?.release());\n await cleanup(() => operation?.close());\n await cleanup(() => holding?.release());\n }\n if (primaryPresent) throw primary;\n continue;\n }\n if (command === \"local\" && !locals!.has(name)) {\n const saved = assignments.get(name) ?? saveVariable(state, name);\n if (name === \"PIPESTATUS\" && arrayStore(state)?.get(name)) {\n await this.prepareVariable(state, name, saved);\n const store = requireArrays(state);\n const operation = ArrayOwner.create(store.owner.ledger, store.owner);\n const holding = store.owner.hold();\n try {\n const tickets = operation.reserve({ generation: true, version: true, epoch: true, work: 8 });\n const value = match[2] ?? \"\";\n await textToken(operation, value, this.signal);\n this.signal.throwIfAborted();\n if (state.readonlyVariables?.has(name)) throw new ArrayFailure(\"readonly binding\");\n if (!typedSavedVariables.get(saved)!.watch.valid()) throw new ArrayFailure(\"stale binding\");\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(tickets, name, () => {\n locals!.set(name, saved);\n released = store.remove(name, tickets);\n state.variables[name] = value;\n });\n await released;\n } finally { try { await operation.close(); } finally { holding.release(); } }\n assignments.delete(name);\n continue;\n }\n if (arrayStore(state)?.get(name)) {\n await this.prepareVariable(state, name, saved);\n const store = requireArrays(state);\n const operation = ArrayOwner.create(store.owner.ledger, store.owner);\n const holding = store.owner.hold();\n let shadow: IndexedBinding | undefined;\n try {\n const tickets = operation.reserve({ generation: true, version: true, epoch: true, work: 8 });\n shadow = IndexedBinding.create(store.owner);\n if (match[2] !== undefined) {\n const token = await textToken(shadow.owner, match[2], this.signal);\n try { shadow.insert(0, token); } catch (error) { token.release(); throw error; }\n }\n this.signal.throwIfAborted();\n if (state.readonlyVariables?.has(name)) throw new ArrayFailure(\"readonly binding\");\n if (!typedSavedVariables.get(saved)!.watch.valid()) throw new ArrayFailure(\"stale binding\");\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(tickets, name, () => {\n locals!.set(name, saved);\n released = store.publish(name, shadow!, tickets);\n });\n shadow = undefined;\n await released;\n } finally { try { await shadow?.release(); await operation.close(); } finally { holding.release(); } }\n assignments.delete(name);\n continue;\n }\n if (guestArrays(state)) await this.prepareVariable(state, name, saved);\n locals!.set(name, saved);\n if (!assignments.has(name) && match[2] === undefined) {\n if (name === \"PIPESTATUS\") state.variables[name] = \"\";\n else delete state.variables[name];\n }\n if (name === \"OPTIND\") {\n state.getopts ??= cloneGetoptsBinding(state);\n state.getopts.integer = false;\n }\n }\n if (match[2] !== undefined && arrayStore(state)?.get(name)) {\n await this.arrayZero(state, name, async () => match[2]!, false, command === \"readonly\");\n assignments.delete(name);\n continue;\n }\n if (match[2] !== undefined) {\n const original = declarationValues[declarationOffset + declarationIndex]!;\n const value = typeof original === \"string\" ? match[2] : shellValueFromBytes(shellValueBytes(original, context[valueScope]).subarray(name.length + 1), context[valueScope]);\n this.writeVariable(state, name, value);\n }\n else if (command === \"local\" && name === \"OPTIND\") this.syncGetopts(state);\n if (command === \"export\") state.exported.add(name);\n if (command === \"readonly\") { state.readonlyVariables ??= new Set(); state.readonlyVariables.add(name); }\n const previous = assignments.get(name);\n if (previous && locals?.get(name) !== previous) previous.heldValue?.release();\n assignments.delete(name);\n }\n return status;\n }\n if (command === \"unset\") {\n let status = 0;\n for (const name of args) {\n const selected = /^([a-zA-Z_][a-zA-Z_0-9]*)\\[(.*)\\]$/su.exec(name);\n if (selected) {\n const base = selected[1]!;\n const selector = selected[2]!;\n if (state.readonlyVariables?.has(base)) { await this.diagnostic(context, \"indexed array: readonly binding\"); status = 1; continue; }\n if (selector === \"@\" || selector === \"*\") await this.unsetIndexed(state, base, \"members\");\n else {\n let index: number | undefined;\n try { index = numericIndex(literalIndex(selector, 0)); }\n catch { await this.diagnostic(context, \"indexed array: unsupported subscript\"); status = 2; continue; }\n if (index === undefined) { await this.diagnostic(context, \"indexed array: index outside 0..2147483647\"); status = 1; continue; }\n await this.unsetIndexed(state, base, index);\n }\n continue;\n }\n if (!/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(name)) { await writeText(stderr, `unset: ${name}: not a valid identifier\\n`); status = 1; continue; }\n if (state.readonlyVariables?.has(name)) { await this.diagnostic(context, `unset: ${name}: cannot unset: readonly variable`); status = 1; continue; }\n if (name === \"PATH\") state.pathUnset = true;\n if (arrayStore(state)?.get(name)) await this.unsetIndexed(state, name);\n else this.unsetVariable(state, name);\n if (state.profile === \"sh\") assignments.delete(name);\n }\n return status;\n }\n if (command === \"read\") {\n const names = [...args];\n let raw = false;\n let count: number | undefined;\n let exact = false;\n let delimiter: number | undefined;\n let invalid = false;\n while (names[0]?.startsWith(\"-\") && names[0] !== \"--\" && names[0] !== \"-\") {\n const option = names.shift()!;\n for (let index = 1; index < option.length; index++) {\n const flag = option[index];\n if (flag === \"r\") { raw = true; continue; }\n if (flag !== \"n\" && flag !== \"N\" && flag !== \"d\") { invalid = true; break; }\n if (flag === \"N\") exact = true;\n const value = option.slice(index + 1) || names.shift();\n if (value === undefined) invalid = true;\n else if (flag === \"d\") delimiter = new TextEncoder().encode(value)[0] ?? 0;\n else if (exact && (!/^[ \\t]*[+-]?\\d+[ \\t]*$/u.test(value) || !Number.isSafeInteger(Number(value)) || Number(value) < 0)) {\n const diagnosticIO: IO = context;\n await writeText(stderr, `${diagnosticIO.scriptName ?? \"shell\"}: line ${diagnosticIO.diagnosticLine ?? 1}: read: ${value}: invalid ${/^[+-]?0[xX]/u.test(value) ? \"hex \" : \"\"}number\\n`);\n return 1;\n }\n else if (!exact && (!/^\\d+$/u.test(value) || !Number.isSafeInteger(Number(value)))) invalid = true;\n else count = Number(value);\n break;\n }\n if (invalid) break;\n }\n if (names[0] === \"--\") names.shift();\n const invalidName = names.find(name => !/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(name));\n if (exact && !invalid && invalidName !== undefined) {\n const diagnosticIO: IO = context;\n await writeText(stderr, `${diagnosticIO.scriptName ?? \"shell\"}: line ${diagnosticIO.diagnosticLine ?? 1}: read: \\`${invalidName}': not a valid identifier\\n`);\n return 1;\n }\n if (invalid || names.some((name) => !/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(name))) {\n await writeText(stderr, \"read: invalid variable name or unsupported option\\n\");\n return 2;\n }\n const input = context.stdin instanceof ShellInput ? context.stdin : new ShellInput(context.stdin, this.budget, this.signal);\n const line = count === 0 && context.stdin === closedSource ? { value: \"\", escaped: new Set<number>(), terminated: false }\n : await input.line(raw, count === undefined && delimiter === undefined ? undefined : {\n ...(count === undefined ? {} : { count }), ...(delimiter === undefined ? {} : { delimiter }), byteCount: byteLocale(state.variables), exact,\n });\n if (!names.length) {\n if (state.readonlyVariables?.has(\"REPLY\")) { await this.diagnostic(context, \"REPLY: readonly variable\"); return 1; }\n this.writeVariable(state, \"REPLY\", line.value);\n }\n else {\n const separators = exact ? \"\" : state.variables.IFS ?? \" \\t\\n\";\n const characters = Array.from(line.value);\n const separator = (index: number): boolean => index < characters.length && !line.escaped.has(index) && separators.includes(characters[index]!);\n const whitespace = (index: number): boolean => separator(index) && /[ \\t\\n]/u.test(characters[index]!);\n let end = characters.length;\n while (end > 0 && whitespace(end - 1)) end--;\n let position = 0;\n while (position < end && whitespace(position)) position++;\n const fields: { start: number; end: number }[] = [];\n while (position < end) {\n const start = position;\n while (position < end && !separator(position)) position++;\n fields.push({ start, end: position });\n while (position < end && whitespace(position)) position++;\n if (position < end && separator(position)) position++;\n while (position < end && whitespace(position)) position++;\n }\n for (let index = 0; index < names.length; index++) {\n if (state.readonlyVariables?.has(names[index]!)) {\n await this.diagnostic(context, `${names[index]}: readonly variable`);\n return index === names.length - 1 ? 1 : 2;\n }\n const field = fields[index];\n await this.assignVariable(state, names[index]!, field ? characters.slice(field.start, index === names.length - 1 && fields.length > names.length ? end : field.end).join(\"\") : \"\");\n }\n }\n return line.terminated ? 0 : 1;\n }\n if (command === \"exit\" || command === \"return\") {\n if (command === \"return\" && state.functionDepth === 0 && !state.sourceDepth) { await writeText(stderr, \"return: not in a function\\n\"); return 1; }\n if (args.length > 1) { await writeText(stderr, `${command}: too many arguments\\n`); return 1; }\n if (args[0] !== undefined && !/^[+-]?\\d+$/u.test(args[0])) {\n await writeText(stderr, `${command}: ${args[0]}: numeric argument required\\n`);\n throw completedExit(2, command);\n }\n const status = args[0] === undefined ? state.status : Number((BigInt(args[0]) % 256n + 256n) % 256n);\n throw completedExit(status, command);\n }\n if (command === \"break\" || command === \"continue\") {\n const levels = args[0] === undefined ? 1 : Number(args[0]);\n if (args.length > 1 || !Number.isSafeInteger(levels) || levels < 1) { await writeText(stderr, `${command}: invalid loop count\\n`); return 1; }\n if (!state.loopDepth) { await writeText(stderr, `${command}: only meaningful in a loop\\n`); return 0; }\n throw completedExit(0, command, Math.min(levels, state.loopDepth));\n }\n return undefined;\n }\n\n async words(words: readonly Word[], state: State, io: IO, declaration = false): Promise<string[]> {\n return (await this.valueWords(words, state, io, declaration)).map(shellValueText);\n }\n\n private async valueWords(words: readonly Word[], state: State, io: IO, declaration = false): Promise<ShellValue[]> {\n const fields: ShellValue[] = [];\n for (const word of words) {\n fields.push(...await this.valueWord(word, state, io, !(declaration && this.assignment(word))));\n if (fields.length > this.budget.limits.maxExpansionFields) this.budget.fail(\"maxExpansionFields\");\n }\n return fields;\n }\n\n async part(part: Exclude<WordPart, { kind: \"text\" }>, state: State, io: IO, hereString = false): Promise<string> {\n return shellValueText(await this.valuePart(part, state, io, hereString));\n }\n\n private async valuePart(part: Exclude<WordPart, { kind: \"text\" }>, state: State, io: IO, hereString = false): Promise<ShellValue> {\n const binding = part.kind === \"variable\" ? arrayStore(state)?.get(part.name) : undefined;\n const holding = binding ? requireArrays(state).owner.hold() : undefined;\n const selector = getArraySelector(part);\n const index = selector?.kind === \"element\" ? numericIndex(selector.index) : 0;\n const token = index === undefined || selector?.kind === \"members\" ? undefined : binding?.values.get(index)?.text;\n token?.retain();\n try {\n const value = await this.partValue(part, state, io, hereString);\n if (binding) await textToken(requireArrays(state).owner, shellValueText(value), this.signal);\n return value;\n } finally { token?.release(); holding?.release(); }\n }\n\n private async partValue(part: Exclude<WordPart, { kind: \"text\" }>, state: State, io: IO, hereString: boolean): Promise<ShellValue> {\n if (part.kind === \"failed-substitution\") {\n if (state.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n await writeText(io.stderr, part.diagnostic);\n state.status = state.substitutionStatus = 2;\n return \"\";\n }\n if (part.kind === \"arithmetic\") {\n try {\n return String(evaluatePositionalArithmetic(part.expression, {\n positional: state.positional, arg0: state.arg0 ?? \"virtual-bash\", owner: arrayStore(state)?.owner,\n maximumBytes: this.budget.limits.maxExpansionBytes,\n checkpoint: () => this.signal.throwIfAborted(),\n requireParameter: (name, value) => this.requireParameter(value, name, state, io, part.line),\n limit: () => this.budget.fail(\"maxExpansionBytes\"),\n }, (prepared) => evaluateArithmetic(prepared, this.arithmeticVariables(state, io.diagnosticLine ?? part.line))));\n }\n catch (error) { this.rethrowArithmeticControl(error); throw new ExpansionFailure(message(error), io.diagnosticLine ?? part.line); }\n }\n if (part.kind === \"substitution\") {\n if (state.depth >= this.budget.limits.maxSubstitutionDepth) this.budget.fail(\"maxSubstitutionDepth\");\n const capture = new Capture();\n const child = await cloneState(state, this.signal);\n child.isolated = true;\n if (state.profile !== \"sh\") child.errexit = false;\n for (const [name, value] of state.redirectAssignments ?? []) {\n this.writeVariable(child, name, value);\n child.exported.add(name);\n }\n delete child.redirectAssignments;\n child.depth++;\n child.loopDepth = 0;\n const pipeline = part.script.lists.length === 1 && part.script.lists[0]!.pipelines.length === 1 ? part.script.lists[0]!.pipelines[0] : undefined;\n const command = pipeline && !pipeline.negate && pipeline.commands.length === 1 ? pipeline.commands[0] : undefined;\n const fileShortcut = command?.kind === \"simple\" && command.words.length === 0 && command.redirects.length === 1 && command.redirects[0]!.operator === \"<\";\n const warningLine = io.substitutionDiagnosticLine ?? io.diagnosticLine ?? part.line;\n const substitutionDiagnosticLines = new Map<Command, number>();\n for (const [command, line] of part.script.printedLines ?? []) substitutionDiagnosticLines.set(command,\n part.sourceLine === undefined ? warningLine + (command.line ?? part.line) - part.line : warningLine + line - 1);\n const captureIO = { ...isolateIO(io), substitutionDiagnosticLines, diagnosticOffset: (io.diagnosticLine ?? part.line) - (part.sourceLine ?? part.line), stdout: this.budget.sink(capture, this.signal) };\n try { state.substitutionStatus = fileShortcut ? await this.runCommandIsolated(command, child, captureIO, true) : await this.run(part.script, child, captureIO); }\n finally { stateMonitor(child)?.closeValues(); }\n state.status = state.substitutionStatus;\n const bytes = capture.bytes();\n if (bytes.includes(0)) await writeText(io.stderr, `${io.scriptName ?? \"shell\"}: line ${warningLine}: warning: command substitution: ignored null byte in input\\n`);\n let length = 0;\n for (const byte of bytes) if (byte !== 0) bytes[length++] = byte;\n while (length && bytes[length - 1] === 10) length--;\n const sanitized = bytes.subarray(0, length);\n try { return new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(sanitized); }\n catch (error) {\n if (!(error instanceof TypeError) || (error as NodeJS.ErrnoException).code !== \"ERR_ENCODING_INVALID_ENCODED_DATA\") throw error;\n return shellValueFromBytes(sanitized, io[valueScope]);\n }\n }\n const selector = getArraySelector(part);\n if (selector) {\n const store = requireArrays(state);\n const binding = store.get(part.name);\n if (selector.kind === \"element\") {\n const index = numericIndex(selector.index);\n if (index === undefined) throw new ArrayFailure(\"index outside 0..2147483647\");\n const value = binding ? binding.get(index) : index === 0 ? state.variables[part.name] : undefined;\n this.requireParameter(value, `${part.name}[${selector.index}]`, state, io, part.line);\n return part.length ? String(Array.from(value ?? \"\").length) : value ?? \"\";\n }\n if (part.length) return String(binding?.values.size ?? (state.variables[part.name] === undefined ? 0 : 1));\n const values = await this.arrayMembers(part.name, state);\n return this.arrayJoin(store.owner, values, Array.from(state.variables.IFS ?? \" \")[0] ?? \"\");\n }\n let value = part.name === \"?\" ? String(state.status)\n : part.name === \"-\" ? `${state.errexit ? \"e\" : \"\"}${state.nounset ? \"u\" : \"\"}`\n : part.name === \"#\" ? String(state.positional.length)\n : part.name === \"@\" || part.name === \"*\" ? state.positional.join(hereString && (part.name === \"@\" || !part.quoted) ? \" \" : Array.from(state.variables.IFS ?? \" \")[0] ?? \"\")\n : /^0+$/u.test(part.name) ? state.arg0 ?? \"virtual-bash\"\n : /^\\d+$/u.test(part.name) ? state.positional[Number(part.name) - 1]\n : this.variable(state, part.name);\n let retained: ShellValue | undefined = value;\n if (!part.length && value !== undefined) {\n if (/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(part.name) && !arrayStore(state)?.get(part.name)) retained = stateMonitor(state)?.values.get(part.name, value) ?? value;\n else if (/^[1-9][0-9]*$/u.test(part.name)) retained = stateMonitor(state)?.positionals.get(String(Number(part.name) - 1), value) ?? value;\n else if (part.name === \"@\" || part.name === \"*\") {\n const separator = hereString && (part.name === \"@\" || !part.quoted) ? \" \" : Array.from(state.variables.IFS ?? \" \")[0] ?? \"\";\n const values = this.positionalValues(state);\n retained = concatShellValues(values.flatMap((entry, index) => index ? [separator, entry] : [entry]), io[valueScope]);\n }\n }\n if (part.substring) {\n this.requireParameter(value, part.name, state, io, part.line);\n return this.substring(part, value, state, io);\n }\n if (part.operator) {\n if ([\"#\", \"##\", \"%\", \"%%\"].includes(part.operator) || part.operator.startsWith(\"/\")) {\n this.requireParameter(value, part.name, state, io, part.line);\n return this.parameterPattern(part, value ?? \"\", state, io, hereString);\n }\n const missing = value === undefined || (part.operator.startsWith(\":\") && value === \"\");\n const operator = part.operator.at(-1)!;\n if ((operator === \"+\" && !missing) || (operator !== \"+\" && missing)) {\n let alternate: string;\n if (operator === \"=\" && arrayStore(state)?.get(part.name)) {\n alternate = \"\";\n await this.arrayZero(state, part.name, async () => {\n alternate = await this.arrayJoin(requireArrays(state).owner, await this.word(part.alternate!, state, io, false, false, hereString), \"\");\n return alternate;\n });\n value = alternate;\n return part.length ? String(Array.from(value).length) : value;\n }\n retained = concatShellValues(await this.valueWord(part.alternate!, state, io, false, false, hereString), io[valueScope]);\n alternate = shellValueText(retained);\n if (operator === \"?\") throw new ParameterExpansionFailure(`${part.name}: ${alternate || (part.operator.startsWith(\":\") ? \"parameter null or not set\" : \"parameter not set\")}`, io.diagnosticLine ?? part.line);\n if (operator === \"=\") {\n if (!/^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(part.name)) throw new Error(\"Cannot assign special parameter\");\n this.writeVariable(state, part.name, retained);\n }\n value = alternate;\n } else if (operator === \"+\") { value = \"\"; retained = \"\"; }\n } else this.requireParameter(value, part.name, state, io, part.line);\n return part.length ? String(Array.from(value ?? \"\").length) : retained ?? \"\";\n }\n\n async substring(part: Extract<WordPart, { kind: \"variable\" }>, value: string | undefined, state: State, io: IO): Promise<string> {\n const owner = arrayStore(state)?.get(part.name) ? requireArrays(state).owner : undefined;\n const expression = part.substring!;\n const line = io.diagnosticLine ?? part.line;\n if (!expression.offset.parts.length && !expression.length) throw new ExpansionFailure(`${expression.source}: bad substitution`, line);\n if (value === undefined) return \"\";\n const limit = this.budget.limits.maxExpansionBytes;\n if (Buffer.byteLength(value) > limit) this.budget.fail(\"maxExpansionBytes\");\n const variables = new Proxy(this.arithmeticVariables(state, line), { get: (target, key) => {\n this.signal.throwIfAborted();\n const value: unknown = Reflect.get(target, key);\n if (typeof value === \"string\" && Buffer.byteLength(value) > limit) this.budget.fail(\"maxExpansionBytes\");\n return value;\n } });\n const arithmetic = async (word: Word): Promise<{ value: bigint; source: string }> => {\n let source = \"\";\n let bytes = 0;\n for (const entry of word.parts) {\n this.signal.throwIfAborted();\n const text = entry.kind === \"text\" ? entry.value : await this.part(entry, state, io);\n bytes += Buffer.byteLength(text);\n if (bytes > limit) this.budget.fail(\"maxExpansionBytes\");\n owner?.reserve({ metadata: 32, payload: bytes, work: text.length + 4 });\n source += text;\n }\n this.signal.throwIfAborted();\n try { return { value: evaluateArithmetic(prepareArithmetic(source), variables), source }; }\n catch (error) {\n this.rethrowArithmeticControl(error);\n throw new ExpansionFailure(`${part.name}: ${message(error)}`, line);\n }\n };\n const offsetExpression = await arithmetic(expression.offset);\n owner?.reserve({ metadata: 128 + value.length * 64, payload: Buffer.byteLength(value), allocatedSlots: value.length, work: value.length + 8 });\n const characters = byteLocale(state.variables) ? undefined : Array.from(value);\n const bytes = characters ? undefined : Buffer.from(value);\n const size = BigInt(characters?.length ?? bytes!.byteLength);\n const offset = offsetExpression.value < 0n ? size + offsetExpression.value : offsetExpression.value;\n if (offset < 0n || offset > size) return \"\";\n let end = size;\n if (expression.length) {\n const length = await arithmetic(expression.length);\n end = length.value < 0n ? size + length.value : offset + length.value;\n if (end < offset) throw new ExpansionFailure(`${length.source}: substring expression < 0`, line);\n if (end > size) end = size;\n }\n this.signal.throwIfAborted();\n owner?.reserve({ metadata: 96 + value.length * 32, payload: Buffer.byteLength(value) * 3, allocatedSlots: value.length, work: value.length + 7 });\n if (characters) return characters.slice(Number(offset), Number(end)).join(\"\");\n try { return new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(bytes!.subarray(Number(offset), Number(end))); }\n catch { throw new ExpansionFailure(\"substring expansion splits a UTF-8 character in a byte locale\", line); }\n }\n\n async parameterPattern(part: Extract<WordPart, { kind: \"variable\" }>, text: string, state: State, io: IO, hereString: boolean): Promise<string> {\n const owner = arrayStore(state)?.get(part.name) ? requireArrays(state).owner : undefined;\n const limit = this.budget.limits.maxExpansionBytes;\n if (Buffer.byteLength(text) > limit) this.budget.fail(\"maxExpansionBytes\");\n const patternFields = await this.word(part.alternate!, state, io, false, true, hereString);\n const pattern = owner ? await this.arrayJoin(owner, patternFields, \"\") : patternFields.join(\"\");\n owner?.reserve({ metadata: 128 + text.length * 64, payload: Buffer.byteLength(text), allocatedSlots: text.length, work: text.length + 8 });\n const characters = Array.from(text);\n const slice = (start: number, end = characters.length): string => {\n owner?.reserve({ metadata: 96 + (end - start) * 32, payload: (end - start) * 4, allocatedSlots: end - start, work: end - start + 7 });\n return characters.slice(start, end).join(\"\");\n };\n const work = { remaining: Math.min(Number.MAX_SAFE_INTEGER, limit * 4 + 1024), signal: this.signal, exhausted: (): never => this.budget.fail(\"maxExpansionBytes\") };\n const matches = await compilePattern(pattern, work);\n let attempts = 0;\n const match = async (start: number, end: number): Promise<boolean> => {\n work.remaining -= end - start + 1;\n if (work.remaining < 0) work.exhausted();\n if (++attempts % 256 === 0) await new Promise<void>(resolve => setImmediate(resolve));\n this.signal.throwIfAborted();\n if (owner) await owner.ledger.checkpoint(this.signal, end - start + 1);\n return matches(slice(start, end));\n };\n const operator = part.operator!;\n if (!operator.startsWith(\"/\")) {\n const longest = operator.length === 2;\n for (let length = longest ? characters.length : 0; longest ? length >= 0 : length <= characters.length; length += longest ? -1 : 1) {\n const prefix = operator.startsWith(\"#\");\n if (await match(prefix ? 0 : characters.length - length, prefix ? length : characters.length)) return prefix ? slice(length) : slice(0, characters.length - length);\n }\n return text;\n }\n const replacements: { value: string; quoted: boolean }[] = [];\n owner?.reserve({ metadata: 64, work: 3 });\n let replacementBytes = 0;\n for (const [index, entry] of (part.replacement?.parts ?? []).entries()) {\n let value = entry.kind === \"text\" ? entry.value : await this.part(entry, state, io, hereString);\n if (index === 0 && !entry.quoted && /^~(?:\\/|$)/u.test(value)) value = (state.variables.HOME ?? \"~\") + value.slice(1);\n replacementBytes += Buffer.byteLength(value);\n if (replacementBytes > limit) this.budget.fail(\"maxExpansionBytes\");\n owner?.reserve({ metadata: 64, payload: Buffer.byteLength(value), allocatedSlots: 1, work: 5 });\n replacements.push({ value, quoted: entry.quoted });\n }\n if (!pattern && operator !== \"/#\" && operator !== \"/%\") return text;\n let result = \"\";\n let resultBytes = 0;\n const append = (value: string): void => {\n resultBytes += Buffer.byteLength(value);\n if (resultBytes > limit) this.budget.fail(\"maxExpansionBytes\");\n owner?.reserve({ metadata: 32, payload: resultBytes, work: value.length + 4 });\n result += value;\n };\n let position = 0;\n while (position <= characters.length) {\n let found = false;\n for (let start = position; start <= characters.length; start++) {\n if (operator === \"/#\" && start !== 0) break;\n for (let end = characters.length; end >= start; end--) {\n if (operator === \"/%\" && end !== characters.length) break;\n if (!await match(start, end)) continue;\n append(slice(position, start));\n const matched = slice(start, end);\n for (const replacement of replacements) {\n if (replacement.quoted) append(replacement.value);\n else {\n owner?.reserve({ metadata: 64 + replacement.value.length * 64, payload: Buffer.byteLength(replacement.value), allocatedSlots: replacement.value.length, work: replacement.value.length + 4 });\n const pieces = replacement.value.split(\"&\");\n for (const [index, piece] of pieces.entries()) { if (index) append(matched); append(piece); }\n }\n }\n position = end;\n found = true;\n if (operator !== \"//\" || end === characters.length) { append(slice(end)); return result; }\n if (end === start) { append(characters[position]!); position++; }\n break;\n }\n if (found) break;\n }\n if (!found) { append(slice(position)); break; }\n }\n return result;\n }\n\n async word(word: Word, state: State, io: IO, split = true, pattern = false, hereString = false, conditionalPattern = false, regexAppend?: (text: string, literal: boolean) => void): Promise<string[]> {\n return (await this.valueWord(word, state, io, split, pattern, hereString, conditionalPattern, regexAppend)).map(shellValueText);\n }\n\n private async valueWord(word: Word, state: State, io: IO, split = true, pattern = false, hereString = false, conditionalPattern = false, regexAppend?: (text: string, literal: boolean) => void): Promise<ShellValue[]> {\n const arrayOwned = word.parts.some(part => part.kind === \"variable\" && (getArraySelector(part) !== undefined || arrayStore(state)?.get(part.name) !== undefined));\n const owner = arrayOwned ? requireArrays(state).owner : undefined;\n const holding = owner?.hold();\n try {\n if (owner) await this.prepareArrayObservers(state, owner);\n owner?.reserve({ metadata: 128 + word.parts.length * 32, allocatedSlots: word.parts.length + 1, work: word.parts.length + 5 });\n const fields: { value: string; fragments: ShellValue[]; bytes: boolean; pattern: string; present: boolean }[] = [{ value: \"\", fragments: [], bytes: false, pattern: \"\", present: false }];\n let expansionBytes = 0;\n const append = (value: ShellValue, glob: boolean, present: boolean) => {\n const text = shellValueText(value);\n const size = shellValueByteLength(value);\n if (size > this.budget.limits.maxExpansionBytes - expansionBytes) this.budget.fail(\"maxExpansionBytes\");\n expansionBytes += size;\n regexAppend?.(text, !glob);\n const field = fields.at(-1)!;\n if (owner) owner.reserve({ payload: exactSum(Buffer.byteLength(field.value) + size, Buffer.byteLength(field.pattern) + (glob ? size : size * 2)), metadata: 64, work: text.length + 8 });\n if (typeof value !== \"string\" || field.bytes) {\n io[valueScope]?.reserve(32 * (field.bytes ? 1 : field.fragments.length + 1), field.bytes ? 1 : field.fragments.length + 1);\n if (typeof value !== \"string\") io[valueScope]?.hold(value);\n field.bytes = true;\n }\n field.fragments.push(value);\n field.value += text;\n field.pattern += glob ? text : text.replace(conditionalPattern ? /[\\\\*?[\\]\\-^()|+!@]/gu : /[\\\\*?[\\]\\-^]/gu, \"\\\\$&\");\n field.present ||= present;\n };\n const parts = word.parts.map((part) => ({ part, splitText: false }));\n for (let index = 0; index < parts.length; index++) {\n const { part, splitText } = parts[index]!;\n const quotedPresence = part.quoted && !(arrayOwned && isQuoteMarker(part));\n if (part.kind === \"variable\" && [\"-\", \"+\", \":-\", \":+\"].includes(part.operator ?? \"\") && /^[a-zA-Z_][a-zA-Z_0-9]*$/u.test(part.name)) {\n const value = this.variable(state, part.name);\n const missing = value === undefined || (part.operator!.startsWith(\":\") && value === \"\");\n if (part.operator!.endsWith(\"+\") ? !missing : missing) {\n const alternate = part.alternate!.parts.map((entry) => ({ part: copyArraySelector(entry, { ...entry, quoted: entry.quoted || part.quoted }), splitText: true }));\n if (!alternate.length && part.quoted) append(\"\", false, true);\n parts.splice(index + 1, 0, ...alternate);\n continue;\n }\n }\n const selector = getArraySelector(part);\n if (part.kind === \"variable\" && selector?.kind === \"members\" && !part.length && split && (!part.quoted || selector.separator === \"@\")) {\n const members = await this.arrayMembers(part.name, state);\n for (let position = 0; position < members.length; position++) {\n if (position > 0) {\n owner?.reserve({ metadata: 32, allocatedSlots: 1, work: 3 });\n fields.push({ value: \"\", fragments: [], bytes: false, pattern: \"\", present: false });\n }\n const value = members[position]!;\n if (part.quoted || state.variables.IFS === \"\") append(value, !part.quoted, part.quoted || value.length > 0);\n else {\n const separators = state.variables.IFS ?? \" \\t\\n\";\n let boundary = false;\n for (const character of value) {\n if (separators.includes(character)) {\n if (!/[ \\t\\n]/u.test(character)) {\n fields.at(-1)!.present = true;\n owner?.reserve({ metadata: 32, allocatedSlots: 1, work: 3 });\n fields.push({ value: \"\", fragments: [], bytes: false, pattern: \"\", present: false });\n } else if (fields.at(-1)!.present) boundary = true;\n } else {\n if (boundary) { owner?.reserve({ metadata: 32, allocatedSlots: 1, work: 3 }); fields.push({ value: \"\", fragments: [], bytes: false, pattern: \"\", present: false }); }\n boundary = false;\n append(character, true, true);\n }\n await owner!.ledger.checkpoint(this.signal);\n }\n if (boundary) { owner?.reserve({ metadata: 32, allocatedSlots: 1, work: 3 }); fields.push({ value: \"\", fragments: [], bytes: false, pattern: \"\", present: false }); }\n }\n }\n } else if (part.kind === \"text\" && !splitText) {\n let value: ShellValue = invokedValues.get(part) ?? part.byteValue ?? part.value;\n if (typeof value === \"string\" && index === 0 && !part.quoted && /^~(?:\\/|$)/u.test(value)) value = (state.variables.HOME ?? \"~\") + value.slice(1);\n append(value, !part.quoted, quotedPresence || shellValueByteLength(value) > 0);\n } else if (part.kind === \"variable\" && part.name === \"@\" && part.quoted && !part.operator && split) {\n for (let position = 0; position < state.positional.length; position++) {\n if (position > 0) fields.push({ value: \"\", fragments: [], bytes: false, pattern: \"\", present: false });\n append(stateMonitor(state)?.positionals.get(String(position), state.positional[position]!) ?? state.positional[position]!, false, true);\n }\n if (state.positional.length === 0 && word.parts.every((entry) => (entry.kind === \"text\" && entry.value === \"\") || entry === part)) fields[0]!.present = false;\n } else {\n const value = part.kind === \"text\" ? part.byteValue ?? part.value : await this.valuePart(part, state, io, hereString);\n if (part.quoted || !split || state.variables.IFS === \"\") append(value, !part.quoted, quotedPresence || !split || shellValueByteLength(value) > 0);\n else {\n const separators = state.variables.IFS ?? \" \\t\\n\";\n let boundary = false;\n const pieces = this.splitValue(value, separators, io);\n for (const character of pieces) {\n const text = shellValueText(character);\n if (typeof character === \"string\" && separators.includes(character)) {\n if (!/[ \\t\\n]/u.test(text)) {\n fields.at(-1)!.present = true;\n fields.push({ value: \"\", fragments: [], bytes: false, pattern: \"\", present: false });\n } else if (fields.at(-1)!.present) boundary = true;\n } else {\n if (boundary) fields.push({ value: \"\", fragments: [], bytes: false, pattern: \"\", present: false });\n boundary = false;\n append(character, true, true);\n }\n }\n if (boundary) fields.push({ value: \"\", fragments: [], bytes: false, pattern: \"\", present: false });\n }\n }\n if (fields.length > this.budget.limits.maxExpansionFields) this.budget.fail(\"maxExpansionFields\");\n if (owner) await owner.ledger.checkpoint(this.signal);\n }\n const result: ShellValue[] = [];\n let resultBytes = 0;\n for (const field of fields) {\n if (!field.present && split) continue;\n const assembled = concatShellValues(field.fragments, io[valueScope]);\n const projection = shellValueText(assembled);\n const expanded = split ? await this.glob(projection, field.pattern, state) : [pattern ? field.pattern : projection];\n for (const text of expanded) {\n const value = !pattern && expanded.length === 1 && text === projection ? assembled : text;\n const size = shellValueByteLength(value);\n if (size > this.budget.limits.maxExpansionBytes - resultBytes) this.budget.fail(\"maxExpansionBytes\");\n resultBytes += size;\n owner?.reserve({ metadata: 32, allocatedSlots: 1, work: 3 });\n result.push(value);\n }\n if (result.length > this.budget.limits.maxExpansionFields) this.budget.fail(\"maxExpansionFields\");\n }\n return result;\n } finally { holding?.release(); }\n }\n\n private *splitValue(value: ShellValue, separators: string, io: IO): Generator<ShellValue> {\n if (typeof value === \"string\" || Array.from(separators).some(character => character.charCodeAt(0) > 127)) {\n yield* shellValueText(value);\n return;\n }\n const bytes = shellValueBytes(value, io[valueScope]);\n let start = 0;\n for (let index = 0; index < bytes.length; index++) {\n const byte = bytes[index]!;\n if (byte > 127 || !separators.includes(String.fromCharCode(byte))) continue;\n if (start < index) yield shellValueFromBytes(bytes.subarray(start, index), io[valueScope]);\n yield String.fromCharCode(byte);\n start = index + 1;\n }\n if (start < bytes.length) yield start === 0 ? value : shellValueFromBytes(bytes.subarray(start), io[valueScope]);\n }\n\n private positionalValues(state: State): ShellValue[] {\n return state.positional.map((text, index) => stateMonitor(state)?.positionals.get(String(index), text) ?? text);\n }\n\n private replacePositionals(state: State, values: readonly ShellValue[], action?: () => void): void {\n const publish = action ?? (() => { state.positional = values.map(shellValueText); });\n const store = stateMonitor(state)?.positionals;\n if (store) store.replace(values.map((value, index) => [String(index), value] as const), publish);\n else publish();\n }\n\n private admitArguments(values: readonly ShellValue[], allocation: ValueScope): CommandArguments {\n if (!values.some(value => typeof value !== \"string\")) return createCommandArguments(values);\n if (values.length > this.budget.limits.maxExpansionFields) this.budget.fail(\"maxExpansionFields\");\n for (const value of values) if (typeof value !== \"string\") allocation.hold(value);\n return createCommandArguments(values, allocation);\n }\n\n async arrayMembers(name: string, state: State): Promise<string[]> {\n const store = requireArrays(state);\n const holding = store.owner.hold();\n try {\n const binding = store.get(name);\n store.owner.reserve({ metadata: 64, work: 3 });\n if (!binding) {\n const value = state.variables[name];\n if (value === undefined) return [];\n store.owner.reserve({ metadata: 32, allocatedSlots: 1, work: 3 });\n await textToken(store.owner, value, this.signal);\n return [value];\n }\n binding.retain();\n try {\n const indices = await binding.indices(store.owner, this.signal);\n const values: string[] = [];\n for (const index of indices) {\n store.owner.reserve({ metadata: 32, allocatedSlots: 1, work: 4 });\n const value = binding.get(index)!;\n await textToken(store.owner, value, this.signal);\n values.push(value);\n await store.owner.ledger.checkpoint(this.signal);\n }\n return values;\n } finally { await binding.release(); }\n } finally { holding.release(); }\n }\n\n async glob(value: string, pattern: string, state: State): Promise<string[]> {\n if (!/(?:^|[^\\\\])[*?[]/u.test(pattern)) return [value];\n const absolute = pattern.startsWith(\"/\");\n const work = { remaining: Math.min(Number.MAX_SAFE_INTEGER, this.budget.limits.maxExpansionBytes * 4 + 1024), signal: this.signal, exhausted: (): never => this.budget.fail(\"maxExpansionBytes\") };\n let candidates = [absolute ? \"/\" : \"\"];\n for (const segment of pattern.split(\"/\").filter((segment) => segment.length > 0)) {\n const next: string[] = [];\n let candidateBytes = 0;\n const addCandidate = (candidate: string): void => {\n const size = Buffer.byteLength(candidate);\n if (size > this.budget.limits.maxExpansionBytes - candidateBytes) this.budget.fail(\"maxExpansionBytes\");\n candidateBytes += size;\n next.push(candidate);\n if (next.length > this.budget.limits.maxExpansionFields) this.budget.fail(\"maxExpansionFields\");\n };\n if (!/(?:^|[^\\\\])[*?[]/u.test(segment)) {\n const literal = segment.replace(/\\\\(.)/gu, \"$1\");\n for (const candidate of candidates) addCandidate(`${candidate}${candidate && candidate !== \"/\" ? \"/\" : \"\"}${literal}`);\n } else {\n const matches = await compilePattern(segment, work);\n for (const candidate of candidates) {\n let entries;\n try {\n const pending = this.fs.readdir(resolvePath(state.cwd, candidate || \".\"), { signal: this.signal });\n entries = arrayStore(state) ? await interruptible(pending, this.signal) : await pending;\n }\n catch (error) { if ([\"ENOENT\", \"ENOTDIR\", \"EACCES\"].includes(errorCode(error) ?? \"\")) continue; throw error; }\n for (const entry of entries) {\n if (entry.name !== \".\" && entry.name !== \"..\" && (state.dotglob || !entry.name.startsWith(\".\") || segment.startsWith(\".\")) && await matches(entry.name)) {\n addCandidate(`${candidate}${candidate && candidate !== \"/\" ? \"/\" : \"\"}${entry.name}`);\n }\n }\n }\n }\n candidates = next;\n }\n const found: string[] = [];\n for (const candidate of candidates) {\n try {\n const pending = this.fs.stat(resolvePath(state.cwd, candidate), { signal: this.signal });\n const stat = arrayStore(state) ? await interruptible(pending, this.signal) : await pending;\n if (!value.endsWith(\"/\") || stat.type === \"directory\") found.push(candidate + (value.endsWith(\"/\") ? \"/\" : \"\"));\n } catch (error) { if (![\"ENOENT\", \"ENOTDIR\", \"EACCES\"].includes(errorCode(error) ?? \"\")) throw error; }\n }\n return found.length ? found.sort() : [value];\n }\n}\n", "import { shellValueRetainedBytes } from \"../contracts/value.js\";\nimport type { ByteShellValue, ShellValue, ValueAllocation, ValueReservation } from \"../contracts/value.js\";\nimport { ShellLimitError } from \"./types.js\";\n\ninterface AllocationRecord {\n readonly bytes: number;\n readonly slots: number;\n references: number;\n object?: object;\n}\n\nexport interface HeldValue {\n readonly value: ShellValue;\n release(): void;\n}\n\nexport class ValueArena {\n readonly #objects = new WeakMap<object, AllocationRecord>();\n readonly #records = new Set<AllocationRecord>();\n #bytes = 0;\n #slots = 0;\n #closed = false;\n\n constructor(readonly maximumBytes: number, readonly maximumSlots: number, readonly checkpoint: () => void, readonly fail: (limit: \"maxExpansionBytes\" | \"maxExpansionFields\") => never = limit => { throw new ShellLimitError(limit); }) {}\n\n get usage(): { bytes: number; slots: number } { return { bytes: this.#bytes, slots: this.#slots }; }\n\n assertOpen(): void {\n this.checkpoint();\n this.assertRetained();\n }\n\n assertRetained(): void {\n if (this.#closed) throw new Error(\"Shell value arena is closed\");\n }\n\n scope(): ValueScope { this.assertOpen(); return new ValueScope(this); }\n\n allocate(bytes: number, slots: number): AllocationRecord {\n this.assertOpen();\n if (!Number.isSafeInteger(bytes) || bytes < 0 || !Number.isSafeInteger(slots) || slots < 0) throw new RangeError(\"Invalid shell value allocation\");\n if (bytes > this.maximumBytes - this.#bytes) this.fail(\"maxExpansionBytes\");\n if (slots > this.maximumSlots - this.#slots) this.fail(\"maxExpansionFields\");\n const record = { bytes, slots, references: 1 };\n this.#bytes += bytes;\n this.#slots += slots;\n this.#records.add(record);\n return record;\n }\n\n commit(record: AllocationRecord, object: object): void {\n this.assertOpen();\n if (!this.#records.has(record) || record.object || this.#objects.has(object)) throw new Error(\"Shell value reservation is not fresh\");\n record.object = object;\n this.#objects.set(object, record);\n }\n\n release(record: AllocationRecord): void {\n if (!this.#records.has(record)) return;\n if (--record.references) return;\n this.#records.delete(record);\n if (record.object) this.#objects.delete(record.object);\n this.#bytes -= record.bytes;\n this.#slots -= record.slots;\n }\n\n hold(value: ByteShellValue): HeldValue {\n this.assertOpen();\n const reference = this.allocate(32, 1);\n let payload: AllocationRecord;\n try {\n const existing = this.#objects.get(value);\n if (existing) { payload = existing; payload.references++; }\n else {\n payload = this.allocate(shellValueRetainedBytes(value), 1);\n try { this.commit(payload, value); }\n catch (error) { this.release(payload); throw error; }\n }\n } catch (error) { this.release(reference); throw error; }\n let released = false;\n return { value, release: () => {\n if (released) return;\n released = true;\n this.release(reference);\n this.release(payload);\n } };\n }\n\n close(): void {\n this.#closed = true;\n for (const record of this.#records) if (record.object) this.#objects.delete(record.object);\n this.#records.clear();\n this.#bytes = 0;\n this.#slots = 0;\n }\n}\n\nexport class ValueScope implements ValueAllocation {\n readonly #releases = new Set<() => void>();\n readonly #holds = new Map<HeldValue, { scope: ValueScope }>();\n #closed = false;\n #enrollment: AllocationRecord | undefined;\n\n constructor(readonly arena: ValueArena) {}\n\n assertOpen(): void {\n this.arena.assertOpen();\n if (this.#closed) throw new Error(\"Shell value scope is closed\");\n }\n\n reserve(bytes: number, slots: number): ValueReservation {\n this.assertOpen();\n this.#enrollment ??= this.arena.allocate(64, 1);\n const record = this.arena.allocate(bytes, slots);\n let released = false;\n const release = (): void => {\n if (released) return;\n released = true;\n this.#releases.delete(release);\n this.arena.release(record);\n };\n this.#releases.add(release);\n return { commit: value => { this.assertOpen(); if (released) throw new Error(\"Shell value reservation is released\"); this.arena.commit(record, value); }, release };\n }\n\n hold(value: ShellValue): HeldValue {\n this.assertOpen();\n if (typeof value === \"string\") return { value, release() {} };\n this.#enrollment ??= this.arena.allocate(64, 1);\n const held = this.arena.hold(value);\n const owner = { scope: this as ValueScope };\n const result = { value, release: (): void => {\n owner.scope.#holds.delete(result);\n owner.scope.#releases.delete(result.release);\n held.release();\n } };\n const release = result.release;\n this.#releases.add(release);\n this.#holds.set(result, owner);\n return result;\n }\n\n prepareTransfer(held: HeldValue, destination: ValueScope): () => void {\n const validate = (): { scope: ValueScope } => {\n this.arena.assertRetained();\n const owner = this.#holds.get(held);\n if (!owner || this.#closed || destination.#closed || this.arena !== destination.arena || !destination.#enrollment) throw new Error(\"Shell value restoration ownership is not prepared\");\n return owner;\n };\n validate();\n return () => {\n const owner = validate();\n this.#holds.delete(held);\n this.#releases.delete(held.release);\n owner.scope = destination;\n destination.#holds.set(held, owner);\n destination.#releases.add(held.release);\n };\n }\n\n close(): void {\n if (this.#closed) return;\n this.#closed = true;\n for (const release of this.#releases) release();\n if (this.#enrollment) this.arena.release(this.#enrollment);\n }\n}\n\nexport class ValueStore {\n readonly #values = new Map<string, HeldValue>();\n readonly scope: ValueScope;\n\n constructor(readonly arena: ValueArena) { this.scope = arena.scope(); }\n\n get(name: string, text: string): ShellValue { return this.#values.get(name)?.value ?? text; }\n\n publish(name: string, value: ShellValue, action: () => boolean): boolean {\n const held = typeof value === \"string\" ? undefined : this.scope.hold(value);\n try {\n if (!action()) { held?.release(); return false; }\n } catch (error) { held?.release(); throw error; }\n this.invalidate(name);\n if (held) this.#values.set(name, held);\n return true;\n }\n\n invalidate(name?: string): void {\n if (name === undefined) {\n for (const value of this.#values.values()) value.release();\n this.#values.clear();\n } else {\n this.#values.get(name)?.release();\n this.#values.delete(name);\n }\n }\n\n clone(): ValueStore {\n const copy = new ValueStore(this.arena);\n try {\n for (const [name, held] of this.#values) copy.publish(name, held.value, () => true);\n return copy;\n } catch (error) { copy.close(); throw error; }\n }\n\n replace(entries: Iterable<readonly [string, ShellValue]>, action: () => void): void {\n const staged = new Map<string, HeldValue>();\n try {\n for (const [name, value] of entries) {\n if (typeof value !== \"string\") {\n const held = this.scope.hold(value);\n staged.get(name)?.release();\n staged.set(name, held);\n } else {\n staged.get(name)?.release();\n staged.delete(name);\n }\n }\n action();\n } catch (error) { for (const held of staged.values()) held.release(); throw error; }\n this.invalidate();\n for (const [name, held] of staged) this.#values.set(name, held);\n }\n\n restore(source: ValueStore, action: () => void): void {\n if (source === this) throw new Error(\"Shell value restoration requires an independent snapshot\");\n const transfers = [...source.#values].map(([name, held]) => ({ name, held, transfer: source.scope.prepareTransfer(held, this.scope) }));\n action();\n this.invalidate();\n for (const { name, held, transfer } of transfers) {\n transfer();\n this.#values.set(name, held);\n source.#values.delete(name);\n }\n }\n\n restoreHeld(name: string, held: HeldValue, action: () => void): void {\n const transfer = this.scope.prepareTransfer(held, this.scope);\n action();\n this.invalidate(name);\n transfer();\n this.#values.set(name, held);\n }\n\n close(): void { this.invalidate(); this.scope.close(); }\n}\n", "import { prepareArithmetic } from \"./arithmetic.js\";\nimport type { ArithmeticProgram } from \"./arithmetic.js\";\nimport type { Admission, ArrayOwner } from \"./arrays/ledger.js\";\n\ninterface PositionalArithmeticOptions {\n readonly positional: readonly string[];\n readonly arg0: string;\n readonly maximumBytes: number;\n readonly owner: ArrayOwner | undefined;\n readonly checkpoint: () => void;\n readonly requireParameter: (name: string, value: string | undefined) => void;\n readonly limit: () => never;\n}\n\nfunction digit(source: string, position: number): boolean {\n const code = source.charCodeAt(position);\n return code >= 48 && code <= 57;\n}\n\nfunction positionalTemplate(source: string, checkpoint: () => void): boolean {\n let found = false;\n let nextCheckpoint = 0;\n for (let position = 0; position < source.length;) {\n if (position >= nextCheckpoint) { checkpoint(); nextCheckpoint = position + 128; }\n const character = source[position];\n if (character === \"\\\\\" || character === \"'\" || character === '\"' || character === \"`\") return false;\n if (character !== \"$\") { position++; continue; }\n position++;\n if (digit(source, position)) { found = true; position++; continue; }\n if (source[position] !== \"{\") return false;\n const start = ++position;\n while (digit(source, position)) {\n if (position >= nextCheckpoint) { checkpoint(); nextCheckpoint = position + 128; }\n position++;\n }\n if (position === start || source[position] !== \"}\") return false;\n found = true;\n position++;\n }\n return found;\n}\n\nfunction positionalValue(name: string, options: PositionalArithmeticOptions): string | undefined {\n let index = 0;\n let outside = false;\n for (let position = 0; position < name.length; position++) {\n if (position % 128 === 0) options.checkpoint();\n const next = name.charCodeAt(position) - 48;\n if (index > Math.floor((options.positional.length - next) / 10)) outside = true;\n if (!outside) index = index * 10 + next;\n }\n return outside ? undefined : index === 0 ? options.arg0 : options.positional[index - 1];\n}\n\nexport function evaluatePositionalArithmetic(\n program: ArithmeticProgram,\n options: PositionalArithmeticOptions,\n evaluate: (prepared: ArithmeticProgram) => bigint,\n): bigint {\n const source = program.source;\n if (!source.includes(\"$\")) return evaluate(program);\n options.checkpoint();\n if (!positionalTemplate(source, options.checkpoint)) return evaluate(program);\n const header = options.owner?.reserve({ metadata: 128, allocatedSlots: 2, work: source.length * 2 + 8 });\n const admissions: Admission[] = [];\n const chunks: string[] = [];\n let bytes = 0;\n const reserve = (payload: number): void => {\n const admission = options.owner?.reserve({ payload, metadata: 64, allocatedSlots: 2, work: 4 });\n if (admission) admissions.push(admission);\n };\n const length = (text: string, start: number, end: number, maximum: number): number => {\n let size = 0;\n let nextCheckpoint = start;\n for (let position = start; position < end;) {\n if (position >= nextCheckpoint) { options.checkpoint(); nextCheckpoint = position + 128; }\n const code = text.charCodeAt(position++);\n if (code <= 0x7f) size++;\n else if (code <= 0x7ff) size += 2;\n else if (code >= 0xd800 && code <= 0xdbff && position < end && text.charCodeAt(position) >= 0xdc00 && text.charCodeAt(position) <= 0xdfff) { size += 4; position++; }\n else size += 3;\n if (size > maximum) options.limit();\n }\n options.owner?.reserve({ work: end - start }).release();\n return size;\n };\n const literal = (start: number, end: number): void => {\n if (start === end) return;\n const size = length(source, start, end, options.maximumBytes - bytes);\n reserve(size);\n chunks.push(source.slice(start, end));\n bytes += size;\n };\n try {\n let start = 0;\n let nextCheckpoint = 0;\n for (let position = 0; position < source.length;) {\n if (position >= nextCheckpoint) { options.checkpoint(); nextCheckpoint = position + 128; }\n if (source[position] !== \"$\") { position++; continue; }\n literal(start, position);\n const braced = source[position + 1] === \"{\";\n const nameStart = position + (braced ? 2 : 1);\n let nameEnd = nameStart + 1;\n if (braced) while (digit(source, nameEnd)) { if (nameEnd >= nextCheckpoint) { options.checkpoint(); nextCheckpoint = nameEnd + 128; } nameEnd++; }\n reserve(nameEnd - nameStart);\n const name = source.slice(nameStart, nameEnd);\n const value = positionalValue(name, options);\n options.requireParameter(name, value);\n const text = value ?? \"\";\n const size = length(text, 0, text.length, options.maximumBytes - bytes);\n reserve(size);\n chunks.push(text);\n bytes += size;\n position = nameEnd + (braced ? 1 : 0);\n start = position;\n }\n literal(start, source.length);\n options.checkpoint();\n reserve(bytes);\n const expanded = chunks.join(\"\");\n options.checkpoint();\n return evaluate(prepareArithmetic(expanded));\n } finally {\n for (let position = admissions.length - 1; position >= 0; position--) admissions[position]!.release();\n header?.release();\n }\n}\n", "export function byteLocale(variables: Readonly<Record<string, string>>): boolean {\n const locale = variables.LC_ALL || variables.LC_CTYPE || variables.LANG;\n return locale === \"C\" || locale === \"POSIX\";\n}\n", "import type { Command, Script, Word } from \"./parser.js\";\n\nconst spelling = (word: Word): string => word.spelling ?? word.plain ?? \"''\";\n\nfunction scriptText(script: Script, indent: string): string {\n return script.lists.map(list => list.pipelines.map((pipeline, index) =>\n `${index ? `${list.operators[index - 1]} ` : \"\"}${pipeline.negate ? \"! \" : \"\"}${pipeline.commands.map((command, commandIndex) => `${commandIndex ? pipeline.commands[commandIndex - 1]!.redirects.some(redirect => redirect.implicitPipeline) ? \" |& \" : \" | \" : \"\"}${commandText(command, indent)}`).join(\"\")}`,\n ).join(\" \")).join(`;\\n${indent}`);\n}\n\nfunction commandText(command: Command, indent: string): string {\n const nested = `${indent} `;\n let text: string;\n switch (command.kind) {\n case \"simple\": text = command.words.map(spelling).join(\" \"); break;\n case \"arithmetic\": text = `(( ${command.source} ))`; break;\n case \"conditional\": text = `[[${command.source}]]`; break;\n case \"group\": text = `{ \\n${nested}${scriptText(command.body, nested)}\\n${indent}}`; break;\n case \"subshell\": text = `( ${scriptText(command.body, indent)} )`; break;\n case \"function\": text = `${command.name} () \\n${indent}${commandText(command.body, indent)}`; break;\n case \"if\":\n text = command.branches.map((branch, index) => `${index ? \"elif\" : \"if\"} ${scriptText(branch.condition, indent)}; then\\n${nested}${scriptText(branch.body, nested)};`).join(`\\n${indent}`);\n if (command.otherwise) text += `\\n${indent}else\\n${nested}${scriptText(command.otherwise, nested)};`;\n text += `\\n${indent}fi`;\n break;\n case \"while\": case \"until\": text = `${command.kind} ${scriptText(command.condition, indent)}; do\\n${nested}${scriptText(command.body, nested)};\\n${indent}done`; break;\n case \"for\": text = `for ${command.name}${command.words ? ` in ${command.words.map(spelling).join(\" \")}` : \"\"};\\ndo\\n${nested}${scriptText(command.body, nested)};\\n${indent}done`; break;\n case \"case\": text = `case ${spelling(command.subject)} in\\n${command.clauses.map(clause => `${nested}${clause.patterns.map(spelling).join(\" | \")})\\n${nested} ${scriptText(clause.body, `${nested} `)}\\n${nested}${clause.terminator === \"esac\" ? \"\" : clause.terminator}`).join(\"\\n\")}\\n${indent}esac`; break;\n }\n for (const redirect of command.redirects) {\n if (redirect.implicitPipeline) continue;\n const defaultDescriptor = redirect.operator.startsWith(\"<\") ? 0 : 1;\n text += ` ${redirect.descriptor === defaultDescriptor ? \"\" : redirect.descriptor}${redirect.operator} ${spelling(redirect.target)}${redirect.move ? \"-\" : \"\"}`;\n if (redirect.document) text += `\\n${redirect.document.body}${redirect.document.delimiter}\\n`;\n }\n return text;\n}\n\nexport function functionDisplay(name: string, body: Command): string {\n return `${name} () \\n${commandText(body, \"\")}\\n`;\n}\n", "import type { InvocationCleanup } from \"../contracts/command.js\";\n\nexport const invocationScope = Symbol(\"invocation cleanup scope\");\n\nexport class InvocationScope {\n readonly #children = new Set<InvocationScope>();\n readonly #callbacks: InvocationCleanup[] = [];\n readonly #work = new Set<Promise<void>>();\n readonly #controller = new AbortController();\n #closed = false;\n #drain: Promise<void> | undefined;\n\n constructor(\n readonly callerSignal?: AbortSignal,\n readonly failures: unknown[] = [],\n readonly parent?: InvocationScope,\n ) {}\n\n get signal(): AbortSignal { return this.#controller.signal; }\n\n assertOpen(): void {\n this.callerSignal?.throwIfAborted();\n if (this.#closed) throw this.signal.reason;\n this.parent?.assertOpen();\n }\n\n child(): InvocationScope {\n this.assertOpen();\n const child = new InvocationScope(this.callerSignal, this.failures, this);\n this.#children.add(child);\n return child;\n }\n\n register(cleanup: InvocationCleanup): void {\n this.assertOpen();\n if (typeof cleanup !== \"function\") throw new TypeError(\"Cleanup must be callable\");\n this.#callbacks.push(cleanup);\n }\n\n run<Value>(operation: () => Promise<Value>): Promise<Value> {\n this.assertOpen();\n const pending = operation();\n const settled = pending.then(() => {}, () => {});\n this.#work.add(settled);\n void settled.then(() => { this.#work.delete(settled); });\n return pending;\n }\n\n async cleanup(action: InvocationCleanup): Promise<void> {\n try { await action(); }\n catch (error) { this.failures.push(error); }\n }\n\n async drainWork(): Promise<void> {\n await Promise.all([...this.#work, ...[...this.#children].map(child => child.drainWork())]);\n }\n\n #seal(): void {\n if (this.#closed) return;\n this.#closed = true;\n for (const child of this.#children) child.#seal();\n this.#controller.abort(new Error(\"Invocation is closed\"));\n }\n\n close(): Promise<void> {\n if (!this.#drain) {\n this.#drain = Promise.resolve().then(async () => {\n await Promise.all([\n ...this.#callbacks.map((cleanup) => this.cleanup(cleanup)),\n ...[...this.#children].map((child) => child.close()),\n ...this.#work,\n ]);\n });\n this.#seal();\n }\n return this.#drain;\n }\n}\n\nexport function throwCleanupFailures(failures: readonly unknown[]): void {\n if (failures.length === 1) throw failures[0];\n if (failures.length) throw new AggregateError(failures, \"Invocation cleanup failed\");\n}\n", "import { FsError, getCommandArguments, readBytes, writeBytes, type ByteSource, type CommandDefinition, type CommandHandler } from \"../contracts/index.js\";\nimport { shellValueByteLength } from \"../contracts/value.js\";\nimport { define, emptyInput, encoder, escapeBytes, integer, options, output, pathOf, replaceArgument, UsageError, value } from \"./internal.js\";\nimport { EnvSplitError, parseEnvOptions } from \"./env-split.js\";\n\nexport function directExecutor(fallback: CommandHandler): CommandHandler {\n return async context => {\n context.signal.throwIfAborted();\n const argumentValues = getCommandArguments(context);\n const invoke = context.invoke;\n if (invoke) return invoke(context.command, argumentValues.args, {\n argumentValues,\n stdin: context.stdin, cwd: context.cwd, env: context.env, stdout: context.stdout, stderr: context.stderr,\n ...(context.stdinIsDefault === undefined ? {} : { stdinIsDefault: context.stdinIsDefault }),\n });\n return fallback({ ...context, args: argumentValues.args, argumentValues });\n };\n}\n\nasync function* argumentsFrom(source: ByteSource, signal: AbortSignal, delimiter?: string, replacement = false): AsyncGenerator<string> {\n const utf8 = new TextDecoder(\"utf-8\", { fatal: true });\n let current = \"\";\n let active = false;\n let escaped = false;\n let quote = \"\";\n const parse = function* (text: string): Generator<string> {\n for (const character of text) {\n if (delimiter !== undefined) {\n if (character === delimiter) { yield current; current = \"\"; active = false; }\n else { current += character; active = true; }\n } else if (escaped) { current += character; active = true; escaped = false; }\n else if (quote) {\n if (character === \"\\n\") throw new UsageError(\"unmatched quote in input\");\n if (character === quote) quote = \"\";\n else current += character;\n } else if (character === \"\\\\\") { escaped = true; active = true; }\n else if (character === \"'\" || character === '\"') { quote = character; active = true; }\n else if (character === \"\\n\" || !replacement && /[ \\t\\r\\v\\f]/u.test(character)) {\n if (active) { yield current; current = \"\"; active = false; }\n } else if (replacement && !active && /[ \\t]/u.test(character)) continue;\n else { current += character; active = true; }\n if (current.length > 131072) throw new UsageError(\"argument exceeds 128 KiB limit\");\n }\n };\n for await (const chunk of readBytes(source, signal)) { signal.throwIfAborted(); yield* parse(utf8.decode(chunk, { stream: true })); }\n yield* parse(utf8.decode());\n if (quote || escaped) throw new UsageError(quote ? \"unmatched quote in input\" : \"trailing backslash in input\");\n if (active) yield current;\n}\n\nexport function executionCommands(execute: CommandHandler): CommandDefinition[] {\n return [\n define(\"env\", async context => {\n const argumentValues = getCommandArguments(context);\n let parsed: Awaited<ReturnType<typeof parseEnvOptions>>;\n try { parsed = await parseEnvOptions(argumentValues.args, context.env, context.signal, argumentValues); }\n catch (error) {\n context.signal.throwIfAborted();\n if (!(error instanceof EnvSplitError)) throw error;\n await writeBytes(context.stderr, encoder.encode(`${context.command}: ${error.message}\\n`), context.signal);\n return { exitCode: 125 };\n }\n const env: Record<string, string> = Object.assign(Object.create(null) as Record<string, string>, parsed.flags.has(\"i\") ? {} : context.env);\n for (const name of parsed.values.get(\"u\") ?? []) delete env[name];\n const inheritedNames = Object.keys(env);\n const addedNames: string[] = [];\n let offset = 0;\n while (parsed.operands[offset]?.includes(\"=\")) {\n const assignment = parsed.operands[offset++]!;\n const equals = assignment.indexOf(\"=\");\n const name = assignment.slice(0, equals);\n if (!name || name.includes(\"\\0\")) throw new UsageError(\"invalid environment variable name\");\n const content = assignment.slice(equals + 1);\n if (content.includes(\"\\0\")) throw new UsageError(\"environment values cannot contain NUL\");\n if (!Object.hasOwn(env, name)) addedNames.push(name);\n env[name] = content;\n }\n const names = [...addedNames.reverse(), ...inheritedNames];\n if (offset < parsed.operands.length && parsed.flags.has(\"0\")) throw new UsageError(\"cannot specify --null with a command\");\n let cwd = context.cwd;\n const directory = value(parsed, \"C\");\n if (directory !== undefined) {\n cwd = pathOf(context, directory);\n if ((await context.fs.stat(cwd, { signal: context.signal })).type !== \"directory\") throw new FsError(\"ENOTDIR\", { path: cwd });\n cwd = await context.fs.realpath(cwd, { signal: context.signal });\n }\n if (offset < parsed.operands.length) {\n const childArguments = parsed.operandValues!.slice(offset + 1);\n const childEnv: Record<string, string> = Object.assign(Object.create(null) as Record<string, string>, Object.fromEntries(names.map(name => [name, env[name]!])));\n if (context.invoke) return context.invoke(parsed.operands[offset]!, childArguments.args, {\n argumentValues: childArguments,\n env: childEnv, replaceEnv: true, cwd, stdin: context.stdin, stdout: context.stdout, stderr: context.stderr,\n ...(context.stdinIsDefault === undefined ? {} : { stdinIsDefault: context.stdinIsDefault }),\n });\n return execute({ ...context, command: parsed.operands[offset]!, args: childArguments.args, argumentValues: childArguments, env: childEnv, cwd });\n }\n for (const name of names) await output(context, `${name}=${env[name]}${parsed.flags.has(\"0\") ? \"\\0\" : \"\\n\"}`);\n return { exitCode: 0 };\n }),\n define(\"xargs\", async context => {\n const argumentValues = getCommandArguments(context);\n const operandIndices: number[] = [];\n const parsed = options(argumentValues.args, \"0rn:s:I:d:tP:xE:\", { null: \"0\", \"no-run-if-empty\": \"r\", \"max-args\": \"n\", \"max-chars\": \"s\", replace: \"I\", delimiter: \"d\", verbose: \"t\", \"max-procs\": \"P\", exit: \"x\", eof: \"E\" }, true, index => { operandIndices.push(index); });\n if (integer(value(parsed, \"P\") ?? \"1\") !== 1) throw new UsageError(\"only sequential execution (-P 1) is supported\");\n const replacement = value(parsed, \"I\");\n if (replacement === \"\") throw new UsageError(\"replacement string cannot be empty\");\n if (replacement !== undefined && parsed.flags.has(\"n\")) throw new UsageError(\"cannot combine -I and -n\");\n const maxArgs = replacement === undefined ? integer(value(parsed, \"n\") ?? \"5000\", 1) : 1;\n const maxBytes = integer(value(parsed, \"s\") ?? \"131072\", 1);\n if (maxBytes > 131072) throw new UsageError(\"command size limit cannot exceed 128 KiB\");\n let delimiter = parsed.flags.has(\"0\") ? \"\\0\" : undefined;\n const suppliedDelimiter = value(parsed, \"d\");\n if (suppliedDelimiter !== undefined) {\n const bytes = escapeBytes(suppliedDelimiter).bytes;\n if (bytes.length !== 1 || bytes[0]! > 127) throw new UsageError(\"delimiter must be one ASCII byte\");\n delimiter = String.fromCharCode(bytes[0]!);\n }\n const command = parsed.operands[0] ?? \"echo\";\n const initial = argumentValues.select(operandIndices).slice(1);\n const baseBytes = encoder.encode(command).length + 1 + initial.values.reduce((sum, argument) => sum + shellValueByteLength(argument) + 1, 0);\n if (baseBytes >= maxBytes) throw new UsageError(\"initial arguments exceed command size limit\");\n let batch: string[] = [];\n let bytes = baseBytes;\n let executed = false;\n let status = 0;\n let stop = false;\n const dispatch = async () => {\n const childArguments = initial.withValues(replacement === undefined ? [...initial.values, ...batch] : initial.values.map((argument, index) => replaceArgument(typeof argument === \"string\" ? argument : initial.bytes(index)!, replacement, batch[0] ?? \"\")));\n const args = childArguments.args;\n const size = encoder.encode(command).length + 1 + childArguments.values.reduce((sum, argument) => sum + shellValueByteLength(argument) + 1, 0);\n if (size > maxBytes) throw new UsageError(\"expanded arguments exceed command size limit\");\n if (parsed.flags.has(\"t\")) await writeBytes(context.stderr, encoder.encode([command, ...args].map(argument => /^[A-Za-z0-9_./-]+$/u.test(argument) ? argument : `'${argument.replaceAll(\"'\", \"'\\\\''\")}'`).join(\" \") + \"\\n\"), context.signal);\n const result = await execute({ ...context, command, args, argumentValues: childArguments, stdin: emptyInput(), stdinIsDefault: true, env: { ...context.env } });\n executed = true;\n if (result.exitCode === 255) { status = 124; stop = true; }\n else if (result.exitCode === 126 || result.exitCode === 127) { status = result.exitCode; stop = true; }\n else if (result.exitCode !== 0) status = 123;\n batch = []; bytes = baseBytes;\n };\n const eof = value(parsed, \"E\");\n for await (const argument of argumentsFrom(context.stdin, context.signal, delimiter, replacement !== undefined)) {\n if (delimiter === undefined && eof !== undefined && eof !== \"\" && argument === eof) break;\n const size = encoder.encode(argument).length + 1;\n if (replacement === undefined && baseBytes + size > maxBytes) throw new UsageError(\"single argument exceeds command size limit\");\n if (batch.length && (batch.length === maxArgs || bytes + size > maxBytes)) {\n if (parsed.flags.has(\"x\") && batch.length < maxArgs) throw new UsageError(\"command size limit exceeded\");\n await dispatch();\n if (stop) break;\n }\n batch.push(argument); bytes += size;\n if (batch.length === maxArgs) { await dispatch(); if (stop) break; }\n }\n if (!stop && (batch.length || !executed && !parsed.flags.has(\"r\") && replacement === undefined)) await dispatch();\n return { exitCode: status };\n }),\n ];\n}\n", "import { createCommandArguments, getCommandArguments, type CommandArguments } from \"../contracts/command.js\";\nimport { type ShellValue } from \"../contracts/value.js\";\nimport { decoder, encoder, UsageError, type ParsedOptions } from \"./internal.js\";\n\nexport class EnvSplitError extends Error {}\n\nclass SplitWork {\n private bytes = 0;\n private arguments = 0;\n private expansions = 0;\n private work = 0;\n private nextYield = 4096;\n\n constructor(private readonly signal: AbortSignal) {}\n\n account(text: string | Uint8Array): void {\n this.signal.throwIfAborted();\n if (text.length > 131072 - this.bytes) throw new EnvSplitError(\"split-string byte limit exceeded (131072)\");\n this.bytes += typeof text === \"string\" ? Buffer.byteLength(text) : text.byteLength;\n if (this.bytes > 131072) throw new EnvSplitError(\"split-string byte limit exceeded (131072)\");\n if (typeof text === \"string\" ? text.includes(\"\\0\") : text.includes(0)) throw new EnvSplitError(\"NUL is not supported in -S strings\");\n }\n\n argument(): void {\n if (++this.arguments > 10000) throw new EnvSplitError(\"split-string argument limit exceeded (10000)\");\n }\n\n expansion(): void {\n this.signal.throwIfAborted();\n if (++this.expansions > 32) throw new EnvSplitError(\"split-string expansion limit exceeded (32)\");\n if (this.work > 1048576) throw new EnvSplitError(\"split-string work limit exceeded (1048576)\");\n }\n\n tick(amount = 1): boolean {\n this.signal.throwIfAborted();\n this.work += amount;\n if (this.expansions && this.work > 1048576) throw new EnvSplitError(\"split-string work limit exceeded (1048576)\");\n return this.work >= this.nextYield;\n }\n\n async pause(): Promise<void> {\n await new Promise<void>(resolve => setImmediate(resolve));\n this.signal.throwIfAborted();\n this.nextYield = this.work + 4096;\n }\n}\n\nasync function splitString(source: string, environment: Readonly<Record<string, string>>, work: SplitWork): Promise<string[]> {\n work.expansion();\n work.account(source);\n const result: string[] = [];\n let parts: string[] = [];\n let active = false;\n let quote = \"\";\n const start = () => {\n if (!active) { work.argument(); active = true; }\n };\n const append = (text: string) => {\n work.account(text);\n start();\n parts.push(text);\n };\n const finish = () => {\n if (active) result.push(parts.join(\"\"));\n parts = [];\n active = false;\n };\n for (let index = 0; index < source.length;) {\n if (work.tick()) await work.pause();\n const character = String.fromCodePoint(source.codePointAt(index)!);\n if ((character === \"'\" || character === '\"') && (!quote || character === quote)) {\n start();\n quote = quote ? \"\" : character;\n index++;\n continue;\n }\n if (!quote && /[ \\t\\n\\r\\v\\f]/u.test(character)) {\n finish();\n index++;\n continue;\n }\n if (character === \"#\" && !active) break;\n if (character === \"\\\\\" && (quote !== \"'\" || source[index + 1] === \"\\\\\" || source[index + 1] === \"'\")) {\n const escaped = source[index + 1];\n if (escaped === undefined) throw new EnvSplitError(\"invalid backslash at end of string in -S\");\n index += 2;\n if (escaped === \"c\") {\n if (quote === '\"') throw new EnvSplitError(\"'\\\\c' must not appear in double-quoted -S string\");\n break;\n }\n if (escaped === \"_\") {\n if (quote === '\"') append(\" \");\n else finish();\n continue;\n }\n const controls: Readonly<Record<string, string>> = { f: \"\\f\", n: \"\\n\", r: \"\\r\", t: \"\\t\", v: \"\\v\" };\n if (Object.hasOwn(controls, escaped)) append(controls[escaped]!);\n else if ('\"#$\\'\\\\'.includes(escaped)) append(escaped);\n else throw new EnvSplitError(`invalid sequence '\\\\${escaped}' in -S`);\n continue;\n }\n if (character === \"$\" && quote !== \"'\") {\n let end = index + 2;\n if (source[index + 1] !== \"{\" || !/^[A-Za-z_]$/u.test(source[end] ?? \"\")) {\n throw new EnvSplitError(`only \\${VARNAME} expansion is supported, error at: ${source.slice(index)}`);\n }\n while (/^[A-Za-z_0-9]$/u.test(source[end] ?? \"\")) {\n if (work.tick()) await work.pause();\n end++;\n }\n if (source[end] !== \"}\") throw new EnvSplitError(`only \\${VARNAME} expansion is supported, error at: ${source.slice(index)}`);\n const name = source.slice(index + 2, end);\n if (Object.hasOwn(environment, name)) {\n const text = environment[name]!;\n append(text);\n if (work.tick(text.length)) await work.pause();\n }\n index = end + 1;\n continue;\n }\n append(character);\n index += character.length;\n }\n if (quote) throw new EnvSplitError(\"no terminating quote in -S string\");\n finish();\n return result;\n}\n\nasync function splitBytes(source: Uint8Array, environment: Readonly<Record<string, string>>, work: SplitWork): Promise<Uint8Array[]> {\n work.expansion();\n work.account(source);\n const result: Uint8Array[] = [];\n let pending: number[] = [];\n let active = false;\n let quote = 0;\n const start = () => { if (!active) { work.argument(); active = true; } };\n const append = (bytes: Uint8Array) => {\n work.account(bytes);\n start();\n for (const byte of bytes) pending.push(byte);\n };\n const finish = () => {\n if (active) result.push(Uint8Array.from(pending));\n pending = [];\n active = false;\n };\n const nameStart = (byte: number | undefined): boolean => byte !== undefined && (byte >= 65 && byte <= 90 || byte >= 97 && byte <= 122 || byte === 95);\n for (let index = 0; index < source.length;) {\n if (work.tick()) await work.pause();\n const character = source[index]!;\n if ((character === 39 || character === 34) && (!quote || character === quote)) { start(); quote = quote ? 0 : character; index++; continue; }\n if (!quote && [32, 9, 10, 13, 11, 12].includes(character)) { finish(); index++; continue; }\n if (character === 35 && !active) break;\n if (character === 92 && (quote !== 39 || source[index + 1] === 92 || source[index + 1] === 39)) {\n const escaped = source[index + 1];\n if (escaped === undefined) throw new EnvSplitError(\"invalid backslash at end of string in -S\");\n index += 2;\n if (escaped === 99) {\n if (quote === 34) throw new EnvSplitError(\"'\\\\c' must not appear in double-quoted -S string\");\n break;\n }\n if (escaped === 95) { if (quote === 34) append(Uint8Array.of(32)); else finish(); continue; }\n const controls: Readonly<Record<number, number>> = { 102: 12, 110: 10, 114: 13, 116: 9, 118: 11 };\n if (Object.hasOwn(controls, escaped)) append(Uint8Array.of(controls[escaped]!));\n else if ([34, 35, 36, 39, 92].includes(escaped)) append(Uint8Array.of(escaped));\n else throw new EnvSplitError(`invalid sequence '\\\\${String.fromCharCode(escaped)}' in -S`);\n continue;\n }\n if (character === 36 && quote !== 39) {\n let end = index + 2;\n if (source[index + 1] !== 123 || !nameStart(source[end])) throw new EnvSplitError(`only \\${VARNAME} expansion is supported, error at: ${decoder.decode(source.subarray(index))}`);\n while (nameStart(source[end]) || source[end] !== undefined && source[end]! >= 48 && source[end]! <= 57) {\n if (work.tick()) await work.pause();\n end++;\n }\n if (source[end] !== 125) throw new EnvSplitError(`only \\${VARNAME} expansion is supported, error at: ${decoder.decode(source.subarray(index))}`);\n const name = decoder.decode(source.subarray(index + 2, end));\n if (Object.hasOwn(environment, name)) {\n const text = environment[name]!;\n append(encoder.encode(text));\n if (work.tick(text.length)) await work.pause();\n }\n index = end + 1;\n continue;\n }\n append(source.subarray(index, index + 1));\n index++;\n }\n if (quote) throw new EnvSplitError(\"no terminating quote in -S string\");\n finish();\n return result;\n}\n\nexport async function parseEnvOptions(\n args: readonly string[], environment: Readonly<Record<string, string>>, signal: AbortSignal, argumentValues?: CommandArguments,\n): Promise<ParsedOptions & { readonly operandValues?: CommandArguments }> {\n const work = new SplitWork(signal);\n const incoming = argumentValues === undefined ? createCommandArguments(args) : getCommandArguments({ args, argumentValues });\n const frames: { arguments: CommandArguments; offset: number }[] = [{ arguments: incoming, offset: 0 }];\n let currentValue: ShellValue = \"\";\n const next = (): string | undefined => {\n while (frames.length) {\n const frame = frames.at(-1)!;\n if (frame.offset < frame.arguments.args.length) {\n currentValue = frame.arguments.values[frame.offset]!;\n return frame.arguments.args[frame.offset++];\n }\n frames.pop();\n }\n return undefined;\n };\n const flags = new Set<string>();\n const values = new Map<string, string[]>();\n const operands: string[] = [];\n const operandValues: ShellValue[] = [];\n const longOptions = new Map([\n [\"ignore-environment\", \"i\"], [\"unset\", \"u\"], [\"null\", \"0\"], [\"chdir\", \"C\"], [\"split-string\", \"S\"],\n ]);\n const accept = async (key: string, content?: string, source: ShellValue = content ?? \"\") => {\n if (key === \"S\") {\n const expanded = typeof source === \"string\" ? await splitString(source, environment, work) : await splitBytes(incoming.withValues([source]).bytes(0)!, environment, work);\n frames.push({ arguments: incoming.withValues(expanded), offset: 0 });\n } else {\n flags.add(key);\n if (content !== undefined) {\n const entries = values.get(key) ?? [];\n entries.push(content);\n values.set(key, entries);\n }\n }\n };\n for (;;) {\n const argument = next();\n if (argument === undefined) break;\n const argumentValue = currentValue;\n const remainder = (offset: number): ShellValue => typeof argumentValue === \"string\" ? argumentValue.slice(offset) : incoming.withValues([incoming.withValues([argumentValue]).bytes(0)!.subarray(offset)]).values[0]!;\n if (work.tick(argument.length + 1)) await work.pause();\n if (argument === \"--\") break;\n if (argument === \"-\" || !argument.startsWith(\"-\")) { operands.push(argument); operandValues.push(argumentValue); break; }\n if (argument.startsWith(\"--\")) {\n const equals = argument.indexOf(\"=\");\n const name = argument.slice(2, equals < 0 ? undefined : equals);\n const key = longOptions.get(name);\n if (!key) throw new UsageError(`unrecognized option '${argument}'`);\n const required = key === \"u\" || key === \"C\" || key === \"S\";\n if (!required && equals >= 0) throw new UsageError(`option '--${name}' does not take an argument`);\n const content = required ? equals < 0 ? next() : argument.slice(equals + 1) : undefined;\n if (required && content === undefined) throw new UsageError(`option '--${name}' requires an argument`);\n await accept(key, content, key === \"S\" ? equals < 0 ? currentValue : remainder(equals + 1) : content);\n continue;\n }\n for (let index = 1; index < argument.length; index++) {\n if (work.tick()) await work.pause();\n const key = argument[index]!;\n if (key !== \"i\" && key !== \"u\" && key !== \"0\" && key !== \"C\" && key !== \"S\") throw new UsageError(`invalid option -- '${key}'`);\n const required = key === \"u\" || key === \"C\" || key === \"S\";\n const attached = argument.slice(index + 1);\n const content = required ? attached || next() : undefined;\n if (required && content === undefined) throw new UsageError(`option requires an argument -- '${key}'`);\n await accept(key, content, key === \"S\" ? attached ? remainder(index + 1) : currentValue : content);\n if (required) break;\n }\n }\n for (;;) {\n const argument = next();\n if (argument === undefined) break;\n if (work.tick()) await work.pause();\n operands.push(argument);\n operandValues.push(currentValue);\n }\n if (operands[0] === \"-\") { flags.add(\"i\"); operands.shift(); operandValues.shift(); }\n signal.throwIfAborted();\n return { flags, values, operands, ...(argumentValues === undefined ? {} : { operandValues: incoming.withValues(operandValues) }) };\n}\n", "export interface GetoptsState {\n readonly index: number;\n readonly active?: { readonly argument: number; readonly offset: number };\n}\n\nexport interface GetoptsWork {\n readonly maxArguments: number;\n readonly maxBytes: number;\n readonly maxSteps: number;\n readonly yieldEvery: number;\n readonly signal?: AbortSignal;\n readonly checkpoint: (steps: number) => void | Promise<void>;\n}\n\nexport interface GetoptsScanOptions {\n readonly reportErrors: boolean;\n readonly work: GetoptsWork;\n}\n\nexport type GetoptsDiagnostic = {\n readonly kind: \"unknown-option\" | \"missing-argument\";\n readonly option: string;\n};\n\nexport interface GetoptsScanResult {\n readonly state: GetoptsState;\n readonly kind: \"option\" | \"unknown-option\" | \"missing-argument\" | \"end\";\n readonly status: 0 | 1;\n readonly option: string;\n readonly optind: number;\n readonly argument: { readonly kind: \"set\"; readonly value: string } | { readonly kind: \"unset\" };\n readonly diagnostic: GetoptsDiagnostic | null;\n}\n\nexport class GetoptsError extends Error {\n constructor(readonly code: \"INVALID_INPUT\" | \"NON_ASCII_OPTION\" | \"ARGUMENT_LIMIT\" | \"BYTE_LIMIT\" | \"STEP_LIMIT\", message: string) {\n super(message);\n this.name = \"GetoptsError\";\n }\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction integer(value: unknown, minimum: number, name: string): asserts value is number {\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < minimum) {\n throw new GetoptsError(\"INVALID_INPUT\", `${name} must be a safe integer >= ${minimum}`);\n }\n}\n\nexport function createGetoptsState(): GetoptsState {\n return { index: 0 };\n}\n\nexport function cloneGetoptsState(state: GetoptsState): GetoptsState {\n if (!record(state)) throw new GetoptsError(\"INVALID_INPUT\", \"Invalid getopts state\");\n integer(state.index, 0, \"index\");\n if (state.active === undefined) return { index: state.index };\n if (!record(state.active)) throw new GetoptsError(\"INVALID_INPUT\", \"Invalid getopts active cursor\");\n integer(state.active.argument, 0, \"active.argument\");\n integer(state.active.offset, 1, \"active.offset\");\n return { index: state.index, active: { argument: state.active.argument, offset: state.active.offset } };\n}\n\nexport function withGetoptsIndex(state: GetoptsState, index: number): GetoptsState {\n const copy = cloneGetoptsState(state);\n integer(index, Number.MIN_SAFE_INTEGER, \"index\");\n return index <= 1 ? createGetoptsState() : { ...copy, index };\n}\n\nclass ScanWork {\n private steps = 0;\n private pending = 0;\n private bytes = 0;\n readonly maxArguments: number;\n private readonly maxBytes: number;\n private readonly maxSteps: number;\n private readonly yieldEvery: number;\n private readonly signal: AbortSignal | undefined;\n private readonly checkpoint: GetoptsWork[\"checkpoint\"];\n\n constructor(work: GetoptsWork) {\n if (!record(work)) throw new GetoptsError(\"INVALID_INPUT\", \"Explicit getopts work controls are required\");\n integer(work.maxArguments, 0, \"maxArguments\");\n integer(work.maxBytes, 0, \"maxBytes\");\n integer(work.maxSteps, 0, \"maxSteps\");\n integer(work.yieldEvery, 1, \"yieldEvery\");\n if (typeof work.checkpoint !== \"function\") throw new GetoptsError(\"INVALID_INPUT\", \"A getopts checkpoint is required\");\n if (work.signal !== undefined && (!record(work.signal) || typeof work.signal.throwIfAborted !== \"function\" || typeof work.signal.addEventListener !== \"function\" || typeof work.signal.removeEventListener !== \"function\")) {\n throw new GetoptsError(\"INVALID_INPUT\", \"Invalid getopts signal\");\n }\n this.maxArguments = work.maxArguments;\n this.maxBytes = work.maxBytes;\n this.maxSteps = work.maxSteps;\n this.yieldEvery = work.yieldEvery;\n this.signal = work.signal;\n this.checkpoint = work.checkpoint;\n this.check();\n }\n\n check(): void {\n this.signal?.throwIfAborted();\n }\n\n step(): Promise<void> | undefined {\n this.check();\n if (this.steps === this.maxSteps) throw new GetoptsError(\"STEP_LIMIT\", \"Getopts work step limit exceeded\");\n this.steps++;\n this.pending++;\n return this.pending === this.yieldEvery ? this.flush() : undefined;\n }\n\n addBytes(count: number): void {\n if (count > this.maxBytes - this.bytes) throw new GetoptsError(\"BYTE_LIMIT\", \"Getopts input byte limit exceeded\");\n this.bytes += count;\n }\n\n async flush(): Promise<void> {\n this.check();\n if (this.pending) {\n const steps = this.pending;\n this.pending = 0;\n const pending = Promise.resolve(this.checkpoint(steps));\n const signal = this.signal;\n if (!signal) await pending;\n else await new Promise<void>((resolve, reject) => {\n const abort = () => { signal.removeEventListener(\"abort\", abort); reject(signal.reason); };\n pending.then(\n () => { signal.removeEventListener(\"abort\", abort); resolve(); },\n error => { signal.removeEventListener(\"abort\", abort); reject(error); },\n );\n if (signal.aborted) abort();\n else signal.addEventListener(\"abort\", abort, { once: true });\n });\n }\n this.check();\n }\n}\n\nasync function validateString(value: unknown, work: ScanWork, optstring = false): Promise<void> {\n if (typeof value !== \"string\") throw new GetoptsError(\"INVALID_INPUT\", \"Getopts requires string inputs\");\n for (let position = 0; position < value.length; position++) {\n const waiting = work.step();\n if (waiting) await waiting;\n const code = value.charCodeAt(position);\n if (code === 0) throw new GetoptsError(\"INVALID_INPUT\", \"Getopts inputs must not contain NUL\");\n if (optstring && code > 127) throw new GetoptsError(\"NON_ASCII_OPTION\", \"Non-ASCII getopts option specifications are unsupported\");\n if (code < 128) work.addBytes(1);\n else if (code < 2048) work.addBytes(2);\n else if (code >= 0xd800 && code <= 0xdbff && value.charCodeAt(position + 1) >= 0xdc00 && value.charCodeAt(position + 1) <= 0xdfff) work.addBytes(4);\n else if (code >= 0xdc00 && code <= 0xdfff && value.charCodeAt(position - 1) >= 0xd800 && value.charCodeAt(position - 1) <= 0xdbff) work.addBytes(0);\n else work.addBytes(3);\n }\n}\n\nexport async function scanGetopts(state: GetoptsState, optstring: string, args: readonly string[], options: GetoptsScanOptions): Promise<GetoptsScanResult> {\n if (!record(options) || typeof options.reportErrors !== \"boolean\") throw new GetoptsError(\"INVALID_INPUT\", \"Getopts requires explicit diagnostic policy and work controls\");\n const work = new ScanWork(options.work);\n const original = cloneGetoptsState(state);\n if (!Array.isArray(args)) throw new GetoptsError(\"INVALID_INPUT\", \"Getopts requires an argument array\");\n if (args.length > work.maxArguments) throw new GetoptsError(\"ARGUMENT_LIMIT\", \"Getopts argument limit exceeded\");\n const starting = work.step();\n if (starting) await starting;\n await validateString(optstring, work, true);\n for (let argument = 0; argument < args.length; argument++) {\n const waiting = work.step();\n if (waiting) await waiting;\n await validateString(args[argument], work);\n }\n const silent = optstring.startsWith(\":\");\n const specification = new Int8Array(128).fill(-1);\n for (let position = silent ? 1 : 0; position < optstring.length; position++) {\n const waiting = work.step();\n if (waiting) await waiting;\n const code = optstring.charCodeAt(position);\n if (code !== 58 && code !== 63 && specification[code] === -1) specification[code] = Number(optstring[position + 1] === \":\");\n }\n let index = original.index || 1;\n let active = original.index === 0 ? undefined : original.active;\n const finish = async (kind: GetoptsScanResult[\"kind\"], option: string, argument: GetoptsScanResult[\"argument\"], diagnostic: GetoptsDiagnostic | null): Promise<GetoptsScanResult> => {\n const waiting = work.step();\n if (waiting) await waiting;\n await work.flush();\n return { state: active === undefined ? { index } : { index, active: { ...active } }, kind, status: kind === \"end\" ? 1 : 0, option, optind: index, argument, diagnostic };\n };\n const end = (): Promise<GetoptsScanResult> => {\n active = undefined;\n return finish(\"end\", \"?\", { kind: \"unset\" }, null);\n };\n if (index > args.length) {\n index = args.length + 1;\n return end();\n }\n if (active && (args[active.argument] === undefined || active.offset >= args[active.argument]!.length)) active = undefined;\n if (!active) {\n const token = args[index - 1]!;\n if (token.length < 2 || token[0] !== \"-\") return end();\n if (token === \"--\") {\n index++;\n return end();\n }\n active = { argument: index - 1, offset: 1 };\n }\n const token = args[active.argument]!;\n const option = token[active.offset]!;\n const code = option.charCodeAt(0);\n if (code > 127) throw new GetoptsError(\"NON_ASCII_OPTION\", \"Non-ASCII getopts option characters are unsupported\");\n const offset = active.offset + 1;\n const attached = offset < token.length;\n active = attached ? { argument: active.argument, offset } : undefined;\n if (!attached) index++;\n if (specification[code] === -1) {\n return finish(\"unknown-option\", \"?\", silent ? { kind: \"set\", value: option } : { kind: \"unset\" }, !silent && options.reportErrors ? { kind: \"unknown-option\", option } : null);\n }\n if (specification[code] === 1) {\n if (attached) {\n active = undefined;\n index++;\n return finish(\"option\", option, { kind: \"set\", value: token.slice(offset) }, null);\n }\n if (index <= args.length) {\n const value = args[index - 1]!;\n index++;\n return finish(\"option\", option, { kind: \"set\", value }, null);\n }\n return finish(\"missing-argument\", silent ? \":\" : \"?\", silent ? { kind: \"set\", value: option } : { kind: \"unset\" }, !silent && options.reportErrors ? { kind: \"missing-argument\", option } : null);\n }\n return finish(\"option\", option, { kind: \"unset\" }, null);\n}\n", "export type CancellationRole = \"root-caller\" | \"invoke-option\" | \"budget-control\" | \"pipeline-control\";\n\nexport interface CancellationAdmissionSnapshot {\n readonly depth: number;\n readonly maxDepth: number;\n readonly resourceLimit: number;\n}\n\nexport interface CancellationControlOriginInput {\n readonly role: \"budget-control\" | \"pipeline-control\";\n readonly signal: AbortSignal;\n}\n\nexport interface RootCancellationInput {\n readonly admission: CancellationAdmissionSnapshot;\n readonly callerSignal?: AbortSignal | undefined;\n readonly controls?: readonly CancellationControlOriginInput[] | undefined;\n}\n\nexport interface CancellationInvokeOptions {\n readonly signal?: AbortSignal | undefined;\n}\n\nexport interface CancellationOrigin {\n readonly role: CancellationRole;\n readonly signal: AbortSignal;\n readonly frame: CancellationBoundary;\n}\n\nexport interface CancellationCloseResult {\n readonly failures: readonly unknown[];\n}\n\nconst boundaryState = Symbol(\"private cancellation boundary state\");\nconst reportState = Symbol(\"private cancellation report state\");\nconst preparedState = Symbol(\"private prepared cancellation state\");\n\nexport interface CancellationBoundary {\n readonly owned: boolean;\n readonly deliverySignal: AbortSignal;\n close(): CancellationCloseResult;\n readonly [boundaryState]: BoundaryState;\n}\n\nexport interface CancellationReport {\n readonly origin: CancellationOrigin;\n readonly [reportState]: ReportState;\n}\n\nexport interface PreparedChildCancellation {\n readonly owned: boolean;\n readonly [preparedState]: PreparedState;\n}\n\nexport type CapturedCancellationOutcome<Value> =\n | { readonly kind: \"return\"; readonly value: Value }\n | { readonly kind: \"throw\"; readonly reason: unknown; readonly report?: CancellationReport | undefined };\n\nexport type SelectedCancellationOutcome<Value> =\n | { readonly kind: \"return\"; readonly value: Value }\n | { readonly kind: \"throw\"; readonly reason: unknown };\n\nexport interface CancellationSelection<Value> {\n readonly outcome: SelectedCancellationOutcome<Value>;\n readonly report?: CancellationReport | undefined;\n}\n\nexport class CancellationCapacityError extends Error {\n constructor() {\n super(\"Cancellation resource capacity exceeded\");\n this.name = \"CancellationCapacityError\";\n }\n}\n\ninterface Subscriber {\n active: boolean;\n readonly callback: (origin: CancellationOrigin) => void;\n}\n\ninterface SignalDetacher {\n active: boolean;\n readonly signal: AbortSignal;\n readonly listener: () => void;\n}\n\ninterface LinkState {\n readonly kind: \"link\";\n boundary: CancellationBoundary;\n readonly parent: LinkState | undefined;\n readonly depth: number;\n readonly maxDepth: number;\n readonly resourceLimit: number;\n resourcesUsed: number;\n readonly controller: AbortController;\n readonly closedReason: Error;\n readonly rootCaller: CancellationOrigin | undefined;\n readonly localInvoke: CancellationOrigin | undefined;\n readonly controls: readonly CancellationOrigin[];\n delivered: CancellationOrigin | undefined;\n selected: CancellationOrigin | undefined;\n readonly signalDetachers: SignalDetacher[];\n readonly subscribers: Set<Subscriber>;\n readonly failures: unknown[];\n parentDetach: (() => void) | undefined;\n closed: boolean;\n finalized: boolean;\n notifying: number;\n closeResult: CancellationCloseResult | undefined;\n}\n\ninterface BorrowState {\n readonly kind: \"borrow\";\n readonly lineage: LinkState;\n}\n\ntype BoundaryState = LinkState | BorrowState;\n\ninterface ReportState {\n readonly target: LinkState;\n readonly origin: CancellationOrigin;\n}\n\ninterface PreparedControl {\n readonly role: \"budget-control\" | \"pipeline-control\";\n readonly signal: AbortSignal;\n}\n\ninterface PreparedState {\n readonly parent: LinkState;\n readonly localSignal: AbortSignal | undefined;\n readonly controls: readonly PreparedControl[];\n readonly admission: CancellationAdmissionSnapshot | undefined;\n readonly owned: boolean;\n readonly replayError: Error;\n activated: boolean;\n}\n\nconst emptyCloseResult: CancellationCloseResult = Object.freeze({ failures: Object.freeze([]) });\nconst nativeAbortedGetter = Object.getOwnPropertyDescriptor(AbortSignal.prototype, \"aborted\")?.get;\n\nclass Boundary implements CancellationBoundary {\n readonly [boundaryState]: BoundaryState;\n\n constructor(state: BoundaryState) { this[boundaryState] = state; }\n\n get owned(): boolean { return this[boundaryState].kind === \"link\"; }\n\n get deliverySignal(): AbortSignal {\n const state = this[boundaryState];\n return (state.kind === \"link\" ? state : state.lineage).controller.signal;\n }\n\n close(): CancellationCloseResult {\n const state = this[boundaryState];\n if (state.kind === \"borrow\") return emptyCloseResult;\n return closeLink(state);\n }\n}\n\nclass Prepared implements PreparedChildCancellation {\n readonly [preparedState]: PreparedState;\n\n constructor(state: PreparedState) { this[preparedState] = state; }\n\n get owned(): boolean { return this[preparedState].owned; }\n}\n\nfunction nativeSignal(value: unknown): value is AbortSignal {\n if (!nativeAbortedGetter) return false;\n try {\n Reflect.apply(nativeAbortedGetter, value, []);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction signalAborted(signal: AbortSignal): boolean {\n return Boolean(Reflect.apply(nativeAbortedGetter!, signal, []));\n}\n\nfunction validateSnapshot(snapshot: CancellationAdmissionSnapshot | undefined): CancellationAdmissionSnapshot {\n if (!snapshot || typeof snapshot !== \"object\") throw new TypeError(\"Cancellation admission snapshot is required\");\n const { depth, maxDepth, resourceLimit } = snapshot;\n if (!Number.isSafeInteger(depth) || !Number.isSafeInteger(maxDepth) || !Number.isSafeInteger(resourceLimit)\n || depth < 0 || maxDepth < 0 || resourceLimit < 0 || depth > maxDepth) {\n throw new RangeError(\"Cancellation admission snapshot must contain bounded safe integers\");\n }\n return { depth, maxDepth, resourceLimit };\n}\n\nfunction requireLink(boundary: CancellationBoundary): LinkState {\n if (!boundary || typeof boundary !== \"object\" || !(boundaryState in boundary)) {\n throw new TypeError(\"Expected a private cancellation boundary\");\n }\n const state = boundary[boundaryState];\n return state.kind === \"link\" ? state : state.lineage;\n}\n\nfunction ensureCapacity(state: LinkState, count = 1): void {\n if (count > state.resourceLimit - state.resourcesUsed) throw new CancellationCapacityError();\n}\n\nfunction originRank(origin: CancellationOrigin): number {\n if (origin.role === \"root-caller\") return -1;\n if (origin.role === \"invoke-option\") return requireLink(origin.frame).depth;\n return Number.POSITIVE_INFINITY;\n}\n\nfunction betterOrigin(current: CancellationOrigin | undefined, candidate: CancellationOrigin): boolean {\n if (!current) return true;\n return originRank(candidate) < originRank(current);\n}\n\nfunction deactivateSubscriber(state: LinkState, subscriber: Subscriber, release: boolean): void {\n if (!subscriber.active) return;\n subscriber.active = false;\n state.subscribers.delete(subscriber);\n if (release) state.resourcesUsed--;\n}\n\nfunction notify(state: LinkState, origin: CancellationOrigin): void {\n state.notifying++;\n try {\n for (const subscriber of [...state.subscribers]) {\n if (state.closed) break;\n if (!subscriber.active) continue;\n try { subscriber.callback(origin); }\n catch (error) {\n state.failures.push(error);\n deactivateSubscriber(state, subscriber, false);\n }\n }\n } finally {\n state.notifying--;\n if (state.closed && state.notifying === 0) finalizeClose(state);\n }\n}\n\nfunction publish(state: LinkState, origin: CancellationOrigin): void {\n if (state.closed) return;\n let changed = false;\n if (!state.delivered) {\n state.delivered = origin;\n state.controller.abort(origin.signal.reason);\n changed = true;\n }\n if (betterOrigin(state.selected, origin)) {\n state.selected = origin;\n changed = true;\n }\n if (changed) notify(state, origin);\n}\n\nfunction addSubscriber(state: LinkState, callback: (origin: CancellationOrigin) => void): () => void {\n if (state.closed) throw state.closedReason;\n ensureCapacity(state);\n const subscriber: Subscriber = { active: true, callback };\n state.resourcesUsed++;\n state.subscribers.add(subscriber);\n let detached = false;\n return () => {\n if (detached) return;\n detached = true;\n deactivateSubscriber(state, subscriber, true);\n };\n}\n\nfunction removeSignalListener(detacher: SignalDetacher): unknown[] {\n if (!detacher.active) return [];\n detacher.active = false;\n try {\n detacher.signal.removeEventListener(\"abort\", detacher.listener);\n return [];\n } catch (error) {\n return [error];\n }\n}\n\nfunction attachOrigin(state: LinkState, origin: CancellationOrigin): void {\n if (signalAborted(origin.signal)) return;\n ensureCapacity(state);\n const listener = () => publish(state, origin);\n const detacher: SignalDetacher = { active: true, signal: origin.signal, listener };\n try {\n origin.signal.addEventListener(\"abort\", listener, { once: true });\n } catch (error) {\n const rollback = removeSignalListener(detacher);\n if (rollback.length) throw new AggregateError([error, ...rollback], \"Cancellation listener initialization failed\");\n throw error;\n }\n state.resourcesUsed++;\n state.signalDetachers.push(detacher);\n if (signalAborted(origin.signal)) publish(state, origin);\n}\n\nfunction visibleOrigins(state: LinkState): CancellationOrigin[] {\n if (state.closed) {\n const fixed = state.selected ?? state.delivered;\n return fixed ? [fixed] : [];\n }\n const lineage: LinkState[] = [];\n for (let current: LinkState | undefined = state; current; current = current.parent) lineage.push(current);\n lineage.reverse();\n const origins: CancellationOrigin[] = [];\n for (const frame of lineage) {\n if (frame.closed) {\n const fixed = frame.selected ?? frame.delivered;\n if (fixed) origins.push(fixed);\n continue;\n }\n if (frame.rootCaller && signalAborted(frame.rootCaller.signal)) origins.push(frame.rootCaller);\n if (frame.localInvoke && signalAborted(frame.localInvoke.signal)) origins.push(frame.localInvoke);\n for (const control of frame.controls) if (signalAborted(control.signal)) origins.push(control);\n if (frame.selected && !origins.includes(frame.selected)) origins.push(frame.selected);\n if (frame.delivered && !origins.includes(frame.delivered)) origins.push(frame.delivered);\n }\n return origins;\n}\n\nfunction admissionOrigins(state: LinkState): CancellationOrigin[] {\n const lineage: LinkState[] = [];\n for (let current: LinkState | undefined = state; current; current = current.parent) lineage.push(current);\n lineage.reverse();\n const origins: CancellationOrigin[] = [];\n for (const frame of lineage) {\n if (frame.rootCaller && signalAborted(frame.rootCaller.signal)) origins.push(frame.rootCaller);\n if (frame.localInvoke && signalAborted(frame.localInvoke.signal)) origins.push(frame.localInvoke);\n const deliveredControl = frame.delivered?.role === \"budget-control\" || frame.delivered?.role === \"pipeline-control\"\n ? frame.delivered\n : undefined;\n if (deliveredControl && signalAborted(deliveredControl.signal)) origins.push(deliveredControl);\n for (const control of frame.controls) {\n if (signalAborted(control.signal) && control !== deliveredControl) origins.push(control);\n }\n }\n return origins;\n}\n\nfunction bestVisibleOrigin(state: LinkState): CancellationOrigin | undefined {\n const origins = visibleOrigins(state);\n const root = origins.find(origin => origin.role === \"root-caller\");\n if (root) return root;\n const invokes = origins.filter(origin => origin.role === \"invoke-option\");\n invokes.sort((left, right) => originRank(left) - originRank(right));\n return invokes[0] ?? origins.find(origin => origin.role === \"budget-control\" || origin.role === \"pipeline-control\");\n}\n\nfunction admissionFailure(state: LinkState): { readonly failed: boolean; readonly reason: unknown } {\n const origins = admissionOrigins(state);\n const root = origins.find(origin => origin.role === \"root-caller\");\n const invokes = origins.filter(origin => origin.role === \"invoke-option\")\n .sort((left, right) => originRank(left) - originRank(right));\n const origin = root ?? invokes[0]\n ?? origins.find(candidate => candidate.role === \"budget-control\" || candidate.role === \"pipeline-control\");\n if (origin) return { failed: true, reason: origin.signal.reason };\n if (state.closed) return { failed: true, reason: state.closedReason };\n return { failed: false, reason: undefined };\n}\n\nfunction throwAdmissionFailure(state: LinkState): void {\n const failure = admissionFailure(state);\n if (failure.failed) throw failure.reason;\n}\n\nfunction initializeState(\n parent: LinkState | undefined,\n admission: CancellationAdmissionSnapshot,\n): LinkState {\n const controller = new AbortController();\n const state: LinkState = {\n kind: \"link\",\n boundary: undefined as unknown as CancellationBoundary,\n parent,\n depth: admission.depth,\n maxDepth: admission.maxDepth,\n resourceLimit: admission.resourceLimit,\n resourcesUsed: 1,\n controller,\n closedReason: new Error(\"Cancellation admission is closed\"),\n rootCaller: undefined,\n localInvoke: undefined,\n controls: [],\n delivered: undefined,\n selected: undefined,\n signalDetachers: [],\n subscribers: new Set(),\n failures: [],\n parentDetach: undefined,\n closed: false,\n finalized: false,\n notifying: 0,\n closeResult: undefined,\n };\n state.boundary = new Boundary(state);\n return state;\n}\n\nfunction finalizeClose(state: LinkState): void {\n if (state.finalized) return;\n state.finalized = true;\n for (const detacher of state.signalDetachers) state.failures.push(...removeSignalListener(detacher));\n state.signalDetachers.length = 0;\n state.parentDetach?.();\n state.parentDetach = undefined;\n for (const subscriber of [...state.subscribers]) deactivateSubscriber(state, subscriber, true);\n state.subscribers.clear();\n state.resourcesUsed = 0;\n Object.freeze(state.failures);\n Object.freeze(state.closeResult!);\n}\n\nfunction closeLink(state: LinkState): CancellationCloseResult {\n if (state.closeResult) return state.closeResult;\n state.closed = true;\n state.closeResult = { failures: state.failures };\n if (state.notifying === 0) finalizeClose(state);\n return state.closeResult;\n}\n\nfunction rollbackState(state: LinkState): unknown[] {\n state.closed = true;\n const failures: unknown[] = [];\n for (const detacher of state.signalDetachers) failures.push(...removeSignalListener(detacher));\n state.signalDetachers.length = 0;\n try { state.parentDetach?.(); } catch (error) { failures.push(error); }\n state.parentDetach = undefined;\n for (const subscriber of [...state.subscribers]) deactivateSubscriber(state, subscriber, true);\n state.subscribers.clear();\n state.resourcesUsed = 0;\n state.finalized = true;\n return failures;\n}\n\nfunction stagedFailure(state: LinkState, reason: unknown): never {\n throwAdmissionFailure(state);\n throw reason;\n}\n\nfunction prepareControls(\n parent: LinkState,\n controls: readonly CancellationControlOriginInput[] | undefined,\n): readonly PreparedControl[] {\n if (controls === undefined) return Object.freeze([]);\n if (!Array.isArray(controls)) return stagedFailure(parent, new TypeError(\"Cancellation controls must be an array\"));\n const prepared: PreparedControl[] = [];\n for (const input of controls) {\n let role: unknown;\n let signal: unknown;\n try {\n if (!input || typeof input !== \"object\") throw new TypeError(\"Invalid cancellation control origin\");\n role = input.role;\n signal = input.signal;\n } catch (error) {\n return stagedFailure(parent, error);\n }\n if (role !== \"budget-control\" && role !== \"pipeline-control\" || !nativeSignal(signal)) {\n return stagedFailure(parent, new TypeError(\"Invalid cancellation control origin\"));\n }\n prepared.push(Object.freeze({ role, signal }));\n }\n throwAdmissionFailure(parent);\n return Object.freeze(prepared);\n}\n\nfunction makePrepared(\n parent: LinkState,\n localSignal: AbortSignal | undefined,\n controls: readonly PreparedControl[],\n admission: CancellationAdmissionSnapshot | undefined,\n): PreparedChildCancellation {\n const state: PreparedState = {\n parent,\n localSignal,\n controls,\n admission,\n owned: localSignal !== undefined || controls.length > 0,\n replayError: new Error(\"Prepared cancellation admission was already activated\"),\n activated: false,\n };\n return new Prepared(state);\n}\n\nfunction localActivationFailure(state: PreparedState): { readonly failed: boolean; readonly reason: unknown } {\n const ancestor = admissionFailure(state.parent);\n if (ancestor.failed) return ancestor;\n if (state.localSignal && signalAborted(state.localSignal)) {\n return { failed: true, reason: state.localSignal.reason };\n }\n const control = state.controls.find(candidate => signalAborted(candidate.signal));\n if (control) return { failed: true, reason: control.signal.reason };\n return { failed: false, reason: undefined };\n}\n\nfunction throwLocalActivationFailure(state: PreparedState): void {\n const failure = localActivationFailure(state);\n if (failure.failed) throw failure.reason;\n}\n\nexport function prepareChildCancellation(\n parent: CancellationBoundary,\n options?: CancellationInvokeOptions,\n snapshot?: CancellationAdmissionSnapshot,\n controls?: readonly CancellationControlOriginInput[],\n): PreparedChildCancellation {\n const parentState = requireLink(parent);\n throwAdmissionFailure(parentState);\n\n let localSignal: AbortSignal | undefined;\n if (options !== undefined) {\n if (options === null || typeof options !== \"object\" && typeof options !== \"function\") {\n return stagedFailure(parentState, new TypeError(\"Cancellation options must be an object or function\"));\n }\n let candidate: unknown;\n try { candidate = options.signal; }\n catch (error) { return stagedFailure(parentState, error); }\n throwAdmissionFailure(parentState);\n if (candidate !== undefined && !nativeSignal(candidate)) {\n return stagedFailure(parentState, new TypeError(\"Cancellation signal must be an AbortSignal\"));\n }\n localSignal = candidate;\n throwAdmissionFailure(parentState);\n if (localSignal !== undefined && signalAborted(localSignal)) throw localSignal.reason;\n }\n\n const preparedControls = prepareControls(parentState, controls);\n if (localSignal === undefined && preparedControls.length === 0) {\n return makePrepared(parentState, undefined, preparedControls, undefined);\n }\n\n let admission: CancellationAdmissionSnapshot;\n try { admission = validateSnapshot(snapshot); }\n catch (error) { return stagedFailure(parentState, error); }\n throwAdmissionFailure(parentState);\n if (admission.depth <= parentState.depth || admission.maxDepth !== parentState.maxDepth) {\n throw new RangeError(\"Cancellation child depth must advance within its supplied maximum\");\n }\n const required = 1\n + Number(localSignal !== undefined)\n + preparedControls.filter(control => !signalAborted(control.signal)).length;\n if (admission.resourceLimit < required) throw new CancellationCapacityError();\n ensureCapacity(parentState);\n return makePrepared(parentState, localSignal, preparedControls, admission);\n}\n\nexport function activateChildCancellation(prepared: PreparedChildCancellation): CancellationBoundary {\n if (!prepared || typeof prepared !== \"object\" || !(preparedState in prepared)) {\n throw new TypeError(\"Expected a private prepared cancellation admission\");\n }\n const preparation = prepared[preparedState];\n if (preparation.activated) throw preparation.replayError;\n preparation.activated = true;\n\n throwLocalActivationFailure(preparation);\n if (!preparation.owned) return new Boundary({ kind: \"borrow\", lineage: preparation.parent });\n\n const admission = preparation.admission!;\n const required = 1\n + Number(preparation.localSignal !== undefined)\n + preparation.controls.filter(control => !signalAborted(control.signal)).length;\n if (admission.resourceLimit < required) throw new CancellationCapacityError();\n ensureCapacity(preparation.parent);\n throwLocalActivationFailure(preparation);\n\n const state = initializeState(preparation.parent, admission);\n if (preparation.localSignal) {\n (state as { localInvoke: CancellationOrigin | undefined }).localInvoke = Object.freeze({\n role: \"invoke-option\",\n signal: preparation.localSignal,\n frame: state.boundary,\n });\n }\n (state as { controls: readonly CancellationOrigin[] }).controls = Object.freeze(preparation.controls.map(control => Object.freeze({\n role: control.role,\n signal: control.signal,\n frame: state.boundary,\n })));\n\n try {\n state.parentDetach = addSubscriber(preparation.parent, inherited => publish(state, inherited));\n if (state.localInvoke) attachOrigin(state, state.localInvoke);\n for (const control of state.controls) attachOrigin(state, control);\n throwAdmissionFailure(preparation.parent);\n const inherited = preparation.parent.selected ?? preparation.parent.delivered;\n if (inherited) publish(state, inherited);\n const cancellation = admissionFailure(state);\n if (cancellation.failed) throw cancellation.reason;\n return state.boundary;\n } catch (error) {\n const cancellation = admissionFailure(state);\n const rollback = rollbackState(state);\n const ancestor = admissionFailure(preparation.parent);\n if (ancestor.failed) throw ancestor.reason;\n if (cancellation.failed) throw cancellation.reason;\n if (rollback.length) {\n throw new AggregateError([error, ...rollback], \"Cancellation child activation failed\");\n }\n throw error;\n }\n}\n\nexport function createRootCancellationLink(input: RootCancellationInput): CancellationBoundary {\n if (!input || typeof input !== \"object\") throw new TypeError(\"Root cancellation input is required\");\n const admission = validateSnapshot(input.admission);\n if (admission.depth !== 0) throw new RangeError(\"Root cancellation depth must be zero\");\n if (input.callerSignal !== undefined && !nativeSignal(input.callerSignal)) throw new TypeError(\"Root caller signal must be an AbortSignal\");\n const controls = input.controls ?? [];\n if (!Array.isArray(controls)) throw new TypeError(\"Cancellation controls must be an array\");\n for (const control of controls) {\n if (!control || typeof control !== \"object\"\n || control.role !== \"budget-control\" && control.role !== \"pipeline-control\"\n || !nativeSignal(control.signal)) throw new TypeError(\"Invalid cancellation control origin\");\n }\n const required = 1\n + Number(input.callerSignal !== undefined && !signalAborted(input.callerSignal))\n + controls.filter(control => !signalAborted(control.signal)).length;\n if (admission.resourceLimit < required) throw new CancellationCapacityError();\n const state = initializeState(undefined, admission);\n (state as { rootCaller: CancellationOrigin | undefined }).rootCaller = input.callerSignal === undefined\n ? undefined\n : Object.freeze({ role: \"root-caller\", signal: input.callerSignal, frame: state.boundary });\n (state as { controls: readonly CancellationOrigin[] }).controls = Object.freeze(controls.map(control => Object.freeze({\n role: control.role,\n signal: control.signal,\n frame: state.boundary,\n })));\n try {\n if (state.rootCaller) attachOrigin(state, state.rootCaller);\n for (const control of state.controls) attachOrigin(state, control);\n const preaborted = bestVisibleOrigin(state);\n if (preaborted) publish(state, preaborted);\n return state.boundary;\n } catch (error) {\n const rollback = rollbackState(state);\n if (rollback.length) throw new AggregateError([error, ...rollback], \"Cancellation root initialization failed\");\n throw error;\n }\n}\n\nexport function admitChildCancellation(\n parent: CancellationBoundary,\n options?: CancellationInvokeOptions,\n snapshot?: CancellationAdmissionSnapshot,\n): CancellationBoundary {\n const parentState = requireLink(parent);\n throwAdmissionFailure(parentState);\n if (options === undefined) return new Boundary({ kind: \"borrow\", lineage: parentState });\n if (options === null || typeof options !== \"object\" && typeof options !== \"function\") {\n return stagedFailure(parentState, new TypeError(\"Cancellation options must be an object or function\"));\n }\n let localSignal: unknown;\n try { localSignal = (options as CancellationInvokeOptions).signal; }\n catch (error) { return stagedFailure(parentState, error); }\n throwAdmissionFailure(parentState);\n if (localSignal === undefined) return new Boundary({ kind: \"borrow\", lineage: parentState });\n if (!nativeSignal(localSignal)) return stagedFailure(parentState, new TypeError(\"Cancellation signal must be an AbortSignal\"));\n throwAdmissionFailure(parentState);\n if (signalAborted(localSignal)) throw localSignal.reason;\n let admission: CancellationAdmissionSnapshot;\n try { admission = validateSnapshot(snapshot); }\n catch (error) { return stagedFailure(parentState, error); }\n throwAdmissionFailure(parentState);\n if (admission.depth <= parentState.depth || admission.maxDepth !== parentState.maxDepth) {\n throw new RangeError(\"Cancellation child depth must advance within its supplied maximum\");\n }\n if (admission.resourceLimit < 2) throw new RangeError(\"Owned cancellation admission requires two local resource slots\");\n ensureCapacity(parentState);\n const state = initializeState(parentState, admission);\n const origin: CancellationOrigin = Object.freeze({ role: \"invoke-option\", signal: localSignal, frame: state.boundary });\n (state as { localInvoke: CancellationOrigin | undefined }).localInvoke = origin;\n try {\n state.parentDetach = addSubscriber(parentState, inherited => publish(state, inherited));\n attachOrigin(state, origin);\n throwAdmissionFailure(parentState);\n if (signalAborted(localSignal)) throw localSignal.reason;\n const inherited = parentState.selected ?? parentState.delivered;\n if (inherited) publish(state, inherited);\n return state.boundary;\n } catch (error) {\n const rollback = rollbackState(state);\n const ancestor = admissionFailure(parentState);\n if (ancestor.failed) throw ancestor.reason;\n if (rollback.length) throw new AggregateError([error, ...rollback], \"Cancellation child initialization failed\");\n throw error;\n }\n}\n\nexport function subscribeCancellation(\n boundary: CancellationBoundary,\n callback: (origin: CancellationOrigin) => void,\n): () => void {\n if (typeof callback !== \"function\") throw new TypeError(\"Cancellation subscriber must be callable\");\n const state = boundary[boundaryState];\n if (state.kind === \"borrow\") throw new TypeError(\"Borrowed cancellation boundaries cannot own subscriptions\");\n return addSubscriber(state, callback);\n}\n\nfunction validReport(boundary: BoundaryState, captured: CapturedCancellationOutcome<unknown>): CancellationOrigin | undefined {\n if (captured.kind !== \"throw\" || !captured.report || !(reportState in captured.report)) return undefined;\n const report = captured.report[reportState];\n const target = boundary.kind === \"link\" ? boundary : boundary.lineage;\n if (report.target !== target || !Object.is(captured.reason, report.origin.signal.reason)) return undefined;\n return report.origin;\n}\n\nfunction matchingVisibleOrigin(state: LinkState, reason: unknown): CancellationOrigin | undefined {\n return visibleOrigins(state).find(origin => Object.is(reason, origin.signal.reason));\n}\n\nfunction selectionReport(boundary: BoundaryState, origin: CancellationOrigin): CancellationReport | undefined {\n const lineage = boundary.kind === \"link\" ? boundary : boundary.lineage;\n const target = boundary.kind === \"borrow\" ? lineage : lineage.parent;\n if (!target) return undefined;\n const state: ReportState = Object.freeze({ target, origin });\n return Object.freeze({ origin, [reportState]: state });\n}\n\nfunction throwingSelection<Value>(\n boundary: BoundaryState,\n reason: unknown,\n origin?: CancellationOrigin,\n): CancellationSelection<Value> {\n const outcome: SelectedCancellationOutcome<Value> = { kind: \"throw\", reason };\n const report = origin ? selectionReport(boundary, origin) : undefined;\n return report ? { outcome, report } : { outcome };\n}\n\nexport function selectCancellationOutcome<Value>(\n boundary: CancellationBoundary,\n captured: CapturedCancellationOutcome<Value>,\n): CancellationSelection<Value> {\n if (!captured || typeof captured !== \"object\" || captured.kind !== \"return\" && captured.kind !== \"throw\") {\n throw new TypeError(\"A captured return or throw outcome is required\");\n }\n const state = boundary[boundaryState];\n const lineage = state.kind === \"link\" ? state : state.lineage;\n const origins = visibleOrigins(lineage);\n const root = origins.find(origin => origin.role === \"root-caller\");\n if (root) return throwingSelection(state, root.signal.reason, root);\n\n const reported = validReport(state, captured as CapturedCancellationOutcome<unknown>);\n const matching = captured.kind === \"throw\" ? matchingVisibleOrigin(lineage, captured.reason) : undefined;\n const classified = reported ?? matching;\n const invokeMatch = classified?.role === \"invoke-option\";\n if (captured.kind === \"throw\" && !invokeMatch) {\n return throwingSelection(state, captured.reason, classified);\n }\n\n const invokes = origins.filter(origin => origin.role === \"invoke-option\");\n if (reported?.role === \"invoke-option\" && !invokes.includes(reported)) invokes.push(reported);\n invokes.sort((left, right) => originRank(left) - originRank(right));\n const selectedInvoke = invokes[0];\n if (selectedInvoke) return throwingSelection(state, selectedInvoke.signal.reason, selectedInvoke);\n if (captured.kind === \"throw\") return throwingSelection(state, captured.reason, classified);\n return { outcome: { kind: \"return\", value: captured.value } };\n}\n\nexport function selectRuntimeCancellationOutcome<Value>(\n boundary: CancellationBoundary,\n captured: CapturedCancellationOutcome<Value>,\n observedOrigin?: CancellationOrigin,\n): CancellationSelection<Value> {\n if (!captured || typeof captured !== \"object\" || captured.kind !== \"return\" && captured.kind !== \"throw\") {\n throw new TypeError(\"A captured return or throw outcome is required\");\n }\n if (!boundary || typeof boundary !== \"object\" || !(boundaryState in boundary)) {\n throw new TypeError(\"Expected a private cancellation boundary\");\n }\n const state = boundary[boundaryState];\n const lineage = state.kind === \"link\" ? state : state.lineage;\n const origins = visibleOrigins(lineage);\n const root = origins.find(origin => origin.role === \"root-caller\");\n if (root) return throwingSelection(state, root.signal.reason, root);\n\n const reported = validReport(state, captured as CapturedCancellationOutcome<unknown>);\n const observed = captured.kind === \"throw\"\n && observedOrigin !== undefined\n && origins.includes(observedOrigin)\n && Object.is(captured.reason, observedOrigin.signal.reason)\n ? observedOrigin\n : undefined;\n const classified = reported ?? observed;\n\n if (captured.kind === \"throw\" && classified?.role !== \"invoke-option\") {\n return throwingSelection(state, captured.reason, classified);\n }\n\n const invokes = origins.filter(origin => origin.role === \"invoke-option\");\n if (classified?.role === \"invoke-option\" && !invokes.includes(classified)) invokes.push(classified);\n invokes.sort((left, right) => originRank(left) - originRank(right));\n const selectedInvoke = invokes[0];\n if (captured.kind === \"return\") {\n return selectedInvoke\n ? throwingSelection(state, selectedInvoke.signal.reason, selectedInvoke)\n : { outcome: { kind: \"return\", value: captured.value } };\n }\n if (selectedInvoke) return throwingSelection(state, selectedInvoke.signal.reason, selectedInvoke);\n return throwingSelection(state, captured.reason, classified);\n}\n", "export class ArrayFailure extends Error {\n constructor(detail: string) { super(`indexed array: ${detail}`); }\n}\n\nexport interface Charge {\n readonly wrappers?: number;\n readonly slots?: number;\n readonly payload?: number;\n readonly metadata?: number;\n readonly allocatedSlots?: number;\n readonly work?: number;\n readonly generation?: boolean | number;\n readonly version?: boolean | number;\n readonly epoch?: boolean | number;\n}\n\nexport interface Tickets {\n readonly generation: number;\n readonly version: number;\n readonly epoch: number;\n}\n\nconst labels = [\"wrapper\", \"Map slot\", \"payload\", \"metadata\", \"allocated byte\", \"allocated slot\", \"work\"] as const;\ntype Counters = [number, number, number, number, number, number, number];\n\nexport class Admission implements Tickets {\n previous: Admission | undefined;\n next: Admission | undefined;\n owner: ArrayOwner | undefined;\n released = false;\n cleanup: (() => void) | undefined;\n restorationReferences = 0;\n\n constructor(\n readonly ledger: ArrayLedger,\n readonly wrappers: number,\n readonly slots: number,\n readonly payload: number,\n readonly metadata: number,\n readonly generation: number,\n readonly version: number,\n readonly epoch: number,\n ) {}\n\n release(): void {\n if (this.released) return;\n this.released = true;\n this.cleanup?.();\n this.owner?.detach(this);\n this.ledger.release(this);\n }\n}\n\nexport class ArrayLedger {\n #caps: Counters | undefined;\n #used: Counters = [0, 0, 0, 0, 0, 0, 0];\n #sequence = { lastIssued: 0 };\n #checkpoint = 0;\n\n constructor(readonly bytes: number, readonly fields: number, initialTicket = 0) {\n if (!Number.isSafeInteger(initialTicket) || initialTicket < 0) throw new RangeError(\"Invalid private initial ticket\");\n this.#sequence.lastIssued = initialTicket;\n }\n\n internal(commandLimit: number): ArrayLedger {\n const requested = BigInt(commandLimit) + 1n;\n const maximum = BigInt(Number.MAX_SAFE_INTEGER) / 33024n;\n const units = requested < maximum ? requested : maximum;\n const ledger = new ArrayLedger(Number(32n * units), Number(64n * units));\n ledger.#sequence = this.#sequence;\n return ledger;\n }\n\n get active(): boolean { return this.#caps !== undefined; }\n\n snapshot(): { readonly caps: readonly number[] | undefined; readonly used: readonly number[]; readonly lastIssued: number } {\n return { caps: this.#caps?.slice(), used: this.#used.slice(), lastIssued: this.#sequence.lastIssued };\n }\n\n reserve(charge: Charge = {}): Admission {\n const caps = this.#caps ?? this.derive();\n let cursor = this.#sequence.lastIssued;\n const ticket = (requested: boolean | number | undefined, label: string): number => {\n if (!requested) return 0;\n const count = requested === true ? 1 : requested;\n if (!Number.isSafeInteger(count) || count < 0 || count > Number.MAX_SAFE_INTEGER - cursor) throw new ArrayFailure(`private ${label} capacity exhausted`);\n cursor += count;\n return cursor;\n };\n const generation = ticket(charge.generation, \"generation\");\n const version = ticket(charge.version, \"version\");\n const epoch = ticket(charge.epoch, \"epoch\");\n const wrappers = charge.wrappers ?? 0;\n const slots = charge.slots ?? 0;\n const payload = charge.payload ?? 0;\n const metadataRequest = BigInt(charge.metadata ?? 0) + 64n;\n const allocatedSlots = charge.allocatedSlots ?? slots;\n const work = BigInt(charge.work ?? 0) + 15n;\n const requested = [BigInt(wrappers), BigInt(slots), BigInt(payload), metadataRequest, BigInt(payload) + metadataRequest, BigInt(allocatedSlots), work];\n for (let index = 0; index < requested.length; index++) {\n const amount = requested[index]!;\n if (amount < 0n || amount > BigInt(caps[index]! - this.#used[index]!)) {\n throw new ArrayFailure(`private ${labels[index]} limit exceeded`);\n }\n }\n this.#caps = caps;\n this.#sequence.lastIssued = cursor;\n for (let index = 0; index < requested.length; index++) this.#used[index]! += Number(requested[index]!);\n return new Admission(this, wrappers, slots, payload, Number(metadataRequest), generation, version, epoch);\n }\n\n private derive(): Counters {\n const bytes = BigInt(this.bytes);\n const fields = BigInt(this.fields);\n const values = [fields, fields, bytes, 128n * fields, 8n * bytes + 512n * fields, 8n * fields, 32n * bytes + 256n * fields];\n const result: Counters = [0, 0, 0, 0, 0, 0, 0];\n for (let index = 0; index < values.length; index++) {\n const value = values[index]!;\n if (value < 0n || value > BigInt(Number.MAX_SAFE_INTEGER)) throw new ArrayFailure(`private ${labels[index]} capacity is not representable`);\n result[index] = Number(value);\n }\n return result;\n }\n\n release(admission: Admission): void {\n this.#used[0] -= admission.wrappers;\n this.#used[1] -= admission.slots;\n this.#used[2] -= admission.payload;\n this.#used[3] -= admission.metadata;\n }\n\n checkpoint(signal?: AbortSignal, units = 1): Promise<void> | undefined {\n signal?.throwIfAborted();\n this.#checkpoint += units;\n if (this.#checkpoint >= 128) {\n this.#checkpoint %= 128;\n return new Promise<void>((resolve, reject) => setImmediate(() => {\n try { signal?.throwIfAborted(); resolve(); }\n catch (error) { reject(error); }\n }));\n }\n }\n}\n\nexport function exactSum(left: number, right: number): number {\n if (!Number.isSafeInteger(left) || !Number.isSafeInteger(right) || left < 0 || right < 0 || left > Number.MAX_SAFE_INTEGER - right) {\n throw new ArrayFailure(\"private allocated byte capacity is not representable\");\n }\n return left + right;\n}\n\nexport class ArrayOwner {\n #head: Admission | undefined;\n #firstChild: ArrayOwner | undefined;\n #nextSibling: ArrayOwner | undefined;\n #previousSibling: ArrayOwner | undefined;\n #closed = false;\n #started = false;\n #resolve!: () => void;\n #reject!: (error: unknown) => void;\n #holds = 0;\n #resolveIdle!: () => void;\n readonly #idle: Promise<void>;\n #releasing = false;\n readonly completion: Promise<void>;\n\n private constructor(readonly ledger: ArrayLedger, readonly parent: ArrayOwner | undefined, readonly header: Admission) {\n this.completion = new Promise<void>((resolve, reject) => { this.#resolve = resolve; this.#reject = reject; });\n this.#idle = new Promise<void>(resolve => { this.#resolveIdle = resolve; });\n void this.completion.catch(() => undefined);\n }\n\n static create(ledger: ArrayLedger, parent?: ArrayOwner): ArrayOwner {\n parent?.assertOpen();\n const header = ledger.reserve({ metadata: 64, work: 9 });\n const owner = new ArrayOwner(ledger, parent, header);\n if (parent) {\n owner.#nextSibling = parent.#firstChild;\n if (parent.#firstChild) parent.#firstChild.#previousSibling = owner;\n parent.#firstChild = owner;\n }\n return owner;\n }\n\n assertOpen(): void {\n if (this.#closed) throw new ArrayFailure(\"ownership admission is closed\");\n this.parent?.assertOpen();\n }\n\n reserve(charge: Charge): Admission {\n this.assertOpen();\n return this.adopt(this.ledger.reserve(charge));\n }\n\n adopt(admission: Admission, prepaid = false): Admission {\n const root = this.root();\n if (!prepaid || !root.#holds || root.#releasing) this.assertOpen();\n if (admission.released || admission.ledger !== this.ledger) throw new Error(\"Invalid indexed-array ownership transfer\");\n admission.owner?.detach(admission);\n admission.owner = this;\n admission.previous = undefined;\n admission.next = this.#head;\n if (this.#head) this.#head.previous = admission;\n this.#head = admission;\n return admission;\n }\n\n private root(): ArrayOwner {\n let root: ArrayOwner = this;\n while (root.parent) root = root.parent;\n return root;\n }\n\n hold(): Admission {\n this.assertOpen();\n const root = this.root();\n if (root.#holds === Number.MAX_SAFE_INTEGER) throw new ArrayFailure(\"resource capacity exhausted\");\n const admission = this.reserve({ metadata: 64, work: 5 });\n root.#holds++;\n admission.cleanup = () => {\n root.#holds--;\n if (!root.#holds && root.#closed) root.#resolveIdle();\n };\n return admission;\n }\n\n detach(admission: Admission): void {\n if (admission.previous) admission.previous.next = admission.next;\n else this.#head = admission.next;\n if (admission.next) admission.next.previous = admission.previous;\n admission.owner = undefined;\n admission.previous = undefined;\n admission.next = undefined;\n }\n\n close(): Promise<void> {\n if (!this.#started) {\n this.#started = true;\n this.#closed = true;\n void this.drain().then(this.#resolve, this.#reject);\n }\n return this.completion;\n }\n\n private async drain(): Promise<void> {\n if (!this.parent) {\n if (this.#holds) await this.#idle;\n this.#releasing = true;\n }\n while (this.#firstChild) {\n await this.#firstChild.close();\n const checkpoint = this.ledger.checkpoint();\n if (checkpoint) await checkpoint;\n }\n while (this.#head) {\n this.#head.release();\n const checkpoint = this.ledger.checkpoint();\n if (checkpoint) await checkpoint;\n }\n if (this.parent) {\n if (this.#previousSibling) this.#previousSibling.#nextSibling = this.#nextSibling;\n else this.parent.#firstChild = this.#nextSibling;\n if (this.#nextSibling) this.#nextSibling.#previousSibling = this.#previousSibling;\n }\n this.header.release();\n }\n}\n", "import { Admission, ArrayFailure, ArrayOwner, exactSum } from \"./ledger.js\";\nimport type { Tickets } from \"./ledger.js\";\n\nexport const controlNames: ReadonlySet<string> = new Set([\n \"PATH\", \"PWD\", \"OLDPWD\", \"HOME\", \"CDPATH\", \"IFS\", \"OPTIND\", \"OPTERR\", \"OPTARG\", \"REPLY\", \"LANG\", \"LC_ALL\", \"LC_CTYPE\",\n]);\n\nexport class OwnedText {\n references = 1;\n\n constructor(readonly value: string, readonly bytes: number, readonly admission: Admission) {}\n\n retain(): this {\n if (this.references === Number.MAX_SAFE_INTEGER) throw new ArrayFailure(\"reference capacity is not representable\");\n this.references++;\n return this;\n }\n\n release(): void {\n if (--this.references === 0) this.admission.release();\n }\n}\n\nexport async function textToken(owner: ArrayOwner, value: string, signal: AbortSignal): Promise<OwnedText> {\n let bytes = 0;\n for (let offset = 0; offset < value.length;) {\n const end = Math.min(value.length, offset + 64);\n owner.reserve({ work: end - offset }).release();\n while (offset < end) {\n const code = value.codePointAt(offset)!;\n bytes = exactSum(bytes, code <= 0x7f ? 1 : code <= 0x7ff ? 2 : code <= 0xffff ? 3 : 4);\n offset += code > 0xffff ? 2 : 1;\n }\n await owner.ledger.checkpoint(signal, 64);\n }\n const admission = owner.reserve({ payload: bytes, metadata: 32, work: 4 });\n return new OwnedText(value, bytes, admission);\n}\n\nexport interface Element {\n readonly text: OwnedText;\n readonly slot: Admission;\n}\n\nexport class IndexedBinding {\n readonly values = new Map<number, Element>();\n maximum = -1;\n generation = 0;\n version = 0;\n references = 1;\n\n private constructor(readonly owner: ArrayOwner) {}\n\n static create(parent: ArrayOwner): IndexedBinding {\n const owner = ArrayOwner.create(parent.ledger, parent);\n try {\n owner.reserve({ wrappers: 1, metadata: 128, work: 7 });\n return new IndexedBinding(owner);\n } catch (error) {\n void owner.close();\n throw error;\n }\n }\n\n get(index: number): string | undefined { return this.values.get(index)?.text.value; }\n\n retain(): this {\n if (this.references === Number.MAX_SAFE_INTEGER) throw new ArrayFailure(\"reference capacity is not representable\");\n this.references++;\n return this;\n }\n\n release(): Promise<void> | undefined {\n if (--this.references === 0) return this.owner.close();\n return undefined;\n }\n\n insert(index: number, text: OwnedText): void {\n const slot = this.owner.reserve({ slots: 1, metadata: 32, work: 5 });\n const previous = this.values.get(index);\n const element = { text, slot };\n slot.cleanup = () => {\n if (this.values.get(index) === element) this.values.delete(index);\n text.release();\n };\n this.values.set(index, element);\n if (index > this.maximum) this.maximum = index;\n previous?.slot.release();\n }\n\n async copy(signal: AbortSignal): Promise<IndexedBinding> {\n const copy = IndexedBinding.create(this.owner.parent!);\n this.retain();\n try {\n for (const [index, element] of this.values) {\n copy.owner.reserve({ work: 2 }).release();\n const slot = copy.owner.reserve({ slots: 1, metadata: 32, work: 5 });\n const text = element.text.retain();\n const cloned = { text, slot };\n slot.cleanup = () => { if (copy.values.get(index) === cloned) copy.values.delete(index); text.release(); };\n copy.values.set(index, cloned);\n if (index > copy.maximum) copy.maximum = index;\n await copy.owner.ledger.checkpoint(signal, 2);\n }\n return copy;\n } catch (error) { await copy.release(); throw error; }\n finally { await this.release(); }\n }\n\n async indices(owner: ArrayOwner, signal: AbortSignal): Promise<number[]> {\n const size = this.values.size;\n owner.reserve({ metadata: exactSum(128, size * 64), allocatedSlots: size * 2, work: size * 4 + 6 });\n let indices: number[] = [];\n let scratch: number[] = [];\n for (const index of this.values.keys()) {\n indices.push(index);\n await owner.ledger.checkpoint(signal);\n }\n for (let width = 1; width < size; width *= 2) {\n for (let start = 0; start < size; start += width * 2) {\n let left = start;\n let right = Math.min(size, start + width);\n const leftEnd = right;\n const rightEnd = Math.min(size, start + width * 2);\n for (let destination = start; destination < rightEnd; destination++) {\n owner.reserve({ work: 2 }).release();\n scratch[destination] = left < leftEnd && (right >= rightEnd || indices[left]! <= indices[right]!) ? indices[left++]! : indices[right++]!;\n await owner.ledger.checkpoint(signal, 2);\n }\n }\n const temporary = indices;\n indices = scratch;\n scratch = temporary;\n }\n return indices;\n }\n}\n\ninterface Watch {\n generation: number;\n version: number;\n observers: number;\n typedVersion: number;\n readonly admission: Admission;\n readonly name: OwnedText;\n}\n\nexport class BindingWatch {\n #closed = false;\n readonly generation: number;\n readonly version: number;\n readonly typedVersion: number;\n\n constructor(readonly store: BindingStore, readonly name: string, readonly watch: Watch, readonly admission: Admission) {\n this.generation = watch.generation;\n this.version = watch.version;\n this.typedVersion = watch.typedVersion;\n }\n\n valid(): boolean { return this.watch.generation === this.generation && this.watch.version === this.version; }\n\n close(): void {\n if (this.#closed) return;\n this.#closed = true;\n this.store.retire(this.name, this.watch);\n this.admission.release();\n }\n}\n\ninterface NamedBinding {\n binding: IndexedBinding;\n readonly name: OwnedText;\n readonly admission: Admission;\n}\n\nexport class BindingStore {\n readonly bindings = new Map<string, NamedBinding>();\n readonly watches = new Map<string, Watch>();\n epoch = 0;\n\n private constructor(public owner: ArrayOwner) {}\n\n static create(parent: ArrayOwner): BindingStore {\n parent.reserve({ metadata: 192, work: 10 });\n return new BindingStore(parent);\n }\n\n get(name: string): IndexedBinding | undefined { return this.bindings.get(name)?.binding; }\n\n async watch(name: string, operation: ArrayOwner, signal: AbortSignal, owner = this.owner): Promise<BindingWatch> {\n let watch = this.watches.get(name);\n const observer = operation.reserve({ metadata: 64, work: 5 });\n if (!watch) {\n signal.throwIfAborted();\n owner.reserve({ work: name.length }).release();\n const bytes = Buffer.byteLength(name);\n const token = new OwnedText(name, bytes, owner.reserve({ metadata: 32, payload: bytes, work: 4 }));\n try {\n const admission = owner.reserve({ slots: 1, metadata: 96, generation: true, version: true, work: 9 });\n watch = { generation: admission.generation, version: admission.version, typedVersion: 0, observers: 0, admission, name: token };\n this.watches.set(name, watch);\n } catch (error) { token.release(); throw error; }\n }\n if (watch.observers === Number.MAX_SAFE_INTEGER) throw new ArrayFailure(\"observer capacity is not representable\");\n watch.observers++;\n const result = new BindingWatch(this, name, watch, observer);\n observer.cleanup = () => result.close();\n await operation.ledger.checkpoint(signal, name.length);\n return result;\n }\n\n retire(name: string, watch: Watch): void {\n if (--watch.observers !== 0) return;\n this.watches.delete(name);\n watch.admission.release();\n watch.name.release();\n }\n\n tickets(name?: string): Admission {\n const guarded = name !== undefined && (this.bindings.has(name) || this.watches.has(name));\n return this.owner.reserve({ generation: guarded, version: guarded, epoch: true, work: 5 });\n }\n\n changed(tickets: Tickets, name?: string): void {\n this.epoch = tickets.epoch;\n if (name !== undefined) {\n const watch = this.watches.get(name);\n if (watch) { watch.generation = tickets.generation; watch.version = tickets.version; }\n const binding = this.get(name);\n if (binding) { binding.generation = tickets.generation; binding.version = tickets.version; }\n }\n }\n\n async prepareName(name: string, operation: ArrayOwner, signal: AbortSignal): Promise<{ readonly name: OwnedText; readonly admission: Admission } | undefined> {\n if (this.bindings.has(name)) return undefined;\n const token = await textToken(operation, name, signal);\n try {\n const admission = operation.reserve({ slots: 1, metadata: 32, work: 5 });\n return { name: token, admission };\n } catch (error) { token.release(); throw error; }\n }\n\n publish(name: string, binding: IndexedBinding, tickets: Tickets, prepared?: { readonly name: OwnedText; readonly admission: Admission }, restoring = false, owner = this.owner): Promise<void> | undefined {\n const previous = this.bindings.get(name);\n const displaced = previous?.binding;\n if (previous) previous.binding = binding;\n else {\n if (!prepared) throw new Error(\"Missing indexed-array name admission\");\n owner.adopt(prepared.name.admission, restoring);\n owner.adopt(prepared.admission, restoring);\n const entry = { binding, name: prepared.name, admission: prepared.admission };\n prepared.admission.cleanup = () => {\n if (this.bindings.get(name) !== entry) return;\n this.bindings.delete(name);\n entry.name.release();\n void entry.binding.release();\n };\n this.bindings.set(name, entry);\n }\n this.changed(tickets, name);\n const watch = this.watches.get(name);\n if (watch) watch.typedVersion = tickets.version;\n return displaced?.release();\n }\n\n remove(name: string, tickets: Tickets): Promise<void> | undefined {\n const previous = this.bindings.get(name);\n this.bindings.delete(name);\n this.changed(tickets, name);\n if (!previous) return undefined;\n previous.admission.release();\n previous.name.release();\n return previous.binding.release();\n }\n}\n", "import type { State } from \"../runtime.js\";\nimport type { InvocationScope } from \"../cleanup.js\";\nimport { ArrayFailure, ArrayLedger, ArrayOwner } from \"./ledger.js\";\nimport type { Admission, Tickets } from \"./ledger.js\";\nimport { BindingStore, textToken } from \"./bindings.js\";\nimport { ValueArena, ValueStore } from \"../value-state.js\";\n\ninterface Session {\n readonly values: ValueArena;\n readonly ledger: ArrayLedger;\n readonly internal: ArrayLedger;\n readonly scope: InvocationScope;\n owner: ArrayOwner | undefined;\n guestOwner: ArrayOwner | undefined;\n}\n\nconst sessions = new WeakMap<object, Session>();\nconst monitors = new WeakMap<State, StateMonitor>();\nconst overlayNext = Symbol(\"array overlay parent\");\ntype OverlayMap = Map<string, { superseded?: boolean }> & { [overlayNext]?: OverlayMap };\n\nexport function trackState(state: State, budget: { readonly values?: ValueArena; readonly limits: { readonly maxExpansionBytes: number; readonly maxExpansionFields: number; readonly maxCommands?: number } }, scope: InvocationScope): State {\n const existing = monitors.get(state);\n if (existing) return existing.proxy;\n let session = sessions.get(budget);\n if (!session) {\n while (scope.parent) scope = scope.parent;\n const ledger = new ArrayLedger(budget.limits.maxExpansionBytes, budget.limits.maxExpansionFields);\n const values = budget.values ?? new ValueArena(budget.limits.maxExpansionBytes, budget.limits.maxExpansionFields, () => scope.assertOpen());\n session = { values, ledger, internal: ledger.internal(budget.limits.maxCommands ?? 10_000), scope, owner: undefined, guestOwner: undefined };\n const registered = session;\n scope.register(async () => { await registered.scope.drainWork(); await registered.owner?.close(); });\n scope.register(() => values.close());\n sessions.set(budget, session);\n }\n return new StateMonitor(state, session).proxy;\n}\n\nexport function stateMonitor(state: State): StateMonitor | undefined { return monitors.get(state); }\n\nexport function arrayStore(state: State): BindingStore | undefined { return monitors.get(state)?.store; }\n\nexport function guestArrays(state: State): BindingStore | undefined {\n const monitor = monitors.get(state), store = monitor?.store;\n return store?.owner.ledger === monitor?.session.ledger ? store : undefined;\n}\n\nexport function requireArrays(state: State): BindingStore {\n const monitor = monitors.get(state);\n if (!monitor) throw new Error(\"Indexed-array state was not enrolled\");\n return monitor.activate();\n}\n\nexport class StateMonitor {\n readonly proxy: State;\n readonly values: ValueStore;\n readonly positionals: ValueStore;\n store: BindingStore | undefined;\n epoch = 0;\n #publication = false;\n readonly #wrapped = new WeakMap<object, object>();\n #wrapperCount = 0;\n #enrollment: Admission | undefined;\n #internalEnrollment: Admission | undefined;\n #restorations: Restoration | undefined;\n #overlays: OverlayMap | undefined;\n\n constructor(readonly raw: State, readonly session: Session, source?: StateMonitor) {\n this.values = source ? source.values.clone() : new ValueStore(session.values);\n try { this.positionals = source ? source.positionals.clone() : new ValueStore(session.values); }\n catch (error) { this.values.close(); throw error; }\n this.proxy = this.wrap(raw, \"state\") as State;\n monitors.set(raw, this);\n monitors.set(this.proxy, this);\n session.scope.register(() => this.closeValues());\n }\n\n closeValues(): void { this.values.close(); this.positionals.close(); }\n\n private changedValue(target: object, field: string, key: PropertyKey): void {\n if (field === \"state\") {\n if (key === \"variables\") this.values.invalidate();\n if (key === \"positional\") this.positionals.invalidate();\n } else if (field === \"variables\" && (this.raw.variables === target || this.raw.variables === this.#wrapped.get(target))) {\n this.values.invalidate(String(key));\n } else if (field === \"positional\" && (this.raw.positional === target || this.raw.positional === this.#wrapped.get(target))) {\n this.positionals.invalidate();\n }\n }\n\n internalOwner(): ArrayOwner {\n this.session.scope.assertOpen();\n return this.session.owner ??= ArrayOwner.create(this.session.internal);\n }\n\n activate(internal = false): BindingStore {\n if (this.store && (internal || this.#enrollment)) return this.store;\n const root = this.internalOwner();\n const owner = internal ? root : this.session.guestOwner ??= ArrayOwner.create(this.session.ledger, root);\n const enrollment = owner.reserve({ slots: this.#wrapperCount * 2 + 2, metadata: 128 + this.#wrapperCount * 128, work: this.#wrapperCount * 8 + 8 });\n if (internal) this.#internalEnrollment = enrollment;\n else this.#enrollment = enrollment;\n let pending = 0;\n for (let entry = this.#restorations; entry; entry = entry.next) if (!entry.epoch) pending++;\n if (pending) {\n const admission = owner.reserve({ epoch: pending, metadata: pending * 64, work: pending * 8 });\n admission.restorationReferences = pending;\n let ticket = admission.epoch - pending;\n for (let entry = this.#restorations; entry; entry = entry.next) if (!entry.epoch) { entry.epoch = ++ticket; entry.admission = admission; }\n }\n for (let entry = this.#restorations; entry; entry = entry.next) if (entry.resource && !entry.holding) entry.holding = owner.hold();\n if (this.store) this.store.owner = owner;\n else this.store = BindingStore.create(owner);\n this.store.epoch = this.epoch;\n return this.store;\n }\n\n restoration(resource = false): Restoration {\n const owner = this.store?.owner ?? this.session.guestOwner;\n const admission = owner?.reserve({ epoch: true, metadata: 64, work: 8 });\n if (admission) admission.restorationReferences = 1;\n const permit = new Restoration(this, admission, resource);\n try {\n if (resource && owner) permit.holding = owner.hold();\n } catch (error) { admission?.release(); throw error; }\n permit.next = this.#restorations;\n if (this.#restorations) this.#restorations.previous = permit;\n this.#restorations = permit;\n return permit;\n }\n\n openOverlay(frame: OverlayMap): void {\n if (this.#overlays) frame[overlayNext] = this.#overlays;\n this.#overlays = frame;\n }\n\n closeOverlay(frame: OverlayMap): void {\n if (this.#overlays !== frame) throw new Error(\"Indexed-array overlay dependency order violated\");\n this.#overlays = frame[overlayNext];\n delete frame[overlayNext];\n }\n\n *overlayFrames(): Iterable<OverlayMap> {\n for (let frame = this.#overlays; frame; frame = frame[overlayNext]) yield frame;\n }\n\n prepareCollection<Value extends object>(value: Value, field: string): Value {\n return this.wrap(value, field) as Value;\n }\n\n async prepareTypedPublication(name: string, owner: ArrayOwner, signal: AbortSignal): Promise<() => void> {\n owner.reserve({ metadata: 128, work: 7 });\n const saved: { superseded?: boolean }[] = [];\n for (let frame = this.#overlays; frame; frame = frame[overlayNext]) {\n owner.reserve({ work: 2 }).release();\n const entry = frame.get(name);\n if (entry) {\n owner.reserve({ metadata: 32, allocatedSlots: 1, work: 3 });\n saved.push(entry);\n }\n await owner.ledger.checkpoint(signal, 2);\n }\n return () => { for (const entry of saved) entry.superseded = true; };\n }\n\n retire(permit: Restoration): void {\n if (permit.previous) permit.previous.next = permit.next;\n else this.#restorations = permit.next;\n if (permit.next) permit.next.previous = permit.previous;\n }\n\n restore(permit: Restoration, action: () => void): void {\n this.#publication = true;\n try { action(); }\n finally { this.#publication = false; }\n if (permit.epoch) {\n this.epoch = permit.epoch;\n if (this.store) this.store.epoch = permit.epoch;\n }\n }\n\n mutation(name?: string): Admission | undefined {\n if (this.#publication) return undefined;\n return this.store ? this.store.tickets(name) : this.session.guestOwner?.reserve({ epoch: true, work: 5 });\n }\n\n finish(tickets: Admission | undefined, name?: string): void {\n if (!tickets) return;\n this.epoch = tickets.epoch;\n this.store?.changed(tickets, name);\n tickets.release();\n }\n\n publish(tickets: Tickets, name: string | undefined, action: () => void): void {\n if (this.#publication) throw new Error(\"Nested indexed-array publication\");\n this.#publication = true;\n try { action(); }\n finally { this.#publication = false; }\n this.epoch = tickets.epoch;\n this.store?.changed(tickets, name);\n }\n\n private wrap(value: object, field: string): object {\n const previous = this.#wrapped.get(value);\n if (previous) return previous;\n if (this.#enrollment || this.#internalEnrollment) {\n (this.#enrollment ? this.session.guestOwner! : this.session.owner!).reserve({ slots: 2, metadata: 128, work: 8 });\n }\n this.#wrapperCount++;\n const monitor = this;\n const named = field === \"variables\" || field === \"exported\" || field === \"readonlyVariables\";\n let proxy: object;\n if (value instanceof Map || value instanceof Set) {\n proxy = new Proxy(value, { get(target, key) {\n if (key === \"set\" && target instanceof Map) return (name: unknown, entry: unknown) => {\n const tickets = monitor.mutation(named ? String(name) : undefined);\n target.set(name, entry);\n monitor.finish(tickets, named ? String(name) : undefined);\n return proxy;\n };\n if (key === \"add\" && target instanceof Set) return (name: unknown) => {\n const tickets = monitor.mutation(named ? String(name) : undefined);\n target.add(name);\n monitor.finish(tickets, named ? String(name) : undefined);\n return proxy;\n };\n if (key === \"delete\") return (name: unknown) => {\n const tickets = monitor.mutation(named ? String(name) : undefined);\n const result = target.delete(name);\n monitor.finish(tickets, named ? String(name) : undefined);\n return result;\n };\n if (key === \"clear\") return () => {\n const tickets = monitor.mutation();\n target.clear();\n monitor.finish(tickets);\n };\n const entry: unknown = Reflect.get(target, key, target);\n return typeof entry === \"function\" ? entry.bind(target) : entry;\n } });\n } else {\n proxy = new Proxy(value, {\n get(target, key, receiver) {\n const entry: unknown = Reflect.get(target, key, receiver);\n if (entry && typeof entry === \"object\" && key !== \"redirectAssignments\") {\n if (field === \"state\" && key === \"functions\") return monitor.wrap(entry, \"functions\");\n if (field !== \"functions\") return monitor.wrap(entry, field === \"state\" ? String(key) : field);\n }\n return entry;\n },\n set(target, key, entry) {\n const name = named ? String(key) : undefined;\n const tickets = monitor.mutation(name);\n const result = Reflect.set(target, key, entry);\n if (result) monitor.changedValue(target, field, key);\n monitor.finish(tickets, name);\n return result;\n },\n deleteProperty(target, key) {\n const name = named ? String(key) : undefined;\n const tickets = monitor.mutation(name);\n const result = Reflect.deleteProperty(target, key);\n if (result) monitor.changedValue(target, field, key);\n monitor.finish(tickets, name);\n return result;\n },\n defineProperty(target, key, descriptor) {\n const name = named ? String(key) : undefined;\n const tickets = monitor.mutation(name);\n const result = Reflect.defineProperty(target, key, descriptor);\n if (result) monitor.changedValue(target, field, key);\n monitor.finish(tickets, name);\n return result;\n },\n });\n }\n this.#wrapped.set(value, proxy);\n this.#wrapped.set(proxy, proxy);\n return proxy;\n }\n}\n\nexport class Restoration {\n next: Restoration | undefined;\n previous: Restoration | undefined;\n epoch: number;\n #closed = false;\n holding: Admission | undefined;\n\n constructor(readonly monitor: StateMonitor, public admission: Admission | undefined, readonly resource: boolean) { this.epoch = admission?.epoch ?? 0; }\n\n apply(action: () => void, close = true): void {\n if (this.#closed) throw new Error(\"Indexed-array restoration already consumed\");\n try { this.monitor.restore(this, action); }\n finally { if (close) this.close(); }\n }\n\n close(): void {\n if (this.#closed) return;\n this.#closed = true;\n this.monitor.retire(this);\n if (this.admission && --this.admission.restorationReferences === 0) this.admission.release();\n this.holding?.release();\n }\n}\n\nexport async function snapshotState(state: State, clone: () => State, signal: AbortSignal, prepare?: (destination: State, owner: ArrayOwner) => Promise<void>): Promise<State> {\n const monitor = stateMonitor(state);\n if (!monitor) return clone();\n if (!monitor.store && !monitor.session.ledger.active) return new StateMonitor(clone(), monitor.session, monitor).proxy;\n const store = monitor.store ?? monitor.activate();\n const internal = store.owner.ledger === monitor.session.internal;\n const epoch = monitor.epoch;\n const owner = ArrayOwner.create(store.owner.ledger, store.owner);\n const holding = store.owner.hold();\n const check = () => {\n signal.throwIfAborted();\n if (monitor.epoch !== epoch) throw new ArrayFailure(\"stale state snapshot\");\n };\n let result: StateMonitor | undefined;\n try {\n owner.reserve({ metadata: 512, work: 32, epoch: true });\n if (!internal) {\n for (const key in state.variables) {\n if (!Object.hasOwn(state.variables, key)) continue;\n check();\n owner.reserve({ slots: 1, metadata: 32, work: 4 });\n await textToken(owner, key, signal);\n check();\n await textToken(owner, state.variables[key]!, signal);\n check();\n }\n for (const value of state.positional) { await textToken(owner, value, signal); check(); }\n for (const key of state.exported) { owner.reserve({ slots: 1, metadata: 32, work: 4 }); await textToken(owner, key, signal); check(); }\n for (const key of state.readonlyVariables ?? []) { owner.reserve({ slots: 1, metadata: 32, work: 4 }); await textToken(owner, key, signal); check(); }\n for (const key of state.functions.keys()) { owner.reserve({ slots: 1, metadata: 32, work: 4 }); await textToken(owner, key, signal); check(); }\n for (const value of state.directoryStack?.entries ?? []) { await textToken(owner, value, signal); check(); }\n for (const frame of state.locals) {\n owner.reserve({ metadata: 64, work: 4 });\n for (const [key, saved] of frame) {\n owner.reserve({ slots: 1, metadata: 64, work: 8 });\n await textToken(owner, key, signal); check();\n if (saved.value !== undefined) { await textToken(owner, saved.value, signal); check(); }\n }\n }\n }\n check();\n result = new StateMonitor(clone(), monitor.session, monitor);\n const destination = result.activate(internal);\n for (const [name, entry] of store.bindings) {\n check();\n const prepared = await destination.prepareName(name, owner, signal);\n check();\n const tickets = owner.reserve({ generation: true, version: true, epoch: true, work: 5 });\n entry.binding.retain();\n destination.publish(name, entry.binding, tickets, prepared);\n await owner.ledger.checkpoint(signal, 5);\n }\n check();\n if (prepare) { await prepare(result.proxy, owner); check(); }\n return result.proxy;\n } catch (error) {\n result?.closeValues();\n if (result?.store) for (const [name] of result.store.bindings) await result.store.remove(name, { generation: 0, version: 0, epoch: 0 });\n await owner.close();\n throw error;\n } finally { holding.release(); }\n}\n", "import type { State } from \"./runtime.js\";\nimport { throwCleanupFailures, type InvocationScope } from \"./cleanup.js\";\nimport { ArrayFailure, ArrayOwner } from \"./arrays/ledger.js\";\nimport { IndexedBinding, textToken } from \"./arrays/bindings.js\";\nimport { arrayStore, stateMonitor } from \"./arrays/state.js\";\n\nconst name = \"PIPESTATUS\";\n\nexport type PipelineStatusTarget = \"indexed\" | \"scalar\" | \"readonly-absent\" | \"local-tombstone\" | \"exported-absent\" | \"absent\";\n\nexport function pipelineStatusTarget(state: State): PipelineStatusTarget {\n if (arrayStore(state)?.get(name)) return \"indexed\";\n if (Object.hasOwn(state.variables, name)) return \"scalar\";\n if (state.readonlyVariables?.has(name)) return \"readonly-absent\";\n for (let index = state.locals.length - 1; index >= 0; index--) {\n if (state.locals[index]!.has(name)) return \"local-tombstone\";\n }\n if (state.exported.has(name)) return \"exported-absent\";\n return \"absent\";\n}\n\nexport async function publishPipelineStatus(\n state: State,\n statuses: readonly number[],\n signal: AbortSignal,\n scope: InvocationScope,\n): Promise<void> {\n signal.throwIfAborted();\n scope.assertOpen();\n const target = pipelineStatusTarget(state);\n if (target !== \"absent\" && target !== \"indexed\") return;\n const monitor = stateMonitor(state)!;\n const store = monitor.activate(true);\n const owner = monitor.internalOwner();\n const epoch = monitor.epoch;\n const operation = ArrayOwner.create(owner.ledger, owner);\n const holding = owner.hold();\n let staged: IndexedBinding | undefined;\n let primary = false;\n let failure: unknown;\n try {\n const watch = await store.watch(name, operation, signal, owner);\n const supersede = await stateMonitor(state)!.prepareTypedPublication(name, operation, signal);\n const tickets = operation.reserve({ generation: true, version: true, epoch: true, work: 8 });\n const prepared = await store.prepareName(name, operation, signal);\n staged = IndexedBinding.create(owner);\n for (let index = 0; index < statuses.length; index++) {\n operation.reserve({ work: 2 });\n const status = statuses[index]!;\n if (!Number.isSafeInteger(status) || status < 0 || status > 255) throw new TypeError(\"Invalid PIPESTATUS completion\");\n const token = await textToken(staged.owner, String(status), signal);\n try { staged.insert(index, token); } catch (error) { token.release(); throw error; }\n await operation.ledger.checkpoint(signal, 2);\n }\n signal.throwIfAborted();\n scope.assertOpen();\n if (pipelineStatusTarget(state) !== target || monitor.epoch !== epoch || !watch.valid()) throw new ArrayFailure(\"stale PIPESTATUS binding\");\n let released: Promise<void> | undefined;\n stateMonitor(state)!.publish(tickets, name, () => {\n supersede();\n released = store.publish(name, staged!, tickets, prepared, false, owner);\n });\n staged = undefined;\n watch.close();\n await released;\n } catch (error) {\n primary = true;\n failure = error;\n }\n await scope.cleanup(() => staged?.release());\n await scope.cleanup(() => operation.close());\n await scope.cleanup(() => holding.release());\n signal.throwIfAborted();\n if (primary) throw failure;\n throwCleanupFailures(scope.failures);\n}\n", "import { ConditionalUnsupported } from \"../src/shell/conditional.ts\";\n\nexport class EreTransportRoot {\n constructor() {\n throw new ConditionalUnsupported(\"[[ =~ ]] is not supported by the browser shell entry\");\n }\n}\n", "import type { EreExpansionBounds, EreFragment, EreLimits, EreResource, EreSpan, EreUsage } from \"../types.js\";\n\nexport const operation = \"shell-ere\";\nexport const profile = \"ascii-c-posix-v1\";\nexport const resources: readonly EreResource[] = Object.freeze([\"patternBytes\", \"subjectBytes\", \"work\", \"states\", \"allocationUnits\", \"captureBytes\", \"captureSlots\"]);\nexport const cumulative: readonly EreResource[] = Object.freeze([\"work\", \"states\", \"allocationUnits\", \"captureBytes\", \"captureSlots\"]);\n\nexport interface EreTransportResult {\n readonly matched: boolean;\n readonly groupCount: number;\n readonly spans: readonly (EreSpan | null)[];\n readonly steps: number;\n readonly allocatedUnits: number;\n}\n\nexport interface EreTransportRequest {\n readonly version: 1;\n readonly operation: typeof operation;\n readonly id: number;\n readonly grantId: number;\n readonly profile: typeof profile;\n readonly bounds: EreExpansionBounds;\n readonly allowance: EreLimits;\n readonly pattern: readonly EreFragment[];\n readonly subject: string;\n}\n\nexport type EreTransportReply = {\n readonly version: 1;\n readonly operation: typeof operation;\n readonly id: number;\n readonly grantId: number;\n readonly kind: \"result\";\n readonly result: EreTransportResult;\n readonly usage: EreUsage;\n} | {\n readonly version: 1;\n readonly operation: typeof operation;\n readonly id: number;\n readonly grantId: number;\n readonly kind: \"failure\";\n readonly category: \"syntax\" | \"unsupported\" | \"profile-limit\";\n readonly resource: EreResource | null;\n readonly offset: number | null;\n readonly usage: EreUsage;\n};\n\nexport interface EreTransportInput {\n readonly pattern: readonly EreFragment[];\n readonly subject: string;\n}\n\nexport interface EreTransportSession {\n execute(input: EreTransportInput, signal?: AbortSignal): Promise<EreTransportResult>;\n close(): Promise<void>;\n}\n\nexport type EreCleanupRegistration = (cleanup: () => Promise<void>) => void;\n\nexport class EreTransportError extends Error {\n constructor(readonly code: \"PROTOCOL\" | \"CLOSED\" | \"STARTUP_TIMEOUT\" | \"REQUEST_TIMEOUT\" | \"WORKER_EXIT\", message: string) {\n super(message);\n this.name = \"EreTransportError\";\n }\n}\n\nexport class EreTransportProfileLimitError extends Error {\n readonly status = 3;\n constructor(readonly resource: \"transportStorage\" | \"transportWork\" | \"queueTickets\", readonly limit: number) {\n super(`ERE transport profile limit exceeded: ${resource} (${limit})`);\n this.name = \"EreTransportProfileLimitError\";\n }\n}\n\nexport class EreTransportSemanticError extends Error {\n readonly status = 2;\n constructor(readonly category: \"syntax\" | \"unsupported\", readonly offset: number | null) {\n super(category === \"syntax\" ? \"invalid ERE\" : \"unsupported ERE profile\");\n this.name = \"EreTransportSemanticError\";\n }\n}\n", "import type { EreResource } from \"./types.js\";\n\nexport class EreSyntaxError extends Error {\n readonly status = 2;\n constructor(message: string, readonly offset: number) {\n super(`invalid ERE at ${offset}: ${message}`);\n this.name = \"EreSyntaxError\";\n }\n}\n\nexport class EreUnsupportedError extends Error {\n readonly status = 2;\n constructor(message: string, readonly offset: number) {\n super(`unsupported ERE profile at ${offset}: ${message}`);\n this.name = \"EreUnsupportedError\";\n }\n}\n\nexport class EreProfileLimitError extends Error {\n readonly status = 3;\n constructor(readonly resource: EreResource, readonly limit: number) {\n super(`ERE profile limit exceeded: ${resource} (${limit})`);\n this.name = \"EreProfileLimitError\";\n }\n}\n\nexport class EreUsageUnknownError extends Error {\n readonly status = 3;\n constructor(reason: unknown) {\n super(\"ERE invocation usage is unknown; further work is refused\", { cause: reason });\n this.name = \"EreUsageUnknownError\";\n }\n}\n", "export { createMemoryFileSystem, MemoryFileSystem } from \"poe-code/safe-fs\";\n", "export { createReadOnlyFileSystem, ReadOnlyFileSystem } from \"poe-code/safe-fs\";\n", "export { createMountFileSystem, MountFileSystem } from \"poe-code/safe-fs\";\nexport type { MountFileSystemOptions } from \"poe-code/safe-fs\";\n", "export { createOverlayFileSystem, OverlayFileSystem } from \"poe-code/safe-fs\";\nexport type { OverlayFileSystemOptions } from \"poe-code/safe-fs\";\n"],
5
+ "mappings": "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",
6
+ "names": ["len", "i", "output", "len2", "value", "Buffer", "value", "copy", "i", "byteLength", "name", "input", "value", "output", "value", "bytes", "transaction", "options", "name", "collectBytes", "readBytes", "options", "value", "destination", "encoder", "decoder", "name", "value", "readBytes", "encoder", "control", "value", "digit", "suffix", "decoder", "encoder", "prefix", "options", "suffix", "name", "name", "unary", "name", "tokens", "encoder", "start", "encoder", "charge", "record", "name", "mode", "message", "integer", "value", "digit", "tokens", "copy", "name", "value", "pending", "name", "value", "integer", "value", "digit", "metadata", "diagnostic", "byteLocale", "message", "value", "encoder", "name", "command", "expression", "redirect", "record", "value", "name", "copy", "name", "options", "value", "name", "name", "decoder", "encoder", "readBytes", "encoder", "name", "bytes", "message", "record", "value", "integer", "name", "copy", "options", "code", "option", "diagnostic", "token", "value", "origin", "input", "options", "inherited", "metadata", "charge", "requested", "value", "value", "copy", "name", "value", "name", "entry", "message", "name", "value", "output", "input", "diagnostic", "message", "destination", "digit", "options", "record", "status", "copy", "assignments", "context", "previous", "prefix", "lines", "state", "path", "unsupported", "publish", "command", "bytes", "segment", "value", "options", "decoder", "bytes", "offset", "value", "options", "middleware", "name", "options"]
7
+ }