@descope/angular-sdk 0.0.0-next-82470644-20240801 → 0.0.0-next-0e292820-20250415

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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +711 -11
  3. package/{esm2022 → dist/esm2022}/environment.mjs +2 -2
  4. package/dist/esm2022/lib/components/access-key-management/access-key-management.component.mjs +67 -0
  5. package/dist/esm2022/lib/components/applications-portal/applications-portal.component.mjs +75 -0
  6. package/dist/esm2022/lib/components/audit-management/audit-management.component.mjs +70 -0
  7. package/dist/esm2022/lib/components/descope/descope.component.mjs +191 -0
  8. package/dist/esm2022/lib/components/role-management/role-management.component.mjs +70 -0
  9. package/dist/esm2022/lib/components/sign-in-flow/sign-in-flow.component.mjs +56 -0
  10. package/dist/esm2022/lib/components/sign-up-flow/sign-up-flow.component.mjs +56 -0
  11. package/dist/esm2022/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.mjs +56 -0
  12. package/dist/esm2022/lib/components/user-management/user-management.component.mjs +70 -0
  13. package/dist/esm2022/lib/components/user-profile/user-profile.component.mjs +78 -0
  14. package/dist/esm2022/lib/descope-auth.module.mjs +83 -0
  15. package/{esm2022 → dist/esm2022}/lib/services/descope-auth.guard.mjs +1 -1
  16. package/dist/esm2022/lib/services/descope-auth.service.mjs +145 -0
  17. package/dist/esm2022/lib/services/descope.interceptor.mjs +51 -0
  18. package/dist/esm2022/lib/types/types.mjs +6 -0
  19. package/{esm2022 → dist/esm2022}/lib/utils/constants.mjs +1 -1
  20. package/dist/esm2022/lib/utils/helpers.mjs +27 -0
  21. package/{esm2022 → dist/esm2022}/public-api.mjs +2 -1
  22. package/{fesm2022 → dist/fesm2022}/descope-angular-sdk.mjs +263 -80
  23. package/dist/fesm2022/descope-angular-sdk.mjs.map +1 -0
  24. package/{lib → dist/lib}/components/access-key-management/access-key-management.component.d.ts +3 -1
  25. package/dist/lib/components/applications-portal/applications-portal.component.d.ts +24 -0
  26. package/{lib → dist/lib}/components/audit-management/audit-management.component.d.ts +3 -1
  27. package/{lib → dist/lib}/components/descope/descope.component.d.ts +8 -1
  28. package/{lib → dist/lib}/components/role-management/role-management.component.d.ts +3 -1
  29. package/{lib → dist/lib}/components/sign-in-flow/sign-in-flow.component.d.ts +7 -1
  30. package/{lib → dist/lib}/components/sign-up-flow/sign-up-flow.component.d.ts +7 -1
  31. package/{lib → dist/lib}/components/sign-up-or-in-flow/sign-up-or-in-flow.component.d.ts +7 -1
  32. package/{lib → dist/lib}/components/user-management/user-management.component.d.ts +3 -1
  33. package/{lib → dist/lib}/components/user-profile/user-profile.component.d.ts +6 -2
  34. package/{lib → dist/lib}/descope-auth.module.d.ts +2 -1
  35. package/{lib → dist/lib}/services/descope-auth.service.d.ts +7 -6
  36. package/{lib → dist/lib}/types/types.d.ts +3 -1
  37. package/{public-api.d.ts → dist/public-api.d.ts} +1 -0
  38. package/package.json +74 -25
  39. package/esm2022/lib/components/access-key-management/access-key-management.component.mjs +0 -61
  40. package/esm2022/lib/components/audit-management/audit-management.component.mjs +0 -61
  41. package/esm2022/lib/components/descope/descope.component.mjs +0 -156
  42. package/esm2022/lib/components/role-management/role-management.component.mjs +0 -61
  43. package/esm2022/lib/components/sign-in-flow/sign-in-flow.component.mjs +0 -44
  44. package/esm2022/lib/components/sign-up-flow/sign-up-flow.component.mjs +0 -44
  45. package/esm2022/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.mjs +0 -44
  46. package/esm2022/lib/components/user-management/user-management.component.mjs +0 -61
  47. package/esm2022/lib/components/user-profile/user-profile.component.mjs +0 -66
  48. package/esm2022/lib/descope-auth.module.mjs +0 -77
  49. package/esm2022/lib/services/descope-auth.service.mjs +0 -154
  50. package/esm2022/lib/services/descope.interceptor.mjs +0 -51
  51. package/esm2022/lib/types/types.mjs +0 -6
  52. package/esm2022/lib/utils/helpers.mjs +0 -27
  53. package/fesm2022/descope-angular-sdk.mjs.map +0 -1
  54. /package/{environment.d.ts → dist/environment.d.ts} +0 -0
  55. /package/{esm2022 → dist/esm2022}/descope-angular-sdk.mjs +0 -0
  56. /package/{index.d.ts → dist/index.d.ts} +0 -0
  57. /package/{lib → dist/lib}/services/descope-auth.guard.d.ts +0 -0
  58. /package/{lib → dist/lib}/services/descope.interceptor.d.ts +0 -0
  59. /package/{lib → dist/lib}/utils/constants.d.ts +0 -0
  60. /package/{lib → dist/lib}/utils/helpers.d.ts +0 -0
