@kubb/agent 4.28.1 → 4.29.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 (290) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/server/chunks/nitro/nitro.mjs +378 -642
  3. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  4. package/.output/server/chunks/routes/api/health.get.mjs +4 -6
  5. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  6. package/.output/server/index.mjs +4 -6
  7. package/.output/server/index.mjs.map +1 -1
  8. package/.output/server/node_modules/@kubb/fabric-core/dist/{defaultParser-BD_N68Bo.js → defaultParser-C1atU7yU.js} +2 -3
  9. package/.output/server/node_modules/@kubb/fabric-core/dist/{getRelativePath-C4Au07ON.js → getRelativePath-BcieQL5M.js} +1 -2
  10. package/.output/server/node_modules/@kubb/fabric-core/dist/index.js +8 -9
  11. package/.output/server/node_modules/@kubb/fabric-core/dist/{Root-BQX3eHqb.js → onProcessExit-CF200hsz.js} +109 -190
  12. package/.output/server/node_modules/@kubb/fabric-core/dist/parsers/typescript.js +3 -4
  13. package/.output/server/node_modules/@kubb/fabric-core/dist/parsers.js +2 -3
  14. package/.output/server/node_modules/@kubb/fabric-core/dist/plugins.js +58 -298
  15. package/.output/server/node_modules/@kubb/fabric-core/package.json +8 -18
  16. package/.output/server/node_modules/@kubb/react-fabric/dist/{chunk-DbZtQ4qb.js → chunk-Cnw5r_-A.js} +1 -5
  17. package/.output/server/node_modules/@kubb/react-fabric/dist/index.js +39 -41
  18. package/.output/server/node_modules/@kubb/react-fabric/dist/{jsx-runtime-CQFBnRKx.js → jsx-runtime-Dm7PKVbc.js} +6 -24
  19. package/.output/server/node_modules/@kubb/react-fabric/dist/jsx-runtime.js +5 -4
  20. package/.output/server/node_modules/@kubb/react-fabric/dist/plugins.js +3 -3
  21. package/.output/server/node_modules/@kubb/react-fabric/dist/{react--draJ5Pm.js → react-D652OKii.js} +31 -91
  22. package/.output/server/node_modules/@kubb/react-fabric/dist/{reactPlugin-DqJsInTf.js → reactPlugin-BkDkx1cs.js} +410 -1650
  23. package/.output/server/node_modules/@kubb/react-fabric/package.json +8 -11
  24. package/.output/server/node_modules/empathic/access.js +39 -0
  25. package/.output/server/node_modules/empathic/access.mjs +34 -0
  26. package/.output/server/node_modules/empathic/find.js +81 -0
  27. package/.output/server/node_modules/empathic/find.mjs +76 -0
  28. package/.output/server/node_modules/empathic/package.json +49 -0
  29. package/.output/server/node_modules/empathic/package.mjs +52 -0
  30. package/.output/server/node_modules/empathic/resolve.js +31 -0
  31. package/.output/server/node_modules/empathic/resolve.mjs +27 -0
  32. package/.output/server/node_modules/empathic/walk.js +22 -0
  33. package/.output/server/node_modules/empathic/walk.mjs +20 -0
  34. package/.output/server/node_modules/tinyexec/dist/main.js +633 -0
  35. package/.output/server/node_modules/tinyexec/package.json +61 -0
  36. package/.output/server/package.json +6 -44
  37. package/package.json +19 -21
  38. package/.output/server/node_modules/.nitro/path-key@3.1.1/index.js +0 -16
  39. package/.output/server/node_modules/.nitro/path-key@3.1.1/package.json +0 -39
  40. package/.output/server/node_modules/.nitro/path-key@4.0.0/index.js +0 -12
  41. package/.output/server/node_modules/.nitro/path-key@4.0.0/package.json +0 -41
  42. package/.output/server/node_modules/.nitro/path-to-regexp@3.3.0/index.js +0 -421
  43. package/.output/server/node_modules/.nitro/path-to-regexp@3.3.0/package.json +0 -46
  44. package/.output/server/node_modules/@kubb/fabric-core/dist/chunk-BVHe6Par.js +0 -22
  45. package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +0 -89
  46. package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +0 -34
  47. package/.output/server/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +0 -6
  48. package/.output/server/node_modules/@sec-ant/readable-stream/package.json +0 -98
  49. package/.output/server/node_modules/@sindresorhus/merge-streams/index.js +0 -265
  50. package/.output/server/node_modules/@sindresorhus/merge-streams/package.json +0 -49
  51. package/.output/server/node_modules/balanced-match/index.js +0 -62
  52. package/.output/server/node_modules/balanced-match/package.json +0 -48
  53. package/.output/server/node_modules/brace-expansion/index.js +0 -201
  54. package/.output/server/node_modules/brace-expansion/package.json +0 -50
  55. package/.output/server/node_modules/bytes/index.js +0 -159
  56. package/.output/server/node_modules/bytes/package.json +0 -39
  57. package/.output/server/node_modules/concat-map/index.js +0 -13
  58. package/.output/server/node_modules/concat-map/package.json +0 -59
  59. package/.output/server/node_modules/content-disposition/index.js +0 -445
  60. package/.output/server/node_modules/content-disposition/package.json +0 -39
  61. package/.output/server/node_modules/cross-spawn/index.js +0 -39
  62. package/.output/server/node_modules/cross-spawn/lib/enoent.js +0 -59
  63. package/.output/server/node_modules/cross-spawn/lib/parse.js +0 -91
  64. package/.output/server/node_modules/cross-spawn/lib/util/escape.js +0 -47
  65. package/.output/server/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  66. package/.output/server/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  67. package/.output/server/node_modules/cross-spawn/package.json +0 -73
  68. package/.output/server/node_modules/execa/index.js +0 -28
  69. package/.output/server/node_modules/execa/lib/arguments/command.js +0 -20
  70. package/.output/server/node_modules/execa/lib/arguments/cwd.js +0 -39
  71. package/.output/server/node_modules/execa/lib/arguments/encoding-option.js +0 -50
  72. package/.output/server/node_modules/execa/lib/arguments/escape.js +0 -88
  73. package/.output/server/node_modules/execa/lib/arguments/fd-options.js +0 -108
  74. package/.output/server/node_modules/execa/lib/arguments/file-url.js +0 -25
  75. package/.output/server/node_modules/execa/lib/arguments/options.js +0 -96
  76. package/.output/server/node_modules/execa/lib/arguments/shell.js +0 -11
  77. package/.output/server/node_modules/execa/lib/arguments/specific.js +0 -111
  78. package/.output/server/node_modules/execa/lib/convert/add.js +0 -15
  79. package/.output/server/node_modules/execa/lib/convert/concurrent.js +0 -33
  80. package/.output/server/node_modules/execa/lib/convert/duplex.js +0 -69
  81. package/.output/server/node_modules/execa/lib/convert/iterable.js +0 -34
  82. package/.output/server/node_modules/execa/lib/convert/readable.js +0 -113
  83. package/.output/server/node_modules/execa/lib/convert/shared.js +0 -46
  84. package/.output/server/node_modules/execa/lib/convert/writable.js +0 -90
  85. package/.output/server/node_modules/execa/lib/io/contents.js +0 -116
  86. package/.output/server/node_modules/execa/lib/io/input-sync.js +0 -44
  87. package/.output/server/node_modules/execa/lib/io/iterate.js +0 -110
  88. package/.output/server/node_modules/execa/lib/io/max-buffer.js +0 -89
  89. package/.output/server/node_modules/execa/lib/io/output-async.js +0 -80
  90. package/.output/server/node_modules/execa/lib/io/output-sync.js +0 -135
  91. package/.output/server/node_modules/execa/lib/io/pipeline.js +0 -48
  92. package/.output/server/node_modules/execa/lib/io/strip-newline.js +0 -12
  93. package/.output/server/node_modules/execa/lib/ipc/array.js +0 -4
  94. package/.output/server/node_modules/execa/lib/ipc/buffer-messages.js +0 -47
  95. package/.output/server/node_modules/execa/lib/ipc/forward.js +0 -56
  96. package/.output/server/node_modules/execa/lib/ipc/get-each.js +0 -89
  97. package/.output/server/node_modules/execa/lib/ipc/get-one.js +0 -69
  98. package/.output/server/node_modules/execa/lib/ipc/graceful.js +0 -72
  99. package/.output/server/node_modules/execa/lib/ipc/incoming.js +0 -79
  100. package/.output/server/node_modules/execa/lib/ipc/ipc-input.js +0 -44
  101. package/.output/server/node_modules/execa/lib/ipc/methods.js +0 -49
  102. package/.output/server/node_modules/execa/lib/ipc/outgoing.js +0 -47
  103. package/.output/server/node_modules/execa/lib/ipc/reference.js +0 -44
  104. package/.output/server/node_modules/execa/lib/ipc/send.js +0 -91
  105. package/.output/server/node_modules/execa/lib/ipc/strict.js +0 -113
  106. package/.output/server/node_modules/execa/lib/ipc/validation.js +0 -111
  107. package/.output/server/node_modules/execa/lib/methods/bind.js +0 -23
  108. package/.output/server/node_modules/execa/lib/methods/command.js +0 -43
  109. package/.output/server/node_modules/execa/lib/methods/create.js +0 -65
  110. package/.output/server/node_modules/execa/lib/methods/main-async.js +0 -194
  111. package/.output/server/node_modules/execa/lib/methods/main-sync.js +0 -163
  112. package/.output/server/node_modules/execa/lib/methods/node.js +0 -51
  113. package/.output/server/node_modules/execa/lib/methods/parameters.js +0 -31
  114. package/.output/server/node_modules/execa/lib/methods/promise.js +0 -15
  115. package/.output/server/node_modules/execa/lib/methods/script.js +0 -22
  116. package/.output/server/node_modules/execa/lib/methods/template.js +0 -153
  117. package/.output/server/node_modules/execa/lib/pipe/abort.js +0 -20
  118. package/.output/server/node_modules/execa/lib/pipe/pipe-arguments.js +0 -91
  119. package/.output/server/node_modules/execa/lib/pipe/sequence.js +0 -24
  120. package/.output/server/node_modules/execa/lib/pipe/setup.js +0 -72
  121. package/.output/server/node_modules/execa/lib/pipe/streaming.js +0 -51
  122. package/.output/server/node_modules/execa/lib/pipe/throw.js +0 -58
  123. package/.output/server/node_modules/execa/lib/resolve/all-async.js +0 -46
  124. package/.output/server/node_modules/execa/lib/resolve/all-sync.js +0 -33
  125. package/.output/server/node_modules/execa/lib/resolve/exit-async.js +0 -54
  126. package/.output/server/node_modules/execa/lib/resolve/exit-sync.js +0 -25
  127. package/.output/server/node_modules/execa/lib/resolve/stdio.js +0 -47
  128. package/.output/server/node_modules/execa/lib/resolve/wait-stream.js +0 -96
  129. package/.output/server/node_modules/execa/lib/resolve/wait-subprocess.js +0 -146
  130. package/.output/server/node_modules/execa/lib/return/duration.js +0 -8
  131. package/.output/server/node_modules/execa/lib/return/early-error.js +0 -60
  132. package/.output/server/node_modules/execa/lib/return/final-error.js +0 -40
  133. package/.output/server/node_modules/execa/lib/return/message.js +0 -157
  134. package/.output/server/node_modules/execa/lib/return/reject.js +0 -13
  135. package/.output/server/node_modules/execa/lib/return/result.js +0 -186
  136. package/.output/server/node_modules/execa/lib/stdio/direction.js +0 -76
  137. package/.output/server/node_modules/execa/lib/stdio/duplicate.js +0 -116
  138. package/.output/server/node_modules/execa/lib/stdio/handle-async.js +0 -52
  139. package/.output/server/node_modules/execa/lib/stdio/handle-sync.js +0 -57
  140. package/.output/server/node_modules/execa/lib/stdio/handle.js +0 -214
  141. package/.output/server/node_modules/execa/lib/stdio/input-option.js +0 -50
  142. package/.output/server/node_modules/execa/lib/stdio/native.js +0 -106
  143. package/.output/server/node_modules/execa/lib/stdio/stdio-option.js +0 -60
  144. package/.output/server/node_modules/execa/lib/stdio/type.js +0 -173
  145. package/.output/server/node_modules/execa/lib/terminate/cancel.js +0 -20
  146. package/.output/server/node_modules/execa/lib/terminate/cleanup.js +0 -16
  147. package/.output/server/node_modules/execa/lib/terminate/graceful.js +0 -71
  148. package/.output/server/node_modules/execa/lib/terminate/kill.js +0 -93
  149. package/.output/server/node_modules/execa/lib/terminate/signal.js +0 -70
  150. package/.output/server/node_modules/execa/lib/terminate/timeout.js +0 -21
  151. package/.output/server/node_modules/execa/lib/transform/encoding-transform.js +0 -51
  152. package/.output/server/node_modules/execa/lib/transform/generator.js +0 -107
  153. package/.output/server/node_modules/execa/lib/transform/normalize.js +0 -111
  154. package/.output/server/node_modules/execa/lib/transform/object-mode.js +0 -41
  155. package/.output/server/node_modules/execa/lib/transform/run-async.js +0 -60
  156. package/.output/server/node_modules/execa/lib/transform/run-sync.js +0 -50
  157. package/.output/server/node_modules/execa/lib/transform/split.js +0 -110
  158. package/.output/server/node_modules/execa/lib/transform/validate.js +0 -43
  159. package/.output/server/node_modules/execa/lib/utils/abort-signal.js +0 -8
  160. package/.output/server/node_modules/execa/lib/utils/deferred.js +0 -7
  161. package/.output/server/node_modules/execa/lib/utils/max-listeners.js +0 -14
  162. package/.output/server/node_modules/execa/lib/utils/standard-stream.js +0 -6
  163. package/.output/server/node_modules/execa/lib/utils/uint-array.js +0 -69
  164. package/.output/server/node_modules/execa/lib/verbose/complete.js +0 -24
  165. package/.output/server/node_modules/execa/lib/verbose/custom.js +0 -26
  166. package/.output/server/node_modules/execa/lib/verbose/default.js +0 -54
  167. package/.output/server/node_modules/execa/lib/verbose/error.js +0 -13
  168. package/.output/server/node_modules/execa/lib/verbose/info.js +0 -39
  169. package/.output/server/node_modules/execa/lib/verbose/ipc.js +0 -15
  170. package/.output/server/node_modules/execa/lib/verbose/log.js +0 -54
  171. package/.output/server/node_modules/execa/lib/verbose/output.js +0 -60
  172. package/.output/server/node_modules/execa/lib/verbose/start.js +0 -15
  173. package/.output/server/node_modules/execa/lib/verbose/values.js +0 -33
  174. package/.output/server/node_modules/execa/package.json +0 -105
  175. package/.output/server/node_modules/figures/index.js +0 -292
  176. package/.output/server/node_modules/figures/package.json +0 -49
  177. package/.output/server/node_modules/fs-extra/lib/copy/copy-sync.js +0 -176
  178. package/.output/server/node_modules/fs-extra/lib/copy/copy.js +0 -180
  179. package/.output/server/node_modules/fs-extra/lib/copy/index.js +0 -7
  180. package/.output/server/node_modules/fs-extra/lib/empty/index.js +0 -39
  181. package/.output/server/node_modules/fs-extra/lib/ensure/file.js +0 -66
  182. package/.output/server/node_modules/fs-extra/lib/ensure/index.js +0 -23
  183. package/.output/server/node_modules/fs-extra/lib/ensure/link.js +0 -64
  184. package/.output/server/node_modules/fs-extra/lib/ensure/symlink-paths.js +0 -101
  185. package/.output/server/node_modules/fs-extra/lib/ensure/symlink-type.js +0 -34
  186. package/.output/server/node_modules/fs-extra/lib/ensure/symlink.js +0 -67
  187. package/.output/server/node_modules/fs-extra/lib/fs/index.js +0 -146
  188. package/.output/server/node_modules/fs-extra/lib/index.js +0 -16
  189. package/.output/server/node_modules/fs-extra/lib/json/index.js +0 -16
  190. package/.output/server/node_modules/fs-extra/lib/json/jsonfile.js +0 -11
  191. package/.output/server/node_modules/fs-extra/lib/json/output-json-sync.js +0 -12
  192. package/.output/server/node_modules/fs-extra/lib/json/output-json.js +0 -12
  193. package/.output/server/node_modules/fs-extra/lib/mkdirs/index.js +0 -14
  194. package/.output/server/node_modules/fs-extra/lib/mkdirs/make-dir.js +0 -27
  195. package/.output/server/node_modules/fs-extra/lib/mkdirs/utils.js +0 -21
  196. package/.output/server/node_modules/fs-extra/lib/move/index.js +0 -7
  197. package/.output/server/node_modules/fs-extra/lib/move/move-sync.js +0 -55
  198. package/.output/server/node_modules/fs-extra/lib/move/move.js +0 -59
  199. package/.output/server/node_modules/fs-extra/lib/output-file/index.js +0 -31
  200. package/.output/server/node_modules/fs-extra/lib/path-exists/index.js +0 -12
  201. package/.output/server/node_modules/fs-extra/lib/remove/index.js +0 -17
  202. package/.output/server/node_modules/fs-extra/lib/util/async.js +0 -29
  203. package/.output/server/node_modules/fs-extra/lib/util/stat.js +0 -159
  204. package/.output/server/node_modules/fs-extra/lib/util/utimes.js +0 -36
  205. package/.output/server/node_modules/fs-extra/package.json +0 -71
  206. package/.output/server/node_modules/get-stream/package.json +0 -60
  207. package/.output/server/node_modules/get-stream/source/array-buffer.js +0 -84
  208. package/.output/server/node_modules/get-stream/source/array.js +0 -32
  209. package/.output/server/node_modules/get-stream/source/buffer.js +0 -19
  210. package/.output/server/node_modules/get-stream/source/contents.js +0 -121
  211. package/.output/server/node_modules/get-stream/source/exports.js +0 -5
  212. package/.output/server/node_modules/get-stream/source/index.js +0 -13
  213. package/.output/server/node_modules/get-stream/source/stream.js +0 -65
  214. package/.output/server/node_modules/get-stream/source/string.js +0 -41
  215. package/.output/server/node_modules/get-stream/source/utils.js +0 -11
  216. package/.output/server/node_modules/graceful-fs/clone.js +0 -23
  217. package/.output/server/node_modules/graceful-fs/graceful-fs.js +0 -448
  218. package/.output/server/node_modules/graceful-fs/legacy-streams.js +0 -118
  219. package/.output/server/node_modules/graceful-fs/package.json +0 -53
  220. package/.output/server/node_modules/graceful-fs/polyfills.js +0 -355
  221. package/.output/server/node_modules/human-signals/build/src/core.js +0 -273
  222. package/.output/server/node_modules/human-signals/build/src/main.js +0 -70
  223. package/.output/server/node_modules/human-signals/build/src/realtime.js +0 -16
  224. package/.output/server/node_modules/human-signals/build/src/signals.js +0 -34
  225. package/.output/server/node_modules/human-signals/package.json +0 -66
  226. package/.output/server/node_modules/is-plain-obj/index.js +0 -8
  227. package/.output/server/node_modules/is-plain-obj/package.json +0 -41
  228. package/.output/server/node_modules/is-stream/index.js +0 -37
  229. package/.output/server/node_modules/is-stream/package.json +0 -48
  230. package/.output/server/node_modules/is-unicode-supported/index.js +0 -21
  231. package/.output/server/node_modules/is-unicode-supported/package.json +0 -47
  232. package/.output/server/node_modules/isexe/index.js +0 -57
  233. package/.output/server/node_modules/isexe/mode.js +0 -41
  234. package/.output/server/node_modules/isexe/package.json +0 -31
  235. package/.output/server/node_modules/isexe/windows.js +0 -42
  236. package/.output/server/node_modules/js-runtime/dist/index.js +0 -5
  237. package/.output/server/node_modules/js-runtime/package.json +0 -72
  238. package/.output/server/node_modules/jsonfile/index.js +0 -88
  239. package/.output/server/node_modules/jsonfile/package.json +0 -40
  240. package/.output/server/node_modules/jsonfile/utils.js +0 -14
  241. package/.output/server/node_modules/mime-db/db.json +0 -7088
  242. package/.output/server/node_modules/mime-db/index.js +0 -11
  243. package/.output/server/node_modules/mime-db/package.json +0 -57
  244. package/.output/server/node_modules/mime-types/index.js +0 -188
  245. package/.output/server/node_modules/mime-types/package.json +0 -43
  246. package/.output/server/node_modules/minimatch/minimatch.js +0 -947
  247. package/.output/server/node_modules/minimatch/package.json +0 -33
  248. package/.output/server/node_modules/natural-orderby/dist/main.js +0 -19
  249. package/.output/server/node_modules/natural-orderby/dist/umd/natural-orderby.development.js +0 -420
  250. package/.output/server/node_modules/natural-orderby/dist/umd/natural-orderby.production.min.js +0 -11
  251. package/.output/server/node_modules/natural-orderby/package.json +0 -119
  252. package/.output/server/node_modules/npm-run-path/index.js +0 -55
  253. package/.output/server/node_modules/npm-run-path/package.json +0 -52
  254. package/.output/server/node_modules/parse-ms/index.js +0 -45
  255. package/.output/server/node_modules/parse-ms/package.json +0 -47
  256. package/.output/server/node_modules/path-is-inside/lib/path-is-inside.js +0 -28
  257. package/.output/server/node_modules/path-is-inside/package.json +0 -27
  258. package/.output/server/node_modules/pretty-ms/index.js +0 -149
  259. package/.output/server/node_modules/pretty-ms/package.json +0 -55
  260. package/.output/server/node_modules/range-parser/index.js +0 -158
  261. package/.output/server/node_modules/range-parser/package.json +0 -40
  262. package/.output/server/node_modules/serve-handler/package.json +0 -68
  263. package/.output/server/node_modules/serve-handler/src/directory.js +0 -16
  264. package/.output/server/node_modules/serve-handler/src/error.js +0 -10
  265. package/.output/server/node_modules/serve-handler/src/glob-slash.js +0 -9
  266. package/.output/server/node_modules/serve-handler/src/index.js +0 -769
  267. package/.output/server/node_modules/shebang-command/index.js +0 -19
  268. package/.output/server/node_modules/shebang-command/package.json +0 -34
  269. package/.output/server/node_modules/shebang-regex/index.js +0 -2
  270. package/.output/server/node_modules/shebang-regex/package.json +0 -35
  271. package/.output/server/node_modules/signal-exit/dist/mjs/index.js +0 -275
  272. package/.output/server/node_modules/signal-exit/dist/mjs/package.json +0 -3
  273. package/.output/server/node_modules/signal-exit/dist/mjs/signals.js +0 -39
  274. package/.output/server/node_modules/signal-exit/package.json +0 -106
  275. package/.output/server/node_modules/string-argv/index.js +0 -41
  276. package/.output/server/node_modules/string-argv/package.json +0 -51
  277. package/.output/server/node_modules/strip-final-newline/index.js +0 -26
  278. package/.output/server/node_modules/strip-final-newline/package.json +0 -49
  279. package/.output/server/node_modules/unicorn-magic/default.js +0 -14
  280. package/.output/server/node_modules/unicorn-magic/node.js +0 -49
  281. package/.output/server/node_modules/unicorn-magic/package.json +0 -62
  282. package/.output/server/node_modules/universalify/index.js +0 -24
  283. package/.output/server/node_modules/universalify/package.json +0 -34
  284. package/.output/server/node_modules/which/package.json +0 -43
  285. package/.output/server/node_modules/which/which.js +0 -125
  286. package/.output/server/node_modules/yoctocolors/base.js +0 -94
  287. package/.output/server/node_modules/yoctocolors/index.js +0 -2
  288. package/.output/server/node_modules/yoctocolors/package.json +0 -69
  289. /package/.output/server/node_modules/{.nitro/path-to-regexp@8.3.0 → path-to-regexp}/dist/index.js +0 -0
  290. /package/.output/server/node_modules/{.nitro/path-to-regexp@8.3.0 → path-to-regexp}/package.json +0 -0
