{"version":3,"file":"NodeProcessExecutionService.mjs","sourceRoot":"","sources":["../../../src/services/node-js/NodeProcessExecutionService.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,0BAA0B,EAAE,2CAA2C;AAEhF,OAAO,EAAE,IAAI,EAAE,sBAAsB;AAGrC,OAAO,EAAE,gBAAgB,EAAE,gCAA4B;AAEvD,MAAM,OAAO,2BAA4B,SAAQ,gBAA8B;IACnE,KAAK,CAAC,aAAa,CAAC,MAAc;QAI1C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,IAAI,kBACD,qDAAqD,GACrE;YACE,KAAK,EAAE,MAAM;SACd,CACF,CAAC;QAEF,2EAA2E;QAC3E,mEAAmE;QACnE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,0BAA0B,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAES,KAAK,CAAC,YAAY,CAC1B,UAA0C;QAE1C,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;CACF","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { ProcessParentMessageStream } from '@metamask/post-message-stream/node';\nimport type { ChildProcess } from 'child_process';\nimport { fork } from 'child_process';\n\nimport type { TerminateJobArgs } from '../ExecutionService';\nimport { ExecutionService } from '../ExecutionService';\n\nexport class NodeProcessExecutionService extends ExecutionService<ChildProcess> {\n  protected async initEnvStream(snapId: string): Promise<{\n    worker: ChildProcess;\n    stream: BasePostMessageStream;\n  }> {\n    this.setSnapStatus(snapId, 'initializing');\n\n    const worker = fork(\n      require.resolve('@metamask/snaps-execution-environments/node-process'),\n      {\n        stdio: 'pipe',\n      },\n    );\n\n    // Capturing `stdout` and `stderr` from the worker prevents the worker from\n    // writing to them directly, making it easier to capture them Jest.\n    worker.stdout?.on('data', (data) => {\n      // eslint-disable-next-line no-console\n      console.log(data.toString());\n    });\n\n    worker.stderr?.on('data', (data) => {\n      // eslint-disable-next-line no-console\n      console.error(data.toString());\n    });\n\n    const stream = new ProcessParentMessageStream({ process: worker });\n    return Promise.resolve({ worker, stream });\n  }\n\n  protected async terminateJob(\n    jobWrapper: TerminateJobArgs<ChildProcess>,\n  ): Promise<void> {\n    jobWrapper.worker?.kill();\n  }\n}\n"]}