@smthrs/platform-node 0.0.0-stage → 1.0.0-rc.4

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 (442) hide show
  1. package/CHANGELOG.md +211 -0
  2. package/LICENSE +21 -0
  3. package/README.md +165 -2
  4. package/bin/darwin-arm64/smithers-jj-export +0 -0
  5. package/bin/darwin-x64/smithers-jj-export +0 -0
  6. package/bin/linux-arm64/smithers-jj-export +0 -0
  7. package/bin/linux-x64/smithers-jj-export +4 -0
  8. package/bin/win32-x64/smithers-jj-export.exe +0 -0
  9. package/dist/cjs/AtomicFileSystem.d.ts +147 -0
  10. package/dist/cjs/AtomicFileSystem.d.ts.map +1 -0
  11. package/dist/cjs/AtomicFileSystem.js +234 -0
  12. package/dist/cjs/AtomicFileSystem.js.map +7 -0
  13. package/dist/cjs/EgressHttpClient.d.ts +106 -0
  14. package/dist/cjs/EgressHttpClient.d.ts.map +1 -0
  15. package/dist/cjs/EgressHttpClient.js +202 -0
  16. package/dist/cjs/EgressHttpClient.js.map +7 -0
  17. package/dist/cjs/HostLiveness.d.ts +81 -0
  18. package/dist/cjs/HostLiveness.d.ts.map +1 -0
  19. package/dist/cjs/HostLiveness.js +49 -0
  20. package/dist/cjs/HostLiveness.js.map +7 -0
  21. package/dist/cjs/NodeHost.d.ts +145 -0
  22. package/dist/cjs/NodeHost.d.ts.map +1 -0
  23. package/dist/cjs/NodeHost.js +128 -0
  24. package/dist/cjs/NodeHost.js.map +7 -0
  25. package/dist/cjs/ProcessConfinement.d.ts +61 -0
  26. package/dist/cjs/ProcessConfinement.d.ts.map +1 -0
  27. package/dist/cjs/ProcessConfinement.js +292 -0
  28. package/dist/cjs/ProcessConfinement.js.map +7 -0
  29. package/dist/cjs/ProcessReaper.d.ts +457 -0
  30. package/dist/cjs/ProcessReaper.d.ts.map +1 -0
  31. package/dist/cjs/ProcessReaper.js +349 -0
  32. package/dist/cjs/ProcessReaper.js.map +7 -0
  33. package/dist/cjs/ProcessSandbox.d.ts +391 -0
  34. package/dist/cjs/ProcessSandbox.d.ts.map +1 -0
  35. package/dist/cjs/ProcessSandbox.js +774 -0
  36. package/dist/cjs/ProcessSandbox.js.map +7 -0
  37. package/dist/cjs/ScopedProcess.d.ts +66 -0
  38. package/dist/cjs/ScopedProcess.d.ts.map +1 -0
  39. package/dist/cjs/ScopedProcess.js +87 -0
  40. package/dist/cjs/ScopedProcess.js.map +7 -0
  41. package/dist/cjs/index.d.ts +38 -0
  42. package/dist/cjs/index.d.ts.map +1 -0
  43. package/dist/cjs/index.js +47 -0
  44. package/dist/cjs/index.js.map +7 -0
  45. package/dist/cjs/internal/AtomicFileSystemExecutable.d.ts +61 -0
  46. package/dist/cjs/internal/AtomicFileSystemExecutable.d.ts.map +1 -0
  47. package/dist/cjs/internal/AtomicFileSystemExecutable.js +250 -0
  48. package/dist/cjs/internal/AtomicFileSystemExecutable.js.map +7 -0
  49. package/dist/cjs/internal/AtomicFileSystemProtocol.d.ts +78 -0
  50. package/dist/cjs/internal/AtomicFileSystemProtocol.d.ts.map +1 -0
  51. package/dist/cjs/internal/AtomicFileSystemProtocol.js +382 -0
  52. package/dist/cjs/internal/AtomicFileSystemProtocol.js.map +7 -0
  53. package/dist/cjs/internal/AtomicFileSystemTransport.d.ts +44 -0
  54. package/dist/cjs/internal/AtomicFileSystemTransport.d.ts.map +1 -0
  55. package/dist/cjs/internal/AtomicFileSystemTransport.js +197 -0
  56. package/dist/cjs/internal/AtomicFileSystemTransport.js.map +7 -0
  57. package/dist/cjs/internal/AtomicHelperError.d.ts +35 -0
  58. package/dist/cjs/internal/AtomicHelperError.d.ts.map +1 -0
  59. package/dist/cjs/internal/AtomicHelperError.js +45 -0
  60. package/dist/cjs/internal/AtomicHelperError.js.map +7 -0
  61. package/dist/cjs/internal/AtomicHelperFault.d.ts +59 -0
  62. package/dist/cjs/internal/AtomicHelperFault.d.ts.map +1 -0
  63. package/dist/cjs/internal/AtomicHelperFault.js +66 -0
  64. package/dist/cjs/internal/AtomicHelperFault.js.map +7 -0
  65. package/dist/cjs/internal/PipedProcess.d.ts +35 -0
  66. package/dist/cjs/internal/PipedProcess.d.ts.map +1 -0
  67. package/dist/cjs/internal/PipedProcess.js +309 -0
  68. package/dist/cjs/internal/PipedProcess.js.map +7 -0
  69. package/dist/cjs/internal/ProcSnapshot.d.ts +85 -0
  70. package/dist/cjs/internal/ProcSnapshot.d.ts.map +1 -0
  71. package/dist/cjs/internal/ProcSnapshot.js +123 -0
  72. package/dist/cjs/internal/ProcSnapshot.js.map +7 -0
  73. package/dist/cjs/internal/ProcessCleanup.d.ts +64 -0
  74. package/dist/cjs/internal/ProcessCleanup.d.ts.map +1 -0
  75. package/dist/cjs/internal/ProcessCleanup.js +62 -0
  76. package/dist/cjs/internal/ProcessCleanup.js.map +7 -0
  77. package/dist/cjs/internal/ProcessCleanupPolicyError.d.ts +30 -0
  78. package/dist/cjs/internal/ProcessCleanupPolicyError.d.ts.map +1 -0
  79. package/dist/cjs/internal/ProcessCleanupPolicyError.js +33 -0
  80. package/dist/cjs/internal/ProcessCleanupPolicyError.js.map +7 -0
  81. package/dist/cjs/internal/ProcessFault.d.ts +63 -0
  82. package/dist/cjs/internal/ProcessFault.d.ts.map +1 -0
  83. package/dist/cjs/internal/ProcessFault.js +63 -0
  84. package/dist/cjs/internal/ProcessFault.js.map +7 -0
  85. package/dist/cjs/internal/ProcessSupervisor.d.ts +143 -0
  86. package/dist/cjs/internal/ProcessSupervisor.d.ts.map +1 -0
  87. package/dist/cjs/internal/ProcessSupervisor.js +685 -0
  88. package/dist/cjs/internal/ProcessSupervisor.js.map +7 -0
  89. package/dist/cjs/internal/SupervisorProgram.d.ts +9 -0
  90. package/dist/cjs/internal/SupervisorProgram.d.ts.map +1 -0
  91. package/dist/cjs/internal/SupervisorProgram.js +326 -0
  92. package/dist/cjs/internal/SupervisorProgram.js.map +7 -0
  93. package/dist/cjs/internal/WindowsProcessJob.d.ts +39 -0
  94. package/dist/cjs/internal/WindowsProcessJob.d.ts.map +1 -0
  95. package/dist/cjs/internal/WindowsProcessJob.js +113 -0
  96. package/dist/cjs/internal/WindowsProcessJob.js.map +7 -0
  97. package/dist/cjs/package.json +1 -0
  98. package/dist/esm/AtomicFileSystem.d.ts +147 -0
  99. package/dist/esm/AtomicFileSystem.d.ts.map +1 -0
  100. package/dist/esm/AtomicFileSystem.js +290 -0
  101. package/dist/esm/AtomicFileSystem.js.map +1 -0
  102. package/dist/esm/EgressHttpClient.d.ts +106 -0
  103. package/dist/esm/EgressHttpClient.d.ts.map +1 -0
  104. package/dist/esm/EgressHttpClient.js +259 -0
  105. package/dist/esm/EgressHttpClient.js.map +1 -0
  106. package/dist/esm/HostLiveness.d.ts +81 -0
  107. package/dist/esm/HostLiveness.d.ts.map +1 -0
  108. package/dist/esm/HostLiveness.js +68 -0
  109. package/dist/esm/HostLiveness.js.map +1 -0
  110. package/dist/esm/NodeHost.d.ts +145 -0
  111. package/dist/esm/NodeHost.d.ts.map +1 -0
  112. package/dist/esm/NodeHost.js +162 -0
  113. package/dist/esm/NodeHost.js.map +1 -0
  114. package/dist/esm/ProcessConfinement.d.ts +61 -0
  115. package/dist/esm/ProcessConfinement.d.ts.map +1 -0
  116. package/dist/esm/ProcessConfinement.js +311 -0
  117. package/dist/esm/ProcessConfinement.js.map +1 -0
  118. package/dist/esm/ProcessReaper.d.ts +457 -0
  119. package/dist/esm/ProcessReaper.d.ts.map +1 -0
  120. package/dist/esm/ProcessReaper.js +711 -0
  121. package/dist/esm/ProcessReaper.js.map +1 -0
  122. package/dist/esm/ProcessSandbox.d.ts +391 -0
  123. package/dist/esm/ProcessSandbox.d.ts.map +1 -0
  124. package/dist/esm/ProcessSandbox.js +1043 -0
  125. package/dist/esm/ProcessSandbox.js.map +1 -0
  126. package/dist/esm/ScopedProcess.d.ts +66 -0
  127. package/dist/esm/ScopedProcess.d.ts.map +1 -0
  128. package/dist/esm/ScopedProcess.js +67 -0
  129. package/dist/esm/ScopedProcess.js.map +1 -0
  130. package/dist/esm/index.d.ts +38 -0
  131. package/dist/esm/index.d.ts.map +1 -0
  132. package/dist/esm/index.js +38 -0
  133. package/dist/esm/index.js.map +1 -0
  134. package/dist/esm/internal/AtomicFileSystemExecutable.d.ts +61 -0
  135. package/dist/esm/internal/AtomicFileSystemExecutable.d.ts.map +1 -0
  136. package/dist/esm/internal/AtomicFileSystemExecutable.js +350 -0
  137. package/dist/esm/internal/AtomicFileSystemExecutable.js.map +1 -0
  138. package/dist/esm/internal/AtomicFileSystemProtocol.d.ts +78 -0
  139. package/dist/esm/internal/AtomicFileSystemProtocol.d.ts.map +1 -0
  140. package/dist/esm/internal/AtomicFileSystemProtocol.js +412 -0
  141. package/dist/esm/internal/AtomicFileSystemProtocol.js.map +1 -0
  142. package/dist/esm/internal/AtomicFileSystemTransport.d.ts +44 -0
  143. package/dist/esm/internal/AtomicFileSystemTransport.d.ts.map +1 -0
  144. package/dist/esm/internal/AtomicFileSystemTransport.js +242 -0
  145. package/dist/esm/internal/AtomicFileSystemTransport.js.map +1 -0
  146. package/dist/esm/internal/AtomicHelperError.d.ts +35 -0
  147. package/dist/esm/internal/AtomicHelperError.d.ts.map +1 -0
  148. package/dist/esm/internal/AtomicHelperError.js +39 -0
  149. package/dist/esm/internal/AtomicHelperError.js.map +1 -0
  150. package/dist/esm/internal/AtomicHelperFault.d.ts +59 -0
  151. package/dist/esm/internal/AtomicHelperFault.d.ts.map +1 -0
  152. package/dist/esm/internal/AtomicHelperFault.js +66 -0
  153. package/dist/esm/internal/AtomicHelperFault.js.map +1 -0
  154. package/dist/esm/internal/PipedProcess.d.ts +35 -0
  155. package/dist/esm/internal/PipedProcess.d.ts.map +1 -0
  156. package/dist/esm/internal/PipedProcess.js +321 -0
  157. package/dist/esm/internal/PipedProcess.js.map +1 -0
  158. package/dist/esm/internal/ProcSnapshot.d.ts +85 -0
  159. package/dist/esm/internal/ProcSnapshot.d.ts.map +1 -0
  160. package/dist/esm/internal/ProcSnapshot.js +188 -0
  161. package/dist/esm/internal/ProcSnapshot.js.map +1 -0
  162. package/dist/esm/internal/ProcessCleanup.d.ts +64 -0
  163. package/dist/esm/internal/ProcessCleanup.d.ts.map +1 -0
  164. package/dist/esm/internal/ProcessCleanup.js +45 -0
  165. package/dist/esm/internal/ProcessCleanup.js.map +1 -0
  166. package/dist/esm/internal/ProcessCleanupPolicyError.d.ts +30 -0
  167. package/dist/esm/internal/ProcessCleanupPolicyError.d.ts.map +1 -0
  168. package/dist/esm/internal/ProcessCleanupPolicyError.js +25 -0
  169. package/dist/esm/internal/ProcessCleanupPolicyError.js.map +1 -0
  170. package/dist/esm/internal/ProcessFault.d.ts +63 -0
  171. package/dist/esm/internal/ProcessFault.d.ts.map +1 -0
  172. package/dist/esm/internal/ProcessFault.js +64 -0
  173. package/dist/esm/internal/ProcessFault.js.map +1 -0
  174. package/dist/esm/internal/ProcessSupervisor.d.ts +143 -0
  175. package/dist/esm/internal/ProcessSupervisor.d.ts.map +1 -0
  176. package/dist/esm/internal/ProcessSupervisor.js +689 -0
  177. package/dist/esm/internal/ProcessSupervisor.js.map +1 -0
  178. package/dist/esm/internal/SupervisorProgram.d.ts +9 -0
  179. package/dist/esm/internal/SupervisorProgram.d.ts.map +1 -0
  180. package/dist/esm/internal/SupervisorProgram.js +310 -0
  181. package/dist/esm/internal/SupervisorProgram.js.map +1 -0
  182. package/dist/esm/internal/WindowsProcessJob.d.ts +39 -0
  183. package/dist/esm/internal/WindowsProcessJob.d.ts.map +1 -0
  184. package/dist/esm/internal/WindowsProcessJob.js +115 -0
  185. package/dist/esm/internal/WindowsProcessJob.js.map +1 -0
  186. package/dist/vendor/adapters.json +1757 -0
  187. package/dist/vendor/chunk-2Y7WC4KU.js +109 -0
  188. package/dist/vendor/chunk-3GR5VZ2M.js +118 -0
  189. package/dist/vendor/chunk-42QKY6T6.js +40 -0
  190. package/dist/vendor/chunk-54RLBMTZ.js +61 -0
  191. package/dist/vendor/chunk-5ZMHBXIK.js +55 -0
  192. package/dist/vendor/chunk-6ME2W7TF.js +28 -0
  193. package/dist/vendor/chunk-AMQKOQNT.js +34 -0
  194. package/dist/vendor/chunk-B3FZ67QU.js +59 -0
  195. package/dist/vendor/chunk-BKTBUBQY.js +437 -0
  196. package/dist/vendor/chunk-DS7GF46S.js +34 -0
  197. package/dist/vendor/chunk-DVOAHXPG.js +104 -0
  198. package/dist/vendor/chunk-DWSHTSVX.js +229 -0
  199. package/dist/vendor/chunk-EGBNVEEW.js +14 -0
  200. package/dist/vendor/chunk-EZWY45HP.js +18 -0
  201. package/dist/vendor/chunk-FNZOJHSV.js +71 -0
  202. package/dist/vendor/chunk-GXCHI7BM.js +131 -0
  203. package/dist/vendor/chunk-IIJ52ZU6.js +20 -0
  204. package/dist/vendor/chunk-J7A4CZDO.js +92 -0
  205. package/dist/vendor/chunk-JG5TTWPT.js +85 -0
  206. package/dist/vendor/chunk-JJ24ARBQ.js +394 -0
  207. package/dist/vendor/chunk-KOZMM5PZ.js +426 -0
  208. package/dist/vendor/chunk-KUUXSID7.js +18 -0
  209. package/dist/vendor/chunk-LEUPYT3Q.js +36 -0
  210. package/dist/vendor/chunk-M32LDTW7.js +18 -0
  211. package/dist/vendor/chunk-M7CLUILA.js +0 -0
  212. package/dist/vendor/chunk-MBSKBQ5D.js +21 -0
  213. package/dist/vendor/chunk-MLKGABMK.js +9 -0
  214. package/dist/vendor/chunk-NBVRTDTV.js +129 -0
  215. package/dist/vendor/chunk-OXNGN5H7.js +81 -0
  216. package/dist/vendor/chunk-QPLDT6A6.js +564 -0
  217. package/dist/vendor/chunk-QYBKAIA6.js +18 -0
  218. package/dist/vendor/chunk-RO2R4MJH.js +62 -0
  219. package/dist/vendor/chunk-SIR62W3Y.js +398 -0
  220. package/dist/vendor/chunk-TFIKFFSC.js +26 -0
  221. package/dist/vendor/chunk-TXKLEBBL.js +143 -0
  222. package/dist/vendor/chunk-UFH5UUZK.js +48 -0
  223. package/dist/vendor/chunk-VANKHF46.js +96 -0
  224. package/dist/vendor/chunk-VZBDV3TV.js +18 -0
  225. package/dist/vendor/chunk-XDKNKFBW.js +22 -0
  226. package/dist/vendor/chunk-XH4U3JSV.js +249 -0
  227. package/dist/vendor/chunk-Y35ZAO5U.js +53 -0
  228. package/dist/vendor/chunk-ZJMRMY57.js +0 -0
  229. package/dist/vendor/cjs/node/NodeChildProcessSpawner.d.ts +7 -0
  230. package/dist/vendor/cjs/node/NodeChildProcessSpawner.js +1 -0
  231. package/dist/vendor/cjs/node/NodeClusterHttp.d.ts +63 -0
  232. package/dist/vendor/cjs/node/NodeClusterHttp.js +1 -0
  233. package/dist/vendor/cjs/node/NodeClusterSocket.d.ts +79 -0
  234. package/dist/vendor/cjs/node/NodeClusterSocket.js +1 -0
  235. package/dist/vendor/cjs/node/NodeCrypto.d.ts +10 -0
  236. package/dist/vendor/cjs/node/NodeCrypto.js +1 -0
  237. package/dist/vendor/cjs/node/NodeFileSystem.d.ts +10 -0
  238. package/dist/vendor/cjs/node/NodeFileSystem.js +1 -0
  239. package/dist/vendor/cjs/node/NodeHttpClient.d.ts +179 -0
  240. package/dist/vendor/cjs/node/NodeHttpClient.js +1 -0
  241. package/dist/vendor/cjs/node/NodeHttpIncomingMessage.d.ts +62 -0
  242. package/dist/vendor/cjs/node/NodeHttpIncomingMessage.js +1 -0
  243. package/dist/vendor/cjs/node/NodeHttpPlatform.d.ts +36 -0
  244. package/dist/vendor/cjs/node/NodeHttpPlatform.js +1 -0
  245. package/dist/vendor/cjs/node/NodeHttpServer.d.ts +120 -0
  246. package/dist/vendor/cjs/node/NodeHttpServer.js +1 -0
  247. package/dist/vendor/cjs/node/NodeHttpServerRequest.d.ts +29 -0
  248. package/dist/vendor/cjs/node/NodeHttpServerRequest.js +1 -0
  249. package/dist/vendor/cjs/node/NodeMultipart.d.ts +46 -0
  250. package/dist/vendor/cjs/node/NodeMultipart.js +1 -0
  251. package/dist/vendor/cjs/node/NodeMultipartParser.d.ts +97 -0
  252. package/dist/vendor/cjs/node/NodeMultipartParser.js +1 -0
  253. package/dist/vendor/cjs/node/NodePath.d.ts +27 -0
  254. package/dist/vendor/cjs/node/NodePath.js +1 -0
  255. package/dist/vendor/cjs/node/NodeRedis.d.ts +74 -0
  256. package/dist/vendor/cjs/node/NodeRedis.js +1 -0
  257. package/dist/vendor/cjs/node/NodeRuntime.d.ts +85 -0
  258. package/dist/vendor/cjs/node/NodeRuntime.js +1 -0
  259. package/dist/vendor/cjs/node/NodeServices.d.ts +34 -0
  260. package/dist/vendor/cjs/node/NodeServices.js +1 -0
  261. package/dist/vendor/cjs/node/NodeSink.d.ts +8 -0
  262. package/dist/vendor/cjs/node/NodeSink.js +1 -0
  263. package/dist/vendor/cjs/node/NodeSocket.d.ts +38 -0
  264. package/dist/vendor/cjs/node/NodeSocket.js +1 -0
  265. package/dist/vendor/cjs/node/NodeSocketServer.d.ts +8 -0
  266. package/dist/vendor/cjs/node/NodeSocketServer.js +1 -0
  267. package/dist/vendor/cjs/node/NodeStdio.d.ts +11 -0
  268. package/dist/vendor/cjs/node/NodeStdio.js +1 -0
  269. package/dist/vendor/cjs/node/NodeStream.d.ts +8 -0
  270. package/dist/vendor/cjs/node/NodeStream.js +1 -0
  271. package/dist/vendor/cjs/node/NodeTerminal.d.ts +21 -0
  272. package/dist/vendor/cjs/node/NodeTerminal.js +1 -0
  273. package/dist/vendor/cjs/node/NodeWorker.d.ts +22 -0
  274. package/dist/vendor/cjs/node/NodeWorker.js +1 -0
  275. package/dist/vendor/cjs/node/NodeWorkerRunner.d.ts +12 -0
  276. package/dist/vendor/cjs/node/NodeWorkerRunner.js +1 -0
  277. package/dist/vendor/cjs/node/Undici.d.ts +28 -0
  278. package/dist/vendor/cjs/node/Undici.js +1 -0
  279. package/dist/vendor/cjs/node/index.d.ts +100 -0
  280. package/dist/vendor/cjs/node/index.js +1 -0
  281. package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.d.ts +57 -0
  282. package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.js +1 -0
  283. package/dist/vendor/cjs/node-shared/NodeClusterSocket.d.ts +22 -0
  284. package/dist/vendor/cjs/node-shared/NodeClusterSocket.js +1 -0
  285. package/dist/vendor/cjs/node-shared/NodeCrypto.d.ts +27 -0
  286. package/dist/vendor/cjs/node-shared/NodeCrypto.js +1 -0
  287. package/dist/vendor/cjs/node-shared/NodeFileSystem.d.ts +11 -0
  288. package/dist/vendor/cjs/node-shared/NodeFileSystem.js +1 -0
  289. package/dist/vendor/cjs/node-shared/NodeHttpCompression.d.ts +36 -0
  290. package/dist/vendor/cjs/node-shared/NodeHttpCompression.js +1 -0
  291. package/dist/vendor/cjs/node-shared/NodePath.d.ts +27 -0
  292. package/dist/vendor/cjs/node-shared/NodePath.js +1 -0
  293. package/dist/vendor/cjs/node-shared/NodeRuntime.d.ts +47 -0
  294. package/dist/vendor/cjs/node-shared/NodeRuntime.js +1 -0
  295. package/dist/vendor/cjs/node-shared/NodeSink.d.ts +69 -0
  296. package/dist/vendor/cjs/node-shared/NodeSink.js +1 -0
  297. package/dist/vendor/cjs/node-shared/NodeSocket.d.ts +134 -0
  298. package/dist/vendor/cjs/node-shared/NodeSocket.js +1 -0
  299. package/dist/vendor/cjs/node-shared/NodeSocketServer.d.ts +80 -0
  300. package/dist/vendor/cjs/node-shared/NodeSocketServer.js +1 -0
  301. package/dist/vendor/cjs/node-shared/NodeStdio.d.ts +12 -0
  302. package/dist/vendor/cjs/node-shared/NodeStdio.js +1 -0
  303. package/dist/vendor/cjs/node-shared/NodeStream.d.ts +179 -0
  304. package/dist/vendor/cjs/node-shared/NodeStream.js +1 -0
  305. package/dist/vendor/cjs/node-shared/NodeTerminal.d.ts +22 -0
  306. package/dist/vendor/cjs/node-shared/NodeTerminal.js +1 -0
  307. package/dist/vendor/cjs/node-shared/index.d.ts +56 -0
  308. package/dist/vendor/cjs/node-shared/index.js +1 -0
  309. package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
  310. package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.js +1 -0
  311. package/dist/vendor/cjs/node-shared/internal/utils.d.ts +2 -0
  312. package/dist/vendor/cjs/node-shared/internal/utils.js +1 -0
  313. package/dist/vendor/cjs/package.json +1 -0
  314. package/dist/vendor/cjs/platform-node-shared.d.ts +56 -0
  315. package/dist/vendor/cjs/platform-node-shared.js +1 -0
  316. package/dist/vendor/cjs/platform-node.d.ts +100 -0
  317. package/dist/vendor/cjs/platform-node.js +1 -0
  318. package/dist/vendor/node/LICENSE +21 -0
  319. package/dist/vendor/node/NodeChildProcessSpawner.d.ts +7 -0
  320. package/dist/vendor/node/NodeChildProcessSpawner.js +14 -0
  321. package/dist/vendor/node/NodeClusterHttp.d.ts +63 -0
  322. package/dist/vendor/node/NodeClusterHttp.js +43 -0
  323. package/dist/vendor/node/NodeClusterSocket.d.ts +79 -0
  324. package/dist/vendor/node/NodeClusterSocket.js +30 -0
  325. package/dist/vendor/node/NodeCrypto.d.ts +10 -0
  326. package/dist/vendor/node/NodeCrypto.js +8 -0
  327. package/dist/vendor/node/NodeFileSystem.d.ts +10 -0
  328. package/dist/vendor/node/NodeFileSystem.js +9 -0
  329. package/dist/vendor/node/NodeHttpClient.d.ts +179 -0
  330. package/dist/vendor/node/NodeHttpClient.js +46 -0
  331. package/dist/vendor/node/NodeHttpIncomingMessage.d.ts +62 -0
  332. package/dist/vendor/node/NodeHttpIncomingMessage.js +10 -0
  333. package/dist/vendor/node/NodeHttpPlatform.d.ts +36 -0
  334. package/dist/vendor/node/NodeHttpPlatform.js +16 -0
  335. package/dist/vendor/node/NodeHttpServer.d.ts +120 -0
  336. package/dist/vendor/node/NodeHttpServer.js +46 -0
  337. package/dist/vendor/node/NodeHttpServerRequest.d.ts +29 -0
  338. package/dist/vendor/node/NodeHttpServerRequest.js +9 -0
  339. package/dist/vendor/node/NodeMultipart.d.ts +46 -0
  340. package/dist/vendor/node/NodeMultipart.js +15 -0
  341. package/dist/vendor/node/NodeMultipartParser.d.ts +97 -0
  342. package/dist/vendor/node/NodeMultipartParser.js +11 -0
  343. package/dist/vendor/node/NodePath.d.ts +27 -0
  344. package/dist/vendor/node/NodePath.js +12 -0
  345. package/dist/vendor/node/NodeRedis.d.ts +74 -0
  346. package/dist/vendor/node/NodeRedis.js +11 -0
  347. package/dist/vendor/node/NodeRuntime.d.ts +85 -0
  348. package/dist/vendor/node/NodeRuntime.js +8 -0
  349. package/dist/vendor/node/NodeServices.d.ts +34 -0
  350. package/dist/vendor/node/NodeServices.js +23 -0
  351. package/dist/vendor/node/NodeSink.d.ts +8 -0
  352. package/dist/vendor/node/NodeSink.js +12 -0
  353. package/dist/vendor/node/NodeSocket.d.ts +38 -0
  354. package/dist/vendor/node/NodeSocket.js +31 -0
  355. package/dist/vendor/node/NodeSocketServer.d.ts +8 -0
  356. package/dist/vendor/node/NodeSocketServer.js +21 -0
  357. package/dist/vendor/node/NodeStdio.d.ts +11 -0
  358. package/dist/vendor/node/NodeStdio.js +10 -0
  359. package/dist/vendor/node/NodeStream.d.ts +8 -0
  360. package/dist/vendor/node/NodeStream.js +27 -0
  361. package/dist/vendor/node/NodeTerminal.d.ts +21 -0
  362. package/dist/vendor/node/NodeTerminal.js +10 -0
  363. package/dist/vendor/node/NodeWorker.d.ts +22 -0
  364. package/dist/vendor/node/NodeWorker.js +9 -0
  365. package/dist/vendor/node/NodeWorkerRunner.d.ts +12 -0
  366. package/dist/vendor/node/NodeWorkerRunner.js +7 -0
  367. package/dist/vendor/node/Undici.d.ts +28 -0
  368. package/dist/vendor/node/Undici.js +9 -0
  369. package/dist/vendor/node/index.d.ts +100 -0
  370. package/dist/vendor/node/index.js +115 -0
  371. package/dist/vendor/node-shared/LICENSE +21 -0
  372. package/dist/vendor/node-shared/NodeChildProcessSpawner.d.ts +57 -0
  373. package/dist/vendor/node-shared/NodeChildProcessSpawner.js +13 -0
  374. package/dist/vendor/node-shared/NodeClusterSocket.d.ts +22 -0
  375. package/dist/vendor/node-shared/NodeClusterSocket.js +11 -0
  376. package/dist/vendor/node-shared/NodeCrypto.d.ts +27 -0
  377. package/dist/vendor/node-shared/NodeCrypto.js +9 -0
  378. package/dist/vendor/node-shared/NodeFileSystem.d.ts +11 -0
  379. package/dist/vendor/node-shared/NodeFileSystem.js +8 -0
  380. package/dist/vendor/node-shared/NodeHttpCompression.d.ts +36 -0
  381. package/dist/vendor/node-shared/NodeHttpCompression.js +13 -0
  382. package/dist/vendor/node-shared/NodePath.d.ts +27 -0
  383. package/dist/vendor/node-shared/NodePath.js +11 -0
  384. package/dist/vendor/node-shared/NodeRuntime.d.ts +47 -0
  385. package/dist/vendor/node-shared/NodeRuntime.js +7 -0
  386. package/dist/vendor/node-shared/NodeSink.d.ts +69 -0
  387. package/dist/vendor/node-shared/NodeSink.js +11 -0
  388. package/dist/vendor/node-shared/NodeSocket.d.ts +134 -0
  389. package/dist/vendor/node-shared/NodeSocket.js +23 -0
  390. package/dist/vendor/node-shared/NodeSocketServer.d.ts +80 -0
  391. package/dist/vendor/node-shared/NodeSocketServer.js +20 -0
  392. package/dist/vendor/node-shared/NodeStdio.d.ts +12 -0
  393. package/dist/vendor/node-shared/NodeStdio.js +9 -0
  394. package/dist/vendor/node-shared/NodeStream.d.ts +179 -0
  395. package/dist/vendor/node-shared/NodeStream.js +26 -0
  396. package/dist/vendor/node-shared/NodeTerminal.d.ts +22 -0
  397. package/dist/vendor/node-shared/NodeTerminal.js +9 -0
  398. package/dist/vendor/node-shared/index.d.ts +56 -0
  399. package/dist/vendor/node-shared/index.js +58 -0
  400. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
  401. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.js +7 -0
  402. package/dist/vendor/node-shared/internal/utils.d.ts +2 -0
  403. package/dist/vendor/node-shared/internal/utils.js +7 -0
  404. package/dist/vendor/platform-node-shared.d.ts +56 -0
  405. package/dist/vendor/platform-node-shared.js +58 -0
  406. package/dist/vendor/platform-node.d.ts +100 -0
  407. package/dist/vendor/platform-node.js +115 -0
  408. package/docs/README.md +129 -0
  409. package/docs/api.md +553 -0
  410. package/docs/concepts/descriptor-relative-filesystem.md +181 -0
  411. package/docs/concepts/host-bundle.md +125 -0
  412. package/docs/concepts/process-containment.md +190 -0
  413. package/docs/guides/answer-run-ownership.md +87 -0
  414. package/docs/guides/configure-the-filesystem-helper.md +152 -0
  415. package/docs/guides/contain-child-processes.md +139 -0
  416. package/docs/guides/match-files-with-glob.md +151 -0
  417. package/docs/installation.md +204 -0
  418. package/docs/quickstart.md +147 -0
  419. package/docs/troubleshooting.md +130 -0
  420. package/package.json +202 -3
  421. package/src/AtomicFileSystem.ts +415 -0
  422. package/src/EgressHttpClient.ts +327 -0
  423. package/src/HostLiveness.ts +103 -0
  424. package/src/NodeHost.ts +253 -0
  425. package/src/ProcessConfinement.ts +363 -0
  426. package/src/ProcessReaper.ts +951 -0
  427. package/src/ProcessSandbox.ts +1307 -0
  428. package/src/ScopedProcess.ts +124 -0
  429. package/src/index.ts +44 -0
  430. package/src/internal/AtomicFileSystemExecutable.ts +379 -0
  431. package/src/internal/AtomicFileSystemProtocol.ts +502 -0
  432. package/src/internal/AtomicFileSystemTransport.ts +272 -0
  433. package/src/internal/AtomicHelperError.ts +50 -0
  434. package/src/internal/AtomicHelperFault.ts +84 -0
  435. package/src/internal/PipedProcess.ts +357 -0
  436. package/src/internal/ProcSnapshot.ts +193 -0
  437. package/src/internal/ProcessCleanup.ts +99 -0
  438. package/src/internal/ProcessCleanupPolicyError.ts +30 -0
  439. package/src/internal/ProcessFault.ts +82 -0
  440. package/src/internal/ProcessSupervisor.ts +807 -0
  441. package/src/internal/SupervisorProgram.ts +309 -0
  442. package/src/internal/WindowsProcessJob.ts +114 -0
