@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.
- package/CHANGELOG.md +211 -0
- package/LICENSE +21 -0
- package/README.md +165 -2
- package/bin/darwin-arm64/smithers-jj-export +0 -0
- package/bin/darwin-x64/smithers-jj-export +0 -0
- package/bin/linux-arm64/smithers-jj-export +0 -0
- package/bin/linux-x64/smithers-jj-export +4 -0
- package/bin/win32-x64/smithers-jj-export.exe +0 -0
- package/dist/cjs/AtomicFileSystem.d.ts +147 -0
- package/dist/cjs/AtomicFileSystem.d.ts.map +1 -0
- package/dist/cjs/AtomicFileSystem.js +234 -0
- package/dist/cjs/AtomicFileSystem.js.map +7 -0
- package/dist/cjs/EgressHttpClient.d.ts +106 -0
- package/dist/cjs/EgressHttpClient.d.ts.map +1 -0
- package/dist/cjs/EgressHttpClient.js +202 -0
- package/dist/cjs/EgressHttpClient.js.map +7 -0
- package/dist/cjs/HostLiveness.d.ts +81 -0
- package/dist/cjs/HostLiveness.d.ts.map +1 -0
- package/dist/cjs/HostLiveness.js +49 -0
- package/dist/cjs/HostLiveness.js.map +7 -0
- package/dist/cjs/NodeHost.d.ts +145 -0
- package/dist/cjs/NodeHost.d.ts.map +1 -0
- package/dist/cjs/NodeHost.js +128 -0
- package/dist/cjs/NodeHost.js.map +7 -0
- package/dist/cjs/ProcessConfinement.d.ts +61 -0
- package/dist/cjs/ProcessConfinement.d.ts.map +1 -0
- package/dist/cjs/ProcessConfinement.js +292 -0
- package/dist/cjs/ProcessConfinement.js.map +7 -0
- package/dist/cjs/ProcessReaper.d.ts +457 -0
- package/dist/cjs/ProcessReaper.d.ts.map +1 -0
- package/dist/cjs/ProcessReaper.js +349 -0
- package/dist/cjs/ProcessReaper.js.map +7 -0
- package/dist/cjs/ProcessSandbox.d.ts +391 -0
- package/dist/cjs/ProcessSandbox.d.ts.map +1 -0
- package/dist/cjs/ProcessSandbox.js +774 -0
- package/dist/cjs/ProcessSandbox.js.map +7 -0
- package/dist/cjs/ScopedProcess.d.ts +66 -0
- package/dist/cjs/ScopedProcess.d.ts.map +1 -0
- package/dist/cjs/ScopedProcess.js +87 -0
- package/dist/cjs/ScopedProcess.js.map +7 -0
- package/dist/cjs/index.d.ts +38 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +47 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/AtomicFileSystemExecutable.d.ts +61 -0
- package/dist/cjs/internal/AtomicFileSystemExecutable.d.ts.map +1 -0
- package/dist/cjs/internal/AtomicFileSystemExecutable.js +250 -0
- package/dist/cjs/internal/AtomicFileSystemExecutable.js.map +7 -0
- package/dist/cjs/internal/AtomicFileSystemProtocol.d.ts +78 -0
- package/dist/cjs/internal/AtomicFileSystemProtocol.d.ts.map +1 -0
- package/dist/cjs/internal/AtomicFileSystemProtocol.js +382 -0
- package/dist/cjs/internal/AtomicFileSystemProtocol.js.map +7 -0
- package/dist/cjs/internal/AtomicFileSystemTransport.d.ts +44 -0
- package/dist/cjs/internal/AtomicFileSystemTransport.d.ts.map +1 -0
- package/dist/cjs/internal/AtomicFileSystemTransport.js +197 -0
- package/dist/cjs/internal/AtomicFileSystemTransport.js.map +7 -0
- package/dist/cjs/internal/AtomicHelperError.d.ts +35 -0
- package/dist/cjs/internal/AtomicHelperError.d.ts.map +1 -0
- package/dist/cjs/internal/AtomicHelperError.js +45 -0
- package/dist/cjs/internal/AtomicHelperError.js.map +7 -0
- package/dist/cjs/internal/AtomicHelperFault.d.ts +59 -0
- package/dist/cjs/internal/AtomicHelperFault.d.ts.map +1 -0
- package/dist/cjs/internal/AtomicHelperFault.js +66 -0
- package/dist/cjs/internal/AtomicHelperFault.js.map +7 -0
- package/dist/cjs/internal/PipedProcess.d.ts +35 -0
- package/dist/cjs/internal/PipedProcess.d.ts.map +1 -0
- package/dist/cjs/internal/PipedProcess.js +309 -0
- package/dist/cjs/internal/PipedProcess.js.map +7 -0
- package/dist/cjs/internal/ProcSnapshot.d.ts +85 -0
- package/dist/cjs/internal/ProcSnapshot.d.ts.map +1 -0
- package/dist/cjs/internal/ProcSnapshot.js +123 -0
- package/dist/cjs/internal/ProcSnapshot.js.map +7 -0
- package/dist/cjs/internal/ProcessCleanup.d.ts +64 -0
- package/dist/cjs/internal/ProcessCleanup.d.ts.map +1 -0
- package/dist/cjs/internal/ProcessCleanup.js +62 -0
- package/dist/cjs/internal/ProcessCleanup.js.map +7 -0
- package/dist/cjs/internal/ProcessCleanupPolicyError.d.ts +30 -0
- package/dist/cjs/internal/ProcessCleanupPolicyError.d.ts.map +1 -0
- package/dist/cjs/internal/ProcessCleanupPolicyError.js +33 -0
- package/dist/cjs/internal/ProcessCleanupPolicyError.js.map +7 -0
- package/dist/cjs/internal/ProcessFault.d.ts +63 -0
- package/dist/cjs/internal/ProcessFault.d.ts.map +1 -0
- package/dist/cjs/internal/ProcessFault.js +63 -0
- package/dist/cjs/internal/ProcessFault.js.map +7 -0
- package/dist/cjs/internal/ProcessSupervisor.d.ts +143 -0
- package/dist/cjs/internal/ProcessSupervisor.d.ts.map +1 -0
- package/dist/cjs/internal/ProcessSupervisor.js +685 -0
- package/dist/cjs/internal/ProcessSupervisor.js.map +7 -0
- package/dist/cjs/internal/SupervisorProgram.d.ts +9 -0
- package/dist/cjs/internal/SupervisorProgram.d.ts.map +1 -0
- package/dist/cjs/internal/SupervisorProgram.js +326 -0
- package/dist/cjs/internal/SupervisorProgram.js.map +7 -0
- package/dist/cjs/internal/WindowsProcessJob.d.ts +39 -0
- package/dist/cjs/internal/WindowsProcessJob.d.ts.map +1 -0
- package/dist/cjs/internal/WindowsProcessJob.js +113 -0
- package/dist/cjs/internal/WindowsProcessJob.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/AtomicFileSystem.d.ts +147 -0
- package/dist/esm/AtomicFileSystem.d.ts.map +1 -0
- package/dist/esm/AtomicFileSystem.js +290 -0
- package/dist/esm/AtomicFileSystem.js.map +1 -0
- package/dist/esm/EgressHttpClient.d.ts +106 -0
- package/dist/esm/EgressHttpClient.d.ts.map +1 -0
- package/dist/esm/EgressHttpClient.js +259 -0
- package/dist/esm/EgressHttpClient.js.map +1 -0
- package/dist/esm/HostLiveness.d.ts +81 -0
- package/dist/esm/HostLiveness.d.ts.map +1 -0
- package/dist/esm/HostLiveness.js +68 -0
- package/dist/esm/HostLiveness.js.map +1 -0
- package/dist/esm/NodeHost.d.ts +145 -0
- package/dist/esm/NodeHost.d.ts.map +1 -0
- package/dist/esm/NodeHost.js +162 -0
- package/dist/esm/NodeHost.js.map +1 -0
- package/dist/esm/ProcessConfinement.d.ts +61 -0
- package/dist/esm/ProcessConfinement.d.ts.map +1 -0
- package/dist/esm/ProcessConfinement.js +311 -0
- package/dist/esm/ProcessConfinement.js.map +1 -0
- package/dist/esm/ProcessReaper.d.ts +457 -0
- package/dist/esm/ProcessReaper.d.ts.map +1 -0
- package/dist/esm/ProcessReaper.js +711 -0
- package/dist/esm/ProcessReaper.js.map +1 -0
- package/dist/esm/ProcessSandbox.d.ts +391 -0
- package/dist/esm/ProcessSandbox.d.ts.map +1 -0
- package/dist/esm/ProcessSandbox.js +1043 -0
- package/dist/esm/ProcessSandbox.js.map +1 -0
- package/dist/esm/ScopedProcess.d.ts +66 -0
- package/dist/esm/ScopedProcess.d.ts.map +1 -0
- package/dist/esm/ScopedProcess.js +67 -0
- package/dist/esm/ScopedProcess.js.map +1 -0
- package/dist/esm/index.d.ts +38 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +38 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/AtomicFileSystemExecutable.d.ts +61 -0
- package/dist/esm/internal/AtomicFileSystemExecutable.d.ts.map +1 -0
- package/dist/esm/internal/AtomicFileSystemExecutable.js +350 -0
- package/dist/esm/internal/AtomicFileSystemExecutable.js.map +1 -0
- package/dist/esm/internal/AtomicFileSystemProtocol.d.ts +78 -0
- package/dist/esm/internal/AtomicFileSystemProtocol.d.ts.map +1 -0
- package/dist/esm/internal/AtomicFileSystemProtocol.js +412 -0
- package/dist/esm/internal/AtomicFileSystemProtocol.js.map +1 -0
- package/dist/esm/internal/AtomicFileSystemTransport.d.ts +44 -0
- package/dist/esm/internal/AtomicFileSystemTransport.d.ts.map +1 -0
- package/dist/esm/internal/AtomicFileSystemTransport.js +242 -0
- package/dist/esm/internal/AtomicFileSystemTransport.js.map +1 -0
- package/dist/esm/internal/AtomicHelperError.d.ts +35 -0
- package/dist/esm/internal/AtomicHelperError.d.ts.map +1 -0
- package/dist/esm/internal/AtomicHelperError.js +39 -0
- package/dist/esm/internal/AtomicHelperError.js.map +1 -0
- package/dist/esm/internal/AtomicHelperFault.d.ts +59 -0
- package/dist/esm/internal/AtomicHelperFault.d.ts.map +1 -0
- package/dist/esm/internal/AtomicHelperFault.js +66 -0
- package/dist/esm/internal/AtomicHelperFault.js.map +1 -0
- package/dist/esm/internal/PipedProcess.d.ts +35 -0
- package/dist/esm/internal/PipedProcess.d.ts.map +1 -0
- package/dist/esm/internal/PipedProcess.js +321 -0
- package/dist/esm/internal/PipedProcess.js.map +1 -0
- package/dist/esm/internal/ProcSnapshot.d.ts +85 -0
- package/dist/esm/internal/ProcSnapshot.d.ts.map +1 -0
- package/dist/esm/internal/ProcSnapshot.js +188 -0
- package/dist/esm/internal/ProcSnapshot.js.map +1 -0
- package/dist/esm/internal/ProcessCleanup.d.ts +64 -0
- package/dist/esm/internal/ProcessCleanup.d.ts.map +1 -0
- package/dist/esm/internal/ProcessCleanup.js +45 -0
- package/dist/esm/internal/ProcessCleanup.js.map +1 -0
- package/dist/esm/internal/ProcessCleanupPolicyError.d.ts +30 -0
- package/dist/esm/internal/ProcessCleanupPolicyError.d.ts.map +1 -0
- package/dist/esm/internal/ProcessCleanupPolicyError.js +25 -0
- package/dist/esm/internal/ProcessCleanupPolicyError.js.map +1 -0
- package/dist/esm/internal/ProcessFault.d.ts +63 -0
- package/dist/esm/internal/ProcessFault.d.ts.map +1 -0
- package/dist/esm/internal/ProcessFault.js +64 -0
- package/dist/esm/internal/ProcessFault.js.map +1 -0
- package/dist/esm/internal/ProcessSupervisor.d.ts +143 -0
- package/dist/esm/internal/ProcessSupervisor.d.ts.map +1 -0
- package/dist/esm/internal/ProcessSupervisor.js +689 -0
- package/dist/esm/internal/ProcessSupervisor.js.map +1 -0
- package/dist/esm/internal/SupervisorProgram.d.ts +9 -0
- package/dist/esm/internal/SupervisorProgram.d.ts.map +1 -0
- package/dist/esm/internal/SupervisorProgram.js +310 -0
- package/dist/esm/internal/SupervisorProgram.js.map +1 -0
- package/dist/esm/internal/WindowsProcessJob.d.ts +39 -0
- package/dist/esm/internal/WindowsProcessJob.d.ts.map +1 -0
- package/dist/esm/internal/WindowsProcessJob.js +115 -0
- package/dist/esm/internal/WindowsProcessJob.js.map +1 -0
- package/dist/vendor/adapters.json +1757 -0
- package/dist/vendor/chunk-2Y7WC4KU.js +109 -0
- package/dist/vendor/chunk-3GR5VZ2M.js +118 -0
- package/dist/vendor/chunk-42QKY6T6.js +40 -0
- package/dist/vendor/chunk-54RLBMTZ.js +61 -0
- package/dist/vendor/chunk-5ZMHBXIK.js +55 -0
- package/dist/vendor/chunk-6ME2W7TF.js +28 -0
- package/dist/vendor/chunk-AMQKOQNT.js +34 -0
- package/dist/vendor/chunk-B3FZ67QU.js +59 -0
- package/dist/vendor/chunk-BKTBUBQY.js +437 -0
- package/dist/vendor/chunk-DS7GF46S.js +34 -0
- package/dist/vendor/chunk-DVOAHXPG.js +104 -0
- package/dist/vendor/chunk-DWSHTSVX.js +229 -0
- package/dist/vendor/chunk-EGBNVEEW.js +14 -0
- package/dist/vendor/chunk-EZWY45HP.js +18 -0
- package/dist/vendor/chunk-FNZOJHSV.js +71 -0
- package/dist/vendor/chunk-GXCHI7BM.js +131 -0
- package/dist/vendor/chunk-IIJ52ZU6.js +20 -0
- package/dist/vendor/chunk-J7A4CZDO.js +92 -0
- package/dist/vendor/chunk-JG5TTWPT.js +85 -0
- package/dist/vendor/chunk-JJ24ARBQ.js +394 -0
- package/dist/vendor/chunk-KOZMM5PZ.js +426 -0
- package/dist/vendor/chunk-KUUXSID7.js +18 -0
- package/dist/vendor/chunk-LEUPYT3Q.js +36 -0
- package/dist/vendor/chunk-M32LDTW7.js +18 -0
- package/dist/vendor/chunk-M7CLUILA.js +0 -0
- package/dist/vendor/chunk-MBSKBQ5D.js +21 -0
- package/dist/vendor/chunk-MLKGABMK.js +9 -0
- package/dist/vendor/chunk-NBVRTDTV.js +129 -0
- package/dist/vendor/chunk-OXNGN5H7.js +81 -0
- package/dist/vendor/chunk-QPLDT6A6.js +564 -0
- package/dist/vendor/chunk-QYBKAIA6.js +18 -0
- package/dist/vendor/chunk-RO2R4MJH.js +62 -0
- package/dist/vendor/chunk-SIR62W3Y.js +398 -0
- package/dist/vendor/chunk-TFIKFFSC.js +26 -0
- package/dist/vendor/chunk-TXKLEBBL.js +143 -0
- package/dist/vendor/chunk-UFH5UUZK.js +48 -0
- package/dist/vendor/chunk-VANKHF46.js +96 -0
- package/dist/vendor/chunk-VZBDV3TV.js +18 -0
- package/dist/vendor/chunk-XDKNKFBW.js +22 -0
- package/dist/vendor/chunk-XH4U3JSV.js +249 -0
- package/dist/vendor/chunk-Y35ZAO5U.js +53 -0
- package/dist/vendor/chunk-ZJMRMY57.js +0 -0
- package/dist/vendor/cjs/node/NodeChildProcessSpawner.d.ts +7 -0
- package/dist/vendor/cjs/node/NodeChildProcessSpawner.js +1 -0
- package/dist/vendor/cjs/node/NodeClusterHttp.d.ts +63 -0
- package/dist/vendor/cjs/node/NodeClusterHttp.js +1 -0
- package/dist/vendor/cjs/node/NodeClusterSocket.d.ts +79 -0
- package/dist/vendor/cjs/node/NodeClusterSocket.js +1 -0
- package/dist/vendor/cjs/node/NodeCrypto.d.ts +10 -0
- package/dist/vendor/cjs/node/NodeCrypto.js +1 -0
- package/dist/vendor/cjs/node/NodeFileSystem.d.ts +10 -0
- package/dist/vendor/cjs/node/NodeFileSystem.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpClient.d.ts +179 -0
- package/dist/vendor/cjs/node/NodeHttpClient.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpIncomingMessage.d.ts +62 -0
- package/dist/vendor/cjs/node/NodeHttpIncomingMessage.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpPlatform.d.ts +36 -0
- package/dist/vendor/cjs/node/NodeHttpPlatform.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpServer.d.ts +120 -0
- package/dist/vendor/cjs/node/NodeHttpServer.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpServerRequest.d.ts +29 -0
- package/dist/vendor/cjs/node/NodeHttpServerRequest.js +1 -0
- package/dist/vendor/cjs/node/NodeMultipart.d.ts +46 -0
- package/dist/vendor/cjs/node/NodeMultipart.js +1 -0
- package/dist/vendor/cjs/node/NodeMultipartParser.d.ts +97 -0
- package/dist/vendor/cjs/node/NodeMultipartParser.js +1 -0
- package/dist/vendor/cjs/node/NodePath.d.ts +27 -0
- package/dist/vendor/cjs/node/NodePath.js +1 -0
- package/dist/vendor/cjs/node/NodeRedis.d.ts +74 -0
- package/dist/vendor/cjs/node/NodeRedis.js +1 -0
- package/dist/vendor/cjs/node/NodeRuntime.d.ts +85 -0
- package/dist/vendor/cjs/node/NodeRuntime.js +1 -0
- package/dist/vendor/cjs/node/NodeServices.d.ts +34 -0
- package/dist/vendor/cjs/node/NodeServices.js +1 -0
- package/dist/vendor/cjs/node/NodeSink.d.ts +8 -0
- package/dist/vendor/cjs/node/NodeSink.js +1 -0
- package/dist/vendor/cjs/node/NodeSocket.d.ts +38 -0
- package/dist/vendor/cjs/node/NodeSocket.js +1 -0
- package/dist/vendor/cjs/node/NodeSocketServer.d.ts +8 -0
- package/dist/vendor/cjs/node/NodeSocketServer.js +1 -0
- package/dist/vendor/cjs/node/NodeStdio.d.ts +11 -0
- package/dist/vendor/cjs/node/NodeStdio.js +1 -0
- package/dist/vendor/cjs/node/NodeStream.d.ts +8 -0
- package/dist/vendor/cjs/node/NodeStream.js +1 -0
- package/dist/vendor/cjs/node/NodeTerminal.d.ts +21 -0
- package/dist/vendor/cjs/node/NodeTerminal.js +1 -0
- package/dist/vendor/cjs/node/NodeWorker.d.ts +22 -0
- package/dist/vendor/cjs/node/NodeWorker.js +1 -0
- package/dist/vendor/cjs/node/NodeWorkerRunner.d.ts +12 -0
- package/dist/vendor/cjs/node/NodeWorkerRunner.js +1 -0
- package/dist/vendor/cjs/node/Undici.d.ts +28 -0
- package/dist/vendor/cjs/node/Undici.js +1 -0
- package/dist/vendor/cjs/node/index.d.ts +100 -0
- package/dist/vendor/cjs/node/index.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.d.ts +57 -0
- package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeClusterSocket.d.ts +22 -0
- package/dist/vendor/cjs/node-shared/NodeClusterSocket.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeCrypto.d.ts +27 -0
- package/dist/vendor/cjs/node-shared/NodeCrypto.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeFileSystem.d.ts +11 -0
- package/dist/vendor/cjs/node-shared/NodeFileSystem.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeHttpCompression.d.ts +36 -0
- package/dist/vendor/cjs/node-shared/NodeHttpCompression.js +1 -0
- package/dist/vendor/cjs/node-shared/NodePath.d.ts +27 -0
- package/dist/vendor/cjs/node-shared/NodePath.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeRuntime.d.ts +47 -0
- package/dist/vendor/cjs/node-shared/NodeRuntime.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeSink.d.ts +69 -0
- package/dist/vendor/cjs/node-shared/NodeSink.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeSocket.d.ts +134 -0
- package/dist/vendor/cjs/node-shared/NodeSocket.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeSocketServer.d.ts +80 -0
- package/dist/vendor/cjs/node-shared/NodeSocketServer.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeStdio.d.ts +12 -0
- package/dist/vendor/cjs/node-shared/NodeStdio.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeStream.d.ts +179 -0
- package/dist/vendor/cjs/node-shared/NodeStream.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeTerminal.d.ts +22 -0
- package/dist/vendor/cjs/node-shared/NodeTerminal.js +1 -0
- package/dist/vendor/cjs/node-shared/index.d.ts +56 -0
- package/dist/vendor/cjs/node-shared/index.js +1 -0
- package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
- package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.js +1 -0
- package/dist/vendor/cjs/node-shared/internal/utils.d.ts +2 -0
- package/dist/vendor/cjs/node-shared/internal/utils.js +1 -0
- package/dist/vendor/cjs/package.json +1 -0
- package/dist/vendor/cjs/platform-node-shared.d.ts +56 -0
- package/dist/vendor/cjs/platform-node-shared.js +1 -0
- package/dist/vendor/cjs/platform-node.d.ts +100 -0
- package/dist/vendor/cjs/platform-node.js +1 -0
- package/dist/vendor/node/LICENSE +21 -0
- package/dist/vendor/node/NodeChildProcessSpawner.d.ts +7 -0
- package/dist/vendor/node/NodeChildProcessSpawner.js +14 -0
- package/dist/vendor/node/NodeClusterHttp.d.ts +63 -0
- package/dist/vendor/node/NodeClusterHttp.js +43 -0
- package/dist/vendor/node/NodeClusterSocket.d.ts +79 -0
- package/dist/vendor/node/NodeClusterSocket.js +30 -0
- package/dist/vendor/node/NodeCrypto.d.ts +10 -0
- package/dist/vendor/node/NodeCrypto.js +8 -0
- package/dist/vendor/node/NodeFileSystem.d.ts +10 -0
- package/dist/vendor/node/NodeFileSystem.js +9 -0
- package/dist/vendor/node/NodeHttpClient.d.ts +179 -0
- package/dist/vendor/node/NodeHttpClient.js +46 -0
- package/dist/vendor/node/NodeHttpIncomingMessage.d.ts +62 -0
- package/dist/vendor/node/NodeHttpIncomingMessage.js +10 -0
- package/dist/vendor/node/NodeHttpPlatform.d.ts +36 -0
- package/dist/vendor/node/NodeHttpPlatform.js +16 -0
- package/dist/vendor/node/NodeHttpServer.d.ts +120 -0
- package/dist/vendor/node/NodeHttpServer.js +46 -0
- package/dist/vendor/node/NodeHttpServerRequest.d.ts +29 -0
- package/dist/vendor/node/NodeHttpServerRequest.js +9 -0
- package/dist/vendor/node/NodeMultipart.d.ts +46 -0
- package/dist/vendor/node/NodeMultipart.js +15 -0
- package/dist/vendor/node/NodeMultipartParser.d.ts +97 -0
- package/dist/vendor/node/NodeMultipartParser.js +11 -0
- package/dist/vendor/node/NodePath.d.ts +27 -0
- package/dist/vendor/node/NodePath.js +12 -0
- package/dist/vendor/node/NodeRedis.d.ts +74 -0
- package/dist/vendor/node/NodeRedis.js +11 -0
- package/dist/vendor/node/NodeRuntime.d.ts +85 -0
- package/dist/vendor/node/NodeRuntime.js +8 -0
- package/dist/vendor/node/NodeServices.d.ts +34 -0
- package/dist/vendor/node/NodeServices.js +23 -0
- package/dist/vendor/node/NodeSink.d.ts +8 -0
- package/dist/vendor/node/NodeSink.js +12 -0
- package/dist/vendor/node/NodeSocket.d.ts +38 -0
- package/dist/vendor/node/NodeSocket.js +31 -0
- package/dist/vendor/node/NodeSocketServer.d.ts +8 -0
- package/dist/vendor/node/NodeSocketServer.js +21 -0
- package/dist/vendor/node/NodeStdio.d.ts +11 -0
- package/dist/vendor/node/NodeStdio.js +10 -0
- package/dist/vendor/node/NodeStream.d.ts +8 -0
- package/dist/vendor/node/NodeStream.js +27 -0
- package/dist/vendor/node/NodeTerminal.d.ts +21 -0
- package/dist/vendor/node/NodeTerminal.js +10 -0
- package/dist/vendor/node/NodeWorker.d.ts +22 -0
- package/dist/vendor/node/NodeWorker.js +9 -0
- package/dist/vendor/node/NodeWorkerRunner.d.ts +12 -0
- package/dist/vendor/node/NodeWorkerRunner.js +7 -0
- package/dist/vendor/node/Undici.d.ts +28 -0
- package/dist/vendor/node/Undici.js +9 -0
- package/dist/vendor/node/index.d.ts +100 -0
- package/dist/vendor/node/index.js +115 -0
- package/dist/vendor/node-shared/LICENSE +21 -0
- package/dist/vendor/node-shared/NodeChildProcessSpawner.d.ts +57 -0
- package/dist/vendor/node-shared/NodeChildProcessSpawner.js +13 -0
- package/dist/vendor/node-shared/NodeClusterSocket.d.ts +22 -0
- package/dist/vendor/node-shared/NodeClusterSocket.js +11 -0
- package/dist/vendor/node-shared/NodeCrypto.d.ts +27 -0
- package/dist/vendor/node-shared/NodeCrypto.js +9 -0
- package/dist/vendor/node-shared/NodeFileSystem.d.ts +11 -0
- package/dist/vendor/node-shared/NodeFileSystem.js +8 -0
- package/dist/vendor/node-shared/NodeHttpCompression.d.ts +36 -0
- package/dist/vendor/node-shared/NodeHttpCompression.js +13 -0
- package/dist/vendor/node-shared/NodePath.d.ts +27 -0
- package/dist/vendor/node-shared/NodePath.js +11 -0
- package/dist/vendor/node-shared/NodeRuntime.d.ts +47 -0
- package/dist/vendor/node-shared/NodeRuntime.js +7 -0
- package/dist/vendor/node-shared/NodeSink.d.ts +69 -0
- package/dist/vendor/node-shared/NodeSink.js +11 -0
- package/dist/vendor/node-shared/NodeSocket.d.ts +134 -0
- package/dist/vendor/node-shared/NodeSocket.js +23 -0
- package/dist/vendor/node-shared/NodeSocketServer.d.ts +80 -0
- package/dist/vendor/node-shared/NodeSocketServer.js +20 -0
- package/dist/vendor/node-shared/NodeStdio.d.ts +12 -0
- package/dist/vendor/node-shared/NodeStdio.js +9 -0
- package/dist/vendor/node-shared/NodeStream.d.ts +179 -0
- package/dist/vendor/node-shared/NodeStream.js +26 -0
- package/dist/vendor/node-shared/NodeTerminal.d.ts +22 -0
- package/dist/vendor/node-shared/NodeTerminal.js +9 -0
- package/dist/vendor/node-shared/index.d.ts +56 -0
- package/dist/vendor/node-shared/index.js +58 -0
- package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
- package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.js +7 -0
- package/dist/vendor/node-shared/internal/utils.d.ts +2 -0
- package/dist/vendor/node-shared/internal/utils.js +7 -0
- package/dist/vendor/platform-node-shared.d.ts +56 -0
- package/dist/vendor/platform-node-shared.js +58 -0
- package/dist/vendor/platform-node.d.ts +100 -0
- package/dist/vendor/platform-node.js +115 -0
- package/docs/README.md +129 -0
- package/docs/api.md +553 -0
- package/docs/concepts/descriptor-relative-filesystem.md +181 -0
- package/docs/concepts/host-bundle.md +125 -0
- package/docs/concepts/process-containment.md +190 -0
- package/docs/guides/answer-run-ownership.md +87 -0
- package/docs/guides/configure-the-filesystem-helper.md +152 -0
- package/docs/guides/contain-child-processes.md +139 -0
- package/docs/guides/match-files-with-glob.md +151 -0
- package/docs/installation.md +204 -0
- package/docs/quickstart.md +147 -0
- package/docs/troubleshooting.md +130 -0
- package/package.json +202 -3
- package/src/AtomicFileSystem.ts +415 -0
- package/src/EgressHttpClient.ts +327 -0
- package/src/HostLiveness.ts +103 -0
- package/src/NodeHost.ts +253 -0
- package/src/ProcessConfinement.ts +363 -0
- package/src/ProcessReaper.ts +951 -0
- package/src/ProcessSandbox.ts +1307 -0
- package/src/ScopedProcess.ts +124 -0
- package/src/index.ts +44 -0
- package/src/internal/AtomicFileSystemExecutable.ts +379 -0
- package/src/internal/AtomicFileSystemProtocol.ts +502 -0
- package/src/internal/AtomicFileSystemTransport.ts +272 -0
- package/src/internal/AtomicHelperError.ts +50 -0
- package/src/internal/AtomicHelperFault.ts +84 -0
- package/src/internal/PipedProcess.ts +357 -0
- package/src/internal/ProcSnapshot.ts +193 -0
- package/src/internal/ProcessCleanup.ts +99 -0
- package/src/internal/ProcessCleanupPolicyError.ts +30 -0
- package/src/internal/ProcessFault.ts +82 -0
- package/src/internal/ProcessSupervisor.ts +807 -0
- package/src/internal/SupervisorProgram.ts +309 -0
- package/src/internal/WindowsProcessJob.ts +114 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var AtomicFileSystemTransport_exports = {};
|
|
20
|
+
__export(AtomicFileSystemTransport_exports, {
|
|
21
|
+
inside: () => inside,
|
|
22
|
+
spawnHelper: () => spawnHelper,
|
|
23
|
+
started: () => started,
|
|
24
|
+
usableExecutable: () => usableExecutable
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(AtomicFileSystemTransport_exports);
|
|
27
|
+
var import_effect = require("effect");
|
|
28
|
+
var import_node_child_process = require("node:child_process");
|
|
29
|
+
var import_node_fs = require("node:fs");
|
|
30
|
+
var import_node_path = require("node:path");
|
|
31
|
+
var import_AtomicFileSystemProtocol = require("./AtomicFileSystemProtocol.js");
|
|
32
|
+
var import_AtomicHelperError = require("./AtomicHelperError.js");
|
|
33
|
+
var import_AtomicHelperFault = require("./AtomicHelperFault.js");
|
|
34
|
+
let startedHelpers = 0;
|
|
35
|
+
const started = () => startedHelpers;
|
|
36
|
+
const inertDirectory = (0, import_node_path.parse)(process.execPath).root;
|
|
37
|
+
const inside = (root, target) => {
|
|
38
|
+
const path = (0, import_node_path.relative)(root, target);
|
|
39
|
+
return path === "" || path !== ".." && !path.startsWith(`..${import_node_path.sep}`) && !(0, import_node_path.isAbsolute)(path);
|
|
40
|
+
};
|
|
41
|
+
const executablePath = (configured) => {
|
|
42
|
+
let current = configured;
|
|
43
|
+
for (let links = 0; links < 40; links++) {
|
|
44
|
+
if (current.endsWith("/") || current.endsWith(import_node_path.sep)) {
|
|
45
|
+
throw new import_AtomicHelperError.AtomicHelperError({
|
|
46
|
+
code: "helper_path_invalid",
|
|
47
|
+
message: "atomic helper executable cannot end with a directory separator"
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
const parent = import_node_fs.realpathSync.native((0, import_node_path.dirname)(current));
|
|
51
|
+
const candidate = (0, import_node_path.join)(parent, (0, import_node_path.basename)(current));
|
|
52
|
+
if (!(0, import_node_fs.lstatSync)(candidate).isSymbolicLink()) return candidate;
|
|
53
|
+
const target = (0, import_node_fs.readlinkSync)(candidate);
|
|
54
|
+
current = (0, import_node_path.isAbsolute)(target) ? target : `${parent}/${target}`;
|
|
55
|
+
}
|
|
56
|
+
throw new import_AtomicHelperError.AtomicHelperError({
|
|
57
|
+
code: "helper_path_invalid",
|
|
58
|
+
message: "atomic helper executable has too many symbolic links"
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
const usableExecutable = (configured, boundaryRoot) => {
|
|
62
|
+
if (!(0, import_node_path.isAbsolute)(configured)) {
|
|
63
|
+
throw new import_AtomicHelperError.AtomicHelperError({
|
|
64
|
+
code: "helper_path_invalid",
|
|
65
|
+
message: `atomic helper executable must be an absolute path, got ${JSON.stringify(configured)}`
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const resolved = executablePath(configured);
|
|
69
|
+
if (!(0, import_node_fs.statSync)(resolved).isFile()) {
|
|
70
|
+
throw new import_AtomicHelperError.AtomicHelperError({
|
|
71
|
+
code: "helper_not_regular_file",
|
|
72
|
+
message: `atomic helper executable is not a regular file: ${resolved}`
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
(0, import_node_fs.accessSync)(resolved, import_node_fs.constants.X_OK);
|
|
76
|
+
if (boundaryRoot !== void 0 && inside(boundaryRoot, resolved)) {
|
|
77
|
+
throw new import_AtomicHelperError.AtomicHelperError({
|
|
78
|
+
code: "helper_inside_workspace",
|
|
79
|
+
message: `atomic helper executable must live outside the confined workspace: ${resolved}`
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return resolved;
|
|
83
|
+
};
|
|
84
|
+
const spawnHelper = (request, executable, payload, settings) => import_effect.Effect.callback((resume) => {
|
|
85
|
+
const limits = settings.limits;
|
|
86
|
+
let settled = false;
|
|
87
|
+
const stdout = [];
|
|
88
|
+
let stdoutBytes = 0;
|
|
89
|
+
const stderr = [];
|
|
90
|
+
let stderrBytes = 0;
|
|
91
|
+
let truncated = false;
|
|
92
|
+
let writeFailure;
|
|
93
|
+
let child;
|
|
94
|
+
try {
|
|
95
|
+
child = (0, import_node_child_process.spawn)(executable, ["--atomic-fs"], {
|
|
96
|
+
cwd: inertDirectory,
|
|
97
|
+
env: {},
|
|
98
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
99
|
+
});
|
|
100
|
+
startedHelpers++;
|
|
101
|
+
} catch (cause) {
|
|
102
|
+
resume(import_effect.Effect.fail((0, import_AtomicFileSystemProtocol.failure)(request, cause)));
|
|
103
|
+
return import_effect.Effect.void;
|
|
104
|
+
}
|
|
105
|
+
const closed = new Promise((resolve) => child.once("close", () => resolve()));
|
|
106
|
+
const cleanup = () => {
|
|
107
|
+
clearTimeout(deadline);
|
|
108
|
+
child.stdin.destroy();
|
|
109
|
+
child.stdout.destroy();
|
|
110
|
+
child.stderr.destroy();
|
|
111
|
+
child.kill("SIGKILL");
|
|
112
|
+
};
|
|
113
|
+
const complete = (effect) => {
|
|
114
|
+
if (settled) return;
|
|
115
|
+
settled = true;
|
|
116
|
+
cleanup();
|
|
117
|
+
resume(import_effect.Effect.andThen(import_effect.Effect.promise(() => closed), effect));
|
|
118
|
+
};
|
|
119
|
+
const deadline = setTimeout(() => {
|
|
120
|
+
complete(import_effect.Effect.fail((0, import_AtomicFileSystemProtocol.failure)(
|
|
121
|
+
request,
|
|
122
|
+
(0, import_AtomicHelperFault.atomicHelperFault)("helper_timeout", `atomic helper did not answer within ${settings.timeoutMs} ms`)
|
|
123
|
+
)));
|
|
124
|
+
}, settings.timeoutMs);
|
|
125
|
+
deadline.unref();
|
|
126
|
+
child.stdout.on("data", (chunk) => {
|
|
127
|
+
const remaining = limits.response + import_AtomicFileSystemProtocol.frameHeaderBytes - stdoutBytes;
|
|
128
|
+
if (chunk.byteLength > remaining) {
|
|
129
|
+
if (remaining > 0) {
|
|
130
|
+
stdout.push(chunk.subarray(0, remaining));
|
|
131
|
+
stdoutBytes += remaining;
|
|
132
|
+
}
|
|
133
|
+
complete(import_effect.Effect.fail((0, import_AtomicFileSystemProtocol.failure)(
|
|
134
|
+
request,
|
|
135
|
+
(0, import_AtomicHelperFault.atomicHelperFault)(
|
|
136
|
+
"response_limit_exceeded",
|
|
137
|
+
`atomic helper wrote more than ${limits.response} response bytes`
|
|
138
|
+
)
|
|
139
|
+
)));
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
stdoutBytes += chunk.byteLength;
|
|
143
|
+
stdout.push(chunk);
|
|
144
|
+
});
|
|
145
|
+
child.stderr.on("data", (chunk) => {
|
|
146
|
+
const slice = chunk.subarray(0, limits.stderr - stderrBytes);
|
|
147
|
+
stderrBytes += slice.byteLength;
|
|
148
|
+
stderr.push(slice);
|
|
149
|
+
if (stderrBytes >= limits.stderr) {
|
|
150
|
+
truncated = true;
|
|
151
|
+
child.stderr.destroy();
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
child.on("error", (cause) => complete(import_effect.Effect.fail((0, import_AtomicFileSystemProtocol.failure)(request, cause))));
|
|
155
|
+
child.stdin.on("error", (cause) => {
|
|
156
|
+
writeFailure = cause;
|
|
157
|
+
});
|
|
158
|
+
child.on("close", (code) => {
|
|
159
|
+
let envelope;
|
|
160
|
+
let malformed;
|
|
161
|
+
try {
|
|
162
|
+
envelope = (0, import_AtomicFileSystemProtocol.decode)(Buffer.concat(stdout), limits);
|
|
163
|
+
} catch (cause) {
|
|
164
|
+
malformed = cause;
|
|
165
|
+
}
|
|
166
|
+
if (envelope !== void 0 && !envelope.ok) {
|
|
167
|
+
complete(import_effect.Effect.fail((0, import_AtomicFileSystemProtocol.failure)(
|
|
168
|
+
request,
|
|
169
|
+
(0, import_AtomicHelperFault.atomicHelperFault)("helper_rejected", envelope.message ?? "atomic helper rejected the operation"),
|
|
170
|
+
envelope
|
|
171
|
+
)));
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (envelope !== void 0 && code === 0) {
|
|
175
|
+
try {
|
|
176
|
+
complete((0, import_AtomicFileSystemProtocol.convert)(request, envelope.value, limits));
|
|
177
|
+
} catch (cause) {
|
|
178
|
+
complete(import_effect.Effect.fail((0, import_AtomicFileSystemProtocol.failure)(request, cause)));
|
|
179
|
+
}
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const text = Buffer.concat(stderr).toString("utf8");
|
|
183
|
+
complete(import_effect.Effect.fail((0, import_AtomicFileSystemProtocol.failure)(
|
|
184
|
+
request,
|
|
185
|
+
text !== "" ? (0, import_AtomicHelperFault.atomicHelperFault)(
|
|
186
|
+
"helper_exited",
|
|
187
|
+
`atomic helper exited ${code}: ${text}${truncated ? " (truncated)" : ""}`
|
|
188
|
+
) : writeFailure !== void 0 ? writeFailure : malformed !== void 0 ? malformed : (0, import_AtomicHelperFault.atomicHelperFault)("helper_exited", `atomic helper exited ${code}`)
|
|
189
|
+
)));
|
|
190
|
+
});
|
|
191
|
+
child.stdin.end(payload);
|
|
192
|
+
return import_effect.Effect.promise(async () => {
|
|
193
|
+
cleanup();
|
|
194
|
+
await closed;
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
//# sourceMappingURL=AtomicFileSystemTransport.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/AtomicFileSystemTransport.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The process transport beneath the atomic filesystem: resolving the\n * configured helper to a file the confined workspace cannot have\n * supplied, and running one isolated, bounded helper process per framed\n * request.\n * @since 1.0.0\n */\n\nimport type * as KernelFileSystem from \"@smthrs/kernel/FileSystem\"\nimport { Effect, type PlatformError } from \"effect\"\nimport { type ChildProcessWithoutNullStreams, spawn } from \"node:child_process\"\nimport { accessSync, constants, lstatSync, readlinkSync, realpathSync, statSync } from \"node:fs\"\nimport { basename, dirname, isAbsolute, join, parse, relative, sep } from \"node:path\"\nimport type { Limits } from \"../AtomicFileSystem.ts\"\nimport { convert, decode, failure, frameHeaderBytes, type HelperResult } from \"./AtomicFileSystemProtocol.ts\"\nimport { AtomicHelperError } from \"./AtomicHelperError.ts\"\nimport { atomicHelperFault } from \"./AtomicHelperFault.ts\"\n\nlet startedHelpers = 0\n\n/**\n * Process-local helper starts, including helpers later cancelled or refused.\n * @private\n * @since 1.0.0\n */\nexport const started = (): number => startedHelpers\n\n/** An inert working directory: nothing the helper could import lives there. */\nconst inertDirectory = parse(process.execPath).root\n\n/**\n * True when `target` is at or below `root`. Both are absolute and already\n * canonical. A different Windows drive produces an absolute relative result.\n * @private\n * @since 1.0.0\n */\nexport const inside = (root: string, target: string): boolean => {\n const path = relative(root, target)\n return path === \"\" || (path !== \"..\" && !path.startsWith(`..${sep}`) && !isAbsolute(path))\n}\n\n/** Resolve symlinks without replacing a hard-linked executable's entry name. */\nconst executablePath = (configured: string): string => {\n let current = configured\n for (let links = 0; links < 40; links++) {\n if (current.endsWith(\"/\") || current.endsWith(sep)) {\n throw new AtomicHelperError({\n code: \"helper_path_invalid\",\n message: \"atomic helper executable cannot end with a directory separator\"\n })\n }\n // Bun's macOS realpath can return another hard link to the final inode:\n // A hard-linked executable can change its entry name during guarded reads.\n // Directories cannot have those file aliases. Resolve the parent, preserve\n // the leaf name, and explicitly follow only actual leaf symlinks.\n const parent = realpathSync.native(dirname(current))\n const candidate = join(parent, basename(current))\n if (!lstatSync(candidate).isSymbolicLink()) return candidate\n const target = readlinkSync(candidate)\n // Do not normalize `link/..` lexically; realpath must traverse it first.\n current = isAbsolute(target) ? target : `${parent}/${target}`\n }\n throw new AtomicHelperError({\n code: \"helper_path_invalid\",\n message: \"atomic helper executable has too many symbolic links\"\n })\n}\n\n/**\n * Resolves the configured helper to an absolute, executable regular file\n * that the confined workspace cannot have supplied. Every failure throws, and\n * every throw becomes a fail-closed `PermissionDenied`, so a host without a\n * usable helper performs no filesystem operation at all.\n * @private\n * @since 1.0.0\n */\nexport const usableExecutable = (configured: string, boundaryRoot: string | undefined): string => {\n if (!isAbsolute(configured)) {\n throw new AtomicHelperError({\n code: \"helper_path_invalid\",\n message: `atomic helper executable must be an absolute path, got ${JSON.stringify(configured)}`\n })\n }\n // Resolved first: the checks below have to describe the file that will\n // actually run, not the name that leads to it.\n const resolved = executablePath(configured)\n if (!statSync(resolved).isFile()) {\n throw new AtomicHelperError({\n code: \"helper_not_regular_file\",\n message: `atomic helper executable is not a regular file: ${resolved}`\n })\n }\n accessSync(resolved, constants.X_OK)\n if (boundaryRoot !== undefined && inside(boundaryRoot, resolved)) {\n throw new AtomicHelperError({\n code: \"helper_inside_workspace\",\n message: `atomic helper executable must live outside the confined workspace: ${resolved}`\n })\n }\n return resolved\n}\n\n/**\n * Runs one helper over one framed request and settles with its converted\n * answer. Every exit path kills the child, releases its pipes, and waits for\n * the operating system to report that the process has closed.\n * @private\n * @since 1.0.0\n */\nexport const spawnHelper = <A>(\n request: KernelFileSystem.AtomicRequest,\n executable: string,\n payload: Buffer,\n settings: { readonly limits: Limits; readonly timeoutMs: number }\n): Effect.Effect<A, PlatformError.PlatformError> =>\n Effect.callback<A, PlatformError.PlatformError>((resume) => {\n const limits = settings.limits\n let settled = false\n const stdout: Array<Buffer> = []\n let stdoutBytes = 0\n const stderr: Array<Buffer> = []\n let stderrBytes = 0\n let truncated = false\n let writeFailure: unknown\n\n // The packaged helper runs with an inert cwd and empty environment. The\n // configured executable is validated outside the confined root first.\n let child: ChildProcessWithoutNullStreams\n try {\n child = spawn(executable, [\"--atomic-fs\"], {\n cwd: inertDirectory,\n env: {},\n stdio: [\"pipe\", \"pipe\", \"pipe\"]\n })\n startedHelpers++\n } catch (cause) {\n // libuv reports some exec failures \u2014 `ENOEXEC` for a file that is\n // neither a script nor a binary \u2014 by throwing rather than by emitting an\n // `error` event, so both arrivals have to end in the same refusal.\n resume(Effect.fail(failure(request, cause)))\n return Effect.void\n }\n const closed = new Promise<void>((resolve) => child.once(\"close\", () => resolve()))\n // `deadline` is armed below, after the completion it resumes through\n // exists. Reading it here is safe because nothing calls `cleanup` before\n // then: the one earlier exit, a spawn that threw, resumes and returns.\n const cleanup = () => {\n clearTimeout(deadline)\n child.stdin.destroy()\n child.stdout.destroy()\n child.stderr.destroy()\n child.kill(\"SIGKILL\")\n }\n const complete = (effect: Effect.Effect<A, PlatformError.PlatformError>) => {\n if (settled) return\n settled = true\n // Every exit path drains and kills, so an overflowing, hung, or already\n // finished helper leaves no descriptor and no child behind.\n cleanup()\n resume(Effect.andThen(Effect.promise(() => closed), effect))\n }\n // A wall-clock backstop, independent of every byte ceiling. Those bound\n // what a helper may SAY; nothing bounds how long it may take to say it, and\n // a helper that never answers would otherwise hold the fiber until the run\n // itself is interrupted.\n const deadline = setTimeout(() => {\n complete(Effect.fail(failure(\n request,\n atomicHelperFault(\"helper_timeout\", `atomic helper did not answer within ${settings.timeoutMs} ms`)\n )))\n }, settings.timeoutMs)\n deadline.unref()\n // Raw buffers, never decoded strings: a chunk boundary in the middle of a\n // multi-byte character would otherwise be decoded as two replacement\n // characters before the JSON parse ever saw it. Concatenating once at the\n // end also keeps accumulation linear instead of quadratic.\n // Retained bytes are bounded by the ceiling plus at most one pipe chunk:\n // an overflowing chunk is sliced before it is retained, so the host never\n // relies on the stream implementation's chunk-size convention.\n child.stdout.on(\"data\", (chunk: Buffer) => {\n const remaining = limits.response + frameHeaderBytes - stdoutBytes\n if (chunk.byteLength > remaining) {\n if (remaining > 0) {\n stdout.push(chunk.subarray(0, remaining))\n stdoutBytes += remaining\n }\n complete(Effect.fail(failure(\n request,\n atomicHelperFault(\n \"response_limit_exceeded\",\n `atomic helper wrote more than ${limits.response} response bytes`\n )\n )))\n return\n }\n stdoutBytes += chunk.byteLength\n stdout.push(chunk)\n })\n // stderr is bounded on its own budget: a helper that says nothing useful\n // on stdout must not be able to exhaust the host through diagnostics.\n // Destroying the pipe stops the helper at its next write rather than\n // letting it produce output nobody will read.\n child.stderr.on(\"data\", (chunk: Buffer) => {\n // Sliced to the remaining room rather than kept whole, so the retained\n // text is exactly the budget and not the budget plus a pipe buffer.\n const slice = chunk.subarray(0, limits.stderr - stderrBytes)\n stderrBytes += slice.byteLength\n stderr.push(slice)\n if (stderrBytes >= limits.stderr) {\n truncated = true\n child.stderr.destroy()\n }\n })\n child.on(\"error\", (cause) => complete(Effect.fail(failure(request, cause))))\n // A helper that exits before draining stdin \u2014 an unavailable helper,\n // a rejected request, an interrupt that killed it mid-write \u2014 makes the\n // request write fail with EPIPE. Without a listener that is an unhandled\n // `error` event on the pipe, which terminates the host process instead of\n // failing one filesystem call. It is recorded rather than resumed on, so\n // that a helper which did manage to report a real errno keeps precedence\n // over the broken pipe its own exit caused.\n child.stdin.on(\"error\", (cause) => {\n writeFailure = cause\n })\n child.on(\"close\", (code) => {\n let envelope: HelperResult | undefined\n let malformed: unknown\n try {\n envelope = decode(Buffer.concat(stdout), limits)\n } catch (cause) {\n malformed = cause\n }\n if (envelope !== undefined && !envelope.ok) {\n // The helper's own typed rejection outranks the exit status and any\n // transport noise: it is the only thing that knows which errno the\n // syscall produced.\n complete(Effect.fail(failure(\n request,\n atomicHelperFault(\"helper_rejected\", envelope.message ?? \"atomic helper rejected the operation\"),\n envelope\n )))\n return\n }\n if (envelope !== undefined && code === 0) {\n try {\n complete(convert<A>(request, envelope.value, limits))\n } catch (cause) {\n complete(Effect.fail(failure(request, cause)))\n }\n return\n }\n const text = Buffer.concat(stderr).toString(\"utf8\")\n complete(Effect.fail(failure(\n request,\n text !== \"\"\n ? atomicHelperFault(\n \"helper_exited\",\n `atomic helper exited ${code}: ${text}${truncated ? \" (truncated)\" : \"\"}`\n )\n : writeFailure !== undefined\n ? writeFailure\n : malformed !== undefined\n ? malformed\n : atomicHelperFault(\"helper_exited\", `atomic helper exited ${code}`)\n )))\n })\n child.stdin.end(payload)\n return Effect.promise(async () => {\n cleanup()\n await closed\n })\n })\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The configuration failures of the atomic filesystem helper: a layer option
|
|
3
|
+
* outside its bounds, a request that cannot be serialized, and a helper that
|
|
4
|
+
* cannot be found, is not usable, or is not trusted. A caller classifies one
|
|
5
|
+
* by `_tag` and `code` instead of reading its message.
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
import { Schema } from "effect";
|
|
9
|
+
/**
|
|
10
|
+
* Why the atomic helper could not be configured or resolved.
|
|
11
|
+
* @category models
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
export declare const AtomicHelperErrorCode: Schema.Literals<readonly ["limit_invalid", "concurrency_invalid", "timeout_invalid", "request_not_serializable", "helper_missing", "helper_unusable", "helper_path_invalid", "helper_not_regular_file", "helper_inside_workspace", "staging_directory_not_private", "staging_unavailable"]>;
|
|
15
|
+
/**
|
|
16
|
+
* The stable code of an {@link AtomicHelperError}.
|
|
17
|
+
* @category models
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
export type AtomicHelperErrorCode = typeof AtomicHelperErrorCode.Type;
|
|
21
|
+
declare const AtomicHelperError_base: Schema.Class<AtomicHelperError, Schema.TaggedStruct<"@smthrs/platform-node/AtomicHelperError", {
|
|
22
|
+
readonly code: Schema.Literals<readonly ["limit_invalid", "concurrency_invalid", "timeout_invalid", "request_not_serializable", "helper_missing", "helper_unusable", "helper_path_invalid", "helper_not_regular_file", "helper_inside_workspace", "staging_directory_not_private", "staging_unavailable"]>;
|
|
23
|
+
readonly message: Schema.String;
|
|
24
|
+
}>, import("effect/Cause").YieldableError>;
|
|
25
|
+
/**
|
|
26
|
+
* The atomic helper is misconfigured, missing, or untrusted. `message` names
|
|
27
|
+
* what was searched and how to install the helper where that applies.
|
|
28
|
+
* @category errors
|
|
29
|
+
* @since 1.0.0
|
|
30
|
+
*/
|
|
31
|
+
export declare class AtomicHelperError extends AtomicHelperError_base {
|
|
32
|
+
readonly name = "AtomicHelperError";
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=AtomicHelperError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AtomicHelperError.d.ts","sourceRoot":"","sources":["../../../src/internal/AtomicHelperError.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,6RAYhC,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAA;;;;;AAErE;;;;;GAKG;AACH,qBAAa,iBACX,SAAQ,sBAGN;IAEF,SAAkB,IAAI,uBAAsB;CAC7C"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var AtomicHelperError_exports = {};
|
|
20
|
+
__export(AtomicHelperError_exports, {
|
|
21
|
+
AtomicHelperError: () => AtomicHelperError,
|
|
22
|
+
AtomicHelperErrorCode: () => AtomicHelperErrorCode
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(AtomicHelperError_exports);
|
|
25
|
+
var import_effect = require("effect");
|
|
26
|
+
const AtomicHelperErrorCode = import_effect.Schema.Literals([
|
|
27
|
+
"limit_invalid",
|
|
28
|
+
"concurrency_invalid",
|
|
29
|
+
"timeout_invalid",
|
|
30
|
+
"request_not_serializable",
|
|
31
|
+
"helper_missing",
|
|
32
|
+
"helper_unusable",
|
|
33
|
+
"helper_path_invalid",
|
|
34
|
+
"helper_not_regular_file",
|
|
35
|
+
"helper_inside_workspace",
|
|
36
|
+
"staging_directory_not_private",
|
|
37
|
+
"staging_unavailable"
|
|
38
|
+
]);
|
|
39
|
+
class AtomicHelperError extends import_effect.Schema.TaggedError()("@smthrs/platform-node/AtomicHelperError", {
|
|
40
|
+
code: AtomicHelperErrorCode,
|
|
41
|
+
message: import_effect.Schema.String
|
|
42
|
+
}) {
|
|
43
|
+
name = "AtomicHelperError";
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=AtomicHelperError.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/AtomicHelperError.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The configuration failures of the atomic filesystem helper: a layer option\n * outside its bounds, a request that cannot be serialized, and a helper that\n * cannot be found, is not usable, or is not trusted. A caller classifies one\n * by `_tag` and `code` instead of reading its message.\n * @since 1.0.0\n */\n\nimport { Schema } from \"effect\"\n\n/**\n * Why the atomic helper could not be configured or resolved.\n * @category models\n * @since 1.0.0\n */\nexport const AtomicHelperErrorCode = Schema.Literals([\n \"limit_invalid\",\n \"concurrency_invalid\",\n \"timeout_invalid\",\n \"request_not_serializable\",\n \"helper_missing\",\n \"helper_unusable\",\n \"helper_path_invalid\",\n \"helper_not_regular_file\",\n \"helper_inside_workspace\",\n \"staging_directory_not_private\",\n \"staging_unavailable\"\n])\n\n/**\n * The stable code of an {@link AtomicHelperError}.\n * @category models\n * @since 1.0.0\n */\nexport type AtomicHelperErrorCode = typeof AtomicHelperErrorCode.Type\n\n/**\n * The atomic helper is misconfigured, missing, or untrusted. `message` names\n * what was searched and how to install the helper where that applies.\n * @category errors\n * @since 1.0.0\n */\nexport class AtomicHelperError\n extends Schema.TaggedError<AtomicHelperError>()(\"@smthrs/platform-node/AtomicHelperError\", {\n code: AtomicHelperErrorCode,\n message: Schema.String\n })\n{\n override readonly name = \"AtomicHelperError\"\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,oBAAuB;AAOhB,MAAM,wBAAwB,qBAAO,SAAS;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAeM,MAAM,0BACH,qBAAO,YAA+B,EAAE,2CAA2C;AAAA,EACzF,MAAM;AAAA,EACN,SAAS,qBAAO;AAClB,CAAC,EACH;AAAA,EACoB,OAAO;AAC3B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The atomic helper broke its protocol or its transport failed: a response that
|
|
3
|
+
* is not framed, a field of the wrong shape, an answer over a bound, a helper
|
|
4
|
+
* that never answered, or one that exited. `AtomicFileSystemProtocol.failure`
|
|
5
|
+
* reports one as the `cause` of a `PlatformError`, so a caller classifies it by
|
|
6
|
+
* `_tag` and `code`. {@link AtomicHelperRejection} carries the errno a helper
|
|
7
|
+
* itself reported.
|
|
8
|
+
* @since 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { Schema } from "effect";
|
|
11
|
+
/**
|
|
12
|
+
* Which rule of the helper protocol or transport was broken.
|
|
13
|
+
* @category models
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
*/
|
|
16
|
+
export declare const AtomicHelperFaultCode: Schema.Literals<readonly ["response_unframed", "response_tag_unknown", "response_length_invalid", "response_length_mismatch", "envelope_malformed", "field_malformed", "file_type_unknown", "payload_malformed", "read_limit_exceeded", "entries_malformed", "batch_malformed", "digest_malformed", "result_malformed", "operation_unsupported", "helper_timeout", "response_limit_exceeded", "helper_rejected", "helper_exited"]>;
|
|
17
|
+
/**
|
|
18
|
+
* The stable code of an {@link AtomicHelperFault}.
|
|
19
|
+
* @category models
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
export type AtomicHelperFaultCode = typeof AtomicHelperFaultCode.Type;
|
|
23
|
+
declare const AtomicHelperFault_base: Schema.Class<AtomicHelperFault, Schema.TaggedStruct<"@smthrs/platform-node/AtomicHelperFault", {
|
|
24
|
+
readonly code: Schema.Literals<readonly ["response_unframed", "response_tag_unknown", "response_length_invalid", "response_length_mismatch", "envelope_malformed", "field_malformed", "file_type_unknown", "payload_malformed", "read_limit_exceeded", "entries_malformed", "batch_malformed", "digest_malformed", "result_malformed", "operation_unsupported", "helper_timeout", "response_limit_exceeded", "helper_rejected", "helper_exited"]>;
|
|
25
|
+
readonly message: Schema.String;
|
|
26
|
+
}>, import("effect/Cause").YieldableError>;
|
|
27
|
+
/**
|
|
28
|
+
* The helper's response or process broke the protocol. The helper is treated as
|
|
29
|
+
* untrusted, so the operation fails closed.
|
|
30
|
+
* @category errors
|
|
31
|
+
* @since 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
export declare class AtomicHelperFault extends AtomicHelperFault_base {
|
|
34
|
+
readonly name = "AtomicHelperFault";
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A helper fault with a stable code.
|
|
38
|
+
* @category constructors
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
*/
|
|
41
|
+
export declare const atomicHelperFault: (code: AtomicHelperFaultCode, message: string) => AtomicHelperFault;
|
|
42
|
+
declare const AtomicHelperRejection_base: Schema.Class<AtomicHelperRejection, Schema.TaggedStruct<"@smthrs/platform-node/AtomicHelperRejection", {
|
|
43
|
+
readonly code: Schema.String;
|
|
44
|
+
readonly syscall: Schema.optional<Schema.String>;
|
|
45
|
+
readonly message: Schema.String;
|
|
46
|
+
readonly cause: Schema.optional<Schema.Unknown>;
|
|
47
|
+
}>, import("effect/Cause").YieldableError>;
|
|
48
|
+
/**
|
|
49
|
+
* The errno a helper reported for a syscall it ran, in the shape the native
|
|
50
|
+
* Node adapter's errors carry so callers that read `code` and `syscall` see the
|
|
51
|
+
* same contract.
|
|
52
|
+
* @category errors
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
*/
|
|
55
|
+
export declare class AtomicHelperRejection extends AtomicHelperRejection_base {
|
|
56
|
+
readonly name = "AtomicHelperRejection";
|
|
57
|
+
}
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=AtomicHelperFault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AtomicHelperFault.d.ts","sourceRoot":"","sources":["../../../src/internal/AtomicHelperFault.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,oaAmBhC,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAA;;;;;AAErE;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,sBAGtC;IACC,SAAkB,IAAI,uBAAsB;CAC7C;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,qBAAqB,EAAE,SAAS,MAAM,KAAG,iBACvC,CAAA;;;;;;;AAE1C;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,0BAQ1C;IACC,SAAkB,IAAI,2BAA0B;CACjD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var AtomicHelperFault_exports = {};
|
|
20
|
+
__export(AtomicHelperFault_exports, {
|
|
21
|
+
AtomicHelperFault: () => AtomicHelperFault,
|
|
22
|
+
AtomicHelperFaultCode: () => AtomicHelperFaultCode,
|
|
23
|
+
AtomicHelperRejection: () => AtomicHelperRejection,
|
|
24
|
+
atomicHelperFault: () => atomicHelperFault
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(AtomicHelperFault_exports);
|
|
27
|
+
var import_effect = require("effect");
|
|
28
|
+
const AtomicHelperFaultCode = import_effect.Schema.Literals([
|
|
29
|
+
"response_unframed",
|
|
30
|
+
"response_tag_unknown",
|
|
31
|
+
"response_length_invalid",
|
|
32
|
+
"response_length_mismatch",
|
|
33
|
+
"envelope_malformed",
|
|
34
|
+
"field_malformed",
|
|
35
|
+
"file_type_unknown",
|
|
36
|
+
"payload_malformed",
|
|
37
|
+
"read_limit_exceeded",
|
|
38
|
+
"entries_malformed",
|
|
39
|
+
"batch_malformed",
|
|
40
|
+
"digest_malformed",
|
|
41
|
+
"result_malformed",
|
|
42
|
+
"operation_unsupported",
|
|
43
|
+
"helper_timeout",
|
|
44
|
+
"response_limit_exceeded",
|
|
45
|
+
"helper_rejected",
|
|
46
|
+
"helper_exited"
|
|
47
|
+
]);
|
|
48
|
+
class AtomicHelperFault extends import_effect.Schema.TaggedError()(
|
|
49
|
+
"@smthrs/platform-node/AtomicHelperFault",
|
|
50
|
+
{ code: AtomicHelperFaultCode, message: import_effect.Schema.String }
|
|
51
|
+
) {
|
|
52
|
+
name = "AtomicHelperFault";
|
|
53
|
+
}
|
|
54
|
+
const atomicHelperFault = (code, message) => new AtomicHelperFault({ code, message });
|
|
55
|
+
class AtomicHelperRejection extends import_effect.Schema.TaggedError()(
|
|
56
|
+
"@smthrs/platform-node/AtomicHelperRejection",
|
|
57
|
+
{
|
|
58
|
+
code: import_effect.Schema.String,
|
|
59
|
+
syscall: import_effect.Schema.optional(import_effect.Schema.String),
|
|
60
|
+
message: import_effect.Schema.String,
|
|
61
|
+
cause: import_effect.Schema.optional(import_effect.Schema.Unknown)
|
|
62
|
+
}
|
|
63
|
+
) {
|
|
64
|
+
name = "AtomicHelperRejection";
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=AtomicHelperFault.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/internal/AtomicHelperFault.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The atomic helper broke its protocol or its transport failed: a response that\n * is not framed, a field of the wrong shape, an answer over a bound, a helper\n * that never answered, or one that exited. `AtomicFileSystemProtocol.failure`\n * reports one as the `cause` of a `PlatformError`, so a caller classifies it by\n * `_tag` and `code`. {@link AtomicHelperRejection} carries the errno a helper\n * itself reported.\n * @since 1.0.0\n */\n\nimport { Schema } from \"effect\"\n\n/**\n * Which rule of the helper protocol or transport was broken.\n * @category models\n * @since 1.0.0\n */\nexport const AtomicHelperFaultCode = Schema.Literals([\n \"response_unframed\",\n \"response_tag_unknown\",\n \"response_length_invalid\",\n \"response_length_mismatch\",\n \"envelope_malformed\",\n \"field_malformed\",\n \"file_type_unknown\",\n \"payload_malformed\",\n \"read_limit_exceeded\",\n \"entries_malformed\",\n \"batch_malformed\",\n \"digest_malformed\",\n \"result_malformed\",\n \"operation_unsupported\",\n \"helper_timeout\",\n \"response_limit_exceeded\",\n \"helper_rejected\",\n \"helper_exited\"\n])\n\n/**\n * The stable code of an {@link AtomicHelperFault}.\n * @category models\n * @since 1.0.0\n */\nexport type AtomicHelperFaultCode = typeof AtomicHelperFaultCode.Type\n\n/**\n * The helper's response or process broke the protocol. The helper is treated as\n * untrusted, so the operation fails closed.\n * @category errors\n * @since 1.0.0\n */\nexport class AtomicHelperFault extends Schema.TaggedError<AtomicHelperFault>()(\n \"@smthrs/platform-node/AtomicHelperFault\",\n { code: AtomicHelperFaultCode, message: Schema.String }\n) {\n override readonly name = \"AtomicHelperFault\"\n}\n\n/**\n * A helper fault with a stable code.\n * @category constructors\n * @since 1.0.0\n */\nexport const atomicHelperFault = (code: AtomicHelperFaultCode, message: string): AtomicHelperFault =>\n new AtomicHelperFault({ code, message })\n\n/**\n * The errno a helper reported for a syscall it ran, in the shape the native\n * Node adapter's errors carry so callers that read `code` and `syscall` see the\n * same contract.\n * @category errors\n * @since 1.0.0\n */\nexport class AtomicHelperRejection extends Schema.TaggedError<AtomicHelperRejection>()(\n \"@smthrs/platform-node/AtomicHelperRejection\",\n {\n code: Schema.String,\n syscall: Schema.optional(Schema.String),\n message: Schema.String,\n cause: Schema.optional(Schema.Unknown)\n }\n) {\n override readonly name = \"AtomicHelperRejection\"\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,oBAAuB;AAOhB,MAAM,wBAAwB,qBAAO,SAAS;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAeM,MAAM,0BAA0B,qBAAO,YAA+B;AAAA,EAC3E;AAAA,EACA,EAAE,MAAM,uBAAuB,SAAS,qBAAO,OAAO;AACxD,EAAE;AAAA,EACkB,OAAO;AAC3B;AAOO,MAAM,oBAAoB,CAAC,MAA6B,YAC7D,IAAI,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AASlC,MAAM,8BAA8B,qBAAO,YAAmC;AAAA,EACnF;AAAA,EACA;AAAA,IACE,MAAM,qBAAO;AAAA,IACb,SAAS,qBAAO,SAAS,qBAAO,MAAM;AAAA,IACtC,SAAS,qBAAO;AAAA,IAChB,OAAO,qBAAO,SAAS,qBAAO,OAAO;AAAA,EACvC;AACF,EAAE;AAAA,EACkB,OAAO;AAC3B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native I/O ownership for transient commands and prepared process owners.
|
|
3
|
+
* @since 1.0.0
|
|
4
|
+
*/
|
|
5
|
+
import * as Effect from "effect/Effect";
|
|
6
|
+
import * as PlatformError from "effect/PlatformError";
|
|
7
|
+
import type * as Scope from "effect/Scope";
|
|
8
|
+
import * as ChildProcess from "effect/unstable/process/ChildProcess";
|
|
9
|
+
import { type ChildProcessHandle } from "effect/unstable/process/ChildProcessSpawner";
|
|
10
|
+
/**
|
|
11
|
+
* Windows owners receive caller streams above the reserved CRT standard slots.
|
|
12
|
+
* @private
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
export declare const standardFdsOf: (handle: ChildProcessHandle) => ReadonlyArray<number | "ignore"> | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Converts native errors without losing their errno or signal.
|
|
18
|
+
* @private
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
export declare const failure: (method: string, cause: unknown) => PlatformError.PlatformError;
|
|
22
|
+
/**
|
|
23
|
+
* Native standard-command I/O, including configured streams and custom pipes.
|
|
24
|
+
* Lifetime error listeners remain on every owned pipe after any consumer is
|
|
25
|
+
* interrupted, so a pending native write cannot raise an unhandled late EPIPE.
|
|
26
|
+
* Consumers still receive the original error through NodeStream/NodeSink.
|
|
27
|
+
* This adapter also preserves native Windows verbatim arguments.
|
|
28
|
+
*
|
|
29
|
+
* It never sends a negative-pid signal. POSIX tree cleanup belongs to the
|
|
30
|
+
* prepared supervisor, which remains alive while it signals its own group.
|
|
31
|
+
* @private
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export declare const spawn: (command: ChildProcess.StandardCommand, windowsVerbatimArguments: boolean | undefined, owner?: boolean) => Effect.Effect<ChildProcessHandle, PlatformError.PlatformError, Scope.Scope>;
|
|
35
|
+
//# sourceMappingURL=PipedProcess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PipedProcess.d.ts","sourceRoot":"","sources":["../../../src/internal/PipedProcess.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAG1C,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAmC,MAAM,6CAA6C,CAAA;AAMtH;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,kBAAkB,KAAG,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,SAChE,CAAA;AAa9B;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,OAAO,OAAO,KAAG,aAAa,CAAC,aAUtE,CAAA;AAyCD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,KAAK,GAChB,SAAS,YAAY,CAAC,eAAe,EACrC,0BAA0B,OAAO,GAAG,SAAS,EAC7C,eAAa,KACZ,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAsPzE,CAAA"}
|