@elite.framework/ng.core 2.0.14 → 2.0.17

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.
@@ -87,10 +87,6 @@ class BaseService {
87
87
  constructor(restService) {
88
88
  this.restService = restService;
89
89
  }
90
- get = (id) => this.restService.request({
91
- method: 'GET',
92
- url: `/${this.moduleName}/${this.apiName}/${id}`,
93
- }, { apiName: this.apiName });
94
90
  getList = (input, endpoint) => {
95
91
  const params = Object.keys(input).reduce((acc, key) => {
96
92
  acc[key] = input[key];
@@ -104,20 +100,38 @@ class BaseService {
104
100
  }, { apiName: this.apiName })
105
101
  .pipe(map(response => response));
106
102
  };
103
+ get = (id) => this.restService.request({
104
+ method: 'GET',
105
+ url: this.buildUrl(id),
106
+ }, { apiName: this.apiName });
107
107
  create = (input) => this.restService.request({
108
108
  method: 'POST',
109
- url: `/${this.moduleName}/${this.apiName}`,
109
+ url: this.buildUrl(),
110
110
  body: input,
111
111
  }, { apiName: this.apiName });
112
112
  update = (id, input) => this.restService.request({
113
113
  method: 'PUT',
114
- url: `/${this.moduleName}/${this.apiName}/${id}`,
114
+ url: this.buildUrl(id),
115
115
  body: input,
116
116
  }, { apiName: this.apiName });
117
117
  delete = (id) => this.restService.request({
118
118
  method: 'DELETE',
119
- url: `/${this.moduleName}/${this.apiName}/${id}`,
119
+ url: this.buildUrl(id),
120
120
  }, { apiName: this.apiName });
121
+ buildUrl(id) {
122
+ if (!id)
123
+ return `/${this.moduleName}/${this.apiName}`;
124
+ if (Array.isArray(id)) {
125
+ // Array-based composite key: ['123', '456'] => /123/456
126
+ return `/${this.moduleName}/${this.apiName}/${id.join('/')}`;
127
+ }
128
+ if (typeof id === 'object') {
129
+ // Object-based composite key: {id:123, biId:456} => /123/456
130
+ return `/${this.moduleName}/${this.apiName}/${Object.values(id).join('/')}`;
131
+ }
132
+ // Single id
133
+ return `/${this.moduleName}/${this.apiName}/${id}`;
134
+ }
121
135
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BaseService, deps: [{ token: RestService }], target: i0.ɵɵFactoryTarget.Injectable });
122
136
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: BaseService, providedIn: 'root' });
123
137
  }
@@ -793,9 +807,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
793
807
  args: [ENVIRONMENT]
794
808
  }] }] });
795
809
 
810
+ class IdParserService {
811
+ /**
812
+ * Extract IDs from a model based on comma-separated field names.
813
+ * Example: "id,biId" => [model.id, model.biId]
814
+ */
815
+ parseIds(model, idField) {
816
+ if (!idField)
817
+ return null;
818
+ const fields = idField.split(',').map(f => f.trim()).filter(Boolean);
819
+ if (fields.length === 1) {
820
+ return model[fields[0]];
821
+ }
822
+ return fields.map(f => model[f]);
823
+ }
824
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: IdParserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
825
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: IdParserService, providedIn: 'root' });
826
+ }
827
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: IdParserService, decorators: [{
828
+ type: Injectable,
829
+ args: [{ providedIn: 'root' }]
830
+ }] });
831
+
796
832
  /**
797
833
  * Generated bundle index. Do not edit.
798
834
  */
799
835
 
800
- export { BaseService, GenericService, LogLevel, LoggerService, NgxPermissionsGuard, PermissionsService, REQUEST, RestService, SsrCookieService, SwalService, isUndefinedOrEmptyString, ngxPermissionsGuard };
836
+ export { BaseService, GenericService, IdParserService, LogLevel, LoggerService, NgxPermissionsGuard, PermissionsService, REQUEST, RestService, SsrCookieService, SwalService, isUndefinedOrEmptyString, ngxPermissionsGuard };
801
837
  //# 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/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
