data-transport
Version:
A simple and responsive transport
39 lines • 4.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.merge = void 0;
var tslib_1 = require("tslib");
var constant_1 = require("./constant");
var createTransport_1 = require("./createTransport");
/**
* Merge multiple transports into one transport
*/
var merge = function (first, seconds) {
var _args = [];
for (var _i = 2; _i < arguments.length; _i++) {
_args[_i - 2] = arguments[_i];
}
var args = tslib_1.__spreadArray([first, seconds], tslib_1.__read(_args), false);
if (typeof first === 'undefined' || typeof seconds === 'undefined') {
throw new Error("Only more than one transports can be merged.");
}
return (0, createTransport_1.createTransport)('Base', {
listener: function (callback) {
var handler = function (data) {
callback(data);
};
var disposers = args.map(function (transport) {
return transport[constant_1.listenerKey](handler);
});
return function () {
disposers.forEach(function (dispose) { return dispose && dispose(); });
};
},
sender: function (message) {
args.forEach(function (transport) {
transport[constant_1.senderKey](message);
});
},
});
};
exports.merge = merge;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHVDQUFvRDtBQUNwRCxxREFBb0Q7QUFJcEQ7O0dBRUc7QUFDSSxJQUFNLEtBQUssR0FBRyxVQUNuQixLQUFnQixFQUNoQixPQUFrQjtJQUNsQixlQUFxQjtTQUFyQixVQUFxQixFQUFyQixxQkFBcUIsRUFBckIsSUFBcUI7UUFBckIsOEJBQXFCOztJQUVyQixJQUFNLElBQUksR0FBRyx1QkFBQyxLQUFLLEVBQUUsT0FBTyxrQkFBSyxLQUFLLFNBQWdCLENBQUM7SUFDdkQsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDbkUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxPQUFPLElBQUEsaUNBQWUsRUFBQyxNQUFNLEVBQUU7UUFDN0IsUUFBUSxFQUFFLFVBQUMsUUFBUTtZQUNqQixJQUFNLE9BQU8sR0FBRyxVQUFDLElBQXFCO2dCQUNwQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDO1lBQ0YsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFDLFNBQVM7Z0JBQ25DLE9BQUEsU0FBUyxDQUFDLHNCQUFXLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFBL0IsQ0FBK0IsQ0FDaEMsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFDLE9BQU8sSUFBSyxPQUFBLE9BQU8sSUFBSSxPQUFPLEVBQUUsRUFBcEIsQ0FBb0IsQ0FBQyxDQUFDO1lBQ3ZELENBQUMsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLEVBQUUsVUFBQyxPQUFPO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFDLFNBQVM7Z0JBQ3JCLFNBQVMsQ0FBQyxvQkFBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBM0JXLFFBQUEsS0FBSyxTQTJCaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsaXN0ZW5lcktleSwgc2VuZGVyS2V5IH0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQgeyBjcmVhdGVUcmFuc3BvcnQgfSBmcm9tICcuL2NyZWF0ZVRyYW5zcG9ydCc7XG5pbXBvcnQgdHlwZSB7IExpc3RlbmVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0JztcblxuLyoqXG4gKiBNZXJnZSBtdWx0aXBsZSB0cmFuc3BvcnRzIGludG8gb25lIHRyYW5zcG9ydFxuICovXG5leHBvcnQgY29uc3QgbWVyZ2UgPSAoXG4gIGZpcnN0OiBUcmFuc3BvcnQsXG4gIHNlY29uZHM6IFRyYW5zcG9ydCxcbiAgLi4uX2FyZ3M6IFRyYW5zcG9ydFtdXG4pID0+IHtcbiAgY29uc3QgYXJncyA9IFtmaXJzdCwgc2Vjb25kcywgLi4uX2FyZ3NdIGFzIFRyYW5zcG9ydFtdO1xuICBpZiAodHlwZW9mIGZpcnN0ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2Ygc2Vjb25kcyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE9ubHkgbW9yZSB0aGFuIG9uZSB0cmFuc3BvcnRzIGNhbiBiZSBtZXJnZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVRyYW5zcG9ydCgnQmFzZScsIHtcbiAgICBsaXN0ZW5lcjogKGNhbGxiYWNrKSA9PiB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gKGRhdGE6IExpc3RlbmVyT3B0aW9ucykgPT4ge1xuICAgICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICAgIH07XG4gICAgICBjb25zdCBkaXNwb3NlcnMgPSBhcmdzLm1hcCgodHJhbnNwb3J0KSA9PlxuICAgICAgICB0cmFuc3BvcnRbbGlzdGVuZXJLZXldKGhhbmRsZXIpXG4gICAgICApO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZGlzcG9zZXJzLmZvckVhY2goKGRpc3Bvc2UpID0+IGRpc3Bvc2UgJiYgZGlzcG9zZSgpKTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBzZW5kZXI6IChtZXNzYWdlKSA9PiB7XG4gICAgICBhcmdzLmZvckVhY2goKHRyYW5zcG9ydCkgPT4ge1xuICAgICAgICB0cmFuc3BvcnRbc2VuZGVyS2V5XShtZXNzYWdlKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pO1xufTtcbiJdfQ==