UNPKG

ethers-override

Version:
38 lines (37 loc) 1.21 kB
import { AddressAsIf } from "./addressAsIf.js"; import { mergeDeep } from "./utils.js"; export class LedgerState { static from(blockTag = undefined) { return new LedgerState(blockTag); } constructor(blockTag = undefined) { this._asIfs = []; this._blockTag = blockTag; } asif(asIf) { this._asIfs.push(asIf); return this; } async getStateAsync() { if (this._blockTag === undefined) { throw new Error(`Failed to call LedgerState.state() as blockTag is not set!`); } const override = await this.getOverrideAsync(); return [this._blockTag, override]; } blockTag() { if (this._blockTag === undefined) { throw new Error(`Failed to call LedgerState.blockTag() as blockTag is not set!`); } return this._blockTag; } async getOverrideAsync() { const asIfValues = await Promise.all(this._asIfs.map(asIf => asIf.valueAsync())); let override = {}; asIfValues.forEach(asIfValue => { override = mergeDeep(override, asIfValue); }); return override; } } LedgerState.original = new LedgerState(undefined);