UNPKG

@aeternity/aepp-calldata

Version:
35 lines (34 loc) 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _rlp = _interopRequireDefault(require("rlp")); var _FateTag = _interopRequireDefault(require("../FateTag.cjs")); var _FateTuple = _interopRequireDefault(require("../types/FateTuple.cjs")); var _FateVariant = _interopRequireDefault(require("../types/FateVariant.cjs")); var _FateTypes = require("../FateTypes.cjs"); var _BaseSerializer = _interopRequireDefault(require("./BaseSerializer.cjs")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } class VariantSerializer extends _BaseSerializer.default { serialize(variant) { const valueTuple = new _FateTuple.default(variant.valueTypes, variant.value); return [_FateTag.default.VARIANT, ..._rlp.default.encode(new Uint8Array(variant.arities)), variant.tag, ...this.globalSerializer.serialize(valueTuple)]; } deserializeStream(stream, typeInfo) { const buffer = new Uint8Array(stream); const decoded = _rlp.default.decode(buffer.slice(1), true); const arities = [...decoded.data]; const tag = decoded.remainder[0]; const data = decoded.remainder.slice(1); let variants = []; let valueType; if (typeof typeInfo !== 'undefined' && typeof typeInfo.variants !== 'undefined') { variants = typeInfo.variants; valueType = (0, _FateTypes.FateTypeTuple)(Object.values(variants[tag])[0]); } const [els, rest] = this.globalSerializer.deserializeStream(data, valueType); return [new _FateVariant.default(arities, tag, els.items, els.valueTypes, variants), rest]; } } var _default = exports.default = VariantSerializer;