@jaenster/channels
Version:
simple concurrency channel messaging
26 lines • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseClient = void 0;
const events_1 = require("@jaenster/events");
const callAppend = (cb, ...args) => cb(args);
function filter([other, msg]) {
if (other === this)
return;
return this.in(msg, other);
}
const handler = Symbol('DataEventHandler');
class BaseClient extends events_1.EventTS {
constructor(eventQueue) {
super();
eventQueue && this.attach(eventQueue);
}
attach(eventQueue) {
eventQueue.on('data', this[handler] = filter.bind(this), this);
this.out = callAppend.bind(undefined, eventQueue.in.bind(eventQueue), this);
}
detach() {
this.off('data', this[handler]);
}
}
exports.BaseClient = BaseClient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmFzZS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQXlDO0FBR3pDLE1BQU0sVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFHN0MsU0FBUyxNQUFNLENBQStCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBcUI7SUFDMUUsSUFBSSxLQUFLLEtBQUssSUFBSTtRQUFFLE9BQU87SUFDM0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFM0MsTUFBc0IsVUFBYyxTQUFRLGdCQUFPO0lBSS9DLFlBQVksVUFBd0M7UUFDaEQsS0FBSyxFQUFFLENBQUM7UUFDUixVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBSUQsTUFBTSxDQUFDLFVBQXVDO1FBQzFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0o7QUFuQkQsZ0NBbUJDIn0=