@acorex/platform 20.0.6 → 20.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth/index.d.ts +37 -32
- package/common/index.d.ts +2 -2
- package/core/index.d.ts +4 -0
- package/domain/index.d.ts +2034 -2
- package/fesm2022/acorex-platform-auth.mjs +57 -21
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +92 -92
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +54 -42
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +3320 -7
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +172 -168
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +103 -83
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +72 -72
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +94 -96
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +340 -104
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +7 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +45 -43
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-create-entity-view.component-BxYe1IlE.mjs → acorex-platform-themes-default-create-entity-view.component-DyVB3PZT.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-create-entity-view.component-BxYe1IlE.mjs.map → acorex-platform-themes-default-create-entity-view.component-DyVB3PZT.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-CzSqhYfE.mjs → acorex-platform-themes-default-entity-master-create-view.component-CsWVOu-r.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-CzSqhYfE.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-CsWVOu-r.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-BxdQ5JWS.mjs → acorex-platform-themes-default-entity-master-list-view.component-DgyzWR29.mjs} +20 -20
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DgyzWR29.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-12xcM8FJ.mjs → acorex-platform-themes-default-entity-master-modify-view.component-gJap_TBH.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-12xcM8FJ.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-gJap_TBH.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component--tn_1mKA.mjs → acorex-platform-themes-default-entity-master-single-view.component-BUNm9JV5.mjs} +7 -7
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component--tn_1mKA.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-BUNm9JV5.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-401.component-8QfQ3hNo.mjs → acorex-platform-themes-default-error-401.component-DP3msj3d.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-401.component-8QfQ3hNo.mjs.map → acorex-platform-themes-default-error-401.component-DP3msj3d.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-404.component-D9npA9_W.mjs → acorex-platform-themes-default-error-404.component-uvBHGbHY.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-404.component-D9npA9_W.mjs.map → acorex-platform-themes-default-error-404.component-uvBHGbHY.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-BQpVnLzt.mjs → acorex-platform-themes-default-error-offline.component-CdXIik4U.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-BQpVnLzt.mjs.map → acorex-platform-themes-default-error-offline.component-CdXIik4U.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +468 -50
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +22 -23
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-BIZkWv8q.mjs → acorex-platform-widgets-button-widget-designer.component-CgUkYMwV.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-BIZkWv8q.mjs.map → acorex-platform-widgets-button-widget-designer.component-CgUkYMwV.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-MjSzOXIJ.mjs → acorex-platform-widgets-checkbox-widget-column.component-Dn0U56O7.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-MjSzOXIJ.mjs.map → acorex-platform-widgets-checkbox-widget-column.component-Dn0U56O7.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-BuU7nJ6u.mjs → acorex-platform-widgets-checkbox-widget-designer.component-BD0-kCi0.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-BuU7nJ6u.mjs.map → acorex-platform-widgets-checkbox-widget-designer.component-BD0-kCi0.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-BgrIeNW0.mjs → acorex-platform-widgets-checkbox-widget-view.component-CzCWGDil.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-BgrIeNW0.mjs.map → acorex-platform-widgets-checkbox-widget-view.component-CzCWGDil.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-BTxAgvMQ.mjs → acorex-platform-widgets-color-box-widget-designer.component-BSRAHIPQ.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-BTxAgvMQ.mjs.map → acorex-platform-widgets-color-box-widget-designer.component-BSRAHIPQ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-contact-widget-filter.component-DCUfKMJ6.mjs → acorex-platform-widgets-contact-widget-filter.component-CtCAgeH9.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-contact-widget-filter.component-DCUfKMJ6.mjs.map → acorex-platform-widgets-contact-widget-filter.component-CtCAgeH9.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-file-list-popup.component-yqqPJMg2.mjs → acorex-platform-widgets-file-list-popup.component-hyJf0xT2.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-file-list-popup.component-yqqPJMg2.mjs.map → acorex-platform-widgets-file-list-popup.component-hyJf0xT2.mjs.map} +1 -1
- package/fesm2022/acorex-platform-widgets-file-rename-popup.component-BSm6Qew2.mjs +211 -0
- package/fesm2022/acorex-platform-widgets-file-rename-popup.component-BSm6Qew2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-Dwts3at7.mjs → acorex-platform-widgets-page-widget-designer.component-Dlu4Tkou.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-Dwts3at7.mjs.map → acorex-platform-widgets-page-widget-designer.component-Dlu4Tkou.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-Bk20MsqK.mjs → acorex-platform-widgets-rich-text-popup.component-DB2IMaLw.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-Bk20MsqK.mjs.map → acorex-platform-widgets-rich-text-popup.component-DB2IMaLw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-2srL34Aq.mjs → acorex-platform-widgets-tabular-data-edit-popup.component-CBOUSkL4.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-2srL34Aq.mjs.map → acorex-platform-widgets-tabular-data-edit-popup.component-CBOUSkL4.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-D9654sA3.mjs → acorex-platform-widgets-tabular-data-view-popup.component-Dl5U2HFR.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-D9654sA3.mjs.map → acorex-platform-widgets-tabular-data-view-popup.component-Dl5U2HFR.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-C1VgsL1j.mjs → acorex-platform-widgets-text-block-widget-designer.component-CG_2APU3.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-C1VgsL1j.mjs.map → acorex-platform-widgets-text-block-widget-designer.component-CG_2APU3.mjs.map} +1 -1
- package/fesm2022/acorex-platform-widgets.mjs +868 -644
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +25 -25
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/index.d.ts +17 -10
- package/layout/components/index.d.ts +3 -0
- package/layout/views/index.d.ts +83 -24
- package/package.json +1 -1
- package/widgets/index.d.ts +11 -0
- package/domain/README.md +0 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BxdQ5JWS.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-auth.mjs","sources":["../tmp-esm2022/auth/lib/application/application.loader.js","../tmp-esm2022/auth/lib/tenant/tenant.loader.js","../tmp-esm2022/auth/lib/auth-registry.service.js","../tmp-esm2022/auth/lib/feature/feature.loader.js","../tmp-esm2022/auth/lib/feature/feature.directive.js","../tmp-esm2022/auth/lib/errors.types.js","../tmp-esm2022/auth/lib/feature/feature.guard.js","../tmp-esm2022/auth/lib/permission/permission.loader.js","../tmp-esm2022/auth/lib/session.types.js","../tmp-esm2022/auth/lib/session.service.js","../tmp-esm2022/auth/lib/permission/permission.directive.js","../tmp-esm2022/auth/lib/permission/permission.guard.js","../tmp-esm2022/auth/lib/permission/permission-definition.builder.js","../tmp-esm2022/auth/lib/permission/permission-definition.service.js","../tmp-esm2022/auth/lib/auth.guard.js","../tmp-esm2022/auth/lib/auth.module.js","../tmp-esm2022/auth/acorex-platform-auth.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport const AXP_APPLICATION_LOADER = new InjectionToken('AXP_APPLICATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXPApplicationDefaultLoader();\n },\n});\nclass AXPApplicationDefaultLoader {\n getList(context) {\n return of([\n {\n id: '1',\n name: 'default-app',\n title: 'Default Application',\n version: '1.0.0',\n editionName: 'Standard',\n features: [],\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vYXBwbGljYXRpb24ubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsd0JBQXdCLEVBQUU7SUFDdkcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sSUFBSSwyQkFBMkIsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLDJCQUEyQjtJQUMvQixPQUFPLENBQUMsT0FBMEI7UUFDaEMsT0FBTyxFQUFFLENBQUM7WUFDUjtnQkFDRSxFQUFFLEVBQUUsR0FBRztnQkFDUCxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLHFCQUFxQjtnQkFDNUIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFdBQVcsRUFBRSxVQUFVO2dCQUN2QixRQUFRLEVBQUUsRUFBRTthQUNiO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBBcHBsaWNhdGlvbiB9IGZyb20gJy4vYXBwbGljYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhQU2Vzc2lvbkNvbnRleHQgfSBmcm9tICcuLi9zZXNzaW9uLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBBcHBsaWNhdGlvbkxvYWRlciB7XG4gIGdldExpc3QoY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBPYnNlcnZhYmxlPEFYUEFwcGxpY2F0aW9uW10+O1xufVxuXG5leHBvcnQgY29uc3QgQVhQX0FQUExJQ0FUSU9OX0xPQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBBcHBsaWNhdGlvbkxvYWRlcj4oJ0FYUF9BUFBMSUNBVElPTl9MT0FERVInLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIHJldHVybiBuZXcgQVhQQXBwbGljYXRpb25EZWZhdWx0TG9hZGVyKCk7XG4gIH0sXG59KTtcblxuY2xhc3MgQVhQQXBwbGljYXRpb25EZWZhdWx0TG9hZGVyIGltcGxlbWVudHMgQVhQQXBwbGljYXRpb25Mb2FkZXIge1xuICBnZXRMaXN0KGNvbnRleHQ6IEFYUFNlc3Npb25Db250ZXh0KTogT2JzZXJ2YWJsZTxBWFBBcHBsaWNhdGlvbltdPiB7XG4gICAgcmV0dXJuIG9mKFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgbmFtZTogJ2RlZmF1bHQtYXBwJyxcbiAgICAgICAgdGl0bGU6ICdEZWZhdWx0IEFwcGxpY2F0aW9uJyxcbiAgICAgICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgICAgICAgZWRpdGlvbk5hbWU6ICdTdGFuZGFyZCcsXG4gICAgICAgIGZlYXR1cmVzOiBbXSxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport const AXP_TENANT_LOADER = new InjectionToken('AXP_TENANT_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXPTenantDefaultLoader();\n },\n});\nclass AXPTenantDefaultLoader {\n getList(context) {\n return of([\n {\n id: '1',\n name: 'default-tenant',\n title: 'Default Tenant',\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL3RlbmFudC90ZW5hbnQubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsbUJBQW1CLEVBQUU7SUFDeEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLHNCQUFzQjtJQUUxQixPQUFPLENBQUMsT0FBMEI7UUFDaEMsT0FBTyxFQUFFLENBQUM7WUFDUjtnQkFDRSxFQUFFLEVBQUUsR0FBRztnQkFDUCxJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixLQUFLLEVBQUUsZ0JBQWdCO2FBQ3hCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBUZW5hbnQgfSBmcm9tICcuL3RlbmFudC50eXBlcyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uQ29udGV4dCB9IGZyb20gJy4uL3Nlc3Npb24udHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFRlbmFudExvYWRlciB7XG4gIGdldExpc3QoY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBPYnNlcnZhYmxlPEFYUFRlbmFudFtdPjtcbn1cblxuZXhwb3J0IGNvbnN0IEFYUF9URU5BTlRfTE9BREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFRlbmFudExvYWRlcj4oJ0FYUF9URU5BTlRfTE9BREVSJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IEFYUFRlbmFudERlZmF1bHRMb2FkZXIoKTtcbiAgfSxcbn0pO1xuXG5jbGFzcyBBWFBUZW5hbnREZWZhdWx0TG9hZGVyIGltcGxlbWVudHMgQVhQVGVuYW50TG9hZGVyIHtcblxuICBnZXRMaXN0KGNvbnRleHQ6IEFYUFNlc3Npb25Db250ZXh0KTogT2JzZXJ2YWJsZTxBWFBUZW5hbnRbXT4ge1xuICAgIHJldHVybiBvZihbXG4gICAgICB7XG4gICAgICAgIGlkOiAnMScsXG4gICAgICAgIG5hbWU6ICdkZWZhdWx0LXRlbmFudCcsXG4gICAgICAgIHRpdGxlOiAnRGVmYXVsdCBUZW5hbnQnLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxufVxuIl19","import { Injectable, Injector } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nexport class AXPAuthStrategyRegistryService {\n constructor(injector) {\n this.strategies = new Map();\n this.injector = injector;\n }\n register(...plugins) {\n plugins.forEach(t => {\n const childInjector = Injector.create({ providers: [{ provide: t, useClass: t, deps: [] }], parent: this.injector });\n const strategy = childInjector.get(t);\n if (strategy) {\n this.strategies.set(strategy.name, strategy);\n }\n });\n }\n get(strategyKey) {\n return this.strategies.get(strategyKey);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPAuthStrategyRegistryService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPAuthStrategyRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPAuthStrategyRegistryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hdXRoL3NyYy9saWIvYXV0aC1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1yRCxNQUFNLE9BQU8sOEJBQThCO0lBS3pDLFlBQVksUUFBa0I7UUFKdEIsZUFBVSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBS3RELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBRyxPQUFzQztRQUNoRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xCLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckgsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEdBQUcsQ0FBQyxXQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBckJVLDhCQUE4QjtrSEFBOUIsOEJBQThCLGNBRjdCLE1BQU07OzJGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFBBdXRoU3RyYXRlZ3kgfSBmcm9tIFwiLi9hdXRoLnN0cmF0ZWd5XCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFYUEF1dGhTdHJhdGVneVJlZ2lzdHJ5U2VydmljZSB7XG4gIHByaXZhdGUgc3RyYXRlZ2llcyA9IG5ldyBNYXA8c3RyaW5nLCBBWFBBdXRoU3RyYXRlZ3k+KCk7XG5cbiAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5pbmplY3RvciA9IGluamVjdG9yO1xuICB9XG5cbiAgcmVnaXN0ZXIoLi4ucGx1Z2luczogKG5ldyAoKSA9PiBBWFBBdXRoU3RyYXRlZ3kpW10pIHtcbiAgICBwbHVnaW5zLmZvckVhY2godCA9PiB7XG4gICAgICBjb25zdCBjaGlsZEluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHsgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiB0LCB1c2VDbGFzczogdCwgZGVwczogW10gfV0sIHBhcmVudDogdGhpcy5pbmplY3RvciB9KTtcbiAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gY2hpbGRJbmplY3Rvci5nZXQodCk7XG4gICAgICBpZiAoc3RyYXRlZ3kpIHtcbiAgICAgICAgdGhpcy5zdHJhdGVnaWVzLnNldChzdHJhdGVneS5uYW1lLCBzdHJhdGVneSk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldChzdHJhdGVneUtleTogc3RyaW5nKTogQVhQQXV0aFN0cmF0ZWd5IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJhdGVnaWVzLmdldChzdHJhdGVneUtleSk7XG4gIH1cbn0iXX0=","import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport const AXP_FEATURE_LOADER = new InjectionToken('AXP_FEATURE_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXPFeatureDefaultLoader();\n },\n});\nclass AXPFeatureDefaultLoader {\n getList(context) {\n return of([]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9mZWF0dXJlL2ZlYXR1cmUubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsb0JBQW9CLEVBQUU7SUFDM0YsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLHVCQUF1QjtJQUMzQixPQUFPLENBQUMsT0FBMEI7UUFDaEMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBGZWF0dXJlIH0gZnJvbSAnLi9mZWF0dXJlLnR5cGVzJztcbmltcG9ydCB7IEFYUFNlc3Npb25Db250ZXh0IH0gZnJvbSAnLi4vc2Vzc2lvbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRmVhdHVyZUxvYWRlciB7XG4gIGdldExpc3QoY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBPYnNlcnZhYmxlPEFYUEZlYXR1cmVbXT47XG59XG5cbmV4cG9ydCBjb25zdCBBWFBfRkVBVFVSRV9MT0FERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQRmVhdHVyZUxvYWRlcj4oJ0FYUF9GRUFUVVJFX0xPQURFUicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBBWFBGZWF0dXJlRGVmYXVsdExvYWRlcigpO1xuICB9LFxufSk7XG5cbmNsYXNzIEFYUEZlYXR1cmVEZWZhdWx0TG9hZGVyIGltcGxlbWVudHMgQVhQRmVhdHVyZUxvYWRlciB7XG4gIGdldExpc3QoY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBPYnNlcnZhYmxlPEFYUEZlYXR1cmVbXT4ge1xuICAgIHJldHVybiBvZihbXSk7XG4gIH1cbn1cbiJdfQ==","import { Directive, Input, TemplateRef, ViewContainerRef, inject, signal } from '@angular/core';\nimport { AXPSessionService } from '../session.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPFeatureDirective {\n constructor(templateRef, viewContainer) {\n this.templateRef = templateRef;\n this.viewContainer = viewContainer;\n this.hasView = signal(false);\n this.sessionService = inject(AXPSessionService);\n }\n set feature(featureKeys) {\n const keys = !featureKeys ? [] : (Array.isArray(featureKeys) ? featureKeys : [featureKeys]);\n if (keys.length == 0) {\n // If featureKey is null or empty, decide the default behavior here\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView.set(true);\n return;\n }\n this.subscription = this.sessionService.features$\n //.pipe(first())\n .subscribe(() => {\n if (this.sessionService.isFeatureEnabled(...keys)) {\n if (!this.hasView()) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView.set(true);\n }\n }\n else {\n this.viewContainer.clear();\n this.hasView.set(false);\n }\n });\n }\n set featureElse(elseTemplateRef) {\n if (!this.hasView()) {\n this.viewContainer.createEmbeddedView(elseTemplateRef);\n }\n }\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPFeatureDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPFeatureDirective, isStandalone: false, selector: \"[feature]\", inputs: { feature: \"feature\", featureElse: \"featureElse\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPFeatureDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[feature]',\n standalone: false\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { feature: [{\n type: Input\n }], featureElse: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9mZWF0dXJlL2ZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU12RCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQ1UsV0FBNkIsRUFDN0IsYUFBK0I7UUFEL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQU5qQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFLL0MsQ0FBQztJQUVMLElBQ1csT0FBTyxDQUFDLFdBQXFDO1FBQ3RELE1BQU0sSUFBSSxHQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLG1FQUFtRTtZQUNuRSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTO1lBQy9DLGdCQUFnQjthQUNmLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFDVyxXQUFXLENBQUMsZUFBaUM7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzhHQTNDVSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLEtBQUs7aUJBQ3BCOytHQVlZLE9BQU87c0JBRGpCLEtBQUs7Z0JBeUJLLFdBQVc7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlyc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmVhdHVyZV0nLFxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIEFYUEZlYXR1cmVEaXJlY3RpdmUge1xuICBwcml2YXRlIGhhc1ZpZXcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7IH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZlYXR1cmUoZmVhdHVyZUtleXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCkge1xuICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gIWZlYXR1cmVLZXlzID8gW10gOiAoQXJyYXkuaXNBcnJheShmZWF0dXJlS2V5cykgPyBmZWF0dXJlS2V5cyA6IFtmZWF0dXJlS2V5c10pO1xuICAgIGlmIChrZXlzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAvLyBJZiBmZWF0dXJlS2V5IGlzIG51bGwgb3IgZW1wdHksIGRlY2lkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBoZXJlXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xuICAgICAgdGhpcy5oYXNWaWV3LnNldCh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmZlYXR1cmVzJFxuICAgICAgLy8ucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25TZXJ2aWNlLmlzRmVhdHVyZUVuYWJsZWQoLi4ua2V5cykpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuaGFzVmlldygpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xuICAgICAgICAgICAgdGhpcy5oYXNWaWV3LnNldCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy5oYXNWaWV3LnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmZWF0dXJlRWxzZShlbHNlVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAoIXRoaXMuaGFzVmlldygpKSB7XG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGVsc2VUZW1wbGF0ZVJlZik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==","export class AXPUnauthorizedError extends Error {\n constructor(message, data) {\n super(message);\n this.data = data;\n this.name = 'AXPUnauthorizedError';\n }\n}\nexport class AXPUnauthenticatedError extends Error {\n constructor(message, data) {\n super(message);\n this.data = data;\n this.name = 'AXPUnauthenticatedError';\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hdXRoL3NyYy9saWIvZXJyb3JzLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxLQUFLO0lBQzNDLFlBQVksT0FBZ0IsRUFBUyxJQUErQjtRQUNoRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEa0IsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFFaEUsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztJQUN2QyxDQUFDO0NBQ0o7QUFHRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsS0FBSztJQUM5QyxZQUFZLE9BQWdCLEVBQVMsSUFBK0I7UUFDaEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRGtCLFNBQUksR0FBSixJQUFJLENBQTJCO1FBRWhFLElBQUksQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFYUFVuYXV0aG9yaXplZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcsIHB1YmxpYyBkYXRhPzogeyByZWRpcmVjdFVybD86IHN0cmluZyB9KSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnQVhQVW5hdXRob3JpemVkRXJyb3InO1xuICAgIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgQVhQVW5hdXRoZW50aWNhdGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZywgcHVibGljIGRhdGE/OiB7IHJlZGlyZWN0VXJsPzogc3RyaW5nIH0pIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdBWFBVbmF1dGhlbnRpY2F0ZWRFcnJvcic7XG4gICAgfVxufSJdfQ==","import { inject } from \"@angular/core\";\nimport { AXPSessionService } from \"../session.service\";\nimport { map } from \"rxjs\";\nimport { AXPUnauthorizedError } from \"../errors.types\";\nexport const AXPFeatureGuard = (route, state) => {\n const sessionService = inject(AXPSessionService);\n const requiredFeatures = route.data['requiredFeature'];\n return sessionService.features$.pipe(map(() => {\n const keys = !requiredFeatures ? [] : (Array.isArray(requiredFeatures) ? requiredFeatures : [requiredFeatures]);\n const hasFeature = keys.length == 0 || sessionService.isFeatureEnabled(...keys);\n if (!hasFeature) {\n throw new AXPUnauthorizedError(`Access Denied. You do not have access to this feature. Required feature(s): ${keys.join(', ')}. Please contact support if you need access.`, {\n redirectUrl: state.url\n });\n }\n return true;\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL2ZlYXR1cmUvZmVhdHVyZS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBcUIsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3ZELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FDMUIsQ0FBQyxLQUE2QixFQUFFLEtBQTBCLEVBQWlDLEVBQUU7SUFDM0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUErQixDQUFDO0lBRXJGLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDUCxNQUFNLElBQUksR0FBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDMUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxvQkFBb0IsQ0FDNUIsK0VBQStFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxFQUM1STtnQkFDRSxXQUFXLEVBQUUsS0FBSyxDQUFDLEdBQUc7YUFDdkIsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlRm4sIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2Vzc2lvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdCwgbWFwIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEFYUFVuYXV0aG9yaXplZEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy50eXBlc1wiO1xuXG5cbmV4cG9ydCBjb25zdCBBWFBGZWF0dXJlR3VhcmQ6IENhbkFjdGl2YXRlRm4gPVxuICAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gPT4ge1xuICAgIGNvbnN0IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgICBjb25zdCByZXF1aXJlZEZlYXR1cmVzID0gcm91dGUuZGF0YVsncmVxdWlyZWRGZWF0dXJlJ10gYXMgKHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCk7XG5cbiAgICByZXR1cm4gc2Vzc2lvblNlcnZpY2UuZmVhdHVyZXMkLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9ICFyZXF1aXJlZEZlYXR1cmVzID8gW10gOiAoQXJyYXkuaXNBcnJheShyZXF1aXJlZEZlYXR1cmVzKSA/IHJlcXVpcmVkRmVhdHVyZXMgOiBbcmVxdWlyZWRGZWF0dXJlc10pO1xuICAgICAgICBjb25zdCBoYXNGZWF0dXJlID0ga2V5cy5sZW5ndGggPT0gMCB8fCBzZXNzaW9uU2VydmljZS5pc0ZlYXR1cmVFbmFibGVkKC4uLmtleXMpO1xuICAgICAgICBpZiAoIWhhc0ZlYXR1cmUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQVhQVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICBgQWNjZXNzIERlbmllZC4gWW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGlzIGZlYXR1cmUuIFJlcXVpcmVkIGZlYXR1cmUocyk6ICR7a2V5cy5qb2luKCcsICcpfS4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBpZiB5b3UgbmVlZCBhY2Nlc3MuYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmVkaXJlY3RVcmw6IHN0YXRlLnVybFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICk7XG4gIH07XG4iXX0=","import { InjectionToken } from \"@angular/core\";\nimport { of } from \"rxjs\";\nexport const AXP_PERMISSION_LOADER = new InjectionToken('AXP_PERMISSION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXPPermissionDefaultLoader();\n }\n});\nclass AXPPermissionDefaultLoader {\n getList(context) {\n return of([]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9wZXJtaXNzaW9uL3Blcm1pc3Npb24ubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLEVBQUU7SUFDbEcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBSSwwQkFBMEIsRUFBRSxDQUFDO0lBQzVDLENBQUM7Q0FDSixDQUFDLENBQUM7QUFHSCxNQUFNLDBCQUEwQjtJQUM1QixPQUFPLENBQUMsT0FBMEI7UUFDOUIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQVhQUGVybWlzc2lvbiB9IGZyb20gXCIuL3Blcm1pc3Npb24udHlwZXNcIjtcbmltcG9ydCB7IEFYUFNlc3Npb25Db250ZXh0IH0gZnJvbSBcIi4uL3Nlc3Npb24udHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBQZXJtaXNzaW9uTG9hZGVyIHtcbiAgICBnZXRMaXN0KGNvbnRleHQ6IEFYUFNlc3Npb25Db250ZXh0KTogT2JzZXJ2YWJsZTxBWFBQZXJtaXNzaW9uW10+O1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1BFUk1JU1NJT05fTE9BREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFBlcm1pc3Npb25Mb2FkZXI+KCdBWFBfUEVSTUlTU0lPTl9MT0FERVInLCB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBQZXJtaXNzaW9uRGVmYXVsdExvYWRlcigpO1xuICAgIH1cbn0pO1xuXG5cbmNsYXNzIEFYUFBlcm1pc3Npb25EZWZhdWx0TG9hZGVyIGltcGxlbWVudHMgQVhQUGVybWlzc2lvbkxvYWRlciB7XG4gICAgZ2V0TGlzdChjb250ZXh0OiBBWFBTZXNzaW9uQ29udGV4dCk6IE9ic2VydmFibGU8QVhQUGVybWlzc2lvbltdPiB7XG4gICAgICAgIHJldHVybiBvZihbXSlcbiAgICB9XG59Il19","export class AXPSessionContext {\n get user() {\n return this._user;\n }\n get tenant() {\n return this._tenant;\n }\n get application() {\n return this._application;\n }\n constructor(context) {\n this._user = null;\n this._tenant = null;\n this._application = null;\n this._user = context.user;\n this._tenant = context.tenant;\n this._application = context.application;\n }\n}\nexport var AXPSessionStatus;\n(function (AXPSessionStatus) {\n AXPSessionStatus[\"Authenticated\"] = \"authenticated\";\n AXPSessionStatus[\"Unauthenticated\"] = \"unauthenticated\";\n AXPSessionStatus[\"Unauthorized\"] = \"unauthorized\";\n AXPSessionStatus[\"Authorized\"] = \"authorized\";\n AXPSessionStatus[\"Expired\"] = \"expired\";\n AXPSessionStatus[\"SignedOut\"] = \"signedOut\";\n})(AXPSessionStatus || (AXPSessionStatus = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL3Nlc3Npb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLGlCQUFpQjtJQUcxQixJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUdELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBR0QsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWSxPQUlYO1FBbkJPLFVBQUssR0FBbUIsSUFBSSxDQUFDO1FBSzdCLFlBQU8sR0FBcUIsSUFBSSxDQUFDO1FBS2pDLGlCQUFZLEdBQTBCLElBQUksQ0FBQztRQVUvQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUM1QyxDQUFDO0NBQ0o7QUFHRCxNQUFNLENBQU4sSUFBWSxnQkFPWDtBQVBELFdBQVksZ0JBQWdCO0lBQ3hCLG1EQUErQixDQUFBO0lBQy9CLHVEQUFtQyxDQUFBO0lBQ25DLGlEQUE2QixDQUFBO0lBQzdCLDZDQUF5QixDQUFBO0lBQ3pCLHVDQUFtQixDQUFBO0lBQ25CLDJDQUF1QixDQUFBO0FBQzNCLENBQUMsRUFQVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBTzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQQXBwbGljYXRpb24gfSBmcm9tIFwiLi9hcHBsaWNhdGlvbi9hcHBsaWNhdGlvbi50eXBlc1wiO1xuaW1wb3J0IHsgQVhQVGVuYW50IH0gZnJvbSBcIi4vdGVuYW50L3RlbmFudC50eXBlc1wiO1xuaW1wb3J0IHsgQVhQVXNlciB9IGZyb20gXCIuL3VzZXIvdXNlci50eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgQVhQU2Vzc2lvbkNvbnRleHQge1xuXG4gICAgcHJpdmF0ZSBfdXNlcjogQVhQVXNlciB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBnZXQgdXNlcigpOiBBWFBVc2VyIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RlbmFudDogQVhQVGVuYW50IHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGdldCB0ZW5hbnQoKTogQVhQVGVuYW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZW5hbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbGljYXRpb246IEFYUEFwcGxpY2F0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGdldCBhcHBsaWNhdGlvbigpOiBBWFBBcHBsaWNhdGlvbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb247XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoY29udGV4dDoge1xuICAgICAgICB1c2VyOiBBWFBVc2VyIHwgbnVsbCxcbiAgICAgICAgdGVuYW50OiBBWFBUZW5hbnQgfCBudWxsLFxuICAgICAgICBhcHBsaWNhdGlvbjogQVhQQXBwbGljYXRpb24gfCBudWxsLFxuICAgIH0pIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IGNvbnRleHQudXNlcjtcbiAgICAgICAgdGhpcy5fdGVuYW50ID0gY29udGV4dC50ZW5hbnQ7XG4gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uID0gY29udGV4dC5hcHBsaWNhdGlvbjtcbiAgICB9XG59XG5cblxuZXhwb3J0IGVudW0gQVhQU2Vzc2lvblN0YXR1cyB7XG4gICAgQXV0aGVudGljYXRlZCA9IFwiYXV0aGVudGljYXRlZFwiLFxuICAgIFVuYXV0aGVudGljYXRlZCA9IFwidW5hdXRoZW50aWNhdGVkXCIsXG4gICAgVW5hdXRob3JpemVkID0gXCJ1bmF1dGhvcml6ZWRcIixcbiAgICBBdXRob3JpemVkID0gXCJhdXRob3JpemVkXCIsXG4gICAgRXhwaXJlZCA9IFwiZXhwaXJlZFwiLFxuICAgIFNpZ25lZE91dCA9IFwic2lnbmVkT3V0XCJcbn0iXX0=","import { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { Injectable, inject } from '@angular/core';\nimport { isEmpty, merge } from 'lodash-es';\nimport { BehaviorSubject, defaultIfEmpty, firstValueFrom, map, shareReplay } from 'rxjs';\nimport { AXP_APPLICATION_LOADER } from './application/application.loader';\nimport { AXPAuthStrategyRegistryService } from './auth-registry.service';\nimport { AXP_FEATURE_LOADER } from './feature';\nimport { AXP_PERMISSION_LOADER } from './permission/permission.loader';\nimport { AXPSessionContext, AXPSessionStatus } from './session.types';\nimport { AXP_TENANT_LOADER } from './tenant/tenant.loader';\nimport * as i0 from \"@angular/core\";\nexport class AXPSessionService {\n constructor() {\n this.eventService = inject(AXPBroadcastEventService);\n this.authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n this.permissionLoader = inject(AXP_PERMISSION_LOADER);\n this.featureLoader = inject(AXP_FEATURE_LOADER);\n this.tenantLoader = inject(AXP_TENANT_LOADER);\n this.applicationLoader = inject(AXP_APPLICATION_LOADER);\n this.status = new BehaviorSubject(AXPSessionStatus.Unauthenticated);\n this.status$ = this.status.asObservable().pipe(shareReplay(1));\n this.currentUserSubject = new BehaviorSubject(null);\n this.user$ = this.currentUserSubject.asObservable().pipe(shareReplay(1));\n this.currentTenantSubject = new BehaviorSubject(null);\n this.tenant$ = this.currentTenantSubject.asObservable().pipe(shareReplay(1));\n this.currentApplicationSubject = new BehaviorSubject(null);\n this.application$ = this.currentApplicationSubject.asObservable().pipe(shareReplay(1));\n this.permissionsSubject = new BehaviorSubject([]);\n this.permissions$ = this.permissionsSubject.asObservable().pipe(shareReplay(1), defaultIfEmpty([]));\n this.featuresSubject = new BehaviorSubject([]);\n this.features$ = this.featuresSubject.asObservable().pipe(shareReplay(1), defaultIfEmpty([]));\n this.isAuthenticated$ = this.status$.pipe(map((status) => status === AXPSessionStatus.Authenticated || status === AXPSessionStatus.Authorized), shareReplay(1));\n this.isAuthorized$ = this.status$.pipe(map((status) => status === AXPSessionStatus.Authorized), shareReplay(1));\n }\n static { this.SESSION_KEY = 'AXP_SESSION'; }\n get user() {\n const session = this.getSessionData();\n if (session?.user && !this.currentUserSubject.value) {\n this.currentUserSubject.next(session.user);\n }\n return this.currentUserSubject.value;\n }\n get tenant() {\n const session = this.getSessionData();\n if (session?.tenant && !this.currentTenantSubject.value) {\n this.currentTenantSubject.next(session.tenant);\n }\n return this.currentTenantSubject.value;\n }\n get tenants$() {\n return this.tenantLoader.getList(this.getContext());\n }\n get application() {\n const session = this.getSessionData();\n if (session?.application && !this.currentApplicationSubject.value) {\n this.currentApplicationSubject.next(session.application);\n }\n return this.currentApplicationSubject.value;\n }\n get applications$() {\n return this.applicationLoader.getList(this.getContext());\n }\n get permissions() {\n return this.permissionsSubject.value ?? [];\n }\n get features() {\n return this.featuresSubject.value ?? [];\n }\n async restoreSession() {\n const sessionData = this.getSessionData();\n if (sessionData) {\n if (sessionData.user) {\n this.currentUserSubject.next(sessionData.user);\n this.status.next(AXPSessionStatus.Authenticated);\n }\n // if (sessionData.tenant) {\n // this.setTenant(sessionData.tenant);\n // }\n // if (sessionData.application) {\n // this.setApplication(sessionData.application);\n // }\n await this.loadPermissions();\n await this.loadFeatures();\n await this.signInComplete();\n }\n else {\n this.status.next(AXPSessionStatus.Unauthorized);\n }\n }\n async signin(credentials) {\n // \n this.clearSession();\n //\n const strategy = this.authStrategyRegistry.get(credentials.strategy);\n if (!strategy) {\n throw new Error(`Authentication strategy '${credentials.strategy}' is not supported`);\n }\n const result = await strategy.signin(credentials);\n if (result.succeed) {\n this.currentUserSubject.next(result.data.user);\n this.setSession({\n accessToken: result.data.accessToken,\n refreshToken: result.data.refreshToken,\n strategy: credentials.strategy,\n user: result.data.user,\n application: result.data?.application,\n tenant: result.data?.tenant,\n expiresIn: result.data?.expiresIn,\n idToken: result.data?.idToken ?? null,\n });\n this.status.next(AXPSessionStatus.Authenticated);\n if (this.application && this.tenant)\n await this.signInComplete();\n }\n else {\n this.status.next(AXPSessionStatus.Unauthenticated);\n throw new Error(`Invalid Username or Password`);\n }\n }\n async signout() {\n const sessionData = this.getSessionData();\n if (sessionData?.strategy) {\n const strategy = this.authStrategyRegistry.get(sessionData?.strategy);\n if (strategy) {\n await strategy.signout();\n }\n }\n //\n const userId = this.user?.id;\n this.clearSession();\n this.status.next(AXPSessionStatus.SignedOut);\n this.eventService.publish(AXPSessionStatus.SignedOut, { id: userId });\n }\n async refreshToken() {\n return new Promise(async (resolve, reject) => {\n const sessionData = this.getSessionData();\n if (!sessionData || !sessionData?.refreshToken) {\n return;\n }\n const strategy = this.authStrategyRegistry.get(sessionData.strategy);\n if (!strategy) {\n reject();\n throw new Error(`Authentication strategy '${sessionData.strategy}' is not found`);\n }\n const result = await strategy.refreshToken(this.getContext());\n if (result.succeed) {\n this.setSession(result.data);\n resolve(result.data?.accessToken);\n }\n else {\n this.clearSession();\n this.status.next(AXPSessionStatus.Expired);\n }\n });\n }\n async setTenant(tenant) {\n this.currentTenantSubject.next(tenant);\n if (tenant) {\n this.updateSession({ tenant: tenant });\n await this.refreshToken();\n }\n }\n async setApplication(application) {\n this.currentApplicationSubject.next(application);\n if (application) {\n this.updateSession({ application: application });\n await this.refreshToken();\n await this.loadPermissions();\n await this.loadFeatures();\n }\n }\n async loadPermissions() {\n try {\n const permissions = await firstValueFrom(this.permissionLoader.getList(this.getContext()));\n this.permissionsSubject.next(permissions ?? []);\n }\n catch (error) {\n console.error('Error loading permissions:', error);\n this.permissionsSubject.next([]);\n }\n }\n async loadFeatures() {\n try {\n const features = await firstValueFrom(this.featureLoader.getList(this.getContext()));\n this.featuresSubject.next(features ?? []);\n }\n catch (error) {\n console.error('Error loading features:', error);\n this.featuresSubject.next([]);\n }\n }\n async signInComplete() {\n this.status.next(AXPSessionStatus.Authorized);\n }\n setSession(tokens) {\n const sessionData = {\n accessToken: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n strategy: tokens.strategy,\n user: this.user,\n application: tokens.application,\n tenant: tokens.tenant,\n expiresIn: tokens.expiresIn,\n idToken: tokens.idToken,\n };\n this.updateSession(sessionData);\n }\n updateSession(update) {\n const currentSession = this.getSessionData() ?? {};\n const updatedSession = merge({}, currentSession, update);\n localStorage.setItem(AXPSessionService.SESSION_KEY, JSON.stringify(updatedSession));\n }\n getSessionData() {\n const sessionDataString = localStorage.getItem(AXPSessionService.SESSION_KEY);\n return sessionDataString ? JSON.parse(sessionDataString) : null;\n }\n clearSession() {\n //\n this.currentUserSubject.next(null);\n //\n this.setTenant(null);\n //\n this.setApplication(null);\n //\n this.permissionsSubject.next([]);\n //\n this.featuresSubject.next([]);\n //\n localStorage.removeItem(AXPSessionService.SESSION_KEY);\n }\n authorize(...keys) {\n return keys.every((k) => isEmpty(k) || this.permissions.indexOf(k) > -1);\n }\n isFeatureEnabled(...keys) {\n return keys.every((k) => isEmpty(k) || this.features.some((c) => c.name == k && c.value == true));\n }\n getToken() {\n const sessionData = this.getSessionData();\n return sessionData?.accessToken;\n }\n checkTokenValidation() {\n let sessionData = this.getSessionData();\n if (sessionData && sessionData?.accessToken && sessionData.expiresIn) {\n const expiresInDate = new Date(sessionData.expiresIn);\n if (expiresInDate > new Date()) {\n // Token is still valid\n return true;\n }\n }\n return false;\n }\n getContext() {\n return new AXPSessionContext({\n user: this.user,\n tenant: this.tenant,\n application: this.application,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPSessionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPSessionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPSessionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hdXRoL3NyYy9saWIvc2Vzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsY0FBYyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXpFLE9BQU8sRUFBYyxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFPM0QsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlVLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFaEQseUJBQW9CLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFHckQscUJBQWdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDakQsa0JBQWEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxp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VSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQQnJvYWRjYXN0RXZlbnRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkZWZhdWx0SWZFbXB0eSwgZmlyc3RWYWx1ZUZyb20sIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUF9BUFBMSUNBVElPTl9MT0FERVIgfSBmcm9tICcuL2FwcGxpY2F0aW9uL2FwcGxpY2F0aW9uLmxvYWRlcic7XG5pbXBvcnQgeyBBWFBBcHBsaWNhdGlvbiB9IGZyb20gJy4vYXBwbGljYXRpb24vYXBwbGljYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhQQXV0aFN0cmF0ZWd5UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQQmFzZUNyZWRlbnRpYWxzLCBBWFBTZXNzaW9uRGF0YSB9IGZyb20gJy4vYXV0aC5zdHJhdGVneSc7XG5pbXBvcnQgeyBBWFBGZWF0dXJlLCBBWFBfRkVBVFVSRV9MT0FERVIgfSBmcm9tICcuL2ZlYXR1cmUnO1xuaW1wb3J0IHsgQVhQX1BFUk1JU1NJT05fTE9BREVSIH0gZnJvbSAnLi9wZXJtaXNzaW9uL3Blcm1pc3Npb24ubG9hZGVyJztcbmltcG9ydCB7IEFYUFBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb24vcGVybWlzc2lvbi50eXBlcyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uQ29udGV4dCwgQVhQU2Vzc2lvblN0YXR1cyB9IGZyb20gJy4vc2Vzc2lvbi50eXBlcyc7XG5pbXBvcnQgeyBBWFBfVEVOQU5UX0xPQURFUiB9IGZyb20gJy4vdGVuYW50L3RlbmFudC5sb2FkZXInO1xuaW1wb3J0IHsgQVhQVGVuYW50IH0gZnJvbSAnLi90ZW5hbnQvdGVuYW50LnR5cGVzJztcbmltcG9ydCB7IEFYUFVzZXIgfSBmcm9tICcuL3VzZXIvdXNlci50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBTZXNzaW9uU2VydmljZSB7XG4gIHByaXZhdGUgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFYUEJyb2FkY2FzdEV2ZW50U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBhdXRoU3RyYXRlZ3lSZWdpc3RyeSA9IGluamVjdChBWFBBdXRoU3RyYXRlZ3lSZWdpc3RyeVNlcnZpY2UpO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFU1NJT05fS0VZID0gJ0FYUF9TRVNTSU9OJztcblxuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25Mb2FkZXIgPSBpbmplY3QoQVhQX1BFUk1JU1NJT05fTE9BREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlTG9hZGVyID0gaW5qZWN0KEFYUF9GRUFUVVJFX0xPQURFUik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVuYW50TG9hZGVyID0gaW5qZWN0KEFYUF9URU5BTlRfTE9BREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHBsaWNhdGlvbkxvYWRlciA9IGluamVjdChBWFBfQVBQTElDQVRJT05fTE9BREVSKTtcblxuICBwcml2YXRlIHN0YXR1cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QVhQU2Vzc2lvblN0YXR1cz4oQVhQU2Vzc2lvblN0YXR1cy5VbmF1dGhlbnRpY2F0ZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzJCA9IHRoaXMuc3RhdHVzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHByaXZhdGUgY3VycmVudFVzZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBWFBVc2VyIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyJCA9IHRoaXMuY3VycmVudFVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICBwdWJsaWMgZ2V0IHVzZXIoKTogQVhQVXNlciB8IG51bGwge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmdldFNlc3Npb25EYXRhKCk7XG4gICAgaWYgKHNlc3Npb24/LnVzZXIgJiYgIXRoaXMuY3VycmVudFVzZXJTdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC5uZXh0KHNlc3Npb24udXNlcik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFRlbmFudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYUFRlbmFudCB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgdGVuYW50JCA9IHRoaXMuY3VycmVudFRlbmFudFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIHB1YmxpYyBnZXQgdGVuYW50KCk6IEFYUFRlbmFudCB8IG51bGwge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmdldFNlc3Npb25EYXRhKCk7XG4gICAgaWYgKHNlc3Npb24/LnRlbmFudCAmJiAhdGhpcy5jdXJyZW50VGVuYW50U3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5jdXJyZW50VGVuYW50U3ViamVjdC5uZXh0KHNlc3Npb24udGVuYW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRlbmFudFN1YmplY3QudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRlbmFudHMkKCk6IE9ic2VydmFibGU8QVhQVGVuYW50W10+IHtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRMb2FkZXIuZ2V0TGlzdCh0aGlzLmdldENvbnRleHQoKSk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRBcHBsaWNhdGlvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYUEFwcGxpY2F0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBhcHBsaWNhdGlvbiQgPSB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIHB1YmxpYyBnZXQgYXBwbGljYXRpb24oKTogQVhQQXBwbGljYXRpb24gfCBudWxsIHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5nZXRTZXNzaW9uRGF0YSgpO1xuICAgIGlmIChzZXNzaW9uPy5hcHBsaWNhdGlvbiAmJiAhdGhpcy5jdXJyZW50QXBwbGljYXRpb25TdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvblN1YmplY3QubmV4dChzZXNzaW9uLmFwcGxpY2F0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEFwcGxpY2F0aW9uU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBwbGljYXRpb25zJCgpOiBPYnNlcnZhYmxlPEFYUEFwcGxpY2F0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvbkxvYWRlci5nZXRMaXN0KHRoaXMuZ2V0Q29udGV4dCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVybWlzc2lvbnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBWFBQZXJtaXNzaW9uW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IHBlcm1pc3Npb25zJCA9IHRoaXMucGVybWlzc2lvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoMSksIGRlZmF1bHRJZkVtcHR5KFtdKSk7XG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnMoKTogQVhQUGVybWlzc2lvbltdIHtcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uc1N1YmplY3QudmFsdWUgPz8gW107XG4gIH1cblxuICBwcml2YXRlIGZlYXR1cmVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QVhQRmVhdHVyZVtdPihbXSk7XG4gIHB1YmxpYyByZWFkb25seSBmZWF0dXJlcyQgPSB0aGlzLmZlYXR1cmVzU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KDEpLCBkZWZhdWx0SWZFbXB0eShbXSkpO1xuICBwdWJsaWMgZ2V0IGZlYXR1cmVzKCk6IEFYUEZlYXR1cmVbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZXNTdWJqZWN0LnZhbHVlID8/IFtdO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCQgPSB0aGlzLnN0YXR1cyQucGlwZShcbiAgICBtYXAoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBTZXNzaW9uU3RhdHVzLkF1dGhlbnRpY2F0ZWQgfHwgc3RhdHVzID09PSBBWFBTZXNzaW9uU3RhdHVzLkF1dGhvcml6ZWQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQXV0aG9yaXplZCQgPSB0aGlzLnN0YXR1cyQucGlwZShcbiAgICBtYXAoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBTZXNzaW9uU3RhdHVzLkF1dGhvcml6ZWQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHVibGljIGFzeW5jIHJlc3RvcmVTZXNzaW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlc3Npb25EYXRhID0gdGhpcy5nZXRTZXNzaW9uRGF0YSgpO1xuICAgIGlmIChzZXNzaW9uRGF0YSkge1xuICAgICAgaWYgKHNlc3Npb25EYXRhLnVzZXIpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VXNlclN1YmplY3QubmV4dChzZXNzaW9uRGF0YS51c2VyKTtcbiAgICAgICAgdGhpcy5zdGF0dXMubmV4dChBWFBTZXNzaW9uU3RhdHVzLkF1dGhlbnRpY2F0ZWQpO1xuICAgICAgfVxuICAgICAgLy8gaWYgKHNlc3Npb25EYXRhLnRlbmFudCkge1xuICAgICAgLy8gICB0aGlzLnNldFRlbmFudChzZXNzaW9uRGF0YS50ZW5hbnQpO1xuICAgICAgLy8gfVxuICAgICAgLy8gaWYgKHNlc3Npb25EYXRhLmFwcGxpY2F0aW9uKSB7XG4gICAgICAvLyAgIHRoaXMuc2V0QXBwbGljYXRpb24oc2Vzc2lvbkRhdGEuYXBwbGljYXRpb24pO1xuICAgICAgLy8gfVxuICAgICAgYXdhaXQgdGhpcy5sb2FkUGVybWlzc2lvbnMoKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEZlYXR1cmVzKCk7XG4gICAgICBhd2FpdCB0aGlzLnNpZ25JbkNvbXBsZXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdHVzLm5leHQoQVhQU2Vzc2lvblN0YXR1cy5VbmF1dGhvcml6ZWQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNpZ25pbihjcmVkZW50aWFsczogQVhQQmFzZUNyZWRlbnRpYWxzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gXG4gICAgdGhpcy5jbGVhclNlc3Npb24oKTtcbiAgICAvL1xuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5hdXRoU3RyYXRlZ3lSZWdpc3RyeS5nZXQoY3JlZGVudGlhbHMuc3RyYXRlZ3kpO1xuICAgIGlmICghc3RyYXRlZ3kpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXV0aGVudGljYXRpb24gc3RyYXRlZ3kgJyR7Y3JlZGVudGlhbHMuc3RyYXRlZ3l9JyBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0cmF0ZWd5LnNpZ25pbihjcmVkZW50aWFscyk7XG4gICAgaWYgKHJlc3VsdC5zdWNjZWVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC5uZXh0KHJlc3VsdC5kYXRhIS51c2VyKTtcbiAgICAgIHRoaXMuc2V0U2Vzc2lvbih7XG4gICAgICAgIGFjY2Vzc1Rva2VuOiByZXN1bHQuZGF0YSEuYWNjZXNzVG9rZW4sXG4gICAgICAgIHJlZnJlc2hUb2tlbjogcmVzdWx0LmRhdGEhLnJlZnJlc2hUb2tlbixcbiAgICAgICAgc3RyYXRlZ3k6IGNyZWRlbnRpYWxzLnN0cmF0ZWd5LFxuICAgICAgICB1c2VyOiByZXN1bHQuZGF0YSEudXNlcixcbiAgICAgICAgYXBwbGljYXRpb246IHJlc3VsdC5kYXRhPy5hcHBsaWNhdGlvbixcbiAgICAgICAgdGVuYW50OiByZXN1bHQuZGF0YT8udGVuYW50LFxuICAgICAgICBleHBpcmVzSW46IHJlc3VsdC5kYXRhPy5leHBpcmVzSW4sXG4gICAgICAgIGlkVG9rZW46IHJlc3VsdC5kYXRhPy5pZFRva2VuID8/IG51bGwsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3RhdHVzLm5leHQoQVhQU2Vzc2lvblN0YXR1cy5BdXRoZW50aWNhdGVkKTtcbiAgICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uICYmIHRoaXMudGVuYW50KSBhd2FpdCB0aGlzLnNpZ25JbkNvbXBsZXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdHVzLm5leHQoQVhQU2Vzc2lvblN0YXR1cy5VbmF1dGhlbnRpY2F0ZWQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFVzZXJuYW1lIG9yIFBhc3N3b3JkYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2lnbm91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXNzaW9uRGF0YSA9IHRoaXMuZ2V0U2Vzc2lvbkRhdGEoKTtcbiAgICBpZiAoc2Vzc2lvbkRhdGE/LnN0cmF0ZWd5KSB7XG4gICAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuYXV0aFN0cmF0ZWd5UmVnaXN0cnkuZ2V0KHNlc3Npb25EYXRhPy5zdHJhdGVneSk7XG4gICAgICBpZiAoc3RyYXRlZ3kpIHtcbiAgICAgICAgYXdhaXQgc3RyYXRlZ3kuc2lnbm91dCgpO1xuICAgICAgfVxuICAgIH1cbiAgICAvL1xuICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMudXNlcj8uaWQ7XG4gICAgdGhpcy5jbGVhclNlc3Npb24oKTtcbiAgICB0aGlzLnN0YXR1cy5uZXh0KEFYUFNlc3Npb25TdGF0dXMuU2lnbmVkT3V0KTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5wdWJsaXNoKEFYUFNlc3Npb25TdGF0dXMuU2lnbmVkT3V0LCB7IGlkOiB1c2VySWQgfSk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoVG9rZW4oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbkRhdGEgPSB0aGlzLmdldFNlc3Npb25EYXRhKCk7XG4gICAgICBpZiAoIXNlc3Npb25EYXRhIHx8ICFzZXNzaW9uRGF0YT8ucmVmcmVzaFRva2VuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5hdXRoU3RyYXRlZ3lSZWdpc3RyeS5nZXQoc2Vzc2lvbkRhdGEuc3RyYXRlZ3kpO1xuICAgICAgaWYgKCFzdHJhdGVneSkge1xuICAgICAgICByZWplY3QoKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdXRoZW50aWNhdGlvbiBzdHJhdGVneSAnJHtzZXNzaW9uRGF0YS5zdHJhdGVneX0nIGlzIG5vdCBmb3VuZGApO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RyYXRlZ3kucmVmcmVzaFRva2VuKHRoaXMuZ2V0Q29udGV4dCgpKTtcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VlZCkge1xuICAgICAgICB0aGlzLnNldFNlc3Npb24ocmVzdWx0LmRhdGEgYXMgQVhQU2Vzc2lvbkRhdGEpO1xuICAgICAgICByZXNvbHZlKHJlc3VsdC5kYXRhPy5hY2Nlc3NUb2tlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsZWFyU2Vzc2lvbigpO1xuICAgICAgICB0aGlzLnN0YXR1cy5uZXh0KEFYUFNlc3Npb25TdGF0dXMuRXhwaXJlZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRUZW5hbnQodGVuYW50OiBBWFBUZW5hbnQgfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdXJyZW50VGVuYW50U3ViamVjdC5uZXh0KHRlbmFudCk7XG4gICAgaWYgKHRlbmFudCkge1xuICAgICAgdGhpcy51cGRhdGVTZXNzaW9uKHsgdGVuYW50OiB0ZW5hbnQgfSk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldEFwcGxpY2F0aW9uKGFwcGxpY2F0aW9uOiBBWFBBcHBsaWNhdGlvbiB8IG51bGwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvblN1YmplY3QubmV4dChhcHBsaWNhdGlvbik7XG4gICAgaWYgKGFwcGxpY2F0aW9uKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlc3Npb24oeyBhcHBsaWNhdGlvbjogYXBwbGljYXRpb24gfSk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkUGVybWlzc2lvbnMoKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEZlYXR1cmVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUGVybWlzc2lvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wZXJtaXNzaW9uTG9hZGVyLmdldExpc3QodGhpcy5nZXRDb250ZXh0KCkpKTtcbiAgICAgIHRoaXMucGVybWlzc2lvbnNTdWJqZWN0Lm5leHQocGVybWlzc2lvbnMgPz8gW10pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHBlcm1pc3Npb25zOicsIGVycm9yKTtcbiAgICAgIHRoaXMucGVybWlzc2lvbnNTdWJqZWN0Lm5leHQoW10pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEZlYXR1cmVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuZmVhdHVyZUxvYWRlci5nZXRMaXN0KHRoaXMuZ2V0Q29udGV4dCgpKSk7XG4gICAgICB0aGlzLmZlYXR1cmVzU3ViamVjdC5uZXh0KGZlYXR1cmVzID8/IFtdKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBmZWF0dXJlczonLCBlcnJvcik7XG4gICAgICB0aGlzLmZlYXR1cmVzU3ViamVjdC5uZXh0KFtdKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaWduSW5Db21wbGV0ZSgpIHtcbiAgICB0aGlzLnN0YXR1cy5uZXh0KEFYUFNlc3Npb25TdGF0dXMuQXV0aG9yaXplZCk7XG4gIH1cblxuICBwcml2YXRlIHNldFNlc3Npb24odG9rZW5zOiBQYXJ0aWFsPEFYUFNlc3Npb25EYXRhPik6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb25EYXRhOiBQYXJ0aWFsPEFYUFNlc3Npb25EYXRhPiA9IHtcbiAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbnMuYWNjZXNzVG9rZW4sXG4gICAgICByZWZyZXNoVG9rZW46IHRva2Vucy5yZWZyZXNoVG9rZW4sXG4gICAgICBzdHJhdGVneTogdG9rZW5zLnN0cmF0ZWd5LFxuICAgICAgdXNlcjogdGhpcy51c2VyLFxuICAgICAgYXBwbGljYXRpb246IHRva2Vucy5hcHBsaWNhdGlvbixcbiAgICAgIHRlbmFudDogdG9rZW5zLnRlbmFudCxcbiAgICAgIGV4cGlyZXNJbjogdG9rZW5zLmV4cGlyZXNJbixcbiAgICAgIGlkVG9rZW46IHRva2Vucy5pZFRva2VuLFxuICAgIH07XG4gICAgdGhpcy51cGRhdGVTZXNzaW9uKHNlc3Npb25EYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2Vzc2lvbih1cGRhdGU6IFBhcnRpYWw8QVhQU2Vzc2lvbkRhdGE+KSB7XG4gICAgY29uc3QgY3VycmVudFNlc3Npb24gPSB0aGlzLmdldFNlc3Npb25EYXRhKCkgPz8ge307XG4gICAgY29uc3QgdXBkYXRlZFNlc3Npb24gPSBtZXJnZSh7fSwgY3VycmVudFNlc3Npb24sIHVwZGF0ZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oQVhQU2Vzc2lvblNlcnZpY2UuU0VTU0lPTl9LRVksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWRTZXNzaW9uKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2Vzc2lvbkRhdGEoKTogQVhQU2Vzc2lvbkRhdGEgfCBudWxsIHtcbiAgICBjb25zdCBzZXNzaW9uRGF0YVN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKEFYUFNlc3Npb25TZXJ2aWNlLlNFU1NJT05fS0VZKTtcbiAgICByZXR1cm4gc2Vzc2lvbkRhdGFTdHJpbmcgPyBKU09OLnBhcnNlKHNlc3Npb25EYXRhU3RyaW5nKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2Vzc2lvbigpOiB2b2lkIHtcbiAgICAvL1xuICAgIHRoaXMuY3VycmVudFVzZXJTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgLy9cbiAgICB0aGlzLnNldFRlbmFudChudWxsKTtcbiAgICAvL1xuICAgIHRoaXMuc2V0QXBwbGljYXRpb24obnVsbCk7XG4gICAgLy9cbiAgICB0aGlzLnBlcm1pc3Npb25zU3ViamVjdC5uZXh0KFtdKTtcbiAgICAvL1xuICAgIHRoaXMuZmVhdHVyZXNTdWJqZWN0Lm5leHQoW10pO1xuICAgIC8vXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oQVhQU2Vzc2lvblNlcnZpY2UuU0VTU0lPTl9LRVkpO1xuICB9XG5cbiAgcHVibGljIGF1dGhvcml6ZSguLi5rZXlzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBrZXlzLmV2ZXJ5KChrKSA9PiBpc0VtcHR5KGspIHx8IHRoaXMucGVybWlzc2lvbnMuaW5kZXhPZihrKSA+IC0xKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0ZlYXR1cmVFbmFibGVkKC4uLmtleXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGtleXMuZXZlcnkoKGspID0+IGlzRW1wdHkoaykgfHwgdGhpcy5mZWF0dXJlcy5zb21lKChjKSA9PiBjLm5hbWUgPT0gayAmJiBjLnZhbHVlID09IHRydWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUb2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlc3Npb25EYXRhID0gdGhpcy5nZXRTZXNzaW9uRGF0YSgpO1xuXG4gICAgcmV0dXJuIHNlc3Npb25EYXRhPy5hY2Nlc3NUb2tlbjtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tUb2tlblZhbGlkYXRpb24oKTogYm9vbGVhbiB7XG4gICAgbGV0IHNlc3Npb25EYXRhID0gdGhpcy5nZXRTZXNzaW9uRGF0YSgpO1xuXG4gICAgaWYgKHNlc3Npb25EYXRhICYmIHNlc3Npb25EYXRhPy5hY2Nlc3NUb2tlbiAmJiBzZXNzaW9uRGF0YS5leHBpcmVzSW4pIHtcbiAgICAgIGNvbnN0IGV4cGlyZXNJbkRhdGUgPSBuZXcgRGF0ZShzZXNzaW9uRGF0YS5leHBpcmVzSW4pO1xuICAgICAgaWYgKGV4cGlyZXNJbkRhdGUgPiBuZXcgRGF0ZSgpKSB7XG4gICAgICAgIC8vIFRva2VuIGlzIHN0aWxsIHZhbGlkXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHQoKTogQVhQU2Vzc2lvbkNvbnRleHQge1xuICAgIHJldHVybiBuZXcgQVhQU2Vzc2lvbkNvbnRleHQoe1xuICAgICAgdXNlcjogdGhpcy51c2VyLFxuICAgICAgdGVuYW50OiB0aGlzLnRlbmFudCxcbiAgICAgIGFwcGxpY2F0aW9uOiB0aGlzLmFwcGxpY2F0aW9uLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { Directive, Input, TemplateRef, ViewContainerRef, inject, signal } from '@angular/core';\nimport { AXPSessionService } from '../session.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPPermissionDirective {\n constructor(templateRef, viewContainer) {\n this.templateRef = templateRef;\n this.viewContainer = viewContainer;\n this.hasView = signal(false);\n this.sessionService = inject(AXPSessionService);\n }\n set permission(permissionKeys) {\n const keys = !permissionKeys ? [] : (Array.isArray(permissionKeys) ? permissionKeys : [permissionKeys]);\n if (keys.length == 0) {\n // If permissionKey is null or empty, decide the default behavior here\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView.set(true);\n return;\n }\n this.subscription = this.sessionService.isAuthorized$\n .subscribe((isAuthorized) => {\n if (isAuthorized && this.sessionService.authorize(...keys)) {\n if (!this.hasView()) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView.set(true);\n }\n }\n else {\n this.viewContainer.clear();\n this.hasView.set(false);\n }\n });\n }\n set permissionElse(elseTemplateRef) {\n if (!this.hasView()) {\n this.viewContainer.createEmbeddedView(elseTemplateRef);\n }\n }\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPPermissionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPPermissionDirective, isStandalone: false, selector: \"[permission]\", inputs: { permission: \"permission\", permissionElse: \"permissionElse\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPPermissionDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[permission]',\n standalone: false\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { permission: [{\n type: Input\n }], permissionElse: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9wZXJtaXNzaW9uL3Blcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU12RCxNQUFNLE9BQU8sc0JBQXNCO0lBS2pDLFlBQ1UsV0FBNkIsRUFDN0IsYUFBK0I7UUFEL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQU5qQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFLL0MsQ0FBQztJQUVMLElBQ1csVUFBVSxDQUFDLGNBQXdDO1FBQzVELE1BQU0sSUFBSSxHQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDbEgsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLHNFQUFzRTtZQUN0RSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhO2FBQ2xELFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzFCLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQ1csY0FBYyxDQUFDLGVBQWlDO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs4R0ExQ1Usc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxLQUFLO2lCQUNwQjsrR0FZWSxVQUFVO3NCQURwQixLQUFLO2dCQXdCSyxjQUFjO3NCQUR4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpcnN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24uc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3Blcm1pc3Npb25dJyxcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBBWFBQZXJtaXNzaW9uRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBoYXNWaWV3ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICkgeyB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwZXJtaXNzaW9uKHBlcm1pc3Npb25LZXlzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwpIHtcbiAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9ICFwZXJtaXNzaW9uS2V5cyA/IFtdIDogKEFycmF5LmlzQXJyYXkocGVybWlzc2lvbktleXMpID8gcGVybWlzc2lvbktleXMgOiBbcGVybWlzc2lvbktleXNdKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT0gMCkge1xuICAgICAgLy8gSWYgcGVybWlzc2lvbktleSBpcyBudWxsIG9yIGVtcHR5LCBkZWNpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaGVyZVxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICAgIHRoaXMuaGFzVmlldy5zZXQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5zZXNzaW9uU2VydmljZS5pc0F1dGhvcml6ZWQkXG4gICAgICAuc3Vic2NyaWJlKChpc0F1dGhvcml6ZWQpID0+IHtcbiAgICAgICAgaWYgKGlzQXV0aG9yaXplZCAmJiB0aGlzLnNlc3Npb25TZXJ2aWNlLmF1dGhvcml6ZSguLi5rZXlzKSkge1xuICAgICAgICAgIGlmICghdGhpcy5oYXNWaWV3KCkpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgICAgICB0aGlzLmhhc1ZpZXcuc2V0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgICB0aGlzLmhhc1ZpZXcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBlcm1pc3Npb25FbHNlKGVsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICghdGhpcy5oYXNWaWV3KCkpIHtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZWxzZVRlbXBsYXRlUmVmKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { first, map } from 'rxjs';\nimport { AXPUnauthorizedError } from '../errors.types';\nimport { AXPSessionService } from '../session.service';\nexport const AXPPermissionGuard = (route, state) => {\n const sessionService = inject(AXPSessionService);\n const permissionKeys = route.data['requiredPermission'];\n return sessionService.isAuthorized$.pipe(first(), map((value) => {\n const keys = !permissionKeys ? [] : Array.isArray(permissionKeys) ? permissionKeys : [permissionKeys];\n const hasPermission = keys.length == 0 || sessionService.authorize(...keys);\n if (!hasPermission) {\n throw new AXPUnauthorizedError(`Access denied. Required permissions: ${keys.join(', ')}. Please contact your administrator if you believe this is an error.`, {\n redirectUrl: state.url\n });\n }\n return true;\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL3Blcm1pc3Npb24vcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFPLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFrQixDQUFDLEtBQTZCLEVBQUUsS0FBMEIsRUFBRSxFQUFFO0lBRTdHLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWpELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQTZCLENBQUM7SUFFcEYsT0FBTyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDdEMsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDWixNQUFNLElBQUksR0FBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEgsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksb0JBQW9CLENBQzVCLHdDQUF3QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzRUFBc0UsRUFDN0g7Z0JBQ0UsV0FBVyxFQUFFLEtBQUssQ0FBQyxHQUFHO2FBQ3ZCLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlRm4sIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBVbmF1dGhvcml6ZWRFcnJvciB9IGZyb20gJy4uL2Vycm9ycy50eXBlcyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24uc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBBWFBQZXJtaXNzaW9uR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XG5cbiAgY29uc3Qgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gIGNvbnN0IHBlcm1pc3Npb25LZXlzID0gcm91dGUuZGF0YVsncmVxdWlyZWRQZXJtaXNzaW9uJ10gYXMgc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsO1xuXG4gIHJldHVybiBzZXNzaW9uU2VydmljZS5pc0F1dGhvcml6ZWQkLnBpcGUoXG4gICAgZmlyc3QoKSxcbiAgICBtYXAoKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9ICFwZXJtaXNzaW9uS2V5cyA/IFtdIDogQXJyYXkuaXNBcnJheShwZXJtaXNzaW9uS2V5cykgPyBwZXJtaXNzaW9uS2V5cyA6IFtwZXJtaXNzaW9uS2V5c107XG4gICAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0ga2V5cy5sZW5ndGggPT0gMCB8fCBzZXNzaW9uU2VydmljZS5hdXRob3JpemUoLi4ua2V5cyk7XG4gICAgICBpZiAoIWhhc1Blcm1pc3Npb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEFYUFVuYXV0aG9yaXplZEVycm9yKFxuICAgICAgICAgIGBBY2Nlc3MgZGVuaWVkLiBSZXF1aXJlZCBwZXJtaXNzaW9uczogJHtrZXlzLmpvaW4oJywgJyl9LiBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgaWYgeW91IGJlbGlldmUgdGhpcyBpcyBhbiBlcnJvci5gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZGlyZWN0VXJsOiBzdGF0ZS51cmxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KVxuICApO1xufTtcbiJdfQ==","export class AXPPermissionDefinitionProviderContext {\n constructor() {\n this.builders = new Map();\n }\n addGroup(name, title, description) {\n if (this.isGroupDefined(name)) {\n return this.findGroup(name);\n }\n const group = {\n name,\n title,\n description,\n permissions: []\n };\n const builder = new AXPPermissionDefinitionGroupBuilder(this, group);\n this.builders.set(name, builder);\n return builder;\n }\n getGroupDefinitions() {\n return Array.from(this.builders.values()).map(b => b.group);\n }\n findGroup(name) {\n return this.builders.get(name);\n }\n isGroupDefined(name) {\n return this.builders.has(name);\n }\n}\nexport class AXPPermissionDefinitionGroupBuilder {\n get group() {\n return this._group;\n }\n constructor(context, group) {\n this.context = context;\n this._group = group;\n }\n addPermission(name, title, description) {\n const permission = {\n name,\n title,\n description,\n children: []\n };\n this._group.permissions.push(permission);\n return new AXPPermissionDefinitionBuilder(this, permission);\n }\n endGroup() {\n return this.context;\n }\n findPermission(path) {\n return undefined;\n }\n findGroup(name) {\n return undefined;\n }\n}\nexport class AXPPermissionDefinitionBuilder {\n constructor(groupBuilder, permission) {\n this.groupBuilder = groupBuilder;\n this.permission = permission;\n }\n addChild(name, title, description) {\n const permission = {\n name,\n title,\n description,\n children: []\n };\n this.permission.children.push(permission);\n return this;\n }\n endPermission() {\n return this.groupBuilder;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9wZXJtaXNzaW9uL3Blcm1pc3Npb24tZGVmaW5pdGlvbi5idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxzQ0FBc0M7SUFBbkQ7UUFDWSxhQUFRLEdBQXFELElBQUksR0FBRyxFQUFFLENBQUM7SUE0Qm5GLENBQUM7SUExQkcsUUFBUSxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsV0FBb0I7UUFDdEQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBRSxDQUFBO1FBQ2hDLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBaUM7WUFDeEMsSUFBSTtZQUNKLEtBQUs7WUFDTCxXQUFXO1lBQ1gsV0FBVyxFQUFFLEVBQUU7U0FDbEIsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksbUNBQW1DLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNKO0FBSUQsTUFBTSxPQUFPLG1DQUFtQztJQUk1QyxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQVksT0FBK0MsRUFBRSxLQUFtQztRQUM1RixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsV0FBb0I7UUFDM0QsTUFBTSxVQUFVLEdBQTRCO1lBQ3hDLElBQUk7WUFDSixLQUFLO1lBQ0wsV0FBVztZQUNYLFFBQVEsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksOEJBQThCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFLRCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN2QixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDbEIsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztDQUVKO0FBRUQsTUFBTSxPQUFPLDhCQUE4QjtJQUl2QyxZQUFZLFlBQWlELEVBQUUsVUFBbUM7UUFDOUYsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLFdBQW9CO1FBQ3RELE1BQU0sVUFBVSxHQUE0QjtZQUN4QyxJQUFJO1lBQ0osS0FBSztZQUNMLFdBQVc7WUFDWCxRQUFRLEVBQUUsRUFBRTtTQUNmLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdELGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQUGVybWlzc2lvbkRlZmluaXRpb24sIEFYUFBlcm1pc3Npb25Hcm91cERlZmluaXRpb24gfSBmcm9tIFwiLi9wZXJtaXNzaW9uLnR5cGVzXCI7XG5cblxuZXhwb3J0IGNsYXNzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0IHtcbiAgICBwcml2YXRlIGJ1aWxkZXJzOiBNYXA8c3RyaW5nLCBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkdyb3VwQnVpbGRlcj4gPSBuZXcgTWFwKCk7XG5cbiAgICBhZGRHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogQVhQUGVybWlzc2lvbkRlZmluaXRpb25Hcm91cEJ1aWxkZXIge1xuICAgICAgICBpZiAodGhpcy5pc0dyb3VwRGVmaW5lZChuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZEdyb3VwKG5hbWUpIVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyb3VwOiBBWFBQZXJtaXNzaW9uR3JvdXBEZWZpbml0aW9uID0ge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwZXJtaXNzaW9uczogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkdyb3VwQnVpbGRlcih0aGlzLCBncm91cCk7XG4gICAgICAgIHRoaXMuYnVpbGRlcnMuc2V0KG5hbWUsIGJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBnZXRHcm91cERlZmluaXRpb25zKCk6IEFYUFBlcm1pc3Npb25Hcm91cERlZmluaXRpb25bXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuYnVpbGRlcnMudmFsdWVzKCkpLm1hcChiID0+IGIuZ3JvdXApO1xuICAgIH1cblxuICAgIGZpbmRHcm91cChuYW1lOiBzdHJpbmcpOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkdyb3VwQnVpbGRlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkZXJzLmdldChuYW1lKTtcbiAgICB9XG5cbiAgICBpc0dyb3VwRGVmaW5lZChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRlcnMuaGFzKG5hbWUpO1xuICAgIH1cbn1cblxuXG5cbmV4cG9ydCBjbGFzcyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkdyb3VwQnVpbGRlciB7XG4gICAgcHJpdmF0ZSBjb250ZXh0OiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dDtcbiAgICBwcml2YXRlIF9ncm91cDogQVhQUGVybWlzc2lvbkdyb3VwRGVmaW5pdGlvbjtcblxuICAgIHB1YmxpYyBnZXQgZ3JvdXAoKTogQVhQUGVybWlzc2lvbkdyb3VwRGVmaW5pdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncm91cDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCwgZ3JvdXA6IEFYUFBlcm1pc3Npb25Hcm91cERlZmluaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgdGhpcy5fZ3JvdXAgPSBncm91cDtcbiAgICB9XG5cbiAgICBhZGRQZXJtaXNzaW9uKG5hbWU6IHN0cmluZywgdGl0bGU6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkJ1aWxkZXIge1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2dyb3VwLnBlcm1pc3Npb25zLnB1c2gocGVybWlzc2lvbik7XG4gICAgICAgIHJldHVybiBuZXcgQVhQUGVybWlzc2lvbkRlZmluaXRpb25CdWlsZGVyKHRoaXMsIHBlcm1pc3Npb24pO1xuICAgIH1cblxuXG5cblxuICAgIGVuZEdyb3VwKCk6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgICB9XG5cbiAgICBmaW5kUGVybWlzc2lvbihwYXRoOiBzdHJpbmcpOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZmluZEdyb3VwKG5hbWU6IHN0cmluZyk6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uR3JvdXBCdWlsZGVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbn1cblxuZXhwb3J0IGNsYXNzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uQnVpbGRlciB7XG4gICAgcHJpdmF0ZSBncm91cEJ1aWxkZXI6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uR3JvdXBCdWlsZGVyO1xuICAgIHByaXZhdGUgcGVybWlzc2lvbjogQVhQUGVybWlzc2lvbkRlZmluaXRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihncm91cEJ1aWxkZXI6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uR3JvdXBCdWlsZGVyLCBwZXJtaXNzaW9uOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbikge1xuICAgICAgICB0aGlzLmdyb3VwQnVpbGRlciA9IGdyb3VwQnVpbGRlcjtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uID0gcGVybWlzc2lvbjtcbiAgICB9XG5cbiAgICBhZGRDaGlsZChuYW1lOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogQVhQUGVybWlzc2lvbkRlZmluaXRpb25CdWlsZGVyIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbjogQVhQUGVybWlzc2lvbkRlZmluaXRpb24gPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnBlcm1pc3Npb24uY2hpbGRyZW4ucHVzaChwZXJtaXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG5cbiAgICBlbmRQZXJtaXNzaW9uKCk6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uR3JvdXBCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBCdWlsZGVyO1xuICAgIH1cbn0iXX0=","import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPPermissionDefinitionProviderContext } from './permission-definition.builder';\nimport * as i0 from \"@angular/core\";\nexport const AXP_PERMISSION_DEFINITION_PROVIDER = new InjectionToken('AXP_PERMISSION_DEFINITION_PROVIDER', {\n providedIn: 'root',\n factory: () => {\n return [];\n }\n});\nexport class AXPPermissionDefinitionService {\n constructor() {\n this.providers = inject(AXP_PERMISSION_DEFINITION_PROVIDER, { optional: true });\n this.cache = null;\n }\n async load() {\n if (this.cache) {\n return;\n }\n const context = new AXPPermissionDefinitionProviderContext();\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n if (provider instanceof Promise) {\n // If provider is a promise, resolve it\n const resolvedProvider = await provider;\n await resolvedProvider.define(context);\n }\n else {\n // If provider is a direct instance, use it directly\n await provider.define(context);\n }\n }\n }\n this.cache = context.getGroupDefinitions();\n }\n async reload() {\n this.cache = null;\n await this.load();\n }\n async getGroups() {\n await this.load();\n return this.cache ?? [];\n }\n async getPermissions() {\n await this.load();\n return this.cache?.flatMap(g => g.permissions) ?? [];\n }\n async getGroup(name) {\n await this.load();\n return this.cache?.find(g => g.name === name) ?? null;\n }\n async getPermission(name) {\n await this.load();\n return this.cache?.find(g => g.permissions.find(p => p.name === name))?.permissions.find(p => p.name === name) ?? null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPPermissionDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPPermissionDefinitionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPPermissionDefinitionService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9wZXJtaXNzaW9uL3Blcm1pc3Npb24tZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFRekYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQW9DLG9DQUFvQyxFQUFFO0lBQzVJLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRixDQUFDLENBQUM7QUFJSCxNQUFNLE9BQU8sOEJBQThCO0lBRDNDO1FBRVUsY0FBUyxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLFVBQUssR0FBMEMsSUFBSSxDQUFDO0tBZ0Q3RDtJQTdDUyxLQUFLLENBQUMsSUFBSTtRQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU07UUFDUixDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQ0FBc0MsRUFBRSxDQUFDO1FBQzdELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxRQUFRLFlBQVksT0FBTyxFQUFFLENBQUM7b0JBQ2hDLHVDQUF1QztvQkFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFFBQVEsQ0FBQztvQkFDeEMsTUFBTSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixvREFBb0Q7b0JBQ3BELE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU07UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDaEMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3hELENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQVk7UUFDckMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN6SCxDQUFDOzhHQWhEVSw4QkFBOEI7a0hBQTlCLDhCQUE4QixjQURqQixNQUFNOzsyRkFDbkIsOEJBQThCO2tCQUQxQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uLCBBWFBQZXJtaXNzaW9uR3JvdXBEZWZpbml0aW9uIH0gZnJvbSAnLi9wZXJtaXNzaW9uLnR5cGVzJztcbmltcG9ydCB7IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnLi9wZXJtaXNzaW9uLWRlZmluaXRpb24uYnVpbGRlcic7XG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIge1xuICBkZWZpbmUoY29udGV4dDogQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlckNvbnRleHQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1BFUk1JU1NJT05fREVGSU5JVElPTl9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyW10+KCdBWFBfUEVSTUlTU0lPTl9ERUZJTklUSU9OX1BST1ZJREVSJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICByZXR1cm4gW107XG4gIH1cbn0pO1xuXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQUGVybWlzc2lvbkRlZmluaXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwcm92aWRlcnMgPSBpbmplY3QoQVhQX1BFUk1JU1NJT05fREVGSU5JVElPTl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBjYWNoZTogQVhQUGVybWlzc2lvbkdyb3VwRGVmaW5pdGlvbltdIHwgbnVsbCA9IG51bGw7XG5cblxuICBwcml2YXRlIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KCk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5wcm92aWRlcnMpKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICAgIGlmIChwcm92aWRlciBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAvLyBJZiBwcm92aWRlciBpcyBhIHByb21pc2UsIHJlc29sdmUgaXRcbiAgICAgICAgICBjb25zdCByZXNvbHZlZFByb3ZpZGVyID0gYXdhaXQgcHJvdmlkZXI7XG4gICAgICAgICAgYXdhaXQgcmVzb2x2ZWRQcm92aWRlci5kZWZpbmUoY29udGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgcHJvdmlkZXIgaXMgYSBkaXJlY3QgaW5zdGFuY2UsIHVzZSBpdCBkaXJlY3RseVxuICAgICAgICAgIGF3YWl0IHByb3ZpZGVyLmRlZmluZShjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNhY2hlID0gY29udGV4dC5nZXRHcm91cERlZmluaXRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdyb3VwcygpOiBQcm9taXNlPEFYUFBlcm1pc3Npb25Hcm91cERlZmluaXRpb25bXT4ge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICAgIHJldHVybiB0aGlzLmNhY2hlID8/IFtdO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBlcm1pc3Npb25zKCk6IFByb21pc2U8QVhQUGVybWlzc2lvbkRlZmluaXRpb25bXT4ge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICAgIHJldHVybiB0aGlzLmNhY2hlPy5mbGF0TWFwKGcgPT4gZy5wZXJtaXNzaW9ucykgPz8gW107XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R3JvdXAobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBQZXJtaXNzaW9uR3JvdXBEZWZpbml0aW9uIHwgbnVsbD4ge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICAgIHJldHVybiB0aGlzLmNhY2hlPy5maW5kKGcgPT4gZy5uYW1lID09PSBuYW1lKSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBlcm1pc3Npb24obmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbiB8IG51bGw+IHtcbiAgICBhd2FpdCB0aGlzLmxvYWQoKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZT8uZmluZChnID0+IGcucGVybWlzc2lvbnMuZmluZChwID0+IHAubmFtZSA9PT0gbmFtZSkpPy5wZXJtaXNzaW9ucy5maW5kKHAgPT4gcC5uYW1lID09PSBuYW1lKSA/PyBudWxsO1xuICB9XG5cbn1cbiJdfQ==","import { inject } from '@angular/core';\nimport { first, map } from 'rxjs';\nimport { AXPUnauthenticatedError } from './errors.types';\nimport { AXPSessionService } from './session.service';\nexport const AXPAuthGuard = (route, state) => {\n const sessionService = inject(AXPSessionService);\n return sessionService.isAuthenticated$.pipe(first(), map((value) => {\n if (value) {\n return true;\n }\n throw new AXPUnauthenticatedError(`Access denied. You are not currently logged in. Please log in to access this page. If you continue to see this message after logging in, please contact support.`, {\n redirectUrl: state.url,\n });\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWtCLENBQUMsS0FBNkIsRUFBRSxLQUEwQixFQUFFLEVBQUU7SUFDdkcsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakQsT0FBTyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN6QyxLQUFLLEVBQUUsRUFDUCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNaLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLElBQUksdUJBQXVCLENBQy9CLGtLQUFrSyxFQUNsSztZQUNFLFdBQVcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUN2QixDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZUZuLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0LCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFVuYXV0aGVudGljYXRlZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMudHlwZXMnO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBBWFBBdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XG4gIGNvbnN0IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcmV0dXJuIHNlc3Npb25TZXJ2aWNlLmlzQXV0aGVudGljYXRlZCQucGlwZShcbiAgICBmaXJzdCgpLFxuICAgIG1hcCgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBBWFBVbmF1dGhlbnRpY2F0ZWRFcnJvcihcbiAgICAgICAgYEFjY2VzcyBkZW5pZWQuIFlvdSBhcmUgbm90IGN1cnJlbnRseSBsb2dnZWQgaW4uIFBsZWFzZSBsb2cgaW4gdG8gYWNjZXNzIHRoaXMgcGFnZS4gSWYgeW91IGNvbnRpbnVlIHRvIHNlZSB0aGlzIG1lc3NhZ2UgYWZ0ZXIgbG9nZ2luZyBpbiwgcGxlYXNlIGNvbnRhY3Qgc3VwcG9ydC5gLFxuICAgICAgICB7XG4gICAgICAgICAgcmVkaXJlY3RVcmw6IHN0YXRlLnVybCxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KVxuICApO1xufTtcbiJdfQ==","import { Inject, NgModule, Optional, inject, provideAppInitializer } from '@angular/core';\nimport { AXPAuthStrategyRegistryService } from './auth-registry.service';\nimport { AXPFeatureDirective } from './feature';\nimport { AXPPermissionDirective } from './permission/permission.directive';\nimport { AXPSessionService } from './session.service';\nimport * as i0 from \"@angular/core\";\nexport function initializeAppState(service) {\n return async () => {\n try {\n await service.restoreSession();\n }\n catch (error) {\n console.error(error);\n }\n };\n}\nexport class AXPAuthModule {\n static forRoot(configs) {\n return {\n ngModule: AXPAuthModule,\n providers: [\n ...(configs?.strategies || []),\n {\n provide: 'AXPAuthModuleFactory',\n useFactory: (registry) => () => {\n registry.register(...(configs?.strategies || []));\n },\n deps: [AXPAuthStrategyRegistryService],\n multi: true,\n },\n ],\n };\n }\n static forChild(configs) {\n return {\n ngModule: AXPAuthModule,\n providers: [\n ...(configs?.strategies || []),\n {\n provide: 'AXPAuthModuleFactory',\n useFactory: (registry) => () => {\n registry.register(...(configs?.strategies || []));\n },\n deps: [AXPAuthStrategyRegistryService],\n multi: true,\n },\n ],\n };\n }\n /**\n * @ignore\n */\n constructor(instances) {\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPAuthModule, deps: [{ token: 'AXPAuthModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPAuthModule, declarations: [AXPPermissionDirective, AXPFeatureDirective], exports: [AXPPermissionDirective, AXPFeatureDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPAuthModule, providers: [\n provideAppInitializer(() => {\n const initializerFn = (initializeAppState)(inject(AXPSessionService));\n return initializerFn();\n }),\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPAuthModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [AXPPermissionDirective, AXPFeatureDirective],\n declarations: [AXPPermissionDirective, AXPFeatureDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = (initializeAppState)(inject(AXPSessionService));\n return initializerFn();\n }),\n ],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['AXPAuthModuleFactory']\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUF1QixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTXRELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUEwQjtJQUMzRCxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ2hCLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWFELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBOEI7UUFDM0MsT0FBTztZQUNMLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLFNBQVMsRUFBRTtnQkFDVCxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7Z0JBQzlCO29CQUNFLE9BQU8sRUFBRSxzQkFBc0I7b0JBQy9CLFVBQVUsRUFBRSxDQUFDLFFBQXdDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTt3QkFDN0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNwRCxDQUFDO29CQUNELElBQUksRUFBRSxDQUFDLDhCQUE4QixDQUFDO29CQUN0QyxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQThCO1FBQzVDLE9BQU87WUFDTCxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO2dCQUM5QjtvQkFDRSxPQUFPLEVBQUUsc0JBQXNCO29CQUMvQixVQUFVLEVBQUUsQ0FBQyxRQUF3QyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUU7d0JBQzdELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDcEQsQ0FBQztvQkFDRCxJQUFJLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztvQkFDdEMsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUF3RCxTQUFnQjtRQUN0RSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkIsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBMUNVLGFBQWEsa0JBc0NRLHNCQUFzQjsrR0F0QzNDLGFBQWEsaUJBUlQsc0JBQXNCLEVBQUUsbUJBQW1CLGFBRGhELHNCQUFzQixFQUFFLG1CQUFtQjsrR0FTMUMsYUFBYSxhQVBiO1lBQ1QscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUN2QixNQUFNLGFBQWEsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDdEUsT0FBTyxhQUFhLEVBQUUsQ0FBQztZQUN6QixDQUFDLENBQUM7U0FDTDs7MkZBRVUsYUFBYTtrQkFYekIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQztvQkFDdEQsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsbUJBQW1CLENBQUM7b0JBQzNELFNBQVMsRUFBRTt3QkFDVCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7NEJBQ3ZCLE1BQU0sYUFBYSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDOzRCQUN0RSxPQUFPLGFBQWEsRUFBRSxDQUFDO3dCQUN6QixDQUFDLENBQUM7cUJBQ0w7aUJBQ0Y7OzBCQXVDYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBpbmplY3QsIHByb3ZpZGVBcHBJbml0aWFsaXplciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQXV0aFN0cmF0ZWd5UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQQXV0aFN0cmF0ZWd5IH0gZnJvbSAnLi9hdXRoLnN0cmF0ZWd5JztcbmltcG9ydCB7IEFYUEZlYXR1cmVEaXJlY3RpdmUgfSBmcm9tICcuL2ZlYXR1cmUnO1xuaW1wb3J0IHsgQVhQUGVybWlzc2lvbkRpcmVjdGl2ZSB9IGZyb20gJy4vcGVybWlzc2lvbi9wZXJtaXNzaW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBBdXRoTW9kdWxlQ29uZmlncyB7XG4gIHN0cmF0ZWdpZXM6IChuZXcgKCkgPT4gQVhQQXV0aFN0cmF0ZWd5KVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZUFwcFN0YXRlKHNlcnZpY2U6IEFYUFNlc3Npb25TZXJ2aWNlKSB7XG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNlcnZpY2UucmVzdG9yZVNlc3Npb24oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuICB9O1xufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW0FYUFBlcm1pc3Npb25EaXJlY3RpdmUsIEFYUEZlYXR1cmVEaXJlY3RpdmVdLFxuICBkZWNsYXJhdGlvbnM6IFtBWFBQZXJtaXNzaW9uRGlyZWN0aXZlLCBBWFBGZWF0dXJlRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUFwcEluaXRpYWxpemVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgaW5pdGlhbGl6ZXJGbiA9IChpbml0aWFsaXplQXBwU3RhdGUpKGluamVjdChBWFBTZXNzaW9uU2VydmljZSkpO1xuICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZXJGbigpO1xuICAgICAgfSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUEF1dGhNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChjb25maWdzPzogQVhQQXV0aE1vZHVsZUNvbmZpZ3MpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYUEF1dGhNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYUEF1dGhNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLi4uKGNvbmZpZ3M/LnN0cmF0ZWdpZXMgfHwgW10pLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogJ0FYUEF1dGhNb2R1bGVGYWN0b3J5JyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiAocmVnaXN0cnk6IEFYUEF1dGhTdHJhdGVneVJlZ2lzdHJ5U2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoLi4uKGNvbmZpZ3M/LnN0cmF0ZWdpZXMgfHwgW10pKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtBWFBBdXRoU3RyYXRlZ3lSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZvckNoaWxkKGNvbmZpZ3M/OiBBWFBBdXRoTW9kdWxlQ29uZmlncyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhQQXV0aE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQVhQQXV0aE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAuLi4oY29uZmlncz8uc3RyYXRlZ2llcyB8fCBbXSksXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhQQXV0aE1vZHVsZUZhY3RvcnknLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhQQXV0aFN0cmF0ZWd5UmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlciguLi4oY29uZmlncz8uc3RyYXRlZ2llcyB8fCBbXSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYUEF1dGhTdHJhdGVneVJlZ2lzdHJ5U2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdCgnQVhQQXV0aE1vZHVsZUZhY3RvcnknKSBpbnN0YW5jZXM6IGFueVtdKSB7XG4gICAgaW5zdGFuY2VzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBmKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWF1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2Fjb3JleC1wbGF0Zm9ybS1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-auth.mjs","sources":["../tmp-esm2022/auth/lib/application/application.loader.js","../tmp-esm2022/auth/lib/tenant/tenant.loader.js","../tmp-esm2022/auth/lib/auth-registry.service.js","../tmp-esm2022/auth/lib/feature/feature.loader.js","../tmp-esm2022/auth/lib/feature/feature.directive.js","../tmp-esm2022/auth/lib/errors.types.js","../tmp-esm2022/auth/lib/feature/feature.guard.js","../tmp-esm2022/auth/lib/permission/permission.loader.js","../tmp-esm2022/auth/lib/session.types.js","../tmp-esm2022/auth/lib/session.service.js","../tmp-esm2022/auth/lib/permission/permission.directive.js","../tmp-esm2022/auth/lib/permission/permission.guard.js","../tmp-esm2022/auth/lib/permission/permission-definition.builder.js","../tmp-esm2022/auth/lib/permission/permission-definition.service.js","../tmp-esm2022/auth/lib/permission/permission-evaluator-scope.provider.js","../tmp-esm2022/auth/lib/auth.guard.js","../tmp-esm2022/auth/lib/auth.module.js","../tmp-esm2022/auth/acorex-platform-auth.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport const AXP_APPLICATION_LOADER = new InjectionToken('AXP_APPLICATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXPApplicationDefaultLoader();\n },\n});\nclass AXPApplicationDefaultLoader {\n getList(context) {\n return of([\n {\n id: '1',\n name: 'default-app',\n title: 'Default Application',\n version: '1.0.0',\n editionName: 'Standard',\n features: [],\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vYXBwbGljYXRpb24ubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsd0JBQXdCLEVBQUU7SUFDdkcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sSUFBSSwyQkFBMkIsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLDJCQUEyQjtJQUMvQixPQUFPLENBQUMsT0FBMEI7UUFDaEMsT0FBTyxFQUFFLENBQUM7WUFDUjtnQkFDRSxFQUFFLEVBQUUsR0FBRztnQkFDUCxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLHFCQUFxQjtnQkFDNUIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFdBQVcsRUFBRSxVQUFVO2dCQUN2QixRQUFRLEVBQUUsRUFBRTthQUNiO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBBcHBsaWNhdGlvbiB9IGZyb20gJy4vYXBwbGljYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhQU2Vzc2lvbkNvbnRleHQgfSBmcm9tICcuLi9zZXNzaW9uLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBBcHBsaWNhdGlvbkxvYWRlciB7XG4gIGdldExpc3QoY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBPYnNlcnZhYmxlPEFYUEFwcGxpY2F0aW9uW10+O1xufVxuXG5leHBvcnQgY29uc3QgQVhQX0FQUExJQ0FUSU9OX0xPQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBBcHBsaWNhdGlvbkxvYWRlcj4oJ0FYUF9BUFBMSUNBVElPTl9MT0FERVInLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIHJldHVybiBuZXcgQVhQQXBwbGljYXRpb25EZWZhdWx0TG9hZGVyKCk7XG4gIH0sXG59KTtcblxuY2xhc3MgQVhQQXBwbGljYXRpb25EZWZhdWx0TG9hZGVyIGltcGxlbWVudHMgQVhQQXBwbGljYXRpb25Mb2FkZXIge1xuICBnZXRMaXN0KGNvbnRleHQ6IEFYUFNlc3Npb25Db250ZXh0KTogT2JzZXJ2YWJsZTxBWFBBcHBsaWNhdGlvbltdPiB7XG4gICAgcmV0dXJuIG9mKFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgbmFtZTogJ2RlZmF1bHQtYXBwJyxcbiAgICAgICAgdGl0bGU6ICdEZWZhdWx0IEFwcGxpY2F0aW9uJyxcbiAgICAgICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgICAgICAgZWRpdGlvbk5hbWU6ICdTdGFuZGFyZCcsXG4gICAgICAgIGZlYXR1cmVzOiBbXSxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport const AXP_TENANT_LOADER = new InjectionToken('AXP_TENANT_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXPTenantDefaultLoader();\n },\n});\nclass AXPTenantDefaultLoader {\n getList(context) {\n return of([\n {\n id: '1',\n name: 'default-tenant',\n title: 'Default Tenant',\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL3RlbmFudC90ZW5hbnQubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsbUJBQW1CLEVBQUU7SUFDeEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLHNCQUFzQjtJQUUxQixPQUFPLENBQUMsT0FBMEI7UUFDaEMsT0FBTyxFQUFFLENBQUM7WUFDUjtnQkFDRSxFQUFFLEVBQUUsR0FBRztnQkFDUCxJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixLQUFLLEVBQUUsZ0JBQWdCO2FBQ3hCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBUZW5hbnQgfSBmcm9tICcuL3RlbmFudC50eXBlcyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uQ29udGV4dCB9IGZyb20gJy4uL3Nlc3Npb24udHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFRlbmFudExvYWRlciB7XG4gIGdldExpc3QoY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBPYnNlcnZhYmxlPEFYUFRlbmFudFtdPjtcbn1cblxuZXhwb3J0IGNvbnN0IEFYUF9URU5BTlRfTE9BREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFRlbmFudExvYWRlcj4oJ0FYUF9URU5BTlRfTE9BREVSJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IEFYUFRlbmFudERlZmF1bHRMb2FkZXIoKTtcbiAgfSxcbn0pO1xuXG5jbGFzcyBBWFBUZW5hbnREZWZhdWx0TG9hZGVyIGltcGxlbWVudHMgQVhQVGVuYW50TG9hZGVyIHtcblxuICBnZXRMaXN0KGNvbnRleHQ6IEFYUFNlc3Npb25Db250ZXh0KTogT2JzZXJ2YWJsZTxBWFBUZW5hbnRbXT4ge1xuICAgIHJldHVybiBvZihbXG4gICAgICB7XG4gICAgICAgIGlkOiAnMScsXG4gICAgICAgIG5hbWU6ICdkZWZhdWx0LXRlbmFudCcsXG4gICAgICAgIHRpdGxlOiAnRGVmYXVsdCBUZW5hbnQnLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxufVxuIl19","import { Injectable, Injector } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nexport class AXPAuthStrategyRegistryService {\n constructor(injector) {\n this.strategies = new Map();\n this.injector = injector;\n }\n register(...plugins) {\n plugins.forEach(t => {\n const childInjector = Injector.create({ providers: [{ provide: t, useClass: t, deps: [] }], parent: this.injector });\n const strategy = childInjector.get(t);\n if (strategy) {\n this.strategies.set(strategy.name, strategy);\n }\n });\n }\n get(strategyKey) {\n return this.strategies.get(strategyKey);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPAuthStrategyRegistryService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPAuthStrategyRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPAuthStrategyRegistryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hdXRoL3NyYy9saWIvYXV0aC1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1yRCxNQUFNLE9BQU8sOEJBQThCO0lBS3pDLFlBQVksUUFBa0I7UUFKdEIsZUFBVSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBS3RELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBRyxPQUFzQztRQUNoRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xCLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckgsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEdBQUcsQ0FBQyxXQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBckJVLDhCQUE4QjtrSEFBOUIsOEJBQThCLGNBRjdCLE1BQU07OzJGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFBBdXRoU3RyYXRlZ3kgfSBmcm9tIFwiLi9hdXRoLnN0cmF0ZWd5XCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFYUEF1dGhTdHJhdGVneVJlZ2lzdHJ5U2VydmljZSB7XG4gIHByaXZhdGUgc3RyYXRlZ2llcyA9IG5ldyBNYXA8c3RyaW5nLCBBWFBBdXRoU3RyYXRlZ3k+KCk7XG5cbiAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5pbmplY3RvciA9IGluamVjdG9yO1xuICB9XG5cbiAgcmVnaXN0ZXIoLi4ucGx1Z2luczogKG5ldyAoKSA9PiBBWFBBdXRoU3RyYXRlZ3kpW10pIHtcbiAgICBwbHVnaW5zLmZvckVhY2godCA9PiB7XG4gICAgICBjb25zdCBjaGlsZEluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHsgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiB0LCB1c2VDbGFzczogdCwgZGVwczogW10gfV0sIHBhcmVudDogdGhpcy5pbmplY3RvciB9KTtcbiAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gY2hpbGRJbmplY3Rvci5nZXQodCk7XG4gICAgICBpZiAoc3RyYXRlZ3kpIHtcbiAgICAgICAgdGhpcy5zdHJhdGVnaWVzLnNldChzdHJhdGVneS5uYW1lLCBzdHJhdGVneSk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldChzdHJhdGVneUtleTogc3RyaW5nKTogQVhQQXV0aFN0cmF0ZWd5IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJhdGVnaWVzLmdldChzdHJhdGVneUtleSk7XG4gIH1cbn0iXX0=","import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport const AXP_FEATURE_LOADER = new InjectionToken('AXP_FEATURE_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXPFeatureDefaultLoader();\n },\n});\nclass AXPFeatureDefaultLoader {\n getList(context) {\n return of([]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9mZWF0dXJlL2ZlYXR1cmUubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsb0JBQW9CLEVBQUU7SUFDM0YsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLHVCQUF1QjtJQUMzQixPQUFPLENBQUMsT0FBMEI7UUFDaEMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBGZWF0dXJlIH0gZnJvbSAnLi9mZWF0dXJlLnR5cGVzJztcbmltcG9ydCB7IEFYUFNlc3Npb25Db250ZXh0IH0gZnJvbSAnLi4vc2Vzc2lvbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRmVhdHVyZUxvYWRlciB7XG4gIGdldExpc3QoY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBPYnNlcnZhYmxlPEFYUEZlYXR1cmVbXT47XG59XG5cbmV4cG9ydCBjb25zdCBBWFBfRkVBVFVSRV9MT0FERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQRmVhdHVyZUxvYWRlcj4oJ0FYUF9GRUFUVVJFX0xPQURFUicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBBWFBGZWF0dXJlRGVmYXVsdExvYWRlcigpO1xuICB9LFxufSk7XG5cbmNsYXNzIEFYUEZlYXR1cmVEZWZhdWx0TG9hZGVyIGltcGxlbWVudHMgQVhQRmVhdHVyZUxvYWRlciB7XG4gIGdldExpc3QoY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBPYnNlcnZhYmxlPEFYUEZlYXR1cmVbXT4ge1xuICAgIHJldHVybiBvZihbXSk7XG4gIH1cbn1cbiJdfQ==","import { Directive, Input, TemplateRef, ViewContainerRef, inject, signal } from '@angular/core';\nimport { AXPSessionService } from '../session.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPFeatureDirective {\n constructor(templateRef, viewContainer) {\n this.templateRef = templateRef;\n this.viewContainer = viewContainer;\n this.hasView = signal(false);\n this.sessionService = inject(AXPSessionService);\n }\n set feature(featureKeys) {\n const keys = !featureKeys ? [] : (Array.isArray(featureKeys) ? featureKeys : [featureKeys]);\n if (keys.length == 0) {\n // If featureKey is null or empty, decide the default behavior here\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView.set(true);\n return;\n }\n this.subscription = this.sessionService.features$\n //.pipe(first())\n .subscribe(() => {\n if (this.sessionService.isFeatureEnabled(...keys)) {\n if (!this.hasView()) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView.set(true);\n }\n }\n else {\n this.viewContainer.clear();\n this.hasView.set(false);\n }\n });\n }\n set featureElse(elseTemplateRef) {\n if (!this.hasView()) {\n this.viewContainer.createEmbeddedView(elseTemplateRef);\n }\n }\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPFeatureDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.6\", type: AXPFeatureDirective, isStandalone: false, selector: \"[feature]\", inputs: { feature: \"feature\", featureElse: \"featureElse\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPFeatureDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[feature]',\n standalone: false\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { feature: [{\n type: Input\n }], featureElse: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9mZWF0dXJlL2ZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU12RCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQ1UsV0FBNkIsRUFDN0IsYUFBK0I7UUFEL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQU5qQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFLL0MsQ0FBQztJQUVMLElBQ1csT0FBTyxDQUFDLFdBQXFDO1FBQ3RELE1BQU0sSUFBSSxHQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLG1FQUFtRTtZQUNuRSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTO1lBQy9DLGdCQUFnQjthQUNmLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFDVyxXQUFXLENBQUMsZUFBaUM7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzhHQTNDVSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLEtBQUs7aUJBQ3BCOytHQVlZLE9BQU87c0JBRGpCLEtBQUs7Z0JBeUJLLFdBQVc7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlyc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmVhdHVyZV0nLFxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIEFYUEZlYXR1cmVEaXJlY3RpdmUge1xuICBwcml2YXRlIGhhc1ZpZXcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7IH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZlYXR1cmUoZmVhdHVyZUtleXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCkge1xuICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gIWZlYXR1cmVLZXlzID8gW10gOiAoQXJyYXkuaXNBcnJheShmZWF0dXJlS2V5cykgPyBmZWF0dXJlS2V5cyA6IFtmZWF0dXJlS2V5c10pO1xuICAgIGlmIChrZXlzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAvLyBJZiBmZWF0dXJlS2V5IGlzIG51bGwgb3IgZW1wdHksIGRlY2lkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBoZXJlXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xuICAgICAgdGhpcy5oYXNWaWV3LnNldCh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmZlYXR1cmVzJFxuICAgICAgLy8ucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25TZXJ2aWNlLmlzRmVhdHVyZUVuYWJsZWQoLi4ua2V5cykpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuaGFzVmlldygpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xuICAgICAgICAgICAgdGhpcy5oYXNWaWV3LnNldCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy5oYXNWaWV3LnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmZWF0dXJlRWxzZShlbHNlVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAoIXRoaXMuaGFzVmlldygpKSB7XG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGVsc2VUZW1wbGF0ZVJlZik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==","export class AXPUnauthorizedError extends Error {\n constructor(message, data) {\n super(message);\n this.data = data;\n this.name = 'AXPUnauthorizedError';\n }\n}\nexport class AXPUnauthenticatedError extends Error {\n constructor(message, data) {\n super(message);\n this.data = data;\n this.name = 'AXPUnauthenticatedError';\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hdXRoL3NyYy9saWIvZXJyb3JzLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxLQUFLO0lBQzNDLFlBQVksT0FBZ0IsRUFBUyxJQUErQjtRQUNoRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEa0IsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFFaEUsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztJQUN2QyxDQUFDO0NBQ0o7QUFHRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsS0FBSztJQUM5QyxZQUFZLE9BQWdCLEVBQVMsSUFBK0I7UUFDaEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRGtCLFNBQUksR0FBSixJQUFJLENBQTJCO1FBRWhFLElBQUksQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFYUFVuYXV0aG9yaXplZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcsIHB1YmxpYyBkYXRhPzogeyByZWRpcmVjdFVybD86IHN0cmluZyB9KSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnQVhQVW5hdXRob3JpemVkRXJyb3InO1xuICAgIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgQVhQVW5hdXRoZW50aWNhdGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZywgcHVibGljIGRhdGE/OiB7IHJlZGlyZWN0VXJsPzogc3RyaW5nIH0pIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdBWFBVbmF1dGhlbnRpY2F0ZWRFcnJvcic7XG4gICAgfVxufSJdfQ==","import { inject } from \"@angular/core\";\nimport { AXPSessionService } from \"../session.service\";\nimport { map } from \"rxjs\";\nimport { AXPUnauthorizedError } from \"../errors.types\";\nexport const AXPFeatureGuard = (route, state) => {\n const sessionService = inject(AXPSessionService);\n const requiredFeatures = route.data['requiredFeature'];\n return sessionService.features$.pipe(map(() => {\n const keys = !requiredFeatures ? [] : (Array.isArray(requiredFeatures) ? requiredFeatures : [requiredFeatures]);\n const hasFeature = keys.length == 0 || sessionService.isFeatureEnabled(...keys);\n if (!hasFeature) {\n throw new AXPUnauthorizedError(`Access Denied. You do not have access to this feature. Required feature(s): ${keys.join(', ')}. Please contact support if you need access.`, {\n redirectUrl: state.url\n });\n }\n return true;\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL2ZlYXR1cmUvZmVhdHVyZS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBcUIsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3ZELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FDMUIsQ0FBQyxLQUE2QixFQUFFLEtBQTBCLEVBQWlDLEVBQUU7SUFDM0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUErQixDQUFDO0lBRXJGLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDUCxNQUFNLElBQUksR0FBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDMUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxvQkFBb0IsQ0FDNUIsK0VBQStFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxFQUM1STtnQkFDRSxXQUFXLEVBQUUsS0FBSyxDQUFDLEdBQUc7YUFDdkIsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlRm4sIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2Vzc2lvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdCwgbWFwIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEFYUFVuYXV0aG9yaXplZEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy50eXBlc1wiO1xuXG5cbmV4cG9ydCBjb25zdCBBWFBGZWF0dXJlR3VhcmQ6IENhbkFjdGl2YXRlRm4gPVxuICAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gPT4ge1xuICAgIGNvbnN0IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgICBjb25zdCByZXF1aXJlZEZlYXR1cmVzID0gcm91dGUuZGF0YVsncmVxdWlyZWRGZWF0dXJlJ10gYXMgKHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCk7XG5cbiAgICByZXR1cm4gc2Vzc2lvblNlcnZpY2UuZmVhdHVyZXMkLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9ICFyZXF1aXJlZEZlYXR1cmVzID8gW10gOiAoQXJyYXkuaXNBcnJheShyZXF1aXJlZEZlYXR1cmVzKSA/IHJlcXVpcmVkRmVhdHVyZXMgOiBbcmVxdWlyZWRGZWF0dXJlc10pO1xuICAgICAgICBjb25zdCBoYXNGZWF0dXJlID0ga2V5cy5sZW5ndGggPT0gMCB8fCBzZXNzaW9uU2VydmljZS5pc0ZlYXR1cmVFbmFibGVkKC4uLmtleXMpO1xuICAgICAgICBpZiAoIWhhc0ZlYXR1cmUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQVhQVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICBgQWNjZXNzIERlbmllZC4gWW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGlzIGZlYXR1cmUuIFJlcXVpcmVkIGZlYXR1cmUocyk6ICR7a2V5cy5qb2luKCcsICcpfS4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBpZiB5b3UgbmVlZCBhY2Nlc3MuYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmVkaXJlY3RVcmw6IHN0YXRlLnVybFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICk7XG4gIH07XG4iXX0=","import { InjectionToken } from \"@angular/core\";\nimport { of } from \"rxjs\";\nexport const AXP_PERMISSION_LOADER = new InjectionToken('AXP_PERMISSION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXPPermissionDefaultLoader();\n }\n});\nclass AXPPermissionDefaultLoader {\n getList(context) {\n return of([]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9wZXJtaXNzaW9uL3Blcm1pc3Npb24ubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLEVBQUU7SUFDbEcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBSSwwQkFBMEIsRUFBRSxDQUFDO0lBQzVDLENBQUM7Q0FDSixDQUFDLENBQUM7QUFHSCxNQUFNLDBCQUEwQjtJQUM1QixPQUFPLENBQUMsT0FBMEI7UUFDOUIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQVhQUGVybWlzc2lvbiB9IGZyb20gXCIuL3Blcm1pc3Npb24udHlwZXNcIjtcbmltcG9ydCB7IEFYUFNlc3Npb25Db250ZXh0IH0gZnJvbSBcIi4uL3Nlc3Npb24udHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBQZXJtaXNzaW9uTG9hZGVyIHtcbiAgICBnZXRMaXN0KGNvbnRleHQ6IEFYUFNlc3Npb25Db250ZXh0KTogT2JzZXJ2YWJsZTxBWFBQZXJtaXNzaW9uW10+O1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1BFUk1JU1NJT05fTE9BREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFBlcm1pc3Npb25Mb2FkZXI+KCdBWFBfUEVSTUlTU0lPTl9MT0FERVInLCB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBQZXJtaXNzaW9uRGVmYXVsdExvYWRlcigpO1xuICAgIH1cbn0pO1xuXG5cbmNsYXNzIEFYUFBlcm1pc3Npb25EZWZhdWx0TG9hZGVyIGltcGxlbWVudHMgQVhQUGVybWlzc2lvbkxvYWRlciB7XG4gICAgZ2V0TGlzdChjb250ZXh0OiBBWFBTZXNzaW9uQ29udGV4dCk6IE9ic2VydmFibGU8QVhQUGVybWlzc2lvbltdPiB7XG4gICAgICAgIHJldHVybiBvZihbXSlcbiAgICB9XG59Il19","export class AXPSessionContext {\n get user() {\n return this._user;\n }\n get tenant() {\n return this._tenant;\n }\n get application() {\n return this._application;\n }\n constructor(context) {\n this._user = null;\n this._tenant = null;\n this._application = null;\n this._user = context.user;\n this._tenant = context.tenant;\n this._application = context.application;\n }\n}\nexport var AXPSessionStatus;\n(function (AXPSessionStatus) {\n AXPSessionStatus[\"Authenticated\"] = \"authenticated\";\n AXPSessionStatus[\"Unauthenticated\"] = \"unauthenticated\";\n AXPSessionStatus[\"Unauthorized\"] = \"unauthorized\";\n AXPSessionStatus[\"Authorized\"] = \"authorized\";\n AXPSessionStatus[\"Expired\"] = \"expired\";\n AXPSessionStatus[\"SignedOut\"] = \"signedOut\";\n})(AXPSessionStatus || (AXPSessionStatus = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL3Nlc3Npb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLGlCQUFpQjtJQUcxQixJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUdELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBR0QsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWSxPQUlYO1FBbkJPLFVBQUssR0FBbUIsSUFBSSxDQUFDO1FBSzdCLFlBQU8sR0FBcUIsSUFBSSxDQUFDO1FBS2pDLGlCQUFZLEdBQTBCLElBQUksQ0FBQztRQVUvQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUM1QyxDQUFDO0NBQ0o7QUFHRCxNQUFNLENBQU4sSUFBWSxnQkFPWDtBQVBELFdBQVksZ0JBQWdCO0lBQ3hCLG1EQUErQixDQUFBO0lBQy9CLHVEQUFtQyxDQUFBO0lBQ25DLGlEQUE2QixDQUFBO0lBQzdCLDZDQUF5QixDQUFBO0lBQ3pCLHVDQUFtQixDQUFBO0lBQ25CLDJDQUF1QixDQUFBO0FBQzNCLENBQUMsRUFQVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBTzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQQXBwbGljYXRpb24gfSBmcm9tIFwiLi9hcHBsaWNhdGlvbi9hcHBsaWNhdGlvbi50eXBlc1wiO1xuaW1wb3J0IHsgQVhQVGVuYW50IH0gZnJvbSBcIi4vdGVuYW50L3RlbmFudC50eXBlc1wiO1xuaW1wb3J0IHsgQVhQVXNlciB9IGZyb20gXCIuL3VzZXIvdXNlci50eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgQVhQU2Vzc2lvbkNvbnRleHQge1xuXG4gICAgcHJpdmF0ZSBfdXNlcjogQVhQVXNlciB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBnZXQgdXNlcigpOiBBWFBVc2VyIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RlbmFudDogQVhQVGVuYW50IHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGdldCB0ZW5hbnQoKTogQVhQVGVuYW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZW5hbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbGljYXRpb246IEFYUEFwcGxpY2F0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGdldCBhcHBsaWNhdGlvbigpOiBBWFBBcHBsaWNhdGlvbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb247XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoY29udGV4dDoge1xuICAgICAgICB1c2VyOiBBWFBVc2VyIHwgbnVsbCxcbiAgICAgICAgdGVuYW50OiBBWFBUZW5hbnQgfCBudWxsLFxuICAgICAgICBhcHBsaWNhdGlvbjogQVhQQXBwbGljYXRpb24gfCBudWxsLFxuICAgIH0pIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IGNvbnRleHQudXNlcjtcbiAgICAgICAgdGhpcy5fdGVuYW50ID0gY29udGV4dC50ZW5hbnQ7XG4gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uID0gY29udGV4dC5hcHBsaWNhdGlvbjtcbiAgICB9XG59XG5cblxuZXhwb3J0IGVudW0gQVhQU2Vzc2lvblN0YXR1cyB7XG4gICAgQXV0aGVudGljYXRlZCA9IFwiYXV0aGVudGljYXRlZFwiLFxuICAgIFVuYXV0aGVudGljYXRlZCA9IFwidW5hdXRoZW50aWNhdGVkXCIsXG4gICAgVW5hdXRob3JpemVkID0gXCJ1bmF1dGhvcml6ZWRcIixcbiAgICBBdXRob3JpemVkID0gXCJhdXRob3JpemVkXCIsXG4gICAgRXhwaXJlZCA9IFwiZXhwaXJlZFwiLFxuICAgIFNpZ25lZE91dCA9IFwic2lnbmVkT3V0XCJcbn0iXX0=","import { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { Injectable, inject } from '@angular/core';\nimport { isEmpty, merge } from 'lodash-es';\nimport { BehaviorSubject, defaultIfEmpty, firstValueFrom, map, shareReplay } from 'rxjs';\nimport { AXP_APPLICATION_LOADER } from './application/application.loader';\nimport { AXPAuthStrategyRegistryService } from './auth-registry.service';\nimport { AXP_FEATURE_LOADER } from './feature';\nimport { AXP_PERMISSION_LOADER } from './permission/permission.loader';\nimport { AXPSessionContext, AXPSessionStatus } from './session.types';\nimport { AXP_TENANT_LOADER } from './tenant/tenant.loader';\nimport * as i0 from \"@angular/core\";\nexport class AXPSessionService {\n constructor() {\n this.eventService = inject(AXPBroadcastEventService);\n this.authStrategyRegistry = inject(AXPAuthStrategyRegistryService);\n this.permissionLoader = inject(AXP_PERMISSION_LOADER);\n this.featureLoader = inject(AXP_FEATURE_LOADER);\n this.tenantLoader = inject(AXP_TENANT_LOADER);\n this.applicationLoader = inject(AXP_APPLICATION_LOADER);\n this.status = new BehaviorSubject(AXPSessionStatus.Unauthenticated);\n this.status$ = this.status.asObservable().pipe(shareReplay(1));\n this.currentUserSubject = new BehaviorSubject(null);\n this.user$ = this.currentUserSubject.asObservable().pipe(shareReplay(1));\n this.currentTenantSubject = new BehaviorSubject(null);\n this.tenant$ = this.currentTenantSubject.asObservable().pipe(shareReplay(1));\n this.currentApplicationSubject = new BehaviorSubject(null);\n this.application$ = this.currentApplicationSubject.asObservable().pipe(shareReplay(1));\n this.permissionsSubject = new BehaviorSubject([]);\n this.permissions$ = this.permissionsSubject.asObservable().pipe(shareReplay(1), defaultIfEmpty([]));\n this.featuresSubject = new BehaviorSubject([]);\n this.features$ = this.featuresSubject.asObservable().pipe(shareReplay(1), defaultIfEmpty([]));\n this.isAuthenticated$ = this.status$.pipe(map((status) => status === AXPSessionStatus.Authenticated || status === AXPSessionStatus.Authorized), shareReplay(1));\n this.isAuthorized$ = this.status$.pipe(map((status) => status === AXPSessionStatus.Authorized), shareReplay(1));\n }\n static { this.SESSION_KEY = 'AXP_SESSION'; }\n get user() {\n const session = this.getSessionData();\n if (session?.user && !this.currentUserSubject.value) {\n this.currentUserSubject.next(session.user);\n }\n return this.currentUserSubject.value;\n }\n get tenant() {\n const session = this.getSessionData();\n if (session?.tenant && !this.currentTenantSubject.value) {\n this.currentTenantSubject.next(session.tenant);\n }\n return this.currentTenantSubject.value;\n }\n get tenants$() {\n return this.tenantLoader.getList(this.getContext());\n }\n get application() {\n const session = this.getSessionData();\n if (session?.application && !this.currentApplicationSubject.value) {\n this.currentApplicationSubject.next(session.application);\n }\n return this.currentApplicationSubject.value;\n }\n get applications$() {\n return this.applicationLoader.getList(this.getContext());\n }\n get permissions() {\n return this.permissionsSubject.value ?? [];\n }\n get features() {\n return this.featuresSubject.value ?? [];\n }\n async restoreSession() {\n const sessionData = this.getSessionData();\n if (sessionData) {\n if (sessionData.user) {\n this.currentUserSubject.next(sessionData.user);\n this.status.next(AXPSessionStatus.Authenticated);\n }\n // if (sessionData.tenant) {\n // this.setTenant(sessionData.tenant);\n // }\n // if (sessionData.application) {\n // this.setApplication(sessionData.application);\n // }\n await this.loadPermissions();\n await this.loadFeatures();\n await this.signInComplete();\n }\n else {\n this.status.next(AXPSessionStatus.Unauthorized);\n }\n }\n async signin(credentials) {\n // \n this.clearSession();\n //\n const strategy = this.authStrategyRegistry.get(credentials.strategy);\n if (!strategy) {\n throw new Error(`Authentication strategy '${credentials.strategy}' is not supported`);\n }\n const result = await strategy.signin(credentials);\n if (result.succeed) {\n this.currentUserSubject.next(result.data.user);\n this.setSession({\n accessToken: result.data.accessToken,\n refreshToken: result.data.refreshToken,\n strategy: credentials.strategy,\n user: result.data.user,\n application: result.data?.application,\n tenant: result.data?.tenant,\n expiresIn: result.data?.expiresIn,\n idToken: result.data?.idToken ?? null,\n });\n this.status.next(AXPSessionStatus.Authenticated);\n if (this.application && this.tenant)\n await this.signInComplete();\n }\n else {\n this.status.next(AXPSessionStatus.Unauthenticated);\n throw new Error(`Invalid Username or Password`);\n }\n }\n async signout() {\n const sessionData = this.getSessionData();\n if (sessionData?.strategy) {\n const strategy = this.authStrategyRegistry.get(sessionData?.strategy);\n if (strategy) {\n await strategy.signout();\n }\n }\n //\n const userId = this.user?.id;\n this.clearSession();\n this.status.next(AXPSessionStatus.SignedOut);\n this.eventService.publish(AXPSessionStatus.SignedOut, { id: userId });\n }\n async refreshToken() {\n return new Promise(async (resolve, reject) => {\n const sessionData = this.getSessionData();\n if (!sessionData || !sessionData?.refreshToken) {\n return;\n }\n const strategy = this.authStrategyRegistry.get(sessionData.strategy);\n if (!strategy) {\n reject();\n throw new Error(`Authentication strategy '${sessionData.strategy}' is not found`);\n }\n const result = await strategy.refreshToken(this.getContext());\n if (result.succeed) {\n this.setSession(result.data);\n resolve(result.data?.accessToken);\n }\n else {\n this.clearSession();\n this.status.next(AXPSessionStatus.Expired);\n }\n });\n }\n async setTenant(tenant) {\n this.currentTenantSubject.next(tenant);\n if (tenant) {\n this.updateSession({ tenant: tenant });\n await this.refreshToken();\n }\n }\n async setApplication(application) {\n this.currentApplicationSubject.next(application);\n if (application) {\n this.updateSession({ application: application });\n await this.refreshToken();\n await this.loadPermissions();\n await this.loadFeatures();\n }\n }\n async loadPermissions() {\n try {\n const permissions = await firstValueFrom(this.permissionLoader.getList(this.getContext()));\n this.permissionsSubject.next(permissions ?? []);\n }\n catch (error) {\n console.error('Error loading permissions:', error);\n this.permissionsSubject.next([]);\n }\n }\n async loadFeatures() {\n try {\n const features = await firstValueFrom(this.featureLoader.getList(this.getContext()));\n this.featuresSubject.next(features ?? []);\n }\n catch (error) {\n console.error('Error loading features:', error);\n this.featuresSubject.next([]);\n }\n }\n async signInComplete() {\n this.status.next(AXPSessionStatus.Authorized);\n }\n setSession(tokens) {\n const sessionData = {\n accessToken: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n strategy: tokens.strategy,\n user: this.user,\n application: tokens.application,\n tenant: tokens.tenant,\n expiresIn: tokens.expiresIn,\n idToken: tokens.idToken,\n };\n this.updateSession(sessionData);\n }\n updateSession(update) {\n const currentSession = this.getSessionData() ?? {};\n const updatedSession = merge({}, currentSession, update);\n localStorage.setItem(AXPSessionService.SESSION_KEY, JSON.stringify(updatedSession));\n }\n getSessionData() {\n const sessionDataString = localStorage.getItem(AXPSessionService.SESSION_KEY);\n return sessionDataString ? JSON.parse(sessionDataString) : null;\n }\n clearSession() {\n //\n this.currentUserSubject.next(null);\n //\n this.setTenant(null);\n //\n this.setApplication(null);\n //\n this.permissionsSubject.next([]);\n //\n this.featuresSubject.next([]);\n //\n localStorage.removeItem(AXPSessionService.SESSION_KEY);\n }\n authorize(...keys) {\n return keys.every((k) => isEmpty(k) || this.permissions.indexOf(k) > -1);\n }\n isFeatureEnabled(...keys) {\n return keys.every((k) => isEmpty(k) || this.features.some((c) => c.name == k && c.value == true));\n }\n getToken() {\n const sessionData = this.getSessionData();\n return sessionData?.accessToken;\n }\n checkTokenValidation() {\n let sessionData = this.getSessionData();\n if (sessionData && sessionData?.accessToken && sessionData.expiresIn) {\n const expiresInDate = new Date(sessionData.expiresIn);\n if (expiresInDate > new Date()) {\n // Token is still valid\n return true;\n }\n }\n return false;\n }\n getContext() {\n return new AXPSessionContext({\n user: this.user,\n tenant: this.tenant,\n application: this.application,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPSessionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPSessionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPSessionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hdXRoL3NyYy9saWIvc2Vzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsY0FBYyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXpFLE9BQU8sRUFBYyxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFPM0QsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlVLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFaEQseUJBQW9CLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFHckQscUJBQWdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDakQsa0JBQWEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxp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VSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQQnJvYWRjYXN0RXZlbnRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkZWZhdWx0SWZFbXB0eSwgZmlyc3RWYWx1ZUZyb20sIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUF9BUFBMSUNBVElPTl9MT0FERVIgfSBmcm9tICcuL2FwcGxpY2F0aW9uL2FwcGxpY2F0aW9uLmxvYWRlcic7XG5pbXBvcnQgeyBBWFBBcHBsaWNhdGlvbiB9IGZyb20gJy4vYXBwbGljYXRpb24vYXBwbGljYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhQQXV0aFN0cmF0ZWd5UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQQmFzZUNyZWRlbnRpYWxzLCBBWFBTZXNzaW9uRGF0YSB9IGZyb20gJy4vYXV0aC5zdHJhdGVneSc7XG5pbXBvcnQgeyBBWFBGZWF0dXJlLCBBWFBfRkVBVFVSRV9MT0FERVIgfSBmcm9tICcuL2ZlYXR1cmUnO1xuaW1wb3J0IHsgQVhQX1BFUk1JU1NJT05fTE9BREVSIH0gZnJvbSAnLi9wZXJtaXNzaW9uL3Blcm1pc3Npb24ubG9hZGVyJztcbmltcG9ydCB7IEFYUFBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb24vcGVybWlzc2lvbi50eXBlcyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uQ29udGV4dCwgQVhQU2Vzc2lvblN0YXR1cyB9IGZyb20gJy4vc2Vzc2lvbi50eXBlcyc7XG5pbXBvcnQgeyBBWFBfVEVOQU5UX0xPQURFUiB9IGZyb20gJy4vdGVuYW50L3RlbmFudC5sb2FkZXInO1xuaW1wb3J0IHsgQVhQVGVuYW50IH0gZnJvbSAnLi90ZW5hbnQvdGVuYW50LnR5cGVzJztcbmltcG9ydCB7IEFYUFVzZXIgfSBmcm9tICcuL3VzZXIvdXNlci50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBTZXNzaW9uU2VydmljZSB7XG4gIHByaXZhdGUgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFYUEJyb2FkY2FzdEV2ZW50U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBhdXRoU3RyYXRlZ3lSZWdpc3RyeSA9IGluamVjdChBWFBBdXRoU3RyYXRlZ3lSZWdpc3RyeVNlcnZpY2UpO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFU1NJT05fS0VZID0gJ0FYUF9TRVNTSU9OJztcblxuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25Mb2FkZXIgPSBpbmplY3QoQVhQX1BFUk1JU1NJT05fTE9BREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlTG9hZGVyID0gaW5qZWN0KEFYUF9GRUFUVVJFX0xPQURFUik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVuYW50TG9hZGVyID0gaW5qZWN0KEFYUF9URU5BTlRfTE9BREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHBsaWNhdGlvbkxvYWRlciA9IGluamVjdChBWFBfQVBQTElDQVRJT05fTE9BREVSKTtcblxuICBwcml2YXRlIHN0YXR1cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QVhQU2Vzc2lvblN0YXR1cz4oQVhQU2Vzc2lvblN0YXR1cy5VbmF1dGhlbnRpY2F0ZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzJCA9IHRoaXMuc3RhdHVzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHByaXZhdGUgY3VycmVudFVzZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBWFBVc2VyIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyJCA9IHRoaXMuY3VycmVudFVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICBwdWJsaWMgZ2V0IHVzZXIoKTogQVhQVXNlciB8IG51bGwge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmdldFNlc3Npb25EYXRhKCk7XG4gICAgaWYgKHNlc3Npb24/LnVzZXIgJiYgIXRoaXMuY3VycmVudFVzZXJTdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC5uZXh0KHNlc3Npb24udXNlcik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFRlbmFudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYUFRlbmFudCB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgdGVuYW50JCA9IHRoaXMuY3VycmVudFRlbmFudFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIHB1YmxpYyBnZXQgdGVuYW50KCk6IEFYUFRlbmFudCB8IG51bGwge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmdldFNlc3Npb25EYXRhKCk7XG4gICAgaWYgKHNlc3Npb24/LnRlbmFudCAmJiAhdGhpcy5jdXJyZW50VGVuYW50U3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5jdXJyZW50VGVuYW50U3ViamVjdC5uZXh0KHNlc3Npb24udGVuYW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRlbmFudFN1YmplY3QudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRlbmFudHMkKCk6IE9ic2VydmFibGU8QVhQVGVuYW50W10+IHtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRMb2FkZXIuZ2V0TGlzdCh0aGlzLmdldENvbnRleHQoKSk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRBcHBsaWNhdGlvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYUEFwcGxpY2F0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBhcHBsaWNhdGlvbiQgPSB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIHB1YmxpYyBnZXQgYXBwbGljYXRpb24oKTogQVhQQXBwbGljYXRpb24gfCBudWxsIHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5nZXRTZXNzaW9uRGF0YSgpO1xuICAgIGlmIChzZXNzaW9uPy5hcHBsaWNhdGlvbiAmJiAhdGhpcy5jdXJyZW50QXBwbGljYXRpb25TdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvblN1YmplY3QubmV4dChzZXNzaW9uLmFwcGxpY2F0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEFwcGxpY2F0aW9uU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBwbGljYXRpb25zJCgpOiBPYnNlcnZhYmxlPEFYUEFwcGxpY2F0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvbkxvYWRlci5nZXRMaXN0KHRoaXMuZ2V0Q29udGV4dCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVybWlzc2lvbnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBWFBQZXJtaXNzaW9uW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IHBlcm1pc3Npb25zJCA9IHRoaXMucGVybWlzc2lvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoMSksIGRlZmF1bHRJZkVtcHR5KFtdKSk7XG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnMoKTogQVhQUGVybWlzc2lvbltdIHtcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uc1N1YmplY3QudmFsdWUgPz8gW107XG4gIH1cblxuICBwcml2YXRlIGZlYXR1cmVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QVhQRmVhdHVyZVtdPihbXSk7XG4gIHB1YmxpYyByZWFkb25seSBmZWF0dXJlcyQgPSB0aGlzLmZlYXR1cmVzU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KDEpLCBkZWZhdWx0SWZFbXB0eShbXSkpO1xuICBwdWJsaWMgZ2V0IGZlYXR1cmVzKCk6IEFYUEZlYXR1cmVbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZXNTdWJqZWN0LnZhbHVlID8/IFtdO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCQgPSB0aGlzLnN0YXR1cyQucGlwZShcbiAgICBtYXAoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBTZXNzaW9uU3RhdHVzLkF1dGhlbnRpY2F0ZWQgfHwgc3RhdHVzID09PSBBWFBTZXNzaW9uU3RhdHVzLkF1dGhvcml6ZWQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQXV0aG9yaXplZCQgPSB0aGlzLnN0YXR1cyQucGlwZShcbiAgICBtYXAoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBTZXNzaW9uU3RhdHVzLkF1dGhvcml6ZWQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHVibGljIGFzeW5jIHJlc3RvcmVTZXNzaW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlc3Npb25EYXRhID0gdGhpcy5nZXRTZXNzaW9uRGF0YSgpO1xuICAgIGlmIChzZXNzaW9uRGF0YSkge1xuICAgICAgaWYgKHNlc3Npb25EYXRhLnVzZXIpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VXNlclN1YmplY3QubmV4dChzZXNzaW9uRGF0YS51c2VyKTtcbiAgICAgICAgdGhpcy5zdGF0dXMubmV4dChBWFBTZXNzaW9uU3RhdHVzLkF1dGhlbnRpY2F0ZWQpO1xuICAgICAgfVxuICAgICAgLy8gaWYgKHNlc3Npb25EYXRhLnRlbmFudCkge1xuICAgICAgLy8gICB0aGlzLnNldFRlbmFudChzZXNzaW9uRGF0YS50ZW5hbnQpO1xuICAgICAgLy8gfVxuICAgICAgLy8gaWYgKHNlc3Npb25EYXRhLmFwcGxpY2F0aW9uKSB7XG4gICAgICAvLyAgIHRoaXMuc2V0QXBwbGljYXRpb24oc2Vzc2lvbkRhdGEuYXBwbGljYXRpb24pO1xuICAgICAgLy8gfVxuICAgICAgYXdhaXQgdGhpcy5sb2FkUGVybWlzc2lvbnMoKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEZlYXR1cmVzKCk7XG4gICAgICBhd2FpdCB0aGlzLnNpZ25JbkNvbXBsZXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdHVzLm5leHQoQVhQU2Vzc2lvblN0YXR1cy5VbmF1dGhvcml6ZWQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNpZ25pbihjcmVkZW50aWFsczogQVhQQmFzZUNyZWRlbnRpYWxzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gXG4gICAgdGhpcy5jbGVhclNlc3Npb24oKTtcbiAgICAvL1xuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5hdXRoU3RyYXRlZ3lSZWdpc3RyeS5nZXQoY3JlZGVudGlhbHMuc3RyYXRlZ3kpO1xuICAgIGlmICghc3RyYXRlZ3kpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXV0aGVudGljYXRpb24gc3RyYXRlZ3kgJyR7Y3JlZGVudGlhbHMuc3RyYXRlZ3l9JyBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0cmF0ZWd5LnNpZ25pbihjcmVkZW50aWFscyk7XG4gICAgaWYgKHJlc3VsdC5zdWNjZWVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC5uZXh0KHJlc3VsdC5kYXRhIS51c2VyKTtcbiAgICAgIHRoaXMuc2V0U2Vzc2lvbih7XG4gICAgICAgIGFjY2Vzc1Rva2VuOiByZXN1bHQuZGF0YSEuYWNjZXNzVG9rZW4sXG4gICAgICAgIHJlZnJlc2hUb2tlbjogcmVzdWx0LmRhdGEhLnJlZnJlc2hUb2tlbixcbiAgICAgICAgc3RyYXRlZ3k6IGNyZWRlbnRpYWxzLnN0cmF0ZWd5LFxuICAgICAgICB1c2VyOiByZXN1bHQuZGF0YSEudXNlcixcbiAgICAgICAgYXBwbGljYXRpb246IHJlc3VsdC5kYXRhPy5hcHBsaWNhdGlvbixcbiAgICAgICAgdGVuYW50OiByZXN1bHQuZGF0YT8udGVuYW50LFxuICAgICAgICBleHBpcmVzSW46IHJlc3VsdC5kYXRhPy5leHBpcmVzSW4sXG4gICAgICAgIGlkVG9rZW46IHJlc3VsdC5kYXRhPy5pZFRva2VuID8/IG51bGwsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3RhdHVzLm5leHQoQVhQU2Vzc2lvblN0YXR1cy5BdXRoZW50aWNhdGVkKTtcbiAgICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uICYmIHRoaXMudGVuYW50KSBhd2FpdCB0aGlzLnNpZ25JbkNvbXBsZXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdHVzLm5leHQoQVhQU2Vzc2lvblN0YXR1cy5VbmF1dGhlbnRpY2F0ZWQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFVzZXJuYW1lIG9yIFBhc3N3b3JkYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2lnbm91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXNzaW9uRGF0YSA9IHRoaXMuZ2V0U2Vzc2lvbkRhdGEoKTtcbiAgICBpZiAoc2Vzc2lvbkRhdGE/LnN0cmF0ZWd5KSB7XG4gICAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuYXV0aFN0cmF0ZWd5UmVnaXN0cnkuZ2V0KHNlc3Npb25EYXRhPy5zdHJhdGVneSk7XG4gICAgICBpZiAoc3RyYXRlZ3kpIHtcbiAgICAgICAgYXdhaXQgc3RyYXRlZ3kuc2lnbm91dCgpO1xuICAgICAgfVxuICAgIH1cbiAgICAvL1xuICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMudXNlcj8uaWQ7XG4gICAgdGhpcy5jbGVhclNlc3Npb24oKTtcbiAgICB0aGlzLnN0YXR1cy5uZXh0KEFYUFNlc3Npb25TdGF0dXMuU2lnbmVkT3V0KTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5wdWJsaXNoKEFYUFNlc3Npb25TdGF0dXMuU2lnbmVkT3V0LCB7IGlkOiB1c2VySWQgfSk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoVG9rZW4oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbkRhdGEgPSB0aGlzLmdldFNlc3Npb25EYXRhKCk7XG4gICAgICBpZiAoIXNlc3Npb25EYXRhIHx8ICFzZXNzaW9uRGF0YT8ucmVmcmVzaFRva2VuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5hdXRoU3RyYXRlZ3lSZWdpc3RyeS5nZXQoc2Vzc2lvbkRhdGEuc3RyYXRlZ3kpO1xuICAgICAgaWYgKCFzdHJhdGVneSkge1xuICAgICAgICByZWplY3QoKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdXRoZW50aWNhdGlvbiBzdHJhdGVneSAnJHtzZXNzaW9uRGF0YS5zdHJhdGVneX0nIGlzIG5vdCBmb3VuZGApO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RyYXRlZ3kucmVmcmVzaFRva2VuKHRoaXMuZ2V0Q29udGV4dCgpKTtcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VlZCkge1xuICAgICAgICB0aGlzLnNldFNlc3Npb24ocmVzdWx0LmRhdGEgYXMgQVhQU2Vzc2lvbkRhdGEpO1xuICAgICAgICByZXNvbHZlKHJlc3VsdC5kYXRhPy5hY2Nlc3NUb2tlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsZWFyU2Vzc2lvbigpO1xuICAgICAgICB0aGlzLnN0YXR1cy5uZXh0KEFYUFNlc3Npb25TdGF0dXMuRXhwaXJlZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRUZW5hbnQodGVuYW50OiBBWFBUZW5hbnQgfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdXJyZW50VGVuYW50U3ViamVjdC5uZXh0KHRlbmFudCk7XG4gICAgaWYgKHRlbmFudCkge1xuICAgICAgdGhpcy51cGRhdGVTZXNzaW9uKHsgdGVuYW50OiB0ZW5hbnQgfSk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldEFwcGxpY2F0aW9uKGFwcGxpY2F0aW9uOiBBWFBBcHBsaWNhdGlvbiB8IG51bGwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvblN1YmplY3QubmV4dChhcHBsaWNhdGlvbik7XG4gICAgaWYgKGFwcGxpY2F0aW9uKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlc3Npb24oeyBhcHBsaWNhdGlvbjogYXBwbGljYXRpb24gfSk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkUGVybWlzc2lvbnMoKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEZlYXR1cmVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUGVybWlzc2lvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wZXJtaXNzaW9uTG9hZGVyLmdldExpc3QodGhpcy5nZXRDb250ZXh0KCkpKTtcbiAgICAgIHRoaXMucGVybWlzc2lvbnNTdWJqZWN0Lm5leHQocGVybWlzc2lvbnMgPz8gW10pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHBlcm1pc3Npb25zOicsIGVycm9yKTtcbiAgICAgIHRoaXMucGVybWlzc2lvbnNTdWJqZWN0Lm5leHQoW10pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEZlYXR1cmVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuZmVhdHVyZUxvYWRlci5nZXRMaXN0KHRoaXMuZ2V0Q29udGV4dCgpKSk7XG4gICAgICB0aGlzLmZlYXR1cmVzU3ViamVjdC5uZXh0KGZlYXR1cmVzID8/IFtdKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBmZWF0dXJlczonLCBlcnJvcik7XG4gICAgICB0aGlzLmZlYXR1cmVzU3ViamVjdC5uZXh0KFtdKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaWduSW5Db21wbGV0ZSgpIHtcbiAgICB0aGlzLnN0YXR1cy5uZXh0KEFYUFNlc3Npb25TdGF0dXMuQXV0aG9yaXplZCk7XG4gIH1cblxuICBwcml2YXRlIHNldFNlc3Npb24odG9rZW5zOiBQYXJ0aWFsPEFYUFNlc3Npb25EYXRhPik6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb25EYXRhOiBQYXJ0aWFsPEFYUFNlc3Npb25EYXRhPiA9IHtcbiAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbnMuYWNjZXNzVG9rZW4sXG4gICAgICByZWZyZXNoVG9rZW46IHRva2Vucy5yZWZyZXNoVG9rZW4sXG4gICAgICBzdHJhdGVneTogdG9rZW5zLnN0cmF0ZWd5LFxuICAgICAgdXNlcjogdGhpcy51c2VyLFxuICAgICAgYXBwbGljYXRpb246IHRva2Vucy5hcHBsaWNhdGlvbixcbiAgICAgIHRlbmFudDogdG9rZW5zLnRlbmFudCxcbiAgICAgIGV4cGlyZXNJbjogdG9rZW5zLmV4cGlyZXNJbixcbiAgICAgIGlkVG9rZW46IHRva2Vucy5pZFRva2VuLFxuICAgIH07XG4gICAgdGhpcy51cGRhdGVTZXNzaW9uKHNlc3Npb25EYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2Vzc2lvbih1cGRhdGU6IFBhcnRpYWw8QVhQU2Vzc2lvbkRhdGE+KSB7XG4gICAgY29uc3QgY3VycmVudFNlc3Npb24gPSB0aGlzLmdldFNlc3Npb25EYXRhKCkgPz8ge307XG4gICAgY29uc3QgdXBkYXRlZFNlc3Npb24gPSBtZXJnZSh7fSwgY3VycmVudFNlc3Npb24sIHVwZGF0ZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oQVhQU2Vzc2lvblNlcnZpY2UuU0VTU0lPTl9LRVksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWRTZXNzaW9uKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2Vzc2lvbkRhdGEoKTogQVhQU2Vzc2lvbkRhdGEgfCBudWxsIHtcbiAgICBjb25zdCBzZXNzaW9uRGF0YVN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKEFYUFNlc3Npb25TZXJ2aWNlLlNFU1NJT05fS0VZKTtcbiAgICByZXR1cm4gc2Vzc2lvbkRhdGFTdHJpbmcgPyBKU09OLnBhcnNlKHNlc3Npb25EYXRhU3RyaW5nKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2Vzc2lvbigpOiB2b2lkIHtcbiAgICAvL1xuICAgIHRoaXMuY3VycmVudFVzZXJTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgLy9cbiAgICB0aGlzLnNldFRlbmFudChudWxsKTtcbiAgICAvL1xuICAgIHRoaXMuc2V0QXBwbGljYXRpb24obnVsbCk7XG4gICAgLy9cbiAgICB0aGlzLnBlcm1pc3Npb25zU3ViamVjdC5uZXh0KFtdKTtcbiAgICAvL1xuICAgIHRoaXMuZmVhdHVyZXNTdWJqZWN0Lm5leHQoW10pO1xuICAgIC8vXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oQVhQU2Vzc2lvblNlcnZpY2UuU0VTU0lPTl9LRVkpO1xuICB9XG5cbiAgcHVibGljIGF1dGhvcml6ZSguLi5rZXlzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBrZXlzLmV2ZXJ5KChrKSA9PiBpc0VtcHR5KGspIHx8IHRoaXMucGVybWlzc2lvbnMuaW5kZXhPZihrKSA+IC0xKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0ZlYXR1cmVFbmFibGVkKC4uLmtleXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGtleXMuZXZlcnkoKGspID0+IGlzRW1wdHkoaykgfHwgdGhpcy5mZWF0dXJlcy5zb21lKChjKSA9PiBjLm5hbWUgPT0gayAmJiBjLnZhbHVlID09IHRydWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUb2tlbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlc3Npb25EYXRhID0gdGhpcy5nZXRTZXNzaW9uRGF0YSgpO1xuXG4gICAgcmV0dXJuIHNlc3Npb25EYXRhPy5hY2Nlc3NUb2tlbjtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tUb2tlblZhbGlkYXRpb24oKTogYm9vbGVhbiB7XG4gICAgbGV0IHNlc3Npb25EYXRhID0gdGhpcy5nZXRTZXNzaW9uRGF0YSgpO1xuXG4gICAgaWYgKHNlc3Npb25EYXRhICYmIHNlc3Npb25EYXRhPy5hY2Nlc3NUb2tlbiAmJiBzZXNzaW9uRGF0YS5leHBpcmVzSW4pIHtcbiAgICAgIGNvbnN0IGV4cGlyZXNJbkRhdGUgPSBuZXcgRGF0ZShzZXNzaW9uRGF0YS5leHBpcmVzSW4pO1xuICAgICAgaWYgKGV4cGlyZXNJbkRhdGUgPiBuZXcgRGF0ZSgpKSB7XG4gICAgICAgIC8vIFRva2VuIGlzIHN0aWxsIHZhbGlkXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHQoKTogQVhQU2Vzc2lvbkNvbnRleHQge1xuICAgIHJldHVybiBuZXcgQVhQU2Vzc2lvbkNvbnRleHQoe1xuICAgICAgdXNlcjogdGhpcy51c2VyLFxuICAgICAgdGVuYW50OiB0aGlzLnRlbmFudCxcbiAgICAgIGFwcGxpY2F0aW9uOiB0aGlzLmFwcGxpY2F0aW9uLFxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { Directive, Input, TemplateRef, ViewContainerRef, inject, signal } from '@angular/core';\nimport { AXPSessionService } from '../session.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPPermissionDirective {\n constructor(templateRef, viewContainer) {\n this.templateRef = templateRef;\n this.viewContainer = viewContainer;\n this.hasView = signal(false);\n this.sessionService = inject(AXPSessionService);\n }\n set permission(permissionKeys) {\n const keys = !permissionKeys ? [] : (Array.isArray(permissionKeys) ? permissionKeys : [permissionKeys]);\n if (keys.length == 0) {\n // If permissionKey is null or empty, decide the default behavior here\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView.set(true);\n return;\n }\n this.subscription = this.sessionService.isAuthorized$\n .subscribe((isAuthorized) => {\n if (isAuthorized && this.sessionService.authorize(...keys)) {\n if (!this.hasView()) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView.set(true);\n }\n }\n else {\n this.viewContainer.clear();\n this.hasView.set(false);\n }\n });\n }\n set permissionElse(elseTemplateRef) {\n if (!this.hasView()) {\n this.viewContainer.createEmbeddedView(elseTemplateRef);\n }\n }\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPPermissionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.6\", type: AXPPermissionDirective, isStandalone: false, selector: \"[permission]\", inputs: { permission: \"permission\", permissionElse: \"permissionElse\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPPermissionDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[permission]',\n standalone: false\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { permission: [{\n type: Input\n }], permissionElse: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9wZXJtaXNzaW9uL3Blcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU12RCxNQUFNLE9BQU8sc0JBQXNCO0lBS2pDLFlBQ1UsV0FBNkIsRUFDN0IsYUFBK0I7UUFEL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQU5qQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFLL0MsQ0FBQztJQUVMLElBQ1csVUFBVSxDQUFDLGNBQXdDO1FBQzVELE1BQU0sSUFBSSxHQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDbEgsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLHNFQUFzRTtZQUN0RSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhO2FBQ2xELFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzFCLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQ1csY0FBYyxDQUFDLGVBQWlDO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs4R0ExQ1Usc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxLQUFLO2lCQUNwQjsrR0FZWSxVQUFVO3NCQURwQixLQUFLO2dCQXdCSyxjQUFjO3NCQUR4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpcnN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24uc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3Blcm1pc3Npb25dJyxcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBBWFBQZXJtaXNzaW9uRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBoYXNWaWV3ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICkgeyB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwZXJtaXNzaW9uKHBlcm1pc3Npb25LZXlzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwpIHtcbiAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9ICFwZXJtaXNzaW9uS2V5cyA/IFtdIDogKEFycmF5LmlzQXJyYXkocGVybWlzc2lvbktleXMpID8gcGVybWlzc2lvbktleXMgOiBbcGVybWlzc2lvbktleXNdKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT0gMCkge1xuICAgICAgLy8gSWYgcGVybWlzc2lvbktleSBpcyBudWxsIG9yIGVtcHR5LCBkZWNpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaGVyZVxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICAgIHRoaXMuaGFzVmlldy5zZXQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5zZXNzaW9uU2VydmljZS5pc0F1dGhvcml6ZWQkXG4gICAgICAuc3Vic2NyaWJlKChpc0F1dGhvcml6ZWQpID0+IHtcbiAgICAgICAgaWYgKGlzQXV0aG9yaXplZCAmJiB0aGlzLnNlc3Npb25TZXJ2aWNlLmF1dGhvcml6ZSguLi5rZXlzKSkge1xuICAgICAgICAgIGlmICghdGhpcy5oYXNWaWV3KCkpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgICAgICB0aGlzLmhhc1ZpZXcuc2V0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgICB0aGlzLmhhc1ZpZXcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBlcm1pc3Npb25FbHNlKGVsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICghdGhpcy5oYXNWaWV3KCkpIHtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZWxzZVRlbXBsYXRlUmVmKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { first, map } from 'rxjs';\nimport { AXPUnauthorizedError } from '../errors.types';\nimport { AXPSessionService } from '../session.service';\nexport const AXPPermissionGuard = (route, state) => {\n const sessionService = inject(AXPSessionService);\n const permissionKeys = route.data['requiredPermission'];\n return sessionService.isAuthorized$.pipe(first(), map((value) => {\n const keys = !permissionKeys ? [] : Array.isArray(permissionKeys) ? permissionKeys : [permissionKeys];\n const hasPermission = keys.length == 0 || sessionService.authorize(...keys);\n if (!hasPermission) {\n throw new AXPUnauthorizedError(`Access denied. Required permissions: ${keys.join(', ')}. Please contact your administrator if you believe this is an error.`, {\n redirectUrl: state.url\n });\n }\n return true;\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL3Blcm1pc3Npb24vcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFPLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFrQixDQUFDLEtBQTZCLEVBQUUsS0FBMEIsRUFBRSxFQUFFO0lBRTdHLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWpELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQTZCLENBQUM7SUFFcEYsT0FBTyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDdEMsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDWixNQUFNLElBQUksR0FBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEgsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksb0JBQW9CLENBQzVCLHdDQUF3QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzRUFBc0UsRUFDN0g7Z0JBQ0UsV0FBVyxFQUFFLEtBQUssQ0FBQyxHQUFHO2FBQ3ZCLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlRm4sIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBVbmF1dGhvcml6ZWRFcnJvciB9IGZyb20gJy4uL2Vycm9ycy50eXBlcyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24uc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBBWFBQZXJtaXNzaW9uR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XG5cbiAgY29uc3Qgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gIGNvbnN0IHBlcm1pc3Npb25LZXlzID0gcm91dGUuZGF0YVsncmVxdWlyZWRQZXJtaXNzaW9uJ10gYXMgc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsO1xuXG4gIHJldHVybiBzZXNzaW9uU2VydmljZS5pc0F1dGhvcml6ZWQkLnBpcGUoXG4gICAgZmlyc3QoKSxcbiAgICBtYXAoKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9ICFwZXJtaXNzaW9uS2V5cyA/IFtdIDogQXJyYXkuaXNBcnJheShwZXJtaXNzaW9uS2V5cykgPyBwZXJtaXNzaW9uS2V5cyA6IFtwZXJtaXNzaW9uS2V5c107XG4gICAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0ga2V5cy5sZW5ndGggPT0gMCB8fCBzZXNzaW9uU2VydmljZS5hdXRob3JpemUoLi4ua2V5cyk7XG4gICAgICBpZiAoIWhhc1Blcm1pc3Npb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEFYUFVuYXV0aG9yaXplZEVycm9yKFxuICAgICAgICAgIGBBY2Nlc3MgZGVuaWVkLiBSZXF1aXJlZCBwZXJtaXNzaW9uczogJHtrZXlzLmpvaW4oJywgJyl9LiBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgaWYgeW91IGJlbGlldmUgdGhpcyBpcyBhbiBlcnJvci5gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZGlyZWN0VXJsOiBzdGF0ZS51cmxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KVxuICApO1xufTtcbiJdfQ==","export class AXPPermissionDefinitionProviderContext {\n constructor() {\n this.builders = new Map();\n }\n addGroup(name, title, description) {\n if (this.isGroupDefined(name)) {\n return this.findGroup(name);\n }\n const group = {\n name,\n title,\n description,\n permissions: []\n };\n const builder = new AXPPermissionDefinitionGroupBuilder(this, group);\n this.builders.set(name, builder);\n return builder;\n }\n getGroupDefinitions() {\n return Array.from(this.builders.values()).map(b => b.group);\n }\n findGroup(name) {\n return this.builders.get(name);\n }\n isGroupDefined(name) {\n return this.builders.has(name);\n }\n}\nexport class AXPPermissionDefinitionGroupBuilder {\n get group() {\n return this._group;\n }\n constructor(context, group) {\n this.context = context;\n this._group = group;\n }\n addPermission(name, title, description) {\n const permission = {\n name,\n title,\n description,\n children: []\n };\n this._group.permissions.push(permission);\n return new AXPPermissionDefinitionBuilder(this, permission);\n }\n endGroup() {\n return this.context;\n }\n findPermission(path) {\n return undefined;\n }\n findGroup(name) {\n return undefined;\n }\n}\nexport class AXPPermissionDefinitionBuilder {\n constructor(groupBuilder, permission) {\n this.groupBuilder = groupBuilder;\n this.permission = permission;\n }\n addChild(name, title, description) {\n const permission = {\n name,\n title,\n description,\n children: []\n };\n this.permission.children.push(permission);\n return this;\n }\n endPermission() {\n return this.groupBuilder;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9wZXJtaXNzaW9uL3Blcm1pc3Npb24tZGVmaW5pdGlvbi5idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxzQ0FBc0M7SUFBbkQ7UUFDWSxhQUFRLEdBQXFELElBQUksR0FBRyxFQUFFLENBQUM7SUE0Qm5GLENBQUM7SUExQkcsUUFBUSxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsV0FBb0I7UUFDdEQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBRSxDQUFBO1FBQ2hDLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBaUM7WUFDeEMsSUFBSTtZQUNKLEtBQUs7WUFDTCxXQUFXO1lBQ1gsV0FBVyxFQUFFLEVBQUU7U0FDbEIsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksbUNBQW1DLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNKO0FBSUQsTUFBTSxPQUFPLG1DQUFtQztJQUk1QyxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQVksT0FBK0MsRUFBRSxLQUFtQztRQUM1RixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsV0FBb0I7UUFDM0QsTUFBTSxVQUFVLEdBQTRCO1lBQ3hDLElBQUk7WUFDSixLQUFLO1lBQ0wsV0FBVztZQUNYLFFBQVEsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksOEJBQThCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFLRCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN2QixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDbEIsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztDQUVKO0FBRUQsTUFBTSxPQUFPLDhCQUE4QjtJQUl2QyxZQUFZLFlBQWlELEVBQUUsVUFBbUM7UUFDOUYsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLFdBQW9CO1FBQ3RELE1BQU0sVUFBVSxHQUE0QjtZQUN4QyxJQUFJO1lBQ0osS0FBSztZQUNMLFdBQVc7WUFDWCxRQUFRLEVBQUUsRUFBRTtTQUNmLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUdELGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQUGVybWlzc2lvbkRlZmluaXRpb24sIEFYUFBlcm1pc3Npb25Hcm91cERlZmluaXRpb24gfSBmcm9tIFwiLi9wZXJtaXNzaW9uLnR5cGVzXCI7XG5cblxuZXhwb3J0IGNsYXNzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0IHtcbiAgICBwcml2YXRlIGJ1aWxkZXJzOiBNYXA8c3RyaW5nLCBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkdyb3VwQnVpbGRlcj4gPSBuZXcgTWFwKCk7XG5cbiAgICBhZGRHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogQVhQUGVybWlzc2lvbkRlZmluaXRpb25Hcm91cEJ1aWxkZXIge1xuICAgICAgICBpZiAodGhpcy5pc0dyb3VwRGVmaW5lZChuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZEdyb3VwKG5hbWUpIVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyb3VwOiBBWFBQZXJtaXNzaW9uR3JvdXBEZWZpbml0aW9uID0ge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwZXJtaXNzaW9uczogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkdyb3VwQnVpbGRlcih0aGlzLCBncm91cCk7XG4gICAgICAgIHRoaXMuYnVpbGRlcnMuc2V0KG5hbWUsIGJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBnZXRHcm91cERlZmluaXRpb25zKCk6IEFYUFBlcm1pc3Npb25Hcm91cERlZmluaXRpb25bXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuYnVpbGRlcnMudmFsdWVzKCkpLm1hcChiID0+IGIuZ3JvdXApO1xuICAgIH1cblxuICAgIGZpbmRHcm91cChuYW1lOiBzdHJpbmcpOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkdyb3VwQnVpbGRlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkZXJzLmdldChuYW1lKTtcbiAgICB9XG5cbiAgICBpc0dyb3VwRGVmaW5lZChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRlcnMuaGFzKG5hbWUpO1xuICAgIH1cbn1cblxuXG5cbmV4cG9ydCBjbGFzcyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkdyb3VwQnVpbGRlciB7XG4gICAgcHJpdmF0ZSBjb250ZXh0OiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dDtcbiAgICBwcml2YXRlIF9ncm91cDogQVhQUGVybWlzc2lvbkdyb3VwRGVmaW5pdGlvbjtcblxuICAgIHB1YmxpYyBnZXQgZ3JvdXAoKTogQVhQUGVybWlzc2lvbkdyb3VwRGVmaW5pdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncm91cDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCwgZ3JvdXA6IEFYUFBlcm1pc3Npb25Hcm91cERlZmluaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgdGhpcy5fZ3JvdXAgPSBncm91cDtcbiAgICB9XG5cbiAgICBhZGRQZXJtaXNzaW9uKG5hbWU6IHN0cmluZywgdGl0bGU6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbkJ1aWxkZXIge1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2dyb3VwLnBlcm1pc3Npb25zLnB1c2gocGVybWlzc2lvbik7XG4gICAgICAgIHJldHVybiBuZXcgQVhQUGVybWlzc2lvbkRlZmluaXRpb25CdWlsZGVyKHRoaXMsIHBlcm1pc3Npb24pO1xuICAgIH1cblxuXG5cblxuICAgIGVuZEdyb3VwKCk6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgICB9XG5cbiAgICBmaW5kUGVybWlzc2lvbihwYXRoOiBzdHJpbmcpOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZmluZEdyb3VwKG5hbWU6IHN0cmluZyk6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uR3JvdXBCdWlsZGVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbn1cblxuZXhwb3J0IGNsYXNzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uQnVpbGRlciB7XG4gICAgcHJpdmF0ZSBncm91cEJ1aWxkZXI6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uR3JvdXBCdWlsZGVyO1xuICAgIHByaXZhdGUgcGVybWlzc2lvbjogQVhQUGVybWlzc2lvbkRlZmluaXRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihncm91cEJ1aWxkZXI6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uR3JvdXBCdWlsZGVyLCBwZXJtaXNzaW9uOiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbikge1xuICAgICAgICB0aGlzLmdyb3VwQnVpbGRlciA9IGdyb3VwQnVpbGRlcjtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uID0gcGVybWlzc2lvbjtcbiAgICB9XG5cbiAgICBhZGRDaGlsZChuYW1lOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogQVhQUGVybWlzc2lvbkRlZmluaXRpb25CdWlsZGVyIHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbjogQVhQUGVybWlzc2lvbkRlZmluaXRpb24gPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnBlcm1pc3Npb24uY2hpbGRyZW4ucHVzaChwZXJtaXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG5cbiAgICBlbmRQZXJtaXNzaW9uKCk6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uR3JvdXBCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBCdWlsZGVyO1xuICAgIH1cbn0iXX0=","import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPPermissionDefinitionProviderContext } from './permission-definition.builder';\nimport * as i0 from \"@angular/core\";\nexport const AXP_PERMISSION_DEFINITION_PROVIDER = new InjectionToken('AXP_PERMISSION_DEFINITION_PROVIDER', {\n providedIn: 'root',\n factory: () => {\n return [];\n }\n});\nexport class AXPPermissionDefinitionService {\n constructor() {\n this.providers = inject(AXP_PERMISSION_DEFINITION_PROVIDER, { optional: true });\n this.cache = null;\n }\n async load() {\n if (this.cache) {\n return;\n }\n const context = new AXPPermissionDefinitionProviderContext();\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n if (provider instanceof Promise) {\n // If provider is a promise, resolve it\n const resolvedProvider = await provider;\n await resolvedProvider.define(context);\n }\n else {\n // If provider is a direct instance, use it directly\n await provider.define(context);\n }\n }\n }\n this.cache = context.getGroupDefinitions();\n }\n async reload() {\n this.cache = null;\n await this.load();\n }\n async getGroups() {\n await this.load();\n return this.cache ?? [];\n }\n async getPermissions() {\n await this.load();\n return this.cache?.flatMap(g => g.permissions) ?? [];\n }\n async getGroup(name) {\n await this.load();\n return this.cache?.find(g => g.name === name) ?? null;\n }\n async getPermission(name) {\n await this.load();\n return this.cache?.find(g => g.permissions.find(p => p.name === name))?.permissions.find(p => p.name === name) ?? null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPPermissionDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPPermissionDefinitionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPPermissionDefinitionService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9wZXJtaXNzaW9uL3Blcm1pc3Npb24tZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFRekYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQW9DLG9DQUFvQyxFQUFFO0lBQzVJLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRixDQUFDLENBQUM7QUFJSCxNQUFNLE9BQU8sOEJBQThCO0lBRDNDO1FBRVUsY0FBUyxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLFVBQUssR0FBMEMsSUFBSSxDQUFDO0tBZ0Q3RDtJQTdDUyxLQUFLLENBQUMsSUFBSTtRQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU07UUFDUixDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQ0FBc0MsRUFBRSxDQUFDO1FBQzdELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxRQUFRLFlBQVksT0FBTyxFQUFFLENBQUM7b0JBQ2hDLHVDQUF1QztvQkFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFFBQVEsQ0FBQztvQkFDeEMsTUFBTSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixvREFBb0Q7b0JBQ3BELE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU07UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDaEMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3hELENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQVk7UUFDckMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN6SCxDQUFDOzhHQWhEVSw4QkFBOEI7a0hBQTlCLDhCQUE4QixjQURqQixNQUFNOzsyRkFDbkIsOEJBQThCO2tCQUQxQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uLCBBWFBQZXJtaXNzaW9uR3JvdXBEZWZpbml0aW9uIH0gZnJvbSAnLi9wZXJtaXNzaW9uLnR5cGVzJztcbmltcG9ydCB7IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnLi9wZXJtaXNzaW9uLWRlZmluaXRpb24uYnVpbGRlcic7XG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIge1xuICBkZWZpbmUoY29udGV4dDogQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlckNvbnRleHQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1BFUk1JU1NJT05fREVGSU5JVElPTl9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyW10+KCdBWFBfUEVSTUlTU0lPTl9ERUZJTklUSU9OX1BST1ZJREVSJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICByZXR1cm4gW107XG4gIH1cbn0pO1xuXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQUGVybWlzc2lvbkRlZmluaXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwcm92aWRlcnMgPSBpbmplY3QoQVhQX1BFUk1JU1NJT05fREVGSU5JVElPTl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBjYWNoZTogQVhQUGVybWlzc2lvbkdyb3VwRGVmaW5pdGlvbltdIHwgbnVsbCA9IG51bGw7XG5cblxuICBwcml2YXRlIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KCk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5wcm92aWRlcnMpKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICAgIGlmIChwcm92aWRlciBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAvLyBJZiBwcm92aWRlciBpcyBhIHByb21pc2UsIHJlc29sdmUgaXRcbiAgICAgICAgICBjb25zdCByZXNvbHZlZFByb3ZpZGVyID0gYXdhaXQgcHJvdmlkZXI7XG4gICAgICAgICAgYXdhaXQgcmVzb2x2ZWRQcm92aWRlci5kZWZpbmUoY29udGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgcHJvdmlkZXIgaXMgYSBkaXJlY3QgaW5zdGFuY2UsIHVzZSBpdCBkaXJlY3RseVxuICAgICAgICAgIGF3YWl0IHByb3ZpZGVyLmRlZmluZShjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNhY2hlID0gY29udGV4dC5nZXRHcm91cERlZmluaXRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdyb3VwcygpOiBQcm9taXNlPEFYUFBlcm1pc3Npb25Hcm91cERlZmluaXRpb25bXT4ge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICAgIHJldHVybiB0aGlzLmNhY2hlID8/IFtdO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBlcm1pc3Npb25zKCk6IFByb21pc2U8QVhQUGVybWlzc2lvbkRlZmluaXRpb25bXT4ge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICAgIHJldHVybiB0aGlzLmNhY2hlPy5mbGF0TWFwKGcgPT4gZy5wZXJtaXNzaW9ucykgPz8gW107XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R3JvdXAobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBQZXJtaXNzaW9uR3JvdXBEZWZpbml0aW9uIHwgbnVsbD4ge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICAgIHJldHVybiB0aGlzLmNhY2hlPy5maW5kKGcgPT4gZy5uYW1lID09PSBuYW1lKSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBlcm1pc3Npb24obmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBQZXJtaXNzaW9uRGVmaW5pdGlvbiB8IG51bGw+IHtcbiAgICBhd2FpdCB0aGlzLmxvYWQoKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZT8uZmluZChnID0+IGcucGVybWlzc2lvbnMuZmluZChwID0+IHAubmFtZSA9PT0gbmFtZSkpPy5wZXJtaXNzaW9ucy5maW5kKHAgPT4gcC5uYW1lID09PSBuYW1lKSA/PyBudWxsO1xuICB9XG5cbn1cbiJdfQ==","import { inject } from \"@angular/core\";\nimport { AXPSessionService } from \"../session.service\";\nexport class AXPPermissionEvaluatorScopeProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n }\n async provide(context) {\n context.addScope('permission', {\n /**\n * Check if the current user has all specified permissions\n * @param permissions - Single permission string or array of permission strings\n * @returns boolean - true if user has all permissions, false otherwise\n */\n check: (...permissions) => {\n return this.sessionService.authorize(...permissions);\n },\n /**\n * Check if the current user has any of the specified permissions\n * @param permissions - Array of permission strings\n * @returns boolean - true if user has any of the permissions, false otherwise\n */\n checkAny: (...permissions) => {\n return permissions.some(p => this.sessionService.authorize(p));\n },\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1ldmFsdWF0b3Itc2NvcGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9wZXJtaXNzaW9uL3Blcm1pc3Npb24tZXZhbHVhdG9yLXNjb3BlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsTUFBTSxPQUFPLG1DQUFtQztJQUFoRDtRQUVjLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUF1QnpELENBQUM7SUFyQkcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtRDtRQUM3RCxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtZQUMzQjs7OztlQUlHO1lBQ0gsS0FBSyxFQUFFLENBQUMsR0FBRyxXQUFxQixFQUFFLEVBQUU7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRUQ7Ozs7ZUFJRztZQUNILFFBQVEsRUFBRSxDQUFDLEdBQUcsV0FBcUIsRUFBRSxFQUFFO2dCQUNuQyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25FLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlciwgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlUHJvdmlkZXJDb250ZXh0IH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vY29yZVwiO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uL3Nlc3Npb24uc2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgQVhQUGVybWlzc2lvbkV2YWx1YXRvclNjb3BlUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlciB7XG5cbiAgICBwcm90ZWN0ZWQgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gICAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlckNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29udGV4dC5hZGRTY29wZSgncGVybWlzc2lvbicsIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgYWxsIHNwZWNpZmllZCBwZXJtaXNzaW9uc1xuICAgICAgICAgICAgICogQHBhcmFtIHBlcm1pc3Npb25zIC0gU2luZ2xlIHBlcm1pc3Npb24gc3RyaW5nIG9yIGFycmF5IG9mIHBlcm1pc3Npb24gc3RyaW5nc1xuICAgICAgICAgICAgICogQHJldHVybnMgYm9vbGVhbiAtIHRydWUgaWYgdXNlciBoYXMgYWxsIHBlcm1pc3Npb25zLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2hlY2s6ICguLi5wZXJtaXNzaW9uczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uU2VydmljZS5hdXRob3JpemUoLi4ucGVybWlzc2lvbnMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDaGVjayBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBhbnkgb2YgdGhlIHNwZWNpZmllZCBwZXJtaXNzaW9uc1xuICAgICAgICAgICAgICogQHBhcmFtIHBlcm1pc3Npb25zIC0gQXJyYXkgb2YgcGVybWlzc2lvbiBzdHJpbmdzXG4gICAgICAgICAgICAgKiBAcmV0dXJucyBib29sZWFuIC0gdHJ1ZSBpZiB1c2VyIGhhcyBhbnkgb2YgdGhlIHBlcm1pc3Npb25zLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2hlY2tBbnk6ICguLi5wZXJtaXNzaW9uczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGVybWlzc2lvbnMuc29tZShwID0+IHRoaXMuc2Vzc2lvblNlcnZpY2UuYXV0aG9yaXplKHApKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbn0gIl19","import { inject } from '@angular/core';\nimport { first, map } from 'rxjs';\nimport { AXPUnauthenticatedError } from './errors.types';\nimport { AXPSessionService } from './session.service';\nexport const AXPAuthGuard = (route, state) => {\n const sessionService = inject(AXPSessionService);\n return sessionService.isAuthenticated$.pipe(first(), map((value) => {\n if (value) {\n return true;\n }\n throw new AXPUnauthenticatedError(`Access denied. You are not currently logged in. Please log in to access this page. If you continue to see this message after logging in, please contact support.`, {\n redirectUrl: state.url,\n });\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXV0aC9zcmMvbGliL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWtCLENBQUMsS0FBNkIsRUFBRSxLQUEwQixFQUFFLEVBQUU7SUFDdkcsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakQsT0FBTyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN6QyxLQUFLLEVBQUUsRUFDUCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNaLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLElBQUksdUJBQXVCLENBQy9CLGtLQUFrSyxFQUNsSztZQUNFLFdBQVcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUN2QixDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZUZuLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0LCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFVuYXV0aGVudGljYXRlZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMudHlwZXMnO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBBWFBBdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XG4gIGNvbnN0IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcmV0dXJuIHNlc3Npb25TZXJ2aWNlLmlzQXV0aGVudGljYXRlZCQucGlwZShcbiAgICBmaXJzdCgpLFxuICAgIG1hcCgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBBWFBVbmF1dGhlbnRpY2F0ZWRFcnJvcihcbiAgICAgICAgYEFjY2VzcyBkZW5pZWQuIFlvdSBhcmUgbm90IGN1cnJlbnRseSBsb2dnZWQgaW4uIFBsZWFzZSBsb2cgaW4gdG8gYWNjZXNzIHRoaXMgcGFnZS4gSWYgeW91IGNvbnRpbnVlIHRvIHNlZSB0aGlzIG1lc3NhZ2UgYWZ0ZXIgbG9nZ2luZyBpbiwgcGxlYXNlIGNvbnRhY3Qgc3VwcG9ydC5gLFxuICAgICAgICB7XG4gICAgICAgICAgcmVkaXJlY3RVcmw6IHN0YXRlLnVybCxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KVxuICApO1xufTtcbiJdfQ==","import { Inject, NgModule, Optional, inject, provideAppInitializer } from '@angular/core';\nimport { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex/platform/core';\nimport { AXPAuthStrategyRegistryService } from './auth-registry.service';\nimport { AXPFeatureDirective } from './feature';\nimport { AXPPermissionDirective } from './permission/permission.directive';\nimport { AXPPermissionEvaluatorScopeProvider } from './permission/permission-evaluator-scope.provider';\nimport { AXPSessionService } from './session.service';\nimport * as i0 from \"@angular/core\";\nexport function initializeAppState(service) {\n return async () => {\n try {\n await service.restoreSession();\n }\n catch (error) {\n console.error(error);\n }\n };\n}\nexport class AXPAuthModule {\n static forRoot(configs) {\n return {\n ngModule: AXPAuthModule,\n providers: [\n ...(configs?.strategies || []),\n {\n provide: 'AXPAuthModuleFactory',\n useFactory: (registry) => () => {\n registry.register(...(configs?.strategies || []));\n },\n deps: [AXPAuthStrategyRegistryService],\n multi: true,\n },\n ],\n };\n }\n static forChild(configs) {\n return {\n ngModule: AXPAuthModule,\n providers: [\n ...(configs?.strategies || []),\n {\n provide: 'AXPAuthModuleFactory',\n useFactory: (registry) => () => {\n registry.register(...(configs?.strategies || []));\n },\n deps: [AXPAuthStrategyRegistryService],\n multi: true,\n },\n ],\n };\n }\n /**\n * @ignore\n */\n constructor(instances) {\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPAuthModule, deps: [{ token: 'AXPAuthModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPAuthModule, declarations: [AXPPermissionDirective, AXPFeatureDirective], exports: [AXPPermissionDirective, AXPFeatureDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPAuthModule, providers: [\n provideAppInitializer(() => {\n const initializerFn = (initializeAppState)(inject(AXPSessionService));\n return initializerFn();\n }),\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXPPermissionEvaluatorScopeProvider,\n multi: true,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.6\", ngImport: i0, type: AXPAuthModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [AXPPermissionDirective, AXPFeatureDirective],\n declarations: [AXPPermissionDirective, AXPFeatureDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = (initializeAppState)(inject(AXPSessionService));\n return initializerFn();\n }),\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXPPermissionEvaluatorScopeProvider,\n multi: true,\n },\n ],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['AXPAuthModuleFactory']\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2xpYi9hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUF1QixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTXRELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUEwQjtJQUMzRCxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ2hCLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWtCRCxNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQThCO1FBQzNDLE9BQU87WUFDTCxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO2dCQUM5QjtvQkFDRSxPQUFPLEVBQUUsc0JBQXNCO29CQUMvQixVQUFVLEVBQUUsQ0FBQyxRQUF3QyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUU7d0JBQzdELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDcEQsQ0FBQztvQkFDRCxJQUFJLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztvQkFDdEMsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUE4QjtRQUM1QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGFBQWE7WUFDdkIsU0FBUyxFQUFFO2dCQUNULEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQztnQkFDOUI7b0JBQ0UsT0FBTyxFQUFFLHNCQUFzQjtvQkFDL0IsVUFBVSxFQUFFLENBQUMsUUFBd0MsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFO3dCQUM3RCxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3BELENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsOEJBQThCLENBQUM7b0JBQ3RDLEtBQUssRUFBRSxJQUFJO2lCQUNaO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBd0QsU0FBZ0I7UUFDdEUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLENBQUMsRUFBRSxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTFDVSxhQUFhLGtCQXNDUSxzQkFBc0I7K0dBdEMzQyxhQUFhLGlCQWJULHNCQUFzQixFQUFFLG1CQUFtQixhQURoRCxzQkFBc0IsRUFBRSxtQkFBbUI7K0dBYzFDLGFBQWEsYUFaYjtZQUNULHFCQUFxQixDQUFDLEdBQUcsRUFBRTtnQkFDdkIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RFLE9BQU8sYUFBYSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDO1lBQ0o7Z0JBQ0UsT0FBTyxFQUFFLHVDQUF1QztnQkFDaEQsUUFBUSxFQUFFLG1DQUFtQztnQkFDN0MsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzsyRkFFVSxhQUFhO2tCQWhCekIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQztvQkFDdEQsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsbUJBQW1CLENBQUM7b0JBQzNELFNBQVMsRUFBRTt3QkFDVCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7NEJBQ3ZCLE1BQU0sYUFBYSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDOzRCQUN0RSxPQUFPLGFBQWEsRUFBRSxDQUFDO3dCQUN6QixDQUFDLENBQUM7d0JBQ0o7NEJBQ0UsT0FBTyxFQUFFLHVDQUF1Qzs0QkFDaEQsUUFBUSxFQUFFLG1DQUFtQzs0QkFDN0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OzBCQXVDYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBpbmplY3QsIHByb3ZpZGVBcHBJbml0aWFsaXplciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQX0VYUFJFU1NJT05fRVZBTFVBVE9SX1NDT1BFX1BST1ZJREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUEF1dGhTdHJhdGVneVJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vYXV0aC1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUEF1dGhTdHJhdGVneSB9IGZyb20gJy4vYXV0aC5zdHJhdGVneSc7XG5pbXBvcnQgeyBBWFBGZWF0dXJlRGlyZWN0aXZlIH0gZnJvbSAnLi9mZWF0dXJlJztcbmltcG9ydCB7IEFYUFBlcm1pc3Npb25EaXJlY3RpdmUgfSBmcm9tICcuL3Blcm1pc3Npb24vcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQVhQUGVybWlzc2lvbkV2YWx1YXRvclNjb3BlUHJvdmlkZXIgfSBmcm9tICcuL3Blcm1pc3Npb24vcGVybWlzc2lvbi1ldmFsdWF0b3Itc2NvcGUucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQXV0aE1vZHVsZUNvbmZpZ3Mge1xuICBzdHJhdGVnaWVzOiAobmV3ICgpID0+IEFYUEF1dGhTdHJhdGVneSlbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVBcHBTdGF0ZShzZXJ2aWNlOiBBWFBTZXNzaW9uU2VydmljZSkge1xuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBzZXJ2aWNlLnJlc3RvcmVTZXNzaW9uKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIGV4cG9ydHM6IFtBWFBQZXJtaXNzaW9uRGlyZWN0aXZlLCBBWFBGZWF0dXJlRGlyZWN0aXZlXSxcbiAgZGVjbGFyYXRpb25zOiBbQVhQUGVybWlzc2lvbkRpcmVjdGl2ZSwgQVhQRmVhdHVyZURpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHByb3ZpZGVBcHBJbml0aWFsaXplcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxpemVyRm4gPSAoaW5pdGlhbGl6ZUFwcFN0YXRlKShpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpKTtcbiAgICAgICAgcmV0dXJuIGluaXRpYWxpemVyRm4oKTtcbiAgICAgIH0pLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9FWFBSRVNTSU9OX0VWQUxVQVRPUl9TQ09QRV9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWFBQZXJtaXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUEF1dGhNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChjb25maWdzPzogQVhQQXV0aE1vZHVsZUNvbmZpZ3MpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYUEF1dGhNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYUEF1dGhNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLi4uKGNvbmZpZ3M/LnN0cmF0ZWdpZXMgfHwgW10pLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogJ0FYUEF1dGhNb2R1bGVGYWN0b3J5JyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiAocmVnaXN0cnk6IEFYUEF1dGhTdHJhdGVneVJlZ2lzdHJ5U2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoLi4uKGNvbmZpZ3M/LnN0cmF0ZWdpZXMgfHwgW10pKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtBWFBBdXRoU3RyYXRlZ3lSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZvckNoaWxkKGNvbmZpZ3M/OiBBWFBBdXRoTW9kdWxlQ29uZmlncyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhQQXV0aE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQVhQQXV0aE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAuLi4oY29uZmlncz8uc3RyYXRlZ2llcyB8fCBbXSksXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhQQXV0aE1vZHVsZUZhY3RvcnknLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhQQXV0aFN0cmF0ZWd5UmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICAgICAgICByZWdpc3RyeS5yZWdpc3RlciguLi4oY29uZmlncz8uc3RyYXRlZ2llcyB8fCBbXSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYUEF1dGhTdHJhdGVneVJlZ2lzdHJ5U2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdCgnQVhQQXV0aE1vZHVsZUZhY3RvcnknKSBpbnN0YW5jZXM6IGFueVtdKSB7XG4gICAgaW5zdGFuY2VzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBmKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWF1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2F1dGgvc3JjL2Fjb3JleC1wbGF0Zm9ybS1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|