@aeternity/aepp-calldata
Version:
Aeternity data serialization library
108 lines (107 loc) • 5.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _TypeFactory = _interopRequireDefault(require("./TypeFactory.cjs"));
var _FateData = _interopRequireDefault(require("./types/FateData.cjs"));
var _BaseSerializer = _interopRequireDefault(require("./Serializers/BaseSerializer.cjs"));
var _AddressSerializer = _interopRequireDefault(require("./Serializers/AddressSerializer.cjs"));
var _BitsSerializer = _interopRequireDefault(require("./Serializers/BitsSerializer.cjs"));
var _BoolSerializer = _interopRequireDefault(require("./Serializers/BoolSerializer.cjs"));
var _ByteArraySerializer = _interopRequireDefault(require("./Serializers/ByteArraySerializer.cjs"));
var _BytesSerializer = _interopRequireDefault(require("./Serializers/BytesSerializer.cjs"));
var _ChannelSerializer = _interopRequireDefault(require("./Serializers/ChannelSerializer.cjs"));
var _ContractSerializer = _interopRequireDefault(require("./Serializers/ContractSerializer.cjs"));
var _IntSerializer = _interopRequireDefault(require("./Serializers/IntSerializer.cjs"));
var _VoidSerializer = _interopRequireDefault(require("./Serializers/VoidSerializer.cjs"));
var _ListSerializer = _interopRequireDefault(require("./Serializers/ListSerializer.cjs"));
var _SetSerializer = _interopRequireDefault(require("./Serializers/SetSerializer.cjs"));
var _MapSerializer = _interopRequireDefault(require("./Serializers/MapSerializer.cjs"));
var _OracleQuerySerializer = _interopRequireDefault(require("./Serializers/OracleQuerySerializer.cjs"));
var _OracleSerializer = _interopRequireDefault(require("./Serializers/OracleSerializer.cjs"));
var _StringSerializer = _interopRequireDefault(require("./Serializers/StringSerializer.cjs"));
var _TupleSerializer = _interopRequireDefault(require("./Serializers/TupleSerializer.cjs"));
var _VariantSerializer = _interopRequireDefault(require("./Serializers/VariantSerializer.cjs"));
var _Bls12381FieldSerializer = _interopRequireDefault(require("./Serializers/Bls12381FieldSerializer.cjs"));
var _CalldataSerializer = _interopRequireDefault(require("./Serializers/CalldataSerializer.cjs"));
var _ContractBytecodeSerializer = _interopRequireDefault(require("./Serializers/ContractBytecodeSerializer.cjs"));
var _TypeSerializer = _interopRequireDefault(require("./Serializers/TypeSerializer.cjs"));
var _SerializerError = _interopRequireDefault(require("./Errors/SerializerError.cjs"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class Serializer extends _BaseSerializer.default {
constructor() {
super();
this.typeFactory = new _TypeFactory.default();
this._serializers = {
'void': new _VoidSerializer.default(),
'bool': new _BoolSerializer.default(),
'int': new _IntSerializer.default(),
'tuple': new _TupleSerializer.default(this),
'record': new _TupleSerializer.default(this),
'list': new _ListSerializer.default(this),
'set': new _SetSerializer.default(this),
'map': new _MapSerializer.default(this),
'byte_array': new _ByteArraySerializer.default(),
'string': new _StringSerializer.default(),
'hash': new _BytesSerializer.default(),
'signature': new _BytesSerializer.default(),
'bits': new _BitsSerializer.default(),
'variant': new _VariantSerializer.default(this),
'bytes': new _BytesSerializer.default(),
'account_pubkey': new _AddressSerializer.default(),
'contract_pubkey': new _ContractSerializer.default(),
'oracle_pubkey': new _OracleSerializer.default(),
'oracle_query_id': new _OracleQuerySerializer.default(),
'channel': new _ChannelSerializer.default(),
'bls12_381.fr': new _Bls12381FieldSerializer.default(),
'bls12_381.fp': new _Bls12381FieldSerializer.default(),
'calldata': new _CalldataSerializer.default(this),
'contract_bytearray': new _ContractBytecodeSerializer.default(this),
'type': new _TypeSerializer.default()
};
}
_getSerializer(type) {
if (!type.hasOwnProperty('name')) {
throw new _SerializerError.default('Unsupported type: ' + JSON.stringify(type));
}
const typeName = type.name;
if (!this._serializers.hasOwnProperty(typeName)) {
throw new _SerializerError.default('Unsupported type: ' + JSON.stringify(typeName));
}
return this._serializers[typeName];
}
serialize(data) {
if (typeof data !== 'object') {
throw new _SerializerError.default('Only object serialization is supported. Got: ' + JSON.stringify(data));
}
if (!(data instanceof _FateData.default)) {
throw new _SerializerError.default('Only instances of FateData is supported.');
}
return this._getSerializer(data).serialize(data);
}
deserializeWithType(data, type) {
if (!(data instanceof Uint8Array)) {
throw new _SerializerError.default('Only instances of Uint8Array is supported.');
}
return this._getSerializer(type).deserialize(data, type);
}
deserialize(data) {
if (!(data instanceof Uint8Array)) {
throw new _SerializerError.default('Only instances of Uint8Array is supported.');
}
const type = this.typeFactory.createType(data);
return this.deserializeWithType(data, type);
}
deserializeStream(data, typeInfo) {
if (!(data instanceof Uint8Array)) {
throw new _SerializerError.default('Only instances of Uint8Array is supported.');
}
let type = typeInfo;
if (typeof typeInfo === 'undefined') {
type = this.typeFactory.createType(data);
}
return this._getSerializer(type).deserializeStream(data, typeInfo);
}
}
var _default = exports.default = Serializer;