@kubb/agent 0.0.0-canary-20260217115709

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 (575) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/server/chunks/_/package.mjs +4 -0
  3. package/.output/server/chunks/_/package.mjs.map +1 -0
  4. package/.output/server/chunks/nitro/nitro.mjs +6685 -0
  5. package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  6. package/.output/server/chunks/routes/api/generate.options.mjs +31 -0
  7. package/.output/server/chunks/routes/api/generate.options.mjs.map +1 -0
  8. package/.output/server/chunks/routes/api/generate.post.mjs +120 -0
  9. package/.output/server/chunks/routes/api/generate.post.mjs.map +1 -0
  10. package/.output/server/chunks/routes/api/health.get.mjs +36 -0
  11. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -0
  12. package/.output/server/chunks/routes/api/info.get.mjs +63 -0
  13. package/.output/server/chunks/routes/api/info.get.mjs.map +1 -0
  14. package/.output/server/index.mjs +25 -0
  15. package/.output/server/index.mjs.map +1 -0
  16. package/.output/server/node_modules/.nitro/path-key@3.1.1/index.js +16 -0
  17. package/.output/server/node_modules/.nitro/path-key@3.1.1/package.json +39 -0
  18. package/.output/server/node_modules/.nitro/path-key@4.0.0/index.js +12 -0
  19. package/.output/server/node_modules/.nitro/path-key@4.0.0/package.json +41 -0
  20. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/buffer-util.js +131 -0
  21. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/constants.js +18 -0
  22. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/event-target.js +292 -0
  23. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/extension.js +203 -0
  24. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/limiter.js +55 -0
  25. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/permessage-deflate.js +514 -0
  26. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/receiver.js +706 -0
  27. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/sender.js +602 -0
  28. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/stream.js +159 -0
  29. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/subprotocol.js +62 -0
  30. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/validation.js +152 -0
  31. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/websocket-server.js +540 -0
  32. package/.output/server/node_modules/.nitro/ws@8.18.0/lib/websocket.js +1388 -0
  33. package/.output/server/node_modules/.nitro/ws@8.18.0/package.json +69 -0
  34. package/.output/server/node_modules/.nitro/ws@8.18.0/wrapper.mjs +8 -0
  35. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/buffer-util.js +131 -0
  36. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/constants.js +19 -0
  37. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/event-target.js +292 -0
  38. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/extension.js +203 -0
  39. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/limiter.js +55 -0
  40. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/permessage-deflate.js +528 -0
  41. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/receiver.js +706 -0
  42. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/sender.js +602 -0
  43. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/stream.js +161 -0
  44. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/subprotocol.js +62 -0
  45. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/validation.js +152 -0
  46. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/websocket-server.js +554 -0
  47. package/.output/server/node_modules/.nitro/ws@8.19.0/lib/websocket.js +1393 -0
  48. package/.output/server/node_modules/.nitro/ws@8.19.0/package.json +69 -0
  49. package/.output/server/node_modules/.nitro/ws@8.19.0/wrapper.mjs +8 -0
  50. package/.output/server/node_modules/@clack/core/dist/index.mjs +18 -0
  51. package/.output/server/node_modules/@clack/core/package.json +61 -0
  52. package/.output/server/node_modules/@clack/prompts/dist/index.mjs +135 -0
  53. package/.output/server/node_modules/@clack/prompts/package.json +66 -0
  54. package/.output/server/node_modules/@kubb/fabric-core/dist/Root-BQX3eHqb.js +830 -0
  55. package/.output/server/node_modules/@kubb/fabric-core/dist/chunk-BVHe6Par.js +22 -0
  56. package/.output/server/node_modules/@kubb/fabric-core/dist/defaultParser-BD_N68Bo.js +16 -0
  57. package/.output/server/node_modules/@kubb/fabric-core/dist/getRelativePath-C4Au07ON.js +58 -0
  58. package/.output/server/node_modules/@kubb/fabric-core/dist/index.js +668 -0
  59. package/.output/server/node_modules/@kubb/fabric-core/dist/parsers/typescript.js +102 -0
  60. package/.output/server/node_modules/@kubb/fabric-core/dist/parsers.js +18 -0
  61. package/.output/server/node_modules/@kubb/fabric-core/dist/plugins.js +620 -0
  62. package/.output/server/node_modules/@kubb/fabric-core/package.json +120 -0
  63. package/.output/server/node_modules/@kubb/react-fabric/dist/chunk-DbZtQ4qb.js +47 -0
  64. package/.output/server/node_modules/@kubb/react-fabric/dist/index.js +535 -0
  65. package/.output/server/node_modules/@kubb/react-fabric/dist/jsx-runtime-CQFBnRKx.js +265 -0
  66. package/.output/server/node_modules/@kubb/react-fabric/dist/jsx-runtime.js +13 -0
  67. package/.output/server/node_modules/@kubb/react-fabric/dist/parsers.js +3 -0
  68. package/.output/server/node_modules/@kubb/react-fabric/dist/plugins.js +7 -0
  69. package/.output/server/node_modules/@kubb/react-fabric/dist/react--draJ5Pm.js +1192 -0
  70. package/.output/server/node_modules/@kubb/react-fabric/dist/reactPlugin-DqJsInTf.js +17931 -0
  71. package/.output/server/node_modules/@kubb/react-fabric/package.json +140 -0
  72. package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +89 -0
  73. package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +34 -0
  74. package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +6 -0
  75. package/.output/server/node_modules/@sec-ant/readable-stream/package.json +98 -0
  76. package/.output/server/node_modules/@sindresorhus/merge-streams/index.js +265 -0
  77. package/.output/server/node_modules/@sindresorhus/merge-streams/package.json +49 -0
  78. package/.output/server/node_modules/balanced-match/index.js +62 -0
  79. package/.output/server/node_modules/balanced-match/package.json +48 -0
  80. package/.output/server/node_modules/brace-expansion/index.js +201 -0
  81. package/.output/server/node_modules/brace-expansion/package.json +50 -0
  82. package/.output/server/node_modules/buffer-from/index.js +72 -0
  83. package/.output/server/node_modules/buffer-from/package.json +19 -0
  84. package/.output/server/node_modules/bytes/index.js +159 -0
  85. package/.output/server/node_modules/bytes/package.json +39 -0
  86. package/.output/server/node_modules/concat-map/index.js +13 -0
  87. package/.output/server/node_modules/concat-map/package.json +59 -0
  88. package/.output/server/node_modules/content-disposition/index.js +445 -0
  89. package/.output/server/node_modules/content-disposition/package.json +39 -0
  90. package/.output/server/node_modules/cross-spawn/index.js +39 -0
  91. package/.output/server/node_modules/cross-spawn/lib/enoent.js +59 -0
  92. package/.output/server/node_modules/cross-spawn/lib/parse.js +91 -0
  93. package/.output/server/node_modules/cross-spawn/lib/util/escape.js +47 -0
  94. package/.output/server/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  95. package/.output/server/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  96. package/.output/server/node_modules/cross-spawn/package.json +73 -0
  97. package/.output/server/node_modules/execa/index.js +28 -0
  98. package/.output/server/node_modules/execa/lib/arguments/command.js +20 -0
  99. package/.output/server/node_modules/execa/lib/arguments/cwd.js +39 -0
  100. package/.output/server/node_modules/execa/lib/arguments/encoding-option.js +50 -0
  101. package/.output/server/node_modules/execa/lib/arguments/escape.js +88 -0
  102. package/.output/server/node_modules/execa/lib/arguments/fd-options.js +108 -0
  103. package/.output/server/node_modules/execa/lib/arguments/file-url.js +25 -0
  104. package/.output/server/node_modules/execa/lib/arguments/options.js +96 -0
  105. package/.output/server/node_modules/execa/lib/arguments/shell.js +11 -0
  106. package/.output/server/node_modules/execa/lib/arguments/specific.js +111 -0
  107. package/.output/server/node_modules/execa/lib/convert/add.js +15 -0
  108. package/.output/server/node_modules/execa/lib/convert/concurrent.js +33 -0
  109. package/.output/server/node_modules/execa/lib/convert/duplex.js +69 -0
  110. package/.output/server/node_modules/execa/lib/convert/iterable.js +34 -0
  111. package/.output/server/node_modules/execa/lib/convert/readable.js +113 -0
  112. package/.output/server/node_modules/execa/lib/convert/shared.js +46 -0
  113. package/.output/server/node_modules/execa/lib/convert/writable.js +90 -0
  114. package/.output/server/node_modules/execa/lib/io/contents.js +116 -0
  115. package/.output/server/node_modules/execa/lib/io/input-sync.js +44 -0
  116. package/.output/server/node_modules/execa/lib/io/iterate.js +110 -0
  117. package/.output/server/node_modules/execa/lib/io/max-buffer.js +89 -0
  118. package/.output/server/node_modules/execa/lib/io/output-async.js +80 -0
  119. package/.output/server/node_modules/execa/lib/io/output-sync.js +135 -0
  120. package/.output/server/node_modules/execa/lib/io/pipeline.js +48 -0
  121. package/.output/server/node_modules/execa/lib/io/strip-newline.js +12 -0
  122. package/.output/server/node_modules/execa/lib/ipc/array.js +4 -0
  123. package/.output/server/node_modules/execa/lib/ipc/buffer-messages.js +47 -0
  124. package/.output/server/node_modules/execa/lib/ipc/forward.js +56 -0
  125. package/.output/server/node_modules/execa/lib/ipc/get-each.js +89 -0
  126. package/.output/server/node_modules/execa/lib/ipc/get-one.js +69 -0
  127. package/.output/server/node_modules/execa/lib/ipc/graceful.js +72 -0
  128. package/.output/server/node_modules/execa/lib/ipc/incoming.js +79 -0
  129. package/.output/server/node_modules/execa/lib/ipc/ipc-input.js +44 -0
  130. package/.output/server/node_modules/execa/lib/ipc/methods.js +49 -0
  131. package/.output/server/node_modules/execa/lib/ipc/outgoing.js +47 -0
  132. package/.output/server/node_modules/execa/lib/ipc/reference.js +44 -0
  133. package/.output/server/node_modules/execa/lib/ipc/send.js +91 -0
  134. package/.output/server/node_modules/execa/lib/ipc/strict.js +113 -0
  135. package/.output/server/node_modules/execa/lib/ipc/validation.js +111 -0
  136. package/.output/server/node_modules/execa/lib/methods/bind.js +23 -0
  137. package/.output/server/node_modules/execa/lib/methods/command.js +43 -0
  138. package/.output/server/node_modules/execa/lib/methods/create.js +65 -0
  139. package/.output/server/node_modules/execa/lib/methods/main-async.js +194 -0
  140. package/.output/server/node_modules/execa/lib/methods/main-sync.js +163 -0
  141. package/.output/server/node_modules/execa/lib/methods/node.js +51 -0
  142. package/.output/server/node_modules/execa/lib/methods/parameters.js +31 -0
  143. package/.output/server/node_modules/execa/lib/methods/promise.js +15 -0
  144. package/.output/server/node_modules/execa/lib/methods/script.js +22 -0
  145. package/.output/server/node_modules/execa/lib/methods/template.js +153 -0
  146. package/.output/server/node_modules/execa/lib/pipe/abort.js +20 -0
  147. package/.output/server/node_modules/execa/lib/pipe/pipe-arguments.js +91 -0
  148. package/.output/server/node_modules/execa/lib/pipe/sequence.js +24 -0
  149. package/.output/server/node_modules/execa/lib/pipe/setup.js +72 -0
  150. package/.output/server/node_modules/execa/lib/pipe/streaming.js +51 -0
  151. package/.output/server/node_modules/execa/lib/pipe/throw.js +58 -0
  152. package/.output/server/node_modules/execa/lib/resolve/all-async.js +46 -0
  153. package/.output/server/node_modules/execa/lib/resolve/all-sync.js +33 -0
  154. package/.output/server/node_modules/execa/lib/resolve/exit-async.js +54 -0
  155. package/.output/server/node_modules/execa/lib/resolve/exit-sync.js +25 -0
  156. package/.output/server/node_modules/execa/lib/resolve/stdio.js +47 -0
  157. package/.output/server/node_modules/execa/lib/resolve/wait-stream.js +96 -0
  158. package/.output/server/node_modules/execa/lib/resolve/wait-subprocess.js +146 -0
  159. package/.output/server/node_modules/execa/lib/return/duration.js +8 -0
  160. package/.output/server/node_modules/execa/lib/return/early-error.js +60 -0
  161. package/.output/server/node_modules/execa/lib/return/final-error.js +40 -0
  162. package/.output/server/node_modules/execa/lib/return/message.js +157 -0
  163. package/.output/server/node_modules/execa/lib/return/reject.js +13 -0
  164. package/.output/server/node_modules/execa/lib/return/result.js +186 -0
  165. package/.output/server/node_modules/execa/lib/stdio/direction.js +76 -0
  166. package/.output/server/node_modules/execa/lib/stdio/duplicate.js +116 -0
  167. package/.output/server/node_modules/execa/lib/stdio/handle-async.js +52 -0
  168. package/.output/server/node_modules/execa/lib/stdio/handle-sync.js +57 -0
  169. package/.output/server/node_modules/execa/lib/stdio/handle.js +214 -0
  170. package/.output/server/node_modules/execa/lib/stdio/input-option.js +50 -0
  171. package/.output/server/node_modules/execa/lib/stdio/native.js +106 -0
  172. package/.output/server/node_modules/execa/lib/stdio/stdio-option.js +60 -0
  173. package/.output/server/node_modules/execa/lib/stdio/type.js +173 -0
  174. package/.output/server/node_modules/execa/lib/terminate/cancel.js +20 -0
  175. package/.output/server/node_modules/execa/lib/terminate/cleanup.js +16 -0
  176. package/.output/server/node_modules/execa/lib/terminate/graceful.js +71 -0
  177. package/.output/server/node_modules/execa/lib/terminate/kill.js +93 -0
  178. package/.output/server/node_modules/execa/lib/terminate/signal.js +70 -0
  179. package/.output/server/node_modules/execa/lib/terminate/timeout.js +21 -0
  180. package/.output/server/node_modules/execa/lib/transform/encoding-transform.js +51 -0
  181. package/.output/server/node_modules/execa/lib/transform/generator.js +107 -0
  182. package/.output/server/node_modules/execa/lib/transform/normalize.js +111 -0
  183. package/.output/server/node_modules/execa/lib/transform/object-mode.js +41 -0
  184. package/.output/server/node_modules/execa/lib/transform/run-async.js +60 -0
  185. package/.output/server/node_modules/execa/lib/transform/run-sync.js +50 -0
  186. package/.output/server/node_modules/execa/lib/transform/split.js +110 -0
  187. package/.output/server/node_modules/execa/lib/transform/validate.js +43 -0
  188. package/.output/server/node_modules/execa/lib/utils/abort-signal.js +8 -0
  189. package/.output/server/node_modules/execa/lib/utils/deferred.js +7 -0
  190. package/.output/server/node_modules/execa/lib/utils/max-listeners.js +14 -0
  191. package/.output/server/node_modules/execa/lib/utils/standard-stream.js +6 -0
  192. package/.output/server/node_modules/execa/lib/utils/uint-array.js +69 -0
  193. package/.output/server/node_modules/execa/lib/verbose/complete.js +24 -0
  194. package/.output/server/node_modules/execa/lib/verbose/custom.js +26 -0
  195. package/.output/server/node_modules/execa/lib/verbose/default.js +54 -0
  196. package/.output/server/node_modules/execa/lib/verbose/error.js +13 -0
  197. package/.output/server/node_modules/execa/lib/verbose/info.js +39 -0
  198. package/.output/server/node_modules/execa/lib/verbose/ipc.js +15 -0
  199. package/.output/server/node_modules/execa/lib/verbose/log.js +54 -0
  200. package/.output/server/node_modules/execa/lib/verbose/output.js +60 -0
  201. package/.output/server/node_modules/execa/lib/verbose/start.js +15 -0
  202. package/.output/server/node_modules/execa/lib/verbose/values.js +33 -0
  203. package/.output/server/node_modules/execa/package.json +105 -0
  204. package/.output/server/node_modules/figures/index.js +292 -0
  205. package/.output/server/node_modules/figures/package.json +49 -0
  206. package/.output/server/node_modules/fs-extra/lib/copy/copy-sync.js +176 -0
  207. package/.output/server/node_modules/fs-extra/lib/copy/copy.js +180 -0
  208. package/.output/server/node_modules/fs-extra/lib/copy/index.js +7 -0
  209. package/.output/server/node_modules/fs-extra/lib/empty/index.js +39 -0
  210. package/.output/server/node_modules/fs-extra/lib/ensure/file.js +66 -0
  211. package/.output/server/node_modules/fs-extra/lib/ensure/index.js +23 -0
  212. package/.output/server/node_modules/fs-extra/lib/ensure/link.js +64 -0
  213. package/.output/server/node_modules/fs-extra/lib/ensure/symlink-paths.js +101 -0
  214. package/.output/server/node_modules/fs-extra/lib/ensure/symlink-type.js +34 -0
  215. package/.output/server/node_modules/fs-extra/lib/ensure/symlink.js +67 -0
  216. package/.output/server/node_modules/fs-extra/lib/fs/index.js +146 -0
  217. package/.output/server/node_modules/fs-extra/lib/index.js +16 -0
  218. package/.output/server/node_modules/fs-extra/lib/json/index.js +16 -0
  219. package/.output/server/node_modules/fs-extra/lib/json/jsonfile.js +11 -0
  220. package/.output/server/node_modules/fs-extra/lib/json/output-json-sync.js +12 -0
  221. package/.output/server/node_modules/fs-extra/lib/json/output-json.js +12 -0
  222. package/.output/server/node_modules/fs-extra/lib/mkdirs/index.js +14 -0
  223. package/.output/server/node_modules/fs-extra/lib/mkdirs/make-dir.js +27 -0
  224. package/.output/server/node_modules/fs-extra/lib/mkdirs/utils.js +21 -0
  225. package/.output/server/node_modules/fs-extra/lib/move/index.js +7 -0
  226. package/.output/server/node_modules/fs-extra/lib/move/move-sync.js +55 -0
  227. package/.output/server/node_modules/fs-extra/lib/move/move.js +59 -0
  228. package/.output/server/node_modules/fs-extra/lib/output-file/index.js +31 -0
  229. package/.output/server/node_modules/fs-extra/lib/path-exists/index.js +12 -0
  230. package/.output/server/node_modules/fs-extra/lib/remove/index.js +17 -0
  231. package/.output/server/node_modules/fs-extra/lib/util/async.js +29 -0
  232. package/.output/server/node_modules/fs-extra/lib/util/stat.js +159 -0
  233. package/.output/server/node_modules/fs-extra/lib/util/utimes.js +36 -0
  234. package/.output/server/node_modules/fs-extra/package.json +71 -0
  235. package/.output/server/node_modules/get-stream/package.json +60 -0
  236. package/.output/server/node_modules/get-stream/source/array-buffer.js +84 -0
  237. package/.output/server/node_modules/get-stream/source/array.js +32 -0
  238. package/.output/server/node_modules/get-stream/source/buffer.js +19 -0
  239. package/.output/server/node_modules/get-stream/source/contents.js +121 -0
  240. package/.output/server/node_modules/get-stream/source/exports.js +5 -0
  241. package/.output/server/node_modules/get-stream/source/index.js +13 -0
  242. package/.output/server/node_modules/get-stream/source/stream.js +65 -0
  243. package/.output/server/node_modules/get-stream/source/string.js +41 -0
  244. package/.output/server/node_modules/get-stream/source/utils.js +11 -0
  245. package/.output/server/node_modules/graceful-fs/clone.js +23 -0
  246. package/.output/server/node_modules/graceful-fs/graceful-fs.js +448 -0
  247. package/.output/server/node_modules/graceful-fs/legacy-streams.js +118 -0
  248. package/.output/server/node_modules/graceful-fs/package.json +53 -0
  249. package/.output/server/node_modules/graceful-fs/polyfills.js +355 -0
  250. package/.output/server/node_modules/human-signals/build/src/core.js +273 -0
  251. package/.output/server/node_modules/human-signals/build/src/main.js +70 -0
  252. package/.output/server/node_modules/human-signals/build/src/realtime.js +16 -0
  253. package/.output/server/node_modules/human-signals/build/src/signals.js +34 -0
  254. package/.output/server/node_modules/human-signals/package.json +66 -0
  255. package/.output/server/node_modules/is-plain-obj/index.js +8 -0
  256. package/.output/server/node_modules/is-plain-obj/package.json +41 -0
  257. package/.output/server/node_modules/is-stream/index.js +37 -0
  258. package/.output/server/node_modules/is-stream/package.json +48 -0
  259. package/.output/server/node_modules/is-unicode-supported/index.js +21 -0
  260. package/.output/server/node_modules/is-unicode-supported/package.json +47 -0
  261. package/.output/server/node_modules/isexe/index.js +57 -0
  262. package/.output/server/node_modules/isexe/mode.js +41 -0
  263. package/.output/server/node_modules/isexe/package.json +31 -0
  264. package/.output/server/node_modules/isexe/windows.js +42 -0
  265. package/.output/server/node_modules/jiti/dist/jiti.cjs +1 -0
  266. package/.output/server/node_modules/jiti/lib/jiti.mjs +29 -0
  267. package/.output/server/node_modules/jiti/package.json +133 -0
  268. package/.output/server/node_modules/js-runtime/dist/index.js +5 -0
  269. package/.output/server/node_modules/js-runtime/package.json +72 -0
  270. package/.output/server/node_modules/jsonfile/index.js +88 -0
  271. package/.output/server/node_modules/jsonfile/package.json +40 -0
  272. package/.output/server/node_modules/jsonfile/utils.js +14 -0
  273. package/.output/server/node_modules/mime-db/db.json +7088 -0
  274. package/.output/server/node_modules/mime-db/index.js +11 -0
  275. package/.output/server/node_modules/mime-db/package.json +57 -0
  276. package/.output/server/node_modules/mime-types/index.js +188 -0
  277. package/.output/server/node_modules/mime-types/package.json +43 -0
  278. package/.output/server/node_modules/minimatch/minimatch.js +947 -0
  279. package/.output/server/node_modules/minimatch/package.json +33 -0
  280. package/.output/server/node_modules/natural-orderby/dist/main.js +19 -0
  281. package/.output/server/node_modules/natural-orderby/dist/umd/natural-orderby.development.js +420 -0
  282. package/.output/server/node_modules/natural-orderby/dist/umd/natural-orderby.production.min.js +11 -0
  283. package/.output/server/node_modules/natural-orderby/package.json +119 -0
  284. package/.output/server/node_modules/npm-run-path/index.js +55 -0
  285. package/.output/server/node_modules/npm-run-path/package.json +52 -0
  286. package/.output/server/node_modules/p-limit/index.js +127 -0
  287. package/.output/server/node_modules/p-limit/package.json +58 -0
  288. package/.output/server/node_modules/parse-ms/index.js +45 -0
  289. package/.output/server/node_modules/parse-ms/package.json +47 -0
  290. package/.output/server/node_modules/path-is-inside/lib/path-is-inside.js +28 -0
  291. package/.output/server/node_modules/path-is-inside/package.json +27 -0
  292. package/.output/server/node_modules/path-to-regexp/index.js +421 -0
  293. package/.output/server/node_modules/path-to-regexp/package.json +46 -0
  294. package/.output/server/node_modules/picocolors/package.json +25 -0
  295. package/.output/server/node_modules/picocolors/picocolors.js +75 -0
  296. package/.output/server/node_modules/pretty-ms/index.js +149 -0
  297. package/.output/server/node_modules/pretty-ms/package.json +55 -0
  298. package/.output/server/node_modules/range-parser/index.js +158 -0
  299. package/.output/server/node_modules/range-parser/package.json +40 -0
  300. package/.output/server/node_modules/react-devtools-core/dist/backend.js +18302 -0
  301. package/.output/server/node_modules/react-devtools-core/package.json +38 -0
  302. package/.output/server/node_modules/remeda/dist/add.js +2 -0
  303. package/.output/server/node_modules/remeda/dist/addProp.js +2 -0
  304. package/.output/server/node_modules/remeda/dist/allPass.js +2 -0
  305. package/.output/server/node_modules/remeda/dist/anyPass.js +2 -0
  306. package/.output/server/node_modules/remeda/dist/binarySearchCutoffIndex-CLQRwIY1.js +2 -0
  307. package/.output/server/node_modules/remeda/dist/capitalize.js +2 -0
  308. package/.output/server/node_modules/remeda/dist/ceil.js +2 -0
  309. package/.output/server/node_modules/remeda/dist/chunk.js +2 -0
  310. package/.output/server/node_modules/remeda/dist/clamp.js +2 -0
  311. package/.output/server/node_modules/remeda/dist/clone.js +2 -0
  312. package/.output/server/node_modules/remeda/dist/concat.js +2 -0
  313. package/.output/server/node_modules/remeda/dist/conditional.js +2 -0
  314. package/.output/server/node_modules/remeda/dist/constant.js +2 -0
  315. package/.output/server/node_modules/remeda/dist/countBy.js +2 -0
  316. package/.output/server/node_modules/remeda/dist/debounce.js +2 -0
  317. package/.output/server/node_modules/remeda/dist/defaultTo.js +2 -0
  318. package/.output/server/node_modules/remeda/dist/difference.js +2 -0
  319. package/.output/server/node_modules/remeda/dist/differenceWith.js +2 -0
  320. package/.output/server/node_modules/remeda/dist/divide.js +2 -0
  321. package/.output/server/node_modules/remeda/dist/doNothing.js +2 -0
  322. package/.output/server/node_modules/remeda/dist/drop.js +2 -0
  323. package/.output/server/node_modules/remeda/dist/dropFirstBy.js +2 -0
  324. package/.output/server/node_modules/remeda/dist/dropLast.js +2 -0
  325. package/.output/server/node_modules/remeda/dist/dropLastWhile.js +2 -0
  326. package/.output/server/node_modules/remeda/dist/dropWhile.js +2 -0
  327. package/.output/server/node_modules/remeda/dist/endsWith.js +2 -0
  328. package/.output/server/node_modules/remeda/dist/entries.js +2 -0
  329. package/.output/server/node_modules/remeda/dist/evolve.js +2 -0
  330. package/.output/server/node_modules/remeda/dist/filter.js +2 -0
  331. package/.output/server/node_modules/remeda/dist/find.js +2 -0
  332. package/.output/server/node_modules/remeda/dist/findIndex.js +2 -0
  333. package/.output/server/node_modules/remeda/dist/findLast.js +2 -0
  334. package/.output/server/node_modules/remeda/dist/findLastIndex.js +2 -0
  335. package/.output/server/node_modules/remeda/dist/first.js +2 -0
  336. package/.output/server/node_modules/remeda/dist/firstBy.js +2 -0
  337. package/.output/server/node_modules/remeda/dist/flat.js +2 -0
  338. package/.output/server/node_modules/remeda/dist/flatMap.js +2 -0
  339. package/.output/server/node_modules/remeda/dist/floor.js +2 -0
  340. package/.output/server/node_modules/remeda/dist/forEach.js +2 -0
  341. package/.output/server/node_modules/remeda/dist/forEachObj.js +2 -0
  342. package/.output/server/node_modules/remeda/dist/fromEntries.js +2 -0
  343. package/.output/server/node_modules/remeda/dist/fromKeys.js +2 -0
  344. package/.output/server/node_modules/remeda/dist/funnel.js +2 -0
  345. package/.output/server/node_modules/remeda/dist/groupBy.js +2 -0
  346. package/.output/server/node_modules/remeda/dist/groupByProp.js +2 -0
  347. package/.output/server/node_modules/remeda/dist/hasAtLeast.js +2 -0
  348. package/.output/server/node_modules/remeda/dist/hasSubObject.js +2 -0
  349. package/.output/server/node_modules/remeda/dist/heap-OOe_F8_z.js +2 -0
  350. package/.output/server/node_modules/remeda/dist/identity.js +2 -0
  351. package/.output/server/node_modules/remeda/dist/index.js +1 -0
  352. package/.output/server/node_modules/remeda/dist/indexBy.js +2 -0
  353. package/.output/server/node_modules/remeda/dist/intersection.js +2 -0
  354. package/.output/server/node_modules/remeda/dist/intersectionWith.js +2 -0
  355. package/.output/server/node_modules/remeda/dist/invert.js +2 -0
  356. package/.output/server/node_modules/remeda/dist/isArray.js +2 -0
  357. package/.output/server/node_modules/remeda/dist/isBigInt.js +2 -0
  358. package/.output/server/node_modules/remeda/dist/isBoolean.js +2 -0
  359. package/.output/server/node_modules/remeda/dist/isDate.js +2 -0
  360. package/.output/server/node_modules/remeda/dist/isDeepEqual.js +2 -0
  361. package/.output/server/node_modules/remeda/dist/isDefined.js +2 -0
  362. package/.output/server/node_modules/remeda/dist/isEmpty.js +2 -0
  363. package/.output/server/node_modules/remeda/dist/isEmptyish.js +2 -0
  364. package/.output/server/node_modules/remeda/dist/isError.js +2 -0
  365. package/.output/server/node_modules/remeda/dist/isFunction.js +2 -0
  366. package/.output/server/node_modules/remeda/dist/isIncludedIn.js +2 -0
  367. package/.output/server/node_modules/remeda/dist/isNonNull.js +2 -0
  368. package/.output/server/node_modules/remeda/dist/isNonNullish.js +2 -0
  369. package/.output/server/node_modules/remeda/dist/isNot.js +2 -0
  370. package/.output/server/node_modules/remeda/dist/isNullish.js +2 -0
  371. package/.output/server/node_modules/remeda/dist/isNumber.js +2 -0
  372. package/.output/server/node_modules/remeda/dist/isObjectType.js +2 -0
  373. package/.output/server/node_modules/remeda/dist/isPlainObject.js +2 -0
  374. package/.output/server/node_modules/remeda/dist/isPromise.js +2 -0
  375. package/.output/server/node_modules/remeda/dist/isShallowEqual.js +2 -0
  376. package/.output/server/node_modules/remeda/dist/isStrictEqual.js +2 -0
  377. package/.output/server/node_modules/remeda/dist/isString.js +2 -0
  378. package/.output/server/node_modules/remeda/dist/isSymbol.js +2 -0
  379. package/.output/server/node_modules/remeda/dist/isTruthy.js +2 -0
  380. package/.output/server/node_modules/remeda/dist/join.js +2 -0
  381. package/.output/server/node_modules/remeda/dist/keys.js +2 -0
  382. package/.output/server/node_modules/remeda/dist/last.js +2 -0
  383. package/.output/server/node_modules/remeda/dist/lazyDataLastImpl-DtF3cihj.js +2 -0
  384. package/.output/server/node_modules/remeda/dist/length.js +2 -0
  385. package/.output/server/node_modules/remeda/dist/map.js +2 -0
  386. package/.output/server/node_modules/remeda/dist/mapKeys.js +2 -0
  387. package/.output/server/node_modules/remeda/dist/mapToObj.js +2 -0
  388. package/.output/server/node_modules/remeda/dist/mapValues.js +2 -0
  389. package/.output/server/node_modules/remeda/dist/mapWithFeedback.js +2 -0
  390. package/.output/server/node_modules/remeda/dist/mean.js +2 -0
  391. package/.output/server/node_modules/remeda/dist/meanBy.js +2 -0
  392. package/.output/server/node_modules/remeda/dist/median.js +2 -0
  393. package/.output/server/node_modules/remeda/dist/merge.js +2 -0
  394. package/.output/server/node_modules/remeda/dist/mergeAll.js +2 -0
  395. package/.output/server/node_modules/remeda/dist/mergeDeep.js +2 -0
  396. package/.output/server/node_modules/remeda/dist/multiply.js +2 -0
  397. package/.output/server/node_modules/remeda/dist/nthBy.js +2 -0
  398. package/.output/server/node_modules/remeda/dist/objOf.js +2 -0
  399. package/.output/server/node_modules/remeda/dist/omit.js +2 -0
  400. package/.output/server/node_modules/remeda/dist/omitBy.js +2 -0
  401. package/.output/server/node_modules/remeda/dist/once.js +2 -0
  402. package/.output/server/node_modules/remeda/dist/only.js +2 -0
  403. package/.output/server/node_modules/remeda/dist/partialBind.js +2 -0
  404. package/.output/server/node_modules/remeda/dist/partialLastBind.js +2 -0
  405. package/.output/server/node_modules/remeda/dist/partition.js +2 -0
  406. package/.output/server/node_modules/remeda/dist/pathOr.js +2 -0
  407. package/.output/server/node_modules/remeda/dist/pick.js +2 -0
  408. package/.output/server/node_modules/remeda/dist/pickBy.js +2 -0
  409. package/.output/server/node_modules/remeda/dist/pipe.js +2 -0
  410. package/.output/server/node_modules/remeda/dist/piped.js +2 -0
  411. package/.output/server/node_modules/remeda/dist/product.js +2 -0
  412. package/.output/server/node_modules/remeda/dist/prop.js +2 -0
  413. package/.output/server/node_modules/remeda/dist/pullObject.js +2 -0
  414. package/.output/server/node_modules/remeda/dist/purry.js +2 -0
  415. package/.output/server/node_modules/remeda/dist/purryFromLazy-B-_oTxzb.js +2 -0
  416. package/.output/server/node_modules/remeda/dist/purryOn-D4wFIFMT.js +2 -0
  417. package/.output/server/node_modules/remeda/dist/purryOrderRules-4JgY6z4X.js +2 -0
  418. package/.output/server/node_modules/remeda/dist/quickSelect-B4eZ0JeB.js +2 -0
  419. package/.output/server/node_modules/remeda/dist/randomBigInt.js +2 -0
  420. package/.output/server/node_modules/remeda/dist/randomInteger.js +2 -0
  421. package/.output/server/node_modules/remeda/dist/randomString.js +2 -0
  422. package/.output/server/node_modules/remeda/dist/range.js +2 -0
  423. package/.output/server/node_modules/remeda/dist/rankBy.js +2 -0
  424. package/.output/server/node_modules/remeda/dist/reduce.js +2 -0
  425. package/.output/server/node_modules/remeda/dist/reverse.js +2 -0
  426. package/.output/server/node_modules/remeda/dist/round.js +2 -0
  427. package/.output/server/node_modules/remeda/dist/sample.js +2 -0
  428. package/.output/server/node_modules/remeda/dist/set.js +2 -0
  429. package/.output/server/node_modules/remeda/dist/setPath.js +2 -0
  430. package/.output/server/node_modules/remeda/dist/shuffle.js +2 -0
  431. package/.output/server/node_modules/remeda/dist/sliceString.js +2 -0
  432. package/.output/server/node_modules/remeda/dist/sort.js +2 -0
  433. package/.output/server/node_modules/remeda/dist/sortBy.js +2 -0
  434. package/.output/server/node_modules/remeda/dist/sortedIndex.js +2 -0
  435. package/.output/server/node_modules/remeda/dist/sortedIndexBy.js +2 -0
  436. package/.output/server/node_modules/remeda/dist/sortedIndexWith.js +2 -0
  437. package/.output/server/node_modules/remeda/dist/sortedLastIndex.js +2 -0
  438. package/.output/server/node_modules/remeda/dist/sortedLastIndexBy.js +2 -0
  439. package/.output/server/node_modules/remeda/dist/splice.js +2 -0
  440. package/.output/server/node_modules/remeda/dist/split.js +2 -0
  441. package/.output/server/node_modules/remeda/dist/splitAt.js +2 -0
  442. package/.output/server/node_modules/remeda/dist/splitWhen.js +2 -0
  443. package/.output/server/node_modules/remeda/dist/startsWith.js +2 -0
  444. package/.output/server/node_modules/remeda/dist/stringToPath.js +2 -0
  445. package/.output/server/node_modules/remeda/dist/subtract.js +2 -0
  446. package/.output/server/node_modules/remeda/dist/sum.js +2 -0
  447. package/.output/server/node_modules/remeda/dist/sumBy.js +2 -0
  448. package/.output/server/node_modules/remeda/dist/swapInPlace-BrVgf3c3.js +2 -0
  449. package/.output/server/node_modules/remeda/dist/swapIndices.js +2 -0
  450. package/.output/server/node_modules/remeda/dist/swapProps.js +2 -0
  451. package/.output/server/node_modules/remeda/dist/take.js +2 -0
  452. package/.output/server/node_modules/remeda/dist/takeFirstBy.js +2 -0
  453. package/.output/server/node_modules/remeda/dist/takeLast.js +2 -0
  454. package/.output/server/node_modules/remeda/dist/takeLastWhile.js +2 -0
  455. package/.output/server/node_modules/remeda/dist/takeWhile.js +2 -0
  456. package/.output/server/node_modules/remeda/dist/tap.js +2 -0
  457. package/.output/server/node_modules/remeda/dist/times.js +2 -0
  458. package/.output/server/node_modules/remeda/dist/toCamelCase.js +2 -0
  459. package/.output/server/node_modules/remeda/dist/toKebabCase.js +2 -0
  460. package/.output/server/node_modules/remeda/dist/toLowerCase.js +2 -0
  461. package/.output/server/node_modules/remeda/dist/toSingle-qs9PC5sP.js +2 -0
  462. package/.output/server/node_modules/remeda/dist/toSnakeCase.js +2 -0
  463. package/.output/server/node_modules/remeda/dist/toTitleCase.js +2 -0
  464. package/.output/server/node_modules/remeda/dist/toUpperCase.js +2 -0
  465. package/.output/server/node_modules/remeda/dist/truncate.js +2 -0
  466. package/.output/server/node_modules/remeda/dist/uncapitalize.js +2 -0
  467. package/.output/server/node_modules/remeda/dist/unique.js +2 -0
  468. package/.output/server/node_modules/remeda/dist/uniqueBy.js +2 -0
  469. package/.output/server/node_modules/remeda/dist/uniqueWith.js +2 -0
  470. package/.output/server/node_modules/remeda/dist/utilityEvaluators-BQqW5Ir5.js +2 -0
  471. package/.output/server/node_modules/remeda/dist/values.js +2 -0
  472. package/.output/server/node_modules/remeda/dist/when.js +2 -0
  473. package/.output/server/node_modules/remeda/dist/withPrecision-CDZ-Oor7.js +2 -0
  474. package/.output/server/node_modules/remeda/dist/words-Dv8LmnKC.js +3 -0
  475. package/.output/server/node_modules/remeda/dist/zip.js +2 -0
  476. package/.output/server/node_modules/remeda/dist/zipWith.js +2 -0
  477. package/.output/server/node_modules/remeda/package.json +90 -0
  478. package/.output/server/node_modules/semver/classes/comparator.js +143 -0
  479. package/.output/server/node_modules/semver/classes/range.js +557 -0
  480. package/.output/server/node_modules/semver/classes/semver.js +333 -0
  481. package/.output/server/node_modules/semver/functions/clean.js +8 -0
  482. package/.output/server/node_modules/semver/functions/cmp.js +54 -0
  483. package/.output/server/node_modules/semver/functions/coerce.js +62 -0
  484. package/.output/server/node_modules/semver/functions/compare-build.js +9 -0
  485. package/.output/server/node_modules/semver/functions/compare-loose.js +5 -0
  486. package/.output/server/node_modules/semver/functions/compare.js +7 -0
  487. package/.output/server/node_modules/semver/functions/diff.js +60 -0
  488. package/.output/server/node_modules/semver/functions/eq.js +5 -0
  489. package/.output/server/node_modules/semver/functions/gt.js +5 -0
  490. package/.output/server/node_modules/semver/functions/gte.js +5 -0
  491. package/.output/server/node_modules/semver/functions/inc.js +21 -0
  492. package/.output/server/node_modules/semver/functions/lt.js +5 -0
  493. package/.output/server/node_modules/semver/functions/lte.js +5 -0
  494. package/.output/server/node_modules/semver/functions/major.js +5 -0
  495. package/.output/server/node_modules/semver/functions/minor.js +5 -0
  496. package/.output/server/node_modules/semver/functions/neq.js +5 -0
  497. package/.output/server/node_modules/semver/functions/parse.js +18 -0
  498. package/.output/server/node_modules/semver/functions/patch.js +5 -0
  499. package/.output/server/node_modules/semver/functions/prerelease.js +8 -0
  500. package/.output/server/node_modules/semver/functions/rcompare.js +5 -0
  501. package/.output/server/node_modules/semver/functions/rsort.js +5 -0
  502. package/.output/server/node_modules/semver/functions/satisfies.js +12 -0
  503. package/.output/server/node_modules/semver/functions/sort.js +5 -0
  504. package/.output/server/node_modules/semver/functions/valid.js +8 -0
  505. package/.output/server/node_modules/semver/index.js +91 -0
  506. package/.output/server/node_modules/semver/internal/constants.js +37 -0
  507. package/.output/server/node_modules/semver/internal/debug.js +11 -0
  508. package/.output/server/node_modules/semver/internal/identifiers.js +29 -0
  509. package/.output/server/node_modules/semver/internal/lrucache.js +42 -0
  510. package/.output/server/node_modules/semver/internal/parse-options.js +17 -0
  511. package/.output/server/node_modules/semver/internal/re.js +223 -0
  512. package/.output/server/node_modules/semver/package.json +78 -0
  513. package/.output/server/node_modules/semver/preload.js +4 -0
  514. package/.output/server/node_modules/semver/ranges/gtr.js +6 -0
  515. package/.output/server/node_modules/semver/ranges/intersects.js +9 -0
  516. package/.output/server/node_modules/semver/ranges/ltr.js +6 -0
  517. package/.output/server/node_modules/semver/ranges/max-satisfying.js +27 -0
  518. package/.output/server/node_modules/semver/ranges/min-satisfying.js +26 -0
  519. package/.output/server/node_modules/semver/ranges/min-version.js +63 -0
  520. package/.output/server/node_modules/semver/ranges/outside.js +82 -0
  521. package/.output/server/node_modules/semver/ranges/simplify.js +49 -0
  522. package/.output/server/node_modules/semver/ranges/subset.js +249 -0
  523. package/.output/server/node_modules/semver/ranges/to-comparators.js +10 -0
  524. package/.output/server/node_modules/semver/ranges/valid.js +13 -0
  525. package/.output/server/node_modules/serve-handler/package.json +68 -0
  526. package/.output/server/node_modules/serve-handler/src/directory.js +16 -0
  527. package/.output/server/node_modules/serve-handler/src/error.js +10 -0
  528. package/.output/server/node_modules/serve-handler/src/glob-slash.js +9 -0
  529. package/.output/server/node_modules/serve-handler/src/index.js +769 -0
  530. package/.output/server/node_modules/shebang-command/index.js +19 -0
  531. package/.output/server/node_modules/shebang-command/package.json +34 -0
  532. package/.output/server/node_modules/shebang-regex/index.js +2 -0
  533. package/.output/server/node_modules/shebang-regex/package.json +35 -0
  534. package/.output/server/node_modules/signal-exit/dist/mjs/index.js +275 -0
  535. package/.output/server/node_modules/signal-exit/dist/mjs/package.json +3 -0
  536. package/.output/server/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  537. package/.output/server/node_modules/signal-exit/package.json +106 -0
  538. package/.output/server/node_modules/sisteransi/package.json +34 -0
  539. package/.output/server/node_modules/sisteransi/src/index.js +58 -0
  540. package/.output/server/node_modules/source-map/lib/array-set.js +121 -0
  541. package/.output/server/node_modules/source-map/lib/base64-vlq.js +140 -0
  542. package/.output/server/node_modules/source-map/lib/base64.js +67 -0
  543. package/.output/server/node_modules/source-map/lib/binary-search.js +111 -0
  544. package/.output/server/node_modules/source-map/lib/mapping-list.js +79 -0
  545. package/.output/server/node_modules/source-map/lib/quick-sort.js +114 -0
  546. package/.output/server/node_modules/source-map/lib/source-map-consumer.js +1145 -0
  547. package/.output/server/node_modules/source-map/lib/source-map-generator.js +425 -0
  548. package/.output/server/node_modules/source-map/lib/source-node.js +413 -0
  549. package/.output/server/node_modules/source-map/lib/util.js +488 -0
  550. package/.output/server/node_modules/source-map/package.json +73 -0
  551. package/.output/server/node_modules/source-map/source-map.js +8 -0
  552. package/.output/server/node_modules/source-map-support/package.json +31 -0
  553. package/.output/server/node_modules/source-map-support/source-map-support.js +625 -0
  554. package/.output/server/node_modules/string-argv/index.js +41 -0
  555. package/.output/server/node_modules/string-argv/package.json +51 -0
  556. package/.output/server/node_modules/strip-final-newline/index.js +26 -0
  557. package/.output/server/node_modules/strip-final-newline/package.json +49 -0
  558. package/.output/server/node_modules/typescript/lib/typescript.js +200276 -0
  559. package/.output/server/node_modules/typescript/package.json +120 -0
  560. package/.output/server/node_modules/unicorn-magic/default.js +14 -0
  561. package/.output/server/node_modules/unicorn-magic/node.js +49 -0
  562. package/.output/server/node_modules/unicorn-magic/package.json +62 -0
  563. package/.output/server/node_modules/universalify/index.js +24 -0
  564. package/.output/server/node_modules/universalify/package.json +34 -0
  565. package/.output/server/node_modules/which/package.json +43 -0
  566. package/.output/server/node_modules/which/which.js +125 -0
  567. package/.output/server/node_modules/yocto-queue/index.js +90 -0
  568. package/.output/server/node_modules/yocto-queue/package.json +48 -0
  569. package/.output/server/node_modules/yoctocolors/base.js +94 -0
  570. package/.output/server/node_modules/yoctocolors/index.js +2 -0
  571. package/.output/server/node_modules/yoctocolors/package.json +69 -0
  572. package/.output/server/package.json +66 -0
  573. package/LICENSE +21 -0
  574. package/README.md +99 -0
  575. package/package.json +70 -0
