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