@corp-products/app-core 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/core/core-config.mjs +1 -1
- package/esm2022/lib/core/handlers/http-context-handler.mjs +6 -2
- package/esm2022/lib/core/interceptors/base-http.interceptor.mjs +4 -4
- package/esm2022/lib/core/services/base-http-service/base-http-utils.mjs +6 -6
- package/fesm2022/corp-products-app-core.mjs +9 -5
- package/fesm2022/corp-products-app-core.mjs.map +1 -1
- package/lib/core/core-config.d.ts +1 -1
- package/lib/core/handlers/http-context-handler.d.ts +3 -1
- package/lib/core/services/base-http-service/base-http-utils.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InjectionToken } from "@angular/core";
|
|
2
2
|
export const CORE_CONFIG = new InjectionToken("CoreConfig");
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jb3JlL2NvcmUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFhLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb3JlQ29uZmlnIHtcclxuICBhcGlQcmVmaXg6IHN0cmluZztcclxuICBwcm9kdWN0aW9uOiBib29sZWFuO1xyXG4gIGdhdGV3YXlVcmw6IHN0cmluZztcclxuICBsb2dpblVybDogc3RyaW5nO1xyXG4gIGxvZ291dEVuZHBvaW50OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBDT1JFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb3JlQ29uZmlnPihcIkNvcmVDb25maWdcIik7XHJcbiJdfQ==
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import { HttpContext, HttpContextToken } from
|
|
1
|
+
import { HttpContext, HttpContextToken } from "@angular/common/http";
|
|
2
2
|
export const IS_SYSTEM_LOADER = new HttpContextToken(() => true); // set default loader
|
|
3
|
+
export const USE_API_PREFIX = new HttpContextToken(() => true); // set default loader
|
|
3
4
|
export class HttpContextHandler {
|
|
4
5
|
static setLoaderType(isSystemLoader) {
|
|
5
6
|
return new HttpContext().set(IS_SYSTEM_LOADER, isSystemLoader);
|
|
6
7
|
}
|
|
8
|
+
static useApiPrefix(hasBaseSegment) {
|
|
9
|
+
return new HttpContext().set(USE_API_PREFIX, hasBaseSegment);
|
|
10
|
+
}
|
|
7
11
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jb250ZXh0LWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jb3JlL2hhbmRsZXJzL2h0dHAtY29udGV4dC1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMscUJBQXFCO0FBQ2hHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGdCQUFnQixDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMscUJBQXFCO0FBRTlGLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxjQUF1QjtRQUMxQyxPQUFPLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQXVCO1FBQ3pDLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDb250ZXh0LCBIdHRwQ29udGV4dFRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG5leHBvcnQgY29uc3QgSVNfU1lTVEVNX0xPQURFUiA9IG5ldyBIdHRwQ29udGV4dFRva2VuPGJvb2xlYW4+KCgpID0+IHRydWUpOyAvLyBzZXQgZGVmYXVsdCBsb2FkZXJcclxuZXhwb3J0IGNvbnN0IFVTRV9BUElfUFJFRklYID0gbmV3IEh0dHBDb250ZXh0VG9rZW48Ym9vbGVhbj4oKCkgPT4gdHJ1ZSk7IC8vIHNldCBkZWZhdWx0IGxvYWRlclxyXG5cclxuZXhwb3J0IGNsYXNzIEh0dHBDb250ZXh0SGFuZGxlciB7XHJcbiAgc3RhdGljIHNldExvYWRlclR5cGUoaXNTeXN0ZW1Mb2FkZXI6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBuZXcgSHR0cENvbnRleHQoKS5zZXQoSVNfU1lTVEVNX0xPQURFUiwgaXNTeXN0ZW1Mb2FkZXIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHVzZUFwaVByZWZpeChoYXNCYXNlU2VnbWVudDogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwQ29udGV4dCgpLnNldChVU0VfQVBJX1BSRUZJWCwgaGFzQmFzZVNlZ21lbnQpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Inject, inject, Injectable } from "@angular/core";
|
|
2
2
|
import { finalize, tap } from "rxjs";
|
|
3
|
-
import { IS_SYSTEM_LOADER } from "../handlers/http-context-handler";
|
|
3
|
+
import { IS_SYSTEM_LOADER, USE_API_PREFIX } from "../handlers/http-context-handler";
|
|
4
4
|
import { AuthService } from "../services/auth.service";
|
|
5
5
|
import { LoaderService } from "../services/loader.service";
|
|
6
6
|
import { CORE_CONFIG } from "../core-config";
|
|
@@ -12,8 +12,8 @@ export class HttpBaseInterceptor {
|
|
|
12
12
|
this.loaderService = inject(LoaderService);
|
|
13
13
|
}
|
|
14
14
|
intercept(request, next) {
|
|
15
|
-
|
|
16
|
-
const URL = `${this.appConfig.gatewayUrl}${request.url}`;
|
|
15
|
+
const useApiPrefix = request.context.get(USE_API_PREFIX);
|
|
16
|
+
const URL = `${this.appConfig.gatewayUrl}${useApiPrefix ? this.appConfig.apiPrefix : ""}${request.url}`;
|
|
17
17
|
const token = this.authService.getUserToken();
|
|
18
18
|
// Handler header
|
|
19
19
|
request = request.clone({
|
|
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
43
43
|
type: Inject,
|
|
44
44
|
args: [CORE_CONFIG]
|
|
45
45
|
}] }] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY29yZS9pbnRlcmNlcHRvcnMvYmFzZS1odHRwLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7O0FBR3pELE1BQU0sT0FBTyxtQkFBbUI7SUFJOUIsWUFBMkMsU0FBcUI7UUFBckIsY0FBUyxHQUFULFNBQVMsQ0FBWTtRQUhoRSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU2QixDQUFDO0lBRXBFLFNBQVMsQ0FBQyxPQUE2QixFQUFFLElBQWlCO1FBQ3hELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4RyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTlDLGlCQUFpQjtRQUNqQixPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0QixHQUFHLEVBQUUsR0FBRztZQUNSLFVBQVUsRUFBRTtnQkFDVixhQUFhLEVBQUUsVUFBVSxLQUFLLEVBQUU7Z0JBQ2hDLFFBQVEsRUFBRSxJQUFJO2FBQ2Y7U0FDRixDQUFDLENBQUM7UUFFSCxnQkFBZ0I7UUFDaEIsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUk7UUFDOUIsZ0JBQWdCO1FBQ2hCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osNEVBQTRFO1lBQzVFLG9CQUFvQjtZQUNwQixLQUFLO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDMUYsQ0FBQztJQUNKLENBQUM7OEdBakNVLG1CQUFtQixrQkFJVixXQUFXO2tIQUpwQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQUtJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0LCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSVNfU1lTVEVNX0xPQURFUiwgVVNFX0FQSV9QUkVGSVggfSBmcm9tIFwiLi4vaGFuZGxlcnMvaHR0cC1jb250ZXh0LWhhbmRsZXJcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExvYWRlclNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvbG9hZGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ09SRV9DT05GSUcsIENvcmVDb25maWcgfSBmcm9tIFwiLi4vY29yZS1jb25maWdcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEh0dHBCYXNlSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG4gIGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcclxuICBsb2FkZXJTZXJ2aWNlID0gaW5qZWN0KExvYWRlclNlcnZpY2UpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENPUkVfQ09ORklHKSBwcm90ZWN0ZWQgYXBwQ29uZmlnOiBDb3JlQ29uZmlnKSB7fVxyXG5cclxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8dW5rbm93bj4+IHtcclxuICAgIGNvbnN0IHVzZUFwaVByZWZpeCA9IHJlcXVlc3QuY29udGV4dC5nZXQoVVNFX0FQSV9QUkVGSVgpO1xyXG4gICAgY29uc3QgVVJMID0gYCR7dGhpcy5hcHBDb25maWcuZ2F0ZXdheVVybH0ke3VzZUFwaVByZWZpeCA/IHRoaXMuYXBwQ29uZmlnLmFwaVByZWZpeCA6IFwiXCJ9JHtyZXF1ZXN0LnVybH1gO1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJUb2tlbigpO1xyXG5cclxuICAgIC8vIEhhbmRsZXIgaGVhZGVyXHJcbiAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XHJcbiAgICAgIHVybDogVVJMLFxyXG4gICAgICBzZXRIZWFkZXJzOiB7XHJcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXHJcbiAgICAgICAgTGFuZ3VhZ2U6IFwiZW5cIlxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBIYW5kbGUgbG9hZGVyXHJcbiAgICBjb25zdCBJU19TWVNURU1fTE9BREVSX0NIRUNLID0gcmVxdWVzdC5jb250ZXh0LmdldChJU19TWVNURU1fTE9BREVSKTtcclxuICAgIHRoaXMubG9hZGVyU2VydmljZS5zZXRMb2FkaW5nKHRydWUsIElTX1NZU1RFTV9MT0FERVJfQ0hFQ0ssIHJlcXVlc3QudXJsKTtcclxuXHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcclxuICAgICAgLy8gSGFuZGxlciBUb2tlblxyXG4gICAgICB0YXAoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgLy8gIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSAmJiByZXF1ZXN0LnVybC5pbmNsdWRlcyhVc2VyX1Rva2VuKSkge1xyXG4gICAgICAgIC8vIFNldCB1c2VyIHRva2VuIC4uXHJcbiAgICAgICAgLy8gIH1cclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGVyU2VydmljZS5zZXRMb2FkaW5nKGZhbHNlLCBJU19TWVNURU1fTE9BREVSX0NIRUNLLCByZXF1ZXN0LnVybCkpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { map } from
|
|
2
|
-
import { HttpRequestOptionsKeys } from
|
|
1
|
+
import { map } from "rxjs/operators";
|
|
2
|
+
import { HttpRequestOptionsKeys } from "./base-http-types";
|
|
3
3
|
export const resolveUrl = (baseUrl, options, ...args) => {
|
|
4
4
|
const { urlRewrite, urlPostfix } = options || {};
|
|
5
5
|
if (urlRewrite) {
|
|
6
6
|
return urlRewrite;
|
|
7
7
|
}
|
|
8
8
|
let result = baseUrl;
|
|
9
|
-
if (args && args.length > 0 && args[0] !==
|
|
10
|
-
result += `/${args.join(
|
|
9
|
+
if (args && args.length > 0 && args[0] !== "") {
|
|
10
|
+
result += `/${args.join("/")}`;
|
|
11
11
|
}
|
|
12
12
|
if (urlPostfix) {
|
|
13
13
|
result += `/${urlPostfix}`;
|
|
@@ -15,7 +15,7 @@ export const resolveUrl = (baseUrl, options, ...args) => {
|
|
|
15
15
|
return result;
|
|
16
16
|
};
|
|
17
17
|
export const extractRequestOptions = (options) => {
|
|
18
|
-
if (!options || typeof options !==
|
|
18
|
+
if (!options || typeof options !== "object") {
|
|
19
19
|
return {};
|
|
20
20
|
}
|
|
21
21
|
/* eslint-disable */
|
|
@@ -29,4 +29,4 @@ export const extractRequestOptions = (options) => {
|
|
|
29
29
|
};
|
|
30
30
|
export const mapResponse = (options) => map((res) => (options?.mapFn ? options.mapFn(res) : res));
|
|
31
31
|
export const epmDefaultMapper = (res) => res.payload;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9iYXNlLWh0dHAtc2VydmljZS9iYXNlLWh0dHAtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBZSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3hFLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQWUsRUFBRSxPQUFxQixFQUFFLEdBQUcsSUFBYyxFQUFVLEVBQUU7SUFDOUYsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0lBRWpELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBRXJCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUM5QyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxPQUFhLEVBQUUsRUFBRTtJQUNyRCxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELG9CQUFvQjtJQUNwQixPQUFPLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQW1CLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDaEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFJLE9BQXFCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRXRILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUksR0FBd0IsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBIdHRwT3B0aW9ucywgSHR0cFJlcXVlc3RPcHRpb25zS2V5cyB9IGZyb20gXCIuL2Jhc2UtaHR0cC10eXBlc1wiO1xyXG5pbXBvcnQgeyBCYXNlSHR0cFJlc3BvbnNlIH0gZnJvbSBcIi4vYmFzZS1odHRwLXJlc3BvbnNlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgcmVzb2x2ZVVybCA9IChiYXNlVXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucywgLi4uYXJnczogc3RyaW5nW10pOiBzdHJpbmcgPT4ge1xyXG4gIGNvbnN0IHsgdXJsUmV3cml0ZSwgdXJsUG9zdGZpeCB9ID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgaWYgKHVybFJld3JpdGUpIHtcclxuICAgIHJldHVybiB1cmxSZXdyaXRlO1xyXG4gIH1cclxuXHJcbiAgbGV0IHJlc3VsdCA9IGJhc2VVcmw7XHJcblxyXG4gIGlmIChhcmdzICYmIGFyZ3MubGVuZ3RoID4gMCAmJiBhcmdzWzBdICE9PSBcIlwiKSB7XHJcbiAgICByZXN1bHQgKz0gYC8ke2FyZ3Muam9pbihcIi9cIil9YDtcclxuICB9XHJcblxyXG4gIGlmICh1cmxQb3N0Zml4KSB7XHJcbiAgICByZXN1bHQgKz0gYC8ke3VybFBvc3RmaXh9YDtcclxuICB9XHJcblxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZXh0cmFjdFJlcXVlc3RPcHRpb25zID0gKG9wdGlvbnM/OiBhbnkpID0+IHtcclxuICBpZiAoIW9wdGlvbnMgfHwgdHlwZW9mIG9wdGlvbnMgIT09IFwib2JqZWN0XCIpIHtcclxuICAgIHJldHVybiB7fTtcclxuICB9XHJcbiAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICByZXR1cm4gSHR0cFJlcXVlc3RPcHRpb25zS2V5cy5yZWR1Y2UoKHJlcXVlc3RPcHRpb25zOiBhbnksIGtleSkgPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSBvcHRpb25zW2tleV07XHJcblxyXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmVxdWVzdE9wdGlvbnNba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXF1ZXN0T3B0aW9ucztcclxuICB9LCB7fSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbWFwUmVzcG9uc2UgPSA8VD4ob3B0aW9ucz86IEh0dHBPcHRpb25zKSA9PiBtYXAoKHJlczogVCkgPT4gKG9wdGlvbnM/Lm1hcEZuID8gb3B0aW9ucy5tYXBGbihyZXMpIDogcmVzKSk7XHJcblxyXG5leHBvcnQgY29uc3QgZXBtRGVmYXVsdE1hcHBlciA9IDxUPihyZXM6IEJhc2VIdHRwUmVzcG9uc2U8VD4pID0+IHJlcy5wYXlsb2FkO1xyXG4iXX0=
|
|
@@ -116,8 +116,8 @@ const resolveUrl = (baseUrl, options, ...args) => {
|
|
|
116
116
|
return urlRewrite;
|
|
117
117
|
}
|
|
118
118
|
let result = baseUrl;
|
|
119
|
-
if (args && args.length > 0 && args[0] !==
|
|
120
|
-
result += `/${args.join(
|
|
119
|
+
if (args && args.length > 0 && args[0] !== "") {
|
|
120
|
+
result += `/${args.join("/")}`;
|
|
121
121
|
}
|
|
122
122
|
if (urlPostfix) {
|
|
123
123
|
result += `/${urlPostfix}`;
|
|
@@ -125,7 +125,7 @@ const resolveUrl = (baseUrl, options, ...args) => {
|
|
|
125
125
|
return result;
|
|
126
126
|
};
|
|
127
127
|
const extractRequestOptions = (options) => {
|
|
128
|
-
if (!options || typeof options !==
|
|
128
|
+
if (!options || typeof options !== "object") {
|
|
129
129
|
return {};
|
|
130
130
|
}
|
|
131
131
|
/* eslint-disable */
|
|
@@ -306,10 +306,14 @@ const APP_HTTP_CONFIG = {
|
|
|
306
306
|
};
|
|
307
307
|
|
|
308
308
|
const IS_SYSTEM_LOADER = new HttpContextToken(() => true); // set default loader
|
|
309
|
+
const USE_API_PREFIX = new HttpContextToken(() => true); // set default loader
|
|
309
310
|
class HttpContextHandler {
|
|
310
311
|
static setLoaderType(isSystemLoader) {
|
|
311
312
|
return new HttpContext().set(IS_SYSTEM_LOADER, isSystemLoader);
|
|
312
313
|
}
|
|
314
|
+
static useApiPrefix(hasBaseSegment) {
|
|
315
|
+
return new HttpContext().set(USE_API_PREFIX, hasBaseSegment);
|
|
316
|
+
}
|
|
313
317
|
}
|
|
314
318
|
|
|
315
319
|
class LoaderService {
|
|
@@ -349,8 +353,8 @@ class HttpBaseInterceptor {
|
|
|
349
353
|
this.loaderService = inject(LoaderService);
|
|
350
354
|
}
|
|
351
355
|
intercept(request, next) {
|
|
352
|
-
|
|
353
|
-
const URL = `${this.appConfig.gatewayUrl}${request.url}`;
|
|
356
|
+
const useApiPrefix = request.context.get(USE_API_PREFIX);
|
|
357
|
+
const URL = `${this.appConfig.gatewayUrl}${useApiPrefix ? this.appConfig.apiPrefix : ""}${request.url}`;
|
|
354
358
|
const token = this.authService.getUserToken();
|
|
355
359
|
// Handler header
|
|
356
360
|
request = request.clone({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corp-products-app-core.mjs","sources":["../../../../libs/core/src/lib/core/services/base-pagination-service/pagination.ts","../../../../libs/core/src/lib/core/services/base-pagination-service/base-pagination.service.ts","../../../../libs/core/src/lib/core/handlers/storage-handler.ts","../../../../libs/core/src/lib/core/handlers/stortage.ts","../../../../libs/core/src/lib/core/services/base-http-service/base-http-types.ts","../../../../libs/core/src/lib/core/services/base-http-service/base-http-utils.ts","../../../../libs/core/src/lib/core/services/base-http-service/base-http.service.ts","../../../../libs/core/src/lib/core/core-config.ts","../../../../libs/core/src/lib/core/services/auth.service.ts","../../../../libs/core/src/lib/core/services/jwt-decoder.service.ts","../../../../libs/core/src/lib/core/interceptors/app-http-config.ts","../../../../libs/core/src/lib/core/handlers/http-context-handler.ts","../../../../libs/core/src/lib/core/services/loader.service.ts","../../../../libs/core/src/lib/core/interceptors/base-http.interceptor.ts","../../../../libs/core/src/lib/core/interceptors/global-http-error.interceptor.ts","../../../../libs/core/src/lib/core/services/lov.service.ts","../../../../libs/core/src/lib/core/services/toaster.service.ts","../../../../libs/core/src/lib/core/services/error-handler.service.ts","../../../../libs/core/src/lib/core/services/permissions.service.ts","../../../../libs/core/src/lib/core/components/global-loader/global-loader.component.ts","../../../../libs/core/src/lib/core/components/global-loader/global-loader.component.html","../../../../libs/core/src/lib/core/guards/auth.guard.ts","../../../../libs/core/src/lib/core/guards/permissions.guard.ts","../../../../libs/core/src/lib/core/enums/user-permissions.enum.ts","../../../../libs/core/src/lib/core/directives/permissions.directive.ts","../../../../libs/core/src/corp-products-app-core.ts"],"sourcesContent":["export const PAGESIZE = 10;\r\nexport const PAGE_SIZE_OPTION = [5, 10, 15, 20];\r\nexport enum SortDirection {\r\n ASC = 'ASC',\r\n DESC = 'DESC'\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { ListOptions } from \"./list-options.interface\";\r\nimport { PAGE_SIZE_OPTION, PAGESIZE, SortDirection } from \"./pagination\";\r\nimport { PaginatorState } from \"primeng/paginator\";\r\nexport abstract class BasePaginationService<T = any> {\r\n\r\n totalRecords = 0;\r\n totalPages = 0;\r\n rowsChange: number = PAGESIZE;\r\n\r\n pageSizes = PAGE_SIZE_OPTION\r\n defaultSortValue = \"createdAt\";\r\n defaultSortDirection = SortDirection.DESC;\r\n first: number | undefined = 0;\r\n\r\n listOptions: ListOptions = {\r\n searchValue: \"\",\r\n paginator: this.rowsChange,\r\n page: 0,\r\n direction: this.defaultSortDirection,\r\n sortBy: this.defaultSortValue\r\n };\r\n\r\n abstract getList(listOptions: ListOptions): void | Observable<T>\r\n\r\n createListFilter(filters: {[key: string] : unknown}): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n ...filters\r\n }\r\n }\r\n\r\n resetList(): void {\r\n this.listOptions = {\r\n searchValue: \"\",\r\n paginator: this.rowsChange,\r\n page: 0\r\n };\r\n }\r\n\r\n resetPaginator(): void {\r\n this.listOptions = {\r\n ...this.listOptions ,\r\n paginator: this.rowsChange,\r\n page: 0\r\n };\r\n }\r\n\r\n onPageChange(event: PaginatorState): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n page: event.page,\r\n paginator: event.rows,\r\n };\r\n this.first = event.first ?? 0;\r\n this.getList(this.listOptions);\r\n }\r\n\r\n}\r\n","// Important for global context\r\nimport { LocalStorageKeys, SessionStorageKeys, StorageEnum } from \"./stortage\";\r\n\r\nconst setLocalStorage = (key: string, value: string) => localStorage.setItem(key, value);\r\nconst getLocalStorage = (key: string) => localStorage.getItem(key);\r\nconst clearLocalStorage = () => localStorage.clear();\r\nconst setSessionStorage = (key: string, value: string) => sessionStorage.setItem(key, value);\r\nconst getSessionStorage = (key: string) => sessionStorage.getItem(key);\r\nconst clearSessionStorage = () => sessionStorage.clear();\r\n\r\nexport class StorageHandler {\r\n public static local = {\r\n set: (key: LocalStorageKeys, value: unknown) => this.setItem(key, value, setLocalStorage),\r\n get: <T>(key: LocalStorageKeys) => this.getItem<T>(key, getLocalStorage),\r\n clear: () => this.clearStorage(clearLocalStorage)\r\n };\r\n public static session = {\r\n set: (key: SessionStorageKeys, value: unknown) => this.setItem(key, value, setSessionStorage),\r\n get: <T>(key: SessionStorageKeys) => this.getItem<T>(key, getSessionStorage),\r\n clear: () => this.clearStorage(clearSessionStorage)\r\n };\r\n\r\n private static setItem(key: StorageEnum, value: unknown, set: (key: string, value: string) => void): void {\r\n if (!key) return;\r\n set(key as string, typeof value === \"string\" ? value : JSON.stringify(value));\r\n }\r\n\r\n private static getItem<T>(key: StorageEnum, get: (key: string) => string | null, withParsing = false): T | null {\r\n const data: string | null = get(key as string) ?? null;\r\n if (data) return withParsing ? JSON.parse(data) : data;\r\n return null;\r\n }\r\n\r\n private static clearStorage(clear: () => void): void {\r\n clear();\r\n }\r\n}\r\n","export enum LocalStorageKeys {\r\n LANGUAGE = \"LANGUAGE\",\r\n TOKEN = \"TOKEN\"\r\n}\r\n\r\nexport enum SessionStorageKeys {}\r\nexport type StorageEnum = SessionStorageKeys | LocalStorageKeys;\r\n","import { HttpContext, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Params as RouterParams } from '@angular/router';\r\n\r\nexport interface HttpConfig {\r\n apiUrl?: string;\r\n microServiceUrl:string;\r\n globalMapFn?: (res: any) => any;\r\n methods?: ServiceConfig;\r\n}\r\n\r\nexport type Params =\r\n | HttpParams\r\n | { [param: string]: string | string[] | unknown };\r\nexport type HttpRequestOptions = {\r\n headers?:\r\n | HttpHeaders\r\n | RouterParams\r\n | { [header: string]: string | string[] };\r\n params?: HttpParams | { [param: string]: string | string[] } | Params;\r\n context?: HttpContext;\r\n reportProgress?: boolean;\r\n observe?: 'events';\r\n responseType?: string;\r\n};\r\nexport const HttpRequestOptionsKeys: Array<keyof Required<HttpRequestOptions>> =\r\n ['headers', 'params', 'context', 'reportProgress', 'observe', 'responseType'];\r\n\r\nexport type HttpOptions<T = any> = HttpRequestOptions & {\r\n urlRewrite?: string;\r\n urlPostfix?: string;\r\n mapFn?: (res: any) => T;\r\n};\r\n\r\nexport interface ServiceConfig {\r\n single?: HttpOptions;\r\n getAll?: HttpOptions;\r\n add?: HttpOptions;\r\n update?: HttpOptions;\r\n delete?: HttpOptions;\r\n}\r\n\r\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';\r\n","import { map } from 'rxjs/operators';\r\nimport { HttpOptions, HttpRequestOptionsKeys } from './base-http-types';\r\nimport { BaseHttpResponse } from './base-http-response';\r\n\r\nexport const resolveUrl = (\r\n baseUrl: string,\r\n options?: HttpOptions,\r\n ...args: string[]\r\n): string => {\r\n const { urlRewrite, urlPostfix } = options || {};\r\n\r\n if (urlRewrite) {\r\n return urlRewrite;\r\n }\r\n\r\n let result = baseUrl;\r\n\r\n if (args && args.length > 0 && args[0] !== '') {\r\n result += `/${args.join('/')}`;\r\n }\r\n\r\n if (urlPostfix) {\r\n result += `/${urlPostfix}`;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport const extractRequestOptions = (options?: any) => {\r\n if (!options || typeof options !== 'object') {\r\n return {};\r\n }\r\n /* eslint-disable */\r\n return HttpRequestOptionsKeys.reduce((requestOptions: any, key) => {\r\n const value = options[key];\r\n\r\n if (value !== undefined) {\r\n requestOptions[key] = value;\r\n }\r\n\r\n return requestOptions;\r\n }, {});\r\n};\r\n\r\nexport const mapResponse = <T>(options?: HttpOptions) =>\r\n map((res: T) => (options?.mapFn ? options.mapFn(res) : res));\r\n\r\nexport const epmDefaultMapper = <T>(res: BaseHttpResponse<T>) => res.payload;\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpConfig, HttpOptions, ServiceConfig } from './base-http-types';\r\nimport { epmDefaultMapper, extractRequestOptions, mapResponse, resolveUrl } from './base-http-utils';\r\n\r\nexport abstract class BaseHttpService {\r\n private readonly http: HttpClient = inject(HttpClient);\r\n\r\n get url(): string {\r\n const { apiUrl,microServiceUrl } = this.setApiConfig();\r\n return `${microServiceUrl}${apiUrl ? `/${apiUrl}` : ''}`;\r\n }\r\n\r\n get methodsConfig(): ServiceConfig | undefined {\r\n const { methods } = this.setApiConfig();\r\n return methods;\r\n }\r\n\r\n get globalMapFn(): (res: any) => any {\r\n const { globalMapFn } = this.setApiConfig();\r\n return globalMapFn || epmDefaultMapper;\r\n }\r\n\r\n abstract setApiConfig(): HttpConfig;\r\n\r\n single<T>(id: string | number, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('single');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .get<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n getAll<T>(options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('getAll');\r\n const url = resolveUrl(this.url, activeOptions);\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .get<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n add<T>(body: unknown, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('add');\r\n const url = resolveUrl(this.url, activeOptions);\r\n const requestOptions = { ...extractRequestOptions(activeOptions) };\r\n\r\n return this.http\r\n .post<T>(url, body, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n update<T>(\r\n id: string | number,\r\n body: unknown,\r\n options?: HttpOptions\r\n ): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('update');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = { ...extractRequestOptions(activeOptions) };\r\n\r\n return this.http\r\n .put<T>(url, body, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n delete<T>(id: string | number, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('delete');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .delete<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n protected getMethodConfig(method: keyof ServiceConfig): any {\r\n return this.methodsConfig ? this.methodsConfig[method] : undefined;\r\n }\r\n\r\n protected getMapFun(options?: HttpOptions) {\r\n const getMapFunObj = {\r\n default: { mapFn: epmDefaultMapper },\r\n custom: { mapFn: this.globalMapFn },\r\n };\r\n\r\n if (\r\n options &&\r\n (options?.reportProgress || options?.responseType === 'blob')\r\n ) {\r\n return { mapFn: (res: unknown) => res };\r\n }\r\n\r\n if (options && options?.mapFn) {\r\n return { mapFn: options.mapFn };\r\n }\r\n\r\n const isGlobalMapFnValid =\r\n this.globalMapFn && typeof this.globalMapFn === 'function';\r\n return isGlobalMapFnValid ? getMapFunObj.custom : getMapFunObj.default;\r\n }\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport interface CoreConfig {\r\n apiUrl: string;\r\n production: boolean;\r\n gatewayUrl: string;\r\n loginUrl: string;\r\n logoutEndpoint: string;\r\n}\r\n\r\nexport const CORE_CONFIG = new InjectionToken<CoreConfig>(\"CoreConfig\");\r\n","import { Inject, Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { StorageHandler } from \"../handlers/storage-handler\";\r\nimport { LocalStorageKeys } from \"../handlers/stortage\";\r\nimport { BaseHttpService, HttpConfig } from \"./base-http-service\";\r\nimport { CORE_CONFIG, CoreConfig } from \"../core-config\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class AuthService extends BaseHttpService {\r\n public isUserLoggedIn$ = new BehaviorSubject(this.isLoggedIn());\r\n\r\n constructor(@Inject(CORE_CONFIG) protected appConfig: CoreConfig) {\r\n super();\r\n }\r\n\r\n override setApiConfig(): HttpConfig {\r\n return {\r\n apiUrl: \"\",\r\n microServiceUrl: \"\"\r\n };\r\n }\r\n\r\n initAuthentication() {\r\n const token: string | null = new URLSearchParams(window.location.search).get(\"token\");\r\n if (token) {\r\n this.setAuthentication(token);\r\n window.location.search = \"\";\r\n }\r\n }\r\n\r\n setAuthentication(token: string) {\r\n this.isUserLoggedIn$.next(true);\r\n this.setUserToken(token);\r\n }\r\n\r\n isLoggedIn(): boolean {\r\n return !!this.getUserToken();\r\n }\r\n\r\n getUserToken(): string | null {\r\n return StorageHandler.local.get(LocalStorageKeys.TOKEN);\r\n }\r\n\r\n setUserToken(token?: string) {\r\n return StorageHandler.local.set(LocalStorageKeys.TOKEN, token);\r\n }\r\n\r\n logoutFromSSO() {\r\n const logoutUrl = this.appConfig.logoutEndpoint;\r\n return this.single<unknown>(\"\", {\r\n urlRewrite: logoutUrl\r\n });\r\n }\r\n\r\n clearAuth() {\r\n StorageHandler.local.clear();\r\n StorageHandler.session.clear();\r\n this.isUserLoggedIn$.next(false);\r\n window.location.href = this.appConfig.loginUrl;\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { jwtDecode } from \"jwt-decode\";\r\nimport { AuthService } from \"./auth.service\";\r\nimport { JWTDecoded } from \"../interfaces/jwt-token-decoded.interface\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class JwtDecoderService {\r\n authService = inject(AuthService);\r\n public decodedToken: JWTDecoded;\r\n\r\n constructor() {\r\n this.decodeToken();\r\n }\r\n\r\n public decodeToken() {\r\n const token: string = this.authService.getUserToken() as string;\r\n if (token) {\r\n this.decodedToken = jwtDecode(token);\r\n }\r\n }\r\n}\r\n","export const COMMON_BASE_URL = \"common/api/v1\";\r\nexport const APP_HTTP_CONFIG = {\r\n BOARD_BASE_URL: \"board-acl/private/v1\",\r\n MEETING_BASE_URL: \"meeting-acl/private/v1\",\r\n IGATE_BASE_URL: COMMON_BASE_URL + \"/igate-users\",\r\n LOV_BASE_URL: COMMON_BASE_URL + \"/lov\",\r\n ATTACHMENT_BASE_URL: COMMON_BASE_URL + \"/attachment\"\r\n};\r\n","import { HttpContext, HttpContextToken } from '@angular/common/http';\r\n\r\nexport const IS_SYSTEM_LOADER = new HttpContextToken<boolean>(() => true); // set default loader\r\n\r\nexport class HttpContextHandler {\r\n static setLoaderType(isSystemLoader: boolean) {\r\n return new HttpContext().set(IS_SYSTEM_LOADER, isSystemLoader);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport interface LoaderState {\r\n show: boolean;\r\n isSystemLoader?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LoaderService {\r\n isLoading$ = new BehaviorSubject<LoaderState>({ show: false });\r\n private loadingMap: Map<string, boolean> = new Map<string, boolean>();\r\n\r\n setLoading(loading: boolean, isSystemLoader = true, url: string): void {\r\n if (!url) {\r\n throw new Error(\"The request URL must be provided to the LoaderService.setLoading function\");\r\n }\r\n\r\n if (loading) {\r\n this.loadingMap.set(url, loading);\r\n this.isLoading$.next({ show: true, isSystemLoader });\r\n } else if (!loading && this.loadingMap.has(url)) {\r\n this.loadingMap.delete(url);\r\n }\r\n\r\n if (!this.loadingMap.size) {\r\n this.isLoading$.next({ show: false });\r\n }\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Inject, inject, Injectable } from \"@angular/core\";\r\nimport { finalize, Observable, tap } from \"rxjs\";\r\nimport { IS_SYSTEM_LOADER } from \"../handlers/http-context-handler\";\r\nimport { AuthService } from \"../services/auth.service\";\r\nimport { LoaderService } from \"../services/loader.service\";\r\nimport { CORE_CONFIG, CoreConfig } from \"../core-config\";\r\n\r\n@Injectable()\r\nexport class HttpBaseInterceptor implements HttpInterceptor {\r\n authService = inject(AuthService);\r\n loaderService = inject(LoaderService);\r\n\r\n constructor(@Inject(CORE_CONFIG) protected appConfig: CoreConfig) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n console.log(\"interceptor\", this.appConfig);\r\n const URL = `${this.appConfig.gatewayUrl}${request.url}`;\r\n const token = this.authService.getUserToken();\r\n\r\n // Handler header\r\n request = request.clone({\r\n url: URL,\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n Language: \"en\"\r\n }\r\n });\r\n\r\n // Handle loader\r\n const IS_SYSTEM_LOADER_CHECK = request.context.get(IS_SYSTEM_LOADER);\r\n this.loaderService.setLoading(true, IS_SYSTEM_LOADER_CHECK, request.url);\r\n\r\n return next.handle(request).pipe(\r\n // Handler Token\r\n tap((event) => {\r\n // if (event instanceof HttpResponse && request.url.includes(User_Token)) {\r\n // Set user token ..\r\n // }\r\n }),\r\n finalize(() => this.loaderService.setLoading(false, IS_SYSTEM_LOADER_CHECK, request.url))\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Observable, retry, timer } from 'rxjs';\r\n\r\nexport class GlobalHttpErrorInterceptor implements HttpInterceptor {\r\n // check if it is a server error to retry the request\r\n shouldRetry(error: HttpErrorResponse) {\r\n if (error.status >= 500) {\r\n return timer(1000);\r\n }\r\n throw error;\r\n }\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(request).pipe(\r\n retry({\r\n count: 1,\r\n delay: this.shouldRetry\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { APP_HTTP_CONFIG } from '../interceptors';\r\nimport { BaseHttpService, HttpConfig } from './base-http-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ListOfValues extends BaseHttpService {\r\n override setApiConfig(): HttpConfig {\r\n return {\r\n microServiceUrl: APP_HTTP_CONFIG.LOV_BASE_URL,\r\n apiUrl: \"lookups\"\r\n };\r\n }\r\n\r\n getRolesByGroup<T>(group: string): Observable<T> {\r\n return this.getAll<T>({\r\n urlPostfix: group\r\n });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MessageService, ToastMessageOptions } from \"primeng/api\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ToasterService {\r\n mainKey = \"main-toaster\";\r\n\r\n constructor(private messageService: MessageService) {}\r\n\r\n showMessage(options: ToastMessageOptions) {\r\n this.messageService.add({\r\n key: options?.key ? options?.key : this.mainKey,\r\n severity: options?.severity,\r\n summary: options?.summary,\r\n detail: options?.detail,\r\n life: options?.life ?? 5000\r\n });\r\n }\r\n\r\n showSuccess(options: ToastMessageOptions) {\r\n this.messageService.add({\r\n key: this.mainKey,\r\n severity: \"success\",\r\n summary: options?.summary,\r\n detail: options?.detail,\r\n life: options?.life ?? 5000\r\n });\r\n }\r\n\r\n showError(options: ToastMessageOptions) {\r\n this.messageService.add({\r\n key: this.mainKey,\r\n severity: \"error\",\r\n summary: options?.summary,\r\n detail: options?.detail,\r\n life: options?.life ?? 5000\r\n });\r\n }\r\n\r\n showInfo(options: ToastMessageOptions) {\r\n this.messageService.add({\r\n key: this.mainKey,\r\n severity: \"info\",\r\n summary: options?.summary,\r\n detail: options?.detail,\r\n life: options?.life ?? 5000\r\n });\r\n }\r\n\r\n showWarning(key: string, summary: string, detail: string, life = 5000) {\r\n this.messageService.add({\r\n key: this.mainKey,\r\n severity: \"warn\",\r\n summary,\r\n detail,\r\n life\r\n });\r\n }\r\n\r\n clear() {\r\n this.messageService.clear(this.mainKey);\r\n }\r\n}\r\n","import { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { ErrorHandler, Injectable } from \"@angular/core\";\r\nimport { ToasterService } from \"./toaster.service\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { from } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ErrorHandlerService implements ErrorHandler {\r\n constructor(\r\n private toasterService: ToasterService,\r\n private translateService: TranslateService\r\n ) { }\r\n\r\n handleError(error: unknown) {\r\n\r\n // check if there is an error in code\r\n if (error instanceof Error) {\r\n // this is commented because in code error we don't need to show the error to the user\r\n // we can just log it for our reference\r\n console.error(error);\r\n }\r\n\r\n if (error instanceof HttpErrorResponse) {\r\n /**\r\n * error handling here cause the error response is blob file (binary file)\r\n * not JSON, so we can't parse it\r\n * and need to check the content type of the response\r\n **/\r\n if (error?.error?.type === \"application/json\") {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n from((error?.error as any).text()).subscribe((res) => {\r\n const errorObj = JSON.parse(res as string);\r\n const errorMessage = this.translateService.instant(`network_errors.${errorObj.errors.errorCode}`);\r\n this.toasterService.showError({ summary: this.translateService.instant(`error`), detail: errorMessage });\r\n });\r\n return;\r\n }\r\n const errorInfo = error.error;\r\n const errorCode = errorInfo.errors.message;\r\n let errorMessage = errorInfo?.error;\r\n\r\n if (errorInfo.code) {\r\n switch (errorInfo.code) {\r\n case 401:\r\n break;\r\n case 403:\r\n break;\r\n case 400:\r\n errorMessage = this.translateService.instant(`network_errors.${errorCode}`);\r\n\r\n break;\r\n case 404:\r\n if (errorCode) {\r\n errorMessage = this.translateService.instant(`network_errors.${errorCode}`);\r\n break;\r\n }\r\n errorMessage = this.translateService.instant(`validation_error.not_found`);\r\n break;\r\n case 500:\r\n case 503:\r\n errorMessage = this.translateService.instant(`validation_error.server`);\r\n break;\r\n default:\r\n errorMessage = this.translateService.instant(`validation_error.random`);\r\n break;\r\n }\r\n\r\n this.toasterService.showError({ summary: this.translateService.instant(`error`), detail: errorMessage });\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { JwtDecoderService } from \"./jwt-decoder.service\";\r\nimport { PermissionsActions, UserPermissionsEnum } from \"../enums\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PermissionsService {\r\n private jwtDecoderService = inject(JwtDecoderService);\r\n private decodedToken = this.jwtDecoderService.decodedToken;\r\n private tokenPermissions = this.decodedToken ? this.decodedToken.permissions as [] : [];\r\n private domainPermissionsSubject = new BehaviorSubject<string[]>([]);\r\n domainPermissions$ = this.domainPermissionsSubject.asObservable();\r\n\r\n private getKeyName(action: string) {\r\n const actionsArr = action.split(\"_\");\r\n return actionsArr.splice(1, actionsArr.length - 1).join(\"_\");\r\n }\r\n\r\n getActionName(action: string) {\r\n return action.split(\"_\")[0];\r\n }\r\n\r\n getAllowedActionsByKey(key: UserPermissionsEnum, newPermissions?: string[]) {\r\n const permissionsNeeded = newPermissions || this.tokenPermissions;\r\n if (!permissionsNeeded) {\r\n console.error(\"There are no permissions available\");\r\n return [];\r\n }\r\n return permissionsNeeded\r\n .filter((p) => {\r\n return key === this.getKeyName(p);\r\n })\r\n .map((t) => {\r\n return this.getActionName(t);\r\n });\r\n }\r\n\r\n checkKeyHasPermission(key: UserPermissionsEnum, action: PermissionsActions, newPermissions?: string[]) {\r\n return this.getAllowedActionsByKey(key, newPermissions).some((p) => p === action);\r\n }\r\n\r\n checkDomainHasPermission(key: UserPermissionsEnum, action: PermissionsActions) {\r\n return this.getAllowedActionsByKey(key, this.getDomainPermissions()).some((p) => p === action);\r\n }\r\n\r\n routeGuardChecker(key: UserPermissionsEnum, action: PermissionsActions) {\r\n if(!this.checkKeyHasPermission(key, action)){\r\n return this.checkKeyHasPermission(key, action,this.getDomainPermissions());\r\n }\r\n return true;\r\n }\r\n\r\n clearDomainPermissions() {\r\n this.domainPermissionsSubject.next([]);\r\n }\r\n\r\n setDomainPermissions(permissions: string[]) {\r\n this.domainPermissionsSubject.next(permissions);\r\n }\r\n\r\n getDomainPermissions(): string[] {\r\n return this.domainPermissionsSubject.getValue();\r\n }\r\n}\r\n","import { AsyncPipe, NgClass } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport {TranslatePipe} from \"@ngx-translate/core\";\r\nimport {LoaderService} from \"../../services\";\r\n\r\n@Component({\r\n selector: \"global-loader\",\r\n templateUrl: \"./global-loader.component.html\",\r\n styleUrls: [\"./global-loader.component.scss\"],\r\n standalone: true,\r\n imports: [AsyncPipe, NgClass, TranslatePipe]\r\n})\r\nexport class GlobalLoaderComponent {\r\n @Input() color: string;\r\n constructor(public loaderService: LoaderService) {}\r\n}\r\n","@if (loaderService.isLoading$ | async; as data) {\r\n @if (data.show) {\r\n <div\r\n class=\"fixed inset-0 z-[1111] flex justify-center items-center\"\r\n [ngClass]=\"{\r\n 'bg-white/75': data?.isSystemLoader,\r\n 'absolute': !data?.isSystemLoader\r\n }\"\r\n >\r\n <div class=\"text-center flex flex-col gap-5 items-center\">\r\n <div\r\n class=\"animate-spin inline-block w-12 h-12 border-[3px] border-current border-t-transparent text-gray-800 rounded-full\">\r\n </div>\r\n <span>{{ 'loading' | translate }}</span>\r\n </div>\r\n </div>\r\n }\r\n}\r\n","import { inject } from \"@angular/core\";\r\nimport { CanActivateFn } from \"@angular/router\";\r\nimport { AuthService } from \"../services\";\r\nimport { CORE_CONFIG, CoreConfig } from \"../core-config\";\r\n\r\nexport const authGuard: CanActivateFn = () => {\r\n const appConfig = inject<CoreConfig>(CORE_CONFIG);\r\n const authService = inject(AuthService);\r\n const token: string | null = authService.getUserToken();\r\n\r\n if (!token) {\r\n window.location.href = appConfig.loginUrl;\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n","import { inject } from \"@angular/core\";\r\nimport { CanActivateFn, Router } from \"@angular/router\";\r\nimport { PermissionsService } from \"../services\";\r\nimport { RoutePermissionsInfo } from \"../interfaces\";\r\n\r\nexport const permissionsGuard: CanActivateFn = (route) => {\r\n const permissionsService = inject(PermissionsService);\r\n const router = inject(Router);\r\n const { key, action }: RoutePermissionsInfo = route.data[\"permissions\"];\r\n\r\n if (!route.data[\"permissions\"] || (route.data[\"permissions\"] && permissionsService.routeGuardChecker(key, action))) {\r\n return true;\r\n } else {\r\n router.navigate([\"no-access\"]);\r\n return false;\r\n }\r\n};\r\n","export enum UserPermissionsEnum {\r\n BOD = \"BOD\",\r\n BOARD_COMMITTEES = \"BOARD_COMMITTEES\",\r\n BOARD_MEETINGS = \"BOARD_MEETINGS\",\r\n MEETING_INSIDE_THE_BOD = \"MEETING_INSIDE_THE_BOD\",\r\n COMMITTEE = \"COMMITTEE\",\r\n MEETING_INSIDE_THE_COMMITTEE = \"MEETING_INSIDE_THE_COMMITTEE\",\r\n MEETING = \"MEETING\",\r\n DECISION = \"DECISION\",\r\n RECOMMENDATION = \"RECOMMENDATION\",\r\n TASK = \"TASK\",\r\n VOTING = \"VOTING\",\r\n VOTING_SECRETARY_RESULTS = \"VOTING_SECRETARY_RESULTS\",\r\n VOTING_RESULTS = \"VOTING_RESULTS\",\r\n DRAFT_MOM = \"DRAFT_MOM\",\r\n FINAL_MOM = \"FINAL_MOM\",\r\n MOM = \"MOM\",\r\n AGENDA = \"AGENDA\",\r\n ATTENDEES = \"ATTENDEES\",\r\n COMMENT = \"COMMENT\"\r\n}\r\n\r\nexport enum PermissionsActions {\r\n VIEW = \"VIEW\",\r\n CREATE = \"CREATE\",\r\n EDIT = \"EDIT\",\r\n DELETE = \"DELETE\",\r\n REORDER = \"REORDER\",\r\n DOWNLOAD = \"DOWNLOAD\",\r\n MARK = \"MARK\",\r\n GENERATE = \"GENERATE\",\r\n TERMINATE = \"TERMINATE\",\r\n START = \"START\",\r\n END = \"END\",\r\n ACTIVATE = \"ACTIVATE\"\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { PermissionsService } from '../services';\r\nimport { PermissionsActions, UserPermissionsEnum } from '../enums';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[hasPermissions]',\r\n standalone: true\r\n})\r\nexport class HasPermissionsDirective implements OnInit, OnDestroy {\r\n private _actions: string[];\r\n private _key: string;\r\n private _newPermissions: string[];\r\n private _isDomain: boolean;\r\n\r\n private isViewCreated = false;\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private permissionsService: PermissionsService,\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<unknown>\r\n ) {}\r\n\r\n /**\r\n * make sure that the key value looks like the UserPermissionsEnum enum\r\n * usage: *permissions=\"[PermissionsActions.EDIT]; key: LOOKUPS\r\n */\r\n\r\n @Input({ required: true }) set hasPermissions(actions: string[]) {\r\n if (this.arraysChanged(this._actions, actions)) {\r\n this._actions = actions;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input({ required: true }) set hasPermissionsKey(key: string) {\r\n if (this._key !== key) {\r\n this._key = key;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input() set hasPermissionsNewPermissions(newPermissions: string[]) {\r\n if (this.arraysChanged(this._newPermissions, newPermissions)) {\r\n this._newPermissions = newPermissions;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input() set hasPermissionsIsDomain(isDomain: boolean) {\r\n if (this._isDomain !== isDomain) {\r\n this._isDomain = isDomain;\r\n this.updateView();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.permissionsService.domainPermissions$.subscribe(() => {\r\n if (this._isDomain) {\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n private updateView() {\r\n const canShow = this._actions.some(action => this.hasPermission(action));\r\n\r\n if (canShow && !this.isViewCreated) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n this.isViewCreated = true;\r\n } else if (!canShow && this.isViewCreated) {\r\n this.clearView();\r\n }\r\n }\r\n\r\n private hasPermission(action: string): boolean {\r\n if (this._isDomain) {\r\n return this.permissionsService.checkDomainHasPermission(\r\n this._key as UserPermissionsEnum,\r\n action as PermissionsActions\r\n );\r\n }\r\n\r\n return this.permissionsService.checkKeyHasPermission(\r\n this._key as UserPermissionsEnum,\r\n action as PermissionsActions,\r\n this._newPermissions\r\n );\r\n }\r\n\r\n private clearView() {\r\n this.viewContainer.clear();\r\n this.isViewCreated = false;\r\n }\r\n\r\n private arraysChanged(a?: string[], b?: string[]): boolean {\r\n if (a === b) return false;\r\n if (!a || !b) return true;\r\n if (a.length !== b.length) return true;\r\n return a.some((v, i) => v !== b[i]);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ToasterService","i1.LoaderService","i1.PermissionsService"],"mappings":";;;;;;;;;;;;AAAO,MAAM,QAAQ,GAAG;AACjB,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClC;AAAZ,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACjB,CAAC,EAHW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;MCEH,qBAAqB,CAAA;AAA3C,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,YAAY,GAAG,CAAC;QAChB,IAAA,CAAA,UAAU,GAAG,CAAC;QACd,IAAA,CAAA,UAAU,GAAW,QAAQ;QAE7B,IAAA,CAAA,SAAS,GAAG,gBAAgB;QAC5B,IAAA,CAAA,gBAAgB,GAAG,WAAW;AAC9B,QAAA,IAAA,CAAA,oBAAoB,GAAG,aAAa,CAAC,IAAI;QACzC,IAAA,CAAA,KAAK,GAAuB,CAAC;AAE7B,QAAA,IAAA,CAAA,WAAW,GAAgB;AACzB,YAAA,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,UAAU;AAC1B,YAAA,IAAI,EAAE,CAAC;YACP,SAAS,EAAE,IAAI,CAAC,oBAAoB;YACpC,MAAM,EAAE,IAAI,CAAC;SACd;;AAID,IAAA,gBAAgB,CAAC,OAAkC,EAAA;QACjD,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;AACnB,YAAA,GAAG;SACJ;;IAGH,SAAS,GAAA;QACP,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,UAAU;AAC1B,YAAA,IAAI,EAAE;SACP;;IAGH,cAAc,GAAA;QACZ,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;YACnB,SAAS,EAAE,IAAI,CAAC,UAAU;AAC1B,YAAA,IAAI,EAAE;SACP;;AAGH,IAAA,YAAY,CAAC,KAAqB,EAAA;QAChC,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,IAAI;SACtB;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGjC;;ACvDD,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,KAAa,KAAK,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AACxF,MAAM,eAAe,GAAG,CAAC,GAAW,KAAK,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAClE,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE;AACpD,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,KAAa,KAAK,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AAC5F,MAAM,iBAAiB,GAAG,CAAC,GAAW,KAAK,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;AACtE,MAAM,mBAAmB,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE;MAE3C,cAAc,CAAA;AACX,IAAA,SAAA,IAAA,CAAA,KAAK,GAAG;AACpB,QAAA,GAAG,EAAE,CAAC,GAAqB,EAAE,KAAc,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC;AACzF,QAAA,GAAG,EAAE,CAAI,GAAqB,KAAK,IAAI,CAAC,OAAO,CAAI,GAAG,EAAE,eAAe,CAAC;QACxE,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB;KACjD,CAAC;AACY,IAAA,SAAA,IAAA,CAAA,OAAO,GAAG;AACtB,QAAA,GAAG,EAAE,CAAC,GAAuB,EAAE,KAAc,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAiB,CAAC;AAC7F,QAAA,GAAG,EAAE,CAAI,GAAuB,KAAK,IAAI,CAAC,OAAO,CAAI,GAAG,EAAE,iBAAiB,CAAC;QAC5E,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB;KACnD,CAAC;AAEM,IAAA,OAAO,OAAO,CAAC,GAAgB,EAAE,KAAc,EAAE,GAAyC,EAAA;AAChG,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,GAAG,CAAC,GAAa,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;IAGvE,OAAO,OAAO,CAAI,GAAgB,EAAE,GAAmC,EAAE,WAAW,GAAG,KAAK,EAAA;QAClG,MAAM,IAAI,GAAkB,GAAG,CAAC,GAAa,CAAC,IAAI,IAAI;AACtD,QAAA,IAAI,IAAI;AAAE,YAAA,OAAO,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI;AACtD,QAAA,OAAO,IAAI;;IAGL,OAAO,YAAY,CAAC,KAAiB,EAAA;AAC3C,QAAA,KAAK,EAAE;;;;AClCX,IAAY,gBAGX;AAHD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;AAK5B,IAAY,kBAAqB;AAAjC,CAAA,UAAY,kBAAkB,EAAA;AAAE,CAAC,EAArB,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;ACmBvB,MAAM,sBAAsB,GACjC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc;;ACrBvE,MAAM,UAAU,GAAG,CACxB,OAAe,EACf,OAAqB,EACrB,GAAG,IAAc,KACP;IACV,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE;IAEhD,IAAI,UAAU,EAAE;AACd,QAAA,OAAO,UAAU;;IAGnB,IAAI,MAAM,GAAG,OAAO;AAEpB,IAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE;;IAGhC,IAAI,UAAU,EAAE;AACd,QAAA,MAAM,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE;;AAG5B,IAAA,OAAO,MAAM;AACf;AAEO,MAAM,qBAAqB,GAAG,CAAC,OAAa,KAAI;IACrD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC3C,QAAA,OAAO,EAAE;;;IAGX,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC,cAAmB,EAAE,GAAG,KAAI;AAChE,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AAE1B,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK;;AAG7B,QAAA,OAAO,cAAc;KACtB,EAAE,EAAE,CAAC;AACR;AAEO,MAAM,WAAW,GAAG,CAAI,OAAqB,KAClD,GAAG,CAAC,CAAC,GAAM,MAAM,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAEtD,MAAM,gBAAgB,GAAG,CAAI,GAAwB,KAAK,GAAG,CAAC;;MCzC/C,eAAe,CAAA;AAArC,IAAA,WAAA,GAAA;AACmB,QAAA,IAAA,CAAA,IAAI,GAAe,MAAM,CAAC,UAAU,CAAC;;AAEtD,IAAA,IAAI,GAAG,GAAA;QACL,MAAM,EAAE,MAAM,EAAC,eAAe,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;AACtD,QAAA,OAAO,CAAA,EAAG,eAAe,CAAA,EAAG,MAAM,GAAG,CAAA,CAAA,EAAI,MAAM,EAAE,GAAG,EAAE,EAAE;;AAG1D,IAAA,IAAI,aAAa,GAAA;QACf,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;AACvC,QAAA,OAAO,OAAO;;AAGhB,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;QAC3C,OAAO,WAAW,IAAI,gBAAgB;;IAKxC,MAAM,CAAI,EAAmB,EAAE,OAAqB,EAAA;QAClD,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC/D,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;QAE3D,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAI,GAAG,EAAE,cAAc;aAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;;AAGrD,IAAA,MAAM,CAAI,OAAqB,EAAA;QAC7B,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;AAC/C,QAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;QAE3D,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAI,GAAG,EAAE,cAAc;aAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;;IAGrD,GAAG,CAAI,IAAa,EAAE,OAAqB,EAAA;QACzC,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC5D,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;QAC/C,MAAM,cAAc,GAAG,EAAE,GAAG,qBAAqB,CAAC,aAAa,CAAC,EAAE;QAElE,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,cAAc;aACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;;AAGrD,IAAA,MAAM,CACJ,EAAmB,EACnB,IAAa,EACb,OAAqB,EAAA;QAErB,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC/D,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;QAC/D,MAAM,cAAc,GAAG,EAAE,GAAG,qBAAqB,CAAC,aAAa,CAAC,EAAE;QAElE,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAI,GAAG,EAAE,IAAI,EAAE,cAAc;aAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;;IAGrD,MAAM,CAAI,EAAmB,EAAE,OAAqB,EAAA;QAClD,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC/D,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;QAE3D,OAAO,IAAI,CAAC;AACT,aAAA,MAAM,CAAI,GAAG,EAAE,cAAc;aAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;;AAG3C,IAAA,eAAe,CAAC,MAA2B,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS;;AAG1D,IAAA,SAAS,CAAC,OAAqB,EAAA;AACvC,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,OAAO,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACpC,YAAA,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;SACpC;AAED,QAAA,IACE,OAAO;aACN,OAAO,EAAE,cAAc,IAAI,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC,EAC7D;YACA,OAAO,EAAE,KAAK,EAAE,CAAC,GAAY,KAAK,GAAG,EAAE;;AAGzC,QAAA,IAAI,OAAO,IAAI,OAAO,EAAE,KAAK,EAAE;AAC7B,YAAA,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;;AAGjC,QAAA,MAAM,kBAAkB,GACtB,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU;AAC5D,QAAA,OAAO,kBAAkB,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO;;AAEzE;;MC/FY,WAAW,GAAG,IAAI,cAAc,CAAa,YAAY;;ACAhE,MAAO,WAAY,SAAQ,eAAe,CAAA;AAG9C,IAAA,WAAA,CAA2C,SAAqB,EAAA;AAC9D,QAAA,KAAK,EAAE;QADkC,IAAA,CAAA,SAAS,GAAT,SAAS;QAF7C,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;;IAMtD,YAAY,GAAA;QACnB,OAAO;AACL,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,eAAe,EAAE;SAClB;;IAGH,kBAAkB,GAAA;AAChB,QAAA,MAAM,KAAK,GAAkB,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QACrF,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7B,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE;;;AAI/B,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;;IAG1B,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;;IAG9B,YAAY,GAAA;QACV,OAAO,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AAGzD,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,OAAO,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;;IAGhE,aAAa,GAAA;AACX,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc;AAC/C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAU,EAAE,EAAE;AAC9B,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;;IAGJ,SAAS,GAAA;AACP,QAAA,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE;AAC5B,QAAA,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;;AAlDrC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBAGF,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAHpB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAIc,MAAM;2BAAC,WAAW;;;MCLpB,iBAAiB,CAAA;AAI5B,IAAA,WAAA,GAAA;AAHA,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAI/B,IAAI,CAAC,WAAW,EAAE;;IAGb,WAAW,GAAA;QAChB,MAAM,KAAK,GAAW,IAAI,CAAC,WAAW,CAAC,YAAY,EAAY;QAC/D,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;;;8GAX7B,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPM,MAAM,eAAe,GAAG;AACxB,MAAM,eAAe,GAAG;AAC7B,IAAA,cAAc,EAAE,sBAAsB;AACtC,IAAA,gBAAgB,EAAE,wBAAwB;IAC1C,cAAc,EAAE,eAAe,GAAG,cAAc;IAChD,YAAY,EAAE,eAAe,GAAG,MAAM;IACtC,mBAAmB,EAAE,eAAe,GAAG;;;ACJlC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAU,MAAM,IAAI,CAAC,CAAC;MAE7D,kBAAkB,CAAA;IAC7B,OAAO,aAAa,CAAC,cAAuB,EAAA;QAC1C,OAAO,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC;;AAEjE;;MCGY,aAAa,CAAA;AAH1B,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAc,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACtD,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,GAAG,EAAmB;AAkBtE;AAhBC,IAAA,UAAU,CAAC,OAAgB,EAAE,cAAc,GAAG,IAAI,EAAE,GAAW,EAAA;QAC7D,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC;;QAG9F,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;;AAC/C,aAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;;AAG7B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;;8GAjB9B,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCDY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAA2C,SAAqB,EAAA;QAArB,IAAA,CAAA,SAAS,GAAT,SAAS;AAHpD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;;IAIrC,SAAS,CAAC,OAA6B,EAAE,IAAiB,EAAA;QACxD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;AAC1C,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAA,EAAG,OAAO,CAAC,GAAG,EAAE;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAG7C,QAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AACtB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,UAAU,EAAE;gBACV,aAAa,EAAE,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE;AAChC,gBAAA,QAAQ,EAAE;AACX;AACF,SAAA,CAAC;;QAGF,MAAM,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACpE,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC;AAExE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI;;AAE9B,QAAA,GAAG,CAAC,CAAC,KAAK,KAAI;;;;SAIb,CAAC,EACF,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAC1F;;AAhCQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAIV,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJpB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;0BAKc,MAAM;2BAAC,WAAW;;;MCVpB,0BAA0B,CAAA;;AAErC,IAAA,WAAW,CAAC,KAAwB,EAAA;AAClC,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC;;AAEpB,QAAA,MAAM,KAAK;;IAGb,SAAS,CAAC,OAA6B,EAAE,IAAiB,EAAA;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9B,KAAK,CAAC;AACJ,YAAA,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,IAAI,CAAC;AACb,SAAA,CAAC,CACH;;AAEJ;;ACZK,MAAO,YAAa,SAAQ,eAAe,CAAA;IACtC,YAAY,GAAA;QACnB,OAAO;YACL,eAAe,EAAE,eAAe,CAAC,YAAY;AAC7C,YAAA,MAAM,EAAE;SACT;;AAGH,IAAA,eAAe,CAAI,KAAa,EAAA;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAI;AACpB,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;;8GAXO,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCDY,cAAc,CAAA;AAGzB,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAA,CAAA,cAAc,GAAd,cAAc;QAFlC,IAAA,CAAA,OAAO,GAAG,cAAc;;AAIxB,IAAA,WAAW,CAAC,OAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,YAAA,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO;YAC/C,QAAQ,EAAE,OAAO,EAAE,QAAQ;YAC3B,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;AACvB,YAAA,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI;AACxB,SAAA,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACtB,GAAG,EAAE,IAAI,CAAC,OAAO;AACjB,YAAA,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;AACvB,YAAA,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI;AACxB,SAAA,CAAC;;AAGJ,IAAA,SAAS,CAAC,OAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACtB,GAAG,EAAE,IAAI,CAAC,OAAO;AACjB,YAAA,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;AACvB,YAAA,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI;AACxB,SAAA,CAAC;;AAGJ,IAAA,QAAQ,CAAC,OAA4B,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACtB,GAAG,EAAE,IAAI,CAAC,OAAO;AACjB,YAAA,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;AACvB,YAAA,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI;AACxB,SAAA,CAAC;;IAGJ,WAAW,CAAC,GAAW,EAAE,OAAe,EAAE,MAAc,EAAE,IAAI,GAAG,IAAI,EAAA;AACnE,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACtB,GAAG,EAAE,IAAI,CAAC,OAAO;AACjB,YAAA,QAAQ,EAAE,MAAM;YAChB,OAAO;YACP,MAAM;YACN;AACD,SAAA,CAAC;;IAGJ,KAAK,GAAA;QACH,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;8GAxD9B,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,mBAAmB,CAAA;IAC9B,WAAA,CACU,cAA8B,EAC9B,gBAAkC,EAAA;QADlC,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;;AAG1B,IAAA,WAAW,CAAC,KAAc,EAAA;;AAGxB,QAAA,IAAI,KAAK,YAAY,KAAK,EAAE;;;AAG1B,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;;AAGtB,QAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACtC;;;;AAII;YACJ,IAAI,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,kBAAkB,EAAE;;AAE7C,gBAAA,IAAI,CAAC,CAAC,KAAK,EAAE,KAAa,EAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;oBACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAa,CAAC;AAC1C,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,eAAA,EAAkB,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAA,CAAE,CAAC;oBACjG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAC1G,iBAAC,CAAC;gBACF;;AAEF,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK;AAC7B,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO;AAC1C,YAAA,IAAI,YAAY,GAAG,SAAS,EAAE,KAAK;AAEnC,YAAA,IAAI,SAAS,CAAC,IAAI,EAAE;AAClB,gBAAA,QAAQ,SAAS,CAAC,IAAI;AACpB,oBAAA,KAAK,GAAG;wBACN;AACF,oBAAA,KAAK,GAAG;wBACN;AACF,oBAAA,KAAK,GAAG;wBACN,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,eAAA,EAAkB,SAAS,CAAA,CAAE,CAAC;wBAE3E;AACF,oBAAA,KAAK,GAAG;wBACN,IAAI,SAAS,EAAE;4BACb,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,eAAA,EAAkB,SAAS,CAAA,CAAE,CAAC;4BAC3E;;wBAEF,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,0BAAA,CAA4B,CAAC;wBAC1E;AACF,oBAAA,KAAK,GAAG;AACR,oBAAA,KAAK,GAAG;wBACN,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,uBAAA,CAAyB,CAAC;wBACvE;AACF,oBAAA;wBACE,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,uBAAA,CAAyB,CAAC;wBACvE;;gBAGJ,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;;;;8GA5DnG,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCAY,kBAAkB,CAAA;AAH/B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;AAClD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,WAAiB,GAAG,EAAE;AAC/E,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;AAoDlE;AAlDS,IAAA,UAAU,CAAC,MAAc,EAAA;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAG9D,IAAA,aAAa,CAAC,MAAc,EAAA;QAC1B,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;IAG7B,sBAAsB,CAAC,GAAwB,EAAE,cAAyB,EAAA;AACxE,QAAA,MAAM,iBAAiB,GAAG,cAAc,IAAI,IAAI,CAAC,gBAAgB;QACjE,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC;AACnD,YAAA,OAAO,EAAE;;AAEX,QAAA,OAAO;AACJ,aAAA,MAAM,CAAC,CAAC,CAAC,KAAI;YACZ,OAAO,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACnC,SAAC;AACA,aAAA,GAAG,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9B,SAAC,CAAC;;AAGN,IAAA,qBAAqB,CAAC,GAAwB,EAAE,MAA0B,EAAE,cAAyB,EAAA;QACnG,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;;IAGnF,wBAAwB,CAAC,GAAwB,EAAE,MAA0B,EAAA;QAC3E,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;;IAGhG,iBAAiB,CAAC,GAAwB,EAAE,MAA0B,EAAA;QACrE,IAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAC;AACzC,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAE5E,QAAA,OAAO,IAAI;;IAGb,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;;AAGxC,IAAA,oBAAoB,CAAC,WAAqB,EAAA;AACxC,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC;;IAGjD,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE;;8GAvDtC,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCKY,qBAAqB,CAAA;AAEhC,IAAA,WAAA,CAAmB,aAA4B,EAAA;QAA5B,IAAA,CAAA,aAAa,GAAb,aAAa;;8GAFrB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,qGCZlC,4nBAkBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDRY,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,+EAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEhC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,eAAe,EAAA,UAAA,EAGb,IAAI,EAAA,OAAA,EACP,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,4nBAAA,EAAA;+EAGnC,KAAK,EAAA,CAAA;sBAAb;;;AERI,MAAM,SAAS,GAAkB,MAAK;AAC3C,IAAA,MAAM,SAAS,GAAG,MAAM,CAAa,WAAW,CAAC;AACjD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACvC,IAAA,MAAM,KAAK,GAAkB,WAAW,CAAC,YAAY,EAAE;IAEvD,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ;AACzC,QAAA,OAAO,KAAK;;AAGd,IAAA,OAAO,IAAI;AACb;;ACXO,MAAM,gBAAgB,GAAkB,CAAC,KAAK,KAAI;AACvD,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAyB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;IAEvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE;AAClH,QAAA,OAAO,IAAI;;SACN;AACL,QAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;AAC9B,QAAA,OAAO,KAAK;;AAEhB;;IChBY;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,mBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,mBAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AACjD,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,8BAAA,CAAA,GAAA,8BAA6D;AAC7D,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,mBAAA,CAAA,0BAAA,CAAA,GAAA,0BAAqD;AACrD,IAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EApBW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;IAsBnB;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAbW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;MCNjB,uBAAuB,CAAA;AASlC,IAAA,WAAA,CACU,kBAAsC,EACtC,aAA+B,EAC/B,WAAiC,EAAA;QAFjC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,WAAW,GAAX,WAAW;QANb,IAAA,CAAA,aAAa,GAAG,KAAK;;AAS7B;;;AAGG;IAEH,IAA+B,cAAc,CAAC,OAAiB,EAAA;QAC7D,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;YACvB,IAAI,CAAC,UAAU,EAAE;;;IAIrB,IAA+B,iBAAiB,CAAC,GAAW,EAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG;YACf,IAAI,CAAC,UAAU,EAAE;;;IAIrB,IAAa,4BAA4B,CAAC,cAAwB,EAAA;QAChE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE;AAC5D,YAAA,IAAI,CAAC,eAAe,GAAG,cAAc;YACrC,IAAI,CAAC,UAAU,EAAE;;;IAIrB,IAAa,sBAAsB,CAAC,QAAiB,EAAA;AACnD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;YACzB,IAAI,CAAC,UAAU,EAAE;;;IAIrB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAK;AAC5E,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,UAAU,EAAE;;AAErB,SAAC,CAAC;;IAGJ,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;;IAG1B,UAAU,GAAA;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAExE,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;AACpB,aAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;YACzC,IAAI,CAAC,SAAS,EAAE;;;AAIZ,IAAA,aAAa,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CACrD,IAAI,CAAC,IAA2B,EAChC,MAA4B,CAC7B;;AAGH,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAClD,IAAI,CAAC,IAA2B,EAChC,MAA4B,EAC5B,IAAI,CAAC,eAAe,CACrB;;IAGK,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;IAGpB,aAAa,CAAC,CAAY,EAAE,CAAY,EAAA;QAC9C,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;AACzB,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;AACzB,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AACtC,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;8GA/F1B,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACb,iBAAA;6IAqBgC,cAAc,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAOM,iBAAiB,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAOZ,4BAA4B,EAAA,CAAA;sBAAxC;gBAOY,sBAAsB,EAAA,CAAA;sBAAlC;;;ACzDH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"corp-products-app-core.mjs","sources":["../../../../libs/core/src/lib/core/services/base-pagination-service/pagination.ts","../../../../libs/core/src/lib/core/services/base-pagination-service/base-pagination.service.ts","../../../../libs/core/src/lib/core/handlers/storage-handler.ts","../../../../libs/core/src/lib/core/handlers/stortage.ts","../../../../libs/core/src/lib/core/services/base-http-service/base-http-types.ts","../../../../libs/core/src/lib/core/services/base-http-service/base-http-utils.ts","../../../../libs/core/src/lib/core/services/base-http-service/base-http.service.ts","../../../../libs/core/src/lib/core/core-config.ts","../../../../libs/core/src/lib/core/services/auth.service.ts","../../../../libs/core/src/lib/core/services/jwt-decoder.service.ts","../../../../libs/core/src/lib/core/interceptors/app-http-config.ts","../../../../libs/core/src/lib/core/handlers/http-context-handler.ts","../../../../libs/core/src/lib/core/services/loader.service.ts","../../../../libs/core/src/lib/core/interceptors/base-http.interceptor.ts","../../../../libs/core/src/lib/core/interceptors/global-http-error.interceptor.ts","../../../../libs/core/src/lib/core/services/lov.service.ts","../../../../libs/core/src/lib/core/services/toaster.service.ts","../../../../libs/core/src/lib/core/services/error-handler.service.ts","../../../../libs/core/src/lib/core/services/permissions.service.ts","../../../../libs/core/src/lib/core/components/global-loader/global-loader.component.ts","../../../../libs/core/src/lib/core/components/global-loader/global-loader.component.html","../../../../libs/core/src/lib/core/guards/auth.guard.ts","../../../../libs/core/src/lib/core/guards/permissions.guard.ts","../../../../libs/core/src/lib/core/enums/user-permissions.enum.ts","../../../../libs/core/src/lib/core/directives/permissions.directive.ts","../../../../libs/core/src/corp-products-app-core.ts"],"sourcesContent":["export const PAGESIZE = 10;\r\nexport const PAGE_SIZE_OPTION = [5, 10, 15, 20];\r\nexport enum SortDirection {\r\n ASC = 'ASC',\r\n DESC = 'DESC'\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { ListOptions } from \"./list-options.interface\";\r\nimport { PAGE_SIZE_OPTION, PAGESIZE, SortDirection } from \"./pagination\";\r\nimport { PaginatorState } from \"primeng/paginator\";\r\nexport abstract class BasePaginationService<T = any> {\r\n\r\n totalRecords = 0;\r\n totalPages = 0;\r\n rowsChange: number = PAGESIZE;\r\n\r\n pageSizes = PAGE_SIZE_OPTION\r\n defaultSortValue = \"createdAt\";\r\n defaultSortDirection = SortDirection.DESC;\r\n first: number | undefined = 0;\r\n\r\n listOptions: ListOptions = {\r\n searchValue: \"\",\r\n paginator: this.rowsChange,\r\n page: 0,\r\n direction: this.defaultSortDirection,\r\n sortBy: this.defaultSortValue\r\n };\r\n\r\n abstract getList(listOptions: ListOptions): void | Observable<T>\r\n\r\n createListFilter(filters: {[key: string] : unknown}): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n ...filters\r\n }\r\n }\r\n\r\n resetList(): void {\r\n this.listOptions = {\r\n searchValue: \"\",\r\n paginator: this.rowsChange,\r\n page: 0\r\n };\r\n }\r\n\r\n resetPaginator(): void {\r\n this.listOptions = {\r\n ...this.listOptions ,\r\n paginator: this.rowsChange,\r\n page: 0\r\n };\r\n }\r\n\r\n onPageChange(event: PaginatorState): void {\r\n this.listOptions = {\r\n ...this.listOptions,\r\n page: event.page,\r\n paginator: event.rows,\r\n };\r\n this.first = event.first ?? 0;\r\n this.getList(this.listOptions);\r\n }\r\n\r\n}\r\n","// Important for global context\r\nimport { LocalStorageKeys, SessionStorageKeys, StorageEnum } from \"./stortage\";\r\n\r\nconst setLocalStorage = (key: string, value: string) => localStorage.setItem(key, value);\r\nconst getLocalStorage = (key: string) => localStorage.getItem(key);\r\nconst clearLocalStorage = () => localStorage.clear();\r\nconst setSessionStorage = (key: string, value: string) => sessionStorage.setItem(key, value);\r\nconst getSessionStorage = (key: string) => sessionStorage.getItem(key);\r\nconst clearSessionStorage = () => sessionStorage.clear();\r\n\r\nexport class StorageHandler {\r\n public static local = {\r\n set: (key: LocalStorageKeys, value: unknown) => this.setItem(key, value, setLocalStorage),\r\n get: <T>(key: LocalStorageKeys) => this.getItem<T>(key, getLocalStorage),\r\n clear: () => this.clearStorage(clearLocalStorage)\r\n };\r\n public static session = {\r\n set: (key: SessionStorageKeys, value: unknown) => this.setItem(key, value, setSessionStorage),\r\n get: <T>(key: SessionStorageKeys) => this.getItem<T>(key, getSessionStorage),\r\n clear: () => this.clearStorage(clearSessionStorage)\r\n };\r\n\r\n private static setItem(key: StorageEnum, value: unknown, set: (key: string, value: string) => void): void {\r\n if (!key) return;\r\n set(key as string, typeof value === \"string\" ? value : JSON.stringify(value));\r\n }\r\n\r\n private static getItem<T>(key: StorageEnum, get: (key: string) => string | null, withParsing = false): T | null {\r\n const data: string | null = get(key as string) ?? null;\r\n if (data) return withParsing ? JSON.parse(data) : data;\r\n return null;\r\n }\r\n\r\n private static clearStorage(clear: () => void): void {\r\n clear();\r\n }\r\n}\r\n","export enum LocalStorageKeys {\r\n LANGUAGE = \"LANGUAGE\",\r\n TOKEN = \"TOKEN\"\r\n}\r\n\r\nexport enum SessionStorageKeys {}\r\nexport type StorageEnum = SessionStorageKeys | LocalStorageKeys;\r\n","import { HttpContext, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Params as RouterParams } from '@angular/router';\r\n\r\nexport interface HttpConfig {\r\n apiUrl?: string;\r\n microServiceUrl:string;\r\n globalMapFn?: (res: any) => any;\r\n methods?: ServiceConfig;\r\n}\r\n\r\nexport type Params =\r\n | HttpParams\r\n | { [param: string]: string | string[] | unknown };\r\nexport type HttpRequestOptions = {\r\n headers?:\r\n | HttpHeaders\r\n | RouterParams\r\n | { [header: string]: string | string[] };\r\n params?: HttpParams | { [param: string]: string | string[] } | Params;\r\n context?: HttpContext;\r\n reportProgress?: boolean;\r\n observe?: 'events';\r\n responseType?: string;\r\n};\r\nexport const HttpRequestOptionsKeys: Array<keyof Required<HttpRequestOptions>> =\r\n ['headers', 'params', 'context', 'reportProgress', 'observe', 'responseType'];\r\n\r\nexport type HttpOptions<T = any> = HttpRequestOptions & {\r\n urlRewrite?: string;\r\n urlPostfix?: string;\r\n mapFn?: (res: any) => T;\r\n};\r\n\r\nexport interface ServiceConfig {\r\n single?: HttpOptions;\r\n getAll?: HttpOptions;\r\n add?: HttpOptions;\r\n update?: HttpOptions;\r\n delete?: HttpOptions;\r\n}\r\n\r\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';\r\n","import { map } from \"rxjs/operators\";\r\nimport { HttpOptions, HttpRequestOptionsKeys } from \"./base-http-types\";\r\nimport { BaseHttpResponse } from \"./base-http-response\";\r\n\r\nexport const resolveUrl = (baseUrl: string, options?: HttpOptions, ...args: string[]): string => {\r\n const { urlRewrite, urlPostfix } = options || {};\r\n\r\n if (urlRewrite) {\r\n return urlRewrite;\r\n }\r\n\r\n let result = baseUrl;\r\n\r\n if (args && args.length > 0 && args[0] !== \"\") {\r\n result += `/${args.join(\"/\")}`;\r\n }\r\n\r\n if (urlPostfix) {\r\n result += `/${urlPostfix}`;\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport const extractRequestOptions = (options?: any) => {\r\n if (!options || typeof options !== \"object\") {\r\n return {};\r\n }\r\n /* eslint-disable */\r\n return HttpRequestOptionsKeys.reduce((requestOptions: any, key) => {\r\n const value = options[key];\r\n\r\n if (value !== undefined) {\r\n requestOptions[key] = value;\r\n }\r\n\r\n return requestOptions;\r\n }, {});\r\n};\r\n\r\nexport const mapResponse = <T>(options?: HttpOptions) => map((res: T) => (options?.mapFn ? options.mapFn(res) : res));\r\n\r\nexport const epmDefaultMapper = <T>(res: BaseHttpResponse<T>) => res.payload;\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpConfig, HttpOptions, ServiceConfig } from './base-http-types';\r\nimport { epmDefaultMapper, extractRequestOptions, mapResponse, resolveUrl } from './base-http-utils';\r\n\r\nexport abstract class BaseHttpService {\r\n private readonly http: HttpClient = inject(HttpClient);\r\n\r\n get url(): string {\r\n const { apiUrl,microServiceUrl } = this.setApiConfig();\r\n return `${microServiceUrl}${apiUrl ? `/${apiUrl}` : ''}`;\r\n }\r\n\r\n get methodsConfig(): ServiceConfig | undefined {\r\n const { methods } = this.setApiConfig();\r\n return methods;\r\n }\r\n\r\n get globalMapFn(): (res: any) => any {\r\n const { globalMapFn } = this.setApiConfig();\r\n return globalMapFn || epmDefaultMapper;\r\n }\r\n\r\n abstract setApiConfig(): HttpConfig;\r\n\r\n single<T>(id: string | number, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('single');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .get<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n getAll<T>(options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('getAll');\r\n const url = resolveUrl(this.url, activeOptions);\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .get<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n add<T>(body: unknown, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('add');\r\n const url = resolveUrl(this.url, activeOptions);\r\n const requestOptions = { ...extractRequestOptions(activeOptions) };\r\n\r\n return this.http\r\n .post<T>(url, body, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n update<T>(\r\n id: string | number,\r\n body: unknown,\r\n options?: HttpOptions\r\n ): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('update');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = { ...extractRequestOptions(activeOptions) };\r\n\r\n return this.http\r\n .put<T>(url, body, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n delete<T>(id: string | number, options?: HttpOptions): Observable<T> {\r\n const activeOptions = options || this.getMethodConfig('delete');\r\n const url = resolveUrl(this.url, activeOptions, id?.toString());\r\n const requestOptions = extractRequestOptions(activeOptions);\r\n\r\n return this.http\r\n .delete<T>(url, requestOptions)\r\n .pipe(mapResponse(this.getMapFun(activeOptions)));\r\n }\r\n\r\n protected getMethodConfig(method: keyof ServiceConfig): any {\r\n return this.methodsConfig ? this.methodsConfig[method] : undefined;\r\n }\r\n\r\n protected getMapFun(options?: HttpOptions) {\r\n const getMapFunObj = {\r\n default: { mapFn: epmDefaultMapper },\r\n custom: { mapFn: this.globalMapFn },\r\n };\r\n\r\n if (\r\n options &&\r\n (options?.reportProgress || options?.responseType === 'blob')\r\n ) {\r\n return { mapFn: (res: unknown) => res };\r\n }\r\n\r\n if (options && options?.mapFn) {\r\n return { mapFn: options.mapFn };\r\n }\r\n\r\n const isGlobalMapFnValid =\r\n this.globalMapFn && typeof this.globalMapFn === 'function';\r\n return isGlobalMapFnValid ? getMapFunObj.custom : getMapFunObj.default;\r\n }\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport interface CoreConfig {\r\n apiPrefix: string;\r\n production: boolean;\r\n gatewayUrl: string;\r\n loginUrl: string;\r\n logoutEndpoint: string;\r\n}\r\n\r\nexport const CORE_CONFIG = new InjectionToken<CoreConfig>(\"CoreConfig\");\r\n","import { Inject, Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { StorageHandler } from \"../handlers/storage-handler\";\r\nimport { LocalStorageKeys } from \"../handlers/stortage\";\r\nimport { BaseHttpService, HttpConfig } from \"./base-http-service\";\r\nimport { CORE_CONFIG, CoreConfig } from \"../core-config\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class AuthService extends BaseHttpService {\r\n public isUserLoggedIn$ = new BehaviorSubject(this.isLoggedIn());\r\n\r\n constructor(@Inject(CORE_CONFIG) protected appConfig: CoreConfig) {\r\n super();\r\n }\r\n\r\n override setApiConfig(): HttpConfig {\r\n return {\r\n apiUrl: \"\",\r\n microServiceUrl: \"\"\r\n };\r\n }\r\n\r\n initAuthentication() {\r\n const token: string | null = new URLSearchParams(window.location.search).get(\"token\");\r\n if (token) {\r\n this.setAuthentication(token);\r\n window.location.search = \"\";\r\n }\r\n }\r\n\r\n setAuthentication(token: string) {\r\n this.isUserLoggedIn$.next(true);\r\n this.setUserToken(token);\r\n }\r\n\r\n isLoggedIn(): boolean {\r\n return !!this.getUserToken();\r\n }\r\n\r\n getUserToken(): string | null {\r\n return StorageHandler.local.get(LocalStorageKeys.TOKEN);\r\n }\r\n\r\n setUserToken(token?: string) {\r\n return StorageHandler.local.set(LocalStorageKeys.TOKEN, token);\r\n }\r\n\r\n logoutFromSSO() {\r\n const logoutUrl = this.appConfig.logoutEndpoint;\r\n return this.single<unknown>(\"\", {\r\n urlRewrite: logoutUrl\r\n });\r\n }\r\n\r\n clearAuth() {\r\n StorageHandler.local.clear();\r\n StorageHandler.session.clear();\r\n this.isUserLoggedIn$.next(false);\r\n window.location.href = this.appConfig.loginUrl;\r\n }\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { jwtDecode } from \"jwt-decode\";\r\nimport { AuthService } from \"./auth.service\";\r\nimport { JWTDecoded } from \"../interfaces/jwt-token-decoded.interface\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class JwtDecoderService {\r\n authService = inject(AuthService);\r\n public decodedToken: JWTDecoded;\r\n\r\n constructor() {\r\n this.decodeToken();\r\n }\r\n\r\n public decodeToken() {\r\n const token: string = this.authService.getUserToken() as string;\r\n if (token) {\r\n this.decodedToken = jwtDecode(token);\r\n }\r\n }\r\n}\r\n","export const COMMON_BASE_URL = \"common/api/v1\";\r\nexport const APP_HTTP_CONFIG = {\r\n BOARD_BASE_URL: \"board-acl/private/v1\",\r\n MEETING_BASE_URL: \"meeting-acl/private/v1\",\r\n IGATE_BASE_URL: COMMON_BASE_URL + \"/igate-users\",\r\n LOV_BASE_URL: COMMON_BASE_URL + \"/lov\",\r\n ATTACHMENT_BASE_URL: COMMON_BASE_URL + \"/attachment\"\r\n};\r\n","import { HttpContext, HttpContextToken } from \"@angular/common/http\";\r\n\r\nexport const IS_SYSTEM_LOADER = new HttpContextToken<boolean>(() => true); // set default loader\r\nexport const USE_API_PREFIX = new HttpContextToken<boolean>(() => true); // set default loader\r\n\r\nexport class HttpContextHandler {\r\n static setLoaderType(isSystemLoader: boolean) {\r\n return new HttpContext().set(IS_SYSTEM_LOADER, isSystemLoader);\r\n }\r\n\r\n static useApiPrefix(hasBaseSegment: boolean) {\r\n return new HttpContext().set(USE_API_PREFIX, hasBaseSegment);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport interface LoaderState {\r\n show: boolean;\r\n isSystemLoader?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LoaderService {\r\n isLoading$ = new BehaviorSubject<LoaderState>({ show: false });\r\n private loadingMap: Map<string, boolean> = new Map<string, boolean>();\r\n\r\n setLoading(loading: boolean, isSystemLoader = true, url: string): void {\r\n if (!url) {\r\n throw new Error(\"The request URL must be provided to the LoaderService.setLoading function\");\r\n }\r\n\r\n if (loading) {\r\n this.loadingMap.set(url, loading);\r\n this.isLoading$.next({ show: true, isSystemLoader });\r\n } else if (!loading && this.loadingMap.has(url)) {\r\n this.loadingMap.delete(url);\r\n }\r\n\r\n if (!this.loadingMap.size) {\r\n this.isLoading$.next({ show: false });\r\n }\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Inject, inject, Injectable } from \"@angular/core\";\r\nimport { finalize, Observable, tap } from \"rxjs\";\r\nimport { IS_SYSTEM_LOADER, USE_API_PREFIX } from \"../handlers/http-context-handler\";\r\nimport { AuthService } from \"../services/auth.service\";\r\nimport { LoaderService } from \"../services/loader.service\";\r\nimport { CORE_CONFIG, CoreConfig } from \"../core-config\";\r\n\r\n@Injectable()\r\nexport class HttpBaseInterceptor implements HttpInterceptor {\r\n authService = inject(AuthService);\r\n loaderService = inject(LoaderService);\r\n\r\n constructor(@Inject(CORE_CONFIG) protected appConfig: CoreConfig) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n const useApiPrefix = request.context.get(USE_API_PREFIX);\r\n const URL = `${this.appConfig.gatewayUrl}${useApiPrefix ? this.appConfig.apiPrefix : \"\"}${request.url}`;\r\n const token = this.authService.getUserToken();\r\n\r\n // Handler header\r\n request = request.clone({\r\n url: URL,\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n Language: \"en\"\r\n }\r\n });\r\n\r\n // Handle loader\r\n const IS_SYSTEM_LOADER_CHECK = request.context.get(IS_SYSTEM_LOADER);\r\n this.loaderService.setLoading(true, IS_SYSTEM_LOADER_CHECK, request.url);\r\n\r\n return next.handle(request).pipe(\r\n // Handler Token\r\n tap((event) => {\r\n // if (event instanceof HttpResponse && request.url.includes(User_Token)) {\r\n // Set user token ..\r\n // }\r\n }),\r\n finalize(() => this.loaderService.setLoading(false, IS_SYSTEM_LOADER_CHECK, request.url))\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Observable, retry, timer } from 'rxjs';\r\n\r\nexport class GlobalHttpErrorInterceptor implements HttpInterceptor {\r\n // check if it is a server error to retry the request\r\n shouldRetry(error: HttpErrorResponse) {\r\n if (error.status >= 500) {\r\n return timer(1000);\r\n }\r\n throw error;\r\n }\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(request).pipe(\r\n retry({\r\n count: 1,\r\n delay: this.shouldRetry\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { APP_HTTP_CONFIG } from '../interceptors';\r\nimport { BaseHttpService, HttpConfig } from './base-http-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ListOfValues extends BaseHttpService {\r\n override setApiConfig(): HttpConfig {\r\n return {\r\n microServiceUrl: APP_HTTP_CONFIG.LOV_BASE_URL,\r\n apiUrl: \"lookups\"\r\n };\r\n }\r\n\r\n getRolesByGroup<T>(group: string): Observable<T> {\r\n return this.getAll<T>({\r\n urlPostfix: group\r\n });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MessageService, ToastMessageOptions } from \"primeng/api\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ToasterService {\r\n mainKey = \"main-toaster\";\r\n\r\n constructor(private messageService: MessageService) {}\r\n\r\n showMessage(options: ToastMessageOptions) {\r\n this.messageService.add({\r\n key: options?.key ? options?.key : this.mainKey,\r\n severity: options?.severity,\r\n summary: options?.summary,\r\n detail: options?.detail,\r\n life: options?.life ?? 5000\r\n });\r\n }\r\n\r\n showSuccess(options: ToastMessageOptions) {\r\n this.messageService.add({\r\n key: this.mainKey,\r\n severity: \"success\",\r\n summary: options?.summary,\r\n detail: options?.detail,\r\n life: options?.life ?? 5000\r\n });\r\n }\r\n\r\n showError(options: ToastMessageOptions) {\r\n this.messageService.add({\r\n key: this.mainKey,\r\n severity: \"error\",\r\n summary: options?.summary,\r\n detail: options?.detail,\r\n life: options?.life ?? 5000\r\n });\r\n }\r\n\r\n showInfo(options: ToastMessageOptions) {\r\n this.messageService.add({\r\n key: this.mainKey,\r\n severity: \"info\",\r\n summary: options?.summary,\r\n detail: options?.detail,\r\n life: options?.life ?? 5000\r\n });\r\n }\r\n\r\n showWarning(key: string, summary: string, detail: string, life = 5000) {\r\n this.messageService.add({\r\n key: this.mainKey,\r\n severity: \"warn\",\r\n summary,\r\n detail,\r\n life\r\n });\r\n }\r\n\r\n clear() {\r\n this.messageService.clear(this.mainKey);\r\n }\r\n}\r\n","import { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { ErrorHandler, Injectable } from \"@angular/core\";\r\nimport { ToasterService } from \"./toaster.service\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { from } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ErrorHandlerService implements ErrorHandler {\r\n constructor(\r\n private toasterService: ToasterService,\r\n private translateService: TranslateService\r\n ) { }\r\n\r\n handleError(error: unknown) {\r\n\r\n // check if there is an error in code\r\n if (error instanceof Error) {\r\n // this is commented because in code error we don't need to show the error to the user\r\n // we can just log it for our reference\r\n console.error(error);\r\n }\r\n\r\n if (error instanceof HttpErrorResponse) {\r\n /**\r\n * error handling here cause the error response is blob file (binary file)\r\n * not JSON, so we can't parse it\r\n * and need to check the content type of the response\r\n **/\r\n if (error?.error?.type === \"application/json\") {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n from((error?.error as any).text()).subscribe((res) => {\r\n const errorObj = JSON.parse(res as string);\r\n const errorMessage = this.translateService.instant(`network_errors.${errorObj.errors.errorCode}`);\r\n this.toasterService.showError({ summary: this.translateService.instant(`error`), detail: errorMessage });\r\n });\r\n return;\r\n }\r\n const errorInfo = error.error;\r\n const errorCode = errorInfo.errors.message;\r\n let errorMessage = errorInfo?.error;\r\n\r\n if (errorInfo.code) {\r\n switch (errorInfo.code) {\r\n case 401:\r\n break;\r\n case 403:\r\n break;\r\n case 400:\r\n errorMessage = this.translateService.instant(`network_errors.${errorCode}`);\r\n\r\n break;\r\n case 404:\r\n if (errorCode) {\r\n errorMessage = this.translateService.instant(`network_errors.${errorCode}`);\r\n break;\r\n }\r\n errorMessage = this.translateService.instant(`validation_error.not_found`);\r\n break;\r\n case 500:\r\n case 503:\r\n errorMessage = this.translateService.instant(`validation_error.server`);\r\n break;\r\n default:\r\n errorMessage = this.translateService.instant(`validation_error.random`);\r\n break;\r\n }\r\n\r\n this.toasterService.showError({ summary: this.translateService.instant(`error`), detail: errorMessage });\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { JwtDecoderService } from \"./jwt-decoder.service\";\r\nimport { PermissionsActions, UserPermissionsEnum } from \"../enums\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PermissionsService {\r\n private jwtDecoderService = inject(JwtDecoderService);\r\n private decodedToken = this.jwtDecoderService.decodedToken;\r\n private tokenPermissions = this.decodedToken ? this.decodedToken.permissions as [] : [];\r\n private domainPermissionsSubject = new BehaviorSubject<string[]>([]);\r\n domainPermissions$ = this.domainPermissionsSubject.asObservable();\r\n\r\n private getKeyName(action: string) {\r\n const actionsArr = action.split(\"_\");\r\n return actionsArr.splice(1, actionsArr.length - 1).join(\"_\");\r\n }\r\n\r\n getActionName(action: string) {\r\n return action.split(\"_\")[0];\r\n }\r\n\r\n getAllowedActionsByKey(key: UserPermissionsEnum, newPermissions?: string[]) {\r\n const permissionsNeeded = newPermissions || this.tokenPermissions;\r\n if (!permissionsNeeded) {\r\n console.error(\"There are no permissions available\");\r\n return [];\r\n }\r\n return permissionsNeeded\r\n .filter((p) => {\r\n return key === this.getKeyName(p);\r\n })\r\n .map((t) => {\r\n return this.getActionName(t);\r\n });\r\n }\r\n\r\n checkKeyHasPermission(key: UserPermissionsEnum, action: PermissionsActions, newPermissions?: string[]) {\r\n return this.getAllowedActionsByKey(key, newPermissions).some((p) => p === action);\r\n }\r\n\r\n checkDomainHasPermission(key: UserPermissionsEnum, action: PermissionsActions) {\r\n return this.getAllowedActionsByKey(key, this.getDomainPermissions()).some((p) => p === action);\r\n }\r\n\r\n routeGuardChecker(key: UserPermissionsEnum, action: PermissionsActions) {\r\n if(!this.checkKeyHasPermission(key, action)){\r\n return this.checkKeyHasPermission(key, action,this.getDomainPermissions());\r\n }\r\n return true;\r\n }\r\n\r\n clearDomainPermissions() {\r\n this.domainPermissionsSubject.next([]);\r\n }\r\n\r\n setDomainPermissions(permissions: string[]) {\r\n this.domainPermissionsSubject.next(permissions);\r\n }\r\n\r\n getDomainPermissions(): string[] {\r\n return this.domainPermissionsSubject.getValue();\r\n }\r\n}\r\n","import { AsyncPipe, NgClass } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport {TranslatePipe} from \"@ngx-translate/core\";\r\nimport {LoaderService} from \"../../services\";\r\n\r\n@Component({\r\n selector: \"global-loader\",\r\n templateUrl: \"./global-loader.component.html\",\r\n styleUrls: [\"./global-loader.component.scss\"],\r\n standalone: true,\r\n imports: [AsyncPipe, NgClass, TranslatePipe]\r\n})\r\nexport class GlobalLoaderComponent {\r\n @Input() color: string;\r\n constructor(public loaderService: LoaderService) {}\r\n}\r\n","@if (loaderService.isLoading$ | async; as data) {\r\n @if (data.show) {\r\n <div\r\n class=\"fixed inset-0 z-[1111] flex justify-center items-center\"\r\n [ngClass]=\"{\r\n 'bg-white/75': data?.isSystemLoader,\r\n 'absolute': !data?.isSystemLoader\r\n }\"\r\n >\r\n <div class=\"text-center flex flex-col gap-5 items-center\">\r\n <div\r\n class=\"animate-spin inline-block w-12 h-12 border-[3px] border-current border-t-transparent text-gray-800 rounded-full\">\r\n </div>\r\n <span>{{ 'loading' | translate }}</span>\r\n </div>\r\n </div>\r\n }\r\n}\r\n","import { inject } from \"@angular/core\";\r\nimport { CanActivateFn } from \"@angular/router\";\r\nimport { AuthService } from \"../services\";\r\nimport { CORE_CONFIG, CoreConfig } from \"../core-config\";\r\n\r\nexport const authGuard: CanActivateFn = () => {\r\n const appConfig = inject<CoreConfig>(CORE_CONFIG);\r\n const authService = inject(AuthService);\r\n const token: string | null = authService.getUserToken();\r\n\r\n if (!token) {\r\n window.location.href = appConfig.loginUrl;\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n","import { inject } from \"@angular/core\";\r\nimport { CanActivateFn, Router } from \"@angular/router\";\r\nimport { PermissionsService } from \"../services\";\r\nimport { RoutePermissionsInfo } from \"../interfaces\";\r\n\r\nexport const permissionsGuard: CanActivateFn = (route) => {\r\n const permissionsService = inject(PermissionsService);\r\n const router = inject(Router);\r\n const { key, action }: RoutePermissionsInfo = route.data[\"permissions\"];\r\n\r\n if (!route.data[\"permissions\"] || (route.data[\"permissions\"] && permissionsService.routeGuardChecker(key, action))) {\r\n return true;\r\n } else {\r\n router.navigate([\"no-access\"]);\r\n return false;\r\n }\r\n};\r\n","export enum UserPermissionsEnum {\r\n BOD = \"BOD\",\r\n BOARD_COMMITTEES = \"BOARD_COMMITTEES\",\r\n BOARD_MEETINGS = \"BOARD_MEETINGS\",\r\n MEETING_INSIDE_THE_BOD = \"MEETING_INSIDE_THE_BOD\",\r\n COMMITTEE = \"COMMITTEE\",\r\n MEETING_INSIDE_THE_COMMITTEE = \"MEETING_INSIDE_THE_COMMITTEE\",\r\n MEETING = \"MEETING\",\r\n DECISION = \"DECISION\",\r\n RECOMMENDATION = \"RECOMMENDATION\",\r\n TASK = \"TASK\",\r\n VOTING = \"VOTING\",\r\n VOTING_SECRETARY_RESULTS = \"VOTING_SECRETARY_RESULTS\",\r\n VOTING_RESULTS = \"VOTING_RESULTS\",\r\n DRAFT_MOM = \"DRAFT_MOM\",\r\n FINAL_MOM = \"FINAL_MOM\",\r\n MOM = \"MOM\",\r\n AGENDA = \"AGENDA\",\r\n ATTENDEES = \"ATTENDEES\",\r\n COMMENT = \"COMMENT\"\r\n}\r\n\r\nexport enum PermissionsActions {\r\n VIEW = \"VIEW\",\r\n CREATE = \"CREATE\",\r\n EDIT = \"EDIT\",\r\n DELETE = \"DELETE\",\r\n REORDER = \"REORDER\",\r\n DOWNLOAD = \"DOWNLOAD\",\r\n MARK = \"MARK\",\r\n GENERATE = \"GENERATE\",\r\n TERMINATE = \"TERMINATE\",\r\n START = \"START\",\r\n END = \"END\",\r\n ACTIVATE = \"ACTIVATE\"\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { PermissionsService } from '../services';\r\nimport { PermissionsActions, UserPermissionsEnum } from '../enums';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[hasPermissions]',\r\n standalone: true\r\n})\r\nexport class HasPermissionsDirective implements OnInit, OnDestroy {\r\n private _actions: string[];\r\n private _key: string;\r\n private _newPermissions: string[];\r\n private _isDomain: boolean;\r\n\r\n private isViewCreated = false;\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private permissionsService: PermissionsService,\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<unknown>\r\n ) {}\r\n\r\n /**\r\n * make sure that the key value looks like the UserPermissionsEnum enum\r\n * usage: *permissions=\"[PermissionsActions.EDIT]; key: LOOKUPS\r\n */\r\n\r\n @Input({ required: true }) set hasPermissions(actions: string[]) {\r\n if (this.arraysChanged(this._actions, actions)) {\r\n this._actions = actions;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input({ required: true }) set hasPermissionsKey(key: string) {\r\n if (this._key !== key) {\r\n this._key = key;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input() set hasPermissionsNewPermissions(newPermissions: string[]) {\r\n if (this.arraysChanged(this._newPermissions, newPermissions)) {\r\n this._newPermissions = newPermissions;\r\n this.updateView();\r\n }\r\n }\r\n\r\n @Input() set hasPermissionsIsDomain(isDomain: boolean) {\r\n if (this._isDomain !== isDomain) {\r\n this._isDomain = isDomain;\r\n this.updateView();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.permissionsService.domainPermissions$.subscribe(() => {\r\n if (this._isDomain) {\r\n this.updateView();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n private updateView() {\r\n const canShow = this._actions.some(action => this.hasPermission(action));\r\n\r\n if (canShow && !this.isViewCreated) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n this.isViewCreated = true;\r\n } else if (!canShow && this.isViewCreated) {\r\n this.clearView();\r\n }\r\n }\r\n\r\n private hasPermission(action: string): boolean {\r\n if (this._isDomain) {\r\n return this.permissionsService.checkDomainHasPermission(\r\n this._key as UserPermissionsEnum,\r\n action as PermissionsActions\r\n );\r\n }\r\n\r\n return this.permissionsService.checkKeyHasPermission(\r\n this._key as UserPermissionsEnum,\r\n action as PermissionsActions,\r\n this._newPermissions\r\n );\r\n }\r\n\r\n private clearView() {\r\n this.viewContainer.clear();\r\n this.isViewCreated = false;\r\n }\r\n\r\n private arraysChanged(a?: string[], b?: string[]): boolean {\r\n if (a === b) return false;\r\n if (!a || !b) return true;\r\n if (a.length !== b.length) return true;\r\n return a.some((v, i) => v !== b[i]);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ToasterService","i1.LoaderService","i1.PermissionsService"],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { HttpContext, HttpContextToken } from
|
|
1
|
+
import { HttpContext, HttpContextToken } from "@angular/common/http";
|
|
2
2
|
export declare const IS_SYSTEM_LOADER: HttpContextToken<boolean>;
|
|
3
|
+
export declare const USE_API_PREFIX: HttpContextToken<boolean>;
|
|
3
4
|
export declare class HttpContextHandler {
|
|
4
5
|
static setLoaderType(isSystemLoader: boolean): HttpContext;
|
|
6
|
+
static useApiPrefix(hasBaseSegment: boolean): HttpContext;
|
|
5
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { HttpOptions } from
|
|
2
|
-
import { BaseHttpResponse } from
|
|
1
|
+
import { HttpOptions } from "./base-http-types";
|
|
2
|
+
import { BaseHttpResponse } from "./base-http-response";
|
|
3
3
|
export declare const resolveUrl: (baseUrl: string, options?: HttpOptions, ...args: string[]) => string;
|
|
4
4
|
export declare const extractRequestOptions: (options?: any) => any;
|
|
5
5
|
export declare const mapResponse: <T>(options?: HttpOptions) => import("rxjs").OperatorFunction<T, any>;
|