UNPKG

mongodb-stitch

Version:

[![Join the chat at https://gitter.im/mongodb/stitch](https://badges.gitter.im/mongodb/stitch.svg)](https://gitter.im/mongodb/stitch?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

104 lines 3.99 kB
var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "./Event", "./StitchEvent"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Event_1 = __importDefault(require("./Event")); var StitchEvent_1 = __importDefault(require("./StitchEvent")); var Stream = (function () { function Stream(eventStream, decoder) { this.eventStream = eventStream; this.decoder = decoder; this.listeners = []; } Stream.prototype.next = function () { var _this = this; return this.eventStream.nextEvent() .then(function (event) { var se = StitchEvent_1.default.fromEvent(event, _this.decoder); if (se.eventName === StitchEvent_1.default.ERROR_EVENT_NAME) { throw se.error; } if (se.eventName === Event_1.default.MESSAGE_EVENT) { return se.data; } return _this.next(); }); }; Stream.prototype.onNext = function (callback) { var _this = this; var wrapper = { onEvent: function (e) { var se = StitchEvent_1.default.fromEvent(e, _this.decoder); if (se.eventName !== Event_1.default.MESSAGE_EVENT) { return; } callback(se.data); } }; this.eventStream.addListener(wrapper); }; Stream.prototype.onError = function (callback) { var _this = this; var wrapper = { onEvent: function (e) { var se = StitchEvent_1.default.fromEvent(e, _this.decoder); if (se.eventName === StitchEvent_1.default.ERROR_EVENT_NAME) { callback(se.error); } } }; this.eventStream.addListener(wrapper); }; Stream.prototype.addListener = function (listener) { var _this = this; var wrapper = { onEvent: function (e) { var se = StitchEvent_1.default.fromEvent(e, _this.decoder); if (se.eventName === StitchEvent_1.default.ERROR_EVENT_NAME) { if (listener.onError) { listener.onError(se.error); } } else { if (listener.onNext) { listener.onNext(se.data); } } } }; this.listeners.push([listener, wrapper]); this.eventStream.addListener(wrapper); }; Stream.prototype.removeListener = function (listener) { var index = -1; for (var i = 0; i < this.listeners.length; i++) { if (this.listeners[i][0] === listener) { index = i; break; } } if (index === -1) { return; } var wrapper = this.listeners[index][1]; this.listeners.splice(index, 1); this.eventStream.removeListener(wrapper); }; Stream.prototype.close = function () { this.eventStream.close(); }; return Stream; }()); exports.default = Stream; }); //# sourceMappingURL=Stream.js.map