UNPKG

@aeternity/aepp-calldata

Version:
61 lines (60 loc) 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _assert = _interopRequireDefault(require("./utils/assert.cjs")); var _FateTag = _interopRequireDefault(require("./FateTag.cjs")); var _FatePrefixError = _interopRequireDefault(require("./Errors/FatePrefixError.cjs")); var _FateTypes = require("./FateTypes.cjs"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const OBJECT_TYPES = { [_FateTag.default.OTYPE_ADDRESS]: (0, _FateTypes.FateTypeAccountAddress)(), [_FateTag.default.OTYPE_BYTES]: (0, _FateTypes.FateTypeBytes)(), [_FateTag.default.OTYPE_CONTRACT]: (0, _FateTypes.FateTypeContractAddress)(), [_FateTag.default.OTYPE_ORACLE]: (0, _FateTypes.FateTypeOracleAddress)(), [_FateTag.default.OTYPE_ORACLE_QUERY]: (0, _FateTypes.FateTypeOracleQueryAddress)(), [_FateTag.default.OTYPE_CHANNEL]: (0, _FateTypes.FateTypeChannelAddress)() }; class TypeFactory { createType(data) { const tag = data[0]; if (tag === _FateTag.default.TRUE || tag === _FateTag.default.FALSE) { return (0, _FateTypes.FateTypeBool)(); } if ((tag & 0x01) === _FateTag.default.SMALL_INT || tag === _FateTag.default.POS_BIG_INT || tag === _FateTag.default.NEG_BIG_INT) { return (0, _FateTypes.FateTypeInt)(); } if ((tag & 0x03) === _FateTag.default.SHORT_STRING || tag === _FateTag.default.LONG_STRING || tag === _FateTag.default.EMPTY_STRING) { return (0, _FateTypes.FateTypeString)(); } if ((tag & 0x0F) === _FateTag.default.SHORT_LIST || tag === _FateTag.default.LONG_LIST) { return (0, _FateTypes.FateTypeList)(); } if ((tag & 0x0F) === _FateTag.default.SHORT_TUPLE || tag === _FateTag.default.LONG_TUPLE || tag === _FateTag.default.EMPTY_TUPLE) { return (0, _FateTypes.FateTypeTuple)(); } if (tag === _FateTag.default.MAP || tag === _FateTag.default.EMPTY_MAP) { return (0, _FateTypes.FateTypeMap)(); } if (tag === _FateTag.default.POS_BITS || tag === _FateTag.default.NEG_BITS) { return (0, _FateTypes.FateTypeBits)(); } if (tag === _FateTag.default.VARIANT) { return (0, _FateTypes.FateTypeVariant)(); } if (tag === _FateTag.default.OBJECT) { const obj = data[1]; (0, _assert.default)(OBJECT_TYPES.hasOwnProperty(obj), `Unsupported object type "${obj}"`); return OBJECT_TYPES[obj]; } if (tag === _FateTag.default.CONTRACT_BYTEARRAY) { return (0, _FateTypes.FateTypeContractBytearray)(); } if (tag === _FateTag.default.TYPE_INTEGER || tag === _FateTag.default.TYPE_BOOLEAN || tag === _FateTag.default.TYPE_LIST || tag === _FateTag.default.TYPE_TUPLE || tag === _FateTag.default.TYPE_OBJECT || tag === _FateTag.default.TYPE_BITS || tag === _FateTag.default.TYPE_MAP || tag === _FateTag.default.TYPE_STRING || tag === _FateTag.default.TYPE_VARIANT || tag === _FateTag.default.TYPE_BYTES || tag === _FateTag.default.TYPE_CONTRACT_BYTEARRAY || tag === _FateTag.default.TYPE_VAR || tag === _FateTag.default.TYPE_ANY) { return (0, _FateTypes.FateTypeType)(); } throw new _FatePrefixError.default(tag); } } var _default = exports.default = TypeFactory;