@descope/angular-sdk 0.5.10 → 0.5.11

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 (146) hide show
  1. package/.eslintrc.json +41 -0
  2. package/.prettierrc +7 -0
  3. package/CHANGELOG.md +5 -0
  4. package/LICENSE +21 -0
  5. package/README.md +647 -11
  6. package/angular.json +154 -0
  7. package/{esm2022 → dist/esm2022}/lib/components/access-key-management/access-key-management.component.mjs +4 -4
  8. package/{esm2022 → dist/esm2022}/lib/components/audit-management/audit-management.component.mjs +4 -4
  9. package/dist/esm2022/lib/components/descope/descope.component.mjs +156 -0
  10. package/{esm2022 → dist/esm2022}/lib/components/role-management/role-management.component.mjs +4 -4
  11. package/dist/esm2022/lib/components/sign-in-flow/sign-in-flow.component.mjs +44 -0
  12. package/dist/esm2022/lib/components/sign-up-flow/sign-up-flow.component.mjs +44 -0
  13. package/dist/esm2022/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.mjs +44 -0
  14. package/{esm2022 → dist/esm2022}/lib/components/user-management/user-management.component.mjs +4 -4
  15. package/dist/esm2022/lib/components/user-profile/user-profile.component.mjs +66 -0
  16. package/{esm2022 → dist/esm2022}/lib/descope-auth.module.mjs +5 -5
  17. package/{esm2022 → dist/esm2022}/lib/services/descope-auth.guard.mjs +1 -1
  18. package/dist/esm2022/lib/services/descope-auth.service.mjs +154 -0
  19. package/dist/esm2022/lib/services/descope.interceptor.mjs +51 -0
  20. package/dist/esm2022/lib/types/types.mjs +6 -0
  21. package/{esm2022 → dist/esm2022}/lib/utils/constants.mjs +1 -1
  22. package/dist/esm2022/lib/utils/helpers.mjs +27 -0
  23. package/{fesm2022 → dist/fesm2022}/descope-angular-sdk.mjs +37 -37
  24. package/dist/fesm2022/descope-angular-sdk.mjs.map +1 -0
  25. package/{lib → dist/lib}/services/descope-auth.service.d.ts +3 -2
  26. package/jest.config.js +17 -0
  27. package/package.json +62 -19
  28. package/project.json +17 -0
  29. package/projects/angular-sdk/.eslintrc.json +32 -0
  30. package/projects/angular-sdk/ng-package.json +17 -0
  31. package/projects/angular-sdk/package.json +87 -0
  32. package/projects/angular-sdk/src/environment.ts +3 -0
  33. package/projects/angular-sdk/src/lib/components/access-key-management/access-key-management.component.spec.ts +84 -0
  34. package/projects/angular-sdk/src/lib/components/access-key-management/access-key-management.component.ts +63 -0
  35. package/projects/angular-sdk/src/lib/components/audit-management/audit-management.component.spec.ts +84 -0
  36. package/projects/angular-sdk/src/lib/components/audit-management/audit-management.component.ts +63 -0
  37. package/projects/angular-sdk/src/lib/components/descope/descope.component.spec.ts +142 -0
  38. package/projects/angular-sdk/src/lib/components/descope/descope.component.ts +171 -0
  39. package/projects/angular-sdk/src/lib/components/role-management/role-management.component.spec.ts +84 -0
  40. package/projects/angular-sdk/src/lib/components/role-management/role-management.component.ts +63 -0
  41. package/projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.html +17 -0
  42. package/projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.spec.ts +53 -0
  43. package/projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.ts +35 -0
  44. package/projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.html +17 -0
  45. package/projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.spec.ts +51 -0
  46. package/projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.ts +35 -0
  47. package/projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.html +17 -0
  48. package/projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.spec.ts +53 -0
  49. package/projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.ts +35 -0
  50. package/projects/angular-sdk/src/lib/components/user-management/user-management.component.spec.ts +84 -0
  51. package/projects/angular-sdk/src/lib/components/user-management/user-management.component.ts +64 -0
  52. package/projects/angular-sdk/src/lib/components/user-profile/user-profile.component.spec.ts +93 -0
  53. package/projects/angular-sdk/src/lib/components/user-profile/user-profile.component.ts +77 -0
  54. package/projects/angular-sdk/src/lib/descope-auth.module.ts +61 -0
  55. package/projects/angular-sdk/src/lib/services/descope-auth.guard.spec.ts +76 -0
  56. package/projects/angular-sdk/src/lib/services/descope-auth.guard.ts +16 -0
  57. package/projects/angular-sdk/src/lib/services/descope-auth.service.spec.ts +309 -0
  58. package/projects/angular-sdk/src/lib/services/descope-auth.service.ts +200 -0
  59. package/projects/angular-sdk/src/lib/services/descope.interceptor.spec.ts +102 -0
  60. package/projects/angular-sdk/src/lib/services/descope.interceptor.ts +76 -0
  61. package/projects/angular-sdk/src/lib/types/types.ts +15 -0
  62. package/projects/angular-sdk/src/lib/utils/constants.ts +8 -0
  63. package/projects/angular-sdk/src/lib/utils/helpers.spec.ts +103 -0
  64. package/projects/angular-sdk/src/lib/utils/helpers.ts +36 -0
  65. package/projects/angular-sdk/src/public-api.ts +18 -0
  66. package/projects/angular-sdk/tsconfig.lib.json +12 -0
  67. package/projects/angular-sdk/tsconfig.lib.prod.json +10 -0
  68. package/projects/angular-sdk/tsconfig.spec.json +11 -0
  69. package/projects/demo-app/.eslintrc.json +31 -0
  70. package/projects/demo-app/src/app/app-routing.module.ts +33 -0
  71. package/projects/demo-app/src/app/app.component.html +3 -0
  72. package/projects/demo-app/src/app/app.component.scss +18 -0
  73. package/projects/demo-app/src/app/app.component.spec.ts +37 -0
  74. package/projects/demo-app/src/app/app.component.ts +8 -0
  75. package/projects/demo-app/src/app/app.module.ts +63 -0
  76. package/projects/demo-app/src/app/home/home.component.html +32 -0
  77. package/projects/demo-app/src/app/home/home.component.scss +15 -0
  78. package/projects/demo-app/src/app/home/home.component.spec.ts +44 -0
  79. package/projects/demo-app/src/app/home/home.component.ts +85 -0
  80. package/projects/demo-app/src/app/interceptor/auth.interceptor.ts +20 -0
  81. package/projects/demo-app/src/app/login/login.component.html +20 -0
  82. package/projects/demo-app/src/app/login/login.component.spec.ts +42 -0
  83. package/projects/demo-app/src/app/login/login.component.ts +41 -0
  84. package/projects/demo-app/src/app/manage-access-keys/manage-access-keys.component.html +12 -0
  85. package/projects/demo-app/src/app/manage-access-keys/manage-access-keys.component.spec.ts +36 -0
  86. package/projects/demo-app/src/app/manage-access-keys/manage-access-keys.component.ts +15 -0
  87. package/projects/demo-app/src/app/manage-audit/manage-audit.component.html +6 -0
  88. package/projects/demo-app/src/app/manage-audit/manage-audit.component.spec.ts +36 -0
  89. package/projects/demo-app/src/app/manage-audit/manage-audit.component.ts +15 -0
  90. package/projects/demo-app/src/app/manage-roles/manage-roles.component.html +6 -0
  91. package/projects/demo-app/src/app/manage-roles/manage-roles.component.spec.ts +36 -0
  92. package/projects/demo-app/src/app/manage-roles/manage-roles.component.ts +15 -0
  93. package/projects/demo-app/src/app/manage-users/manage-users.component.html +6 -0
  94. package/projects/demo-app/src/app/manage-users/manage-users.component.spec.ts +36 -0
  95. package/projects/demo-app/src/app/manage-users/manage-users.component.ts +15 -0
  96. package/projects/demo-app/src/app/my-user-profile/my-user-profile.component.html +6 -0
  97. package/projects/demo-app/src/app/my-user-profile/my-user-profile.component.spec.ts +36 -0
  98. package/projects/demo-app/src/app/my-user-profile/my-user-profile.component.ts +20 -0
  99. package/projects/demo-app/src/app/my-user-profile/my-user-profile.scss +18 -0
  100. package/projects/demo-app/src/app/protected/protected.component.html +18 -0
  101. package/projects/demo-app/src/app/protected/protected.component.scss +8 -0
  102. package/projects/demo-app/src/app/protected/protected.component.spec.ts +42 -0
  103. package/projects/demo-app/src/app/protected/protected.component.ts +41 -0
  104. package/projects/demo-app/src/assets/.gitkeep +0 -0
  105. package/projects/demo-app/src/environments/conifg.ts +14 -0
  106. package/projects/demo-app/src/environments/environment.ts +20 -0
  107. package/projects/demo-app/src/favicon.ico +0 -0
  108. package/projects/demo-app/src/index.html +17 -0
  109. package/projects/demo-app/src/main.ts +7 -0
  110. package/projects/demo-app/src/styles.scss +21 -0
  111. package/projects/demo-app/tsconfig.app.json +11 -0
  112. package/projects/demo-app/tsconfig.spec.json +10 -0
  113. package/scripts/setversion/setversion.js +20 -0
  114. package/setup-jest.ts +1 -0
  115. package/tsconfig.json +36 -0
  116. package/esm2022/lib/components/descope/descope.component.mjs +0 -156
  117. package/esm2022/lib/components/sign-in-flow/sign-in-flow.component.mjs +0 -44
  118. package/esm2022/lib/components/sign-up-flow/sign-up-flow.component.mjs +0 -44
  119. package/esm2022/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.mjs +0 -44
  120. package/esm2022/lib/components/user-profile/user-profile.component.mjs +0 -66
  121. package/esm2022/lib/services/descope-auth.service.mjs +0 -154
  122. package/esm2022/lib/services/descope.interceptor.mjs +0 -51
  123. package/esm2022/lib/types/types.mjs +0 -6
  124. package/esm2022/lib/utils/helpers.mjs +0 -27
  125. package/fesm2022/descope-angular-sdk.mjs.map +0 -1
  126. /package/{environment.d.ts → dist/environment.d.ts} +0 -0
  127. /package/{esm2022 → dist/esm2022}/descope-angular-sdk.mjs +0 -0
  128. /package/{esm2022 → dist/esm2022}/environment.mjs +0 -0
  129. /package/{esm2022 → dist/esm2022}/public-api.mjs +0 -0
  130. /package/{index.d.ts → dist/index.d.ts} +0 -0
  131. /package/{lib → dist/lib}/components/access-key-management/access-key-management.component.d.ts +0 -0
  132. /package/{lib → dist/lib}/components/audit-management/audit-management.component.d.ts +0 -0
  133. /package/{lib → dist/lib}/components/descope/descope.component.d.ts +0 -0
  134. /package/{lib → dist/lib}/components/role-management/role-management.component.d.ts +0 -0
  135. /package/{lib → dist/lib}/components/sign-in-flow/sign-in-flow.component.d.ts +0 -0
  136. /package/{lib → dist/lib}/components/sign-up-flow/sign-up-flow.component.d.ts +0 -0
  137. /package/{lib → dist/lib}/components/sign-up-or-in-flow/sign-up-or-in-flow.component.d.ts +0 -0
  138. /package/{lib → dist/lib}/components/user-management/user-management.component.d.ts +0 -0
  139. /package/{lib → dist/lib}/components/user-profile/user-profile.component.d.ts +0 -0
  140. /package/{lib → dist/lib}/descope-auth.module.d.ts +0 -0
  141. /package/{lib → dist/lib}/services/descope-auth.guard.d.ts +0 -0
  142. /package/{lib → dist/lib}/services/descope.interceptor.d.ts +0 -0
  143. /package/{lib → dist/lib}/types/types.d.ts +0 -0
  144. /package/{lib → dist/lib}/utils/constants.d.ts +0 -0
  145. /package/{lib → dist/lib}/utils/helpers.d.ts +0 -0
  146. /package/{public-api.d.ts → dist/public-api.d.ts} +0 -0
