UNPKG

@eth-optimism/ovm-truffle-provider-wrapper

Version:
47 lines 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const child_process_1 = require("child_process"); const startLocalNode = () => { const runText = `(async function(){ const {runFullnode} = require('@eth-optimism/rollup-full-node');runFullnode(true);})();`; const sub = child_process_1.spawn(process.argv[0], [`-e`, `${runText}`], { stdio: ['ignore', 'ignore', 2], }); sub.on('error', (e) => { console.error(`Local server could not be started. Error details: ${e.message}, Stack: ${e.stack}`); }); process.on('exit', () => { try { sub.kill(); } catch (e) { } }); child_process_1.execSync(`sleep 3`); }; const wrapProvider = (provider) => { if (typeof provider !== 'object' || !provider['sendAsync']) { throw Error('Invalid provider. Exepcted provider to conform to Truffle provider interface!'); } const chainId = process.env.OVM_CHAIN_ID || 108; const sendAsync = provider.sendAsync; provider.sendAsync = function (...args) { if (args[0].method === 'eth_sendTransaction') { args[0].params[0].chainId = chainId; } sendAsync.apply(this, args); }; return provider; }; let nodeStarted = false; const wrapProviderAndStartLocalNode = (provider) => { if (!nodeStarted) { nodeStarted = true; startLocalNode(); } return wrapProvider(provider); }; module.exports = { wrapProvider, wrapProviderAndStartLocalNode, }; //# sourceMappingURL=index.js.map