@aeternity/aepp-calldata
Version:
Aeternity data serialization library
35 lines (33 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _FateTuple = _interopRequireDefault(require("../types/FateTuple.cjs"));
var _FateTypeError = _interopRequireDefault(require("../Errors/FateTypeError.cjs"));
var _BaseDataFactory = _interopRequireDefault(require("./BaseDataFactory.cjs"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class TupleDataFactory extends _BaseDataFactory.default {
supports({
name,
_valueTypes
}) {
return 'tuple' === name;
}
create(type, value) {
if (!Array.isArray(value)) {
throw new _FateTypeError.default(type.name, `Fate tuple must be an Array, got ${value} instead`);
}
const resolvedValue = type.valueTypes.map((t, i) => {
return this.valueFactory.create(t, value[i]);
});
// Unbox singleton tuples and records
// https://github.com/aeternity/aesophia/pull/205
// https://github.com/aeternity/aesophia/commit/a403a9d227ac56266cf5bb8fbc916f17e6141d15
if (resolvedValue.length === 1) {
return resolvedValue[0];
}
return new _FateTuple.default(type.valueTypes, resolvedValue);
}
}
var _default = exports.default = TupleDataFactory;