@aeternity/aepp-calldata
Version:
Aeternity data serialization library
50 lines (49 loc) • 1.36 kB
JavaScript
;
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 }; }
const zipObject = (keys, values) => {
const reducer = (acc, k, i) => {
acc[k] = values[i];
return acc;
};
return keys.reduce(reducer, {});
};
class FateTuple extends _FateData.default {
constructor(valueTypes = [], items = []) {
super('tuple');
this._valueTypes = valueTypes.hasOwnProperty('valueTypes') ? valueTypes.valueTypes : valueTypes;
this._type = Array.isArray(valueTypes) ? (0, _FateTypes.FateTypeTuple)(valueTypes) : valueTypes;
this._items = Array.from(items);
}
get valueTypes() {
return this._valueTypes;
}
get type() {
return this._type;
}
get size() {
return this._items.length;
}
get items() {
return this._items;
}
valueOf() {
return this.prepareItems(e => e.valueOf());
}
prepareItems(callback) {
const items = this._items.map(callback);
if (this._type.name === 'record') {
return zipObject(this._type.keys, items);
}
return items;
}
accept(visitor) {
return visitor.visitTuple(this);
}
}
var _default = exports.default = FateTuple;