@@ -0,0 +1,214 @@
1
+ import {getStreamName, isStandardStream} from '../utils/standard-stream.js';
2
+ import {normalizeTransforms} from '../transform/normalize.js';
3
+ import {getFdObjectMode} from '../transform/object-mode.js';
4
+ import {
5
+ getStdioItemType,
6
+ isRegularUrl,
7
+ isUnknownStdioString,
8
+ FILE_TYPES,
9
+ } from './type.js';
10
+ import {getStreamDirection} from './direction.js';
11
+ import {normalizeStdioOption} from './stdio-option.js';
12
+ import {handleNativeStream} from './native.js';
13
+ import {handleInputOptions} from './input-option.js';
14
+ import {filterDuplicates, getDuplicateStream} from './duplicate.js';
15
+
16
+ // Handle `input`, `inputFile`, `stdin`, `stdout` and `stderr` options, before spawning, in async/sync mode
17
+ // They are converted into an array of `fileDescriptors`.
18
+ // Each `fileDescriptor` is normalized, validated and contains all information necessary for further handling.
19
+ export const handleStdio = (addProperties, options, verboseInfo, isSync) => {
20
+ const stdio = normalizeStdioOption(options, verboseInfo, isSync);
21
+ const initialFileDescriptors = stdio.map((stdioOption, fdNumber) => getFileDescriptor({
22
+ stdioOption,
23
+ fdNumber,
24
+ options,
25
+ isSync,
26
+ }));
27
+ const fileDescriptors = getFinalFileDescriptors({
28
+ initialFileDescriptors,
29
+ addProperties,
30
+ options,
31
+ isSync,
32
+ });
33
+ options.stdio = fileDescriptors.map(({stdioItems}) => forwardStdio(stdioItems));
34
+ return fileDescriptors;
35
+ };
36
+
37
+ const getFileDescriptor = ({stdioOption, fdNumber, options, isSync}) => {
38
+ const optionName = getStreamName(fdNumber);
39
+ const {stdioItems: initialStdioItems, isStdioArray} = initializeStdioItems({
40
+ stdioOption,
41
+ fdNumber,
42
+ options,
43
+ optionName,
44
+ });
45
+ const direction = getStreamDirection(initialStdioItems, fdNumber, optionName);
46
+ const stdioItems = initialStdioItems.map(stdioItem => handleNativeStream({
47
+ stdioItem,
48
+ isStdioArray,
49
+ fdNumber,
50
+ direction,
51
+ isSync,
52
+ }));
53
+ const normalizedStdioItems = normalizeTransforms(stdioItems, optionName, direction, options);
54
+ const objectMode = getFdObjectMode(normalizedStdioItems, direction);
55
+ validateFileObjectMode(normalizedStdioItems, objectMode);
56
+ return {direction, objectMode, stdioItems: normalizedStdioItems};
57
+ };
58
+
59
+ // We make sure passing an array with a single item behaves the same as passing that item without an array.
60
+ // This is what users would expect.
61
+ // For example, `stdout: ['ignore']` behaves the same as `stdout: 'ignore'`.
62
+ const initializeStdioItems = ({stdioOption, fdNumber, options, optionName}) => {
63
+ const values = Array.isArray(stdioOption) ? stdioOption : [stdioOption];
64
+ const initialStdioItems = [
65
+ ...values.map(value => initializeStdioItem(value, optionName)),
66
+ ...handleInputOptions(options, fdNumber),
67
+ ];
68
+
69
+ const stdioItems = filterDuplicates(initialStdioItems);
70
+ const isStdioArray = stdioItems.length > 1;
71
+ validateStdioArray(stdioItems, isStdioArray, optionName);
72
+ validateStreams(stdioItems);
73
+ return {stdioItems, isStdioArray};
74
+ };
75
+
76
+ const initializeStdioItem = (value, optionName) => ({
77
+ type: getStdioItemType(value, optionName),
78
+ value,
79
+ optionName,
80
+ });
81
+
82
+ const validateStdioArray = (stdioItems, isStdioArray, optionName) => {
83
+ if (stdioItems.length === 0) {
84
+ throw new TypeError(`The \`${optionName}\` option must not be an empty array.`);
85
+ }
86
+
87
+ if (!isStdioArray) {
88
+ return;
89
+ }
90
+
91
+ for (const {value, optionName} of stdioItems) {
92
+ if (INVALID_STDIO_ARRAY_OPTIONS.has(value)) {
93
+ throw new Error(`The \`${optionName}\` option must not include \`${value}\`.`);
94
+ }
95
+ }
96
+ };
97
+
98
+ // Using those `stdio` values together with others for the same stream does not make sense, so we make it fail.
99
+ // However, we do allow it if the array has a single item.
100
+ const INVALID_STDIO_ARRAY_OPTIONS = new Set(['ignore', 'ipc']);
101
+
102
+ const validateStreams = stdioItems => {
103
+ for (const stdioItem of stdioItems) {
104
+ validateFileStdio(stdioItem);
105
+ }
106
+ };
107
+
108
+ const validateFileStdio = ({type, value, optionName}) => {
109
+ if (isRegularUrl(value)) {
110
+ throw new TypeError(`The \`${optionName}: URL\` option must use the \`file:\` scheme.
111
+ For example, you can use the \`pathToFileURL()\` method of the \`url\` core module.`);
112
+ }
113
+
114
+ if (isUnknownStdioString(type, value)) {
115
+ throw new TypeError(`The \`${optionName}: { file: '...' }\` option must be used instead of \`${optionName}: '...'\`.`);
116
+ }
117
+ };
118
+
119
+ const validateFileObjectMode = (stdioItems, objectMode) => {
120
+ if (!objectMode) {
121
+ return;
122
+ }
123
+
124
+ const fileStdioItem = stdioItems.find(({type}) => FILE_TYPES.has(type));
125
+ if (fileStdioItem !== undefined) {
126
+ throw new TypeError(`The \`${fileStdioItem.optionName}\` option cannot use both files and transforms in objectMode.`);
127
+ }
128
+ };
129
+
130
+ // Some `stdio` values require Execa to create streams.
131
+ // For example, file paths create file read/write streams.
132
+ // Those transformations are specified in `addProperties`, which is both direction-specific and type-specific.
133
+ const getFinalFileDescriptors = ({initialFileDescriptors, addProperties, options, isSync}) => {
134
+ const fileDescriptors = [];
135
+
136
+ try {
137
+ for (const fileDescriptor of initialFileDescriptors) {
138
+ fileDescriptors.push(getFinalFileDescriptor({
139
+ fileDescriptor,
140
+ fileDescriptors,
141
+ addProperties,
142
+ options,
143
+ isSync,
144
+ }));
145
+ }
146
+
147
+ return fileDescriptors;
148
+ } catch (error) {
149
+ cleanupCustomStreams(fileDescriptors);
150
+ throw error;
151
+ }
152
+ };
153
+
154
+ const getFinalFileDescriptor = ({
155
+ fileDescriptor: {direction, objectMode, stdioItems},
156
+ fileDescriptors,
157
+ addProperties,
158
+ options,
159
+ isSync,
160
+ }) => {
161
+ const finalStdioItems = stdioItems.map(stdioItem => addStreamProperties({
162
+ stdioItem,
163
+ addProperties,
164
+ direction,
165
+ options,
166
+ fileDescriptors,
167
+ isSync,
168
+ }));
169
+ return {direction, objectMode, stdioItems: finalStdioItems};
170
+ };
171
+
172
+ const addStreamProperties = ({stdioItem, addProperties, direction, options, fileDescriptors, isSync}) => {
173
+ const duplicateStream = getDuplicateStream({
174
+ stdioItem,
175
+ direction,
176
+ fileDescriptors,
177
+ isSync,
178
+ });
179
+
180
+ if (duplicateStream !== undefined) {
181
+ return {...stdioItem, stream: duplicateStream};
182
+ }
183
+
184
+ return {
185
+ ...stdioItem,
186
+ ...addProperties[direction][stdioItem.type](stdioItem, options),
187
+ };
188
+ };
189
+
190
+ // The stream error handling is performed by the piping logic above, which cannot be performed before subprocess spawning.
191
+ // If the subprocess spawning fails (e.g. due to an invalid command), the streams need to be manually destroyed.
192
+ // We need to create those streams before subprocess spawning, in case their creation fails, e.g. when passing an invalid generator as argument.
193
+ // Like this, an exception would be thrown, which would prevent spawning a subprocess.
194
+ export const cleanupCustomStreams = fileDescriptors => {
195
+ for (const {stdioItems} of fileDescriptors) {
196
+ for (const {stream} of stdioItems) {
197
+ if (stream !== undefined && !isStandardStream(stream)) {
198
+ stream.destroy();
199
+ }
200
+ }
201
+ }
202
+ };
203
+
204
+ // When the `std*: Iterable | WebStream | URL | filePath`, `input` or `inputFile` option is used, we pipe to `subprocess.std*`.
205
+ // When the `std*: Array` option is used, we emulate some of the native values ('inherit', Node.js stream and file descriptor integer). To do so, we also need to pipe to `subprocess.std*`.
206
+ // Therefore the `std*` options must be either `pipe` or `overlapped`. Other values do not set `subprocess.std*`.
207
+ const forwardStdio = stdioItems => {
208
+ if (stdioItems.length > 1) {
209
+ return stdioItems.some(({value}) => value === 'overlapped') ? 'overlapped' : 'pipe';
210
+ }
211
+
212
+ const [{type, value}] = stdioItems;
213
+ return type === 'native' ? value : 'pipe';
214
+ };
@@ -0,0 +1,50 @@
1
+ import {isReadableStream} from 'is-stream';
2
+ import {isUint8Array} from '../utils/uint-array.js';
3
+ import {isUrl, isFilePathString} from './type.js';
4
+
5
+ // Append the `stdin` option with the `input` and `inputFile` options
6
+ export const handleInputOptions = ({input, inputFile}, fdNumber) => fdNumber === 0
7
+ ? [
8
+ ...handleInputOption(input),
9
+ ...handleInputFileOption(inputFile),
10
+ ]
11
+ : [];
12
+
13
+ const handleInputOption = input => input === undefined ? [] : [{
14
+ type: getInputType(input),
15
+ value: input,
16
+ optionName: 'input',
17
+ }];
18
+
19
+ const getInputType = input => {
20
+ if (isReadableStream(input, {checkOpen: false})) {
21
+ return 'nodeStream';
22
+ }
23
+
24
+ if (typeof input === 'string') {
25
+ return 'string';
26
+ }
27
+
28
+ if (isUint8Array(input)) {
29
+ return 'uint8Array';
30
+ }
31
+
32
+ throw new Error('The `input` option must be a string, a Uint8Array or a Node.js Readable stream.');
33
+ };
34
+
35
+ const handleInputFileOption = inputFile => inputFile === undefined ? [] : [{
36
+ ...getInputFileType(inputFile),
37
+ optionName: 'inputFile',
38
+ }];
39
+
40
+ const getInputFileType = inputFile => {
41
+ if (isUrl(inputFile)) {
42
+ return {type: 'fileUrl', value: inputFile};
43
+ }
44
+
45
+ if (isFilePathString(inputFile)) {
46
+ return {type: 'filePath', value: {file: inputFile}};
47
+ }
48
+
49
+ throw new Error('The `inputFile` option must be a file path string or a file URL.');
50
+ };
@@ -0,0 +1,106 @@
1
+ import {readFileSync} from 'node:fs';
2
+ import tty from 'node:tty';
3
+ import {isStream as isNodeStream} from 'is-stream';
4
+ import {STANDARD_STREAMS} from '../utils/standard-stream.js';
5
+ import {bufferToUint8Array} from '../utils/uint-array.js';
6
+ import {serializeOptionValue} from '../arguments/fd-options.js';
7
+
8
+ // When we use multiple `stdio` values for the same streams, we pass 'pipe' to `child_process.spawn()`.
9
+ // We then emulate the piping done by core Node.js.
10
+ // To do so, we transform the following values:
11
+ // - Node.js streams are marked as `type: nodeStream`
12
+ // - 'inherit' becomes `process.stdin|stdout|stderr`
13
+ // - any file descriptor integer becomes `process.stdio[fdNumber]`
14
+ // All of the above transformations tell Execa to perform manual piping.
15
+ export const handleNativeStream = ({stdioItem, stdioItem: {type}, isStdioArray, fdNumber, direction, isSync}) => {
16
+ if (!isStdioArray || type !== 'native') {
17
+ return stdioItem;
18
+ }
19
+
20
+ return isSync
21
+ ? handleNativeStreamSync({stdioItem, fdNumber, direction})
22
+ : handleNativeStreamAsync({stdioItem, fdNumber});
23
+ };
24
+
25
+ // Synchronous methods use a different logic.
26
+ // 'inherit', file descriptors and process.std* are handled by readFileSync()/writeFileSync().
27
+ const handleNativeStreamSync = ({stdioItem, stdioItem: {value, optionName}, fdNumber, direction}) => {
28
+ const targetFd = getTargetFd({
29
+ value,
30
+ optionName,
31
+ fdNumber,
32
+ direction,
33
+ });
34
+ if (targetFd !== undefined) {
35
+ return targetFd;
36
+ }
37
+
38
+ if (isNodeStream(value, {checkOpen: false})) {
39
+ throw new TypeError(`The \`${optionName}: Stream\` option cannot both be an array and include a stream with synchronous methods.`);
40
+ }
41
+
42
+ return stdioItem;
43
+ };
44
+
45
+ const getTargetFd = ({value, optionName, fdNumber, direction}) => {
46
+ const targetFdNumber = getTargetFdNumber(value, fdNumber);
47
+ if (targetFdNumber === undefined) {
48
+ return;
49
+ }
50
+
51
+ if (direction === 'output') {
52
+ return {type: 'fileNumber', value: targetFdNumber, optionName};
53
+ }
54
+
55
+ if (tty.isatty(targetFdNumber)) {
56
+ throw new TypeError(`The \`${optionName}: ${serializeOptionValue(value)}\` option is invalid: it cannot be a TTY with synchronous methods.`);
57
+ }
58
+
59
+ return {type: 'uint8Array', value: bufferToUint8Array(readFileSync(targetFdNumber)), optionName};
60
+ };
61
+
62
+ const getTargetFdNumber = (value, fdNumber) => {
63
+ if (value === 'inherit') {
64
+ return fdNumber;
65
+ }
66
+
67
+ if (typeof value === 'number') {
68
+ return value;
69
+ }
70
+
71
+ const standardStreamIndex = STANDARD_STREAMS.indexOf(value);
72
+ if (standardStreamIndex !== -1) {
73
+ return standardStreamIndex;
74
+ }
75
+ };
76
+
77
+ const handleNativeStreamAsync = ({stdioItem, stdioItem: {value, optionName}, fdNumber}) => {
78
+ if (value === 'inherit') {
79
+ return {type: 'nodeStream', value: getStandardStream(fdNumber, value, optionName), optionName};
80
+ }
81
+
82
+ if (typeof value === 'number') {
83
+ return {type: 'nodeStream', value: getStandardStream(value, value, optionName), optionName};
84
+ }
85
+
86
+ if (isNodeStream(value, {checkOpen: false})) {
87
+ return {type: 'nodeStream', value, optionName};
88
+ }
89
+
90
+ return stdioItem;
91
+ };
92
+
93
+ // Node.js does not allow to easily retrieve file descriptors beyond stdin/stdout/stderr as streams.
94
+ // - `fs.createReadStream()`/`fs.createWriteStream()` with the `fd` option do not work with character devices that use blocking reads/writes (such as interactive TTYs).
95
+ // - Using a TCP `Socket` would work but be rather complex to implement.
96
+ // Since this is an edge case, we simply throw an error message.
97
+ // See https://github.com/sindresorhus/execa/pull/643#discussion_r1435905707
98
+ const getStandardStream = (fdNumber, value, optionName) => {
99
+ const standardStream = STANDARD_STREAMS[fdNumber];
100
+
101
+ if (standardStream === undefined) {
102
+ throw new TypeError(`The \`${optionName}: ${value}\` option is invalid: no such standard stream.`);
103
+ }
104
+
105
+ return standardStream;
106
+ };
@@ -0,0 +1,60 @@
1
+ import {STANDARD_STREAMS_ALIASES} from '../utils/standard-stream.js';
2
+ import {normalizeIpcStdioArray} from '../ipc/array.js';
3
+ import {isFullVerbose} from '../verbose/values.js';
4
+
5
+ // Add support for `stdin`/`stdout`/`stderr` as an alias for `stdio`.
6
+ // Also normalize the `stdio` option.
7
+ export const normalizeStdioOption = ({stdio, ipc, buffer, ...options}, verboseInfo, isSync) => {
8
+ const stdioArray = getStdioArray(stdio, options).map((stdioOption, fdNumber) => addDefaultValue(stdioOption, fdNumber));
9
+ return isSync
10
+ ? normalizeStdioSync(stdioArray, buffer, verboseInfo)
11
+ : normalizeIpcStdioArray(stdioArray, ipc);
12
+ };
13
+
14
+ const getStdioArray = (stdio, options) => {
15
+ if (stdio === undefined) {
16
+ return STANDARD_STREAMS_ALIASES.map(alias => options[alias]);
17
+ }
18
+
19
+ if (hasAlias(options)) {
20
+ throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${STANDARD_STREAMS_ALIASES.map(alias => `\`${alias}\``).join(', ')}`);
21
+ }
22
+
23
+ if (typeof stdio === 'string') {
24
+ return [stdio, stdio, stdio];
25
+ }
26
+
27
+ if (!Array.isArray(stdio)) {
28
+ throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
29
+ }
30
+
31
+ const length = Math.max(stdio.length, STANDARD_STREAMS_ALIASES.length);
32
+ return Array.from({length}, (_, fdNumber) => stdio[fdNumber]);
33
+ };
34
+
35
+ const hasAlias = options => STANDARD_STREAMS_ALIASES.some(alias => options[alias] !== undefined);
36
+
37
+ const addDefaultValue = (stdioOption, fdNumber) => {
38
+ if (Array.isArray(stdioOption)) {
39
+ return stdioOption.map(item => addDefaultValue(item, fdNumber));
40
+ }
41
+
42
+ if (stdioOption === null || stdioOption === undefined) {
43
+ return fdNumber >= STANDARD_STREAMS_ALIASES.length ? 'ignore' : 'pipe';
44
+ }
45
+
46
+ return stdioOption;
47
+ };
48
+
49
+ // Using `buffer: false` with synchronous methods implies `stdout`/`stderr`: `ignore`.
50
+ // Unless the output is needed, e.g. due to `verbose: 'full'` or to redirecting to a file.
51
+ const normalizeStdioSync = (stdioArray, buffer, verboseInfo) => stdioArray.map((stdioOption, fdNumber) =>
52
+ !buffer[fdNumber]
53
+ && fdNumber !== 0
54
+ && !isFullVerbose(verboseInfo, fdNumber)
55
+ && isOutputPipeOnly(stdioOption)
56
+ ? 'ignore'
57
+ : stdioOption);
58
+
59
+ const isOutputPipeOnly = stdioOption => stdioOption === 'pipe'
60
+ || (Array.isArray(stdioOption) && stdioOption.every(item => item === 'pipe'));
@@ -0,0 +1,173 @@
1
+ import {isStream as isNodeStream, isDuplexStream} from 'is-stream';
2
+ import isPlainObj from 'is-plain-obj';
3
+ import {isUint8Array} from '../utils/uint-array.js';
4
+
5
+ // The `stdin`/`stdout`/`stderr` option can be of many types. This detects it.
6
+ export const getStdioItemType = (value, optionName) => {
7
+ if (isAsyncGenerator(value)) {
8
+ return 'asyncGenerator';
9
+ }
10
+
11
+ if (isSyncGenerator(value)) {
12
+ return 'generator';
13
+ }
14
+
15
+ if (isUrl(value)) {
16
+ return 'fileUrl';
17
+ }
18
+
19
+ if (isFilePathObject(value)) {
20
+ return 'filePath';
21
+ }
22
+
23
+ if (isWebStream(value)) {
24
+ return 'webStream';
25
+ }
26
+
27
+ if (isNodeStream(value, {checkOpen: false})) {
28
+ return 'native';
29
+ }
30
+
31
+ if (isUint8Array(value)) {
32
+ return 'uint8Array';
33
+ }
34
+
35
+ if (isAsyncIterableObject(value)) {
36
+ return 'asyncIterable';
37
+ }
38
+
39
+ if (isIterableObject(value)) {
40
+ return 'iterable';
41
+ }
42
+
43
+ if (isTransformStream(value)) {
44
+ return getTransformStreamType({transform: value}, optionName);
45
+ }
46
+
47
+ if (isTransformOptions(value)) {
48
+ return getTransformObjectType(value, optionName);
49
+ }
50
+
51
+ return 'native';
52
+ };
53
+
54
+ const getTransformObjectType = (value, optionName) => {
55
+ if (isDuplexStream(value.transform, {checkOpen: false})) {
56
+ return getDuplexType(value, optionName);
57
+ }
58
+
59
+ if (isTransformStream(value.transform)) {
60
+ return getTransformStreamType(value, optionName);
61
+ }
62
+
63
+ return getGeneratorObjectType(value, optionName);
64
+ };
65
+
66
+ const getDuplexType = (value, optionName) => {
67
+ validateNonGeneratorType(value, optionName, 'Duplex stream');
68
+ return 'duplex';
69
+ };
70
+
71
+ const getTransformStreamType = (value, optionName) => {
72
+ validateNonGeneratorType(value, optionName, 'web TransformStream');
73
+ return 'webTransform';
74
+ };
75
+
76
+ const validateNonGeneratorType = ({final, binary, objectMode}, optionName, typeName) => {
77
+ checkUndefinedOption(final, `${optionName}.final`, typeName);
78
+ checkUndefinedOption(binary, `${optionName}.binary`, typeName);
79
+ checkBooleanOption(objectMode, `${optionName}.objectMode`);
80
+ };
81
+
82
+ const checkUndefinedOption = (value, optionName, typeName) => {
83
+ if (value !== undefined) {
84
+ throw new TypeError(`The \`${optionName}\` option can only be defined when using a generator, not a ${typeName}.`);
85
+ }
86
+ };
87
+
88
+ const getGeneratorObjectType = ({transform, final, binary, objectMode}, optionName) => {
89
+ if (transform !== undefined && !isGenerator(transform)) {
90
+ throw new TypeError(`The \`${optionName}.transform\` option must be a generator, a Duplex stream or a web TransformStream.`);
91
+ }
92
+
93
+ if (isDuplexStream(final, {checkOpen: false})) {
94
+ throw new TypeError(`The \`${optionName}.final\` option must not be a Duplex stream.`);
95
+ }
96
+
97
+ if (isTransformStream(final)) {
98
+ throw new TypeError(`The \`${optionName}.final\` option must not be a web TransformStream.`);
99
+ }
100
+
101
+ if (final !== undefined && !isGenerator(final)) {
102
+ throw new TypeError(`The \`${optionName}.final\` option must be a generator.`);
103
+ }
104
+
105
+ checkBooleanOption(binary, `${optionName}.binary`);
106
+ checkBooleanOption(objectMode, `${optionName}.objectMode`);
107
+
108
+ return isAsyncGenerator(transform) || isAsyncGenerator(final) ? 'asyncGenerator' : 'generator';
109
+ };
110
+
111
+ const checkBooleanOption = (value, optionName) => {
112
+ if (value !== undefined && typeof value !== 'boolean') {
113
+ throw new TypeError(`The \`${optionName}\` option must use a boolean.`);
114
+ }
115
+ };
116
+
117
+ const isGenerator = value => isAsyncGenerator(value) || isSyncGenerator(value);
118
+ export const isAsyncGenerator = value => Object.prototype.toString.call(value) === '[object AsyncGeneratorFunction]';
119
+ const isSyncGenerator = value => Object.prototype.toString.call(value) === '[object GeneratorFunction]';
120
+ const isTransformOptions = value => isPlainObj(value)
121
+ && (value.transform !== undefined || value.final !== undefined);
122
+
123
+ export const isUrl = value => Object.prototype.toString.call(value) === '[object URL]';
124
+ export const isRegularUrl = value => isUrl(value) && value.protocol !== 'file:';
125
+
126
+ const isFilePathObject = value => isPlainObj(value)
127
+ && Object.keys(value).length > 0
128
+ && Object.keys(value).every(key => FILE_PATH_KEYS.has(key))
129
+ && isFilePathString(value.file);
130
+ const FILE_PATH_KEYS = new Set(['file', 'append']);
131
+ export const isFilePathString = file => typeof file === 'string';
132
+
133
+ export const isUnknownStdioString = (type, value) => type === 'native'
134
+ && typeof value === 'string'
135
+ && !KNOWN_STDIO_STRINGS.has(value);
136
+ const KNOWN_STDIO_STRINGS = new Set(['ipc', 'ignore', 'inherit', 'overlapped', 'pipe']);
137
+
138
+ const isReadableStream = value => Object.prototype.toString.call(value) === '[object ReadableStream]';
139
+ export const isWritableStream = value => Object.prototype.toString.call(value) === '[object WritableStream]';
140
+ const isWebStream = value => isReadableStream(value) || isWritableStream(value);
141
+ const isTransformStream = value => isReadableStream(value?.readable) && isWritableStream(value?.writable);
142
+
143
+ const isAsyncIterableObject = value => isObject(value) && typeof value[Symbol.asyncIterator] === 'function';
144
+ const isIterableObject = value => isObject(value) && typeof value[Symbol.iterator] === 'function';
145
+ const isObject = value => typeof value === 'object' && value !== null;
146
+
147
+ // Types which modify `subprocess.std*`
148
+ export const TRANSFORM_TYPES = new Set(['generator', 'asyncGenerator', 'duplex', 'webTransform']);
149
+ // Types which write to a file or a file descriptor
150
+ export const FILE_TYPES = new Set(['fileUrl', 'filePath', 'fileNumber']);
151
+ // When two file descriptors of this type share the same target, we need to do some special logic
152
+ export const SPECIAL_DUPLICATE_TYPES_SYNC = new Set(['fileUrl', 'filePath']);
153
+ export const SPECIAL_DUPLICATE_TYPES = new Set([...SPECIAL_DUPLICATE_TYPES_SYNC, 'webStream', 'nodeStream']);
154
+ // Do not allow two file descriptors of this type sharing the same target
155
+ export const FORBID_DUPLICATE_TYPES = new Set(['webTransform', 'duplex']);
156
+
157
+ // Convert types to human-friendly strings for error messages
158
+ export const TYPE_TO_MESSAGE = {
159
+ generator: 'a generator',
160
+ asyncGenerator: 'an async generator',
161
+ fileUrl: 'a file URL',
162
+ filePath: 'a file path string',
163
+ fileNumber: 'a file descriptor number',
164
+ webStream: 'a web stream',
165
+ nodeStream: 'a Node.js stream',
166
+ webTransform: 'a web TransformStream',
167
+ duplex: 'a Duplex stream',
168
+ native: 'any value',
169
+ iterable: 'an iterable',
170
+ asyncIterable: 'an async iterable',
171
+ string: 'a string',
172
+ uint8Array: 'a Uint8Array',
173
+ };
@@ -0,0 +1,20 @@
1
+ import {onAbortedSignal} from '../utils/abort-signal.js';
2
+
3
+ // Validate the `cancelSignal` option
4
+ export const validateCancelSignal = ({cancelSignal}) => {
5
+ if (cancelSignal !== undefined && Object.prototype.toString.call(cancelSignal) !== '[object AbortSignal]') {
6
+ throw new Error(`The \`cancelSignal\` option must be an AbortSignal: ${String(cancelSignal)}`);
7
+ }
8
+ };
9
+
10
+ // Terminate the subprocess when aborting the `cancelSignal` option and `gracefulSignal` is `false`
11
+ export const throwOnCancel = ({subprocess, cancelSignal, gracefulCancel, context, controller}) => cancelSignal === undefined || gracefulCancel
12
+ ? []
13
+ : [terminateOnCancel(subprocess, cancelSignal, context, controller)];
14
+
15
+ const terminateOnCancel = async (subprocess, cancelSignal, context, {signal}) => {
16
+ await onAbortedSignal(cancelSignal, signal);
17
+ context.terminationReason ??= 'cancel';
18
+ subprocess.kill();
19
+ throw cancelSignal.reason;
20
+ };
@@ -0,0 +1,16 @@
1
+ import {addAbortListener} from 'node:events';
2
+ import {onExit} from 'signal-exit';
3
+
4
+ // If the `cleanup` option is used, call `subprocess.kill()` when the parent process exits
5
+ export const cleanupOnExit = (subprocess, {cleanup, detached}, {signal}) => {
6
+ if (!cleanup || detached) {
7
+ return;
8
+ }
9
+
10
+ const removeExitHandler = onExit(() => {
11
+ subprocess.kill();
12
+ });
13
+ addAbortListener(signal, () => {
14
+ removeExitHandler();
15
+ });
16
+ };