@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.
- package/.eslintrc.json +41 -0
- package/.prettierrc +7 -0
- package/CHANGELOG.md +5 -0
- package/LICENSE +21 -0
- package/README.md +647 -11
- package/angular.json +154 -0
- package/{esm2022 → dist/esm2022}/lib/components/access-key-management/access-key-management.component.mjs +4 -4
- package/{esm2022 → dist/esm2022}/lib/components/audit-management/audit-management.component.mjs +4 -4
- package/dist/esm2022/lib/components/descope/descope.component.mjs +156 -0
- package/{esm2022 → dist/esm2022}/lib/components/role-management/role-management.component.mjs +4 -4
- package/dist/esm2022/lib/components/sign-in-flow/sign-in-flow.component.mjs +44 -0
- package/dist/esm2022/lib/components/sign-up-flow/sign-up-flow.component.mjs +44 -0
- package/dist/esm2022/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.mjs +44 -0
- package/{esm2022 → dist/esm2022}/lib/components/user-management/user-management.component.mjs +4 -4
- package/dist/esm2022/lib/components/user-profile/user-profile.component.mjs +66 -0
- package/{esm2022 → dist/esm2022}/lib/descope-auth.module.mjs +5 -5
- package/{esm2022 → dist/esm2022}/lib/services/descope-auth.guard.mjs +1 -1
- package/dist/esm2022/lib/services/descope-auth.service.mjs +154 -0
- package/dist/esm2022/lib/services/descope.interceptor.mjs +51 -0
- package/dist/esm2022/lib/types/types.mjs +6 -0
- package/{esm2022 → dist/esm2022}/lib/utils/constants.mjs +1 -1
- package/dist/esm2022/lib/utils/helpers.mjs +27 -0
- package/{fesm2022 → dist/fesm2022}/descope-angular-sdk.mjs +37 -37
- package/dist/fesm2022/descope-angular-sdk.mjs.map +1 -0
- package/{lib → dist/lib}/services/descope-auth.service.d.ts +3 -2
- package/jest.config.js +17 -0
- package/package.json +62 -19
- package/project.json +17 -0
- package/projects/angular-sdk/.eslintrc.json +32 -0
- package/projects/angular-sdk/ng-package.json +17 -0
- package/projects/angular-sdk/package.json +87 -0
- package/projects/angular-sdk/src/environment.ts +3 -0
- package/projects/angular-sdk/src/lib/components/access-key-management/access-key-management.component.spec.ts +84 -0
- package/projects/angular-sdk/src/lib/components/access-key-management/access-key-management.component.ts +63 -0
- package/projects/angular-sdk/src/lib/components/audit-management/audit-management.component.spec.ts +84 -0
- package/projects/angular-sdk/src/lib/components/audit-management/audit-management.component.ts +63 -0
- package/projects/angular-sdk/src/lib/components/descope/descope.component.spec.ts +142 -0
- package/projects/angular-sdk/src/lib/components/descope/descope.component.ts +171 -0
- package/projects/angular-sdk/src/lib/components/role-management/role-management.component.spec.ts +84 -0
- package/projects/angular-sdk/src/lib/components/role-management/role-management.component.ts +63 -0
- package/projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.html +17 -0
- package/projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.spec.ts +53 -0
- package/projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.ts +35 -0
- package/projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.html +17 -0
- package/projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.spec.ts +51 -0
- package/projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.ts +35 -0
- package/projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.html +17 -0
- package/projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.spec.ts +53 -0
- package/projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.ts +35 -0
- package/projects/angular-sdk/src/lib/components/user-management/user-management.component.spec.ts +84 -0
- package/projects/angular-sdk/src/lib/components/user-management/user-management.component.ts +64 -0
- package/projects/angular-sdk/src/lib/components/user-profile/user-profile.component.spec.ts +93 -0
- package/projects/angular-sdk/src/lib/components/user-profile/user-profile.component.ts +77 -0
- package/projects/angular-sdk/src/lib/descope-auth.module.ts +61 -0
- package/projects/angular-sdk/src/lib/services/descope-auth.guard.spec.ts +76 -0
- package/projects/angular-sdk/src/lib/services/descope-auth.guard.ts +16 -0
- package/projects/angular-sdk/src/lib/services/descope-auth.service.spec.ts +309 -0
- package/projects/angular-sdk/src/lib/services/descope-auth.service.ts +200 -0
- package/projects/angular-sdk/src/lib/services/descope.interceptor.spec.ts +102 -0
- package/projects/angular-sdk/src/lib/services/descope.interceptor.ts +76 -0
- package/projects/angular-sdk/src/lib/types/types.ts +15 -0
- package/projects/angular-sdk/src/lib/utils/constants.ts +8 -0
- package/projects/angular-sdk/src/lib/utils/helpers.spec.ts +103 -0
- package/projects/angular-sdk/src/lib/utils/helpers.ts +36 -0
- package/projects/angular-sdk/src/public-api.ts +18 -0
- package/projects/angular-sdk/tsconfig.lib.json +12 -0
- package/projects/angular-sdk/tsconfig.lib.prod.json +10 -0
- package/projects/angular-sdk/tsconfig.spec.json +11 -0
- package/projects/demo-app/.eslintrc.json +31 -0
- package/projects/demo-app/src/app/app-routing.module.ts +33 -0
- package/projects/demo-app/src/app/app.component.html +3 -0
- package/projects/demo-app/src/app/app.component.scss +18 -0
- package/projects/demo-app/src/app/app.component.spec.ts +37 -0
- package/projects/demo-app/src/app/app.component.ts +8 -0
- package/projects/demo-app/src/app/app.module.ts +63 -0
- package/projects/demo-app/src/app/home/home.component.html +32 -0
- package/projects/demo-app/src/app/home/home.component.scss +15 -0
- package/projects/demo-app/src/app/home/home.component.spec.ts +44 -0
- package/projects/demo-app/src/app/home/home.component.ts +85 -0
- package/projects/demo-app/src/app/interceptor/auth.interceptor.ts +20 -0
- package/projects/demo-app/src/app/login/login.component.html +20 -0
- package/projects/demo-app/src/app/login/login.component.spec.ts +42 -0
- package/projects/demo-app/src/app/login/login.component.ts +41 -0
- package/projects/demo-app/src/app/manage-access-keys/manage-access-keys.component.html +12 -0
- package/projects/demo-app/src/app/manage-access-keys/manage-access-keys.component.spec.ts +36 -0
- package/projects/demo-app/src/app/manage-access-keys/manage-access-keys.component.ts +15 -0
- package/projects/demo-app/src/app/manage-audit/manage-audit.component.html +6 -0
- package/projects/demo-app/src/app/manage-audit/manage-audit.component.spec.ts +36 -0
- package/projects/demo-app/src/app/manage-audit/manage-audit.component.ts +15 -0
- package/projects/demo-app/src/app/manage-roles/manage-roles.component.html +6 -0
- package/projects/demo-app/src/app/manage-roles/manage-roles.component.spec.ts +36 -0
- package/projects/demo-app/src/app/manage-roles/manage-roles.component.ts +15 -0
- package/projects/demo-app/src/app/manage-users/manage-users.component.html +6 -0
- package/projects/demo-app/src/app/manage-users/manage-users.component.spec.ts +36 -0
- package/projects/demo-app/src/app/manage-users/manage-users.component.ts +15 -0
- package/projects/demo-app/src/app/my-user-profile/my-user-profile.component.html +6 -0
- package/projects/demo-app/src/app/my-user-profile/my-user-profile.component.spec.ts +36 -0
- package/projects/demo-app/src/app/my-user-profile/my-user-profile.component.ts +20 -0
- package/projects/demo-app/src/app/my-user-profile/my-user-profile.scss +18 -0
- package/projects/demo-app/src/app/protected/protected.component.html +18 -0
- package/projects/demo-app/src/app/protected/protected.component.scss +8 -0
- package/projects/demo-app/src/app/protected/protected.component.spec.ts +42 -0
- package/projects/demo-app/src/app/protected/protected.component.ts +41 -0
- package/projects/demo-app/src/assets/.gitkeep +0 -0
- package/projects/demo-app/src/environments/conifg.ts +14 -0
- package/projects/demo-app/src/environments/environment.ts +20 -0
- package/projects/demo-app/src/favicon.ico +0 -0
- package/projects/demo-app/src/index.html +17 -0
- package/projects/demo-app/src/main.ts +7 -0
- package/projects/demo-app/src/styles.scss +21 -0
- package/projects/demo-app/tsconfig.app.json +11 -0
- package/projects/demo-app/tsconfig.spec.json +10 -0
- package/scripts/setversion/setversion.js +20 -0
- package/setup-jest.ts +1 -0
- package/tsconfig.json +36 -0
- package/esm2022/lib/components/descope/descope.component.mjs +0 -156
- package/esm2022/lib/components/sign-in-flow/sign-in-flow.component.mjs +0 -44
- package/esm2022/lib/components/sign-up-flow/sign-up-flow.component.mjs +0 -44
- package/esm2022/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.mjs +0 -44
- package/esm2022/lib/components/user-profile/user-profile.component.mjs +0 -66
- package/esm2022/lib/services/descope-auth.service.mjs +0 -154
- package/esm2022/lib/services/descope.interceptor.mjs +0 -51
- package/esm2022/lib/types/types.mjs +0 -6
- package/esm2022/lib/utils/helpers.mjs +0 -27
- package/fesm2022/descope-angular-sdk.mjs.map +0 -1
- /package/{environment.d.ts → dist/environment.d.ts} +0 -0
- /package/{esm2022 → dist/esm2022}/descope-angular-sdk.mjs +0 -0
- /package/{esm2022 → dist/esm2022}/environment.mjs +0 -0
- /package/{esm2022 → dist/esm2022}/public-api.mjs +0 -0
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{lib → dist/lib}/components/access-key-management/access-key-management.component.d.ts +0 -0
- /package/{lib → dist/lib}/components/audit-management/audit-management.component.d.ts +0 -0
- /package/{lib → dist/lib}/components/descope/descope.component.d.ts +0 -0
- /package/{lib → dist/lib}/components/role-management/role-management.component.d.ts +0 -0
- /package/{lib → dist/lib}/components/sign-in-flow/sign-in-flow.component.d.ts +0 -0
- /package/{lib → dist/lib}/components/sign-up-flow/sign-up-flow.component.d.ts +0 -0
- /package/{lib → dist/lib}/components/sign-up-or-in-flow/sign-up-or-in-flow.component.d.ts +0 -0
- /package/{lib → dist/lib}/components/user-management/user-management.component.d.ts +0 -0
- /package/{lib → dist/lib}/components/user-profile/user-profile.component.d.ts +0 -0
- /package/{lib → dist/lib}/descope-auth.module.d.ts +0 -0
- /package/{lib → dist/lib}/services/descope-auth.guard.d.ts +0 -0
- /package/{lib → dist/lib}/services/descope.interceptor.d.ts +0 -0
- /package/{lib → dist/lib}/types/types.d.ts +0 -0
- /package/{lib → dist/lib}/utils/constants.d.ts +0 -0
- /package/{lib → dist/lib}/utils/helpers.d.ts +0 -0
- /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
|