@apipass/frontend-utils 1.0.197 → 1.0.198
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/cerbos/cerbos-http.repository.d.ts +3 -0
- package/cerbos/cerbos.mapper.d.ts +9 -2
- package/cerbos/cerbos.repository.d.ts +3 -0
- package/cerbos/cerbos.service.d.ts +2 -1
- package/cerbos/cerbos.service.interface.d.ts +2 -1
- package/cerbos/interfaces/index.d.ts +2 -0
- package/cerbos/interfaces/plan-resource-check.interface.d.ts +4 -0
- package/cerbos/interfaces/plan-resources-result.interface.d.ts +7 -0
- package/esm2022/cerbos/cerbos-http.repository.mjs +5 -1
- package/esm2022/cerbos/cerbos.mapper.mjs +11 -1
- package/esm2022/cerbos/cerbos.repository.mjs +1 -1
- package/esm2022/cerbos/cerbos.service.interface.mjs +1 -1
- package/esm2022/cerbos/cerbos.service.mjs +12 -2
- package/esm2022/cerbos/interfaces/index.mjs +3 -1
- package/esm2022/cerbos/interfaces/plan-resource-check.interface.mjs +2 -0
- package/esm2022/cerbos/interfaces/plan-resources-result.interface.mjs +2 -0
- package/fesm2022/apipass-frontend-utils.mjs +24 -0
- package/fesm2022/apipass-frontend-utils.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { CerbosRepository } from './cerbos.repository';
|
|
2
2
|
import type { CheckResourcesRequest, CheckResourcesResponse } from '@cerbos/core';
|
|
3
|
+
import { PlanResourcesPayload } from './cerbos.mapper';
|
|
4
|
+
import { PlanResourcesResult } from './interfaces';
|
|
3
5
|
import { HttpClient } from '@angular/common/http';
|
|
4
6
|
export declare class CerbosHttpRepository implements CerbosRepository {
|
|
5
7
|
private readonly httpClient;
|
|
6
8
|
private readonly apiUrl;
|
|
7
9
|
constructor(httpClient: HttpClient, apiUrl: string);
|
|
8
10
|
checkResources(payload: CheckResourcesRequest): Promise<CheckResourcesResponse>;
|
|
11
|
+
planResources(payload: PlanResourcesPayload): Promise<PlanResourcesResult>;
|
|
9
12
|
}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
import { UserInfo, ResourceCheck } from './interfaces';
|
|
2
|
-
import { CheckResourcesRequest } from '@cerbos/core';
|
|
1
|
+
import { UserInfo, ResourceCheck, PlanResourceCheck } from './interfaces';
|
|
2
|
+
import { CheckResourcesRequest, Principal, ResourceQuery } from '@cerbos/core';
|
|
3
3
|
export declare function mapCerbosPayload(userInfo: UserInfo, checks: ResourceCheck[]): CheckResourcesRequest;
|
|
4
|
+
/** Request body for the raw `POST /api/plan/resources` PDP endpoint (protojson shape, not the SDK's flattened response type). */
|
|
5
|
+
export interface PlanResourcesPayload {
|
|
6
|
+
principal: Principal;
|
|
7
|
+
resource: ResourceQuery;
|
|
8
|
+
actions: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function mapCerbosPlanPayload(userInfo: UserInfo, check: PlanResourceCheck): PlanResourcesPayload;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { CheckResourcesRequest, CheckResourcesResponse } from '@cerbos/core';
|
|
2
|
+
import { PlanResourcesPayload } from './cerbos.mapper';
|
|
3
|
+
import { PlanResourcesResult } from './interfaces';
|
|
2
4
|
export interface CerbosRepository {
|
|
3
5
|
checkResources(payload: CheckResourcesRequest): Promise<CheckResourcesResponse>;
|
|
6
|
+
planResources(payload: PlanResourcesPayload): Promise<PlanResourcesResult>;
|
|
4
7
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CerbosRepository } from './cerbos.repository';
|
|
2
|
-
import { UserInfo, ResourceCheck } from './interfaces';
|
|
2
|
+
import { UserInfo, ResourceCheck, PlanResourceCheck, PlanResourcesResult } from './interfaces';
|
|
3
3
|
import { ICerbosService } from './cerbos.service.interface';
|
|
4
4
|
export declare class CerbosService implements ICerbosService {
|
|
5
5
|
private readonly repo;
|
|
6
6
|
constructor(repo: CerbosRepository);
|
|
7
7
|
checkResources(userInfo: UserInfo, checks: ResourceCheck[]): Promise<Record<string, Record<string, boolean>>>;
|
|
8
|
+
planResources(userInfo: UserInfo, check: PlanResourceCheck): Promise<PlanResourcesResult>;
|
|
8
9
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import { UserInfo, ResourceCheck } from './interfaces';
|
|
2
|
+
import { UserInfo, ResourceCheck, PlanResourceCheck, PlanResourcesResult } from './interfaces';
|
|
3
3
|
export interface ICerbosService {
|
|
4
4
|
checkResources(userInfo: UserInfo, checks: ResourceCheck[]): Promise<Record<string, Record<string, boolean>>>;
|
|
5
|
+
planResources(userInfo: UserInfo, check: PlanResourceCheck): Promise<PlanResourcesResult>;
|
|
5
6
|
}
|
|
6
7
|
export declare const CERBOS_SERVICE: InjectionToken<ICerbosService>;
|
|
@@ -10,5 +10,9 @@ export class CerbosHttpRepository {
|
|
|
10
10
|
const url = `${this.apiUrl}/api/check/resources`;
|
|
11
11
|
return await lastValueFrom(this.httpClient.post(url, payload));
|
|
12
12
|
}
|
|
13
|
+
async planResources(payload) {
|
|
14
|
+
const url = `${this.apiUrl}/api/plan/resources`;
|
|
15
|
+
return await lastValueFrom(this.httpClient.post(url, payload));
|
|
16
|
+
}
|
|
13
17
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VyYm9zLWh0dHAucmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zyb250ZW5kLXV0aWxzL3NyYy9jZXJib3MvY2VyYm9zLWh0dHAucmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE1BQU0sT0FBTyxvQkFBb0I7SUFFRjtJQUF5QztJQUF0RSxZQUE2QixVQUFzQixFQUFtQixNQUFjO1FBQXZELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFeEYsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE4QjtRQUNqRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLHNCQUFzQixDQUFDO1FBQ2pELE9BQU8sTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQXlCLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQTZCO1FBQy9DLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0scUJBQXFCLENBQUM7UUFDaEQsT0FBTyxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBc0IsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2VyYm9zUmVwb3NpdG9yeSB9IGZyb20gJy4vY2VyYm9zLnJlcG9zaXRvcnknXG5pbXBvcnQgdHlwZSB7IENoZWNrUmVzb3VyY2VzUmVxdWVzdCwgQ2hlY2tSZXNvdXJjZXNSZXNwb25zZSB9IGZyb20gJ0BjZXJib3MvY29yZSdcbmltcG9ydCB7IFBsYW5SZXNvdXJjZXNQYXlsb2FkIH0gZnJvbSAnLi9jZXJib3MubWFwcGVyJ1xuaW1wb3J0IHsgUGxhblJlc291cmNlc1Jlc3VsdCB9IGZyb20gJy4vaW50ZXJmYWNlcydcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIENlcmJvc0h0dHBSZXBvc2l0b3J5IGltcGxlbWVudHMgQ2VyYm9zUmVwb3NpdG9yeSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwcml2YXRlIHJlYWRvbmx5IGFwaVVybDogc3RyaW5nKSB7fVxuXG4gIGFzeW5jIGNoZWNrUmVzb3VyY2VzKHBheWxvYWQ6IENoZWNrUmVzb3VyY2VzUmVxdWVzdCk6IFByb21pc2U8Q2hlY2tSZXNvdXJjZXNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBpVXJsfS9hcGkvY2hlY2svcmVzb3VyY2VzYDtcbiAgICByZXR1cm4gYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQucG9zdDxDaGVja1Jlc291cmNlc1Jlc3BvbnNlPih1cmwsIHBheWxvYWQpKTtcbiAgfVxuXG4gIGFzeW5jIHBsYW5SZXNvdXJjZXMocGF5bG9hZDogUGxhblJlc291cmNlc1BheWxvYWQpOiBQcm9taXNlPFBsYW5SZXNvdXJjZXNSZXN1bHQ+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaVVybH0vYXBpL3BsYW4vcmVzb3VyY2VzYDtcbiAgICByZXR1cm4gYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQucG9zdDxQbGFuUmVzb3VyY2VzUmVzdWx0Pih1cmwsIHBheWxvYWQpKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -11,4 +11,14 @@ export function mapCerbosPayload(userInfo, checks) {
|
|
|
11
11
|
}));
|
|
12
12
|
return { principal, resources };
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
export function mapCerbosPlanPayload(userInfo, check) {
|
|
15
|
+
const principal = {
|
|
16
|
+
id: userInfo.accountId,
|
|
17
|
+
roles: userInfo.roles,
|
|
18
|
+
scope: userInfo.domain,
|
|
19
|
+
attr: { accountId: userInfo.accountId }
|
|
20
|
+
};
|
|
21
|
+
const resource = { kind: check.kind, scope: userInfo.domain, attr: { accountId: userInfo.accountId } };
|
|
22
|
+
return { principal, resource, actions: [check.action] };
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VyYm9zLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zyb250ZW5kLXV0aWxzL3NyYy9jZXJib3MvY2VyYm9zLm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBa0IsRUFBRSxNQUF1QjtJQUMxRSxNQUFNLFNBQVMsR0FBYztRQUMzQixFQUFFLEVBQUUsUUFBUSxDQUFDLFNBQVM7UUFDdEIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO1FBQ3JCLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTTtRQUN0QixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRTtLQUN4QyxDQUFBO0lBRUQsTUFBTSxTQUFTLEdBQTBCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDbkcsT0FBTztLQUNSLENBQUMsQ0FBQyxDQUFBO0lBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQTtBQUNqQyxDQUFDO0FBU0QsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQWtCLEVBQUUsS0FBd0I7SUFDL0UsTUFBTSxTQUFTLEdBQWM7UUFDM0IsRUFBRSxFQUFFLFFBQVEsQ0FBQyxTQUFTO1FBQ3RCLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztRQUNyQixLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU07UUFDdEIsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUU7S0FDeEMsQ0FBQTtJQUVELE1BQU0sUUFBUSxHQUFrQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQTtJQUVySCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckluZm8sIFJlc291cmNlQ2hlY2ssIFBsYW5SZXNvdXJjZUNoZWNrIH0gZnJvbSAnLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2hlY2tSZXNvdXJjZXNSZXF1ZXN0LCBQcmluY2lwYWwsIFJlc291cmNlQ2hlY2sgYXMgQ2VyYm9zUmVzb3VyY2VDaGVjaywgUmVzb3VyY2VRdWVyeSB9IGZyb20gJ0BjZXJib3MvY29yZSdcblxuZXhwb3J0IGZ1bmN0aW9uIG1hcENlcmJvc1BheWxvYWQodXNlckluZm86IFVzZXJJbmZvLCBjaGVja3M6IFJlc291cmNlQ2hlY2tbXSk6IENoZWNrUmVzb3VyY2VzUmVxdWVzdCB7XG4gIGNvbnN0IHByaW5jaXBhbDogUHJpbmNpcGFsID0ge1xuICAgIGlkOiB1c2VySW5mby5hY2NvdW50SWQsXG4gICAgcm9sZXM6IHVzZXJJbmZvLnJvbGVzLFxuICAgIHNjb3BlOiB1c2VySW5mby5kb21haW4sXG4gICAgYXR0cjogeyBhY2NvdW50SWQ6IHVzZXJJbmZvLmFjY291bnRJZCB9XG4gIH1cblxuICBjb25zdCByZXNvdXJjZXM6IENlcmJvc1Jlc291cmNlQ2hlY2tbXSA9IGNoZWNrcy5tYXAoKHsga2luZCwgYWN0aW9ucywgaWQgfSkgPT4gKHtcbiAgICByZXNvdXJjZTogeyBraW5kLCBpZDogaWQgPz8ga2luZCwgc2NvcGU6IHVzZXJJbmZvLmRvbWFpbiwgYXR0cjogeyBhY2NvdW50SWQ6IHVzZXJJbmZvLmFjY291bnRJZCB9IH0sXG4gICAgYWN0aW9uc1xuICB9KSlcblxuICByZXR1cm4geyBwcmluY2lwYWwsIHJlc291cmNlcyB9XG59XG5cbi8qKiBSZXF1ZXN0IGJvZHkgZm9yIHRoZSByYXcgYFBPU1QgL2FwaS9wbGFuL3Jlc291cmNlc2AgUERQIGVuZHBvaW50IChwcm90b2pzb24gc2hhcGUsIG5vdCB0aGUgU0RLJ3MgZmxhdHRlbmVkIHJlc3BvbnNlIHR5cGUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFuUmVzb3VyY2VzUGF5bG9hZCB7XG4gIHByaW5jaXBhbDogUHJpbmNpcGFsXG4gIHJlc291cmNlOiBSZXNvdXJjZVF1ZXJ5XG4gIGFjdGlvbnM6IHN0cmluZ1tdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBDZXJib3NQbGFuUGF5bG9hZCh1c2VySW5mbzogVXNlckluZm8sIGNoZWNrOiBQbGFuUmVzb3VyY2VDaGVjayk6IFBsYW5SZXNvdXJjZXNQYXlsb2FkIHtcbiAgY29uc3QgcHJpbmNpcGFsOiBQcmluY2lwYWwgPSB7XG4gICAgaWQ6IHVzZXJJbmZvLmFjY291bnRJZCxcbiAgICByb2xlczogdXNlckluZm8ucm9sZXMsXG4gICAgc2NvcGU6IHVzZXJJbmZvLmRvbWFpbixcbiAgICBhdHRyOiB7IGFjY291bnRJZDogdXNlckluZm8uYWNjb3VudElkIH1cbiAgfVxuXG4gIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZVF1ZXJ5ID0geyBraW5kOiBjaGVjay5raW5kLCBzY29wZTogdXNlckluZm8uZG9tYWluLCBhdHRyOiB7IGFjY291bnRJZDogdXNlckluZm8uYWNjb3VudElkIH0gfVxuXG4gIHJldHVybiB7IHByaW5jaXBhbCwgcmVzb3VyY2UsIGFjdGlvbnM6IFtjaGVjay5hY3Rpb25dIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VyYm9zLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVuZC11dGlscy9zcmMvY2VyYm9zL2NlcmJvcy5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGVja1Jlc291cmNlc1JlcXVlc3QsIENoZWNrUmVzb3VyY2VzUmVzcG9uc2UgfSBmcm9tICdAY2VyYm9zL2NvcmUnXG5pbXBvcnQgeyBQbGFuUmVzb3VyY2VzUGF5bG9hZCB9IGZyb20gJy4vY2VyYm9zLm1hcHBlcidcbmltcG9ydCB7IFBsYW5SZXNvdXJjZXNSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VyYm9zUmVwb3NpdG9yeSB7XG4gIGNoZWNrUmVzb3VyY2VzKHBheWxvYWQ6IENoZWNrUmVzb3VyY2VzUmVxdWVzdCk6IFByb21pc2U8Q2hlY2tSZXNvdXJjZXNSZXNwb25zZT5cbiAgcGxhblJlc291cmNlcyhwYXlsb2FkOiBQbGFuUmVzb3VyY2VzUGF5bG9hZCk6IFByb21pc2U8UGxhblJlc291cmNlc1Jlc3VsdD5cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
export const CERBOS_SERVICE = new InjectionToken('CERBOS_SERVICE');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VyYm9zLnNlcnZpY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZnJvbnRlbmQtdXRpbHMvc3JjL2NlcmJvcy9jZXJib3Muc2VydmljZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQVE5QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBVc2VySW5mbywgUmVzb3VyY2VDaGVjaywgUGxhblJlc291cmNlQ2hlY2ssIFBsYW5SZXNvdXJjZXNSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNlcmJvc1NlcnZpY2Uge1xuICBjaGVja1Jlc291cmNlcyh1c2VySW5mbzogVXNlckluZm8sIGNoZWNrczogUmVzb3VyY2VDaGVja1tdKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4+XG4gIHBsYW5SZXNvdXJjZXModXNlckluZm86IFVzZXJJbmZvLCBjaGVjazogUGxhblJlc291cmNlQ2hlY2spOiBQcm9taXNlPFBsYW5SZXNvdXJjZXNSZXN1bHQ+XG59XG5cbmV4cG9ydCBjb25zdCBDRVJCT1NfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ2VyYm9zU2VydmljZT4oJ0NFUkJPU19TRVJWSUNFJylcbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mapCerbosPayload } from './cerbos.mapper';
|
|
1
|
+
import { mapCerbosPayload, mapCerbosPlanPayload } from './cerbos.mapper';
|
|
2
2
|
export class CerbosService {
|
|
3
3
|
repo;
|
|
4
4
|
constructor(repo) {
|
|
@@ -29,5 +29,15 @@ export class CerbosService {
|
|
|
29
29
|
return buildDefault();
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
+
async planResources(userInfo, check) {
|
|
33
|
+
try {
|
|
34
|
+
const payload = mapCerbosPlanPayload(userInfo, check);
|
|
35
|
+
return await this.repo.planResources(payload);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
console.error(`${CerbosService.name} - ERROR`, e);
|
|
39
|
+
return { filter: { kind: 'KIND_ALWAYS_DENIED' } };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
32
42
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VyYm9zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVuZC11dGlscy9zcmMvY2VyYm9zL2NlcmJvcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBSXhFLE1BQU0sT0FBTyxhQUFhO0lBRUs7SUFBN0IsWUFBNkIsSUFBc0I7UUFBdEIsU0FBSSxHQUFKLElBQUksQ0FBa0I7SUFBRyxDQUFDO0lBRXZELEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBa0IsRUFBRSxNQUF1QjtRQUM5RCxNQUFNLFlBQVksR0FBRyxHQUE0QyxFQUFFLENBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQTBDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7WUFDN0YsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFUixJQUFJO1lBQ0YsTUFBTSxPQUFPLEdBQTBCLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUN6RSxNQUFNLFFBQVEsR0FBMkIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNoRixNQUFNLEdBQUcsR0FBRyxZQUFZLEVBQUUsQ0FBQTtZQUMxQixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMzQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUMxRCxJQUFJLEtBQUssRUFBRTtvQkFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRTt3QkFDbkUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssY0FBYyxDQUFBO3dCQUN4RCxPQUFPLFNBQVMsQ0FBQTtvQkFDbEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO2lCQUNsQztnQkFDRCxPQUFPLE1BQU0sQ0FBQTtZQUNmLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUNSO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ2pELE9BQU8sWUFBWSxFQUFFLENBQUE7U0FDdEI7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFrQixFQUFFLEtBQXdCO1FBQzlELElBQUk7WUFDRixNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDckQsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQzlDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxDQUFBO1NBQ2xEO0lBQ0gsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2VyYm9zUmVwb3NpdG9yeSB9IGZyb20gJy4vY2VyYm9zLnJlcG9zaXRvcnknXG5pbXBvcnQgeyBVc2VySW5mbywgUmVzb3VyY2VDaGVjaywgUGxhblJlc291cmNlQ2hlY2ssIFBsYW5SZXNvdXJjZXNSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBtYXBDZXJib3NQYXlsb2FkLCBtYXBDZXJib3NQbGFuUGF5bG9hZCB9IGZyb20gJy4vY2VyYm9zLm1hcHBlcidcbmltcG9ydCB7IElDZXJib3NTZXJ2aWNlIH0gZnJvbSAnLi9jZXJib3Muc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBDaGVja1Jlc291cmNlc1JlcXVlc3QsIENoZWNrUmVzb3VyY2VzUmVzcG9uc2UgfSBmcm9tICdAY2VyYm9zL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQ2VyYm9zU2VydmljZSBpbXBsZW1lbnRzIElDZXJib3NTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlcG86IENlcmJvc1JlcG9zaXRvcnkpIHt9XG5cbiAgYXN5bmMgY2hlY2tSZXNvdXJjZXModXNlckluZm86IFVzZXJJbmZvLCBjaGVja3M6IFJlc291cmNlQ2hlY2tbXSk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4+PiB7XG4gICAgY29uc3QgYnVpbGREZWZhdWx0ID0gKCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PiA9PlxuICAgICAgY2hlY2tzLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4+KChhY2MsIGMpID0+IHtcbiAgICAgICAgYWNjW2Mua2luZF0gPSBjLmFjdGlvbnMucmVkdWNlKChhLCBhY3Rpb24pID0+ICh7IC4uLmEsIFthY3Rpb25dOiBmYWxzZSB9KSwgYWNjW2Mua2luZF0gPz8ge30pXG4gICAgICAgIHJldHVybiBhY2NcbiAgICAgIH0sIHt9KVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheWxvYWQ6IENoZWNrUmVzb3VyY2VzUmVxdWVzdCA9IG1hcENlcmJvc1BheWxvYWQodXNlckluZm8sIGNoZWNrcylcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBDaGVja1Jlc291cmNlc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXBvLmNoZWNrUmVzb3VyY2VzKHBheWxvYWQpXG4gICAgICBjb25zdCBhY2MgPSBidWlsZERlZmF1bHQoKVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlc3VsdHMucmVkdWNlKChyZXN1bHQsIHIpID0+IHtcbiAgICAgICAgY29uc3QgY2hlY2sgPSBjaGVja3MuZmluZChjID0+IGMua2luZCA9PT0gci5yZXNvdXJjZS5raW5kKVxuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICByZXN1bHRbci5yZXNvdXJjZS5raW5kXSA9IGNoZWNrLmFjdGlvbnMucmVkdWNlKChhY3Rpb25NYXAsIGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgYWN0aW9uTWFwW2FjdGlvbl0gPSByLmFjdGlvbnNbYWN0aW9uXSA9PT0gJ0VGRkVDVF9BTExPVydcbiAgICAgICAgICAgIHJldHVybiBhY3Rpb25NYXBcbiAgICAgICAgICB9LCByZXN1bHRbci5yZXNvdXJjZS5raW5kXSA/PyB7fSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9LCBhY2MpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtDZXJib3NTZXJ2aWNlLm5hbWV9IC0gRVJST1JgLCBlKVxuICAgICAgcmV0dXJuIGJ1aWxkRGVmYXVsdCgpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcGxhblJlc291cmNlcyh1c2VySW5mbzogVXNlckluZm8sIGNoZWNrOiBQbGFuUmVzb3VyY2VDaGVjayk6IFByb21pc2U8UGxhblJlc291cmNlc1Jlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gbWFwQ2VyYm9zUGxhblBheWxvYWQodXNlckluZm8sIGNoZWNrKVxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwby5wbGFuUmVzb3VyY2VzKHBheWxvYWQpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtDZXJib3NTZXJ2aWNlLm5hbWV9IC0gRVJST1JgLCBlKVxuICAgICAgcmV0dXJuIHsgZmlsdGVyOiB7IGtpbmQ6ICdLSU5EX0FMV0FZU19ERU5JRUQnIH0gfVxuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export * from './user-info';
|
|
2
2
|
export * from './resource-check.interface';
|
|
3
|
-
|
|
3
|
+
export * from './plan-resource-check.interface';
|
|
4
|
+
export * from './plan-resources-result.interface';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVuZC11dGlscy9zcmMvY2VyYm9zL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMsbUNBQW1DLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3VzZXItaW5mbydcbmV4cG9ydCAqIGZyb20gJy4vcmVzb3VyY2UtY2hlY2suaW50ZXJmYWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9wbGFuLXJlc291cmNlLWNoZWNrLmludGVyZmFjZSdcbmV4cG9ydCAqIGZyb20gJy4vcGxhbi1yZXNvdXJjZXMtcmVzdWx0LmludGVyZmFjZSdcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbi1yZXNvdXJjZS1jaGVjay5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVuZC11dGlscy9zcmMvY2VyYm9zL2ludGVyZmFjZXMvcGxhbi1yZXNvdXJjZS1jaGVjay5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGxhblJlc291cmNlQ2hlY2sge1xuICBraW5kOiBzdHJpbmdcbiAgYWN0aW9uOiBzdHJpbmdcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbi1yZXNvdXJjZXMtcmVzdWx0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zyb250ZW5kLXV0aWxzL3NyYy9jZXJib3MvaW50ZXJmYWNlcy9wbGFuLXJlc291cmNlcy1yZXN1bHQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFBsYW5SZXNvdXJjZXNGaWx0ZXIge1xuICBraW5kOiBzdHJpbmdcbiAgY29uZGl0aW9uPzogdW5rbm93blxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYW5SZXNvdXJjZXNSZXN1bHQge1xuICBmaWx0ZXI6IFBsYW5SZXNvdXJjZXNGaWx0ZXJcbn1cbiJdfQ==
|
|
@@ -425,6 +425,16 @@ function mapCerbosPayload(userInfo, checks) {
|
|
|
425
425
|
}));
|
|
426
426
|
return { principal, resources };
|
|
427
427
|
}
|
|
428
|
+
function mapCerbosPlanPayload(userInfo, check) {
|
|
429
|
+
const principal = {
|
|
430
|
+
id: userInfo.accountId,
|
|
431
|
+
roles: userInfo.roles,
|
|
432
|
+
scope: userInfo.domain,
|
|
433
|
+
attr: { accountId: userInfo.accountId }
|
|
434
|
+
};
|
|
435
|
+
const resource = { kind: check.kind, scope: userInfo.domain, attr: { accountId: userInfo.accountId } };
|
|
436
|
+
return { principal, resource, actions: [check.action] };
|
|
437
|
+
}
|
|
428
438
|
|
|
429
439
|
class CerbosService {
|
|
430
440
|
repo;
|
|
@@ -456,6 +466,16 @@ class CerbosService {
|
|
|
456
466
|
return buildDefault();
|
|
457
467
|
}
|
|
458
468
|
}
|
|
469
|
+
async planResources(userInfo, check) {
|
|
470
|
+
try {
|
|
471
|
+
const payload = mapCerbosPlanPayload(userInfo, check);
|
|
472
|
+
return await this.repo.planResources(payload);
|
|
473
|
+
}
|
|
474
|
+
catch (e) {
|
|
475
|
+
console.error(`${CerbosService.name} - ERROR`, e);
|
|
476
|
+
return { filter: { kind: 'KIND_ALWAYS_DENIED' } };
|
|
477
|
+
}
|
|
478
|
+
}
|
|
459
479
|
}
|
|
460
480
|
|
|
461
481
|
class CerbosHttpRepository {
|
|
@@ -469,6 +489,10 @@ class CerbosHttpRepository {
|
|
|
469
489
|
const url = `${this.apiUrl}/api/check/resources`;
|
|
470
490
|
return await lastValueFrom(this.httpClient.post(url, payload));
|
|
471
491
|
}
|
|
492
|
+
async planResources(payload) {
|
|
493
|
+
const url = `${this.apiUrl}/api/plan/resources`;
|
|
494
|
+
return await lastValueFrom(this.httpClient.post(url, payload));
|
|
495
|
+
}
|
|
472
496
|
}
|
|
473
497
|
|
|
474
498
|
function provideCerbos(url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apipass-frontend-utils.mjs","sources":["../../../projects/frontend-utils/src/file.utils.ts","../../../projects/frontend-utils/src/form.utils.ts","../../../projects/frontend-utils/src/iframe.message.ts","../../../projects/frontend-utils/src/remove-empty-attributes.ts","../../../projects/frontend-utils/src/sass-utils.ts","../../../projects/frontend-utils/src/sort.ts","../../../projects/frontend-utils/src/sort-utils.ts","../../../projects/frontend-utils/src/step.utils.ts","../../../projects/frontend-utils/src/time-utils.ts","../../../projects/frontend-utils/src/color-utils.ts","../../../projects/frontend-utils/src/string-utils.ts","../../../projects/frontend-utils/src/language.util.ts","../../../projects/frontend-utils/src/event.emitter.service.ts","../../../projects/frontend-utils/src/event.ts","../../../projects/frontend-utils/src/beautify.utils.ts","../../../projects/frontend-utils/src/mfe/load-remote-module.directive.ts","../../../projects/frontend-utils/src/mfe/configure-remote-routes.ts","../../../projects/frontend-utils/src/cerbos/cerbos.service.interface.ts","../../../projects/frontend-utils/src/cerbos/cerbos.mapper.ts","../../../projects/frontend-utils/src/cerbos/cerbos.service.ts","../../../projects/frontend-utils/src/cerbos/cerbos-http.repository.ts","../../../projects/frontend-utils/src/cerbos/cerbos.providers.ts","../../../projects/frontend-utils/src/apipass-frontend-utils.ts"],"sourcesContent":["export function downloadFile (blob: any, filename: string): void {\n const url = window.URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.style.display = 'none'\n a.href = url\n a.download = filename\n document.body.appendChild(a)\n a.click()\n window.URL.revokeObjectURL(url)\n}\n","import { AbstractControl, FormGroup, Validators } from '@angular/forms'\n\nexport function markAllFormFieldAsDirty (form: FormGroup): void {\n for (const field in form.controls) {\n if (form.controls.hasOwnProperty(field)) {\n form.controls[field].markAsDirty()\n form.controls[field].markAsTouched()\n }\n }\n}\n\nexport function markAllFormFieldAsPristine (form: FormGroup): void {\n for (const field in form.controls) {\n if (form.controls.hasOwnProperty(field)) {\n form.controls[field].markAsPristine()\n form.controls[field].markAsUntouched()\n }\n }\n}\n\nexport function disableIfEnableElseFormControl (form: AbstractControl, formControlName: string, condition: boolean): void {\n condition ? form?.get(formControlName)?.disable() : form?.get(formControlName)?.enable()\n}\n\nexport function enableIfDisableElseFormControl (form: AbstractControl, formControlName: string, condition: boolean): void {\n condition ? form?.get(formControlName)?.enable() : form?.get(formControlName)?.disable()\n}\n\nexport function disableFormControl (form: FormGroup, formControlName: string): void {\n form?.get(formControlName)?.disable()\n}\n\nexport function enableFormControl (form: FormGroup, formControlName: string): void {\n form?.get(formControlName)?.enable()\n}\n\nexport function habilitarTodosOsCamposDoFormGroup (form: FormGroup): void {\n Object.keys(form.controls).forEach((key) => {\n form?.get(key)?.enable()\n })\n}\n\nexport function desabilitarTodosOsCamposDoFormGroup (form: FormGroup): void {\n Object.keys(form.controls).forEach((key) => {\n form?.get(key)?.disable()\n })\n}\n\nexport function adicionarValidacaoRequiredNoFormControl (form: FormGroup, keyFormControl: string): void {\n form?.get(keyFormControl)?.setValidators(Validators.required)\n form?.get(keyFormControl)?.updateValueAndValidity()\n}\n","export class IframeMessage {\n\n static insideIframe (): boolean {\n return window !== window.parent\n }\n\n static sendMessage (message: any): void {\n if (this.insideIframe()) {\n window.parent.postMessage(message, '*')\n }\n }\n\n static sendLoadedMessage (): void {\n this.sendMessage({ loaded: true })\n }\n\n static sendUnauthorizedMessage (): void {\n this.sendMessage({ unauthorized: true })\n }\n\n}\n","import { isEmptyObject } from 'jquery'\n\nexport function removeEmptyAttributes (obj: any): any {\n if (Array.isArray(obj)) {\n return obj\n .map(v => (v && isObject(v)) ? removeEmptyAttributes(v) : v)\n .filter(v => !(v == null) && !(isEmptyObject(v)))\n } else {\n return Object.entries(obj)\n .map(([k, v]) => [k, v && isObject(v) ? removeEmptyAttributes(v) : v])\n .reduce((a: any, [k, v]) => (v == null || isEmptyObject(v) ? a : (a[k] = v, a)), {})\n }\n}\n\nfunction isObject (value: any): boolean {\n return value !== null && typeof value === 'object'\n}\n","export function getScssVarValue (name: string): string {\n return getComputedStyle(document.body).getPropertyValue(name)\n}\n","export type Direction = Array<boolean | 'asc' | 'desc'>\n\nexport class Sort {\n\n attributes: string[]\n directions: Direction\n\n constructor (attributes: string[], directions: Direction) {\n this.attributes = attributes\n this.directions = directions\n }\n\n}\n","import { type Sort } from './sort'\nimport * as _ from 'lodash'\n\nexport function orderBy (list: any[], sort: Sort): any[] {\n if (!list || !sort || !sort.attributes || !sort.directions) { return list }\n return _.orderBy(list, sort.attributes, sort.directions)\n}\n","export function isUUID (text: string): boolean {\n const uuidRegex: RegExp = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n return uuidRegex.test(text)\n}\n","import moment from 'moment'\n\nexport function getDuration (dateStart: Date, dateEnd: Date): string {\n if (!dateStart || !dateEnd) { return '--' }\n const difTime = moment(dateEnd).diff(moment(dateStart), 'milliseconds')\n if (Number.isNaN(difTime)) { return '--' }\n if (difTime > 5000) { return Math.round(difTime / 1000) + ' sec' }\n return difTime + ' ms'\n}\n","import tinycolor from 'tinycolor2'\nimport hexToRgba from 'hex-to-rgba'\n\nexport function getRGBAArray (hex: string): any[] {\n let rgba: string = convertHexToRGB(hex)\n rgba = rgba.replace('rgba(', '')\n rgba = rgba.replace(')', '')\n return rgba.split(',')\n}\n\nexport function convertHexToRGB (color: string, alpha?: string | number): string {\n return hexToRgba(color, alpha)\n}\n\nexport function shadeBlendHexColor (hex: string, percent: number): any {\n return tinycolor(hex).lighten(percent).toString()\n}\n\nexport function changePrimaryColor (element: string, hex: any): void {\n const color = hex\n changeCssColorVariable(element, '--color-primary', color)\n changeCssColorVariable(element, '--mdc-theme-primary', color)\n changeCssColorVariable(element, '--color-primary-hover', shadeBlendHexColor(color, -7))\n changeCssColorVariable(element, '--color-primary-active', shadeBlendHexColor(color, 7))\n}\n\nexport function changeSecondaryColor (element: string, hex: any): void {\n const color = hex\n changeCssColorVariable(element, '--color-secondary', color)\n changeCssColorVariable(element, '--mdc-theme-secondary', color)\n changeCssColorVariable(element, '--color-secondary-hover', shadeBlendHexColor(color, -15))\n changeCssColorVariable(element, '--color-secondary-active', shadeBlendHexColor(color, 15))\n}\n\nexport function changeTertiaryColor (element: string, hex: any): void {\n const color = hex\n changeCssColorVariable(element, '--color-tertiary', color)\n changeCssColorVariable(element, '--mdc-theme-tertiary', color)\n changeCssColorVariable(element, '--color-fonts-tertiary', shadeBlendHexColor(color, -35))\n changeCssColorVariable(element, '--color-tertiary-hover', shadeBlendHexColor(color, -15))\n changeCssColorVariable(element, '--color-tertiary-active', shadeBlendHexColor(color, 15))\n}\n\nexport function changeCssColorVariable (element: string, colorProperty: string, hex: any): void {\n if (!element) {\n element = ':root'\n }\n const root: any = document.querySelector(element)\n root.style.setProperty(colorProperty, hex)\n}\n","export function validateEmail (email: string): boolean {\n const regularExpression = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n return regularExpression.test(String(email).toLowerCase())\n}\n","import { registerLocaleData } from '@angular/common';\nimport localePt from '@angular/common/locales/pt';\nimport localeEn from '@angular/common/locales/en';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport class LanguageUtil {\n\n static getLanguage(userLanguage?: string): string {\n if (userLanguage) {\n return LanguageUtil.prepareLocale(userLanguage);\n }\n\n const languageStorage = window.localStorage.getItem('apipass-user-language');\n if (languageStorage) {\n return languageStorage;\n }\n\n const navigatorLanguage = navigator.language;\n if (navigatorLanguage.split('-')[0] === 'pt') {\n return 'pt-BR';\n }\n return 'en-US';\n }\n\n private static prepareLocale(language: string): string {\n if (language?.toLowerCase() === 'en') {\n return 'en-US'\n } else if (language?.toLowerCase() === 'pt') {\n return 'pt-BR'\n }\n return language\n }\n\n static registerLanguage(translate?: TranslateService, userLanguage?: string): string {\n const language: string = LanguageUtil.getLanguage(userLanguage);\n if (language === 'pt-BR') {\n registerLocaleData(localePt, language);\n } else {\n registerLocaleData(localeEn, language);\n }\n if (translate) {\n translate.use(language);\n }\n if (userLanguage) {\n window.localStorage.setItem('apipass-user-language', language);\n }\n return language;\n }\n\n}\n","import { EventEmitter } from '@angular/core';\n\nexport class EventEmitterService {\n\n private static emitters: Record<string, EventEmitter<any>> = {};\n\n static get(eventName: string): EventEmitter<any> {\n if (!this.emitters[eventName]) {\n this.emitters[eventName] = new EventEmitter<any>();\n }\n return this.emitters[eventName];\n }\n\n}\n","export function applicationFireEventService (event: string, detail?: Record<any, any>): void {\n window.dispatchEvent(new CustomEvent(event, { detail }))\n}\n\nexport function applicationSubscribeEventService (event: string, listener: EventListener): void {\n window.addEventListener(event, listener);\n}\n\nexport function applicationUnSubscribeEventService (event: string): void {\n window.removeEventListener(event, undefined);\n}\n","import vkBeautify from 'vkbeautify';\n\nexport function isJSON(text: string): boolean {\n try {\n vkBeautify.json(text);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isXML(text: string): boolean {\n try {\n vkBeautify.xml(text);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isSQL(text: string): boolean {\n try {\n vkBeautify.sql(text);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isHTML(text: string): boolean {\n try {\n vkBeautify.html(text);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function beautifyRawDataContent(text: string): string {\n if (isJSON(text)) {\n return vkBeautify.json(text, 2)\n } else if (isXML(text)) {\n return vkBeautify.xml(text);\n } else if (isSQL(text)) {\n return vkBeautify.sql(text);\n } else if (isHTML(text)) {\n return vkBeautify.html(text);\n } else {\n return text;\n }\n}\n","import { loadRemoteModule } from '@angular-architects/module-federation';\nimport {\n ComponentRef,\n createNgModule,\n Directive,\n EventEmitter,\n Injector,\n Input,\n NgModuleRef, OnChanges, OnInit,\n Output,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { RemoteModule } from './remote-module';\n\ninterface ICacheItem {\n component: Type<unknown>\n ngModuleRef: NgModuleRef<unknown>\n}\n\n@Directive()\nexport abstract class LoadRemoteModuleDirective implements OnInit, OnChanges {\n\n static cache: Map<string, ICacheItem> = new Map<string, ICacheItem>();\n\n @Input() remoteComponent: RemoteModule\n @Output() loaded: EventEmitter<{ instance: unknown }> = new EventEmitter<{ instance: unknown }>();\n\n private componentRef: ComponentRef<unknown>;\n\n public constructor(\n private readonly viewRef: ViewContainerRef,\n private readonly injectable: Injector\n ) {\n }\n\n async ngOnInit(): Promise<void> {\n const componentModuleRef = await this.getComponent();\n this.componentRef = this.viewRef.createComponent(componentModuleRef.component, {\n injector: this.injectable,\n ngModuleRef: componentModuleRef.ngModuleRef\n });\n this.setComponentParameters(this.componentRef);\n this.loaded.emit({ instance: this.componentRef.instance });\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n ngOnChanges(): void {\n if (this.componentRef) {\n this.setComponentParameters(this.componentRef);\n this.componentRef.changeDetectorRef.markForCheck();\n }\n }\n\n protected setComponentParameters(componentRef: ComponentRef<any>): void {\n const componentProperties = Object.keys(componentRef?.instance);\n const instanceProperties = Object.keys(this);\n componentProperties?.forEach(property => {\n if (property === '__ngContext__') {\n return;\n }\n const existsInInstanceProperties = instanceProperties?.find(instance => instance === property);\n if (existsInInstanceProperties) {\n componentRef.instance[property] = this[property]\n }\n })\n }\n\n private async getComponent(): Promise<ICacheItem> {\n const key = this.getKey();\n\n if (LoadRemoteModuleDirective.cache.has(key)) {\n return LoadRemoteModuleDirective.cache.get(key);\n }\n\n return await this.loadComponent();\n }\n\n private async loadComponent(): Promise<ICacheItem> {\n const remoteModule = await loadRemoteModule({\n remoteEntry: this.remoteComponent?.remoteEntry,\n remoteName: this.remoteComponent?.remoteName,\n exposedModule: this.remoteComponent?.exposedModule\n });\n\n const remoteComponent = await loadRemoteModule({\n remoteEntry: this.remoteComponent?.remoteEntry,\n remoteName: this.remoteComponent?.remoteName,\n exposedModule: this.remoteComponent?.componentRefName\n });\n const module = remoteModule[this.remoteComponent?.exposedModule];\n const component = remoteComponent[this.remoteComponent?.componentRefName];\n const ngModuleRef = await this.createModule(module);\n const componentAndModule = {\n component,\n ngModuleRef\n };\n LoadRemoteModuleDirective.cache.set(this.getKey(), componentAndModule);\n return componentAndModule;\n }\n\n private getKey(): string {\n return `${this.remoteComponent?.remoteEntry}-\n ${this.remoteComponent?.remoteName}-\n ${this.remoteComponent?.exposedModule}-\n ${this.remoteComponent?.componentRefName}`;\n }\n\n private async createModule(moduleOrFactory: any): Promise<NgModuleRef<any>> {\n return createNgModule<any>(moduleOrFactory, this.injectable);\n }\n\n}\n","import { RemoteModule } from './remote-module';\nimport { Routes } from '@angular/router';\nimport { loadRemoteModule } from '@angular-architects/module-federation';\n\nexport function configureRemoteRoutes(remoteModules: RemoteModule[]): Routes {\n return remoteModules?.filter(remote => remote.routePath)?.map(remote => {\n return {\n path: remote.routePath,\n loadChildren: (): any => loadRemoteModule({\n type: 'script',\n remoteEntry: remote.remoteEntry,\n remoteName: remote.remoteName,\n exposedModule: remote.exposedModule\n }).then(m => {\n return m[remote.exposedModule]\n }),\n canActivate: remote.canActivate,\n data: { guard: remote.guardFunctionName }\n }\n })\n}\n","import { InjectionToken } from '@angular/core'\nimport { UserInfo, ResourceCheck } from './interfaces'\n\nexport interface ICerbosService {\n checkResources(userInfo: UserInfo, checks: ResourceCheck[]): Promise<Record<string, Record<string, boolean>>>\n}\n\nexport const CERBOS_SERVICE = new InjectionToken<ICerbosService>('CERBOS_SERVICE')\n","import { UserInfo, ResourceCheck } from './interfaces'\nimport { CheckResourcesRequest, Principal, ResourceCheck as CerbosResourceCheck } from '@cerbos/core'\n\nexport function mapCerbosPayload(userInfo: UserInfo, checks: ResourceCheck[]): CheckResourcesRequest {\n const principal: Principal = {\n id: userInfo.accountId,\n roles: userInfo.roles,\n scope: userInfo.domain,\n attr: { accountId: userInfo.accountId }\n }\n\n const resources: CerbosResourceCheck[] = checks.map(({ kind, actions, id }) => ({\n resource: { kind, id: id ?? kind, scope: userInfo.domain, attr: { accountId: userInfo.accountId } },\n actions\n }))\n\n return { principal, resources }\n}\n","import { CerbosRepository } from './cerbos.repository'\nimport { UserInfo, ResourceCheck } from './interfaces'\nimport { mapCerbosPayload } from './cerbos.mapper'\nimport { ICerbosService } from './cerbos.service.interface'\nimport { CheckResourcesRequest, CheckResourcesResponse } from '@cerbos/core';\n\nexport class CerbosService implements ICerbosService {\n\n constructor(private readonly repo: CerbosRepository) {}\n\n async checkResources(userInfo: UserInfo, checks: ResourceCheck[]): Promise<Record<string, Record<string, boolean>>> {\n const buildDefault = (): Record<string, Record<string, boolean>> =>\n checks.reduce<Record<string, Record<string, boolean>>>((acc, c) => {\n acc[c.kind] = c.actions.reduce((a, action) => ({ ...a, [action]: false }), acc[c.kind] ?? {})\n return acc\n }, {})\n\n try {\n const payload: CheckResourcesRequest = mapCerbosPayload(userInfo, checks)\n const response: CheckResourcesResponse = await this.repo.checkResources(payload)\n const acc = buildDefault()\n return response.results.reduce((result, r) => {\n const check = checks.find(c => c.kind === r.resource.kind)\n if (check) {\n result[r.resource.kind] = check.actions.reduce((actionMap, action) => {\n actionMap[action] = r.actions[action] === 'EFFECT_ALLOW'\n return actionMap\n }, result[r.resource.kind] ?? {})\n }\n return result\n }, acc)\n } catch (e) {\n console.error(`${CerbosService.name} - ERROR`, e)\n return buildDefault()\n }\n }\n\n}\n","import { CerbosRepository } from './cerbos.repository'\nimport type { CheckResourcesRequest, CheckResourcesResponse } from '@cerbos/core'\nimport { HttpClient } from '@angular/common/http'\nimport { lastValueFrom } from 'rxjs';\n\nexport class CerbosHttpRepository implements CerbosRepository {\n\n constructor(private readonly httpClient: HttpClient, private readonly apiUrl: string) {}\n\n async checkResources(payload: CheckResourcesRequest): Promise<CheckResourcesResponse> {\n const url = `${this.apiUrl}/api/check/resources`;\n return await lastValueFrom(this.httpClient.post<CheckResourcesResponse>(url, payload));\n }\n\n}\n","import { Provider } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { CERBOS_SERVICE } from './cerbos.service.interface'\nimport { CerbosService } from './cerbos.service'\nimport { CerbosHttpRepository } from './cerbos-http.repository'\n\nexport function provideCerbos(url: string): Provider {\n return {\n provide: CERBOS_SERVICE,\n useFactory: (http: HttpClient) => new CerbosService(new CerbosHttpRepository(http, url)),\n deps: [HttpClient]\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAgB,SAAA,YAAY,CAAE,IAAS,EAAE,QAAgB,EAAA;IACvD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AACrC,IAAA,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;AACxB,IAAA,CAAC,CAAC,IAAI,GAAG,GAAG,CAAA;AACZ,IAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACrB,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC,CAAC,KAAK,EAAE,CAAA;AACT,IAAA,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;AACjC;;ACPM,SAAU,uBAAuB,CAAE,IAAe,EAAA;AACtD,IAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;YAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAA;AACrC,SAAA;AACF,KAAA;AACH,CAAC;AAEK,SAAU,0BAA0B,CAAE,IAAe,EAAA;AACzD,IAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAA;YACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAA;AACvC,SAAA;AACF,KAAA;AACH,CAAC;SAEe,8BAA8B,CAAE,IAAqB,EAAE,eAAuB,EAAE,SAAkB,EAAA;IAChH,SAAS,GAAG,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;AAC1F,CAAC;SAEe,8BAA8B,CAAE,IAAqB,EAAE,eAAuB,EAAE,SAAkB,EAAA;IAChH,SAAS,GAAG,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAA;AAC1F,CAAC;AAEe,SAAA,kBAAkB,CAAE,IAAe,EAAE,eAAuB,EAAA;IAC1E,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAA;AACvC,CAAC;AAEe,SAAA,iBAAiB,CAAE,IAAe,EAAE,eAAuB,EAAA;IACzE,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;AACtC,CAAC;AAEK,SAAU,iCAAiC,CAAE,IAAe,EAAA;AAChE,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;QACzC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;AAC1B,KAAC,CAAC,CAAA;AACJ,CAAC;AAEK,SAAU,mCAAmC,CAAE,IAAe,EAAA;AAClE,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;QACzC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAA;AAC3B,KAAC,CAAC,CAAA;AACJ,CAAC;AAEe,SAAA,uCAAuC,CAAE,IAAe,EAAE,cAAsB,EAAA;AAC9F,IAAA,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC7D,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,sBAAsB,EAAE,CAAA;AACrD;;MCnDa,aAAa,CAAA;AAExB,IAAA,OAAO,YAAY,GAAA;AACjB,QAAA,OAAO,MAAM,KAAK,MAAM,CAAC,MAAM,CAAA;KAChC;IAED,OAAO,WAAW,CAAE,OAAY,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACxC,SAAA;KACF;AAED,IAAA,OAAO,iBAAiB,GAAA;QACtB,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;KACnC;AAED,IAAA,OAAO,uBAAuB,GAAA;QAC5B,IAAI,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;KACzC;AAEF;;AClBK,SAAU,qBAAqB,CAAE,GAAQ,EAAA;AAC7C,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,QAAA,OAAO,GAAG;aACP,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC3D,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACvB,aAAA,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,aAAA,MAAM,CAAC,CAAC,CAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACvF,KAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAE,KAAU,EAAA;IAC3B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAA;AACpD;;AChBM,SAAU,eAAe,CAAE,IAAY,EAAA;IAC3C,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAC/D;;MCAa,IAAI,CAAA;AAEf,IAAA,UAAU,CAAU;AACpB,IAAA,UAAU,CAAW;IAErB,WAAa,CAAA,UAAoB,EAAE,UAAqB,EAAA;AACtD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;KAC7B;AAEF;;ACTe,SAAA,OAAO,CAAE,IAAW,EAAE,IAAU,EAAA;AAC9C,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAAE,QAAA,OAAO,IAAI,CAAA;AAAE,KAAA;AAC3E,IAAA,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;AAC1D;;ACNM,SAAU,MAAM,CAAE,IAAY,EAAA;IAClC,MAAM,SAAS,GAAW,+EAA+E,CAAC;AAC1G,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7B;;ACDgB,SAAA,WAAW,CAAE,SAAe,EAAE,OAAa,EAAA;AACzD,IAAA,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;AAAE,QAAA,OAAO,IAAI,CAAA;AAAE,KAAA;AAC3C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,CAAA;AACvE,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAAE,QAAA,OAAO,IAAI,CAAA;AAAE,KAAA;IAC1C,IAAI,OAAO,GAAG,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,MAAM,CAAA;AAAE,KAAA;IAClE,OAAO,OAAO,GAAG,KAAK,CAAA;AACxB;;ACLM,SAAU,YAAY,CAAE,GAAW,EAAA;AACvC,IAAA,IAAI,IAAI,GAAW,eAAe,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC5B,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAEe,SAAA,eAAe,CAAE,KAAa,EAAE,KAAuB,EAAA;AACrE,IAAA,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAChC,CAAC;AAEe,SAAA,kBAAkB,CAAE,GAAW,EAAE,OAAe,EAAA;AAC9D,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;AACnD,CAAC;AAEe,SAAA,kBAAkB,CAAE,OAAe,EAAE,GAAQ,EAAA;IAC3D,MAAM,KAAK,GAAG,GAAG,CAAA;AACjB,IAAA,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;AACzD,IAAA,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAA;AAC7D,IAAA,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AACvF,IAAA,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;AACzF,CAAC;AAEe,SAAA,oBAAoB,CAAE,OAAe,EAAE,GAAQ,EAAA;IAC7D,MAAM,KAAK,GAAG,GAAG,CAAA;AACjB,IAAA,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAA;AAC3D,IAAA,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAA;AAC/D,IAAA,sBAAsB,CAAC,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC1F,IAAA,sBAAsB,CAAC,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;AAC5F,CAAC;AAEe,SAAA,mBAAmB,CAAE,OAAe,EAAE,GAAQ,EAAA;IAC5D,MAAM,KAAK,GAAG,GAAG,CAAA;AACjB,IAAA,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA;AAC1D,IAAA,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAA;AAC9D,IAAA,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACzF,IAAA,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACzF,IAAA,sBAAsB,CAAC,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;AAC3F,CAAC;SAEe,sBAAsB,CAAE,OAAe,EAAE,aAAqB,EAAE,GAAQ,EAAA;IACtF,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,GAAG,OAAO,CAAA;AAClB,KAAA;IACD,MAAM,IAAI,GAAQ,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACjD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;AAC5C;;ACjDM,SAAU,aAAa,CAAE,KAAa,EAAA;IAC1C,MAAM,iBAAiB,GAAG,yJAAyJ,CAAA;AACnL,IAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAC5D;;MCEa,YAAY,CAAA;IAEvB,OAAO,WAAW,CAAC,YAAqB,EAAA;AACtC,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,OAAO,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACjD,SAAA;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC7E,QAAA,IAAI,eAAe,EAAE;AACnB,YAAA,OAAO,eAAe,CAAC;AACxB,SAAA;AAED,QAAA,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,CAAC;QAC7C,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5C,YAAA,OAAO,OAAO,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IAEO,OAAO,aAAa,CAAC,QAAgB,EAAA;AAC3C,QAAA,IAAI,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;AACpC,YAAA,OAAO,OAAO,CAAA;AACf,SAAA;AAAM,aAAA,IAAI,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;AAC3C,YAAA,OAAO,OAAO,CAAA;AACf,SAAA;AACD,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED,IAAA,OAAO,gBAAgB,CAAC,SAA4B,EAAE,YAAqB,EAAA;QACzE,MAAM,QAAQ,GAAW,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,QAAQ,KAAK,OAAO,EAAE;AACxB,YAAA,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACxC,SAAA;AAAM,aAAA;AACL,YAAA,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzB,SAAA;AACD,QAAA,IAAI,YAAY,EAAE;YAChB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;AAChE,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;AAEF;;AC/CD,MAAa,mBAAmB,CAAA;AAEtB,IAAA,OAAO,QAAQ,GAAsC,EAAE,CAAC;IAEhE,OAAO,GAAG,CAAC,SAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,YAAY,EAAO,CAAC;AACpD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KACjC;;;ACXa,SAAA,2BAA2B,CAAE,KAAa,EAAE,MAAyB,EAAA;AACnF,IAAA,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC;AAEe,SAAA,gCAAgC,CAAE,KAAa,EAAE,QAAuB,EAAA;AACtF,IAAA,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAEK,SAAU,kCAAkC,CAAE,KAAa,EAAA;AAC/D,IAAA,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC/C;;ACRM,SAAU,MAAM,CAAC,IAAY,EAAA;IACjC,IAAI;AACF,QAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAAC,MAAM;AACN,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH,CAAC;AAEK,SAAU,KAAK,CAAC,IAAY,EAAA;IAChC,IAAI;AACF,QAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAAC,MAAM;AACN,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH,CAAC;AAEK,SAAU,KAAK,CAAC,IAAY,EAAA;IAChC,IAAI;AACF,QAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAAC,MAAM;AACN,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH,CAAC;AAEK,SAAU,MAAM,CAAC,IAAY,EAAA;IACjC,IAAI;AACF,QAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAAC,MAAM;AACN,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH,CAAC;AAEK,SAAU,sBAAsB,CAAC,IAAY,EAAA;AACjD,IAAA,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;QAChB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAChC,KAAA;AAAM,SAAA,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AACtB,QAAA,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAA;AAAM,SAAA,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AACtB,QAAA,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAA;AAAM,SAAA,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACvB,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACH;;AC9BA,MACsB,yBAAyB,CAAA;AAU1B,IAAA,OAAA,CAAA;AACA,IAAA,UAAA,CAAA;AATnB,IAAA,OAAO,KAAK,GAA4B,IAAI,GAAG,EAAsB,CAAC;AAE7D,IAAA,eAAe,CAAc;AAC5B,IAAA,MAAM,GAAwC,IAAI,YAAY,EAAyB,CAAC;AAE1F,IAAA,YAAY,CAAwB;IAE5C,WACmB,CAAA,OAAyB,EACzB,UAAoB,EAAA;QADpB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;QACzB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAU;KAEtC;AAED,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,EAAE;YAC7E,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,WAAW,EAAE,kBAAkB,CAAC,WAAW;AAC5C,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACpD;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACpD,SAAA;KACF;AAES,IAAA,sBAAsB,CAAC,YAA+B,EAAA;QAC9D,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAA,mBAAmB,EAAE,OAAO,CAAC,QAAQ,IAAG;YACtC,IAAI,QAAQ,KAAK,eAAe,EAAE;gBAChC,OAAO;AACR,aAAA;AACD,YAAA,MAAM,0BAA0B,GAAG,kBAAkB,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAC/F,YAAA,IAAI,0BAA0B,EAAE;gBAC9B,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;AACjD,aAAA;AACH,SAAC,CAAC,CAAA;KACH;AAEO,IAAA,MAAM,YAAY,GAAA;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE1B,IAAI,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC5C,OAAO,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjD,SAAA;AAED,QAAA,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;KACnC;AAEO,IAAA,MAAM,aAAa,GAAA;AACzB,QAAA,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC;AAC1C,YAAA,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW;AAC9C,YAAA,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU;AAC5C,YAAA,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa;AACnD,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC;AAC7C,YAAA,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW;AAC9C,YAAA,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU;AAC5C,YAAA,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB;AACtD,SAAA,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACpD,QAAA,MAAM,kBAAkB,GAAG;YACzB,SAAS;YACT,WAAW;SACZ,CAAC;AACF,QAAA,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACvE,QAAA,OAAO,kBAAkB,CAAC;KAC3B;IAEO,MAAM,GAAA;AACZ,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,eAAe,EAAE,WAAW,CAAA;QACvC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAA;QAChC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAA;AACnC,MAAA,EAAA,IAAI,CAAC,eAAe,EAAE,gBAAgB,EAAE,CAAC;KAC9C;IAEO,MAAM,YAAY,CAAC,eAAoB,EAAA;QAC7C,OAAO,cAAc,CAAM,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC9D;uGAzFmB,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;8HAKC,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACI,MAAM,EAAA,CAAA;sBAAf,MAAM;;;ACtBH,SAAU,qBAAqB,CAAC,aAA6B,EAAA;AACjE,IAAA,OAAO,aAAa,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,IAAG;QACrE,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,SAAS;AACtB,YAAA,YAAY,EAAE,MAAW,gBAAgB,CAAC;AACxC,gBAAA,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;AACpC,aAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAG;AACV,gBAAA,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AAChC,aAAC,CAAC;YACF,WAAW,EAAE,MAAM,CAAC,WAAW;AAC/B,YAAA,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE;SAC1C,CAAA;AACH,KAAC,CAAC,CAAA;AACJ;;MCba,cAAc,GAAG,IAAI,cAAc,CAAiB,gBAAgB;;ACJjE,SAAA,gBAAgB,CAAC,QAAkB,EAAE,MAAuB,EAAA;AAC1E,IAAA,MAAM,SAAS,GAAc;QAC3B,EAAE,EAAE,QAAQ,CAAC,SAAS;QACtB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,QAAQ,CAAC,MAAM;AACtB,QAAA,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE;KACxC,CAAA;AAED,IAAA,MAAM,SAAS,GAA0B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM;QAC9E,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE;QACnG,OAAO;AACR,KAAA,CAAC,CAAC,CAAA;AAEH,IAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA;AACjC;;MCXa,aAAa,CAAA;AAEK,IAAA,IAAA,CAAA;AAA7B,IAAA,WAAA,CAA6B,IAAsB,EAAA;QAAtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;KAAI;AAEvD,IAAA,MAAM,cAAc,CAAC,QAAkB,EAAE,MAAuB,EAAA;AAC9D,QAAA,MAAM,YAAY,GAAG,MACnB,MAAM,CAAC,MAAM,CAA0C,CAAC,GAAG,EAAE,CAAC,KAAI;AAChE,YAAA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AAC7F,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;QAER,IAAI;YACF,MAAM,OAAO,GAA0B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACzE,MAAM,QAAQ,GAA2B,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;AAChF,YAAA,MAAM,GAAG,GAAG,YAAY,EAAE,CAAA;YAC1B,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;gBAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC1D,gBAAA,IAAI,KAAK,EAAE;AACT,oBAAA,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,KAAI;AACnE,wBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,cAAc,CAAA;AACxD,wBAAA,OAAO,SAAS,CAAA;AAClB,qBAAC,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AAClC,iBAAA;AACD,gBAAA,OAAO,MAAM,CAAA;aACd,EAAE,GAAG,CAAC,CAAA;AACR,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAG,EAAA,aAAa,CAAC,IAAI,CAAU,QAAA,CAAA,EAAE,CAAC,CAAC,CAAA;YACjD,OAAO,YAAY,EAAE,CAAA;AACtB,SAAA;KACF;AAEF;;MChCY,oBAAoB,CAAA;AAEF,IAAA,UAAA,CAAA;AAAyC,IAAA,MAAA,CAAA;IAAtE,WAA6B,CAAA,UAAsB,EAAmB,MAAc,EAAA;QAAvD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAmB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KAAI;IAExF,MAAM,cAAc,CAAC,OAA8B,EAAA;AACjD,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,sBAAsB,CAAC;AACjD,QAAA,OAAO,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAyB,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;KACxF;AAEF;;ACRK,SAAU,aAAa,CAAC,GAAW,EAAA;IACvC,OAAO;AACL,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,UAAU,EAAE,CAAC,IAAgB,KAAK,IAAI,aAAa,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxF,IAAI,EAAE,CAAC,UAAU,CAAC;KACnB,CAAA;AACH;;ACZA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"apipass-frontend-utils.mjs","sources":["../../../projects/frontend-utils/src/file.utils.ts","../../../projects/frontend-utils/src/form.utils.ts","../../../projects/frontend-utils/src/iframe.message.ts","../../../projects/frontend-utils/src/remove-empty-attributes.ts","../../../projects/frontend-utils/src/sass-utils.ts","../../../projects/frontend-utils/src/sort.ts","../../../projects/frontend-utils/src/sort-utils.ts","../../../projects/frontend-utils/src/step.utils.ts","../../../projects/frontend-utils/src/time-utils.ts","../../../projects/frontend-utils/src/color-utils.ts","../../../projects/frontend-utils/src/string-utils.ts","../../../projects/frontend-utils/src/language.util.ts","../../../projects/frontend-utils/src/event.emitter.service.ts","../../../projects/frontend-utils/src/event.ts","../../../projects/frontend-utils/src/beautify.utils.ts","../../../projects/frontend-utils/src/mfe/load-remote-module.directive.ts","../../../projects/frontend-utils/src/mfe/configure-remote-routes.ts","../../../projects/frontend-utils/src/cerbos/cerbos.service.interface.ts","../../../projects/frontend-utils/src/cerbos/cerbos.mapper.ts","../../../projects/frontend-utils/src/cerbos/cerbos.service.ts","../../../projects/frontend-utils/src/cerbos/cerbos-http.repository.ts","../../../projects/frontend-utils/src/cerbos/cerbos.providers.ts","../../../projects/frontend-utils/src/apipass-frontend-utils.ts"],"sourcesContent":["export function downloadFile (blob: any, filename: string): void {\n const url = window.URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.style.display = 'none'\n a.href = url\n a.download = filename\n document.body.appendChild(a)\n a.click()\n window.URL.revokeObjectURL(url)\n}\n","import { AbstractControl, FormGroup, Validators } from '@angular/forms'\n\nexport function markAllFormFieldAsDirty (form: FormGroup): void {\n for (const field in form.controls) {\n if (form.controls.hasOwnProperty(field)) {\n form.controls[field].markAsDirty()\n form.controls[field].markAsTouched()\n }\n }\n}\n\nexport function markAllFormFieldAsPristine (form: FormGroup): void {\n for (const field in form.controls) {\n if (form.controls.hasOwnProperty(field)) {\n form.controls[field].markAsPristine()\n form.controls[field].markAsUntouched()\n }\n }\n}\n\nexport function disableIfEnableElseFormControl (form: AbstractControl, formControlName: string, condition: boolean): void {\n condition ? form?.get(formControlName)?.disable() : form?.get(formControlName)?.enable()\n}\n\nexport function enableIfDisableElseFormControl (form: AbstractControl, formControlName: string, condition: boolean): void {\n condition ? form?.get(formControlName)?.enable() : form?.get(formControlName)?.disable()\n}\n\nexport function disableFormControl (form: FormGroup, formControlName: string): void {\n form?.get(formControlName)?.disable()\n}\n\nexport function enableFormControl (form: FormGroup, formControlName: string): void {\n form?.get(formControlName)?.enable()\n}\n\nexport function habilitarTodosOsCamposDoFormGroup (form: FormGroup): void {\n Object.keys(form.controls).forEach((key) => {\n form?.get(key)?.enable()\n })\n}\n\nexport function desabilitarTodosOsCamposDoFormGroup (form: FormGroup): void {\n Object.keys(form.controls).forEach((key) => {\n form?.get(key)?.disable()\n })\n}\n\nexport function adicionarValidacaoRequiredNoFormControl (form: FormGroup, keyFormControl: string): void {\n form?.get(keyFormControl)?.setValidators(Validators.required)\n form?.get(keyFormControl)?.updateValueAndValidity()\n}\n","export class IframeMessage {\n\n static insideIframe (): boolean {\n return window !== window.parent\n }\n\n static sendMessage (message: any): void {\n if (this.insideIframe()) {\n window.parent.postMessage(message, '*')\n }\n }\n\n static sendLoadedMessage (): void {\n this.sendMessage({ loaded: true })\n }\n\n static sendUnauthorizedMessage (): void {\n this.sendMessage({ unauthorized: true })\n }\n\n}\n","import { isEmptyObject } from 'jquery'\n\nexport function removeEmptyAttributes (obj: any): any {\n if (Array.isArray(obj)) {\n return obj\n .map(v => (v && isObject(v)) ? removeEmptyAttributes(v) : v)\n .filter(v => !(v == null) && !(isEmptyObject(v)))\n } else {\n return Object.entries(obj)\n .map(([k, v]) => [k, v && isObject(v) ? removeEmptyAttributes(v) : v])\n .reduce((a: any, [k, v]) => (v == null || isEmptyObject(v) ? a : (a[k] = v, a)), {})\n }\n}\n\nfunction isObject (value: any): boolean {\n return value !== null && typeof value === 'object'\n}\n","export function getScssVarValue (name: string): string {\n return getComputedStyle(document.body).getPropertyValue(name)\n}\n","export type Direction = Array<boolean | 'asc' | 'desc'>\n\nexport class Sort {\n\n attributes: string[]\n directions: Direction\n\n constructor (attributes: string[], directions: Direction) {\n this.attributes = attributes\n this.directions = directions\n }\n\n}\n","import { type Sort } from './sort'\nimport * as _ from 'lodash'\n\nexport function orderBy (list: any[], sort: Sort): any[] {\n if (!list || !sort || !sort.attributes || !sort.directions) { return list }\n return _.orderBy(list, sort.attributes, sort.directions)\n}\n","export function isUUID (text: string): boolean {\n const uuidRegex: RegExp = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n return uuidRegex.test(text)\n}\n","import moment from 'moment'\n\nexport function getDuration (dateStart: Date, dateEnd: Date): string {\n if (!dateStart || !dateEnd) { return '--' }\n const difTime = moment(dateEnd).diff(moment(dateStart), 'milliseconds')\n if (Number.isNaN(difTime)) { return '--' }\n if (difTime > 5000) { return Math.round(difTime / 1000) + ' sec' }\n return difTime + ' ms'\n}\n","import tinycolor from 'tinycolor2'\nimport hexToRgba from 'hex-to-rgba'\n\nexport function getRGBAArray (hex: string): any[] {\n let rgba: string = convertHexToRGB(hex)\n rgba = rgba.replace('rgba(', '')\n rgba = rgba.replace(')', '')\n return rgba.split(',')\n}\n\nexport function convertHexToRGB (color: string, alpha?: string | number): string {\n return hexToRgba(color, alpha)\n}\n\nexport function shadeBlendHexColor (hex: string, percent: number): any {\n return tinycolor(hex).lighten(percent).toString()\n}\n\nexport function changePrimaryColor (element: string, hex: any): void {\n const color = hex\n changeCssColorVariable(element, '--color-primary', color)\n changeCssColorVariable(element, '--mdc-theme-primary', color)\n changeCssColorVariable(element, '--color-primary-hover', shadeBlendHexColor(color, -7))\n changeCssColorVariable(element, '--color-primary-active', shadeBlendHexColor(color, 7))\n}\n\nexport function changeSecondaryColor (element: string, hex: any): void {\n const color = hex\n changeCssColorVariable(element, '--color-secondary', color)\n changeCssColorVariable(element, '--mdc-theme-secondary', color)\n changeCssColorVariable(element, '--color-secondary-hover', shadeBlendHexColor(color, -15))\n changeCssColorVariable(element, '--color-secondary-active', shadeBlendHexColor(color, 15))\n}\n\nexport function changeTertiaryColor (element: string, hex: any): void {\n const color = hex\n changeCssColorVariable(element, '--color-tertiary', color)\n changeCssColorVariable(element, '--mdc-theme-tertiary', color)\n changeCssColorVariable(element, '--color-fonts-tertiary', shadeBlendHexColor(color, -35))\n changeCssColorVariable(element, '--color-tertiary-hover', shadeBlendHexColor(color, -15))\n changeCssColorVariable(element, '--color-tertiary-active', shadeBlendHexColor(color, 15))\n}\n\nexport function changeCssColorVariable (element: string, colorProperty: string, hex: any): void {\n if (!element) {\n element = ':root'\n }\n const root: any = document.querySelector(element)\n root.style.setProperty(colorProperty, hex)\n}\n","export function validateEmail (email: string): boolean {\n const regularExpression = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n return regularExpression.test(String(email).toLowerCase())\n}\n","import { registerLocaleData } from '@angular/common';\nimport localePt from '@angular/common/locales/pt';\nimport localeEn from '@angular/common/locales/en';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport class LanguageUtil {\n\n static getLanguage(userLanguage?: string): string {\n if (userLanguage) {\n return LanguageUtil.prepareLocale(userLanguage);\n }\n\n const languageStorage = window.localStorage.getItem('apipass-user-language');\n if (languageStorage) {\n return languageStorage;\n }\n\n const navigatorLanguage = navigator.language;\n if (navigatorLanguage.split('-')[0] === 'pt') {\n return 'pt-BR';\n }\n return 'en-US';\n }\n\n private static prepareLocale(language: string): string {\n if (language?.toLowerCase() === 'en') {\n return 'en-US'\n } else if (language?.toLowerCase() === 'pt') {\n return 'pt-BR'\n }\n return language\n }\n\n static registerLanguage(translate?: TranslateService, userLanguage?: string): string {\n const language: string = LanguageUtil.getLanguage(userLanguage);\n if (language === 'pt-BR') {\n registerLocaleData(localePt, language);\n } else {\n registerLocaleData(localeEn, language);\n }\n if (translate) {\n translate.use(language);\n }\n if (userLanguage) {\n window.localStorage.setItem('apipass-user-language', language);\n }\n return language;\n }\n\n}\n","import { EventEmitter } from '@angular/core';\n\nexport class EventEmitterService {\n\n private static emitters: Record<string, EventEmitter<any>> = {};\n\n static get(eventName: string): EventEmitter<any> {\n if (!this.emitters[eventName]) {\n this.emitters[eventName] = new EventEmitter<any>();\n }\n return this.emitters[eventName];\n }\n\n}\n","export function applicationFireEventService (event: string, detail?: Record<any, any>): void {\n window.dispatchEvent(new CustomEvent(event, { detail }))\n}\n\nexport function applicationSubscribeEventService (event: string, listener: EventListener): void {\n window.addEventListener(event, listener);\n}\n\nexport function applicationUnSubscribeEventService (event: string): void {\n window.removeEventListener(event, undefined);\n}\n","import vkBeautify from 'vkbeautify';\n\nexport function isJSON(text: string): boolean {\n try {\n vkBeautify.json(text);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isXML(text: string): boolean {\n try {\n vkBeautify.xml(text);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isSQL(text: string): boolean {\n try {\n vkBeautify.sql(text);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isHTML(text: string): boolean {\n try {\n vkBeautify.html(text);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function beautifyRawDataContent(text: string): string {\n if (isJSON(text)) {\n return vkBeautify.json(text, 2)\n } else if (isXML(text)) {\n return vkBeautify.xml(text);\n } else if (isSQL(text)) {\n return vkBeautify.sql(text);\n } else if (isHTML(text)) {\n return vkBeautify.html(text);\n } else {\n return text;\n }\n}\n","import { loadRemoteModule } from '@angular-architects/module-federation';\nimport {\n ComponentRef,\n createNgModule,\n Directive,\n EventEmitter,\n Injector,\n Input,\n NgModuleRef, OnChanges, OnInit,\n Output,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { RemoteModule } from './remote-module';\n\ninterface ICacheItem {\n component: Type<unknown>\n ngModuleRef: NgModuleRef<unknown>\n}\n\n@Directive()\nexport abstract class LoadRemoteModuleDirective implements OnInit, OnChanges {\n\n static cache: Map<string, ICacheItem> = new Map<string, ICacheItem>();\n\n @Input() remoteComponent: RemoteModule\n @Output() loaded: EventEmitter<{ instance: unknown }> = new EventEmitter<{ instance: unknown }>();\n\n private componentRef: ComponentRef<unknown>;\n\n public constructor(\n private readonly viewRef: ViewContainerRef,\n private readonly injectable: Injector\n ) {\n }\n\n async ngOnInit(): Promise<void> {\n const componentModuleRef = await this.getComponent();\n this.componentRef = this.viewRef.createComponent(componentModuleRef.component, {\n injector: this.injectable,\n ngModuleRef: componentModuleRef.ngModuleRef\n });\n this.setComponentParameters(this.componentRef);\n this.loaded.emit({ instance: this.componentRef.instance });\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n ngOnChanges(): void {\n if (this.componentRef) {\n this.setComponentParameters(this.componentRef);\n this.componentRef.changeDetectorRef.markForCheck();\n }\n }\n\n protected setComponentParameters(componentRef: ComponentRef<any>): void {\n const componentProperties = Object.keys(componentRef?.instance);\n const instanceProperties = Object.keys(this);\n componentProperties?.forEach(property => {\n if (property === '__ngContext__') {\n return;\n }\n const existsInInstanceProperties = instanceProperties?.find(instance => instance === property);\n if (existsInInstanceProperties) {\n componentRef.instance[property] = this[property]\n }\n })\n }\n\n private async getComponent(): Promise<ICacheItem> {\n const key = this.getKey();\n\n if (LoadRemoteModuleDirective.cache.has(key)) {\n return LoadRemoteModuleDirective.cache.get(key);\n }\n\n return await this.loadComponent();\n }\n\n private async loadComponent(): Promise<ICacheItem> {\n const remoteModule = await loadRemoteModule({\n remoteEntry: this.remoteComponent?.remoteEntry,\n remoteName: this.remoteComponent?.remoteName,\n exposedModule: this.remoteComponent?.exposedModule\n });\n\n const remoteComponent = await loadRemoteModule({\n remoteEntry: this.remoteComponent?.remoteEntry,\n remoteName: this.remoteComponent?.remoteName,\n exposedModule: this.remoteComponent?.componentRefName\n });\n const module = remoteModule[this.remoteComponent?.exposedModule];\n const component = remoteComponent[this.remoteComponent?.componentRefName];\n const ngModuleRef = await this.createModule(module);\n const componentAndModule = {\n component,\n ngModuleRef\n };\n LoadRemoteModuleDirective.cache.set(this.getKey(), componentAndModule);\n return componentAndModule;\n }\n\n private getKey(): string {\n return `${this.remoteComponent?.remoteEntry}-\n ${this.remoteComponent?.remoteName}-\n ${this.remoteComponent?.exposedModule}-\n ${this.remoteComponent?.componentRefName}`;\n }\n\n private async createModule(moduleOrFactory: any): Promise<NgModuleRef<any>> {\n return createNgModule<any>(moduleOrFactory, this.injectable);\n }\n\n}\n","import { RemoteModule } from './remote-module';\nimport { Routes } from '@angular/router';\nimport { loadRemoteModule } from '@angular-architects/module-federation';\n\nexport function configureRemoteRoutes(remoteModules: RemoteModule[]): Routes {\n return remoteModules?.filter(remote => remote.routePath)?.map(remote => {\n return {\n path: remote.routePath,\n loadChildren: (): any => loadRemoteModule({\n type: 'script',\n remoteEntry: remote.remoteEntry,\n remoteName: remote.remoteName,\n exposedModule: remote.exposedModule\n }).then(m => {\n return m[remote.exposedModule]\n }),\n canActivate: remote.canActivate,\n data: { guard: remote.guardFunctionName }\n }\n })\n}\n","import { InjectionToken } from '@angular/core'\nimport { UserInfo, ResourceCheck, PlanResourceCheck, PlanResourcesResult } from './interfaces'\n\nexport interface ICerbosService {\n checkResources(userInfo: UserInfo, checks: ResourceCheck[]): Promise<Record<string, Record<string, boolean>>>\n planResources(userInfo: UserInfo, check: PlanResourceCheck): Promise<PlanResourcesResult>\n}\n\nexport const CERBOS_SERVICE = new InjectionToken<ICerbosService>('CERBOS_SERVICE')\n","import { UserInfo, ResourceCheck, PlanResourceCheck } from './interfaces'\nimport { CheckResourcesRequest, Principal, ResourceCheck as CerbosResourceCheck, ResourceQuery } from '@cerbos/core'\n\nexport function mapCerbosPayload(userInfo: UserInfo, checks: ResourceCheck[]): CheckResourcesRequest {\n const principal: Principal = {\n id: userInfo.accountId,\n roles: userInfo.roles,\n scope: userInfo.domain,\n attr: { accountId: userInfo.accountId }\n }\n\n const resources: CerbosResourceCheck[] = checks.map(({ kind, actions, id }) => ({\n resource: { kind, id: id ?? kind, scope: userInfo.domain, attr: { accountId: userInfo.accountId } },\n actions\n }))\n\n return { principal, resources }\n}\n\n/** Request body for the raw `POST /api/plan/resources` PDP endpoint (protojson shape, not the SDK's flattened response type). */\nexport interface PlanResourcesPayload {\n principal: Principal\n resource: ResourceQuery\n actions: string[]\n}\n\nexport function mapCerbosPlanPayload(userInfo: UserInfo, check: PlanResourceCheck): PlanResourcesPayload {\n const principal: Principal = {\n id: userInfo.accountId,\n roles: userInfo.roles,\n scope: userInfo.domain,\n attr: { accountId: userInfo.accountId }\n }\n\n const resource: ResourceQuery = { kind: check.kind, scope: userInfo.domain, attr: { accountId: userInfo.accountId } }\n\n return { principal, resource, actions: [check.action] }\n}\n","import { CerbosRepository } from './cerbos.repository'\nimport { UserInfo, ResourceCheck, PlanResourceCheck, PlanResourcesResult } from './interfaces'\nimport { mapCerbosPayload, mapCerbosPlanPayload } from './cerbos.mapper'\nimport { ICerbosService } from './cerbos.service.interface'\nimport { CheckResourcesRequest, CheckResourcesResponse } from '@cerbos/core';\n\nexport class CerbosService implements ICerbosService {\n\n constructor(private readonly repo: CerbosRepository) {}\n\n async checkResources(userInfo: UserInfo, checks: ResourceCheck[]): Promise<Record<string, Record<string, boolean>>> {\n const buildDefault = (): Record<string, Record<string, boolean>> =>\n checks.reduce<Record<string, Record<string, boolean>>>((acc, c) => {\n acc[c.kind] = c.actions.reduce((a, action) => ({ ...a, [action]: false }), acc[c.kind] ?? {})\n return acc\n }, {})\n\n try {\n const payload: CheckResourcesRequest = mapCerbosPayload(userInfo, checks)\n const response: CheckResourcesResponse = await this.repo.checkResources(payload)\n const acc = buildDefault()\n return response.results.reduce((result, r) => {\n const check = checks.find(c => c.kind === r.resource.kind)\n if (check) {\n result[r.resource.kind] = check.actions.reduce((actionMap, action) => {\n actionMap[action] = r.actions[action] === 'EFFECT_ALLOW'\n return actionMap\n }, result[r.resource.kind] ?? {})\n }\n return result\n }, acc)\n } catch (e) {\n console.error(`${CerbosService.name} - ERROR`, e)\n return buildDefault()\n }\n }\n\n async planResources(userInfo: UserInfo, check: PlanResourceCheck): Promise<PlanResourcesResult> {\n try {\n const payload = mapCerbosPlanPayload(userInfo, check)\n return await this.repo.planResources(payload)\n } catch (e) {\n console.error(`${CerbosService.name} - ERROR`, e)\n return { filter: { kind: 'KIND_ALWAYS_DENIED' } }\n }\n }\n\n}\n","import { CerbosRepository } from './cerbos.repository'\nimport type { CheckResourcesRequest, CheckResourcesResponse } from '@cerbos/core'\nimport { PlanResourcesPayload } from './cerbos.mapper'\nimport { PlanResourcesResult } from './interfaces'\nimport { HttpClient } from '@angular/common/http'\nimport { lastValueFrom } from 'rxjs';\n\nexport class CerbosHttpRepository implements CerbosRepository {\n\n constructor(private readonly httpClient: HttpClient, private readonly apiUrl: string) {}\n\n async checkResources(payload: CheckResourcesRequest): Promise<CheckResourcesResponse> {\n const url = `${this.apiUrl}/api/check/resources`;\n return await lastValueFrom(this.httpClient.post<CheckResourcesResponse>(url, payload));\n }\n\n async planResources(payload: PlanResourcesPayload): Promise<PlanResourcesResult> {\n const url = `${this.apiUrl}/api/plan/resources`;\n return await lastValueFrom(this.httpClient.post<PlanResourcesResult>(url, payload));\n }\n\n}\n","import { Provider } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { CERBOS_SERVICE } from './cerbos.service.interface'\nimport { CerbosService } from './cerbos.service'\nimport { CerbosHttpRepository } from './cerbos-http.repository'\n\nexport function provideCerbos(url: string): Provider {\n return {\n provide: CERBOS_SERVICE,\n useFactory: (http: HttpClient) => new CerbosService(new CerbosHttpRepository(http, url)),\n deps: [HttpClient]\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|