react-application-core
Version:
A react-based application core for the business applications.
71 lines • 2.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PayloadWrapper = void 0;
var R = require("ramda");
var type_1 = require("../../util/type");
var object_status_1 = require("./object.status");
var command_result_1 = require("./command.result");
var protocol_interface_1 = require("./protocol.interface");
var cond_1 = require("../../util/cond");
/**
* @stable [24.05.2018]
*/
var PayloadWrapper = /** @class */ (function () {
/**
* @stable [24.05.2018]
* @param {IKeyValue | IProtocolPayloadEntity} payload
*/
function PayloadWrapper(payload) {
var payloadAsProtocolEntity = payload;
if (Object.keys(payload).length === 2
&& type_1.TypeUtils.isString(payloadAsProtocolEntity.type)
&& !R.isNil(payloadAsProtocolEntity.payload)) {
// Response
this.type = payloadAsProtocolEntity.type;
var payloadClass = protocol_interface_1.RESPONSE_PAYLOAD_OBJECTS_CLASSES.find(function (ctor) {
return Reflect.get(ctor, protocol_interface_1.$PROTOCOL_PAYLOAD_CLASS_IDENTIFIER) === payloadAsProtocolEntity.type;
});
if (payloadClass) {
this.payload = Object.assign(new payloadClass(), payloadAsProtocolEntity.payload);
}
else {
this.payload = payloadAsProtocolEntity.payload;
}
}
else {
// Request
this.type = Reflect.get(payload.constructor, protocol_interface_1.$PROTOCOL_PAYLOAD_CLASS_IDENTIFIER);
this.payload = payload;
}
}
/**
* @stable [21.05.2018]
* @returns {ObjectStatus}
*/
PayloadWrapper.prototype.getObjectStatus = function () {
return cond_1.ConditionUtils.orNull(this.payload instanceof object_status_1.ObjectStatus, this.payload);
};
/**
* @stable [08.11.2020]
*/
PayloadWrapper.prototype.getCommandResult = function () {
return cond_1.ConditionUtils.orNull(this.payload instanceof command_result_1.CommandResult, this.payload);
};
/**
* @stable [21.05.2018]
* @returns {AnyT}
*/
PayloadWrapper.prototype.getPayload = function () {
return this.payload;
};
/**
* @stable [21.05.2018]
* @returns {string}
*/
PayloadWrapper.prototype.getType = function () {
return this.type;
};
return PayloadWrapper;
}());
exports.PayloadWrapper = PayloadWrapper;
//# sourceMappingURL=payload.wrapper.js.map