@aeternity/aepp-calldata
Version:
Aeternity data serialization library
66 lines (65 loc) • 3.71 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ApiEncoder = _interopRequireDefault(require("../ApiEncoder.cjs"));
var _ChainObjectSerializer = _interopRequireDefault(require("./ChainObjectSerializer.cjs"));
var _ChainObjectEncoder = _interopRequireDefault(require("./ChainObjectEncoder.cjs"));
var _PrimitivesEncoder = _interopRequireDefault(require("../PrimitivesEncoder.cjs"));
var _IdEncoder = _interopRequireDefault(require("../IdEncoder.cjs"));
var _FieldsEncoder = _interopRequireDefault(require("./FieldsEncoder.cjs"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class FieldEncoder {
constructor(additionalEncoders, additionalDecoders) {
this.primEncoder = new _PrimitivesEncoder.default();
this.apiEncoder = new _ApiEncoder.default();
this.idEncoder = new _IdEncoder.default(this.apiEncoder);
const fieldsEncoder = new _FieldsEncoder.default(this);
this.chainObjectEncoder = new _ChainObjectEncoder.default(fieldsEncoder);
this.chainObjectSerializer = new _ChainObjectSerializer.default(fieldsEncoder);
this.decoders = {
key_block_hash: value => this.apiEncoder.encode('key_block_hash', value),
micro_block_hash: value => this.apiEncoder.encode('micro_block_hash', value),
block_pof_hash: value => this.apiEncoder.encode('block_pof_hash', value),
block_tx_hash: value => this.apiEncoder.encode('block_tx_hash', value),
block_state_hash: value => this.apiEncoder.encode('block_state_hash', value),
signature: value => this.apiEncoder.encode('signature', value),
peer_pubkey: value => this.apiEncoder.encode('peer_pubkey', value),
account_pubkey: value => this.apiEncoder.encode('account_pubkey', value),
tx_hash: value => this.apiEncoder.encode('tx_hash', value),
bytearray: value => this.apiEncoder.encode('bytearray', value),
id: value => this.idEncoder.encode(value),
key_block: (value, _params) => this.chainObjectEncoder.decode('key_block', value),
micro_block: (value, _params) => this.chainObjectEncoder.decode('micro_block', value),
light_micro_block: (value, _params) => this.chainObjectEncoder.decode('light_micro_block', value),
chain_object: value => this.chainObjectSerializer.deserialize(value),
...additionalDecoders
};
this.encoders = {
key_block_hash: value => this.apiEncoder.decode(value),
micro_block_hash: value => this.apiEncoder.decode(value),
block_pof_hash: value => this.apiEncoder.decode(value),
block_tx_hash: value => this.apiEncoder.decode(value),
block_state_hash: value => this.apiEncoder.decode(value),
signature: value => this.apiEncoder.decode(value),
peer_pubkey: value => this.apiEncoder.decode(value),
account_pubkey: value => this.apiEncoder.decode(value),
tx_hash: value => this.apiEncoder.decode(value),
bytearray: value => this.apiEncoder.decode(value),
id: value => this.idEncoder.decode(value),
key_block: (value, _params) => this.chainObjectEncoder.encode(value),
micro_block: (value, _params) => this.chainObjectEncoder.encode(value),
light_micro_block: (value, _params) => this.chainObjectEncoder.encode(value),
chain_object: value => this.chainObjectSerializer.serialize(value),
...additionalEncoders
};
}
encode(type, value, params) {
return this.encoders.hasOwnProperty(type) ? this.encoders[type](value, params) : value;
}
decode(type, value, params) {
return this.decoders.hasOwnProperty(type) ? this.decoders[type](value, params) : value;
}
}
var _default = exports.default = FieldEncoder;