@posiwise/common-services 0.2.25 → 0.2.27
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.
|
@@ -2,24 +2,24 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { DOCUMENT, Inject, Injectable, isDevMode, inject, NgModule, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import * as i3 from '@angular/router';
|
|
4
4
|
import { NavigationEnd } from '@angular/router';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i1 from '@posiwise/app-config-service';
|
|
6
6
|
import { AppConfigService } from '@posiwise/app-config-service';
|
|
7
|
-
import * as i1$
|
|
7
|
+
import * as i1$2 from '@angular/common/http';
|
|
8
8
|
import { HttpErrorResponse, HttpHeaders } from '@angular/common/http';
|
|
9
|
-
import { throwError, of, BehaviorSubject, tap, timer } from 'rxjs';
|
|
10
|
-
import { catchError, take, tap as tap$1, switchMap, map, mergeMap, distinctUntilChanged } from 'rxjs/operators';
|
|
9
|
+
import { throwError, of, BehaviorSubject, tap, timer, defer } from 'rxjs';
|
|
10
|
+
import { catchError, take, tap as tap$1, switchMap, map, mergeMap, distinctUntilChanged, retry, filter } from 'rxjs/operators';
|
|
11
11
|
import { HelperService } from '@posiwise/helper-service';
|
|
12
|
-
import * as i1 from 'ngx-toastr';
|
|
12
|
+
import * as i1$1 from 'ngx-toastr';
|
|
13
13
|
import { CommonModule } from '@angular/common';
|
|
14
14
|
import { getUser, SetUser, UserActionTypes, appReducers } from '@posiwise/app-store';
|
|
15
|
-
import * as i1$
|
|
15
|
+
import * as i1$3 from '@ngrx/effects';
|
|
16
16
|
import { Actions, createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
17
|
-
import * as
|
|
17
|
+
import * as i2 from '@ngrx/store';
|
|
18
18
|
import { StoreModule } from '@ngrx/store';
|
|
19
19
|
import { INTEGRATIONS_API_PREFIX, MAIN_API_PREFIX, PROJECT_PATH, USER_PATH, TOKEN_HEADER_KEY, NEWSLETTER_CONFIRMATION_PATH, NEWSLETTER_UNSUBSCRIBE_PATH, CAPTCHA_VALIDATION_PATH, SOCIAL_LOGIN_PATH, TOKEN_KEY, PERMISSION_NAMES, ADMIN_SUB_MENU_WHITELIST, AB_TEST_ACTIONS, GEO_PATH, PRODUCT_PATH, CONTACT_US_PATH, INCIDENTS_PATH, INCIDENTS_PATH_ADMIN, NEWSLETTERS_PATH, NEWSLETTER_SUBSCRIPTION_PATH, ADMIN_FAQS_PATH, FAQS_PATH, ORGANIZATIONS_PATH, GLOBAL_SUBSCRIPTION_CONFIGS_PATH, GLOBAL_CONFIGS_PATH, USER_LOGIN_NOTIFICATION, FEEDBACK_QUESTIONS_PATH, USER_FEEDBACKS_PATH, CUSTOMER_SUPPORT_PATH, ADMIN_TAG_PATH, ADMIN_TAG_CATEGORIES_PATH, ADMIN_PATH, QUALIFICATIONS_PATH, BRAIN_API_PREFIX, SOCKET_TYPE } from '@posiwise/common-utilities';
|
|
20
20
|
import swal from 'sweetalert2';
|
|
21
21
|
import moment from 'moment';
|
|
22
|
-
import * as i1$
|
|
22
|
+
import * as i1$4 from '@angular/platform-browser';
|
|
23
23
|
import cloneDeep from 'lodash/cloneDeep';
|
|
24
24
|
import pickBy from 'lodash/pickBy';
|
|
25
25
|
import * as i2$1 from 'ngx-cookie';
|
|
@@ -227,12 +227,12 @@ class GoogleAnalyticsService {
|
|
|
227
227
|
this.subscription.unsubscribe();
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: GoogleAnalyticsService, deps: [{ token: i3.Router }, { token: ScriptLoaderService }, { token:
|
|
230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: GoogleAnalyticsService, deps: [{ token: i3.Router }, { token: ScriptLoaderService }, { token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
231
231
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: GoogleAnalyticsService }); }
|
|
232
232
|
}
|
|
233
233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: GoogleAnalyticsService, decorators: [{
|
|
234
234
|
type: Injectable
|
|
235
|
-
}], ctorParameters: () => [{ type: i3.Router }, { type: ScriptLoaderService }, { type:
|
|
235
|
+
}], ctorParameters: () => [{ type: i3.Router }, { type: ScriptLoaderService }, { type: i1.AppConfigService }] });
|
|
236
236
|
|
|
237
237
|
class CustomToastService {
|
|
238
238
|
constructor(toastr) {
|
|
@@ -240,13 +240,13 @@ class CustomToastService {
|
|
|
240
240
|
}
|
|
241
241
|
success(message, title = '', options = {}) {
|
|
242
242
|
if (message) {
|
|
243
|
-
this.toastr.success(message, title, { ...options, timeOut:
|
|
243
|
+
this.toastr.success(message, title, { ...options, timeOut: 5000 });
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
246
|
error(message, title = '', options = {}) {
|
|
247
247
|
options = {
|
|
248
248
|
...options,
|
|
249
|
-
timeOut:
|
|
249
|
+
timeOut: 8000
|
|
250
250
|
};
|
|
251
251
|
if (message) {
|
|
252
252
|
this.toastr.error(message, title, options);
|
|
@@ -254,7 +254,7 @@ class CustomToastService {
|
|
|
254
254
|
}
|
|
255
255
|
info(message, title = '', options = {}) {
|
|
256
256
|
// disable auto timeout, toast would close on click (to disable auto timeout please use this attribute disableTimeOut:true in options)
|
|
257
|
-
options = { ...options, timeOut:
|
|
257
|
+
options = { ...options, timeOut: 5000, enableHtml: true };
|
|
258
258
|
if (message) {
|
|
259
259
|
this.toastr.info(`<div class="d-flex align-items-center">
|
|
260
260
|
<i class="fa fa-info-circle" aria-hidden="true"></i>
|
|
@@ -264,7 +264,7 @@ class CustomToastService {
|
|
|
264
264
|
}
|
|
265
265
|
warning(message, title = '', options = {}) {
|
|
266
266
|
// disable auto timeout, toast would close on click (to disable auto timeout please use this attribute disableTimeOut:true in options)
|
|
267
|
-
options = { ...options, timeOut:
|
|
267
|
+
options = { ...options, timeOut: 6000 };
|
|
268
268
|
if (message) {
|
|
269
269
|
this.toastr.warning(message, title, options);
|
|
270
270
|
}
|
|
@@ -304,7 +304,7 @@ class CustomToastService {
|
|
|
304
304
|
this.error(message);
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CustomToastService, deps: [{ token: i1.ToastrService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
307
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CustomToastService, deps: [{ token: i1$1.ToastrService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
308
308
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CustomToastService, providedIn: 'root' }); }
|
|
309
309
|
}
|
|
310
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CustomToastService, decorators: [{
|
|
@@ -312,7 +312,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
312
312
|
args: [{
|
|
313
313
|
providedIn: 'root'
|
|
314
314
|
}]
|
|
315
|
-
}], ctorParameters: () => [{ type: i1.ToastrService }] });
|
|
315
|
+
}], ctorParameters: () => [{ type: i1$1.ToastrService }] });
|
|
316
316
|
|
|
317
317
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
318
318
|
class BaseHttpService {
|
|
@@ -323,8 +323,14 @@ class BaseHttpService {
|
|
|
323
323
|
this.getConfig();
|
|
324
324
|
this.toast = injector.get(CustomToastService);
|
|
325
325
|
}
|
|
326
|
+
buildUrl(url) {
|
|
327
|
+
// Collapse any run of 2+ slashes (arises when baseUrl ends with '/'
|
|
328
|
+
// and the caller path also starts with '/', sometimes twice) down to
|
|
329
|
+
// one, while preserving the '://' of an absolute URL scheme.
|
|
330
|
+
return `${this.baseUrl}${url}`.replace(/([^:]\/)\/+/g, '$1');
|
|
331
|
+
}
|
|
326
332
|
get(url) {
|
|
327
|
-
return this.http.get(
|
|
333
|
+
return this.http.get(this.buildUrl(url)).pipe(catchError(error => {
|
|
328
334
|
this.handleError(error);
|
|
329
335
|
return throwError(() => new HttpErrorResponse(error));
|
|
330
336
|
}));
|
|
@@ -338,31 +344,31 @@ class BaseHttpService {
|
|
|
338
344
|
delete params[k];
|
|
339
345
|
}
|
|
340
346
|
}
|
|
341
|
-
return this.http.get(
|
|
347
|
+
return this.http.get(this.buildUrl(url), { params }).pipe(catchError(error => {
|
|
342
348
|
this.handleError(error);
|
|
343
349
|
return throwError(() => new HttpErrorResponse(error));
|
|
344
350
|
}));
|
|
345
351
|
}
|
|
346
352
|
post(url, params = {}) {
|
|
347
|
-
return this.http.post(
|
|
353
|
+
return this.http.post(this.buildUrl(url), params).pipe(catchError(error => {
|
|
348
354
|
this.handleError(error);
|
|
349
355
|
return throwError(() => new HttpErrorResponse(error));
|
|
350
356
|
}));
|
|
351
357
|
}
|
|
352
358
|
put(url, params = {}) {
|
|
353
|
-
return this.http.put(
|
|
359
|
+
return this.http.put(this.buildUrl(url), params).pipe(catchError(error => {
|
|
354
360
|
this.handleError(error);
|
|
355
361
|
return throwError(() => new HttpErrorResponse(error));
|
|
356
362
|
}));
|
|
357
363
|
}
|
|
358
364
|
patch(url, params = {}) {
|
|
359
|
-
return this.http.patch(
|
|
365
|
+
return this.http.patch(this.buildUrl(url), params).pipe(catchError(error => {
|
|
360
366
|
this.handleError(error);
|
|
361
367
|
return throwError(() => new HttpErrorResponse(error));
|
|
362
368
|
}));
|
|
363
369
|
}
|
|
364
370
|
delete(url, option = {}) {
|
|
365
|
-
return this.http.delete(
|
|
371
|
+
return this.http.delete(this.buildUrl(url), option).pipe(catchError(error => {
|
|
366
372
|
this.handleError(error);
|
|
367
373
|
return throwError(() => new HttpErrorResponse(error));
|
|
368
374
|
}));
|
|
@@ -371,7 +377,7 @@ class BaseHttpService {
|
|
|
371
377
|
const formData = new FormData();
|
|
372
378
|
formData.append(param, file);
|
|
373
379
|
const headers = new HttpHeaders({ enctype: 'multipart/form-data' });
|
|
374
|
-
return this.http.put(
|
|
380
|
+
return this.http.put(this.buildUrl(url), formData, { headers }).pipe(catchError(error => {
|
|
375
381
|
this.handleError(error);
|
|
376
382
|
return throwError(() => new HttpErrorResponse(error));
|
|
377
383
|
}));
|
|
@@ -385,7 +391,7 @@ class BaseHttpService {
|
|
|
385
391
|
}
|
|
386
392
|
}
|
|
387
393
|
const headers = new HttpHeaders({ enctype: 'multipart/form-data' });
|
|
388
|
-
return this.http.post(
|
|
394
|
+
return this.http.post(this.buildUrl(url), formData, { headers }).pipe(catchError(error => {
|
|
389
395
|
this.handleError(error);
|
|
390
396
|
return throwError(() => new HttpErrorResponse(error));
|
|
391
397
|
}));
|
|
@@ -398,12 +404,12 @@ class BaseHttpService {
|
|
|
398
404
|
this.toast.showToast(error);
|
|
399
405
|
}
|
|
400
406
|
}
|
|
401
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BaseHttpService, deps: [{ token: i1$
|
|
407
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BaseHttpService, deps: [{ token: i1$2.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
402
408
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BaseHttpService }); }
|
|
403
409
|
}
|
|
404
410
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BaseHttpService, decorators: [{
|
|
405
411
|
type: Injectable
|
|
406
|
-
}], ctorParameters: () => [{ type: i1$
|
|
412
|
+
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i0.Injector }] });
|
|
407
413
|
|
|
408
414
|
class IntegrationsApiHttpService extends BaseHttpService {
|
|
409
415
|
constructor(http, injector) {
|
|
@@ -416,7 +422,7 @@ class IntegrationsApiHttpService extends BaseHttpService {
|
|
|
416
422
|
: config?.['links']?.integrations_api;
|
|
417
423
|
});
|
|
418
424
|
}
|
|
419
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IntegrationsApiHttpService, deps: [{ token: i1$
|
|
425
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IntegrationsApiHttpService, deps: [{ token: i1$2.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
420
426
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IntegrationsApiHttpService, providedIn: 'root' }); }
|
|
421
427
|
}
|
|
422
428
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IntegrationsApiHttpService, decorators: [{
|
|
@@ -424,7 +430,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
424
430
|
args: [{
|
|
425
431
|
providedIn: 'root'
|
|
426
432
|
}]
|
|
427
|
-
}], ctorParameters: () => [{ type: i1$
|
|
433
|
+
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i0.Injector }] });
|
|
428
434
|
|
|
429
435
|
class LocalStorage {
|
|
430
436
|
getItem$(key) {
|
|
@@ -464,7 +470,7 @@ class MainApiHttpService extends BaseHttpService {
|
|
|
464
470
|
this.baseUrl = isDevMode() ? MAIN_API_PREFIX : config?.['links']?.main_api;
|
|
465
471
|
});
|
|
466
472
|
}
|
|
467
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: MainApiHttpService, deps: [{ token: i1$
|
|
473
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: MainApiHttpService, deps: [{ token: i1$2.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
468
474
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: MainApiHttpService, providedIn: 'root' }); }
|
|
469
475
|
}
|
|
470
476
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: MainApiHttpService, decorators: [{
|
|
@@ -472,7 +478,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
472
478
|
args: [{
|
|
473
479
|
providedIn: 'root'
|
|
474
480
|
}]
|
|
475
|
-
}], ctorParameters: () => [{ type: i1$
|
|
481
|
+
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i0.Injector }] });
|
|
476
482
|
|
|
477
483
|
/**
|
|
478
484
|
* Secure Token Storage Service
|
|
@@ -698,11 +704,11 @@ class SecureTokenStorageService {
|
|
|
698
704
|
}
|
|
699
705
|
return null;
|
|
700
706
|
}
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
*/
|
|
707
|
+
// Attributes MUST mirror setSecureCookie — browsers require matching
|
|
708
|
+
// Secure + SameSite for the delete to take effect on HTTPS.
|
|
704
709
|
deleteCookie(name) {
|
|
705
|
-
this.document.
|
|
710
|
+
const isSecure = this.document.location.protocol === 'https:';
|
|
711
|
+
this.document.cookie = `${name}=; Path=/; ${isSecure ? 'Secure; ' : ''}SameSite=Strict; expires=Thu, 01 Jan 1970 00:00:01 GMT;`;
|
|
706
712
|
}
|
|
707
713
|
/**
|
|
708
714
|
* Initialize tokens from storage on service startup
|
|
@@ -1007,7 +1013,7 @@ class UserService {
|
|
|
1007
1013
|
refreshUserApiTokens() {
|
|
1008
1014
|
return this.api.get(`${this.endpoint}/refresh_user_api_tokens`);
|
|
1009
1015
|
}
|
|
1010
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: UserService, deps: [{ token: MainApiHttpService }, { token:
|
|
1016
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: UserService, deps: [{ token: MainApiHttpService }, { token: i2.Store }, { token: i3.Router }, { token: i1.AppConfigService }, { token: ProfileService }, { token: CustomToastService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1011
1017
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
1012
1018
|
}
|
|
1013
1019
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: UserService, decorators: [{
|
|
@@ -1015,7 +1021,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
1015
1021
|
args: [{
|
|
1016
1022
|
providedIn: 'root'
|
|
1017
1023
|
}]
|
|
1018
|
-
}], ctorParameters: () => [{ type: MainApiHttpService }, { type:
|
|
1024
|
+
}], ctorParameters: () => [{ type: MainApiHttpService }, { type: i2.Store }, { type: i3.Router }, { type: i1.AppConfigService }, { type: ProfileService }, { type: CustomToastService }] });
|
|
1019
1025
|
|
|
1020
1026
|
class AuthService {
|
|
1021
1027
|
constructor(localStorage, secureTokenStorage, router, http, userService, toastr, appConfigService, integrationsApi, document) {
|
|
@@ -1394,12 +1400,12 @@ class AuthService {
|
|
|
1394
1400
|
}
|
|
1395
1401
|
});
|
|
1396
1402
|
}
|
|
1397
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AuthService, deps: [{ token: LocalStorage }, { token: SecureTokenStorageService }, { token: i3.Router }, { token: MainApiHttpService }, { token: UserService }, { token: CustomToastService }, { token:
|
|
1403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AuthService, deps: [{ token: LocalStorage }, { token: SecureTokenStorageService }, { token: i3.Router }, { token: MainApiHttpService }, { token: UserService }, { token: CustomToastService }, { token: i1.AppConfigService }, { token: IntegrationsApiHttpService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1398
1404
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AuthService }); }
|
|
1399
1405
|
}
|
|
1400
1406
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AuthService, decorators: [{
|
|
1401
1407
|
type: Injectable
|
|
1402
|
-
}], ctorParameters: () => [{ type: LocalStorage }, { type: SecureTokenStorageService }, { type: i3.Router }, { type: MainApiHttpService }, { type: UserService }, { type: CustomToastService }, { type:
|
|
1408
|
+
}], ctorParameters: () => [{ type: LocalStorage }, { type: SecureTokenStorageService }, { type: i3.Router }, { type: MainApiHttpService }, { type: UserService }, { type: CustomToastService }, { type: i1.AppConfigService }, { type: IntegrationsApiHttpService }, { type: Document, decorators: [{
|
|
1403
1409
|
type: Inject,
|
|
1404
1410
|
args: [DOCUMENT]
|
|
1405
1411
|
}] }] });
|
|
@@ -1426,7 +1432,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
1426
1432
|
|
|
1427
1433
|
class CommonServicesModule {
|
|
1428
1434
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CommonServicesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1429
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: CommonServicesModule, imports: [CommonModule, i1$
|
|
1435
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: CommonServicesModule, imports: [CommonModule, i1$3.EffectsRootModule, i2.StoreRootModule] }); }
|
|
1430
1436
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CommonServicesModule, providers: [AuthService], imports: [CommonModule, EffectsModule.forRoot([UserEffects]), StoreModule.forRoot(appReducers)] }); }
|
|
1431
1437
|
}
|
|
1432
1438
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CommonServicesModule, decorators: [{
|
|
@@ -1466,7 +1472,7 @@ class SeoService {
|
|
|
1466
1472
|
this.meta.updateTag({ name: 'twitter:description', content: description });
|
|
1467
1473
|
this.meta.updateTag({ name: 'twitter:card', content: 'summary' });
|
|
1468
1474
|
}
|
|
1469
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SeoService, deps: [{ token: i1$
|
|
1475
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SeoService, deps: [{ token: i1$4.Meta }, { token: i1$4.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1470
1476
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SeoService, providedIn: 'root' }); }
|
|
1471
1477
|
}
|
|
1472
1478
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SeoService, decorators: [{
|
|
@@ -1474,7 +1480,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
1474
1480
|
args: [{
|
|
1475
1481
|
providedIn: 'root'
|
|
1476
1482
|
}]
|
|
1477
|
-
}], ctorParameters: () => [{ type: i1$
|
|
1483
|
+
}], ctorParameters: () => [{ type: i1$4.Meta }, { type: i1$4.Title }] });
|
|
1478
1484
|
|
|
1479
1485
|
/**
|
|
1480
1486
|
* Centralized feature flag evaluation service.
|
|
@@ -1932,7 +1938,7 @@ class AbTestService {
|
|
|
1932
1938
|
? this.injector.get(service)
|
|
1933
1939
|
: this.injector.get(MainApiHttpService);
|
|
1934
1940
|
}
|
|
1935
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AbTestService, deps: [{ token: i0.Injector }, { token: i1$
|
|
1941
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AbTestService, deps: [{ token: i0.Injector }, { token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1936
1942
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AbTestService, providedIn: 'root' }); }
|
|
1937
1943
|
}
|
|
1938
1944
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AbTestService, decorators: [{
|
|
@@ -1940,7 +1946,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
1940
1946
|
args: [{
|
|
1941
1947
|
providedIn: 'root'
|
|
1942
1948
|
}]
|
|
1943
|
-
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1$
|
|
1949
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1$2.HttpClient }] });
|
|
1944
1950
|
|
|
1945
1951
|
class GeoService {
|
|
1946
1952
|
constructor(api, cookieService) {
|
|
@@ -2249,11 +2255,17 @@ class AhoyService {
|
|
|
2249
2255
|
this.ahoy = '/ahoy';
|
|
2250
2256
|
this.toast = injector.get(CustomToastService);
|
|
2251
2257
|
}
|
|
2258
|
+
// AhoyService does not extend BaseHttpService, so it needs its own
|
|
2259
|
+
// slash normalization: the micro-service base URL ends with '/' and the
|
|
2260
|
+
// path segments below start with '/', producing '/main-api/v1//versions'.
|
|
2261
|
+
buildUrl(url) {
|
|
2262
|
+
return url.replace(/([^:]\/)\/+/g, '$1');
|
|
2263
|
+
}
|
|
2252
2264
|
getAhoyEvents(params, service, paging) {
|
|
2253
2265
|
const baseUrl = HelperService.getBaseUrlMicroService(service);
|
|
2254
2266
|
const page = HelperService.getPagingParams(paging);
|
|
2255
2267
|
return this.http
|
|
2256
|
-
.get(`${baseUrl}${this.ahoy}/events
|
|
2268
|
+
.get(this.buildUrl(`${baseUrl}${this.ahoy}/events`), {
|
|
2257
2269
|
params: { ...page, ...params }
|
|
2258
2270
|
})
|
|
2259
2271
|
.pipe(catchError(error => {
|
|
@@ -2265,7 +2277,7 @@ class AhoyService {
|
|
|
2265
2277
|
const baseUrl = HelperService.getBaseUrlMicroService(service);
|
|
2266
2278
|
const page = HelperService.getPagingParams(paging);
|
|
2267
2279
|
return this.http
|
|
2268
|
-
.get(`${baseUrl}${this.ahoy}/messages
|
|
2280
|
+
.get(this.buildUrl(`${baseUrl}${this.ahoy}/messages`), {
|
|
2269
2281
|
params: { ...page, ...params }
|
|
2270
2282
|
})
|
|
2271
2283
|
.pipe(catchError(error => {
|
|
@@ -2277,7 +2289,7 @@ class AhoyService {
|
|
|
2277
2289
|
const baseUrl = HelperService.getBaseUrlMicroService(service);
|
|
2278
2290
|
const page = HelperService.getPagingParams(paging);
|
|
2279
2291
|
return this.http
|
|
2280
|
-
.get(`${baseUrl}${this.ahoy}/visits
|
|
2292
|
+
.get(this.buildUrl(`${baseUrl}${this.ahoy}/visits`), {
|
|
2281
2293
|
params: { ...page, ...params }
|
|
2282
2294
|
})
|
|
2283
2295
|
.pipe(catchError(error => {
|
|
@@ -2289,7 +2301,7 @@ class AhoyService {
|
|
|
2289
2301
|
const baseUrl = HelperService.getBaseUrlMicroService(service);
|
|
2290
2302
|
const page = HelperService.getPagingParams(paging);
|
|
2291
2303
|
return this.http
|
|
2292
|
-
.get(`${baseUrl}/versions/get_all
|
|
2304
|
+
.get(this.buildUrl(`${baseUrl}/versions/get_all`), {
|
|
2293
2305
|
params: { ...page, ...params }
|
|
2294
2306
|
})
|
|
2295
2307
|
.pipe(catchError(error => {
|
|
@@ -2301,7 +2313,7 @@ class AhoyService {
|
|
|
2301
2313
|
const baseUrl = HelperService.getBaseUrlMicroService(service);
|
|
2302
2314
|
const page = HelperService.getPagingParams(paging);
|
|
2303
2315
|
return this.http
|
|
2304
|
-
.get(`${baseUrl}/events/get_all
|
|
2316
|
+
.get(this.buildUrl(`${baseUrl}/events/get_all`), {
|
|
2305
2317
|
params: { ...page, ...params }
|
|
2306
2318
|
})
|
|
2307
2319
|
.pipe(catchError(error => {
|
|
@@ -2317,7 +2329,7 @@ class AhoyService {
|
|
|
2317
2329
|
this.toast.showToast(error);
|
|
2318
2330
|
}
|
|
2319
2331
|
}
|
|
2320
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AhoyService, deps: [{ token: i1$
|
|
2332
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AhoyService, deps: [{ token: i1$2.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2321
2333
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AhoyService, providedIn: 'root' }); }
|
|
2322
2334
|
}
|
|
2323
2335
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AhoyService, decorators: [{
|
|
@@ -2325,7 +2337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
2325
2337
|
args: [{
|
|
2326
2338
|
providedIn: 'root'
|
|
2327
2339
|
}]
|
|
2328
|
-
}], ctorParameters: () => [{ type: i1$
|
|
2340
|
+
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i0.Injector }] });
|
|
2329
2341
|
|
|
2330
2342
|
class CommonService {
|
|
2331
2343
|
constructor(api) {
|
|
@@ -2368,7 +2380,7 @@ class CommonService {
|
|
|
2368
2380
|
return this.api.put(`${NEWSLETTER_SUBSCRIPTION_PATH}/${newsletterId}/toggle`, param);
|
|
2369
2381
|
}
|
|
2370
2382
|
unsubscribeNewsletter(token) {
|
|
2371
|
-
return this.api.get(
|
|
2383
|
+
return this.api.get(`${NEWSLETTER_UNSUBSCRIBE_PATH}?token=${token}`);
|
|
2372
2384
|
}
|
|
2373
2385
|
// FAQ
|
|
2374
2386
|
getFaq(params) {
|
|
@@ -2978,7 +2990,7 @@ class McpJsonRpcService {
|
|
|
2978
2990
|
return res.result;
|
|
2979
2991
|
}));
|
|
2980
2992
|
}
|
|
2981
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: McpJsonRpcService, deps: [{ token: i1$
|
|
2993
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: McpJsonRpcService, deps: [{ token: i1$2.HttpClient }, { token: i1.AppConfigService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2982
2994
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: McpJsonRpcService, providedIn: 'root' }); }
|
|
2983
2995
|
}
|
|
2984
2996
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: McpJsonRpcService, decorators: [{
|
|
@@ -2986,7 +2998,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
2986
2998
|
args: [{
|
|
2987
2999
|
providedIn: 'root'
|
|
2988
3000
|
}]
|
|
2989
|
-
}], ctorParameters: () => [{ type: i1$
|
|
3001
|
+
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i1.AppConfigService }, { type: i2.Store }] });
|
|
2990
3002
|
|
|
2991
3003
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2992
3004
|
class MCPOrchestratorService {
|
|
@@ -3022,7 +3034,7 @@ class MCPOrchestratorService {
|
|
|
3022
3034
|
}));
|
|
3023
3035
|
return base$.pipe(switchMap(base => this.store.pipe(take(1), map((app) => this.pickApiCredentials(app.user?.currentUser ?? null)), switchMap(creds => {
|
|
3024
3036
|
if (!creds) {
|
|
3025
|
-
return throwError(() => new Error('
|
|
3037
|
+
return throwError(() => new Error('The assistant needs API credentials. Go to /account/details to set or rotate your API keys, then open the active subscription from /account/subscriptions to refresh its credentials.'));
|
|
3026
3038
|
}
|
|
3027
3039
|
return this.http.post(`${base}/${path}`, body, {
|
|
3028
3040
|
headers: this.buildHeaders(creds)
|
|
@@ -3070,7 +3082,7 @@ class MCPOrchestratorService {
|
|
|
3070
3082
|
}
|
|
3071
3083
|
return h;
|
|
3072
3084
|
}
|
|
3073
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: MCPOrchestratorService, deps: [{ token: i1$
|
|
3085
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: MCPOrchestratorService, deps: [{ token: i1$2.HttpClient }, { token: i1.AppConfigService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3074
3086
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: MCPOrchestratorService, providedIn: 'root' }); }
|
|
3075
3087
|
}
|
|
3076
3088
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: MCPOrchestratorService, decorators: [{
|
|
@@ -3078,7 +3090,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
3078
3090
|
args: [{
|
|
3079
3091
|
providedIn: 'root'
|
|
3080
3092
|
}]
|
|
3081
|
-
}], ctorParameters: () => [{ type: i1$
|
|
3093
|
+
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i1.AppConfigService }, { type: i2.Store }] });
|
|
3082
3094
|
|
|
3083
3095
|
class WebsocketService {
|
|
3084
3096
|
constructor(appConfigService, authService) {
|
|
@@ -3091,7 +3103,7 @@ class WebsocketService {
|
|
|
3091
3103
|
this.webSocket$ = this.webSocketSubject.asObservable().pipe(distinctUntilChanged());
|
|
3092
3104
|
});
|
|
3093
3105
|
}
|
|
3094
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebsocketService, deps: [{ token:
|
|
3106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebsocketService, deps: [{ token: i1.AppConfigService }, { token: AuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3095
3107
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebsocketService, providedIn: 'root' }); }
|
|
3096
3108
|
}
|
|
3097
3109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebsocketService, decorators: [{
|
|
@@ -3099,7 +3111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
3099
3111
|
args: [{
|
|
3100
3112
|
providedIn: 'root'
|
|
3101
3113
|
}]
|
|
3102
|
-
}], ctorParameters: () => [{ type:
|
|
3114
|
+
}], ctorParameters: () => [{ type: i1.AppConfigService }, { type: AuthService }] });
|
|
3103
3115
|
|
|
3104
3116
|
class NotificationService {
|
|
3105
3117
|
constructor(api, toastrService, socketService) {
|
|
@@ -3160,6 +3172,97 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
3160
3172
|
}]
|
|
3161
3173
|
}], ctorParameters: () => [{ type: MainApiHttpService }, { type: CustomToastService }, { type: WebsocketService }] });
|
|
3162
3174
|
|
|
3175
|
+
/**
|
|
3176
|
+
* Server→client push channel for the Posiwise Brain chat panel (ticket #45).
|
|
3177
|
+
*
|
|
3178
|
+
* Opens a WebSocket to `GET /brain-api/v1/ws`. brain-api subscribes the socket
|
|
3179
|
+
* to the user's Redis channel and forwards every message published via
|
|
3180
|
+
* `POST /brain-api/v1/ws/push` as a JSON frame. Mirrors the existing
|
|
3181
|
+
* `WebsocketService` (main-api Faye socket) in spirit, but talks to brain-api
|
|
3182
|
+
* and authenticates with the same user-token credentials the
|
|
3183
|
+
* `MCPOrchestratorService` sends as headers.
|
|
3184
|
+
*
|
|
3185
|
+
* Auth: a WebSocket upgrade can't carry custom headers from the browser, so
|
|
3186
|
+
* the three credential values are bundled into a single base64'd JSON
|
|
3187
|
+
* `session_token` query param. brain-api decodes it back into the headers its
|
|
3188
|
+
* canonical authenticator expects (close code 4401 if missing/invalid).
|
|
3189
|
+
*
|
|
3190
|
+
* Reconnect: nginx ingress cuts idle upstream connections at ~60s, and this
|
|
3191
|
+
* channel is mostly idle, so the stream auto-reconnects with a fixed backoff.
|
|
3192
|
+
* Each reconnect re-resolves credentials (via `defer`) so a rotated token is
|
|
3193
|
+
* picked up rather than replayed.
|
|
3194
|
+
*/
|
|
3195
|
+
const RECONNECT_DELAY_MS = 5_000;
|
|
3196
|
+
const BRAIN_MESSAGE_EVENT = 'brain_message';
|
|
3197
|
+
class BrainSocketService {
|
|
3198
|
+
constructor(appConfigService, store) {
|
|
3199
|
+
this.appConfigService = appConfigService;
|
|
3200
|
+
this.store = store;
|
|
3201
|
+
}
|
|
3202
|
+
/**
|
|
3203
|
+
* Hot stream of assistant messages pushed by the server. Subscribe when the
|
|
3204
|
+
* chat panel mounts; unsubscribe (via `takeUntil`) when it tears down.
|
|
3205
|
+
*/
|
|
3206
|
+
messages$() {
|
|
3207
|
+
return defer(() => this.buildSocketUrl$().pipe(switchMap(url => webSocket(url)))).pipe(retry({ delay: () => timer(RECONNECT_DELAY_MS) }), filter((frame) => !!frame && frame.event === BRAIN_MESSAGE_EVENT), map(frame => ({ id: frame.id, text: frame.data?.text ?? '' })), filter(message => !!message.text));
|
|
3208
|
+
}
|
|
3209
|
+
buildSocketUrl$() {
|
|
3210
|
+
return this.wsBase$().pipe(switchMap(base => this.store.pipe(take(1), map((app) => this.pickApiCredentials(app.user?.currentUser ?? null)), switchMap(creds => creds
|
|
3211
|
+
? of(`${base}?session_token=${this.encodeBundle(creds)}`)
|
|
3212
|
+
: throwError(() => new Error('Brain socket needs API credentials.'))))));
|
|
3213
|
+
}
|
|
3214
|
+
/** Absolute `ws(s)://…/brain-api/v1/ws` base, dev (same-origin) or prod (links). */
|
|
3215
|
+
wsBase$() {
|
|
3216
|
+
if (isDevMode()) {
|
|
3217
|
+
const scheme = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
3218
|
+
const path = `${BRAIN_API_PREFIX.replace(/\/$/, '')}/ws`;
|
|
3219
|
+
return of(`${scheme}//${window.location.host}${path}`);
|
|
3220
|
+
}
|
|
3221
|
+
return this.appConfigService.appConfig$.pipe(take(1), switchMap(c => {
|
|
3222
|
+
const url = c?.links?.['brain_api'];
|
|
3223
|
+
if (typeof url === 'string' && url.trim()) {
|
|
3224
|
+
const wsBase = url.trim().replace(/\/$/, '').replace(/^http/, 'ws');
|
|
3225
|
+
return of(`${wsBase}/ws`);
|
|
3226
|
+
}
|
|
3227
|
+
return throwError(() => new Error('Brain API is not configured: set links.brain_api in app configuration.'));
|
|
3228
|
+
}));
|
|
3229
|
+
}
|
|
3230
|
+
/**
|
|
3231
|
+
* Same credential resolution as `MCPOrchestratorService.pickApiCredentials`
|
|
3232
|
+
* — token/userId from the active user, clientId from the active subscription.
|
|
3233
|
+
*/
|
|
3234
|
+
pickApiCredentials(user) {
|
|
3235
|
+
if (!user) {
|
|
3236
|
+
return null;
|
|
3237
|
+
}
|
|
3238
|
+
const token = user.api_user_token ?? user.api_keys?.api_user_token;
|
|
3239
|
+
const userId = user.api_user_id ?? user.api_keys?.api_user_id;
|
|
3240
|
+
if (!token || !userId) {
|
|
3241
|
+
return null;
|
|
3242
|
+
}
|
|
3243
|
+
const clientId = PermissionService.selectedSubscription?.api_client_id;
|
|
3244
|
+
return { token, userId, clientId };
|
|
3245
|
+
}
|
|
3246
|
+
encodeBundle(creds) {
|
|
3247
|
+
const bundle = {
|
|
3248
|
+
api_user_token: creds.token,
|
|
3249
|
+
api_user_id: creds.userId
|
|
3250
|
+
};
|
|
3251
|
+
if (creds.clientId) {
|
|
3252
|
+
bundle['api_client_id'] = creds.clientId;
|
|
3253
|
+
}
|
|
3254
|
+
return encodeURIComponent(btoa(JSON.stringify(bundle)));
|
|
3255
|
+
}
|
|
3256
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BrainSocketService, deps: [{ token: i1.AppConfigService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3257
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BrainSocketService, providedIn: 'root' }); }
|
|
3258
|
+
}
|
|
3259
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BrainSocketService, decorators: [{
|
|
3260
|
+
type: Injectable,
|
|
3261
|
+
args: [{
|
|
3262
|
+
providedIn: 'root'
|
|
3263
|
+
}]
|
|
3264
|
+
}], ctorParameters: () => [{ type: i1.AppConfigService }, { type: i2.Store }] });
|
|
3265
|
+
|
|
3163
3266
|
class DataService {
|
|
3164
3267
|
constructor() {
|
|
3165
3268
|
this.messageSource = new BehaviorSubject(0);
|
|
@@ -3647,7 +3750,7 @@ class SentryErrorHandler {
|
|
|
3647
3750
|
console.error(error, e);
|
|
3648
3751
|
}
|
|
3649
3752
|
}
|
|
3650
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SentryErrorHandler, deps: [{ token:
|
|
3753
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SentryErrorHandler, deps: [{ token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3651
3754
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SentryErrorHandler, providedIn: 'root' }); }
|
|
3652
3755
|
}
|
|
3653
3756
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SentryErrorHandler, decorators: [{
|
|
@@ -3655,7 +3758,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
3655
3758
|
args: [{
|
|
3656
3759
|
providedIn: 'root'
|
|
3657
3760
|
}]
|
|
3658
|
-
}], ctorParameters: () => [{ type:
|
|
3761
|
+
}], ctorParameters: () => [{ type: i1.AppConfigService }] });
|
|
3659
3762
|
|
|
3660
3763
|
class LogoCacheService {
|
|
3661
3764
|
constructor() {
|
|
@@ -3771,7 +3874,7 @@ class BrainApiHttpService extends BaseHttpService {
|
|
|
3771
3874
|
this.baseUrl = isDevMode() ? BRAIN_API_PREFIX : config?.['links']['brain_api'] ?? '';
|
|
3772
3875
|
});
|
|
3773
3876
|
}
|
|
3774
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BrainApiHttpService, deps: [{ token: i1$
|
|
3877
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BrainApiHttpService, deps: [{ token: i1$2.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3775
3878
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BrainApiHttpService, providedIn: 'root' }); }
|
|
3776
3879
|
}
|
|
3777
3880
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: BrainApiHttpService, decorators: [{
|
|
@@ -3779,7 +3882,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
3779
3882
|
args: [{
|
|
3780
3883
|
providedIn: 'root'
|
|
3781
3884
|
}]
|
|
3782
|
-
}], ctorParameters: () => [{ type: i1$
|
|
3885
|
+
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i0.Injector }] });
|
|
3783
3886
|
|
|
3784
3887
|
class BrainApiService {
|
|
3785
3888
|
constructor(api) {
|
|
@@ -3806,5 +3909,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
3806
3909
|
* Generated bundle index. Do not edit.
|
|
3807
3910
|
*/
|
|
3808
3911
|
|
|
3809
|
-
export { AbTestService, AhoyService, AuthService, BaseHttpService, BrainApiHttpService, BrainApiService, CommonService, CommonServicesModule, CustomPreloadingStrategy, CustomToastService, DashboardService, DataService, FeatureFlagService, FormHelperService, GeoService, GoogleAnalyticsService, GroupService, HopscotchService, IntegrationsApiHttpService, LinkService, LocalStorage, LogoCacheService, MCPOrchestratorService, MailBoxService, MainApiHttpService, McpJsonRpcService, NgbDateCustomParserFormatter, NotificationService, NumberPickerService, PermissionService, PrimeNgHelper, ProductService, ProfileService, QualificationService, ScriptLoaderService, SecureTokenStorageService, SentryErrorHandler, SeoService, SubscriptionService, TagService, TipsService, UserEffects, UserService, ValidationService, WebsocketService, WindowService };
|
|
3912
|
+
export { AbTestService, AhoyService, AuthService, BaseHttpService, BrainApiHttpService, BrainApiService, BrainSocketService, CommonService, CommonServicesModule, CustomPreloadingStrategy, CustomToastService, DashboardService, DataService, FeatureFlagService, FormHelperService, GeoService, GoogleAnalyticsService, GroupService, HopscotchService, IntegrationsApiHttpService, LinkService, LocalStorage, LogoCacheService, MCPOrchestratorService, MailBoxService, MainApiHttpService, McpJsonRpcService, NgbDateCustomParserFormatter, NotificationService, NumberPickerService, PermissionService, PrimeNgHelper, ProductService, ProfileService, QualificationService, ScriptLoaderService, SecureTokenStorageService, SentryErrorHandler, SeoService, SubscriptionService, TagService, TipsService, UserEffects, UserService, ValidationService, WebsocketService, WindowService };
|
|
3810
3913
|
//# sourceMappingURL=posiwise-common-services.mjs.map
|