package/tsconfig.json ADDED
@@ -0,0 +1,36 @@
1
+ /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
+ {
3
+ "compileOnSave": false,
4
+ "compilerOptions": {
5
+ "paths": {
6
+ "angular-sdk": ["dist/angular-sdk"]
7
+ },
8
+ "typeRoots": ["./node_modules/@types", "./node_modules/@descope"],
9
+ "baseUrl": "./",
10
+ "outDir": "./dist/out-tsc",
11
+ "forceConsistentCasingInFileNames": true,
12
+ "strictPropertyInitialization": false,
13
+ "strict": true,
14
+ "noImplicitOverride": true,
15
+ "noPropertyAccessFromIndexSignature": true,
16
+ "noImplicitReturns": true,
17
+ "noFallthroughCasesInSwitch": true,
18
+ "sourceMap": true,
19
+ "declaration": false,
20
+ "downlevelIteration": true,
21
+ "experimentalDecorators": true,
22
+ "moduleResolution": "node",
23
+ "importHelpers": true,
24
+ "target": "es2017",
25
+ "module": "ES2022",
26
+ "useDefineForClassFields": false,
27
+ "lib": ["es2017", "dom"],
28
+ "skipLibCheck": true
29
+ },
30
+ "angularCompilerOptions": {
31
+ "enableI18nLegacyMessageIdFormat": false,
32
+ "strictInjectionParameters": true,
33
+ "strictInputAccessModifiers": true,
34
+ "strictTemplates": true
35
+ }
36
+ }
@@ -1,156 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import DescopeWebComponent from '@descope/web-component';
3
- import DescopeWc from '@descope/web-component';
4
- import { from } from 'rxjs';
5
- import { baseHeaders } from '../../utils/constants';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../services/descope-auth.service";
8
- import * as i2 from "../../types/types";
9
- export class DescopeComponent {
10
- constructor(elementRef, authService, descopeConfig) {
11
- this.elementRef = elementRef;
12
- this.authService = authService;
13
- this.success = new EventEmitter();
14
- this.error = new EventEmitter();
15
- this.ready = new EventEmitter();
16
- this.webComponent = new DescopeWebComponent();
17
- this.projectId = descopeConfig.projectId;
18
- this.baseUrl = descopeConfig.baseUrl;
19
- this.baseStaticUrl = descopeConfig.baseStaticUrl;
20
- this.storeLastAuthenticatedUser = descopeConfig.storeLastAuthenticatedUser;
21
- }
22
- ngOnInit() {
23
- const sdk = this.authService.descopeSdk; // Capture the class context in a variable
24
- DescopeWc.sdkConfigOverrides = {
25
- // Overrides the web-component's base headers to indicate usage via the React SDK
26
- baseHeaders,
27
- // Disables token persistence within the web-component to delegate token management
28
- // to the global SDK hooks. This ensures token handling aligns with the SDK's configuration,
29
- // and web-component requests leverage the global SDK's beforeRequest hooks for consistency
30
- persistTokens: false,
31
- hooks: {
32
- get beforeRequest() {
33
- // Retrieves the beforeRequest hook from the global SDK, which is initialized
34
- // within the AuthProvider using the desired configuration. This approach ensures
35
- // the web-component utilizes the same beforeRequest hooks as the global SDK
36
- return sdk.httpClient.hooks?.beforeRequest;
37
- },
38
- set beforeRequest(_) {
39
- // The empty setter prevents runtime errors when attempts are made to assign a value to 'beforeRequest'.
40
- // JavaScript objects default to having both getters and setters
41
- }
42
- }
43
- };
44
- this.setupWebComponent();
45
- this.elementRef.nativeElement.appendChild(this.webComponent);
46
- }
47
- ngOnChanges() {
48
- this.setupWebComponent();
49
- }
50
- setupWebComponent() {
51
- this.webComponent.setAttribute('project-id', this.projectId);
52
- this.webComponent.setAttribute('flow-id', this.flowId);
53
- if (this.baseUrl) {
54
- this.webComponent.setAttribute('base-url', this.baseUrl);
55
- }
56
- if (this.baseStaticUrl) {
57
- this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);
58
- }
59
- if (this.storeLastAuthenticatedUser) {
60
- this.webComponent.setAttribute('store-last-authenticated-user', this.storeLastAuthenticatedUser.toString());
61
- }
62
- if (this.locale) {
63
- this.webComponent.setAttribute('locale', this.locale);
64
- }
65
- if (this.theme) {
66
- this.webComponent.setAttribute('theme', this.theme);
67
- }
68
- if (this.tenant) {
69
- this.webComponent.setAttribute('tenant', this.tenant);
70
- }
71
- if (this.telemetryKey) {
72
- this.webComponent.setAttribute('telemetryKey', this.telemetryKey);
73
- }
74
- if (this.redirectUrl) {
75
- this.webComponent.setAttribute('redirect-url', this.redirectUrl);
76
- }
77
- if (this.autoFocus) {
78
- this.webComponent.setAttribute('auto-focus', this.autoFocus.toString());
79
- }
80
- if (this.debug) {
81
- this.webComponent.setAttribute('debug', this.debug.toString());
82
- }
83
- if (this.errorTransformer) {
84
- this.webComponent.errorTransformer = this.errorTransformer;
85
- }
86
- if (this.client) {
87
- this.webComponent.setAttribute('client', JSON.stringify(this.client));
88
- }
89
- if (this.form) {
90
- this.webComponent.setAttribute('form', JSON.stringify(this.form));
91
- }
92
- if (this.logger) {
93
- this.webComponent.logger = this.logger;
94
- }
95
- this.webComponent.addEventListener('success', (e) => {
96
- from(this.authService.descopeSdk.httpClient.hooks?.afterRequest(
97
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
- {}, new Response(JSON.stringify(e.detail)))).subscribe(() => {
99
- if (this.success) {
100
- this.success?.emit(e);
101
- }
102
- });
103
- });
104
- if (this.error) {
105
- this.webComponent.addEventListener('error', (e) => {
106
- this.error?.emit(e);
107
- });
108
- }
109
- if (this.ready) {
110
- this.webComponent.addEventListener('ready', () => {
111
- this.ready?.emit();
112
- });
113
- }
114
- }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeComponent, deps: [{ token: i0.ElementRef }, { token: i1.DescopeAuthService }, { token: i2.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Component }); }
116
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: DescopeComponent, isStandalone: true, selector: "descope[flowId]", inputs: { flowId: "flowId", 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", ready: "ready" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }
117
- }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DescopeComponent, decorators: [{
119
- type: Component,
120
- args: [{
121
- selector: 'descope[flowId]',
122
- standalone: true,
123
- template: ''
124
- }]
125
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DescopeAuthService }, { type: i2.DescopeAuthConfig }]; }, propDecorators: { flowId: [{
126
- type: Input
127
- }], locale: [{
128
- type: Input
129
- }], theme: [{
130
- type: Input
131
- }], tenant: [{
132
- type: Input
133
- }], telemetryKey: [{
134
- type: Input
135
- }], redirectUrl: [{
136
- type: Input
137
- }], autoFocus: [{
138
- type: Input
139
- }], debug: [{
140
- type: Input
141
- }], errorTransformer: [{
142
- type: Input
143
- }], client: [{
144
- type: Input
145
- }], form: [{
146
- type: Input
147
- }], logger: [{
148
- type: Input
149
- }], success: [{
150
- type: Output
151
- }], error: [{
152
- type: Output
153
- }], ready: [{
154
- type: Output
155
- }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvbGliL2NvbXBvbmVudHMvZGVzY29wZS9kZXNjb3BlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sbUJBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxTQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBUXBELE1BQU0sT0FBTyxnQkFBZ0I7SUE0QjVCLFlBQ1MsVUFBc0IsRUFDdEIsV0FBK0IsRUFDdkMsYUFBZ0M7UUFGeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFWOUIsWUFBTyxHQUNoQixJQUFJLFlBQVksRUFBZSxDQUFDO1FBQ3ZCLFVBQUssR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUNuRSxVQUFLLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUMsaUJBQVksR0FDNUIsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBTzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDO1FBQ2pELElBQUksQ0FBQywwQkFBMEIsR0FBRyxhQUFhLENBQUMsMEJBQTBCLENBQUM7SUFDNUUsQ0FBQztJQUVELFFBQVE7UUFDUCxNQUFNLEdBQUcs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RTtZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBUSxFQUFFLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQWdCLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztTQUNIO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1NBQ0g7SUFDRixDQUFDOzhHQXBKVyxnQkFBZ0I7a0dBQWhCLGdCQUFnQiw2YUFGbEIsRUFBRTs7MkZBRUEsZ0JBQWdCO2tCQUw1QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsRUFBRTtpQkFDWjtrS0FNUyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUVHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdEVsZW1lbnRSZWYsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5wdXQsXG5cdE9uQ2hhbmdlcyxcblx0T25Jbml0LFxuXHRPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgRGVzY29wZVdlYkNvbXBvbmVudCBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCBEZXNjb3BlV2MsIHsgSUxvZ2dlciB9IGZyb20gJ0BkZXNjb3BlL3dlYi1jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVzY29wZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGVzY29wZS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYmFzZUhlYWRlcnMgfSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGVzY29wZUF1dGhDb25maWcgfSBmcm9tICcuLi8uLi90eXBlcy90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2Rlc2NvcGVbZmxvd0lkXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBEZXNjb3BlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXHRwcm9qZWN0SWQ6IHN0cmluZztcblx0YmFzZVVybD86IHN0cmluZztcblx0YmFzZVN0YXRpY1VybD86IHN0cmluZztcblx0c3RvcmVMYXN0QXV0aGVudGljYXRlZFVzZXI/OiBib29sZWFuO1xuXHRASW5wdXQoKSBmbG93SWQ6IHN0cmluZztcblxuXHRASW5wdXQoKSBsb2NhbGU6IHN0cmluZztcblx0QElucHV0KCkgdGhlbWU6ICdsaWdodCcgfCAnZGFyaycgfCAnb3MnO1xuXHRASW5wdXQoKSB0ZW5hbnQ6IHN0cmluZztcblx0QElucHV0KCkgdGVsZW1ldHJ5S2V5OiBzdHJpbmc7XG5cdEBJbnB1dCgpIHJlZGlyZWN0VXJsOiBzdHJpbmc7XG5cdEBJbnB1dCgpIGF1dG9Gb2N1czogdHJ1ZSB8IGZhbHNlIHwgJ3NraXBGaXJzdFNjcmVlbic7XG5cblx0QElucHV0KCkgZGVidWc6IGJvb2xlYW47XG5cdEBJbnB1dCgpIGVycm9yVHJhbnNmb3JtZXI6IChlcnJvcjogeyB0ZXh0OiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9KSA9PiBzdHJpbmc7XG5cdEBJbnB1dCgpIGNsaWVudDogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0QElucHV0KCkgZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0QElucHV0KCkgbG9nZ2VyOiBJTG9nZ2VyO1xuXG5cdEBPdXRwdXQoKSBzdWNjZXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+ID1cblx0XHRuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PigpO1xuXHRAT3V0cHV0KCkgZXJyb3I6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PigpO1xuXHRAT3V0cHV0KCkgcmVhZHk6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IHdlYkNvbXBvbmVudDogRGVzY29wZVdlYkNvbXBvbmVudCA9XG5cdFx0bmV3IERlc2NvcGVXZWJDb21wb25lbnQoKTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG5cdFx0cHJpdmF0ZSBhdXRoU2VydmljZTogRGVzY29wZUF1dGhTZXJ2aWNlLFxuXHRcdGRlc2NvcGVDb25maWc6IERlc2NvcGVBdXRoQ29uZmlnXG5cdCkge1xuXHRcdHRoaXMucHJvamVjdElkID0gZGVzY29wZUNvbmZpZy5wcm9qZWN0SWQ7XG5cdFx0dGhpcy5iYXNlVXJsID0gZGVzY29wZUNvbmZpZy5iYXNlVXJsO1xuXHRcdHRoaXMuYmFzZVN0YXRpY1VybCA9IGRlc2NvcGVDb25maWcuYmFzZVN0YXRpY1VybDtcblx0XHR0aGlzLnN0b3JlTGFzdEF1dGhlbnRpY2F0ZWRVc2VyID0gZGVzY29wZUNvbmZpZy5zdG9yZUxhc3RBdXRoZW50aWNhdGVkVXNlcjtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdGNvbnN0IHNkayA9IHRoaXMuYXV0aFNlcnZpY2UuZGVzY29wZVNkazsgLy8gQ2FwdHVyZSB0aGUgY2xhc3MgY29udGV4dCBpbiBhIHZhcmlhYmxlXG5cdFx0RGVzY29wZVdjLnNka0NvbmZpZ092ZXJyaWRlcyA9IHtcblx0XHRcdC8vIE92ZXJyaWRlcyB0aGUgd2ViLWNvbXBvbmVudCdzIGJhc2UgaGVhZGVycyB0byBpbmRpY2F0ZSB1c2FnZSB2aWEgdGhlIFJlYWN0IFNES1xuXHRcdFx0YmFzZUhlYWRlcnMsXG5cdFx0XHQvLyBEaXNhYmxlcyB0b2tlbiBwZXJzaXN0ZW5jZSB3aXRoaW4gdGhlIHdlYi1jb21wb25lbnQgdG8gZGVsZWdhdGUgdG9rZW4gbWFuYWdlbWVudFxuXHRcdFx0Ly8gdG8gdGhlIGdsb2JhbCBTREsgaG9va3MuIFRoaXMgZW5zdXJlcyB0b2tlbiBoYW5kbGluZyBhbGlnbnMgd2l0aCB0aGUgU0RLJ3MgY29uZmlndXJhdGlvbixcblx0XHRcdC8vIGFuZCB3ZWItY29tcG9uZW50IHJlcXVlc3RzIGxldmVyYWdlIHRoZSBnbG9iYWwgU0RLJ3MgYmVmb3JlUmVxdWVzdCBob29rcyBmb3IgY29uc2lzdGVuY3lcblx0XHRcdHBlcnNpc3RUb2tlbnM6IGZhbHNlLFxuXHRcdFx0aG9va3M6IHtcblx0XHRcdFx0Z2V0IGJlZm9yZVJlcXVlc3QoKSB7XG5cdFx0XHRcdFx0Ly8gUmV0cmlldmVzIHRoZSBiZWZvcmVSZXF1ZXN0IGhvb2sgZnJvbSB0aGUgZ2xvYmFsIFNESywgd2hpY2ggaXMgaW5pdGlhbGl6ZWRcblx0XHRcdFx0XHQvLyB3aXRoaW4gdGhlIEF1dGhQcm92aWRlciB1c2luZyB0aGUgZGVzaXJlZCBjb25maWd1cmF0aW9uLiBUaGlzIGFwcHJvYWNoIGVuc3VyZXNcblx0XHRcdFx0XHQvLyB0aGUgd2ViLWNvbXBvbmVudCB1dGlsaXplcyB0aGUgc2FtZSBiZWZvcmVSZXF1ZXN0IGhvb2tzIGFzIHRoZSBnbG9iYWwgU0RLXG5cdFx0XHRcdFx0cmV0dXJuIHNkay5odHRwQ2xpZW50Lmhvb2tzPy5iZWZvcmVSZXF1ZXN0O1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzZXQgYmVmb3JlUmVxdWVzdChfKSB7XG5cdFx0XHRcdFx0Ly8gVGhlIGVtcHR5IHNldHRlciBwcmV2ZW50cyBydW50aW1lIGVycm9ycyB3aGVuIGF0dGVtcHRzIGFyZSBtYWRlIHRvIGFzc2lnbiBhIHZhbHVlIHRvICdiZWZvcmVSZXF1ZXN0Jy5cblx0XHRcdFx0XHQvLyBKYXZhU2NyaXB0IG9iamVjdHMgZGVmYXVsdCB0byBoYXZpbmcgYm90aCBnZXR0ZXJzIGFuZCBzZXR0ZXJzXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHRcdHRoaXMuc2V0dXBXZWJDb21wb25lbnQoKTtcblx0XHR0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLndlYkNvbXBvbmVudCk7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcygpOiB2b2lkIHtcblx0XHR0aGlzLnNldHVwV2ViQ29tcG9uZW50KCk7XG5cdH1cblxuXHRwcml2YXRlIHNldHVwV2ViQ29tcG9uZW50KCkge1xuXHRcdHRoaXMud2ViQ29tcG9uZW50LnNldEF0dHJpYnV0ZSgncHJvamVjdC1pZCcsIHRoaXMucHJvamVjdElkKTtcblx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ2Zsb3ctaWQnLCB0aGlzLmZsb3dJZCk7XG5cblx0XHRpZiAodGhpcy5iYXNlVXJsKSB7XG5cdFx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ2Jhc2UtdXJsJywgdGhpcy5iYXNlVXJsKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuYmFzZVN0YXRpY1VybCkge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKCdiYXNlLXN0YXRpYy11cmwnLCB0aGlzLmJhc2VTdGF0aWNVcmwpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5zdG9yZUxhc3RBdXRoZW50aWNhdGVkVXNlcikge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKFxuXHRcdFx0XHQnc3RvcmUtbGFzdC1hdXRoZW50aWNhdGVkLXVzZXInLFxuXHRcdFx0XHR0aGlzLnN0b3JlTGFzdEF1dGhlbnRpY2F0ZWRVc2VyLnRvU3RyaW5nKClcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmxvY2FsZSkge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKCdsb2NhbGUnLCB0aGlzLmxvY2FsZSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnRoZW1lKSB7XG5cdFx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ3RoZW1lJywgdGhpcy50aGVtZSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnRlbmFudCkge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKCd0ZW5hbnQnLCB0aGlzLnRlbmFudCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnRlbGVtZXRyeUtleSkge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKCd0ZWxlbWV0cnlLZXknLCB0aGlzLnRlbGVtZXRyeUtleSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnJlZGlyZWN0VXJsKSB7XG5cdFx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ3JlZGlyZWN0LXVybCcsIHRoaXMucmVkaXJlY3RVcmwpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5hdXRvRm9jdXMpIHtcblx0XHRcdHRoaXMud2ViQ29tcG9uZW50LnNldEF0dHJpYnV0ZSgnYXV0by1mb2N1cycsIHRoaXMuYXV0b0ZvY3VzLnRvU3RyaW5nKCkpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5kZWJ1Zykge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuc2V0QXR0cmlidXRlKCdkZWJ1ZycsIHRoaXMuZGVidWcudG9TdHJpbmcoKSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZXJyb3JUcmFuc2Zvcm1lcikge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuZXJyb3JUcmFuc2Zvcm1lciA9IHRoaXMuZXJyb3JUcmFuc2Zvcm1lcjtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5jbGllbnQpIHtcblx0XHRcdHRoaXMud2ViQ29tcG9uZW50LnNldEF0dHJpYnV0ZSgnY2xpZW50JywgSlNPTi5zdHJpbmdpZnkodGhpcy5jbGllbnQpKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5mb3JtKSB7XG5cdFx0XHR0aGlzLndlYkNvbXBvbmVudC5zZXRBdHRyaWJ1dGUoJ2Zvcm0nLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0pKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5sb2dnZXIpIHtcblx0XHRcdHRoaXMud2ViQ29tcG9uZW50LmxvZ2dlciA9IHRoaXMubG9nZ2VyO1xuXHRcdH1cblxuXHRcdHRoaXMud2ViQ29tcG9uZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCAoZTogRXZlbnQpID0+IHtcblx0XHRcdGZyb20oXG5cdFx0XHRcdHRoaXMuYXV0aFNlcnZpY2UuZGVzY29wZVNkay5odHRwQ2xpZW50Lmhvb2tzPy5hZnRlclJlcXVlc3QhKFxuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdFx0XHRcdFx0e30gYXMgYW55LFxuXHRcdFx0XHRcdG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSgoZSBhcyBDdXN0b21FdmVudCkuZGV0YWlsKSlcblx0XHRcdFx0KSBhcyBQcm9taXNlPHVua25vd24+XG5cdFx0XHQpLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLnN1Y2Nlc3MpIHtcblx0XHRcdFx0XHR0aGlzLnN1Y2Nlc3M/LmVtaXQoZSBhcyBDdXN0b21FdmVudCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0aWYgKHRoaXMuZXJyb3IpIHtcblx0XHRcdHRoaXMud2ViQ29tcG9uZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKGU6IEV2ZW50KSA9PiB7XG5cdFx0XHRcdHRoaXMuZXJyb3I/LmVtaXQoZSBhcyBDdXN0b21FdmVudCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5yZWFkeSkge1xuXHRcdFx0dGhpcy53ZWJDb21wb25lbnQuYWRkRXZlbnRMaXN0ZW5lcigncmVhZHknLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMucmVhZHk/LmVtaXQoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufVxuIl19
@@ -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 SignInFlowComponent {
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: SignInFlowComponent, deps: [{ token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SignInFlowComponent, isStandalone: true, selector: "descope-sign-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-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: SignInFlowComponent, decorators: [{
15
- type: Component,
16
- args: [{ selector: 'descope-sign-in-flow', standalone: true, imports: [DescopeComponent], template: "<descope\n\t(success)=\"success.emit($event)\"\n\t(error)=\"error.emit($event)\"\n\tflowId=\"sign-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLWluLWZsb3cvc2lnbi1pbi1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLWluLWZsb3cvc2lnbi1pbi1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVNoRSxNQUFNLE9BQU8sbUJBQW1CO0lBb0IvQixZQUFZLGFBQWdDO1FBSmxDLFlBQU8sR0FDaEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUN2QixVQUFLLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFHNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQzFDLENBQUM7OEdBdEJXLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJYQ1hoQyw4WkFpQkEsNENEVFcsZ0JBQWdCOzsyRkFHZCxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0Msc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLGdCQUFnQixDQUFDO3dHQU1sQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVDb21wb25lbnQgfSBmcm9tICcuLi9kZXNjb3BlL2Rlc2NvcGUuY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVBdXRoQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdkZXNjb3BlLXNpZ24taW4tZmxvdycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtEZXNjb3BlQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3NpZ24taW4tZmxvdy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2lnbkluRmxvd0NvbXBvbmVudCB7XG5cdHByb2plY3RJZDogc3RyaW5nO1xuXG5cdEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuXHRASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyB8ICdvcyc7XG5cdEBJbnB1dCgpIHRlbmFudDogc3RyaW5nO1xuXHRASW5wdXQoKSB0ZWxlbWV0cnlLZXk6IHN0cmluZztcblx0QElucHV0KCkgcmVkaXJlY3RVcmw6IHN0cmluZztcblx0QElucHV0KCkgYXV0b0ZvY3VzOiB0cnVlIHwgZmFsc2UgfCAnc2tpcEZpcnN0U2NyZWVuJztcblxuXHRASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbjtcblx0QElucHV0KCkgZXJyb3JUcmFuc2Zvcm1lcjogKGVycm9yOiB7IHRleHQ6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0pID0+IHN0cmluZztcblx0QElucHV0KCkgY2xpZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXHRASW5wdXQoKSBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXHRASW5wdXQoKSBsb2dnZXI6IElMb2dnZXI7XG5cblx0QE91dHB1dCgpIHN1Y2Nlc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD4gPVxuXHRcdG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+KCk7XG5cdEBPdXRwdXQoKSBlcnJvcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+KCk7XG5cblx0Y29uc3RydWN0b3IoZGVzY29wZUNvbmZpZzogRGVzY29wZUF1dGhDb25maWcpIHtcblx0XHR0aGlzLnByb2plY3RJZCA9IGRlc2NvcGVDb25maWcucHJvamVjdElkO1xuXHR9XG59XG4iLCI8ZGVzY29wZVxuXHQoc3VjY2Vzcyk9XCJzdWNjZXNzLmVtaXQoJGV2ZW50KVwiXG5cdChlcnJvcik9XCJlcnJvci5lbWl0KCRldmVudClcIlxuXHRmbG93SWQ9XCJzaWduLWluXCJcblx0W2xvY2FsZV09XCJsb2NhbGVcIlxuXHRbdGhlbWVdPVwidGhlbWVcIlxuXHRbdGVuYW50XT1cInRlbmFudFwiXG5cdFt0ZWxlbWV0cnlLZXldPVwidGVsZW1ldHJ5S2V5XCJcblx0W3JlZGlyZWN0VXJsXT1cInJlZGlyZWN0VXJsXCJcblx0W2F1dG9Gb2N1c109XCJhdXRvRm9jdXNcIlxuXHRbZGVidWddPVwiZGVidWdcIlxuXHRbZXJyb3JUcmFuc2Zvcm1lcl09XCJlcnJvclRyYW5zZm9ybWVyXCJcblx0W2NsaWVudF09XCJjbGllbnRcIlxuXHRbZm9ybV09XCJmb3JtXCJcblx0W2xvZ2dlcl09XCJsb2dnZXJcIlxuPlxuPC9kZXNjb3BlPlxuIl19
@@ -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 SignUpFlowComponent {
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: SignUpFlowComponent, deps: [{ token: i1.DescopeAuthConfig }], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SignUpFlowComponent, isStandalone: true, selector: "descope-sign-up-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\"\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: SignUpFlowComponent, decorators: [{
15
- type: Component,
16
- args: [{ selector: 'descope-sign-up-flow', standalone: true, imports: [DescopeComponent], template: "<descope\n\t(success)=\"success.emit($event)\"\n\t(error)=\"error.emit($event)\"\n\tflowId=\"sign-up\"\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi11cC1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLXVwLWZsb3cvc2lnbi11cC1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9zaWduLXVwLWZsb3cvc2lnbi11cC1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVNoRSxNQUFNLE9BQU8sbUJBQW1CO0lBb0IvQixZQUFZLGFBQWdDO1FBSmxDLFlBQU8sR0FDaEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUN2QixVQUFLLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFHNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQzFDLENBQUM7OEdBdEJXLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJYQ1hoQyw4WkFpQkEsNENEVFcsZ0JBQWdCOzsyRkFHZCxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0Msc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLGdCQUFnQixDQUFDO3dHQU1sQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVDb21wb25lbnQgfSBmcm9tICcuLi9kZXNjb3BlL2Rlc2NvcGUuY29tcG9uZW50JztcbmltcG9ydCB7IERlc2NvcGVBdXRoQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdkZXNjb3BlLXNpZ24tdXAtZmxvdycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtEZXNjb3BlQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3NpZ24tdXAtZmxvdy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2lnblVwRmxvd0NvbXBvbmVudCB7XG5cdHByb2plY3RJZDogc3RyaW5nO1xuXG5cdEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuXHRASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyB8ICdvcyc7XG5cdEBJbnB1dCgpIHRlbmFudDogc3RyaW5nO1xuXHRASW5wdXQoKSB0ZWxlbWV0cnlLZXk6IHN0cmluZztcblx0QElucHV0KCkgcmVkaXJlY3RVcmw6IHN0cmluZztcblx0QElucHV0KCkgYXV0b0ZvY3VzOiB0cnVlIHwgZmFsc2UgfCAnc2tpcEZpcnN0U2NyZWVuJztcblxuXHRASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbjtcblx0QElucHV0KCkgZXJyb3JUcmFuc2Zvcm1lcjogKGVycm9yOiB7IHRleHQ6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0pID0+IHN0cmluZztcblx0QElucHV0KCkgY2xpZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXHRASW5wdXQoKSBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXHRASW5wdXQoKSBsb2dnZXI6IElMb2dnZXI7XG5cblx0QE91dHB1dCgpIHN1Y2Nlc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD4gPVxuXHRcdG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+KCk7XG5cdEBPdXRwdXQoKSBlcnJvcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+KCk7XG5cblx0Y29uc3RydWN0b3IoZGVzY29wZUNvbmZpZzogRGVzY29wZUF1dGhDb25maWcpIHtcblx0XHR0aGlzLnByb2plY3RJZCA9IGRlc2NvcGVDb25maWcucHJvamVjdElkO1xuXHR9XG59XG4iLCI8ZGVzY29wZVxuXHQoc3VjY2Vzcyk9XCJzdWNjZXNzLmVtaXQoJGV2ZW50KVwiXG5cdChlcnJvcik9XCJlcnJvci5lbWl0KCRldmVudClcIlxuXHRmbG93SWQ9XCJzaWduLXVwXCJcblx0W2xvY2FsZV09XCJsb2NhbGVcIlxuXHRbdGhlbWVdPVwidGhlbWVcIlxuXHRbdGVuYW50XT1cInRlbmFudFwiXG5cdFt0ZWxlbWV0cnlLZXldPVwidGVsZW1ldHJ5S2V5XCJcblx0W3JlZGlyZWN0VXJsXT1cInJlZGlyZWN0VXJsXCJcblx0W2F1dG9Gb2N1c109XCJhdXRvRm9jdXNcIlxuXHRbZGVidWddPVwiZGVidWdcIlxuXHRbZXJyb3JUcmFuc2Zvcm1lcl09XCJlcnJvclRyYW5zZm9ybWVyXCJcblx0W2NsaWVudF09XCJjbGllbnRcIlxuXHRbZm9ybV09XCJmb3JtXCJcblx0W2xvZ2dlcl09XCJsb2dnZXJcIlxuPlxuPC9kZXNjb3BlPlxuIl19
@@ -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,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,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS1hdXRoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvbGliL3NlcnZpY2VzL2Rlc2NvcGUtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQWtCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBaUI1RCxNQUFNLE9BQU8sa0JBQWtCO0lBTzlCLFlBQVksTUFBeUI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQzlCLFNBQVMsQ0FBQztZQUNULGFBQWEsRUFBRSxTQUFTLEVBQVU7WUFDbEMsR0FBRyxNQUFNO1lBQ1QsMEJBQTBCLEVBQUUsU0FBUyxFQUFVO1lBQy9DLFdBQVcsRUFBRSxTQUFTLEVBQVU7WUFDaEMsV0FBVztTQUNYLENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBaUI7WUFDekQsZUFBZSxFQUFFLEtBQUs7WUFDdEIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixZQUFZLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBYztZQUNuRCxhQUFhLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxH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SW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdAZGVzY29wZS93ZWItanMtc2RrJztcbmltcG9ydCBjcmVhdGVTZGsgZnJvbSAnQGRlc2NvcGUvd2ViLWpzLXNkayc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbmFsaXplLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG9ic2VydmFiaWxpZnksIE9ic2VydmFibGVmaWVkIH0gZnJvbSAnLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBiYXNlSGVhZGVycywgaXNCcm93c2VyIH0gZnJvbSAnLi4vdXRpbHMvY29uc3RhbnRzJztcbmltcG9ydCB7IERlc2NvcGVBdXRoQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuXG50eXBlIERlc2NvcGVTREsgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVTZGs+O1xudHlwZSBBbmd1bGFyRGVzY29wZVNESyA9IE9ic2VydmFibGVmaWVkPERlc2NvcGVTREs+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NvcGVTZXNzaW9uIHtcblx0aXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xuXHRpc1Nlc3Npb25Mb2FkaW5nOiBib29sZWFuO1xuXHRzZXNzaW9uVG9rZW46IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIERlc2NvcGVVc2VyID0geyB1c2VyPzogVXNlclJlc3BvbnNlOyBpc1VzZXJMb2FkaW5nOiBib29sZWFuIH07XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERlc2NvcGVBdXRoU2VydmljZSB7XG5cdHB1YmxpYyBkZXNjb3BlU2RrOiBBbmd1bGFyRGVzY29wZVNESztcblx0cHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PERlc2NvcGVTZXNzaW9uPjtcblx0cHJpdmF0ZSByZWFkb25seSB1c2VyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PERlc2NvcGVVc2VyPjtcblx0cmVhZG9ubHkgc2Vzc2lvbiQ6IE9ic2VydmFibGU8RGVzY29wZVNlc3Npb24+O1xuXHRyZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxEZXNjb3BlVXNlcj47XG5cblx0Y29uc3RydWN0b3IoY29uZmlnOiBEZXNjb3BlQXV0aENvbmZpZykge1xuXHRcdHRoaXMuZGVzY29wZVNkayA9IG9ic2VydmFiaWxpZnk8RGVzY29wZVNESz4oXG5cdFx0XHRjcmVhdGVTZGsoe1xuXHRcdFx0XHRwZXJzaXN0VG9rZW5zOiBpc0Jyb3dzZXIoKSBhcyB0cnVlLFxuXHRcdFx0XHQuLi5jb25maWcsXG5cdFx0XHRcdHN0b3JlTGFzdEF1dGhlbnRpY2F0ZWRVc2VyOiBpc0Jyb3dzZXIoKSBhcyB0cnVlLFxuXHRcdFx0XHRhdXRvUmVmcmVzaDogaXNCcm93c2VyKCkgYXMgdHJ1ZSxcblx0XHRcdFx0YmFzZUhlYWRlcnNcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHRoaXMuc2Vzc2lvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERlc2NvcGVTZXNzaW9uPih7XG5cdFx0XHRpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxuXHRcdFx0aXNTZXNzaW9uTG9hZGluZzogZmFsc2UsXG5cdFx0XHRzZXNzaW9uVG9rZW46ICcnXG5cdFx0fSk7XG5cdFx0dGhpcy5zZXNzaW9uJCA9IHRoaXMuc2Vzc2lvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy51c2VyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGVzY29wZVVzZXI+KHtcblx0XHRcdGlzVXNlckxvYWRpbmc6IGZhbHNlXG5cdFx0fSk7XG5cdFx0dGhpcy51c2VyJCA9IHRoaXMudXNlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy5kZXNjb3BlU2RrLm9uU2Vzc2lvblRva2VuQ2hhbmdlKHRoaXMuc2V0U2Vzc2lvbi5iaW5kKHRoaXMpKTtcblx0XHR0aGlzLmRlc2NvcGVTZGsub25Vc2VyQ2hhbmdlKHRoaXMuc2V0VXNlci5iaW5kKHRoaXMpKTtcblx0fVxuXG5cdHJlZnJlc2hTZXNzaW9uKCkge1xuXHRcdGNvbnN0IGJlZm9yZVJlZnJlc2hTZXNzaW9uID0gdGhpcy5zZXNzaW9uU3ViamVjdC52YWx1ZTtcblx0XHR0aGlzLnNlc3Npb25TdWJqZWN0Lm5leHQoe1xuXHRcdFx0Li4uYmVmb3JlUmVmcmVzaFNlc3Npb24sXG5cdFx0XHRpc1Nlc3Npb25Mb2FkaW5nOiB0cnVlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5yZWZyZXNoKCkucGlwZShcblx0XHRcdHRhcCgoZGF0YSkgPT4ge1xuXHRcdFx0XHRjb25zdCBhZnRlclJlcXVlc3RTZXNzaW9uID0gdGhpcy5zZXNzaW9uU3ViamVjdC52YWx1ZTtcblx0XHRcdFx0aWYgKGRhdGEub2sgJiYgZGF0YS5kYXRhKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXNzaW9uU3ViamVjdC5uZXh0KHtcblx0XHRcdFx0XHRcdC4uLmFmdGVyUmVxdWVzdFNlc3Npb24sXG5cdFx0XHRcdFx0XHRzZXNzaW9uVG9rZW46IGRhdGEuZGF0YS5zZXNzaW9uSnd0LFxuXHRcdFx0XHRcdFx0aXNBdXRoZW50aWNhdGVkOiAhIWRhdGEuZGF0YS5zZXNzaW9uSnd0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5zZXNzaW9uU3ViamVjdC5uZXh0KHtcblx0XHRcdFx0XHRcdC4uLmFmdGVyUmVxdWVzdFNlc3Npb24sXG5cdFx0XHRcdFx0XHRzZXNzaW9uVG9rZW46ICcnLFxuXHRcdFx0XHRcdFx0aXNBdXRoZW50aWNhdGVkOiBmYWxzZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZpbmFsaXplKCgpID0+IHtcblx0XHRcdFx0Y29uc3QgYWZ0ZXJSZWZyZXNoU2Vzc2lvbiA9IHRoaXMuc2Vzc2lvblN1YmplY3QudmFsdWU7XG5cdFx0XHRcdHRoaXMuc2Vzc2lvblN1YmplY3QubmV4dCh7XG5cdFx0XHRcdFx0Li4uYWZ0ZXJSZWZyZXNoU2Vzc2lvbixcblx0XHRcdFx0XHRpc1Nlc3Npb25Mb2FkaW5nOiBmYWxzZVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdHJlZnJlc2hVc2VyKCkge1xuXHRcdGNvbnN0IGJlZm9yZVJlZnJlc2hVc2VyID0gdGhpcy51c2VyU3ViamVjdC52YWx1ZTtcblx0XHR0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuXHRcdFx0Li4uYmVmb3JlUmVmcmVzaFVzZXIsXG5cdFx0XHRpc1VzZXJMb2FkaW5nOiB0cnVlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5tZSgpLnBpcGUoXG5cdFx0XHR0YXAoKGRhdGEpID0+IHtcblx0XHRcdFx0Y29uc3QgYWZ0ZXJSZXF1ZXN0VXNlciA9IHRoaXMudXNlclN1YmplY3QudmFsdWU7XG5cdFx0XHRcdGlmIChkYXRhLmRhdGEpIHtcblx0XHRcdFx0XHR0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuXHRcdFx0XHRcdFx0Li4uYWZ0ZXJSZXF1ZXN0VXNlcixcblx0XHRcdFx0XHRcdHVzZXI6IHtcblx0XHRcdFx0XHRcdFx0Li4uZGF0YS5kYXRhXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZmluYWxpemUoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBhZnRlclJlZnJlc2hVc2VyID0gdGhpcy51c2VyU3ViamVjdC52YWx1ZTtcblx0XHRcdFx0dGhpcy51c2VyU3ViamVjdC5uZXh0KHtcblx0XHRcdFx0XHQuLi5hZnRlclJlZnJlc2hVc2VyLFxuXHRcdFx0XHRcdGlzVXNlckxvYWRpbmc6IGZhbHNlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cblx0Z2V0U2Vzc2lvblRva2VuKCkge1xuXHRcdGlmIChpc0Jyb3dzZXIoKSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGhpcy5kZXNjb3BlU2RrIGFzIEFuZ3VsYXJEZXNjb3BlU0RLICYge1xuXHRcdFx0XHRcdGdldFNlc3Npb25Ub2tlbjogKCkgPT4gc3RyaW5nIHwgbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0KS5nZXRTZXNzaW9uVG9rZW4oKTtcblx0XHR9XG5cdFx0Y29uc29sZS53YXJuKCdHZXQgc2Vzc2lvbiB0b2tlbiBpcyBub3Qgc3VwcG9ydGVkIGluIFNTUicpO1xuXHRcdHJldHVybiAnJztcblx0fVxuXG5cdGdldFJlZnJlc2hUb2tlbigpIHtcblx0XHRpZiAoaXNCcm93c2VyKCkpIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHRoaXMuZGVzY29wZVNkayBhcyBBbmd1bGFyRGVzY29wZVNESyAmIHtcblx0XHRcdFx0XHRnZXRSZWZyZXNoVG9rZW46ICgpID0+IHN0cmluZyB8IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdCkuZ2V0UmVmcmVzaFRva2VuKCk7XG5cdFx0fVxuXHRcdHRoaXMuZGVzY29wZVNkay5nZXRKd3RQZXJtaXNzaW9ucztcblx0XHRjb25zb2xlLndhcm4oJ0dldCByZWZyZXNoIHRva2VuIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU1NSJyk7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cblx0aXNTZXNzaW9uVG9rZW5FeHBpcmVkKHRva2VuID0gdGhpcy5nZXRTZXNzaW9uVG9rZW4oKSkge1xuXHRcdGlmIChpc0Jyb3dzZXIoKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5pc0p3dEV4cGlyZWQodG9rZW4gPz8gJycpO1xuXHRcdH1cblx0XHRjb25zb2xlLndhcm4oJ2lzU2Vzc2lvblRva2VuRXhwaXJlZCBpcyBub3Qgc3VwcG9ydGVkIGluIFNTUicpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0aXNSZWZyZXNoVG9rZW5FeHBpcmVkKHRva2VuID0gdGhpcy5nZXRSZWZyZXNoVG9rZW4oKSkge1xuXHRcdGlmIChpc0Jyb3dzZXIoKSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGhpcy5kZXNjb3BlU2RrIGFzIEFuZ3VsYXJEZXNjb3BlU0RLICYge1xuXHRcdFx0XHRcdGlzSnd0RXhwaXJlZDogKHRva2VuOiBzdHJpbmcpID0+IGJvb2xlYW4gfCBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHQpLmlzSnd0RXhwaXJlZCh0b2tlbiA/PyAnJyk7XG5cdFx0fVxuXHRcdGNvbnNvbGUud2FybignaXNSZWZyZXNoVG9rZW5FeHBpcmVkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU1NSJyk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRnZXRKd3RQZXJtaXNzaW9ucyh0b2tlbiA9IHRoaXMuZ2V0U2Vzc2lvblRva2VuKCksIHRlbmFudD86IHN0cmluZykge1xuXHRcdGlmICh0b2tlbiA9PT0gbnVsbCkge1xuXHRcdFx0Y29uc29sZS5lcnJvcignQ291bGQgbm90IGdldCBKV1QgUGVybWlzc2lvbnMgLSBub3QgYXV0aGVudGljYXRlZCcpO1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5kZXNjb3BlU2RrLmdldEp3dFBlcm1pc3Npb25zKHRva2VuLCB0ZW5hbnQpO1xuXHR9XG5cblx0Z2V0Snd0Um9sZXModG9rZW4gPSB0aGlzLmdldFNlc3Npb25Ub2tlbigpLCB0ZW5hbnQ/OiBzdHJpbmcpIHtcblx0XHRpZiAodG9rZW4gPT09IG51bGwpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBnZXQgSldUIFJvbGVzIC0gbm90IGF1dGhlbnRpY2F0ZWQnKTtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZGVzY29wZVNkay5nZXRKd3RSb2xlcyh0b2tlbiwgdGVuYW50KTtcblx0fVxuXG5cdGlzQXV0aGVudGljYXRlZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5zZXNzaW9uU3ViamVjdC52YWx1ZS5pc0F1dGhlbnRpY2F0ZWQ7XG5cdH1cblxuXHRwcml2YXRlIHNldFNlc3Npb24oc2Vzc2lvblRva2VuOiBzdHJpbmcgfCBudWxsKSB7XG5cdFx0Y29uc3QgY3VycmVudFNlc3Npb24gPSB0aGlzLnNlc3Npb25TdWJqZWN0LnZhbHVlO1xuXHRcdHRoaXMuc2Vzc2lvblN1YmplY3QubmV4dCh7XG5cdFx0XHRzZXNzaW9uVG9rZW4sXG5cdFx0XHRpc0F1dGhlbnRpY2F0ZWQ6ICEhc2Vzc2lvblRva2VuLFxuXHRcdFx0aXNTZXNzaW9uTG9hZGluZzogY3VycmVudFNlc3Npb24uaXNTZXNzaW9uTG9hZGluZ1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRVc2VyKHVzZXI6IFVzZXJSZXNwb25zZSkge1xuXHRcdGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy51c2VyU3ViamVjdC52YWx1ZTtcblx0XHR0aGlzLnVzZXJTdWJqZWN0Lm5leHQoe1xuXHRcdFx0aXNVc2VyTG9hZGluZzogY3VycmVudFVzZXIuaXNVc2VyTG9hZGluZyxcblx0XHRcdHVzZXJcblx0XHR9KTtcblx0fVxufVxuIl19