@@ -1,15 +0,0 @@
1
- // The return value is a mixin of `subprocess` and `Promise`
2
- export const mergePromise = (subprocess, promise) => {
3
- for (const [property, descriptor] of descriptors) {
4
- const value = descriptor.value.bind(promise);
5
- Reflect.defineProperty(subprocess, property, {...descriptor, value});
6
- }
7
- };
8
-
9
- // eslint-disable-next-line unicorn/prefer-top-level-await
10
- const nativePromisePrototype = (async () => {})().constructor.prototype;
11
-
12
- const descriptors = ['then', 'catch', 'finally'].map(property => [
13
- property,
14
- Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property),
15
- ]);
@@ -1,22 +0,0 @@
1
- // Sets `$.sync` and `$.s`
2
- export const setScriptSync = (boundExeca, createNested, boundOptions) => {
3
- boundExeca.sync = createNested(mapScriptSync, boundOptions);
4
- boundExeca.s = boundExeca.sync;
5
- };
6
-
7
- // Main logic for `$`
8
- export const mapScriptAsync = ({options}) => getScriptOptions(options);
9
-
10
- // Main logic for `$.sync`
11
- const mapScriptSync = ({options}) => ({...getScriptOptions(options), isSync: true});
12
-
13
- // `$` is like `execa` but with script-friendly options: `{stdin: 'inherit', preferLocal: true}`
14
- const getScriptOptions = options => ({options: {...getScriptStdinOption(options), ...options}});
15
-
16
- const getScriptStdinOption = ({input, inputFile, stdio}) => input === undefined && inputFile === undefined && stdio === undefined
17
- ? {stdin: 'inherit'}
18
- : {};
19
-
20
- // When using $(...).pipe(...), most script-friendly options should apply to both commands.
21
- // However, some options (like `stdin: 'inherit'`) would create issues with piping, i.e. cannot be deep.
22
- export const deepScriptOptions = {preferLocal: true};
@@ -1,153 +0,0 @@
1
- import {ChildProcess} from 'node:child_process';
2
- import isPlainObject from 'is-plain-obj';
3
- import {isUint8Array, uint8ArrayToString} from '../utils/uint-array.js';
4
-
5
- // Check whether the template string syntax is being used
6
- export const isTemplateString = templates => Array.isArray(templates) && Array.isArray(templates.raw);
7
-
8
- // Convert execa`file ...commandArguments` to execa(file, commandArguments)
9
- export const parseTemplates = (templates, expressions) => {
10
- let tokens = [];
11
-
12
- for (const [index, template] of templates.entries()) {
13
- tokens = parseTemplate({
14
- templates,
15
- expressions,
16
- tokens,
17
- index,
18
- template,
19
- });
20
- }
21
-
22
- if (tokens.length === 0) {
23
- throw new TypeError('Template script must not be empty');
24
- }
25
-
26
- const [file, ...commandArguments] = tokens;
27
- return [file, commandArguments, {}];
28
- };
29
-
30
- const parseTemplate = ({templates, expressions, tokens, index, template}) => {
31
- if (template === undefined) {
32
- throw new TypeError(`Invalid backslash sequence: ${templates.raw[index]}`);
33
- }
34
-
35
- const {nextTokens, leadingWhitespaces, trailingWhitespaces} = splitByWhitespaces(template, templates.raw[index]);
36
- const newTokens = concatTokens(tokens, nextTokens, leadingWhitespaces);
37
-
38
- if (index === expressions.length) {
39
- return newTokens;
40
- }
41
-
42
- const expression = expressions[index];
43
- const expressionTokens = Array.isArray(expression)
44
- ? expression.map(expression => parseExpression(expression))
45
- : [parseExpression(expression)];
46
- return concatTokens(newTokens, expressionTokens, trailingWhitespaces);
47
- };
48
-
49
- // Like `string.split(/[ \t\r\n]+/)` except newlines and tabs are:
50
- // - ignored when input as a backslash sequence like: `echo foo\n bar`
51
- // - not ignored when input directly
52
- // The only way to distinguish those in JavaScript is to use a tagged template and compare:
53
- // - the first array argument, which does not escape backslash sequences
54
- // - its `raw` property, which escapes them
55
- const splitByWhitespaces = (template, rawTemplate) => {
56
- if (rawTemplate.length === 0) {
57
- return {nextTokens: [], leadingWhitespaces: false, trailingWhitespaces: false};
58
- }
59
-
60
- const nextTokens = [];
61
- let templateStart = 0;
62
- const leadingWhitespaces = DELIMITERS.has(rawTemplate[0]);
63
-
64
- for (
65
- let templateIndex = 0, rawIndex = 0;
66
- templateIndex < template.length;
67
- templateIndex += 1, rawIndex += 1
68
- ) {
69
- const rawCharacter = rawTemplate[rawIndex];
70
- if (DELIMITERS.has(rawCharacter)) {
71
- if (templateStart !== templateIndex) {
72
- nextTokens.push(template.slice(templateStart, templateIndex));
73
- }
74
-
75
- templateStart = templateIndex + 1;
76
- } else if (rawCharacter === '\\') {
77
- const nextRawCharacter = rawTemplate[rawIndex + 1];
78
- if (nextRawCharacter === '\n') {
79
- // Handles escaped newlines in templates
80
- templateIndex -= 1;
81
- rawIndex += 1;
82
- } else if (nextRawCharacter === 'u' && rawTemplate[rawIndex + 2] === '{') {
83
- rawIndex = rawTemplate.indexOf('}', rawIndex + 3);
84
- } else {
85
- rawIndex += ESCAPE_LENGTH[nextRawCharacter] ?? 1;
86
- }
87
- }
88
- }
89
-
90
- const trailingWhitespaces = templateStart === template.length;
91
- if (!trailingWhitespaces) {
92
- nextTokens.push(template.slice(templateStart));
93
- }
94
-
95
- return {nextTokens, leadingWhitespaces, trailingWhitespaces};
96
- };
97
-
98
- const DELIMITERS = new Set([' ', '\t', '\r', '\n']);
99
-
100
- // Number of characters in backslash escape sequences: \0 \xXX or \uXXXX
101
- // \cX is allowed in RegExps but not in strings
102
- // Octal sequences are not allowed in strict mode
103
- const ESCAPE_LENGTH = {x: 3, u: 5};
104
-
105
- const concatTokens = (tokens, nextTokens, isSeparated) => isSeparated
106
- || tokens.length === 0
107
- || nextTokens.length === 0
108
- ? [...tokens, ...nextTokens]
109
- : [
110
- ...tokens.slice(0, -1),
111
- `${tokens.at(-1)}${nextTokens[0]}`,
112
- ...nextTokens.slice(1),
113
- ];
114
-
115
- // Handle `${expression}` inside the template string syntax
116
- const parseExpression = expression => {
117
- const typeOfExpression = typeof expression;
118
-
119
- if (typeOfExpression === 'string') {
120
- return expression;
121
- }
122
-
123
- if (typeOfExpression === 'number') {
124
- return String(expression);
125
- }
126
-
127
- if (isPlainObject(expression) && ('stdout' in expression || 'isMaxBuffer' in expression)) {
128
- return getSubprocessResult(expression);
129
- }
130
-
131
- if (expression instanceof ChildProcess || Object.prototype.toString.call(expression) === '[object Promise]') {
132
- // eslint-disable-next-line no-template-curly-in-string
133
- throw new TypeError('Unexpected subprocess in template expression. Please use ${await subprocess} instead of ${subprocess}.');
134
- }
135
-
136
- throw new TypeError(`Unexpected "${typeOfExpression}" in template expression`);
137
- };
138
-
139
- const getSubprocessResult = ({stdout}) => {
140
- if (typeof stdout === 'string') {
141
- return stdout;
142
- }
143
-
144
- if (isUint8Array(stdout)) {
145
- return uint8ArrayToString(stdout);
146
- }
147
-
148
- if (stdout === undefined) {
149
- throw new TypeError('Missing result.stdout in template expression. This is probably due to the previous subprocess\' "stdout" option.');
150
- }
151
-
152
- throw new TypeError(`Unexpected "${typeof stdout}" stdout in template expression`);
153
- };
@@ -1,20 +0,0 @@
1
- import {aborted} from 'node:util';
2
- import {createNonCommandError} from './throw.js';
3
-
4
- // When passing an `unpipeSignal` option, abort piping when the signal is aborted.
5
- // However, do not terminate the subprocesses.
6
- export const unpipeOnAbort = (unpipeSignal, unpipeContext) => unpipeSignal === undefined
7
- ? []
8
- : [unpipeOnSignalAbort(unpipeSignal, unpipeContext)];
9
-
10
- const unpipeOnSignalAbort = async (unpipeSignal, {sourceStream, mergedStream, fileDescriptors, sourceOptions, startTime}) => {
11
- await aborted(unpipeSignal, sourceStream);
12
- await mergedStream.remove(sourceStream);
13
- const error = new Error('Pipe canceled by `unpipeSignal` option.');
14
- throw createNonCommandError({
15
- error,
16
- fileDescriptors,
17
- sourceOptions,
18
- startTime,
19
- });
20
- };
@@ -1,91 +0,0 @@
1
- import {normalizeParameters} from '../methods/parameters.js';
2
- import {getStartTime} from '../return/duration.js';
3
- import {SUBPROCESS_OPTIONS, getToStream, getFromStream} from '../arguments/fd-options.js';
4
- import {isDenoExecPath} from '../arguments/file-url.js';
5
-
6
- // Normalize and validate arguments passed to `source.pipe(destination)`
7
- export const normalizePipeArguments = ({source, sourcePromise, boundOptions, createNested}, ...pipeArguments) => {
8
- const startTime = getStartTime();
9
- const {
10
- destination,
11
- destinationStream,
12
- destinationError,
13
- from,
14
- unpipeSignal,
15
- } = getDestinationStream(boundOptions, createNested, pipeArguments);
16
- const {sourceStream, sourceError} = getSourceStream(source, from);
17
- const {options: sourceOptions, fileDescriptors} = SUBPROCESS_OPTIONS.get(source);
18
- return {
19
- sourcePromise,
20
- sourceStream,
21
- sourceOptions,
22
- sourceError,
23
- destination,
24
- destinationStream,
25
- destinationError,
26
- unpipeSignal,
27
- fileDescriptors,
28
- startTime,
29
- };
30
- };
31
-
32
- const getDestinationStream = (boundOptions, createNested, pipeArguments) => {
33
- try {
34
- const {
35
- destination,
36
- pipeOptions: {from, to, unpipeSignal} = {},
37
- } = getDestination(boundOptions, createNested, ...pipeArguments);
38
- const destinationStream = getToStream(destination, to);
39
- return {
40
- destination,
41
- destinationStream,
42
- from,
43
- unpipeSignal,
44
- };
45
- } catch (error) {
46
- return {destinationError: error};
47
- }
48
- };
49
-
50
- // Piping subprocesses can use three syntaxes:
51
- // - source.pipe('command', commandArguments, pipeOptionsOrDestinationOptions)
52
- // - source.pipe`command commandArgument` or source.pipe(pipeOptionsOrDestinationOptions)`command commandArgument`
53
- // - source.pipe(execa(...), pipeOptions)
54
- const getDestination = (boundOptions, createNested, firstArgument, ...pipeArguments) => {
55
- if (Array.isArray(firstArgument)) {
56
- const destination = createNested(mapDestinationArguments, boundOptions)(firstArgument, ...pipeArguments);
57
- return {destination, pipeOptions: boundOptions};
58
- }
59
-
60
- if (typeof firstArgument === 'string' || firstArgument instanceof URL || isDenoExecPath(firstArgument)) {
61
- if (Object.keys(boundOptions).length > 0) {
62
- throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');
63
- }
64
-
65
- const [rawFile, rawArguments, rawOptions] = normalizeParameters(firstArgument, ...pipeArguments);
66
- const destination = createNested(mapDestinationArguments)(rawFile, rawArguments, rawOptions);
67
- return {destination, pipeOptions: rawOptions};
68
- }
69
-
70
- if (SUBPROCESS_OPTIONS.has(firstArgument)) {
71
- if (Object.keys(boundOptions).length > 0) {
72
- throw new TypeError('Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).');
73
- }
74
-
75
- return {destination: firstArgument, pipeOptions: pipeArguments[0]};
76
- }
77
-
78
- throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${firstArgument}`);
79
- };
80
-
81
- // Force `stdin: 'pipe'` with the destination subprocess
82
- const mapDestinationArguments = ({options}) => ({options: {...options, stdin: 'pipe', piped: true}});
83
-
84
- const getSourceStream = (source, from) => {
85
- try {
86
- const sourceStream = getFromStream(source, from);
87
- return {sourceStream};
88
- } catch (error) {
89
- return {sourceError: error};
90
- }
91
- };
@@ -1,24 +0,0 @@
1
- // Like Bash, we await both subprocesses. This is unlike some other shells which only await the destination subprocess.
2
- // Like Bash with the `pipefail` option, if either subprocess fails, the whole pipe fails.
3
- // Like Bash, if both subprocesses fail, we return the failure of the destination.
4
- // This ensures both subprocesses' errors are present, using `error.pipedFrom`.
5
- export const waitForBothSubprocesses = async subprocessPromises => {
6
- const [
7
- {status: sourceStatus, reason: sourceReason, value: sourceResult = sourceReason},
8
- {status: destinationStatus, reason: destinationReason, value: destinationResult = destinationReason},
9
- ] = await subprocessPromises;
10
-
11
- if (!destinationResult.pipedFrom.includes(sourceResult)) {
12
- destinationResult.pipedFrom.push(sourceResult);
13
- }
14
-
15
- if (destinationStatus === 'rejected') {
16
- throw destinationResult;
17
- }
18
-
19
- if (sourceStatus === 'rejected') {
20
- throw sourceResult;
21
- }
22
-
23
- return destinationResult;
24
- };
@@ -1,72 +0,0 @@
1
- import isPlainObject from 'is-plain-obj';
2
- import {normalizePipeArguments} from './pipe-arguments.js';
3
- import {handlePipeArgumentsError} from './throw.js';
4
- import {waitForBothSubprocesses} from './sequence.js';
5
- import {pipeSubprocessStream} from './streaming.js';
6
- import {unpipeOnAbort} from './abort.js';
7
-
8
- // Pipe a subprocess' `stdout`/`stderr`/`stdio` into another subprocess' `stdin`
9
- export const pipeToSubprocess = (sourceInfo, ...pipeArguments) => {
10
- if (isPlainObject(pipeArguments[0])) {
11
- return pipeToSubprocess.bind(undefined, {
12
- ...sourceInfo,
13
- boundOptions: {...sourceInfo.boundOptions, ...pipeArguments[0]},
14
- });
15
- }
16
-
17
- const {destination, ...normalizedInfo} = normalizePipeArguments(sourceInfo, ...pipeArguments);
18
- const promise = handlePipePromise({...normalizedInfo, destination});
19
- promise.pipe = pipeToSubprocess.bind(undefined, {
20
- ...sourceInfo,
21
- source: destination,
22
- sourcePromise: promise,
23
- boundOptions: {},
24
- });
25
- return promise;
26
- };
27
-
28
- // Asynchronous logic when piping subprocesses
29
- const handlePipePromise = async ({
30
- sourcePromise,
31
- sourceStream,
32
- sourceOptions,
33
- sourceError,
34
- destination,
35
- destinationStream,
36
- destinationError,
37
- unpipeSignal,
38
- fileDescriptors,
39
- startTime,
40
- }) => {
41
- const subprocessPromises = getSubprocessPromises(sourcePromise, destination);
42
- handlePipeArgumentsError({
43
- sourceStream,
44
- sourceError,
45
- destinationStream,
46
- destinationError,
47
- fileDescriptors,
48
- sourceOptions,
49
- startTime,
50
- });
51
- const maxListenersController = new AbortController();
52
- try {
53
- const mergedStream = pipeSubprocessStream(sourceStream, destinationStream, maxListenersController);
54
- return await Promise.race([
55
- waitForBothSubprocesses(subprocessPromises),
56
- ...unpipeOnAbort(unpipeSignal, {
57
- sourceStream,
58
- mergedStream,
59
- sourceOptions,
60
- fileDescriptors,
61
- startTime,
62
- }),
63
- ]);
64
- } finally {
65
- maxListenersController.abort();
66
- }
67
- };
68
-
69
- // `.pipe()` awaits the subprocess promises.
70
- // When invalid arguments are passed to `.pipe()`, we throw an error, which prevents awaiting them.
71
- // We need to ensure this does not create unhandled rejections.
72
- const getSubprocessPromises = (sourcePromise, destination) => Promise.allSettled([sourcePromise, destination]);
@@ -1,51 +0,0 @@
1
- import {finished} from 'node:stream/promises';
2
- import mergeStreams from '@sindresorhus/merge-streams';
3
- import {incrementMaxListeners} from '../utils/max-listeners.js';
4
- import {pipeStreams} from '../io/pipeline.js';
5
-
6
- // The piping behavior is like Bash.
7
- // In particular, when one subprocess exits, the other is not terminated by a signal.
8
- // Instead, its stdout (for the source) or stdin (for the destination) closes.
9
- // If the subprocess uses it, it will make it error with SIGPIPE or EPIPE (for the source) or end (for the destination).
10
- // If it does not use it, it will continue running.
11
- // This allows for subprocesses to gracefully exit and lower the coupling between subprocesses.
12
- export const pipeSubprocessStream = (sourceStream, destinationStream, maxListenersController) => {
13
- const mergedStream = MERGED_STREAMS.has(destinationStream)
14
- ? pipeMoreSubprocessStream(sourceStream, destinationStream)
15
- : pipeFirstSubprocessStream(sourceStream, destinationStream);
16
- incrementMaxListeners(sourceStream, SOURCE_LISTENERS_PER_PIPE, maxListenersController.signal);
17
- incrementMaxListeners(destinationStream, DESTINATION_LISTENERS_PER_PIPE, maxListenersController.signal);
18
- cleanupMergedStreamsMap(destinationStream);
19
- return mergedStream;
20
- };
21
-
22
- // We use `merge-streams` to allow for multiple sources to pipe to the same destination.
23
- const pipeFirstSubprocessStream = (sourceStream, destinationStream) => {
24
- const mergedStream = mergeStreams([sourceStream]);
25
- pipeStreams(mergedStream, destinationStream);
26
- MERGED_STREAMS.set(destinationStream, mergedStream);
27
- return mergedStream;
28
- };
29
-
30
- const pipeMoreSubprocessStream = (sourceStream, destinationStream) => {
31
- const mergedStream = MERGED_STREAMS.get(destinationStream);
32
- mergedStream.add(sourceStream);
33
- return mergedStream;
34
- };
35
-
36
- const cleanupMergedStreamsMap = async destinationStream => {
37
- try {
38
- await finished(destinationStream, {cleanup: true, readable: false, writable: true});
39
- } catch {}
40
-
41
- MERGED_STREAMS.delete(destinationStream);
42
- };
43
-
44
- const MERGED_STREAMS = new WeakMap();
45
-
46
- // Number of listeners set up on `sourceStream` by each `sourceStream.pipe(destinationStream)`
47
- // Those are added by `merge-streams`
48
- const SOURCE_LISTENERS_PER_PIPE = 2;
49
- // Number of listeners set up on `destinationStream` by each `sourceStream.pipe(destinationStream)`
50
- // Those are added by `finished()` in `cleanupMergedStreamsMap()`
51
- const DESTINATION_LISTENERS_PER_PIPE = 1;
@@ -1,58 +0,0 @@
1
- import {makeEarlyError} from '../return/result.js';
2
- import {abortSourceStream, endDestinationStream} from '../io/pipeline.js';
3
-
4
- // When passing invalid arguments to `source.pipe()`, throw asynchronously.
5
- // We also abort both subprocesses.
6
- export const handlePipeArgumentsError = ({
7
- sourceStream,
8
- sourceError,
9
- destinationStream,
10
- destinationError,
11
- fileDescriptors,
12
- sourceOptions,
13
- startTime,
14
- }) => {
15
- const error = getPipeArgumentsError({
16
- sourceStream,
17
- sourceError,
18
- destinationStream,
19
- destinationError,
20
- });
21
- if (error !== undefined) {
22
- throw createNonCommandError({
23
- error,
24
- fileDescriptors,
25
- sourceOptions,
26
- startTime,
27
- });
28
- }
29
- };
30
-
31
- const getPipeArgumentsError = ({sourceStream, sourceError, destinationStream, destinationError}) => {
32
- if (sourceError !== undefined && destinationError !== undefined) {
33
- return destinationError;
34
- }
35
-
36
- if (destinationError !== undefined) {
37
- abortSourceStream(sourceStream);
38
- return destinationError;
39
- }
40
-
41
- if (sourceError !== undefined) {
42
- endDestinationStream(destinationStream);
43
- return sourceError;
44
- }
45
- };
46
-
47
- // Specific error return value when passing invalid arguments to `subprocess.pipe()` or when using `unpipeSignal`
48
- export const createNonCommandError = ({error, fileDescriptors, sourceOptions, startTime}) => makeEarlyError({
49
- error,
50
- command: PIPE_COMMAND_MESSAGE,
51
- escapedCommand: PIPE_COMMAND_MESSAGE,
52
- fileDescriptors,
53
- options: sourceOptions,
54
- startTime,
55
- isSync: false,
56
- });
57
-
58
- const PIPE_COMMAND_MESSAGE = 'source.pipe(destination)';
@@ -1,46 +0,0 @@
1
- import mergeStreams from '@sindresorhus/merge-streams';
2
- import {waitForSubprocessStream} from './stdio.js';
3
-
4
- // `all` interleaves `stdout` and `stderr`
5
- export const makeAllStream = ({stdout, stderr}, {all}) => all && (stdout || stderr)
6
- ? mergeStreams([stdout, stderr].filter(Boolean))
7
- : undefined;
8
-
9
- // Read the contents of `subprocess.all` and|or wait for its completion
10
- export const waitForAllStream = ({subprocess, encoding, buffer, maxBuffer, lines, stripFinalNewline, verboseInfo, streamInfo}) => waitForSubprocessStream({
11
- ...getAllStream(subprocess, buffer),
12
- fdNumber: 'all',
13
- encoding,
14
- maxBuffer: maxBuffer[1] + maxBuffer[2],
15
- lines: lines[1] || lines[2],
16
- allMixed: getAllMixed(subprocess),
17
- stripFinalNewline,
18
- verboseInfo,
19
- streamInfo,
20
- });
21
-
22
- const getAllStream = ({stdout, stderr, all}, [, bufferStdout, bufferStderr]) => {
23
- const buffer = bufferStdout || bufferStderr;
24
- if (!buffer) {
25
- return {stream: all, buffer};
26
- }
27
-
28
- if (!bufferStdout) {
29
- return {stream: stderr, buffer};
30
- }
31
-
32
- if (!bufferStderr) {
33
- return {stream: stdout, buffer};
34
- }
35
-
36
- return {stream: all, buffer};
37
- };
38
-
39
- // When `subprocess.stdout` is in objectMode but not `subprocess.stderr` (or the opposite), we need to use both:
40
- // - `getStreamAsArray()` for the chunks in objectMode, to return as an array without changing each chunk
41
- // - `getStreamAsArrayBuffer()` or `getStream()` for the chunks not in objectMode, to convert them from Buffers to string or Uint8Array
42
- // We do this by emulating the Buffer -> string|Uint8Array conversion performed by `get-stream` with our own, which is identical.
43
- const getAllMixed = ({all, stdout, stderr}) => all
44
- && stdout
45
- && stderr
46
- && stdout.readableObjectMode !== stderr.readableObjectMode;
@@ -1,33 +0,0 @@
1
- import {isUint8Array, concatUint8Arrays} from '../utils/uint-array.js';
2
- import {stripNewline} from '../io/strip-newline.js';
3
-
4
- // Retrieve `result.all` with synchronous methods
5
- export const getAllSync = ([, stdout, stderr], options) => {
6
- if (!options.all) {
7
- return;
8
- }
9
-
10
- if (stdout === undefined) {
11
- return stderr;
12
- }
13
-
14
- if (stderr === undefined) {
15
- return stdout;
16
- }
17
-
18
- if (Array.isArray(stdout)) {
19
- return Array.isArray(stderr)
20
- ? [...stdout, ...stderr]
21
- : [...stdout, stripNewline(stderr, options, 'all')];
22
- }
23
-
24
- if (Array.isArray(stderr)) {
25
- return [stripNewline(stdout, options, 'all'), ...stderr];
26
- }
27
-
28
- if (isUint8Array(stdout) && isUint8Array(stderr)) {
29
- return concatUint8Arrays([stdout, stderr]);
30
- }
31
-
32
- return `${stdout}${stderr}`;
33
- };
@@ -1,54 +0,0 @@
1
- import {once} from 'node:events';
2
- import {DiscardedError} from '../return/final-error.js';
3
-
4
- // If `error` is emitted before `spawn`, `exit` will never be emitted.
5
- // However, `error` might be emitted after `spawn`.
6
- // In that case, `exit` will still be emitted.
7
- // Since the `exit` event contains the signal name, we want to make sure we are listening for it.
8
- // This function also takes into account the following unlikely cases:
9
- // - `exit` being emitted in the same microtask as `spawn`
10
- // - `error` being emitted multiple times
11
- export const waitForExit = async (subprocess, context) => {
12
- const [exitCode, signal] = await waitForExitOrError(subprocess);
13
- context.isForcefullyTerminated ??= false;
14
- return [exitCode, signal];
15
- };
16
-
17
- const waitForExitOrError = async subprocess => {
18
- const [spawnPayload, exitPayload] = await Promise.allSettled([
19
- once(subprocess, 'spawn'),
20
- once(subprocess, 'exit'),
21
- ]);
22
-
23
- if (spawnPayload.status === 'rejected') {
24
- return [];
25
- }
26
-
27
- return exitPayload.status === 'rejected'
28
- ? waitForSubprocessExit(subprocess)
29
- : exitPayload.value;
30
- };
31
-
32
- const waitForSubprocessExit = async subprocess => {
33
- try {
34
- return await once(subprocess, 'exit');
35
- } catch {
36
- return waitForSubprocessExit(subprocess);
37
- }
38
- };
39
-
40
- // Retrieve the final exit code and|or signal name
41
- export const waitForSuccessfulExit = async exitPromise => {
42
- const [exitCode, signal] = await exitPromise;
43
-
44
- if (!isSubprocessErrorExit(exitCode, signal) && isFailedExit(exitCode, signal)) {
45
- throw new DiscardedError();
46
- }
47
-
48
- return [exitCode, signal];
49
- };
50
-
51
- // When the subprocess fails due to an `error` event
52
- const isSubprocessErrorExit = (exitCode, signal) => exitCode === undefined && signal === undefined;
53
- // When the subprocess fails due to a non-0 exit code or to a signal termination
54
- export const isFailedExit = (exitCode, signal) => exitCode !== 0 || signal !== null;
@@ -1,25 +0,0 @@
1
- import {DiscardedError} from '../return/final-error.js';
2
- import {isMaxBufferSync} from '../io/max-buffer.js';
3
- import {isFailedExit} from './exit-async.js';
4
-
5
- // Retrieve exit code, signal name and error information, with synchronous methods
6
- export const getExitResultSync = ({error, status: exitCode, signal, output}, {maxBuffer}) => {
7
- const resultError = getResultError(error, exitCode, signal);
8
- const timedOut = resultError?.code === 'ETIMEDOUT';
9
- const isMaxBuffer = isMaxBufferSync(resultError, output, maxBuffer);
10
- return {
11
- resultError,
12
- exitCode,
13
- signal,
14
- timedOut,
15
- isMaxBuffer,
16
- };
17
- };
18
-
19
- const getResultError = (error, exitCode, signal) => {
20
- if (error !== undefined) {
21
- return error;
22
- }
23
-
24
- return isFailedExit(exitCode, signal) ? new DiscardedError() : undefined;
25
- };