@elite.framework/ng.core 2.0.10 → 2.0.12

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.
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { NgModule, inject } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
+ import { TranslateService } from '@ngx-translate/core';
4
5
  import { Router } from '@angular/router';
5
6
  import { SwalService } from '@elite.framework/ng.core/services';
6
7
  import { ENVIRONMENT } from '@elite.framework/ng.core/tokens';
7
- import { TranslateService } from '@ngx-translate/core';
8
8
  import { throwError } from 'rxjs';
9
9
  import { catchError, finalize } from 'rxjs/operators';
10
10
 
@@ -20,6 +20,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
20
20
  }]
21
21
  }] });
22
22
 
23
+ // language.interceptor.fn.ts
24
+ function languageInterceptor(req, next) {
25
+ const translateService = inject(TranslateService);
26
+ // Get the current language (fallback to 'ar')
27
+ const currentLanguage = translateService.currentLang || 'ar';
28
+ // Clone request and add Accept-Language header
29
+ const clonedReq = req.clone({
30
+ setHeaders: {
31
+ 'Accept-Language': currentLanguage
32
+ }
33
+ });
34
+ return next(clonedReq);
35
+ }
36
+
23
37
  const apiInterceptor = (req, next) => {
24
38
  const env = inject(ENVIRONMENT);
25
39
  const router = inject(Router);
@@ -68,14 +82,14 @@ const apiInterceptor = (req, next) => {
68
82
  break;
69
83
  case 500:
70
84
  swal.error(translate.instant('Error.ServerError'), problem.detail || problem.title);
71
- break;
85
+ break; // || error.status === 0
72
86
  default:
73
- swal.error(translate.instant(problem.title || 'Error.Unexpected'), problem.detail ? translate.instant(problem.detail) : undefined);
87
+ swal.error(translate.instant(problem.title || 'Error.NoConnection' /* 'Error.Unexpected' */), problem.detail ? translate.instant(problem.detail) : undefined);
74
88
  break;
75
89
  }
76
90
  }
77
91
  else {
78
- swal.error(translate.instant('Error.Unexpected'), error.message);
92
+ swal.error(translate.instant('Error.NoConnection' /* 'Error.Unexpected' */), error.message);
79
93
  }
80
94
  return throwError(() => problem ?? error);
81
95
  }), finalize(() => {
@@ -87,5 +101,5 @@ const apiInterceptor = (req, next) => {
87
101
  * Generated bundle index. Do not edit.
88
102
  */
89
103
 
90
- export { InterceptorsModule, apiInterceptor };
104
+ export { InterceptorsModule, apiInterceptor, languageInterceptor };
91
105
  //# sourceMappingURL=elite.framework-ng.core-interceptors.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.core-interceptors.mjs","sources":["../tmp-esm2022/interceptors/lib/interceptors-module.js","../tmp-esm2022/interceptors/lib/api.interceptor.js","../tmp-esm2022/interceptors/elite.framework-ng.core-interceptors.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class InterceptorsModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3JzLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9pbnRlcmNlcHRvcnMvc3JjL2xpYi9pbnRlcmNlcHRvcnMtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sa0JBQWtCO3VHQUFsQixrQkFBa0I7d0dBQWxCLGtCQUFrQixZQUZuQixZQUFZO3dHQUVYLGtCQUFrQixZQUZuQixZQUFZOzsyRkFFWCxrQkFBa0I7a0JBSDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSW50ZXJjZXB0b3JzTW9kdWxlIHt9XG4iXX0=","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SwalService } from '@elite.framework/ng.core/services';\nimport { ENVIRONMENT } from '@elite.framework/ng.core/tokens';\nimport { TranslateService } from '@ngx-translate/core';\nimport { throwError } from 'rxjs';\nimport { catchError, finalize } from 'rxjs/operators';\nexport const apiInterceptor = (req, next) => {\n const env = inject(ENVIRONMENT);\n const router = inject(Router);\n const swal = inject(SwalService);\n const translate = inject(TranslateService);\n const apiUrl = env.apiUrl;\n let newReq = req;\n // 🔹 Example: add base API url\n // if (!/^https?:\\/\\//i.test(req.url)) {\n // newReq = req.clone({\n // url: `${apiUrl}${req.url.startsWith('/') ? '' : '/'}${req.url}`\n // });\n // }\n // 🔹 Example: add JWT token\n // const token = localStorage.getItem('token');\n // if (token) {\n // newReq = newReq.clone({\n // setHeaders: { Authorization: `Bearer ${token}` }\n // });\n // }\n return next(newReq).pipe(catchError((error) => {\n let problem = null;\n if (error.error && typeof error.error === 'object') {\n problem = error.error;\n }\n else if (typeof error.error === 'string') {\n try {\n problem = JSON.parse(error.error);\n }\n catch {\n problem = null;\n }\n }\n if (problem) {\n switch (problem.status) {\n case 400:\n swal.error(translate.instant(problem.title || 'Error.BadRequest'), problem.detail ? translate.instant(problem.detail) : undefined);\n break;\n case 401:\n swal.error(translate.instant('Error.Unauthorized'), translate.instant('Error.SessionExpired'));\n localStorage.removeItem('token');\n router.navigate(['/login']);\n break;\n case 403:\n swal.error(translate.instant('Error.Forbidden'), problem.title || translate.instant('Error.NoPermission'));\n break;\n case 500:\n swal.error(translate.instant('Error.ServerError'), problem.detail || problem.title);\n break;\n default:\n swal.error(translate.instant(problem.title || 'Error.Unexpected'), problem.detail ? translate.instant(problem.detail) : undefined);\n break;\n }\n }\n else {\n swal.error(translate.instant('Error.Unexpected'), error.message);\n }\n return throwError(() => problem ?? error);\n }), finalize(() => {\n // console.log(`✅ API request finished: ${req.method} ${req.url}`);\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL2ludGVyY2VwdG9ycy9zcmMvbGliL2FwaS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVd0RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQXNCLENBQy9DLEdBQXFCLEVBQ3JCLElBQW1CLEVBQ1MsRUFBRTtJQUM5QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUUzQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQzFCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUVqQiwrQkFBK0I7SUFDL0Isd0NBQXdDO0lBQ3hDLHlCQUF5QjtJQUN6QixzRUFBc0U7SUFDdEUsUUFBUTtJQUNSLElBQUk7SUFFSiw0QkFBNEI7SUFDNUIsK0NBQStDO0lBQy9D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Y2VwdG9yRm4sXHJcbiAgSHR0cFJlcXVlc3QsXHJcbiAgSHR0cEhhbmRsZXJGbixcclxuICBIdHRwRXZlbnQsXHJcbiAgSHR0cEVycm9yUmVzcG9uc2VcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTd2FsU2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL3Rva2Vucyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvYmxlbURldGFpbHNSZXNwb25zZSB7XHJcbiAgdHlwZT86IHN0cmluZyB8IG51bGw7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBzdGF0dXM6IG51bWJlcjtcclxuICBkZXRhaWw/OiBzdHJpbmcgfCBudWxsO1xyXG4gIGluc3RhbmNlPzogc3RyaW5nO1xyXG4gIHRyYWNlSWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBhcGlJbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yRm4gPSAoXHJcbiAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gIG5leHQ6IEh0dHBIYW5kbGVyRm5cclxuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4gPT4ge1xyXG4gIGNvbnN0IGVudiA9IGluamVjdChFTlZJUk9OTUVOVCk7XHJcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgY29uc3Qgc3dhbCA9IGluamVjdChTd2FsU2VydmljZSk7XHJcbiAgY29uc3QgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cclxuICBjb25zdCBhcGlVcmwgPSBlbnYuYXBpVXJsO1xyXG4gIGxldCBuZXdSZXEgPSByZXE7XHJcblxyXG4gIC8vIPCflLkgRXhhbXBsZTogYWRkIGJhc2UgQVBJIHVybFxyXG4gIC8vIGlmICghL15odHRwcz86XFwvXFwvL2kudGVzdChyZXEudXJsKSkge1xyXG4gIC8vICAgbmV3UmVxID0gcmVxLmNsb25lKHtcclxuICAvLyAgICAgdXJsOiBgJHthcGlVcmx9JHtyZXEudXJsLnN0YXJ0c1dpdGgoJy8nKSA/ICcnIDogJy8nfSR7cmVxLnVybH1gXHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIPCflLkgRXhhbXBsZTogYWRkIEpXVCB0b2tlblxyXG4gIC8vIGNvbnN0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rva2VuJyk7XHJcbiAgLy8gaWYgKHRva2VuKSB7XHJcbiAgLy8gICBuZXdSZXEgPSBuZXdSZXEuY2xvbmUoe1xyXG4gIC8vICAgICBzZXRIZWFkZXJzOiB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgcmV0dXJuIG5leHQobmV3UmVxKS5waXBlKFxyXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGxldCBwcm9ibGVtOiBQcm9ibGVtRGV0YWlsc1Jlc3BvbnNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICBpZiAoZXJyb3IuZXJyb3IgJiYgdHlwZW9mIGVycm9yLmVycm9yID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIHByb2JsZW0gPSBlcnJvci5lcnJvciBhcyBQcm9ibGVtRGV0YWlsc1Jlc3BvbnNlO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnJvci5lcnJvciA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgcHJvYmxlbSA9IEpTT04ucGFyc2UoZXJyb3IuZXJyb3IpIGFzIFByb2JsZW1EZXRhaWxzUmVzcG9uc2U7XHJcbiAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICBwcm9ibGVtID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChwcm9ibGVtKSB7XHJcbiAgICAgICAgc3dpdGNoIChwcm9ibGVtLnN0YXR1cykge1xyXG4gICAgICAgICAgY2FzZSA0MDA6XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQocHJvYmxlbS50aXRsZSB8fCAnRXJyb3IuQmFkUmVxdWVzdCcpLFxyXG4gICAgICAgICAgICAgIHByb2JsZW0uZGV0YWlsID8gdHJhbnNsYXRlLmluc3RhbnQocHJvYmxlbS5kZXRhaWwpIDogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLlVuYXV0aG9yaXplZCcpLFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5TZXNzaW9uRXhwaXJlZCcpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0b2tlbicpO1xyXG4gICAgICAgICAgICByb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLkZvcmJpZGRlbicpLFxyXG4gICAgICAgICAgICAgIHByb2JsZW0udGl0bGUgfHwgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLk5vUGVybWlzc2lvbicpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA1MDA6XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLlNlcnZlckVycm9yJyksXHJcbiAgICAgICAgICAgICAgcHJvYmxlbS5kZXRhaWwgfHwgcHJvYmxlbS50aXRsZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQocHJvYmxlbS50aXRsZSB8fCAnRXJyb3IuVW5leHBlY3RlZCcpLFxyXG4gICAgICAgICAgICAgIHByb2JsZW0uZGV0YWlsID8gdHJhbnNsYXRlLmluc3RhbnQocHJvYmxlbS5kZXRhaWwpIDogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLlVuZXhwZWN0ZWQnKSxcclxuICAgICAgICAgIGVycm9yLm1lc3NhZ2VcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBwcm9ibGVtID8/IGVycm9yKTtcclxuICAgIH0pLFxyXG4gICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhg4pyFIEFQSSByZXF1ZXN0IGZpbmlzaGVkOiAke3JlcS5tZXRob2R9ICR7cmVxLnVybH1gKTtcclxuICAgIH0pXHJcbiAgKTtcclxufTtcclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtaW50ZXJjZXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL2ludGVyY2VwdG9ycy9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtaW50ZXJjZXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elite.framework-ng.core-interceptors.mjs","sources":["../tmp-esm2022/interceptors/lib/interceptors-module.js","../tmp-esm2022/interceptors/lib/language.interceptor.js","../tmp-esm2022/interceptors/lib/api.interceptor.js","../tmp-esm2022/interceptors/elite.framework-ng.core-interceptors.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class InterceptorsModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3JzLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9pbnRlcmNlcHRvcnMvc3JjL2xpYi9pbnRlcmNlcHRvcnMtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sa0JBQWtCO3VHQUFsQixrQkFBa0I7d0dBQWxCLGtCQUFrQixZQUZuQixZQUFZO3dHQUVYLGtCQUFrQixZQUZuQixZQUFZOzsyRkFFWCxrQkFBa0I7a0JBSDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSW50ZXJjZXB0b3JzTW9kdWxlIHt9XG4iXX0=","// language.interceptor.fn.ts\nimport { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nexport function languageInterceptor(req, next) {\n const translateService = inject(TranslateService);\n // Get the current language (fallback to 'ar')\n const currentLanguage = translateService.currentLang || 'ar';\n // Clone request and add Accept-Language header\n const clonedReq = req.clone({\n setHeaders: {\n 'Accept-Language': currentLanguage\n }\n });\n return next(clonedReq);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLmNvcmUvaW50ZXJjZXB0b3JzL3NyYy9saWIvbGFuZ3VhZ2UuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxHQUFxQixFQUNyQixJQUFtQjtJQUVuQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWxELDhDQUE4QztJQUM5QyxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDO0lBRTdELCtDQUErQztJQUMvQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzFCLFVBQVUsRUFBRTtZQUNWLGlCQUFpQixFQUFFLGVBQWU7U0FDbkM7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbGFuZ3VhZ2UuaW50ZXJjZXB0b3IuZm4udHNcclxuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0LCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyRm4gfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxhbmd1YWdlSW50ZXJjZXB0b3IoXHJcbiAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gIG5leHQ6IEh0dHBIYW5kbGVyRm5cclxuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gIGNvbnN0IHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gIC8vIEdldCB0aGUgY3VycmVudCBsYW5ndWFnZSAoZmFsbGJhY2sgdG8gJ2FyJylcclxuICBjb25zdCBjdXJyZW50TGFuZ3VhZ2UgPSB0cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nIHx8ICdhcic7XHJcblxyXG4gIC8vIENsb25lIHJlcXVlc3QgYW5kIGFkZCBBY2NlcHQtTGFuZ3VhZ2UgaGVhZGVyXHJcbiAgY29uc3QgY2xvbmVkUmVxID0gcmVxLmNsb25lKHtcclxuICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGN1cnJlbnRMYW5ndWFnZVxyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gbmV4dChjbG9uZWRSZXEpO1xyXG59XHJcbiJdfQ==","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SwalService } from '@elite.framework/ng.core/services';\nimport { ENVIRONMENT } from '@elite.framework/ng.core/tokens';\nimport { TranslateService } from '@ngx-translate/core';\nimport { throwError } from 'rxjs';\nimport { catchError, finalize } from 'rxjs/operators';\nexport const apiInterceptor = (req, next) => {\n const env = inject(ENVIRONMENT);\n const router = inject(Router);\n const swal = inject(SwalService);\n const translate = inject(TranslateService);\n const apiUrl = env.apiUrl;\n let newReq = req;\n // 🔹 Example: add base API url\n // if (!/^https?:\\/\\//i.test(req.url)) {\n // newReq = req.clone({\n // url: `${apiUrl}${req.url.startsWith('/') ? '' : '/'}${req.url}`\n // });\n // }\n // 🔹 Example: add JWT token\n // const token = localStorage.getItem('token');\n // if (token) {\n // newReq = newReq.clone({\n // setHeaders: { Authorization: `Bearer ${token}` }\n // });\n // }\n return next(newReq).pipe(catchError((error) => {\n let problem = null;\n if (error.error && typeof error.error === 'object') {\n problem = error.error;\n }\n else if (typeof error.error === 'string') {\n try {\n problem = JSON.parse(error.error);\n }\n catch {\n problem = null;\n }\n }\n if (problem) {\n switch (problem.status) {\n case 400:\n swal.error(translate.instant(problem.title || 'Error.BadRequest'), problem.detail ? translate.instant(problem.detail) : undefined);\n break;\n case 401:\n swal.error(translate.instant('Error.Unauthorized'), translate.instant('Error.SessionExpired'));\n localStorage.removeItem('token');\n router.navigate(['/login']);\n break;\n case 403:\n swal.error(translate.instant('Error.Forbidden'), problem.title || translate.instant('Error.NoPermission'));\n break;\n case 500:\n swal.error(translate.instant('Error.ServerError'), problem.detail || problem.title);\n break; // || error.status === 0\n default:\n swal.error(translate.instant(problem.title || 'Error.NoConnection' /* 'Error.Unexpected' */), problem.detail ? translate.instant(problem.detail) : undefined);\n break;\n }\n }\n else {\n swal.error(translate.instant('Error.NoConnection' /* 'Error.Unexpected' */), error.message);\n }\n return throwError(() => problem ?? error);\n }), finalize(() => {\n // console.log(`✅ API request finished: ${req.method} ${req.url}`);\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL2ludGVyY2VwdG9ycy9zcmMvbGliL2FwaS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVd0RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQXNCLENBQy9DLEdBQXFCLEVBQ3JCLElBQW1CLEVBQ1MsRUFBRTtJQUM5QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUUzQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQzFCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUVqQiwrQkFBK0I7SUFDL0Isd0NBQXdDO0lBQ3hDLHlCQUF5QjtJQUN6QixzRUFBc0U7SUFDdEUsUUFBUTtJQUNSLElBQUk7SUFFSiw0QkFBNEI7SUFDNUIsK0NBQStDO0lBQy9DLGVBQWU7SUFDZiw0QkFBNEI7SUFDNUIsdURBQXVEO0lBQ3ZELFFBQVE7SUFDUixJQUFJO0lBRUosT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUN0QixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUU7UUFDdEMsSUFBSSxPQUFPLEdBQWtDLElBQUksQ0FBQztRQUVsRCxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25ELE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBK0IsQ0FBQztRQUNsRCxDQUFDO2FBQU0sSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDO2dCQUNILE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQTJCLENBQUM7WUFDOUQsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLFFBQVEsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixLQUFLLEdBQUc7b0JBQ04sSUFBSSxDQUFDLEtBQUssQ0FDUixTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksa0JBQWtCLENBQUMsRUFDdEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDL0QsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssR0FBRztvQkFDTixJQUFJLENBQUMsS0FBSyxDQUNSLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFDdkMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUMxQyxDQUFDO29CQUNGLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUM1QixNQUFNO2dCQUNSLEtBQUssR0FBRztvQkFDTixJQUFJLENBQUMsS0FBSyxDQUNSLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFDcEMsT0FBTyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQ3pELENBQUM7b0JBQ0YsTUFBTTtnQkFDUixLQUFLLEdBQUc7b0JBQ04sSUFBSSxDQUFDLEtBQUssQ0FDUixTQUFTLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQ3RDLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssQ0FDaEMsQ0FBQztvQkFDRixNQUFNLENBQUMsd0JBQXdCO2dCQUNqQztvQkFDRSxJQUFJLENBQUMsS0FBSyxDQUNSLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBRyxvQkFBb0IsQ0FBQyx3QkFBd0IsQ0FBQyxFQUNoRixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUMvRCxDQUFDO29CQUNGLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUNSLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUEsd0JBQXdCLENBQUMsRUFDL0QsS0FBSyxDQUFDLE9BQU8sQ0FDZCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ1osbUVBQW1FO0lBQ3JFLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBJbnRlcmNlcHRvckZuLFxyXG4gIEh0dHBSZXF1ZXN0LFxyXG4gIEh0dHBIYW5kbGVyRm4sXHJcbiAgSHR0cEV2ZW50LFxyXG4gIEh0dHBFcnJvclJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS90b2tlbnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2JsZW1EZXRhaWxzUmVzcG9uc2Uge1xyXG4gIHR5cGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgc3RhdHVzOiBudW1iZXI7XHJcbiAgZGV0YWlsPzogc3RyaW5nIHwgbnVsbDtcclxuICBpbnN0YW5jZT86IHN0cmluZztcclxuICB0cmFjZUlkPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYXBpSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKFxyXG4gIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcclxuICBuZXh0OiBIdHRwSGFuZGxlckZuXHJcbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0+IHtcclxuICBjb25zdCBlbnYgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xyXG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIGNvbnN0IHN3YWwgPSBpbmplY3QoU3dhbFNlcnZpY2UpO1xyXG4gIGNvbnN0IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3QgYXBpVXJsID0gZW52LmFwaVVybDtcclxuICBsZXQgbmV3UmVxID0gcmVxO1xyXG5cclxuICAvLyDwn5S5IEV4YW1wbGU6IGFkZCBiYXNlIEFQSSB1cmxcclxuICAvLyBpZiAoIS9eaHR0cHM/OlxcL1xcLy9pLnRlc3QocmVxLnVybCkpIHtcclxuICAvLyAgIG5ld1JlcSA9IHJlcS5jbG9uZSh7XHJcbiAgLy8gICAgIHVybDogYCR7YXBpVXJsfSR7cmVxLnVybC5zdGFydHNXaXRoKCcvJykgPyAnJyA6ICcvJ30ke3JlcS51cmx9YFxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyDwn5S5IEV4YW1wbGU6IGFkZCBKV1QgdG9rZW5cclxuICAvLyBjb25zdCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2tlbicpO1xyXG4gIC8vIGlmICh0b2tlbikge1xyXG4gIC8vICAgbmV3UmVxID0gbmV3UmVxLmNsb25lKHtcclxuICAvLyAgICAgc2V0SGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHJldHVybiBuZXh0KG5ld1JlcSkucGlwZShcclxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICBsZXQgcHJvYmxlbTogUHJvYmxlbURldGFpbHNSZXNwb25zZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKGVycm9yLmVycm9yICYmIHR5cGVvZiBlcnJvci5lcnJvciA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBwcm9ibGVtID0gZXJyb3IuZXJyb3IgYXMgUHJvYmxlbURldGFpbHNSZXNwb25zZTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IuZXJyb3IgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHByb2JsZW0gPSBKU09OLnBhcnNlKGVycm9yLmVycm9yKSBhcyBQcm9ibGVtRGV0YWlsc1Jlc3BvbnNlO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgcHJvYmxlbSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocHJvYmxlbSkge1xyXG4gICAgICAgIHN3aXRjaCAocHJvYmxlbS5zdGF0dXMpIHtcclxuICAgICAgICAgIGNhc2UgNDAwOlxyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KHByb2JsZW0udGl0bGUgfHwgJ0Vycm9yLkJhZFJlcXVlc3QnKSxcclxuICAgICAgICAgICAgICBwcm9ibGVtLmRldGFpbCA/IHRyYW5zbGF0ZS5pbnN0YW50KHByb2JsZW0uZGV0YWlsKSA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNDAxOlxyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5VbmF1dGhvcml6ZWQnKSxcclxuICAgICAgICAgICAgICB0cmFuc2xhdGUuaW5zdGFudCgnRXJyb3IuU2Vzc2lvbkV4cGlyZWQnKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9rZW4nKTtcclxuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNDAzOlxyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5Gb3JiaWRkZW4nKSxcclxuICAgICAgICAgICAgICBwcm9ibGVtLnRpdGxlIHx8IHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5Ob1Blcm1pc3Npb24nKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNTAwOlxyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5TZXJ2ZXJFcnJvcicpLFxyXG4gICAgICAgICAgICAgIHByb2JsZW0uZGV0YWlsIHx8IHByb2JsZW0udGl0bGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYnJlYWs7IC8vIHx8IGVycm9yLnN0YXR1cyA9PT0gMFxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgc3dhbC5lcnJvcihcclxuICAgICAgICAgICAgICB0cmFuc2xhdGUuaW5zdGFudChwcm9ibGVtLnRpdGxlIHx8J0Vycm9yLk5vQ29ubmVjdGlvbicgLyogJ0Vycm9yLlVuZXhwZWN0ZWQnICovKSxcclxuICAgICAgICAgICAgICBwcm9ibGVtLmRldGFpbCA/IHRyYW5zbGF0ZS5pbnN0YW50KHByb2JsZW0uZGV0YWlsKSA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3dhbC5lcnJvcihcclxuICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5Ob0Nvbm5lY3Rpb24nLyogJ0Vycm9yLlVuZXhwZWN0ZWQnICovKSxcclxuICAgICAgICAgIGVycm9yLm1lc3NhZ2VcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBwcm9ibGVtID8/IGVycm9yKTtcclxuICAgIH0pLFxyXG4gICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhg4pyFIEFQSSByZXF1ZXN0IGZpbmlzaGVkOiAke3JlcS5tZXRob2R9ICR7cmVxLnVybH1gKTtcclxuICAgIH0pXHJcbiAgKTtcclxufTtcclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtaW50ZXJjZXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL2ludGVyY2VwdG9ycy9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtaW50ZXJjZXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
@@ -660,9 +660,142 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
660
660
  args: [{ providedIn: 'root' }]
661
661
  }], ctorParameters: () => [{ type: PermissionsService }, { type: i2.Router }] });
662
662
 
