@aeternity/aepp-calldata
Version:
Aeternity data serialization library
32 lines (30 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ApiEncoder = _interopRequireDefault(require("./ApiEncoder.cjs"));
var _Serializer = _interopRequireDefault(require("./Serializer.cjs"));
var _ContractBytecodeSerializer = _interopRequireDefault(require("./Serializers/ContractBytecodeSerializer.cjs"));
var _IntSerializer = _interopRequireDefault(require("./Serializers/IntSerializer.cjs"));
var _FateTag = _interopRequireDefault(require("./FateTag.cjs"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class ContractEncoder {
constructor() {
this._apiEncoder = new _ApiEncoder.default();
this._contractBytecodeSerializer = new _ContractBytecodeSerializer.default(new _Serializer.default());
this._intSerializer = new _IntSerializer.default();
}
/**
* Decodes serialized contract metadata and bytecode
*
* @param {string} data - Contract bytearray data in a canonical format.
* @returns {Object} Decoded contract metadata as POJO.
*/
decode(data) {
const bytecode = this._apiEncoder.decodeWithType(data, 'contract_bytearray');
const fateContractBytearray = new Uint8Array([_FateTag.default.CONTRACT_BYTEARRAY, ...this._intSerializer.serialize(bytecode.length), ...bytecode]);
return this._contractBytecodeSerializer.deserialize(fateContractBytearray);
}
}
var _default = exports.default = ContractEncoder;