+ {"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/lib/id-parser.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 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 get = (id) => this.restService.request({\n method: 'GET',\n url: this.buildUrl(id),\n }, { apiName: this.apiName });\n create = (input) => this.restService.request({\n method: 'POST',\n url: this.buildUrl(),\n body: input,\n }, { apiName: this.apiName });\n update = (id, input) => this.restService.request({\n method: 'PUT',\n url: this.buildUrl(id),\n body: input,\n }, { apiName: this.apiName });\n delete = (id) => this.restService.request({\n method: 'DELETE',\n url: this.buildUrl(id),\n }, { apiName: this.apiName });\n buildUrl(id) {\n if (!id)\n return `/${this.moduleName}/${this.apiName}`;\n if (Array.isArray(id)) {\n // Array-based composite key: ['123', '456'] => /123/456\n return `/${this.moduleName}/${this.apiName}/${id.join('/')}`;\n }\n if (typeof id === 'object') {\n // Object-based composite key: {id:123, biId:456} => /123/456\n return `/${this.moduleName}/${this.apiName}/${Object.values(id).join('/')}`;\n }\n // Single id\n return `/${this.moduleName}/${this.apiName}/${id}`;\n }\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL3NlcnZpY2VzL3NyYy9saWIvYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU03QyxNQUFNLE9BQU8sV0FBVztJQUdIO0lBRm5CLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFlBQW1CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUc3QyxPQUFPLEdBQUcsQ0FBQyxLQUFTLEVBQUUsUUFBaUIsRUFBRyxFQUFFO1FBRTFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3hELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFTixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV6RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUE0QjtZQUN6RCxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxHQUFHO1lBQ1IsTUFBTSxFQUFFLE1BQU07U0FDZixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM1QixJQUFJLENBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzFCLENBQUM7SUFDSixDQUFDLENBQUM7SUFDSixHQUFHLEdBQUcsQ0FBQyxFQUFzRCxFQUFFLEVBQUUsQ0FDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQVc7UUFDakMsTUFBTSxFQUFFLEtBQUs7UUFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7S0FDdkIsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUVoQyxNQUFNLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBVztRQUNqQyxNQUFNLEVBQUUsTUFBTTtRQUNkLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ3BCLElBQUksRUFBRSxLQUFLO0tBQ1osRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUVoQyxNQUFNLEdBQUcsQ0FBQyxFQUFzRCxFQUFFLEtBQVUsRUFBRSxFQUFFLENBQzlFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFXO1FBQ2pDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksRUFBRSxLQUFLO0tBQ1osRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUVoQyxNQUFNLEdBQUcsQ0FBQyxFQUFzRCxFQUFFLEVBQUUsQ0FDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQVk7UUFDbEMsTUFBTSxFQUFFLFFBQVE7UUFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0tBQ3ZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFHeEIsUUFBUSxDQUFDLEVBQXVEO1FBQ3RFLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXRELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3RCLHdEQUF3RDtZQUN4RCxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvRCxDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQiw2REFBNkQ7WUFDN0QsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzlFLENBQUM7UUFFRCxZQUFZO1FBQ1osT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNyRCxDQUFDO3VHQWxFWSxXQUFXOzJHQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnaW5hdGVkUmVzdWx0IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlU2VydmljZSB7XG4gIGFwaU5hbWUgPSAnJztcbiAgbW9kdWxlTmFtZSA9ICcnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlKSB7fVxuXG5cbiAgICBnZXRMaXN0ID0gKGlucHV0OmFueSwgZW5kcG9pbnQ/OiBzdHJpbmcgKSA9PiB7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5rZXlzKGlucHV0KS5yZWR1Y2UoKGFjYzphbnksIGtleSkgPT4ge1xuICAgICAgICBhY2Nba2V5XSA9IGlucHV0W2tleV07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgICBjb25zdCB1cmwgPSBlbmRwb2ludCA/IGVuZHBvaW50IDogYC8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLmFwaU5hbWV9YDtcblxuICAgICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIFBhZ2luYXRlZFJlc3VsdDxhbnk+Pih7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIH0sIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlKVxuICAgICAgKTtcbiAgICB9O1xuICBnZXQgPSAoaWQ6IHN0cmluZyB8IChzdHJpbmcgfCBudW1iZXIpW10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PlxuICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBhbnk+KHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIHVybDogdGhpcy5idWlsZFVybChpZCksXG4gIH0sIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xuXG5jcmVhdGUgPSAoaW5wdXQ6IGFueSkgPT5cbiAgdGhpcy5yZXN0U2VydmljZS5yZXF1ZXN0PGFueSwgYW55Pih7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgdXJsOiB0aGlzLmJ1aWxkVXJsKCksXG4gICAgYm9keTogaW5wdXQsXG4gIH0sIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xuXG51cGRhdGUgPSAoaWQ6IHN0cmluZyB8IChzdHJpbmcgfCBudW1iZXIpW10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBpbnB1dDogYW55KSA9PlxuICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBhbnk+KHtcbiAgICBtZXRob2Q6ICdQVVQnLFxuICAgIHVybDogdGhpcy5idWlsZFVybChpZCksXG4gICAgYm9keTogaW5wdXQsXG4gIH0sIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xuXG5kZWxldGUgPSAoaWQ6IHN0cmluZyB8IChzdHJpbmcgfCBudW1iZXIpW10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PlxuICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCB2b2lkPih7XG4gICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICB1cmw6IHRoaXMuYnVpbGRVcmwoaWQpLFxuICB9LCB7IGFwaU5hbWU6IHRoaXMuYXBpTmFtZSB9KTtcblxuXG5wcml2YXRlIGJ1aWxkVXJsKGlkPzogc3RyaW5nIHwgKHN0cmluZyB8IG51bWJlcilbXSB8IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xuICBpZiAoIWlkKSByZXR1cm4gYC8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLmFwaU5hbWV9YDtcblxuICBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICAvLyBBcnJheS1iYXNlZCBjb21wb3NpdGUga2V5OiBbJzEyMycsICc0NTYnXSA9PiAvMTIzLzQ1NlxuICAgIHJldHVybiBgLyR7dGhpcy5tb2R1bGVOYW1lfS8ke3RoaXMuYXBpTmFtZX0vJHtpZC5qb2luKCcvJyl9YDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaWQgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gT2JqZWN0LWJhc2VkIGNvbXBvc2l0ZSBrZXk6IHtpZDoxMjMsIGJpSWQ6NDU2fSA9PiAvMTIzLzQ1NlxuICAgIHJldHVybiBgLyR7dGhpcy5tb2R1bGVOYW1lfS8ke3RoaXMuYXBpTmFtZX0vJHtPYmplY3QudmFsdWVzKGlkKS5qb2luKCcvJyl9YDtcbiAgfVxuXG4gIC8vIFNpbmdsZSBpZFxuICByZXR1cm4gYC8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLmFwaU5hbWV9LyR7aWR9YDtcbn1cblxufVxuIl19","// 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","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class IdParserService {\n /**\n * Extract IDs from a model based on comma-separated field names.\n * Example: \"id,biId\" => [model.id, model.biId]\n */\n parseIds(model, idField) {\n if (!idField)\n return null;\n const fields = idField.split(',').map(f => f.trim()).filter(Boolean);\n if (fields.length === 1) {\n return model[fields[0]];\n }\n return fields.map(f => model[f]);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: IdParserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: IdParserService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: IdParserService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtcGFyc2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLmNvcmUvc2VydmljZXMvc3JjL2xpYi9pZC1wYXJzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sZUFBZTtJQUMxQjs7O09BR0c7SUFDSCxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWU7UUFDbEMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQztRQUUxQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVyRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7dUdBZlUsZUFBZTsyR0FBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIElkUGFyc2VyU2VydmljZSB7XHJcbiAgLyoqXHJcbiAgICogRXh0cmFjdCBJRHMgZnJvbSBhIG1vZGVsIGJhc2VkIG9uIGNvbW1hLXNlcGFyYXRlZCBmaWVsZCBuYW1lcy5cclxuICAgKiBFeGFtcGxlOiBcImlkLGJpSWRcIiA9PiBbbW9kZWwuaWQsIG1vZGVsLmJpSWRdXHJcbiAgICovXHJcbiAgcGFyc2VJZHMobW9kZWw6IGFueSwgaWRGaWVsZDogc3RyaW5nKTogc3RyaW5nIHwgKHN0cmluZyB8IG51bWJlcilbXSB8IGFueSB7XHJcbiAgICBpZiAoIWlkRmllbGQpIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IGZpZWxkcyA9IGlkRmllbGQuc3BsaXQoJywnKS5tYXAoZiA9PiBmLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pO1xyXG5cclxuICAgIGlmIChmaWVsZHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHJldHVybiBtb2RlbFtmaWVsZHNbMF1dO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaWVsZHMubWFwKGYgPT4gbW9kZWxbZl0pO1xyXG4gIH1cclxufVxyXG4iXX0=","/**\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elite.framework/ng.core",
3
- "version": "2.0.14",
3
+ "version": "2.0.17",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0"
@@ -33,11 +33,12 @@ declare class BaseService {
33
33
  apiName: string;
34
34
  moduleName: string;
35
35
  constructor(restService: RestService);
36
- get: (id: string) => rxjs.Observable<any>;
37
36
  getList: (input: any, endpoint?: string) => rxjs.Observable<PaginatedResult<any>>;
37
+ get: (id: string | (string | number)[] | Record<string, any>) => rxjs.Observable<any>;
38
38
  create: (input: any) => rxjs.Observable<any>;
39
- update: (id: string, input: any) => rxjs.Observable<any>;
40
- delete: (id: string) => rxjs.Observable<void>;
39
+ update: (id: string | (string | number)[] | Record<string, any>, input: any) => rxjs.Observable<any>;
40
+ delete: (id: string | (string | number)[] | Record<string, any>) => rxjs.Observable<void>;
41
+ private buildUrl;
41
42
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseService, never>;
42
43
  static ɵprov: i0.ɵɵInjectableDeclaration<BaseService>;
43
44
  }
@@ -319,5 +320,15 @@ declare class LoggerService implements ILoggerService {
319
320
  static ɵprov: i0.ɵɵInjectableDeclaration<LoggerService>;
320
321
  }
321
322
 
322
- export { BaseService, GenericService, LogLevel, LoggerService, NgxPermissionsGuard, PermissionsService, REQUEST, RestService, SsrCookieService, SwalService, isUndefinedOrEmptyString, ngxPermissionsGuard };
323
+ declare class IdParserService {
324
+ /**
325
+ * Extract IDs from a model based on comma-separated field names.
326
+ * Example: "id,biId" => [model.id, model.biId]
327
+ */
328
+ parseIds(model: any, idField: string): string | (string | number)[] | any;
329
+ static ɵfac: i0.ɵɵFactoryDeclaration<IdParserService, never>;
330
+ static ɵprov: i0.ɵɵInjectableDeclaration<IdParserService>;
331
+ }
332
+
333
+ export { BaseService, GenericService, IdParserService, LogLevel, LoggerService, NgxPermissionsGuard, PermissionsService, REQUEST, RestService, SsrCookieService, SwalService, isUndefinedOrEmptyString, ngxPermissionsGuard };
323
334
  export type { CrudService, ILoggerService, NgxPermissionsData };