@pnpm/exe 12.8.2 → 12.9.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 (602) hide show
  1. package/bin/pnpm.mjs +5 -1
  2. package/bin/pnpx.mjs +1 -1
  3. package/dist/node_modules/.pnpm-workspace-state-v1.json +6 -2
  4. package/dist/wasm/LICENSE +22 -0
  5. package/dist/wasm/README.md +140 -0
  6. package/dist/wasm/THIRD-PARTY-NOTICES.md +42 -0
  7. package/dist/wasm/host/atomic-waits.mjs +43 -0
  8. package/dist/wasm/host/cancellation.mjs +6 -0
  9. package/dist/wasm/host/executable-mode.mjs +8 -0
  10. package/dist/wasm/host/file-locks.mjs +40 -0
  11. package/dist/wasm/host/filesystem.mjs +318 -0
  12. package/dist/wasm/host/guest-imports.mjs +45 -0
  13. package/dist/wasm/host/guest-operations.mjs +148 -0
  14. package/dist/wasm/host/lock-registry.mjs +167 -0
  15. package/dist/wasm/host/network.mjs +76 -0
  16. package/dist/wasm/host/operations.mjs +67 -0
  17. package/dist/wasm/host/poll.mjs +74 -0
  18. package/dist/wasm/host/process-stdio.mjs +41 -0
  19. package/dist/wasm/host/process-tree.mjs +54 -0
  20. package/dist/wasm/host/process.mjs +126 -0
  21. package/dist/wasm/host/protocol.mjs +1 -0
  22. package/dist/wasm/host/resources.mjs +76 -0
  23. package/dist/wasm/host/shell-runner.mjs +8 -0
  24. package/dist/wasm/host/shell.mjs +19 -0
  25. package/dist/wasm/host/signals.mjs +49 -0
  26. package/dist/wasm/host/terminal-input.mjs +7 -0
  27. package/dist/wasm/host/terminal-password.mjs +32 -0
  28. package/dist/wasm/host/terminal-session.mjs +114 -0
  29. package/dist/wasm/host/terminal.mjs +61 -0
  30. package/dist/wasm/host/thread-spawn.mjs +21 -0
  31. package/dist/wasm/host/upload.mjs +21 -0
  32. package/dist/wasm/host/wait-for-reply.mjs +7 -0
  33. package/dist/wasm/host/wasi-errno.mjs +81 -0
  34. package/dist/wasm/host/wasi-imports.mjs +58 -0
  35. package/dist/wasm/node_modules/.bin/js-yaml +91 -0
  36. package/dist/wasm/node_modules/.bin/node-which +91 -0
  37. package/dist/wasm/node_modules/.bin/shell +91 -0
  38. package/dist/wasm/node_modules/.pnpm-workspace-state-v1.json +355 -0
  39. package/dist/wasm/node_modules/@emnapi/wasi-threads/LICENSE +21 -0
  40. package/dist/wasm/node_modules/@emnapi/wasi-threads/README.md +203 -0
  41. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +894 -0
  42. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +272 -0
  43. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -0
  44. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +272 -0
  45. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +274 -0
  46. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +942 -0
  47. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +954 -0
  48. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +272 -0
  49. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -0
  50. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -0
  51. package/dist/wasm/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +889 -0
  52. package/dist/wasm/node_modules/@emnapi/wasi-threads/index.js +5 -0
  53. package/dist/wasm/node_modules/@emnapi/wasi-threads/package.json +50 -0
  54. package/dist/wasm/node_modules/@nodelib/fs.scandir/LICENSE +21 -0
  55. package/dist/wasm/node_modules/@nodelib/fs.scandir/README.md +171 -0
  56. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +20 -0
  57. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/adapters/fs.js +19 -0
  58. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/constants.d.ts +4 -0
  59. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/constants.js +17 -0
  60. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/index.d.ts +12 -0
  61. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/index.js +26 -0
  62. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +7 -0
  63. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/providers/async.js +104 -0
  64. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +1 -0
  65. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/providers/common.js +13 -0
  66. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +5 -0
  67. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/providers/sync.js +54 -0
  68. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/settings.d.ts +20 -0
  69. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/settings.js +24 -0
  70. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/types/index.d.ts +20 -0
  71. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/types/index.js +2 -0
  72. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +2 -0
  73. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/utils/fs.js +19 -0
  74. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +2 -0
  75. package/dist/wasm/node_modules/@nodelib/fs.scandir/out/utils/index.js +5 -0
  76. package/dist/wasm/node_modules/@nodelib/fs.scandir/package.json +44 -0
  77. package/dist/wasm/node_modules/@nodelib/fs.stat/LICENSE +21 -0
  78. package/dist/wasm/node_modules/@nodelib/fs.stat/README.md +126 -0
  79. package/dist/wasm/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +13 -0
  80. package/dist/wasm/node_modules/@nodelib/fs.stat/out/adapters/fs.js +17 -0
  81. package/dist/wasm/node_modules/@nodelib/fs.stat/out/index.d.ts +12 -0
  82. package/dist/wasm/node_modules/@nodelib/fs.stat/out/index.js +26 -0
  83. package/dist/wasm/node_modules/@nodelib/fs.stat/out/providers/async.d.ts +4 -0
  84. package/dist/wasm/node_modules/@nodelib/fs.stat/out/providers/async.js +36 -0
  85. package/dist/wasm/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +3 -0
  86. package/dist/wasm/node_modules/@nodelib/fs.stat/out/providers/sync.js +23 -0
  87. package/dist/wasm/node_modules/@nodelib/fs.stat/out/settings.d.ts +16 -0
  88. package/dist/wasm/node_modules/@nodelib/fs.stat/out/settings.js +16 -0
  89. package/dist/wasm/node_modules/@nodelib/fs.stat/out/types/index.d.ts +4 -0
  90. package/dist/wasm/node_modules/@nodelib/fs.stat/out/types/index.js +2 -0
  91. package/dist/wasm/node_modules/@nodelib/fs.stat/package.json +37 -0
  92. package/dist/wasm/node_modules/@nodelib/fs.walk/LICENSE +21 -0
  93. package/dist/wasm/node_modules/@nodelib/fs.walk/README.md +215 -0
  94. package/dist/wasm/node_modules/@nodelib/fs.walk/out/index.d.ts +14 -0
  95. package/dist/wasm/node_modules/@nodelib/fs.walk/out/index.js +34 -0
  96. package/dist/wasm/node_modules/@nodelib/fs.walk/out/providers/async.d.ts +12 -0
  97. package/dist/wasm/node_modules/@nodelib/fs.walk/out/providers/async.js +30 -0
  98. package/dist/wasm/node_modules/@nodelib/fs.walk/out/providers/index.d.ts +4 -0
  99. package/dist/wasm/node_modules/@nodelib/fs.walk/out/providers/index.js +9 -0
  100. package/dist/wasm/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +12 -0
  101. package/dist/wasm/node_modules/@nodelib/fs.walk/out/providers/stream.js +34 -0
  102. package/dist/wasm/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +10 -0
  103. package/dist/wasm/node_modules/@nodelib/fs.walk/out/providers/sync.js +14 -0
  104. package/dist/wasm/node_modules/@nodelib/fs.walk/out/readers/async.d.ts +30 -0
  105. package/dist/wasm/node_modules/@nodelib/fs.walk/out/readers/async.js +97 -0
  106. package/dist/wasm/node_modules/@nodelib/fs.walk/out/readers/common.d.ts +7 -0
  107. package/dist/wasm/node_modules/@nodelib/fs.walk/out/readers/common.js +31 -0
  108. package/dist/wasm/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +6 -0
  109. package/dist/wasm/node_modules/@nodelib/fs.walk/out/readers/reader.js +11 -0
  110. package/dist/wasm/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +15 -0
  111. package/dist/wasm/node_modules/@nodelib/fs.walk/out/readers/sync.js +59 -0
  112. package/dist/wasm/node_modules/@nodelib/fs.walk/out/settings.d.ts +30 -0
  113. package/dist/wasm/node_modules/@nodelib/fs.walk/out/settings.js +26 -0
  114. package/dist/wasm/node_modules/@nodelib/fs.walk/out/types/index.d.ts +8 -0
  115. package/dist/wasm/node_modules/@nodelib/fs.walk/out/types/index.js +2 -0
  116. package/dist/wasm/node_modules/@nodelib/fs.walk/package.json +44 -0
  117. package/dist/wasm/node_modules/@tybys/wasm-util/LICENSE +21 -0
  118. package/dist/wasm/node_modules/@tybys/wasm-util/README.md +193 -0
  119. package/dist/wasm/node_modules/@tybys/wasm-util/dist/tsdoc-metadata.json +11 -0
  120. package/dist/wasm/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts +423 -0
  121. package/dist/wasm/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +2932 -0
  122. package/dist/wasm/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +2932 -0
  123. package/dist/wasm/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -0
  124. package/dist/wasm/node_modules/@tybys/wasm-util/dist/wasm-util.js +2954 -0
  125. package/dist/wasm/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -0
  126. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/asyncify.js +158 -0
  127. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/index.js +13 -0
  128. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/jspi.js +46 -0
  129. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/load.js +97 -0
  130. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/memory.js +35 -0
  131. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/wasi/error.js +103 -0
  132. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/wasi/fd.js +268 -0
  133. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/wasi/fs.js +3 -0
  134. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js +192 -0
  135. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +316 -0
  136. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +1599 -0
  137. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/wasi/rights.js +141 -0
  138. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/wasi/types.js +220 -0
  139. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/wasi/util.js +128 -0
  140. package/dist/wasm/node_modules/@tybys/wasm-util/lib/cjs/webassembly.js +13 -0
  141. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/asyncify.mjs +153 -0
  142. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/index.mjs +9 -0
  143. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/jspi.mjs +39 -0
  144. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/load.mjs +89 -0
  145. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/memory.mjs +28 -0
  146. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/wasi/error.mjs +97 -0
  147. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/wasi/fd.mjs +256 -0
  148. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/wasi/fs.mjs +1 -0
  149. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs +186 -0
  150. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +310 -0
  151. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +1593 -0
  152. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/wasi/rights.mjs +135 -0
  153. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/wasi/types.mjs +216 -0
  154. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/wasi/util.mjs +113 -0
  155. package/dist/wasm/node_modules/@tybys/wasm-util/lib/mjs/webassembly.mjs +9 -0
  156. package/dist/wasm/node_modules/@tybys/wasm-util/package.json +58 -0
  157. package/dist/wasm/node_modules/@types/braces/LICENSE +21 -0
  158. package/dist/wasm/node_modules/@types/braces/README.md +15 -0
  159. package/dist/wasm/node_modules/@types/braces/index.d.ts +100 -0
  160. package/dist/wasm/node_modules/@types/braces/package.json +36 -0
  161. package/dist/wasm/node_modules/@types/micromatch/LICENSE +21 -0
  162. package/dist/wasm/node_modules/@types/micromatch/README.md +15 -0
  163. package/dist/wasm/node_modules/@types/micromatch/index.d.ts +670 -0
  164. package/dist/wasm/node_modules/@types/micromatch/package.json +28 -0
  165. package/dist/wasm/node_modules/@yarnpkg/fslib/README.md +17 -0
  166. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/AliasFS.d.ts +16 -0
  167. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/AliasFS.js +24 -0
  168. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/CwdFS.d.ts +15 -0
  169. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/CwdFS.js +36 -0
  170. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/FakeFS.d.ts +398 -0
  171. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/FakeFS.js +451 -0
  172. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/JailFS.d.ts +16 -0
  173. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/JailFS.js +35 -0
  174. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/LazyFS.d.ts +13 -0
  175. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/LazyFS.js +26 -0
  176. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/MountFS.d.ts +278 -0
  177. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/MountFS.js +873 -0
  178. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/NoFS.d.ts +78 -0
  179. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/NoFS.js +229 -0
  180. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/NodeFS.d.ts +223 -0
  181. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/NodeFS.js +476 -0
  182. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/NodePathFS.d.ts +18 -0
  183. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/NodePathFS.js +47 -0
  184. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/PosixFS.d.ts +9 -0
  185. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/PosixFS.js +18 -0
  186. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/ProxiedFS.d.ts +229 -0
  187. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/ProxiedFS.js +255 -0
  188. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/VirtualFS.d.ts +19 -0
  189. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/VirtualFS.js +89 -0
  190. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/algorithms/copyPromise.d.ts +19 -0
  191. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/algorithms/copyPromise.js +271 -0
  192. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/algorithms/opendir.d.ts +22 -0
  193. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/algorithms/opendir.js +65 -0
  194. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/algorithms/watchFile/CustomStatWatcher.d.ts +59 -0
  195. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/algorithms/watchFile/CustomStatWatcher.js +139 -0
  196. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/algorithms/watchFile.d.ts +6 -0
  197. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/algorithms/watchFile.js +67 -0
  198. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/constants.d.ts +13 -0
  199. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/constants.js +16 -0
  200. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/errors.d.ts +36 -0
  201. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/errors.js +54 -0
  202. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/index.d.ts +48 -0
  203. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/index.js +55 -0
  204. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/patchFs/FileHandle.d.ts +81 -0
  205. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/patchFs/FileHandle.js +254 -0
  206. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/patchFs/patchFs.d.ts +5 -0
  207. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/patchFs/patchFs.js +265 -0
  208. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/path.d.ts +84 -0
  209. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/path.js +103 -0
  210. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/statUtils.d.ts +81 -0
  211. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/statUtils.js +238 -0
  212. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/xfs.d.ts +18 -0
  213. package/dist/wasm/node_modules/@yarnpkg/fslib/lib/xfs.js +123 -0
  214. package/dist/wasm/node_modules/@yarnpkg/fslib/package.json +42 -0
  215. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/grammars/resolution.d.ts +1 -0
  216. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/grammars/resolution.js +530 -0
  217. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/grammars/resolution.pegjs +17 -0
  218. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/grammars/shell.d.ts +92 -0
  219. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/grammars/shell.js +3653 -0
  220. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/grammars/shell.pegjs +189 -0
  221. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/grammars/syml.d.ts +1 -0
  222. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/grammars/syml.js +1911 -0
  223. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/grammars/syml.pegjs +125 -0
  224. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/index.d.ts +6 -0
  225. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/index.js +24 -0
  226. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/resolution.d.ts +12 -0
  227. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/resolution.js +31 -0
  228. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/shell.d.ts +19 -0
  229. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/shell.js +170 -0
  230. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/syml.d.ts +11 -0
  231. package/dist/wasm/node_modules/@yarnpkg/parsers/lib/syml.js +132 -0
  232. package/dist/wasm/node_modules/@yarnpkg/parsers/package.json +46 -0
  233. package/dist/wasm/node_modules/@yarnpkg/shell/README.md +38 -0
  234. package/dist/wasm/node_modules/@yarnpkg/shell/lib/boot-cli-dev.js +3 -0
  235. package/dist/wasm/node_modules/@yarnpkg/shell/lib/cli.d.ts +2 -0
  236. package/dist/wasm/node_modules/@yarnpkg/shell/lib/cli.js +19 -0
  237. package/dist/wasm/node_modules/@yarnpkg/shell/lib/commands/entry.d.ts +8 -0
  238. package/dist/wasm/node_modules/@yarnpkg/shell/lib/commands/entry.js +60 -0
  239. package/dist/wasm/node_modules/@yarnpkg/shell/lib/errors.d.ts +6 -0
  240. package/dist/wasm/node_modules/@yarnpkg/shell/lib/errors.js +13 -0
  241. package/dist/wasm/node_modules/@yarnpkg/shell/lib/globUtils.d.ts +23 -0
  242. package/dist/wasm/node_modules/@yarnpkg/shell/lib/globUtils.js +47 -0
  243. package/dist/wasm/node_modules/@yarnpkg/shell/lib/index.d.ts +56 -0
  244. package/dist/wasm/node_modules/@yarnpkg/shell/lib/index.js +926 -0
  245. package/dist/wasm/node_modules/@yarnpkg/shell/lib/pipe.d.ts +54 -0
  246. package/dist/wasm/node_modules/@yarnpkg/shell/lib/pipe.js +281 -0
  247. package/dist/wasm/node_modules/@yarnpkg/shell/package.json +54 -0
  248. package/dist/wasm/node_modules/ansi-styles/index.d.ts +345 -0
  249. package/dist/wasm/node_modules/ansi-styles/index.js +163 -0
  250. package/dist/wasm/node_modules/ansi-styles/license +9 -0
  251. package/dist/wasm/node_modules/ansi-styles/package.json +56 -0
  252. package/dist/wasm/node_modules/ansi-styles/readme.md +152 -0
  253. package/dist/wasm/node_modules/argparse/CHANGELOG.md +216 -0
  254. package/dist/wasm/node_modules/argparse/LICENSE +254 -0
  255. package/dist/wasm/node_modules/argparse/README.md +84 -0
  256. package/dist/wasm/node_modules/argparse/argparse.js +3707 -0
  257. package/dist/wasm/node_modules/argparse/lib/sub.js +67 -0
  258. package/dist/wasm/node_modules/argparse/lib/textwrap.js +440 -0
  259. package/dist/wasm/node_modules/argparse/package.json +31 -0
  260. package/dist/wasm/node_modules/braces/LICENSE +21 -0
  261. package/dist/wasm/node_modules/braces/README.md +586 -0
  262. package/dist/wasm/node_modules/braces/index.js +170 -0
  263. package/dist/wasm/node_modules/braces/lib/compile.js +60 -0
  264. package/dist/wasm/node_modules/braces/lib/constants.js +57 -0
  265. package/dist/wasm/node_modules/braces/lib/expand.js +113 -0
  266. package/dist/wasm/node_modules/braces/lib/parse.js +331 -0
  267. package/dist/wasm/node_modules/braces/lib/stringify.js +32 -0
  268. package/dist/wasm/node_modules/braces/lib/utils.js +122 -0
  269. package/dist/wasm/node_modules/braces/package.json +77 -0
  270. package/dist/wasm/node_modules/chalk/index.d.ts +415 -0
  271. package/dist/wasm/node_modules/chalk/license +9 -0
  272. package/dist/wasm/node_modules/chalk/package.json +68 -0
  273. package/dist/wasm/node_modules/chalk/readme.md +341 -0
  274. package/dist/wasm/node_modules/chalk/source/index.js +229 -0
  275. package/dist/wasm/node_modules/chalk/source/templates.js +134 -0
  276. package/dist/wasm/node_modules/chalk/source/util.js +39 -0
  277. package/dist/wasm/node_modules/clipanion/README.md +98 -0
  278. package/dist/wasm/node_modules/clipanion/lib/advanced/Cli.d.ts +225 -0
  279. package/dist/wasm/node_modules/clipanion/lib/advanced/Cli.js +406 -0
  280. package/dist/wasm/node_modules/clipanion/lib/advanced/Cli.mjs +398 -0
  281. package/dist/wasm/node_modules/clipanion/lib/advanced/Command.d.ts +144 -0
  282. package/dist/wasm/node_modules/clipanion/lib/advanced/Command.js +91 -0
  283. package/dist/wasm/node_modules/clipanion/lib/advanced/Command.mjs +67 -0
  284. package/dist/wasm/node_modules/clipanion/lib/advanced/HelpCommand.d.ts +11 -0
  285. package/dist/wasm/node_modules/clipanion/lib/advanced/HelpCommand.js +54 -0
  286. package/dist/wasm/node_modules/clipanion/lib/advanced/HelpCommand.mjs +50 -0
  287. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/definitions.d.ts +8 -0
  288. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/definitions.js +17 -0
  289. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/definitions.mjs +13 -0
  290. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/help.d.ts +10 -0
  291. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/help.js +19 -0
  292. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/help.mjs +15 -0
  293. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/index.d.ts +3 -0
  294. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/index.js +13 -0
  295. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/index.mjs +3 -0
  296. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/version.d.ts +10 -0
  297. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/version.js +20 -0
  298. package/dist/wasm/node_modules/clipanion/lib/advanced/builtins/version.mjs +16 -0
  299. package/dist/wasm/node_modules/clipanion/lib/advanced/index.d.ts +7 -0
  300. package/dist/wasm/node_modules/clipanion/lib/advanced/index.js +19 -0
  301. package/dist/wasm/node_modules/clipanion/lib/advanced/index.mjs +8 -0
  302. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Array.d.ts +17 -0
  303. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Array.js +37 -0
  304. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Array.mjs +33 -0
  305. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Boolean.d.ts +14 -0
  306. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Boolean.js +34 -0
  307. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Boolean.mjs +30 -0
  308. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Counter.d.ts +15 -0
  309. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Counter.js +41 -0
  310. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Counter.mjs +37 -0
  311. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Proxy.d.ts +18 -0
  312. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Proxy.js +35 -0
  313. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Proxy.mjs +31 -0
  314. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Rest.d.ts +18 -0
  315. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Rest.js +51 -0
  316. package/dist/wasm/node_modules/clipanion/lib/advanced/options/Rest.mjs +47 -0
  317. package/dist/wasm/node_modules/clipanion/lib/advanced/options/String.d.ts +49 -0
  318. package/dist/wasm/node_modules/clipanion/lib/advanced/options/String.js +84 -0
  319. package/dist/wasm/node_modules/clipanion/lib/advanced/options/String.mjs +80 -0
  320. package/dist/wasm/node_modules/clipanion/lib/advanced/options/index.d.ts +7 -0
  321. package/dist/wasm/node_modules/clipanion/lib/advanced/options/index.js +26 -0
  322. package/dist/wasm/node_modules/clipanion/lib/advanced/options/index.mjs +7 -0
  323. package/dist/wasm/node_modules/clipanion/lib/advanced/options/utils.d.ts +25 -0
  324. package/dist/wasm/node_modules/clipanion/lib/advanced/options/utils.js +59 -0
  325. package/dist/wasm/node_modules/clipanion/lib/advanced/options/utils.mjs +50 -0
  326. package/dist/wasm/node_modules/clipanion/lib/constants.d.ts +11 -0
  327. package/dist/wasm/node_modules/clipanion/lib/constants.js +27 -0
  328. package/dist/wasm/node_modules/clipanion/lib/constants.mjs +13 -0
  329. package/dist/wasm/node_modules/clipanion/lib/core.d.ts +462 -0
  330. package/dist/wasm/node_modules/clipanion/lib/core.js +827 -0
  331. package/dist/wasm/node_modules/clipanion/lib/core.mjs +800 -0
  332. package/dist/wasm/node_modules/clipanion/lib/demos/advanced.d.ts +22 -0
  333. package/dist/wasm/node_modules/clipanion/lib/errors.d.ts +52 -0
  334. package/dist/wasm/node_modules/clipanion/lib/errors.js +70 -0
  335. package/dist/wasm/node_modules/clipanion/lib/errors.mjs +64 -0
  336. package/dist/wasm/node_modules/clipanion/lib/format.d.ts +19 -0
  337. package/dist/wasm/node_modules/clipanion/lib/format.js +74 -0
  338. package/dist/wasm/node_modules/clipanion/lib/format.mjs +68 -0
  339. package/dist/wasm/node_modules/clipanion/package.json +68 -0
  340. package/dist/wasm/node_modules/color-convert/CHANGELOG.md +54 -0
  341. package/dist/wasm/node_modules/color-convert/LICENSE +21 -0
  342. package/dist/wasm/node_modules/color-convert/README.md +68 -0
  343. package/dist/wasm/node_modules/color-convert/conversions.js +839 -0
  344. package/dist/wasm/node_modules/color-convert/index.js +81 -0
  345. package/dist/wasm/node_modules/color-convert/package.json +48 -0
  346. package/dist/wasm/node_modules/color-convert/route.js +97 -0
  347. package/dist/wasm/node_modules/color-name/LICENSE +8 -0
  348. package/dist/wasm/node_modules/color-name/README.md +11 -0
  349. package/dist/wasm/node_modules/color-name/index.js +152 -0
  350. package/dist/wasm/node_modules/color-name/package.json +28 -0
  351. package/dist/wasm/node_modules/cross-spawn/LICENSE +21 -0
  352. package/dist/wasm/node_modules/cross-spawn/README.md +89 -0
  353. package/dist/wasm/node_modules/cross-spawn/index.js +39 -0
  354. package/dist/wasm/node_modules/cross-spawn/lib/enoent.js +59 -0
  355. package/dist/wasm/node_modules/cross-spawn/lib/parse.js +91 -0
  356. package/dist/wasm/node_modules/cross-spawn/lib/util/escape.js +47 -0
  357. package/dist/wasm/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  358. package/dist/wasm/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  359. package/dist/wasm/node_modules/cross-spawn/package.json +73 -0
  360. package/dist/wasm/node_modules/fast-glob/LICENSE +21 -0
  361. package/dist/wasm/node_modules/fast-glob/README.md +830 -0
  362. package/dist/wasm/node_modules/fast-glob/out/index.d.ts +40 -0
  363. package/dist/wasm/node_modules/fast-glob/out/index.js +102 -0
  364. package/dist/wasm/node_modules/fast-glob/out/managers/tasks.d.ts +22 -0
  365. package/dist/wasm/node_modules/fast-glob/out/managers/tasks.js +110 -0
  366. package/dist/wasm/node_modules/fast-glob/out/providers/async.d.ts +9 -0
  367. package/dist/wasm/node_modules/fast-glob/out/providers/async.js +23 -0
  368. package/dist/wasm/node_modules/fast-glob/out/providers/filters/deep.d.ts +16 -0
  369. package/dist/wasm/node_modules/fast-glob/out/providers/filters/deep.js +62 -0
  370. package/dist/wasm/node_modules/fast-glob/out/providers/filters/entry.d.ts +17 -0
  371. package/dist/wasm/node_modules/fast-glob/out/providers/filters/entry.js +85 -0
  372. package/dist/wasm/node_modules/fast-glob/out/providers/filters/error.d.ts +8 -0
  373. package/dist/wasm/node_modules/fast-glob/out/providers/filters/error.js +15 -0
  374. package/dist/wasm/node_modules/fast-glob/out/providers/matchers/matcher.d.ts +33 -0
  375. package/dist/wasm/node_modules/fast-glob/out/providers/matchers/matcher.js +45 -0
  376. package/dist/wasm/node_modules/fast-glob/out/providers/matchers/partial.d.ts +4 -0
  377. package/dist/wasm/node_modules/fast-glob/out/providers/matchers/partial.js +38 -0
  378. package/dist/wasm/node_modules/fast-glob/out/providers/provider.d.ts +19 -0
  379. package/dist/wasm/node_modules/fast-glob/out/providers/provider.js +48 -0
  380. package/dist/wasm/node_modules/fast-glob/out/providers/stream.d.ts +11 -0
  381. package/dist/wasm/node_modules/fast-glob/out/providers/stream.js +31 -0
  382. package/dist/wasm/node_modules/fast-glob/out/providers/sync.d.ts +9 -0
  383. package/dist/wasm/node_modules/fast-glob/out/providers/sync.js +23 -0
  384. package/dist/wasm/node_modules/fast-glob/out/providers/transformers/entry.d.ts +8 -0
  385. package/dist/wasm/node_modules/fast-glob/out/providers/transformers/entry.js +26 -0
  386. package/dist/wasm/node_modules/fast-glob/out/readers/async.d.ts +10 -0
  387. package/dist/wasm/node_modules/fast-glob/out/readers/async.js +35 -0
  388. package/dist/wasm/node_modules/fast-glob/out/readers/reader.d.ts +15 -0
  389. package/dist/wasm/node_modules/fast-glob/out/readers/reader.js +33 -0
  390. package/dist/wasm/node_modules/fast-glob/out/readers/stream.d.ts +14 -0
  391. package/dist/wasm/node_modules/fast-glob/out/readers/stream.js +55 -0
  392. package/dist/wasm/node_modules/fast-glob/out/readers/sync.d.ts +12 -0
  393. package/dist/wasm/node_modules/fast-glob/out/readers/sync.js +43 -0
  394. package/dist/wasm/node_modules/fast-glob/out/settings.d.ts +164 -0
  395. package/dist/wasm/node_modules/fast-glob/out/settings.js +59 -0
  396. package/dist/wasm/node_modules/fast-glob/out/types/index.d.ts +31 -0
  397. package/dist/wasm/node_modules/fast-glob/out/types/index.js +2 -0
  398. package/dist/wasm/node_modules/fast-glob/out/utils/array.d.ts +2 -0
  399. package/dist/wasm/node_modules/fast-glob/out/utils/array.js +22 -0
  400. package/dist/wasm/node_modules/fast-glob/out/utils/errno.d.ts +2 -0
  401. package/dist/wasm/node_modules/fast-glob/out/utils/errno.js +7 -0
  402. package/dist/wasm/node_modules/fast-glob/out/utils/fs.d.ts +4 -0
  403. package/dist/wasm/node_modules/fast-glob/out/utils/fs.js +19 -0
  404. package/dist/wasm/node_modules/fast-glob/out/utils/index.d.ts +8 -0
  405. package/dist/wasm/node_modules/fast-glob/out/utils/index.js +17 -0
  406. package/dist/wasm/node_modules/fast-glob/out/utils/path.d.ts +13 -0
  407. package/dist/wasm/node_modules/fast-glob/out/utils/path.js +68 -0
  408. package/dist/wasm/node_modules/fast-glob/out/utils/pattern.d.ts +49 -0
  409. package/dist/wasm/node_modules/fast-glob/out/utils/pattern.js +206 -0
  410. package/dist/wasm/node_modules/fast-glob/out/utils/stream.d.ts +4 -0
  411. package/dist/wasm/node_modules/fast-glob/out/utils/stream.js +17 -0
  412. package/dist/wasm/node_modules/fast-glob/out/utils/string.d.ts +2 -0
  413. package/dist/wasm/node_modules/fast-glob/out/utils/string.js +11 -0
  414. package/dist/wasm/node_modules/fast-glob/package.json +81 -0
  415. package/dist/wasm/node_modules/fastq/LICENSE +13 -0
  416. package/dist/wasm/node_modules/fastq/README.md +310 -0
  417. package/dist/wasm/node_modules/fastq/SECURITY.md +15 -0
  418. package/dist/wasm/node_modules/fastq/bench.js +66 -0
  419. package/dist/wasm/node_modules/fastq/eslint.config.js +11 -0
  420. package/dist/wasm/node_modules/fastq/example.js +14 -0
  421. package/dist/wasm/node_modules/fastq/example.mjs +9 -0
  422. package/dist/wasm/node_modules/fastq/index.d.ts +59 -0
  423. package/dist/wasm/node_modules/fastq/package.json +49 -0
  424. package/dist/wasm/node_modules/fastq/queue.js +348 -0
  425. package/dist/wasm/node_modules/fastq/test/example.ts +83 -0
  426. package/dist/wasm/node_modules/fastq/test/promise.js +356 -0
  427. package/dist/wasm/node_modules/fastq/test/test.js +808 -0
  428. package/dist/wasm/node_modules/fastq/test/tsconfig.json +11 -0
  429. package/dist/wasm/node_modules/fill-range/LICENSE +21 -0
  430. package/dist/wasm/node_modules/fill-range/README.md +237 -0
  431. package/dist/wasm/node_modules/fill-range/index.js +248 -0
  432. package/dist/wasm/node_modules/fill-range/package.json +74 -0
  433. package/dist/wasm/node_modules/glob-parent/CHANGELOG.md +110 -0
  434. package/dist/wasm/node_modules/glob-parent/LICENSE +15 -0
  435. package/dist/wasm/node_modules/glob-parent/README.md +137 -0
  436. package/dist/wasm/node_modules/glob-parent/index.js +42 -0
  437. package/dist/wasm/node_modules/glob-parent/package.json +48 -0
  438. package/dist/wasm/node_modules/has-flag/index.d.ts +39 -0
  439. package/dist/wasm/node_modules/has-flag/index.js +8 -0
  440. package/dist/wasm/node_modules/has-flag/license +9 -0
  441. package/dist/wasm/node_modules/has-flag/package.json +46 -0
  442. package/dist/wasm/node_modules/has-flag/readme.md +89 -0
  443. package/dist/wasm/node_modules/is-extglob/LICENSE +21 -0
  444. package/dist/wasm/node_modules/is-extglob/README.md +107 -0
  445. package/dist/wasm/node_modules/is-extglob/index.js +20 -0
  446. package/dist/wasm/node_modules/is-extglob/package.json +69 -0
  447. package/dist/wasm/node_modules/is-glob/LICENSE +21 -0
  448. package/dist/wasm/node_modules/is-glob/README.md +206 -0
  449. package/dist/wasm/node_modules/is-glob/index.js +150 -0
  450. package/dist/wasm/node_modules/is-glob/package.json +81 -0
  451. package/dist/wasm/node_modules/is-number/LICENSE +21 -0
  452. package/dist/wasm/node_modules/is-number/README.md +187 -0
  453. package/dist/wasm/node_modules/is-number/index.js +18 -0
  454. package/dist/wasm/node_modules/is-number/package.json +82 -0
  455. package/dist/wasm/node_modules/isexe/.npmignore +2 -0
  456. package/dist/wasm/node_modules/isexe/LICENSE +15 -0
  457. package/dist/wasm/node_modules/isexe/README.md +51 -0
  458. package/dist/wasm/node_modules/isexe/index.js +57 -0
  459. package/dist/wasm/node_modules/isexe/mode.js +41 -0
  460. package/dist/wasm/node_modules/isexe/package.json +31 -0
  461. package/dist/wasm/node_modules/isexe/test/basic.js +221 -0
  462. package/dist/wasm/node_modules/isexe/windows.js +42 -0
  463. package/dist/wasm/node_modules/js-yaml/LICENSE +21 -0
  464. package/dist/wasm/node_modules/js-yaml/README.md +246 -0
  465. package/dist/wasm/node_modules/js-yaml/bin/js-yaml.js +126 -0
  466. package/dist/wasm/node_modules/js-yaml/dist/js-yaml.js +3874 -0
  467. package/dist/wasm/node_modules/js-yaml/dist/js-yaml.min.js +2 -0
  468. package/dist/wasm/node_modules/js-yaml/dist/js-yaml.mjs +3851 -0
  469. package/dist/wasm/node_modules/js-yaml/index.js +30 -0
  470. package/dist/wasm/node_modules/js-yaml/lib/common.js +59 -0
  471. package/dist/wasm/node_modules/js-yaml/lib/dumper.js +979 -0
  472. package/dist/wasm/node_modules/js-yaml/lib/exception.js +55 -0
  473. package/dist/wasm/node_modules/js-yaml/lib/loader.js +1733 -0
  474. package/dist/wasm/node_modules/js-yaml/lib/schema/core.js +11 -0
  475. package/dist/wasm/node_modules/js-yaml/lib/schema/default.js +22 -0
  476. package/dist/wasm/node_modules/js-yaml/lib/schema/failsafe.js +17 -0
  477. package/dist/wasm/node_modules/js-yaml/lib/schema/json.js +19 -0
  478. package/dist/wasm/node_modules/js-yaml/lib/schema.js +121 -0
  479. package/dist/wasm/node_modules/js-yaml/lib/snippet.js +101 -0
  480. package/dist/wasm/node_modules/js-yaml/lib/type/binary.js +125 -0
  481. package/dist/wasm/node_modules/js-yaml/lib/type/bool.js +35 -0
  482. package/dist/wasm/node_modules/js-yaml/lib/type/float.js +97 -0
  483. package/dist/wasm/node_modules/js-yaml/lib/type/int.js +156 -0
  484. package/dist/wasm/node_modules/js-yaml/lib/type/map.js +8 -0
  485. package/dist/wasm/node_modules/js-yaml/lib/type/merge.js +12 -0
  486. package/dist/wasm/node_modules/js-yaml/lib/type/null.js +35 -0
  487. package/dist/wasm/node_modules/js-yaml/lib/type/omap.js +44 -0
  488. package/dist/wasm/node_modules/js-yaml/lib/type/pairs.js +53 -0
  489. package/dist/wasm/node_modules/js-yaml/lib/type/seq.js +8 -0
  490. package/dist/wasm/node_modules/js-yaml/lib/type/set.js +29 -0
  491. package/dist/wasm/node_modules/js-yaml/lib/type/str.js +8 -0
  492. package/dist/wasm/node_modules/js-yaml/lib/type/timestamp.js +88 -0
  493. package/dist/wasm/node_modules/js-yaml/lib/type.js +65 -0
  494. package/dist/wasm/node_modules/js-yaml/package.json +65 -0
  495. package/dist/wasm/node_modules/merge2/LICENSE +21 -0
  496. package/dist/wasm/node_modules/merge2/README.md +144 -0
  497. package/dist/wasm/node_modules/merge2/index.js +144 -0
  498. package/dist/wasm/node_modules/merge2/package.json +43 -0
  499. package/dist/wasm/node_modules/micromatch/LICENSE +21 -0
  500. package/dist/wasm/node_modules/micromatch/README.md +1024 -0
  501. package/dist/wasm/node_modules/micromatch/index.js +474 -0
  502. package/dist/wasm/node_modules/micromatch/package.json +119 -0
  503. package/dist/wasm/node_modules/path-key/index.d.ts +40 -0
  504. package/dist/wasm/node_modules/path-key/index.js +16 -0
  505. package/dist/wasm/node_modules/path-key/license +9 -0
  506. package/dist/wasm/node_modules/path-key/package.json +39 -0
  507. package/dist/wasm/node_modules/path-key/readme.md +61 -0
  508. package/dist/wasm/node_modules/picomatch/LICENSE +21 -0
  509. package/dist/wasm/node_modules/picomatch/README.md +716 -0
  510. package/dist/wasm/node_modules/picomatch/index.js +3 -0
  511. package/dist/wasm/node_modules/picomatch/lib/constants.js +184 -0
  512. package/dist/wasm/node_modules/picomatch/lib/parse.js +1392 -0
  513. package/dist/wasm/node_modules/picomatch/lib/picomatch.js +342 -0
  514. package/dist/wasm/node_modules/picomatch/lib/scan.js +391 -0
  515. package/dist/wasm/node_modules/picomatch/lib/utils.js +64 -0
  516. package/dist/wasm/node_modules/picomatch/package.json +81 -0
  517. package/dist/wasm/node_modules/queue-microtask/LICENSE +20 -0
  518. package/dist/wasm/node_modules/queue-microtask/README.md +90 -0
  519. package/dist/wasm/node_modules/queue-microtask/index.d.ts +2 -0
  520. package/dist/wasm/node_modules/queue-microtask/index.js +9 -0
  521. package/dist/wasm/node_modules/queue-microtask/package.json +55 -0
  522. package/dist/wasm/node_modules/reusify/.github/dependabot.yml +7 -0
  523. package/dist/wasm/node_modules/reusify/.github/workflows/ci.yml +96 -0
  524. package/dist/wasm/node_modules/reusify/LICENSE +22 -0
  525. package/dist/wasm/node_modules/reusify/README.md +139 -0
  526. package/dist/wasm/node_modules/reusify/SECURITY.md +15 -0
  527. package/dist/wasm/node_modules/reusify/benchmarks/createNoCodeFunction.js +30 -0
  528. package/dist/wasm/node_modules/reusify/benchmarks/fib.js +13 -0
  529. package/dist/wasm/node_modules/reusify/benchmarks/reuseNoCodeFunction.js +38 -0
  530. package/dist/wasm/node_modules/reusify/eslint.config.js +14 -0
  531. package/dist/wasm/node_modules/reusify/package.json +50 -0
  532. package/dist/wasm/node_modules/reusify/reusify.d.ts +14 -0
  533. package/dist/wasm/node_modules/reusify/reusify.js +33 -0
  534. package/dist/wasm/node_modules/reusify/test.js +66 -0
  535. package/dist/wasm/node_modules/reusify/tsconfig.json +11 -0
  536. package/dist/wasm/node_modules/run-parallel/LICENSE +20 -0
  537. package/dist/wasm/node_modules/run-parallel/README.md +85 -0
  538. package/dist/wasm/node_modules/run-parallel/index.js +51 -0
  539. package/dist/wasm/node_modules/run-parallel/package.json +58 -0
  540. package/dist/wasm/node_modules/shebang-command/index.js +19 -0
  541. package/dist/wasm/node_modules/shebang-command/license +9 -0
  542. package/dist/wasm/node_modules/shebang-command/package.json +34 -0
  543. package/dist/wasm/node_modules/shebang-command/readme.md +34 -0
  544. package/dist/wasm/node_modules/shebang-regex/index.d.ts +22 -0
  545. package/dist/wasm/node_modules/shebang-regex/index.js +2 -0
  546. package/dist/wasm/node_modules/shebang-regex/license +9 -0
  547. package/dist/wasm/node_modules/shebang-regex/package.json +35 -0
  548. package/dist/wasm/node_modules/shebang-regex/readme.md +33 -0
  549. package/dist/wasm/node_modules/supports-color/browser.js +5 -0
  550. package/dist/wasm/node_modules/supports-color/index.js +135 -0
  551. package/dist/wasm/node_modules/supports-color/license +9 -0
  552. package/dist/wasm/node_modules/supports-color/package.json +53 -0
  553. package/dist/wasm/node_modules/supports-color/readme.md +76 -0
  554. package/dist/wasm/node_modules/to-regex-range/LICENSE +21 -0
  555. package/dist/wasm/node_modules/to-regex-range/README.md +305 -0
  556. package/dist/wasm/node_modules/to-regex-range/index.js +288 -0
  557. package/dist/wasm/node_modules/to-regex-range/package.json +88 -0
  558. package/dist/wasm/node_modules/tslib/CopyrightNotice.txt +15 -0
  559. package/dist/wasm/node_modules/tslib/LICENSE.txt +12 -0
  560. package/dist/wasm/node_modules/tslib/README.md +164 -0
  561. package/dist/wasm/node_modules/tslib/SECURITY.md +41 -0
  562. package/dist/wasm/node_modules/tslib/modules/index.d.ts +38 -0
  563. package/dist/wasm/node_modules/tslib/modules/index.js +70 -0
  564. package/dist/wasm/node_modules/tslib/modules/package.json +3 -0
  565. package/dist/wasm/node_modules/tslib/package.json +47 -0
  566. package/dist/wasm/node_modules/tslib/tslib.d.ts +460 -0
  567. package/dist/wasm/node_modules/tslib/tslib.es6.html +1 -0
  568. package/dist/wasm/node_modules/tslib/tslib.es6.js +402 -0
  569. package/dist/wasm/node_modules/tslib/tslib.es6.mjs +401 -0
  570. package/dist/wasm/node_modules/tslib/tslib.html +1 -0
  571. package/dist/wasm/node_modules/tslib/tslib.js +484 -0
  572. package/dist/wasm/node_modules/typanion/README.md +117 -0
  573. package/dist/wasm/node_modules/typanion/lib/index.d.ts +5 -0
  574. package/dist/wasm/node_modules/typanion/lib/index.js +1305 -0
  575. package/dist/wasm/node_modules/typanion/lib/index.mjs +1249 -0
  576. package/dist/wasm/node_modules/typanion/lib/internal/format.d.ts +5 -0
  577. package/dist/wasm/node_modules/typanion/lib/internal/regexps.d.ts +5 -0
  578. package/dist/wasm/node_modules/typanion/lib/internal/tools.d.ts +5 -0
  579. package/dist/wasm/node_modules/typanion/lib/predicates/cascadingPredicates.d.ts +114 -0
  580. package/dist/wasm/node_modules/typanion/lib/predicates/helperPredicates.d.ts +80 -0
  581. package/dist/wasm/node_modules/typanion/lib/predicates/typePredicates.d.ts +205 -0
  582. package/dist/wasm/node_modules/typanion/lib/tools.d.ts +90 -0
  583. package/dist/wasm/node_modules/typanion/lib/types.d.ts +22 -0
  584. package/dist/wasm/node_modules/typanion/package.json +40 -0
  585. package/dist/wasm/node_modules/which/CHANGELOG.md +166 -0
  586. package/dist/wasm/node_modules/which/LICENSE +15 -0
  587. package/dist/wasm/node_modules/which/README.md +54 -0
  588. package/dist/wasm/node_modules/which/bin/node-which +52 -0
  589. package/dist/wasm/node_modules/which/package.json +43 -0
  590. package/dist/wasm/node_modules/which/which.js +125 -0
  591. package/dist/wasm/package.json +10 -0
  592. package/dist/wasm/pnpm.mjs +8 -0
  593. package/dist/wasm/pnpm.wasm +4 -0
  594. package/dist/wasm/pnpx.mjs +8 -0
  595. package/dist/wasm/run.mjs +147 -0
  596. package/dist/wasm/worker.mjs +56 -0
  597. package/install.js +18 -21
  598. package/package.json +15 -15
  599. package/pn +2 -74
  600. package/pnpm +2 -94
  601. package/pnpx +2 -74
  602. package/pnx +2 -74
