@acontplus/ng-infrastructure 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acontplus-ng-infrastructure.mjs","sources":["../tmp-esm2022/lib/interfaces/token-provider.interface.js","../tmp-esm2022/lib/interceptors/api.interceptor.js","../tmp-esm2022/lib/services/logging.service.js","../tmp-esm2022/lib/services/tenant.service.js","../tmp-esm2022/lib/services/correlation.service.js","../tmp-esm2022/lib/interceptors/http-context.interceptor.js","../tmp-esm2022/lib/interceptors/spinner.interceptor.js","../tmp-esm2022/lib/repositories/base-http.repository.js","../tmp-esm2022/lib/repositories/generic.repository.js","../tmp-esm2022/lib/repositories/repository-factory.js","../tmp-esm2022/lib/adapters/angular-http.adapter.js","../tmp-esm2022/lib/services/core-config.service.js","../tmp-esm2022/lib/use-cases/base.use-case.js","../tmp-esm2022/lib/use-cases/commands.js","../tmp-esm2022/lib/use-cases/queries.js","../tmp-esm2022/acontplus-ng-infrastructure.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const TOKEN_PROVIDER = new InjectionToken('TOKEN_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcHJvdmlkZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9pbnRlcmZhY2VzL3Rva2VuLXByb3ZpZGVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVS9DLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyRGF0YSB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRva2VuUHJvdmlkZXIge1xuICBnZXRUb2tlbigpOiBzdHJpbmcgfCBudWxsO1xuICBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbjtcbiAgZ2V0UmVmcmVzaFRva2VuPygpOiBzdHJpbmcgfCBudWxsO1xuICBnZXRVc2VyRGF0YSgpOiBVc2VyRGF0YSB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBUT0tFTl9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJVG9rZW5Qcm92aWRlcj4oJ1RPS0VOX1BST1ZJREVSJyk7XG4iXX0=","import { HttpResponse, HttpContextToken, } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { catchError, map, retry } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\nimport { NotificationService } from '@acontplus/ng-notifications';\nimport { TOKEN_PROVIDER } from '../interfaces/token-provider.interface';\n// A token to use with HttpContext for skipping notifications on specific requests.\nexport const SKIP_NOTIFICATION = new HttpContextToken(() => false);\n// A token to use with HttpContext for forcing notifications on specific requests (overrides exclusion patterns).\nexport const SHOW_NOTIFICATIONS = new HttpContextToken(() => undefined);\nexport const apiInterceptor = (req, next) => {\n const toastr = inject(NotificationService);\n const tokenProvider = inject(TOKEN_PROVIDER, { optional: true });\n // Add authorization header if token is available\n let modifiedReq = req;\n const token = tokenProvider?.getToken();\n if (token) {\n modifiedReq = req.clone({\n setHeaders: { Authorization: `Bearer ${token}` },\n });\n }\n return next(modifiedReq).pipe(\n // Retries the request up to 2 times on failure with a 1-second delay.\n retry({ count: 2, delay: 1000 }), \n // Use the `map` operator to handle successful responses.\n map((event) => {\n if (event instanceof HttpResponse) {\n return handleSuccessResponse(event, toastr, req);\n }\n return event;\n }), \n // Use the `catchError` operator to handle any errors that occur.\n catchError((error) => handleErrorResponse(error, toastr)));\n};\n// --- Helper Functions ---\n/**\n * Handles successful HTTP responses, standardizes them, shows notifications, and transforms for consumers.\n */\nfunction handleSuccessResponse(event, notificationService, req) {\n const body = event.body;\n // Standardize the response to always have ApiResponse structure\n const standardizedResponse = standardizeApiResponse(body);\n // Handle toast notifications based on standardized response\n handleToastNotifications(standardizedResponse, notificationService, req);\n // Return the appropriate data based on response type\n return transformResponseForConsumers(standardizedResponse, event);\n}\n/**\n * Handles HTTP errors (from the interceptor chain, not backend ApiResponse).\n */\nfunction handleErrorResponse(error, notificationService) {\n const status = error.status;\n // Only show notifications for critical HTTP-level errors.\n // We avoid showing toasts for 4xx errors, which are handled by the component.\n if (status !== null && shouldShowCriticalErrorNotification(status)) {\n const message = getCriticalErrorMessage(error);\n const title = getErrorTitle(status);\n notificationService.error({\n message: message,\n title: title,\n config: { duration: 5000 },\n });\n }\n // Always re-throw the error so components/services can handle it.\n return throwError(() => error);\n}\n/**\n * Standardizes any response to follow the ApiResponse structure\n */\nfunction standardizeApiResponse(body) {\n // If it's already a proper ApiResponse, return as is\n if (isValidApiResponse(body)) {\n return body;\n }\n // If it's a raw data response (no wrapper), wrap it\n if (body && typeof body === 'object' && !('status' in body)) {\n return {\n status: 'success',\n code: '200',\n message: 'Operation completed successfully',\n data: body,\n timestamp: new Date().toISOString(),\n };\n }\n // If it's a primitive value, wrap it\n if (body !== null && body !== undefined && typeof body !== 'object') {\n return {\n status: 'success',\n code: '200',\n message: 'Operation completed successfully',\n data: body,\n timestamp: new Date().toISOString(),\n };\n }\n // If it's null/undefined, create a success response without data\n return {\n status: 'success',\n code: '200',\n message: 'Operation completed successfully',\n timestamp: new Date().toISOString(),\n };\n}\n/**\n * Handles toast notifications based on standardized response\n */\nfunction handleToastNotifications(response, notificationService, req) {\n const shouldShowToast = shouldShowSuccessToast(req);\n const forceShow = req.context.get(SHOW_NOTIFICATIONS);\n const skipNotification = req.context.get(SKIP_NOTIFICATION);\n // Determine if we should show notifications, considering overrides\n const showNotifications = forceShow !== undefined ? forceShow : shouldShowToast;\n if (skipNotification)\n return;\n // Dynamic handling: Use show() for runtime type selection\n if (response.message &&\n showNotifications &&\n ['success', 'warning', 'error'].includes(response.status)) {\n notificationService.show({\n type: response.status,\n message: response.message,\n });\n }\n // Handle warnings separately if needed\n if (response.status === 'warning' && response.warnings && response.warnings.length > 0) {\n response.warnings.forEach(warning => {\n notificationService.show({\n type: 'warning',\n message: warning.message,\n });\n });\n }\n // Handle errors separately if needed\n if (response.status === 'error' && response.errors && response.errors.length > 0) {\n response.errors.forEach(error => {\n notificationService.show({\n type: 'error',\n message: error.message,\n });\n });\n }\n}\n/**\n * Transforms the standardized response for consumers\n */\nfunction transformResponseForConsumers(response, originalEvent) {\n switch (response.status) {\n case 'success':\n // For success responses, return the data if it exists, otherwise the full response\n if (response.data !== undefined && response.data !== null) {\n return originalEvent.clone({ body: response.data });\n }\n // For message-only success responses, return the full response\n return originalEvent.clone({ body: response });\n case 'warning':\n // For warnings, return data if it exists, otherwise the full response\n if (response.data !== undefined && response.data !== null) {\n return originalEvent.clone({ body: response.data });\n }\n return originalEvent.clone({ body: response });\n case 'error':\n // Errors should be thrown, not returned\n throw response;\n default:\n return originalEvent.clone({ body: response });\n }\n}\n/**\n * Checks if a response is a valid ApiResponse\n */\nfunction isValidApiResponse(response) {\n if (response === null || typeof response !== 'object')\n return false;\n const r = response;\n return ('status' in r &&\n 'code' in r &&\n typeof r['status'] === 'string' &&\n ['success', 'error', 'warning'].includes(r['status']));\n}\n/**\n * Determines whether to show success toast notifications based on the request type.\n */\nfunction shouldShowSuccessToast(req) {\n const url = req.url?.toLowerCase() || '';\n const method = req.method?.toLowerCase() || '';\n // Never show for these cases\n const excludedPatterns = [\n 'get',\n '/list',\n '/search',\n '/query',\n '/page',\n '/paginated',\n '/health',\n '/status',\n '/ping',\n ];\n if (excludedPatterns.some(pattern => method === pattern || url.includes(pattern))) {\n return false;\n }\n // Always show for these methods\n if (['post', 'put', 'patch', 'delete'].includes(method)) {\n return true;\n }\n // Default behavior\n return method !== 'get';\n}\n/**\n * Determines if we should show a notification for this HTTP error.\n */\nfunction shouldShowCriticalErrorNotification(status) {\n // Show notifications for:\n // - Network errors (status 0)\n // - Server errors (5xx)\n return status === 0 || (status >= 500 && status < 600);\n}\n/**\n * Gets the appropriate title for error notifications.\n */\nfunction getErrorTitle(status) {\n if (status === 0)\n return 'Connection Error';\n if (status >= 500)\n return 'Server Error';\n return 'Error';\n}\n/**\n * Gets the appropriate message for critical errors.\n */\nfunction getCriticalErrorMessage(error) {\n if (error.status === 0) {\n return 'Unable to connect to the server. Please check your network connection.';\n }\n if (error.status >= 500) {\n return (error.error?.message || error.message || 'A server error occurred. Please try again later.');\n }\n return error.error?.message || error.message || 'An unexpected error occurred';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXBpLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxZQUFZLEVBR1osZ0JBQWdCLEdBQ2pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBVSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUU1RSxpSEFBaUg7QUFDakgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBc0IsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFN0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFzQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtJQUM3RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFakUsaURBQWlEO0lBQ2pELElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN0QixNQUFNLEtBQUss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QUFPLGtCQUFrQixDQUFDO0lBQzVDLElBQUksTUFBTSxJQUFJLEdBQUc7UUFBRSxPQUFPLGNBQWMsQ0FBQztJQUN6QyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLHVCQUF1QixDQUFDLEtBQXdCO0lBQ3ZELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLHdFQUF3RSxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUNMLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksa0RBQWtELENBQzVGLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLDhCQUE4QixDQUFDO0FBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIdHRwSW50ZXJjZXB0b3JGbixcbiAgSHR0cEV2ZW50LFxuICBIdHRwUmVzcG9uc2UsXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cENvbnRleHRUb2tlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BhY29udHBsdXMvbmctbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBUT0tFTl9QUk9WSURFUiB9IGZyb20gJy4uL2ludGVyZmFjZXMvdG9rZW4tcHJvdmlkZXIuaW50ZXJmYWNlJztcblxuLy8gQSB0b2tlbiB0byB1c2Ugd2l0aCBIdHRwQ29udGV4dCBmb3Igc2tpcHBpbmcgbm90aWZpY2F0aW9ucyBvbiBzcGVjaWZpYyByZXF1ZXN0cy5cbmV4cG9ydCBjb25zdCBTS0lQX05PVElGSUNBVElPTiA9IG5ldyBIdHRwQ29udGV4dFRva2VuPGJvb2xlYW4+KCgpID0+IGZhbHNlKTtcblxuLy8gQSB0b2tlbiB0byB1c2Ugd2l0aCBIdHRwQ29udGV4dCBmb3IgZm9yY2luZyBub3RpZmljYXRpb25zIG9uIHNwZWNpZmljIHJlcXVlc3RzIChvdmVycmlkZXMgZXhjbHVzaW9uIHBhdHRlcm5zKS5cbmV4cG9ydCBjb25zdCBTSE9XX05PVElGSUNBVElPTlMgPSBuZXcgSHR0cENvbnRleHRUb2tlbjxib29sZWFuIHwgdW5kZWZpbmVkPigoKSA9PiB1bmRlZmluZWQpO1xuXG5leHBvcnQgY29uc3QgYXBpSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xuICBjb25zdCB0b2FzdHIgPSBpbmplY3QoTm90aWZpY2F0aW9uU2VydmljZSk7XG4gIGNvbnN0IHRva2VuUHJvdmlkZXIgPSBpbmplY3QoVE9LRU5fUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLy8gQWRkIGF1dGhvcml6YXRpb24gaGVhZGVyIGlmIHRva2VuIGlzIGF2YWlsYWJsZVxuICBsZXQgbW9kaWZpZWRSZXEgPSByZXE7XG4gIGNvbnN0IHRva2VuID0gdG9rZW5Qcm92aWRlcj8uZ2V0VG9rZW4oKTtcbiAgaWYgKHRva2VuKSB7XG4gICAgbW9kaWZpZWRSZXEgPSByZXEuY2xvbmUoe1xuICAgICAgc2V0SGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5leHQobW9kaWZpZWRSZXEpLnBpcGUoXG4gICAgLy8gUmV0cmllcyB0aGUgcmVxdWVzdCB1cCB0byAyIHRpbWVzIG9uIGZhaWx1cmUgd2l0aCBhIDEtc2Vjb25kIGRlbGF5LlxuICAgIHJldHJ5KHsgY291bnQ6IDIsIGRlbGF5OiAxMDAwIH0pLFxuICAgIC8vIFVzZSB0aGUgYG1hcGAgb3BlcmF0b3IgdG8gaGFuZGxlIHN1Y2Nlc3NmdWwgcmVzcG9uc2VzLlxuICAgIG1hcCgoZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPikgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVTdWNjZXNzUmVzcG9uc2UoZXZlbnQsIHRvYXN0ciwgcmVxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBldmVudDtcbiAgICB9KSxcbiAgICAvLyBVc2UgdGhlIGBjYXRjaEVycm9yYCBvcGVyYXRvciB0byBoYW5kbGUgYW55IGVycm9ycyB0aGF0IG9jY3VyLlxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gaGFuZGxlRXJyb3JSZXNwb25zZShlcnJvciwgdG9hc3RyKSksXG4gICk7XG59O1xuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuLyoqXG4gKiBIYW5kbGVzIHN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZXMsIHN0YW5kYXJkaXplcyB0aGVtLCBzaG93cyBub3RpZmljYXRpb25zLCBhbmQgdHJhbnNmb3JtcyBmb3IgY29uc3VtZXJzLlxuICovXG5mdW5jdGlvbiBoYW5kbGVTdWNjZXNzUmVzcG9uc2UoXG4gIGV2ZW50OiBIdHRwUmVzcG9uc2U8dW5rbm93bj4sXG4gIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gIHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG4pOiBIdHRwUmVzcG9uc2U8dW5rbm93bj4ge1xuICBjb25zdCBib2R5ID0gZXZlbnQuYm9keTtcblxuICAvLyBTdGFuZGFyZGl6ZSB0aGUgcmVzcG9uc2UgdG8gYWx3YXlzIGhhdmUgQXBpUmVzcG9uc2Ugc3RydWN0dXJlXG4gIGNvbnN0IHN0YW5kYXJkaXplZFJlc3BvbnNlID0gc3RhbmRhcmRpemVBcGlSZXNwb25zZShib2R5KTtcblxuICAvLyBIYW5kbGUgdG9hc3Qgbm90aWZpY2F0aW9ucyBiYXNlZCBvbiBzdGFuZGFyZGl6ZWQgcmVzcG9uc2VcbiAgaGFuZGxlVG9hc3ROb3RpZmljYXRpb25zKHN0YW5kYXJkaXplZFJlc3BvbnNlLCBub3RpZmljYXRpb25TZXJ2aWNlLCByZXEpO1xuXG4gIC8vIFJldHVybiB0aGUgYXBwcm9wcmlhdGUgZGF0YSBiYXNlZCBvbiByZXNwb25zZSB0eXBlXG4gIHJldHVybiB0cmFuc2Zvcm1SZXNwb25zZUZvckNvbnN1bWVycyhzdGFuZGFyZGl6ZWRSZXNwb25zZSwgZXZlbnQpO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgSFRUUCBlcnJvcnMgKGZyb20gdGhlIGludGVyY2VwdG9yIGNoYWluLCBub3QgYmFja2VuZCBBcGlSZXNwb25zZSkuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUVycm9yUmVzcG9uc2UoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlKSB7XG4gIGNvbnN0IHN0YXR1cyA9IGVycm9yLnN0YXR1cztcblxuICAvLyBPbmx5IHNob3cgbm90aWZpY2F0aW9ucyBmb3IgY3JpdGljYWwgSFRUUC1sZXZlbCBlcnJvcnMuXG4gIC8vIFdlIGF2b2lkIHNob3dpbmcgdG9hc3RzIGZvciA0eHggZXJyb3JzLCB3aGljaCBhcmUgaGFuZGxlZCBieSB0aGUgY29tcG9uZW50LlxuICBpZiAoc3RhdHVzICE9PSBudWxsICYmIHNob3VsZFNob3dDcml0aWNhbEVycm9yTm90aWZpY2F0aW9uKHN0YXR1cykpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZ2V0Q3JpdGljYWxFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgIGNvbnN0IHRpdGxlID0gZ2V0RXJyb3JUaXRsZShzdGF0dXMpO1xuXG4gICAgbm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgY29uZmlnOiB7IGR1cmF0aW9uOiA1MDAwIH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyBBbHdheXMgcmUtdGhyb3cgdGhlIGVycm9yIHNvIGNvbXBvbmVudHMvc2VydmljZXMgY2FuIGhhbmRsZSBpdC5cbiAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkaXplcyBhbnkgcmVzcG9uc2UgdG8gZm9sbG93IHRoZSBBcGlSZXNwb25zZSBzdHJ1Y3R1cmVcbiAqL1xuZnVuY3Rpb24gc3RhbmRhcmRpemVBcGlSZXNwb25zZShib2R5OiB1bmtub3duKTogQXBpUmVzcG9uc2U8dW5rbm93bj4ge1xuICAvLyBJZiBpdCdzIGFscmVhZHkgYSBwcm9wZXIgQXBpUmVzcG9uc2UsIHJldHVybiBhcyBpc1xuICBpZiAoaXNWYWxpZEFwaVJlc3BvbnNlKGJvZHkpKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgcmF3IGRhdGEgcmVzcG9uc2UgKG5vIHdyYXBwZXIpLCB3cmFwIGl0XG4gIGlmIChib2R5ICYmIHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyAmJiAhKCdzdGF0dXMnIGluIGJvZHkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgY29kZTogJzIwMCcsXG4gICAgICBtZXNzYWdlOiAnT3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknLFxuICAgICAgZGF0YTogYm9keSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgcHJpbWl0aXZlIHZhbHVlLCB3cmFwIGl0XG4gIGlmIChib2R5ICE9PSBudWxsICYmIGJvZHkgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICBjb2RlOiAnMjAwJyxcbiAgICAgIG1lc3NhZ2U6ICdPcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseScsXG4gICAgICBkYXRhOiBib2R5LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIElmIGl0J3MgbnVsbC91bmRlZmluZWQsIGNyZWF0ZSBhIHN1Y2Nlc3MgcmVzcG9uc2Ugd2l0aG91dCBkYXRhXG4gIHJldHVybiB7XG4gICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgY29kZTogJzIwMCcsXG4gICAgbWVzc2FnZTogJ09wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIHRvYXN0IG5vdGlmaWNhdGlvbnMgYmFzZWQgb24gc3RhbmRhcmRpemVkIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVRvYXN0Tm90aWZpY2F0aW9ucyhcbiAgcmVzcG9uc2U6IEFwaVJlc3BvbnNlPHVua25vd24+LFxuICBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICByZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LFxuKTogdm9pZCB7XG4gIGNvbnN0IHNob3VsZFNob3dUb2FzdCA9IHNob3VsZFNob3dTdWNjZXNzVG9hc3QocmVxKTtcbiAgY29uc3QgZm9yY2VTaG93ID0gcmVxLmNvbnRleHQuZ2V0KFNIT1dfTk9USUZJQ0FUSU9OUyk7XG4gIGNvbnN0IHNraXBOb3RpZmljYXRpb24gPSByZXEuY29udGV4dC5nZXQoU0tJUF9OT1RJRklDQVRJT04pO1xuXG4gIC8vIERldGVybWluZSBpZiB3ZSBzaG91bGQgc2hvdyBub3RpZmljYXRpb25zLCBjb25zaWRlcmluZyBvdmVycmlkZXNcbiAgY29uc3Qgc2hvd05vdGlmaWNhdGlvbnMgPSBmb3JjZVNob3cgIT09IHVuZGVmaW5lZCA/IGZvcmNlU2hvdyA6IHNob3VsZFNob3dUb2FzdDtcblxuICBpZiAoc2tpcE5vdGlmaWNhdGlvbikgcmV0dXJuO1xuXG4gIC8vIER5bmFtaWMgaGFuZGxpbmc6IFVzZSBzaG93KCkgZm9yIHJ1bnRpbWUgdHlwZSBzZWxlY3Rpb25cbiAgaWYgKFxuICAgIHJlc3BvbnNlLm1lc3NhZ2UgJiZcbiAgICBzaG93Tm90aWZpY2F0aW9ucyAmJlxuICAgIFsnc3VjY2VzcycsICd3YXJuaW5nJywgJ2Vycm9yJ10uaW5jbHVkZXMocmVzcG9uc2Uuc3RhdHVzKVxuICApIHtcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlLnNob3coe1xuICAgICAgdHlwZTogcmVzcG9uc2Uuc3RhdHVzIGFzICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSGFuZGxlIHdhcm5pbmdzIHNlcGFyYXRlbHkgaWYgbmVlZGVkXG4gIGlmIChyZXNwb25zZS5zdGF0dXMgPT09ICd3YXJuaW5nJyAmJiByZXNwb25zZS53YXJuaW5ncyAmJiByZXNwb25zZS53YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgcmVzcG9uc2Uud2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IHtcbiAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgbWVzc2FnZTogd2FybmluZy5tZXNzYWdlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBIYW5kbGUgZXJyb3JzIHNlcGFyYXRlbHkgaWYgbmVlZGVkXG4gIGlmIChyZXNwb25zZS5zdGF0dXMgPT09ICdlcnJvcicgJiYgcmVzcG9uc2UuZXJyb3JzICYmIHJlc3BvbnNlLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmVzcG9uc2UuZXJyb3JzLmZvckVhY2goZXJyb3IgPT4ge1xuICAgICAgbm90aWZpY2F0aW9uU2VydmljZS5zaG93KHtcbiAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgc3RhbmRhcmRpemVkIHJlc3BvbnNlIGZvciBjb25zdW1lcnNcbiAqL1xuZnVuY3Rpb24gdHJhbnNmb3JtUmVzcG9uc2VGb3JDb25zdW1lcnMoXG4gIHJlc3BvbnNlOiBBcGlSZXNwb25zZTx1bmtub3duPixcbiAgb3JpZ2luYWxFdmVudDogSHR0cFJlc3BvbnNlPHVua25vd24+LFxuKTogSHR0cFJlc3BvbnNlPHVua25vd24+IHtcbiAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgIC8vIEZvciBzdWNjZXNzIHJlc3BvbnNlcywgcmV0dXJuIHRoZSBkYXRhIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHRoZSBmdWxsIHJlc3BvbnNlXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsRXZlbnQuY2xvbmUoeyBib2R5OiByZXNwb25zZS5kYXRhIH0pO1xuICAgICAgfVxuICAgICAgLy8gRm9yIG1lc3NhZ2Utb25seSBzdWNjZXNzIHJlc3BvbnNlcywgcmV0dXJuIHRoZSBmdWxsIHJlc3BvbnNlXG4gICAgICByZXR1cm4gb3JpZ2luYWxFdmVudC5jbG9uZSh7IGJvZHk6IHJlc3BvbnNlIH0pO1xuXG4gICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAvLyBGb3Igd2FybmluZ3MsIHJldHVybiBkYXRhIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHRoZSBmdWxsIHJlc3BvbnNlXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsRXZlbnQuY2xvbmUoeyBib2R5OiByZXNwb25zZS5kYXRhIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yaWdpbmFsRXZlbnQuY2xvbmUoeyBib2R5OiByZXNwb25zZSB9KTtcblxuICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgIC8vIEVycm9ycyBzaG91bGQgYmUgdGhyb3duLCBub3QgcmV0dXJuZWRcbiAgICAgIHRocm93IHJlc3BvbnNlO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBvcmlnaW5hbEV2ZW50LmNsb25lKHsgYm9keTogcmVzcG9uc2UgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSByZXNwb25zZSBpcyBhIHZhbGlkIEFwaVJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRBcGlSZXNwb25zZShyZXNwb25zZTogdW5rbm93bik6IHJlc3BvbnNlIGlzIEFwaVJlc3BvbnNlPHVua25vd24+IHtcbiAgaWYgKHJlc3BvbnNlID09PSBudWxsIHx8IHR5cGVvZiByZXNwb25zZSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgciA9IHJlc3BvbnNlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZXR1cm4gKFxuICAgICdzdGF0dXMnIGluIHIgJiZcbiAgICAnY29kZScgaW4gciAmJlxuICAgIHR5cGVvZiByWydzdGF0dXMnXSA9PT0gJ3N0cmluZycgJiZcbiAgICBbJ3N1Y2Nlc3MnLCAnZXJyb3InLCAnd2FybmluZyddLmluY2x1ZGVzKHJbJ3N0YXR1cyddKVxuICApO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IHN1Y2Nlc3MgdG9hc3Qgbm90aWZpY2F0aW9ucyBiYXNlZCBvbiB0aGUgcmVxdWVzdCB0eXBlLlxuICovXG5mdW5jdGlvbiBzaG91bGRTaG93U3VjY2Vzc1RvYXN0KHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4pOiBib29sZWFuIHtcbiAgY29uc3QgdXJsID0gcmVxLnVybD8udG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgY29uc3QgbWV0aG9kID0gcmVxLm1ldGhvZD8udG9Mb3dlckNhc2UoKSB8fCAnJztcblxuICAvLyBOZXZlciBzaG93IGZvciB0aGVzZSBjYXNlc1xuICBjb25zdCBleGNsdWRlZFBhdHRlcm5zID0gW1xuICAgICdnZXQnLFxuICAgICcvbGlzdCcsXG4gICAgJy9zZWFyY2gnLFxuICAgICcvcXVlcnknLFxuICAgICcvcGFnZScsXG4gICAgJy9wYWdpbmF0ZWQnLFxuICAgICcvaGVhbHRoJyxcbiAgICAnL3N0YXR1cycsXG4gICAgJy9waW5nJyxcbiAgXTtcblxuICBpZiAoZXhjbHVkZWRQYXR0ZXJucy5zb21lKHBhdHRlcm4gPT4gbWV0aG9kID09PSBwYXR0ZXJuIHx8IHVybC5pbmNsdWRlcyhwYXR0ZXJuKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBBbHdheXMgc2hvdyBmb3IgdGhlc2UgbWV0aG9kc1xuICBpZiAoWydwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdkZWxldGUnXS5pbmNsdWRlcyhtZXRob2QpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBEZWZhdWx0IGJlaGF2aW9yXG4gIHJldHVybiBtZXRob2QgIT09ICdnZXQnO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgd2Ugc2hvdWxkIHNob3cgYSBub3RpZmljYXRpb24gZm9yIHRoaXMgSFRUUCBlcnJvci5cbiAqL1xuZnVuY3Rpb24gc2hvdWxkU2hvd0NyaXRpY2FsRXJyb3JOb3RpZmljYXRpb24oc3RhdHVzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgLy8gU2hvdyBub3RpZmljYXRpb25zIGZvcjpcbiAgLy8gLSBOZXR3b3JrIGVycm9ycyAoc3RhdHVzIDApXG4gIC8vIC0gU2VydmVyIGVycm9ycyAoNXh4KVxuICByZXR1cm4gc3RhdHVzID09PSAwIHx8IChzdGF0dXMgPj0gNTAwICYmIHN0YXR1cyA8IDYwMCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYXBwcm9wcmlhdGUgdGl0bGUgZm9yIGVycm9yIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGdldEVycm9yVGl0bGUoc3RhdHVzOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoc3RhdHVzID09PSAwKSByZXR1cm4gJ0Nvbm5lY3Rpb24gRXJyb3InO1xuICBpZiAoc3RhdHVzID49IDUwMCkgcmV0dXJuICdTZXJ2ZXIgRXJyb3InO1xuICByZXR1cm4gJ0Vycm9yJztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBtZXNzYWdlIGZvciBjcml0aWNhbCBlcnJvcnMuXG4gKi9cbmZ1bmN0aW9uIGdldENyaXRpY2FsRXJyb3JNZXNzYWdlKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IHN0cmluZyB7XG4gIGlmIChlcnJvci5zdGF0dXMgPT09IDApIHtcbiAgICByZXR1cm4gJ1VuYWJsZSB0byBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIuIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbi4nO1xuICB9XG5cbiAgaWYgKGVycm9yLnN0YXR1cyA+PSA1MDApIHtcbiAgICByZXR1cm4gKFxuICAgICAgZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyb3IubWVzc2FnZSB8fCAnQSBzZXJ2ZXIgZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyb3IubWVzc2FnZSB8fCAnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCc7XG59XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nimport * as i0 from \"@angular/core\";\nexport class LoggingService {\n environment = inject(ENVIRONMENT);\n log(level, message, context) {\n if (this.environment.isProduction) {\n // Production logging (e.g., to external service)\n this.logToExternalService(level, message, context);\n }\n else {\n // Development logging - only log in development mode\n if (!this.environment.isProduction) {\n console[level](`[${level.toUpperCase()}] ${message}`, context);\n }\n }\n }\n info(message, context) {\n this.log('info', message, context);\n }\n warn(message, context) {\n this.log('warn', message, context);\n }\n error(message, context) {\n this.log('error', message, context);\n }\n // HTTP Request Logging\n logHttpRequest(log) {\n this.info(`HTTP Request - ${log.method} ${log.url}`, {\n requestId: log.requestId,\n correlationId: log.correlationId,\n tenantId: log.tenantId,\n headers: log.headers,\n isCustomUrl: log.isCustomUrl,\n timestamp: log.timestamp,\n });\n }\n // HTTP Error Logging\n logHttpError(error) {\n this.error(`HTTP Error - ${error.method} ${error.url}`, {\n status: error.status,\n statusText: error.statusText,\n requestId: error.requestId,\n correlationId: error.correlationId,\n tenantId: error.tenantId,\n errorDetails: error.errorDetails,\n environment: error.environment,\n timestamp: error.timestamp,\n });\n }\n // Network Error Logging\n logNetworkError(correlationId) {\n this.error('Network connection failed', {\n type: 'network-error',\n correlationId,\n userAgent: navigator.userAgent,\n online: navigator.onLine,\n });\n }\n // Rate Limit Error Logging\n logRateLimitError(correlationId, url) {\n this.warn('Rate limit exceeded', {\n type: 'rate-limit-error',\n correlationId,\n url,\n });\n }\n logToExternalService(_level, _message, _context) {\n // Implement external logging service integration\n // e.g., Sentry, LogRocket, etc.\n // This is a placeholder for production logging implementation\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoggingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoggingService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoggingService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9zZXJ2aWNlcy9sb2dnaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU1uRCxNQUFNLE9BQU8sY0FBYztJQUNqQixXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTFDLEdBQUcsQ0FBQyxLQUFnQyxFQUFFLE9BQWUsRUFBRSxPQUFpQjtRQUN0RSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEMsaURBQWlEO1lBQ2pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ04scURBQXFEO1lBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxPQUFpQjtRQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFlLEVBQUUsT0FBaUI7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLE9BQWlCO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLGNBQWMsQ0FBQyxHQUFtQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNuRCxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7WUFDeEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1lBQ2hDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUN0QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87WUFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1lBQzVCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLFlBQVksQ0FBQyxLQUFtQjtRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0RCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsZUFBZSxDQUFDLGFBQXFCO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUU7WUFDdEMsSUFBSSxFQUFFLGVBQWU7WUFDckIsYUFBYTtZQUNiLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztZQUM5QixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixpQkFBaUIsQ0FBQyxhQUFxQixFQUFFLEdBQVc7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUMvQixJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLGFBQWE7WUFDYixHQUFHO1NBQ0osQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLFFBQWtCO1FBQy9FLGlEQUFpRDtRQUNqRCxnQ0FBZ0M7UUFDaEMsOERBQThEO0lBQ2hFLENBQUM7dUdBNUVVLGNBQWM7MkdBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BhY29udHBsdXMvbmctY29uZmlnJztcbmltcG9ydCB7IEh0dHBSZXF1ZXN0TG9nLCBIdHRwRXJyb3JMb2cgfSBmcm9tICcuLi9pbnRlcmNlcHRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9nZ2luZ1NlcnZpY2Uge1xuICBwcml2YXRlIGVudmlyb25tZW50ID0gaW5qZWN0KEVOVklST05NRU5UKTtcblxuICBsb2cobGV2ZWw6ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicsIG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1Byb2R1Y3Rpb24pIHtcbiAgICAgIC8vIFByb2R1Y3Rpb24gbG9nZ2luZyAoZS5nLiwgdG8gZXh0ZXJuYWwgc2VydmljZSlcbiAgICAgIHRoaXMubG9nVG9FeHRlcm5hbFNlcnZpY2UobGV2ZWwsIG1lc3NhZ2UsIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZXZlbG9wbWVudCBsb2dnaW5nIC0gb25seSBsb2cgaW4gZGV2ZWxvcG1lbnQgbW9kZVxuICAgICAgaWYgKCF0aGlzLmVudmlyb25tZW50LmlzUHJvZHVjdGlvbikge1xuICAgICAgICBjb25zb2xlW2xldmVsXShgWyR7bGV2ZWwudG9VcHBlckNhc2UoKX1dICR7bWVzc2FnZX1gLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnaW5mbycsIG1lc3NhZ2UsIGNvbnRleHQpO1xuICB9XG5cbiAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5sb2coJ3dhcm4nLCBtZXNzYWdlLCBjb250ZXh0KTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnZXJyb3InLCBtZXNzYWdlLCBjb250ZXh0KTtcbiAgfVxuXG4gIC8vIEhUVFAgUmVxdWVzdCBMb2dnaW5nXG4gIGxvZ0h0dHBSZXF1ZXN0KGxvZzogSHR0cFJlcXVlc3RMb2cpOiB2b2lkIHtcbiAgICB0aGlzLmluZm8oYEhUVFAgUmVxdWVzdCAtICR7bG9nLm1ldGhvZH0gJHtsb2cudXJsfWAsIHtcbiAgICAgIHJlcXVlc3RJZDogbG9nLnJlcXVlc3RJZCxcbiAgICAgIGNvcnJlbGF0aW9uSWQ6IGxvZy5jb3JyZWxhdGlvbklkLFxuICAgICAgdGVuYW50SWQ6IGxvZy50ZW5hbnRJZCxcbiAgICAgIGhlYWRlcnM6IGxvZy5oZWFkZXJzLFxuICAgICAgaXNDdXN0b21Vcmw6IGxvZy5pc0N1c3RvbVVybCxcbiAgICAgIHRpbWVzdGFtcDogbG9nLnRpbWVzdGFtcCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEhUVFAgRXJyb3IgTG9nZ2luZ1xuICBsb2dIdHRwRXJyb3IoZXJyb3I6IEh0dHBFcnJvckxvZyk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IoYEhUVFAgRXJyb3IgLSAke2Vycm9yLm1ldGhvZH0gJHtlcnJvci51cmx9YCwge1xuICAgICAgc3RhdHVzOiBlcnJvci5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiBlcnJvci5zdGF0dXNUZXh0LFxuICAgICAgcmVxdWVzdElkOiBlcnJvci5yZXF1ZXN0SWQsXG4gICAgICBjb3JyZWxhdGlvbklkOiBlcnJvci5jb3JyZWxhdGlvbklkLFxuICAgICAgdGVuYW50SWQ6IGVycm9yLnRlbmFudElkLFxuICAgICAgZXJyb3JEZXRhaWxzOiBlcnJvci5lcnJvckRldGFpbHMsXG4gICAgICBlbnZpcm9ubWVudDogZXJyb3IuZW52aXJvbm1lbnQsXG4gICAgICB0aW1lc3RhbXA6IGVycm9yLnRpbWVzdGFtcCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE5ldHdvcmsgRXJyb3IgTG9nZ2luZ1xuICBsb2dOZXR3b3JrRXJyb3IoY29ycmVsYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvcignTmV0d29yayBjb25uZWN0aW9uIGZhaWxlZCcsIHtcbiAgICAgIHR5cGU6ICduZXR3b3JrLWVycm9yJyxcbiAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICB1c2VyQWdlbnQ6IG5hdmlnYXRvci51c2VyQWdlbnQsXG4gICAgICBvbmxpbmU6IG5hdmlnYXRvci5vbkxpbmUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBSYXRlIExpbWl0IEVycm9yIExvZ2dpbmdcbiAgbG9nUmF0ZUxpbWl0RXJyb3IoY29ycmVsYXRpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMud2FybignUmF0ZSBsaW1pdCBleGNlZWRlZCcsIHtcbiAgICAgIHR5cGU6ICdyYXRlLWxpbWl0LWVycm9yJyxcbiAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICB1cmwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvZ1RvRXh0ZXJuYWxTZXJ2aWNlKF9sZXZlbDogc3RyaW5nLCBfbWVzc2FnZTogc3RyaW5nLCBfY29udGV4dD86IHVua25vd24pOiB2b2lkIHtcbiAgICAvLyBJbXBsZW1lbnQgZXh0ZXJuYWwgbG9nZ2luZyBzZXJ2aWNlIGludGVncmF0aW9uXG4gICAgLy8gZS5nLiwgU2VudHJ5LCBMb2dSb2NrZXQsIGV0Yy5cbiAgICAvLyBUaGlzIGlzIGEgcGxhY2Vob2xkZXIgZm9yIHByb2R1Y3Rpb24gbG9nZ2luZyBpbXBsZW1lbnRhdGlvblxuICB9XG59XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { LoggingService } from './logging.service';\nimport * as i0 from \"@angular/core\";\nexport class TenantService {\n tenantId = null;\n logger = inject(LoggingService);\n getTenantId() {\n if (!this.tenantId) {\n // Get from localStorage, sessionStorage, or JWT token\n this.tenantId =\n localStorage.getItem('tenantId') ||\n sessionStorage.getItem('tenantId') ||\n this.extractTenantFromToken() ||\n 'default-tenant';\n }\n return this.tenantId;\n }\n getCurrentTenant() {\n return this.tenantId;\n }\n setTenantId(tenantId) {\n this.tenantId = tenantId;\n localStorage.setItem('tenantId', tenantId);\n }\n setTenant(tenantId) {\n this.setTenantId(tenantId);\n }\n handleForbidden() {\n this.logger.error('Access forbidden for tenant:', this.tenantId);\n // Redirect to tenant selection or show error message\n // this.router.navigate(['/tenant-access-denied']);\n }\n extractTenantFromToken() {\n // Implementation depends on your JWT token structure\n // This is a placeholder\n return null;\n }\n clearTenant() {\n this.tenantId = null;\n localStorage.removeItem('tenantId');\n sessionStorage.removeItem('tenantId');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TenantService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TenantService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TenantService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1pbmZyYXN0cnVjdHVyZS9zcmMvbGliL3NlcnZpY2VzL3RlbmFudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLGFBQWE7SUFDaEIsUUFBUSxHQUFrQixJQUFJLENBQUM7SUFDL0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV4QyxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixzREFBc0Q7WUFDdEQsSUFBSSxDQUFDLFFBQVE7Z0JBQ1gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7b0JBQ2hDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO29CQUNsQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7b0JBQzdCLGdCQUFnQixDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRSxxREFBcUQ7UUFDckQsbURBQW1EO0lBQ3JELENBQUM7SUFFTyxzQkFBc0I7UUFDNUIscURBQXFEO1FBQ3JELHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxjQUFjLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7dUdBN0NVLGFBQWE7MkdBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZSB9IGZyb20gJy4vbG9nZ2luZy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRlbmFudFNlcnZpY2Uge1xuICBwcml2YXRlIHRlbmFudElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsb2dnZXIgPSBpbmplY3QoTG9nZ2luZ1NlcnZpY2UpO1xuXG4gIGdldFRlbmFudElkKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnRlbmFudElkKSB7XG4gICAgICAvLyBHZXQgZnJvbSBsb2NhbFN0b3JhZ2UsIHNlc3Npb25TdG9yYWdlLCBvciBKV1QgdG9rZW5cbiAgICAgIHRoaXMudGVuYW50SWQgPVxuICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVuYW50SWQnKSB8fFxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0ZW5hbnRJZCcpIHx8XG4gICAgICAgIHRoaXMuZXh0cmFjdFRlbmFudEZyb21Ub2tlbigpIHx8XG4gICAgICAgICdkZWZhdWx0LXRlbmFudCc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRlbmFudElkO1xuICB9XG5cbiAgZ2V0Q3VycmVudFRlbmFudCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRJZDtcbiAgfVxuXG4gIHNldFRlbmFudElkKHRlbmFudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRlbmFudElkID0gdGVuYW50SWQ7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RlbmFudElkJywgdGVuYW50SWQpO1xuICB9XG5cbiAgc2V0VGVuYW50KHRlbmFudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNldFRlbmFudElkKHRlbmFudElkKTtcbiAgfVxuXG4gIGhhbmRsZUZvcmJpZGRlbigpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5lcnJvcignQWNjZXNzIGZvcmJpZGRlbiBmb3IgdGVuYW50OicsIHRoaXMudGVuYW50SWQpO1xuICAgIC8vIFJlZGlyZWN0IHRvIHRlbmFudCBzZWxlY3Rpb24gb3Igc2hvdyBlcnJvciBtZXNzYWdlXG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvdGVuYW50LWFjY2Vzcy1kZW5pZWQnXSk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RUZW5hbnRGcm9tVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gSW1wbGVtZW50YXRpb24gZGVwZW5kcyBvbiB5b3VyIEpXVCB0b2tlbiBzdHJ1Y3R1cmVcbiAgICAvLyBUaGlzIGlzIGEgcGxhY2Vob2xkZXJcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNsZWFyVGVuYW50KCk6IHZvaWQge1xuICAgIHRoaXMudGVuYW50SWQgPSBudWxsO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0ZW5hbnRJZCcpO1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3RlbmFudElkJyk7XG4gIH1cbn1cbiJdfQ==","import { Injectable, signal, computed } from '@angular/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport * as i0 from \"@angular/core\";\nexport class CorrelationService {\n correlationId = signal(null, ...(ngDevMode ? [{ debugName: \"correlationId\" }] : []));\n CORRELATION_KEY = 'correlation-id';\n // Signal-based getter for reactive updates\n currentCorrelationId = computed(() => this.correlationId(), ...(ngDevMode ? [{ debugName: \"currentCorrelationId\" }] : []));\n getOrCreateCorrelationId() {\n if (!this.correlationId()) {\n // Try to get from sessionStorage first (for page refreshes)\n const id = sessionStorage.getItem(this.CORRELATION_KEY) || uuidv4();\n this.correlationId.set(id);\n sessionStorage.setItem(this.CORRELATION_KEY, id);\n }\n return this.correlationId();\n }\n setCorrelationId(correlationId) {\n this.correlationId.set(correlationId);\n sessionStorage.setItem(this.CORRELATION_KEY, correlationId);\n }\n resetCorrelationId() {\n this.correlationId.set(null);\n sessionStorage.removeItem(this.CORRELATION_KEY);\n }\n getId() {\n return this.getOrCreateCorrelationId();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CorrelationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CorrelationService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CorrelationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ycmVsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvc2VydmljZXMvY29ycmVsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3BDLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsYUFBYSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSx5REFBQyxDQUFDO0lBQ25DLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQztJQUVwRCwyQ0FBMkM7SUFDbEMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZ0VBQUMsQ0FBQztJQUVyRSx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQzFCLDREQUE0RDtZQUM1RCxNQUFNLEVBQUUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQixjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRyxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxhQUFxQjtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDekMsQ0FBQzt1R0E3QlUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29ycmVsYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb3JyZWxhdGlvbklkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IENPUlJFTEFUSU9OX0tFWSA9ICdjb3JyZWxhdGlvbi1pZCc7XG5cbiAgLy8gU2lnbmFsLWJhc2VkIGdldHRlciBmb3IgcmVhY3RpdmUgdXBkYXRlc1xuICByZWFkb25seSBjdXJyZW50Q29ycmVsYXRpb25JZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29ycmVsYXRpb25JZCgpKTtcblxuICBnZXRPckNyZWF0ZUNvcnJlbGF0aW9uSWQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY29ycmVsYXRpb25JZCgpKSB7XG4gICAgICAvLyBUcnkgdG8gZ2V0IGZyb20gc2Vzc2lvblN0b3JhZ2UgZmlyc3QgKGZvciBwYWdlIHJlZnJlc2hlcylcbiAgICAgIGNvbnN0IGlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNPUlJFTEFUSU9OX0tFWSkgfHwgdXVpZHY0KCk7XG4gICAgICB0aGlzLmNvcnJlbGF0aW9uSWQuc2V0KGlkKTtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5DT1JSRUxBVElPTl9LRVksIGlkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29ycmVsYXRpb25JZCgpITtcbiAgfVxuXG4gIHNldENvcnJlbGF0aW9uSWQoY29ycmVsYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb3JyZWxhdGlvbklkLnNldChjb3JyZWxhdGlvbklkKTtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ09SUkVMQVRJT05fS0VZLCBjb3JyZWxhdGlvbklkKTtcbiAgfVxuXG4gIHJlc2V0Q29ycmVsYXRpb25JZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvcnJlbGF0aW9uSWQuc2V0KG51bGwpO1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DT1JSRUxBVElPTl9LRVkpO1xuICB9XG5cbiAgZ2V0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPckNyZWF0ZUNvcnJlbGF0aW9uSWQoKTtcbiAgfVxufVxuIl19","import { inject, InjectionToken } from '@angular/core'; // Import InjectionToken\nimport { Router } from '@angular/router';\nimport { HttpContextToken, HttpContext, } from '@angular/common/http';\nimport { catchError, throwError, switchMap } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\n// Environment and configuration\nimport { ENVIRONMENT } from '@acontplus/ng-config';\n// Services\nimport { TenantService } from '../services/tenant.service';\nimport { CorrelationService } from '../services/correlation.service';\nimport { LoggingService } from '../services/logging.service';\nimport { TOKEN_PROVIDER } from '../interfaces/token-provider.interface';\n// HTTP Context tokens\nconst CUSTOM_URL = new HttpContextToken(() => false);\nconst SKIP_CONTEXT_HEADERS = new HttpContextToken(() => false);\nconst CUSTOM_HEADERS = new HttpContextToken(() => ({}));\n// Helper functions for HTTP context\nexport function customUrl() {\n return new HttpContext().set(CUSTOM_URL, true);\n}\nexport function skipContextHeaders() {\n return new HttpContext().set(SKIP_CONTEXT_HEADERS, true);\n}\nexport function withCustomHeaders(headers) {\n return new HttpContext().set(CUSTOM_HEADERS, headers);\n}\n// Default configuration\nconst DEFAULT_CONFIG = {\n enableCorrelationTracking: true,\n enableRequestLogging: false, // This will be overridden by environment.isProduction\n enableErrorLogging: true,\n customHeaders: {},\n clientVersion: '1.0.0',\n tenantIdHeader: 'Tenant-Id',\n correlationIdHeader: 'Correlation-Id',\n requestIdHeader: 'Request-Id',\n timestampHeader: 'Timestamp',\n excludeUrls: [],\n includeAuthToken: true,\n baseUrlInjection: true,\n refreshTokenCallback: undefined,\n logoutCallback: undefined,\n};\n// Injection token for configuration - FIXED\nexport const HTTP_CONTEXT_CONFIG = new InjectionToken('HTTP_CONTEXT_CONFIG', {\n factory: () => DEFAULT_CONFIG, // Provide a default factory in case it's not provided\n});\nexport const httpContextInterceptor = (req, next) => {\n const tokenProvider = inject(TOKEN_PROVIDER, { optional: true });\n const router = inject(Router);\n const tenantService = inject(TenantService);\n const correlationService = inject(CorrelationService);\n const loggingService = inject(LoggingService);\n const environment = inject(ENVIRONMENT);\n // Get configuration (with fallback to default) - FIXED\n const config = {\n ...DEFAULT_CONFIG,\n // The default enableRequestLogging needs to be set based on environment here,\n // as it's dynamic, and DEFAULT_CONFIG is static.\n enableRequestLogging: !environment.isProduction,\n ...inject(HTTP_CONTEXT_CONFIG, { optional: true }),\n };\n // Check HTTP context tokens\n const isCustomUrl = req.context.get(CUSTOM_URL);\n const skipHeaders = req.context.get(SKIP_CONTEXT_HEADERS);\n const contextHeaders = req.context.get(CUSTOM_HEADERS);\n // Skip processing if headers are disabled for this request\n if (skipHeaders) {\n return next(req);\n }\n // Check if URL should be excluded\n const shouldExclude = config.excludeUrls.some(url => req.url.includes(url) || new RegExp(url).test(req.url));\n if (shouldExclude) {\n return next(req);\n }\n // Skip auth for login, register, and refresh endpoints\n const skipAuth = req.url.includes('/login') || req.url.includes('/register') || req.url.includes('/refresh');\n // Handle URL transformation\n const baseUrl = environment.apiBaseUrl;\n const finalUrl = isCustomUrl || !config.baseUrlInjection ? req.url : `${baseUrl}${req.url}`;\n // Generate or get correlation context\n const correlationId = config.enableCorrelationTracking\n ? correlationService.getOrCreateCorrelationId()\n : uuidv4();\n const tenantId = tenantService.getTenantId();\n const requestId = uuidv4();\n // Build dynamic headers\n const headers = {};\n // Core context headers\n headers[config.requestIdHeader] = requestId;\n if (config.enableCorrelationTracking) {\n headers[config.correlationIdHeader] = correlationId;\n }\n if (tenantId) {\n headers[config.tenantIdHeader] = tenantId;\n }\n headers[config.timestampHeader] = new Date().toISOString();\n // Client information\n if (config.clientVersion) {\n headers['Client-Version'] = config.clientVersion;\n }\n // Environment client ID\n if (environment.clientId) {\n headers['Client-Id'] = environment.clientId;\n }\n // Add authorization header if configured and available\n if (config.includeAuthToken && !skipAuth) {\n const authToken = tokenProvider?.getToken();\n if (authToken) {\n headers['Authorization'] = `Bearer ${authToken}`;\n }\n }\n // Process custom headers from configuration (can be static values or dynamic functions)\n Object.entries(config.customHeaders).forEach(([key, value]) => {\n headers[key] = typeof value === 'function' ? value() : value;\n });\n // Add headers from HTTP context\n Object.entries(contextHeaders).forEach(([key, value]) => {\n headers[key] = value;\n });\n // Add content-type for data requests if not already set\n if (['POST', 'PUT', 'PATCH'].includes(req.method.toUpperCase()) &&\n !req.headers.has('Content-Type')) {\n headers['Content-Type'] = 'application/json';\n }\n // Clone request with enhanced headers and URL\n const enhancedReq = req.clone({\n url: finalUrl,\n setHeaders: headers,\n });\n // Log outgoing request if enabled\n if (config.enableRequestLogging) {\n loggingService.logHttpRequest({\n method: req.method,\n url: finalUrl,\n originalUrl: req.url,\n requestId,\n correlationId,\n tenantId,\n timestamp: new Date().toISOString(),\n headers: Object.keys(headers),\n isCustomUrl,\n });\n }\n // If request has auth header, handle with refresh logic\n if (headers['Authorization'] && config.refreshTokenCallback) {\n return next(enhancedReq).pipe(catchError(error => {\n // If 401 Unauthorized, try to refresh token\n if (error.status === 401) {\n const refreshToken = tokenProvider?.getRefreshToken?.();\n if (refreshToken && refreshToken.trim().length > 0) {\n return config.refreshTokenCallback().pipe(switchMap(newTokens => {\n // Retry the original request with new token\n const retryReq = req.clone({\n url: finalUrl,\n setHeaders: { ...headers, Authorization: `Bearer ${newTokens.token}` },\n });\n return next(retryReq);\n }), catchError(refreshError => {\n // Refresh failed, logout user\n config.logoutCallback?.();\n return throwError(() => refreshError);\n }));\n }\n }\n // Enhanced error logging with context\n if (config.enableErrorLogging) {\n loggingService.logHttpError({\n method: req.method,\n url: finalUrl,\n originalUrl: req.url,\n requestId,\n correlationId,\n tenantId,\n status: error.status,\n statusText: error.statusText,\n message: error.message,\n timestamp: new Date().toISOString(),\n errorDetails: error.error,\n environment: environment.clientId,\n isCustomUrl,\n headers: [], // Headers are not included in HttpErrorResponse by default, adjust if needed\n });\n }\n // Handle other error scenarios\n switch (error.status) {\n case 403:\n tenantService.handleForbidden();\n break;\n case 0:\n loggingService.logNetworkError(correlationId);\n break;\n case 429:\n loggingService.logRateLimitError(correlationId, finalUrl);\n break;\n }\n return throwError(() => error);\n }));\n }\n else {\n // No auth header, use standard error handling\n return next(enhancedReq).pipe(catchError((error) => {\n // Enhanced error logging with context\n if (config.enableErrorLogging) {\n loggingService.logHttpError({\n method: req.method,\n url: finalUrl,\n originalUrl: req.url,\n requestId,\n correlationId,\n tenantId,\n status: error.status,\n statusText: error.statusText,\n message: error.message,\n timestamp: new Date().toISOString(),\n errorDetails: error.error,\n environment: environment.clientId,\n isCustomUrl,\n headers: [], // Headers are not included in HttpErrorResponse by default, adjust if needed\n });\n }\n // Handle specific error scenarios\n switch (error.status) {\n case 401: {\n loggingService.error('Unauthorized access - token expired or invalid');\n // Note: Token clearing should be handled by the auth service, not infrastructure\n router.navigate([`/${environment.loginRoute}`]);\n break;\n }\n case 403:\n tenantService.handleForbidden();\n break;\n case 0:\n loggingService.logNetworkError(correlationId);\n break;\n case 429:\n loggingService.logRateLimitError(correlationId, finalUrl);\n break;\n }\n return throwError(() => error);\n }));\n }\n};\n// Helper function to create configuration\nexport function createHttpContextConfig(overrides = {}) {\n return {\n ...DEFAULT_CONFIG,\n ...overrides,\n };\n}\n// Provider function for easy setup\nexport function provideHttpContext(config = {}) {\n return [\n {\n provide: HTTP_CONTEXT_CONFIG,\n useValue: createHttpContextConfig(config),\n },\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jb250ZXh0LmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9pbnRlcmNlcHRvcnMvaHR0cC1jb250ZXh0LmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDLENBQUMsd0JBQXdCO0FBQ2hGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFdBQVcsR0FHWixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELFdBQVc7QUFDWCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxzQkFBc0I7QUFDdEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBVSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5RCxNQUFNLG9CQUFvQixHQUFHLElBQUksZ0JBQWdCLENBQVUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBeUIs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QUFNLFVBQVUsdUJBQXVCLENBQ3JDLFlBQXdDLEVBQUU7SUFFMUMsT0FBTztRQUNMLEdBQUcsY0FBYztRQUNqQixHQUFHLFNBQVM7S0FDYixDQUFDO0FBQ0osQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBcUMsRUFBRTtJQUN4RSxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLENBQUM7U0FDMUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJzsgLy8gSW1wb3J0IEluamVjdGlvblRva2VuXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgSHR0cENvbnRleHRUb2tlbixcbiAgSHR0cENvbnRleHQsXG4gIEh0dHBJbnRlcmNlcHRvckZuLFxuICBIdHRwRXJyb3JSZXNwb25zZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGhyb3dFcnJvciwgc3dpdGNoTWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuLy8gRW52aXJvbm1lbnQgYW5kIGNvbmZpZ3VyYXRpb25cbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb25maWcnO1xuXG4vLyBTZXJ2aWNlc1xuaW1wb3J0IHsgVGVuYW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RlbmFudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvcnJlbGF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvcnJlbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2luZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2dnaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVE9LRU5fUFJPVklERVIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3Rva2VuLXByb3ZpZGVyLmludGVyZmFjZSc7XG5cbi8vIEhUVFAgQ29udGV4dCB0b2tlbnNcbmNvbnN0IENVU1RPTV9VUkwgPSBuZXcgSHR0cENvbnRleHRUb2tlbjxib29sZWFuPigoKSA9PiBmYWxzZSk7XG5jb25zdCBTS0lQX0NPTlRFWFRfSEVBREVSUyA9IG5ldyBIdHRwQ29udGV4dFRva2VuPGJvb2xlYW4+KCgpID0+IGZhbHNlKTtcbmNvbnN0IENVU1RPTV9IRUFERVJTID0gbmV3IEh0dHBDb250ZXh0VG9rZW48UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKCkgPT4gKHt9KSk7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIEhUVFAgY29udGV4dFxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbVVybCgpIHtcbiAgcmV0dXJuIG5ldyBIdHRwQ29udGV4dCgpLnNldChDVVNUT01fVVJMLCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNraXBDb250ZXh0SGVhZGVycygpIHtcbiAgcmV0dXJuIG5ldyBIdHRwQ29udGV4dCgpLnNldChTS0lQX0NPTlRFWFRfSEVBREVSUywgdHJ1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ3VzdG9tSGVhZGVycyhoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIHJldHVybiBuZXcgSHR0cENvbnRleHQoKS5zZXQoQ1VTVE9NX0hFQURFUlMsIGhlYWRlcnMpO1xufVxuXG4vLyBDb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgbGlicmFyeSBjb25zdW1lcnNcbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENvbnRleHRDb25maWcge1xuICBlbmFibGVDb3JyZWxhdGlvblRyYWNraW5nPzogYm9vbGVhbjtcbiAgZW5hYmxlUmVxdWVzdExvZ2dpbmc/OiBib29sZWFuO1xuICBlbmFibGVFcnJvckxvZ2dpbmc/OiBib29sZWFuO1xuICBjdXN0b21IZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgKCgpID0+IHN0cmluZyk+O1xuICBjbGllbnRWZXJzaW9uPzogc3RyaW5nO1xuICB0ZW5hbnRJZEhlYWRlcj86IHN0cmluZztcbiAgY29ycmVsYXRpb25JZEhlYWRlcj86IHN0cmluZztcbiAgcmVxdWVzdElkSGVhZGVyPzogc3RyaW5nO1xuICB0aW1lc3RhbXBIZWFkZXI/OiBzdHJpbmc7XG4gIGV4Y2x1ZGVVcmxzPzogc3RyaW5nW107XG4gIGluY2x1ZGVBdXRoVG9rZW4/OiBib29sZWFuO1xuICBiYXNlVXJsSW5qZWN0aW9uPzogYm9vbGVhbjtcbiAgcmVmcmVzaFRva2VuQ2FsbGJhY2s/OiAoKSA9PiBPYnNlcnZhYmxlPHsgdG9rZW46IHN0cmluZzsgcmVmcmVzaFRva2VuPzogc3RyaW5nIH0+O1xuICBsb2dvdXRDYWxsYmFjaz86ICgpID0+IHZvaWQ7XG59XG5cbi8vIERlZmF1bHQgY29uZmlndXJhdGlvblxuY29uc3QgREVGQVVMVF9DT05GSUc6IFJlcXVpcmVkPEh0dHBDb250ZXh0Q29uZmlnPiA9IHtcbiAgZW5hYmxlQ29ycmVsYXRpb25UcmFja2luZzogdHJ1ZSxcbiAgZW5hYmxlUmVxdWVzdExvZ2dpbmc6IGZhbHNlLCAvLyBUaGlzIHdpbGwgYmUgb3ZlcnJpZGRlbiBieSBlbnZpcm9ubWVudC5pc1Byb2R1Y3Rpb25cbiAgZW5hYmxlRXJyb3JMb2dnaW5nOiB0cnVlLFxuICBjdXN0b21IZWFkZXJzOiB7fSxcbiAgY2xpZW50VmVyc2lvbjogJzEuMC4wJyxcbiAgdGVuYW50SWRIZWFkZXI6ICdUZW5hbnQtSWQnLFxuICBjb3JyZWxhdGlvbklkSGVhZGVyOiAnQ29ycmVsYXRpb24tSWQnLFxuICByZXF1ZXN0SWRIZWFkZXI6ICdSZXF1ZXN0LUlkJyxcbiAgdGltZXN0YW1wSGVhZGVyOiAnVGltZXN0YW1wJyxcbiAgZXhjbHVkZVVybHM6IFtdLFxuICBpbmNsdWRlQXV0aFRva2VuOiB0cnVlLFxuICBiYXNlVXJsSW5qZWN0aW9uOiB0cnVlLFxuICByZWZyZXNoVG9rZW5DYWxsYmFjazogdW5kZWZpbmVkIGFzIGFueSxcbiAgbG9nb3V0Q2FsbGJhY2s6IHVuZGVmaW5lZCBhcyBhbnksXG59O1xuXG4vLyBJbmplY3Rpb24gdG9rZW4gZm9yIGNvbmZpZ3VyYXRpb24gLSBGSVhFRFxuZXhwb3J0IGNvbnN0IEhUVFBfQ09OVEVYVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48SHR0cENvbnRleHRDb25maWc+KCdIVFRQX0NPTlRFWFRfQ09ORklHJywge1xuICBmYWN0b3J5OiAoKSA9PiBERUZBVUxUX0NPTkZJRywgLy8gUHJvdmlkZSBhIGRlZmF1bHQgZmFjdG9yeSBpbiBjYXNlIGl0J3Mgbm90IHByb3ZpZGVkXG59KTtcblxuZXhwb3J0IGNvbnN0IGh0dHBDb250ZXh0SW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xuICBjb25zdCB0b2tlblByb3ZpZGVyID0gaW5qZWN0KFRPS0VOX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgdGVuYW50U2VydmljZSA9IGluamVjdChUZW5hbnRTZXJ2aWNlKTtcbiAgY29uc3QgY29ycmVsYXRpb25TZXJ2aWNlID0gaW5qZWN0KENvcnJlbGF0aW9uU2VydmljZSk7XG4gIGNvbnN0IGxvZ2dpbmdTZXJ2aWNlID0gaW5qZWN0KExvZ2dpbmdTZXJ2aWNlKTtcbiAgY29uc3QgZW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xuXG4gIC8vIEdldCBjb25maWd1cmF0aW9uICh3aXRoIGZhbGxiYWNrIHRvIGRlZmF1bHQpIC0gRklYRURcbiAgY29uc3QgY29uZmlnOiBSZXF1aXJlZDxIdHRwQ29udGV4dENvbmZpZz4gPSB7XG4gICAgLi4uREVGQVVMVF9DT05GSUcsXG4gICAgLy8gVGhlIGRlZmF1bHQgZW5hYmxlUmVxdWVzdExvZ2dpbmcgbmVlZHMgdG8gYmUgc2V0IGJhc2VkIG9uIGVudmlyb25tZW50IGhlcmUsXG4gICAgLy8gYXMgaXQncyBkeW5hbWljLCBhbmQgREVGQVVMVF9DT05GSUcgaXMgc3RhdGljLlxuICAgIGVuYWJsZVJlcXVlc3RMb2dnaW5nOiAhZW52aXJvbm1lbnQuaXNQcm9kdWN0aW9uLFxuICAgIC4uLmluamVjdChIVFRQX0NPTlRFWFRfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICB9O1xuXG4gIC8vIENoZWNrIEhUVFAgY29udGV4dCB0b2tlbnNcbiAgY29uc3QgaXNDdXN0b21VcmwgPSByZXEuY29udGV4dC5nZXQoQ1VTVE9NX1VSTCk7XG4gIGNvbnN0IHNraXBIZWFkZXJzID0gcmVxLmNvbnRleHQuZ2V0KFNLSVBfQ09OVEVYVF9IRUFERVJTKTtcbiAgY29uc3QgY29udGV4dEhlYWRlcnMgPSByZXEuY29udGV4dC5nZXQoQ1VTVE9NX0hFQURFUlMpO1xuXG4gIC8vIFNraXAgcHJvY2Vzc2luZyBpZiBoZWFkZXJzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyByZXF1ZXN0XG4gIGlmIChza2lwSGVhZGVycykge1xuICAgIHJldHVybiBuZXh0KHJlcSk7XG4gIH1cblxuICAvLyBDaGVjayBpZiBVUkwgc2hvdWxkIGJlIGV4Y2x1ZGVkXG4gIGNvbnN0IHNob3VsZEV4Y2x1ZGUgPSBjb25maWcuZXhjbHVkZVVybHMuc29tZShcbiAgICB1cmwgPT4gcmVxLnVybC5pbmNsdWRlcyh1cmwpIHx8IG5ldyBSZWdFeHAodXJsKS50ZXN0KHJlcS51cmwpLFxuICApO1xuXG4gIGlmIChzaG91bGRFeGNsdWRlKSB7XG4gICAgcmV0dXJuIG5leHQocmVxKTtcbiAgfVxuXG4gIC8vIFNraXAgYXV0aCBmb3IgbG9naW4sIHJlZ2lzdGVyLCBhbmQgcmVmcmVzaCBlbmRwb2ludHNcbiAgY29uc3Qgc2tpcEF1dGggPVxuICAgIHJlcS51cmwuaW5jbHVkZXMoJy9sb2dpbicpIHx8IHJlcS51cmwuaW5jbHVkZXMoJy9yZWdpc3RlcicpIHx8IHJlcS51cmwuaW5jbHVkZXMoJy9yZWZyZXNoJyk7XG5cbiAgLy8gSGFuZGxlIFVSTCB0cmFuc2Zvcm1hdGlvblxuICBjb25zdCBiYXNlVXJsID0gZW52aXJvbm1lbnQuYXBpQmFzZVVybDtcbiAgY29uc3QgZmluYWxVcmwgPSBpc0N1c3RvbVVybCB8fCAhY29uZmlnLmJhc2VVcmxJbmplY3Rpb24gPyByZXEudXJsIDogYCR7YmFzZVVybH0ke3JlcS51cmx9YDtcblxuICAvLyBHZW5lcmF0ZSBvciBnZXQgY29ycmVsYXRpb24gY29udGV4dFxuICBjb25zdCBjb3JyZWxhdGlvbklkID0gY29uZmlnLmVuYWJsZUNvcnJlbGF0aW9uVHJhY2tpbmdcbiAgICA/IGNvcnJlbGF0aW9uU2VydmljZS5nZXRPckNyZWF0ZUNvcnJlbGF0aW9uSWQoKVxuICAgIDogdXVpZHY0KCk7XG4gIGNvbnN0IHRlbmFudElkID0gdGVuYW50U2VydmljZS5nZXRUZW5hbnRJZCgpO1xuICBjb25zdCByZXF1ZXN0SWQgPSB1dWlkdjQoKTtcblxuICAvLyBCdWlsZCBkeW5hbWljIGhlYWRlcnNcbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIC8vIENvcmUgY29udGV4dCBoZWFkZXJzXG4gIGhlYWRlcnNbY29uZmlnLnJlcXVlc3RJZEhlYWRlcl0gPSByZXF1ZXN0SWQ7XG5cbiAgaWYgKGNvbmZpZy5lbmFibGVDb3JyZWxhdGlvblRyYWNraW5nKSB7XG4gICAgaGVhZGVyc1tjb25maWcuY29ycmVsYXRpb25JZEhlYWRlcl0gPSBjb3JyZWxhdGlvbklkO1xuICB9XG5cbiAgaWYgKHRlbmFudElkKSB7XG4gICAgaGVhZGVyc1tjb25maWcudGVuYW50SWRIZWFkZXJdID0gdGVuYW50SWQ7XG4gIH1cblxuICBoZWFkZXJzW2NvbmZpZy50aW1lc3RhbXBIZWFkZXJdID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gIC8vIENsaWVudCBpbmZvcm1hdGlvblxuICBpZiAoY29uZmlnLmNsaWVudFZlcnNpb24pIHtcbiAgICBoZWFkZXJzWydDbGllbnQtVmVyc2lvbiddID0gY29uZmlnLmNsaWVudFZlcnNpb247XG4gIH1cblxuICAvLyBFbnZpcm9ubWVudCBjbGllbnQgSURcbiAgaWYgKGVudmlyb25tZW50LmNsaWVudElkKSB7XG4gICAgaGVhZGVyc1snQ2xpZW50LUlkJ10gPSBlbnZpcm9ubWVudC5jbGllbnRJZDtcbiAgfVxuXG4gIC8vIEFkZCBhdXRob3JpemF0aW9uIGhlYWRlciBpZiBjb25maWd1cmVkIGFuZCBhdmFpbGFibGVcbiAgaWYgKGNvbmZpZy5pbmNsdWRlQXV0aFRva2VuICYmICFza2lwQXV0aCkge1xuICAgIGNvbnN0IGF1dGhUb2tlbiA9IHRva2VuUHJvdmlkZXI/LmdldFRva2VuKCk7XG4gICAgaWYgKGF1dGhUb2tlbikge1xuICAgICAgaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gYEJlYXJlciAke2F1dGhUb2tlbn1gO1xuICAgIH1cbiAgfVxuXG4gIC8vIFByb2Nlc3MgY3VzdG9tIGhlYWRlcnMgZnJvbSBjb25maWd1cmF0aW9uIChjYW4gYmUgc3RhdGljIHZhbHVlcyBvciBkeW5hbWljIGZ1bmN0aW9ucylcbiAgT2JqZWN0LmVudHJpZXMoY29uZmlnLmN1c3RvbUhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGhlYWRlcnNba2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKCkgOiB2YWx1ZTtcbiAgfSk7XG5cbiAgLy8gQWRkIGhlYWRlcnMgZnJvbSBIVFRQIGNvbnRleHRcbiAgT2JqZWN0LmVudHJpZXMoY29udGV4dEhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICB9KTtcblxuICAvLyBBZGQgY29udGVudC10eXBlIGZvciBkYXRhIHJlcXVlc3RzIGlmIG5vdCBhbHJlYWR5IHNldFxuICBpZiAoXG4gICAgWydQT1NUJywgJ1BVVCcsICdQQVRDSCddLmluY2x1ZGVzKHJlcS5tZXRob2QudG9VcHBlckNhc2UoKSkgJiZcbiAgICAhcmVxLmhlYWRlcnMuaGFzKCdDb250ZW50LVR5cGUnKVxuICApIHtcbiAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgfVxuXG4gIC8vIENsb25lIHJlcXVlc3Qgd2l0aCBlbmhhbmNlZCBoZWFkZXJzIGFuZCBVUkxcbiAgY29uc3QgZW5oYW5jZWRSZXEgPSByZXEuY2xvbmUoe1xuICAgIHVybDogZmluYWxVcmwsXG4gICAgc2V0SGVhZGVyczogaGVhZGVycyxcbiAgfSk7XG5cbiAgLy8gTG9nIG91dGdvaW5nIHJlcXVlc3QgaWYgZW5hYmxlZFxuICBpZiAoY29uZmlnLmVuYWJsZVJlcXVlc3RMb2dnaW5nKSB7XG4gICAgbG9nZ2luZ1NlcnZpY2UubG9nSHR0cFJlcXVlc3Qoe1xuICAgICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgICAgdXJsOiBmaW5hbFVybCxcbiAgICAgIG9yaWdpbmFsVXJsOiByZXEudXJsLFxuICAgICAgcmVxdWVzdElkLFxuICAgICAgY29ycmVsYXRpb25JZCxcbiAgICAgIHRlbmFudElkLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBoZWFkZXJzOiBPYmplY3Qua2V5cyhoZWFkZXJzKSxcbiAgICAgIGlzQ3VzdG9tVXJsLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSWYgcmVxdWVzdCBoYXMgYXV0aCBoZWFkZXIsIGhhbmRsZSB3aXRoIHJlZnJlc2ggbG9naWNcbiAgaWYgKGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSAmJiBjb25maWcucmVmcmVzaFRva2VuQ2FsbGJhY2spIHtcbiAgICByZXR1cm4gbmV4dChlbmhhbmNlZFJlcSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAvLyBJZiA0MDEgVW5hdXRob3JpemVkLCB0cnkgdG8gcmVmcmVzaCB0b2tlblxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSB0b2tlblByb3ZpZGVyPy5nZXRSZWZyZXNoVG9rZW4/LigpO1xuICAgICAgICAgIGlmIChyZWZyZXNoVG9rZW4gJiYgcmVmcmVzaFRva2VuLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnJlZnJlc2hUb2tlbkNhbGxiYWNrKCkhLnBpcGUoXG4gICAgICAgICAgICAgIHN3aXRjaE1hcChuZXdUb2tlbnMgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFJldHJ5IHRoZSBvcmlnaW5hbCByZXF1ZXN0IHdpdGggbmV3IHRva2VuXG4gICAgICAgICAgICAgICAgY29uc3QgcmV0cnlSZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICAgICAgICAgICAgdXJsOiBmaW5hbFVybCxcbiAgICAgICAgICAgICAgICAgIHNldEhlYWRlcnM6IHsgLi4uaGVhZGVycywgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke25ld1Rva2Vucy50b2tlbn1gIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHQocmV0cnlSZXEpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcihyZWZyZXNoRXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFJlZnJlc2ggZmFpbGVkLCBsb2dvdXQgdXNlclxuICAgICAgICAgICAgICAgIGNvbmZpZy5sb2dvdXRDYWxsYmFjaz8uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gcmVmcmVzaEVycm9yKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuaGFuY2VkIGVycm9yIGxvZ2dpbmcgd2l0aCBjb250ZXh0XG4gICAgICAgIGlmIChjb25maWcuZW5hYmxlRXJyb3JMb2dnaW5nKSB7XG4gICAgICAgICAgbG9nZ2luZ1NlcnZpY2UubG9nSHR0cEVycm9yKHtcbiAgICAgICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgICAgIHVybDogZmluYWxVcmwsXG4gICAgICAgICAgICBvcmlnaW5hbFVybDogcmVxLnVybCxcbiAgICAgICAgICAgIHJlcXVlc3RJZCxcbiAgICAgICAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICAgIHN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgICAgICAgc3RhdHVzVGV4dDogZXJyb3Iuc3RhdHVzVGV4dCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIGVycm9yRGV0YWlsczogZXJyb3IuZXJyb3IsXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogZW52aXJvbm1lbnQuY2xpZW50SWQsXG4gICAgICAgICAgICBpc0N1c3RvbVVybCxcbiAgICAgICAgICAgIGhlYWRlcnM6IFtdLCAvLyBIZWFkZXJzIGFyZSBub3QgaW5jbHVkZWQgaW4gSHR0cEVycm9yUmVzcG9uc2UgYnkgZGVmYXVsdCwgYWRqdXN0IGlmIG5lZWRlZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxlIG90aGVyIGVycm9yIHNjZW5hcmlvc1xuICAgICAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgICAgIGNhc2UgNDAzOlxuICAgICAgICAgICAgdGVuYW50U2VydmljZS5oYW5kbGVGb3JiaWRkZW4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIGxvZ2dpbmdTZXJ2aWNlLmxvZ05ldHdvcmtFcnJvcihjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDI5OlxuICAgICAgICAgICAgbG9nZ2luZ1NlcnZpY2UubG9nUmF0ZUxpbWl0RXJyb3IoY29ycmVsYXRpb25JZCwgZmluYWxVcmwpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KSxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIC8vIE5vIGF1dGggaGVhZGVyLCB1c2Ugc3RhbmRhcmQgZXJyb3IgaGFuZGxpbmdcbiAgICByZXR1cm4gbmV4dChlbmhhbmNlZFJlcSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAvLyBFbmhhbmNlZCBlcnJvciBsb2dnaW5nIHdpdGggY29udGV4dFxuICAgICAgICBpZiAoY29uZmlnLmVuYWJsZUVycm9yTG9nZ2luZykge1xuICAgICAgICAgIGxvZ2dpbmdTZXJ2aWNlLmxvZ0h0dHBFcnJvcih7XG4gICAgICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgICAgICB1cmw6IGZpbmFsVXJsLFxuICAgICAgICAgICAgb3JpZ2luYWxVcmw6IHJlcS51cmwsXG4gICAgICAgICAgICByZXF1ZXN0SWQsXG4gICAgICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgICBzdGF0dXM6IGVycm9yLnN0YXR1cyxcbiAgICAgICAgICAgIHN0YXR1c1RleHQ6IGVycm9yLnN0YXR1c1RleHQsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICBlcnJvckRldGFpbHM6IGVycm9yLmVycm9yLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IGVudmlyb25tZW50LmNsaWVudElkLFxuICAgICAgICAgICAgaXNDdXN0b21VcmwsXG4gICAgICAgICAgICBoZWFkZXJzOiBbXSwgLy8gSGVhZGVycyBhcmUgbm90IGluY2x1ZGVkIGluIEh0dHBFcnJvclJlc3BvbnNlIGJ5IGRlZmF1bHQsIGFkanVzdCBpZiBuZWVkZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSBzcGVjaWZpYyBlcnJvciBzY2VuYXJpb3NcbiAgICAgICAgc3dpdGNoIChlcnJvci5zdGF0dXMpIHtcbiAgICAgICAgICBjYXNlIDQwMToge1xuICAgICAgICAgICAgbG9nZ2luZ1NlcnZpY2UuZXJyb3IoJ1VuYXV0aG9yaXplZCBhY2Nlc3MgLSB0b2tlbiBleHBpcmVkIG9yIGludmFsaWQnKTtcbiAgICAgICAgICAgIC8vIE5vdGU6IFRva2VuIGNsZWFyaW5nIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBhdXRoIHNlcnZpY2UsIG5vdCBpbmZyYXN0cnVjdHVyZVxuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlKFtgLyR7ZW52aXJvbm1lbnQubG9naW5Sb3V0ZX1gXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSA0MDM6XG4gICAgICAgICAgICB0ZW5hbnRTZXJ2aWNlLmhhbmRsZUZvcmJpZGRlbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgbG9nZ2luZ1NlcnZpY2UubG9nTmV0d29ya0Vycm9yKGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA0Mjk6XG4gICAgICAgICAgICBsb2dnaW5nU2VydmljZS5sb2dSYXRlTGltaXRFcnJvcihjb3JyZWxhdGlvbklkLCBmaW5hbFVybCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn07XG5cbi8vIFN1cHBvcnRpbmcgaW50ZXJmYWNlcyBmb3IgdHlwZSBzYWZldHlcbmV4cG9ydCBpbnRlcmZhY2UgSHR0cFJlcXVlc3RMb2cge1xuICBtZXRob2Q6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIG9yaWdpbmFsVXJsOiBzdHJpbmc7XG4gIHJlcXVlc3RJZDogc3RyaW5nO1xuICBjb3JyZWxhdGlvbklkOiBzdHJpbmc7XG4gIHRlbmFudElkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBoZWFkZXJzOiBzdHJpbmdbXTtcbiAgaXNDdXN0b21Vcmw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEVycm9yTG9nIGV4dGVuZHMgSHR0cFJlcXVlc3RMb2cge1xuICBzdGF0dXM6IG51bWJlcjtcbiAgc3RhdHVzVGV4dDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGVycm9yRGV0YWlsczogdW5rbm93bjtcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBjb25maWd1cmF0aW9uXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSHR0cENvbnRleHRDb25maWcoXG4gIG92ZXJyaWRlczogUGFydGlhbDxIdHRwQ29udGV4dENvbmZpZz4gPSB7fSxcbik6IEh0dHBDb250ZXh0Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5ERUZBVUxUX0NPTkZJRyxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH07XG59XG5cbi8vIFByb3ZpZGVyIGZ1bmN0aW9uIGZvciBlYXN5IHNldHVwXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUh0dHBDb250ZXh0KGNvbmZpZzogUGFydGlhbDxIdHRwQ29udGV4dENvbmZpZz4gPSB7fSkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEhUVFBfQ09OVEVYVF9DT05GSUcsXG4gICAgICB1c2VWYWx1ZTogY3JlYXRlSHR0cENvbnRleHRDb25maWcoY29uZmlnKSxcbiAgICB9LFxuICBdO1xufVxuIl19","import { HttpContext, HttpContextToken, } from '@angular/common/http';\nimport { finalize } from 'rxjs/operators';\nimport { inject, Injectable } from '@angular/core';\nimport { OverlayService } from '@acontplus/ng-components';\nimport * as i0 from \"@angular/core\";\n/**\n * Token to determine if a request should show spinner\n * Default is true (show spinner for all requests)\n */\nconst SHOW_SPINNER = new HttpContextToken(() => true);\nconst requests = [];\n/**\n * Helper function to disable spinner for specific requests\n * @returns HttpContext with spinner disabled\n */\nexport function withoutSpinner() {\n return new HttpContext().set(SHOW_SPINNER, false);\n}\n/**\n * Service to track active HTTP requests\n */\nexport class ActiveRequestsTracker {\n get count() {\n return requests.length;\n }\n add(request) {\n requests.push(request);\n }\n remove(request) {\n const index = requests.indexOf(request);\n if (index >= 0) {\n requests.splice(index, 1);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActiveRequestsTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActiveRequestsTracker, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActiveRequestsTracker, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n/**\n * Interceptor that shows/hides a loading spinner based on active HTTP requests\n */\nexport const spinnerInterceptor = (req, next) => {\n // Track active requests requiring spinner\n const activeRequests = inject(ActiveRequestsTracker);\n const overlayService = inject(OverlayService);\n // Skip spinner if disabled for this request\n if (!req.context.get(SHOW_SPINNER)) {\n return next(req);\n }\n // Add request to tracking\n activeRequests.add(req);\n // Show spinner if this is the first active request\n if (activeRequests.count === 1) {\n overlayService.showSpinner();\n }\n return next(req).pipe(finalize(() => {\n // Remove request and hide spinner if no more active requests\n activeRequests.remove(req);\n if (activeRequests.count === 0) {\n overlayService.hideSpinner();\n }\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvaW50ZXJjZXB0b3JzL3NwaW5uZXIuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsR0FHakIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUMxRDs7O0dBR0c7QUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLGdCQUFnQixDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRS9ELE1BQU0sUUFBUSxHQUEyQixFQUFFLENBQUM7QUFFNUM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxJQUFJLEtBQUs7UUFDUCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDekIsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUE2QjtRQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBNkI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNmLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO3VHQWRVLHFCQUFxQjsyR0FBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBa0JEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXNCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQ2pFLDBDQUEwQztJQUMxQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNyRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFOUMsNENBQTRDO0lBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV4QixtREFBbUQ7SUFDbkQsSUFBSSxjQUFjLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNuQixRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ1osNkRBQTZEO1FBQzdELGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxjQUFjLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBDb250ZXh0LFxuICBIdHRwQ29udGV4dFRva2VuLFxuICBIdHRwSW50ZXJjZXB0b3JGbixcbiAgSHR0cFJlcXVlc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb21wb25lbnRzJztcbi8qKlxuICogVG9rZW4gdG8gZGV0ZXJtaW5lIGlmIGEgcmVxdWVzdCBzaG91bGQgc2hvdyBzcGlubmVyXG4gKiBEZWZhdWx0IGlzIHRydWUgKHNob3cgc3Bpbm5lciBmb3IgYWxsIHJlcXVlc3RzKVxuICovXG5jb25zdCBTSE9XX1NQSU5ORVIgPSBuZXcgSHR0cENvbnRleHRUb2tlbjxib29sZWFuPigoKSA9PiB0cnVlKTtcblxuY29uc3QgcmVxdWVzdHM6IEh0dHBSZXF1ZXN0PHVua25vd24+W10gPSBbXTtcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGlzYWJsZSBzcGlubmVyIGZvciBzcGVjaWZpYyByZXF1ZXN0c1xuICogQHJldHVybnMgSHR0cENvbnRleHQgd2l0aCBzcGlubmVyIGRpc2FibGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRob3V0U3Bpbm5lcigpIHtcbiAgcmV0dXJuIG5ldyBIdHRwQ29udGV4dCgpLnNldChTSE9XX1NQSU5ORVIsIGZhbHNlKTtcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIHRvIHRyYWNrIGFjdGl2ZSBIVFRQIHJlcXVlc3RzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBY3RpdmVSZXF1ZXN0c1RyYWNrZXIge1xuICBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcmVxdWVzdHMubGVuZ3RoO1xuICB9XG5cbiAgYWRkKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+KTogdm9pZCB7XG4gICAgcmVxdWVzdHMucHVzaChyZXF1ZXN0KTtcbiAgfVxuXG4gIHJlbW92ZShyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gcmVxdWVzdHMuaW5kZXhPZihyZXF1ZXN0KTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmVxdWVzdHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmNlcHRvciB0aGF0IHNob3dzL2hpZGVzIGEgbG9hZGluZyBzcGlubmVyIGJhc2VkIG9uIGFjdGl2ZSBIVFRQIHJlcXVlc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBzcGlubmVySW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xuICAvLyBUcmFjayBhY3RpdmUgcmVxdWVzdHMgcmVxdWlyaW5nIHNwaW5uZXJcbiAgY29uc3QgYWN0aXZlUmVxdWVzdHMgPSBpbmplY3QoQWN0aXZlUmVxdWVzdHNUcmFja2VyKTtcbiAgY29uc3Qgb3ZlcmxheVNlcnZpY2UgPSBpbmplY3QoT3ZlcmxheVNlcnZpY2UpO1xuXG4gIC8vIFNraXAgc3Bpbm5lciBpZiBkaXNhYmxlZCBmb3IgdGhpcyByZXF1ZXN0XG4gIGlmICghcmVxLmNvbnRleHQuZ2V0KFNIT1dfU1BJTk5FUikpIHtcbiAgICByZXR1cm4gbmV4dChyZXEpO1xuICB9XG5cbiAgLy8gQWRkIHJlcXVlc3QgdG8gdHJhY2tpbmdcbiAgYWN0aXZlUmVxdWVzdHMuYWRkKHJlcSk7XG5cbiAgLy8gU2hvdyBzcGlubmVyIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFjdGl2ZSByZXF1ZXN0XG4gIGlmIChhY3RpdmVSZXF1ZXN0cy5jb3VudCA9PT0gMSkge1xuICAgIG92ZXJsYXlTZXJ2aWNlLnNob3dTcGlubmVyKCk7XG4gIH1cblxuICByZXR1cm4gbmV4dChyZXEpLnBpcGUoXG4gICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgLy8gUmVtb3ZlIHJlcXVlc3QgYW5kIGhpZGUgc3Bpbm5lciBpZiBubyBtb3JlIGFjdGl2ZSByZXF1ZXN0c1xuICAgICAgYWN0aXZlUmVxdWVzdHMucmVtb3ZlKHJlcSk7XG4gICAgICBpZiAoYWN0aXZlUmVxdWVzdHMuY291bnQgPT09IDApIHtcbiAgICAgICAgb3ZlcmxheVNlcnZpY2UuaGlkZVNwaW5uZXIoKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgKTtcbn07XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport * as i0 from \"@angular/core\";\nexport class BaseHttpRepository {\n http = inject(HttpClient);\n buildUrl(path = '') {\n const baseUrl = this.config.baseUrl || '/api';\n const version = this.config.version ? `/v${this.config.version}` : '';\n const endpoint = path ? `${this.config.endpoint}/${path}` : this.config.endpoint;\n return `${baseUrl}${version}/${endpoint}`.replace(/\\/+/g, '/');\n }\n get(path = '', params) {\n return this.http.get(this.buildUrl(path), { params });\n }\n post(path = '', body) {\n return this.http.post(this.buildUrl(path), body);\n }\n put(path = '', body) {\n return this.http.put(this.buildUrl(path), body);\n }\n patch(path = '', body) {\n return this.http.patch(this.buildUrl(path), body);\n }\n delete(path = '') {\n return this.http.delete(this.buildUrl(path));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: BaseHttpRepository, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: BaseHttpRepository });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: BaseHttpRepository, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1pbmZyYXN0cnVjdHVyZS9zcmMvbGliL3JlcG9zaXRvcmllcy9iYXNlLWh0dHAucmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBS2xELE1BQU0sT0FBZ0Isa0JBQWtCO0lBQzVCLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFHMUIsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUVqRixPQUFPLEdBQUcsT0FBTyxHQUFHLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFUyxHQUFHLENBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFrRDtRQUM1RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFUyxJQUFJLENBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFhO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVMsR0FBRyxDQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBYTtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVTLEtBQUssQ0FBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQWM7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFUyxNQUFNLENBQUksSUFBSSxHQUFHLEVBQUU7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzt1R0E5Qm1CLGtCQUFrQjsyR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSHR0cFJlcG9zaXRvcnkge1xuICBwcm90ZWN0ZWQgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNvbmZpZzogUmVwb3NpdG9yeUNvbmZpZzsgLy8gQWJzdHJhY3QgcHJvcGVydHlcblxuICBwcm90ZWN0ZWQgYnVpbGRVcmwocGF0aCA9ICcnKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWcuYmFzZVVybCB8fCAnL2FwaSc7XG4gICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuY29uZmlnLnZlcnNpb24gPyBgL3Yke3RoaXMuY29uZmlnLnZlcnNpb259YCA6ICcnO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gcGF0aCA/IGAke3RoaXMuY29uZmlnLmVuZHBvaW50fS8ke3BhdGh9YCA6IHRoaXMuY29uZmlnLmVuZHBvaW50O1xuXG4gICAgcmV0dXJuIGAke2Jhc2VVcmx9JHt2ZXJzaW9ufS8ke2VuZHBvaW50fWAucmVwbGFjZSgvXFwvKy9nLCAnLycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldDxUPihwYXRoID0gJycsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4odGhpcy5idWlsZFVybChwYXRoKSwgeyBwYXJhbXMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcG9zdDxUPihwYXRoID0gJycsIGJvZHk6IHVua25vd24pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4odGhpcy5idWlsZFVybChwYXRoKSwgYm9keSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHV0PFQ+KHBhdGggPSAnJywgYm9keTogdW5rbm93bik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFQ+KHRoaXMuYnVpbGRVcmwocGF0aCksIGJvZHkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhdGNoPFQ+KHBhdGggPSAnJywgYm9keT86IHVua25vd24pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPFQ+KHRoaXMuYnVpbGRVcmwocGF0aCksIGJvZHkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlbGV0ZTxUPihwYXRoID0gJycpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxUPih0aGlzLmJ1aWxkVXJsKHBhdGgpKTtcbiAgfVxufVxuIl19","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { BaseHttpRepository } from './base-http.repository';\nimport * as i0 from \"@angular/core\";\n// Create an injection token for RepositoryConfig\nexport const REPOSITORY_CONFIG = new InjectionToken('REPOSITORY_CONFIG');\nexport class GenericRepository extends BaseHttpRepository {\n config;\n constructor() {\n const config = inject(REPOSITORY_CONFIG);\n super();\n this.config = config;\n }\n getById(id) {\n return this.get(id.toString());\n }\n getAll(pagination) {\n const params = this.buildParams(pagination);\n return this.get('', params);\n }\n create(entity) {\n return this.post('', entity);\n }\n update(id, entity) {\n return this.put(id.toString(), entity);\n }\n remove(id) {\n return super.delete(id.toString());\n }\n buildParams(pagination, filters) {\n const params = {};\n if (pagination) {\n params.pageIndex = pagination.pageIndex?.toString() || '1';\n params.pageSize = pagination.pageSize?.toString() || '20';\n if (pagination.sortBy)\n params.sortBy = pagination.sortBy;\n if (pagination.sortDirection)\n params.sortDirection = pagination.sortDirection;\n }\n if (filters) {\n Object.assign(params, filters);\n }\n return params;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GenericRepository, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GenericRepository });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GenericRepository, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\nexport class SearchableGenericRepository extends GenericRepository {\n search(query, pagination) {\n const searchFilters = { q: query };\n const params = this.buildParams(pagination, searchFilters);\n return this.get('search', params);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SearchableGenericRepository, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SearchableGenericRepository });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SearchableGenericRepository, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9yZXBvc2l0b3JpZXMvZ2VuZXJpYy5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFJNUQsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFtQixtQkFBbUIsQ0FBQyxDQUFDO0FBRzNGLE1BQU0sT0FBTyxpQkFDWCxTQUFRLGtCQUFrQjtJQUdQLE1BQU0sQ0FBbUI7SUFFNUM7UUFDRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQW1CLGlCQUFpQixDQUFDLENBQUM7UUFFM0QsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQU87UUFDYixPQUFPLElBQUksQ0FBQyxHQUFHLENBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUE2QjtRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBdUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBd0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQU8sRUFBRSxNQUF3QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUMsRUFBTztRQUNaLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRVMsV0FBVyxDQUFDLFVBQTZCLEVBQUUsT0FBNkI7UUFDaEYsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO1FBRXZCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDO1lBQzNELE1BQU0sQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUM7WUFDMUQsSUFBSSxVQUFVLENBQUMsTUFBTTtnQkFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekQsSUFBSSxVQUFVLENBQUMsYUFBYTtnQkFBRSxNQUFNLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDaEYsQ0FBQztRQUVELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzt1R0FqRFUsaUJBQWlCOzJHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7O0FBc0RYLE1BQU0sT0FBTywyQkFDWCxTQUFRLGlCQUErQjtJQUd2QyxNQUFNLENBQUMsS0FBYSxFQUFFLFVBQTRCO1FBQ2hELE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBdUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7dUdBUlUsMkJBQTJCOzJHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlSHR0cFJlcG9zaXRvcnkgfSBmcm9tICcuL2Jhc2UtaHR0cC5yZXBvc2l0b3J5JztcbmltcG9ydCB7IFJlcG9zaXRvcnksIFJlcG9zaXRvcnlDb25maWcsIFNlYXJjaGFibGVSZXBvc2l0b3J5IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBhZ2VkUmVzdWx0LCBQYWdpbmF0aW9uUGFyYW1zIH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcblxuLy8gQ3JlYXRlIGFuIGluamVjdGlvbiB0b2tlbiBmb3IgUmVwb3NpdG9yeUNvbmZpZ1xuZXhwb3J0IGNvbnN0IFJFUE9TSVRPUllfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFJlcG9zaXRvcnlDb25maWc+KCdSRVBPU0lUT1JZX0NPTkZJRycpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR2VuZXJpY1JlcG9zaXRvcnk8VEVudGl0eSA9IGFueSwgVElkIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID0gbnVtYmVyPlxuICBleHRlbmRzIEJhc2VIdHRwUmVwb3NpdG9yeVxuICBpbXBsZW1lbnRzIFJlcG9zaXRvcnk8VEVudGl0eSwgVElkPlxue1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY29uZmlnOiBSZXBvc2l0b3J5Q29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdDxSZXBvc2l0b3J5Q29uZmlnPihSRVBPU0lUT1JZX0NPTkZJRyk7XG5cbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgZ2V0QnlJZChpZDogVElkKTogT2JzZXJ2YWJsZTxURW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFRFbnRpdHk+KGlkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgZ2V0QWxsKHBhZ2luYXRpb24/OiBQYWdpbmF0aW9uUGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdlZFJlc3VsdDxURW50aXR5Pj4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMocGFnaW5hdGlvbik7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFBhZ2VkUmVzdWx0PFRFbnRpdHk+PignJywgcGFyYW1zKTtcbiAgfVxuXG4gIGNyZWF0ZShlbnRpdHk6IFBhcnRpYWw8VEVudGl0eT4pOiBPYnNlcnZhYmxlPFRFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5wb3N0PFRFbnRpdHk+KCcnLCBlbnRpdHkpO1xuICB9XG5cbiAgdXBkYXRlKGlkOiBUSWQsIGVudGl0eTogUGFydGlhbDxURW50aXR5Pik6IE9ic2VydmFibGU8VEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLnB1dDxURW50aXR5PihpZC50b1N0cmluZygpLCBlbnRpdHkpO1xuICB9XG5cbiAgcmVtb3ZlKGlkOiBUSWQpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gc3VwZXIuZGVsZXRlPHZvaWQ+KGlkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUGFyYW1zKHBhZ2luYXRpb24/OiBQYWdpbmF0aW9uUGFyYW1zLCBmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgYW55Pik6IGFueSB7XG4gICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcblxuICAgIGlmIChwYWdpbmF0aW9uKSB7XG4gICAgICBwYXJhbXMucGFnZUluZGV4ID0gcGFnaW5hdGlvbi5wYWdlSW5kZXg/LnRvU3RyaW5nKCkgfHwgJzEnO1xuICAgICAgcGFyYW1zLnBhZ2VTaXplID0gcGFnaW5hdGlvbi5wYWdlU2l6ZT8udG9TdHJpbmcoKSB8fCAnMjAnO1xuICAgICAgaWYgKHBhZ2luYXRpb24uc29ydEJ5KSBwYXJhbXMuc29ydEJ5ID0gcGFnaW5hdGlvbi5zb3J0Qnk7XG4gICAgICBpZiAocGFnaW5hdGlvbi5zb3J0RGlyZWN0aW9uKSBwYXJhbXMuc29ydERpcmVjdGlvbiA9IHBhZ2luYXRpb24uc29ydERpcmVjdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVycykge1xuICAgICAgT2JqZWN0LmFzc2lnbihwYXJhbXMsIGZpbHRlcnMpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlYXJjaGFibGVHZW5lcmljUmVwb3NpdG9yeTxURW50aXR5ID0gYW55LCBUSWQgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgPSBudW1iZXI+XG4gIGV4dGVuZHMgR2VuZXJpY1JlcG9zaXRvcnk8VEVudGl0eSwgVElkPlxuICBpbXBsZW1lbnRzIFNlYXJjaGFibGVSZXBvc2l0b3J5PFRFbnRpdHksIFRJZD5cbntcbiAgc2VhcmNoKHF1ZXJ5OiBzdHJpbmcsIHBhZ2luYXRpb246IFBhZ2luYXRpb25QYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2VkUmVzdWx0PFRFbnRpdHk+PiB7XG4gICAgY29uc3Qgc2VhcmNoRmlsdGVycyA9IHsgcTogcXVlcnkgfTtcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhZ2luYXRpb24sIHNlYXJjaEZpbHRlcnMpO1xuICAgIHJldHVybiB0aGlzLmdldDxQYWdlZFJlc3VsdDxURW50aXR5Pj4oJ3NlYXJjaCcsIHBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport * as i0 from \"@angular/core\";\nexport class RepositoryFactory {\n http = inject(HttpClient);\n create(config) {\n const buildUrl = (path = '') => {\n const baseUrl = config.baseUrl || '/api';\n const version = config.version ? `/v${config.version}` : '';\n const endpoint = path ? `${config.endpoint}/${path}` : config.endpoint;\n return `${baseUrl}${version}/${endpoint}`.replace(/\\/+/g, '/');\n };\n const buildParams = (pagination) => {\n const params = {};\n if (pagination) {\n params.page = pagination.pageIndex?.toString() || '1';\n params.pageSize = pagination.pageSize?.toString() || '20';\n if (pagination.sortBy)\n params.sortBy = pagination.sortBy;\n if (pagination.sortDirection)\n params.sortDirection = pagination.sortDirection;\n }\n return params;\n };\n // Safe ID conversion function\n const idToString = (id) => {\n if (typeof id === 'string' || typeof id === 'number' || typeof id === 'bigint') {\n return id.toString();\n }\n // Fallback for other types - you might want to handle this differently\n return String(id);\n };\n return {\n getById: (id) => this.http.get(buildUrl(idToString(id))),\n getAll: (pagination) => this.http.get(buildUrl(), {\n params: buildParams(pagination),\n }),\n create: (entity) => this.http.post(buildUrl(), entity),\n update: (id, entity) => this.http.put(buildUrl(idToString(id)), entity),\n remove: (id) => this.http.delete(buildUrl(idToString(id))),\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RepositoryFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RepositoryFactory, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RepositoryFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeS1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9yZXBvc2l0b3JpZXMvcmVwb3NpdG9yeS1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFLbEQsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWxDLE1BQU0sQ0FDSixNQUF3QjtRQUV4QixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRTtZQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ3ZFLE9BQU8sR0FBRyxPQUFPLEdBQUcsT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUE2QixFQUFFLEVBQUU7WUFDcEQsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQztnQkFDdEQsTUFBTSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQztnQkFDMUQsSUFBSSxVQUFVLENBQUMsTUFBTTtvQkFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3pELElBQUksVUFBVSxDQUFDLGFBQWE7b0JBQUUsTUFBTSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1lBQ2hGLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUM7UUFFRiw4QkFBOEI7UUFDOUIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUFPLEVBQVUsRUFBRTtZQUNyQyxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQy9FLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7WUFDRCx1RUFBdUU7WUFDdkUsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBRUYsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXRFLE1BQU0sRUFBRSxDQUFDLFVBQVcsRUFBRSxFQUFFLENBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF1QixRQUFRLEVBQUUsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUM7YUFDaEMsQ0FBQztZQUVKLE1BQU0sRUFBRSxDQUFDLE1BQXdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFVLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQztZQUVqRixNQUFNLEVBQUUsQ0FBQyxFQUFPLEVBQUUsTUFBd0IsRUFBRSxFQUFFLENBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFVLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7WUFFMUQsTUFBTSxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEUsQ0FBQztJQUNKLENBQUM7dUdBaERVLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBQYWdlZFJlc3VsdCwgUGFnaW5hdGlvblBhcmFtcyB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5LCBSZXBvc2l0b3J5Q29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBSZXBvc2l0b3J5RmFjdG9yeSB7XG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBjcmVhdGU8VEVudGl0eSwgVElkIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID0gbnVtYmVyPihcbiAgICBjb25maWc6IFJlcG9zaXRvcnlDb25maWcsXG4gICk6IFJlcG9zaXRvcnk8VEVudGl0eSwgVElkPiB7XG4gICAgY29uc3QgYnVpbGRVcmwgPSAocGF0aCA9ICcnKSA9PiB7XG4gICAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnLmJhc2VVcmwgfHwgJy9hcGknO1xuICAgICAgY29uc3QgdmVyc2lvbiA9IGNvbmZpZy52ZXJzaW9uID8gYC92JHtjb25maWcudmVyc2lvbn1gIDogJyc7XG4gICAgICBjb25zdCBlbmRwb2ludCA9IHBhdGggPyBgJHtjb25maWcuZW5kcG9pbnR9LyR7cGF0aH1gIDogY29uZmlnLmVuZHBvaW50O1xuICAgICAgcmV0dXJuIGAke2Jhc2VVcmx9JHt2ZXJzaW9ufS8ke2VuZHBvaW50fWAucmVwbGFjZSgvXFwvKy9nLCAnLycpO1xuICAgIH07XG5cbiAgICBjb25zdCBidWlsZFBhcmFtcyA9IChwYWdpbmF0aW9uPzogUGFnaW5hdGlvblBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICAgIGlmIChwYWdpbmF0aW9uKSB7XG4gICAgICAgIHBhcmFtcy5wYWdlID0gcGFnaW5hdGlvbi5wYWdlSW5kZXg/LnRvU3RyaW5nKCkgfHwgJzEnO1xuICAgICAgICBwYXJhbXMucGFnZVNpemUgPSBwYWdpbmF0aW9uLnBhZ2VTaXplPy50b1N0cmluZygpIHx8ICcyMCc7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uLnNvcnRCeSkgcGFyYW1zLnNvcnRCeSA9IHBhZ2luYXRpb24uc29ydEJ5O1xuICAgICAgICBpZiAocGFnaW5hdGlvbi5zb3J0RGlyZWN0aW9uKSBwYXJhbXMuc29ydERpcmVjdGlvbiA9IHBhZ2luYXRpb24uc29ydERpcmVjdGlvbjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfTtcblxuICAgIC8vIFNhZmUgSUQgY29udmVyc2lvbiBmdW5jdGlvblxuICAgIGNvbnN0IGlkVG9TdHJpbmcgPSAoaWQ6IFRJZCk6IHN0cmluZyA9PiB7XG4gICAgICBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgaWQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBpZCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgcmV0dXJuIGlkLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICAvLyBGYWxsYmFjayBmb3Igb3RoZXIgdHlwZXMgLSB5b3UgbWlnaHQgd2FudCB0byBoYW5kbGUgdGhpcyBkaWZmZXJlbnRseVxuICAgICAgcmV0dXJuIFN0cmluZyhpZCk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBnZXRCeUlkOiAoaWQ6IFRJZCkgPT4gdGhpcy5odHRwLmdldDxURW50aXR5PihidWlsZFVybChpZFRvU3RyaW5nKGlkKSkpLFxuXG4gICAgICBnZXRBbGw6IChwYWdpbmF0aW9uPykgPT5cbiAgICAgICAgdGhpcy5odHRwLmdldDxQYWdlZFJlc3VsdDxURW50aXR5Pj4oYnVpbGRVcmwoKSwge1xuICAgICAgICAgIHBhcmFtczogYnVpbGRQYXJhbXMocGFnaW5hdGlvbiksXG4gICAgICAgIH0pLFxuXG4gICAgICBjcmVhdGU6IChlbnRpdHk6IFBhcnRpYWw8VEVudGl0eT4pID0+IHRoaXMuaHR0cC5wb3N0PFRFbnRpdHk+KGJ1aWxkVXJsKCksIGVudGl0eSksXG5cbiAgICAgIHVwZGF0ZTogKGlkOiBUSWQsIGVudGl0eTogUGFydGlhbDxURW50aXR5PikgPT5cbiAgICAgICAgdGhpcy5odHRwLnB1dDxURW50aXR5PihidWlsZFVybChpZFRvU3RyaW5nKGlkKSksIGVudGl0eSksXG5cbiAgICAgIHJlbW92ZTogKGlkOiBUSWQpID0+IHRoaXMuaHR0cC5kZWxldGU8dm9pZD4oYnVpbGRVcmwoaWRUb1N0cmluZyhpZCkpKSxcbiAgICB9O1xuICB9XG59XG4iXX0=","import { lastValueFrom } from 'rxjs';\nfunction mergeUrl(baseURL, endpoint) {\n if (!baseURL)\n return endpoint;\n return `${baseURL.replace(/\\/+$/, '')}/${endpoint.replace(/^\\/+/, '')}`;\n}\nexport class AngularHttpAdapter {\n http;\n baseURL;\n constructor(http, baseURL) {\n this.http = http;\n this.baseURL = baseURL;\n }\n buildOptions(options) {\n return {\n headers: options?.headers ?? {},\n params: options?.params ?? {},\n };\n }\n async request(params) {\n const fullUrl = mergeUrl(this.baseURL, params.url);\n const httpOptions = this.buildOptions(params.options);\n const observable = this.http.request(params.method, fullUrl, {\n body: params.data,\n ...httpOptions,\n });\n return await lastValueFrom(observable);\n }\n /** GET */\n get(url, options) {\n return this.request({ method: 'get', url, options });\n }\n /** POST */\n post(url, data, options) {\n return this.request({ method: 'post', url, data, options });\n }\n /** PUT */\n put(url, data, options) {\n return this.request({ method: 'put', url, data, options });\n }\n /** DELETE */\n delete(url, options) {\n return this.request({ method: 'delete', url, options });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1odHRwLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1pbmZyYXN0cnVjdHVyZS9zcmMvbGliL2FkYXB0ZXJzL2FuZ3VsYXItaHR0cC5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsU0FBUyxRQUFRLENBQUMsT0FBMkIsRUFBRSxRQUFnQjtJQUM3RCxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQzlCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQzFFLENBQUM7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0lBRVY7SUFDQTtJQUZuQixZQUNtQixJQUFnQixFQUNoQixPQUFnQjtRQURoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDaEMsQ0FBQztJQUVJLFlBQVksQ0FBQyxPQUFxQjtRQUN4QyxPQUFPO1lBQ0wsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRTtZQUMvQixNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLE9BQU8sQ0FBSSxNQUt4QjtRQUNDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBSSxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtZQUM5RCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsR0FBRyxXQUFXO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsVUFBVTtJQUNWLEdBQUcsQ0FBSSxHQUFXLEVBQUUsT0FBcUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsV0FBVztJQUNYLElBQUksQ0FBSSxHQUFXLEVBQUUsSUFBYyxFQUFFLE9BQXFCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxVQUFVO0lBQ1YsR0FBRyxDQUFJLEdBQVcsRUFBRSxJQUFjLEVBQUUsT0FBcUI7UUFDdkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGFBQWE7SUFDYixNQUFNLENBQUksR0FBVyxFQUFFLE9BQXFCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBPcHRpb25zLCBIdHRwUG9ydCB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5mdW5jdGlvbiBtZXJnZVVybChiYXNlVVJMOiBzdHJpbmcgfCB1bmRlZmluZWQsIGVuZHBvaW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWJhc2VVUkwpIHJldHVybiBlbmRwb2ludDtcbiAgcmV0dXJuIGAke2Jhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJyl9LyR7ZW5kcG9pbnQucmVwbGFjZSgvXlxcLysvLCAnJyl9YDtcbn1cblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJIdHRwQWRhcHRlciBpbXBsZW1lbnRzIEh0dHBQb3J0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYmFzZVVSTD86IHN0cmluZyxcbiAgKSB7fVxuXG4gIHByaXZhdGUgYnVpbGRPcHRpb25zKG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xuICAgIHJldHVybiB7XG4gICAgICBoZWFkZXJzOiBvcHRpb25zPy5oZWFkZXJzID8/IHt9LFxuICAgICAgcGFyYW1zOiBvcHRpb25zPy5wYXJhbXMgPz8ge30sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVxdWVzdDxUPihwYXJhbXM6IHtcbiAgICBtZXRob2Q6ICdnZXQnIHwgJ3Bvc3QnIHwgJ3B1dCcgfCAnZGVsZXRlJztcbiAgICB1cmw6IHN0cmluZztcbiAgICBkYXRhPzogdW5rbm93bjtcbiAgICBvcHRpb25zPzogSHR0cE9wdGlvbnM7XG4gIH0pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBmdWxsVXJsID0gbWVyZ2VVcmwodGhpcy5iYXNlVVJMLCBwYXJhbXMudXJsKTtcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHRoaXMuYnVpbGRPcHRpb25zKHBhcmFtcy5vcHRpb25zKTtcblxuICAgIGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihwYXJhbXMubWV0aG9kLCBmdWxsVXJsLCB7XG4gICAgICBib2R5OiBwYXJhbXMuZGF0YSxcbiAgICAgIC4uLmh0dHBPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IGxhc3RWYWx1ZUZyb20ob2JzZXJ2YWJsZSk7XG4gIH1cblxuICAvKiogR0VUICovXG4gIGdldDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IEh0dHBPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7IG1ldGhvZDogJ2dldCcsIHVybCwgb3B0aW9ucyB9KTtcbiAgfVxuXG4gIC8qKiBQT1NUICovXG4gIHBvc3Q8VD4odXJsOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHsgbWV0aG9kOiAncG9zdCcsIHVybCwgZGF0YSwgb3B0aW9ucyB9KTtcbiAgfVxuXG4gIC8qKiBQVVQgKi9cbiAgcHV0PFQ+KHVybDogc3RyaW5nLCBkYXRhPzogdW5rbm93biwgb3B0aW9ucz86IEh0dHBPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7IG1ldGhvZDogJ3B1dCcsIHVybCwgZGF0YSwgb3B0aW9ucyB9KTtcbiAgfVxuXG4gIC8qKiBERUxFVEUgKi9cbiAgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHsgbWV0aG9kOiAnZGVsZXRlJywgdXJsLCBvcHRpb25zIH0pO1xuICB9XG59XG4iXX0=","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nimport * as i0 from \"@angular/core\";\n// Default configuration\nconst DEFAULT_CONFIG = {\n apiBaseUrl: '',\n apiTimeout: 30000,\n retryAttempts: 2,\n retryDelay: 1000,\n enableCorrelationTracking: true,\n enableRequestLogging: false,\n enableErrorLogging: true,\n enableToastNotifications: true,\n includeAuthToken: true,\n authTokenHeader: 'Authorization',\n enableMultiTenancy: true,\n tenantIdHeader: 'Tenant-Id',\n logLevel: 'info',\n enableConsoleLogging: true,\n customHeaders: {},\n excludeUrls: [],\n excludeMethods: [],\n};\n// Injection token for configuration\nexport const CORE_CONFIG = new InjectionToken('CORE_CONFIG', {\n factory: () => DEFAULT_CONFIG,\n});\nexport class CoreConfigService {\n config;\n environment = inject(ENVIRONMENT);\n constructor() {\n // Initialize with default config and environment overrides\n this.config = this.initializeConfig();\n }\n /**\n * Initialize configuration with defaults and environment overrides\n */\n initializeConfig() {\n const injectedConfig = inject(CORE_CONFIG, { optional: true });\n return {\n ...DEFAULT_CONFIG,\n // Environment overrides\n apiBaseUrl: this.environment.apiBaseUrl || DEFAULT_CONFIG.apiBaseUrl,\n enableRequestLogging: !this.environment.isProduction,\n // Injected config overrides\n ...injectedConfig,\n };\n }\n /**\n * Get the current configuration\n */\n getConfig() {\n return { ...this.config };\n }\n /**\n * Update configuration at runtime\n */\n updateConfig(updates) {\n this.config = { ...this.config, ...updates };\n }\n /**\n * Get a specific configuration value\n */\n get(key) {\n return this.config[key];\n }\n /**\n * Check if a feature is enabled\n */\n isFeatureEnabled(feature) {\n const value = this.config[feature];\n return typeof value === 'boolean' ? value : false;\n }\n /**\n * Get API URL for a specific entity\n */\n getApiUrl(entityName) {\n const baseUrl = this.config.apiBaseUrl;\n if (!entityName)\n return baseUrl;\n return `${baseUrl}/${entityName}`.replace(/\\/+/g, '/');\n }\n /**\n * Check if a URL should be excluded from processing\n */\n shouldExcludeUrl(url) {\n return this.config.excludeUrls.some(excludePattern => url.includes(excludePattern) || new RegExp(excludePattern).test(url));\n }\n /**\n * Check if a method should be excluded from processing\n */\n shouldExcludeMethod(method) {\n return this.config.excludeMethods.some(excludeMethod => excludeMethod.toLowerCase() === method.toLowerCase());\n }\n /**\n * Get custom headers with dynamic values resolved\n */\n getCustomHeaders() {\n const headers = {};\n Object.entries(this.config.customHeaders).forEach(([key, value]) => {\n headers[key] = typeof value === 'function' ? value() : value;\n });\n return headers;\n }\n /**\n * Reset configuration to defaults\n */\n resetConfig() {\n this.config = this.initializeConfig();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CoreConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CoreConfigService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CoreConfigService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n// Provider function for easy setup\nexport function provideCoreConfig(config = {}) {\n return [\n {\n provide: CORE_CONFIG,\n useValue: config,\n },\n ];\n}\n// Helper function to create configuration\nexport function createCoreConfig(overrides = {}) {\n return {\n ...DEFAULT_CONFIG,\n ...overrides,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvc2VydmljZXMvY29yZS1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQW9DbkQsd0JBQXdCO0FBQ3hCLE1BQU0sY0FBYyxHQUF5QjtJQUMzQyxVQUFVLEVBQUUsRUFBRTtJQUNkLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLHlCQUF5QixFQUFFLElBQUk7SUFDL0Isb0JBQW9CLEVBQUUsS0FBSztJQUMzQixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLHdCQUF3QixFQUFFLElBQUk7SUFDOUIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixlQUFlLEVBQUUsZUFBZTtJQUNoQyxrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLGNBQWMsRUFBRSxXQUFXO0lBQzNCLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLG9CQUFvQixFQUFFLElBQUk7SUFDMUIsYUFBYSxFQUFFLEVBQUU7SUFDakIsV0FBVyxFQUFFLEVBQUU7SUFDZixjQUFjLEVBQUUsRUFBRTtDQUNuQixDQUFDO0FBRUYsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBYSxhQUFhLEVBQUU7SUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWM7Q0FDOUIsQ0FBQyxDQUFDO0FBS0gsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixNQUFNLENBQXVCO0lBQzdCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENB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LElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7dUdBbkdVLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBdUdELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsU0FBOEIsRUFBRTtJQUNoRSxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsV0FBVztZQUNwQixRQUFRLEVBQUUsTUFBTTtTQUNqQjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxZQUFpQyxFQUFFO0lBQ2xFLE9BQU87UUFDTCxHQUFHLGNBQWM7UUFDakIsR0FBRyxTQUFTO0tBQ2IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BhY29udHBsdXMvbmctY29uZmlnJztcblxuLy8gQ29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIHRoZSBjb3JlIGxpYnJhcnlcbmV4cG9ydCBpbnRlcmZhY2UgQ29yZUNvbmZpZyB7XG4gIC8vIEFQSSBDb25maWd1cmF0aW9uXG4gIGFwaUJhc2VVcmw/OiBzdHJpbmc7XG4gIGFwaVRpbWVvdXQ/OiBudW1iZXI7XG4gIHJldHJ5QXR0ZW1wdHM/OiBudW1iZXI7XG4gIHJldHJ5RGVsYXk/OiBudW1iZXI7XG5cbiAgLy8gRmVhdHVyZSBGbGFnc1xuICBlbmFibGVDb3JyZWxhdGlvblRyYWNraW5nPzogYm9vbGVhbjtcbiAgZW5hYmxlUmVxdWVzdExvZ2dpbmc/OiBib29sZWFuO1xuICBlbmFibGVFcnJvckxvZ2dpbmc/OiBib29sZWFuO1xuICBlbmFibGVUb2FzdE5vdGlmaWNhdGlvbnM/OiBib29sZWFuO1xuXG4gIC8vIFNlY3VyaXR5XG4gIGluY2x1ZGVBdXRoVG9rZW4/OiBib29sZWFuO1xuICBhdXRoVG9rZW5IZWFkZXI/OiBzdHJpbmc7XG5cbiAgLy8gTXVsdGktdGVuYW5jeVxuICBlbmFibGVNdWx0aVRlbmFuY3k/OiBib29sZWFuO1xuICB0ZW5hbnRJZEhlYWRlcj86IHN0cmluZztcblxuICAvLyBMb2dnaW5nXG4gIGxvZ0xldmVsPzogJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcic7XG4gIGVuYWJsZUNvbnNvbGVMb2dnaW5nPzogYm9vbGVhbjtcblxuICAvLyBDdXN0b20gSGVhZGVyc1xuICBjdXN0b21IZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgKCgpID0+IHN0cmluZyk+O1xuXG4gIC8vIEV4Y2x1c2lvbnNcbiAgZXhjbHVkZVVybHM/OiBzdHJpbmdbXTtcbiAgZXhjbHVkZU1ldGhvZHM/OiBzdHJpbmdbXTtcbn1cblxuLy8gRGVmYXVsdCBjb25maWd1cmF0aW9uXG5jb25zdCBERUZBVUxUX0NPTkZJRzogUmVxdWlyZWQ8Q29yZUNvbmZpZz4gPSB7XG4gIGFwaUJhc2VVcmw6ICcnLFxuICBhcGlUaW1lb3V0OiAzMDAwMCxcbiAgcmV0cnlBdHRlbXB0czogMixcbiAgcmV0cnlEZWxheTogMTAwMCxcbiAgZW5hYmxlQ29ycmVsYXRpb25UcmFja2luZzogdHJ1ZSxcbiAgZW5hYmxlUmVxdWVzdExvZ2dpbmc6IGZhbHNlLFxuICBlbmFibGVFcnJvckxvZ2dpbmc6IHRydWUsXG4gIGVuYWJsZVRvYXN0Tm90aWZpY2F0aW9uczogdHJ1ZSxcbiAgaW5jbHVkZUF1dGhUb2tlbjogdHJ1ZSxcbiAgYXV0aFRva2VuSGVhZGVyOiAnQXV0aG9yaXphdGlvbicsXG4gIGVuYWJsZU11bHRpVGVuYW5jeTogdHJ1ZSxcbiAgdGVuYW50SWRIZWFkZXI6ICdUZW5hbnQtSWQnLFxuICBsb2dMZXZlbDogJ2luZm8nLFxuICBlbmFibGVDb25zb2xlTG9nZ2luZzogdHJ1ZSxcbiAgY3VzdG9tSGVhZGVyczoge30sXG4gIGV4Y2x1ZGVVcmxzOiBbXSxcbiAgZXhjbHVkZU1ldGhvZHM6IFtdLFxufTtcblxuLy8gSW5qZWN0aW9uIHRva2VuIGZvciBjb25maWd1cmF0aW9uXG5leHBvcnQgY29uc3QgQ09SRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29yZUNvbmZpZz4oJ0NPUkVfQ09ORklHJywge1xuICBmYWN0b3J5OiAoKSA9PiBERUZBVUxUX0NPTkZJRyxcbn0pO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29yZUNvbmZpZ1NlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZzogUmVxdWlyZWQ8Q29yZUNvbmZpZz47XG4gIHByaXZhdGUgZW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIEluaXRpYWxpemUgd2l0aCBkZWZhdWx0IGNvbmZpZyBhbmQgZW52aXJvbm1lbnQgb3ZlcnJpZGVzXG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmluaXRpYWxpemVDb25maWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0cyBhbmQgZW52aXJvbm1lbnQgb3ZlcnJpZGVzXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVDb25maWcoKTogUmVxdWlyZWQ8Q29yZUNvbmZpZz4ge1xuICAgIGNvbnN0IGluamVjdGVkQ29uZmlnID0gaW5qZWN0KENPUkVfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkRFRkFVTFRfQ09ORklHLFxuICAgICAgLy8gRW52aXJvbm1lbnQgb3ZlcnJpZGVzXG4gICAgICBhcGlCYXNlVXJsOiB0aGlzLmVudmlyb25tZW50LmFwaUJhc2VVcmwgfHwgREVGQVVMVF9DT05GSUcuYXBpQmFzZVVybCxcbiAgICAgIGVuYWJsZVJlcXVlc3RMb2dnaW5nOiAhdGhpcy5lbnZpcm9ubWVudC5pc1Byb2R1Y3Rpb24sXG4gICAgICAvLyBJbmplY3RlZCBjb25maWcgb3ZlcnJpZGVzXG4gICAgICAuLi5pbmplY3RlZENvbmZpZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBnZXRDb25maWcoKTogUmVxdWlyZWQ8Q29yZUNvbmZpZz4ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuY29uZmlnIH07XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNvbmZpZ3VyYXRpb24gYXQgcnVudGltZVxuICAgKi9cbiAgdXBkYXRlQ29uZmlnKHVwZGF0ZXM6IFBhcnRpYWw8Q29yZUNvbmZpZz4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5jb25maWcsIC4uLnVwZGF0ZXMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHZhbHVlXG4gICAqL1xuICBnZXQ8SyBleHRlbmRzIGtleW9mIENvcmVDb25maWc+KGtleTogSyk6IENvcmVDb25maWdbS10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ1trZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgZmVhdHVyZSBpcyBlbmFibGVkXG4gICAqL1xuICBpc0ZlYXR1cmVFbmFibGVkKGZlYXR1cmU6IGtleW9mIENvcmVDb25maWcpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29uZmlnW2ZlYXR1cmVdO1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyA/IHZhbHVlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IEFQSSBVUkwgZm9yIGEgc3BlY2lmaWMgZW50aXR5XG4gICAqL1xuICBnZXRBcGlVcmwoZW50aXR5TmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnLmFwaUJhc2VVcmw7XG4gICAgaWYgKCFlbnRpdHlOYW1lKSByZXR1cm4gYmFzZVVybDtcbiAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtlbnRpdHlOYW1lfWAucmVwbGFjZSgvXFwvKy9nLCAnLycpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgVVJMIHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIHByb2Nlc3NpbmdcbiAgICovXG4gIHNob3VsZEV4Y2x1ZGVVcmwodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZXhjbHVkZVVybHMuc29tZShcbiAgICAgIGV4Y2x1ZGVQYXR0ZXJuID0+IHVybC5pbmNsdWRlcyhleGNsdWRlUGF0dGVybikgfHwgbmV3IFJlZ0V4cChleGNsdWRlUGF0dGVybikudGVzdCh1cmwpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBtZXRob2Qgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gcHJvY2Vzc2luZ1xuICAgKi9cbiAgc2hvdWxkRXhjbHVkZU1ldGhvZChtZXRob2Q6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5leGNsdWRlTWV0aG9kcy5zb21lKFxuICAgICAgZXhjbHVkZU1ldGhvZCA9PiBleGNsdWRlTWV0aG9kLnRvTG93ZXJDYXNlKCkgPT09IG1ldGhvZC50b0xvd2VyQ2FzZSgpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1c3RvbSBoZWFkZXJzIHdpdGggZHluYW1pYyB2YWx1ZXMgcmVzb2x2ZWRcbiAgICovXG4gIGdldEN1c3RvbUhlYWRlcnMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5jb25maWcuY3VzdG9tSGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBoZWFkZXJzW2tleV0gPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZSgpIDogdmFsdWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBjb25maWd1cmF0aW9uIHRvIGRlZmF1bHRzXG4gICAqL1xuICByZXNldENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuaW5pdGlhbGl6ZUNvbmZpZygpO1xuICB9XG59XG5cbi8vIFByb3ZpZGVyIGZ1bmN0aW9uIGZvciBlYXN5IHNldHVwXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvcmVDb25maWcoY29uZmlnOiBQYXJ0aWFsPENvcmVDb25maWc+ID0ge30pIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDT1JFX0NPTkZJRyxcbiAgICAgIHVzZVZhbHVlOiBjb25maWcsXG4gICAgfSxcbiAgXTtcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBjb25maWd1cmF0aW9uXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29yZUNvbmZpZyhvdmVycmlkZXM6IFBhcnRpYWw8Q29yZUNvbmZpZz4gPSB7fSk6IENvcmVDb25maWcge1xuICByZXR1cm4ge1xuICAgIC4uLkRFRkFVTFRfQ09ORklHLFxuICAgIC4uLm92ZXJyaWRlcyxcbiAgfTtcbn1cbiJdfQ==","export class BaseUseCase {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS51c2UtY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvdXNlLWNhc2VzL2Jhc2UudXNlLWNhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFnQixXQUFXO0NBSWhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUNhc2U8VFJlcXVlc3QgPSB2b2lkLCBUUmVzcG9uc2UgPSB2b2lkPiB7XG4gIGV4ZWN1dGUocmVxdWVzdDogVFJlcXVlc3QpOiBPYnNlcnZhYmxlPFRSZXNwb25zZT47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVXNlQ2FzZTxUUmVxdWVzdCA9IHZvaWQsIFRSZXNwb25zZSA9IHZvaWQ+XG4gIGltcGxlbWVudHMgVXNlQ2FzZTxUUmVxdWVzdCwgVFJlc3BvbnNlPlxue1xuICBhYnN0cmFjdCBleGVjdXRlKHJlcXVlc3Q6IFRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUUmVzcG9uc2U+O1xufVxuIl19","import { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { inject } from '@angular/core';\nimport { BaseUseCase } from './base.use-case';\nimport { LoggingService } from '../services/logging.service';\n// Only create commands if you have complex validation logic\nexport class Command extends BaseUseCase {\n // Simple validation - override only when needed\n validate(_request) {\n return []; // Return array of error messages\n }\n execute(request) {\n const errors = this.validate(request);\n if (errors.length > 0) {\n return throwError(() => ({\n status: 'error',\n code: 'VALIDATION_FAILED',\n message: 'Validation failed',\n errors: errors.map(msg => ({ code: 'VALIDATION', message: msg })),\n timestamp: new Date().toISOString(),\n }));\n }\n return this.executeInternal(request).pipe(catchError(error => {\n // Log the error for debugging\n const logger = inject(LoggingService);\n logger.error('An error occurred during command execution:', error);\n // Re-throw the error so the caller can handle it\n return throwError(() => error);\n }));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1pbmZyYXN0cnVjdHVyZS9zcmMvbGliL3VzZS1jYXNlcy9jb21tYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0QsNERBQTREO0FBQzVELE1BQU0sT0FBZ0IsT0FBb0MsU0FBUSxXQUFnQztJQUNoRyxnREFBZ0Q7SUFDdEMsUUFBUSxDQUFDLFFBQWtCO1FBQ25DLE9BQU8sRUFBRSxDQUFDLENBQUMsaUNBQWlDO0lBQzlDLENBQUM7SUFFUSxPQUFPLENBQUMsT0FBaUI7UUFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDakUsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQiw4QkFBOEI7WUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbkUsaURBQWlEO1lBQ2pELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlVXNlQ2FzZSB9IGZyb20gJy4vYmFzZS51c2UtY2FzZSc7XG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvZ2dpbmcuc2VydmljZSc7XG5cbi8vIE9ubHkgY3JlYXRlIGNvbW1hbmRzIGlmIHlvdSBoYXZlIGNvbXBsZXggdmFsaWRhdGlvbiBsb2dpY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbW1hbmQ8VFJlcXVlc3QsIFRSZXNwb25zZSA9IHZvaWQ+IGV4dGVuZHMgQmFzZVVzZUNhc2U8VFJlcXVlc3QsIFRSZXNwb25zZT4ge1xuICAvLyBTaW1wbGUgdmFsaWRhdGlvbiAtIG92ZXJyaWRlIG9ubHkgd2hlbiBuZWVkZWRcbiAgcHJvdGVjdGVkIHZhbGlkYXRlKF9yZXF1ZXN0OiBUUmVxdWVzdCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW107IC8vIFJldHVybiBhcnJheSBvZiBlcnJvciBtZXNzYWdlc1xuICB9XG5cbiAgb3ZlcnJpZGUgZXhlY3V0ZShyZXF1ZXN0OiBUUmVxdWVzdCk6IE9ic2VydmFibGU8VFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy52YWxpZGF0ZShyZXF1ZXN0KTtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICh7XG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgY29kZTogJ1ZBTElEQVRJT05fRkFJTEVEJyxcbiAgICAgICAgbWVzc2FnZTogJ1ZhbGlkYXRpb24gZmFpbGVkJyxcbiAgICAgICAgZXJyb3JzOiBlcnJvcnMubWFwKG1zZyA9PiAoeyBjb2RlOiAnVkFMSURBVElPTicsIG1lc3NhZ2U6IG1zZyB9KSksXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVJbnRlcm5hbChyZXF1ZXN0KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIC8vIExvZyB0aGUgZXJyb3IgZm9yIGRlYnVnZ2luZ1xuICAgICAgICBjb25zdCBsb2dnZXIgPSBpbmplY3QoTG9nZ2luZ1NlcnZpY2UpO1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tYW5kIGV4ZWN1dGlvbjonLCBlcnJvcik7XG5cbiAgICAgICAgLy8gUmUtdGhyb3cgdGhlIGVycm9yIHNvIHRoZSBjYWxsZXIgY2FuIGhhbmRsZSBpdFxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4ZWN1dGVJbnRlcm5hbChyZXF1ZXN0OiBUUmVxdWVzdCk6IE9ic2VydmFibGU8VFJlc3BvbnNlPjtcbn1cbiJdfQ==","import { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { inject } from '@angular/core';\nimport { BaseUseCase } from './base.use-case';\nimport { LoggingService } from '../services/logging.service';\nexport class Query extends BaseUseCase {\n execute(request) {\n return this.executeInternal(request).pipe(catchError(error => {\n const logger = inject(LoggingService);\n logger.error('An error occurred during query execution:', error);\n return throwError(() => error);\n }));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvdXNlLWNhc2VzL3F1ZXJpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE1BQU0sT0FBZ0IsS0FBMkIsU0FBUSxXQUFnQztJQUM5RSxPQUFPLENBQUMsT0FBaUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdkMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlVXNlQ2FzZSB9IGZyb20gJy4vYmFzZS51c2UtY2FzZSc7XG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvZ2dpbmcuc2VydmljZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBRdWVyeTxUUmVxdWVzdCwgVFJlc3BvbnNlPiBleHRlbmRzIEJhc2VVc2VDYXNlPFRSZXF1ZXN0LCBUUmVzcG9uc2U+IHtcbiAgb3ZlcnJpZGUgZXhlY3V0ZShyZXF1ZXN0OiBUUmVxdWVzdCk6IE9ic2VydmFibGU8VFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUludGVybmFsKHJlcXVlc3QpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc3QgbG9nZ2VyID0gaW5qZWN0KExvZ2dpbmdTZXJ2aWNlKTtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBleGVjdXRlSW50ZXJuYWwocmVxdWVzdDogVFJlcXVlc3QpOiBPYnNlcnZhYmxlPFRSZXNwb25zZT47XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWluZnJhc3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2Fjb250cGx1cy1uZy1pbmZyYXN0cnVjdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["uuidv4","DEFAULT_CONFIG","catchError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acontplus-ng-infrastructure.mjs","sources":["../tmp-esm2022/lib/interfaces/token-provider.interface.js","../tmp-esm2022/lib/interceptors/api.interceptor.js","../tmp-esm2022/lib/services/logging.service.js","../tmp-esm2022/lib/services/tenant.service.js","../tmp-esm2022/lib/services/correlation.service.js","../tmp-esm2022/lib/interceptors/http-context.interceptor.js","../tmp-esm2022/lib/interceptors/spinner.interceptor.js","../tmp-esm2022/lib/repositories/base-http.repository.js","../tmp-esm2022/lib/repositories/generic.repository.js","../tmp-esm2022/lib/repositories/repository-factory.js","../tmp-esm2022/lib/adapters/angular-http.adapter.js","../tmp-esm2022/lib/services/core-config.service.js","../tmp-esm2022/lib/use-cases/base.use-case.js","../tmp-esm2022/lib/use-cases/commands.js","../tmp-esm2022/lib/use-cases/queries.js","../tmp-esm2022/acontplus-ng-infrastructure.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const TOKEN_PROVIDER = new InjectionToken('TOKEN_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcHJvdmlkZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9pbnRlcmZhY2VzL3Rva2VuLXByb3ZpZGVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVS9DLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyRGF0YSB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRva2VuUHJvdmlkZXIge1xuICBnZXRUb2tlbigpOiBzdHJpbmcgfCBudWxsO1xuICBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbjtcbiAgZ2V0UmVmcmVzaFRva2VuPygpOiBzdHJpbmcgfCBudWxsO1xuICBnZXRVc2VyRGF0YSgpOiBVc2VyRGF0YSB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBUT0tFTl9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJVG9rZW5Qcm92aWRlcj4oJ1RPS0VOX1BST1ZJREVSJyk7XG4iXX0=","import { HttpResponse, HttpContextToken, } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { catchError, map, retry } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\nimport { NotificationService } from '@acontplus/ng-notifications';\nimport { TOKEN_PROVIDER } from '../interfaces/token-provider.interface';\n// A token to use with HttpContext for skipping notifications on specific requests.\nexport const SKIP_NOTIFICATION = new HttpContextToken(() => false);\n// A token to use with HttpContext for forcing notifications on specific requests (overrides exclusion patterns).\nexport const SHOW_NOTIFICATIONS = new HttpContextToken(() => undefined);\nexport const apiInterceptor = (req, next) => {\n const toastr = inject(NotificationService);\n const tokenProvider = inject(TOKEN_PROVIDER, { optional: true });\n // Add authorization header if token is available\n let modifiedReq = req;\n const token = tokenProvider?.getToken();\n if (token) {\n modifiedReq = req.clone({\n setHeaders: { Authorization: `Bearer ${token}` },\n });\n }\n return next(modifiedReq).pipe(\n // Retries the request up to 2 times on failure with a 1-second delay.\n retry({ count: 2, delay: 1000 }), \n // Use the `map` operator to handle successful responses.\n map((event) => {\n if (event instanceof HttpResponse) {\n return handleSuccessResponse(event, toastr, req);\n }\n return event;\n }), \n // Use the `catchError` operator to handle any errors that occur.\n catchError((error) => handleErrorResponse(error, toastr)));\n};\n// --- Helper Functions ---\n/**\n * Handles successful HTTP responses, standardizes them, shows notifications, and transforms for consumers.\n */\nfunction handleSuccessResponse(event, notificationService, req) {\n const body = event.body;\n // Standardize the response to always have ApiResponse structure\n const standardizedResponse = standardizeApiResponse(body);\n // Handle toast notifications based on standardized response\n handleToastNotifications(standardizedResponse, notificationService, req);\n // Return the appropriate data based on response type\n return transformResponseForConsumers(standardizedResponse, event);\n}\n/**\n * Handles HTTP errors (from the interceptor chain, not backend ApiResponse).\n */\nfunction handleErrorResponse(error, notificationService) {\n const status = error.status;\n // Only show notifications for critical HTTP-level errors.\n // We avoid showing toasts for 4xx errors, which are handled by the component.\n if (status !== null && shouldShowCriticalErrorNotification(status)) {\n const message = getCriticalErrorMessage(error);\n const title = getErrorTitle(status);\n notificationService.error({\n message: message,\n title: title,\n config: { duration: 5000 },\n });\n }\n // Always re-throw the error so components/services can handle it.\n return throwError(() => error);\n}\n/**\n * Standardizes any response to follow the ApiResponse structure\n */\nfunction standardizeApiResponse(body) {\n // If it's already a proper ApiResponse, return as is\n if (isValidApiResponse(body)) {\n return body;\n }\n // If it's a raw data response (no wrapper), wrap it\n if (body && typeof body === 'object' && !('status' in body)) {\n return {\n status: 'success',\n code: '200',\n message: 'Operation completed successfully',\n data: body,\n timestamp: new Date().toISOString(),\n };\n }\n // If it's a primitive value, wrap it\n if (body !== null && body !== undefined && typeof body !== 'object') {\n return {\n status: 'success',\n code: '200',\n message: 'Operation completed successfully',\n data: body,\n timestamp: new Date().toISOString(),\n };\n }\n // If it's null/undefined, create a success response without data\n return {\n status: 'success',\n code: '200',\n message: 'Operation completed successfully',\n timestamp: new Date().toISOString(),\n };\n}\n/**\n * Handles toast notifications based on standardized response\n */\nfunction handleToastNotifications(response, notificationService, req) {\n const shouldShowToast = shouldShowSuccessToast(req);\n const forceShow = req.context.get(SHOW_NOTIFICATIONS);\n const skipNotification = req.context.get(SKIP_NOTIFICATION);\n // Determine if we should show notifications, considering overrides\n const showNotifications = forceShow !== undefined ? forceShow : shouldShowToast;\n if (skipNotification)\n return;\n // Dynamic handling: Use show() for runtime type selection\n if (response.message &&\n showNotifications &&\n ['success', 'warning', 'error'].includes(response.status)) {\n notificationService.show({\n type: response.status,\n message: response.message,\n });\n }\n // Handle warnings separately if needed\n if (response.status === 'warning' && response.warnings && response.warnings.length > 0) {\n response.warnings.forEach(warning => {\n notificationService.show({\n type: 'warning',\n message: warning.message,\n });\n });\n }\n // Handle errors separately if needed\n if (response.status === 'error' && response.errors && response.errors.length > 0) {\n response.errors.forEach(error => {\n notificationService.show({\n type: 'error',\n message: error.message,\n });\n });\n }\n}\n/**\n * Transforms the standardized response for consumers\n */\nfunction transformResponseForConsumers(response, originalEvent) {\n switch (response.status) {\n case 'success':\n // For success responses, return the data if it exists, otherwise the full response\n if (response.data !== undefined && response.data !== null) {\n return originalEvent.clone({ body: response.data });\n }\n // For message-only success responses, return the full response\n return originalEvent.clone({ body: response });\n case 'warning':\n // For warnings, return data if it exists, otherwise the full response\n if (response.data !== undefined && response.data !== null) {\n return originalEvent.clone({ body: response.data });\n }\n return originalEvent.clone({ body: response });\n case 'error':\n // Errors should be thrown, not returned\n throw response;\n default:\n return originalEvent.clone({ body: response });\n }\n}\n/**\n * Checks if a response is a valid ApiResponse\n */\nfunction isValidApiResponse(response) {\n if (response === null || typeof response !== 'object')\n return false;\n const r = response;\n return ('status' in r &&\n 'code' in r &&\n typeof r['status'] === 'string' &&\n ['success', 'error', 'warning'].includes(r['status']));\n}\n/**\n * Determines whether to show success toast notifications based on the request type.\n */\nfunction shouldShowSuccessToast(req) {\n const url = req.url?.toLowerCase() || '';\n const method = req.method?.toLowerCase() || '';\n // Never show for these cases\n const excludedPatterns = [\n 'get',\n '/list',\n '/search',\n '/query',\n '/page',\n '/paginated',\n '/health',\n '/status',\n '/ping',\n ];\n if (excludedPatterns.some(pattern => method === pattern || url.includes(pattern))) {\n return false;\n }\n // Always show for these methods\n if (['post', 'put', 'patch', 'delete'].includes(method)) {\n return true;\n }\n // Default behavior\n return method !== 'get';\n}\n/**\n * Determines if we should show a notification for this HTTP error.\n */\nfunction shouldShowCriticalErrorNotification(status) {\n // Show notifications for:\n // - Network errors (status 0)\n // - Server errors (5xx)\n return status === 0 || (status >= 500 && status < 600);\n}\n/**\n * Gets the appropriate title for error notifications.\n */\nfunction getErrorTitle(status) {\n if (status === 0)\n return 'Connection Error';\n if (status >= 500)\n return 'Server Error';\n return 'Error';\n}\n/**\n * Gets the appropriate message for critical errors.\n */\nfunction getCriticalErrorMessage(error) {\n if (error.status === 0) {\n return 'Unable to connect to the server. Please check your network connection.';\n }\n if (error.status >= 500) {\n return (error.error?.message || error.message || 'A server error occurred. Please try again later.');\n }\n return error.error?.message || error.message || 'An unexpected error occurred';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXBpLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxZQUFZLEVBR1osZ0JBQWdCLEdBQ2pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBVSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUU1RSxpSEFBaUg7QUFDakgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBc0IsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFN0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFzQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtJQUM3RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFakUsaURBQWlEO0lBQ2pELElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN0QixNQUFNLEtBQUss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QUFPLGtCQUFrQixDQUFDO0lBQzVDLElBQUksTUFBTSxJQUFJLEdBQUc7UUFBRSxPQUFPLGNBQWMsQ0FBQztJQUN6QyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLHVCQUF1QixDQUFDLEtBQXdCO0lBQ3ZELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLHdFQUF3RSxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUNMLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksa0RBQWtELENBQzVGLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLDhCQUE4QixDQUFDO0FBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIdHRwSW50ZXJjZXB0b3JGbixcbiAgSHR0cEV2ZW50LFxuICBIdHRwUmVzcG9uc2UsXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cENvbnRleHRUb2tlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BhY29udHBsdXMvbmctbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBUT0tFTl9QUk9WSURFUiB9IGZyb20gJy4uL2ludGVyZmFjZXMvdG9rZW4tcHJvdmlkZXIuaW50ZXJmYWNlJztcblxuLy8gQSB0b2tlbiB0byB1c2Ugd2l0aCBIdHRwQ29udGV4dCBmb3Igc2tpcHBpbmcgbm90aWZpY2F0aW9ucyBvbiBzcGVjaWZpYyByZXF1ZXN0cy5cbmV4cG9ydCBjb25zdCBTS0lQX05PVElGSUNBVElPTiA9IG5ldyBIdHRwQ29udGV4dFRva2VuPGJvb2xlYW4+KCgpID0+IGZhbHNlKTtcblxuLy8gQSB0b2tlbiB0byB1c2Ugd2l0aCBIdHRwQ29udGV4dCBmb3IgZm9yY2luZyBub3RpZmljYXRpb25zIG9uIHNwZWNpZmljIHJlcXVlc3RzIChvdmVycmlkZXMgZXhjbHVzaW9uIHBhdHRlcm5zKS5cbmV4cG9ydCBjb25zdCBTSE9XX05PVElGSUNBVElPTlMgPSBuZXcgSHR0cENvbnRleHRUb2tlbjxib29sZWFuIHwgdW5kZWZpbmVkPigoKSA9PiB1bmRlZmluZWQpO1xuXG5leHBvcnQgY29uc3QgYXBpSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xuICBjb25zdCB0b2FzdHIgPSBpbmplY3QoTm90aWZpY2F0aW9uU2VydmljZSk7XG4gIGNvbnN0IHRva2VuUHJvdmlkZXIgPSBpbmplY3QoVE9LRU5fUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLy8gQWRkIGF1dGhvcml6YXRpb24gaGVhZGVyIGlmIHRva2VuIGlzIGF2YWlsYWJsZVxuICBsZXQgbW9kaWZpZWRSZXEgPSByZXE7XG4gIGNvbnN0IHRva2VuID0gdG9rZW5Qcm92aWRlcj8uZ2V0VG9rZW4oKTtcbiAgaWYgKHRva2VuKSB7XG4gICAgbW9kaWZpZWRSZXEgPSByZXEuY2xvbmUoe1xuICAgICAgc2V0SGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5leHQobW9kaWZpZWRSZXEpLnBpcGUoXG4gICAgLy8gUmV0cmllcyB0aGUgcmVxdWVzdCB1cCB0byAyIHRpbWVzIG9uIGZhaWx1cmUgd2l0aCBhIDEtc2Vjb25kIGRlbGF5LlxuICAgIHJldHJ5KHsgY291bnQ6IDIsIGRlbGF5OiAxMDAwIH0pLFxuICAgIC8vIFVzZSB0aGUgYG1hcGAgb3BlcmF0b3IgdG8gaGFuZGxlIHN1Y2Nlc3NmdWwgcmVzcG9uc2VzLlxuICAgIG1hcCgoZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPikgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVTdWNjZXNzUmVzcG9uc2UoZXZlbnQsIHRvYXN0ciwgcmVxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBldmVudDtcbiAgICB9KSxcbiAgICAvLyBVc2UgdGhlIGBjYXRjaEVycm9yYCBvcGVyYXRvciB0byBoYW5kbGUgYW55IGVycm9ycyB0aGF0IG9jY3VyLlxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gaGFuZGxlRXJyb3JSZXNwb25zZShlcnJvciwgdG9hc3RyKSksXG4gICk7XG59O1xuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuLyoqXG4gKiBIYW5kbGVzIHN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZXMsIHN0YW5kYXJkaXplcyB0aGVtLCBzaG93cyBub3RpZmljYXRpb25zLCBhbmQgdHJhbnNmb3JtcyBmb3IgY29uc3VtZXJzLlxuICovXG5mdW5jdGlvbiBoYW5kbGVTdWNjZXNzUmVzcG9uc2UoXG4gIGV2ZW50OiBIdHRwUmVzcG9uc2U8dW5rbm93bj4sXG4gIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gIHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG4pOiBIdHRwUmVzcG9uc2U8dW5rbm93bj4ge1xuICBjb25zdCBib2R5ID0gZXZlbnQuYm9keTtcblxuICAvLyBTdGFuZGFyZGl6ZSB0aGUgcmVzcG9uc2UgdG8gYWx3YXlzIGhhdmUgQXBpUmVzcG9uc2Ugc3RydWN0dXJlXG4gIGNvbnN0IHN0YW5kYXJkaXplZFJlc3BvbnNlID0gc3RhbmRhcmRpemVBcGlSZXNwb25zZShib2R5KTtcblxuICAvLyBIYW5kbGUgdG9hc3Qgbm90aWZpY2F0aW9ucyBiYXNlZCBvbiBzdGFuZGFyZGl6ZWQgcmVzcG9uc2VcbiAgaGFuZGxlVG9hc3ROb3RpZmljYXRpb25zKHN0YW5kYXJkaXplZFJlc3BvbnNlLCBub3RpZmljYXRpb25TZXJ2aWNlLCByZXEpO1xuXG4gIC8vIFJldHVybiB0aGUgYXBwcm9wcmlhdGUgZGF0YSBiYXNlZCBvbiByZXNwb25zZSB0eXBlXG4gIHJldHVybiB0cmFuc2Zvcm1SZXNwb25zZUZvckNvbnN1bWVycyhzdGFuZGFyZGl6ZWRSZXNwb25zZSwgZXZlbnQpO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgSFRUUCBlcnJvcnMgKGZyb20gdGhlIGludGVyY2VwdG9yIGNoYWluLCBub3QgYmFja2VuZCBBcGlSZXNwb25zZSkuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUVycm9yUmVzcG9uc2UoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlKSB7XG4gIGNvbnN0IHN0YXR1cyA9IGVycm9yLnN0YXR1cztcblxuICAvLyBPbmx5IHNob3cgbm90aWZpY2F0aW9ucyBmb3IgY3JpdGljYWwgSFRUUC1sZXZlbCBlcnJvcnMuXG4gIC8vIFdlIGF2b2lkIHNob3dpbmcgdG9hc3RzIGZvciA0eHggZXJyb3JzLCB3aGljaCBhcmUgaGFuZGxlZCBieSB0aGUgY29tcG9uZW50LlxuICBpZiAoc3RhdHVzICE9PSBudWxsICYmIHNob3VsZFNob3dDcml0aWNhbEVycm9yTm90aWZpY2F0aW9uKHN0YXR1cykpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZ2V0Q3JpdGljYWxFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgIGNvbnN0IHRpdGxlID0gZ2V0RXJyb3JUaXRsZShzdGF0dXMpO1xuXG4gICAgbm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgY29uZmlnOiB7IGR1cmF0aW9uOiA1MDAwIH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyBBbHdheXMgcmUtdGhyb3cgdGhlIGVycm9yIHNvIGNvbXBvbmVudHMvc2VydmljZXMgY2FuIGhhbmRsZSBpdC5cbiAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkaXplcyBhbnkgcmVzcG9uc2UgdG8gZm9sbG93IHRoZSBBcGlSZXNwb25zZSBzdHJ1Y3R1cmVcbiAqL1xuZnVuY3Rpb24gc3RhbmRhcmRpemVBcGlSZXNwb25zZShib2R5OiB1bmtub3duKTogQXBpUmVzcG9uc2U8dW5rbm93bj4ge1xuICAvLyBJZiBpdCdzIGFscmVhZHkgYSBwcm9wZXIgQXBpUmVzcG9uc2UsIHJldHVybiBhcyBpc1xuICBpZiAoaXNWYWxpZEFwaVJlc3BvbnNlKGJvZHkpKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgcmF3IGRhdGEgcmVzcG9uc2UgKG5vIHdyYXBwZXIpLCB3cmFwIGl0XG4gIGlmIChib2R5ICYmIHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyAmJiAhKCdzdGF0dXMnIGluIGJvZHkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgY29kZTogJzIwMCcsXG4gICAgICBtZXNzYWdlOiAnT3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknLFxuICAgICAgZGF0YTogYm9keSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgcHJpbWl0aXZlIHZhbHVlLCB3cmFwIGl0XG4gIGlmIChib2R5ICE9PSBudWxsICYmIGJvZHkgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICBjb2RlOiAnMjAwJyxcbiAgICAgIG1lc3NhZ2U6ICdPcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseScsXG4gICAgICBkYXRhOiBib2R5LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIElmIGl0J3MgbnVsbC91bmRlZmluZWQsIGNyZWF0ZSBhIHN1Y2Nlc3MgcmVzcG9uc2Ugd2l0aG91dCBkYXRhXG4gIHJldHVybiB7XG4gICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgY29kZTogJzIwMCcsXG4gICAgbWVzc2FnZTogJ09wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIHRvYXN0IG5vdGlmaWNhdGlvbnMgYmFzZWQgb24gc3RhbmRhcmRpemVkIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVRvYXN0Tm90aWZpY2F0aW9ucyhcbiAgcmVzcG9uc2U6IEFwaVJlc3BvbnNlPHVua25vd24+LFxuICBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICByZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LFxuKTogdm9pZCB7XG4gIGNvbnN0IHNob3VsZFNob3dUb2FzdCA9IHNob3VsZFNob3dTdWNjZXNzVG9hc3QocmVxKTtcbiAgY29uc3QgZm9yY2VTaG93ID0gcmVxLmNvbnRleHQuZ2V0KFNIT1dfTk9USUZJQ0FUSU9OUyk7XG4gIGNvbnN0IHNraXBOb3RpZmljYXRpb24gPSByZXEuY29udGV4dC5nZXQoU0tJUF9OT1RJRklDQVRJT04pO1xuXG4gIC8vIERldGVybWluZSBpZiB3ZSBzaG91bGQgc2hvdyBub3RpZmljYXRpb25zLCBjb25zaWRlcmluZyBvdmVycmlkZXNcbiAgY29uc3Qgc2hvd05vdGlmaWNhdGlvbnMgPSBmb3JjZVNob3cgIT09IHVuZGVmaW5lZCA/IGZvcmNlU2hvdyA6IHNob3VsZFNob3dUb2FzdDtcblxuICBpZiAoc2tpcE5vdGlmaWNhdGlvbikgcmV0dXJuO1xuXG4gIC8vIER5bmFtaWMgaGFuZGxpbmc6IFVzZSBzaG93KCkgZm9yIHJ1bnRpbWUgdHlwZSBzZWxlY3Rpb25cbiAgaWYgKFxuICAgIHJlc3BvbnNlLm1lc3NhZ2UgJiZcbiAgICBzaG93Tm90aWZpY2F0aW9ucyAmJlxuICAgIFsnc3VjY2VzcycsICd3YXJuaW5nJywgJ2Vycm9yJ10uaW5jbHVkZXMocmVzcG9uc2Uuc3RhdHVzKVxuICApIHtcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlLnNob3coe1xuICAgICAgdHlwZTogcmVzcG9uc2Uuc3RhdHVzIGFzICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSGFuZGxlIHdhcm5pbmdzIHNlcGFyYXRlbHkgaWYgbmVlZGVkXG4gIGlmIChyZXNwb25zZS5zdGF0dXMgPT09ICd3YXJuaW5nJyAmJiByZXNwb25zZS53YXJuaW5ncyAmJiByZXNwb25zZS53YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgcmVzcG9uc2Uud2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IHtcbiAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgbWVzc2FnZTogd2FybmluZy5tZXNzYWdlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBIYW5kbGUgZXJyb3JzIHNlcGFyYXRlbHkgaWYgbmVlZGVkXG4gIGlmIChyZXNwb25zZS5zdGF0dXMgPT09ICdlcnJvcicgJiYgcmVzcG9uc2UuZXJyb3JzICYmIHJlc3BvbnNlLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmVzcG9uc2UuZXJyb3JzLmZvckVhY2goZXJyb3IgPT4ge1xuICAgICAgbm90aWZpY2F0aW9uU2VydmljZS5zaG93KHtcbiAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgc3RhbmRhcmRpemVkIHJlc3BvbnNlIGZvciBjb25zdW1lcnNcbiAqL1xuZnVuY3Rpb24gdHJhbnNmb3JtUmVzcG9uc2VGb3JDb25zdW1lcnMoXG4gIHJlc3BvbnNlOiBBcGlSZXNwb25zZTx1bmtub3duPixcbiAgb3JpZ2luYWxFdmVudDogSHR0cFJlc3BvbnNlPHVua25vd24+LFxuKTogSHR0cFJlc3BvbnNlPHVua25vd24+IHtcbiAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgIC8vIEZvciBzdWNjZXNzIHJlc3BvbnNlcywgcmV0dXJuIHRoZSBkYXRhIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHRoZSBmdWxsIHJlc3BvbnNlXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsRXZlbnQuY2xvbmUoeyBib2R5OiByZXNwb25zZS5kYXRhIH0pO1xuICAgICAgfVxuICAgICAgLy8gRm9yIG1lc3NhZ2Utb25seSBzdWNjZXNzIHJlc3BvbnNlcywgcmV0dXJuIHRoZSBmdWxsIHJlc3BvbnNlXG4gICAgICByZXR1cm4gb3JpZ2luYWxFdmVudC5jbG9uZSh7IGJvZHk6IHJlc3BvbnNlIH0pO1xuXG4gICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAvLyBGb3Igd2FybmluZ3MsIHJldHVybiBkYXRhIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHRoZSBmdWxsIHJlc3BvbnNlXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsRXZlbnQuY2xvbmUoeyBib2R5OiByZXNwb25zZS5kYXRhIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yaWdpbmFsRXZlbnQuY2xvbmUoeyBib2R5OiByZXNwb25zZSB9KTtcblxuICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgIC8vIEVycm9ycyBzaG91bGQgYmUgdGhyb3duLCBub3QgcmV0dXJuZWRcbiAgICAgIHRocm93IHJlc3BvbnNlO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBvcmlnaW5hbEV2ZW50LmNsb25lKHsgYm9keTogcmVzcG9uc2UgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSByZXNwb25zZSBpcyBhIHZhbGlkIEFwaVJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRBcGlSZXNwb25zZShyZXNwb25zZTogdW5rbm93bik6IHJlc3BvbnNlIGlzIEFwaVJlc3BvbnNlPHVua25vd24+IHtcbiAgaWYgKHJlc3BvbnNlID09PSBudWxsIHx8IHR5cGVvZiByZXNwb25zZSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgciA9IHJlc3BvbnNlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZXR1cm4gKFxuICAgICdzdGF0dXMnIGluIHIgJiZcbiAgICAnY29kZScgaW4gciAmJlxuICAgIHR5cGVvZiByWydzdGF0dXMnXSA9PT0gJ3N0cmluZycgJiZcbiAgICBbJ3N1Y2Nlc3MnLCAnZXJyb3InLCAnd2FybmluZyddLmluY2x1ZGVzKHJbJ3N0YXR1cyddKVxuICApO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IHN1Y2Nlc3MgdG9hc3Qgbm90aWZpY2F0aW9ucyBiYXNlZCBvbiB0aGUgcmVxdWVzdCB0eXBlLlxuICovXG5mdW5jdGlvbiBzaG91bGRTaG93U3VjY2Vzc1RvYXN0KHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4pOiBib29sZWFuIHtcbiAgY29uc3QgdXJsID0gcmVxLnVybD8udG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgY29uc3QgbWV0aG9kID0gcmVxLm1ldGhvZD8udG9Mb3dlckNhc2UoKSB8fCAnJztcblxuICAvLyBOZXZlciBzaG93IGZvciB0aGVzZSBjYXNlc1xuICBjb25zdCBleGNsdWRlZFBhdHRlcm5zID0gW1xuICAgICdnZXQnLFxuICAgICcvbGlzdCcsXG4gICAgJy9zZWFyY2gnLFxuICAgICcvcXVlcnknLFxuICAgICcvcGFnZScsXG4gICAgJy9wYWdpbmF0ZWQnLFxuICAgICcvaGVhbHRoJyxcbiAgICAnL3N0YXR1cycsXG4gICAgJy9waW5nJyxcbiAgXTtcblxuICBpZiAoZXhjbHVkZWRQYXR0ZXJucy5zb21lKHBhdHRlcm4gPT4gbWV0aG9kID09PSBwYXR0ZXJuIHx8IHVybC5pbmNsdWRlcyhwYXR0ZXJuKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBBbHdheXMgc2hvdyBmb3IgdGhlc2UgbWV0aG9kc1xuICBpZiAoWydwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdkZWxldGUnXS5pbmNsdWRlcyhtZXRob2QpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBEZWZhdWx0IGJlaGF2aW9yXG4gIHJldHVybiBtZXRob2QgIT09ICdnZXQnO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgd2Ugc2hvdWxkIHNob3cgYSBub3RpZmljYXRpb24gZm9yIHRoaXMgSFRUUCBlcnJvci5cbiAqL1xuZnVuY3Rpb24gc2hvdWxkU2hvd0NyaXRpY2FsRXJyb3JOb3RpZmljYXRpb24oc3RhdHVzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgLy8gU2hvdyBub3RpZmljYXRpb25zIGZvcjpcbiAgLy8gLSBOZXR3b3JrIGVycm9ycyAoc3RhdHVzIDApXG4gIC8vIC0gU2VydmVyIGVycm9ycyAoNXh4KVxuICByZXR1cm4gc3RhdHVzID09PSAwIHx8IChzdGF0dXMgPj0gNTAwICYmIHN0YXR1cyA8IDYwMCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYXBwcm9wcmlhdGUgdGl0bGUgZm9yIGVycm9yIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGdldEVycm9yVGl0bGUoc3RhdHVzOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoc3RhdHVzID09PSAwKSByZXR1cm4gJ0Nvbm5lY3Rpb24gRXJyb3InO1xuICBpZiAoc3RhdHVzID49IDUwMCkgcmV0dXJuICdTZXJ2ZXIgRXJyb3InO1xuICByZXR1cm4gJ0Vycm9yJztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBtZXNzYWdlIGZvciBjcml0aWNhbCBlcnJvcnMuXG4gKi9cbmZ1bmN0aW9uIGdldENyaXRpY2FsRXJyb3JNZXNzYWdlKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IHN0cmluZyB7XG4gIGlmIChlcnJvci5zdGF0dXMgPT09IDApIHtcbiAgICByZXR1cm4gJ1VuYWJsZSB0byBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIuIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbi4nO1xuICB9XG5cbiAgaWYgKGVycm9yLnN0YXR1cyA+PSA1MDApIHtcbiAgICByZXR1cm4gKFxuICAgICAgZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyb3IubWVzc2FnZSB8fCAnQSBzZXJ2ZXIgZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyb3IubWVzc2FnZSB8fCAnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCc7XG59XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nimport * as i0 from \"@angular/core\";\nexport class LoggingService {\n environment = inject(ENVIRONMENT);\n log(level, message, context) {\n if (this.environment.isProduction) {\n // Production logging (e.g., to external service)\n this.logToExternalService(level, message, context);\n }\n else {\n // Development logging - only log in development mode\n if (!this.environment.isProduction) {\n console[level](`[${level.toUpperCase()}] ${message}`, context);\n }\n }\n }\n info(message, context) {\n this.log('info', message, context);\n }\n warn(message, context) {\n this.log('warn', message, context);\n }\n error(message, context) {\n this.log('error', message, context);\n }\n // HTTP Request Logging\n logHttpRequest(log) {\n this.info(`HTTP Request - ${log.method} ${log.url}`, {\n requestId: log.requestId,\n correlationId: log.correlationId,\n tenantId: log.tenantId,\n headers: log.headers,\n isCustomUrl: log.isCustomUrl,\n timestamp: log.timestamp,\n });\n }\n // HTTP Error Logging\n logHttpError(error) {\n this.error(`HTTP Error - ${error.method} ${error.url}`, {\n status: error.status,\n statusText: error.statusText,\n requestId: error.requestId,\n correlationId: error.correlationId,\n tenantId: error.tenantId,\n errorDetails: error.errorDetails,\n environment: error.environment,\n timestamp: error.timestamp,\n });\n }\n // Network Error Logging\n logNetworkError(correlationId) {\n this.error('Network connection failed', {\n type: 'network-error',\n correlationId,\n userAgent: navigator.userAgent,\n online: navigator.onLine,\n });\n }\n // Rate Limit Error Logging\n logRateLimitError(correlationId, url) {\n this.warn('Rate limit exceeded', {\n type: 'rate-limit-error',\n correlationId,\n url,\n });\n }\n logToExternalService(_level, _message, _context) {\n // Implement external logging service integration\n // e.g., Sentry, LogRocket, etc.\n // This is a placeholder for production logging implementation\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoggingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoggingService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoggingService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9zZXJ2aWNlcy9sb2dnaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU1uRCxNQUFNLE9BQU8sY0FBYztJQUNqQixXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTFDLEdBQUcsQ0FBQyxLQUFnQyxFQUFFLE9BQWUsRUFBRSxPQUFpQjtRQUN0RSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEMsaURBQWlEO1lBQ2pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ04scURBQXFEO1lBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxPQUFpQjtRQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFlLEVBQUUsT0FBaUI7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLE9BQWlCO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLGNBQWMsQ0FBQyxHQUFtQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNuRCxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7WUFDeEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1lBQ2hDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUN0QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87WUFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1lBQzVCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLFlBQVksQ0FBQyxLQUFtQjtRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0RCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsZUFBZSxDQUFDLGFBQXFCO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUU7WUFDdEMsSUFBSSxFQUFFLGVBQWU7WUFDckIsYUFBYTtZQUNiLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztZQUM5QixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixpQkFBaUIsQ0FBQyxhQUFxQixFQUFFLEdBQVc7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUMvQixJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLGFBQWE7WUFDYixHQUFHO1NBQ0osQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLFFBQWtCO1FBQy9FLGlEQUFpRDtRQUNqRCxnQ0FBZ0M7UUFDaEMsOERBQThEO0lBQ2hFLENBQUM7dUdBNUVVLGNBQWM7MkdBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BhY29udHBsdXMvbmctY29uZmlnJztcbmltcG9ydCB7IEh0dHBSZXF1ZXN0TG9nLCBIdHRwRXJyb3JMb2cgfSBmcm9tICcuLi9pbnRlcmNlcHRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9nZ2luZ1NlcnZpY2Uge1xuICBwcml2YXRlIGVudmlyb25tZW50ID0gaW5qZWN0KEVOVklST05NRU5UKTtcblxuICBsb2cobGV2ZWw6ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicsIG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1Byb2R1Y3Rpb24pIHtcbiAgICAgIC8vIFByb2R1Y3Rpb24gbG9nZ2luZyAoZS5nLiwgdG8gZXh0ZXJuYWwgc2VydmljZSlcbiAgICAgIHRoaXMubG9nVG9FeHRlcm5hbFNlcnZpY2UobGV2ZWwsIG1lc3NhZ2UsIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZXZlbG9wbWVudCBsb2dnaW5nIC0gb25seSBsb2cgaW4gZGV2ZWxvcG1lbnQgbW9kZVxuICAgICAgaWYgKCF0aGlzLmVudmlyb25tZW50LmlzUHJvZHVjdGlvbikge1xuICAgICAgICBjb25zb2xlW2xldmVsXShgWyR7bGV2ZWwudG9VcHBlckNhc2UoKX1dICR7bWVzc2FnZX1gLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnaW5mbycsIG1lc3NhZ2UsIGNvbnRleHQpO1xuICB9XG5cbiAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ/OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5sb2coJ3dhcm4nLCBtZXNzYWdlLCBjb250ZXh0KTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dD86IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnZXJyb3InLCBtZXNzYWdlLCBjb250ZXh0KTtcbiAgfVxuXG4gIC8vIEhUVFAgUmVxdWVzdCBMb2dnaW5nXG4gIGxvZ0h0dHBSZXF1ZXN0KGxvZzogSHR0cFJlcXVlc3RMb2cpOiB2b2lkIHtcbiAgICB0aGlzLmluZm8oYEhUVFAgUmVxdWVzdCAtICR7bG9nLm1ldGhvZH0gJHtsb2cudXJsfWAsIHtcbiAgICAgIHJlcXVlc3RJZDogbG9nLnJlcXVlc3RJZCxcbiAgICAgIGNvcnJlbGF0aW9uSWQ6IGxvZy5jb3JyZWxhdGlvbklkLFxuICAgICAgdGVuYW50SWQ6IGxvZy50ZW5hbnRJZCxcbiAgICAgIGhlYWRlcnM6IGxvZy5oZWFkZXJzLFxuICAgICAgaXNDdXN0b21Vcmw6IGxvZy5pc0N1c3RvbVVybCxcbiAgICAgIHRpbWVzdGFtcDogbG9nLnRpbWVzdGFtcCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEhUVFAgRXJyb3IgTG9nZ2luZ1xuICBsb2dIdHRwRXJyb3IoZXJyb3I6IEh0dHBFcnJvckxvZyk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IoYEhUVFAgRXJyb3IgLSAke2Vycm9yLm1ldGhvZH0gJHtlcnJvci51cmx9YCwge1xuICAgICAgc3RhdHVzOiBlcnJvci5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiBlcnJvci5zdGF0dXNUZXh0LFxuICAgICAgcmVxdWVzdElkOiBlcnJvci5yZXF1ZXN0SWQsXG4gICAgICBjb3JyZWxhdGlvbklkOiBlcnJvci5jb3JyZWxhdGlvbklkLFxuICAgICAgdGVuYW50SWQ6IGVycm9yLnRlbmFudElkLFxuICAgICAgZXJyb3JEZXRhaWxzOiBlcnJvci5lcnJvckRldGFpbHMsXG4gICAgICBlbnZpcm9ubWVudDogZXJyb3IuZW52aXJvbm1lbnQsXG4gICAgICB0aW1lc3RhbXA6IGVycm9yLnRpbWVzdGFtcCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE5ldHdvcmsgRXJyb3IgTG9nZ2luZ1xuICBsb2dOZXR3b3JrRXJyb3IoY29ycmVsYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvcignTmV0d29yayBjb25uZWN0aW9uIGZhaWxlZCcsIHtcbiAgICAgIHR5cGU6ICduZXR3b3JrLWVycm9yJyxcbiAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICB1c2VyQWdlbnQ6IG5hdmlnYXRvci51c2VyQWdlbnQsXG4gICAgICBvbmxpbmU6IG5hdmlnYXRvci5vbkxpbmUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBSYXRlIExpbWl0IEVycm9yIExvZ2dpbmdcbiAgbG9nUmF0ZUxpbWl0RXJyb3IoY29ycmVsYXRpb25JZDogc3RyaW5nLCB1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMud2FybignUmF0ZSBsaW1pdCBleGNlZWRlZCcsIHtcbiAgICAgIHR5cGU6ICdyYXRlLWxpbWl0LWVycm9yJyxcbiAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICB1cmwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvZ1RvRXh0ZXJuYWxTZXJ2aWNlKF9sZXZlbDogc3RyaW5nLCBfbWVzc2FnZTogc3RyaW5nLCBfY29udGV4dD86IHVua25vd24pOiB2b2lkIHtcbiAgICAvLyBJbXBsZW1lbnQgZXh0ZXJuYWwgbG9nZ2luZyBzZXJ2aWNlIGludGVncmF0aW9uXG4gICAgLy8gZS5nLiwgU2VudHJ5LCBMb2dSb2NrZXQsIGV0Yy5cbiAgICAvLyBUaGlzIGlzIGEgcGxhY2Vob2xkZXIgZm9yIHByb2R1Y3Rpb24gbG9nZ2luZyBpbXBsZW1lbnRhdGlvblxuICB9XG59XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { LoggingService } from './logging.service';\nimport * as i0 from \"@angular/core\";\nexport class TenantService {\n tenantId = null;\n logger = inject(LoggingService);\n getTenantId() {\n if (!this.tenantId) {\n // Get from localStorage, sessionStorage, or JWT token\n this.tenantId =\n localStorage.getItem('tenantId') ||\n sessionStorage.getItem('tenantId') ||\n this.extractTenantFromToken() ||\n 'default-tenant';\n }\n return this.tenantId;\n }\n getCurrentTenant() {\n return this.tenantId;\n }\n setTenantId(tenantId) {\n this.tenantId = tenantId;\n localStorage.setItem('tenantId', tenantId);\n }\n setTenant(tenantId) {\n this.setTenantId(tenantId);\n }\n handleForbidden() {\n this.logger.error('Access forbidden for tenant:', this.tenantId);\n // Redirect to tenant selection or show error message\n // this.router.navigate(['/tenant-access-denied']);\n }\n extractTenantFromToken() {\n // Implementation depends on your JWT token structure\n // This is a placeholder\n return null;\n }\n clearTenant() {\n this.tenantId = null;\n localStorage.removeItem('tenantId');\n sessionStorage.removeItem('tenantId');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TenantService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TenantService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TenantService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1pbmZyYXN0cnVjdHVyZS9zcmMvbGliL3NlcnZpY2VzL3RlbmFudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLGFBQWE7SUFDaEIsUUFBUSxHQUFrQixJQUFJLENBQUM7SUFDL0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV4QyxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixzREFBc0Q7WUFDdEQsSUFBSSxDQUFDLFFBQVE7Z0JBQ1gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7b0JBQ2hDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO29CQUNsQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7b0JBQzdCLGdCQUFnQixDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRSxxREFBcUQ7UUFDckQsbURBQW1EO0lBQ3JELENBQUM7SUFFTyxzQkFBc0I7UUFDNUIscURBQXFEO1FBQ3JELHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxjQUFjLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7dUdBN0NVLGFBQWE7MkdBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZSB9IGZyb20gJy4vbG9nZ2luZy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRlbmFudFNlcnZpY2Uge1xuICBwcml2YXRlIHRlbmFudElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsb2dnZXIgPSBpbmplY3QoTG9nZ2luZ1NlcnZpY2UpO1xuXG4gIGdldFRlbmFudElkKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnRlbmFudElkKSB7XG4gICAgICAvLyBHZXQgZnJvbSBsb2NhbFN0b3JhZ2UsIHNlc3Npb25TdG9yYWdlLCBvciBKV1QgdG9rZW5cbiAgICAgIHRoaXMudGVuYW50SWQgPVxuICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVuYW50SWQnKSB8fFxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0ZW5hbnRJZCcpIHx8XG4gICAgICAgIHRoaXMuZXh0cmFjdFRlbmFudEZyb21Ub2tlbigpIHx8XG4gICAgICAgICdkZWZhdWx0LXRlbmFudCc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRlbmFudElkO1xuICB9XG5cbiAgZ2V0Q3VycmVudFRlbmFudCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRJZDtcbiAgfVxuXG4gIHNldFRlbmFudElkKHRlbmFudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRlbmFudElkID0gdGVuYW50SWQ7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RlbmFudElkJywgdGVuYW50SWQpO1xuICB9XG5cbiAgc2V0VGVuYW50KHRlbmFudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNldFRlbmFudElkKHRlbmFudElkKTtcbiAgfVxuXG4gIGhhbmRsZUZvcmJpZGRlbigpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5lcnJvcignQWNjZXNzIGZvcmJpZGRlbiBmb3IgdGVuYW50OicsIHRoaXMudGVuYW50SWQpO1xuICAgIC8vIFJlZGlyZWN0IHRvIHRlbmFudCBzZWxlY3Rpb24gb3Igc2hvdyBlcnJvciBtZXNzYWdlXG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvdGVuYW50LWFjY2Vzcy1kZW5pZWQnXSk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RUZW5hbnRGcm9tVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gSW1wbGVtZW50YXRpb24gZGVwZW5kcyBvbiB5b3VyIEpXVCB0b2tlbiBzdHJ1Y3R1cmVcbiAgICAvLyBUaGlzIGlzIGEgcGxhY2Vob2xkZXJcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNsZWFyVGVuYW50KCk6IHZvaWQge1xuICAgIHRoaXMudGVuYW50SWQgPSBudWxsO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0ZW5hbnRJZCcpO1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3RlbmFudElkJyk7XG4gIH1cbn1cbiJdfQ==","import { Injectable, signal, computed } from '@angular/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport * as i0 from \"@angular/core\";\nexport class CorrelationService {\n correlationId = signal(null, ...(ngDevMode ? [{ debugName: \"correlationId\" }] : []));\n CORRELATION_KEY = 'correlation-id';\n // Signal-based getter for reactive updates\n currentCorrelationId = computed(() => this.correlationId(), ...(ngDevMode ? [{ debugName: \"currentCorrelationId\" }] : []));\n getOrCreateCorrelationId() {\n if (!this.correlationId()) {\n // Try to get from sessionStorage first (for page refreshes)\n const id = sessionStorage.getItem(this.CORRELATION_KEY) || uuidv4();\n this.correlationId.set(id);\n sessionStorage.setItem(this.CORRELATION_KEY, id);\n }\n return this.correlationId();\n }\n setCorrelationId(correlationId) {\n this.correlationId.set(correlationId);\n sessionStorage.setItem(this.CORRELATION_KEY, correlationId);\n }\n resetCorrelationId() {\n this.correlationId.set(null);\n sessionStorage.removeItem(this.CORRELATION_KEY);\n }\n getId() {\n return this.getOrCreateCorrelationId();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CorrelationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CorrelationService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CorrelationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ycmVsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvc2VydmljZXMvY29ycmVsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3BDLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsYUFBYSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSx5REFBQyxDQUFDO0lBQ25DLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQztJQUVwRCwyQ0FBMkM7SUFDbEMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZ0VBQUMsQ0FBQztJQUVyRSx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQzFCLDREQUE0RDtZQUM1RCxNQUFNLEVBQUUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQixjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRyxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxhQUFxQjtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDekMsQ0FBQzt1R0E3QlUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29ycmVsYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb3JyZWxhdGlvbklkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IENPUlJFTEFUSU9OX0tFWSA9ICdjb3JyZWxhdGlvbi1pZCc7XG5cbiAgLy8gU2lnbmFsLWJhc2VkIGdldHRlciBmb3IgcmVhY3RpdmUgdXBkYXRlc1xuICByZWFkb25seSBjdXJyZW50Q29ycmVsYXRpb25JZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29ycmVsYXRpb25JZCgpKTtcblxuICBnZXRPckNyZWF0ZUNvcnJlbGF0aW9uSWQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY29ycmVsYXRpb25JZCgpKSB7XG4gICAgICAvLyBUcnkgdG8gZ2V0IGZyb20gc2Vzc2lvblN0b3JhZ2UgZmlyc3QgKGZvciBwYWdlIHJlZnJlc2hlcylcbiAgICAgIGNvbnN0IGlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNPUlJFTEFUSU9OX0tFWSkgfHwgdXVpZHY0KCk7XG4gICAgICB0aGlzLmNvcnJlbGF0aW9uSWQuc2V0KGlkKTtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5DT1JSRUxBVElPTl9LRVksIGlkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29ycmVsYXRpb25JZCgpITtcbiAgfVxuXG4gIHNldENvcnJlbGF0aW9uSWQoY29ycmVsYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb3JyZWxhdGlvbklkLnNldChjb3JyZWxhdGlvbklkKTtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ09SUkVMQVRJT05fS0VZLCBjb3JyZWxhdGlvbklkKTtcbiAgfVxuXG4gIHJlc2V0Q29ycmVsYXRpb25JZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvcnJlbGF0aW9uSWQuc2V0KG51bGwpO1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DT1JSRUxBVElPTl9LRVkpO1xuICB9XG5cbiAgZ2V0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPckNyZWF0ZUNvcnJlbGF0aW9uSWQoKTtcbiAgfVxufVxuIl19","import { inject, InjectionToken } from '@angular/core'; // Import InjectionToken\nimport { Router } from '@angular/router';\nimport { HttpContextToken, HttpContext, } from '@angular/common/http';\nimport { catchError, throwError, switchMap } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\n// Environment and configuration\nimport { ENVIRONMENT } from '@acontplus/ng-config';\n// Services\nimport { TenantService } from '../services/tenant.service';\nimport { CorrelationService } from '../services/correlation.service';\nimport { LoggingService } from '../services/logging.service';\nimport { TOKEN_PROVIDER } from '../interfaces/token-provider.interface';\n// HTTP Context tokens\nconst CUSTOM_URL = new HttpContextToken(() => false);\nconst SKIP_CONTEXT_HEADERS = new HttpContextToken(() => false);\nconst CUSTOM_HEADERS = new HttpContextToken(() => ({}));\n// Helper functions for HTTP context\nexport function customUrl() {\n return new HttpContext().set(CUSTOM_URL, true);\n}\nexport function skipContextHeaders() {\n return new HttpContext().set(SKIP_CONTEXT_HEADERS, true);\n}\nexport function withCustomHeaders(headers) {\n return new HttpContext().set(CUSTOM_HEADERS, headers);\n}\n// Default configuration\nconst DEFAULT_CONFIG = {\n enableCorrelationTracking: true,\n enableRequestLogging: false, // This will be overridden by environment.isProduction\n enableErrorLogging: true,\n customHeaders: {},\n clientVersion: '1.0.0',\n tenantIdHeader: 'Tenant-Id',\n correlationIdHeader: 'Correlation-Id',\n requestIdHeader: 'Request-Id',\n timestampHeader: 'Timestamp',\n excludeUrls: [],\n includeAuthToken: true,\n baseUrlInjection: true,\n refreshTokenCallback: undefined,\n logoutCallback: undefined,\n};\n// Injection token for configuration - FIXED\nexport const HTTP_CONTEXT_CONFIG = new InjectionToken('HTTP_CONTEXT_CONFIG', {\n factory: () => DEFAULT_CONFIG, // Provide a default factory in case it's not provided\n});\nexport const httpContextInterceptor = (req, next) => {\n const tokenProvider = inject(TOKEN_PROVIDER, { optional: true });\n const router = inject(Router);\n const tenantService = inject(TenantService);\n const correlationService = inject(CorrelationService);\n const loggingService = inject(LoggingService);\n const environment = inject(ENVIRONMENT);\n // Get configuration (with fallback to default) - FIXED\n const config = {\n ...DEFAULT_CONFIG,\n // The default enableRequestLogging needs to be set based on environment here,\n // as it's dynamic, and DEFAULT_CONFIG is static.\n enableRequestLogging: !environment.isProduction,\n ...inject(HTTP_CONTEXT_CONFIG, { optional: true }),\n };\n // Check HTTP context tokens\n const isCustomUrl = req.context.get(CUSTOM_URL);\n const skipHeaders = req.context.get(SKIP_CONTEXT_HEADERS);\n const contextHeaders = req.context.get(CUSTOM_HEADERS);\n // Skip processing if headers are disabled for this request\n if (skipHeaders) {\n return next(req);\n }\n // Check if URL should be excluded\n const shouldExclude = config.excludeUrls.some(url => req.url.includes(url) || new RegExp(url).test(req.url));\n if (shouldExclude) {\n return next(req);\n }\n // Skip auth for login, register, and refresh endpoints\n const skipAuth = req.url.includes('/login') || req.url.includes('/register') || req.url.includes('/refresh');\n // Handle URL transformation\n const baseUrl = environment.apiBaseUrl;\n const finalUrl = isCustomUrl || !config.baseUrlInjection ? req.url : `${baseUrl}${req.url}`;\n // Generate or get correlation context\n const correlationId = config.enableCorrelationTracking\n ? correlationService.getOrCreateCorrelationId()\n : uuidv4();\n const tenantId = tenantService.getTenantId();\n const requestId = uuidv4();\n // Build dynamic headers\n const headers = {};\n // Core context headers\n headers[config.requestIdHeader] = requestId;\n if (config.enableCorrelationTracking) {\n headers[config.correlationIdHeader] = correlationId;\n }\n if (tenantId) {\n headers[config.tenantIdHeader] = tenantId;\n }\n headers[config.timestampHeader] = new Date().toISOString();\n // Client information\n if (config.clientVersion) {\n headers['Client-Version'] = config.clientVersion;\n }\n // Environment client ID\n if (environment.clientId) {\n headers['Client-Id'] = environment.clientId;\n }\n // Add authorization header if configured and available\n if (config.includeAuthToken && !skipAuth) {\n const authToken = tokenProvider?.getToken();\n if (authToken) {\n headers['Authorization'] = `Bearer ${authToken}`;\n }\n }\n // Process custom headers from configuration (can be static values or dynamic functions)\n Object.entries(config.customHeaders).forEach(([key, value]) => {\n headers[key] = typeof value === 'function' ? value() : value;\n });\n // Add headers from HTTP context\n Object.entries(contextHeaders).forEach(([key, value]) => {\n headers[key] = value;\n });\n // Add content-type for data requests if not already set\n if (['POST', 'PUT', 'PATCH'].includes(req.method.toUpperCase()) &&\n !req.headers.has('Content-Type')) {\n headers['Content-Type'] = 'application/json';\n }\n // Clone request with enhanced headers and URL\n const enhancedReq = req.clone({\n url: finalUrl,\n setHeaders: headers,\n });\n // Log outgoing request if enabled\n if (config.enableRequestLogging) {\n loggingService.logHttpRequest({\n method: req.method,\n url: finalUrl,\n originalUrl: req.url,\n requestId,\n correlationId,\n tenantId,\n timestamp: new Date().toISOString(),\n headers: Object.keys(headers),\n isCustomUrl,\n });\n }\n // If request has auth header, handle with refresh logic\n if (headers['Authorization'] && config.refreshTokenCallback) {\n return next(enhancedReq).pipe(catchError(error => {\n // If 401 Unauthorized, try to refresh token\n if (error.status === 401) {\n const refreshToken = tokenProvider?.getRefreshToken?.();\n if (refreshToken && refreshToken.trim().length > 0) {\n return config.refreshTokenCallback().pipe(switchMap(newTokens => {\n // Retry the original request with new token\n const retryReq = req.clone({\n url: finalUrl,\n setHeaders: { ...headers, Authorization: `Bearer ${newTokens.token}` },\n });\n return next(retryReq);\n }), catchError(refreshError => {\n // Refresh failed, logout user\n config.logoutCallback?.();\n return throwError(() => refreshError);\n }));\n }\n }\n // Enhanced error logging with context\n if (config.enableErrorLogging) {\n loggingService.logHttpError({\n method: req.method,\n url: finalUrl,\n originalUrl: req.url,\n requestId,\n correlationId,\n tenantId,\n status: error.status,\n statusText: error.statusText,\n message: error.message,\n timestamp: new Date().toISOString(),\n errorDetails: error.error,\n environment: environment.clientId,\n isCustomUrl,\n headers: [], // Headers are not included in HttpErrorResponse by default, adjust if needed\n });\n }\n // Handle other error scenarios\n switch (error.status) {\n case 403:\n tenantService.handleForbidden();\n break;\n case 0:\n loggingService.logNetworkError(correlationId);\n break;\n case 429:\n loggingService.logRateLimitError(correlationId, finalUrl);\n break;\n }\n return throwError(() => error);\n }));\n }\n else {\n // No auth header, use standard error handling\n return next(enhancedReq).pipe(catchError((error) => {\n // Enhanced error logging with context\n if (config.enableErrorLogging) {\n loggingService.logHttpError({\n method: req.method,\n url: finalUrl,\n originalUrl: req.url,\n requestId,\n correlationId,\n tenantId,\n status: error.status,\n statusText: error.statusText,\n message: error.message,\n timestamp: new Date().toISOString(),\n errorDetails: error.error,\n environment: environment.clientId,\n isCustomUrl,\n headers: [], // Headers are not included in HttpErrorResponse by default, adjust if needed\n });\n }\n // Handle specific error scenarios\n switch (error.status) {\n case 401: {\n loggingService.error('Unauthorized access - token expired or invalid');\n // Note: Token clearing should be handled by the auth service, not infrastructure\n router.navigate([`/${environment.loginRoute}`]);\n break;\n }\n case 403:\n tenantService.handleForbidden();\n break;\n case 0:\n loggingService.logNetworkError(correlationId);\n break;\n case 429:\n loggingService.logRateLimitError(correlationId, finalUrl);\n break;\n }\n return throwError(() => error);\n }));\n }\n};\n// Helper function to create configuration\nexport function createHttpContextConfig(overrides = {}) {\n return {\n ...DEFAULT_CONFIG,\n ...overrides,\n };\n}\n// Provider function for easy setup\nexport function provideHttpContext(config = {}) {\n return [\n {\n provide: HTTP_CONTEXT_CONFIG,\n useValue: createHttpContextConfig(config),\n },\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jb250ZXh0LmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9pbnRlcmNlcHRvcnMvaHR0cC1jb250ZXh0LmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDLENBQUMsd0JBQXdCO0FBQ2hGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFdBQVcsR0FHWixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELFdBQVc7QUFDWCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxzQkFBc0I7QUFDdEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBVSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5RCxNQUFNLG9CQUFvQixHQUFHLElBQUksZ0JBQWdCLENBQVUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBeUIs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QUFNLFVBQVUsdUJBQXVCLENBQ3JDLFlBQXdDLEVBQUU7SUFFMUMsT0FBTztRQUNMLEdBQUcsY0FBYztRQUNqQixHQUFHLFNBQVM7S0FDYixDQUFDO0FBQ0osQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBcUMsRUFBRTtJQUN4RSxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLENBQUM7U0FDMUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJzsgLy8gSW1wb3J0IEluamVjdGlvblRva2VuXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgSHR0cENvbnRleHRUb2tlbixcbiAgSHR0cENvbnRleHQsXG4gIEh0dHBJbnRlcmNlcHRvckZuLFxuICBIdHRwRXJyb3JSZXNwb25zZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGhyb3dFcnJvciwgc3dpdGNoTWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuLy8gRW52aXJvbm1lbnQgYW5kIGNvbmZpZ3VyYXRpb25cbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb25maWcnO1xuXG4vLyBTZXJ2aWNlc1xuaW1wb3J0IHsgVGVuYW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RlbmFudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvcnJlbGF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvcnJlbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2luZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2dnaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVE9LRU5fUFJPVklERVIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3Rva2VuLXByb3ZpZGVyLmludGVyZmFjZSc7XG5cbi8vIEhUVFAgQ29udGV4dCB0b2tlbnNcbmNvbnN0IENVU1RPTV9VUkwgPSBuZXcgSHR0cENvbnRleHRUb2tlbjxib29sZWFuPigoKSA9PiBmYWxzZSk7XG5jb25zdCBTS0lQX0NPTlRFWFRfSEVBREVSUyA9IG5ldyBIdHRwQ29udGV4dFRva2VuPGJvb2xlYW4+KCgpID0+IGZhbHNlKTtcbmNvbnN0IENVU1RPTV9IRUFERVJTID0gbmV3IEh0dHBDb250ZXh0VG9rZW48UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKCkgPT4gKHt9KSk7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIEhUVFAgY29udGV4dFxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbVVybCgpIHtcbiAgcmV0dXJuIG5ldyBIdHRwQ29udGV4dCgpLnNldChDVVNUT01fVVJMLCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNraXBDb250ZXh0SGVhZGVycygpIHtcbiAgcmV0dXJuIG5ldyBIdHRwQ29udGV4dCgpLnNldChTS0lQX0NPTlRFWFRfSEVBREVSUywgdHJ1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ3VzdG9tSGVhZGVycyhoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIHJldHVybiBuZXcgSHR0cENvbnRleHQoKS5zZXQoQ1VTVE9NX0hFQURFUlMsIGhlYWRlcnMpO1xufVxuXG4vLyBDb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgbGlicmFyeSBjb25zdW1lcnNcbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENvbnRleHRDb25maWcge1xuICBlbmFibGVDb3JyZWxhdGlvblRyYWNraW5nPzogYm9vbGVhbjtcbiAgZW5hYmxlUmVxdWVzdExvZ2dpbmc/OiBib29sZWFuO1xuICBlbmFibGVFcnJvckxvZ2dpbmc/OiBib29sZWFuO1xuICBjdXN0b21IZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgKCgpID0+IHN0cmluZyk+O1xuICBjbGllbnRWZXJzaW9uPzogc3RyaW5nO1xuICB0ZW5hbnRJZEhlYWRlcj86IHN0cmluZztcbiAgY29ycmVsYXRpb25JZEhlYWRlcj86IHN0cmluZztcbiAgcmVxdWVzdElkSGVhZGVyPzogc3RyaW5nO1xuICB0aW1lc3RhbXBIZWFkZXI/OiBzdHJpbmc7XG4gIGV4Y2x1ZGVVcmxzPzogc3RyaW5nW107XG4gIGluY2x1ZGVBdXRoVG9rZW4/OiBib29sZWFuO1xuICBiYXNlVXJsSW5qZWN0aW9uPzogYm9vbGVhbjtcbiAgcmVmcmVzaFRva2VuQ2FsbGJhY2s/OiAoKSA9PiBPYnNlcnZhYmxlPHsgdG9rZW46IHN0cmluZzsgcmVmcmVzaFRva2VuPzogc3RyaW5nIH0+O1xuICBsb2dvdXRDYWxsYmFjaz86ICgpID0+IHZvaWQ7XG59XG5cbi8vIERlZmF1bHQgY29uZmlndXJhdGlvblxuY29uc3QgREVGQVVMVF9DT05GSUc6IFJlcXVpcmVkPEh0dHBDb250ZXh0Q29uZmlnPiA9IHtcbiAgZW5hYmxlQ29ycmVsYXRpb25UcmFja2luZzogdHJ1ZSxcbiAgZW5hYmxlUmVxdWVzdExvZ2dpbmc6IGZhbHNlLCAvLyBUaGlzIHdpbGwgYmUgb3ZlcnJpZGRlbiBieSBlbnZpcm9ubWVudC5pc1Byb2R1Y3Rpb25cbiAgZW5hYmxlRXJyb3JMb2dnaW5nOiB0cnVlLFxuICBjdXN0b21IZWFkZXJzOiB7fSxcbiAgY2xpZW50VmVyc2lvbjogJzEuMC4wJyxcbiAgdGVuYW50SWRIZWFkZXI6ICdUZW5hbnQtSWQnLFxuICBjb3JyZWxhdGlvbklkSGVhZGVyOiAnQ29ycmVsYXRpb24tSWQnLFxuICByZXF1ZXN0SWRIZWFkZXI6ICdSZXF1ZXN0LUlkJyxcbiAgdGltZXN0YW1wSGVhZGVyOiAnVGltZXN0YW1wJyxcbiAgZXhjbHVkZVVybHM6IFtdLFxuICBpbmNsdWRlQXV0aFRva2VuOiB0cnVlLFxuICBiYXNlVXJsSW5qZWN0aW9uOiB0cnVlLFxuICByZWZyZXNoVG9rZW5DYWxsYmFjazogdW5kZWZpbmVkIGFzIGFueSxcbiAgbG9nb3V0Q2FsbGJhY2s6IHVuZGVmaW5lZCBhcyBhbnksXG59O1xuXG4vLyBJbmplY3Rpb24gdG9rZW4gZm9yIGNvbmZpZ3VyYXRpb24gLSBGSVhFRFxuZXhwb3J0IGNvbnN0IEhUVFBfQ09OVEVYVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48SHR0cENvbnRleHRDb25maWc+KCdIVFRQX0NPTlRFWFRfQ09ORklHJywge1xuICBmYWN0b3J5OiAoKSA9PiBERUZBVUxUX0NPTkZJRywgLy8gUHJvdmlkZSBhIGRlZmF1bHQgZmFjdG9yeSBpbiBjYXNlIGl0J3Mgbm90IHByb3ZpZGVkXG59KTtcblxuZXhwb3J0IGNvbnN0IGh0dHBDb250ZXh0SW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xuICBjb25zdCB0b2tlblByb3ZpZGVyID0gaW5qZWN0KFRPS0VOX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgdGVuYW50U2VydmljZSA9IGluamVjdChUZW5hbnRTZXJ2aWNlKTtcbiAgY29uc3QgY29ycmVsYXRpb25TZXJ2aWNlID0gaW5qZWN0KENvcnJlbGF0aW9uU2VydmljZSk7XG4gIGNvbnN0IGxvZ2dpbmdTZXJ2aWNlID0gaW5qZWN0KExvZ2dpbmdTZXJ2aWNlKTtcbiAgY29uc3QgZW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xuXG4gIC8vIEdldCBjb25maWd1cmF0aW9uICh3aXRoIGZhbGxiYWNrIHRvIGRlZmF1bHQpIC0gRklYRURcbiAgY29uc3QgY29uZmlnOiBSZXF1aXJlZDxIdHRwQ29udGV4dENvbmZpZz4gPSB7XG4gICAgLi4uREVGQVVMVF9DT05GSUcsXG4gICAgLy8gVGhlIGRlZmF1bHQgZW5hYmxlUmVxdWVzdExvZ2dpbmcgbmVlZHMgdG8gYmUgc2V0IGJhc2VkIG9uIGVudmlyb25tZW50IGhlcmUsXG4gICAgLy8gYXMgaXQncyBkeW5hbWljLCBhbmQgREVGQVVMVF9DT05GSUcgaXMgc3RhdGljLlxuICAgIGVuYWJsZVJlcXVlc3RMb2dnaW5nOiAhZW52aXJvbm1lbnQuaXNQcm9kdWN0aW9uLFxuICAgIC4uLmluamVjdChIVFRQX0NPTlRFWFRfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICB9O1xuXG4gIC8vIENoZWNrIEhUVFAgY29udGV4dCB0b2tlbnNcbiAgY29uc3QgaXNDdXN0b21VcmwgPSByZXEuY29udGV4dC5nZXQoQ1VTVE9NX1VSTCk7XG4gIGNvbnN0IHNraXBIZWFkZXJzID0gcmVxLmNvbnRleHQuZ2V0KFNLSVBfQ09OVEVYVF9IRUFERVJTKTtcbiAgY29uc3QgY29udGV4dEhlYWRlcnMgPSByZXEuY29udGV4dC5nZXQoQ1VTVE9NX0hFQURFUlMpO1xuXG4gIC8vIFNraXAgcHJvY2Vzc2luZyBpZiBoZWFkZXJzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyByZXF1ZXN0XG4gIGlmIChza2lwSGVhZGVycykge1xuICAgIHJldHVybiBuZXh0KHJlcSk7XG4gIH1cblxuICAvLyBDaGVjayBpZiBVUkwgc2hvdWxkIGJlIGV4Y2x1ZGVkXG4gIGNvbnN0IHNob3VsZEV4Y2x1ZGUgPSBjb25maWcuZXhjbHVkZVVybHMuc29tZShcbiAgICB1cmwgPT4gcmVxLnVybC5pbmNsdWRlcyh1cmwpIHx8IG5ldyBSZWdFeHAodXJsKS50ZXN0KHJlcS51cmwpLFxuICApO1xuXG4gIGlmIChzaG91bGRFeGNsdWRlKSB7XG4gICAgcmV0dXJuIG5leHQocmVxKTtcbiAgfVxuXG4gIC8vIFNraXAgYXV0aCBmb3IgbG9naW4sIHJlZ2lzdGVyLCBhbmQgcmVmcmVzaCBlbmRwb2ludHNcbiAgY29uc3Qgc2tpcEF1dGggPVxuICAgIHJlcS51cmwuaW5jbHVkZXMoJy9sb2dpbicpIHx8IHJlcS51cmwuaW5jbHVkZXMoJy9yZWdpc3RlcicpIHx8IHJlcS51cmwuaW5jbHVkZXMoJy9yZWZyZXNoJyk7XG5cbiAgLy8gSGFuZGxlIFVSTCB0cmFuc2Zvcm1hdGlvblxuICBjb25zdCBiYXNlVXJsID0gZW52aXJvbm1lbnQuYXBpQmFzZVVybDtcbiAgY29uc3QgZmluYWxVcmwgPSBpc0N1c3RvbVVybCB8fCAhY29uZmlnLmJhc2VVcmxJbmplY3Rpb24gPyByZXEudXJsIDogYCR7YmFzZVVybH0ke3JlcS51cmx9YDtcblxuICAvLyBHZW5lcmF0ZSBvciBnZXQgY29ycmVsYXRpb24gY29udGV4dFxuICBjb25zdCBjb3JyZWxhdGlvbklkID0gY29uZmlnLmVuYWJsZUNvcnJlbGF0aW9uVHJhY2tpbmdcbiAgICA/IGNvcnJlbGF0aW9uU2VydmljZS5nZXRPckNyZWF0ZUNvcnJlbGF0aW9uSWQoKVxuICAgIDogdXVpZHY0KCk7XG4gIGNvbnN0IHRlbmFudElkID0gdGVuYW50U2VydmljZS5nZXRUZW5hbnRJZCgpO1xuICBjb25zdCByZXF1ZXN0SWQgPSB1dWlkdjQoKTtcblxuICAvLyBCdWlsZCBkeW5hbWljIGhlYWRlcnNcbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIC8vIENvcmUgY29udGV4dCBoZWFkZXJzXG4gIGhlYWRlcnNbY29uZmlnLnJlcXVlc3RJZEhlYWRlcl0gPSByZXF1ZXN0SWQ7XG5cbiAgaWYgKGNvbmZpZy5lbmFibGVDb3JyZWxhdGlvblRyYWNraW5nKSB7XG4gICAgaGVhZGVyc1tjb25maWcuY29ycmVsYXRpb25JZEhlYWRlcl0gPSBjb3JyZWxhdGlvbklkO1xuICB9XG5cbiAgaWYgKHRlbmFudElkKSB7XG4gICAgaGVhZGVyc1tjb25maWcudGVuYW50SWRIZWFkZXJdID0gdGVuYW50SWQ7XG4gIH1cblxuICBoZWFkZXJzW2NvbmZpZy50aW1lc3RhbXBIZWFkZXJdID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gIC8vIENsaWVudCBpbmZvcm1hdGlvblxuICBpZiAoY29uZmlnLmNsaWVudFZlcnNpb24pIHtcbiAgICBoZWFkZXJzWydDbGllbnQtVmVyc2lvbiddID0gY29uZmlnLmNsaWVudFZlcnNpb247XG4gIH1cblxuICAvLyBFbnZpcm9ubWVudCBjbGllbnQgSURcbiAgaWYgKGVudmlyb25tZW50LmNsaWVudElkKSB7XG4gICAgaGVhZGVyc1snQ2xpZW50LUlkJ10gPSBlbnZpcm9ubWVudC5jbGllbnRJZDtcbiAgfVxuXG4gIC8vIEFkZCBhdXRob3JpemF0aW9uIGhlYWRlciBpZiBjb25maWd1cmVkIGFuZCBhdmFpbGFibGVcbiAgaWYgKGNvbmZpZy5pbmNsdWRlQXV0aFRva2VuICYmICFza2lwQXV0aCkge1xuICAgIGNvbnN0IGF1dGhUb2tlbiA9IHRva2VuUHJvdmlkZXI/LmdldFRva2VuKCk7XG4gICAgaWYgKGF1dGhUb2tlbikge1xuICAgICAgaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gYEJlYXJlciAke2F1dGhUb2tlbn1gO1xuICAgIH1cbiAgfVxuXG4gIC8vIFByb2Nlc3MgY3VzdG9tIGhlYWRlcnMgZnJvbSBjb25maWd1cmF0aW9uIChjYW4gYmUgc3RhdGljIHZhbHVlcyBvciBkeW5hbWljIGZ1bmN0aW9ucylcbiAgT2JqZWN0LmVudHJpZXMoY29uZmlnLmN1c3RvbUhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGhlYWRlcnNba2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKCkgOiB2YWx1ZTtcbiAgfSk7XG5cbiAgLy8gQWRkIGhlYWRlcnMgZnJvbSBIVFRQIGNvbnRleHRcbiAgT2JqZWN0LmVudHJpZXMoY29udGV4dEhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICB9KTtcblxuICAvLyBBZGQgY29udGVudC10eXBlIGZvciBkYXRhIHJlcXVlc3RzIGlmIG5vdCBhbHJlYWR5IHNldFxuICBpZiAoXG4gICAgWydQT1NUJywgJ1BVVCcsICdQQVRDSCddLmluY2x1ZGVzKHJlcS5tZXRob2QudG9VcHBlckNhc2UoKSkgJiZcbiAgICAhcmVxLmhlYWRlcnMuaGFzKCdDb250ZW50LVR5cGUnKVxuICApIHtcbiAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgfVxuXG4gIC8vIENsb25lIHJlcXVlc3Qgd2l0aCBlbmhhbmNlZCBoZWFkZXJzIGFuZCBVUkxcbiAgY29uc3QgZW5oYW5jZWRSZXEgPSByZXEuY2xvbmUoe1xuICAgIHVybDogZmluYWxVcmwsXG4gICAgc2V0SGVhZGVyczogaGVhZGVycyxcbiAgfSk7XG5cbiAgLy8gTG9nIG91dGdvaW5nIHJlcXVlc3QgaWYgZW5hYmxlZFxuICBpZiAoY29uZmlnLmVuYWJsZVJlcXVlc3RMb2dnaW5nKSB7XG4gICAgbG9nZ2luZ1NlcnZpY2UubG9nSHR0cFJlcXVlc3Qoe1xuICAgICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgICAgdXJsOiBmaW5hbFVybCxcbiAgICAgIG9yaWdpbmFsVXJsOiByZXEudXJsLFxuICAgICAgcmVxdWVzdElkLFxuICAgICAgY29ycmVsYXRpb25JZCxcbiAgICAgIHRlbmFudElkLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBoZWFkZXJzOiBPYmplY3Qua2V5cyhoZWFkZXJzKSxcbiAgICAgIGlzQ3VzdG9tVXJsLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSWYgcmVxdWVzdCBoYXMgYXV0aCBoZWFkZXIsIGhhbmRsZSB3aXRoIHJlZnJlc2ggbG9naWNcbiAgaWYgKGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSAmJiBjb25maWcucmVmcmVzaFRva2VuQ2FsbGJhY2spIHtcbiAgICByZXR1cm4gbmV4dChlbmhhbmNlZFJlcSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAvLyBJZiA0MDEgVW5hdXRob3JpemVkLCB0cnkgdG8gcmVmcmVzaCB0b2tlblxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSB0b2tlblByb3ZpZGVyPy5nZXRSZWZyZXNoVG9rZW4/LigpO1xuICAgICAgICAgIGlmIChyZWZyZXNoVG9rZW4gJiYgcmVmcmVzaFRva2VuLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnJlZnJlc2hUb2tlbkNhbGxiYWNrKCkhLnBpcGUoXG4gICAgICAgICAgICAgIHN3aXRjaE1hcChuZXdUb2tlbnMgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFJldHJ5IHRoZSBvcmlnaW5hbCByZXF1ZXN0IHdpdGggbmV3IHRva2VuXG4gICAgICAgICAgICAgICAgY29uc3QgcmV0cnlSZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICAgICAgICAgICAgdXJsOiBmaW5hbFVybCxcbiAgICAgICAgICAgICAgICAgIHNldEhlYWRlcnM6IHsgLi4uaGVhZGVycywgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke25ld1Rva2Vucy50b2tlbn1gIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHQocmV0cnlSZXEpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcihyZWZyZXNoRXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFJlZnJlc2ggZmFpbGVkLCBsb2dvdXQgdXNlclxuICAgICAgICAgICAgICAgIGNvbmZpZy5sb2dvdXRDYWxsYmFjaz8uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gcmVmcmVzaEVycm9yKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuaGFuY2VkIGVycm9yIGxvZ2dpbmcgd2l0aCBjb250ZXh0XG4gICAgICAgIGlmIChjb25maWcuZW5hYmxlRXJyb3JMb2dnaW5nKSB7XG4gICAgICAgICAgbG9nZ2luZ1NlcnZpY2UubG9nSHR0cEVycm9yKHtcbiAgICAgICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgICAgIHVybDogZmluYWxVcmwsXG4gICAgICAgICAgICBvcmlnaW5hbFVybDogcmVxLnVybCxcbiAgICAgICAgICAgIHJlcXVlc3RJZCxcbiAgICAgICAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICAgIHN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgICAgICAgc3RhdHVzVGV4dDogZXJyb3Iuc3RhdHVzVGV4dCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIGVycm9yRGV0YWlsczogZXJyb3IuZXJyb3IsXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogZW52aXJvbm1lbnQuY2xpZW50SWQsXG4gICAgICAgICAgICBpc0N1c3RvbVVybCxcbiAgICAgICAgICAgIGhlYWRlcnM6IFtdLCAvLyBIZWFkZXJzIGFyZSBub3QgaW5jbHVkZWQgaW4gSHR0cEVycm9yUmVzcG9uc2UgYnkgZGVmYXVsdCwgYWRqdXN0IGlmIG5lZWRlZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxlIG90aGVyIGVycm9yIHNjZW5hcmlvc1xuICAgICAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgICAgIGNhc2UgNDAzOlxuICAgICAgICAgICAgdGVuYW50U2VydmljZS5oYW5kbGVGb3JiaWRkZW4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIGxvZ2dpbmdTZXJ2aWNlLmxvZ05ldHdvcmtFcnJvcihjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDI5OlxuICAgICAgICAgICAgbG9nZ2luZ1NlcnZpY2UubG9nUmF0ZUxpbWl0RXJyb3IoY29ycmVsYXRpb25JZCwgZmluYWxVcmwpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KSxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIC8vIE5vIGF1dGggaGVhZGVyLCB1c2Ugc3RhbmRhcmQgZXJyb3IgaGFuZGxpbmdcbiAgICByZXR1cm4gbmV4dChlbmhhbmNlZFJlcSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAvLyBFbmhhbmNlZCBlcnJvciBsb2dnaW5nIHdpdGggY29udGV4dFxuICAgICAgICBpZiAoY29uZmlnLmVuYWJsZUVycm9yTG9nZ2luZykge1xuICAgICAgICAgIGxvZ2dpbmdTZXJ2aWNlLmxvZ0h0dHBFcnJvcih7XG4gICAgICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgICAgICB1cmw6IGZpbmFsVXJsLFxuICAgICAgICAgICAgb3JpZ2luYWxVcmw6IHJlcS51cmwsXG4gICAgICAgICAgICByZXF1ZXN0SWQsXG4gICAgICAgICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgICBzdGF0dXM6IGVycm9yLnN0YXR1cyxcbiAgICAgICAgICAgIHN0YXR1c1RleHQ6IGVycm9yLnN0YXR1c1RleHQsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICBlcnJvckRldGFpbHM6IGVycm9yLmVycm9yLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IGVudmlyb25tZW50LmNsaWVudElkLFxuICAgICAgICAgICAgaXNDdXN0b21VcmwsXG4gICAgICAgICAgICBoZWFkZXJzOiBbXSwgLy8gSGVhZGVycyBhcmUgbm90IGluY2x1ZGVkIGluIEh0dHBFcnJvclJlc3BvbnNlIGJ5IGRlZmF1bHQsIGFkanVzdCBpZiBuZWVkZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSBzcGVjaWZpYyBlcnJvciBzY2VuYXJpb3NcbiAgICAgICAgc3dpdGNoIChlcnJvci5zdGF0dXMpIHtcbiAgICAgICAgICBjYXNlIDQwMToge1xuICAgICAgICAgICAgbG9nZ2luZ1NlcnZpY2UuZXJyb3IoJ1VuYXV0aG9yaXplZCBhY2Nlc3MgLSB0b2tlbiBleHBpcmVkIG9yIGludmFsaWQnKTtcbiAgICAgICAgICAgIC8vIE5vdGU6IFRva2VuIGNsZWFyaW5nIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBhdXRoIHNlcnZpY2UsIG5vdCBpbmZyYXN0cnVjdHVyZVxuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlKFtgLyR7ZW52aXJvbm1lbnQubG9naW5Sb3V0ZX1gXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSA0MDM6XG4gICAgICAgICAgICB0ZW5hbnRTZXJ2aWNlLmhhbmRsZUZvcmJpZGRlbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgbG9nZ2luZ1NlcnZpY2UubG9nTmV0d29ya0Vycm9yKGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA0Mjk6XG4gICAgICAgICAgICBsb2dnaW5nU2VydmljZS5sb2dSYXRlTGltaXRFcnJvcihjb3JyZWxhdGlvbklkLCBmaW5hbFVybCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn07XG5cbi8vIFN1cHBvcnRpbmcgaW50ZXJmYWNlcyBmb3IgdHlwZSBzYWZldHlcbmV4cG9ydCBpbnRlcmZhY2UgSHR0cFJlcXVlc3RMb2cge1xuICBtZXRob2Q6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIG9yaWdpbmFsVXJsOiBzdHJpbmc7XG4gIHJlcXVlc3RJZDogc3RyaW5nO1xuICBjb3JyZWxhdGlvbklkOiBzdHJpbmc7XG4gIHRlbmFudElkOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBoZWFkZXJzOiBzdHJpbmdbXTtcbiAgaXNDdXN0b21Vcmw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEVycm9yTG9nIGV4dGVuZHMgSHR0cFJlcXVlc3RMb2cge1xuICBzdGF0dXM6IG51bWJlcjtcbiAgc3RhdHVzVGV4dDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGVycm9yRGV0YWlsczogdW5rbm93bjtcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBjb25maWd1cmF0aW9uXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSHR0cENvbnRleHRDb25maWcoXG4gIG92ZXJyaWRlczogUGFydGlhbDxIdHRwQ29udGV4dENvbmZpZz4gPSB7fSxcbik6IEh0dHBDb250ZXh0Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5ERUZBVUxUX0NPTkZJRyxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH07XG59XG5cbi8vIFByb3ZpZGVyIGZ1bmN0aW9uIGZvciBlYXN5IHNldHVwXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUh0dHBDb250ZXh0KGNvbmZpZzogUGFydGlhbDxIdHRwQ29udGV4dENvbmZpZz4gPSB7fSkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEhUVFBfQ09OVEVYVF9DT05GSUcsXG4gICAgICB1c2VWYWx1ZTogY3JlYXRlSHR0cENvbnRleHRDb25maWcoY29uZmlnKSxcbiAgICB9LFxuICBdO1xufVxuIl19","import { HttpContext, HttpContextToken, } from '@angular/common/http';\nimport { finalize } from 'rxjs/operators';\nimport { inject, Injectable } from '@angular/core';\nimport { OverlayService } from '@acontplus/ng-components';\nimport * as i0 from \"@angular/core\";\n/**\n * Token to determine if a request should show spinner\n * Default is true (show spinner for all requests)\n */\nconst SHOW_SPINNER = new HttpContextToken(() => true);\nconst requests = [];\n/**\n * Helper function to disable spinner for specific requests\n * @returns HttpContext with spinner disabled\n */\nexport function withoutSpinner() {\n return new HttpContext().set(SHOW_SPINNER, false);\n}\n/**\n * Service to track active HTTP requests\n */\nexport class ActiveRequestsTracker {\n get count() {\n return requests.length;\n }\n add(request) {\n requests.push(request);\n }\n remove(request) {\n const index = requests.indexOf(request);\n if (index >= 0) {\n requests.splice(index, 1);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActiveRequestsTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActiveRequestsTracker, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActiveRequestsTracker, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n/**\n * Interceptor that shows/hides a loading spinner based on active HTTP requests\n */\nexport const spinnerInterceptor = (req, next) => {\n // Track active requests requiring spinner\n const activeRequests = inject(ActiveRequestsTracker);\n const overlayService = inject(OverlayService);\n // Skip spinner if disabled for this request\n if (!req.context.get(SHOW_SPINNER)) {\n return next(req);\n }\n // Add request to tracking\n activeRequests.add(req);\n // Show spinner if this is the first active request\n if (activeRequests.count === 1) {\n overlayService.showSpinner();\n }\n return next(req).pipe(finalize(() => {\n // Remove request and hide spinner if no more active requests\n activeRequests.remove(req);\n if (activeRequests.count === 0) {\n overlayService.hideSpinner();\n }\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvaW50ZXJjZXB0b3JzL3NwaW5uZXIuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsR0FHakIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUMxRDs7O0dBR0c7QUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLGdCQUFnQixDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRS9ELE1BQU0sUUFBUSxHQUEyQixFQUFFLENBQUM7QUFFNUM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxJQUFJLEtBQUs7UUFDUCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDekIsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUE2QjtRQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBNkI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNmLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO3VHQWRVLHFCQUFxQjsyR0FBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBa0JEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXNCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQ2pFLDBDQUEwQztJQUMxQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNyRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFOUMsNENBQTRDO0lBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV4QixtREFBbUQ7SUFDbkQsSUFBSSxjQUFjLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNuQixRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ1osNkRBQTZEO1FBQzdELGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxjQUFjLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBDb250ZXh0LFxuICBIdHRwQ29udGV4dFRva2VuLFxuICBIdHRwSW50ZXJjZXB0b3JGbixcbiAgSHR0cFJlcXVlc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb21wb25lbnRzJztcbi8qKlxuICogVG9rZW4gdG8gZGV0ZXJtaW5lIGlmIGEgcmVxdWVzdCBzaG91bGQgc2hvdyBzcGlubmVyXG4gKiBEZWZhdWx0IGlzIHRydWUgKHNob3cgc3Bpbm5lciBmb3IgYWxsIHJlcXVlc3RzKVxuICovXG5jb25zdCBTSE9XX1NQSU5ORVIgPSBuZXcgSHR0cENvbnRleHRUb2tlbjxib29sZWFuPigoKSA9PiB0cnVlKTtcblxuY29uc3QgcmVxdWVzdHM6IEh0dHBSZXF1ZXN0PHVua25vd24+W10gPSBbXTtcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGlzYWJsZSBzcGlubmVyIGZvciBzcGVjaWZpYyByZXF1ZXN0c1xuICogQHJldHVybnMgSHR0cENvbnRleHQgd2l0aCBzcGlubmVyIGRpc2FibGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRob3V0U3Bpbm5lcigpIHtcbiAgcmV0dXJuIG5ldyBIdHRwQ29udGV4dCgpLnNldChTSE9XX1NQSU5ORVIsIGZhbHNlKTtcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIHRvIHRyYWNrIGFjdGl2ZSBIVFRQIHJlcXVlc3RzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBY3RpdmVSZXF1ZXN0c1RyYWNrZXIge1xuICBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcmVxdWVzdHMubGVuZ3RoO1xuICB9XG5cbiAgYWRkKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+KTogdm9pZCB7XG4gICAgcmVxdWVzdHMucHVzaChyZXF1ZXN0KTtcbiAgfVxuXG4gIHJlbW92ZShyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gcmVxdWVzdHMuaW5kZXhPZihyZXF1ZXN0KTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmVxdWVzdHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmNlcHRvciB0aGF0IHNob3dzL2hpZGVzIGEgbG9hZGluZyBzcGlubmVyIGJhc2VkIG9uIGFjdGl2ZSBIVFRQIHJlcXVlc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBzcGlubmVySW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xuICAvLyBUcmFjayBhY3RpdmUgcmVxdWVzdHMgcmVxdWlyaW5nIHNwaW5uZXJcbiAgY29uc3QgYWN0aXZlUmVxdWVzdHMgPSBpbmplY3QoQWN0aXZlUmVxdWVzdHNUcmFja2VyKTtcbiAgY29uc3Qgb3ZlcmxheVNlcnZpY2UgPSBpbmplY3QoT3ZlcmxheVNlcnZpY2UpO1xuXG4gIC8vIFNraXAgc3Bpbm5lciBpZiBkaXNhYmxlZCBmb3IgdGhpcyByZXF1ZXN0XG4gIGlmICghcmVxLmNvbnRleHQuZ2V0KFNIT1dfU1BJTk5FUikpIHtcbiAgICByZXR1cm4gbmV4dChyZXEpO1xuICB9XG5cbiAgLy8gQWRkIHJlcXVlc3QgdG8gdHJhY2tpbmdcbiAgYWN0aXZlUmVxdWVzdHMuYWRkKHJlcSk7XG5cbiAgLy8gU2hvdyBzcGlubmVyIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFjdGl2ZSByZXF1ZXN0XG4gIGlmIChhY3RpdmVSZXF1ZXN0cy5jb3VudCA9PT0gMSkge1xuICAgIG92ZXJsYXlTZXJ2aWNlLnNob3dTcGlubmVyKCk7XG4gIH1cblxuICByZXR1cm4gbmV4dChyZXEpLnBpcGUoXG4gICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgLy8gUmVtb3ZlIHJlcXVlc3QgYW5kIGhpZGUgc3Bpbm5lciBpZiBubyBtb3JlIGFjdGl2ZSByZXF1ZXN0c1xuICAgICAgYWN0aXZlUmVxdWVzdHMucmVtb3ZlKHJlcSk7XG4gICAgICBpZiAoYWN0aXZlUmVxdWVzdHMuY291bnQgPT09IDApIHtcbiAgICAgICAgb3ZlcmxheVNlcnZpY2UuaGlkZVNwaW5uZXIoKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgKTtcbn07XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport * as i0 from \"@angular/core\";\nexport class BaseHttpRepository {\n http = inject(HttpClient);\n buildUrl(path = '') {\n const baseUrl = this.config.baseUrl || '/api';\n const version = this.config.version ? `/v${this.config.version}` : '';\n const endpoint = path ? `${this.config.endpoint}/${path}` : this.config.endpoint;\n return `${baseUrl}${version}/${endpoint}`.replace(/\\/+/g, '/');\n }\n get(path = '', params) {\n return this.http.get(this.buildUrl(path), { params });\n }\n post(path = '', body) {\n return this.http.post(this.buildUrl(path), body);\n }\n put(path = '', body) {\n return this.http.put(this.buildUrl(path), body);\n }\n patch(path = '', body) {\n return this.http.patch(this.buildUrl(path), body);\n }\n delete(path = '') {\n return this.http.delete(this.buildUrl(path));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: BaseHttpRepository, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: BaseHttpRepository });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: BaseHttpRepository, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1pbmZyYXN0cnVjdHVyZS9zcmMvbGliL3JlcG9zaXRvcmllcy9iYXNlLWh0dHAucmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBS2xELE1BQU0sT0FBZ0Isa0JBQWtCO0lBQzVCLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFHMUIsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUVqRixPQUFPLEdBQUcsT0FBTyxHQUFHLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFUyxHQUFHLENBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFrRDtRQUM1RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFUyxJQUFJLENBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFhO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVMsR0FBRyxDQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBYTtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVTLEtBQUssQ0FBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQWM7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFUyxNQUFNLENBQUksSUFBSSxHQUFHLEVBQUU7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzt1R0E5Qm1CLGtCQUFrQjsyR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSHR0cFJlcG9zaXRvcnkge1xuICBwcm90ZWN0ZWQgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNvbmZpZzogUmVwb3NpdG9yeUNvbmZpZzsgLy8gQWJzdHJhY3QgcHJvcGVydHlcblxuICBwcm90ZWN0ZWQgYnVpbGRVcmwocGF0aCA9ICcnKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWcuYmFzZVVybCB8fCAnL2FwaSc7XG4gICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuY29uZmlnLnZlcnNpb24gPyBgL3Yke3RoaXMuY29uZmlnLnZlcnNpb259YCA6ICcnO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gcGF0aCA/IGAke3RoaXMuY29uZmlnLmVuZHBvaW50fS8ke3BhdGh9YCA6IHRoaXMuY29uZmlnLmVuZHBvaW50O1xuXG4gICAgcmV0dXJuIGAke2Jhc2VVcmx9JHt2ZXJzaW9ufS8ke2VuZHBvaW50fWAucmVwbGFjZSgvXFwvKy9nLCAnLycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldDxUPihwYXRoID0gJycsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4odGhpcy5idWlsZFVybChwYXRoKSwgeyBwYXJhbXMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcG9zdDxUPihwYXRoID0gJycsIGJvZHk6IHVua25vd24pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4odGhpcy5idWlsZFVybChwYXRoKSwgYm9keSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHV0PFQ+KHBhdGggPSAnJywgYm9keTogdW5rbm93bik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFQ+KHRoaXMuYnVpbGRVcmwocGF0aCksIGJvZHkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhdGNoPFQ+KHBhdGggPSAnJywgYm9keT86IHVua25vd24pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPFQ+KHRoaXMuYnVpbGRVcmwocGF0aCksIGJvZHkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlbGV0ZTxUPihwYXRoID0gJycpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxUPih0aGlzLmJ1aWxkVXJsKHBhdGgpKTtcbiAgfVxufVxuIl19","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { BaseHttpRepository } from './base-http.repository';\nimport * as i0 from \"@angular/core\";\n// Create an injection token for RepositoryConfig\nexport const REPOSITORY_CONFIG = new InjectionToken('REPOSITORY_CONFIG');\nexport class GenericRepository extends BaseHttpRepository {\n config;\n constructor() {\n const config = inject(REPOSITORY_CONFIG);\n super();\n this.config = config;\n }\n getById(id) {\n return this.get(id.toString());\n }\n getAll(pagination) {\n const params = this.buildParams(pagination);\n return this.get('', params);\n }\n create(entity) {\n return this.post('', entity);\n }\n update(id, entity) {\n return this.put(id.toString(), entity);\n }\n remove(id) {\n return super.delete(id.toString());\n }\n buildParams(pagination, filters) {\n const params = {};\n if (pagination) {\n params.pageIndex = pagination.pageIndex?.toString() || '1';\n params.pageSize = pagination.pageSize?.toString() || '20';\n if (pagination.sortBy)\n params.sortBy = pagination.sortBy;\n if (pagination.sortDirection)\n params.sortDirection = pagination.sortDirection;\n }\n if (filters) {\n Object.assign(params, filters);\n }\n return params;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GenericRepository, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GenericRepository });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: GenericRepository, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\nexport class SearchableGenericRepository extends GenericRepository {\n search(query, pagination) {\n const searchFilters = { q: query };\n const params = this.buildParams(pagination, searchFilters);\n return this.get('search', params);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SearchableGenericRepository, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SearchableGenericRepository });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: SearchableGenericRepository, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9yZXBvc2l0b3JpZXMvZ2VuZXJpYy5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFJNUQsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFtQixtQkFBbUIsQ0FBQyxDQUFDO0FBRzNGLE1BQU0sT0FBTyxpQkFDWCxTQUFRLGtCQUFrQjtJQUdQLE1BQU0sQ0FBbUI7SUFFNUM7UUFDRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQW1CLGlCQUFpQixDQUFDLENBQUM7UUFFM0QsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQU87UUFDYixPQUFPLElBQUksQ0FBQyxHQUFHLENBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUE2QjtRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBdUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBd0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQU8sRUFBRSxNQUF3QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUMsRUFBTztRQUNaLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRVMsV0FBVyxDQUFDLFVBQTZCLEVBQUUsT0FBNkI7UUFDaEYsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO1FBRXZCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDO1lBQzNELE1BQU0sQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUM7WUFDMUQsSUFBSSxVQUFVLENBQUMsTUFBTTtnQkFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekQsSUFBSSxVQUFVLENBQUMsYUFBYTtnQkFBRSxNQUFNLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDaEYsQ0FBQztRQUVELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzt1R0FqRFUsaUJBQWlCOzJHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7O0FBc0RYLE1BQU0sT0FBTywyQkFDWCxTQUFRLGlCQUErQjtJQUd2QyxNQUFNLENBQUMsS0FBYSxFQUFFLFVBQTRCO1FBQ2hELE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBdUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7dUdBUlUsMkJBQTJCOzJHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlSHR0cFJlcG9zaXRvcnkgfSBmcm9tICcuL2Jhc2UtaHR0cC5yZXBvc2l0b3J5JztcbmltcG9ydCB7IFJlcG9zaXRvcnksIFJlcG9zaXRvcnlDb25maWcsIFNlYXJjaGFibGVSZXBvc2l0b3J5IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBhZ2VkUmVzdWx0LCBQYWdpbmF0aW9uUGFyYW1zIH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcblxuLy8gQ3JlYXRlIGFuIGluamVjdGlvbiB0b2tlbiBmb3IgUmVwb3NpdG9yeUNvbmZpZ1xuZXhwb3J0IGNvbnN0IFJFUE9TSVRPUllfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFJlcG9zaXRvcnlDb25maWc+KCdSRVBPU0lUT1JZX0NPTkZJRycpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR2VuZXJpY1JlcG9zaXRvcnk8VEVudGl0eSA9IGFueSwgVElkIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID0gbnVtYmVyPlxuICBleHRlbmRzIEJhc2VIdHRwUmVwb3NpdG9yeVxuICBpbXBsZW1lbnRzIFJlcG9zaXRvcnk8VEVudGl0eSwgVElkPlxue1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY29uZmlnOiBSZXBvc2l0b3J5Q29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdDxSZXBvc2l0b3J5Q29uZmlnPihSRVBPU0lUT1JZX0NPTkZJRyk7XG5cbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgZ2V0QnlJZChpZDogVElkKTogT2JzZXJ2YWJsZTxURW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFRFbnRpdHk+KGlkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgZ2V0QWxsKHBhZ2luYXRpb24/OiBQYWdpbmF0aW9uUGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdlZFJlc3VsdDxURW50aXR5Pj4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMocGFnaW5hdGlvbik7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFBhZ2VkUmVzdWx0PFRFbnRpdHk+PignJywgcGFyYW1zKTtcbiAgfVxuXG4gIGNyZWF0ZShlbnRpdHk6IFBhcnRpYWw8VEVudGl0eT4pOiBPYnNlcnZhYmxlPFRFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5wb3N0PFRFbnRpdHk+KCcnLCBlbnRpdHkpO1xuICB9XG5cbiAgdXBkYXRlKGlkOiBUSWQsIGVudGl0eTogUGFydGlhbDxURW50aXR5Pik6IE9ic2VydmFibGU8VEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLnB1dDxURW50aXR5PihpZC50b1N0cmluZygpLCBlbnRpdHkpO1xuICB9XG5cbiAgcmVtb3ZlKGlkOiBUSWQpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gc3VwZXIuZGVsZXRlPHZvaWQ+KGlkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUGFyYW1zKHBhZ2luYXRpb24/OiBQYWdpbmF0aW9uUGFyYW1zLCBmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgYW55Pik6IGFueSB7XG4gICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcblxuICAgIGlmIChwYWdpbmF0aW9uKSB7XG4gICAgICBwYXJhbXMucGFnZUluZGV4ID0gcGFnaW5hdGlvbi5wYWdlSW5kZXg/LnRvU3RyaW5nKCkgfHwgJzEnO1xuICAgICAgcGFyYW1zLnBhZ2VTaXplID0gcGFnaW5hdGlvbi5wYWdlU2l6ZT8udG9TdHJpbmcoKSB8fCAnMjAnO1xuICAgICAgaWYgKHBhZ2luYXRpb24uc29ydEJ5KSBwYXJhbXMuc29ydEJ5ID0gcGFnaW5hdGlvbi5zb3J0Qnk7XG4gICAgICBpZiAocGFnaW5hdGlvbi5zb3J0RGlyZWN0aW9uKSBwYXJhbXMuc29ydERpcmVjdGlvbiA9IHBhZ2luYXRpb24uc29ydERpcmVjdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVycykge1xuICAgICAgT2JqZWN0LmFzc2lnbihwYXJhbXMsIGZpbHRlcnMpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlYXJjaGFibGVHZW5lcmljUmVwb3NpdG9yeTxURW50aXR5ID0gYW55LCBUSWQgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgPSBudW1iZXI+XG4gIGV4dGVuZHMgR2VuZXJpY1JlcG9zaXRvcnk8VEVudGl0eSwgVElkPlxuICBpbXBsZW1lbnRzIFNlYXJjaGFibGVSZXBvc2l0b3J5PFRFbnRpdHksIFRJZD5cbntcbiAgc2VhcmNoKHF1ZXJ5OiBzdHJpbmcsIHBhZ2luYXRpb246IFBhZ2luYXRpb25QYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2VkUmVzdWx0PFRFbnRpdHk+PiB7XG4gICAgY29uc3Qgc2VhcmNoRmlsdGVycyA9IHsgcTogcXVlcnkgfTtcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhZ2luYXRpb24sIHNlYXJjaEZpbHRlcnMpO1xuICAgIHJldHVybiB0aGlzLmdldDxQYWdlZFJlc3VsdDxURW50aXR5Pj4oJ3NlYXJjaCcsIHBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport * as i0 from \"@angular/core\";\nexport class RepositoryFactory {\n http = inject(HttpClient);\n create(config) {\n const buildUrl = (path = '') => {\n const baseUrl = config.baseUrl || '/api';\n const version = config.version ? `/v${config.version}` : '';\n const endpoint = path ? `${config.endpoint}/${path}` : config.endpoint;\n return `${baseUrl}${version}/${endpoint}`.replace(/\\/+/g, '/');\n };\n const buildParams = (pagination) => {\n const params = {};\n if (pagination) {\n params.page = pagination.pageIndex?.toString() || '1';\n params.pageSize = pagination.pageSize?.toString() || '20';\n if (pagination.sortBy)\n params.sortBy = pagination.sortBy;\n if (pagination.sortDirection)\n params.sortDirection = pagination.sortDirection;\n }\n return params;\n };\n // Safe ID conversion function\n const idToString = (id) => {\n if (typeof id === 'string' || typeof id === 'number' || typeof id === 'bigint') {\n return id.toString();\n }\n // Fallback for other types - you might want to handle this differently\n return String(id);\n };\n return {\n getById: (id) => this.http.get(buildUrl(idToString(id))),\n getAll: (pagination) => this.http.get(buildUrl(), {\n params: buildParams(pagination),\n }),\n create: (entity) => this.http.post(buildUrl(), entity),\n update: (id, entity) => this.http.put(buildUrl(idToString(id)), entity),\n remove: (id) => this.http.delete(buildUrl(idToString(id))),\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RepositoryFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RepositoryFactory, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RepositoryFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeS1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2xpYi9yZXBvc2l0b3JpZXMvcmVwb3NpdG9yeS1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFLbEQsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWxDLE1BQU0sQ0FDSixNQUF3QjtRQUV4QixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRTtZQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ3ZFLE9BQU8sR0FBRyxPQUFPLEdBQUcsT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUE2QixFQUFFLEVBQUU7WUFDcEQsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQztnQkFDdEQsTUFBTSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQztnQkFDMUQsSUFBSSxVQUFVLENBQUMsTUFBTTtvQkFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3pELElBQUksVUFBVSxDQUFDLGFBQWE7b0JBQUUsTUFBTSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1lBQ2hGLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUM7UUFFRiw4QkFBOEI7UUFDOUIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUFPLEVBQVUsRUFBRTtZQUNyQyxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQy9FLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7WUFDRCx1RUFBdUU7WUFDdkUsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBRUYsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXRFLE1BQU0sRUFBRSxDQUFDLFVBQVcsRUFBRSxFQUFFLENBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF1QixRQUFRLEVBQUUsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUM7YUFDaEMsQ0FBQztZQUVKLE1BQU0sRUFBRSxDQUFDLE1BQXdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFVLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQztZQUVqRixNQUFNLEVBQUUsQ0FBQyxFQUFPLEVBQUUsTUFBd0IsRUFBRSxFQUFFLENBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFVLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7WUFFMUQsTUFBTSxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEUsQ0FBQztJQUNKLENBQUM7dUdBaERVLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBQYWdlZFJlc3VsdCwgUGFnaW5hdGlvblBhcmFtcyB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5LCBSZXBvc2l0b3J5Q29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBSZXBvc2l0b3J5RmFjdG9yeSB7XG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBjcmVhdGU8VEVudGl0eSwgVElkIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID0gbnVtYmVyPihcbiAgICBjb25maWc6IFJlcG9zaXRvcnlDb25maWcsXG4gICk6IFJlcG9zaXRvcnk8VEVudGl0eSwgVElkPiB7XG4gICAgY29uc3QgYnVpbGRVcmwgPSAocGF0aCA9ICcnKSA9PiB7XG4gICAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnLmJhc2VVcmwgfHwgJy9hcGknO1xuICAgICAgY29uc3QgdmVyc2lvbiA9IGNvbmZpZy52ZXJzaW9uID8gYC92JHtjb25maWcudmVyc2lvbn1gIDogJyc7XG4gICAgICBjb25zdCBlbmRwb2ludCA9IHBhdGggPyBgJHtjb25maWcuZW5kcG9pbnR9LyR7cGF0aH1gIDogY29uZmlnLmVuZHBvaW50O1xuICAgICAgcmV0dXJuIGAke2Jhc2VVcmx9JHt2ZXJzaW9ufS8ke2VuZHBvaW50fWAucmVwbGFjZSgvXFwvKy9nLCAnLycpO1xuICAgIH07XG5cbiAgICBjb25zdCBidWlsZFBhcmFtcyA9IChwYWdpbmF0aW9uPzogUGFnaW5hdGlvblBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICAgIGlmIChwYWdpbmF0aW9uKSB7XG4gICAgICAgIHBhcmFtcy5wYWdlID0gcGFnaW5hdGlvbi5wYWdlSW5kZXg/LnRvU3RyaW5nKCkgfHwgJzEnO1xuICAgICAgICBwYXJhbXMucGFnZVNpemUgPSBwYWdpbmF0aW9uLnBhZ2VTaXplPy50b1N0cmluZygpIHx8ICcyMCc7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uLnNvcnRCeSkgcGFyYW1zLnNvcnRCeSA9IHBhZ2luYXRpb24uc29ydEJ5O1xuICAgICAgICBpZiAocGFnaW5hdGlvbi5zb3J0RGlyZWN0aW9uKSBwYXJhbXMuc29ydERpcmVjdGlvbiA9IHBhZ2luYXRpb24uc29ydERpcmVjdGlvbjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfTtcblxuICAgIC8vIFNhZmUgSUQgY29udmVyc2lvbiBmdW5jdGlvblxuICAgIGNvbnN0IGlkVG9TdHJpbmcgPSAoaWQ6IFRJZCk6IHN0cmluZyA9PiB7XG4gICAgICBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgaWQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBpZCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgcmV0dXJuIGlkLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICAvLyBGYWxsYmFjayBmb3Igb3RoZXIgdHlwZXMgLSB5b3UgbWlnaHQgd2FudCB0byBoYW5kbGUgdGhpcyBkaWZmZXJlbnRseVxuICAgICAgcmV0dXJuIFN0cmluZyhpZCk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBnZXRCeUlkOiAoaWQ6IFRJZCkgPT4gdGhpcy5odHRwLmdldDxURW50aXR5PihidWlsZFVybChpZFRvU3RyaW5nKGlkKSkpLFxuXG4gICAgICBnZXRBbGw6IChwYWdpbmF0aW9uPykgPT5cbiAgICAgICAgdGhpcy5odHRwLmdldDxQYWdlZFJlc3VsdDxURW50aXR5Pj4oYnVpbGRVcmwoKSwge1xuICAgICAgICAgIHBhcmFtczogYnVpbGRQYXJhbXMocGFnaW5hdGlvbiksXG4gICAgICAgIH0pLFxuXG4gICAgICBjcmVhdGU6IChlbnRpdHk6IFBhcnRpYWw8VEVudGl0eT4pID0+IHRoaXMuaHR0cC5wb3N0PFRFbnRpdHk+KGJ1aWxkVXJsKCksIGVudGl0eSksXG5cbiAgICAgIHVwZGF0ZTogKGlkOiBUSWQsIGVudGl0eTogUGFydGlhbDxURW50aXR5PikgPT5cbiAgICAgICAgdGhpcy5odHRwLnB1dDxURW50aXR5PihidWlsZFVybChpZFRvU3RyaW5nKGlkKSksIGVudGl0eSksXG5cbiAgICAgIHJlbW92ZTogKGlkOiBUSWQpID0+IHRoaXMuaHR0cC5kZWxldGU8dm9pZD4oYnVpbGRVcmwoaWRUb1N0cmluZyhpZCkpKSxcbiAgICB9O1xuICB9XG59XG4iXX0=","import { lastValueFrom } from 'rxjs';\nfunction mergeUrl(baseURL, endpoint) {\n if (!baseURL)\n return endpoint;\n return `${baseURL.replace(/\\/+$/, '')}/${endpoint.replace(/^\\/+/, '')}`;\n}\nexport class AngularHttpAdapter {\n http;\n baseURL;\n constructor(http, baseURL) {\n this.http = http;\n this.baseURL = baseURL;\n }\n buildOptions(options) {\n return {\n headers: options?.headers ?? {},\n params: options?.params ?? {},\n };\n }\n async request(params) {\n const fullUrl = mergeUrl(this.baseURL, params.url);\n const httpOptions = this.buildOptions(params.options);\n const observable = this.http.request(params.method, fullUrl, {\n body: params.data,\n ...httpOptions,\n });\n return await lastValueFrom(observable);\n }\n /** GET */\n get(url, options) {\n return this.request({ method: 'get', url, options });\n }\n /** POST */\n post(url, data, options) {\n return this.request({ method: 'post', url, data, options });\n }\n /** PUT */\n put(url, data, options) {\n return this.request({ method: 'put', url, data, options });\n }\n /** DELETE */\n delete(url, options) {\n return this.request({ method: 'delete', url, options });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1odHRwLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1pbmZyYXN0cnVjdHVyZS9zcmMvbGliL2FkYXB0ZXJzL2FuZ3VsYXItaHR0cC5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsU0FBUyxRQUFRLENBQUMsT0FBMkIsRUFBRSxRQUFnQjtJQUM3RCxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQzlCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQzFFLENBQUM7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0lBRVY7SUFDQTtJQUZuQixZQUNtQixJQUFnQixFQUNoQixPQUFnQjtRQURoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDaEMsQ0FBQztJQUVJLFlBQVksQ0FBQyxPQUFxQjtRQUN4QyxPQUFPO1lBQ0wsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRTtZQUMvQixNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLE9BQU8sQ0FBSSxNQUt4QjtRQUNDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBSSxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtZQUM5RCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsR0FBRyxXQUFXO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsVUFBVTtJQUNWLEdBQUcsQ0FBSSxHQUFXLEVBQUUsT0FBcUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsV0FBVztJQUNYLElBQUksQ0FBSSxHQUFXLEVBQUUsSUFBYyxFQUFFLE9BQXFCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxVQUFVO0lBQ1YsR0FBRyxDQUFJLEdBQVcsRUFBRSxJQUFjLEVBQUUsT0FBcUI7UUFDdkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGFBQWE7SUFDYixNQUFNLENBQUksR0FBVyxFQUFFLE9BQXFCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBPcHRpb25zLCBIdHRwUG9ydCB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5mdW5jdGlvbiBtZXJnZVVybChiYXNlVVJMOiBzdHJpbmcgfCB1bmRlZmluZWQsIGVuZHBvaW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWJhc2VVUkwpIHJldHVybiBlbmRwb2ludDtcbiAgcmV0dXJuIGAke2Jhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJyl9LyR7ZW5kcG9pbnQucmVwbGFjZSgvXlxcLysvLCAnJyl9YDtcbn1cblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJIdHRwQWRhcHRlciBpbXBsZW1lbnRzIEh0dHBQb3J0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYmFzZVVSTD86IHN0cmluZyxcbiAgKSB7fVxuXG4gIHByaXZhdGUgYnVpbGRPcHRpb25zKG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xuICAgIHJldHVybiB7XG4gICAgICBoZWFkZXJzOiBvcHRpb25zPy5oZWFkZXJzID8/IHt9LFxuICAgICAgcGFyYW1zOiBvcHRpb25zPy5wYXJhbXMgPz8ge30sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVxdWVzdDxUPihwYXJhbXM6IHtcbiAgICBtZXRob2Q6ICdnZXQnIHwgJ3Bvc3QnIHwgJ3B1dCcgfCAnZGVsZXRlJztcbiAgICB1cmw6IHN0cmluZztcbiAgICBkYXRhPzogdW5rbm93bjtcbiAgICBvcHRpb25zPzogSHR0cE9wdGlvbnM7XG4gIH0pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBmdWxsVXJsID0gbWVyZ2VVcmwodGhpcy5iYXNlVVJMLCBwYXJhbXMudXJsKTtcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHRoaXMuYnVpbGRPcHRpb25zKHBhcmFtcy5vcHRpb25zKTtcblxuICAgIGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihwYXJhbXMubWV0aG9kLCBmdWxsVXJsLCB7XG4gICAgICBib2R5OiBwYXJhbXMuZGF0YSxcbiAgICAgIC4uLmh0dHBPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IGxhc3RWYWx1ZUZyb20ob2JzZXJ2YWJsZSk7XG4gIH1cblxuICAvKiogR0VUICovXG4gIGdldDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IEh0dHBPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7IG1ldGhvZDogJ2dldCcsIHVybCwgb3B0aW9ucyB9KTtcbiAgfVxuXG4gIC8qKiBQT1NUICovXG4gIHBvc3Q8VD4odXJsOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHsgbWV0aG9kOiAncG9zdCcsIHVybCwgZGF0YSwgb3B0aW9ucyB9KTtcbiAgfVxuXG4gIC8qKiBQVVQgKi9cbiAgcHV0PFQ+KHVybDogc3RyaW5nLCBkYXRhPzogdW5rbm93biwgb3B0aW9ucz86IEh0dHBPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7IG1ldGhvZDogJ3B1dCcsIHVybCwgZGF0YSwgb3B0aW9ucyB9KTtcbiAgfVxuXG4gIC8qKiBERUxFVEUgKi9cbiAgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHsgbWV0aG9kOiAnZGVsZXRlJywgdXJsLCBvcHRpb25zIH0pO1xuICB9XG59XG4iXX0=","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nimport * as i0 from \"@angular/core\";\n// Default configuration\nconst DEFAULT_CONFIG = {\n apiBaseUrl: '',\n apiTimeout: 30000,\n retryAttempts: 2,\n retryDelay: 1000,\n enableCorrelationTracking: true,\n enableRequestLogging: false,\n enableErrorLogging: true,\n enableToastNotifications: true,\n includeAuthToken: true,\n authTokenHeader: 'Authorization',\n enableMultiTenancy: true,\n tenantIdHeader: 'Tenant-Id',\n logLevel: 'info',\n enableConsoleLogging: true,\n customHeaders: {},\n excludeUrls: [],\n excludeMethods: [],\n};\n// Injection token for configuration\nexport const CORE_CONFIG = new InjectionToken('CORE_CONFIG', {\n factory: () => DEFAULT_CONFIG,\n});\nexport class CoreConfigService {\n config;\n environment = inject(ENVIRONMENT);\n constructor() {\n // Initialize with default config and environment overrides\n this.config = this.initializeConfig();\n }\n /**\n * Initialize configuration with defaults and environment overrides\n */\n initializeConfig() {\n const injectedConfig = inject(CORE_CONFIG, { optional: true });\n return {\n ...DEFAULT_CONFIG,\n // Environment overrides\n apiBaseUrl: this.environment.apiBaseUrl || DEFAULT_CONFIG.apiBaseUrl,\n enableRequestLogging: !this.environment.isProduction,\n // Injected config overrides\n ...injectedConfig,\n };\n }\n /**\n * Get the current configuration\n */\n getConfig() {\n return { ...this.config };\n }\n /**\n * Update configuration at runtime\n */\n updateConfig(updates) {\n this.config = { ...this.config, ...updates };\n }\n /**\n * Get a specific configuration value\n */\n get(key) {\n return this.config[key];\n }\n /**\n * Check if a feature is enabled\n */\n isFeatureEnabled(feature) {\n const value = this.config[feature];\n return typeof value === 'boolean' ? value : false;\n }\n /**\n * Get API URL for a specific entity\n */\n getApiUrl(entityName) {\n const baseUrl = this.config.apiBaseUrl;\n if (!entityName)\n return baseUrl;\n return `${baseUrl}/${entityName}`.replace(/\\/+/g, '/');\n }\n /**\n * Check if a URL should be excluded from processing\n */\n shouldExcludeUrl(url) {\n return this.config.excludeUrls.some(excludePattern => url.includes(excludePattern) || new RegExp(excludePattern).test(url));\n }\n /**\n * Check if a method should be excluded from processing\n */\n shouldExcludeMethod(method) {\n return this.config.excludeMethods.some(excludeMethod => excludeMethod.toLowerCase() === method.toLowerCase());\n }\n /**\n * Get custom headers with dynamic values resolved\n */\n getCustomHeaders() {\n const headers = {};\n Object.entries(this.config.customHeaders).forEach(([key, value]) => {\n headers[key] = typeof value === 'function' ? value() : value;\n });\n return headers;\n }\n /**\n * Reset configuration to defaults\n */\n resetConfig() {\n this.config = this.initializeConfig();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CoreConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CoreConfigService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CoreConfigService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n// Provider function for easy setup\nexport function provideCoreConfig(config = {}) {\n return [\n {\n provide: CORE_CONFIG,\n useValue: config,\n },\n ];\n}\n// Helper function to create configuration\nexport function createCoreConfig(overrides = {}) {\n return {\n ...DEFAULT_CONFIG,\n ...overrides,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvc2VydmljZXMvY29yZS1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQW9DbkQsd0JBQXdCO0FBQ3hCLE1BQU0sY0FBYyxHQUF5QjtJQUMzQyxVQUFVLEVBQUUsRUFBRTtJQUNkLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLHlCQUF5QixFQUFFLElBQUk7SUFDL0Isb0JBQW9CLEVBQUUsS0FBSztJQUMzQixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLHdCQUF3QixFQUFFLElBQUk7SUFDOUIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixlQUFlLEVBQUUsZUFBZTtJQUNoQyxrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLGNBQWMsRUFBRSxXQUFXO0lBQzNCLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLG9CQUFvQixFQUFFLElBQUk7SUFDMUIsYUFBYSxFQUFFLEVBQUU7SUFDakIsV0FBVyxFQUFFLEVBQUU7SUFDZixjQUFjLEVBQUUsRUFBRTtDQUNuQixDQUFDO0FBRUYsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBYSxhQUFhLEVBQUU7SUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWM7Q0FDOUIsQ0FBQyxDQUFDO0FBS0gsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixNQUFNLENBQXVCO0lBQzdCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENB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LElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7dUdBbkdVLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBdUdELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsU0FBOEIsRUFBRTtJQUNoRSxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsV0FBVztZQUNwQixRQUFRLEVBQUUsTUFBTTtTQUNqQjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxZQUFpQyxFQUFFO0lBQ2xFLE9BQU87UUFDTCxHQUFHLGNBQWM7UUFDakIsR0FBRyxTQUFTO0tBQ2IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BhY29udHBsdXMvbmctY29uZmlnJztcblxuLy8gQ29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIHRoZSBjb3JlIGxpYnJhcnlcbmV4cG9ydCBpbnRlcmZhY2UgQ29yZUNvbmZpZyB7XG4gIC8vIEFQSSBDb25maWd1cmF0aW9uXG4gIGFwaUJhc2VVcmw/OiBzdHJpbmc7XG4gIGFwaVRpbWVvdXQ/OiBudW1iZXI7XG4gIHJldHJ5QXR0ZW1wdHM/OiBudW1iZXI7XG4gIHJldHJ5RGVsYXk/OiBudW1iZXI7XG5cbiAgLy8gRmVhdHVyZSBGbGFnc1xuICBlbmFibGVDb3JyZWxhdGlvblRyYWNraW5nPzogYm9vbGVhbjtcbiAgZW5hYmxlUmVxdWVzdExvZ2dpbmc/OiBib29sZWFuO1xuICBlbmFibGVFcnJvckxvZ2dpbmc/OiBib29sZWFuO1xuICBlbmFibGVUb2FzdE5vdGlmaWNhdGlvbnM/OiBib29sZWFuO1xuXG4gIC8vIFNlY3VyaXR5XG4gIGluY2x1ZGVBdXRoVG9rZW4/OiBib29sZWFuO1xuICBhdXRoVG9rZW5IZWFkZXI/OiBzdHJpbmc7XG5cbiAgLy8gTXVsdGktdGVuYW5jeVxuICBlbmFibGVNdWx0aVRlbmFuY3k/OiBib29sZWFuO1xuICB0ZW5hbnRJZEhlYWRlcj86IHN0cmluZztcblxuICAvLyBMb2dnaW5nXG4gIGxvZ0xldmVsPzogJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcic7XG4gIGVuYWJsZUNvbnNvbGVMb2dnaW5nPzogYm9vbGVhbjtcblxuICAvLyBDdXN0b20gSGVhZGVyc1xuICBjdXN0b21IZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgKCgpID0+IHN0cmluZyk+O1xuXG4gIC8vIEV4Y2x1c2lvbnNcbiAgZXhjbHVkZVVybHM/OiBzdHJpbmdbXTtcbiAgZXhjbHVkZU1ldGhvZHM/OiBzdHJpbmdbXTtcbn1cblxuLy8gRGVmYXVsdCBjb25maWd1cmF0aW9uXG5jb25zdCBERUZBVUxUX0NPTkZJRzogUmVxdWlyZWQ8Q29yZUNvbmZpZz4gPSB7XG4gIGFwaUJhc2VVcmw6ICcnLFxuICBhcGlUaW1lb3V0OiAzMDAwMCxcbiAgcmV0cnlBdHRlbXB0czogMixcbiAgcmV0cnlEZWxheTogMTAwMCxcbiAgZW5hYmxlQ29ycmVsYXRpb25UcmFja2luZzogdHJ1ZSxcbiAgZW5hYmxlUmVxdWVzdExvZ2dpbmc6IGZhbHNlLFxuICBlbmFibGVFcnJvckxvZ2dpbmc6IHRydWUsXG4gIGVuYWJsZVRvYXN0Tm90aWZpY2F0aW9uczogdHJ1ZSxcbiAgaW5jbHVkZUF1dGhUb2tlbjogdHJ1ZSxcbiAgYXV0aFRva2VuSGVhZGVyOiAnQXV0aG9yaXphdGlvbicsXG4gIGVuYWJsZU11bHRpVGVuYW5jeTogdHJ1ZSxcbiAgdGVuYW50SWRIZWFkZXI6ICdUZW5hbnQtSWQnLFxuICBsb2dMZXZlbDogJ2luZm8nLFxuICBlbmFibGVDb25zb2xlTG9nZ2luZzogdHJ1ZSxcbiAgY3VzdG9tSGVhZGVyczoge30sXG4gIGV4Y2x1ZGVVcmxzOiBbXSxcbiAgZXhjbHVkZU1ldGhvZHM6IFtdLFxufTtcblxuLy8gSW5qZWN0aW9uIHRva2VuIGZvciBjb25maWd1cmF0aW9uXG5leHBvcnQgY29uc3QgQ09SRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29yZUNvbmZpZz4oJ0NPUkVfQ09ORklHJywge1xuICBmYWN0b3J5OiAoKSA9PiBERUZBVUxUX0NPTkZJRyxcbn0pO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29yZUNvbmZpZ1NlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZzogUmVxdWlyZWQ8Q29yZUNvbmZpZz47XG4gIHByaXZhdGUgZW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIEluaXRpYWxpemUgd2l0aCBkZWZhdWx0IGNvbmZpZyBhbmQgZW52aXJvbm1lbnQgb3ZlcnJpZGVzXG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmluaXRpYWxpemVDb25maWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0cyBhbmQgZW52aXJvbm1lbnQgb3ZlcnJpZGVzXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVDb25maWcoKTogUmVxdWlyZWQ8Q29yZUNvbmZpZz4ge1xuICAgIGNvbnN0IGluamVjdGVkQ29uZmlnID0gaW5qZWN0KENPUkVfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkRFRkFVTFRfQ09ORklHLFxuICAgICAgLy8gRW52aXJvbm1lbnQgb3ZlcnJpZGVzXG4gICAgICBhcGlCYXNlVXJsOiB0aGlzLmVudmlyb25tZW50LmFwaUJhc2VVcmwgfHwgREVGQVVMVF9DT05GSUcuYXBpQmFzZVVybCxcbiAgICAgIGVuYWJsZVJlcXVlc3RMb2dnaW5nOiAhdGhpcy5lbnZpcm9ubWVudC5pc1Byb2R1Y3Rpb24sXG4gICAgICAvLyBJbmplY3RlZCBjb25maWcgb3ZlcnJpZGVzXG4gICAgICAuLi5pbmplY3RlZENvbmZpZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBnZXRDb25maWcoKTogUmVxdWlyZWQ8Q29yZUNvbmZpZz4ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuY29uZmlnIH07XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNvbmZpZ3VyYXRpb24gYXQgcnVudGltZVxuICAgKi9cbiAgdXBkYXRlQ29uZmlnKHVwZGF0ZXM6IFBhcnRpYWw8Q29yZUNvbmZpZz4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5jb25maWcsIC4uLnVwZGF0ZXMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHZhbHVlXG4gICAqL1xuICBnZXQ8SyBleHRlbmRzIGtleW9mIENvcmVDb25maWc+KGtleTogSyk6IENvcmVDb25maWdbS10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ1trZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgZmVhdHVyZSBpcyBlbmFibGVkXG4gICAqL1xuICBpc0ZlYXR1cmVFbmFibGVkKGZlYXR1cmU6IGtleW9mIENvcmVDb25maWcpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29uZmlnW2ZlYXR1cmVdO1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyA/IHZhbHVlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IEFQSSBVUkwgZm9yIGEgc3BlY2lmaWMgZW50aXR5XG4gICAqL1xuICBnZXRBcGlVcmwoZW50aXR5TmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnLmFwaUJhc2VVcmw7XG4gICAgaWYgKCFlbnRpdHlOYW1lKSByZXR1cm4gYmFzZVVybDtcbiAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtlbnRpdHlOYW1lfWAucmVwbGFjZSgvXFwvKy9nLCAnLycpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgVVJMIHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIHByb2Nlc3NpbmdcbiAgICovXG4gIHNob3VsZEV4Y2x1ZGVVcmwodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZXhjbHVkZVVybHMuc29tZShcbiAgICAgIGV4Y2x1ZGVQYXR0ZXJuID0+IHVybC5pbmNsdWRlcyhleGNsdWRlUGF0dGVybikgfHwgbmV3IFJlZ0V4cChleGNsdWRlUGF0dGVybikudGVzdCh1cmwpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBtZXRob2Qgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gcHJvY2Vzc2luZ1xuICAgKi9cbiAgc2hvdWxkRXhjbHVkZU1ldGhvZChtZXRob2Q6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5leGNsdWRlTWV0aG9kcy5zb21lKFxuICAgICAgZXhjbHVkZU1ldGhvZCA9PiBleGNsdWRlTWV0aG9kLnRvTG93ZXJDYXNlKCkgPT09IG1ldGhvZC50b0xvd2VyQ2FzZSgpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1c3RvbSBoZWFkZXJzIHdpdGggZHluYW1pYyB2YWx1ZXMgcmVzb2x2ZWRcbiAgICovXG4gIGdldEN1c3RvbUhlYWRlcnMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5jb25maWcuY3VzdG9tSGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBoZWFkZXJzW2tleV0gPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZSgpIDogdmFsdWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBjb25maWd1cmF0aW9uIHRvIGRlZmF1bHRzXG4gICAqL1xuICByZXNldENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuaW5pdGlhbGl6ZUNvbmZpZygpO1xuICB9XG59XG5cbi8vIFByb3ZpZGVyIGZ1bmN0aW9uIGZvciBlYXN5IHNldHVwXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvcmVDb25maWcoY29uZmlnOiBQYXJ0aWFsPENvcmVDb25maWc+ID0ge30pIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDT1JFX0NPTkZJRyxcbiAgICAgIHVzZVZhbHVlOiBjb25maWcsXG4gICAgfSxcbiAgXTtcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBjb25maWd1cmF0aW9uXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29yZUNvbmZpZyhvdmVycmlkZXM6IFBhcnRpYWw8Q29yZUNvbmZpZz4gPSB7fSk6IENvcmVDb25maWcge1xuICByZXR1cm4ge1xuICAgIC4uLkRFRkFVTFRfQ09ORklHLFxuICAgIC4uLm92ZXJyaWRlcyxcbiAgfTtcbn1cbiJdfQ==","export class BaseUseCase {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS51c2UtY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvdXNlLWNhc2VzL2Jhc2UudXNlLWNhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFnQixXQUFXO0NBSWhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUNhc2U8VFJlcXVlc3QgPSB2b2lkLCBUUmVzcG9uc2UgPSB2b2lkPiB7XG4gIGV4ZWN1dGUocmVxdWVzdDogVFJlcXVlc3QpOiBPYnNlcnZhYmxlPFRSZXNwb25zZT47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVXNlQ2FzZTxUUmVxdWVzdCA9IHZvaWQsIFRSZXNwb25zZSA9IHZvaWQ+XG4gIGltcGxlbWVudHMgVXNlQ2FzZTxUUmVxdWVzdCwgVFJlc3BvbnNlPlxue1xuICBhYnN0cmFjdCBleGVjdXRlKHJlcXVlc3Q6IFRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUUmVzcG9uc2U+O1xufVxuIl19","import { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { inject } from '@angular/core';\nimport { BaseUseCase } from './base.use-case';\nimport { LoggingService } from '../services/logging.service';\n// Only create commands if you have complex validation logic\nexport class Command extends BaseUseCase {\n // Simple validation - override only when needed\n validate(_request) {\n return []; // Return array of error messages\n }\n execute(request) {\n const errors = this.validate(request);\n if (errors.length > 0) {\n return throwError(() => ({\n status: 'error',\n code: 'VALIDATION_FAILED',\n message: 'Validation failed',\n errors: errors.map(msg => ({ code: 'VALIDATION', message: msg })),\n timestamp: new Date().toISOString(),\n }));\n }\n return this.executeInternal(request).pipe(catchError(error => {\n // Log the error for debugging\n const logger = inject(LoggingService);\n logger.error('An error occurred during command execution:', error);\n // Re-throw the error so the caller can handle it\n return throwError(() => error);\n }));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1pbmZyYXN0cnVjdHVyZS9zcmMvbGliL3VzZS1jYXNlcy9jb21tYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0QsNERBQTREO0FBQzVELE1BQU0sT0FBZ0IsT0FBb0MsU0FBUSxXQUFnQztJQUNoRyxnREFBZ0Q7SUFDdEMsUUFBUSxDQUFDLFFBQWtCO1FBQ25DLE9BQU8sRUFBRSxDQUFDLENBQUMsaUNBQWlDO0lBQzlDLENBQUM7SUFFUSxPQUFPLENBQUMsT0FBaUI7UUFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDakUsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQiw4QkFBOEI7WUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbkUsaURBQWlEO1lBQ2pELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlVXNlQ2FzZSB9IGZyb20gJy4vYmFzZS51c2UtY2FzZSc7XG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvZ2dpbmcuc2VydmljZSc7XG5cbi8vIE9ubHkgY3JlYXRlIGNvbW1hbmRzIGlmIHlvdSBoYXZlIGNvbXBsZXggdmFsaWRhdGlvbiBsb2dpY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbW1hbmQ8VFJlcXVlc3QsIFRSZXNwb25zZSA9IHZvaWQ+IGV4dGVuZHMgQmFzZVVzZUNhc2U8VFJlcXVlc3QsIFRSZXNwb25zZT4ge1xuICAvLyBTaW1wbGUgdmFsaWRhdGlvbiAtIG92ZXJyaWRlIG9ubHkgd2hlbiBuZWVkZWRcbiAgcHJvdGVjdGVkIHZhbGlkYXRlKF9yZXF1ZXN0OiBUUmVxdWVzdCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW107IC8vIFJldHVybiBhcnJheSBvZiBlcnJvciBtZXNzYWdlc1xuICB9XG5cbiAgb3ZlcnJpZGUgZXhlY3V0ZShyZXF1ZXN0OiBUUmVxdWVzdCk6IE9ic2VydmFibGU8VFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy52YWxpZGF0ZShyZXF1ZXN0KTtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICh7XG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgY29kZTogJ1ZBTElEQVRJT05fRkFJTEVEJyxcbiAgICAgICAgbWVzc2FnZTogJ1ZhbGlkYXRpb24gZmFpbGVkJyxcbiAgICAgICAgZXJyb3JzOiBlcnJvcnMubWFwKG1zZyA9PiAoeyBjb2RlOiAnVkFMSURBVElPTicsIG1lc3NhZ2U6IG1zZyB9KSksXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVJbnRlcm5hbChyZXF1ZXN0KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIC8vIExvZyB0aGUgZXJyb3IgZm9yIGRlYnVnZ2luZ1xuICAgICAgICBjb25zdCBsb2dnZXIgPSBpbmplY3QoTG9nZ2luZ1NlcnZpY2UpO1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tYW5kIGV4ZWN1dGlvbjonLCBlcnJvcik7XG5cbiAgICAgICAgLy8gUmUtdGhyb3cgdGhlIGVycm9yIHNvIHRoZSBjYWxsZXIgY2FuIGhhbmRsZSBpdFxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4ZWN1dGVJbnRlcm5hbChyZXF1ZXN0OiBUUmVxdWVzdCk6IE9ic2VydmFibGU8VFJlc3BvbnNlPjtcbn1cbiJdfQ==","import { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { inject } from '@angular/core';\nimport { BaseUseCase } from './base.use-case';\nimport { LoggingService } from '../services/logging.service';\nexport class Query extends BaseUseCase {\n execute(request) {\n return this.executeInternal(request).pipe(catchError(error => {\n const logger = inject(LoggingService);\n logger.error('An error occurred during query execution:', error);\n return throwError(() => error);\n }));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWluZnJhc3RydWN0dXJlL3NyYy9saWIvdXNlLWNhc2VzL3F1ZXJpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE1BQU0sT0FBZ0IsS0FBMkIsU0FBUSxXQUFnQztJQUM5RSxPQUFPLENBQUMsT0FBaUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdkMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlVXNlQ2FzZSB9IGZyb20gJy4vYmFzZS51c2UtY2FzZSc7XG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvZ2dpbmcuc2VydmljZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBRdWVyeTxUUmVxdWVzdCwgVFJlc3BvbnNlPiBleHRlbmRzIEJhc2VVc2VDYXNlPFRSZXF1ZXN0LCBUUmVzcG9uc2U+IHtcbiAgb3ZlcnJpZGUgZXhlY3V0ZShyZXF1ZXN0OiBUUmVxdWVzdCk6IE9ic2VydmFibGU8VFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUludGVybmFsKHJlcXVlc3QpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc3QgbG9nZ2VyID0gaW5qZWN0KExvZ2dpbmdTZXJ2aWNlKTtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBleGVjdXRlSW50ZXJuYWwocmVxdWVzdDogVFJlcXVlc3QpOiBPYnNlcnZhYmxlPFRSZXNwb25zZT47XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWluZnJhc3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctaW5mcmFzdHJ1Y3R1cmUvc3JjL2Fjb250cGx1cy1uZy1pbmZyYXN0cnVjdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["uuidv4","DEFAULT_CONFIG","catchError"],"mappings":";;;;;;;;;;;AACY,MAAC,cAAc,GAAG,IAAI,cAAc,CAAC,gBAAgB;;ACKjE;AACY,MAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,MAAM,KAAK;AACjE;AACY,MAAC,kBAAkB,GAAG,IAAI,gBAAgB,CAAC,MAAM,SAAS;AAC1D,MAAC,cAAc,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AAC7C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC9C,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpE;AACA,IAAI,IAAI,WAAW,GAAG,GAAG;AACzB,IAAI,MAAM,KAAK,GAAG,aAAa,EAAE,QAAQ,EAAE;AAC3C,IAAI,IAAI,KAAK,EAAE;AACf,QAAQ,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC;AAChC,YAAY,UAAU,EAAE,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AAC5D,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI;AACjC;AACA,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACpC;AACA,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK;AACnB,QAAQ,IAAI,KAAK,YAAY,YAAY,EAAE;AAC3C,YAAY,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;AAC5D,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI,CAAC,CAAC;AACN;AACA,IAAI,UAAU,CAAC,CAAC,KAAK,KAAK,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE;AAChE,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AAC3B;AACA,IAAI,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAC7D;AACA,IAAI,wBAAwB,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,CAAC;AAC5E;AACA,IAAI,OAAO,6BAA6B,CAAC,oBAAoB,EAAE,KAAK,CAAC;AACrE;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,EAAE;AACzD,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC/B;AACA;AACA,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,mCAAmC,CAAC,MAAM,CAAC,EAAE;AACxE,QAAQ,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC;AACtD,QAAQ,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC;AAC3C,QAAQ,mBAAmB,CAAC,KAAK,CAAC;AAClC,YAAY,OAAO,EAAE,OAAO;AAC5B,YAAY,KAAK,EAAE,KAAK;AACxB,YAAY,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;AACtC,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;AAClC;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,IAAI,EAAE;AACtC;AACA,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE;AAClC,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,EAAE;AACjE,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,SAAS;AAC7B,YAAY,IAAI,EAAE,KAAK;AACvB,YAAY,OAAO,EAAE,kCAAkC;AACvD,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC/C,SAAS;AACT,IAAI;AACJ;AACA,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACzE,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,SAAS;AAC7B,YAAY,IAAI,EAAE,KAAK;AACvB,YAAY,OAAO,EAAE,kCAAkC;AACvD,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC/C,SAAS;AACT,IAAI;AACJ;AACA,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,SAAS;AACzB,QAAQ,IAAI,EAAE,KAAK;AACnB,QAAQ,OAAO,EAAE,kCAAkC;AACnD,QAAQ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC3C,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,EAAE;AACtE,IAAI,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,CAAC;AACvD,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACzD,IAAI,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC/D;AACA,IAAI,MAAM,iBAAiB,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,eAAe;AACnF,IAAI,IAAI,gBAAgB;AACxB,QAAQ;AACR;AACA,IAAI,IAAI,QAAQ,CAAC,OAAO;AACxB,QAAQ,iBAAiB;AACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACnE,QAAQ,mBAAmB,CAAC,IAAI,CAAC;AACjC,YAAY,IAAI,EAAE,QAAQ,CAAC,MAAM;AACjC,YAAY,OAAO,EAAE,QAAQ,CAAC,OAAO;AACrC,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5F,QAAQ,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI;AAC7C,YAAY,mBAAmB,CAAC,IAAI,CAAC;AACrC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,OAAO,EAAE,OAAO,CAAC,OAAO;AACxC,aAAa,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACtF,QAAQ,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI;AACzC,YAAY,mBAAmB,CAAC,IAAI,CAAC;AACrC,gBAAgB,IAAI,EAAE,OAAO;AAC7B,gBAAgB,OAAO,EAAE,KAAK,CAAC,OAAO;AACtC,aAAa,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,SAAS,6BAA6B,CAAC,QAAQ,EAAE,aAAa,EAAE;AAChE,IAAI,QAAQ,QAAQ,CAAC,MAAM;AAC3B,QAAQ,KAAK,SAAS;AACtB;AACA,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;AACvE,gBAAgB,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnE,YAAY;AACZ;AACA,YAAY,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC1D,QAAQ,KAAK,SAAS;AACtB;AACA,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;AACvE,gBAAgB,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnE,YAAY;AACZ,YAAY,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC1D,QAAQ,KAAK,OAAO;AACpB;AACA,YAAY,MAAM,QAAQ;AAC1B,QAAQ;AACR,YAAY,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC1D;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AACtC,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;AACzD,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,CAAC,GAAG,QAAQ;AACtB,IAAI,QAAQ,QAAQ,IAAI,CAAC;AACzB,QAAQ,MAAM,IAAI,CAAC;AACnB,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ;AACvC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7D;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,GAAG,EAAE;AACrC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE;AAC5C,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE;AAClD;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,KAAK;AACb,QAAQ,OAAO;AACf,QAAQ,SAAS;AACjB,QAAQ,QAAQ;AAChB,QAAQ,OAAO;AACf,QAAQ,YAAY;AACpB,QAAQ,SAAS;AACjB,QAAQ,SAAS;AACjB,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;AACvF,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC7D,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,OAAO,MAAM,KAAK,KAAK;AAC3B;AACA;AACA;AACA;AACA,SAAS,mCAAmC,CAAC,MAAM,EAAE;AACrD;AACA;AACA;AACA,IAAI,OAAO,MAAM,KAAK,CAAC,KAAK,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AAC1D;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B,IAAI,IAAI,MAAM,KAAK,CAAC;AACpB,QAAQ,OAAO,kBAAkB;AACjC,IAAI,IAAI,MAAM,IAAI,GAAG;AACrB,QAAQ,OAAO,cAAc;AAC7B,IAAI,OAAO,OAAO;AAClB;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE;AACxC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,QAAQ,OAAO,wEAAwE;AACvF,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;AAC7B,QAAQ,QAAQ,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,kDAAkD;AAC3G,IAAI;AACJ,IAAI,OAAO,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,8BAA8B;AAClF;;ACzOO,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAC3C;AACA,YAAY,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9D,QAAQ;AACR,aAAa;AACb;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAChD,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC;AAC9E,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;AAC1C,IAAI;AACJ,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAC3C,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,GAAG,EAAE;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7D,YAAY,SAAS,EAAE,GAAG,CAAC,SAAS;AACpC,YAAY,aAAa,EAAE,GAAG,CAAC,aAAa;AAC5C,YAAY,QAAQ,EAAE,GAAG,CAAC,QAAQ;AAClC,YAAY,OAAO,EAAE,GAAG,CAAC,OAAO;AAChC,YAAY,WAAW,EAAE,GAAG,CAAC,WAAW;AACxC,YAAY,SAAS,EAAE,GAAG,CAAC,SAAS;AACpC,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;AAChE,YAAY,MAAM,EAAE,KAAK,CAAC,MAAM;AAChC,YAAY,UAAU,EAAE,KAAK,CAAC,UAAU;AACxC,YAAY,SAAS,EAAE,KAAK,CAAC,SAAS;AACtC,YAAY,aAAa,EAAE,KAAK,CAAC,aAAa;AAC9C,YAAY,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACpC,YAAY,YAAY,EAAE,KAAK,CAAC,YAAY;AAC5C,YAAY,WAAW,EAAE,KAAK,CAAC,WAAW;AAC1C,YAAY,SAAS,EAAE,KAAK,CAAC,SAAS;AACtC,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,aAAa,EAAE;AACnC,QAAQ,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE;AAChD,YAAY,IAAI,EAAE,eAAe;AACjC,YAAY,aAAa;AACzB,YAAY,SAAS,EAAE,SAAS,CAAC,SAAS;AAC1C,YAAY,MAAM,EAAE,SAAS,CAAC,MAAM;AACpC,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACzC,YAAY,IAAI,EAAE,kBAAkB;AACpC,YAAY,aAAa;AACzB,YAAY,GAAG;AACf,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACrD;AACA;AACA;AACA,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AACzK,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACxH,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC7EN,MAAM,aAAa,CAAC;AAC3B,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B;AACA,YAAY,IAAI,CAAC,QAAQ;AACzB,gBAAgB,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;AAChD,oBAAoB,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC;AACtD,oBAAoB,IAAI,CAAC,sBAAsB,EAAE;AACjD,oBAAoB,gBAAgB;AACpC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B,IAAI;AACJ,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;AAClD,IAAI;AACJ,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAClC,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,QAAQ,CAAC;AACxE;AACA;AACA,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B;AACA;AACA,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAQ,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC;AAC3C,QAAQ,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC;AAC7C,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AACxK,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC/I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACvH,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC/CN,MAAM,kBAAkB,CAAC;AAChC,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxF,IAAI,eAAe,GAAG,gBAAgB;AACtC;AACA,IAAI,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9H,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACnC;AACA,YAAY,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAIA,EAAM,EAAE;AAC/E,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AACtC,YAAY,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;AAC5D,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,aAAa,EAAE;AACnC,IAAI;AACJ,IAAI,gBAAgB,CAAC,aAAa,EAAE;AACpC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;AAC7C,QAAQ,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;AACnE,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,QAAQ,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;AACvD,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,CAAC,wBAAwB,EAAE;AAC9C,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAC7K,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACpJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACxBb;AACA,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;AACpD,MAAM,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;AAC9D,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;AACvD;AACO,SAAS,SAAS,GAAG;AAC5B,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;AAClD;AACO,SAAS,kBAAkB,GAAG;AACrC,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC;AAC5D;AACO,SAAS,iBAAiB,CAAC,OAAO,EAAE;AAC3C,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC;AACzD;AACA;AACA,MAAMC,gBAAc,GAAG;AACvB,IAAI,yBAAyB,EAAE,IAAI;AACnC,IAAI,oBAAoB,EAAE,KAAK;AAC/B,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,aAAa,EAAE,OAAO;AAC1B,IAAI,cAAc,EAAE,WAAW;AAC/B,IAAI,mBAAmB,EAAE,gBAAgB;AACzC,IAAI,eAAe,EAAE,YAAY;AACjC,IAAI,eAAe,EAAE,WAAW;AAChC,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,oBAAoB,EAAE,SAAS;AACnC,IAAI,cAAc,EAAE,SAAS;AAC7B,CAAC;AACD;AACY,MAAC,mBAAmB,GAAG,IAAI,cAAc,CAAC,qBAAqB,EAAE;AAC7E,IAAI,OAAO,EAAE,MAAMA,gBAAc;AACjC,CAAC;AACW,MAAC,sBAAsB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AACrD,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpE,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/C,IAAI,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzD,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC3C;AACA,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,GAAGA,gBAAc;AACzB;AACA;AACA,QAAQ,oBAAoB,EAAE,CAAC,WAAW,CAAC,YAAY;AACvD,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1D,KAAK;AACL;AACA,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACnD,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAC7D,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAC1D;AACA,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC;AACxB,IAAI;AACJ;AACA,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChH,IAAI,IAAI,aAAa,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC;AACxB,IAAI;AACJ;AACA,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AAChH;AACA,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU;AAC1C,IAAI,MAAM,QAAQ,GAAG,WAAW,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/F;AACA,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC;AACjC,UAAU,kBAAkB,CAAC,wBAAwB;AACrD,UAAUD,EAAM,EAAE;AAClB,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE;AAChD,IAAI,MAAM,SAAS,GAAGA,EAAM,EAAE;AAC9B;AACA,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,SAAS;AAC/C,IAAI,IAAI,MAAM,CAAC,yBAAyB,EAAE;AAC1C,QAAQ,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,aAAa;AAC3D,IAAI;AACJ,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,QAAQ;AACjD,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC9D;AACA,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE;AAC9B,QAAQ,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,aAAa;AACxD,IAAI;AACJ;AACA,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC9B,QAAQ,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,QAAQ;AACnD,IAAI;AACJ;AACA,IAAI,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE;AAC9C,QAAQ,MAAM,SAAS,GAAG,aAAa,EAAE,QAAQ,EAAE;AACnD,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC5D,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACnE,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,EAAE,GAAG,KAAK;AACpE,IAAI,CAAC,CAAC;AACN;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC7D,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK;AAC5B,IAAI,CAAC,CAAC;AACN;AACA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AACnE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;AAC1C,QAAQ,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB;AACpD,IAAI;AACJ;AACA,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC;AAClC,QAAQ,GAAG,EAAE,QAAQ;AACrB,QAAQ,UAAU,EAAE,OAAO;AAC3B,KAAK,CAAC;AACN;AACA,IAAI,IAAI,MAAM,CAAC,oBAAoB,EAAE;AACrC,QAAQ,cAAc,CAAC,cAAc,CAAC;AACtC,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM;AAC9B,YAAY,GAAG,EAAE,QAAQ;AACzB,YAAY,WAAW,EAAE,GAAG,CAAC,GAAG;AAChC,YAAY,SAAS;AACrB,YAAY,aAAa;AACzB,YAAY,QAAQ;AACpB,YAAY,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC/C,YAAY,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACzC,YAAY,WAAW;AACvB,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,oBAAoB,EAAE;AACjE,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAACE,YAAU,CAAC,KAAK,IAAI;AAC1D;AACA,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AACtC,gBAAgB,MAAM,YAAY,GAAG,aAAa,EAAE,eAAe,IAAI;AACvE,gBAAgB,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACpE,oBAAoB,OAAO,MAAM,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI;AACrF;AACA,wBAAwB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;AACnD,4BAA4B,GAAG,EAAE,QAAQ;AACzC,4BAA4B,UAAU,EAAE,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AAClG,yBAAyB,CAAC;AAC1B,wBAAwB,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7C,oBAAoB,CAAC,CAAC,EAAEA,YAAU,CAAC,YAAY,IAAI;AACnD;AACA,wBAAwB,MAAM,CAAC,cAAc,IAAI;AACjD,wBAAwB,OAAO,UAAU,CAAC,MAAM,YAAY,CAAC;AAC7D,oBAAoB,CAAC,CAAC,CAAC;AACvB,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,MAAM,CAAC,kBAAkB,EAAE;AAC3C,gBAAgB,cAAc,CAAC,YAAY,CAAC;AAC5C,oBAAoB,MAAM,EAAE,GAAG,CAAC,MAAM;AACtC,oBAAoB,GAAG,EAAE,QAAQ;AACjC,oBAAoB,WAAW,EAAE,GAAG,CAAC,GAAG;AACxC,oBAAoB,SAAS;AAC7B,oBAAoB,aAAa;AACjC,oBAAoB,QAAQ;AAC5B,oBAAoB,MAAM,EAAE,KAAK,CAAC,MAAM;AACxC,oBAAoB,UAAU,EAAE,KAAK,CAAC,UAAU;AAChD,oBAAoB,OAAO,EAAE,KAAK,CAAC,OAAO;AAC1C,oBAAoB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACvD,oBAAoB,YAAY,EAAE,KAAK,CAAC,KAAK;AAC7C,oBAAoB,WAAW,EAAE,WAAW,CAAC,QAAQ;AACrD,oBAAoB,WAAW;AAC/B,oBAAoB,OAAO,EAAE,EAAE;AAC/B,iBAAiB,CAAC;AAClB,YAAY;AACZ;AACA,YAAY,QAAQ,KAAK,CAAC,MAAM;AAChC,gBAAgB,KAAK,GAAG;AACxB,oBAAoB,aAAa,CAAC,eAAe,EAAE;AACnD,oBAAoB;AACpB,gBAAgB,KAAK,CAAC;AACtB,oBAAoB,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC;AACjE,oBAAoB;AACpB,gBAAgB,KAAK,GAAG;AACxB,oBAAoB,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC;AAC7E,oBAAoB;AACpB;AACA,YAAY,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;AAC1C,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAACA,YAAU,CAAC,CAAC,KAAK,KAAK;AAC5D;AACA,YAAY,IAAI,MAAM,CAAC,kBAAkB,EAAE;AAC3C,gBAAgB,cAAc,CAAC,YAAY,CAAC;AAC5C,oBAAoB,MAAM,EAAE,GAAG,CAAC,MAAM;AACtC,oBAAoB,GAAG,EAAE,QAAQ;AACjC,oBAAoB,WAAW,EAAE,GAAG,CAAC,GAAG;AACxC,oBAAoB,SAAS;AAC7B,oBAAoB,aAAa;AACjC,oBAAoB,QAAQ;AAC5B,oBAAoB,MAAM,EAAE,KAAK,CAAC,MAAM;AACxC,oBAAoB,UAAU,EAAE,KAAK,CAAC,UAAU;AAChD,oBAAoB,OAAO,EAAE,KAAK,CAAC,OAAO;AAC1C,oBAAoB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACvD,oBAAoB,YAAY,EAAE,KAAK,CAAC,KAAK;AAC7C,oBAAoB,WAAW,EAAE,WAAW,CAAC,QAAQ;AACrD,oBAAoB,WAAW;AAC/B,oBAAoB,OAAO,EAAE,EAAE;AAC/B,iBAAiB,CAAC;AAClB,YAAY;AACZ;AACA,YAAY,QAAQ,KAAK,CAAC,MAAM;AAChC,gBAAgB,KAAK,GAAG,EAAE;AAC1B,oBAAoB,cAAc,CAAC,KAAK,CAAC,gDAAgD,CAAC;AAC1F;AACA,oBAAoB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnE,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,KAAK,GAAG;AACxB,oBAAoB,aAAa,CAAC,eAAe,EAAE;AACnD,oBAAoB;AACpB,gBAAgB,KAAK,CAAC;AACtB,oBAAoB,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC;AACjE,oBAAoB;AACpB,gBAAgB,KAAK,GAAG;AACxB,oBAAoB,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC;AAC7E,oBAAoB;AACpB;AACA,YAAY,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;AAC1C,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ;AACA;AACO,SAAS,uBAAuB,CAAC,SAAS,GAAG,EAAE,EAAE;AACxD,IAAI,OAAO;AACX,QAAQ,GAAGD,gBAAc;AACzB,QAAQ,GAAG,SAAS;AACpB,KAAK;AACL;AACA;AACO,SAAS,kBAAkB,CAAC,MAAM,GAAG,EAAE,EAAE;AAChD,IAAI,OAAO;AACX,QAAQ;AACR,YAAY,OAAO,EAAE,mBAAmB;AACxC,YAAY,QAAQ,EAAE,uBAAuB,CAAC,MAAM,CAAC;AACrD,SAAS;AACT,KAAK;AACL;;AC7PA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC;AACrD,MAAM,QAAQ,GAAG,EAAE;AACnB;AACA;AACA;AACA;AACO,SAAS,cAAc,GAAG;AACjC,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC;AACrD;AACA;AACA;AACA;AACO,MAAM,qBAAqB,CAAC;AACnC,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,QAAQ,CAAC,MAAM;AAC9B,IAAI;AACJ,IAAI,GAAG,CAAC,OAAO,EAAE;AACjB,QAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,IAAI;AACJ,IAAI,MAAM,CAAC,OAAO,EAAE;AACpB,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/C,QAAQ,IAAI,KAAK,IAAI,CAAC,EAAE;AACxB,YAAY,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAChL,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACvJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC;AAC/H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;AACb;AACA;AACA;AACY,MAAC,kBAAkB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AACjD;AACA,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACxD,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC;AACxB,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B;AACA,IAAI,IAAI,cAAc,CAAC,KAAK,KAAK,CAAC,EAAE;AACpC,QAAQ,cAAc,CAAC,WAAW,EAAE;AACpC,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;AACzC;AACA,QAAQ,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,cAAc,CAAC,KAAK,KAAK,CAAC,EAAE;AACxC,YAAY,cAAc,CAAC,WAAW,EAAE;AACxC,QAAQ;AACR,IAAI,CAAC,CAAC,CAAC;AACP;;AChEO,MAAM,kBAAkB,CAAC;AAChC,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7B,IAAI,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE;AACxB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM;AACrD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;AAC7E,QAAQ,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;AACxF,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACtE,IAAI;AACJ,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;AAC7D,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AACxD,IAAI;AACJ,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AACvD,IAAI;AACJ,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AACzD,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpD,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAC7K,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;AAChI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;AC5Bb;AACY,MAAC,iBAAiB,GAAG,IAAI,cAAc,CAAC,mBAAmB;AAChE,MAAM,iBAAiB,SAAS,kBAAkB,CAAC;AAC1D,IAAI,MAAM;AACV,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChD,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;AACtC,IAAI;AACJ,IAAI,MAAM,CAAC,UAAU,EAAE;AACvB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AACnD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;AACnC,IAAI;AACJ,IAAI,MAAM,CAAC,MAAM,EAAE;AACnB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;AACpC,IAAI;AACJ,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;AAC9C,IAAI;AACJ,IAAI,MAAM,CAAC,EAAE,EAAE;AACf,QAAQ,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC1C,IAAI;AACJ,IAAI,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,MAAM,GAAG,EAAE;AACzB,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,GAAG;AACtE,YAAY,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,IAAI;AACrE,YAAY,IAAI,UAAU,CAAC,MAAM;AACjC,gBAAgB,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;AACjD,YAAY,IAAI,UAAU,CAAC,aAAa;AACxC,gBAAgB,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa;AAC/D,QAAQ;AACR,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1C,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAC5K,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;AAC/H;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;AAChC,MAAM,2BAA2B,SAAS,iBAAiB,CAAC;AACnE,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE;AAC9B,QAAQ,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;AAC1C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC;AAClE,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AACzC,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AACxL,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;AACzI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACzDN,MAAM,iBAAiB,CAAC;AAC/B,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7B,IAAI,MAAM,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,QAAQ,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK;AACxC,YAAY,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM;AACpD,YAAY,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;AACvE,YAAY,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ;AAClF,YAAY,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AAC1E,QAAQ,CAAC;AACT,QAAQ,MAAM,WAAW,GAAG,CAAC,UAAU,KAAK;AAC5C,YAAY,MAAM,MAAM,GAAG,EAAE;AAC7B,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,GAAG;AACrE,gBAAgB,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,IAAI;AACzE,gBAAgB,IAAI,UAAU,CAAC,MAAM;AACrC,oBAAoB,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;AACrD,gBAAgB,IAAI,UAAU,CAAC,aAAa;AAC5C,oBAAoB,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa;AACnE,YAAY;AACZ,YAAY,OAAO,MAAM;AACzB,QAAQ,CAAC;AACT;AACA,QAAQ,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK;AACnC,YAAY,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAC5F,gBAAgB,OAAO,EAAE,CAAC,QAAQ,EAAE;AACpC,YAAY;AACZ;AACA,YAAY,OAAO,MAAM,CAAC,EAAE,CAAC;AAC7B,QAAQ,CAAC;AACT,QAAQ,OAAO;AACf,YAAY,OAAO,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AACpE,YAAY,MAAM,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;AAC9D,gBAAgB,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC;AAC/C,aAAa,CAAC;AACd,YAAY,MAAM,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;AAClE,YAAY,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;AACnF,YAAY,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AACtE,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAC5K,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACnJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;AACzC,SAAS,CAAC,EAAE,CAAC;;AC/Cb,SAAS,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE;AACrC,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,OAAO,QAAQ;AACvB,IAAI,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3E;AACO,MAAM,kBAAkB,CAAC;AAChC,IAAI,IAAI;AACR,IAAI,OAAO;AACX,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,IAAI;AACJ,IAAI,YAAY,CAAC,OAAO,EAAE;AAC1B,QAAQ,OAAO;AACf,YAAY,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;AAC3C,YAAY,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;AACzC,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,MAAM,EAAE;AAC1B,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;AAC1D,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;AAC7D,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AACrE,YAAY,IAAI,EAAE,MAAM,CAAC,IAAI;AAC7B,YAAY,GAAG,WAAW;AAC1B,SAAS,CAAC;AACV,QAAQ,OAAO,MAAM,aAAa,CAAC,UAAU,CAAC;AAC9C,IAAI;AACJ;AACA,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC5D,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACnE,IAAI;AACJ;AACA,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAClE,IAAI;AACJ;AACA,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC/D,IAAI;AACJ;;ACzCA;AACA,MAAM,cAAc,GAAG;AACvB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,aAAa,EAAE,CAAC;AACpB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,yBAAyB,EAAE,IAAI;AACnC,IAAI,oBAAoB,EAAE,KAAK;AAC/B,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,wBAAwB,EAAE,IAAI;AAClC,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,eAAe,EAAE,eAAe;AACpC,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,cAAc,EAAE,WAAW;AAC/B,IAAI,QAAQ,EAAE,MAAM;AACpB,IAAI,oBAAoB,EAAE,IAAI;AAC9B,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,cAAc,EAAE,EAAE;AACtB,CAAC;AACD;AACY,MAAC,WAAW,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE;AAC7D,IAAI,OAAO,EAAE,MAAM,cAAc;AACjC,CAAC;AACM,MAAM,iBAAiB,CAAC;AAC/B,IAAI,MAAM;AACV,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtE,QAAQ,OAAO;AACf,YAAY,GAAG,cAAc;AAC7B;AACA,YAAY,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU;AAChF,YAAY,oBAAoB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY;AAChE;AACA,YAAY,GAAG,cAAc;AAC7B,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AACjC,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,CAAC,OAAO,EAAE;AAC1B,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE;AACpD,IAAI;AACJ;AACA;AACA;AACA,IAAI,GAAG,CAAC,GAAG,EAAE;AACb,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC/B,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC9B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1C,QAAQ,OAAO,OAAO,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzD,IAAI;AACJ;AACA;AACA;AACA,IAAI,SAAS,CAAC,UAAU,EAAE;AAC1B,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;AAC9C,QAAQ,IAAI,CAAC,UAAU;AACvB,YAAY,OAAO,OAAO;AAC1B,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AAC9D,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,GAAG,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnI,IAAI;AACJ;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,MAAM,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;AACrH,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,OAAO,GAAG,EAAE;AAC1B,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC5E,YAAY,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,EAAE,GAAG,KAAK;AACxE,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAC5K,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACnJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;AACvC;AACO,SAAS,iBAAiB,CAAC,MAAM,GAAG,EAAE,EAAE;AAC/C,IAAI,OAAO;AACX,QAAQ;AACR,YAAY,OAAO,EAAE,WAAW;AAChC,YAAY,QAAQ,EAAE,MAAM;AAC5B,SAAS;AACT,KAAK;AACL;AACA;AACO,SAAS,gBAAgB,CAAC,SAAS,GAAG,EAAE,EAAE;AACjD,IAAI,OAAO;AACX,QAAQ,GAAG,cAAc;AACzB,QAAQ,GAAG,SAAS;AACpB,KAAK;AACL;;ACtIO,MAAM,WAAW,CAAC;AACzB;;ACIA;AACO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvB,QAAQ,OAAO,EAAE,CAAC;AAClB,IAAI;AACJ,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC7C,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAY,OAAO,UAAU,CAAC,OAAO;AACrC,gBAAgB,MAAM,EAAE,OAAO;AAC/B,gBAAgB,IAAI,EAAE,mBAAmB;AACzC,gBAAgB,OAAO,EAAE,mBAAmB;AAC5C,gBAAgB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AACjF,gBAAgB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACnD,aAAa,CAAC,CAAC;AACf,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI;AACtE;AACA,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD,YAAY,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC;AAC9E;AACA,YAAY,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;AAC1C,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ;;ACzBO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI;AACtE,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD,YAAY,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC;AAC5E,YAAY,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;AAC1C,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ;;ACbA;AACA;AACA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acontplus/ng-infrastructure",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "Acontplus Angular Infrastructure library for managing HTTP interceptors and repositories.",
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@acontplus/core": "^1.0.
|
|
7
|
-
"@acontplus/ng-config": "^1.0.
|
|
8
|
-
"@acontplus/ng-notifications": "^1.0.
|
|
9
|
-
"@acontplus/ng-components": "^1.0
|
|
6
|
+
"@acontplus/core": "^1.0.16",
|
|
7
|
+
"@acontplus/ng-config": "^1.0.5",
|
|
8
|
+
"@acontplus/ng-notifications": "^1.0.10",
|
|
9
|
+
"@acontplus/ng-components": "^1.1.0",
|
|
10
10
|
"@angular/common": "^20.3.2",
|
|
11
11
|
"@angular/core": "^20.3.2"
|
|
12
12
|
},
|