@senior-gestao-empresarial/angular-components 6.12.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/bundles/senior-gestao-empresarial-angular-components.umd.js +454 -255
  2. package/bundles/senior-gestao-empresarial-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-gestao-empresarial-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-gestao-empresarial-angular-components.umd.min.js.map +1 -1
  5. package/components/utils/async-lock.d.ts +6 -0
  6. package/components/websocket/index.d.ts +2 -0
  7. package/components/websocket/models/index.d.ts +1 -0
  8. package/components/websocket/models/primitive-manager.d.ts +19 -0
  9. package/components/websocket/protocols/index.d.ts +2 -0
  10. package/components/websocket/protocols/on-event-options.d.ts +8 -0
  11. package/components/websocket/protocols/primitive-event.d.ts +10 -0
  12. package/components/websocket/user-information.service.d.ts +7 -0
  13. package/components/websocket/websocket.service.d.ts +78 -74
  14. package/esm2015/components/utils/async-lock.js +34 -0
  15. package/esm2015/components/websocket/index.js +2 -1
  16. package/esm2015/components/websocket/models/index.js +2 -0
  17. package/esm2015/components/websocket/models/primitive-manager.js +39 -0
  18. package/esm2015/components/websocket/protocols/index.js +1 -0
  19. package/esm2015/components/websocket/protocols/on-event-options.js +1 -0
  20. package/esm2015/components/websocket/protocols/primitive-event.js +1 -0
  21. package/esm2015/components/websocket/user-information.service.js +34 -0
  22. package/esm2015/components/websocket/websocket.service.js +269 -195
  23. package/esm2015/senior-gestao-empresarial-angular-components.js +4 -3
  24. package/esm5/components/utils/async-lock.js +43 -0
  25. package/esm5/components/websocket/index.js +2 -1
  26. package/esm5/components/websocket/models/index.js +2 -0
  27. package/esm5/components/websocket/models/primitive-manager.js +58 -0
  28. package/esm5/components/websocket/protocols/index.js +1 -0
  29. package/esm5/components/websocket/protocols/on-event-options.js +1 -0
  30. package/esm5/components/websocket/protocols/primitive-event.js +1 -0
  31. package/esm5/components/websocket/user-information.service.js +38 -0
  32. package/esm5/components/websocket/websocket.service.js +326 -255
  33. package/esm5/senior-gestao-empresarial-angular-components.js +4 -3
  34. package/fesm2015/senior-gestao-empresarial-angular-components.js +364 -193
  35. package/fesm2015/senior-gestao-empresarial-angular-components.js.map +1 -1
  36. package/fesm5/senior-gestao-empresarial-angular-components.js +451 -254
  37. package/fesm5/senior-gestao-empresarial-angular-components.js.map +1 -1
  38. package/package.json +3 -3
  39. package/senior-gestao-empresarial-angular-components.d.ts +3 -2
  40. package/senior-gestao-empresarial-angular-components.metadata.json +1 -1