663
+ // logger.interface.ts
664
+ var LogLevel;
665
+ (function (LogLevel) {
666
+ LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
667
+ LogLevel[LogLevel["INFO"] = 1] = "INFO";
668
+ LogLevel[LogLevel["WARN"] = 2] = "WARN";
669
+ LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
670
+ LogLevel[LogLevel["OFF"] = 4] = "OFF";
671
+ })(LogLevel || (LogLevel = {}));
672
+
673
+ // logger.service.ts
674
+ // Remove the separate LoggerConfig interface since we're using EnvironmentConfig
675
+ // and extend EnvironmentConfig to include logger-specific properties
676
+ class LoggerService {
677
+ environment;
678
+ level = LogLevel.DEBUG;
679
+ enableConsole = true;
680
+ prefix = '[App]';
681
+ timestamp = true;
682
+ constructor(environment) {
683
+ this.environment = environment;
684
+ // Use environment configuration if provided
685
+ if (this.environment) {
686
+ this.configureFromEnvironment(this.environment);
687
+ }
688
+ // Fallback: In production, default to WARN level
689
+ if (typeof window !== 'undefined' && window.location.hostname !== 'localhost') {
690
+ this.level = LogLevel.WARN;
691
+ this.enableConsole = false;
692
+ }
693
+ }
694
+ configureFromEnvironment(env) {
695
+ // Map string log levels from environment to LogLevel enum
696
+ this.level = this.mapLogLevel(env.logLevel);
697
+ // Use production flag to determine console logging
698
+ this.enableConsole = !env.production;
699
+ // Set prefix from environment if available
700
+ this.prefix = `[${env['appName'] || 'App'}]`;
701
+ // Enable timestamp in development, disable in production for performance
702
+ this.timestamp = !env.production;
703
+ }
704
+ mapLogLevel(level) {
705
+ switch (level) {
706
+ case 'debug': return LogLevel.DEBUG;
707
+ case 'info': return LogLevel.INFO;
708
+ case 'warn': return LogLevel.WARN;
709
+ case 'error': return LogLevel.ERROR;
710
+ case 'off': return LogLevel.OFF;
711
+ default: return LogLevel.WARN;
712
+ }
713
+ }
714
+ debug(message, ...args) {
715
+ if (this.shouldLog(LogLevel.DEBUG)) {
716
+ this.log('DEBUG', message, args, 'color: blue');
717
+ }
718
+ }
719
+ info(message, ...args) {
720
+ if (this.shouldLog(LogLevel.INFO)) {
721
+ this.log('INFO', message, args, 'color: green');
722
+ }
723
+ }
724
+ warn(message, ...args) {
725
+ if (this.shouldLog(LogLevel.WARN)) {
726
+ this.log('WARN', message, args, 'color: orange');
727
+ }
728
+ }
729
+ error(message, ...args) {
730
+ if (this.shouldLog(LogLevel.ERROR)) {
731
+ this.log('ERROR', message, args, 'color: red');
732
+ // Send to external services only for errors in production
733
+ if (this.environment?.production) {
734
+ this.sendToExternalService('ERROR', message, args);
735
+ }
736
+ }
737
+ }
738
+ setLogLevel(level) {
739
+ this.level = level;
740
+ }
741
+ shouldLog(level) {
742
+ return level >= this.level && this.enableConsole;
743
+ }
744
+ log(level, message, args, style) {
745
+ if (!this.enableConsole)
746
+ return;
747
+ const timestamp = this.timestamp ? new Date().toISOString() : '';
748
+ const formattedPrefix = this.prefix ? `${this.prefix}` : '';
749
+ const logMessage = `${timestamp} ${formattedPrefix} [${level}] ${message}`;
750
+ if (args.length > 0) {
751
+ console.log(`%c${logMessage}`, style, ...args);
752
+ }
753
+ else {
754
+ console.log(`%c${logMessage}`, style);
755
+ }
756
+ }
757
+ sendToExternalService(level, message, args) {
758
+ // Integrate with external logging services from environment
759
+ try {
760
+ const sentryUrl = this.environment?.externalServices?.['sentry'];
761
+ const logRocketUrl = this.environment?.externalServices?.['logRocket'];
762
+ // Example: Send to configured external services
763
+ if (sentryUrl) {
764
+ // this.sendToSentry(level, message, args);
765
+ }
766
+ if (logRocketUrl) {
767
+ // this.sendToLogRocket(level, message, args);
768
+ }
769
+ // Send to backend if apiUrl is available
770
+ if (this.environment?.apiUrl) {
771
+ // this.http.post(`${this.environment.apiUrl}/logs`, {
772
+ // level, message, args, timestamp: new Date()
773
+ // }).subscribe();
774
+ }
775
+ }
776
+ catch (error) {
777
+ // Don't use this.error here to avoid infinite loops
778
+ console.error('Failed to send log to external service:', error);
779
+ }
780
+ }
781
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: LoggerService, deps: [{ token: ENVIRONMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
782
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: LoggerService, providedIn: 'root' });
783
+ }
784
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: LoggerService, decorators: [{
785
+ type: Injectable,
786
+ args: [{
787
+ providedIn: 'root'
788
+ }]
789
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
790
+ type: Optional
791
+ }, {
792
+ type: Inject,
793
+ args: [ENVIRONMENT]
794
+ }] }] });
795
+
663
796
  /**
664
797
  * Generated bundle index. Do not edit.
665
798
  */
666
799
 
