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