| 18 | }); |
| 19 | |
| 20 | const create = () => { |
| 21 | if (instance) { |
| 22 | return instance; |
| 23 | } |
| 24 | |
| 25 | instance = fork(join(__dirname, 'hash.bundle.js'), [], { env: {}, silent: true, execArgv: [] }); |
| 26 | instance.setMaxListeners(Infinity); |
| 27 | instance.addListener('message', raw => { |
| 28 | const msg = raw as HashResponse<HashRequest>; |
| 29 | const deferred = deferredMap[msg.id]; |
| 30 | delete deferredMap[msg.id]; |
| 31 | deferred?.resolve(msg); |
| 32 | }); |
| 33 | |
| 34 | return instance; |
| 35 | }; |
| 36 | |
| 37 | const send = <T extends HashRequest>(req: T): Promise<HashResponse<T>> => { |
| 38 | const cp = create(); |