UNPKG

abi-util-lite

Version:

A light impletation to parse abi string array to abi json

65 lines 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseFragment = exports.Fragment = exports.EventFragment = exports.FunctionFragment = exports.ErrorFragment = exports.ConstructorFragment = void 0; var ConstructorFragment_1 = require("./ConstructorFragment"); Object.defineProperty(exports, "ConstructorFragment", { enumerable: true, get: function () { return ConstructorFragment_1.ConstructorFragment; } }); var ErrorFragment_1 = require("./ErrorFragment"); Object.defineProperty(exports, "ErrorFragment", { enumerable: true, get: function () { return ErrorFragment_1.ErrorFragment; } }); var FunctionFragment_1 = require("./FunctionFragment"); Object.defineProperty(exports, "FunctionFragment", { enumerable: true, get: function () { return FunctionFragment_1.FunctionFragment; } }); var EventFragment_1 = require("./EventFragment"); Object.defineProperty(exports, "EventFragment", { enumerable: true, get: function () { return EventFragment_1.EventFragment; } }); var Fragments_1 = require("./Fragments"); Object.defineProperty(exports, "Fragment", { enumerable: true, get: function () { return Fragments_1.Fragment; } }); var Logger_1 = require("../Logger"); function parseFragmentFromObject(value) { if (Fragments_1.Fragment.isFragment(value)) { return value; } switch (value.type) { case "function": return FunctionFragment_1.FunctionFragment.fromObject(value); case "event": return EventFragment_1.EventFragment.fromObject(value); case "constructor": return ConstructorFragment_1.ConstructorFragment.fromObject(value); case "error": return ErrorFragment_1.ErrorFragment.fromObject(value); case "fallback": case "receive": // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment? return null; } return Logger_1.logger.throwArgumentError("invalid fragment object", "value", value); } function parseFragmentFromString(value) { // Make sure the "returns" is surrounded by a space and all whitespace is exactly one space value = value.replace(/\s/g, " "); value = value.replace(/\(/g, " (").replace(/\)/g, ") ").replace(/\s+/g, " "); value = value.trim(); if (value.split(" ")[0] === "event") { return EventFragment_1.EventFragment.fromString(value.substring(5).trim()); } else if (value.split(" ")[0] === "function") { return FunctionFragment_1.FunctionFragment.fromString(value.substring(8).trim()); } else if (value.split("(")[0].trim() === "constructor") { return ConstructorFragment_1.ConstructorFragment.fromString(value.trim()); } else if (value.split(" ")[0] === "error") { return ErrorFragment_1.ErrorFragment.fromString(value.substring(5).trim()); } return Logger_1.logger.throwArgumentError("unsupported fragment", "value", value); } function parseFragment(value) { if (Fragments_1.Fragment.isFragment(value)) { return value; } if (typeof (value) === "string") { // throw new Error("not supported") return parseFragmentFromString(value); } return parseFragmentFromObject(value); } exports.parseFragment = parseFragment; //# sourceMappingURL=index.js.map