ox
Version:
Ethereum Standard Library
30 lines • 1.02 kB
JavaScript
import { InvalidAbiItemError } from './errors.js';
import { isStructSignature } from './runtime/signatures.js';
import { parseStructs } from './runtime/structs.js';
import { parseSignature } from './runtime/utils.js';
/**
* Parses human-readable ABI item (e.g. error, event, function) into `Abi` item.
*
* @param signature - Human-readable ABI item
* @returns Parsed `Abi` item.
*/
export function parseAbiItem(signature) {
let abiItem;
if (typeof signature === 'string')
abiItem = parseSignature(signature);
else {
const structs = parseStructs(signature);
const length = signature.length;
for (let i = 0; i < length; i++) {
const signature_ = signature[i];
if (isStructSignature(signature_))
continue;
abiItem = parseSignature(signature_, structs);
break;
}
}
if (!abiItem)
throw new InvalidAbiItemError({ signature });
return abiItem;
}
//# sourceMappingURL=parseAbiItem.js.map