667
- export { BaseService, GenericService, NgxPermissionsGuard, PermissionsService, REQUEST, RestService, SsrCookieService, SwalService, isUndefinedOrEmptyString, ngxPermissionsGuard };
800
+ export { BaseService, GenericService, LogLevel, LoggerService, NgxPermissionsGuard, PermissionsService, REQUEST, RestService, SsrCookieService, SwalService, isUndefinedOrEmptyString, ngxPermissionsGuard };
668
801
  //# sourceMappingURL=elite.framework-ng.core-services.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.core-services.mjs","sources":["../tmp-esm2022/services/lib/rest.service.js","../tmp-esm2022/services/lib/base.service.js","../tmp-esm2022/services/lib/generic.service.js","../tmp-esm2022/services/lib/ssr-cookie.service.js","../tmp-esm2022/services/lib/SwalService.service.js","../tmp-esm2022/services/lib/permissions.service.js","../tmp-esm2022/services/lib/permissions-guard.service.js","../tmp-esm2022/services/elite.framework-ng.core-services.js"],"sourcesContent":["import { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { Injectable, Inject, inject } from \"@angular/core\";\nimport { ENVIRONMENT, CORE_OPTIONS } from \"@elite.framework/ng.core/tokens\";\nimport { throwError, catchError } from \"rxjs\";\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class RestService {\n options;\n http;\n environment = inject(ENVIRONMENT);\n constructor(options, http) {\n this.options = options;\n this.http = http;\n }\n getApiFromStore(apiName) {\n return this.environment.apiUrl;\n }\n handleError(err) {\n // this.httpErrorReporter.reportError(err);\n return throwError(() => err);\n }\n request(request, config, api) {\n // debugger\n config = config || {};\n api = api || this.getApiFromStore(config.apiName);\n const { method, params, ...options } = request;\n const { observe = \"body\" /* Rest.Observe.Body */, skipHandleError } = config;\n const url = this.removeDuplicateSlashes(api + request.url);\n const httpClient = this.getHttpClient(config.skipAddingHeader ?? false);\n return httpClient\n .request(method, url, {\n observe,\n ...(params && {\n params: this.getParams(params, config.httpParamEncoder),\n }),\n ...options,\n })\n .pipe(catchError(err => (skipHandleError ? throwError(() => err) : this.handleError(err))));\n }\n getHttpClient(isExternal) {\n return /* isExternal ? this.externalHttp : */ this.http;\n }\n getParams(params, encoder) {\n const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {\n if (isUndefinedOrEmptyString(value))\n return acc;\n if (value === null && !this.options.sendNullsAsQueryParam)\n return acc;\n acc[key] = value;\n return acc;\n }, {});\n return encoder\n ? new HttpParams({ encoder, fromObject: filteredParams })\n : new HttpParams({ fromObject: filteredParams });\n }\n removeDuplicateSlashes(url) {\n return url.replace(/([^:]\\/)\\/+/g, '$1');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: RestService, deps: [{ token: CORE_OPTIONS }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: RestService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: RestService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [CORE_OPTIONS]\n }] }, { type: i1.HttpClient }] });\nexport function isUndefinedOrEmptyString(value) {\n return value === undefined || value === '';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3NlcnZpY2VzL3NyYy9saWIvcmVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW1DLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBYyxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLMUQsTUFBTSxPQUFPLFdBQVc7SUFHWTtJQUN0QjtJQUhKLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsWUFDa0MsT0FBYSxFQUNuQyxJQUFnQjtRQURNLFlBQU8sR0FBUCxPQUFPLENBQU07UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUd4QixDQUFDO0lBRUssZUFBZSxDQUFDLE9BQTJCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFRO1FBQ2xCLDJDQUEyQztRQUMzQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxDQUNMLE9BQXlDLEVBQ3pDLE1BQW9CLEVBQ3BCLEdBQVk7UUFFWixXQUFXO1FBQ1gsTUFBTSxHQUFHLE1BQU0sSUFBSyxFQUFrQixDQUFDO1FBQ3ZDLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDL0MsTUFBTSxFQUFFLE9BQU8saUNBQW9CLEVBQUUsZUFBZSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ2hFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVELE1BQU0sVUFBVSxHQUFlLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sVUFBVTthQUNkLE9BQU8sQ0FBSSxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ3ZCLE9BQU87WUFDUCxHQUFHLENBQUMsTUFBTSxJQUFJO2dCQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUM7YUFDeEQsQ0FBQztZQUNGLEdBQUcsT0FBTztTQUNKLENBQUM7YUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBQ08sYUFBYSxDQUFDLFVBQW1CO1FBQ3ZDLE9BQU8sc0NBQXNDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQW1CLEVBQUUsT0FBNEI7UUFDakUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUN6RSxJQUFJLHdCQUF3QixDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUNoRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQjtnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUN0RSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFDO1FBQ2QsT0FBTyxPQUFPO1lBQ1osQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUN6RCxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsR0FBVztRQUN4QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7dUdBM0RVLFdBQVcsa0JBR1osWUFBWTsyR0FIWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUlJLE1BQU07MkJBQUMsWUFBWTs7QUE0RHhCLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFjO0lBQ3JELE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUmVxdWVzdCwgSHR0cFBhcmFtZXRlckNvZGVjLCBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBSb290LCBSZXN0IH0gZnJvbSBcIkBlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHNcIjtcbmltcG9ydCB7IEVOVklST05NRU5ULCBDT1JFX09QVElPTlMgfSBmcm9tIFwiQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL3Rva2Vuc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgY2F0Y2hFcnJvciB9IGZyb20gXCJyeGpzXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN0U2VydmljZSB7XG4gIHByaXZhdGUgZW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENPUkVfT1BUSU9OUykgcHJvdGVjdGVkIG9wdGlvbnM6IFJvb3QsXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgLy8gcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgLy8gcHJvdGVjdGVkIGh0dHBFcnJvclJlcG9ydGVyOiBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UsXG4gICkgeyB9XG5cbiAgcHJvdGVjdGVkIGdldEFwaUZyb21TdG9yZShhcGlOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50LmFwaVVybDtcbiAgfVxuXG4gIGhhbmRsZUVycm9yKGVycjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyB0aGlzLmh0dHBFcnJvclJlcG9ydGVyLnJlcG9ydEVycm9yKGVycik7XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcbiAgfVxuXG4gIHJlcXVlc3Q8VCwgUj4oXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8VD4gfCBSZXN0LlJlcXVlc3Q8VD4sXG4gICAgY29uZmlnPzogUmVzdC5Db25maWcsXG4gICAgYXBpPzogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPFI+IHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCAoe30gYXMgUmVzdC5Db25maWcpO1xuICAgIGFwaSA9IGFwaSB8fCB0aGlzLmdldEFwaUZyb21TdG9yZShjb25maWcuYXBpTmFtZSk7XG4gICAgY29uc3QgeyBtZXRob2QsIHBhcmFtcywgLi4ub3B0aW9ucyB9ID0gcmVxdWVzdDtcbiAgICBjb25zdCB7IG9ic2VydmUgPSBSZXN0Lk9ic2VydmUuQm9keSwgc2tpcEhhbmRsZUVycm9yIH0gPSBjb25maWc7XG4gICAgY29uc3QgdXJsID0gdGhpcy5yZW1vdmVEdXBsaWNhdGVTbGFzaGVzKCBhcGkgKyByZXF1ZXN0LnVybCk7XG5cbiAgICBjb25zdCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50ID0gdGhpcy5nZXRIdHRwQ2xpZW50KGNvbmZpZy5za2lwQWRkaW5nSGVhZGVyID8/IGZhbHNlKTtcbiAgICByZXR1cm4gaHR0cENsaWVudFxuICAgICAgLnJlcXVlc3Q8Uj4obWV0aG9kLCB1cmwsIHtcbiAgICAgICAgb2JzZXJ2ZSxcbiAgICAgICAgLi4uKHBhcmFtcyAmJiB7XG4gICAgICAgICAgcGFyYW1zOiB0aGlzLmdldFBhcmFtcyhwYXJhbXMsIGNvbmZpZy5odHRwUGFyYW1FbmNvZGVyKSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB9IGFzIGFueSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoZXJyID0+IChza2lwSGFuZGxlRXJyb3IgPyB0aHJvd0Vycm9yKCgpID0+IGVycikgOiB0aGlzLmhhbmRsZUVycm9yKGVycikpKSk7XG4gIH1cbiAgcHJpdmF0ZSBnZXRIdHRwQ2xpZW50KGlzRXh0ZXJuYWw6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gLyogaXNFeHRlcm5hbCA/IHRoaXMuZXh0ZXJuYWxIdHRwIDogKi8gdGhpcy5odHRwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbXMocGFyYW1zOiBSZXN0LlBhcmFtcywgZW5jb2Rlcj86IEh0dHBQYXJhbWV0ZXJDb2RlYyk6IEh0dHBQYXJhbXMge1xuICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zID0gT2JqZWN0LmVudHJpZXMocGFyYW1zKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAoaXNVbmRlZmluZWRPckVtcHR5U3RyaW5nKHZhbHVlKSkgcmV0dXJuIGFjYztcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhdGhpcy5vcHRpb25zLnNlbmROdWxsc0FzUXVlcnlQYXJhbSkgcmV0dXJuIGFjYztcbiAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9IGFzIGFueSk7XG4gICAgcmV0dXJuIGVuY29kZXJcbiAgICAgID8gbmV3IEh0dHBQYXJhbXMoeyBlbmNvZGVyLCBmcm9tT2JqZWN0OiBmaWx0ZXJlZFBhcmFtcyB9KVxuICAgICAgOiBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IGZpbHRlcmVkUGFyYW1zIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEdXBsaWNhdGVTbGFzaGVzKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoLyhbXjpdXFwvKVxcLysvZywgJyQxJyk7XG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVbmRlZmluZWRPckVtcHR5U3RyaW5nKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJztcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { RestService } from './rest.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./rest.service\";\nexport class BaseService {\n restService;\n apiName = '';\n moduleName = '';\n constructor(restService) {\n this.restService = restService;\n }\n get = (id) => this.restService.request({\n method: 'GET',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n }, { apiName: this.apiName });\n getList = (input, endpoint) => {\n const params = Object.keys(input).reduce((acc, key) => {\n acc[key] = input[key];\n return acc;\n }, {});\n const url = endpoint ? endpoint : `/${this.moduleName}/${this.apiName}`;\n return this.restService.request({\n method: 'GET',\n url: url,\n params: params,\n }, { apiName: this.apiName })\n .pipe(map(response => response));\n };\n create = (input) => this.restService.request({\n method: 'POST',\n url: `/${this.moduleName}/${this.apiName}`,\n body: input,\n }, { apiName: this.apiName });\n update = (id, input) => this.restService.request({\n method: 'PUT',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n body: input,\n }, { apiName: this.apiName });\n delete = (id) => this.restService.request({\n method: 'DELETE',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n }, { apiName: this.apiName });\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseService, deps: [{ token: i1.RestService }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.RestService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3NlcnZpY2VzL3NyYy9saWIvYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU03QyxNQUFNLE9BQU8sV0FBVztJQUdIO0lBRm5CLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFlBQW1CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUNoRCxHQUFHLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBVztRQUNqQyxNQUFNLEVBQUUsS0FBSztRQUNiLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUU7S0FDakQsRUFDRCxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUUzQixPQUFPLEdBQUcsQ0FBQyxLQUFTLEVBQUUsUUFBaUIsRUFBRyxFQUFFO1FBRTFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3hELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFTixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV6RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUE0QjtZQUN6RCxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxHQUFHO1lBQ1IsTUFBTSxFQUFFLE1BQU07U0FDZixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM1QixJQUFJLENBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzFCLENBQUM7SUFDSixDQUFDLENBQUM7SUFDSixNQUFNLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBVztRQUNqQyxNQUFNLEVBQUUsTUFBTTtRQUNkLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUMxQyxJQUFJLEVBQUUsS0FBSztLQUNaLEVBQ0QsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFHLENBQUMsRUFBVSxFQUFFLEtBQVUsRUFBRSxFQUFFLENBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFXO1FBQ2pDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTtRQUNoRCxJQUFJLEVBQUUsS0FBSztLQUNaLEVBQ0QsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFN0IsTUFBTSxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQVk7UUFDbEMsTUFBTSxFQUFFLFFBQVE7UUFDaEIsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTtLQUNqRCxFQUNELEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO3VHQWpEbEIsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4vcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2luYXRlZFJlc3VsdCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQmFzZVNlcnZpY2Uge1xuICBhcGlOYW1lID0gJyc7XG4gIG1vZHVsZU5hbWUgPSAnJztcbiAgY29uc3RydWN0b3IocHVibGljIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSkge31cbiBnZXQgPSAoaWQ6IHN0cmluZykgPT5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBhbnk+KHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6IGAvJHt0aGlzLm1vZHVsZU5hbWV9LyR7dGhpcy5hcGlOYW1lfS8ke2lkfWAsXG4gICAgfSxcbiAgICB7IGFwaU5hbWU6IHRoaXMuYXBpTmFtZSB9KTtcblxuICAgIGdldExpc3QgPSAoaW5wdXQ6YW55LCBlbmRwb2ludD86IHN0cmluZyApID0+IHtcblxuICAgICAgY29uc3QgcGFyYW1zID0gT2JqZWN0LmtleXMoaW5wdXQpLnJlZHVjZSgoYWNjOmFueSwga2V5KSA9PiB7XG4gICAgICAgIGFjY1trZXldID0gaW5wdXRba2V5XTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcblxuICAgICAgIGNvbnN0IHVybCA9IGVuZHBvaW50ID8gZW5kcG9pbnQgOiBgLyR7dGhpcy5tb2R1bGVOYW1lfS8ke3RoaXMuYXBpTmFtZX1gO1xuXG4gICAgICByZXR1cm4gdGhpcy5yZXN0U2VydmljZS5yZXF1ZXN0PGFueSwgUGFnaW5hdGVkUmVzdWx0PGFueT4+KHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgfSwgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UpXG4gICAgICApO1xuICAgIH07XG4gIGNyZWF0ZSA9IChpbnB1dDogYW55KSA9PlxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIGFueT4oe1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB1cmw6IGAvJHt0aGlzLm1vZHVsZU5hbWV9LyR7dGhpcy5hcGlOYW1lfWAsXG4gICAgICBib2R5OiBpbnB1dCxcbiAgICB9LFxuICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xuIHVwZGF0ZSA9IChpZDogc3RyaW5nLCBpbnB1dDogYW55KSA9PlxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIGFueT4oe1xuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIHVybDogYC8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLmFwaU5hbWV9LyR7aWR9YCxcbiAgICAgIGJvZHk6IGlucHV0LFxuICAgIH0sXG4gICAgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUgfSk7XG5cbiAgZGVsZXRlID0gKGlkOiBzdHJpbmcpID0+XG4gICAgdGhpcy5yZXN0U2VydmljZS5yZXF1ZXN0PGFueSwgdm9pZD4oe1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHVybDogYC8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLmFwaU5hbWV9LyR7aWR9YCxcbiAgICB9LFxuICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xuXG5cbn1cbiJdfQ==","// src/app/services/generic.service.ts\nimport { HttpParams } from '@angular/common/http';\n/**\n * GenericService<T, K>:\n * - T = نوع الكائن (Model)\n * - K = نوع المفتاح الأساسي (ID)، افتراضي number\n *\n * يحتوي على جميع دوال الـ CRUD القياسية للتوريث في الخدمات المتخصصة.\n */\nexport class GenericService {\n http;\n constructor(http) {\n this.http = http;\n }\n /**\n * جلب كل السجلات\n */\n getAll() {\n // ملاحظة: يمكن إضافة معالج أخطاء مركزي هنا أو عبر Interceptor\n return this.http.get(this.baseUrl);\n }\n /**\n * جلب سجل واحد بناءً على المعرف\n */\n getById(id) {\n // ملاحظة: تأكد أن الـ endpoint يدعم GET برقم المعرف\n return this.http.get(`${this.baseUrl}/${id}`);\n }\n /**\n * إنشاء سجل جديد\n */\n create(item) {\n // ملاحظة: استخدم Partial<T> للسماح ببعض الحقول الاختيارية\n return this.http.post(this.baseUrl, item);\n }\n /**\n * تحديث سجل موجود\n */\n update(id, item) {\n // ملاحظة: هنا نُعيد Observable<void> لأن API قد لا تُرجع الجسم نفسه\n return this.http.put(`${this.baseUrl}`, item);\n }\n /**\n * حذف سجل\n */\n delete(id) {\n // ملاحظة: يُفضّل استخدام Confirm قبل الحذف في الواجهة\n return this.http.delete(`${this.baseUrl}/${id}`);\n }\n /** endpoint قابل للتخصيص — يمكن للفرع override–ها */\n getPageUrl() {\n return this.baseUrl;\n }\n /**\n * جلب صفحة من البيانات مع دعم الفلاتر والفرز\n * @param pageIndex صفر-based\n * @param pageSize عدد السجلات\n * @param filters كائن Partial<T> أو Record<string,any>\n * @param sort نص الفرز، مثلاً \"eiNa:desc\"\n */\n getPage(pageIndex, pageSize, filters, sort) {\n // debugger\n let params = new HttpParams()\n .set('pageIndex', pageIndex.toString())\n .set('pageSize', pageSize.toString());\n if (filters) {\n Object.entries(filters).forEach(([key, val]) => {\n if (val != null && val !== '') {\n params = params.set(key, val.toString());\n }\n });\n }\n if (sort) {\n params = params.set('sort', sort);\n }\n // return this.http\n // .get<T[]>(this.getPageUrl(), { params, observe: 'response' })\n // .pipe(\n // map((resp: HttpResponse<T[]>) => ({\n // items: resp.body || [],\n // totalCount: Number(resp.headers.get('X-Total-Count')) || resp.body?.length || 0\n // }))\n // );\n return this.http.get(this.getPageUrl(), { params });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3NlcnZpY2VzL3NyYy9saWIvZ2VuZXJpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxPQUFPLEVBQWMsVUFBVSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBSzVFOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBZ0IsY0FBYztJQU9aO0lBQXRCLFlBQXNCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFBRyxDQUFDO0lBRTFDOztPQUVHO0lBQ0gsTUFBTTtRQUNKLDhEQUE4RDtRQUM5RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFFSCxPQUFPLENBQUMsRUFBSztRQUNYLG9EQUFvRDtRQUNwRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFnQjtRQUVyQiwwREFBMEQ7UUFDMUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUVGLE1BQU0sQ0FBQyxFQUFLLEVBQUUsSUFBZ0I7UUFDN0Isb0VBQW9FO1FBQ25FLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEVBQUs7UUFDVixzREFBc0Q7UUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBSUYscURBQXFEO0lBQzFDLFVBQVU7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFQTs7Ozs7O01BTUU7SUFDSCxPQUFPLENBQ0wsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsT0FBNkIsRUFDN0IsSUFBYTtRQUViLFdBQVc7UUFDWCxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTthQUMxQixHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN0QyxHQUFHLENBQUMsVUFBVSxFQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixrRUFBa0U7UUFDbEUsV0FBVztRQUNYLDBDQUEwQztRQUMxQyxnQ0FBZ0M7UUFDaEMsd0ZBQXdGO1FBQ3hGLFVBQVU7UUFDVixPQUFPO1FBQ0osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixFQUFFLE1BQU0sRUFBRSxDQUNYLENBQUM7SUFDRixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvYXBwL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZS50c1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gJy4vY3J1ZC1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQYWdpbmF0ZWRSZXN1bHQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcblxuLyoqXG4gKiBHZW5lcmljU2VydmljZTxULCBLPjpcbiAqICAtIFQgPSDZhtmI2Lkg2KfZhNmD2KfYptmGIChNb2RlbClcbiAqICAtIEsgPSDZhtmI2Lkg2KfZhNmF2YHYqtin2K0g2KfZhNij2LPYp9iz2YogKElEKdiMINin2YHYqtix2KfYttmKIG51bWJlclxuICpcbiAqINmK2K3YqtmI2Yog2LnZhNmJINis2YXZiti5INiv2YjYp9mEINin2YTZgCBDUlVEINin2YTZgtmK2KfYs9mK2Kkg2YTZhNiq2YjYsdmK2Ksg2YHZiiDYp9mE2K7Yr9mF2KfYqiDYp9mE2YXYqtiu2LXYtdipLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2VuZXJpY1NlcnZpY2U8VCwgSyA9IG51bWJlcj4gaW1wbGVtZW50cyBDcnVkU2VydmljZTxULCBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIC8qKlxuICAgKiDinI/vuI8g2LnZhNmJINmD2YQg2K7Yr9mF2Kkg2YHYsdi52YrYqSDYo9mGINiq2LnYsdmR2YEg2YfYsNinOlxuICAgKiDZhdir2KfZhDogcHJvdGVjdGVkIGJhc2VVcmwgPSAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vYXBpL2pvYnR5cHMnO1xuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJhc2VVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCkge31cblxuICAvKipcbiAgICog2KzZhNioINmD2YQg2KfZhNiz2KzZhNin2KpcbiAgICovXG4gIGdldEFsbCgpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIC8vINmF2YTYp9it2LjYqTog2YrZhdmD2YYg2KXYttin2YHYqSDZhdi52KfZhNisINij2K7Yt9in2KEg2YXYsdmD2LLZiiDZh9mG2Kcg2KPZiCDYudio2LEgSW50ZXJjZXB0b3JcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUW10+KHRoaXMuYmFzZVVybCk7XG4gIH1cblxuICAvKipcbiAgICog2KzZhNioINiz2KzZhCDZiNin2K3YryDYqNmG2KfYodmLINi52YTZiSDYp9mE2YXYudix2YFcbiAgICovXG5cbiAgZ2V0QnlJZChpZDogSyk6IE9ic2VydmFibGU8VD4ge1xuICAgIC8vINmF2YTYp9it2LjYqTog2KrYo9mD2K8g2KPZhiDYp9mE2YAgZW5kcG9pbnQg2YrYr9i52YUgR0VUINio2LHZgtmFINin2YTZhdi52LHZgVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KGAke3RoaXMuYmFzZVVybH0vJHtpZH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDYpdmG2LTYp9ihINiz2KzZhCDYrNiv2YrYr1xuICAgKi9cbiAgY3JlYXRlKGl0ZW06IFBhcnRpYWw8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcblxuICAgIC8vINmF2YTYp9it2LjYqTog2KfYs9iq2K7Yr9mFIFBhcnRpYWw8VD4g2YTZhNiz2YXYp9itINio2KjYudi2INin2YTYrdmC2YjZhCDYp9mE2KfYrtiq2YrYp9ix2YrYqVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih0aGlzLmJhc2VVcmwsIGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqINiq2K3Yr9mK2Ksg2LPYrNmEINmF2YjYrNmI2K9cbiAgICovXG5cbiAgIHVwZGF0ZShpZDogSywgaXRlbTogUGFydGlhbDxUPik6IE9ic2VydmFibGU8VD4ge1xuICAgIC8vINmF2YTYp9it2LjYqTog2YfZhtinINmG2Y/YudmK2K8gT2JzZXJ2YWJsZTx2b2lkPiDZhNij2YYgQVBJINmC2K8g2YTYpyDYqtmP2LHYrNi5INin2YTYrNiz2YUg2YbZgdiz2YdcbiAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8VD4oYCR7dGhpcy5iYXNlVXJsfWAsIGl0ZW0pO1xuICB9XG4gIC8qKlxuICAgKiDYrdiw2YEg2LPYrNmEXG4gICAqL1xuICBkZWxldGUoaWQ6IEspOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAvLyDZhdmE2KfYrdi42Kk6INmK2Y/Zgdi22ZHZhCDYp9iz2KrYrtiv2KfZhSBDb25maXJtINmC2KjZhCDYp9mE2K3YsNmBINmB2Yog2KfZhNmI2KfYrNmH2KlcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx2b2lkPihgJHt0aGlzLmJhc2VVcmx9LyR7aWR9YCk7XG4gIH1cblxuXG5cbiAvKiogZW5kcG9pbnQg2YLYp9io2YQg2YTZhNiq2K7YtdmK2LUg4oCUINmK2YXZg9mGINmE2YTZgdix2Lkgb3ZlcnJpZGXigJPZh9inICovXG4gIHByb3RlY3RlZCBnZXRQYWdlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZVVybDtcbiAgfVxuXG4gICAvKipcbiAgICog2KzZhNioINi12YHYrdipINmF2YYg2KfZhNio2YrYp9mG2KfYqiDZhdi5INiv2LnZhSDYp9mE2YHZhNin2KrYsSDZiNin2YTZgdix2LJcbiAgICogQHBhcmFtIHBhZ2VJbmRleCDYtdmB2LEtYmFzZWRcbiAgICogQHBhcmFtIHBhZ2VTaXplINi52K/YryDYp9mE2LPYrNmE2KfYqlxuICAgKiBAcGFyYW0gZmlsdGVycyDZg9in2KbZhiBQYXJ0aWFsPFQ+INij2YggUmVjb3JkPHN0cmluZyxhbnk+XG4gICAqIEBwYXJhbSBzb3J0INmG2LUg2KfZhNmB2LHYstiMINmF2KvZhNin2YsgXCJlaU5hOmRlc2NcIlxuICAgKi9cbiAgZ2V0UGFnZShcbiAgICBwYWdlSW5kZXg6IG51bWJlcixcbiAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICAgIGZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHNvcnQ/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxQYWdpbmF0ZWRSZXN1bHQ8VD4+IHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdwYWdlSW5kZXgnLCBwYWdlSW5kZXgudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3BhZ2VTaXplJywgIHBhZ2VTaXplLnRvU3RyaW5nKCkpO1xuXG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsICYmIHZhbCAhPT0gJycpIHtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgdmFsLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc29ydCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc29ydCcsIHNvcnQpO1xuICAgIH1cblxuICAgIC8vIHJldHVybiB0aGlzLmh0dHBcbiAgICAvLyAgIC5nZXQ8VFtdPih0aGlzLmdldFBhZ2VVcmwoKSwgeyBwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZScgfSlcbiAgICAvLyAgIC5waXBlKFxuICAgIC8vICAgICBtYXAoKHJlc3A6IEh0dHBSZXNwb25zZTxUW10+KSA9PiAoe1xuICAgIC8vICAgICAgIGl0ZW1zOiByZXNwLmJvZHkgfHwgW10sXG4gICAgLy8gICAgICAgdG90YWxDb3VudDogTnVtYmVyKHJlc3AuaGVhZGVycy5nZXQoJ1gtVG90YWwtQ291bnQnKSkgfHwgcmVzcC5ib2R5Py5sZW5ndGggfHwgMFxuICAgIC8vICAgICB9KSlcbiAgICAvLyAgICk7XG4gICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UGFnaW5hdGVkUmVzdWx0PFQ+PihcbiAgICB0aGlzLmdldFBhZ2VVcmwoKSxcbiAgICB7IHBhcmFtcyB9XG4gICk7XG4gIH1cblxuXG59XG4iXX0=","import { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport * as i0 from \"@angular/core\";\n// Define the `Request` token\nexport const REQUEST = new InjectionToken('REQUEST');\nexport class SsrCookieService {\n document;\n platformId;\n request;\n documentIsAccessible;\n static initialUrl = '';\n constructor(document, \n // Get the `PLATFORM_ID` so we can check if we're in a browser.\n platformId, request) {\n this.document = document;\n this.platformId = platformId;\n this.request = request;\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n SsrCookieService.initialUrl = this.documentIsAccessible ? this.document.location.href : this.request?.url;\n }\n /**\n * Get cookie Regular Expression\n *\n * @param name Cookie name\n * @returns property RegExp\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static getCookieRegExp(name) {\n const escapedName = name.replace(/([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/gi, '\\\\$1');\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n /**\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @param encodedURIComponent A value representing an encoded URI component.\n *\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static safeDecodeURIComponent(encodedURIComponent) {\n try {\n return decodeURIComponent(encodedURIComponent);\n }\n catch {\n // probably it is not uri encoded. return as is\n return encodedURIComponent;\n }\n }\n /**\n * Return `true` if {@link Document} is accessible, otherwise return `false`\n *\n * @param name Cookie name\n * @returns boolean - whether cookie with specified name exists\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n check(name) {\n name = encodeURIComponent(name);\n const regExp = SsrCookieService.getCookieRegExp(name);\n return regExp.test((this.documentIsAccessible ? this.document.cookie : this.request?.headers.cookie) ?? '');\n }\n isDocumentIsAccessible() {\n return this.documentIsAccessible;\n }\n get url() {\n return this.documentIsAccessible ? this.document.location.href : this.request?.url;\n }\n /**\n * Get cookies by name\n *\n * @param name Cookie name\n * @returns property value\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n get(name) {\n if (this.check(name)) {\n name = encodeURIComponent(name);\n const regExp = SsrCookieService.getCookieRegExp(name);\n const result = regExp.exec((this.documentIsAccessible ? this.document.cookie : this.request?.headers.cookie) ?? '');\n return result[1] ? SsrCookieService.safeDecodeURIComponent(result[1]) : '';\n }\n else {\n return '';\n }\n }\n /**\n * Get all cookies in JSON format\n *\n * @returns all the cookies in json\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n getAll() {\n const cookies = {};\n const cookieString = this.documentIsAccessible ? this.document?.cookie : this.request?.headers.cookie;\n if (cookieString && cookieString !== '') {\n cookieString.split(';').forEach((currentCookie) => {\n const [cookieName, cookieValue] = currentCookie.split('=');\n cookies[SsrCookieService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] = SsrCookieService.safeDecodeURIComponent(cookieValue);\n });\n }\n return cookies;\n }\n set(name, value, expiresOrOptions, path, domain, secure, sameSite, partitioned) {\n if (!this.documentIsAccessible) {\n return;\n }\n if (typeof expiresOrOptions === 'number' || expiresOrOptions instanceof Date || path || domain || secure || sameSite) {\n const optionsBody = {\n expires: expiresOrOptions,\n path,\n domain,\n secure,\n sameSite: sameSite ? sameSite : 'Lax',\n partitioned,\n };\n this.set(name, value, optionsBody);\n return;\n }\n let cookieString = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n const options = expiresOrOptions ? expiresOrOptions : {};\n if (options.expires) {\n if (typeof options.expires === 'number') {\n const dateExpires = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n }\n else {\n cookieString += 'expires=' + options.expires.toUTCString() + ';';\n }\n }\n if (options.path) {\n cookieString += 'path=' + options.path + ';';\n }\n if (options.domain) {\n cookieString += 'domain=' + options.domain + ';';\n }\n if (options.secure === false && options.sameSite === 'None') {\n options.secure = true;\n console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);\n }\n if (options.secure) {\n cookieString += 'secure;';\n }\n if (!options.sameSite) {\n options.sameSite = 'Lax';\n }\n cookieString += 'sameSite=' + options.sameSite + ';';\n if (options.partitioned) {\n cookieString += 'Partitioned;';\n }\n this.document.cookie = cookieString;\n }\n /**\n * Delete cookie by name\n *\n * @param name Cookie name\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Cookie secure flag\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n delete(name, path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');\n this.set(name, '', { expires: expiresDate, path, domain, secure, sameSite });\n }\n /**\n * Delete all cookies\n *\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Is the Cookie secure\n * @param sameSite Is the cookie same site\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n deleteAll(path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const cookies = this.getAll();\n for (const cookieName in cookies) {\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain, secure, sameSite);\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SsrCookieService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: REQUEST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SsrCookieService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SsrCookieService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [REQUEST]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyLWNvb2tpZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3NlcnZpY2VzL3NyYy9saWIvc3NyLWNvb2tpZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFOUQsNkJBQTZCO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBVSxTQUFTLENBQUMsQ0FBQztBQUs5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBS0M7SUFFRztJQUNRO0lBUHRCLG9CQUFvQixDQUFVO0lBQy9DLE1BQU0sQ0FBRSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBRXhCLFlBQzRCLFFBQWtCO0lBQzVDLCtEQUErRDtJQUNsQyxVQUFlLEVBQ1AsT0FBZ0I7UUFIM0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVmLGVBQVUsR0FBVixVQUFVLENBQUs7UUFDUCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRXJELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztJQUM1RyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDakMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FB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Q0FBQztJQUNILENBQUM7dUdBaFNVLGdCQUFnQixrQkFLakIsUUFBUSxhQUVSLFdBQVcsYUFDQyxPQUFPOzJHQVJsQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFNSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUVmLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLy8gRGVmaW5lIHRoZSBgUmVxdWVzdGAgdG9rZW5cbmV4cG9ydCBjb25zdCBSRVFVRVNUID0gbmV3IEluamVjdGlvblRva2VuPFJlcXVlc3Q+KCdSRVFVRVNUJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTc3JDb29raWVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudElzQWNjZXNzaWJsZTogYm9vbGVhbjtcbiAgc3RhdGljICBpbml0aWFsVXJsID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgLy8gR2V0IHRoZSBgUExBVEZPUk1fSURgIHNvIHdlIGNhbiBjaGVjayBpZiB3ZSdyZSBpbiBhIGJyb3dzZXIuXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSRVFVRVNUKSBwcml2YXRlIHJlcXVlc3Q6IFJlcXVlc3RcbiAgKSB7XG4gICAgdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gICAgU3NyQ29va2llU2VydmljZS5pbml0aWFsVXJsID0gdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA/IHRoaXMuZG9jdW1lbnQubG9jYXRpb24uaHJlZiA6IHRoaXMucmVxdWVzdD8udXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb29raWUgUmVndWxhciBFeHByZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXG4gICAqIEByZXR1cm5zIHByb3BlcnR5IFJlZ0V4cFxuICAgKlxuICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxuICAgKiBAc2luY2U6IDEuMC4wXG4gICAqL1xuICBzdGF0aWMgZ2V0Q29va2llUmVnRXhwKG5hbWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gICAgY29uc3QgZXNjYXBlZE5hbWU6IHN0cmluZyA9IG5hbWUucmVwbGFjZSgvKFtcXFtcXF1cXHtcXH1cXChcXClcXHxcXD1cXDtcXCtcXD9cXCxcXC5cXCpcXF5cXCRdKS9naSwgJ1xcXFwkMScpO1xuXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoJyg/Ol4nICsgZXNjYXBlZE5hbWUgKyAnfDtcXFxccyonICsgZXNjYXBlZE5hbWUgKyAnKT0oLio/KSg/Ojt8JCknLCAnZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuZW5jb2RlZCB2ZXJzaW9uIG9mIGFuIGVuY29kZWQgY29tcG9uZW50IG9mIGEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyIChVUkkpLlxuICAgKlxuICAgKiBAcGFyYW0gZW5jb2RlZFVSSUNvbXBvbmVudCBBIHZhbHVlIHJlcHJlc2VudGluZyBhbiBlbmNvZGVkIFVSSSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB1bmVuY29kZWQgdmVyc2lvbiBvZiBhbiBlbmNvZGVkIGNvbXBvbmVudCBvZiBhIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKS5cbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgc3RhdGljIHNhZmVEZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZFVSSUNvbXBvbmVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJQ29tcG9uZW50KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHByb2JhYmx5IGl0IGlzIG5vdCB1cmkgZW5jb2RlZC4gcmV0dXJuIGFzIGlzXG4gICAgICByZXR1cm4gZW5jb2RlZFVSSUNvbXBvbmVudDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGB0cnVlYCBpZiB7QGxpbmsgRG9jdW1lbnR9IGlzIGFjY2Vzc2libGUsIG90aGVyd2lzZSByZXR1cm4gYGZhbHNlYFxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBDb29raWUgbmFtZVxuICAgKiBAcmV0dXJucyBib29sZWFuIC0gd2hldGhlciBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBleGlzdHNcbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgY2hlY2sobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKTtcbiAgICBjb25zdCByZWdFeHA6IFJlZ0V4cCA9IFNzckNvb2tpZVNlcnZpY2UuZ2V0Q29va2llUmVnRXhwKG5hbWUpO1xuICAgIHJldHVybiByZWdFeHAudGVzdCgodGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA/IHRoaXMuZG9jdW1lbnQuY29va2llICA6IHRoaXMucmVxdWVzdD8uaGVhZGVycy5jb29raWUpID8/ICcnKTtcbiAgfVxuICBpc0RvY3VtZW50SXNBY2Nlc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlIDtcbiAgfVxuIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA/IHRoaXMuZG9jdW1lbnQubG9jYXRpb24uaHJlZiA6IHRoaXMucmVxdWVzdD8udXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb29raWVzIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgQ29va2llIG5hbWVcbiAgICogQHJldHVybnMgcHJvcGVydHkgdmFsdWVcbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2hlY2sobmFtZSkpIHtcbiAgICAgIG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlZ0V4cDogUmVnRXhwID0gU3NyQ29va2llU2VydmljZS5nZXRDb29raWVSZWdFeHAobmFtZSk7XG4gICAgICBjb25zdCByZXN1bHQ6IFJlZ0V4cEV4ZWNBcnJheSB8YW55PSByZWdFeHAuZXhlYygodGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA/IHRoaXMuZG9jdW1lbnQuY29va2llIDogdGhpcy5yZXF1ZXN0Py5oZWFkZXJzLmNvb2tpZSkgPz8gJycpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0WzFdID8gU3NyQ29va2llU2VydmljZS5zYWZlRGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdFsxXSkgOiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGNvb2tpZXMgaW4gSlNPTiBmb3JtYXRcbiAgICpcbiAgICogQHJldHVybnMgYWxsIHRoZSBjb29raWVzIGluIGpzb25cbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgZ2V0QWxsKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IGNvb2tpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBjb25zdCBjb29raWVTdHJpbmc6IGFueSA9IHRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUgPyB0aGlzLmRvY3VtZW50Py5jb29raWUgOiB0aGlzLnJlcXVlc3Q/LmhlYWRlcnMuY29va2llO1xuXG4gICAgaWYgKGNvb2tpZVN0cmluZyAmJiBjb29raWVTdHJpbmcgIT09ICcnKSB7XG4gICAgICBjb29raWVTdHJpbmcuc3BsaXQoJzsnKS5mb3JFYWNoKChjdXJyZW50Q29va2llOmFueSkgPT4ge1xuICAgICAgICBjb25zdCBbY29va2llTmFtZSwgY29va2llVmFsdWVdID0gY3VycmVudENvb2tpZS5zcGxpdCgnPScpO1xuICAgICAgICBjb29raWVzW1NzckNvb2tpZVNlcnZpY2Uuc2FmZURlY29kZVVSSUNvbXBvbmVudChjb29raWVOYW1lLnJlcGxhY2UoL14gLywgJycpKV0gPSBTc3JDb29raWVTZXJ2aWNlLnNhZmVEZWNvZGVVUklDb21wb25lbnQoY29va2llVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvb2tpZXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvb2tpZSBiYXNlZCBvbiBwcm92aWRlZCBpbmZvcm1hdGlvblxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAgICAgQ29va2llIG5hbWVcbiAgICogQHBhcmFtIHZhbHVlICAgIENvb2tpZSB2YWx1ZVxuICAgKiBAcGFyYW0gZXhwaXJlcyAgTnVtYmVyIG9mIGRheXMgdW50aWwgdGhlIGNvb2tpZXMgZXhwaXJlcyBvciBhbiBhY3R1YWwgYERhdGVgXG4gICAqIEBwYXJhbSBwYXRoICAgICBDb29raWUgcGF0aFxuICAgKiBAcGFyYW0gZG9tYWluICAgQ29va2llIGRvbWFpblxuICAgKiBAcGFyYW0gc2VjdXJlICAgU2VjdXJlIGZsYWdcbiAgICogQHBhcmFtIHNhbWVTaXRlIE9XQVNQIHNhbWUgc2l0ZSB0b2tlbiBgTGF4YCwgYE5vbmVgLCBvciBgU3RyaWN0YC4gRGVmYXVsdHMgdG8gYExheGBcbiAgICogQHBhcmFtIHBhcnRpdGlvbmVkIFBhcnRpdGlvbmVkIGZsYWdcbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgc2V0KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGV4cGlyZXM/OiBudW1iZXIgfCBEYXRlLFxuICAgIHBhdGg/OiBzdHJpbmcsXG4gICAgZG9tYWluPzogc3RyaW5nLFxuICAgIHNlY3VyZT86IGJvb2xlYW4sXG4gICAgc2FtZVNpdGU/OiAnTGF4JyB8ICdOb25lJyB8ICdTdHJpY3QnLFxuICAgIHBhcnRpdGlvbmVkPzogYm9vbGVhblxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXQgY29va2llIGJhc2VkIG9uIHByb3ZpZGVkIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIENvb2tpZSdzIHBhcmFtZXRlcnM6XG4gICAqIDxwcmU+XG4gICAqIGV4cGlyZXMgIE51bWJlciBvZiBkYXlzIHVudGlsIHRoZSBjb29raWVzIGV4cGlyZXMgb3IgYW4gYWN0dWFsIGBEYXRlYFxuICAgKiBwYXRoICAgICBDb29raWUgcGF0aFxuICAgKiBkb21haW4gICBDb29raWUgZG9tYWluXG4gICAqIHNlY3VyZSBDb29raWUgc2VjdXJlIGZsYWdcbiAgICogc2FtZVNpdGUgT1dBU1Agc2FtZSBzaXRlIHRva2VuIGBMYXhgLCBgTm9uZWAsIG9yIGBTdHJpY3RgLiBEZWZhdWx0cyB0byBgTGF4YFxuICAgKiA8L3ByZT5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgICAgIENvb2tpZSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSAgICBDb29raWUgdmFsdWVcbiAgICogQHBhcmFtIG9wdGlvbnMgIEJvZHkgd2l0aCBjb29raWUncyBwYXJhbXNcbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgc2V0KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBleHBpcmVzPzogbnVtYmVyIHwgRGF0ZTtcbiAgICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgICBkb21haW4/OiBzdHJpbmc7XG4gICAgICBzZWN1cmU/OiBib29sZWFuO1xuICAgICAgc2FtZVNpdGU/OiAnTGF4JyB8ICdOb25lJyB8ICdTdHJpY3QnO1xuICAgICAgcGFydGl0aW9uZWQ/OiBib29sZWFuO1xuICAgIH1cbiAgKTogdm9pZDtcblxuICBzZXQoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgZXhwaXJlc09yT3B0aW9ucz86IG51bWJlciB8IERhdGUgfCBhbnksXG4gICAgcGF0aD86IHN0cmluZyxcbiAgICBkb21haW4/OiBzdHJpbmcsXG4gICAgc2VjdXJlPzogYm9vbGVhbixcbiAgICBzYW1lU2l0ZT86ICdMYXgnIHwgJ05vbmUnIHwgJ1N0cmljdCcsXG4gICAgcGFydGl0aW9uZWQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXhwaXJlc09yT3B0aW9ucyA9PT0gJ251bWJlcicgfHwgZXhwaXJlc09yT3B0aW9ucyBpbnN0YW5jZW9mIERhdGUgfHwgcGF0aCB8fCBkb21haW4gfHwgc2VjdXJlIHx8IHNhbWVTaXRlKSB7XG4gICAgICBjb25zdCBvcHRpb25zQm9keSA9IHtcbiAgICAgICAgZXhwaXJlczogZXhwaXJlc09yT3B0aW9ucyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZG9tYWluLFxuICAgICAgICBzZWN1cmUsXG4gICAgICAgIHNhbWVTaXRlOiBzYW1lU2l0ZSA/IHNhbWVTaXRlIDogJ0xheCcsXG4gICAgICAgIHBhcnRpdGlvbmVkLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZXQobmFtZSwgdmFsdWUsIG9wdGlvbnNCb2R5KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY29va2llU3RyaW5nOiBzdHJpbmcgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpICsgJzsnO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IGV4cGlyZXNPck9wdGlvbnMgPyBleHBpcmVzT3JPcHRpb25zIDoge307XG5cbiAgICBpZiAob3B0aW9ucy5leHBpcmVzKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuZXhwaXJlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgZGF0ZUV4cGlyZXM6IERhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArIG9wdGlvbnMuZXhwaXJlcyAqIDEwMDAgKiA2MCAqIDYwICogMjQpO1xuXG4gICAgICAgIGNvb2tpZVN0cmluZyArPSAnZXhwaXJlcz0nICsgZGF0ZUV4cGlyZXMudG9VVENTdHJpbmcoKSArICc7JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvb2tpZVN0cmluZyArPSAnZXhwaXJlcz0nICsgb3B0aW9ucy5leHBpcmVzLnRvVVRDU3RyaW5nKCkgKyAnOyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGF0aCkge1xuICAgICAgY29va2llU3RyaW5nICs9ICdwYXRoPScgKyBvcHRpb25zLnBhdGggKyAnOyc7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZG9tYWluKSB7XG4gICAgICBjb29raWVTdHJpbmcgKz0gJ2RvbWFpbj0nICsgb3B0aW9ucy5kb21haW4gKyAnOyc7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2VjdXJlID09PSBmYWxzZSAmJiBvcHRpb25zLnNhbWVTaXRlID09PSAnTm9uZScpIHtcbiAgICAgIG9wdGlvbnMuc2VjdXJlID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtuZ3gtY29va2llLXNlcnZpY2VdIENvb2tpZSAke25hbWV9IHdhcyBmb3JjZWQgd2l0aCBzZWN1cmUgZmxhZyBiZWNhdXNlIHNhbWVTaXRlPU5vbmUuYCArXG4gICAgICAgICAgYE1vcmUgZGV0YWlscyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdGV2ZXJtZWlzdGVyL25neC1jb29raWUtc2VydmljZS9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTU5NzcyMDEzMGBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNlY3VyZSkge1xuICAgICAgY29va2llU3RyaW5nICs9ICdzZWN1cmU7JztcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuc2FtZVNpdGUpIHtcbiAgICAgIG9wdGlvbnMuc2FtZVNpdGUgPSAnTGF4JztcbiAgICB9XG5cbiAgICBjb29raWVTdHJpbmcgKz0gJ3NhbWVTaXRlPScgKyBvcHRpb25zLnNhbWVTaXRlICsgJzsnO1xuXG4gICAgaWYgKG9wdGlvbnMucGFydGl0aW9uZWQpIHtcbiAgICAgIGNvb2tpZVN0cmluZyArPSAnUGFydGl0aW9uZWQ7JztcbiAgICB9XG5cbiAgICB0aGlzLmRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZVN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgY29va2llIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgICBDb29raWUgbmFtZVxuICAgKiBAcGFyYW0gcGF0aCAgIENvb2tpZSBwYXRoXG4gICAqIEBwYXJhbSBkb21haW4gQ29va2llIGRvbWFpblxuICAgKiBAcGFyYW0gc2VjdXJlIENvb2tpZSBzZWN1cmUgZmxhZ1xuICAgKiBAcGFyYW0gc2FtZVNpdGUgQ29va2llIHNhbWVTaXRlIGZsYWcgLSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvU2V0LUNvb2tpZS9TYW1lU2l0ZVxuICAgKlxuICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxuICAgKiBAc2luY2U6IDEuMC4wXG4gICAqL1xuICBkZWxldGUobmFtZTogc3RyaW5nLCBwYXRoPzogc3RyaW5nLCBkb21haW4/OiBzdHJpbmcsIHNlY3VyZT86IGJvb2xlYW4sIHNhbWVTaXRlOiAnTGF4JyB8ICdOb25lJyB8ICdTdHJpY3QnID0gJ0xheCcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZSgnVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQnKTtcbiAgICB0aGlzLnNldChuYW1lLCAnJywgeyBleHBpcmVzOiBleHBpcmVzRGF0ZSwgcGF0aCwgZG9tYWluLCBzZWN1cmUsIHNhbWVTaXRlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbGwgY29va2llc1xuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAgIENvb2tpZSBwYXRoXG4gICAqIEBwYXJhbSBkb21haW4gQ29va2llIGRvbWFpblxuICAgKiBAcGFyYW0gc2VjdXJlIElzIHRoZSBDb29raWUgc2VjdXJlXG4gICAqIEBwYXJhbSBzYW1lU2l0ZSBJcyB0aGUgY29va2llIHNhbWUgc2l0ZVxuICAgKlxuICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxuICAgKiBAc2luY2U6IDEuMC4wXG4gICAqL1xuICBkZWxldGVBbGwocGF0aD86IHN0cmluZywgZG9tYWluPzogc3RyaW5nLCBzZWN1cmU/OiBib29sZWFuLCBzYW1lU2l0ZTogJ0xheCcgfCAnTm9uZScgfCAnU3RyaWN0JyA9ICdMYXgnKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29va2llczogYW55ID0gdGhpcy5nZXRBbGwoKTtcblxuICAgIGZvciAoY29uc3QgY29va2llTmFtZSBpbiBjb29raWVzKSB7XG4gICAgICBpZiAoY29va2llcy5oYXNPd25Qcm9wZXJ0eShjb29raWVOYW1lKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZShjb29raWVOYW1lLCBwYXRoLCBkb21haW4sIHNlY3VyZSwgc2FtZVNpdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport Swal from 'sweetalert2';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngx-translate/core\";\nexport class SwalService {\n translate;\n defaultClass = {\n container: 'swal2-container'\n };\n constructor(translate) {\n this.translate = translate;\n }\n t(key) {\n return this.translate.instant(key);\n }\n /** رسالة تأكيد */\n confirm(title = this.t('Confirm.Title'), text = this.t('Confirm.Text'), confirmButtonText = this.t('Confirm.Yes'), cancelButtonText = this.t('Confirm.Cancel')) {\n return Swal.fire({\n icon: 'warning',\n title,\n text,\n showCancelButton: true,\n confirmButtonText,\n cancelButtonText,\n customClass: this.defaultClass\n });\n }\n /** رسالة نجاح */\n success(title, text, timer = 2000) {\n return Swal.fire({\n icon: 'success',\n title: this.t(title),\n text: text ? this.t(text) : undefined,\n timer,\n showConfirmButton: false,\n customClass: this.defaultClass\n });\n }\n /** رسالة خطأ */\n error(title, text, footer) {\n return Swal.fire({\n icon: 'error',\n title: this.t(title),\n text: text ? this.t(text) : undefined,\n footer: footer ? this.t(footer) : undefined,\n customClass: this.defaultClass\n });\n }\n /** رسالة معلومات */\n info(title, text) {\n return Swal.fire({\n icon: 'info',\n title: this.t(title),\n text: text ? this.t(text) : undefined,\n customClass: this.defaultClass\n });\n }\n /** أي خيارات مخصصة */\n alert(options) {\n const translated = {\n ...options,\n title: options.title ? this.t(options.title) : undefined,\n text: options.text ? this.t(options.text) : undefined,\n footer: options.footer ? this.t(options.footer) : undefined,\n customClass: this.defaultClass\n };\n return Swal.fire(translated);\n }\n /** Toast */\n toast(title, icon = 'info', position = 'top-end', timer = 3000) {\n const Toast = Swal.mixin({\n toast: true,\n position,\n timer,\n showConfirmButton: false,\n customClass: this.defaultClass\n });\n Toast.fire({ icon, title: this.t(title) });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SwalService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SwalService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SwalService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.TranslateService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dhbFNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9zZXJ2aWNlcy9zcmMvbGliL1N3YWxTZXJ2aWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLElBSU4sTUFBTSxhQUFhLENBQUM7OztBQUdyQixNQUFNLE9BQU8sV0FBVztJQUtGO0lBSlosWUFBWSxHQUFHO1FBQ3JCLFNBQVMsRUFBRSxpQkFBaUI7S0FDN0IsQ0FBQztJQUVGLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUcsQ0FBQztJQUUzQyxDQUFDLENBQUMsR0FBVztRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUNMLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUMvQixJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFDN0IsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFDekMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUUzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUs7WUFDTCxJQUFJO1lBQ0osZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJB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O0lBQzdDLENBQUM7dUdBdEdVLFdBQVc7MkdBQVgsV0FBVyxjQURFLE1BQU07OzJGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCBTd2FsLCB7XG4gIFN3ZWV0QWxlcnRPcHRpb25zLFxuICBTd2VldEFsZXJ0UmVzdWx0LFxuICBTd2VldEFsZXJ0SWNvblxufSBmcm9tICdzd2VldGFsZXJ0Mic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3dhbFNlcnZpY2Uge1xuICBwcml2YXRlIGRlZmF1bHRDbGFzcyA9IHtcbiAgICBjb250YWluZXI6ICdzd2FsMi1jb250YWluZXInXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgcHJpdmF0ZSB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXkpO1xuICB9XG5cbiAgLyoqINix2LPYp9mE2Kkg2KrYo9mD2YrYryAqL1xuICBjb25maXJtKFxuICAgIHRpdGxlID0gdGhpcy50KCdDb25maXJtLlRpdGxlJyksXG4gICAgdGV4dCA9IHRoaXMudCgnQ29uZmlybS5UZXh0JyksXG4gICAgY29uZmlybUJ1dHRvblRleHQgPSB0aGlzLnQoJ0NvbmZpcm0uWWVzJyksXG4gICAgY2FuY2VsQnV0dG9uVGV4dCA9IHRoaXMudCgnQ29uZmlybS5DYW5jZWwnKVxuICApOiBQcm9taXNlPFN3ZWV0QWxlcnRSZXN1bHQ+IHtcbiAgICByZXR1cm4gU3dhbC5maXJlKHtcbiAgICAgIGljb246ICd3YXJuaW5nJyxcbiAgICAgIHRpdGxlLFxuICAgICAgdGV4dCxcbiAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICBjb25maXJtQnV0dG9uVGV4dCxcbiAgICAgIGNhbmNlbEJ1dHRvblRleHQsXG4gICAgICBjdXN0b21DbGFzczogdGhpcy5kZWZhdWx0Q2xhc3NcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiDYsdiz2KfZhNipINmG2KzYp9itICovXG4gIHN1Y2Nlc3MoXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0ZXh0Pzogc3RyaW5nLFxuICAgIHRpbWVyID0gMjAwMFxuICApOiBQcm9taXNlPFN3ZWV0QWxlcnRSZXN1bHQ+IHtcbiAgICByZXR1cm4gU3dhbC5maXJlKHtcbiAgICAgIGljb246ICdzdWNjZXNzJyxcbiAgICAgIHRpdGxlOiB0aGlzLnQodGl0bGUpLFxuICAgICAgdGV4dDogdGV4dCA/IHRoaXMudCh0ZXh0KSA6IHVuZGVmaW5lZCxcbiAgICAgIHRpbWVyLFxuICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuZGVmYXVsdENsYXNzXG4gICAgfSk7XG4gIH1cblxuICAvKiog2LHYs9in2YTYqSDYrti32KMgKi9cbiAgZXJyb3IoXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0ZXh0Pzogc3RyaW5nLFxuICAgIGZvb3Rlcj86IHN0cmluZ1xuICApOiBQcm9taXNlPFN3ZWV0QWxlcnRSZXN1bHQ+IHtcbiAgICByZXR1cm4gU3dhbC5maXJlKHtcbiAgICAgIGljb246ICdlcnJvcicsXG4gICAgICB0aXRsZTogdGhpcy50KHRpdGxlKSxcbiAgICAgIHRleHQ6IHRleHQgPyB0aGlzLnQodGV4dCkgOiB1bmRlZmluZWQsXG4gICAgICBmb290ZXI6IGZvb3RlciA/IHRoaXMudChmb290ZXIpIDogdW5kZWZpbmVkLFxuICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuZGVmYXVsdENsYXNzXG4gICAgfSk7XG4gIH1cblxuICAvKiog2LHYs9in2YTYqSDZhdi52YTZiNmF2KfYqiAqL1xuICBpbmZvKFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdGV4dD86IHN0cmluZ1xuICApOiBQcm9taXNlPFN3ZWV0QWxlcnRSZXN1bHQ+IHtcbiAgICByZXR1cm4gU3dhbC5maXJlKHtcbiAgICAgIGljb246ICdpbmZvJyxcbiAgICAgIHRpdGxlOiB0aGlzLnQodGl0bGUpLFxuICAgICAgdGV4dDogdGV4dCA/IHRoaXMudCh0ZXh0KSA6IHVuZGVmaW5lZCxcbiAgICAgIGN1c3RvbUNsYXNzOiB0aGlzLmRlZmF1bHRDbGFzc1xuICAgIH0pO1xuICB9XG5cbiAgLyoqINij2Yog2K7Zitin2LHYp9iqINmF2K7Ytdi12KkgKi9cbiAgYWxlcnQoXG4gICAgb3B0aW9uczogU3dlZXRBbGVydE9wdGlvbnNcbiAgKTogUHJvbWlzZTxTd2VldEFsZXJ0UmVzdWx0PiB7XG4gICAgY29uc3QgdHJhbnNsYXRlZDogU3dlZXRBbGVydE9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdGl0bGU6IG9wdGlvbnMudGl0bGUgPyB0aGlzLnQob3B0aW9ucy50aXRsZSBhcyBzdHJpbmcpIDogdW5kZWZpbmVkLFxuICAgICAgdGV4dDogb3B0aW9ucy50ZXh0ID8gdGhpcy50KG9wdGlvbnMudGV4dCBhcyBzdHJpbmcpIDogdW5kZWZpbmVkLFxuICAgICAgZm9vdGVyOiBvcHRpb25zLmZvb3RlciA/IHRoaXMudChvcHRpb25zLmZvb3RlciBhcyBzdHJpbmcpIDogdW5kZWZpbmVkLFxuICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuZGVmYXVsdENsYXNzXG4gICAgfTtcbiAgICByZXR1cm4gU3dhbC5maXJlKHRyYW5zbGF0ZWQpO1xuICB9XG5cbiAgLyoqIFRvYXN0ICovXG4gIHRvYXN0KFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgaWNvbjogU3dlZXRBbGVydEljb24gPSAnaW5mbycsXG4gICAgcG9zaXRpb246IFN3ZWV0QWxlcnRPcHRpb25zWydwb3NpdGlvbiddID0gJ3RvcC1lbmQnLFxuICAgIHRpbWVyID0gMzAwMFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBUb2FzdCA9IFN3YWwubWl4aW4oe1xuICAgICAgdG9hc3Q6IHRydWUsXG4gICAgICBwb3NpdGlvbixcbiAgICAgIHRpbWVyLFxuICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuZGVmYXVsdENsYXNzXG4gICAgfSk7XG4gICAgVG9hc3QuZmlyZSh7IGljb24sIHRpdGxlOiB0aGlzLnQodGl0bGUpIH0pO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class PermissionsService {\n _permissions$ = new BehaviorSubject(new Set());\n // Load permissions (e.g., from API or token claims)\n setPermissions(permissions) {\n this._permissions$.next(new Set(permissions));\n }\n getPermissions() {\n return Array.from(this._permissions$.value);\n }\n // Synchronous check\n isGranted(permissionName) {\n return this._permissions$.value.has(permissionName);\n }\n // Async check (optional if needed for guards or effects)\n isGrantedAsync(permissionName) {\n return new Promise(resolve => {\n resolve(this.isGranted(permissionName));\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: PermissionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: PermissionsService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: PermissionsService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9zZXJ2aWNlcy9zcmMvbGliL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUd2QyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFcEUsb0RBQW9EO0lBQ3BELGNBQWMsQ0FBQyxXQUFxQjtRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixTQUFTLENBQUMsY0FBc0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELHlEQUF5RDtJQUN6RCxjQUFjLENBQUMsY0FBc0I7UUFDbkMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0F0QlUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9wZXJtaXNzaW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNldDxzdHJpbmc+PihuZXcgU2V0KCkpO1xyXG5cclxuICAvLyBMb2FkIHBlcm1pc3Npb25zIChlLmcuLCBmcm9tIEFQSSBvciB0b2tlbiBjbGFpbXMpXHJcbiAgc2V0UGVybWlzc2lvbnMocGVybWlzc2lvbnM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl9wZXJtaXNzaW9ucyQubmV4dChuZXcgU2V0KHBlcm1pc3Npb25zKSk7XHJcbiAgfVxyXG5cclxuICBnZXRQZXJtaXNzaW9ucygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9wZXJtaXNzaW9ucyQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gU3luY2hyb25vdXMgY2hlY2tcclxuICBpc0dyYW50ZWQocGVybWlzc2lvbk5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zJC52YWx1ZS5oYXMocGVybWlzc2lvbk5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gQXN5bmMgY2hlY2sgKG9wdGlvbmFsIGlmIG5lZWRlZCBmb3IgZ3VhcmRzIG9yIGVmZmVjdHMpXHJcbiAgaXNHcmFudGVkQXN5bmMocGVybWlzc2lvbk5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICByZXNvbHZlKHRoaXMuaXNHcmFudGVkKHBlcm1pc3Npb25OYW1lKSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19","import { inject, Injectable } from '@angular/core';\nimport { Router, RouterStateSnapshot } from '@angular/router';\nimport { PermissionsService } from './permissions.service';\nimport { DEFAULT_REDIRECT_KEY } from '@elite.framework/ng.core/models';\nimport { isFunction, isPlainObject, transformStringToArray } from '@elite.framework/ng.core/utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./permissions.service\";\nimport * as i2 from \"@angular/router\";\nexport const ngxPermissionsGuard = (route, state) => {\n const guard = inject(NgxPermissionsGuard);\n if (state instanceof RouterStateSnapshot) {\n return guard.hasPermissions(route, state);\n }\n return guard.hasPermissions(route);\n};\nexport class NgxPermissionsGuard {\n permissions;\n router;\n constructor(permissions, router) {\n this.permissions = permissions;\n this.router = router;\n }\n canActivate(route, state) {\n return this.hasPermissions(route, state);\n }\n canActivateChild(route, state) {\n return this.hasPermissions(route, state);\n }\n canLoad(route) {\n return this.hasPermissions(route);\n }\n canMatch(route) {\n return this.hasPermissions(route);\n }\n async hasPermissions(route, state) {\n const data = route.data?.['permissions'];\n const only = [];\n const except = [];\n if (data?.only) {\n if (isFunction(data.only)) {\n const result = data.only(route, state);\n only.push(...transformStringToArray(result));\n }\n else {\n only.push(...transformStringToArray(data.only));\n }\n }\n if (data?.except) {\n if (isFunction(data.except)) {\n const result = data.except(route, state);\n except.push(...transformStringToArray(result));\n }\n else {\n except.push(...transformStringToArray(data.except));\n }\n }\n const permissions = {\n only,\n except,\n redirectTo: data?.redirectTo\n };\n // --- rest of the guard logic ---\n // EXCEPT check\n if (permissions.except?.length) {\n for (const perm of permissions.except) {\n if (await this.permissions.isGrantedAsync(perm)) {\n this.handleRedirect(permissions, perm, route, state);\n return false;\n }\n }\n }\n // ONLY check\n if (permissions.only?.length) {\n for (const perm of permissions.only) {\n if (await this.permissions.isGrantedAsync(perm)) {\n return true;\n }\n }\n this.handleRedirect(permissions, permissions.only[0], route, state);\n return false;\n }\n return true;\n }\n handleRedirect(permissions, failedPermission, route, state) {\n const redirectTo = permissions.redirectTo;\n if (!redirectTo)\n return;\n // If redirectTo is a function\n const resolvedRedirect = isFunction(redirectTo)\n ? redirectTo(failedPermission, route, state)\n : redirectTo;\n if (typeof resolvedRedirect === 'string') {\n this.router.navigate([resolvedRedirect]); // wrap string in array\n }\n else if (Array.isArray(resolvedRedirect)) {\n this.router.navigate(resolvedRedirect); // array is fine\n }\n else if (isPlainObject(resolvedRedirect)) {\n // Object: check for failedPermission key first\n const target = resolvedRedirect[failedPermission] ?? resolvedRedirect[DEFAULT_REDIRECT_KEY];\n if (target) {\n if (typeof target === 'string') {\n this.router.navigate([target]);\n }\n else if (Array.isArray(target)) {\n this.router.navigate(target);\n }\n else if (isFunction(target)) {\n this.router.navigate([target(failedPermission, route, state)]);\n }\n }\n }\n else {\n console.warn('Unknown redirect type', resolvedRedirect);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: NgxPermissionsGuard, deps: [{ token: i1.PermissionsService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: NgxPermissionsGuard, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: NgxPermissionsGuard, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.PermissionsService }, { type: i2.Router }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9zZXJ2aWNlcy9zcmMvbGliL3Blcm1pc3Npb25zLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQU1MLE1BQU0sRUFDTixtQkFBbUIsRUFFcEIsTUFBTSxpQkFBaUIsQ0FBQztBQUl6QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQXdFLE1BQU0saUNBQWlDLENBQUM7QUFDN0ksT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQVFuRyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBb0QsQ0FDbEYsS0FBcUMsRUFDckMsS0FBeUMsRUFDekMsRUFBRTtJQUNGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxZQUFZLG1CQUFtQixFQUFFLENBQUM7UUFDekMsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUdGLE1BQU0sT0FBTyxtQkFBbUI7SUFFcEI7SUFDQTtJQUZWLFlBQ1UsV0FBK0IsRUFDL0IsTUFBYztRQURkLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7SUFFSixXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFSCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQXFDLEVBQUUsS0FBMkI7UUFDckYsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBeUMsQ0FBQztRQUNqRixNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBRTVCLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxVQUFVLENBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxVQUFVLENBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQXVCO1lBQ3RDLElBQUk7WUFDSixNQUFNO1lBQ04sVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVO1NBQzdCLENBQUM7UUFFRixrQ0FBa0M7UUFDbEMsZUFBZTtRQUNmLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMvQixLQUFLLE1BQU0sSUFBSSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3JELE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELGFBQWE7UUFDYixJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDN0IsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNoRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdPLGNBQWMsQ0FDcEIsV0FBK0IsRUFDL0IsZ0JBQXdCLEVBQ3hCLEtBQXFDLEVBQ3JDLEtBQTJCO1FBRTNCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFFMUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBRXhCLDhCQUE4QjtRQUM5QixNQUFNLGdCQUFnQixHQUNwQixVQUFVLENBQWUsVUFBVSxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztZQUM1QyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBRWpCLElBQUksT0FBTyxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtRQUNuRSxDQUFDO2FBQ0ksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO1FBQzFELENBQUM7YUFDSSxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDekMsK0NBQStDO1lBQy9DLE1BQU0sTUFBTSxHQUNWLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLElBQUksZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUUvRSxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDakMsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9CLENBQUM7cUJBQU0sSUFBSSxVQUFVLENBQWUsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQzt1R0FySFksbUJBQW1COzJHQUFuQixtQkFBbUIsY0FETixNQUFNOzsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgQ2FuQWN0aXZhdGVDaGlsZEZuLFxyXG4gIENhbkFjdGl2YXRlRm4sXHJcbiAgQ2FuTWF0Y2hGbixcclxuICBSb3V0ZSxcclxuICBSb3V0ZXIsXHJcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICBVcmxTZWdtZW50XHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuXHJcbmltcG9ydCB7IFBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vcGVybWlzc2lvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IERFRkFVTFRfUkVESVJFQ1RfS0VZLCBFeGNlcHRGbiwgTmd4UGVybWlzc2lvbnNSb3V0ZXJEYXRhLCBPbmx5Rm4sIFJlZGlyZWN0VG8sIFJlZGlyZWN0VG9GbiB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc1BsYWluT2JqZWN0LCB0cmFuc2Zvcm1TdHJpbmdUb0FycmF5IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL3V0aWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4UGVybWlzc2lvbnNEYXRhIHtcclxuICBvbmx5Pzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgZXhjZXB0Pzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgcmVkaXJlY3RUbz86IFJlZGlyZWN0VG8gfCBSZWRpcmVjdFRvRm4gfCBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBuZ3hQZXJtaXNzaW9uc0d1YXJkOiBDYW5BY3RpdmF0ZUZuIHwgQ2FuQWN0aXZhdGVDaGlsZEZuIHwgQ2FuTWF0Y2hGbiA9IChcclxuICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IFJvdXRlLFxyXG4gIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90IHwgVXJsU2VnbWVudFtdXHJcbikgPT4ge1xyXG4gIGNvbnN0IGd1YXJkID0gaW5qZWN0KE5neFBlcm1pc3Npb25zR3VhcmQpO1xyXG4gIGlmIChzdGF0ZSBpbnN0YW5jZW9mIFJvdXRlclN0YXRlU25hcHNob3QpIHtcclxuICAgIHJldHVybiBndWFyZC5oYXNQZXJtaXNzaW9ucyhyb3V0ZSwgc3RhdGUpO1xyXG4gIH1cclxuICByZXR1cm4gZ3VhcmQuaGFzUGVybWlzc2lvbnMocm91dGUpO1xyXG59O1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5neFBlcm1pc3Npb25zR3VhcmQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge31cclxuXHJcbiAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYXNQZXJtaXNzaW9ucyhyb3V0ZSwgc3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgY2FuQWN0aXZhdGVDaGlsZChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcclxuICAgIHJldHVybiB0aGlzLmhhc1Blcm1pc3Npb25zKHJvdXRlLCBzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBjYW5Mb2FkKHJvdXRlOiBSb3V0ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFzUGVybWlzc2lvbnMocm91dGUpO1xyXG4gIH1cclxuXHJcbiAgY2FuTWF0Y2gocm91dGU6IFJvdXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYXNQZXJtaXNzaW9ucyhyb3V0ZSk7XHJcbiAgfVxyXG5cclxuYXN5bmMgaGFzUGVybWlzc2lvbnMocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBSb3V0ZSwgc3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgY29uc3QgZGF0YSA9IHJvdXRlLmRhdGE/LlsncGVybWlzc2lvbnMnXSBhcyBOZ3hQZXJtaXNzaW9uc1JvdXRlckRhdGEgfCB1bmRlZmluZWQ7XHJcbiAgY29uc3Qgb25seTogc3RyaW5nW10gPSBbXTtcclxuICBjb25zdCBleGNlcHQ6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGlmIChkYXRhPy5vbmx5KSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbjxPbmx5Rm4+KGRhdGEub25seSkpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gZGF0YS5vbmx5KHJvdXRlLCBzdGF0ZSk7XHJcbiAgICAgIG9ubHkucHVzaCguLi50cmFuc2Zvcm1TdHJpbmdUb0FycmF5KHJlc3VsdCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb25seS5wdXNoKC4uLnRyYW5zZm9ybVN0cmluZ1RvQXJyYXkoZGF0YS5vbmx5KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAoZGF0YT8uZXhjZXB0KSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbjxFeGNlcHRGbj4oZGF0YS5leGNlcHQpKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRhdGEuZXhjZXB0KHJvdXRlLCBzdGF0ZSk7XHJcbiAgICAgIGV4Y2VwdC5wdXNoKC4uLnRyYW5zZm9ybVN0cmluZ1RvQXJyYXkocmVzdWx0KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleGNlcHQucHVzaCguLi50cmFuc2Zvcm1TdHJpbmdUb0FycmF5KGRhdGEuZXhjZXB0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBwZXJtaXNzaW9uczogTmd4UGVybWlzc2lvbnNEYXRhID0ge1xyXG4gICAgb25seSxcclxuICAgIGV4Y2VwdCxcclxuICAgIHJlZGlyZWN0VG86IGRhdGE/LnJlZGlyZWN0VG9cclxuICB9O1xyXG5cclxuICAvLyAtLS0gcmVzdCBvZiB0aGUgZ3VhcmQgbG9naWMgLS0tXHJcbiAgLy8gRVhDRVBUIGNoZWNrXHJcbiAgaWYgKHBlcm1pc3Npb25zLmV4Y2VwdD8ubGVuZ3RoKSB7XHJcbiAgICBmb3IgKGNvbnN0IHBlcm0gb2YgcGVybWlzc2lvbnMuZXhjZXB0KSB7XHJcbiAgICAgIGlmIChhd2FpdCB0aGlzLnBlcm1pc3Npb25zLmlzR3JhbnRlZEFzeW5jKHBlcm0pKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVSZWRpcmVjdChwZXJtaXNzaW9ucywgcGVybSwgcm91dGUsIHN0YXRlKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE9OTFkgY2hlY2tcclxuICBpZiAocGVybWlzc2lvbnMub25seT8ubGVuZ3RoKSB7XHJcbiAgICBmb3IgKGNvbnN0IHBlcm0gb2YgcGVybWlzc2lvbnMub25seSkge1xyXG4gICAgICBpZiAoYXdhaXQgdGhpcy5wZXJtaXNzaW9ucy5pc0dyYW50ZWRBc3luYyhwZXJtKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmhhbmRsZVJlZGlyZWN0KHBlcm1pc3Npb25zLCBwZXJtaXNzaW9ucy5vbmx5WzBdLCByb3V0ZSwgc3RhdGUpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcblxyXG5wcml2YXRlIGhhbmRsZVJlZGlyZWN0KFxyXG4gIHBlcm1pc3Npb25zOiBOZ3hQZXJtaXNzaW9uc0RhdGEsXHJcbiAgZmFpbGVkUGVybWlzc2lvbjogc3RyaW5nLFxyXG4gIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgUm91dGUsXHJcbiAgc3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcbikge1xyXG4gIGNvbnN0IHJlZGlyZWN0VG8gPSBwZXJtaXNzaW9ucy5yZWRpcmVjdFRvO1xyXG5cclxuICBpZiAoIXJlZGlyZWN0VG8pIHJldHVybjtcclxuXHJcbiAgLy8gSWYgcmVkaXJlY3RUbyBpcyBhIGZ1bmN0aW9uXHJcbiAgY29uc3QgcmVzb2x2ZWRSZWRpcmVjdCA9XHJcbiAgICBpc0Z1bmN0aW9uPFJlZGlyZWN0VG9Gbj4ocmVkaXJlY3RUbylcclxuICAgICAgPyByZWRpcmVjdFRvKGZhaWxlZFBlcm1pc3Npb24sIHJvdXRlLCBzdGF0ZSlcclxuICAgICAgOiByZWRpcmVjdFRvO1xyXG5cclxuICBpZiAodHlwZW9mIHJlc29sdmVkUmVkaXJlY3QgPT09ICdzdHJpbmcnKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVzb2x2ZWRSZWRpcmVjdF0pOyAvLyB3cmFwIHN0cmluZyBpbiBhcnJheVxyXG4gIH1cclxuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc29sdmVkUmVkaXJlY3QpKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyZXNvbHZlZFJlZGlyZWN0KTsgLy8gYXJyYXkgaXMgZmluZVxyXG4gIH1cclxuICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHJlc29sdmVkUmVkaXJlY3QpKSB7XHJcbiAgICAvLyBPYmplY3Q6IGNoZWNrIGZvciBmYWlsZWRQZXJtaXNzaW9uIGtleSBmaXJzdFxyXG4gICAgY29uc3QgdGFyZ2V0ID1cclxuICAgICAgcmVzb2x2ZWRSZWRpcmVjdFtmYWlsZWRQZXJtaXNzaW9uXSA/PyByZXNvbHZlZFJlZGlyZWN0W0RFRkFVTFRfUkVESVJFQ1RfS0VZXTtcclxuXHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0YXJnZXRdKTtcclxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0YXJnZXQpO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb248UmVkaXJlY3RUb0ZuPih0YXJnZXQpKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RhcmdldChmYWlsZWRQZXJtaXNzaW9uLCByb3V0ZSwgc3RhdGUpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gcmVkaXJlY3QgdHlwZScsIHJlc29sdmVkUmVkaXJlY3QpO1xyXG4gIH1cclxufVxyXG5cclxufVxyXG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtc2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLmNvcmUvc2VydmljZXMvc3JjL2VsaXRlLmZyYW1ld29yay1uZy5jb3JlLXNlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.RestService","i1","i1.PermissionsService"],"mappings":"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"}
