@aeternity/aepp-calldata
Version:
Aeternity data serialization library
60 lines (59 loc) • 1.49 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _FateData = _interopRequireDefault(require("./FateData.cjs"));
var _FateTypes = require("../FateTypes.cjs");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class FateVariant extends _FateData.default {
constructor(arities, tag, value = [], valueTypes = [], variants = []) {
super('variant');
this.arities = Array.from(arities);
this._tag = tag;
this._value = value;
this._valueTypes = valueTypes;
this._type = (0, _FateTypes.FateTypeVariant)(variants);
}
get valueTypes() {
return this._valueTypes;
}
get type() {
return this._type;
}
get tag() {
return this._tag;
}
get value() {
return this._value;
}
get aritiesType() {
return (0, _FateTypes.FateTypeInt)();
}
get variantType() {
return (0, _FateTypes.FateTypeTuple)(this._valueTypes);
}
get variants() {
return this._type.variants;
}
get variantName() {
if (this.variants.length === 0) {
return this.tag;
}
const variant = this.variants[this.tag];
return Object.keys(variant)[0];
}
valueOf() {
if (this.variants.length === 0) {
return this;
}
const value = this._value.map(e => e.valueOf());
return {
[this.variantName]: value
};
}
accept(visitor) {
return visitor.visitVariant(this);
}
}
var _default = exports.default = FateVariant;