@@ -1,44 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { DescopeComponent } from '../descope/descope.component';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../types/types";
5
- export class SignUpOrInFlowComponent {
6
- constructor(descopeConfig) {
7
- this.success = new EventEmitter();
8
- this.error = new EventEmitter();
9
- this.projectId = descopeConfig.projectId;
10
- }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SignUpOrInFlowComponent, deps: [{ token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SignUpOrInFlowComponent, isStandalone: true, selector: "descope-sign-up-or-in-flow", inputs: { locale: "locale", theme: "theme", tenant: "tenant", telemetryKey: "telemetryKey", redirectUrl: "redirectUrl", autoFocus: "autoFocus", debug: "debug", errorTransformer: "errorTransformer", client: "client", form: "form", logger: "logger" }, outputs: { success: "success", error: "error" }, ngImport: i0, template: "<descope\n\t(success)=\"success.emit($event)\"\n\t(error)=\"error.emit($event)\"\n\tflowId=\"sign-up-or-in\"\n\t[locale]=\"locale\"\n\t[theme]=\"theme\"\n\t[tenant]=\"tenant\"\n\t[telemetryKey]=\"telemetryKey\"\n\t[redirectUrl]=\"redirectUrl\"\n\t[autoFocus]=\"autoFocus\"\n\t[debug]=\"debug\"\n\t[errorTransformer]=\"errorTransformer\"\n\t[client]=\"client\"\n\t[form]=\"form\"\n\t[logger]=\"logger\"\n>\n</descope>\n", dependencies: [{ kind: "component", type: DescopeComponent, selector: "descope[flowId]", inputs: ["flowId", "locale", "theme", "tenant", "telemetryKey", "redirectUrl", "autoFocus", "debug", "errorTransformer", "client", "form", "logger"], outputs: ["success", "error", "ready"] }] }); }
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SignUpOrInFlowComponent, decorators: [{
15
- type: Component,
16
- args: [{ selector: 'descope-sign-up-or-in-flow', standalone: true, imports: [DescopeComponent], template: "<descope\n\t(success)=\"success.emit($event)\"\n\t(error)=\"error.emit($event)\"\n\tflowId=\"sign-up-or-in\"\n\t[locale]=\"locale\"\n\t[theme]=\"theme\"\n\t[tenant]=\"tenant\"\n\t[telemetryKey]=\"telemetryKey\"\n\t[redirectUrl]=\"redirectUrl\"\n\t[autoFocus]=\"autoFocus\"\n\t[debug]=\"debug\"\n\t[errorTransformer]=\"errorTransformer\"\n\t[client]=\"client\"\n\t[form]=\"form\"\n\t[logger]=\"logger\"\n>\n</descope>\n" }]
17
- }], ctorParameters: function () { return [{ type: i1.DescopeAuthConfig }]; }, propDecorators: { locale: [{
18
- type: Input
19
- }], theme: [{
20
- type: Input
21
- }], tenant: [{
22
- type: Input
23
- }], telemetryKey: [{
24
- type: Input
25
- }], redirectUrl: [{
26
- type: Input
27
- }], autoFocus: [{
28
- type: Input
29
- }], debug: [{
30
- type: Input
31
- }], errorTransformer: [{
32
- type: Input
33
- }], client: [{
34
- type: Input
35
- }], form: [{
36
- type: Input
37
- }], logger: [{
38
- type: Input
39
- }], success: [{
40
- type: Output
41
- }], error: [{
42
- type: Output
43
- }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi11cC1vci1pbi1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLXVwLW9yLWluLWZsb3cvc2lnbi11cC1vci1pbi1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLXVwLW9yLWluLWZsb3cvc2lnbi11cC1vci1pbi1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVNoRSxNQUFNLE9BQU8sdUJBQXVCO0lBb0JuQyxZQUFZLGFBQWdDO1FBSmxDLFlBQU8sR0FDaEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUN2QixVQUFLLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFHNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQzFDLENBQUM7OEdBdEJXLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGlZQ1hwQyxvYUFpQkEsNENEVFcsZ0JBQWdCOzsyRkFHZCx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0MsNEJBQTRCLGNBQzFCLElBQUksV0FDUCxDQUFDLGdCQUFnQixDQUFDO3dHQU1sQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVDb21wb25lbnQgfSBmcm9tICcuLi9kZXNjb3BlL2Rlc2NvcGUuY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVBdXRoQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdkZXNjb3BlLXNpZ24tdXAtb3ItaW4tZmxvdycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtEZXNjb3BlQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3NpZ24tdXAtb3ItaW4tZmxvdy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2lnblVwT3JJbkZsb3dDb21wb25lbnQge1xuXHRwcm9qZWN0SWQ6IHN0cmluZztcblxuXHRASW5wdXQoKSBsb2NhbGU6IHN0cmluZztcblx0QElucHV0KCkgdGhlbWU6ICdsaWdodCcgfCAnZGFyaycgfCAnb3MnO1xuXHRASW5wdXQoKSB0ZW5hbnQ6IHN0cmluZztcblx0QElucHV0KCkgdGVsZW1ldHJ5S2V5OiBzdHJpbmc7XG5cdEBJbnB1dCgpIHJlZGlyZWN0VXJsOiBzdHJpbmc7XG5cdEBJbnB1dCgpIGF1dG9Gb2N1czogdHJ1ZSB8IGZhbHNlIHwgJ3NraXBGaXJzdFNjcmVlbic7XG5cblx0QElucHV0KCkgZGVidWc6IGJvb2xlYW47XG5cdEBJbnB1dCgpIGVycm9yVHJhbnNmb3JtZXI6IChlcnJvcjogeyB0ZXh0OiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9KSA9PiBzdHJpbmc7XG5cdEBJbnB1dCgpIGNsaWVudDogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0QElucHV0KCkgZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0QElucHV0KCkgbG9nZ2VyOiBJTG9nZ2VyO1xuXG5cdEBPdXRwdXQoKSBzdWNjZXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+ID1cblx0XHRuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PigpO1xuXHRAT3V0cHV0KCkgZXJyb3I6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PigpO1xuXG5cdGNvbnN0cnVjdG9yKGRlc2NvcGVDb25maWc6IERlc2NvcGVBdXRoQ29uZmlnKSB7XG5cdFx0dGhpcy5wcm9qZWN0SWQgPSBkZXNjb3BlQ29uZmlnLnByb2plY3RJZDtcblx0fVxufVxuIiwiPGRlc2NvcGVcblx0KHN1Y2Nlc3MpPVwic3VjY2Vzcy5lbWl0KCRldmVudClcIlxuXHQoZXJyb3IpPVwiZXJyb3IuZW1pdCgkZXZlbnQpXCJcblx0Zmxvd0lkPVwic2lnbi11cC1vci1pblwiXG5cdFtsb2NhbGVdPVwibG9jYWxlXCJcblx0W3RoZW1lXT1cInRoZW1lXCJcblx0W3RlbmFudF09XCJ0ZW5hbnRcIlxuXHRbdGVsZW1ldHJ5S2V5XT1cInRlbGVtZXRyeUtleVwiXG5cdFtyZWRpcmVjdFVybF09XCJyZWRpcmVjdFVybFwiXG5cdFthdXRvRm9jdXNdPVwiYXV0b0ZvY3VzXCJcblx0W2RlYnVnXT1cImRlYnVnXCJcblx0W2Vycm9yVHJhbnNmb3JtZXJdPVwiZXJyb3JUcmFuc2Zvcm1lclwiXG5cdFtjbGllbnRdPVwiY2xpZW50XCJcblx0W2Zvcm1dPVwiZm9ybVwiXG5cdFtsb2dnZXJdPVwibG9nZ2VyXCJcbj5cbjwvZGVzY29wZT5cbiJdfQ==
@@ -1,61 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import DescopeUserManagementWidget from '@descope/user-management-widget';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../types/types";
5
- export class UserManagementComponent {
6
- constructor(elementRef, descopeConfig) {
7
- this.elementRef = elementRef;
8
- this.webComponent = new DescopeUserManagementWidget();
9
- this.projectId = descopeConfig.projectId;
10
- this.baseUrl = descopeConfig.baseUrl;
11
- this.baseStaticUrl = descopeConfig.baseStaticUrl;
12
- }
13
- ngOnInit() {
14
- this.setupWebComponent();
15
- this.elementRef.nativeElement.appendChild(this.webComponent);
16
- }
17
- ngOnChanges() {
18
- this.setupWebComponent();
19
- }
20
- setupWebComponent() {
21
- this.webComponent.setAttribute('project-id', this.projectId);
22
- this.webComponent.setAttribute('tenant', this.tenant);
23
- this.webComponent.setAttribute('widget-id', this.widgetId);
24
- if (this.baseUrl) {
25
- this.webComponent.setAttribute('base-url', this.baseUrl);
26
- }
27
- if (this.baseStaticUrl) {
28
- this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);
29
- }
30
- if (this.theme) {
31
- this.webComponent.setAttribute('theme', this.theme);
32
- }
33
- if (this.debug) {
34
- this.webComponent.setAttribute('debug', this.debug.toString());
35
- }
36
- if (this.logger) {
37
- this.webComponent.logger = this.logger;
38
- }
39
- }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UserManagementComponent, deps: [{ token: i0.ElementRef }, { token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: UserManagementComponent, isStandalone: true, selector: "user-management[tenant]", inputs: { tenant: "tenant", widgetId: "widgetId", theme: "theme", debug: "debug", logger: "logger" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }
42
- }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UserManagementComponent, decorators: [{
44
- type: Component,
45
- args: [{
46
- selector: 'user-management[tenant]',
47
- standalone: true,
48
- template: ''
49
- }]
50
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DescopeAuthConfig }]; }, propDecorators: { tenant: [{
51
- type: Input
52
- }], widgetId: [{
53
- type: Input
54
- }], theme: [{
55
- type: Input
56
- }], debug: [{
57
- type: Input
58
- }], logger: [{
59
- type: Input
60
- }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy91c2VyLW1hbmFnZW1lbnQvdXNlci1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTywyQkFBMkIsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBUzFFLE1BQU0sT0FBTyx1QkFBdUI7SUFhbkMsWUFDUyxVQUFzQixFQUM5QixhQUFnQztRQUR4QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSGQsaUJBQVksR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUM7UUFNakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGlCQUFpQjtRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN6RDtRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEU7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMvRDtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxZQUFvQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ2hEO0lBQ0YsQ0FBQzs4R0FwRFcsdUJBQXVCO2tHQUF2Qix1QkFBdUIsOE1BRnpCLEVBQUU7OzJGQUVBLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLEVBQUU7aUJBQ1o7aUlBS1MsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IERlc2NvcGVVc2VyTWFuYWdlbWVudFdpZGdldCBmcm9tICdAZGVzY29wZS91c2VyLW1hbmFnZW1lbnQtd2lkZ2V0JztcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVBdXRoQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICd1c2VyLW1hbmFnZW1lbnRbdGVuYW50XScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyTWFuYWdlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblx0cHJvamVjdElkOiBzdHJpbmc7XG5cdGJhc2VVcmw/OiBzdHJpbmc7XG5cdGJhc2VTdGF0aWNVcmw/OiBzdHJpbmc7XG5cdEBJbnB1dCgpIHRlbmFudDogc3RyaW5nO1xuXHRASW5wdXQoKSB3aWRnZXRJZDogc3RyaW5nO1xuXG5cdEBJbnB1dCgpIHRoZW1lOiAnbGlnaHQnIHwgJ2RhcmsnIHwgJ29zJztcblx0QElucHV0KCkgZGVidWc6IGJvb2xlYW47XG5cdEBJbnB1dCgpIGxvZ2dlcjogSUxvZ2dlcjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IHdlYkNvbXBvbmVudCA9IG5ldyBEZXNjb3BlVXNlck1hbmFnZW1lbnRXaWRnZXQoKTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG5cdFx0ZGVzY29wZUNvbmZpZzogRGVzY29wZUF1dGhDb25maWdcblx0KSB7XG5cdFx0dGhpcy5wcm9qZWN0SWQgPSBkZXNjb3BlQ29uZmlnLnByb2plY3RJZDtcblx0XHR0aGlzLmJhc2VVcmwgPSBkZXNjb3BlQ29uZmlnLmJhc2VVcmw7XG5cdFx0dGhpcy5iYXNlU3RhdGljVXJsID0gZGVzY29wZUNvbmZpZy5iYXNlU3RhdGljVXJsO1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5zZXR1cFdlYkNvbXBvbmVudCgpO1xuXHRcdHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMud2ViQ29tcG9uZW50KTtcblx0fVxuXG5cdG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0dXBXZWJDb21wb25lbnQoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0dXBXZWJDb21wb25lbnQoKSB7XG5cdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKCdwcm9qZWN0LWlkJywgdGhpcy5wcm9qZWN0SWQpO1xuXHRcdHRoaXMud2ViQ29tcG9uZW50LnNldEF0dHJpYnV0ZSgndGVuYW50JywgdGhpcy50ZW5hbnQpO1xuXHRcdHRoaXMud2ViQ29tcG9uZW50LnNldEF0dHJpYnV0ZSgnd2lkZ2V0LWlkJywgdGhpcy53aWRnZXRJZCk7XG5cblx0XHRpZiAodGhpcy5iYXNlVXJsKSB7XG5cdFx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ2Jhc2UtdXJsJywgdGhpcy5iYXNlVXJsKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuYmFzZVN0YXRpY1VybCkge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKCdiYXNlLXN0YXRpYy11cmwnLCB0aGlzLmJhc2VTdGF0aWNVcmwpO1xuXHRcdH1cblx0XHRpZiAodGhpcy50aGVtZSkge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKCd0aGVtZScsIHRoaXMudGhlbWUpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5kZWJ1Zykge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKCdkZWJ1ZycsIHRoaXMuZGVidWcudG9TdHJpbmcoKSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubG9nZ2VyKSB7XG5cdFx0XHQodGhpcy53ZWJDb21wb25lbnQgYXMgYW55KS5sb2dnZXIgPSB0aGlzLmxvZ2dlcjtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
@@ -1,66 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import DescopeUserProfileWidget from '@descope/user-profile-widget';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../types/types";
5
- export class UserProfileComponent {
6
- constructor(elementRef, descopeConfig) {
7
- this.elementRef = elementRef;
8
- this.logout = new EventEmitter();
9
- this.webComponent = new DescopeUserProfileWidget();
10
- this.projectId = descopeConfig.projectId;
11
- this.baseUrl = descopeConfig.baseUrl;
12
- this.baseStaticUrl = descopeConfig.baseStaticUrl;
13
- }
14
- ngOnInit() {
15
- this.setupWebComponent();
16
- this.elementRef.nativeElement.appendChild(this.webComponent);
17
- }
18
- ngOnChanges() {
19
- this.setupWebComponent();
20
- }
21
- setupWebComponent() {
22
- this.webComponent.setAttribute('project-id', this.projectId);
23
- this.webComponent.setAttribute('widget-id', this.widgetId);
24
- if (this.baseUrl) {
25
- this.webComponent.setAttribute('base-url', this.baseUrl);
26
- }
27
- if (this.baseStaticUrl) {
28
- this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);
29
- }
30
- if (this.theme) {
31
- this.webComponent.setAttribute('theme', this.theme);
32
- }
33
- if (this.debug) {
34
- this.webComponent.setAttribute('debug', this.debug.toString());
35
- }
36
- if (this.logger) {
37
- this.webComponent.logger = this.logger;
38
- }
39
- if (this.logout) {
40
- this.webComponent.addEventListener('logout', (e) => {
41
- this.logout?.emit(e);
42
- });
43
- }
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UserProfileComponent, deps: [{ token: i0.ElementRef }, { token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: UserProfileComponent, isStandalone: true, selector: "user-profile", inputs: { widgetId: "widgetId", theme: "theme", debug: "debug", logger: "logger" }, outputs: { logout: "logout" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UserProfileComponent, decorators: [{
49
- type: Component,
50
- args: [{
51
- selector: 'user-profile',
52
- standalone: true,
53
- template: ''
54
- }]
55
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DescopeAuthConfig }]; }, propDecorators: { widgetId: [{
56
- type: Input
57
- }], theme: [{
58
- type: Input
59
- }], debug: [{
60
- type: Input
61
- }], logger: [{
62
- type: Input
63
- }], logout: [{
64
- type: Output
65
- }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXByb2ZpbGUvdXNlci1wcm9maWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sd0JBQXdCLE1BQU0sOEJBQThCLENBQUM7OztBQVNwRSxNQUFNLE9BQU8sb0JBQW9CO0lBY2hDLFlBQ1MsVUFBc0IsRUFDOUIsYUFBZ0M7UUFEeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxyQixXQUFNLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFFN0QsaUJBQVksR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFNOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGlCQUFpQjtRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDekQ7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3RFO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwRDtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsWUFBb0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNoRDtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQVEsRUFBRSxFQUFFO2dCQUN6RCxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFnQixDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7U0FDSDtJQUNGLENBQUM7OEdBekRXLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGdOQUZ0QixFQUFFOzsyRkFFQSxvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsRUFBRTtpQkFDWjtpSUFLUyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0RWxlbWVudFJlZixcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0T25DaGFuZ2VzLFxuXHRPbkluaXQsXG5cdE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBEZXNjb3BlVXNlclByb2ZpbGVXaWRnZXQgZnJvbSAnQGRlc2NvcGUvdXNlci1wcm9maWxlLXdpZGdldCc7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSAnQGRlc2NvcGUvd2ViLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZXNjb3BlQXV0aENvbmZpZyB9IGZyb20gJy4uLy4uL3R5cGVzL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAndXNlci1wcm9maWxlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJQcm9maWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXHRwcm9qZWN0SWQ6IHN0cmluZztcblx0YmFzZVVybD86IHN0cmluZztcblx0YmFzZVN0YXRpY1VybD86IHN0cmluZztcblx0QElucHV0KCkgd2lkZ2V0SWQ6IHN0cmluZztcblxuXHRASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyB8ICdvcyc7XG5cdEBJbnB1dCgpIGRlYnVnOiBib29sZWFuO1xuXHRASW5wdXQoKSBsb2dnZXI6IElMb2dnZXI7XG5cblx0QE91dHB1dCgpIGxvZ291dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+KCk7XG5cblx0cHJpdmF0ZSByZWFkb25seSB3ZWJDb21wb25lbnQgPSBuZXcgRGVzY29wZVVzZXJQcm9maWxlV2lkZ2V0KCk7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuXHRcdGRlc2NvcGVDb25maWc6IERlc2NvcGVBdXRoQ29uZmlnXG5cdCkge1xuXHRcdHRoaXMucHJvamVjdElkID0gZGVzY29wZUNvbmZpZy5wcm9qZWN0SWQ7XG5cdFx0dGhpcy5iYXNlVXJsID0gZGVzY29wZUNvbmZpZy5iYXNlVXJsO1xuXHRcdHRoaXMuYmFzZVN0YXRpY1VybCA9IGRlc2NvcGVDb25maWcuYmFzZVN0YXRpY1VybDtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuc2V0dXBXZWJDb21wb25lbnQoKTtcblx0XHR0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLndlYkNvbXBvbmVudCk7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcygpOiB2b2lkIHtcblx0XHR0aGlzLnNldHVwV2ViQ29tcG9uZW50KCk7XG5cdH1cblxuXHRwcml2YXRlIHNldHVwV2ViQ29tcG9uZW50KCkge1xuXHRcdHRoaXMud2ViQ29tcG9uZW50LnNldEF0dHJpYnV0ZSgncHJvamVjdC1pZCcsIHRoaXMucHJvamVjdElkKTtcblx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ3dpZGdldC1pZCcsIHRoaXMud2lkZ2V0SWQpO1xuXHRcdGlmICh0aGlzLmJhc2VVcmwpIHtcblx0XHRcdHRoaXMud2ViQ29tcG9uZW50LnNldEF0dHJpYnV0ZSgnYmFzZS11cmwnLCB0aGlzLmJhc2VVcmwpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5iYXNlU3RhdGljVXJsKSB7XG5cdFx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ2Jhc2Utc3RhdGljLXVybCcsIHRoaXMuYmFzZVN0YXRpY1VybCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnRoZW1lKSB7XG5cdFx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ3RoZW1lJywgdGhpcy50aGVtZSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmRlYnVnKSB7XG5cdFx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ2RlYnVnJywgdGhpcy5kZWJ1Zy50b1N0cmluZygpKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5sb2dnZXIpIHtcblx0XHRcdCh0aGlzLndlYkNvbXBvbmVudCBhcyBhbnkpLmxvZ2dlciA9IHRoaXMubG9nZ2VyO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmxvZ291dCkge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9nb3V0JywgKGU6IEV2ZW50KSA9PiB7XG5cdFx0XHRcdHRoaXMubG9nb3V0Py5lbWl0KGUgYXMgQ3VzdG9tRXZlbnQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=
@@ -1,77 +0,0 @@
1
- import { CUSTOM_ELEMENTS_SCHEMA, NgModule, Optional, SkipSelf } from '@angular/core';
2
- import { DescopeComponent } from './components/descope/descope.component';
3
- import { SignInFlowComponent } from './components/sign-in-flow/sign-in-flow.component';
4
- import { SignUpFlowComponent } from './components/sign-up-flow/sign-up-flow.component';
5
- import { SignUpOrInFlowComponent } from './components/sign-up-or-in-flow/sign-up-or-in-flow.component';
6
- import { UserManagementComponent } from './components/user-management/user-management.component';
7
- import { RoleManagementComponent } from './components/role-management/role-management.component';
8
- import { AccessKeyManagementComponent } from './components/access-key-management/access-key-management.component';
9
- import { AuditManagementComponent } from './components/audit-management/audit-management.component';
10
- import { UserProfileComponent } from './components/user-profile/user-profile.component';
11
- import { DescopeAuthConfig } from './types/types';
12
- import * as i0 from "@angular/core";
13
- export class DescopeAuthModule {
14
- constructor(parentModule) {
15
- if (parentModule) {
16
- throw new Error('DescopeAuthModule is already loaded. Import it only once');
17
- }
18
- }
19
- static forRoot(config) {
20
- return {
21
- ngModule: DescopeAuthModule,
22
- providers: [{ provide: DescopeAuthConfig, useValue: config }]
23
- };
24
- }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthModule, deps: [{ token: DescopeAuthModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
26
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthModule, imports: [DescopeComponent,
27
- SignInFlowComponent,
28
- SignUpFlowComponent,
29
- SignUpOrInFlowComponent,
30
- UserManagementComponent,
31
- RoleManagementComponent,
32
- AccessKeyManagementComponent,
33
- AuditManagementComponent,
34
- UserProfileComponent], exports: [DescopeComponent,
35
- SignInFlowComponent,
36
- SignUpFlowComponent,
37
- SignUpOrInFlowComponent,
38
- UserManagementComponent,
39
- RoleManagementComponent,
40
- AccessKeyManagementComponent,
41
- AuditManagementComponent,
42
- UserProfileComponent] }); }
43
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthModule }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthModule, decorators: [{
46
- type: NgModule,
47
- args: [{
48
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
49
- imports: [
50
- DescopeComponent,
51
- SignInFlowComponent,
52
- SignUpFlowComponent,
53
- SignUpOrInFlowComponent,
54
- UserManagementComponent,
55
- RoleManagementComponent,
56
- AccessKeyManagementComponent,
57
- AuditManagementComponent,
58
- UserProfileComponent
59
- ],
60
- exports: [
61
- DescopeComponent,
62
- SignInFlowComponent,
63
- SignUpFlowComponent,
64
- SignUpOrInFlowComponent,
65
- UserManagementComponent,
66
- RoleManagementComponent,
67
- AccessKeyManagementComponent,
68
- AuditManagementComponent,
69
- UserProfileComponent
70
- ]
71
- }]
72
- }], ctorParameters: function () { return [{ type: DescopeAuthModule, decorators: [{
73
- type: Optional
74
- }, {
75
- type: SkipSelf
76
- }] }]; } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS1hdXRoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvZGVzY29wZS1hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBRXRCLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2xILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUEyQmxELE1BQU0sT0FBTyxpQkFBaUI7SUFDN0IsWUFBb0MsWUFBZ0M7UUFDbkUsSUFBSSxZQUFZLEVBQUU7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FDZCwwREFBMEQsQ0FDMUQsQ0FBQztTQUNGO0lBQ0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQ2IsTUFBMEI7UUFFMUIsT0FBTztZQUNOLFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQzdELENBQUM7SUFDSCxDQUFDOzhHQWhCVyxpQkFBaUI7K0dBQWpCLGlCQUFpQixZQXRCNUIsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFDdkIsNEJBQTRCO1lBQzVCLHdCQUF3QjtZQUN4QixvQkFBb0IsYUFHcEIsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFDdkIsNEJBQTRCO1lBQzVCLHdCQUF3QjtZQUN4QixvQkFBb0I7K0dBR1QsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQXpCN0IsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsT0FBTyxFQUFFO3dCQUNSLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIsd0JBQXdCO3dCQUN4QixvQkFBb0I7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qiw0QkFBNEI7d0JBQzVCLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3FCQUNwQjtpQkFDRDs7MEJBRWEsUUFBUTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdE1vZHVsZVdpdGhQcm92aWRlcnMsXG5cdE5nTW9kdWxlLFxuXHRPcHRpb25hbCxcblx0U2tpcFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXNjb3BlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Rlc2NvcGUvZGVzY29wZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2lnbkluRmxvd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zaWduLWluLWZsb3cvc2lnbi1pbi1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaWduVXBGbG93Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NpZ24tdXAtZmxvdy9zaWduLXVwLWZsb3cuY29tcG9uZW50JztcbmltcG9ydCB7IFNpZ25VcE9ySW5GbG93Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NpZ24tdXAtb3ItaW4tZmxvdy9zaWduLXVwLW9yLWluLWZsb3cuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJNYW5hZ2VtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3VzZXItbWFuYWdlbWVudC91c2VyLW1hbmFnZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFJvbGVNYW5hZ2VtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JvbGUtbWFuYWdlbWVudC9yb2xlLW1hbmFnZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEFjY2Vzc0tleU1hbmFnZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWNjZXNzLWtleS1tYW5hZ2VtZW50L2FjY2Vzcy1rZXktbWFuYWdlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXVkaXRNYW5hZ2VtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2F1ZGl0LW1hbmFnZW1lbnQvYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlclByb2ZpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdXNlci1wcm9maWxlL3VzZXItcHJvZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVzY29wZUF1dGhDb25maWcgfSBmcm9tICcuL3R5cGVzL3R5cGVzJztcblxuQE5nTW9kdWxlKHtcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRpbXBvcnRzOiBbXG5cdFx0RGVzY29wZUNvbXBvbmVudCxcblx0XHRTaWduSW5GbG93Q29tcG9uZW50LFxuXHRcdFNpZ25VcEZsb3dDb21wb25lbnQsXG5cdFx0U2lnblVwT3JJbkZsb3dDb21wb25lbnQsXG5cdFx0VXNlck1hbmFnZW1lbnRDb21wb25lbnQsXG5cdFx0Um9sZU1hbmFnZW1lbnRDb21wb25lbnQsXG5cdFx0QWNjZXNzS2V5TWFuYWdlbWVudENvbXBvbmVudCxcblx0XHRBdWRpdE1hbmFnZW1lbnRDb21wb25lbnQsXG5cdFx0VXNlclByb2ZpbGVDb21wb25lbnRcblx0XSxcblx0ZXhwb3J0czogW1xuXHRcdERlc2NvcGVDb21wb25lbnQsXG5cdFx0U2lnbkluRmxvd0NvbXBvbmVudCxcblx0XHRTaWduVXBGbG93Q29tcG9uZW50LFxuXHRcdFNpZ25VcE9ySW5GbG93Q29tcG9uZW50LFxuXHRcdFVzZXJNYW5hZ2VtZW50Q29tcG9uZW50LFxuXHRcdFJvbGVNYW5hZ2VtZW50Q29tcG9uZW50LFxuXHRcdEFjY2Vzc0tleU1hbmFnZW1lbnRDb21wb25lbnQsXG5cdFx0QXVkaXRNYW5hZ2VtZW50Q29tcG9uZW50LFxuXHRcdFVzZXJQcm9maWxlQ29tcG9uZW50XG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgRGVzY29wZUF1dGhNb2R1bGUge1xuXHRjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnRNb2R1bGU/OiBEZXNjb3BlQXV0aE1vZHVsZSkge1xuXHRcdGlmIChwYXJlbnRNb2R1bGUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0J0Rlc2NvcGVBdXRoTW9kdWxlIGlzIGFscmVhZHkgbG9hZGVkLiBJbXBvcnQgaXQgb25seSBvbmNlJ1xuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgZm9yUm9vdChcblx0XHRjb25maWc/OiBEZXNjb3BlQXV0aENvbmZpZ1xuXHQpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPERlc2NvcGVBdXRoTW9kdWxlPiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5nTW9kdWxlOiBEZXNjb3BlQXV0aE1vZHVsZSxcblx0XHRcdHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGVzY29wZUF1dGhDb25maWcsIHVzZVZhbHVlOiBjb25maWcgfV1cblx0XHR9O1xuXHR9XG59XG4iXX0=
@@ -1,154 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import createSdk from '@descope/web-js-sdk';
3
- import { BehaviorSubject, finalize, tap } from 'rxjs';
4
- import { observabilify } from '../utils/helpers';
5
- import { baseHeaders, isBrowser } from '../utils/constants';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../types/types";
8
- export class DescopeAuthService {
9
- constructor(config) {
10
- this.descopeSdk = observabilify(createSdk({
11
- persistTokens: isBrowser(),
12
- ...config,
13
- storeLastAuthenticatedUser: isBrowser(),
14
- autoRefresh: isBrowser(),
15
- baseHeaders
16
- }));
17
- this.sessionSubject = new BehaviorSubject({
18
- isAuthenticated: false,
19
- isSessionLoading: false,
20
- sessionToken: ''
21
- });
22
- this.session$ = this.sessionSubject.asObservable();
23
- this.userSubject = new BehaviorSubject({
24
- isUserLoading: false
25
- });
26
- this.user$ = this.userSubject.asObservable();
27
- this.descopeSdk.onSessionTokenChange(this.setSession.bind(this));
28
- this.descopeSdk.onUserChange(this.setUser.bind(this));
29
- }
30
- refreshSession() {
31
- const beforeRefreshSession = this.sessionSubject.value;
32
- this.sessionSubject.next({
33
- ...beforeRefreshSession,
34
- isSessionLoading: true
35
- });
36
- return this.descopeSdk.refresh().pipe(tap((data) => {
37
- const afterRequestSession = this.sessionSubject.value;
38
- if (data.ok && data.data) {
39
- this.sessionSubject.next({
40
- ...afterRequestSession,
41
- sessionToken: data.data.sessionJwt,
42
- isAuthenticated: !!data.data.sessionJwt
43
- });
44
- }
45
- else {
46
- this.sessionSubject.next({
47
- ...afterRequestSession,
48
- sessionToken: '',
49
- isAuthenticated: false
50
- });
51
- }
52
- }), finalize(() => {
53
- const afterRefreshSession = this.sessionSubject.value;
54
- this.sessionSubject.next({
55
- ...afterRefreshSession,
56
- isSessionLoading: false
57
- });
58
- }));
59
- }
60
- refreshUser() {
61
- const beforeRefreshUser = this.userSubject.value;
62
- this.userSubject.next({
63
- ...beforeRefreshUser,
64
- isUserLoading: true
65
- });
66
- return this.descopeSdk.me().pipe(tap((data) => {
67
- const afterRequestUser = this.userSubject.value;
68
- if (data.data) {
69
- this.userSubject.next({
70
- ...afterRequestUser,
71
- user: {
72
- ...data.data
73
- }
74
- });
75
- }
76
- }), finalize(() => {
77
- const afterRefreshUser = this.userSubject.value;
78
- this.userSubject.next({
79
- ...afterRefreshUser,
80
- isUserLoading: false
81
- });
82
- }));
83
- }
84
- getSessionToken() {
85
- if (isBrowser()) {
86
- return this.descopeSdk.getSessionToken();
87
- }
88
- console.warn('Get session token is not supported in SSR');
89
- return '';
90
- }
91
- getRefreshToken() {
92
- if (isBrowser()) {
93
- return this.descopeSdk.getRefreshToken();
94
- }
95
- this.descopeSdk.getJwtPermissions;
96
- console.warn('Get refresh token is not supported in SSR');
97
- return '';
98
- }
99
- isSessionTokenExpired(token = this.getSessionToken()) {
100
- if (isBrowser()) {
101
- return this.descopeSdk.isJwtExpired(token ?? '');
102
- }
103
- console.warn('isSessionTokenExpired is not supported in SSR');
104
- return true;
105
- }
106
- isRefreshTokenExpired(token = this.getRefreshToken()) {
107
- if (isBrowser()) {
108
- return this.descopeSdk.isJwtExpired(token ?? '');
109
- }
110
- console.warn('isRefreshTokenExpired is not supported in SSR');
111
- return true;
112
- }
113
- getJwtPermissions(token = this.getSessionToken(), tenant) {
114
- if (token === null) {
115
- console.error('Could not get JWT Permissions - not authenticated');
116
- return [];
117
- }
118
- return this.descopeSdk.getJwtPermissions(token, tenant);
119
- }
120
- getJwtRoles(token = this.getSessionToken(), tenant) {
121
- if (token === null) {
122
- console.error('Could not get JWT Roles - not authenticated');
123
- return [];
124
- }
125
- return this.descopeSdk.getJwtRoles(token, tenant);
126
- }
127
- isAuthenticated() {
128
- return this.sessionSubject.value.isAuthenticated;
129
- }
130
- setSession(sessionToken) {
131
- const currentSession = this.sessionSubject.value;
132
- this.sessionSubject.next({
133
- sessionToken,
134
- isAuthenticated: !!sessionToken,
135
- isSessionLoading: currentSession.isSessionLoading
136
- });
137
- }
138
- setUser(user) {
139
- const currentUser = this.userSubject.value;
140
- this.userSubject.next({
141
- isUserLoading: currentUser.isUserLoading,
142
- user
143
- });
144
- }
145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthService, deps: [{ token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
146
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthService, providedIn: 'root' }); }
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeAuthService, decorators: [{
149
- type: Injectable,
150
- args: [{
151
- providedIn: 'root'
152
- }]
153
- }], ctorParameters: function () { return [{ type: i1.DescopeAuthConfig }]; } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS1hdXRoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvbGliL3NlcnZpY2VzL2Rlc2NvcGUtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQWtCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBaUI1RCxNQUFNLE9BQU8sa0JBQWtCO0lBTzlCLFlBQVksTUFBeUI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQzlCLFNBQVMsQ0FBQztZQUNULGFBQWEsRUFBRSxTQUFTLEVBQVU7WUFDbEMsR0FBRyxNQUFNO1lBQ1QsMEJBQTBCLEVBQUUsU0FBUyxFQUFVO1lBQy9DLFdBQVcsRUFBRSxTQUFTLEVBQVU7WUFDaEMsV0FBVztTQUNYLENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBaUI7WUFDekQsZUFBZSxFQUFFLEtBQUs7WUFDdEIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixZQUFZLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBYztZQUNuRCxhQUFhLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGNBQWM7UUFDYixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3hCLEdBQUcsb0JBQW9CO1lBQ3ZCLGdCQUFnQixFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FDcEMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQ3RELElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztvQkFDeEIsR0FBRyxtQkFBbUI7b0JBQ3RCLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7b0JBQ2xDLGVBQWUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO2lCQUN2QyxDQUFDLENBQUM7YUFDSDtpQkFBTTtnQkFDTixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztvQkFDeEIsR0FBRyxtQkFBbUI7b0JBQ3RCLFlBQVksRUFBRSxFQUFFO29CQUNoQixlQUFlLEVBQUUsS0FBSztpQkFDdEIsQ0FBQyxDQUFDO2FBQ0g7UUFDRixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztZQUN0RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDeEIsR0FBRyxtQkFBbUI7Z0JBQ3RCLGdCQUFnQixFQUFFLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1YsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNyQixHQUFHLGlCQUFpQjtZQUNwQixhQUFhLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUMvQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNaLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDaEQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNyQixHQUFHLGdCQUFnQjtvQkFDbkIsSUFBSSxFQUFFO3dCQUNMLEdBQUcsSUFBSSxDQUFDLElBQUk7cUJBQ1o7aUJBQ0QsQ0FBQyxDQUFDO2FBQ0g7UUFDRixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDckIsR0FBRyxnQkFBZ0I7Z0JBQ25CLGFBQWEsRUFBRSxLQUFLO2FBQ3BCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNkLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDaEIsT0FDQyxJQUFJLENBQUMsVUFHTCxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQzFELE9BQU8sRUFBRSxDQUFDO0lBQ1gsQ0FBQztJQUVELGVBQWU7UUFDZCxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ2hCLE9BQ0MsSUFBSSxDQUFDLFVBR0wsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7UUFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQzFELE9BQU8sRUFBRSxDQUFDO0lBQ1gsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFO1FBQ25ELElBQUksU0FBUyxFQUFFLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7U0FDakQ7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDbkQsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUNoQixPQUNDLElBQUksQ0FBQyxVQUdMLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQWU7UUFDaEUsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztZQUNuRSxPQUFPLEVBQUUsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsTUFBZTtRQUMxRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBQzdELE9BQU8sRUFBRSxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsZUFBZTtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ2xELENBQUM7SUFFTyxVQUFVLENBQUMsWUFBMkI7UUFDN0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDeEIsWUFBWTtZQUNaLGVBQWUsRUFBRSxDQUFDLENBQUMsWUFBWTtZQUMvQixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsZ0JBQWdCO1NBQ2pELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBa0I7UUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDckIsYUFBYSxFQUFFLFdBQVcsQ0FBQyxhQUFhO1lBQ3hDLElBQUk7U0FDSixDQUFDLENBQUM7SUFDSixDQUFDOzhHQTdLVyxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQUZsQixNQUFNOzsyRkFFTixrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdAZGVzY29wZS93ZWItanMtc2RrJztcbmltcG9ydCBjcmVhdGVTZGsgZnJvbSAnQGRlc2NvcGUvd2ViLWpzLXNkayc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbmFsaXplLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG9ic2VydmFiaWxpZnksIE9ic2VydmFibGVmaWVkIH0gZnJvbSAnLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBiYXNlSGVhZGVycywgaXNCcm93c2VyIH0gZnJvbSAnLi4vdXRpbHMvY29uc3RhbnRzJztcbmltcG9ydCB7IERlc2NvcGVBdXRoQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuXG50eXBlIERlc2NvcGVTREsgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVTZGs+O1xudHlwZSBBbmd1bGFyRGVzY29wZVNESyA9IE9ic2VydmFibGVmaWVkPERlc2NvcGVTREs+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NvcGVTZXNzaW9uIHtcblx0aXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xuXHRpc1Nlc3Npb25Mb2FkaW5nOiBib29sZWFuO1xuXHRzZXNzaW9uVG9rZW46IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIERlc2NvcGVVc2VyID0geyB1c2VyPzogVXNlclJlc3BvbnNlOyBpc1VzZXJMb2FkaW5nOiBib29sZWFuIH07XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERlc2NvcGVBdXRoU2VydmljZSB7XG5cdHB1YmxpYyBkZXNjb3BlU2RrOiBBbmd1bGFyRGVzY29wZVNESztcblx0cHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PERlc2NvcGVTZXNzaW9uPjtcblx0cHJpdmF0ZSByZWFkb25seSB1c2VyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PERlc2NvcGVVc2VyPjtcblx0cmVhZG9ubHkgc2Vzc2lvbiQ6IE9ic2VydmFibGU8RGVzY29wZVNlc3Npb24+O1xuXHRyZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxEZXNjb3BlVXNlcj47XG5cblx0Y29uc3RydWN0b3IoY29uZmlnOiBEZXNjb3BlQXV0aENvbmZpZykge1xuXHRcdHRoaXMuZGVzY29wZVNkayA9IG9ic2VydmFiaWxpZnk8RGVzY29wZVNESz4oXG5cdFx0XHRjcmVhdGVTZGsoe1xuXHRcdFx0XHRwZXJzaXN0VG9rZW5zOiBpc0Jyb3dzZXIoKSBhcyB0cnVlLFxuXHRcdFx0XHQuLi5jb25maWcsXG5cdFx0XHRcdHN0b3JlTGFzdEF1dGhlbnRpY2F0ZWRVc2VyOiBpc0Jyb3dzZXIoKSBhcyB0cnVlLFxuXHRcdFx0XHRhdXRvUmVmcmVzaDogaXNCcm93c2VyKCkgYXMgdHJ1ZSxcblx0XHRcdFx0YmFzZUhlYWRlcnNcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHRoaXMuc2Vzc2lvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERlc2NvcGVTZXNzaW9uPih7XG5cdFx0XHRpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxuXHRcdFx0aXNTZXNzaW9uTG9hZGluZzogZmFsc2UsXG5cdFx0XHRzZXNzaW9uVG9rZW46ICcnXG5cdFx0fSk7XG5cdFx0dGhpcy5zZXNzaW9uJCA9IHRoaXMuc2Vzc2lvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy51c2VyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGVzY29wZVVzZXI+KHtcblx0XHRcdGlzVXNlckxvYWRpbmc6IGZhbHNlXG5cdFx0fSk7XG5cdFx0dGhpcy51c2VyJCA9IHRoaXMudXNlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy5kZXNjb3BlU2RrLm9uU2Vzc2lvblRva2VuQ2hhbmdlKHRoaXMuc2V0U2Vzc2lvbi5iaW5kKHRoaXMpKTtcblx0XHR0aGlzLmRlc2NvcGVTZGsub25Vc2VyQ2hhbmdlKHRoaXMuc2V0VXNlci5iaW5kKHRoaXMpKTtcblx0fVxuXG5cdHJlZnJlc2hTZXNzaW9uKCkge1xuXHRcdGNvbnN0IGJlZm9yZVJlZnJlc2hTZXNzaW9uID0gdGhpcy5zZXNzaW9uU3ViamVjdC52YWx1ZTtcblx0XHR0aGlzLnNlc3Npb25TdWJqZWN0Lm5leHQoe1xuXHRcdFx0Li4uYmVmb3JlUmVmcmVzaFNlc3Npb24sXG5cdFx0XHRpc1Nlc3Npb25Mb2FkaW5nOiB0cnVlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5yZWZyZXNoKCkucGlwZShcblx0XHRcdHRhcCgoZGF0YSkgPT4ge1xuXHRcdFx0XHRjb25zdCBhZnRlclJlcXVlc3RTZXNzaW9uID0gdGhpcy5zZXNzaW9uU3ViamVjdC52YWx1ZTtcblx0XHRcdFx0aWYgKGRhdGEub2sgJiYgZGF0YS5kYXRhKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXNzaW9uU3ViamVjdC5uZXh0KHtcblx0XHRcdFx0XHRcdC4uLmFmdGVyUmVxdWVzdFNlc3Npb24sXG5cdFx0XHRcdFx0XHRzZXNzaW9uVG9rZW46IGRhdGEuZGF0YS5zZXNzaW9uSnd0LFxuXHRcdFx0XHRcdFx0aXNBdXRoZW50aWNhdGVkOiAhIWRhdGEuZGF0YS5zZXNzaW9uSnd0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5zZXNzaW9uU3ViamVjdC5uZXh0KHtcblx0XHRcdFx0XHRcdC4uLmFmdGVyUmVxdWVzdFNlc3Npb24sXG5cdFx0XHRcdFx0XHRzZXNzaW9uVG9rZW46ICcnLFxuXHRcdFx0XHRcdFx0aXNBdXRoZW50aWNhdGVkOiBmYWxzZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcblx0XHRcdFx0Y29uc3QgYWZ0ZXJSZWZyZXNoU2Vzc2lvbiA9IHRoaXMuc2Vzc2lvblN1YmplY3QudmFsdWU7XG5cdFx0XHRcdHRoaXMuc2Vzc2lvblN1YmplY3QubmV4dCh7XG5cdFx0XHRcdFx0Li4uYWZ0ZXJSZWZyZXNoU2Vzc2lvbixcblx0XHRcdFx0XHRpc1Nlc3Npb25Mb2FkaW5nOiBmYWxzZVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdHJlZnJlc2hVc2VyKCkge1xuXHRcdGNvbnN0IGJlZm9yZVJlZnJlc2hVc2VyID0gdGhpcy51c2VyU3ViamVjdC52YWx1ZTtcblx0XHR0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuXHRcdFx0Li4uYmVmb3JlUmVmcmVzaFVzZXIsXG5cdFx0XHRpc1VzZXJMb2FkaW5nOiB0cnVlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5tZSgpLnBpcGUoXG5cdFx0XHR0YXAoKGRhdGEpID0+IHtcblx0XHRcdFx0Y29uc3QgYWZ0ZXJSZXF1ZXN0VXNlciA9IHRoaXMudXNlclN1YmplY3QudmFsdWU7XG5cdFx0XHRcdGlmIChkYXRhLmRhdGEpIHtcblx0XHRcdFx0XHR0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuXHRcdFx0XHRcdFx0Li4uYWZ0ZXJSZXF1ZXN0VXNlcixcblx0XHRcdFx0XHRcdHVzZXI6IHtcblx0XHRcdFx0XHRcdFx0Li4uZGF0YS5kYXRhXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBhZnRlclJlZnJlc2hVc2VyID0gdGhpcy51c2VyU3ViamVjdC52YWx1ZTtcblx0XHRcdFx0dGhpcy51c2VyU3ViamVjdC5uZXh0KHtcblx0XHRcdFx0XHQuLi5hZnRlclJlZnJlc2hVc2VyLFxuXHRcdFx0XHRcdGlzVXNlckxvYWRpbmc6IGZhbHNlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cblx0Z2V0U2Vzc2lvblRva2VuKCkge1xuXHRcdGlmIChpc0Jyb3dzZXIoKSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGhpcy5kZXNjb3BlU2RrIGFzIEFuZ3VsYXJEZXNjb3BlU0RLICYge1xuXHRcdFx0XHRcdGdldFNlc3Npb25Ub2tlbjogKCkgPT4gc3RyaW5nIHwgbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0KS5nZXRTZXNzaW9uVG9rZW4oKTtcblx0XHR9XG5cdFx0Y29uc29sZS53YXJuKCdHZXQgc2Vzc2lvbiB0b2tlbiBpcyBub3Qgc3VwcG9ydGVkIGluIFNTUicpO1xuXHRcdHJldHVybiAnJztcblx0fVxuXG5cdGdldFJlZnJlc2hUb2tlbigpIHtcblx0XHRpZiAoaXNCcm93c2VyKCkpIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHRoaXMuZGVzY29wZVNkayBhcyBBbmd1bGFyRGVzY29wZVNESyAmIHtcblx0XHRcdFx0XHRnZXRSZWZyZXNoVG9rZW46ICgpID0+IHN0cmluZyB8IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdCkuZ2V0UmVmcmVzaFRva2VuKCk7XG5cdFx0fVxuXHRcdHRoaXMuZGVzY29wZVNkay5nZXRKd3RQZXJtaXNzaW9ucztcblx0XHRjb25zb2xlLndhcm4oJ0dldCByZWZyZXNoIHRva2VuIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU1NSJyk7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cblx0aXNTZXNzaW9uVG9rZW5FeHBpcmVkKHRva2VuID0gdGhpcy5nZXRTZXNzaW9uVG9rZW4oKSkge1xuXHRcdGlmIChpc0Jyb3dzZXIoKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5pc0p3dEV4cGlyZWQodG9rZW4gPz8gJycpO1xuXHRcdH1cblx0XHRjb25zb2xlLndhcm4oJ2lzU2Vzc2lvblRva2VuRXhwaXJlZCBpcyBub3Qgc3VwcG9ydGVkIGluIFNTUicpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0aXNSZWZyZXNoVG9rZW5FeHBpcmVkKHRva2VuID0gdGhpcy5nZXRSZWZyZXNoVG9rZW4oKSkge1xuXHRcdGlmIChpc0Jyb3dzZXIoKSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGhpcy5kZXNjb3BlU2RrIGFzIEFuZ3VsYXJEZXNjb3BlU0RLICYge1xuXHRcdFx0XHRcdGlzSnd0RXhwaXJlZDogKHRva2VuOiBzdHJpbmcpID0+IGJvb2xlYW4gfCBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHQpLmlzSnd0RXhwaXJlZCh0b2tlbiA/PyAnJyk7XG5cdFx0fVxuXHRcdGNvbnNvbGUud2FybignaXNSZWZyZXNoVG9rZW5FeHBpcmVkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU1NSJyk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRnZXRKd3RQZXJtaXNzaW9ucyh0b2tlbiA9IHRoaXMuZ2V0U2Vzc2lvblRva2VuKCksIHRlbmFudD86IHN0cmluZykge1xuXHRcdGlmICh0b2tlbiA9PT0gbnVsbCkge1xuXHRcdFx0Y29uc29sZS5lcnJvcignQ291bGQgbm90IGdldCBKV1QgUGVybWlzc2lvbnMgLSBub3QgYXV0aGVudGljYXRlZCcpO1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5kZXNjb3BlU2RrLmdldEp3dFBlcm1pc3Npb25zKHRva2VuLCB0ZW5hbnQpO1xuXHR9XG5cblx0Z2V0Snd0Um9sZXModG9rZW4gPSB0aGlzLmdldFNlc3Npb25Ub2tlbigpLCB0ZW5hbnQ/OiBzdHJpbmcpIHtcblx0XHRpZiAodG9rZW4gPT09IG51bGwpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBnZXQgSldUIFJvbGVzIC0gbm90IGF1dGhlbnRpY2F0ZWQnKTtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5nZXRKd3RSb2xlcyh0b2tlbiwgdGVuYW50KTtcblx0fVxuXG5cdGlzQXV0aGVudGljYXRlZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5zZXNzaW9uU3ViamVjdC52YWx1ZS5pc0F1dGhlbnRpY2F0ZWQ7XG5cdH1cblxuXHRwcml2YXRlIHNldFNlc3Npb24oc2Vzc2lvblRva2VuOiBzdHJpbmcgfCBudWxsKSB7XG5cdFx0Y29uc3QgY3VycmVudFNlc3Npb24gPSB0aGlzLnNlc3Npb25TdWJqZWN0LnZhbHVlO1xuXHRcdHRoaXMuc2Vzc2lvblN1YmplY3QubmV4dCh7XG5cdFx0XHRzZXNzaW9uVG9rZW4sXG5cdFx0XHRpc0F1dGhlbnRpY2F0ZWQ6ICEhc2Vzc2lvblRva2VuLFxuXHRcdFx0aXNTZXNzaW9uTG9hZGluZzogY3VycmVudFNlc3Npb24uaXNTZXNzaW9uTG9hZGluZ1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRVc2VyKHVzZXI6IFVzZXJSZXNwb25zZSkge1xuXHRcdGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy51c2VyU3ViamVjdC52YWx1ZTtcblx0XHR0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuXHRcdFx0aXNVc2VyTG9hZGluZzogY3VycmVudFVzZXIuaXNVc2VyTG9hZGluZyxcblx0XHRcdHVzZXJcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,51 +0,0 @@
1
- import { inject } from '@angular/core';
2
- import { throwError } from 'rxjs';
3
- import { catchError, switchMap } from 'rxjs/operators';
4
- import { DescopeAuthService } from './descope-auth.service';
5
- import { DescopeAuthConfig } from '../types/types';
6
- export const descopeInterceptor = (request, next) => {
7
- const config = inject(DescopeAuthConfig);
8
- const authService = inject(DescopeAuthService);
9
- function refreshAndRetry(request, next, error) {
10
- return authService.refreshSession().pipe(switchMap((refreshed) => {
11
- if (refreshed.ok && refreshed.data) {
12
- const requestWithRefreshedToken = addTokenToRequest(request, refreshed.data?.sessionJwt);
13
- return next(requestWithRefreshedToken);
14
- }
15
- else {
16
- return throwError(() => error ?? new Error('Could not refresh session!'));
17
- }
18
- }));
19
- }
20
- function shouldIntercept(request) {
21
- return ((config.pathsToIntercept?.length === 0 ||
22
- config.pathsToIntercept?.some((path) => request.url.includes(path))) ??
23
- true);
24
- }
25
- function addTokenToRequest(request, token) {
26
- return request.clone({
27
- setHeaders: {
28
- Authorization: `Bearer ${token}`
29
- }
30
- });
31
- }
32
- if (shouldIntercept(request)) {
33
- const token = authService.getSessionToken();
34
- if (!token) {
35
- return refreshAndRetry(request, next);
36
- }
37
- const requestWithToken = addTokenToRequest(request, token);
38
- return next(requestWithToken).pipe(catchError((error) => {
39
- if (error.status === 401 || error.status === 403) {
40
- return refreshAndRetry(request, next, error);
41
- }
42
- else {
43
- return throwError(() => error);
44
- }
45
- }));
46
- }
47
- else {
48
- return next(request);
49
- }
50
- };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvc2VydmljZXMvZGVzY29wZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBc0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFL0MsU0FBUyxlQUFlLENBQ3ZCLE9BQTZCLEVBQzdCLElBQW1CLEVBQ25CLEtBQXlCO1FBRXpCLE9BQU8sV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FDdkMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxTQUFTLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ25DLE1BQU0seUJBQXlCLEdBQUcsaUJBQWlCLENBQ2xELE9BQU8sRUFDUCxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FDMUIsQ0FBQztnQkFDRixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNOLE9BQU8sVUFBVSxDQUNoQixHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FDdEQsQ0FBQzthQUNGO1FBQ0YsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLGVBQWUsQ0FBQyxPQUE2QjtRQUNyRCxPQUFPLENBQ04sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxLQUFLLENBQUM7WUFDckMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUN6QixPQUE2QixFQUM3QixLQUFhO1FBRWIsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3BCLFVBQVUsRUFBRTtnQkFDWCxhQUFhLEVBQUUsVUFBVSxLQUFLLEVBQUU7YUFDaEM7U0FDRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDN0IsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWCxPQUFPLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEM7UUFDRCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDakMsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3ZDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQ2pELE9BQU8sZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDN0M7aUJBQU07Z0JBQ04sT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDL0I7UUFDRixDQUFDLENBQUMsQ0FDRixDQUFDO0tBQ0Y7U0FBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3JCO0FBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRIdHRwRXJyb3JSZXNwb25zZSxcblx0SHR0cEhhbmRsZXJGbixcblx0SHR0cEludGVyY2VwdG9yRm4sXG5cdEh0dHBSZXF1ZXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERlc2NvcGVBdXRoU2VydmljZSB9IGZyb20gJy4vZGVzY29wZS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVzY29wZUF1dGhDb25maWcgfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkZXNjb3BlSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcXVlc3QsIG5leHQpID0+IHtcblx0Y29uc3QgY29uZmlnID0gaW5qZWN0KERlc2NvcGVBdXRoQ29uZmlnKTtcblx0Y29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoRGVzY29wZUF1dGhTZXJ2aWNlKTtcblxuXHRmdW5jdGlvbiByZWZyZXNoQW5kUmV0cnkoXG5cdFx0cmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG5cdFx0bmV4dDogSHR0cEhhbmRsZXJGbixcblx0XHRlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlXG5cdCkge1xuXHRcdHJldHVybiBhdXRoU2VydmljZS5yZWZyZXNoU2Vzc2lvbigpLnBpcGUoXG5cdFx0XHRzd2l0Y2hNYXAoKHJlZnJlc2hlZCkgPT4ge1xuXHRcdFx0XHRpZiAocmVmcmVzaGVkLm9rICYmIHJlZnJlc2hlZC5kYXRhKSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVxdWVzdFdpdGhSZWZyZXNoZWRUb2tlbiA9IGFkZFRva2VuVG9SZXF1ZXN0KFxuXHRcdFx0XHRcdFx0cmVxdWVzdCxcblx0XHRcdFx0XHRcdHJlZnJlc2hlZC5kYXRhPy5zZXNzaW9uSnd0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gbmV4dChyZXF1ZXN0V2l0aFJlZnJlc2hlZFRva2VuKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhyb3dFcnJvcihcblx0XHRcdFx0XHRcdCgpID0+IGVycm9yID8/IG5ldyBFcnJvcignQ291bGQgbm90IHJlZnJlc2ggc2Vzc2lvbiEnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdGZ1bmN0aW9uIHNob3VsZEludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAoXG5cdFx0XHQoY29uZmlnLnBhdGhzVG9JbnRlcmNlcHQ/Lmxlbmd0aCA9PT0gMCB8fFxuXHRcdFx0XHRjb25maWcucGF0aHNUb0ludGVyY2VwdD8uc29tZSgocGF0aCkgPT4gcmVxdWVzdC51cmwuaW5jbHVkZXMocGF0aCkpKSA/P1xuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblxuXHRmdW5jdGlvbiBhZGRUb2tlblRvUmVxdWVzdChcblx0XHRyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPixcblx0XHR0b2tlbjogc3RyaW5nXG5cdCk6IEh0dHBSZXF1ZXN0PHVua25vd24+IHtcblx0XHRyZXR1cm4gcmVxdWVzdC5jbG9uZSh7XG5cdFx0XHRzZXRIZWFkZXJzOiB7XG5cdFx0XHRcdEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gXG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QpKSB7XG5cdFx0Y29uc3QgdG9rZW4gPSBhdXRoU2VydmljZS5nZXRTZXNzaW9uVG9rZW4oKTtcblx0XHRpZiAoIXRva2VuKSB7XG5cdFx0XHRyZXR1cm4gcmVmcmVzaEFuZFJldHJ5KHJlcXVlc3QsIG5leHQpO1xuXHRcdH1cblx0XHRjb25zdCByZXF1ZXN0V2l0aFRva2VuID0gYWRkVG9rZW5Ub1JlcXVlc3QocmVxdWVzdCwgdG9rZW4pO1xuXHRcdHJldHVybiBuZXh0KHJlcXVlc3RXaXRoVG9rZW4pLnBpcGUoXG5cdFx0XHRjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcblx0XHRcdFx0aWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxIHx8IGVycm9yLnN0YXR1cyA9PT0gNDAzKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlZnJlc2hBbmRSZXRyeShyZXF1ZXN0LCBuZXh0LCBlcnJvcik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG5leHQocmVxdWVzdCk7XG5cdH1cbn07XG4iXX0=
@@ -1,6 +0,0 @@
1
- export class DescopeAuthConfig {
2
- constructor() {
3
- this.projectId = '';
4
- }
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvbGliL3R5cGVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDQyxjQUFTLEdBQUcsRUFBRSxDQUFDO0lBU2hCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMb2dnZXIgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcblxuZXhwb3J0IGNsYXNzIERlc2NvcGVBdXRoQ29uZmlnIHtcblx0cHJvamVjdElkID0gJyc7XG5cdGJhc2VVcmw/OiBzdHJpbmc7XG5cdGJhc2VTdGF0aWNVcmw/OiBzdHJpbmc7XG5cdC8vIElmIHRydWUsIHRva2VucyB3aWxsIGJlIHN0b3JlZCBvbiBsb2NhbCBzdG9yYWdlXG5cdHBlcnNpc3RUb2tlbnM/OiBib29sZWFuO1xuXHRzZXNzaW9uVG9rZW5WaWFDb29raWU/OiBib29sZWFuO1xuXHQvLyBJZiB0cnVlLCBsYXN0IGF1dGhlbnRpY2F0ZWQgdXNlciB3aWxsIGJlIHN0b3JlZCBvbiBsb2NhbCBzdG9yYWdlIGFuZCBjYW4gYWNjZXNzZWQgd2l0aCBnZXRVc2VyIGZ1bmN0aW9uXG5cdHN0b3JlTGFzdEF1dGhlbnRpY2F0ZWRVc2VyPzogYm9vbGVhbjtcblx0cGF0aHNUb0ludGVyY2VwdD86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgdHlwZSB7IElMb2dnZXIgfTtcbiJdfQ==
@@ -1,27 +0,0 @@
1
- import { from } from 'rxjs';
2
- export function observabilify(value) {
3
- /* eslint-disable @typescript-eslint/no-explicit-any */
4
- const observableValue = {};
5
- for (const key in value) {
6
- if (typeof value[key] === 'function') {
7
- const fn = value[key];
8
- observableValue[key] = (...args) => {
9
- const fnResult = fn(...args);
10
- if (fnResult instanceof Promise) {
11
- return from(fnResult);
12
- }
13
- else {
14
- return fnResult;
15
- }
16
- };
17
- }
18
- else if (typeof value[key] === 'object' && value[key] !== null) {
19
- observableValue[key] = observabilify(value[key]);
20
- }
21
- else {
22
- observableValue[key] = value[key];
23
- }
24
- }
25
- return observableValue;
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvdXRpbHMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBWXhDLE1BQU0sVUFBVSxhQUFhLENBQUksS0FBUTtJQUN4Qyx1REFBdUQ7SUFDdkQsTUFBTSxlQUFlLEdBQVEsRUFBRSxDQUFDO0lBRWhDLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFO1FBQ3hCLElBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQW9DLENBQUM7WUFDekQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRTtnQkFDN0MsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLElBQUksUUFBUSxZQUFZLE9BQU8sRUFBRTtvQkFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNOLE9BQU8sUUFBUSxDQUFDO2lCQUNoQjtZQUNGLENBQUMsQ0FBQztTQUNGO2FBQU0sSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNqRSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO2FBQU07WUFDTixlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO0tBQ0Q7SUFFRCxPQUFPLGVBQW9DLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgT2JzZXJ2YWJsZWZpZWQ8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEFyZ3MpID0+IFByb21pc2U8aW5mZXIgUj5cblx0XHQ/ICguLi5hcmdzOiBBcmdzKSA9PiBPYnNlcnZhYmxlPFI+XG5cdFx0OiBUW0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEFyZ3MpID0+IGluZmVyIFJcblx0XHQ/ICguLi5hcmdzOiBBcmdzKSA9PiBSXG5cdFx0OiBUW0tdIGV4dGVuZHMgb2JqZWN0XG5cdFx0PyBPYnNlcnZhYmxlZmllZDxUW0tdPlxuXHRcdDogVFtLXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZhYmlsaWZ5PFQ+KHZhbHVlOiBUKTogT2JzZXJ2YWJsZWZpZWQ8VD4ge1xuXHQvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cdGNvbnN0IG9ic2VydmFibGVWYWx1ZTogYW55ID0ge307XG5cblx0Zm9yIChjb25zdCBrZXkgaW4gdmFsdWUpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlW2tleV0gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGNvbnN0IGZuID0gdmFsdWVba2V5XSBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duO1xuXHRcdFx0b2JzZXJ2YWJsZVZhbHVlW2tleV0gPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGZuUmVzdWx0ID0gZm4oLi4uYXJncyk7XG5cdFx0XHRcdGlmIChmblJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcblx0XHRcdFx0XHRyZXR1cm4gZnJvbShmblJlc3VsdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZuUmVzdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlW2tleV0gPT09ICdvYmplY3QnICYmIHZhbHVlW2tleV0gIT09IG51bGwpIHtcblx0XHRcdG9ic2VydmFibGVWYWx1ZVtrZXldID0gb2JzZXJ2YWJpbGlmeSh2YWx1ZVtrZXldKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b2JzZXJ2YWJsZVZhbHVlW2tleV0gPSB2YWx1ZVtrZXldO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvYnNlcnZhYmxlVmFsdWUgYXMgT2JzZXJ2YWJsZWZpZWQ8VD47XG59XG4iXX0=