1
+ {"version":3,"file":"elite.framework-ng.core-services.mjs","sources":["../tmp-esm2022/services/lib/rest.service.js","../tmp-esm2022/services/lib/base.service.js","../tmp-esm2022/services/lib/generic.service.js","../tmp-esm2022/services/lib/ssr-cookie.service.js","../tmp-esm2022/services/lib/SwalService.service.js","../tmp-esm2022/services/lib/permissions.service.js","../tmp-esm2022/services/lib/permissions-guard.service.js","../tmp-esm2022/services/lib/logger.interface.js","../tmp-esm2022/services/lib/logger.service.js","../tmp-esm2022/services/elite.framework-ng.core-services.js"],"sourcesContent":["import { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { Injectable, Inject, inject } from \"@angular/core\";\nimport { ENVIRONMENT, CORE_OPTIONS } from \"@elite.framework/ng.core/tokens\";\nimport { throwError, catchError } from \"rxjs\";\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class RestService {\n options;\n http;\n environment = inject(ENVIRONMENT);\n constructor(options, http) {\n this.options = options;\n this.http = http;\n }\n getApiFromStore(apiName) {\n return this.environment.apiUrl;\n }\n handleError(err) {\n // this.httpErrorReporter.reportError(err);\n return throwError(() => err);\n }\n request(request, config, api) {\n // debugger\n config = config || {};\n api = api || this.getApiFromStore(config.apiName);\n const { method, params, ...options } = request;\n const { observe = \"body\" /* Rest.Observe.Body */, skipHandleError } = config;\n const url = this.removeDuplicateSlashes(api + request.url);\n const httpClient = this.getHttpClient(config.skipAddingHeader ?? false);\n return httpClient\n .request(method, url, {\n observe,\n ...(params && {\n params: this.getParams(params, config.httpParamEncoder),\n }),\n ...options,\n })\n .pipe(catchError(err => (skipHandleError ? throwError(() => err) : this.handleError(err))));\n }\n getHttpClient(isExternal) {\n return /* isExternal ? this.externalHttp : */ this.http;\n }\n getParams(params, encoder) {\n const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {\n if (isUndefinedOrEmptyString(value))\n return acc;\n if (value === null && !this.options.sendNullsAsQueryParam)\n return acc;\n acc[key] = value;\n return acc;\n }, {});\n return encoder\n ? new HttpParams({ encoder, fromObject: filteredParams })\n : new HttpParams({ fromObject: filteredParams });\n }\n removeDuplicateSlashes(url) {\n return url.replace(/([^:]\\/)\\/+/g, '$1');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: RestService, deps: [{ token: CORE_OPTIONS }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: RestService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: RestService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [CORE_OPTIONS]\n }] }, { type: i1.HttpClient }] });\nexport function isUndefinedOrEmptyString(value) {\n return value === undefined || value === '';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3NlcnZpY2VzL3NyYy9saWIvcmVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW1DLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBYyxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLMUQsTUFBTSxPQUFPLFdBQVc7SUFHWTtJQUN0QjtJQUhKLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsWUFDa0MsT0FBYSxFQUNuQyxJQUFnQjtRQURNLFlBQU8sR0FBUCxPQUFPLENBQU07UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUd4QixDQUFDO0lBRUssZUFBZSxDQUFDLE9BQTJCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFRO1FBQ2xCLDJDQUEyQztRQUMzQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxDQUNMLE9BQXlDLEVBQ3pDLE1BQW9CLEVBQ3BCLEdBQVk7UUFFWixXQUFXO1FBQ1gsTUFBTSxHQUFHLE1BQU0sSUFBSyxFQUFrQixDQUFDO1FBQ3ZDLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDL0MsTUFBTSxFQUFFLE9BQU8saUNBQW9CLEVBQUUsZUFBZSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ2hFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVELE1BQU0sVUFBVSxHQUFlLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sVUFBVTthQUNkLE9BQU8sQ0FBSSxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ3ZCLE9BQU87WUFDUCxHQUFHLENBQUMsTUFBTSxJQUFJO2dCQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUM7YUFDeEQsQ0FBQztZQUNGLEdBQUcsT0FBTztTQUNKLENBQUM7YUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBQ08sYUFBYSxDQUFDLFVBQW1CO1FBQ3ZDLE9BQU8sc0NBQXNDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQW1CLEVBQUUsT0FBNEI7UUFDakUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUN6RSxJQUFJLHdCQUF3QixDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUNoRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQjtnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUN0RSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFDO1FBQ2QsT0FBTyxPQUFPO1lBQ1osQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUN6RCxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsR0FBVztRQUN4QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7dUdBM0RVLFdBQVcsa0JBR1osWUFBWTsyR0FIWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUlJLE1BQU07MkJBQUMsWUFBWTs7QUE0RHhCLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFjO0lBQ3JELE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUmVxdWVzdCwgSHR0cFBhcmFtZXRlckNvZGVjLCBIdHRwUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBSb290LCBSZXN0IH0gZnJvbSBcIkBlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHNcIjtcbmltcG9ydCB7IEVOVklST05NRU5ULCBDT1JFX09QVElPTlMgfSBmcm9tIFwiQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL3Rva2Vuc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgY2F0Y2hFcnJvciB9IGZyb20gXCJyeGpzXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN0U2VydmljZSB7XG4gIHByaXZhdGUgZW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENPUkVfT1BUSU9OUykgcHJvdGVjdGVkIG9wdGlvbnM6IFJvb3QsXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgLy8gcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgLy8gcHJvdGVjdGVkIGh0dHBFcnJvclJlcG9ydGVyOiBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UsXG4gICkgeyB9XG5cbiAgcHJvdGVjdGVkIGdldEFwaUZyb21TdG9yZShhcGlOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50LmFwaVVybDtcbiAgfVxuXG4gIGhhbmRsZUVycm9yKGVycjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyB0aGlzLmh0dHBFcnJvclJlcG9ydGVyLnJlcG9ydEVycm9yKGVycik7XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcbiAgfVxuXG4gIHJlcXVlc3Q8VCwgUj4oXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8VD4gfCBSZXN0LlJlcXVlc3Q8VD4sXG4gICAgY29uZmlnPzogUmVzdC5Db25maWcsXG4gICAgYXBpPzogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPFI+IHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCAoe30gYXMgUmVzdC5Db25maWcpO1xuICAgIGFwaSA9IGFwaSB8fCB0aGlzLmdldEFwaUZyb21TdG9yZShjb25maWcuYXBpTmFtZSk7XG4gICAgY29uc3QgeyBtZXRob2QsIHBhcmFtcywgLi4ub3B0aW9ucyB9ID0gcmVxdWVzdDtcbiAgICBjb25zdCB7IG9ic2VydmUgPSBSZXN0Lk9ic2VydmUuQm9keSwgc2tpcEhhbmRsZUVycm9yIH0gPSBjb25maWc7XG4gICAgY29uc3QgdXJsID0gdGhpcy5yZW1vdmVEdXBsaWNhdGVTbGFzaGVzKCBhcGkgKyByZXF1ZXN0LnVybCk7XG5cbiAgICBjb25zdCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50ID0gdGhpcy5nZXRIdHRwQ2xpZW50KGNvbmZpZy5za2lwQWRkaW5nSGVhZGVyID8/IGZhbHNlKTtcbiAgICByZXR1cm4gaHR0cENsaWVudFxuICAgICAgLnJlcXVlc3Q8Uj4obWV0aG9kLCB1cmwsIHtcbiAgICAgICAgb2JzZXJ2ZSxcbiAgICAgICAgLi4uKHBhcmFtcyAmJiB7XG4gICAgICAgICAgcGFyYW1zOiB0aGlzLmdldFBhcmFtcyhwYXJhbXMsIGNvbmZpZy5odHRwUGFyYW1FbmNvZGVyKSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB9IGFzIGFueSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoZXJyID0+IChza2lwSGFuZGxlRXJyb3IgPyB0aHJvd0Vycm9yKCgpID0+IGVycikgOiB0aGlzLmhhbmRsZUVycm9yKGVycikpKSk7XG4gIH1cbiAgcHJpdmF0ZSBnZXRIdHRwQ2xpZW50KGlzRXh0ZXJuYWw6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gLyogaXNFeHRlcm5hbCA/IHRoaXMuZXh0ZXJuYWxIdHRwIDogKi8gdGhpcy5odHRwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbXMocGFyYW1zOiBSZXN0LlBhcmFtcywgZW5jb2Rlcj86IEh0dHBQYXJhbWV0ZXJDb2RlYyk6IEh0dHBQYXJhbXMge1xuICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zID0gT2JqZWN0LmVudHJpZXMocGFyYW1zKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAoaXNVbmRlZmluZWRPckVtcHR5U3RyaW5nKHZhbHVlKSkgcmV0dXJuIGFjYztcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhdGhpcy5vcHRpb25zLnNlbmROdWxsc0FzUXVlcnlQYXJhbSkgcmV0dXJuIGFjYztcbiAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9IGFzIGFueSk7XG4gICAgcmV0dXJuIGVuY29kZXJcbiAgICAgID8gbmV3IEh0dHBQYXJhbXMoeyBlbmNvZGVyLCBmcm9tT2JqZWN0OiBmaWx0ZXJlZFBhcmFtcyB9KVxuICAgICAgOiBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IGZpbHRlcmVkUGFyYW1zIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEdXBsaWNhdGVTbGFzaGVzKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoLyhbXjpdXFwvKVxcLysvZywgJyQxJyk7XG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVbmRlZmluZWRPckVtcHR5U3RyaW5nKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJztcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs';\nimport { RestService } from './rest.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./rest.service\";\nexport class BaseService {\n restService;\n apiName = '';\n moduleName = '';\n constructor(restService) {\n this.restService = restService;\n }\n get = (id) => this.restService.request({\n method: 'GET',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n }, { apiName: this.apiName });\n getList = (input, endpoint) => {\n const params = Object.keys(input).reduce((acc, key) => {\n acc[key] = input[key];\n return acc;\n }, {});\n const url = endpoint ? endpoint : `/${this.moduleName}/${this.apiName}`;\n return this.restService.request({\n method: 'GET',\n url: url,\n params: params,\n }, { apiName: this.apiName })\n .pipe(map(response => response));\n };\n create = (input) => this.restService.request({\n method: 'POST',\n url: `/${this.moduleName}/${this.apiName}`,\n body: input,\n }, { apiName: this.apiName });\n update = (id, input) => this.restService.request({\n method: 'PUT',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n body: input,\n }, { apiName: this.apiName });\n delete = (id) => this.restService.request({\n method: 'DELETE',\n url: `/${this.moduleName}/${this.apiName}/${id}`,\n }, { apiName: this.apiName });\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseService, deps: [{ token: i1.RestService }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: BaseService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.RestService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3NlcnZpY2VzL3NyYy9saWIvYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU03QyxNQUFNLE9BQU8sV0FBVztJQUdIO0lBRm5CLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFlBQW1CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUNoRCxHQUFHLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBVztRQUNqQyxNQUFNLEVBQUUsS0FBSztRQUNiLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUU7S0FDakQsRUFDRCxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUUzQixPQUFPLEdBQUcsQ0FBQyxLQUFTLEVBQUUsUUFBaUIsRUFBRyxFQUFFO1FBRTFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3hELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFTixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV6RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUE0QjtZQUN6RCxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxHQUFHO1lBQ1IsTUFBTSxFQUFFLE1BQU07U0FDZixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM1QixJQUFJLENBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzFCLENBQUM7SUFDSixDQUFDLENBQUM7SUFDSixNQUFNLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBVztRQUNqQyxNQUFNLEVBQUUsTUFBTTtRQUNkLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUMxQyxJQUFJLEVBQUUsS0FBSztLQUNaLEVBQ0QsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFHLENBQUMsRUFBVSxFQUFFLEtBQVUsRUFBRSxFQUFFLENBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFXO1FBQ2pDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTtRQUNoRCxJQUFJLEVBQUUsS0FBSztLQUNaLEVBQ0QsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFN0IsTUFBTSxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQVk7UUFDbEMsTUFBTSxFQUFFLFFBQVE7UUFDaEIsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTtLQUNqRCxFQUNELEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO3VHQWpEbEIsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4vcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2luYXRlZFJlc3VsdCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQmFzZVNlcnZpY2Uge1xuICBhcGlOYW1lID0gJyc7XG4gIG1vZHVsZU5hbWUgPSAnJztcbiAgY29uc3RydWN0b3IocHVibGljIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSkge31cbiBnZXQgPSAoaWQ6IHN0cmluZykgPT5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBhbnk+KHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6IGAvJHt0aGlzLm1vZHVsZU5hbWV9LyR7dGhpcy5hcGlOYW1lfS8ke2lkfWAsXG4gICAgfSxcbiAgICB7IGFwaU5hbWU6IHRoaXMuYXBpTmFtZSB9KTtcblxuICAgIGdldExpc3QgPSAoaW5wdXQ6YW55LCBlbmRwb2ludD86IHN0cmluZyApID0+IHtcblxuICAgICAgY29uc3QgcGFyYW1zID0gT2JqZWN0LmtleXMoaW5wdXQpLnJlZHVjZSgoYWNjOmFueSwga2V5KSA9PiB7XG4gICAgICAgIGFjY1trZXldID0gaW5wdXRba2V5XTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcblxuICAgICAgIGNvbnN0IHVybCA9IGVuZHBvaW50ID8gZW5kcG9pbnQgOiBgLyR7dGhpcy5tb2R1bGVOYW1lfS8ke3RoaXMuYXBpTmFtZX1gO1xuXG4gICAgICByZXR1cm4gdGhpcy5yZXN0U2VydmljZS5yZXF1ZXN0PGFueSwgUGFnaW5hdGVkUmVzdWx0PGFueT4+KHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgfSwgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UpXG4gICAgICApO1xuICAgIH07XG4gIGNyZWF0ZSA9IChpbnB1dDogYW55KSA9PlxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIGFueT4oe1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB1cmw6IGAvJHt0aGlzLm1vZHVsZU5hbWV9LyR7dGhpcy5hcGlOYW1lfWAsXG4gICAgICBib2R5OiBpbnB1dCxcbiAgICB9LFxuICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xuIHVwZGF0ZSA9IChpZDogc3RyaW5nLCBpbnB1dDogYW55KSA9PlxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIGFueT4oe1xuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIHVybDogYC8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLmFwaU5hbWV9LyR7aWR9YCxcbiAgICAgIGJvZHk6IGlucHV0LFxuICAgIH0sXG4gICAgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUgfSk7XG5cbiAgZGVsZXRlID0gKGlkOiBzdHJpbmcpID0+XG4gICAgdGhpcy5yZXN0U2VydmljZS5yZXF1ZXN0PGFueSwgdm9pZD4oe1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHVybDogYC8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLmFwaU5hbWV9LyR7aWR9YCxcbiAgICB9LFxuICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xuXG5cbn1cbiJdfQ==","// src/app/services/generic.service.ts\nimport { HttpParams } from '@angular/common/http';\n/**\n * GenericService<T, K>:\n * - T = نوع الكائن (Model)\n * - K = نوع المفتاح الأساسي (ID)، افتراضي number\n *\n * يحتوي على جميع دوال الـ CRUD القياسية للتوريث في الخدمات المتخصصة.\n */\nexport class GenericService {\n http;\n constructor(http) {\n this.http = http;\n }\n /**\n * جلب كل السجلات\n */\n getAll() {\n // ملاحظة: يمكن إضافة معالج أخطاء مركزي هنا أو عبر Interceptor\n return this.http.get(this.baseUrl);\n }\n /**\n * جلب سجل واحد بناءً على المعرف\n */\n getById(id) {\n // ملاحظة: تأكد أن الـ endpoint يدعم GET برقم المعرف\n return this.http.get(`${this.baseUrl}/${id}`);\n }\n /**\n * إنشاء سجل جديد\n */\n create(item) {\n // ملاحظة: استخدم Partial<T> للسماح ببعض الحقول الاختيارية\n return this.http.post(this.baseUrl, item);\n }\n /**\n * تحديث سجل موجود\n */\n update(id, item) {\n // ملاحظة: هنا نُعيد Observable<void> لأن API قد لا تُرجع الجسم نفسه\n return this.http.put(`${this.baseUrl}`, item);\n }\n /**\n * حذف سجل\n */\n delete(id) {\n // ملاحظة: يُفضّل استخدام Confirm قبل الحذف في الواجهة\n return this.http.delete(`${this.baseUrl}/${id}`);\n }\n /** endpoint قابل للتخصيص — يمكن للفرع override–ها */\n getPageUrl() {\n return this.baseUrl;\n }\n /**\n * جلب صفحة من البيانات مع دعم الفلاتر والفرز\n * @param pageIndex صفر-based\n * @param pageSize عدد السجلات\n * @param filters كائن Partial<T> أو Record<string,any>\n * @param sort نص الفرز، مثلاً \"eiNa:desc\"\n */\n getPage(pageIndex, pageSize, filters, sort) {\n // debugger\n let params = new HttpParams()\n .set('pageIndex', pageIndex.toString())\n .set('pageSize', pageSize.toString());\n if (filters) {\n Object.entries(filters).forEach(([key, val]) => {\n if (val != null && val !== '') {\n params = params.set(key, val.toString());\n }\n });\n }\n if (sort) {\n params = params.set('sort', sort);\n }\n // return this.http\n // .get<T[]>(this.getPageUrl(), { params, observe: 'response' })\n // .pipe(\n // map((resp: HttpResponse<T[]>) => ({\n // items: resp.body || [],\n // totalCount: Number(resp.headers.get('X-Total-Count')) || resp.body?.length || 0\n // }))\n // );\n return this.http.get(this.getPageUrl(), { params });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3NlcnZpY2VzL3NyYy9saWIvZ2VuZXJpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxPQUFPLEVBQWMsVUFBVSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBSzVFOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBZ0IsY0FBYztJQU9aO0lBQXRCLFlBQXNCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFBRyxDQUFDO0lBRTFDOztPQUVHO0lBQ0gsTUFBTTtRQUNKLDhEQUE4RDtRQUM5RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFFSCxPQUFPLENBQUMsRUFBSztRQUNYLG9EQUFvRDtRQUNwRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFnQjtRQUVyQiwwREFBMEQ7UUFDMUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUVGLE1BQU0sQ0FBQyxFQUFLLEVBQUUsSUFBZ0I7UUFDN0Isb0VBQW9FO1FBQ25FLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEVBQUs7UUFDVixzREFBc0Q7UUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBSUYscURBQXFEO0lBQzFDLFVBQVU7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFQTs7Ozs7O01BTUU7SUFDSCxPQUFPLENBQ0wsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsT0FBNkIsRUFDN0IsSUFBYTtRQUViLFdBQVc7UUFDWCxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTthQUMxQixHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN0QyxHQUFHLENBQUMsVUFBVSxFQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixrRUFBa0U7UUFDbEUsV0FBVztRQUNYLDBDQUEwQztRQUMxQyxnQ0FBZ0M7UUFDaEMsd0ZBQXdGO1FBQ3hGLFVBQVU7UUFDVixPQUFPO1FBQ0osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixFQUFFLE1BQU0sRUFBRSxDQUNYLENBQUM7SUFDRixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvYXBwL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZS50c1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gJy4vY3J1ZC1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQYWdpbmF0ZWRSZXN1bHQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcblxuLyoqXG4gKiBHZW5lcmljU2VydmljZTxULCBLPjpcbiAqICAtIFQgPSDZhtmI2Lkg2KfZhNmD2KfYptmGIChNb2RlbClcbiAqICAtIEsgPSDZhtmI2Lkg2KfZhNmF2YHYqtin2K0g2KfZhNij2LPYp9iz2YogKElEKdiMINin2YHYqtix2KfYttmKIG51bWJlclxuICpcbiAqINmK2K3YqtmI2Yog2LnZhNmJINis2YXZiti5INiv2YjYp9mEINin2YTZgCBDUlVEINin2YTZgtmK2KfYs9mK2Kkg2YTZhNiq2YjYsdmK2Ksg2YHZiiDYp9mE2K7Yr9mF2KfYqiDYp9mE2YXYqtiu2LXYtdipLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2VuZXJpY1NlcnZpY2U8VCwgSyA9IG51bWJlcj4gaW1wbGVtZW50cyBDcnVkU2VydmljZTxULCBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIC8qKlxuICAgKiDinI/vuI8g2LnZhNmJINmD2YQg2K7Yr9mF2Kkg2YHYsdi52YrYqSDYo9mGINiq2LnYsdmR2YEg2YfYsNinOlxuICAgKiDZhdir2KfZhDogcHJvdGVjdGVkIGJhc2VVcmwgPSAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vYXBpL2pvYnR5cHMnO1xuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJhc2VVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCkge31cblxuICAvKipcbiAgICog2KzZhNioINmD2YQg2KfZhNiz2KzZhNin2KpcbiAgICovXG4gIGdldEFsbCgpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIC8vINmF2YTYp9it2LjYqTog2YrZhdmD2YYg2KXYttin2YHYqSDZhdi52KfZhNisINij2K7Yt9in2KEg2YXYsdmD2LLZiiDZh9mG2Kcg2KPZiCDYudio2LEgSW50ZXJjZXB0b3JcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUW10+KHRoaXMuYmFzZVVybCk7XG4gIH1cblxuICAvKipcbiAgICog2KzZhNioINiz2KzZhCDZiNin2K3YryDYqNmG2KfYodmLINi52YTZiSDYp9mE2YXYudix2YFcbiAgICovXG5cbiAgZ2V0QnlJZChpZDogSyk6IE9ic2VydmFibGU8VD4ge1xuICAgIC8vINmF2YTYp9it2LjYqTog2KrYo9mD2K8g2KPZhiDYp9mE2YAgZW5kcG9pbnQg2YrYr9i52YUgR0VUINio2LHZgtmFINin2YTZhdi52LHZgVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KGAke3RoaXMuYmFzZVVybH0vJHtpZH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDYpdmG2LTYp9ihINiz2KzZhCDYrNiv2YrYr1xuICAgKi9cbiAgY3JlYXRlKGl0ZW06IFBhcnRpYWw8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcblxuICAgIC8vINmF2YTYp9it2LjYqTog2KfYs9iq2K7Yr9mFIFBhcnRpYWw8VD4g2YTZhNiz2YXYp9itINio2KjYudi2INin2YTYrdmC2YjZhCDYp9mE2KfYrtiq2YrYp9ix2YrYqVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih0aGlzLmJhc2VVcmwsIGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqINiq2K3Yr9mK2Ksg2LPYrNmEINmF2YjYrNmI2K9cbiAgICovXG5cbiAgIHVwZGF0ZShpZDogSywgaXRlbTogUGFydGlhbDxUPik6IE9ic2VydmFibGU8VD4ge1xuICAgIC8vINmF2YTYp9it2LjYqTog2YfZhtinINmG2Y/YudmK2K8gT2JzZXJ2YWJsZTx2b2lkPiDZhNij2YYgQVBJINmC2K8g2YTYpyDYqtmP2LHYrNi5INin2YTYrNiz2YUg2YbZgdiz2YdcbiAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8VD4oYCR7dGhpcy5iYXNlVXJsfWAsIGl0ZW0pO1xuICB9XG4gIC8qKlxuICAgKiDYrdiw2YEg2LPYrNmEXG4gICAqL1xuICBkZWxldGUoaWQ6IEspOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAvLyDZhdmE2KfYrdi42Kk6INmK2Y/Zgdi22ZHZhCDYp9iz2KrYrtiv2KfZhSBDb25maXJtINmC2KjZhCDYp9mE2K3YsNmBINmB2Yog2KfZhNmI2KfYrNmH2KlcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx2b2lkPihgJHt0aGlzLmJhc2VVcmx9LyR7aWR9YCk7XG4gIH1cblxuXG5cbiAvKiogZW5kcG9pbnQg2YLYp9io2YQg2YTZhNiq2K7YtdmK2LUg4oCUINmK2YXZg9mGINmE2YTZgdix2Lkgb3ZlcnJpZGXigJPZh9inICovXG4gIHByb3RlY3RlZCBnZXRQYWdlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZVVybDtcbiAgfVxuXG4gICAvKipcbiAgICog2KzZhNioINi12YHYrdipINmF2YYg2KfZhNio2YrYp9mG2KfYqiDZhdi5INiv2LnZhSDYp9mE2YHZhNin2KrYsSDZiNin2YTZgdix2LJcbiAgICogQHBhcmFtIHBhZ2VJbmRleCDYtdmB2LEtYmFzZWRcbiAgICogQHBhcmFtIHBhZ2VTaXplINi52K/YryDYp9mE2LPYrNmE2KfYqlxuICAgKiBAcGFyYW0gZmlsdGVycyDZg9in2KbZhiBQYXJ0aWFsPFQ+INij2YggUmVjb3JkPHN0cmluZyxhbnk+XG4gICAqIEBwYXJhbSBzb3J0INmG2LUg2KfZhNmB2LHYstiMINmF2KvZhNin2YsgXCJlaU5hOmRlc2NcIlxuICAgKi9cbiAgZ2V0UGFnZShcbiAgICBwYWdlSW5kZXg6IG51bWJlcixcbiAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICAgIGZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHNvcnQ/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxQYWdpbmF0ZWRSZXN1bHQ8VD4+IHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdwYWdlSW5kZXgnLCBwYWdlSW5kZXgudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3BhZ2VTaXplJywgIHBhZ2VTaXplLnRvU3RyaW5nKCkpO1xuXG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsICYmIHZhbCAhPT0gJycpIHtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgdmFsLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc29ydCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc29ydCcsIHNvcnQpO1xuICAgIH1cblxuICAgIC8vIHJldHVybiB0aGlzLmh0dHBcbiAgICAvLyAgIC5nZXQ8VFtdPih0aGlzLmdldFBhZ2VVcmwoKSwgeyBwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZScgfSlcbiAgICAvLyAgIC5waXBlKFxuICAgIC8vICAgICBtYXAoKHJlc3A6IEh0dHBSZXNwb25zZTxUW10+KSA9PiAoe1xuICAgIC8vICAgICAgIGl0ZW1zOiByZXNwLmJvZHkgfHwgW10sXG4gICAgLy8gICAgICAgdG90YWxDb3VudDogTnVtYmVyKHJlc3AuaGVhZGVycy5nZXQoJ1gtVG90YWwtQ291bnQnKSkgfHwgcmVzcC5ib2R5Py5sZW5ndGggfHwgMFxuICAgIC8vICAgICB9KSlcbiAgICAvLyAgICk7XG4gICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UGFnaW5hdGVkUmVzdWx0PFQ+PihcbiAgICB0aGlzLmdldFBhZ2VVcmwoKSxcbiAgICB7IHBhcmFtcyB9XG4gICk7XG4gIH1cblxuXG59XG4iXX0=","import { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport * as i0 from \"@angular/core\";\n// Define the `Request` token\nexport const REQUEST = new InjectionToken('REQUEST');\nexport class SsrCookieService {\n document;\n platformId;\n request;\n documentIsAccessible;\n static initialUrl = '';\n constructor(document, \n // Get the `PLATFORM_ID` so we can check if we're in a browser.\n platformId, request) {\n this.document = document;\n this.platformId = platformId;\n this.request = request;\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n SsrCookieService.initialUrl = this.documentIsAccessible ? this.document.location.href : this.request?.url;\n }\n /**\n * Get cookie Regular Expression\n *\n * @param name Cookie name\n * @returns property RegExp\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static getCookieRegExp(name) {\n const escapedName = name.replace(/([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/gi, '\\\\$1');\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n /**\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @param encodedURIComponent A value representing an encoded URI component.\n *\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static safeDecodeURIComponent(encodedURIComponent) {\n try {\n return decodeURIComponent(encodedURIComponent);\n }\n catch {\n // probably it is not uri encoded. return as is\n return encodedURIComponent;\n }\n }\n /**\n * Return `true` if {@link Document} is accessible, otherwise return `false`\n *\n * @param name Cookie name\n * @returns boolean - whether cookie with specified name exists\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n check(name) {\n name = encodeURIComponent(name);\n const regExp = SsrCookieService.getCookieRegExp(name);\n return regExp.test((this.documentIsAccessible ? this.document.cookie : this.request?.headers.cookie) ?? '');\n }\n isDocumentIsAccessible() {\n return this.documentIsAccessible;\n }\n get url() {\n return this.documentIsAccessible ? this.document.location.href : this.request?.url;\n }\n /**\n * Get cookies by name\n *\n * @param name Cookie name\n * @returns property value\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n get(name) {\n if (this.check(name)) {\n name = encodeURIComponent(name);\n const regExp = SsrCookieService.getCookieRegExp(name);\n const result = regExp.exec((this.documentIsAccessible ? this.document.cookie : this.request?.headers.cookie) ?? '');\n return result[1] ? SsrCookieService.safeDecodeURIComponent(result[1]) : '';\n }\n else {\n return '';\n }\n }\n /**\n * Get all cookies in JSON format\n *\n * @returns all the cookies in json\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n getAll() {\n const cookies = {};\n const cookieString = this.documentIsAccessible ? this.document?.cookie : this.request?.headers.cookie;\n if (cookieString && cookieString !== '') {\n cookieString.split(';').forEach((currentCookie) => {\n const [cookieName, cookieValue] = currentCookie.split('=');\n cookies[SsrCookieService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] = SsrCookieService.safeDecodeURIComponent(cookieValue);\n });\n }\n return cookies;\n }\n set(name, value, expiresOrOptions, path, domain, secure, sameSite, partitioned) {\n if (!this.documentIsAccessible) {\n return;\n }\n if (typeof expiresOrOptions === 'number' || expiresOrOptions instanceof Date || path || domain || secure || sameSite) {\n const optionsBody = {\n expires: expiresOrOptions,\n path,\n domain,\n secure,\n sameSite: sameSite ? sameSite : 'Lax',\n partitioned,\n };\n this.set(name, value, optionsBody);\n return;\n }\n let cookieString = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n const options = expiresOrOptions ? expiresOrOptions : {};\n if (options.expires) {\n if (typeof options.expires === 'number') {\n const dateExpires = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n }\n else {\n cookieString += 'expires=' + options.expires.toUTCString() + ';';\n }\n }\n if (options.path) {\n cookieString += 'path=' + options.path + ';';\n }\n if (options.domain) {\n cookieString += 'domain=' + options.domain + ';';\n }\n if (options.secure === false && options.sameSite === 'None') {\n options.secure = true;\n console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);\n }\n if (options.secure) {\n cookieString += 'secure;';\n }\n if (!options.sameSite) {\n options.sameSite = 'Lax';\n }\n cookieString += 'sameSite=' + options.sameSite + ';';\n if (options.partitioned) {\n cookieString += 'Partitioned;';\n }\n this.document.cookie = cookieString;\n }\n /**\n * Delete cookie by name\n *\n * @param name Cookie name\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Cookie secure flag\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n delete(name, path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');\n this.set(name, '', { expires: expiresDate, path, domain, secure, sameSite });\n }\n /**\n * Delete all cookies\n *\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Is the Cookie secure\n * @param sameSite Is the cookie same site\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n deleteAll(path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const cookies = this.getAll();\n for (const cookieName in cookies) {\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain, secure, sameSite);\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SsrCookieService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: REQUEST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SsrCookieService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SsrCookieService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [REQUEST]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyLWNvb2tpZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3NlcnZpY2VzL3NyYy9saWIvc3NyLWNvb2tpZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFOUQsNkJBQTZCO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBVSxTQUFTLENBQUMsQ0FBQztBQUs5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBS0M7SUFFRztJQUNRO0lBUHRCLG9CQUFvQixDQUFVO0lBQy9DLE1BQU0sQ0FBRSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBRXhCLFlBQzRCLFFBQWtCO0lBQzVDLCtEQUErRDtJQUNsQyxVQUFlLEVBQ1AsT0FBZ0I7UUFIM0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVmLGVBQVUsR0FBVixVQUFVLENBQUs7UUFDUCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRXJELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztJQUM1RyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDakMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FB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Q0FBQztJQUNILENBQUM7dUdBaFNVLGdCQUFnQixrQkFLakIsUUFBUSxhQUVSLFdBQVcsYUFDQyxPQUFPOzJHQVJsQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFNSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUVmLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLy8gRGVmaW5lIHRoZSBgUmVxdWVzdGAgdG9rZW5cbmV4cG9ydCBjb25zdCBSRVFVRVNUID0gbmV3IEluamVjdGlvblRva2VuPFJlcXVlc3Q+KCdSRVFVRVNUJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTc3JDb29raWVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudElzQWNjZXNzaWJsZTogYm9vbGVhbjtcbiAgc3RhdGljICBpbml0aWFsVXJsID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgLy8gR2V0IHRoZSBgUExBVEZPUk1fSURgIHNvIHdlIGNhbiBjaGVjayBpZiB3ZSdyZSBpbiBhIGJyb3dzZXIuXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSRVFVRVNUKSBwcml2YXRlIHJlcXVlc3Q6IFJlcXVlc3RcbiAgKSB7XG4gICAgdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gICAgU3NyQ29va2llU2VydmljZS5pbml0aWFsVXJsID0gdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA/IHRoaXMuZG9jdW1lbnQubG9jYXRpb24uaHJlZiA6IHRoaXMucmVxdWVzdD8udXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb29raWUgUmVndWxhciBFeHByZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXG4gICAqIEByZXR1cm5zIHByb3BlcnR5IFJlZ0V4cFxuICAgKlxuICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxuICAgKiBAc2luY2U6IDEuMC4wXG4gICAqL1xuICBzdGF0aWMgZ2V0Q29va2llUmVnRXhwKG5hbWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gICAgY29uc3QgZXNjYXBlZE5hbWU6IHN0cmluZyA9IG5hbWUucmVwbGFjZSgvKFtcXFtcXF1cXHtcXH1cXChcXClcXHxcXD1cXDtcXCtcXD9cXCxcXC5cXCpcXF5cXCRdKS9naSwgJ1xcXFwkMScpO1xuXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoJyg/Ol4nICsgZXNjYXBlZE5hbWUgKyAnfDtcXFxccyonICsgZXNjYXBlZE5hbWUgKyAnKT0oLio/KSg/Ojt8JCknLCAnZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuZW5jb2RlZCB2ZXJzaW9uIG9mIGFuIGVuY29kZWQgY29tcG9uZW50IG9mIGEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyIChVUkkpLlxuICAgKlxuICAgKiBAcGFyYW0gZW5jb2RlZFVSSUNvbXBvbmVudCBBIHZhbHVlIHJlcHJlc2VudGluZyBhbiBlbmNvZGVkIFVSSSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB1bmVuY29kZWQgdmVyc2lvbiBvZiBhbiBlbmNvZGVkIGNvbXBvbmVudCBvZiBhIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKS5cbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgc3RhdGljIHNhZmVEZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZFVSSUNvbXBvbmVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJQ29tcG9uZW50KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHByb2JhYmx5IGl0IGlzIG5vdCB1cmkgZW5jb2RlZC4gcmV0dXJuIGFzIGlzXG4gICAgICByZXR1cm4gZW5jb2RlZFVSSUNvbXBvbmVudDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGB0cnVlYCBpZiB7QGxpbmsgRG9jdW1lbnR9IGlzIGFjY2Vzc2libGUsIG90aGVyd2lzZSByZXR1cm4gYGZhbHNlYFxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBDb29raWUgbmFtZVxuICAgKiBAcmV0dXJucyBib29sZWFuIC0gd2hldGhlciBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBleGlzdHNcbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgY2hlY2sobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKTtcbiAgICBjb25zdCByZWdFeHA6IFJlZ0V4cCA9IFNzckNvb2tpZVNlcnZpY2UuZ2V0Q29va2llUmVnRXhwKG5hbWUpO1xuICAgIHJldHVybiByZWdFeHAudGVzdCgodGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA/IHRoaXMuZG9jdW1lbnQuY29va2llICA6IHRoaXMucmVxdWVzdD8uaGVhZGVycy5jb29raWUpID8/ICcnKTtcbiAgfVxuICBpc0RvY3VtZW50SXNBY2Nlc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlIDtcbiAgfVxuIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA/IHRoaXMuZG9jdW1lbnQubG9jYXRpb24uaHJlZiA6IHRoaXMucmVxdWVzdD8udXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb29raWVzIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgQ29va2llIG5hbWVcbiAgICogQHJldHVybnMgcHJvcGVydHkgdmFsdWVcbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2hlY2sobmFtZSkpIHtcbiAgICAgIG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlZ0V4cDogUmVnRXhwID0gU3NyQ29va2llU2VydmljZS5nZXRDb29raWVSZWdFeHAobmFtZSk7XG4gICAgICBjb25zdCByZXN1bHQ6IFJlZ0V4cEV4ZWNBcnJheSB8YW55PSByZWdFeHAuZXhlYygodGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA/IHRoaXMuZG9jdW1lbnQuY29va2llIDogdGhpcy5yZXF1ZXN0Py5oZWFkZXJzLmNvb2tpZSkgPz8gJycpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0WzFdID8gU3NyQ29va2llU2VydmljZS5zYWZlRGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdFsxXSkgOiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGNvb2tpZXMgaW4gSlNPTiBmb3JtYXRcbiAgICpcbiAgICogQHJldHVybnMgYWxsIHRoZSBjb29raWVzIGluIGpzb25cbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgZ2V0QWxsKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IGNvb2tpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBjb25zdCBjb29raWVTdHJpbmc6IGFueSA9IHRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUgPyB0aGlzLmRvY3VtZW50Py5jb29raWUgOiB0aGlzLnJlcXVlc3Q/LmhlYWRlcnMuY29va2llO1xuXG4gICAgaWYgKGNvb2tpZVN0cmluZyAmJiBjb29raWVTdHJpbmcgIT09ICcnKSB7XG4gICAgICBjb29raWVTdHJpbmcuc3BsaXQoJzsnKS5mb3JFYWNoKChjdXJyZW50Q29va2llOmFueSkgPT4ge1xuICAgICAgICBjb25zdCBbY29va2llTmFtZSwgY29va2llVmFsdWVdID0gY3VycmVudENvb2tpZS5zcGxpdCgnPScpO1xuICAgICAgICBjb29raWVzW1NzckNvb2tpZVNlcnZpY2Uuc2FmZURlY29kZVVSSUNvbXBvbmVudChjb29raWVOYW1lLnJlcGxhY2UoL14gLywgJycpKV0gPSBTc3JDb29raWVTZXJ2aWNlLnNhZmVEZWNvZGVVUklDb21wb25lbnQoY29va2llVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvb2tpZXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvb2tpZSBiYXNlZCBvbiBwcm92aWRlZCBpbmZvcm1hdGlvblxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAgICAgQ29va2llIG5hbWVcbiAgICogQHBhcmFtIHZhbHVlICAgIENvb2tpZSB2YWx1ZVxuICAgKiBAcGFyYW0gZXhwaXJlcyAgTnVtYmVyIG9mIGRheXMgdW50aWwgdGhlIGNvb2tpZXMgZXhwaXJlcyBvciBhbiBhY3R1YWwgYERhdGVgXG4gICAqIEBwYXJhbSBwYXRoICAgICBDb29raWUgcGF0aFxuICAgKiBAcGFyYW0gZG9tYWluICAgQ29va2llIGRvbWFpblxuICAgKiBAcGFyYW0gc2VjdXJlICAgU2VjdXJlIGZsYWdcbiAgICogQHBhcmFtIHNhbWVTaXRlIE9XQVNQIHNhbWUgc2l0ZSB0b2tlbiBgTGF4YCwgYE5vbmVgLCBvciBgU3RyaWN0YC4gRGVmYXVsdHMgdG8gYExheGBcbiAgICogQHBhcmFtIHBhcnRpdGlvbmVkIFBhcnRpdGlvbmVkIGZsYWdcbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgc2V0KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGV4cGlyZXM/OiBudW1iZXIgfCBEYXRlLFxuICAgIHBhdGg/OiBzdHJpbmcsXG4gICAgZG9tYWluPzogc3RyaW5nLFxuICAgIHNlY3VyZT86IGJvb2xlYW4sXG4gICAgc2FtZVNpdGU/OiAnTGF4JyB8ICdOb25lJyB8ICdTdHJpY3QnLFxuICAgIHBhcnRpdGlvbmVkPzogYm9vbGVhblxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXQgY29va2llIGJhc2VkIG9uIHByb3ZpZGVkIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIENvb2tpZSdzIHBhcmFtZXRlcnM6XG4gICAqIDxwcmU+XG4gICAqIGV4cGlyZXMgIE51bWJlciBvZiBkYXlzIHVudGlsIHRoZSBjb29raWVzIGV4cGlyZXMgb3IgYW4gYWN0dWFsIGBEYXRlYFxuICAgKiBwYXRoICAgICBDb29raWUgcGF0aFxuICAgKiBkb21haW4gICBDb29raWUgZG9tYWluXG4gICAqIHNlY3VyZSBDb29raWUgc2VjdXJlIGZsYWdcbiAgICogc2FtZVNpdGUgT1dBU1Agc2FtZSBzaXRlIHRva2VuIGBMYXhgLCBgTm9uZWAsIG9yIGBTdHJpY3RgLiBEZWZhdWx0cyB0byBgTGF4YFxuICAgKiA8L3ByZT5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgICAgIENvb2tpZSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSAgICBDb29raWUgdmFsdWVcbiAgICogQHBhcmFtIG9wdGlvbnMgIEJvZHkgd2l0aCBjb29raWUncyBwYXJhbXNcbiAgICpcbiAgICogQGF1dGhvcjogU3RlcGFuIFN1dm9yb3ZcbiAgICogQHNpbmNlOiAxLjAuMFxuICAgKi9cbiAgc2V0KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBleHBpcmVzPzogbnVtYmVyIHwgRGF0ZTtcbiAgICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgICBkb21haW4/OiBzdHJpbmc7XG4gICAgICBzZWN1cmU/OiBib29sZWFuO1xuICAgICAgc2FtZVNpdGU/OiAnTGF4JyB8ICdOb25lJyB8ICdTdHJpY3QnO1xuICAgICAgcGFydGl0aW9uZWQ/OiBib29sZWFuO1xuICAgIH1cbiAgKTogdm9pZDtcblxuICBzZXQoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgZXhwaXJlc09yT3B0aW9ucz86IG51bWJlciB8IERhdGUgfCBhbnksXG4gICAgcGF0aD86IHN0cmluZyxcbiAgICBkb21haW4/OiBzdHJpbmcsXG4gICAgc2VjdXJlPzogYm9vbGVhbixcbiAgICBzYW1lU2l0ZT86ICdMYXgnIHwgJ05vbmUnIHwgJ1N0cmljdCcsXG4gICAgcGFydGl0aW9uZWQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXhwaXJlc09yT3B0aW9ucyA9PT0gJ251bWJlcicgfHwgZXhwaXJlc09yT3B0aW9ucyBpbnN0YW5jZW9mIERhdGUgfHwgcGF0aCB8fCBkb21haW4gfHwgc2VjdXJlIHx8IHNhbWVTaXRlKSB7XG4gICAgICBjb25zdCBvcHRpb25zQm9keSA9IHtcbiAgICAgICAgZXhwaXJlczogZXhwaXJlc09yT3B0aW9ucyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZG9tYWluLFxuICAgICAgICBzZWN1cmUsXG4gICAgICAgIHNhbWVTaXRlOiBzYW1lU2l0ZSA/IHNhbWVTaXRlIDogJ0xheCcsXG4gICAgICAgIHBhcnRpdGlvbmVkLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZXQobmFtZSwgdmFsdWUsIG9wdGlvbnNCb2R5KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY29va2llU3RyaW5nOiBzdHJpbmcgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpICsgJzsnO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IGV4cGlyZXNPck9wdGlvbnMgPyBleHBpcmVzT3JPcHRpb25zIDoge307XG5cbiAgICBpZiAob3B0aW9ucy5leHBpcmVzKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuZXhwaXJlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgZGF0ZUV4cGlyZXM6IERhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArIG9wdGlvbnMuZXhwaXJlcyAqIDEwMDAgKiA2MCAqIDYwICogMjQpO1xuXG4gICAgICAgIGNvb2tpZVN0cmluZyArPSAnZXhwaXJlcz0nICsgZGF0ZUV4cGlyZXMudG9VVENTdHJpbmcoKSArICc7JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvb2tpZVN0cmluZyArPSAnZXhwaXJlcz0nICsgb3B0aW9ucy5leHBpcmVzLnRvVVRDU3RyaW5nKCkgKyAnOyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGF0aCkge1xuICAgICAgY29va2llU3RyaW5nICs9ICdwYXRoPScgKyBvcHRpb25zLnBhdGggKyAnOyc7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZG9tYWluKSB7XG4gICAgICBjb29raWVTdHJpbmcgKz0gJ2RvbWFpbj0nICsgb3B0aW9ucy5kb21haW4gKyAnOyc7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2VjdXJlID09PSBmYWxzZSAmJiBvcHRpb25zLnNhbWVTaXRlID09PSAnTm9uZScpIHtcbiAgICAgIG9wdGlvbnMuc2VjdXJlID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtuZ3gtY29va2llLXNlcnZpY2VdIENvb2tpZSAke25hbWV9IHdhcyBmb3JjZWQgd2l0aCBzZWN1cmUgZmxhZyBiZWNhdXNlIHNhbWVTaXRlPU5vbmUuYCArXG4gICAgICAgICAgYE1vcmUgZGV0YWlscyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdGV2ZXJtZWlzdGVyL25neC1jb29raWUtc2VydmljZS9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTU5NzcyMDEzMGBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNlY3VyZSkge1xuICAgICAgY29va2llU3RyaW5nICs9ICdzZWN1cmU7JztcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuc2FtZVNpdGUpIHtcbiAgICAgIG9wdGlvbnMuc2FtZVNpdGUgPSAnTGF4JztcbiAgICB9XG5cbiAgICBjb29raWVTdHJpbmcgKz0gJ3NhbWVTaXRlPScgKyBvcHRpb25zLnNhbWVTaXRlICsgJzsnO1xuXG4gICAgaWYgKG9wdGlvbnMucGFydGl0aW9uZWQpIHtcbiAgICAgIGNvb2tpZVN0cmluZyArPSAnUGFydGl0aW9uZWQ7JztcbiAgICB9XG5cbiAgICB0aGlzLmRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZVN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgY29va2llIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgICBDb29raWUgbmFtZVxuICAgKiBAcGFyYW0gcGF0aCAgIENvb2tpZSBwYXRoXG4gICAqIEBwYXJhbSBkb21haW4gQ29va2llIGRvbWFpblxuICAgKiBAcGFyYW0gc2VjdXJlIENvb2tpZSBzZWN1cmUgZmxhZ1xuICAgKiBAcGFyYW0gc2FtZVNpdGUgQ29va2llIHNhbWVTaXRlIGZsYWcgLSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvU2V0LUNvb2tpZS9TYW1lU2l0ZVxuICAgKlxuICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxuICAgKiBAc2luY2U6IDEuMC4wXG4gICAqL1xuICBkZWxldGUobmFtZTogc3RyaW5nLCBwYXRoPzogc3RyaW5nLCBkb21haW4/OiBzdHJpbmcsIHNlY3VyZT86IGJvb2xlYW4sIHNhbWVTaXRlOiAnTGF4JyB8ICdOb25lJyB8ICdTdHJpY3QnID0gJ0xheCcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZSgnVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQnKTtcbiAgICB0aGlzLnNldChuYW1lLCAnJywgeyBleHBpcmVzOiBleHBpcmVzRGF0ZSwgcGF0aCwgZG9tYWluLCBzZWN1cmUsIHNhbWVTaXRlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbGwgY29va2llc1xuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAgIENvb2tpZSBwYXRoXG4gICAqIEBwYXJhbSBkb21haW4gQ29va2llIGRvbWFpblxuICAgKiBAcGFyYW0gc2VjdXJlIElzIHRoZSBDb29raWUgc2VjdXJlXG4gICAqIEBwYXJhbSBzYW1lU2l0ZSBJcyB0aGUgY29va2llIHNhbWUgc2l0ZVxuICAgKlxuICAgKiBAYXV0aG9yOiBTdGVwYW4gU3V2b3JvdlxuICAgKiBAc2luY2U6IDEuMC4wXG4gICAqL1xuICBkZWxldGVBbGwocGF0aD86IHN0cmluZywgZG9tYWluPzogc3RyaW5nLCBzZWN1cmU/OiBib29sZWFuLCBzYW1lU2l0ZTogJ0xheCcgfCAnTm9uZScgfCAnU3RyaWN0JyA9ICdMYXgnKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29va2llczogYW55ID0gdGhpcy5nZXRBbGwoKTtcblxuICAgIGZvciAoY29uc3QgY29va2llTmFtZSBpbiBjb29raWVzKSB7XG4gICAgICBpZiAoY29va2llcy5oYXNPd25Qcm9wZXJ0eShjb29raWVOYW1lKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZShjb29raWVOYW1lLCBwYXRoLCBkb21haW4sIHNlY3VyZSwgc2FtZVNpdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport Swal from 'sweetalert2';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngx-translate/core\";\nexport class SwalService {\n translate;\n defaultClass = {\n container: 'swal2-container'\n };\n constructor(translate) {\n this.translate = translate;\n }\n t(key) {\n return this.translate.instant(key);\n }\n /** رسالة تأكيد */\n confirm(title = this.t('Confirm.Title'), text = this.t('Confirm.Text'), confirmButtonText = this.t('Confirm.Yes'), cancelButtonText = this.t('Confirm.Cancel')) {\n return Swal.fire({\n icon: 'warning',\n title,\n text,\n showCancelButton: true,\n confirmButtonText,\n cancelButtonText,\n customClass: this.defaultClass\n });\n }\n /** رسالة نجاح */\n success(title, text, timer = 2000) {\n return Swal.fire({\n icon: 'success',\n title: this.t(title),\n text: text ? this.t(text) : undefined,\n timer,\n showConfirmButton: false,\n customClass: this.defaultClass\n });\n }\n /** رسالة خطأ */\n error(title, text, footer) {\n return Swal.fire({\n icon: 'error',\n title: this.t(title),\n text: text ? this.t(text) : undefined,\n footer: footer ? this.t(footer) : undefined,\n customClass: this.defaultClass\n });\n }\n /** رسالة معلومات */\n info(title, text) {\n return Swal.fire({\n icon: 'info',\n title: this.t(title),\n text: text ? this.t(text) : undefined,\n customClass: this.defaultClass\n });\n }\n /** أي خيارات مخصصة */\n alert(options) {\n const translated = {\n ...options,\n title: options.title ? this.t(options.title) : undefined,\n text: options.text ? this.t(options.text) : undefined,\n footer: options.footer ? this.t(options.footer) : undefined,\n customClass: this.defaultClass\n };\n return Swal.fire(translated);\n }\n /** Toast */\n toast(title, icon = 'info', position = 'top-end', timer = 3000) {\n const Toast = Swal.mixin({\n toast: true,\n position,\n timer,\n showConfirmButton: false,\n customClass: this.defaultClass\n });\n Toast.fire({ icon, title: this.t(title) });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SwalService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SwalService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SwalService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.TranslateService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dhbFNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9zZXJ2aWNlcy9zcmMvbGliL1N3YWxTZXJ2aWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLElBSU4sTUFBTSxhQUFhLENBQUM7OztBQUdyQixNQUFNLE9BQU8sV0FBVztJQUtGO0lBSlosWUFBWSxHQUFHO1FBQ3JCLFNBQVMsRUFBRSxpQkFBaUI7S0FDN0IsQ0FBQztJQUVGLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUcsQ0FBQztJQUUzQyxDQUFDLENBQUMsR0FBVztRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUNMLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUMvQixJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFDN0IsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFDekMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUUzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUs7WUFDTCxJQUFJO1lBQ0osZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJB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O0lBQzdDLENBQUM7dUdBdEdVLFdBQVc7MkdBQVgsV0FBVyxjQURFLE1BQU07OzJGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCBTd2FsLCB7XG4gIFN3ZWV0QWxlcnRPcHRpb25zLFxuICBTd2VldEFsZXJ0UmVzdWx0LFxuICBTd2VldEFsZXJ0SWNvblxufSBmcm9tICdzd2VldGFsZXJ0Mic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3dhbFNlcnZpY2Uge1xuICBwcml2YXRlIGRlZmF1bHRDbGFzcyA9IHtcbiAgICBjb250YWluZXI6ICdzd2FsMi1jb250YWluZXInXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgcHJpdmF0ZSB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXkpO1xuICB9XG5cbiAgLyoqINix2LPYp9mE2Kkg2KrYo9mD2YrYryAqL1xuICBjb25maXJtKFxuICAgIHRpdGxlID0gdGhpcy50KCdDb25maXJtLlRpdGxlJyksXG4gICAgdGV4dCA9IHRoaXMudCgnQ29uZmlybS5UZXh0JyksXG4gICAgY29uZmlybUJ1dHRvblRleHQgPSB0aGlzLnQoJ0NvbmZpcm0uWWVzJyksXG4gICAgY2FuY2VsQnV0dG9uVGV4dCA9IHRoaXMudCgnQ29uZmlybS5DYW5jZWwnKVxuICApOiBQcm9taXNlPFN3ZWV0QWxlcnRSZXN1bHQ+IHtcbiAgICByZXR1cm4gU3dhbC5maXJlKHtcbiAgICAgIGljb246ICd3YXJuaW5nJyxcbiAgICAgIHRpdGxlLFxuICAgICAgdGV4dCxcbiAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICBjb25maXJtQnV0dG9uVGV4dCxcbiAgICAgIGNhbmNlbEJ1dHRvblRleHQsXG4gICAgICBjdXN0b21DbGFzczogdGhpcy5kZWZhdWx0Q2xhc3NcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiDYsdiz2KfZhNipINmG2KzYp9itICovXG4gIHN1Y2Nlc3MoXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0ZXh0Pzogc3RyaW5nLFxuICAgIHRpbWVyID0gMjAwMFxuICApOiBQcm9taXNlPFN3ZWV0QWxlcnRSZXN1bHQ+IHtcbiAgICByZXR1cm4gU3dhbC5maXJlKHtcbiAgICAgIGljb246ICdzdWNjZXNzJyxcbiAgICAgIHRpdGxlOiB0aGlzLnQodGl0bGUpLFxuICAgICAgdGV4dDogdGV4dCA/IHRoaXMudCh0ZXh0KSA6IHVuZGVmaW5lZCxcbiAgICAgIHRpbWVyLFxuICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuZGVmYXVsdENsYXNzXG4gICAgfSk7XG4gIH1cblxuICAvKiog2LHYs9in2YTYqSDYrti32KMgKi9cbiAgZXJyb3IoXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0ZXh0Pzogc3RyaW5nLFxuICAgIGZvb3Rlcj86IHN0cmluZ1xuICApOiBQcm9taXNlPFN3ZWV0QWxlcnRSZXN1bHQ+IHtcbiAgICByZXR1cm4gU3dhbC5maXJlKHtcbiAgICAgIGljb246ICdlcnJvcicsXG4gICAgICB0aXRsZTogdGhpcy50KHRpdGxlKSxcbiAgICAgIHRleHQ6IHRleHQgPyB0aGlzLnQodGV4dCkgOiB1bmRlZmluZWQsXG4gICAgICBmb290ZXI6IGZvb3RlciA/IHRoaXMudChmb290ZXIpIDogdW5kZWZpbmVkLFxuICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuZGVmYXVsdENsYXNzXG4gICAgfSk7XG4gIH1cblxuICAvKiog2LHYs9in2YTYqSDZhdi52YTZiNmF2KfYqiAqL1xuICBpbmZvKFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdGV4dD86IHN0cmluZ1xuICApOiBQcm9taXNlPFN3ZWV0QWxlcnRSZXN1bHQ+IHtcbiAgICByZXR1cm4gU3dhbC5maXJlKHtcbiAgICAgIGljb246ICdpbmZvJyxcbiAgICAgIHRpdGxlOiB0aGlzLnQodGl0bGUpLFxuICAgICAgdGV4dDogdGV4dCA/IHRoaXMudCh0ZXh0KSA6IHVuZGVmaW5lZCxcbiAgICAgIGN1c3RvbUNsYXNzOiB0aGlzLmRlZmF1bHRDbGFzc1xuICAgIH0pO1xuICB9XG5cbiAgLyoqINij2Yog2K7Zitin2LHYp9iqINmF2K7Ytdi12KkgKi9cbiAgYWxlcnQoXG4gICAgb3B0aW9uczogU3dlZXRBbGVydE9wdGlvbnNcbiAgKTogUHJvbWlzZTxTd2VldEFsZXJ0UmVzdWx0PiB7XG4gICAgY29uc3QgdHJhbnNsYXRlZDogU3dlZXRBbGVydE9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdGl0bGU6IG9wdGlvbnMudGl0bGUgPyB0aGlzLnQob3B0aW9ucy50aXRsZSBhcyBzdHJpbmcpIDogdW5kZWZpbmVkLFxuICAgICAgdGV4dDogb3B0aW9ucy50ZXh0ID8gdGhpcy50KG9wdGlvbnMudGV4dCBhcyBzdHJpbmcpIDogdW5kZWZpbmVkLFxuICAgICAgZm9vdGVyOiBvcHRpb25zLmZvb3RlciA/IHRoaXMudChvcHRpb25zLmZvb3RlciBhcyBzdHJpbmcpIDogdW5kZWZpbmVkLFxuICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuZGVmYXVsdENsYXNzXG4gICAgfTtcbiAgICByZXR1cm4gU3dhbC5maXJlKHRyYW5zbGF0ZWQpO1xuICB9XG5cbiAgLyoqIFRvYXN0ICovXG4gIHRvYXN0KFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgaWNvbjogU3dlZXRBbGVydEljb24gPSAnaW5mbycsXG4gICAgcG9zaXRpb246IFN3ZWV0QWxlcnRPcHRpb25zWydwb3NpdGlvbiddID0gJ3RvcC1lbmQnLFxuICAgIHRpbWVyID0gMzAwMFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBUb2FzdCA9IFN3YWwubWl4aW4oe1xuICAgICAgdG9hc3Q6IHRydWUsXG4gICAgICBwb3NpdGlvbixcbiAgICAgIHRpbWVyLFxuICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuZGVmYXVsdENsYXNzXG4gICAgfSk7XG4gICAgVG9hc3QuZmlyZSh7IGljb24sIHRpdGxlOiB0aGlzLnQodGl0bGUpIH0pO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class PermissionsService {\n _permissions$ = new BehaviorSubject(new Set());\n // Load permissions (e.g., from API or token claims)\n setPermissions(permissions) {\n this._permissions$.next(new Set(permissions));\n }\n getPermissions() {\n return Array.from(this._permissions$.value);\n }\n // Synchronous check\n isGranted(permissionName) {\n return this._permissions$.value.has(permissionName);\n }\n // Async check (optional if needed for guards or effects)\n isGrantedAsync(permissionName) {\n return new Promise(resolve => {\n resolve(this.isGranted(permissionName));\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: PermissionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: PermissionsService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: PermissionsService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9zZXJ2aWNlcy9zcmMvbGliL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUd2QyxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFcEUsb0RBQW9EO0lBQ3BELGNBQWMsQ0FBQyxXQUFxQjtRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixTQUFTLENBQUMsY0FBc0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELHlEQUF5RDtJQUN6RCxjQUFjLENBQUMsY0FBc0I7UUFDbkMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0F0QlUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9wZXJtaXNzaW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNldDxzdHJpbmc+PihuZXcgU2V0KCkpO1xyXG5cclxuICAvLyBMb2FkIHBlcm1pc3Npb25zIChlLmcuLCBmcm9tIEFQSSBvciB0b2tlbiBjbGFpbXMpXHJcbiAgc2V0UGVybWlzc2lvbnMocGVybWlzc2lvbnM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl9wZXJtaXNzaW9ucyQubmV4dChuZXcgU2V0KHBlcm1pc3Npb25zKSk7XHJcbiAgfVxyXG5cclxuICBnZXRQZXJtaXNzaW9ucygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9wZXJtaXNzaW9ucyQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gU3luY2hyb25vdXMgY2hlY2tcclxuICBpc0dyYW50ZWQocGVybWlzc2lvbk5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zJC52YWx1ZS5oYXMocGVybWlzc2lvbk5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gQXN5bmMgY2hlY2sgKG9wdGlvbmFsIGlmIG5lZWRlZCBmb3IgZ3VhcmRzIG9yIGVmZmVjdHMpXHJcbiAgaXNHcmFudGVkQXN5bmMocGVybWlzc2lvbk5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICByZXNvbHZlKHRoaXMuaXNHcmFudGVkKHBlcm1pc3Npb25OYW1lKSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19","import { inject, Injectable } from '@angular/core';\nimport { Router, RouterStateSnapshot } from '@angular/router';\nimport { PermissionsService } from './permissions.service';\nimport { DEFAULT_REDIRECT_KEY } from '@elite.framework/ng.core/models';\nimport { isFunction, isPlainObject, transformStringToArray } from '@elite.framework/ng.core/utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./permissions.service\";\nimport * as i2 from \"@angular/router\";\nexport const ngxPermissionsGuard = (route, state) => {\n const guard = inject(NgxPermissionsGuard);\n if (state instanceof RouterStateSnapshot) {\n return guard.hasPermissions(route, state);\n }\n return guard.hasPermissions(route);\n};\nexport class NgxPermissionsGuard {\n permissions;\n router;\n constructor(permissions, router) {\n this.permissions = permissions;\n this.router = router;\n }\n canActivate(route, state) {\n return this.hasPermissions(route, state);\n }\n canActivateChild(route, state) {\n return this.hasPermissions(route, state);\n }\n canLoad(route) {\n return this.hasPermissions(route);\n }\n canMatch(route) {\n return this.hasPermissions(route);\n }\n async hasPermissions(route, state) {\n const data = route.data?.['permissions'];\n const only = [];\n const except = [];\n if (data?.only) {\n if (isFunction(data.only)) {\n const result = data.only(route, state);\n only.push(...transformStringToArray(result));\n }\n else {\n only.push(...transformStringToArray(data.only));\n }\n }\n if (data?.except) {\n if (isFunction(data.except)) {\n const result = data.except(route, state);\n except.push(...transformStringToArray(result));\n }\n else {\n except.push(...transformStringToArray(data.except));\n }\n }\n const permissions = {\n only,\n except,\n redirectTo: data?.redirectTo\n };\n // --- rest of the guard logic ---\n // EXCEPT check\n if (permissions.except?.length) {\n for (const perm of permissions.except) {\n if (await this.permissions.isGrantedAsync(perm)) {\n this.handleRedirect(permissions, perm, route, state);\n return false;\n }\n }\n }\n // ONLY check\n if (permissions.only?.length) {\n for (const perm of permissions.only) {\n if (await this.permissions.isGrantedAsync(perm)) {\n return true;\n }\n }\n this.handleRedirect(permissions, permissions.only[0], route, state);\n return false;\n }\n return true;\n }\n handleRedirect(permissions, failedPermission, route, state) {\n const redirectTo = permissions.redirectTo;\n if (!redirectTo)\n return;\n // If redirectTo is a function\n const resolvedRedirect = isFunction(redirectTo)\n ? redirectTo(failedPermission, route, state)\n : redirectTo;\n if (typeof resolvedRedirect === 'string') {\n this.router.navigate([resolvedRedirect]); // wrap string in array\n }\n else if (Array.isArray(resolvedRedirect)) {\n this.router.navigate(resolvedRedirect); // array is fine\n }\n else if (isPlainObject(resolvedRedirect)) {\n // Object: check for failedPermission key first\n const target = resolvedRedirect[failedPermission] ?? resolvedRedirect[DEFAULT_REDIRECT_KEY];\n if (target) {\n if (typeof target === 'string') {\n this.router.navigate([target]);\n }\n else if (Array.isArray(target)) {\n this.router.navigate(target);\n }\n else if (isFunction(target)) {\n this.router.navigate([target(failedPermission, route, state)]);\n }\n }\n }\n else {\n console.warn('Unknown redirect type', resolvedRedirect);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: NgxPermissionsGuard, deps: [{ token: i1.PermissionsService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: NgxPermissionsGuard, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: NgxPermissionsGuard, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.PermissionsService }, { type: i2.Router }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9zZXJ2aWNlcy9zcmMvbGliL3Blcm1pc3Npb25zLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQU1MLE1BQU0sRUFDTixtQkFBbUIsRUFFcEIsTUFBTSxpQkFBaUIsQ0FBQztBQUl6QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQXdFLE1BQU0saUNBQWlDLENBQUM7QUFDN0ksT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQVFuRyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBb0QsQ0FDbEYsS0FBcUMsRUFDckMsS0FBeUMsRUFDekMsRUFBRTtJQUNGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxZQUFZLG1CQUFtQixFQUFFLENBQUM7UUFDekMsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUdGLE1BQU0sT0FBTyxtQkFBbUI7SUFFcEI7SUFDQTtJQUZWLFlBQ1UsV0FBK0IsRUFDL0IsTUFBYztRQURkLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7SUFFSixXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxPQUFPLElBQUks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akMsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9CLENBQUM7cUJBQU0sSUFBSSxVQUFVLENBQWUsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQzt1R0FySFksbUJBQW1COzJHQUFuQixtQkFBbUIsY0FETixNQUFNOzsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgQ2FuQWN0aXZhdGVDaGlsZEZuLFxyXG4gIENhbkFjdGl2YXRlRm4sXHJcbiAgQ2FuTWF0Y2hGbixcclxuICBSb3V0ZSxcclxuICBSb3V0ZXIsXHJcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICBVcmxTZWdtZW50XHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuXHJcbmltcG9ydCB7IFBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vcGVybWlzc2lvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IERFRkFVTFRfUkVESVJFQ1RfS0VZLCBFeGNlcHRGbiwgTmd4UGVybWlzc2lvbnNSb3V0ZXJEYXRhLCBPbmx5Rm4sIFJlZGlyZWN0VG8sIFJlZGlyZWN0VG9GbiB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc1BsYWluT2JqZWN0LCB0cmFuc2Zvcm1TdHJpbmdUb0FycmF5IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL3V0aWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4UGVybWlzc2lvbnNEYXRhIHtcclxuICBvbmx5Pzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgZXhjZXB0Pzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgcmVkaXJlY3RUbz86IFJlZGlyZWN0VG8gfCBSZWRpcmVjdFRvRm4gfCBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBuZ3hQZXJtaXNzaW9uc0d1YXJkOiBDYW5BY3RpdmF0ZUZuIHwgQ2FuQWN0aXZhdGVDaGlsZEZuIHwgQ2FuTWF0Y2hGbiA9IChcclxuICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IFJvdXRlLFxyXG4gIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90IHwgVXJsU2VnbWVudFtdXHJcbikgPT4ge1xyXG4gIGNvbnN0IGd1YXJkID0gaW5qZWN0KE5neFBlcm1pc3Npb25zR3VhcmQpO1xyXG4gIGlmIChzdGF0ZSBpbnN0YW5jZW9mIFJvdXRlclN0YXRlU25hcHNob3QpIHtcclxuICAgIHJldHVybiBndWFyZC5oYXNQZXJtaXNzaW9ucyhyb3V0ZSwgc3RhdGUpO1xyXG4gIH1cclxuICByZXR1cm4gZ3VhcmQuaGFzUGVybWlzc2lvbnMocm91dGUpO1xyXG59O1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5neFBlcm1pc3Npb25zR3VhcmQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge31cclxuXHJcbiAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYXNQZXJtaXNzaW9ucyhyb3V0ZSwgc3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgY2FuQWN0aXZhdGVDaGlsZChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcclxuICAgIHJldHVybiB0aGlzLmhhc1Blcm1pc3Npb25zKHJvdXRlLCBzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBjYW5Mb2FkKHJvdXRlOiBSb3V0ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFzUGVybWlzc2lvbnMocm91dGUpO1xyXG4gIH1cclxuXHJcbiAgY2FuTWF0Y2gocm91dGU6IFJvdXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYXNQZXJtaXNzaW9ucyhyb3V0ZSk7XHJcbiAgfVxyXG5cclxuYXN5bmMgaGFzUGVybWlzc2lvbnMocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBSb3V0ZSwgc3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgY29uc3QgZGF0YSA9IHJvdXRlLmRhdGE/LlsncGVybWlzc2lvbnMnXSBhcyBOZ3hQZXJtaXNzaW9uc1JvdXRlckRhdGEgfCB1bmRlZmluZWQ7XHJcbiAgY29uc3Qgb25seTogc3RyaW5nW10gPSBbXTtcclxuICBjb25zdCBleGNlcHQ6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGlmIChkYXRhPy5vbmx5KSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbjxPbmx5Rm4+KGRhdGEub25seSkpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gZGF0YS5vbmx5KHJvdXRlLCBzdGF0ZSk7XHJcbiAgICAgIG9ubHkucHVzaCguLi50cmFuc2Zvcm1TdHJpbmdUb0FycmF5KHJlc3VsdCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb25seS5wdXNoKC4uLnRyYW5zZm9ybVN0cmluZ1RvQXJyYXkoZGF0YS5vbmx5KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAoZGF0YT8uZXhjZXB0KSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbjxFeGNlcHRGbj4oZGF0YS5leGNlcHQpKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRhdGEuZXhjZXB0KHJvdXRlLCBzdGF0ZSk7XHJcbiAgICAgIGV4Y2VwdC5wdXNoKC4uLnRyYW5zZm9ybVN0cmluZ1RvQXJyYXkocmVzdWx0KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleGNlcHQucHVzaCguLi50cmFuc2Zvcm1TdHJpbmdUb0FycmF5KGRhdGEuZXhjZXB0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBwZXJtaXNzaW9uczogTmd4UGVybWlzc2lvbnNEYXRhID0ge1xyXG4gICAgb25seSxcclxuICAgIGV4Y2VwdCxcclxuICAgIHJlZGlyZWN0VG86IGRhdGE/LnJlZGlyZWN0VG9cclxuICB9O1xyXG5cclxuICAvLyAtLS0gcmVzdCBvZiB0aGUgZ3VhcmQgbG9naWMgLS0tXHJcbiAgLy8gRVhDRVBUIGNoZWNrXHJcbiAgaWYgKHBlcm1pc3Npb25zLmV4Y2VwdD8ubGVuZ3RoKSB7XHJcbiAgICBmb3IgKGNvbnN0IHBlcm0gb2YgcGVybWlzc2lvbnMuZXhjZXB0KSB7XHJcbiAgICAgIGlmIChhd2FpdCB0aGlzLnBlcm1pc3Npb25zLmlzR3JhbnRlZEFzeW5jKHBlcm0pKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVSZWRpcmVjdChwZXJtaXNzaW9ucywgcGVybSwgcm91dGUsIHN0YXRlKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE9OTFkgY2hlY2tcclxuICBpZiAocGVybWlzc2lvbnMub25seT8ubGVuZ3RoKSB7XHJcbiAgICBmb3IgKGNvbnN0IHBlcm0gb2YgcGVybWlzc2lvbnMub25seSkge1xyXG4gICAgICBpZiAoYXdhaXQgdGhpcy5wZXJtaXNzaW9ucy5pc0dyYW50ZWRBc3luYyhwZXJtKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmhhbmRsZVJlZGlyZWN0KHBlcm1pc3Npb25zLCBwZXJtaXNzaW9ucy5vbmx5WzBdLCByb3V0ZSwgc3RhdGUpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcblxyXG5wcml2YXRlIGhhbmRsZVJlZGlyZWN0KFxyXG4gIHBlcm1pc3Npb25zOiBOZ3hQZXJtaXNzaW9uc0RhdGEsXHJcbiAgZmFpbGVkUGVybWlzc2lvbjogc3RyaW5nLFxyXG4gIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgUm91dGUsXHJcbiAgc3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcbikge1xyXG4gIGNvbnN0IHJlZGlyZWN0VG8gPSBwZXJtaXNzaW9ucy5yZWRpcmVjdFRvO1xyXG5cclxuICBpZiAoIXJlZGlyZWN0VG8pIHJldHVybjtcclxuXHJcbiAgLy8gSWYgcmVkaXJlY3RUbyBpcyBhIGZ1bmN0aW9uXHJcbiAgY29uc3QgcmVzb2x2ZWRSZWRpcmVjdCA9XHJcbiAgICBpc0Z1bmN0aW9uPFJlZGlyZWN0VG9Gbj4ocmVkaXJlY3RUbylcclxuICAgICAgPyByZWRpcmVjdFRvKGZhaWxlZFBlcm1pc3Npb24sIHJvdXRlLCBzdGF0ZSlcclxuICAgICAgOiByZWRpcmVjdFRvO1xyXG5cclxuICBpZiAodHlwZW9mIHJlc29sdmVkUmVkaXJlY3QgPT09ICdzdHJpbmcnKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVzb2x2ZWRSZWRpcmVjdF0pOyAvLyB3cmFwIHN0cmluZyBpbiBhcnJheVxyXG4gIH1cclxuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc29sdmVkUmVkaXJlY3QpKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyZXNvbHZlZFJlZGlyZWN0KTsgLy8gYXJyYXkgaXMgZmluZVxyXG4gIH1cclxuICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHJlc29sdmVkUmVkaXJlY3QpKSB7XHJcbiAgICAvLyBPYmplY3Q6IGNoZWNrIGZvciBmYWlsZWRQZXJtaXNzaW9uIGtleSBmaXJzdFxyXG4gICAgY29uc3QgdGFyZ2V0ID1cclxuICAgICAgcmVzb2x2ZWRSZWRpcmVjdFtmYWlsZWRQZXJtaXNzaW9uXSA/PyByZXNvbHZlZFJlZGlyZWN0W0RFRkFVTFRfUkVESVJFQ1RfS0VZXTtcclxuXHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0YXJnZXRdKTtcclxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0YXJnZXQpO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb248UmVkaXJlY3RUb0ZuPih0YXJnZXQpKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RhcmdldChmYWlsZWRQZXJtaXNzaW9uLCByb3V0ZSwgc3RhdGUpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gcmVkaXJlY3QgdHlwZScsIHJlc29sdmVkUmVkaXJlY3QpO1xyXG4gIH1cclxufVxyXG5cclxufVxyXG4iXX0=","// logger.interface.ts\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"INFO\"] = 1] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 2] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 3] = \"ERROR\";\n LogLevel[LogLevel[\"OFF\"] = 4] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9zZXJ2aWNlcy9zcmMvbGliL2xvZ2dlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLE1BQU0sQ0FBTixJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIseUNBQVMsQ0FBQTtJQUNULHVDQUFRLENBQUE7SUFDUix1Q0FBUSxDQUFBO0lBQ1IseUNBQVMsQ0FBQTtJQUNULHFDQUFPLENBQUE7QUFDVCxDQUFDLEVBTlcsUUFBUSxLQUFSLFFBQVEsUUFNbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBsb2dnZXIuaW50ZXJmYWNlLnRzXHJcbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcclxuICBERUJVRyA9IDAsXHJcbiAgSU5GTyA9IDEsXHJcbiAgV0FSTiA9IDIsXHJcbiAgRVJST1IgPSAzLFxyXG4gIE9GRiA9IDRcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2VyU2VydmljZSB7XHJcbiAgZGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQ7XHJcbiAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZDtcclxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkO1xyXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkO1xyXG4gIHNldExvZ0xldmVsKGxldmVsOiBMb2dMZXZlbCk6IHZvaWQ7XHJcbn1cclxuIl19","// logger.service.ts\nimport { Injectable, Inject, Optional } from '@angular/core';\nimport { LogLevel } from './logger.interface';\nimport { ENVIRONMENT } from '@elite.framework/ng.core/tokens';\nimport * as i0 from \"@angular/core\";\n// Remove the separate LoggerConfig interface since we're using EnvironmentConfig\n// and extend EnvironmentConfig to include logger-specific properties\nexport class LoggerService {\n environment;\n level = LogLevel.DEBUG;\n enableConsole = true;\n prefix = '[App]';\n timestamp = true;\n constructor(environment) {\n this.environment = environment;\n // Use environment configuration if provided\n if (this.environment) {\n this.configureFromEnvironment(this.environment);\n }\n // Fallback: In production, default to WARN level\n if (typeof window !== 'undefined' && window.location.hostname !== 'localhost') {\n this.level = LogLevel.WARN;\n this.enableConsole = false;\n }\n }\n configureFromEnvironment(env) {\n // Map string log levels from environment to LogLevel enum\n this.level = this.mapLogLevel(env.logLevel);\n // Use production flag to determine console logging\n this.enableConsole = !env.production;\n // Set prefix from environment if available\n this.prefix = `[${env['appName'] || 'App'}]`;\n // Enable timestamp in development, disable in production for performance\n this.timestamp = !env.production;\n }\n mapLogLevel(level) {\n switch (level) {\n case 'debug': return LogLevel.DEBUG;\n case 'info': return LogLevel.INFO;\n case 'warn': return LogLevel.WARN;\n case 'error': return LogLevel.ERROR;\n case 'off': return LogLevel.OFF;\n default: return LogLevel.WARN;\n }\n }\n debug(message, ...args) {\n if (this.shouldLog(LogLevel.DEBUG)) {\n this.log('DEBUG', message, args, 'color: blue');\n }\n }\n info(message, ...args) {\n if (this.shouldLog(LogLevel.INFO)) {\n this.log('INFO', message, args, 'color: green');\n }\n }\n warn(message, ...args) {\n if (this.shouldLog(LogLevel.WARN)) {\n this.log('WARN', message, args, 'color: orange');\n }\n }\n error(message, ...args) {\n if (this.shouldLog(LogLevel.ERROR)) {\n this.log('ERROR', message, args, 'color: red');\n // Send to external services only for errors in production\n if (this.environment?.production) {\n this.sendToExternalService('ERROR', message, args);\n }\n }\n }\n setLogLevel(level) {\n this.level = level;\n }\n shouldLog(level) {\n return level >= this.level && this.enableConsole;\n }\n log(level, message, args, style) {\n if (!this.enableConsole)\n return;\n const timestamp = this.timestamp ? new Date().toISOString() : '';\n const formattedPrefix = this.prefix ? `${this.prefix}` : '';\n const logMessage = `${timestamp} ${formattedPrefix} [${level}] ${message}`;\n if (args.length > 0) {\n console.log(`%c${logMessage}`, style, ...args);\n }\n else {\n console.log(`%c${logMessage}`, style);\n }\n }\n sendToExternalService(level, message, args) {\n // Integrate with external logging services from environment\n try {\n const sentryUrl = this.environment?.externalServices?.['sentry'];\n const logRocketUrl = this.environment?.externalServices?.['logRocket'];\n // Example: Send to configured external services\n if (sentryUrl) {\n // this.sendToSentry(level, message, args);\n }\n if (logRocketUrl) {\n // this.sendToLogRocket(level, message, args);\n }\n // Send to backend if apiUrl is available\n if (this.environment?.apiUrl) {\n // this.http.post(`${this.environment.apiUrl}/logs`, {\n // level, message, args, timestamp: new Date()\n // }).subscribe();\n }\n }\n catch (error) {\n // Don't use this.error here to avoid infinite loops\n console.error('Failed to send log to external service:', error);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: LoggerService, deps: [{ token: ENVIRONMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: LoggerService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: LoggerService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ENVIRONMENT]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLmNvcmUvc2VydmljZXMvc3JjL2xpYi9sb2dnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBa0IsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFFakYsaUZBQWlGO0FBQ2pGLHFFQUFxRTtBQUtyRSxNQUFNLE9BQU8sYUFBYTtJQU02QjtJQUw3QyxLQUFLLEdBQWEsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUNqQyxhQUFhLEdBQVksSUFBSSxDQUFDO0lBQzlCLE1BQU0sR0FBVyxPQUFPLENBQUM7SUFDekIsU0FBUyxHQUFZLElBQUksQ0FBQztJQUVsQyxZQUFxRCxXQUErQjtRQUEvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDbEYsNENBQTRDO1FBQzVDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELGlEQUFpRDtRQUNqRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM5RSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxHQUFzQjtRQUNyRCwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLEtBQUss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QkFBa0I7WUFDcEIsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2Ysb0RBQW9EO1lBQ3BELE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7dUdBekhVLGFBQWEsa0JBTVEsV0FBVzsyR0FOaEMsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFPYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvLyBsb2dnZXIuc2VydmljZS50c1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElMb2dnZXJTZXJ2aWNlLCBMb2dMZXZlbCB9IGZyb20gJy4vbG9nZ2VyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVOVklST05NRU5ULCBFbnZpcm9ubWVudENvbmZpZyB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS90b2tlbnMnO1xyXG5cclxuLy8gUmVtb3ZlIHRoZSBzZXBhcmF0ZSBMb2dnZXJDb25maWcgaW50ZXJmYWNlIHNpbmNlIHdlJ3JlIHVzaW5nIEVudmlyb25tZW50Q29uZmlnXHJcbi8vIGFuZCBleHRlbmQgRW52aXJvbm1lbnRDb25maWcgdG8gaW5jbHVkZSBsb2dnZXItc3BlY2lmaWMgcHJvcGVydGllc1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9nZ2VyU2VydmljZSBpbXBsZW1lbnRzIElMb2dnZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIGxldmVsOiBMb2dMZXZlbCA9IExvZ0xldmVsLkRFQlVHO1xyXG4gIHByaXZhdGUgZW5hYmxlQ29uc29sZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHJpdmF0ZSBwcmVmaXg6IHN0cmluZyA9ICdbQXBwXSc7XHJcbiAgcHJpdmF0ZSB0aW1lc3RhbXA6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEVOVklST05NRU5UKSBwcml2YXRlIGVudmlyb25tZW50PzogRW52aXJvbm1lbnRDb25maWcpIHtcclxuICAgIC8vIFVzZSBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIGlmIHByb3ZpZGVkXHJcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudCkge1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyZUZyb21FbnZpcm9ubWVudCh0aGlzLmVudmlyb25tZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBGYWxsYmFjazogSW4gcHJvZHVjdGlvbiwgZGVmYXVsdCB0byBXQVJOIGxldmVsXHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lICE9PSAnbG9jYWxob3N0Jykge1xyXG4gICAgICB0aGlzLmxldmVsID0gTG9nTGV2ZWwuV0FSTjtcclxuICAgICAgdGhpcy5lbmFibGVDb25zb2xlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbmZpZ3VyZUZyb21FbnZpcm9ubWVudChlbnY6IEVudmlyb25tZW50Q29uZmlnKTogdm9pZCB7XHJcbiAgICAvLyBNYXAgc3RyaW5nIGxvZyBsZXZlbHMgZnJvbSBlbnZpcm9ubWVudCB0byBMb2dMZXZlbCBlbnVtXHJcbiAgICB0aGlzLmxldmVsID0gdGhpcy5tYXBMb2dMZXZlbChlbnYubG9nTGV2ZWwpO1xyXG5cclxuICAgIC8vIFVzZSBwcm9kdWN0aW9uIGZsYWcgdG8gZGV0ZXJtaW5lIGNvbnNvbGUgbG9nZ2luZ1xyXG4gICAgdGhpcy5lbmFibGVDb25zb2xlID0gIWVudi5wcm9kdWN0aW9uO1xyXG5cclxuICAgIC8vIFNldCBwcmVmaXggZnJvbSBlbnZpcm9ubWVudCBpZiBhdmFpbGFibGVcclxuICAgIHRoaXMucHJlZml4ID0gYFske2VudlsnYXBwTmFtZSddIHx8ICdBcHAnfV1gO1xyXG5cclxuICAgIC8vIEVuYWJsZSB0aW1lc3RhbXAgaW4gZGV2ZWxvcG1lbnQsIGRpc2FibGUgaW4gcHJvZHVjdGlvbiBmb3IgcGVyZm9ybWFuY2VcclxuICAgIHRoaXMudGltZXN0YW1wID0gIWVudi5wcm9kdWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXBMb2dMZXZlbChsZXZlbDogc3RyaW5nKTogTG9nTGV2ZWwge1xyXG4gICAgc3dpdGNoIChsZXZlbCkge1xyXG4gICAgICBjYXNlICdkZWJ1Zyc6IHJldHVybiBMb2dMZXZlbC5ERUJVRztcclxuICAgICAgY2FzZSAnaW5mbyc6IHJldHVybiBMb2dMZXZlbC5JTkZPO1xyXG4gICAgICBjYXNlICd3YXJuJzogcmV0dXJuIExvZ0xldmVsLldBUk47XHJcbiAgICAgIGNhc2UgJ2Vycm9yJzogcmV0dXJuIExvZ0xldmVsLkVSUk9SO1xyXG4gICAgICBjYXNlICdvZmYnOiByZXR1cm4gTG9nTGV2ZWwuT0ZGO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gTG9nTGV2ZWwuV0FSTjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3VsZExvZyhMb2dMZXZlbC5ERUJVRykpIHtcclxuICAgICAgdGhpcy5sb2coJ0RFQlVHJywgbWVzc2FnZSwgYXJncywgJ2NvbG9yOiBibHVlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3VsZExvZyhMb2dMZXZlbC5JTkZPKSkge1xyXG4gICAgICB0aGlzLmxvZygnSU5GTycsIG1lc3NhZ2UsIGFyZ3MsICdjb2xvcjogZ3JlZW4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdhcm4obWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2hvdWxkTG9nKExvZ0xldmVsLldBUk4pKSB7XHJcbiAgICAgIHRoaXMubG9nKCdXQVJOJywgbWVzc2FnZSwgYXJncywgJ2NvbG9yOiBvcmFuZ2UnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3VsZExvZyhMb2dMZXZlbC5FUlJPUikpIHtcclxuICAgICAgdGhpcy5sb2coJ0VSUk9SJywgbWVzc2FnZSwgYXJncywgJ2NvbG9yOiByZWQnKTtcclxuXHJcbiAgICAgIC8vIFNlbmQgdG8gZXh0ZXJuYWwgc2VydmljZXMgb25seSBmb3IgZXJyb3JzIGluIHByb2R1Y3Rpb25cclxuICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQ/LnByb2R1Y3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNlbmRUb0V4dGVybmFsU2VydmljZSgnRVJST1InLCBtZXNzYWdlLCBhcmdzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TG9nTGV2ZWwobGV2ZWw6IExvZ0xldmVsKTogdm9pZCB7XHJcbiAgICB0aGlzLmxldmVsID0gbGV2ZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3VsZExvZyhsZXZlbDogTG9nTGV2ZWwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBsZXZlbCA+PSB0aGlzLmxldmVsICYmIHRoaXMuZW5hYmxlQ29uc29sZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9nKGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgYXJnczogYW55W10sIHN0eWxlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lbmFibGVDb25zb2xlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy50aW1lc3RhbXAgPyBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgOiAnJztcclxuICAgIGNvbnN0IGZvcm1hdHRlZFByZWZpeCA9IHRoaXMucHJlZml4ID8gYCR7dGhpcy5wcmVmaXh9YCA6ICcnO1xyXG5cclxuICAgIGNvbnN0IGxvZ01lc3NhZ2UgPSBgJHt0aW1lc3RhbXB9ICR7Zm9ybWF0dGVkUHJlZml4fSBbJHtsZXZlbH1dICR7bWVzc2FnZX1gO1xyXG5cclxuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc29sZS5sb2coYCVjJHtsb2dNZXNzYWdlfWAsIHN0eWxlLCAuLi5hcmdzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGAlYyR7bG9nTWVzc2FnZX1gLCBzdHlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbmRUb0V4dGVybmFsU2VydmljZShsZXZlbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGFyZ3M6IGFueVtdKTogdm9pZCB7XHJcbiAgICAvLyBJbnRlZ3JhdGUgd2l0aCBleHRlcm5hbCBsb2dnaW5nIHNlcnZpY2VzIGZyb20gZW52aXJvbm1lbnRcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHNlbnRyeVVybCA9IHRoaXMuZW52aXJvbm1lbnQ/LmV4dGVybmFsU2VydmljZXM/Llsnc2VudHJ5J107XHJcbiAgICAgIGNvbnN0IGxvZ1JvY2tldFVybCA9IHRoaXMuZW52aXJvbm1lbnQ/LmV4dGVybmFsU2VydmljZXM/LlsnbG9nUm9ja2V0J107XHJcblxyXG4gICAgICAvLyBFeGFtcGxlOiBTZW5kIHRvIGNvbmZpZ3VyZWQgZXh0ZXJuYWwgc2VydmljZXNcclxuICAgICAgaWYgKHNlbnRyeVVybCkge1xyXG4gICAgICAgIC8vIHRoaXMuc2VuZFRvU2VudHJ5KGxldmVsLCBtZXNzYWdlLCBhcmdzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGxvZ1JvY2tldFVybCkge1xyXG4gICAgICAgIC8vIHRoaXMuc2VuZFRvTG9nUm9ja2V0KGxldmVsLCBtZXNzYWdlLCBhcmdzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gU2VuZCB0byBiYWNrZW5kIGlmIGFwaVVybCBpcyBhdmFpbGFibGVcclxuICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQ/LmFwaVVybCkge1xyXG4gICAgICAgIC8vIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVXJsfS9sb2dzYCwge1xyXG4gICAgICAgIC8vICAgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3MsIHRpbWVzdGFtcDogbmV3IERhdGUoKVxyXG4gICAgICAgIC8vIH0pLnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLyBEb24ndCB1c2UgdGhpcy5lcnJvciBoZXJlIHRvIGF2b2lkIGluZmluaXRlIGxvb3BzXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzZW5kIGxvZyB0byBleHRlcm5hbCBzZXJ2aWNlOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtc2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLmNvcmUvc2VydmljZXMvc3JjL2VsaXRlLmZyYW1ld29yay1uZy5jb3JlLXNlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.RestService","i1","i1.PermissionsService"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.core-tokens.mjs","sources":["../tmp-esm2022/tokens/lib/environment.token.js","../tmp-esm2022/tokens/lib/options.token.js","../tmp-esm2022/tokens/elite.framework-ng.core-tokens.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const ENVIRONMENT = new InjectionToken('ENVIRONMENT');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLmNvcmUvdG9rZW5zL3NyYy9saWIvZW52aXJvbm1lbnQudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQW9CLGFBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgRU5WSVJPTk1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48RW52aXJvbm1lbnRDb25maWc+KCdFTlZJUk9OTUVOVCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50Q29uZmlnIHtcbiAgcHJvZHVjdGlvbjogYm9vbGVhbjtcbiAgYXBpVXJsOiBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IGFueTsgLy8gT3B0aW9uYWwgZXh0ZW5zaWJpbGl0eVxufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const CORE_OPTIONS = new InjectionToken('CORE_OPTIONS');\nexport function coreOptionsFactory({ ...options }) {\n return {\n ...options,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS90b2tlbnMvc3JjL2xpYi9vcHRpb25zLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFPLGNBQWMsQ0FBQyxDQUFDO0FBRXJFLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFRO0lBQ3JELE9BQU87UUFDTCxHQUFHLE9BQU87S0FDSCxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XG5leHBvcnQgY29uc3QgQ09SRV9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFJvb3Q+KCdDT1JFX09QVElPTlMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvcmVPcHRpb25zRmFjdG9yeSh7IC4uLm9wdGlvbnMgfTogUm9vdCkge1xuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gIH0gYXMgUm9vdDtcbn1cblxuXG5cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3Rva2Vucy9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":";;AACY,MAAC,WAAW,GAAG,IAAI,cAAc,CAAC,aAAa;;ACA/C,MAAC,YAAY,GAAG,IAAI,cAAc,CAAC,cAAc;AACtD,SAAS,kBAAkB,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE;AACnD,IAAI,OAAO;AACX,QAAQ,GAAG,OAAO;AAClB,KAAK;AACL;;ACNA;AACA;AACA;;;;"}
1
+ {"version":3,"file":"elite.framework-ng.core-tokens.mjs","sources":["../tmp-esm2022/tokens/lib/environment.token.js","../tmp-esm2022/tokens/lib/options.token.js","../tmp-esm2022/tokens/elite.framework-ng.core-tokens.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const ENVIRONMENT = new InjectionToken('ENVIRONMENT');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLmNvcmUvdG9rZW5zL3NyYy9saWIvZW52aXJvbm1lbnQudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQW9CLGFBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgRU5WSVJPTk1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48RW52aXJvbm1lbnRDb25maWc+KCdFTlZJUk9OTUVOVCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50Q29uZmlnIHtcbiAgcHJvZHVjdGlvbjogYm9vbGVhbjtcbiAgYXBpVXJsOiBzdHJpbmc7XG4gICBsb2dMZXZlbDogJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnb2ZmJztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBmZWF0dXJlcz86IHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICB9O1xuICBleHRlcm5hbFNlcnZpY2VzPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfTtcbiAgW2tleTogc3RyaW5nXTogYW55OyAvLyBPcHRpb25hbCBleHRlbnNpYmlsaXR5XG59XG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const CORE_OPTIONS = new InjectionToken('CORE_OPTIONS');\nexport function coreOptionsFactory({ ...options }) {\n return {\n ...options,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS90b2tlbnMvc3JjL2xpYi9vcHRpb25zLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFPLGNBQWMsQ0FBQyxDQUFDO0FBRXJFLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFRO0lBQ3JELE9BQU87UUFDTCxHQUFHLE9BQU87S0FDSCxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XG5leHBvcnQgY29uc3QgQ09SRV9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFJvb3Q+KCdDT1JFX09QVElPTlMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvcmVPcHRpb25zRmFjdG9yeSh7IC4uLm9wdGlvbnMgfTogUm9vdCkge1xuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gIH0gYXMgUm9vdDtcbn1cblxuXG5cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3Rva2Vucy9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":";;AACY,MAAC,WAAW,GAAG,IAAI,cAAc,CAAC,aAAa;;ACA/C,MAAC,YAAY,GAAG,IAAI,cAAc,CAAC,cAAc;AACtD,SAAS,kBAAkB,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE;AACnD,IAAI,OAAO;AACX,QAAQ,GAAG,OAAO;AAClB,KAAK;AACL;;ACNA;AACA;AACA;;;;"}
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import * as i1 from '@angular/common';
3
- import { HttpInterceptorFn } from '@angular/common/http';
3
+ import { HttpRequest, HttpHandlerFn, HttpEvent, HttpInterceptorFn } from '@angular/common/http';
4
+ import { Observable } from 'rxjs';
4
5
 
5
6
  declare class InterceptorsModule {
6
7
  static ɵfac: i0.ɵɵFactoryDeclaration<InterceptorsModule, never>;
@@ -8,6 +9,8 @@ declare class InterceptorsModule {
8
9
  static ɵinj: i0.ɵɵInjectorDeclaration<InterceptorsModule>;
9
10
  }
10
11
 
12
+ declare function languageInterceptor(req: HttpRequest<any>, next: HttpHandlerFn): Observable<HttpEvent<any>>;
13
+
11
14
  interface ProblemDetailsResponse {
12
15
  type?: string | null;
13
16
  title: string;
@@ -18,5 +21,5 @@ interface ProblemDetailsResponse {
18
21
  }
19
22
  declare const apiInterceptor: HttpInterceptorFn;
20
23
 
21
- export { InterceptorsModule, apiInterceptor };
24
+ export { InterceptorsModule, apiInterceptor, languageInterceptor };
22
25
  export type { ProblemDetailsResponse };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elite.framework/ng.core",
3
- "version": "2.0.10",
3
+ "version": "2.0.12",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0"
@@ -10,6 +10,7 @@ import { Request } from 'express';
10
10
  import { TranslateService } from '@ngx-translate/core';
11
11
  import { SweetAlertResult, SweetAlertOptions, SweetAlertIcon } from 'sweetalert2';
12
12
  import { CanActivateFn, CanActivateChildFn, CanMatchFn, Router, ActivatedRouteSnapshot, RouterStateSnapshot, Route } from '@angular/router';
13
+ import { EnvironmentConfig } from '@elite.framework/ng.core/tokens';
13
14
 
14
15
  declare class RestService {
15
16
  protected options: Root;
@@ -282,5 +283,41 @@ declare class NgxPermissionsGuard {
282
283
  static ɵprov: i0.ɵɵInjectableDeclaration<NgxPermissionsGuard>;
283
284
  }
284
285
 
285
- export { BaseService, GenericService, NgxPermissionsGuard, PermissionsService, REQUEST, RestService, SsrCookieService, SwalService, isUndefinedOrEmptyString, ngxPermissionsGuard };
286
- export type { CrudService, NgxPermissionsData };
286
+ declare enum LogLevel {
287
+ DEBUG = 0,
288
+ INFO = 1,
289
+ WARN = 2,
290
+ ERROR = 3,
291
+ OFF = 4
292
+ }
293
+ interface ILoggerService {
294
+ debug(message: string, ...args: any[]): void;
295
+ info(message: string, ...args: any[]): void;
296
+ warn(message: string, ...args: any[]): void;
297
+ error(message: string, ...args: any[]): void;
298
+ setLogLevel(level: LogLevel): void;
299
+ }
300
+
301
+ declare class LoggerService implements ILoggerService {
302
+ private environment?;
303
+ private level;
304
+ private enableConsole;
305
+ private prefix;
306
+ private timestamp;
307
+ constructor(environment?: EnvironmentConfig | undefined);
308
+ private configureFromEnvironment;
309
+ private mapLogLevel;
310
+ debug(message: string, ...args: any[]): void;
311
+ info(message: string, ...args: any[]): void;
312
+ warn(message: string, ...args: any[]): void;
313
+ error(message: string, ...args: any[]): void;
314
+ setLogLevel(level: LogLevel): void;
315
+ private shouldLog;
316
+ private log;
317
+ private sendToExternalService;
318
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoggerService, [{ optional: true; }]>;
319
+ static ɵprov: i0.ɵɵInjectableDeclaration<LoggerService>;
320
+ }
321
+
322
+ export { BaseService, GenericService, LogLevel, LoggerService, NgxPermissionsGuard, PermissionsService, REQUEST, RestService, SsrCookieService, SwalService, isUndefinedOrEmptyString, ngxPermissionsGuard };
323
+ export type { CrudService, ILoggerService, NgxPermissionsData };
package/tokens/index.d.ts CHANGED
@@ -5,6 +5,14 @@ declare const ENVIRONMENT: InjectionToken<EnvironmentConfig>;
5
5
  interface EnvironmentConfig {
6
6
  production: boolean;
7
7
  apiUrl: string;
8
+ logLevel: 'debug' | 'info' | 'warn' | 'error' | 'off';
9
+ version: string;
10
+ features?: {
11
+ [key: string]: boolean;
12
+ };
13
+ externalServices?: {
14
+ [key: string]: string;
15
+ };
8
16
  [key: string]: any;
9
17
  }
10
18