@@ -0,0 +1,76 @@
1
+ import { createStream } from './resources.mjs'
2
+
3
+ export async function request (resources, options, signal) {
4
+ let url
5
+ try {
6
+ url = new URL(options.url)
7
+ } catch {
8
+ throw new TypeError('Invalid HTTP request URL')
9
+ }
10
+ if (url.username || url.password) throw new TypeError('HTTP URL credentials must be supplied as an Authorization header')
11
+ if (url.protocol !== 'http:' && url.protocol !== 'https:') {
12
+ throw new Error(`Unsupported HTTP protocol: ${url.protocol}`)
13
+ }
14
+ const controller = new AbortController()
15
+ const timeoutMs = options.timeoutMs ?? 60000
16
+ if (!Number.isInteger(timeoutMs) || timeoutMs < 1) throw new RangeError('Invalid HTTP timeout')
17
+ if (options.totalTimeoutMs != null && (!Number.isInteger(options.totalTimeoutMs) || options.totalTimeoutMs < 1)) {
18
+ throw new RangeError('Invalid HTTP total timeout')
19
+ }
20
+ const totalTimer = options.totalTimeoutMs == null ? null
21
+ : setTimeout(() => controller.abort(new Error('HTTP request deadline timed out')), options.totalTimeoutMs)
22
+ const timer = setTimeout(() => controller.abort(new Error('HTTP request timed out')), timeoutMs)
23
+ const pending = resources.add({ kind: 'request', close: () => controller.abort() })
24
+ try {
25
+ const body = options.bodyHandle == null ? options.body : resources.get(options.bodyHandle, 'upload').readable
26
+ const response = await fetch(url, {
27
+ method: options.method ?? 'GET',
28
+ headers: options.headers,
29
+ body,
30
+ ...(options.bodyHandle == null ? {} : { duplex: 'half' }),
31
+ redirect: 'manual',
32
+ signal: signal ? AbortSignal.any([controller.signal, signal]) : controller.signal,
33
+ })
34
+ const reader = response.body?.getReader()
35
+ const stream = createStream(
36
+ async () => {
37
+ const chunk = await readWithTimeout(reader, controller, timeoutMs)
38
+ if (chunk.done) clearTimeout(totalTimer)
39
+ return chunk
40
+ },
41
+ () => {
42
+ clearTimeout(totalTimer)
43
+ controller.abort()
44
+ },
45
+ )
46
+ signal?.throwIfAborted()
47
+ return {
48
+ handle: resources.add(stream),
49
+ status: response.status,
50
+ headers: decodedHeaders(response.headers),
51
+ url: response.url,
52
+ }
53
+ } catch (error) {
54
+ clearTimeout(totalTimer)
55
+ controller.abort()
56
+ throw error
57
+ } finally {
58
+ clearTimeout(timer)
59
+ resources.remove(pending)
60
+ }
61
+ }
62
+
63
+ function decodedHeaders (headers) {
64
+ const decoded = headers.get('content-encoding')?.split(',')
65
+ .every(encoding => ['gzip', 'deflate', 'br'].includes(encoding.trim().toLowerCase()))
66
+ return [...headers].filter(([name]) => !decoded || (name !== 'content-encoding' && name !== 'content-length'))
67
+ }
68
+
69
+ async function readWithTimeout (reader, controller, timeoutMs) {
70
+ const timer = setTimeout(() => controller.abort(new Error('HTTP response timed out')), timeoutMs)
71
+ try {
72
+ return await reader?.read() ?? { done: true }
73
+ } finally {
74
+ clearTimeout(timer)
75
+ }
76
+ }
@@ -0,0 +1,67 @@
1
+ import { request } from './network.mjs'
2
+ import { endStdin, spawnProcess, tryWaitProcess, waitProcess, writeStdin } from './process.mjs'
3
+ import { createResources } from './resources.mjs'
4
+ import { createSignals } from './signals.mjs'
5
+ import { spawnShell } from './shell.mjs'
6
+ import { createUpload, writeUpload } from './upload.mjs'
7
+ import { confirm, input, prompt } from './terminal.mjs'
8
+ import { openTerminal, writeTerminal } from './terminal-session.mjs'
9
+ import { password } from './terminal-password.mjs'
10
+
11
+ export function createHostServices (configuration = {}) {
12
+ const resources = createResources()
13
+ const signals = createSignals(configuration.signalSource)
14
+ let closed = false
15
+ return {
16
+ async dispatch (message, options = {}) {
17
+ if (closed) throw new Error('WASM host services are closed')
18
+ options.signal?.throwIfAborted()
19
+ switch (message.operation) {
20
+ case 'network.request': return request(resources, message, options.signal)
21
+ case 'upload.create': return createUpload(resources)
22
+ case 'upload.write': return writeUpload(resources.get(message.handle, 'upload'), message.bytes)
23
+ case 'upload.end': return resources.get(message.handle, 'upload').writer.close()
24
+ case 'stream.read': return resources.get(message.handle, 'stream').read(message.maxBytes)
25
+ case 'resource.close': return resources.close(message.handle)
26
+ case 'process.spawn': return spawnProcess(resources, message, {
27
+ signal: options.signal, acquireDescriptor: configuration.acquireDescriptor,
28
+ })
29
+ case 'shell.spawn': return spawnShell(resources, message, {
30
+ signal: options.signal, acquireDescriptor: configuration.acquireDescriptor,
31
+ })
32
+ case 'process.write': return writeStdin(resources.get(message.handle, 'process'), message.bytes)
33
+ case 'process.endDetached':
34
+ resources.get(message.handle, 'process').child.stdin?.end()
35
+ return null
36
+ case 'process.closeStdin':
37
+ resources.get(message.handle, 'process').child.stdin?.destroy()
38
+ return null
39
+ case 'process.end': return endStdin(resources.get(message.handle, 'process'))
40
+ case 'process.wait': return waitProcess(resources.get(message.handle, 'process'))
41
+ case 'process.tryWait': return tryWaitProcess(resources.get(message.handle, 'process'))
42
+ case 'process.release':
43
+ resources.get(message.handle, 'process')
44
+ resources.remove(message.handle)
45
+ return null
46
+ case 'process.killPid':
47
+ return resources.findProcess(message.pid).kill(message.signal ?? 'SIGTERM')
48
+ case 'process.kill': return resources.get(message.handle, 'process').kill(message.signal ?? 'SIGTERM')
49
+ case 'signal.next': return signals.next(options)
50
+ case 'terminal.status': return { stdin: Boolean(process.stdin.isTTY), stdout: Boolean(process.stdout.isTTY), stderr: Boolean(process.stderr.isTTY) }
51
+ case 'terminal.open': return openTerminal(resources)
52
+ case 'terminal.readKey': return resources.get(message.handle, 'terminal').read(options.signal)
53
+ case 'terminal.write': return writeTerminal(resources.get(message.handle, 'terminal'), message.text)
54
+ case 'terminal.prompt': return prompt(message, options)
55
+ case 'terminal.confirm': return confirm(message, options)
56
+ case 'terminal.input': return input(message, options)
57
+ case 'terminal.password': return password(message, options)
58
+ default: throw new Error(`Unknown WASM host operation: ${message.operation}`)
59
+ }
60
+ },
61
+ async close () {
62
+ closed = true
63
+ signals.close()
64
+ await resources.closeAll()
65
+ },
66
+ }
67
+ }
@@ -0,0 +1,74 @@
1
+ import { performance } from 'node:perf_hooks'
2
+ import { setTimeout } from 'node:timers/promises'
3
+
4
+ import { errno } from './wasi-errno.mjs'
5
+
6
+ const { AbortController } = globalThis
7
+
8
+ // Clock polling must yield the supervisor so other guest threads, leases and
9
+ // process termination remain responsive while a Rust thread sleeps.
10
+ export function createPoll (memory) {
11
+ const controller = new AbortController()
12
+ return { close () { controller.abort() }, async poll (input, output, count, written) {
13
+ try {
14
+ if (!input || !output || !count || !written) return errno.EINVAL
15
+ const subscriptions = readSubscriptions(memory, input >>> 0, count >>> 0)
16
+ new Uint8Array(memory.buffer, output >>> 0, (count >>> 0) * 32)
17
+ new DataView(memory.buffer).setUint32(written >>> 0, 0, true)
18
+ const descriptors = subscriptions.filter(subscription => subscription.type !== 0)
19
+ if (descriptors.length) return writeEvents(memory, { output, written }, descriptors, errno.ENOSYS)
20
+ const first = subscriptions.reduce((earliest, entry) => entry.delay < earliest.delay ? entry : earliest)
21
+ await waitForClock(first.delay, controller.signal)
22
+ return writeEvents(memory, { output, written }, [first], 0)
23
+ } catch (error) {
24
+ if (error.name === 'AbortError') return errno.EINTR
25
+ if (error instanceof RangeError) return errno.EFAULT
26
+ if (error.code === 'EINVAL') return errno.EINVAL
27
+ throw error
28
+ }
29
+ } }
30
+ }
31
+
32
+ function readSubscriptions (memory, input, count) {
33
+ const view = new DataView(memory.buffer, input, count * 48)
34
+ return Array.from({ length: count }, (_, index) => {
35
+ const offset = index * 48
36
+ const type = view.getUint8(offset + 8)
37
+ if (type > 2) throw Object.assign(new Error('Invalid WASI subscription type'), { code: 'EINVAL' })
38
+ return { userdata: view.getBigUint64(offset, true), type, delay: type === 0 ? clockDelay(view, offset) : 0n }
39
+ })
40
+ }
41
+
42
+ function clockDelay (view, offset) {
43
+ const clock = view.getUint32(offset + 16, true)
44
+ const timeout = view.getBigUint64(offset + 24, true)
45
+ const flags = view.getUint16(offset + 40, true)
46
+ if (clock > 3 || flags > 1) throw Object.assign(new Error('Invalid WASI clock subscription'), { code: 'EINVAL' })
47
+ if (flags === 0) return timeout
48
+ // Match the clock epoch used by the injected WASI clock_time_get import.
49
+ const now = BigInt(Math.floor(clock === 0 ? Date.now() : performance.now())) * 1000000n
50
+ return timeout > now ? timeout - now : 0n
51
+ }
52
+
53
+ async function waitForClock (delay, signal) {
54
+ const deadline = performance.now() + Number(delay) / 1000000
55
+ let remaining = deadline - performance.now()
56
+ do {
57
+ // eslint-disable-next-line no-await-in-loop -- Recheck the deadline after early or maximum-length timers.
58
+ await setTimeout(Math.min(Math.ceil(Math.max(remaining, 0)), 2147483647), undefined, { signal })
59
+ remaining = deadline - performance.now()
60
+ } while (remaining > 0)
61
+ }
62
+
63
+ function writeEvents (memory, { output, written }, subscriptions, error) {
64
+ const view = new DataView(memory.buffer)
65
+ subscriptions.forEach((subscription, index) => {
66
+ const offset = (output >>> 0) + index * 32
67
+ new Uint8Array(memory.buffer, offset, 32).fill(0)
68
+ view.setBigUint64(offset, subscription.userdata, true)
69
+ view.setUint16(offset + 8, error, true)
70
+ view.setUint8(offset + 10, subscription.type)
71
+ })
72
+ view.setUint32(written >>> 0, subscriptions.length, true)
73
+ return 0
74
+ }
@@ -0,0 +1,41 @@
1
+ import { createReadStream, createWriteStream } from 'node:fs'
2
+ import { pipeline } from 'node:stream/promises'
3
+
4
+ export function prepareStdio (options, acquireDescriptor) {
5
+ const redirects = new Map()
6
+ try {
7
+ const modes = ['stdin', 'stdout', 'stderr'].map((name, index) => {
8
+ const mode = options[name] ?? 'pipe'
9
+ if (mode && typeof mode === 'object' && Number.isInteger(mode.fd) && mode.fd >= 0) {
10
+ if (!acquireDescriptor) throw new Error('WASI descriptor leasing is unavailable')
11
+ const lease = acquireDescriptor(mode.fd)
12
+ if (!Number.isInteger(lease.fd) || lease.fd < 0) throw new Error(`Invalid WASI descriptor: ${mode.fd}`)
13
+ redirects.set(index, lease)
14
+ return 'pipe'
15
+ }
16
+ if (!['pipe', 'inherit', 'ignore'].includes(mode)) throw new Error(`Invalid stdio mode: ${mode}`)
17
+ return mode
18
+ })
19
+ return { modes, redirects, release: () => release(redirects) }
20
+ } catch (error) {
21
+ release(redirects)
22
+ throw error
23
+ }
24
+ }
25
+
26
+ export function bridgeDescriptors (child, redirects) {
27
+ return Promise.allSettled([...redirects].map(async ([index, lease]) => {
28
+ try {
29
+ if (index === 0) await pipeline(createReadStream(null, { fd: lease.fd, autoClose: false }), child.stdin)
30
+ else await pipeline(child.stdio[index], createWriteStream(null, { fd: lease.fd, autoClose: false }))
31
+ } catch (error) {
32
+ if (index !== 0 || !['EPIPE', 'ERR_STREAM_PREMATURE_CLOSE'].includes(error.code)) throw error
33
+ } finally {
34
+ lease.release()
35
+ }
36
+ })).then(results => results.find(result => result.status === 'rejected')?.reason)
37
+ }
38
+
39
+ function release (redirects) {
40
+ for (const lease of redirects.values()) lease.release()
41
+ }
@@ -0,0 +1,54 @@
1
+ import { execFile } from 'node:child_process'
2
+ import { promisify } from 'node:util'
3
+
4
+ const executeFile = promisify(execFile)
5
+
6
+ export async function killProcessTree (child, signal) {
7
+ if (!isRunning(child)) return false
8
+ let stdout
9
+ try {
10
+ ({ stdout } = await executeFile('/bin/ps', ['-eo', 'pid,ppid'], {
11
+ timeout: 2000, maxBuffer: 4 * 1024 * 1024, encoding: 'utf8',
12
+ }))
13
+ } catch (error) {
14
+ if (isRunning(child)) child.kill(signal)
15
+ throw error
16
+ }
17
+ if (!isRunning(child)) return false
18
+ const descendants = findDescendants(stdout, child.pid)
19
+ for (const pid of descendants.reverse()) signalProcess(pid, signal)
20
+ return child.kill(signal)
21
+ }
22
+
23
+ export function findDescendants (listing, parentPid) {
24
+ const children = new Map()
25
+ for (const line of listing.trim().split('\n').slice(1)) {
26
+ const [pid, parent] = line.trim().split(/\s+/).map(Number)
27
+ if (!Number.isInteger(pid) || pid < 1 || !Number.isInteger(parent) || parent < 0) continue
28
+ const siblings = children.get(parent) ?? []
29
+ siblings.push(pid)
30
+ children.set(parent, siblings)
31
+ }
32
+ const descendants = []
33
+ const visited = new Set([parentPid])
34
+ const pending = [...(children.get(parentPid) ?? [])]
35
+ for (const pid of pending) {
36
+ if (visited.has(pid)) continue
37
+ visited.add(pid)
38
+ descendants.push(pid)
39
+ pending.push(...(children.get(pid) ?? []))
40
+ }
41
+ return descendants
42
+ }
43
+
44
+ function isRunning (child) {
45
+ return child.pid !== undefined && child.exitCode === null && child.signalCode === null
46
+ }
47
+
48
+ function signalProcess (pid, signal) {
49
+ try {
50
+ process.kill(pid, signal)
51
+ } catch (error) {
52
+ if (error.code !== 'ESRCH') throw error
53
+ }
54
+ }
@@ -0,0 +1,126 @@
1
+ import { spawn } from 'node:child_process'
2
+ import { once } from 'node:events'
3
+ import { constants } from 'node:os'
4
+
5
+ import { killProcessTree } from './process-tree.mjs'
6
+ import { createStream } from './resources.mjs'
7
+ import { bridgeDescriptors, prepareStdio } from './process-stdio.mjs'
8
+
9
+ export async function spawnProcess (resources, options, { signal, acquireDescriptor } = {}) {
10
+ const stdio = prepareStdio(options, acquireDescriptor)
11
+ const child = startProcess(options, stdio)
12
+ const processResource = trackProcess(child, bridgeDescriptors(child, stdio.redirects))
13
+ const abort = () => {
14
+ processResource.cancellation = processResource.close().then(() => signal.reason, error => error)
15
+ }
16
+ signal?.addEventListener('abort', abort, { once: true })
17
+ void processResource.completion.then(() => signal?.removeEventListener('abort', abort))
18
+ const handle = resources.add(processResource)
19
+ const stdout = addPipe(resources, stdio.redirects.has(1) ? null : child.stdout)
20
+ const stderr = addPipe(resources, stdio.redirects.has(2) ? null : child.stderr)
21
+ try {
22
+ await once(child, 'spawn')
23
+ signal?.throwIfAborted()
24
+ } catch (error) {
25
+ resources.remove(handle)
26
+ if (stdout !== null) resources.remove(stdout)
27
+ if (stderr !== null) resources.remove(stderr)
28
+ await processResource.close()
29
+ throw error
30
+ }
31
+ return {
32
+ handle,
33
+ pid: child.pid,
34
+ stdout,
35
+ stderr,
36
+ }
37
+ }
38
+
39
+ export async function writeStdin (resource, bytes) {
40
+ if (resource.inputError) throw resource.inputError
41
+ if (!(bytes instanceof Uint8Array)) throw new TypeError('Process input must be a Uint8Array')
42
+ if (!resource.child.stdin) throw new Error('Process stdin is not piped')
43
+ await new Promise((resolve, reject) => {
44
+ resource.child.stdin.write(bytes, error => error ? reject(error) : resolve())
45
+ })
46
+ }
47
+
48
+ export async function endStdin (resource) {
49
+ if (resource.inputError) throw resource.inputError
50
+ if (!resource.child.stdin) throw new Error('Process stdin is not piped')
51
+ await new Promise((resolve, reject) => {
52
+ resource.child.stdin.end(error => error ? reject(error) : resolve())
53
+ })
54
+ }
55
+
56
+ export async function waitProcess (resource) {
57
+ const result = await resource.completion
58
+ const cancellationError = await resource.cancellation
59
+ if (cancellationError) throw cancellationError
60
+ if (result.error) throw result.error
61
+ return result
62
+ }
63
+
64
+ export function tryWaitProcess (resource) {
65
+ if (resource.status?.error) throw resource.status.error
66
+ return resource.status
67
+ }
68
+
69
+ function addPipe (resources, pipe) {
70
+ if (!pipe) return null
71
+ const iterator = pipe[Symbol.asyncIterator]()
72
+ const next = () => iterator.next().then(result => ({ result }), error => ({ error }))
73
+ let pending = next()
74
+ return resources.add(createStream(async () => {
75
+ const settled = await pending
76
+ if (settled.error) throw settled.error
77
+ if (!settled.result.done) pending = next()
78
+ return settled.result
79
+ }, () => pipe.destroy()))
80
+ }
81
+
82
+ function startProcess (options, stdio) {
83
+ try {
84
+ return spawn(options.program, options.args ?? [], {
85
+ cwd: options.cwd, env: options.env, stdio: stdio.modes,
86
+ })
87
+ } catch (error) {
88
+ stdio.release()
89
+ throw error
90
+ }
91
+ }
92
+
93
+ function trackProcess (child, redirected) {
94
+ const completion = new Promise(resolve => {
95
+ child.once('error', error => resolve({ error }))
96
+ child.once('exit', (code, signal) => resolve(exitStatus(code, signal)))
97
+ }).then(async result => {
98
+ const error = result.error ?? await redirected
99
+ return error ? { error } : result
100
+ })
101
+ const resource = {
102
+ kind: 'process',
103
+ child,
104
+ completion,
105
+ kill: signal => killProcessTree(child, signal),
106
+ inputError: null,
107
+ status: null,
108
+ async close () {
109
+ try {
110
+ await killProcessTree(child, 'SIGKILL')
111
+ } finally {
112
+ child.stdin?.destroy()
113
+ child.stdout?.destroy()
114
+ child.stderr?.destroy()
115
+ await completion
116
+ }
117
+ },
118
+ }
119
+ child.stdin?.on('error', error => { resource.inputError = error })
120
+ void completion.then(result => { resource.status = result })
121
+ return resource
122
+ }
123
+
124
+ function exitStatus (code, signal) {
125
+ return { code, signal, signalNumber: signal === null ? null : constants.signals[signal] ?? null }
126
+ }
@@ -0,0 +1 @@
1
+ export const RESPONSE_CAPACITY = 1024 * 1024
@@ -0,0 +1,76 @@
1
+ export function createResources () {
2
+ const resources = new Map()
3
+ let nextHandle = 1
4
+ let closed = false
5
+ return {
6
+ add (resource) {
7
+ if (closed) throw new Error('WASM host resources are closed')
8
+ if (nextHandle > 0x7fffffff) throw new Error('WASM host resource handles exhausted')
9
+ const handle = nextHandle++
10
+ resources.set(handle, resource)
11
+ return handle
12
+ },
13
+ get (handle, kind) {
14
+ const resource = resources.get(handle)
15
+ if (!resource || resource.kind !== kind) throw new Error(`Invalid ${kind} handle: ${handle}`)
16
+ return resource
17
+ },
18
+ findProcess (pid) {
19
+ const resource = [...resources.values()].find(resource => resource.kind === 'process' && resource.child.pid === pid)
20
+ if (!resource) throw Object.assign(new Error(`No owned process with PID ${pid}`), { code: 'ESRCH' })
21
+ return resource
22
+ },
23
+ remove (handle) {
24
+ resources.delete(handle)
25
+ },
26
+ async close (handle) {
27
+ const resource = resources.get(handle)
28
+ if (!resource) throw new Error(`Invalid resource handle: ${handle}`)
29
+ resources.delete(handle)
30
+ await resource.close()
31
+ },
32
+ async closeAll () {
33
+ closed = true
34
+ const pending = [...resources.values()]
35
+ resources.clear()
36
+ const results = await Promise.allSettled(pending.map(resource => resource.close()))
37
+ const errors = results.filter(result => result.status === 'rejected').map(result => result.reason)
38
+ if (errors.length) throw new AggregateError(errors, 'Failed to close WASM host resources')
39
+ },
40
+ }
41
+ }
42
+
43
+ export function createStream (reader, cancel) {
44
+ let remainder = new Uint8Array()
45
+ let reading = false
46
+ let closed = false
47
+ return {
48
+ kind: 'stream',
49
+ async read (maxBytes = 65536) {
50
+ if (!Number.isInteger(maxBytes) || maxBytes < 1 || maxBytes > 65536) {
51
+ throw new RangeError('Stream read size must be between 1 and 65536')
52
+ }
53
+ if (reading) throw new Error('Concurrent reads of one stream are not supported')
54
+ if (closed) throw new Error('Stream is closed')
55
+ reading = true
56
+ try {
57
+ while (remainder.length === 0) {
58
+ // eslint-disable-next-line no-await-in-loop -- Empty chunks must be consumed before returning stream bytes.
59
+ const result = await reader()
60
+ if (result.done) return { bytes: new Uint8Array(), done: true }
61
+ remainder = result.value
62
+ }
63
+ const bytes = Uint8Array.from(remainder.subarray(0, maxBytes))
64
+ remainder = remainder.subarray(bytes.length)
65
+ return { bytes, done: false }
66
+ } finally {
67
+ reading = false
68
+ }
69
+ },
70
+ async close () {
71
+ closed = true
72
+ remainder = new Uint8Array()
73
+ await cancel()
74
+ },
75
+ }
76
+ }
@@ -0,0 +1,8 @@
1
+ import { execute } from '@yarnpkg/shell'
2
+
3
+ try {
4
+ process.exitCode = await execute(process.argv[2], process.argv.slice(3))
5
+ } catch (error) {
6
+ console.error(error.message)
7
+ process.exitCode = 1
8
+ }
@@ -0,0 +1,19 @@
1
+ import { fileURLToPath } from 'node:url'
2
+
3
+ import { parseShell } from '@yarnpkg/parsers'
4
+ import { globUtils } from '@yarnpkg/shell'
5
+
6
+ import { spawnProcess } from './process.mjs'
7
+
8
+ export function spawnShell (resources, options, configuration) {
9
+ try {
10
+ parseShell(options.script, globUtils)
11
+ } catch (error) {
12
+ throw Object.assign(new Error(error.message, { cause: error }), { code: 'ESHELLPARSE' })
13
+ }
14
+ return spawnProcess(resources, {
15
+ ...options,
16
+ program: process.execPath,
17
+ args: [fileURLToPath(new URL('./shell-runner.mjs', import.meta.url)), options.script, ...(options.args ?? [])],
18
+ }, configuration)
19
+ }
@@ -0,0 +1,49 @@
1
+ export function createSignals (source = process) {
2
+ const queued = []
3
+ const waiters = []
4
+ let handlers
5
+ let closed = false
6
+
7
+ function subscribe () {
8
+ if (handlers) return
9
+ handlers = ['SIGINT', 'SIGTERM'].map(signal => {
10
+ const listener = () => {
11
+ const value = { signal, number: signal === 'SIGINT' ? 2 : 15 }
12
+ const waiter = waiters.shift()
13
+ if (waiter) waiter.resolve(value)
14
+ else queued.push(value)
15
+ }
16
+ source.on(signal, listener)
17
+ return [signal, listener]
18
+ })
19
+ }
20
+
21
+ return {
22
+ next ({ signal } = {}) {
23
+ if (closed) return Promise.reject(new Error('Signal subscription is closed'))
24
+ signal?.throwIfAborted()
25
+ subscribe()
26
+ if (queued.length) return Promise.resolve(queued.shift())
27
+ return new Promise((resolve, reject) => {
28
+ const abort = () => {
29
+ const index = waiters.indexOf(waiter)
30
+ if (index !== -1) waiters.splice(index, 1)
31
+ waiter.reject(signal.reason)
32
+ }
33
+ const finish = callback => value => {
34
+ signal?.removeEventListener('abort', abort)
35
+ callback(value)
36
+ }
37
+ const waiter = { resolve: finish(resolve), reject: finish(reject) }
38
+ waiters.push(waiter)
39
+ signal?.addEventListener('abort', abort, { once: true })
40
+ })
41
+ },
42
+ close () {
43
+ closed = true
44
+ for (const [signal, listener] of handlers ?? []) source.off(signal, listener)
45
+ for (const waiter of waiters.splice(0)) waiter.reject(new Error('Signal subscription is closed'))
46
+ queued.length = 0
47
+ },
48
+ }
49
+ }
@@ -0,0 +1,7 @@
1
+ const activeInputs = new WeakSet()
2
+
3
+ export function claimTerminalInput (input) {
4
+ if (activeInputs.has(input)) throw new Error('A terminal prompt is already active')
5
+ activeInputs.add(input)
6
+ return () => activeInputs.delete(input)
7
+ }
@@ -0,0 +1,32 @@
1
+ import { createResources } from './resources.mjs'
2
+ import { openTerminal, writeTerminal } from './terminal-session.mjs'
3
+
4
+ export async function password (options, context = {}) {
5
+ if (typeof options.message !== 'string') throw new TypeError('Password prompt message must be a string')
6
+ context.signal?.throwIfAborted()
7
+ const resources = createResources()
8
+ try {
9
+ const { handle } = await openTerminal(resources, { ...context, output: context.output ?? process.stderr, maxQueuedKeys: 65536 })
10
+ const session = resources.get(handle, 'terminal')
11
+ await writeTerminal(session, `${options.message}: `)
12
+ return await readPassword(session, options.allowEmpty, context.signal)
13
+ } finally {
14
+ await resources.closeAll()
15
+ }
16
+ }
17
+
18
+ async function readPassword (session, allowEmpty, signal) {
19
+ const characters = []
20
+ while (true) {
21
+ // eslint-disable-next-line no-await-in-loop -- input must be consumed in key order
22
+ const key = await session.read(signal)
23
+ if (['ctrl-c', 'escape', 'eof'].includes(key.name)) throw Object.assign(new Error('Password input cancelled'), { code: 'EINTR' })
24
+ if (key.name === 'enter' && (allowEmpty || characters.length)) {
25
+ await writeTerminal(session, '\n') // eslint-disable-line no-await-in-loop -- newline is emitted only after accepting the complete password
26
+ return characters.join('')
27
+ }
28
+ if (key.name === 'backspace' || key.name === 'delete') characters.pop()
29
+ else if (key.character && Array.from(key.character).every(character => character >= ' ' && character !== '\x7f')) characters.push(key.character)
30
+ if (characters.length > 65536) throw new Error('Password input exceeds the terminal limit')
31
+ }
32
+ }