@@ -0,0 +1,81 @@
1
+ import {
2
+ __export
3
+ } from "./chunk-MLKGABMK.js";
4
+
5
+ // ../../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-rc.115_effect@4.0.0-rc.115/node_modules/@effect/platform-node-shared/dist/NodeSink.js
6
+ var NodeSink_exports = {};
7
+ __export(NodeSink_exports, {
8
+ fromWritable: () => fromWritable,
9
+ fromWritableChannel: () => fromWritableChannel,
10
+ pullIntoWritable: () => pullIntoWritable
11
+ });
12
+ import * as Cause from "effect/Cause";
13
+ import * as Channel from "effect/Channel";
14
+ import * as Effect from "effect/Effect";
15
+ import { identity } from "effect/Function";
16
+ import * as Pull from "effect/Pull";
17
+ import * as Sink from "effect/Sink";
18
+ var fromWritable = (options) => Sink.fromChannel(Channel.mapDone(fromWritableChannel(options), (_) => [_]));
19
+ var fromWritableChannel = (options) => Channel.fromTransform((pull) => {
20
+ const writable = options.evaluate();
21
+ return Effect.succeed(pullIntoWritable({
22
+ ...options,
23
+ writable,
24
+ pull
25
+ }));
26
+ });
27
+ var pullIntoWritable = (options) => options.pull.pipe(Effect.flatMap((chunk) => {
28
+ let i = 0;
29
+ return Effect.callback((resume) => {
30
+ let cancelled = false;
31
+ const loop = () => {
32
+ for (; i < chunk.length; ) {
33
+ if (cancelled) {
34
+ return;
35
+ }
36
+ const success = options.writable.write(chunk[i++], options.encoding);
37
+ if (!success) {
38
+ if (!cancelled) {
39
+ options.writable.once("drain", loop);
40
+ }
41
+ return;
42
+ }
43
+ }
44
+ if (!cancelled) {
45
+ resume(Effect.void);
46
+ }
47
+ };
48
+ loop();
49
+ return Effect.sync(() => {
50
+ cancelled = true;
51
+ options.writable.off("drain", loop);
52
+ });
53
+ });
54
+ }), Effect.forever({
55
+ disableYield: true
56
+ }), options.endOnDone !== false ? Pull.catchDone((_) => {
57
+ if ("closed" in options.writable && options.writable.closed) {
58
+ return Cause.done(_);
59
+ }
60
+ return Effect.callback((resume) => {
61
+ const onFinish = () => resume(Cause.done(_));
62
+ options.writable.once("finish", onFinish);
63
+ options.writable.end();
64
+ return Effect.sync(() => {
65
+ options.writable.off("finish", onFinish);
66
+ });
67
+ });
68
+ }) : identity, Effect.raceFirst(Effect.callback((resume) => {
69
+ const onError = (error) => resume(Effect.fail(options.onError(error)));
70
+ options.writable.once("error", onError);
71
+ return Effect.sync(() => {
72
+ options.writable.off("error", onError);
73
+ });
74
+ })));
75
+
76
+ export {
77
+ fromWritable,
78
+ fromWritableChannel,
79
+ pullIntoWritable,
80
+ NodeSink_exports
81
+ };
@@ -0,0 +1,564 @@
1
+ import {
2
+ buildSpawnOptions
3
+ } from "./chunk-EGBNVEEW.js";
4
+ import {
5
+ handleErrnoException
6
+ } from "./chunk-42QKY6T6.js";
7
+ import {
8
+ fromReadable
9
+ } from "./chunk-XH4U3JSV.js";
10
+ import {
11
+ fromWritable
12
+ } from "./chunk-OXNGN5H7.js";
13
+ import {
14
+ __export
15
+ } from "./chunk-MLKGABMK.js";
16
+
17
+ // ../../../../node_modules/.pnpm/@effect+platform-node-shared@4.0.0-rc.115_effect@4.0.0-rc.115/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js
18
+ var NodeChildProcessSpawner_exports = {};
19
+ __export(NodeChildProcessSpawner_exports, {
20
+ flattenCommand: () => flattenCommand,
21
+ layer: () => layer
22
+ });
23
+ import * as Deferred from "effect/Deferred";
24
+ import * as Duration from "effect/Duration";
25
+ import * as Effect from "effect/Effect";
26
+ import * as Exit from "effect/Exit";
27
+ import * as FileSystem from "effect/FileSystem";
28
+ import * as Layer from "effect/Layer";
29
+ import * as Path from "effect/Path";
30
+ import * as Predicate from "effect/Predicate";
31
+ import * as Sink from "effect/Sink";
32
+ import * as Stream from "effect/Stream";
33
+ import * as ChildProcess from "effect/unstable/process/ChildProcess";
34
+ import { ChildProcessSpawner, ExitCode, make as makeSpawner, makeHandle, ProcessId } from "effect/unstable/process/ChildProcessSpawner";
35
+ import * as NodeChildProcess from "node:child_process";
36
+ import { PassThrough } from "node:stream";
37
+ var toError = (error) => error instanceof globalThis.Error ? error : new globalThis.Error(String(error));
38
+ var toPlatformError = (method, error, command) => {
39
+ const {
40
+ commands
41
+ } = flattenCommand(command);
42
+ const commandStr = commands.reduce((acc, curr) => {
43
+ const cmd = `${curr.command} ${curr.args.join(" ")}`;
44
+ return acc.length === 0 ? cmd : `${acc} | ${cmd}`;
45
+ }, "");
46
+ return handleErrnoException("ChildProcess", method)(error, [commandStr]);
47
+ };
48
+ var processGroupGraceMillis = 1e3;
49
+ var processGroupPollIntervalMillis = 10;
50
+ var isProcessAlive = (childProcess, exitSignal) => {
51
+ if (!Deferred.isDoneUnsafe(exitSignal)) {
52
+ return true;
53
+ }
54
+ if (globalThis.process.platform === "win32") {
55
+ return false;
56
+ }
57
+ try {
58
+ globalThis.process.kill(-childProcess.pid, 0);
59
+ return true;
60
+ } catch {
61
+ return false;
62
+ }
63
+ };
64
+ var taskkill = (childProcess, onExit = () => {
65
+ }) => NodeChildProcess.execFile("taskkill", ["/pid", String(childProcess.pid), "/T", "/F"], {
66
+ windowsHide: true
67
+ }, onExit);
68
+ var make2 = /* @__PURE__ */ Effect.gen(function* () {
69
+ const fs = yield* FileSystem.FileSystem;
70
+ const path = yield* Path.Path;
71
+ const resolveWorkingDirectory = Effect.fnUntraced(function* (options) {
72
+ if (Predicate.isUndefined(options.cwd)) return void 0;
73
+ yield* fs.access(options.cwd);
74
+ return path.resolve(options.cwd);
75
+ });
76
+ const resolveEnvironment = (options) => {
77
+ return options.extendEnv ? {
78
+ ...globalThis.process.env,
79
+ ...options.env
80
+ } : options.env;
81
+ };
82
+ const inputToStdioOption = (input) => Stream.isStream(input) ? "pipe" : input;
83
+ const outputToStdioOption = (input) => Sink.isSink(input) ? "pipe" : input;
84
+ const resolveStdinOption = (options) => {
85
+ const defaultConfig = {
86
+ stream: "pipe",
87
+ encoding: "utf-8",
88
+ endOnDone: true
89
+ };
90
+ if (Predicate.isUndefined(options.stdin)) {
91
+ return defaultConfig;
92
+ }
93
+ if (typeof options.stdin === "string") {
94
+ return {
95
+ ...defaultConfig,
96
+ stream: options.stdin
97
+ };
98
+ }
99
+ if (Stream.isStream(options.stdin)) {
100
+ return {
101
+ ...defaultConfig,
102
+ stream: options.stdin
103
+ };
104
+ }
105
+ return {
106
+ stream: options.stdin.stream,
107
+ encoding: options.stdin.encoding ?? defaultConfig.encoding,
108
+ endOnDone: options.stdin.endOnDone ?? defaultConfig.endOnDone
109
+ };
110
+ };
111
+ const resolveOutputOption = (options, streamName) => {
112
+ const option = options[streamName];
113
+ if (Predicate.isUndefined(option)) {
114
+ return {
115
+ stream: "pipe"
116
+ };
117
+ }
118
+ if (typeof option === "string") {
119
+ return {
120
+ stream: option
121
+ };
122
+ }
123
+ if (Sink.isSink(option)) {
124
+ return {
125
+ stream: option
126
+ };
127
+ }
128
+ return {
129
+ stream: option.stream
130
+ };
131
+ };
132
+ const resolveAdditionalFds = (options) => {
133
+ if (Predicate.isUndefined(options.additionalFds)) {
134
+ return [];
135
+ }
136
+ const result = [];
137
+ for (const [name, config] of Object.entries(options.additionalFds)) {
138
+ const fd = ChildProcess.parseFdName(name);
139
+ if (Predicate.isNotUndefined(fd)) {
140
+ result.push({
141
+ fd,
142
+ config
143
+ });
144
+ }
145
+ }
146
+ return result.sort((a, b) => a.fd - b.fd);
147
+ };
148
+ const buildStdioArray = (stdinConfig, stdoutConfig, stderrConfig, additionalFds) => {
149
+ const stdio = [inputToStdioOption(stdinConfig.stream), outputToStdioOption(stdoutConfig.stream), outputToStdioOption(stderrConfig.stream)];
150
+ if (additionalFds.length === 0) {
151
+ return stdio;
152
+ }
153
+ const maxFd = additionalFds.reduce((max, {
154
+ fd
155
+ }) => Math.max(max, fd), 2);
156
+ for (let i = 3; i <= maxFd; i++) {
157
+ stdio[i] = "ignore";
158
+ }
159
+ for (const {
160
+ fd
161
+ } of additionalFds) {
162
+ stdio[fd] = "pipe";
163
+ }
164
+ return stdio;
165
+ };
166
+ const setupAdditionalFds = Effect.fnUntraced(function* (command, childProcess, additionalFds) {
167
+ if (additionalFds.length === 0) {
168
+ return {
169
+ getInputFd: () => Sink.drain,
170
+ getOutputFd: () => Stream.empty
171
+ };
172
+ }
173
+ const inputSinks = /* @__PURE__ */ new Map();
174
+ const outputStreams = /* @__PURE__ */ new Map();
175
+ for (const {
176
+ config,
177
+ fd
178
+ } of additionalFds) {
179
+ const nodeStream = childProcess.stdio[fd];
180
+ switch (config.type) {
181
+ case "input": {
182
+ let sink = Sink.drain;
183
+ if (nodeStream && "write" in nodeStream) {
184
+ sink = fromWritable({
185
+ evaluate: () => nodeStream,
186
+ onError: (error) => toPlatformError(`fromWritable(fd${fd})`, toError(error), command)
187
+ });
188
+ }
189
+ if (config.stream) {
190
+ yield* Effect.forkScoped(Stream.run(config.stream, sink));
191
+ }
192
+ inputSinks.set(fd, sink);
193
+ break;
194
+ }
195
+ case "output": {
196
+ let stream = Stream.empty;
197
+ if (nodeStream && "read" in nodeStream) {
198
+ const passThrough = new PassThrough();
199
+ nodeStream.on("error", (error) => passThrough.destroy(error));
200
+ nodeStream.pipe(passThrough);
201
+ stream = fromReadable({
202
+ evaluate: () => passThrough,
203
+ onError: (error) => toPlatformError(`fromReadable(fd${fd})`, toError(error), command)
204
+ });
205
+ }
206
+ if (config.sink) {
207
+ stream = Stream.transduce(stream, config.sink);
208
+ }
209
+ outputStreams.set(fd, stream);
210
+ break;
211
+ }
212
+ }
213
+ }
214
+ return {
215
+ getInputFd: (fd) => inputSinks.get(fd) ?? Sink.drain,
216
+ getOutputFd: (fd) => outputStreams.get(fd) ?? Stream.empty
217
+ };
218
+ });
219
+ const setupChildStdin = (command, childProcess, config) => Effect.suspend(() => {
220
+ let sink = Sink.drain;
221
+ if (Predicate.isNotNull(childProcess.stdin)) {
222
+ sink = fromWritable({
223
+ evaluate: () => childProcess.stdin,
224
+ onError: (error) => toPlatformError("fromWritable(stdin)", toError(error), command),
225
+ endOnDone: config.endOnDone,
226
+ encoding: config.encoding
227
+ });
228
+ }
229
+ if (Stream.isStream(config.stream)) {
230
+ return Effect.as(Effect.forkScoped(Stream.run(config.stream, sink)), sink);
231
+ }
232
+ return Effect.succeed(sink);
233
+ });
234
+ const setupChildOutputStreams = (command, childProcess, stdoutConfig, stderrConfig) => {
235
+ let stdout = childProcess.stdout ? (() => {
236
+ const passThrough = new PassThrough();
237
+ childProcess.stdout.on("error", (error) => passThrough.destroy(error));
238
+ childProcess.stdout.pipe(passThrough);
239
+ return fromReadable({
240
+ evaluate: () => passThrough,
241
+ onError: (error) => toPlatformError("fromReadable(stdout)", toError(error), command)
242
+ });
243
+ })() : Stream.empty;
244
+ let stderr = childProcess.stderr ? (() => {
245
+ const passThrough = new PassThrough();
246
+ childProcess.stderr.on("error", (error) => passThrough.destroy(error));
247
+ childProcess.stderr.pipe(passThrough);
248
+ return fromReadable({
249
+ evaluate: () => passThrough,
250
+ onError: (error) => toPlatformError("fromReadable(stderr)", toError(error), command)
251
+ });
252
+ })() : Stream.empty;
253
+ if (Sink.isSink(stdoutConfig.stream)) {
254
+ stdout = Stream.transduce(stdout, stdoutConfig.stream);
255
+ }
256
+ if (Sink.isSink(stderrConfig.stream)) {
257
+ stderr = Stream.transduce(stderr, stderrConfig.stream);
258
+ }
259
+ const all = Stream.merge(stdout, stderr);
260
+ return {
261
+ stdout,
262
+ stderr,
263
+ all
264
+ };
265
+ };
266
+ const spawn2 = (command, spawnOptions) => Effect.callback((resume) => {
267
+ const deferred = Deferred.makeUnsafe();
268
+ const handle = NodeChildProcess.spawn(command.command, command.args, spawnOptions);
269
+ handle.on("error", (error) => {
270
+ resume(Effect.fail(toPlatformError("spawn", error, command)));
271
+ });
272
+ handle.on("exit", (...args) => {
273
+ Deferred.doneUnsafe(deferred, Exit.succeed(args));
274
+ });
275
+ handle.on("spawn", () => {
276
+ resume(Effect.succeed([handle, deferred]));
277
+ });
278
+ return Effect.sync(() => {
279
+ handle.kill("SIGTERM");
280
+ });
281
+ });
282
+ const killProcessGroup = (command, childProcess, signal) => {
283
+ if (globalThis.process.platform === "win32") {
284
+ return Effect.callback((resume) => {
285
+ taskkill(childProcess, (error) => {
286
+ if (error) {
287
+ resume(Effect.fail(toPlatformError("kill", toError(error), command)));
288
+ } else {
289
+ resume(Effect.void);
290
+ }
291
+ });
292
+ });
293
+ }
294
+ return Effect.try({
295
+ try: () => {
296
+ globalThis.process.kill(-childProcess.pid, signal);
297
+ },
298
+ catch: (error) => toPlatformError("kill", toError(error), command)
299
+ });
300
+ };
301
+ const killProcessGroupOnExit = (childProcess, signal) => {
302
+ if (globalThis.process.platform === "win32") {
303
+ taskkill(childProcess);
304
+ return;
305
+ }
306
+ try {
307
+ globalThis.process.kill(-childProcess.pid, signal);
308
+ } catch {
309
+ }
310
+ };
311
+ const killProcess = (command, childProcess, signal) => Effect.suspend(() => {
312
+ const killed = childProcess.kill(signal);
313
+ if (!killed) {
314
+ const error = new globalThis.Error("Failed to kill child process");
315
+ return Effect.fail(toPlatformError("kill", error, command));
316
+ }
317
+ return Effect.void;
318
+ });
319
+ const awaitProcessExit = (childProcess, exitSignal, timeoutMillis) => Effect.callback((resume) => {
320
+ const deadline = Date.now() + timeoutMillis;
321
+ let timer;
322
+ const stop = () => {
323
+ clearTimeout(timer);
324
+ childProcess.removeListener("exit", poll);
325
+ };
326
+ const poll = () => {
327
+ clearTimeout(timer);
328
+ if (Date.now() >= deadline || !isProcessAlive(childProcess, exitSignal)) {
329
+ stop();
330
+ resume(Effect.void);
331
+ return;
332
+ }
333
+ timer = setTimeout(poll, processGroupPollIntervalMillis);
334
+ };
335
+ childProcess.on("exit", poll);
336
+ poll();
337
+ return Effect.sync(stop);
338
+ });
339
+ const terminateProcessGroup = Effect.fnUntraced(function* (command, childProcess, exitSignal, options) {
340
+ const signalGroup = (signal) => killProcessGroup(command, childProcess, signal).pipe(Effect.catch(() => killProcess(command, childProcess, signal)));
341
+ yield* signalGroup(options?.killSignal ?? "SIGTERM");
342
+ if (Predicate.isUndefined(options?.forceKillAfter)) {
343
+ yield* awaitProcessExit(childProcess, exitSignal, processGroupGraceMillis);
344
+ } else {
345
+ yield* awaitProcessExit(childProcess, exitSignal, Duration.toMillis(options.forceKillAfter));
346
+ if (isProcessAlive(childProcess, exitSignal)) {
347
+ yield* signalGroup("SIGKILL");
348
+ yield* awaitProcessExit(childProcess, exitSignal, processGroupGraceMillis);
349
+ }
350
+ }
351
+ yield* Deferred.await(exitSignal);
352
+ });
353
+ const getSourceStream = (handle, from) => {
354
+ const fromOption = from ?? "stdout";
355
+ switch (fromOption) {
356
+ case "stdout":
357
+ return handle.stdout;
358
+ case "stderr":
359
+ return handle.stderr;
360
+ case "all":
361
+ return handle.all;
362
+ default: {
363
+ const fd = ChildProcess.parseFdName(fromOption);
364
+ if (Predicate.isNotUndefined(fd)) {
365
+ return handle.getOutputFd(fd);
366
+ }
367
+ return handle.stdout;
368
+ }
369
+ }
370
+ };
371
+ const spawnCommand = Effect.fnUntraced(function* (cmd) {
372
+ switch (cmd._tag) {
373
+ case "StandardCommand": {
374
+ const stdinConfig = resolveStdinOption(cmd.options);
375
+ const stdoutConfig = resolveOutputOption(cmd.options, "stdout");
376
+ const stderrConfig = resolveOutputOption(cmd.options, "stderr");
377
+ const resolvedAdditionalFds = resolveAdditionalFds(cmd.options);
378
+ let isReferenced = true;
379
+ const cwd = yield* resolveWorkingDirectory(cmd.options);
380
+ const env = resolveEnvironment(cmd.options);
381
+ const stdio = buildStdioArray(stdinConfig, stdoutConfig, stderrConfig, resolvedAdditionalFds);
382
+ const [childProcess, exitSignal] = yield* Effect.acquireRelease(spawn2(cmd, buildSpawnOptions(cmd.options, {
383
+ cwd,
384
+ env,
385
+ stdio
386
+ }, process.platform)), Effect.fnUntraced(function* ([childProcess2, exitSignal2]) {
387
+ const exited = yield* Deferred.isDone(exitSignal2);
388
+ if (exited) {
389
+ const [code] = yield* Deferred.await(exitSignal2);
390
+ if (code !== 0 && Predicate.isNotNull(code)) {
391
+ yield* Effect.ignore(killProcessGroup(cmd, childProcess2, cmd.options.killSignal ?? "SIGTERM"));
392
+ }
393
+ return;
394
+ }
395
+ if (!isReferenced) {
396
+ return;
397
+ }
398
+ yield* Effect.ignore(terminateProcessGroup(cmd, childProcess2, exitSignal2, cmd.options));
399
+ }));
400
+ const pid = ProcessId(childProcess.pid);
401
+ childProcess.on("exit", (code) => {
402
+ if (code !== 0 && Predicate.isNotNull(code)) {
403
+ killProcessGroupOnExit(childProcess, cmd.options.killSignal ?? "SIGTERM");
404
+ }
405
+ });
406
+ const reref = Effect.sync(() => {
407
+ if (!isReferenced) {
408
+ childProcess.ref();
409
+ isReferenced = true;
410
+ }
411
+ });
412
+ const unref = Effect.sync(() => {
413
+ if (isReferenced) {
414
+ childProcess.unref();
415
+ isReferenced = false;
416
+ }
417
+ return reref;
418
+ });
419
+ const stdin = yield* setupChildStdin(cmd, childProcess, stdinConfig);
420
+ const {
421
+ all,
422
+ stderr,
423
+ stdout
424
+ } = setupChildOutputStreams(cmd, childProcess, stdoutConfig, stderrConfig);
425
+ const {
426
+ getInputFd,
427
+ getOutputFd
428
+ } = yield* setupAdditionalFds(cmd, childProcess, resolvedAdditionalFds);
429
+ const isRunning = Effect.map(Deferred.isDone(exitSignal), (done) => !done);
430
+ const exitCode = Effect.flatMap(Deferred.await(exitSignal), ([code, signal]) => {
431
+ if (Predicate.isNotNull(code)) {
432
+ return Effect.succeed(ExitCode(code));
433
+ }
434
+ const error = new globalThis.Error(`Process interrupted due to receipt of signal: '${signal}'`);
435
+ return Effect.fail(toPlatformError("exitCode", error, cmd));
436
+ });
437
+ const kill = (options) => terminateProcessGroup(cmd, childProcess, exitSignal, options);
438
+ return makeHandle({
439
+ pid,
440
+ exitCode,
441
+ isRunning,
442
+ kill,
443
+ stdin,
444
+ stdout,
445
+ stderr,
446
+ all,
447
+ getInputFd,
448
+ getOutputFd,
449
+ unref
450
+ });
451
+ }
452
+ case "PipedCommand": {
453
+ const {
454
+ commands,
455
+ pipeOptions
456
+ } = flattenCommand(cmd);
457
+ const [root, ...pipeline] = commands;
458
+ const handles = [yield* spawnCommand(root)];
459
+ for (let i = 0; i < pipeline.length; i++) {
460
+ const command = pipeline[i];
461
+ const options = pipeOptions[i] ?? {};
462
+ const stdinConfig = resolveStdinOption(command.options);
463
+ const sourceStream = Stream.unwrap(Effect.succeed(getSourceStream(handles[handles.length - 1], options.from)));
464
+ const toOption = options.to ?? "stdin";
465
+ if (toOption === "stdin") {
466
+ handles.push(yield* spawnCommand(ChildProcess.make(command.command, command.args, {
467
+ ...command.options,
468
+ stdin: {
469
+ ...stdinConfig,
470
+ stream: sourceStream
471
+ }
472
+ })));
473
+ } else {
474
+ const fd = ChildProcess.parseFdName(toOption);
475
+ if (Predicate.isNotUndefined(fd)) {
476
+ const fdName2 = ChildProcess.fdName(fd);
477
+ const existingFds = command.options.additionalFds ?? {};
478
+ handles.push(yield* spawnCommand(ChildProcess.make(command.command, command.args, {
479
+ ...command.options,
480
+ additionalFds: {
481
+ ...existingFds,
482
+ [fdName2]: {
483
+ type: "input",
484
+ stream: sourceStream
485
+ }
486
+ }
487
+ })));
488
+ } else {
489
+ handles.push(yield* spawnCommand(ChildProcess.make(command.command, command.args, {
490
+ ...command.options,
491
+ stdin: {
492
+ ...stdinConfig,
493
+ stream: sourceStream
494
+ }
495
+ })));
496
+ }
497
+ }
498
+ }
499
+ const handle = handles[handles.length - 1];
500
+ const kill = (options) => Effect.forEach([...handles].reverse(), (handle2) => Effect.ignore(handle2.kill(options)), {
501
+ discard: true
502
+ });
503
+ const unref = Effect.gen(function* () {
504
+ const rerefs = [];
505
+ for (const handle2 of handles) {
506
+ rerefs.push(yield* handle2.unref);
507
+ }
508
+ return Effect.forEach([...rerefs].reverse(), (reref) => reref, {
509
+ discard: true
510
+ });
511
+ });
512
+ return makeHandle({
513
+ pid: handle.pid,
514
+ exitCode: handle.exitCode,
515
+ isRunning: handle.isRunning,
516
+ kill,
517
+ stdin: handles[0].stdin,
518
+ stdout: handle.stdout,
519
+ stderr: handle.stderr,
520
+ all: handle.all,
521
+ getInputFd: handle.getInputFd,
522
+ getOutputFd: handle.getOutputFd,
523
+ unref
524
+ });
525
+ }
526
+ }
527
+ });
528
+ return makeSpawner(spawnCommand);
529
+ });
530
+ var layer = /* @__PURE__ */ Layer.effect(ChildProcessSpawner, make2);
531
+ var flattenCommand = (command) => {
532
+ const commands = [];
533
+ const pipeOptions = [];
534
+ const flatten = (cmd) => {
535
+ switch (cmd._tag) {
536
+ case "StandardCommand": {
537
+ commands.push(cmd);
538
+ break;
539
+ }
540
+ case "PipedCommand": {
541
+ flatten(cmd.left);
542
+ pipeOptions.push(cmd.options);
543
+ flatten(cmd.right);
544
+ break;
545
+ }
546
+ }
547
+ };
548
+ flatten(command);
549
+ if (commands.length === 0) {
550
+ throw new Error("flattenCommand produced empty commands array");
551
+ }
552
+ const [first, ...rest] = commands;
553
+ const nonEmptyCommands = [first, ...rest];
554
+ return {
555
+ commands: nonEmptyCommands,
556
+ pipeOptions
557
+ };
558
+ };
559
+
560
+ export {
561
+ layer,
562
+ flattenCommand,
563
+ NodeChildProcessSpawner_exports
564
+ };
@@ -0,0 +1,18 @@
1
+ import {
2
+ flattenCommand,
3
+ layer
4
+ } from "./chunk-QPLDT6A6.js";
5
+ import {
6
+ __export
7
+ } from "./chunk-MLKGABMK.js";
8
+
9
+ // ../../../../node_modules/.pnpm/@effect+platform-node@4.0.0-rc.115_effect@4.0.0-rc.115_redis@6.2.1_@opentelemetry+api@1.9.1_/node_modules/@effect/platform-node/dist/NodeChildProcessSpawner.js
10
+ var NodeChildProcessSpawner_exports = {};
11
+ __export(NodeChildProcessSpawner_exports, {
12
+ flattenCommand: () => flattenCommand,
13
+ layer: () => layer
14
+ });
15
+
16
+ export {
17
+ NodeChildProcessSpawner_exports
18
+ };