UNPKG

@schoolbelle/common

Version:

Demo library to showcase Angular packaging format

193 lines (192 loc) 14.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Injectable, Inject, NgZone } from '@angular/core'; import { SOCKET_SERVER_HOST } from '@schoolbelle/common/tokens'; import { Subject } from 'rxjs'; import io from 'socket.io-client'; var SocketService = /** @class */ (function () { function SocketService(ngZone, socketHost) { var _this = this; this.ngZone = ngZone; this.socketHost = socketHost; this.listeners = new Map(); this.subject = new Subject(); // this.ngZone.runOutsideAngular(() => { this.socket = io(this.socketHost, { autoConnect: false }); this.socket.on('connect', function () { console.log('connected as ' + _this.socket.id); _this.listeners.forEach(function (listener) { _this.listen(listener.event, listener.timeout); }); }); // }); } /** * @param {?=} force * @return {?} */ SocketService.prototype.connect = /** * @param {?=} force * @return {?} */ function (force) { var _this = this; if (force === void 0) { force = false; } console.log('socket will connect.'); return new Promise(function (resolve, reject) { _this.ngZone.runOutsideAngular(function () { if (_this.socket.connected && force === true) { _this.socket.close(); } if (!_this.socket.connected) { _this.socket.open(); _this.socket.once('connect', function () { return resolve(true); }); } else { resolve(true); } }); }); }; /** * @param {?} event * @param {?=} timeout * @return {?} */ SocketService.prototype.timeout = /** * @param {?} event * @param {?=} timeout * @return {?} */ function (event, timeout) { var _this = this; if (timeout === void 0) { timeout = undefined; } if (typeof timeout !== 'number') return; return setTimeout(function () { _this.unlisten(event); }, timeout); // cancel this subscription in timeout seconds }; /** * @param {?} event * @param {?=} timeout * @return {?} */ SocketService.prototype.listen = /** * @param {?} event * @param {?=} timeout * @return {?} */ function (event, timeout) { var _this = this; if (timeout === void 0) { timeout = undefined; } // this.ngZone.runOutsideAngular(() => { if (this.listeners.get(event)) return; var /** @type {?} */ onGoingTimeout; if (typeof this.timeout === 'number') onGoingTimeout = this.timeout(event, timeout); this.connect().then(function () { _this.socket.on(event, function (data) { if (onGoingTimeout) clearTimeout(onGoingTimeout); // if something is emitted, reset the timeout unsubscription. onGoingTimeout = _this.timeout(event, timeout); // this.ngZone.run(() => { // this.ngZone.run(() => { _this.subject.next({ event: event, data: data }); // }); }); _this.listeners.set(event, { event: event, timeout: timeout }); }); // }); }; /** * @param {?} event * @return {?} */ SocketService.prototype.unlisten = /** * @param {?} event * @return {?} */ function (event) { if (!this.listeners.get(event)) return; this.listeners.delete(event); this.socket.off(event); }; /** * @param {?} room * @return {?} */ SocketService.prototype.join = /** * @param {?} room * @return {?} */ function (room) { var _this = this; this.ngZone.runOutsideAngular(function () { _this.connect().then(function () { _this.socket.emit('subscribe', room); }); }); }; /** * @param {?} room * @return {?} */ SocketService.prototype.leave = /** * @param {?} room * @return {?} */ function (room) { var _this = this; this.ngZone.runOutsideAngular(function () { _this.connect().then(function () { _this.socket.emit('unsubscribe', room); }); }); }; /** * @param {?} event * @return {?} */ SocketService.prototype.getObservable = /** * @param {?} event * @return {?} */ function (event) { return this.subject.asObservable().filter(function (data) { return data.event === event; }); }; SocketService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ SocketService.ctorParameters = function () { return [ { type: NgZone, }, { type: undefined, decorators: [{ type: Inject, args: [SOCKET_SERVER_HOST,] },] }, ]; }; return SocketService; }()); export { SocketService }; function SocketService_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ SocketService.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ SocketService.ctorParameters; /** @type {?} */ SocketService.prototype.socket; /** @type {?} */ SocketService.prototype.listeners; /** @type {?} */ SocketService.prototype.subject; /** @type {?} */ SocketService.prototype.ngZone; /** @type {?} */ SocketService.prototype.socketHost; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2Nob29sYmVsbGUvY29tbW9uL3NlcnZpY2VzLyIsInNvdXJjZXMiOlsic29ja2V0L3NyYy9zb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0lBV2hDLHVCQUNTLFFBQzZCO1FBRnRDLGlCQWFDO1FBWlEsV0FBTSxHQUFOLE1BQU07UUFDdUIsZUFBVSxHQUFWLFVBQVU7eUJBTEMsSUFBSSxHQUFHLEVBQUU7dUJBQ2xCLElBQUksT0FBTyxFQUFFOztRQU9uRCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBQSxRQUFRO2dCQUM3QixLQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQy9DLENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQzs7S0FFSjs7Ozs7SUFDRCwrQkFBTzs7OztJQUFQLFVBQVEsS0FBc0I7UUFBOUIsaUJBZUM7UUFmTyxzQkFBQSxFQUFBLGFBQXNCO1FBQzVCLE9BQU8sQ0FB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QUFDLGlCQUFpQixDQUFDO1lBQzVCLEtBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLEtBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNyQyxDQUFDLENBQUM7U0FDSixDQUFDLENBQUM7Ozs7OztJQUVFLDZCQUFLOzs7O2NBQUMsSUFBWTs7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztZQUM1QixLQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO2dCQUNsQixLQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDdkMsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDOzs7Ozs7SUFFTCxxQ0FBYTs7OztJQUFiLFVBQWMsS0FBSztRQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBcEIsQ0FBb0IsQ0FBQyxDQUFDO0tBQ3pFOztnQkFqRkYsVUFBVTs7OztnQkFSa0IsTUFBTTtnREFnQjlCLE1BQU0sU0FBQyxrQkFBa0I7O3dCQWhCOUI7O1NBU2EsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTT0NLRVRfU0VSVkVSX0hPU1QgfSBmcm9tICdAc2Nob29sYmVsbGUvY29tbW9uL3Rva2Vucyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgaW8gZnJvbSAnc29ja2V0LmlvLWNsaWVudCc7XG5cbmV4cG9ydCB0eXBlIFNvY2tldExpc3RlbmVyID0geyBldmVudDogc3RyaW5nOyB0aW1lb3V0PzogbnVtYmVyIH07XG5leHBvcnQgdHlwZSBTb2NrZXRFdmVudCA9IHsgZXZlbnQ6IHN0cmluZzsgZGF0YTogYW55IH07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTb2NrZXRTZXJ2aWNlIHtcbiAgcHVibGljIHNvY2tldDtcbiAgcHJpdmF0ZSBsaXN0ZW5lcnM6IE1hcDxzdHJpbmcsIFNvY2tldExpc3RlbmVyPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBzdWJqZWN0OiBTdWJqZWN0PFNvY2tldEV2ZW50PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5nWm9uZTogTmdab25lLFxuICAgIEBJbmplY3QoU09DS0VUX1NFUlZFUl9IT1NUKSBwcml2YXRlIHNvY2tldEhvc3Q6IHN0cmluZ1xuICApIHtcbiAgICAvLyB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgdGhpcy5zb2NrZXQgPSBpbyh0aGlzLnNvY2tldEhvc3QsIHsgYXV0b0Nvbm5lY3Q6IGZhbHNlIH0pO1xuICAgIHRoaXMuc29ja2V0Lm9uKCdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ2Nvbm5lY3RlZCBhcyAnICsgdGhpcy5zb2NrZXQuaWQpO1xuICAgICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgICAgIHRoaXMubGlzdGVuKGxpc3RlbmVyLmV2ZW50LCBsaXN0ZW5lci50aW1lb3V0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIH0pO1xuICB9XG4gIGNvbm5lY3QoZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc29sZS5sb2coJ3NvY2tldCB3aWxsIGNvbm5lY3QuJyk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc29ja2V0LmNvbm5lY3RlZCAmJiBmb3JjZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMuc29ja2V0LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNvY2tldC5jb25uZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnNvY2tldC5vcGVuKCk7XG4gICAgICAgICAgdGhpcy5zb2NrZXQub25jZSgnY29ubmVjdCcsICgpID0+IHJlc29sdmUodHJ1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgdGltZW91dChldmVudCwgdGltZW91dCA9IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgdGltZW91dCAhPT0gJ251bWJlcicpIHJldHVybjtcbiAgICByZXR1cm4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVubGlzdGVuKGV2ZW50KTtcbiAgICB9LCB0aW1lb3V0KTsgLy8gY2FuY2VsIHRoaXMgc3Vic2NyaXB0aW9uIGluIHRpbWVvdXQgc2Vjb25kc1xuICB9XG4gIHB1YmxpYyBsaXN0ZW4oZXZlbnQsIHRpbWVvdXQ6IG51bWJlciA9IHVuZGVmaW5lZCkge1xuICAgIC8vIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICBpZiAodGhpcy5saXN0ZW5lcnMuZ2V0KGV2ZW50KSkgcmV0dXJuO1xuICAgIGxldCBvbkdvaW5nVGltZW91dDtcbiAgICBpZiAodHlwZW9mIHRoaXMudGltZW91dCA9PT0gJ251bWJlcicpXG4gICAgICBvbkdvaW5nVGltZW91dCA9IHRoaXMudGltZW91dChldmVudCwgdGltZW91dCk7XG4gICAgdGhpcy5jb25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnNvY2tldC5vbihldmVudCwgZGF0YSA9PiB7XG4gICAgICAgIGlmIChvbkdvaW5nVGltZW91dCkgY2xlYXJUaW1lb3V0KG9uR29pbmdUaW1lb3V0KTsgLy8gaWYgc29tZXRoaW5nIGlzIGVtaXR0ZWQsIHJlc2V0IHRoZSB0aW1lb3V0IHVuc3Vic2NyaXB0aW9uLlxuICAgICAgICBvbkdvaW5nVGltZW91dCA9IHRoaXMudGltZW91dChldmVudCwgdGltZW91dCk7XG4gICAgICAgIC8vIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuc3ViamVjdC5uZXh0KHsgZXZlbnQ6IGV2ZW50LCBkYXRhOiBkYXRhIH0pO1xuICAgICAgICAvLyB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc2V0KGV2ZW50LCB7IGV2ZW50OiBldmVudCwgdGltZW91dDogdGltZW91dCB9KTtcbiAgICB9KTtcbiAgICAvLyB9KTtcbiAgfVxuICBwdWJsaWMgdW5saXN0ZW4oZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubGlzdGVuZXJzLmdldChldmVudCkpIHJldHVybjtcbiAgICB0aGlzLmxpc3RlbmVycy5kZWxldGUoZXZlbnQpO1xuICAgIHRoaXMuc29ja2V0Lm9mZihldmVudCk7XG4gIH1cbiAgcHVibGljIGpvaW4ocm9vbTogc3RyaW5nKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0KCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc29ja2V0LmVtaXQoJ3N1YnNjcmliZScsIHJvb20pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgcHVibGljIGxlYXZlKHJvb206IHN0cmluZykge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnNvY2tldC5lbWl0KCd1bnN1YnNjcmliZScsIHJvb20pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgZ2V0T2JzZXJ2YWJsZShldmVudCk6IE9ic2VydmFibGU8U29ja2V0RXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLmZpbHRlcihkYXRhID0+IGRhdGEuZXZlbnQgPT09IGV2ZW50KTtcbiAgfVxufVxuIl19