@airgap/serializer
Version:
The @airgap/serializer provides serializers used in AirGap applications.
76 lines • 3.71 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.IACMessageWrapper = void 0;
var bs58check = __importStar(require("@airgap/coinlib-core/dependencies/src/bs58check-2.1.2/index"));
var index_1 = require("@airgap/coinlib-core/dependencies/src/cbor-sync-1.0.4/index");
var pako_2_0_3_1 = require("@airgap/coinlib-core/dependencies/src/pako-2.0.3");
var message_1 = require("./message");
var payload_1 = require("./payload");
var serializer_1 = require("./serializer");
var interfaces_1 = require("./interfaces");
var SERIALIZER_VERSION = 3;
var IACMessageWrapper = /** @class */ (function () {
function IACMessageWrapper(data) {
this.version = SERIALIZER_VERSION;
this.payload = data;
}
IACMessageWrapper.prototype.decoded = function () {
return [this.version, this.payload];
};
IACMessageWrapper.prototype.encoded = function (serializer) {
if (serializer === void 0) { serializer = serializer_1.SerializerV3.getInstance(); }
var messageDefinition = this.payload
.asArray(serializer)
.filter(function (md) { return md.ok; })
.map(function (md) { return md.value; });
var arr = [this.version, messageDefinition];
var buffer = (0, index_1.encode)(arr);
var deflated = (0, pako_2_0_3_1.gzip)(buffer);
return bs58check.encode(Buffer.from(deflated));
};
IACMessageWrapper.fromDecoded = function (data) {
var payload = payload_1.Payload.fromDecoded(data.map(function (item) { return (0, interfaces_1.success)(item); }));
return new IACMessageWrapper(payload);
};
IACMessageWrapper.fromEncoded = function (data, serializer) {
if (serializer === void 0) { serializer = serializer_1.SerializerV3.getInstance(); }
var buffer = bs58check.decode(data);
var inflated = (0, pako_2_0_3_1.ungzip)(buffer);
var decoded = (0, index_1.decode)(Buffer.from(inflated));
if (parseInt(decoded[0].toString(), 10) !== SERIALIZER_VERSION) {
throw new Error('Unsupported version');
}
if (decoded[1].some(function (el) { return !(0, message_1.isMessageDefinitionArray)(el); })) {
throw new Error('Decoded message has wrong format');
}
var pay_load = decoded[1];
var _a = payload_1.Payload.fromEncoded(pay_load, serializer), payload = _a.payload, skippedPayload = _a.skippedPayload;
return { iACMessageWrapper: new IACMessageWrapper(payload), skippedPayload: skippedPayload };
};
return IACMessageWrapper;
}());
exports.IACMessageWrapper = IACMessageWrapper;
//# sourceMappingURL=iac-message-wrapper.js.map