@elite.framework/ng.core 2.0.18 → 2.0.20
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.
- package/fesm2022/elite.framework-ng.core-interceptors.mjs +2 -2
- package/fesm2022/elite.framework-ng.core-interceptors.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.core-services.mjs +275 -9
- package/fesm2022/elite.framework-ng.core-services.mjs.map +1 -1
- package/package.json +1 -1
- package/services/index.d.ts +34 -2
|
@@ -103,13 +103,13 @@ const apiInterceptor = (req, next) => {
|
|
|
103
103
|
break;
|
|
104
104
|
default:
|
|
105
105
|
logger.error(`⚠️ HTTP Error ${problem.status} - ${problem.title}`, errorContext);
|
|
106
|
-
swal.error(translate.instant(problem.title || 'Error.
|
|
106
|
+
swal.error(translate.instant(problem.title || 'Error.ServerError'), problem.detail ? translate.instant(problem.detail) : undefined);
|
|
107
107
|
break;
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
111
|
logger.error(`❌ Unknown Error - ${error.message}`, errorContext);
|
|
112
|
-
swal.error(translate.instant('Error.
|
|
112
|
+
swal.error(translate.instant('Error.Unexpected'), error.message);
|
|
113
113
|
}
|
|
114
114
|
return throwError(() => problem ?? error);
|
|
115
115
|
}), finalize(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.core-interceptors.mjs","sources":["../tmp-esm2022/interceptors/lib/interceptors-module.js","../tmp-esm2022/interceptors/lib/language.interceptor.js","../tmp-esm2022/interceptors/lib/api.interceptor.js","../tmp-esm2022/interceptors/elite.framework-ng.core-interceptors.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class InterceptorsModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3JzLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9pbnRlcmNlcHRvcnMvc3JjL2xpYi9pbnRlcmNlcHRvcnMtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sa0JBQWtCO3VHQUFsQixrQkFBa0I7d0dBQWxCLGtCQUFrQixZQUZuQixZQUFZO3dHQUVYLGtCQUFrQixZQUZuQixZQUFZOzsyRkFFWCxrQkFBa0I7a0JBSDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSW50ZXJjZXB0b3JzTW9kdWxlIHt9XG4iXX0=","// language.interceptor.fn.ts\nimport { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nexport function languageInterceptor(req, next) {\n const translateService = inject(TranslateService);\n // Get the current language (fallback to 'ar')\n const currentLanguage = translateService.currentLang || 'ar';\n // Clone request and add Accept-Language header\n const clonedReq = req.clone({\n setHeaders: {\n 'Accept-Language': currentLanguage\n }\n });\n return next(clonedReq);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLmNvcmUvaW50ZXJjZXB0b3JzL3NyYy9saWIvbGFuZ3VhZ2UuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxHQUFxQixFQUNyQixJQUFtQjtJQUVuQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWxELDhDQUE4QztJQUM5QyxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDO0lBRTdELCtDQUErQztJQUMvQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzFCLFVBQVUsRUFBRTtZQUNWLGlCQUFpQixFQUFFLGVBQWU7U0FDbkM7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbGFuZ3VhZ2UuaW50ZXJjZXB0b3IuZm4udHNcclxuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0LCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyRm4gfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxhbmd1YWdlSW50ZXJjZXB0b3IoXHJcbiAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gIG5leHQ6IEh0dHBIYW5kbGVyRm5cclxuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gIGNvbnN0IHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gIC8vIEdldCB0aGUgY3VycmVudCBsYW5ndWFnZSAoZmFsbGJhY2sgdG8gJ2FyJylcclxuICBjb25zdCBjdXJyZW50TGFuZ3VhZ2UgPSB0cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nIHx8ICdhcic7XHJcblxyXG4gIC8vIENsb25lIHJlcXVlc3QgYW5kIGFkZCBBY2NlcHQtTGFuZ3VhZ2UgaGVhZGVyXHJcbiAgY29uc3QgY2xvbmVkUmVxID0gcmVxLmNsb25lKHtcclxuICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGN1cnJlbnRMYW5ndWFnZVxyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gbmV4dChjbG9uZWRSZXEpO1xyXG59XHJcbiJdfQ==","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LoggerService, SwalService } from '@elite.framework/ng.core/services';\nimport { ENVIRONMENT } from '@elite.framework/ng.core/tokens';\nimport { TranslateService } from '@ngx-translate/core';\nimport { throwError } from 'rxjs';\nimport { catchError, finalize } from 'rxjs/operators';\nexport const apiInterceptor = (req, next) => {\n const env = inject(ENVIRONMENT);\n const router = inject(Router);\n const swal = inject(SwalService);\n const translate = inject(TranslateService);\n const logger = inject(LoggerService);\n const apiUrl = env.apiUrl;\n let newReq = req;\n // Log request details (only in debug mode for performance)\n if (env['enableDebug']) {\n logger.debug(`➡️ HTTP REQUEST: ${req.method} ${req.url}`, {\n headers: Object.fromEntries(req.headers.keys().map(key => [key, req.headers.get(key)])),\n timestamp: new Date().toISOString()\n });\n }\n const startTime = Date.now();\n return next(newReq).pipe(catchError((error) => {\n const duration = Date.now() - startTime;\n let problem = null;\n if (error.error && typeof error.error === 'object') {\n problem = error.error;\n }\n else if (typeof error.error === 'string') {\n try {\n problem = JSON.parse(error.error);\n }\n catch {\n problem = null;\n }\n }\n // Structured error logging\n const errorContext = {\n url: req.url,\n method: req.method,\n duration: `${duration}ms`,\n status: error.status,\n statusText: error.statusText,\n problemDetails: problem,\n timestamp: new Date().toISOString()\n };\n if (problem) {\n switch (problem.status) {\n case 400:\n logger.warn(`🛑 Bad Request (400) - ${problem.title}`, errorContext);\n swal.error(translate.instant(problem.title || 'Error.BadRequest'), problem.detail ? translate.instant(problem.detail) : undefined);\n break;\n case 401:\n logger.warn(`🔐 Unauthorized (401) - Redirecting to login`, errorContext);\n swal.error(translate.instant('Error.Unauthorized'), translate.instant('Error.SessionExpired'));\n localStorage.removeItem('token');\n router.navigate(['/login']);\n break;\n case 403:\n logger.warn(`🚫 Forbidden (403) - Access denied`, errorContext);\n swal.error(translate.instant('Error.Forbidden'), problem.title || translate.instant('Error.NoPermission'));\n break;\n case 404:\n logger.warn(`❓ Not Found (404) - ${req.url}`, errorContext);\n break;\n case 500:\n logger.error(`💥 Server Error (500) - ${problem.title}`, errorContext);\n swal.error(translate.instant('Error.ServerError'), problem.detail || problem.title);\n break;\n case 0:\n logger.error(`🌐 Network Error - Cannot connect to server`, errorContext);\n swal.error(translate.instant('Error.NoConnection'), translate.instant('Error.NetworkUnavailable'));\n break;\n default:\n logger.error(`⚠️ HTTP Error ${problem.status} - ${problem.title}`, errorContext);\n swal.error(translate.instant(problem.title || 'Error.NoConnection'), problem.detail ? translate.instant(problem.detail) : undefined);\n break;\n }\n }\n else {\n logger.error(`❌ Unknown Error - ${error.message}`, errorContext);\n swal.error(translate.instant('Error.NoConnection'), error.message);\n }\n return throwError(() => problem ?? error);\n }), finalize(() => {\n const duration = Date.now() - startTime;\n // Only log successful requests in debug mode to avoid console spam\n if (env['enableDebug']) {\n logger.debug(`✅ HTTP SUCCESS: ${req.method} ${req.url} (${duration}ms)`);\n }\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL2ludGVyY2VwdG9ycy9zcmMvbGliL2FwaS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFXdEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFzQixDQUMvQyxHQUFxQixFQUNyQixJQUFtQixFQUNTLEVBQUU7SUFDOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXJDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDMUIsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBRWpCLDJEQUEyRDtJQUMzRCxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFB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Q0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUMvRCxDQUFDO29CQUNGLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLEtBQUssQ0FDUixTQUFTLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEVBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQ2QsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFDeEMsbUVBQW1FO1FBQ25FLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLFFBQVEsS0FBSyxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBJbnRlcmNlcHRvckZuLFxyXG4gIEh0dHBSZXF1ZXN0LFxyXG4gIEh0dHBIYW5kbGVyRm4sXHJcbiAgSHR0cEV2ZW50LFxyXG4gIEh0dHBFcnJvclJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSwgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS90b2tlbnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2JsZW1EZXRhaWxzUmVzcG9uc2Uge1xyXG4gIHR5cGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgc3RhdHVzOiBudW1iZXI7XHJcbiAgZGV0YWlsPzogc3RyaW5nIHwgbnVsbDtcclxuICBpbnN0YW5jZT86IHN0cmluZztcclxuICB0cmFjZUlkPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYXBpSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKFxyXG4gIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcclxuICBuZXh0OiBIdHRwSGFuZGxlckZuXHJcbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0+IHtcclxuICBjb25zdCBlbnYgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xyXG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIGNvbnN0IHN3YWwgPSBpbmplY3QoU3dhbFNlcnZpY2UpO1xyXG4gIGNvbnN0IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBjb25zdCBsb2dnZXIgPSBpbmplY3QoTG9nZ2VyU2VydmljZSk7XHJcblxyXG4gIGNvbnN0IGFwaVVybCA9IGVudi5hcGlVcmw7XHJcbiAgbGV0IG5ld1JlcSA9IHJlcTtcclxuXHJcbiAgLy8gTG9nIHJlcXVlc3QgZGV0YWlscyAob25seSBpbiBkZWJ1ZyBtb2RlIGZvciBwZXJmb3JtYW5jZSlcclxuICBpZiAoZW52WydlbmFibGVEZWJ1ZyddKSB7XHJcbiAgICBsb2dnZXIuZGVidWcoYOKeoe+4jyBIVFRQIFJFUVVFU1Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWAsIHtcclxuICAgICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKHJlcS5oZWFkZXJzLmtleXMoKS5tYXAoa2V5ID0+IFtrZXksIHJlcS5oZWFkZXJzLmdldChrZXkpXSkpLFxyXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG5cclxuICByZXR1cm4gbmV4dChuZXdSZXEpLnBpcGUoXHJcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xyXG4gICAgICBsZXQgcHJvYmxlbTogUHJvYmxlbURldGFpbHNSZXNwb25zZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKGVycm9yLmVycm9yICYmIHR5cGVvZiBlcnJvci5lcnJvciA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBwcm9ibGVtID0gZXJyb3IuZXJyb3IgYXMgUHJvYmxlbURldGFpbHNSZXNwb25zZTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IuZXJyb3IgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHByb2JsZW0gPSBKU09OLnBhcnNlKGVycm9yLmVycm9yKSBhcyBQcm9ibGVtRGV0YWlsc1Jlc3BvbnNlO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgcHJvYmxlbSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTdHJ1Y3R1cmVkIGVycm9yIGxvZ2dpbmdcclxuICAgICAgY29uc3QgZXJyb3JDb250ZXh0ID0ge1xyXG4gICAgICAgIHVybDogcmVxLnVybCxcclxuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXHJcbiAgICAgICAgZHVyYXRpb246IGAke2R1cmF0aW9ufW1zYCxcclxuICAgICAgICBzdGF0dXM6IGVycm9yLnN0YXR1cyxcclxuICAgICAgICBzdGF0dXNUZXh0OiBlcnJvci5zdGF0dXNUZXh0LFxyXG4gICAgICAgIHByb2JsZW1EZXRhaWxzOiBwcm9ibGVtLFxyXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAocHJvYmxlbSkge1xyXG4gICAgICAgIHN3aXRjaCAocHJvYmxlbS5zdGF0dXMpIHtcclxuICAgICAgICAgIGNhc2UgNDAwOlxyXG4gICAgICAgICAgICBsb2dnZXIud2Fybihg8J+bkSBCYWQgUmVxdWVzdCAoNDAwKSAtICR7cHJvYmxlbS50aXRsZX1gLCBlcnJvckNvbnRleHQpO1xyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KHByb2JsZW0udGl0bGUgfHwgJ0Vycm9yLkJhZFJlcXVlc3QnKSxcclxuICAgICAgICAgICAgICBwcm9ibGVtLmRldGFpbCA/IHRyYW5zbGF0ZS5pbnN0YW50KHByb2JsZW0uZGV0YWlsKSA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNDAxOlxyXG4gICAgICAgICAgICBsb2dnZXIud2Fybihg8J+UkCBVbmF1dGhvcml6ZWQgKDQwMSkgLSBSZWRpcmVjdGluZyB0byBsb2dpbmAsIGVycm9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLlVuYXV0aG9yaXplZCcpLFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5TZXNzaW9uRXhwaXJlZCcpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0b2tlbicpO1xyXG4gICAgICAgICAgICByb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKGDwn5qrIEZvcmJpZGRlbiAoNDAzKSAtIEFjY2VzcyBkZW5pZWRgLCBlcnJvckNvbnRleHQpO1xyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5Gb3JiaWRkZW4nKSxcclxuICAgICAgICAgICAgICBwcm9ibGVtLnRpdGxlIHx8IHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5Ob1Blcm1pc3Npb24nKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNDA0OlxyXG4gICAgICAgICAgICBsb2dnZXIud2Fybihg4p2TIE5vdCBGb3VuZCAoNDA0KSAtICR7cmVxLnVybH1gLCBlcnJvckNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNTAwOlxyXG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoYPCfkqUgU2VydmVyIEVycm9yICg1MDApIC0gJHtwcm9ibGVtLnRpdGxlfWAsIGVycm9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLlNlcnZlckVycm9yJyksXHJcbiAgICAgICAgICAgICAgcHJvYmxlbS5kZXRhaWwgfHwgcHJvYmxlbS50aXRsZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGDwn4yQIE5ldHdvcmsgRXJyb3IgLSBDYW5ub3QgY29ubmVjdCB0byBzZXJ2ZXJgLCBlcnJvckNvbnRleHQpO1xyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5Ob0Nvbm5lY3Rpb24nKSxcclxuICAgICAgICAgICAgICB0cmFuc2xhdGUuaW5zdGFudCgnRXJyb3IuTmV0d29ya1VuYXZhaWxhYmxlJylcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOKaoO+4jyBIVFRQIEVycm9yICR7cHJvYmxlbS5zdGF0dXN9IC0gJHtwcm9ibGVtLnRpdGxlfWAsIGVycm9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQocHJvYmxlbS50aXRsZSB8fCAnRXJyb3IuTm9Db25uZWN0aW9uJyksXHJcbiAgICAgICAgICAgICAgcHJvYmxlbS5kZXRhaWwgPyB0cmFuc2xhdGUuaW5zdGFudChwcm9ibGVtLmRldGFpbCkgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxvZ2dlci5lcnJvcihg4p2MIFVua25vd24gRXJyb3IgLSAke2Vycm9yLm1lc3NhZ2V9YCwgZXJyb3JDb250ZXh0KTtcclxuICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLk5vQ29ubmVjdGlvbicpLFxyXG4gICAgICAgICAgZXJyb3IubWVzc2FnZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHByb2JsZW0gPz8gZXJyb3IpO1xyXG4gICAgfSksXHJcbiAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcclxuICAgICAgLy8gT25seSBsb2cgc3VjY2Vzc2Z1bCByZXF1ZXN0cyBpbiBkZWJ1ZyBtb2RlIHRvIGF2b2lkIGNvbnNvbGUgc3BhbVxyXG4gICAgICBpZiAoZW52WydlbmFibGVEZWJ1ZyddKSB7XHJcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGDinIUgSFRUUCBTVUNDRVNTOiAke3JlcS5tZXRob2R9ICR7cmVxLnVybH0gKCR7ZHVyYXRpb259bXMpYCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgKTtcclxufTtcclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtaW50ZXJjZXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL2ludGVyY2VwdG9ycy9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtaW50ZXJjZXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elite.framework-ng.core-interceptors.mjs","sources":["../tmp-esm2022/interceptors/lib/interceptors-module.js","../tmp-esm2022/interceptors/lib/language.interceptor.js","../tmp-esm2022/interceptors/lib/api.interceptor.js","../tmp-esm2022/interceptors/elite.framework-ng.core-interceptors.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class InterceptorsModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: InterceptorsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3JzLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcuY29yZS9pbnRlcmNlcHRvcnMvc3JjL2xpYi9pbnRlcmNlcHRvcnMtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sa0JBQWtCO3VHQUFsQixrQkFBa0I7d0dBQWxCLGtCQUFrQixZQUZuQixZQUFZO3dHQUVYLGtCQUFrQixZQUZuQixZQUFZOzsyRkFFWCxrQkFBa0I7a0JBSDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSW50ZXJjZXB0b3JzTW9kdWxlIHt9XG4iXX0=","// language.interceptor.fn.ts\nimport { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nexport function languageInterceptor(req, next) {\n const translateService = inject(TranslateService);\n // Get the current language (fallback to 'ar')\n const currentLanguage = translateService.currentLang || 'ar';\n // Clone request and add Accept-Language header\n const clonedReq = req.clone({\n setHeaders: {\n 'Accept-Language': currentLanguage\n }\n });\n return next(clonedReq);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLmNvcmUvaW50ZXJjZXB0b3JzL3NyYy9saWIvbGFuZ3VhZ2UuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxHQUFxQixFQUNyQixJQUFtQjtJQUVuQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWxELDhDQUE4QztJQUM5QyxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDO0lBRTdELCtDQUErQztJQUMvQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzFCLFVBQVUsRUFBRTtZQUNWLGlCQUFpQixFQUFFLGVBQWU7U0FDbkM7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbGFuZ3VhZ2UuaW50ZXJjZXB0b3IuZm4udHNcclxuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0LCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyRm4gfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxhbmd1YWdlSW50ZXJjZXB0b3IoXHJcbiAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gIG5leHQ6IEh0dHBIYW5kbGVyRm5cclxuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gIGNvbnN0IHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gIC8vIEdldCB0aGUgY3VycmVudCBsYW5ndWFnZSAoZmFsbGJhY2sgdG8gJ2FyJylcclxuICBjb25zdCBjdXJyZW50TGFuZ3VhZ2UgPSB0cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nIHx8ICdhcic7XHJcblxyXG4gIC8vIENsb25lIHJlcXVlc3QgYW5kIGFkZCBBY2NlcHQtTGFuZ3VhZ2UgaGVhZGVyXHJcbiAgY29uc3QgY2xvbmVkUmVxID0gcmVxLmNsb25lKHtcclxuICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGN1cnJlbnRMYW5ndWFnZVxyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gbmV4dChjbG9uZWRSZXEpO1xyXG59XHJcbiJdfQ==","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LoggerService, SwalService } from '@elite.framework/ng.core/services';\nimport { ENVIRONMENT } from '@elite.framework/ng.core/tokens';\nimport { TranslateService } from '@ngx-translate/core';\nimport { throwError } from 'rxjs';\nimport { catchError, finalize } from 'rxjs/operators';\nexport const apiInterceptor = (req, next) => {\n const env = inject(ENVIRONMENT);\n const router = inject(Router);\n const swal = inject(SwalService);\n const translate = inject(TranslateService);\n const logger = inject(LoggerService);\n const apiUrl = env.apiUrl;\n let newReq = req;\n // Log request details (only in debug mode for performance)\n if (env['enableDebug']) {\n logger.debug(`➡️ HTTP REQUEST: ${req.method} ${req.url}`, {\n headers: Object.fromEntries(req.headers.keys().map(key => [key, req.headers.get(key)])),\n timestamp: new Date().toISOString()\n });\n }\n const startTime = Date.now();\n return next(newReq).pipe(catchError((error) => {\n const duration = Date.now() - startTime;\n let problem = null;\n if (error.error && typeof error.error === 'object') {\n problem = error.error;\n }\n else if (typeof error.error === 'string') {\n try {\n problem = JSON.parse(error.error);\n }\n catch {\n problem = null;\n }\n }\n // Structured error logging\n const errorContext = {\n url: req.url,\n method: req.method,\n duration: `${duration}ms`,\n status: error.status,\n statusText: error.statusText,\n problemDetails: problem,\n timestamp: new Date().toISOString()\n };\n if (problem) {\n switch (problem.status) {\n case 400:\n logger.warn(`🛑 Bad Request (400) - ${problem.title}`, errorContext);\n swal.error(translate.instant(problem.title || 'Error.BadRequest'), problem.detail ? translate.instant(problem.detail) : undefined);\n break;\n case 401:\n logger.warn(`🔐 Unauthorized (401) - Redirecting to login`, errorContext);\n swal.error(translate.instant('Error.Unauthorized'), translate.instant('Error.SessionExpired'));\n localStorage.removeItem('token');\n router.navigate(['/login']);\n break;\n case 403:\n logger.warn(`🚫 Forbidden (403) - Access denied`, errorContext);\n swal.error(translate.instant('Error.Forbidden'), problem.title || translate.instant('Error.NoPermission'));\n break;\n case 404:\n logger.warn(`❓ Not Found (404) - ${req.url}`, errorContext);\n break;\n case 500:\n logger.error(`💥 Server Error (500) - ${problem.title}`, errorContext);\n swal.error(translate.instant('Error.ServerError'), problem.detail || problem.title);\n break;\n case 0:\n logger.error(`🌐 Network Error - Cannot connect to server`, errorContext);\n swal.error(translate.instant('Error.NoConnection'), translate.instant('Error.NetworkUnavailable'));\n break;\n default:\n logger.error(`⚠️ HTTP Error ${problem.status} - ${problem.title}`, errorContext);\n swal.error(translate.instant(problem.title || 'Error.ServerError'), problem.detail ? translate.instant(problem.detail) : undefined);\n break;\n }\n }\n else {\n logger.error(`❌ Unknown Error - ${error.message}`, errorContext);\n swal.error(translate.instant('Error.Unexpected'), error.message);\n }\n return throwError(() => problem ?? error);\n }), finalize(() => {\n const duration = Date.now() - startTime;\n // Only log successful requests in debug mode to avoid console spam\n if (env['enableDebug']) {\n logger.debug(`✅ HTTP SUCCESS: ${req.method} ${req.url} (${duration}ms)`);\n }\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL2ludGVyY2VwdG9ycy9zcmMvbGliL2FwaS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFXdEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFzQixDQUMvQyxHQUFxQixFQUNyQixJQUFtQixFQUNTLEVBQUU7SUFDOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXJDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDMUIsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBRWpCLDJEQUEyRDtJQUMzRCxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFB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Q0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUMvRCxDQUFDO29CQUNGLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLEtBQUssQ0FDUixTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQ3JDLEtBQUssQ0FBQyxPQUFPLENBQ2QsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFDeEMsbUVBQW1FO1FBQ25FLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLFFBQVEsS0FBSyxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBJbnRlcmNlcHRvckZuLFxyXG4gIEh0dHBSZXF1ZXN0LFxyXG4gIEh0dHBIYW5kbGVyRm4sXHJcbiAgSHR0cEV2ZW50LFxyXG4gIEh0dHBFcnJvclJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSwgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS90b2tlbnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2JsZW1EZXRhaWxzUmVzcG9uc2Uge1xyXG4gIHR5cGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgc3RhdHVzOiBudW1iZXI7XHJcbiAgZGV0YWlsPzogc3RyaW5nIHwgbnVsbDtcclxuICBpbnN0YW5jZT86IHN0cmluZztcclxuICB0cmFjZUlkPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYXBpSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKFxyXG4gIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcclxuICBuZXh0OiBIdHRwSGFuZGxlckZuXHJcbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0+IHtcclxuICBjb25zdCBlbnYgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xyXG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIGNvbnN0IHN3YWwgPSBpbmplY3QoU3dhbFNlcnZpY2UpO1xyXG4gIGNvbnN0IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBjb25zdCBsb2dnZXIgPSBpbmplY3QoTG9nZ2VyU2VydmljZSk7XHJcblxyXG4gIGNvbnN0IGFwaVVybCA9IGVudi5hcGlVcmw7XHJcbiAgbGV0IG5ld1JlcSA9IHJlcTtcclxuXHJcbiAgLy8gTG9nIHJlcXVlc3QgZGV0YWlscyAob25seSBpbiBkZWJ1ZyBtb2RlIGZvciBwZXJmb3JtYW5jZSlcclxuICBpZiAoZW52WydlbmFibGVEZWJ1ZyddKSB7XHJcbiAgICBsb2dnZXIuZGVidWcoYOKeoe+4jyBIVFRQIFJFUVVFU1Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWAsIHtcclxuICAgICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKHJlcS5oZWFkZXJzLmtleXMoKS5tYXAoa2V5ID0+IFtrZXksIHJlcS5oZWFkZXJzLmdldChrZXkpXSkpLFxyXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG5cclxuICByZXR1cm4gbmV4dChuZXdSZXEpLnBpcGUoXHJcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xyXG4gICAgICBsZXQgcHJvYmxlbTogUHJvYmxlbURldGFpbHNSZXNwb25zZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKGVycm9yLmVycm9yICYmIHR5cGVvZiBlcnJvci5lcnJvciA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBwcm9ibGVtID0gZXJyb3IuZXJyb3IgYXMgUHJvYmxlbURldGFpbHNSZXNwb25zZTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IuZXJyb3IgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHByb2JsZW0gPSBKU09OLnBhcnNlKGVycm9yLmVycm9yKSBhcyBQcm9ibGVtRGV0YWlsc1Jlc3BvbnNlO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgcHJvYmxlbSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTdHJ1Y3R1cmVkIGVycm9yIGxvZ2dpbmdcclxuICAgICAgY29uc3QgZXJyb3JDb250ZXh0ID0ge1xyXG4gICAgICAgIHVybDogcmVxLnVybCxcclxuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXHJcbiAgICAgICAgZHVyYXRpb246IGAke2R1cmF0aW9ufW1zYCxcclxuICAgICAgICBzdGF0dXM6IGVycm9yLnN0YXR1cyxcclxuICAgICAgICBzdGF0dXNUZXh0OiBlcnJvci5zdGF0dXNUZXh0LFxyXG4gICAgICAgIHByb2JsZW1EZXRhaWxzOiBwcm9ibGVtLFxyXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAocHJvYmxlbSkge1xyXG4gICAgICAgIHN3aXRjaCAocHJvYmxlbS5zdGF0dXMpIHtcclxuICAgICAgICAgIGNhc2UgNDAwOlxyXG4gICAgICAgICAgICBsb2dnZXIud2Fybihg8J+bkSBCYWQgUmVxdWVzdCAoNDAwKSAtICR7cHJvYmxlbS50aXRsZX1gLCBlcnJvckNvbnRleHQpO1xyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KHByb2JsZW0udGl0bGUgfHwgJ0Vycm9yLkJhZFJlcXVlc3QnKSxcclxuICAgICAgICAgICAgICBwcm9ibGVtLmRldGFpbCA/IHRyYW5zbGF0ZS5pbnN0YW50KHByb2JsZW0uZGV0YWlsKSA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNDAxOlxyXG4gICAgICAgICAgICBsb2dnZXIud2Fybihg8J+UkCBVbmF1dGhvcml6ZWQgKDQwMSkgLSBSZWRpcmVjdGluZyB0byBsb2dpbmAsIGVycm9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLlVuYXV0aG9yaXplZCcpLFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5TZXNzaW9uRXhwaXJlZCcpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0b2tlbicpO1xyXG4gICAgICAgICAgICByb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKGDwn5qrIEZvcmJpZGRlbiAoNDAzKSAtIEFjY2VzcyBkZW5pZWRgLCBlcnJvckNvbnRleHQpO1xyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5Gb3JiaWRkZW4nKSxcclxuICAgICAgICAgICAgICBwcm9ibGVtLnRpdGxlIHx8IHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5Ob1Blcm1pc3Npb24nKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNDA0OlxyXG4gICAgICAgICAgICBsb2dnZXIud2Fybihg4p2TIE5vdCBGb3VuZCAoNDA0KSAtICR7cmVxLnVybH1gLCBlcnJvckNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNTAwOlxyXG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoYPCfkqUgU2VydmVyIEVycm9yICg1MDApIC0gJHtwcm9ibGVtLnRpdGxlfWAsIGVycm9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ0Vycm9yLlNlcnZlckVycm9yJyksXHJcbiAgICAgICAgICAgICAgcHJvYmxlbS5kZXRhaWwgfHwgcHJvYmxlbS50aXRsZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGDwn4yQIE5ldHdvcmsgRXJyb3IgLSBDYW5ub3QgY29ubmVjdCB0byBzZXJ2ZXJgLCBlcnJvckNvbnRleHQpO1xyXG4gICAgICAgICAgICBzd2FsLmVycm9yKFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdFcnJvci5Ob0Nvbm5lY3Rpb24nKSxcclxuICAgICAgICAgICAgICB0cmFuc2xhdGUuaW5zdGFudCgnRXJyb3IuTmV0d29ya1VuYXZhaWxhYmxlJylcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOKaoO+4jyBIVFRQIEVycm9yICR7cHJvYmxlbS5zdGF0dXN9IC0gJHtwcm9ibGVtLnRpdGxlfWAsIGVycm9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQocHJvYmxlbS50aXRsZSB8fCAnRXJyb3IuU2VydmVyRXJyb3InKSxcclxuICAgICAgICAgICAgICBwcm9ibGVtLmRldGFpbCA/IHRyYW5zbGF0ZS5pbnN0YW50KHByb2JsZW0uZGV0YWlsKSA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbG9nZ2VyLmVycm9yKGDinYwgVW5rbm93biBFcnJvciAtICR7ZXJyb3IubWVzc2FnZX1gLCBlcnJvckNvbnRleHQpO1xyXG4gICAgICAgIHN3YWwuZXJyb3IoXHJcbiAgICAgICAgICB0cmFuc2xhdGUuaW5zdGFudCgnRXJyb3IuVW5leHBlY3RlZCcpLFxyXG4gICAgICAgICAgZXJyb3IubWVzc2FnZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHByb2JsZW0gPz8gZXJyb3IpO1xyXG4gICAgfSksXHJcbiAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcclxuICAgICAgLy8gT25seSBsb2cgc3VjY2Vzc2Z1bCByZXF1ZXN0cyBpbiBkZWJ1ZyBtb2RlIHRvIGF2b2lkIGNvbnNvbGUgc3BhbVxyXG4gICAgICBpZiAoZW52WydlbmFibGVEZWJ1ZyddKSB7XHJcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGDinIUgSFRUUCBTVUNDRVNTOiAke3JlcS5tZXRob2R9ICR7cmVxLnVybH0gKCR7ZHVyYXRpb259bXMpYCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgKTtcclxufTtcclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtaW50ZXJjZXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy5jb3JlL2ludGVyY2VwdG9ycy9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLmNvcmUtaW50ZXJjZXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
@@ -114,6 +114,11 @@ class BaseService {
|
|
|
114
114
|
url: this.buildUrl(id),
|
|
115
115
|
body: input,
|
|
116
116
|
}, { apiName: this.apiName });
|
|
117
|
+
patch = (id, input) => this.restService.request({
|
|
118
|
+
method: 'PATCH',
|
|
119
|
+
url: this.buildUrl(id),
|
|
120
|
+
body: input,
|
|
121
|
+
}, { apiName: this.apiName });
|
|
117
122
|
delete = (id) => this.restService.request({
|
|
118
123
|
method: 'DELETE',
|
|
119
124
|
url: this.buildUrl(id),
|
|
@@ -834,7 +839,9 @@ class QueryParser {
|
|
|
834
839
|
const params = {
|
|
835
840
|
filters: [],
|
|
836
841
|
orderBy: [],
|
|
837
|
-
groupBy: []
|
|
842
|
+
groupBy: [],
|
|
843
|
+
select: [],
|
|
844
|
+
aggregates: []
|
|
838
845
|
};
|
|
839
846
|
if (!queryString)
|
|
840
847
|
return params;
|
|
@@ -847,7 +854,13 @@ class QueryParser {
|
|
|
847
854
|
this.parseOrderBy(part.substring('$orderby='.length), params);
|
|
848
855
|
}
|
|
849
856
|
else if (part.startsWith('$groupby=')) {
|
|
850
|
-
|
|
857
|
+
this.parseGroupBy(part.substring('$groupby='.length), params);
|
|
858
|
+
}
|
|
859
|
+
else if (part.startsWith('$select=')) {
|
|
860
|
+
this.parseSelect(part.substring('$select='.length), params);
|
|
861
|
+
}
|
|
862
|
+
else if (part.startsWith('$aggregate=')) {
|
|
863
|
+
this.parseAggregate(part.substring('$aggregate='.length), params);
|
|
851
864
|
}
|
|
852
865
|
else if (part.startsWith('$top=')) {
|
|
853
866
|
params.top = Number(part.substring('$top='.length));
|
|
@@ -858,6 +871,9 @@ class QueryParser {
|
|
|
858
871
|
else if (part.startsWith('$expand=')) {
|
|
859
872
|
params.expand = part.substring('$expand='.length).split(',').map(f => f.trim());
|
|
860
873
|
}
|
|
874
|
+
else if (part.startsWith('$count=')) {
|
|
875
|
+
params.includeCount = part.substring('$count='.length).toLowerCase() === 'true';
|
|
876
|
+
}
|
|
861
877
|
}
|
|
862
878
|
return params;
|
|
863
879
|
}
|
|
@@ -872,7 +888,16 @@ class QueryParser {
|
|
|
872
888
|
parts.push(`$orderby=${encodeURIComponent(orderByStr)}`);
|
|
873
889
|
}
|
|
874
890
|
if (params.groupBy?.length) {
|
|
875
|
-
|
|
891
|
+
const groupByStr = this.buildGroupByString(params.groupBy);
|
|
892
|
+
parts.push(`$groupby=${encodeURIComponent(groupByStr)}`);
|
|
893
|
+
}
|
|
894
|
+
if (params.select?.length) {
|
|
895
|
+
const selectStr = this.buildSelectString(params.select);
|
|
896
|
+
parts.push(`$select=${encodeURIComponent(selectStr)}`);
|
|
897
|
+
}
|
|
898
|
+
if (params.aggregates?.length) {
|
|
899
|
+
const aggregateStr = this.buildAggregateString(params.aggregates);
|
|
900
|
+
parts.push(`$aggregate=${encodeURIComponent(aggregateStr)}`);
|
|
876
901
|
}
|
|
877
902
|
if (params.top !== undefined) {
|
|
878
903
|
parts.push(`$top=${params.top}`);
|
|
@@ -883,6 +908,9 @@ class QueryParser {
|
|
|
883
908
|
if (params.expand?.length) {
|
|
884
909
|
parts.push(`$expand=${encodeURIComponent(params.expand.join(','))}`);
|
|
885
910
|
}
|
|
911
|
+
if (params.includeCount !== undefined) {
|
|
912
|
+
parts.push(`$count=${params.includeCount}`);
|
|
913
|
+
}
|
|
886
914
|
return parts.join('&');
|
|
887
915
|
}
|
|
888
916
|
static buildFilterString(filters) {
|
|
@@ -909,9 +937,71 @@ class QueryParser {
|
|
|
909
937
|
}
|
|
910
938
|
}).join(' ');
|
|
911
939
|
}
|
|
940
|
+
static buildGroupByString(groupBy) {
|
|
941
|
+
return groupBy
|
|
942
|
+
.sort((a, b) => (a.order || 0) - (b.order || 0))
|
|
943
|
+
.map(group => {
|
|
944
|
+
let groupStr = group.propertyName;
|
|
945
|
+
// Add display name if provided
|
|
946
|
+
if (group.displayName) {
|
|
947
|
+
groupStr += ` as ${group.displayName}`;
|
|
948
|
+
}
|
|
949
|
+
// Add metadata for UI
|
|
950
|
+
const metadata = [];
|
|
951
|
+
if (group.showTotal !== undefined) {
|
|
952
|
+
metadata.push(`showTotal:${group.showTotal}`);
|
|
953
|
+
}
|
|
954
|
+
if (group.totalBackground) {
|
|
955
|
+
metadata.push(`totalBg:${group.totalBackground}`);
|
|
956
|
+
}
|
|
957
|
+
if (group.groupHeaderBackground) {
|
|
958
|
+
metadata.push(`headerBg:${group.groupHeaderBackground}`);
|
|
959
|
+
}
|
|
960
|
+
if (metadata.length > 0) {
|
|
961
|
+
groupStr += `(${metadata.join(';')})`;
|
|
962
|
+
}
|
|
963
|
+
return groupStr;
|
|
964
|
+
})
|
|
965
|
+
.join(',');
|
|
966
|
+
}
|
|
967
|
+
static buildSelectString(select) {
|
|
968
|
+
return select
|
|
969
|
+
.sort((a, b) => (a.order || 0) - (b.order || 0))
|
|
970
|
+
.map(item => {
|
|
971
|
+
let selectStr = item.propertyName;
|
|
972
|
+
// Add display name if provided
|
|
973
|
+
if (item.displayName) {
|
|
974
|
+
selectStr += ` as ${item.displayName}`;
|
|
975
|
+
}
|
|
976
|
+
// Add aggregate function if provided
|
|
977
|
+
if (item.aggregateFunction) {
|
|
978
|
+
selectStr += ` with ${item.aggregateFunction}`;
|
|
979
|
+
}
|
|
980
|
+
// Add visibility metadata
|
|
981
|
+
const metadata = [];
|
|
982
|
+
if (item.isVisible !== undefined) {
|
|
983
|
+
metadata.push(`visible:${item.isVisible}`);
|
|
984
|
+
}
|
|
985
|
+
if (metadata.length > 0) {
|
|
986
|
+
selectStr += `(${metadata.join(';')})`;
|
|
987
|
+
}
|
|
988
|
+
return selectStr;
|
|
989
|
+
})
|
|
990
|
+
.join(',');
|
|
991
|
+
}
|
|
992
|
+
static buildAggregateString(aggregates) {
|
|
993
|
+
return aggregates
|
|
994
|
+
.map(agg => {
|
|
995
|
+
let aggStr = `${agg.aggregateFunction}(${agg.propertyName})`;
|
|
996
|
+
if (agg.alias) {
|
|
997
|
+
aggStr += ` as ${agg.alias}`;
|
|
998
|
+
}
|
|
999
|
+
return aggStr;
|
|
1000
|
+
})
|
|
1001
|
+
.join(',');
|
|
1002
|
+
}
|
|
912
1003
|
static parseFilter(filterString, params) {
|
|
913
1004
|
const decodedString = decodeURIComponent(filterString);
|
|
914
|
-
// Handle individual conditions and groups
|
|
915
1005
|
const groups = [];
|
|
916
1006
|
// Split by top-level AND/OR operators
|
|
917
1007
|
const topLevelPattern = /(?:^|\s)(and|or)\s+(?=(?:[^()]*\([^()]*\))*[^()]*$)/gi;
|
|
@@ -945,19 +1035,18 @@ class QueryParser {
|
|
|
945
1035
|
}
|
|
946
1036
|
if (conditions.length > 0) {
|
|
947
1037
|
const group = {
|
|
948
|
-
logicalOperator: 'and',
|
|
1038
|
+
logicalOperator: 'and',
|
|
949
1039
|
conditions: conditions
|
|
950
1040
|
};
|
|
951
1041
|
// For groups after the first, set the groupLogicalOperator
|
|
952
1042
|
if (index > 0) {
|
|
953
1043
|
group.groupLogicalOperator = segment.operator?.toLowerCase() || 'and';
|
|
954
1044
|
}
|
|
955
|
-
//
|
|
1045
|
+
// Detect the logical operator used within the group
|
|
956
1046
|
if (conditions.length === 1 && segment.condition.includes(' or ')) {
|
|
957
1047
|
group.logicalOperator = 'or';
|
|
958
1048
|
}
|
|
959
1049
|
else if (conditions.length > 1) {
|
|
960
|
-
// Detect the logical operator used within the group
|
|
961
1050
|
group.logicalOperator = segment.condition.toLowerCase().includes(' or ') ? 'or' : 'and';
|
|
962
1051
|
}
|
|
963
1052
|
groups.push(group);
|
|
@@ -967,8 +1056,8 @@ class QueryParser {
|
|
|
967
1056
|
}
|
|
968
1057
|
static parseConditions(conditionString) {
|
|
969
1058
|
const conditions = [];
|
|
970
|
-
//
|
|
971
|
-
const pattern = /(\w+)\s+(eq|ne|gt|ge|lt|le|contains|startswith|endswith)\s+('[^']*'|\d+|true|false)/gi;
|
|
1059
|
+
// Enhanced pattern to handle more operators and complex values
|
|
1060
|
+
const pattern = /(\w+(?:\.\w+)*)\s+(eq|ne|gt|ge|lt|le|contains|startswith|endswith|in|notin)\s+('[^']*'|\[[^\]]*\]|\d+|true|false|null)/gi;
|
|
972
1061
|
let match;
|
|
973
1062
|
while ((match = pattern.exec(conditionString)) !== null) {
|
|
974
1063
|
const [, field, operator, rawValue] = match;
|
|
@@ -976,6 +1065,13 @@ class QueryParser {
|
|
|
976
1065
|
if (rawValue.startsWith("'") && rawValue.endsWith("'")) {
|
|
977
1066
|
value = rawValue.slice(1, -1).replace(/''/g, "'");
|
|
978
1067
|
}
|
|
1068
|
+
else if (rawValue.startsWith('[') && rawValue.endsWith(']')) {
|
|
1069
|
+
// Handle array values for IN/NOT IN operators
|
|
1070
|
+
value = rawValue.slice(1, -1).split(',').map(v => {
|
|
1071
|
+
const trimmed = v.trim().replace(/^'|'$/g, '');
|
|
1072
|
+
return isNaN(Number(trimmed)) ? trimmed : Number(trimmed);
|
|
1073
|
+
});
|
|
1074
|
+
}
|
|
979
1075
|
else if (!isNaN(Number(rawValue))) {
|
|
980
1076
|
value = Number(rawValue);
|
|
981
1077
|
}
|
|
@@ -985,6 +1081,9 @@ class QueryParser {
|
|
|
985
1081
|
else if (rawValue.toLowerCase() === 'false') {
|
|
986
1082
|
value = false;
|
|
987
1083
|
}
|
|
1084
|
+
else if (rawValue.toLowerCase() === 'null') {
|
|
1085
|
+
value = null;
|
|
1086
|
+
}
|
|
988
1087
|
conditions.push({
|
|
989
1088
|
field: field.trim(),
|
|
990
1089
|
operator: operator.trim().toLowerCase(),
|
|
@@ -1006,6 +1105,173 @@ class QueryParser {
|
|
|
1006
1105
|
});
|
|
1007
1106
|
}
|
|
1008
1107
|
}
|
|
1108
|
+
static parseGroupBy(groupByString, params) {
|
|
1109
|
+
const decodedString = decodeURIComponent(groupByString);
|
|
1110
|
+
const groups = decodedString.split(',');
|
|
1111
|
+
params.groupBy = groups.map((groupStr, index) => {
|
|
1112
|
+
const group = {
|
|
1113
|
+
propertyName: '',
|
|
1114
|
+
order: index
|
|
1115
|
+
};
|
|
1116
|
+
// Check for metadata in parentheses
|
|
1117
|
+
const metadataMatch = groupStr.match(/^(.*?)\((.*)\)$/);
|
|
1118
|
+
let baseStr = groupStr;
|
|
1119
|
+
let metadataStr = '';
|
|
1120
|
+
if (metadataMatch) {
|
|
1121
|
+
baseStr = metadataMatch[1];
|
|
1122
|
+
metadataStr = metadataMatch[2];
|
|
1123
|
+
}
|
|
1124
|
+
// Check for display name alias
|
|
1125
|
+
const aliasMatch = baseStr.match(/^(.*?)\s+as\s+(.*)$/);
|
|
1126
|
+
if (aliasMatch) {
|
|
1127
|
+
group.propertyName = aliasMatch[1].trim();
|
|
1128
|
+
group.displayName = aliasMatch[2].trim();
|
|
1129
|
+
}
|
|
1130
|
+
else {
|
|
1131
|
+
group.propertyName = baseStr.trim();
|
|
1132
|
+
}
|
|
1133
|
+
// Parse metadata
|
|
1134
|
+
if (metadataStr) {
|
|
1135
|
+
const metadataParts = metadataStr.split(';');
|
|
1136
|
+
metadataParts.forEach(part => {
|
|
1137
|
+
const [key, value] = part.split(':');
|
|
1138
|
+
switch (key) {
|
|
1139
|
+
case 'showTotal':
|
|
1140
|
+
group.showTotal = value.toLowerCase() === 'true';
|
|
1141
|
+
break;
|
|
1142
|
+
case 'totalBg':
|
|
1143
|
+
group.totalBackground = value;
|
|
1144
|
+
break;
|
|
1145
|
+
case 'headerBg':
|
|
1146
|
+
group.groupHeaderBackground = value;
|
|
1147
|
+
break;
|
|
1148
|
+
}
|
|
1149
|
+
});
|
|
1150
|
+
}
|
|
1151
|
+
return group;
|
|
1152
|
+
});
|
|
1153
|
+
}
|
|
1154
|
+
static parseSelect(selectString, params) {
|
|
1155
|
+
const decodedString = decodeURIComponent(selectString);
|
|
1156
|
+
const items = decodedString.split(',');
|
|
1157
|
+
params.select = items.map((itemStr, index) => {
|
|
1158
|
+
const item = {
|
|
1159
|
+
propertyName: '',
|
|
1160
|
+
isVisible: true,
|
|
1161
|
+
order: index
|
|
1162
|
+
};
|
|
1163
|
+
// Check for metadata in parentheses
|
|
1164
|
+
const metadataMatch = itemStr.match(/^(.*?)\((.*)\)$/);
|
|
1165
|
+
let baseStr = itemStr;
|
|
1166
|
+
let metadataStr = '';
|
|
1167
|
+
if (metadataMatch) {
|
|
1168
|
+
baseStr = metadataMatch[1];
|
|
1169
|
+
metadataStr = metadataMatch[2];
|
|
1170
|
+
}
|
|
1171
|
+
// Check for display name alias and aggregate function
|
|
1172
|
+
const aliasMatch = baseStr.match(/^(.*?)(?:\s+as\s+(.*?))?(?:\s+with\s+(\w+))?$/);
|
|
1173
|
+
if (aliasMatch) {
|
|
1174
|
+
item.propertyName = aliasMatch[1].trim();
|
|
1175
|
+
if (aliasMatch[2]) {
|
|
1176
|
+
item.displayName = aliasMatch[2].trim();
|
|
1177
|
+
}
|
|
1178
|
+
if (aliasMatch[3]) {
|
|
1179
|
+
item.aggregateFunction = aliasMatch[3].trim();
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
else {
|
|
1183
|
+
item.propertyName = baseStr.trim();
|
|
1184
|
+
}
|
|
1185
|
+
// Parse metadata
|
|
1186
|
+
if (metadataStr) {
|
|
1187
|
+
const metadataParts = metadataStr.split(';');
|
|
1188
|
+
metadataParts.forEach(part => {
|
|
1189
|
+
const [key, value] = part.split(':');
|
|
1190
|
+
if (key === 'visible') {
|
|
1191
|
+
item.isVisible = value.toLowerCase() === 'true';
|
|
1192
|
+
}
|
|
1193
|
+
});
|
|
1194
|
+
}
|
|
1195
|
+
return item;
|
|
1196
|
+
});
|
|
1197
|
+
}
|
|
1198
|
+
static parseAggregate(aggregateString, params) {
|
|
1199
|
+
const decodedString = decodeURIComponent(aggregateString);
|
|
1200
|
+
const aggregates = decodedString.split(',');
|
|
1201
|
+
params.aggregates = aggregates.map(aggStr => {
|
|
1202
|
+
const agg = {
|
|
1203
|
+
propertyName: '',
|
|
1204
|
+
aggregateFunction: ''
|
|
1205
|
+
};
|
|
1206
|
+
// Match pattern: function(property) as alias
|
|
1207
|
+
const match = aggStr.match(/^(\w+)\((\w+)\)(?:\s+as\s+(\w+))?$/);
|
|
1208
|
+
if (match) {
|
|
1209
|
+
agg.aggregateFunction = match[1];
|
|
1210
|
+
agg.propertyName = match[2];
|
|
1211
|
+
if (match[3]) {
|
|
1212
|
+
agg.alias = match[3];
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
return agg;
|
|
1216
|
+
});
|
|
1217
|
+
}
|
|
1218
|
+
// Helper method to convert QueryParameters to ODataQueryParameters (C# equivalent)
|
|
1219
|
+
static toODataQueryParameters(params) {
|
|
1220
|
+
return {
|
|
1221
|
+
Filters: params.filters.map(group => ({
|
|
1222
|
+
LogicalOperator: group.logicalOperator,
|
|
1223
|
+
GroupLogicalOperator: group.groupLogicalOperator,
|
|
1224
|
+
Conditions: group.conditions.map(cond => ({
|
|
1225
|
+
Field: cond.field,
|
|
1226
|
+
Operator: cond.operator,
|
|
1227
|
+
Value: cond.value
|
|
1228
|
+
}))
|
|
1229
|
+
})),
|
|
1230
|
+
OrderBy: params.orderBy?.map(order => ({
|
|
1231
|
+
Field: order.field,
|
|
1232
|
+
Direction: order.direction
|
|
1233
|
+
})) || [],
|
|
1234
|
+
GroupBy: params.groupBy?.map(group => ({
|
|
1235
|
+
PropertyName: group.propertyName,
|
|
1236
|
+
DisplayName: group.displayName,
|
|
1237
|
+
ShowTotal: group.showTotal ?? true,
|
|
1238
|
+
TotalBackground: group.totalBackground,
|
|
1239
|
+
GroupHeaderBackground: group.groupHeaderBackground,
|
|
1240
|
+
Order: group.order
|
|
1241
|
+
})) || [],
|
|
1242
|
+
Select: params.select?.map(sel => ({
|
|
1243
|
+
PropertyName: sel.propertyName,
|
|
1244
|
+
DisplayName: sel.displayName,
|
|
1245
|
+
AggregateFunction: sel.aggregateFunction,
|
|
1246
|
+
IsVisible: sel.isVisible ?? true,
|
|
1247
|
+
Order: sel.order
|
|
1248
|
+
})) || [],
|
|
1249
|
+
Aggregates: params.aggregates?.map(agg => ({
|
|
1250
|
+
PropertyName: agg.propertyName,
|
|
1251
|
+
AggregateFunction: agg.aggregateFunction,
|
|
1252
|
+
Alias: agg.alias
|
|
1253
|
+
})) || [],
|
|
1254
|
+
Top: params.top,
|
|
1255
|
+
Skip: params.skip,
|
|
1256
|
+
Expand: params.expand,
|
|
1257
|
+
IncludeCount: params.includeCount
|
|
1258
|
+
};
|
|
1259
|
+
}
|
|
1260
|
+
// Helper method to create query parameters from UI model
|
|
1261
|
+
static fromUIModel(model) {
|
|
1262
|
+
const params = {
|
|
1263
|
+
filters: model.advancedFilters || [],
|
|
1264
|
+
orderBy: model.sorting || [],
|
|
1265
|
+
groupBy: model.grouping || [],
|
|
1266
|
+
select: model.columns || [],
|
|
1267
|
+
aggregates: model.aggregates || [],
|
|
1268
|
+
top: model.pagination?.top,
|
|
1269
|
+
skip: model.pagination?.skip,
|
|
1270
|
+
expand: model.expand,
|
|
1271
|
+
includeCount: model.pagination?.includeCount
|
|
1272
|
+
};
|
|
1273
|
+
return params;
|
|
1274
|
+
}
|
|
1009
1275
|
}
|
|
1010
1276
|
|
|
1011
1277
|
/**
|