@eth-optimism/ovm-truffle-provider-wrapper
Version:
Optimism Truffle Provider Wrapper
47 lines • 1.56 kB
JavaScript
;
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