@@ -3,8 +3,8 @@ import { Input, Component, NgModule, Injectable, Inject, ɵɵdefineInjectable,
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { BreadcrumbModule as BreadcrumbModule$1 } from 'primeng/breadcrumb';
5
5
  import { NavigationEnd, PRIMARY_OUTLET, ActivatedRoute, Router, RouterModule } from '@angular/router';
6
- import { Subject, throwError, interval, of, BehaviorSubject, race, timer, iif, fromEvent, ReplaySubject } from 'rxjs';
7
- import { takeUntil, filter, catchError, map, takeWhile, switchMap, take, finalize, first } from 'rxjs/operators';
6
+ import { Subject, throwError, interval, of, BehaviorSubject, ReplaySubject } from 'rxjs';
7
+ import { takeUntil, filter, catchError, map, takeWhile, switchMap, take, finalize } from 'rxjs/operators';
8
8
  import * as moment_ from 'moment';
9
9
  import { FormField, FieldType } from '@seniorsistemas/angular-components';
10
10
  import { HttpParams, HttpClient } from '@angular/common/http';
@@ -13,9 +13,9 @@ import { TranslateService } from '@ngx-translate/core';
13
13
  import { HttpInterceptorModule } from '@seniorsistemas/platform-components';
14
14
  import { user } from '@seniorsistemas/senior-platform-data';
15
15
  import { FormControl, FormGroup } from '@angular/forms';
16
- import { Stomp } from '@stomp/stompjs';
17
- import { get } from 'js-cookie';
16
+ import { Client, FrameImpl } from '@stomp/stompjs';
18
17
  import * as SockJS from 'sockjs-client';
18
+ import { get } from 'js-cookie';
19
19
 
20
20
  var BreadcrumbComponent = /** @class */ (function () {
21
21
  function BreadcrumbComponent(activatedRoute, router) {
@@ -7206,320 +7206,517 @@ var NpsService = /** @class */ (function () {
7206
7206
  return NpsService;
7207
7207
  }());
7208
7208
 
7209
+ var AsyncLock = /** @class */ (function () {
7210
+ function AsyncLock() {
7211
+ this.queue = [];
7212
+ this.acquired = false;
7213
+ }
7214
+ AsyncLock.prototype.acquire = function () {
7215
+ return __awaiter(this, void 0, void 0, function () {
7216
+ var _this = this;
7217
+ return __generator(this, function (_a) {
7218
+ if (!this.acquired) {
7219
+ this.acquired = true;
7220
+ return [2 /*return*/, Promise.resolve()];
7221
+ }
7222
+ else {
7223
+ return [2 /*return*/, new Promise(function (resolve, _) {
7224
+ _this.queue.push(resolve);
7225
+ })];
7226
+ }
7227
+ return [2 /*return*/];
7228
+ });
7229
+ });
7230
+ };
7231
+ AsyncLock.prototype.release = function () {
7232
+ return __awaiter(this, void 0, void 0, function () {
7233
+ var continuation;
7234
+ return __generator(this, function (_a) {
7235
+ if (this.queue.length === 0 && this.acquired) {
7236
+ this.acquired = false;
7237
+ return [2 /*return*/, Promise.resolve()];
7238
+ }
7239
+ continuation = this.queue.shift();
7240
+ return [2 /*return*/, new Promise(function (res) {
7241
+ continuation();
7242
+ res();
7243
+ })];
7244
+ });
7245
+ });
7246
+ };
7247
+ return AsyncLock;
7248
+ }());
7249
+
7250
+ var UserInformationService = /** @class */ (function () {
7251
+ function UserInformationService() {
7252
+ }
7253
+ UserInformationService_1 = UserInformationService;
7254
+ UserInformationService.prototype.getAuthToken = function () {
7255
+ var cookieValue = get(UserInformationService_1.TOKEN_COOKIE_KEY) || '{}';
7256
+ var authToken = JSON.parse(cookieValue);
7257
+ return authToken.access_token;
7258
+ };
7259
+ UserInformationService.prototype.getTenantDomain = function () {
7260
+ var cookieValue = get(UserInformationService_1.TOKEN_COOKIE_KEY) || '{}';
7261
+ var authToken = JSON.parse(cookieValue);
7262
+ return authToken.username.split('@')[1];
7263
+ };
7264
+ UserInformationService.prototype.getWebSocketUrl = function () {
7265
+ var baseUrl = get(UserInformationService_1.BASE_URL_COOKIE_KEY);
7266
+ if (baseUrl && !baseUrl.endsWith('/')) {
7267
+ baseUrl += '/';
7268
+ }
7269
+ return baseUrl + 'websocket';
7270
+ };
7271
+ var UserInformationService_1;
7272
+ UserInformationService.BASE_URL_COOKIE_KEY = 'com.senior.base.url';
7273
+ UserInformationService.TOKEN_COOKIE_KEY = 'com.senior.token';
7274
+ UserInformationService.ɵprov = ɵɵdefineInjectable({ factory: function UserInformationService_Factory() { return new UserInformationService(); }, token: UserInformationService, providedIn: "root" });
7275
+ UserInformationService = UserInformationService_1 = __decorate([
7276
+ Injectable({
7277
+ providedIn: 'root'
7278
+ })
7279
+ ], UserInformationService);
7280
+ return UserInformationService;
7281
+ }());
7282
+
7283
+ var PrimitiveManager = /** @class */ (function () {
7284
+ function PrimitiveManager(domain, service, primitive) {
7285
+ this.domain = domain;
7286
+ this.service = service;
7287
+ this.primitive = primitive;
7288
+ this.stompSubscriptions = [];
7289
+ this.event$ = new Subject();
7290
+ this.subscribed$ = new BehaviorSubject(false);
7291
+ }
7292
+ PrimitiveManager.prototype.unsubscribe = function () {
7293
+ var e_1, _a;
7294
+ this.event$.complete();
7295
+ try {
7296
+ for (var _b = __values(this.stompSubscriptions), _c = _b.next(); !_c.done; _c = _b.next()) {
7297
+ var stompSubscription = _c.value;
7298
+ stompSubscription.unsubscribe();
7299
+ }
7300
+ }
7301
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
7302
+ finally {
7303
+ try {
7304
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
7305
+ }
7306
+ finally { if (e_1) throw e_1.error; }
7307
+ }
7308
+ this.subscribed$.complete();
7309
+ };
7310
+ PrimitiveManager.prototype.fireEvent = function (event) {
7311
+ this.event$.next(event);
7312
+ };
7313
+ PrimitiveManager.prototype.subscribe = function () {
7314
+ var _a;
7315
+ var subscriptions = [];
7316
+ for (var _i = 0; _i < arguments.length; _i++) {
7317
+ subscriptions[_i] = arguments[_i];
7318
+ }
7319
+ (_a = this.stompSubscriptions).push.apply(_a, __spread(subscriptions));
7320
+ this.subscribed$.next(true);
7321
+ };
7322
+ PrimitiveManager.prototype.getEventObservable = function () {
7323
+ return this.event$.asObservable();
7324
+ };
7325
+ PrimitiveManager.prototype.getSubscriptionObservable = function () {
7326
+ return this.subscribed$.asObservable();
7327
+ };
7328
+ PrimitiveManager.prototype.hasObservers = function () {
7329
+ // @IMPORTANT: Replace .observers.length === 1 with .observed in rxjs 7.0+
7330
+ return this.event$.observers.length !== 1;
7331
+ };
7332
+ PrimitiveManager.prototype.getObserversCount = function () {
7333
+ return this.event$.observers.length;
7334
+ };
7335
+ return PrimitiveManager;
7336
+ }());
7337
+
7338
+ var RECONNECT_INTERVAL_MILLISECONDS = 3000;
7339
+ var CONNECTION_TIMEOUT_MILLISECONDS = 5000;
7209
7340
  var WebsocketService = /** @class */ (function () {
7210
- function WebsocketService() {
7211
- /** @private */
7212
- this.wasConnected = false;
7213
- /** @private */
7214
- this.isConnected = false;
7215
- /** @private */
7216
- this.isConnecting = false;
7217
- /** @private */
7218
- this.primitiveManagers = new Map();
7219
- /** @private */
7341
+ function WebsocketService(userInformationService) {
7342
+ this.userInformationService = userInformationService;
7220
7343
  this.connected$ = new BehaviorSubject(false);
7221
- /** @private */
7222
- this.disconnect$ = new Subject();
7223
- /** @private */
7224
- this.reconnect$ = new Subject();
7225
- /** @private */
7344
+ this.disconnected$ = new Subject();
7345
+ this.reconnected$ = new Subject();
7226
7346
  this.error$ = new Subject();
7227
7347
  this.subscribed$ = new Subject();
7348
+ this.primitiveManagers = new Map();
7349
+ this.connectionLock = new AsyncLock();
7350
+ this.debugEnable = false;
7351
+ this.lostConnection = false;
7228
7352
  }
7229
- WebsocketService_1 = WebsocketService;
7230
7353
  /**
7231
- * Observable responsável por emitir uma notificação quando a conexão websocket é estabelecida pela primeira vez.
7232
- * @return Um `Observable<void>` que emite uma notificação quando a conexão websocket é estabelecida pela primeira vez.
7354
+ * Enables stompjs debug logs and additional info
7233
7355
  */
7234
- WebsocketService.prototype.onConnect = function () {
7235
- return this.connected$.asObservable().pipe(filter(Boolean), map(function () { return undefined; }), take(1));
7356
+ WebsocketService.prototype.enableDebugLogs = function () {
7357
+ this.debugEnable = true;
7236
7358
  };
7237
7359
  /**
7238
- * Observable responsável por emitir uma notificação quando a conexão é desconectada.
7239
- * @return Um `Observable<void>` que emite uma notificação quando a conexão é desconectada.
7360
+ * Manually starts the connection
7240
7361
  */
7241
- WebsocketService.prototype.onDisconnect = function () {
7242
- return this.disconnect$.asObservable();
7362
+ WebsocketService.prototype.connect = function () {
7363
+ return __awaiter(this, void 0, void 0, function () {
7364
+ var stompConfig;
7365
+ var _this = this;
7366
+ return __generator(this, function (_a) {
7367
+ switch (_a.label) {
7368
+ case 0: return [4 /*yield*/, this.connectionLock.acquire()];
7369
+ case 1:
7370
+ _a.sent();
7371
+ _a.label = 2;
7372
+ case 2:
7373
+ _a.trys.push([2, , 3, 5]);
7374
+ if (this.isConnected() || this.isConnecting()) {
7375
+ return [2 /*return*/];
7376
+ }
7377
+ this.lostConnection = false;
7378
+ stompConfig = {
7379
+ webSocketFactory: function () {
7380
+ return new SockJS(_this.getSubscriptionUrl(), null, {
7381
+ timeout: CONNECTION_TIMEOUT_MILLISECONDS
7382
+ });
7383
+ },
7384
+ connectionTimeout: CONNECTION_TIMEOUT_MILLISECONDS,
7385
+ reconnectDelay: RECONNECT_INTERVAL_MILLISECONDS,
7386
+ debug: this.debug.bind(this),
7387
+ onConnect: this.handleOnConnected.bind(this),
7388
+ onDisconnect: this.handleOnDisconnect.bind(this),
7389
+ onWebSocketClose: this.handleOnWebSocketClose.bind(this),
7390
+ onStompError: this.handleOnStompError.bind(this),
7391
+ onWebSocketError: this.handleOnWebSocketError.bind(this)
7392
+ };
7393
+ this.debug('Connecting the Webscoket');
7394
+ this.stompClient = new Client(stompConfig);
7395
+ this.stompClient.activate();
7396
+ return [3 /*break*/, 5];
7397
+ case 3: return [4 /*yield*/, this.connectionLock.release()];
7398
+ case 4:
7399
+ _a.sent();
7400
+ return [7 /*endfinally*/];
7401
+ case 5: return [2 /*return*/];
7402
+ }
7403
+ });
7404
+ });
7243
7405
  };
7244
7406
  /**
7245
- * Observable responsável por emitir uma notificação quando a conexão é reconectada.
7246
- * @return Um `Observable<void>` que emite uma notificação quando a conexão é reconectada.
7407
+ * Manually disconnect the websocket. The reconnect loop will be stopped.
7247
7408
  */
7248
- WebsocketService.prototype.onReconnect = function () {
7249
- return this.reconnect$.asObservable();
7409
+ WebsocketService.prototype.disconnect = function () {
7410
+ return __awaiter(this, void 0, void 0, function () {
7411
+ var _a, _b, primitiveManager;
7412
+ var e_1, _c;
7413
+ return __generator(this, function (_d) {
7414
+ switch (_d.label) {
7415
+ case 0:
7416
+ if (!this.isConnected()) {
7417
+ return [2 /*return*/];
7418
+ }
7419
+ return [4 /*yield*/, this.connectionLock.acquire()];
7420
+ case 1:
7421
+ _d.sent();
7422
+ _d.label = 2;
7423
+ case 2:
7424
+ _d.trys.push([2, , 5, 7]);
7425
+ try {
7426
+ for (_a = __values(this.primitiveManagers.values()), _b = _a.next(); !_b.done; _b = _a.next()) {
7427
+ primitiveManager = _b.value;
7428
+ primitiveManager.unsubscribe();
7429
+ }
7430
+ }
7431
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
7432
+ finally {
7433
+ try {
7434
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
7435
+ }
7436
+ finally { if (e_1) throw e_1.error; }
7437
+ }
7438
+ this.primitiveManagers.clear();
7439
+ this.connected$.next(false);
7440
+ if (!this.stompClient) return [3 /*break*/, 4];
7441
+ return [4 /*yield*/, this.stompClient.deactivate()];
7442
+ case 3:
7443
+ _d.sent();
7444
+ _d.label = 4;
7445
+ case 4: return [3 /*break*/, 7];
7446
+ case 5: return [4 /*yield*/, this.connectionLock.release()];
7447
+ case 6:
7448
+ _d.sent();
7449
+ return [7 /*endfinally*/];
7450
+ case 7: return [2 /*return*/];
7451
+ }
7452
+ });
7453
+ });
7250
7454
  };
7251
7455
  /**
7252
- * Observable responsável por emitir uma notificação após o subscribe do evento pela primeira vez.
7253
- * @return Um `Observable<void>` que emite uma notificação após o subscribe do evento pela primeira vez.
7456
+ * Check if the websocket is connected
7457
+ * @return `boolean` representing if the websocket is connected
7254
7458
  */
7255
- WebsocketService.prototype.onSubscribe = function (_a) {
7256
- var _this = this;
7257
- var domain = _a.domain, service = _a.service, primitive = _a.primitive;
7258
- var key = this.getPrimitiveManagerKey(domain, service, primitive);
7259
- return this.onConnect().pipe(switchMap(function () {
7260
- if (_this.primitiveManagers.has(key))
7261
- return _this.primitiveManagers
7262
- .get(key)
7263
- .subscribed$.asObservable()
7264
- .pipe(map(function () { return undefined; }), take(1));
7265
- return _this.subscribed$.asObservable().pipe(filter(function (primitiveManager) {
7266
- return _this.getPrimitiveManagerKey(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive) === key;
7267
- }), map(function () { return undefined; }), take(1));
7268
- }));
7459
+ WebsocketService.prototype.isConnected = function () {
7460
+ if (!this.stompClient) {
7461
+ return false;
7462
+ }
7463
+ return this.stompClient.connected;
7464
+ };
7465
+ /**
7466
+ * Check if the websocket is tring to connect
7467
+ * @return `boolean` representing if the websocket status
7468
+ */
7469
+ WebsocketService.prototype.isConnecting = function () {
7470
+ if (!this.stompClient) {
7471
+ return false;
7472
+ }
7473
+ return !this.stompClient.connected && this.stompClient.active;
7474
+ };
7475
+ /**
7476
+ * Event responsable to emit an event when the connection is established.
7477
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
7478
+ * @return `Observable<boolean>`
7479
+ */
7480
+ WebsocketService.prototype.onConnect = function () {
7481
+ return this.connected$.asObservable()
7482
+ .pipe(filter(function (p) { return p === true; }));
7269
7483
  };
7270
7484
  /**
7271
- * Observable responsável por emitir uma notificação quando ocorre algum erro.
7272
- * @return Um `Observable<FrameImpl>` que emite uma notificação quando ocorre algum erro.
7485
+ * Event responsable to emit an event when the connection is closed.
7486
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
7487
+ * @return `Observable<void>`
7488
+ */
7489
+ WebsocketService.prototype.onDisconnect = function () {
7490
+ return this.disconnected$.asObservable();
7491
+ };
7492
+ /**
7493
+ * Event responsable to emit an event when the connection is reestablished.
7494
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
7495
+ * @return `Observable<void>`
7496
+ */
7497
+ WebsocketService.prototype.onReconnect = function () {
7498
+ return this.reconnected$.asObservable();
7499
+ };
7500
+ /**
7501
+ * Event responsable to emit an event when an error ocurred.
7502
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
7503
+ * @return `Observable<FrameImpl>`
7273
7504
  */
7274
7505
  WebsocketService.prototype.onError = function () {
7275
7506
  return this.error$.asObservable();
7276
7507
  };
7277
7508
  /**
7278
- * @typeParam `<T>` Tipo do objeto que o retorno do `observable` vai devolver.
7279
- * @param {Object} options Objeto de configuração do evento.
7280
- * @param {string} options.domain Domínio da primitiva.
7281
- * @param {string} options.service Serviço da primitiva.
7282
- * @param {string} options.primitive Primitiva que será "observada".
7283
- * @return Um Observable<T> que emite notificações toda vez que o respectivo evento é publicado.
7509
+ * Event responsible to emit an event when a primitive is called.
7510
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
7511
+ * @typeParam `<T>` Object type that will be used in the observable for the `data` property.
7512
+ * @param {OnEventOptions} options Configurations for the event.
7513
+ * @return `Observable<PrimitiveEvent<T>>` Observable that emits an event when the service calls the primitive.
7284
7514
  */
7285
7515
  WebsocketService.prototype.onEvent = function (options) {
7286
7516
  var _this = this;
7287
- this.connect();
7288
7517
  var domain = options.domain, service = options.service, primitive = options.primitive;
7289
- var key = this.getPrimitiveManagerKey(domain, service, primitive);
7518
+ var key = this.buildPrimitiveManagerKey(domain, service, primitive);
7290
7519
  if (this.primitiveManagers.has(key)) {
7291
- return this.primitiveManagers.get(key).event$.asObservable();
7520
+ return this.primitiveManagers.get(key).getEventObservable();
7292
7521
  }
7293
- var primitiveManager = {
7294
- domain: domain,
7295
- service: service,
7296
- primitive: primitive,
7297
- stompSubscriptions: [],
7298
- event$: new Subject(),
7299
- subscribed$: new BehaviorSubject(false)
7300
- };
7522
+ var primitiveManager = new PrimitiveManager(domain, service, primitive);
7301
7523
  this.primitiveManagers.set(key, primitiveManager);
7302
- this.onConnect()
7303
- .pipe(take(1))
7304
- .subscribe(function () {
7305
- _this.createStompSubscriptions(primitiveManager);
7524
+ this.connect().then(function () {
7525
+ _this.onConnect()
7526
+ .pipe(take(1))
7527
+ .subscribe(function () {
7528
+ _this.createStompSubscriptions(primitiveManager);
7529
+ });
7306
7530
  });
7307
- return primitiveManager.event$
7308
- .asObservable()
7309
- .pipe(finalize(function () { return _this.disconnectPrimitiveOnFinalize(primitiveManager); }));
7531
+ return primitiveManager
7532
+ .getEventObservable()
7533
+ .pipe(finalize(function () { return _this.unsubscribePrimitiveOnFinalize(primitiveManager); }));
7310
7534
  };
7311
- /** @private */
7312
- WebsocketService.prototype.createStompSubscriptions = function (primitiveManager) {
7313
- var withTokenUrl = this.getSubscriptionUrlWithToken(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive);
7314
- var stompSubscriptionWithToken = this.createStompSubscription(withTokenUrl, primitiveManager);
7315
- var withoutTokenUrl = this.getSubscriptionUrlWithoutToken(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive);
7316
- var stompSubscriptionWithoutToken = this.createStompSubscription(withoutTokenUrl, primitiveManager);
7317
- primitiveManager.stompSubscriptions = [
7318
- stompSubscriptionWithToken,
7319
- stompSubscriptionWithoutToken
7320
- ];
7321
- primitiveManager.subscribed$.next(true);
7322
- this.subscribed$.next(primitiveManager);
7323
- };
7324
- /** @private */
7325
- WebsocketService.prototype.connect = function () {
7535
+ /**
7536
+ * Event responsible to emit an event when a subscription is created for the primitive.
7537
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
7538
+ * @param {OnEventOptions} options Configurations for the event.
7539
+ * Observable responsável por emitir uma notificação após o subscribe do evento pela primeira vez.
7540
+ * @return `Observable<boolean>` Observable that emits an event when the service calls the primitive.
7541
+ */
7542
+ WebsocketService.prototype.onSubscribe = function (options) {
7326
7543
  var _this = this;
7327
- if (this.isConnected || this.isConnecting)
7328
- return;
7329
- this.createStompClient();
7330
- this.isConnecting = true;
7331
- this._stompClient.connect({}, function () {
7332
- _this.isConnecting = false;
7333
- _this.isConnected = true;
7334
- if (_this.wasConnected) {
7335
- _this.reconnectPrimitives();
7336
- _this.connected$.next(true);
7337
- _this.reconnect$.next();
7544
+ var domain = options.domain, service = options.service, primitive = options.primitive;
7545
+ var key = this.buildPrimitiveManagerKey(domain, service, primitive);
7546
+ return this.onConnect().pipe(take(1), switchMap(function () {
7547
+ if (_this.primitiveManagers.has(key)) {
7548
+ return _this.primitiveManagers
7549
+ .get(key)
7550
+ .getSubscriptionObservable()
7551
+ .pipe(take(1));
7338
7552
  }
7339
- else {
7340
- _this.wasConnected = true;
7341
- _this.connected$.next(true);
7342
- }
7343
- }, function (error) {
7344
- _this.isConnected = false;
7345
- _this.connected$.next(false);
7346
- _this.error$.next(error);
7347
- race(_this.disconnect$.pipe(take(1), map(function () { return ({ wasDisconnected: true }); })), timer(WebsocketService_1.RECONNECT_INTERVAL).pipe(take(1), switchMap(function () {
7348
- return iif(function () { return document.hidden; }, fromEvent(document, 'visibilitychange').pipe(first()), of(void 0));
7349
- }), map(function () { return ({ wasDisconnected: false }); })))
7350
- .pipe(take(1))
7351
- .subscribe({
7352
- next: function (_a) {
7353
- var wasDisconnected = _a.wasDisconnected;
7354
- if (!wasDisconnected &&
7355
- !(_this.isConnected || _this.isConnecting)) {
7356
- _this.connect();
7357
- }
7358
- }
7359
- });
7360
- });
7553
+ return _this.subscribed$.asObservable().pipe(filter(function (primitiveManager) {
7554
+ return _this.buildPrimitiveManagerKey(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive) === key;
7555
+ }), map(function () { return true; }), take(1));
7556
+ }));
7361
7557
  };
7362
- WebsocketService.prototype.disconnect = function () {
7363
- var e_1, _a, e_2, _b, e_3, _c;
7364
- if (!this.isConnected || this.getObserversCount() > 0) {
7558
+ WebsocketService.prototype.debug = function (message) {
7559
+ var optionalParams = [];
7560
+ for (var _i = 1; _i < arguments.length; _i++) {
7561
+ optionalParams[_i - 1] = arguments[_i];
7562
+ }
7563
+ if (!this.debugEnable) {
7365
7564
  return;
7366
7565
  }
7367
- try {
7368
- for (var _d = __values(this.primitiveManagers.values()), _e = _d.next(); !_e.done; _e = _d.next()) {
7369
- var primitiveManager = _e.value;
7370
- try {
7371
- for (var _f = (e_2 = void 0, __values(primitiveManager.stompSubscriptions)), _g = _f.next(); !_g.done; _g = _f.next()) {
7372
- var stompSubscription = _g.value;
7373
- stompSubscription.unsubscribe();
7374
- }
7375
- }
7376
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
7377
- finally {
7378
- try {
7379
- if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
7380
- }
7381
- finally { if (e_2) throw e_2.error; }
7382
- }
7383
- }
7566
+ console.log.apply(console, __spread(['WS debug: ' + message], optionalParams));
7567
+ };
7568
+ WebsocketService.prototype.info = function (message) {
7569
+ console.info('WS info: ' + message);
7570
+ };
7571
+ WebsocketService.prototype.handleOnConnected = function () {
7572
+ this.info('Webscoket connected');
7573
+ this.connected$.next(true);
7574
+ if (this.lostConnection) {
7575
+ this.info('Webscoket reconnected, recriating subscriptions');
7576
+ this.handleReconnection();
7384
7577
  }
7385
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
7386
- finally {
7387
- try {
7388
- if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
7389
- }
7390
- finally { if (e_1) throw e_1.error; }
7578
+ };
7579
+ WebsocketService.prototype.handleOnDisconnect = function () {
7580
+ this.info('Webscoket disconnected');
7581
+ this.connected$.next(false);
7582
+ this.disconnected$.next();
7583
+ };
7584
+ WebsocketService.prototype.handleOnWebSocketClose = function (data) {
7585
+ if (data.reason && data.reason.toLowerCase().indexOf("go away") !== -1) {
7586
+ this.lostConnection = true;
7587
+ this.handleError('AuthenticationError', new FrameImpl({
7588
+ command: data.type,
7589
+ headers: {
7590
+ message: data.reason
7591
+ }
7592
+ }));
7593
+ return;
7391
7594
  }
7392
- try {
7393
- for (var _h = __values(this.primitiveManagers.values()), _j = _h.next(); !_j.done; _j = _h.next()) {
7394
- var primitiveManager = _j.value;
7395
- primitiveManager.event$.complete();
7396
- }
7595
+ if (data.wasClean) {
7596
+ return;
7397
7597
  }
7398
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
7399
- finally {
7400
- try {
7401
- if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
7402
- }
7403
- finally { if (e_3) throw e_3.error; }
7598
+ this.lostConnection = true;
7599
+ };
7600
+ WebsocketService.prototype.handleOnStompError = function (data) {
7601
+ this.handleError('StompError', data);
7602
+ if (this.isAuthenticationError(data)) {
7603
+ this.info('Authentication error, recriating subscriptions');
7604
+ this.handleReconnection();
7404
7605
  }
7405
- this.primitiveManagers.clear();
7406
- this._stompClient.disconnect();
7407
- this._stompClient.deactivate();
7408
- this.isConnected = false;
7409
- this.isConnecting = false;
7410
- this.wasConnected = false;
7411
- this.connected$.next(false);
7412
- this.disconnect$.next();
7413
7606
  };
7414
- /** @private */
7415
- WebsocketService.prototype.getSubscriptionUrlWithToken = function (domain, service, primitive) {
7416
- var tenant = WebsocketService_1.TOKEN
7417
- ? WebsocketService_1.TOKEN.username.split('@')[1]
7418
- : null;
7419
- var token = WebsocketService_1.TOKEN
7420
- ? WebsocketService_1.TOKEN.access_token
7421
- : null;
7422
- return "/topic/" + tenant + "/" + token + "/" + domain + "/" + service + "/" + primitive;
7607
+ WebsocketService.prototype.isAuthenticationError = function (data) {
7608
+ var _a;
7609
+ var errorMessage = (_a = data === null || data === void 0 ? void 0 : data.headers) === null || _a === void 0 ? void 0 : _a.message;
7610
+ if (!errorMessage) {
7611
+ return false;
7612
+ }
7613
+ return errorMessage.toLowerCase().indexOf('forbiddenexception') !== -1;
7423
7614
  };
7424
- /** @private */
7425
- WebsocketService.prototype.getSubscriptionUrlWithoutToken = function (domain, service, primitive) {
7426
- var tenant = WebsocketService_1.TOKEN
7427
- ? WebsocketService_1.TOKEN.username.split('@')[1]
7428
- : null;
7429
- return "/topic/" + tenant + "/" + domain + "/" + service + "/" + primitive;
7615
+ WebsocketService.prototype.handleOnWebSocketError = function (data) {
7616
+ this.handleError('WebSocketError', data);
7430
7617
  };
7431
- /** @private */
7432
- WebsocketService.prototype.createStompSubscription = function (destination, primitiveManager) {
7433
- return this._stompClient.subscribe(destination, function (message) {
7434
- var event = JSON.parse(message.body || '{}');
7435
- primitiveManager.event$.next(event);
7436
- });
7618
+ WebsocketService.prototype.handleError = function (origin, data) {
7619
+ console.error(origin, data);
7620
+ this.error$.next(data);
7437
7621
  };
7438
- /** @private */
7439
- WebsocketService.prototype.createStompClient = function () {
7440
- var ws = new SockJS(WebsocketService_1.WEBSOCKET_URL + "subscription", null, { timeout: WebsocketService_1.CONNECTION_TIMEOUT });
7441
- this._stompClient = Stomp.over(ws);
7442
- this._stompClient.debug = function () { return null; };
7622
+ WebsocketService.prototype.handleReconnection = function () {
7623
+ this.lostConnection = false;
7624
+ this.reconnectPrimitives();
7625
+ this.reconnected$.next();
7443
7626
  };
7444
- /** @private */
7445
7627
  WebsocketService.prototype.reconnectPrimitives = function () {
7446
- var e_4, _a;
7628
+ var e_2, _a;
7447
7629
  try {
7448
7630
  for (var _b = __values(this.primitiveManagers.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
7449
7631
  var primitiveManager = _c.value;
7450
7632
  this.createStompSubscriptions(primitiveManager);
7451
7633
  }
7452
7634
  }
7453
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
7635
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
7454
7636
  finally {
7455
7637
  try {
7456
7638
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
7457
7639
  }
7458
- finally { if (e_4) throw e_4.error; }
7640
+ finally { if (e_2) throw e_2.error; }
7459
7641
  }
7460
7642
  };
7461
- /** @private */
7643
+ WebsocketService.prototype.buildSubscriptionUrlWithToken = function (domain, service, primitive) {
7644
+ var authToken = this.userInformationService.getAuthToken();
7645
+ var tenant = this.userInformationService.getTenantDomain();
7646
+ return "/topic/" + tenant + "/" + authToken + "/" + domain + "/" + service + "/" + primitive;
7647
+ };
7648
+ WebsocketService.prototype.getSubscriptionUrlWithoutToken = function (domain, service, primitive) {
7649
+ var tenant = this.userInformationService.getTenantDomain();
7650
+ return "/topic/" + tenant + "/" + domain + "/" + service + "/" + primitive;
7651
+ };
7652
+ WebsocketService.prototype.buildPrimitiveManagerKey = function (domain, service, primitive) {
7653
+ return domain + "/" + service + "/" + primitive;
7654
+ };
7655
+ WebsocketService.prototype.unsubscribePrimitiveOnFinalize = function (primitiveManager) {
7656
+ return __awaiter(this, void 0, void 0, function () {
7657
+ var key;
7658
+ return __generator(this, function (_a) {
7659
+ switch (_a.label) {
7660
+ case 0:
7661
+ if (primitiveManager.hasObservers()) {
7662
+ return [2 /*return*/];
7663
+ }
7664
+ primitiveManager.unsubscribe();
7665
+ key = this.buildPrimitiveManagerKey(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive);
7666
+ this.primitiveManagers.delete(key);
7667
+ return [4 /*yield*/, this.disconnectIfNoMoreObservables()];
7668
+ case 1:
7669
+ _a.sent();
7670
+ return [2 /*return*/];
7671
+ }
7672
+ });
7673
+ });
7674
+ };
7675
+ WebsocketService.prototype.disconnectIfNoMoreObservables = function () {
7676
+ return __awaiter(this, void 0, void 0, function () {
7677
+ return __generator(this, function (_a) {
7678
+ switch (_a.label) {
7679
+ case 0:
7680
+ if (!(this.getObserversCount() === 0)) return [3 /*break*/, 2];
7681
+ this.debug('Manually disconnecting because there are no more observers');
7682
+ return [4 /*yield*/, this.disconnect()];
7683
+ case 1:
7684
+ _a.sent();
7685
+ _a.label = 2;
7686
+ case 2: return [2 /*return*/];
7687
+ }
7688
+ });
7689
+ });
7690
+ };
7462
7691
  WebsocketService.prototype.getObserversCount = function () {
7463
- var e_5, _a;
7464
7692
  var observersCount = 0;
7465
- try {
7466
- for (var _b = __values(this.primitiveManagers.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
7467
- var primitiveManager = _c.value;
7468
- observersCount += primitiveManager.event$.observers.length;
7469
- }
7470
- }
7471
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
7472
- finally {
7473
- try {
7474
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
7475
- }
7476
- finally { if (e_5) throw e_5.error; }
7477
- }
7693
+ this.primitiveManagers.forEach(function (primitiveManager) {
7694
+ observersCount += primitiveManager.getObserversCount();
7695
+ });
7478
7696
  return observersCount;
7479
7697
  };
7480
- /** @private */
7481
- WebsocketService.prototype.disconnectPrimitiveOnFinalize = function (primitiveManager) {
7482
- var e_6, _a;
7483
- // @IMPORTANT: Replace .observers.length === 1 with .observed in rxjs 7.0+
7484
- var hasObservers = !(primitiveManager.event$.observers.length === 1);
7485
- if (hasObservers)
7486
- return;
7487
- primitiveManager.event$.complete();
7488
- try {
7489
- for (var _b = __values(primitiveManager.stompSubscriptions), _c = _b.next(); !_c.done; _c = _b.next()) {
7490
- var stompSubscription = _c.value;
7491
- stompSubscription.unsubscribe();
7492
- }
7493
- }
7494
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
7495
- finally {
7496
- try {
7497
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
7498
- }
7499
- finally { if (e_6) throw e_6.error; }
7500
- }
7501
- primitiveManager.subscribed$.complete();
7502
- var key = this.getPrimitiveManagerKey(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive);
7503
- this.primitiveManagers.delete(key);
7504
- this.disconnect();
7698
+ WebsocketService.prototype.createStompSubscription = function (destination, primitiveManager) {
7699
+ return this.stompClient.subscribe(destination, function (message) {
7700
+ var event = JSON.parse(message.body || '{}');
7701
+ primitiveManager.fireEvent(event);
7702
+ });
7505
7703
  };
7506
- /** @private */
7507
- WebsocketService.prototype.getPrimitiveManagerKey = function (domain, service, primitive) {
7508
- return domain + "/" + service + "/" + primitive;
7704
+ WebsocketService.prototype.createStompSubscriptions = function (primitiveManager) {
7705
+ var subscriptionUrlWithToken = this.buildSubscriptionUrlWithToken(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive);
7706
+ var subscriptionUrlWithoutToken = this.getSubscriptionUrlWithoutToken(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive);
7707
+ var stompSubscriptionWithToken = this.createStompSubscription(subscriptionUrlWithToken, primitiveManager);
7708
+ var stompSubscriptionWithoutToken = this.createStompSubscription(subscriptionUrlWithoutToken, primitiveManager);
7709
+ primitiveManager.subscribe(stompSubscriptionWithToken, stompSubscriptionWithoutToken);
7710
+ this.subscribed$.next(primitiveManager);
7711
+ };
7712
+ WebsocketService.prototype.getSubscriptionUrl = function () {
7713
+ return this.userInformationService.getWebSocketUrl() + "/subscription";
7509
7714
  };
7510
- var WebsocketService_1;
7511
- WebsocketService.RECONNECT_INTERVAL = 3000;
7512
- WebsocketService.CONNECTION_TIMEOUT = 15000;
7513
- /** @private */
7514
- WebsocketService.BASE_URL_COOKIE = 'com.senior.base.url';
7515
- /** @private */
7516
- WebsocketService.TOKEN_COOKIE = 'com.senior.token';
7517
- /** @private */
7518
- WebsocketService.TOKEN = JSON.parse(get(WebsocketService_1.TOKEN_COOKIE) || '{}');
7519
- /** @private */
7520
- WebsocketService.WEBSOCKET_URL = get(WebsocketService_1.BASE_URL_COOKIE) + '/websocket/';
7521
- WebsocketService.ɵprov = ɵɵdefineInjectable({ factory: function WebsocketService_Factory() { return new WebsocketService(); }, token: WebsocketService, providedIn: "root" });
7522
- WebsocketService = WebsocketService_1 = __decorate([
7715
+ WebsocketService.ctorParameters = function () { return [
7716
+ { type: UserInformationService }
7717
+ ]; };
7718
+ WebsocketService.ɵprov = ɵɵdefineInjectable({ factory: function WebsocketService_Factory() { return new WebsocketService(ɵɵinject(UserInformationService)); }, token: WebsocketService, providedIn: "root" });
7719
+ WebsocketService = __decorate([
7523
7720
  Injectable({
7524
7721
  providedIn: 'root'
7525
7722
  })
@@ -7680,5 +7877,5 @@ var ModulesEnum;
7680
7877
  * Generated bundle index. Do not edit.
7681
7878
  */
7682
7879
 
7683
- export { AgreementLookup, BankLookup, BeneficioFiscalLookup, BreadcrumbComponent, BreadcrumbModule, Breakpoints, ContaInternaFilialLookup, CountryLookup, CplTriNotaSaidaE001EndLookup, CplTriNotaSaidaE001PesLookup, CplTriNotaSaidaE001TnsLookup, CplTriNotaSaidaE007UfsLookup, CplTriNotaSaidaE008RaiLookup, CplTriNotaSaidaE015MedLookup, CplTriNotaSaidaE020SnfLookup, CplTriNotaSaidaE024MsgLookup, CplTriNotaSaidaE028CpgLookup, CplTriNotaSaidaE032EdcLookup, CplTriNotaSaidaE051DisLookup, CplTriNotaSaidaE066FpgLookup, CplTriNotaSaidaE070EmpLookup, CplTriNotaSaidaE070FilLookup, CplTriNotaSaidaE075DerLookup, CplTriNotaSaidaE080SerLookup, CplTriNotaSaidaNaturezaReceitaPisCofinsLookup, CplTriNotaSaidaNcmLookup, CplTriNotaSaidaNfEntradaLookup, CplTriNotaSaidaNfSaidaLookup, CurrencyLookup, DocumentoLookup, E001EndLookup, E001PesLookup, E001TnsLookup, E001TnsSupEstLookup, E002TptLookup, E007UfsLookup, E008CepLookup, E008RaiLookup, E012FamLookup, E015MedLookup, E020SnfLookup, E021MotLookup, E023CrpLookup, E024MsgLookup, E027EqiLookup, E027StrLookup, E028CpgLookup, E030AgeLookup, E030BanLookup, E031MoeLookup, E032EdcLookup, E035OcrLookup, E036InsLookup, E039PorLookup, E043MpcLookup, E043PcmLookup, E044CcuFinRatDepLookup, E044CcuLookup, E045PlaLookup, E046HpdLookup, E047NtgLookup, E048FctLookup, E048SfcLookup, E051DisLookup, E066FpgLookup, E067FinLookup, E069GreLookup, E070EmpLookup, E070EntLookup, E070FilLookup, E073PesLookup, E073VeiLookup, E075DerLookup, E080SerLookup, E081TabLookup, E082TprLookup, E085PesLookup, E089DocLookup, E090HrpComGerLookup, E090PesLookup, E091PlfFinRatLookup, E095PesLookup, E099UsuComGerLookup, E099UsuSupCprLookup, E140InsLookup, E140NfsLookup, E200LotLookup, E200SerLookup, E205DepLookup, E210DxpE075DerLookup, E210DxpLookup, E301TcrLookup, E403FprLookup, E420IcpLookup, E420IpcLookup, E420OcpLookup, E501TcpLookup, E600CcoLookup, E640LotLookup, EntityPersonProductLookup, EnumLogicalOperator, EquipmentLookup, ErpLookups, ErpLookupsModule, ErpPolling, ExportUtils, FiltersStorageService, FormUtilsService, HTTP_STATUS_CODE, LigacaoItemFornecedorLookup, LookupValidationUtils, ModulesEnum, NcmLookup, NotaFiscalEntradaLookup, NpsService, ParametersLookup, ProdutoServicoLookup, QuantidadeDisponivelDemandaLookup, RequisicaoLookup, SegmentoLookup, TypeTaxesLookup, UnidadeMedidaLookup, UtilsModule, VerifyModulePermission, VerifyModulePermissions, WebsocketService, naturezaReceitaPisCofins, ɵ0, ErpLookupsService as ɵa, EnumAnaSin as ɵb, EnumNatCtb as ɵc, StorageService as ɵd, VerifyModulePermissionService as ɵe, VerifyModulePermissionsService as ɵf };
7880
+ export { AgreementLookup, BankLookup, BeneficioFiscalLookup, BreadcrumbComponent, BreadcrumbModule, Breakpoints, ContaInternaFilialLookup, CountryLookup, CplTriNotaSaidaE001EndLookup, CplTriNotaSaidaE001PesLookup, CplTriNotaSaidaE001TnsLookup, CplTriNotaSaidaE007UfsLookup, CplTriNotaSaidaE008RaiLookup, CplTriNotaSaidaE015MedLookup, CplTriNotaSaidaE020SnfLookup, CplTriNotaSaidaE024MsgLookup, CplTriNotaSaidaE028CpgLookup, CplTriNotaSaidaE032EdcLookup, CplTriNotaSaidaE051DisLookup, CplTriNotaSaidaE066FpgLookup, CplTriNotaSaidaE070EmpLookup, CplTriNotaSaidaE070FilLookup, CplTriNotaSaidaE075DerLookup, CplTriNotaSaidaE080SerLookup, CplTriNotaSaidaNaturezaReceitaPisCofinsLookup, CplTriNotaSaidaNcmLookup, CplTriNotaSaidaNfEntradaLookup, CplTriNotaSaidaNfSaidaLookup, CurrencyLookup, DocumentoLookup, E001EndLookup, E001PesLookup, E001TnsLookup, E001TnsSupEstLookup, E002TptLookup, E007UfsLookup, E008CepLookup, E008RaiLookup, E012FamLookup, E015MedLookup, E020SnfLookup, E021MotLookup, E023CrpLookup, E024MsgLookup, E027EqiLookup, E027StrLookup, E028CpgLookup, E030AgeLookup, E030BanLookup, E031MoeLookup, E032EdcLookup, E035OcrLookup, E036InsLookup, E039PorLookup, E043MpcLookup, E043PcmLookup, E044CcuFinRatDepLookup, E044CcuLookup, E045PlaLookup, E046HpdLookup, E047NtgLookup, E048FctLookup, E048SfcLookup, E051DisLookup, E066FpgLookup, E067FinLookup, E069GreLookup, E070EmpLookup, E070EntLookup, E070FilLookup, E073PesLookup, E073VeiLookup, E075DerLookup, E080SerLookup, E081TabLookup, E082TprLookup, E085PesLookup, E089DocLookup, E090HrpComGerLookup, E090PesLookup, E091PlfFinRatLookup, E095PesLookup, E099UsuComGerLookup, E099UsuSupCprLookup, E140InsLookup, E140NfsLookup, E200LotLookup, E200SerLookup, E205DepLookup, E210DxpE075DerLookup, E210DxpLookup, E301TcrLookup, E403FprLookup, E420IcpLookup, E420IpcLookup, E420OcpLookup, E501TcpLookup, E600CcoLookup, E640LotLookup, EntityPersonProductLookup, EnumLogicalOperator, EquipmentLookup, ErpLookups, ErpLookupsModule, ErpPolling, ExportUtils, FiltersStorageService, FormUtilsService, HTTP_STATUS_CODE, LigacaoItemFornecedorLookup, LookupValidationUtils, ModulesEnum, NcmLookup, NotaFiscalEntradaLookup, NpsService, ParametersLookup, PrimitiveManager, ProdutoServicoLookup, QuantidadeDisponivelDemandaLookup, RequisicaoLookup, SegmentoLookup, TypeTaxesLookup, UnidadeMedidaLookup, UtilsModule, VerifyModulePermission, VerifyModulePermissions, WebsocketService, naturezaReceitaPisCofins, ɵ0, ErpLookupsService as ɵa, EnumAnaSin as ɵb, EnumNatCtb as ɵc, StorageService as ɵd, UserInformationService as ɵe, VerifyModulePermissionService as ɵf, VerifyModulePermissionsService as ɵg };
7684
7881
  //# sourceMappingURL=senior-gestao-empresarial-angular-components.js.map