@aeternity/aepp-calldata
Version:
Aeternity data serialization library
61 lines (60 loc) • 3.21 kB
JavaScript
;
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;