@descope/angular-sdk 0.28.3 → 0.28.5

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.
@@ -1,4 +1,4 @@
1
1
  export const environment = {
2
- buildVersion: '0.28.3'
2
+ buildVersion: '0.28.5'
3
3
  };
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLFlBQVksRUFBRSxRQUFRO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW52aXJvbm1lbnQgPSB7XG4gIGJ1aWxkVmVyc2lvbjogJzAuMjguMydcbn07XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLFlBQVksRUFBRSxRQUFRO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW52aXJvbm1lbnQgPSB7XG4gIGJ1aWxkVmVyc2lvbjogJzAuMjguNSdcbn07XG4iXX0=
@@ -1,10 +1,13 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild, CUSTOM_ELEMENTS_SCHEMA, Inject, PLATFORM_ID } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef, CUSTOM_ELEMENTS_SCHEMA, Inject, PLATFORM_ID } from '@angular/core';
2
2
  import { isPlatformBrowser } from '@angular/common';
3
3
  import { from } from 'rxjs';
4
4
  import { baseHeaders } from '../../utils/constants';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "../../services/descope-auth.service";
7
7
  import * as i2 from "../../types/types";
8
+ // Node.ELEMENT_NODE, as a literal - the Node global is not guaranteed to exist
9
+ // during server-side rendering.
10
+ const ELEMENT_NODE = 1;
8
11
  export class DescopeComponent {
9
12
  get clientString() {
10
13
  if (!this.client)
@@ -35,6 +38,7 @@ export class DescopeComponent {
35
38
  this.elementRef = elementRef;
36
39
  this.authService = authService;
37
40
  this.platformId = platformId;
41
+ this.isDestroyed = false;
38
42
  this.success = new EventEmitter();
39
43
  this.error = new EventEmitter();
40
44
  this.ready = new EventEmitter();
@@ -47,11 +51,52 @@ export class DescopeComponent {
47
51
  this.customStorage = descopeConfig.customStorage;
48
52
  }
49
53
  async ngOnInit() {
50
- // Only load web component in browser environment
51
- if (!isPlatformBrowser(this.platformId)) {
52
- return;
54
+ // Load the web component before building the element. The order matters:
55
+ // loadWebComponent sets DescopeWc.sdkConfigOverrides, and if something else
56
+ // on the page already imported @descope/web-component then descope-wc is
57
+ // already defined, so the element would initialize the moment it is
58
+ // connected. Connecting it first would let the flow start without the
59
+ // Angular SDK's base headers, persistTokens: false, and beforeRequest hook.
60
+ if (isPlatformBrowser(this.platformId)) {
61
+ await this.loadWebComponent();
53
62
  }
54
- await this.loadWebComponent();
63
+ // Built on the server too, so the server-rendered markup keeps containing
64
+ // descope-wc as it did before. ngSkipHydration means the client re-renders
65
+ // this subtree anyway, so the server copy only serves the first paint.
66
+ this.createWebComponent();
67
+ }
68
+ /**
69
+ * Builds the template while its nodes are still detached from the document,
70
+ * applies the attribute bindings, and only then connects the element. This is
71
+ * what guarantees project-id and flow-id are present when the custom element
72
+ * runs its connectedCallback.
73
+ */
74
+ createWebComponent() {
75
+ // ngOnInit awaits the import, so the component can already be destroyed by
76
+ // the time we get here (a route change while the chunk is downloading).
77
+ // Inserting into a destroyed ViewContainerRef would throw, and nothing
78
+ // would ever clean the view up.
79
+ if (this.isDestroyed || this.wcView)
80
+ return;
81
+ // createEmbeddedView builds the nodes without putting them in the document,
82
+ // so the element is not connected yet and its connectedCallback has not run.
83
+ const view = this.wcTpl.createEmbeddedView(undefined);
84
+ // Apply the [attr.*] bindings while the nodes are still detached.
85
+ view.detectChanges();
86
+ this.wcView = view;
87
+ // The template holds exactly one element, <descope-wc>, and each component
88
+ // instance builds its own view - so this picks that instance's own element
89
+ // and never sees another instance's. Selected by node type rather than as
90
+ // rootNodes[0] so template whitespace can never shift it, and compared
91
+ // against a literal because Node is not guaranteed to exist during SSR.
92
+ this.webComponent = view.rootNodes.find((node) => node.nodeType === ELEMENT_NODE);
93
+ // Inserting connects the element - its connectedCallback runs here, with
94
+ // every attribute already set.
95
+ this.wcAnchor.insert(view);
96
+ if (!this.webComponent)
97
+ return;
98
+ this.setupNonAttributeProperties();
99
+ this.setupEventListeners();
55
100
  }
56
101
  async loadWebComponent() {
57
102
  if (this.isWebComponentLoaded) {
@@ -89,12 +134,17 @@ export class DescopeComponent {
89
134
  console.error('Failed to load Descope web component:', error);
90
135
  }
91
136
  }
92
- ngAfterViewInit() {
93
- if (!this.descopeWc?.nativeElement)
94
- return;
95
- this.webComponent = this.descopeWc.nativeElement;
96
- this.setupNonAttributeProperties();
97
- this.setupEventListeners();
137
+ ngOnDestroy() {
138
+ // Guards the ngOnInit race - the continuation can still be pending here.
139
+ this.isDestroyed = true;
140
+ // wcAnchor owns the view, so Angular would tear it down anyway - but when a
141
+ // parent view is going away Angular skips removing the individual nodes, and
142
+ // then the element never disconnects. Destroying it here takes the element
143
+ // out of the DOM, so the web component's disconnectedCallback runs and drops
144
+ // its window listeners and flow-state subscriptions.
145
+ this.wcView?.destroy();
146
+ this.wcView = undefined;
147
+ this.webComponent = undefined;
98
148
  }
99
149
  ngOnChanges() {
100
150
  if (this.webComponent) {
@@ -139,36 +189,38 @@ export class DescopeComponent {
139
189
  }
140
190
  }
141
191
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DescopeComponent, deps: [{ token: i0.ElementRef }, { token: i1.DescopeAuthService }, { token: i2.DescopeAuthConfig }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DescopeComponent, isStandalone: true, selector: "descope[flowId]", inputs: { flowId: "flowId", locale: "locale", theme: "theme", tenant: "tenant", telemetryKey: "telemetryKey", redirectUrl: "redirectUrl", autoFocus: "autoFocus", validateOnBlur: "validateOnBlur", restartOnError: "restartOnError", sendSessionToken: "sendSessionToken", debug: "debug", errorTransformer: "errorTransformer", onScreenUpdate: "onScreenUpdate", client: "client", nonce: "nonce", dismissScreenErrorOnInput: "dismissScreenErrorOnInput", form: "form", logger: "logger", styleId: "styleId", themeOverride: "themeOverride", popupOrigin: "popupOrigin" }, outputs: { success: "success", error: "error", ready: "ready" }, viewQueries: [{ propertyName: "descopeWc", first: true, predicate: ["descopeWc"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
143
- <descope-wc
144
- #descopeWc
145
- [attr.project-id]="projectId"
146
- [attr.flow-id]="flowId"
147
- [attr.base-url]="baseUrl"
148
- [attr.base-static-url]="baseStaticUrl"
149
- [attr.base-cdn-url]="baseCdnUrl"
150
- [attr.store-last-authenticated-user]="storeLastAuthenticatedUser"
151
- [attr.theme]="theme"
152
- [attr.locale]="locale"
153
- [attr.tenant]="tenant"
154
- [attr.telemetry-key]="telemetryKey"
155
- [attr.redirect-url]="redirectUrl"
156
- [attr.auto-focus]="autoFocus"
157
- [attr.validate-on-blur]="validateOnBlur"
158
- [attr.restart-on-error]="restartOnError"
159
- [attr.send-session-token]="sendSessionToken"
160
- [attr.debug]="debug"
161
- [attr.style-id]="styleId"
162
- [attr.theme-override]="themeOverride"
163
- [attr.client]="clientString"
164
- [attr.nonce]="nonceString"
165
- [attr.dismiss-screen-error-on-input]="dismissScreenErrorOnInput"
166
- [attr.popup-origin]="popupOrigin"
167
- [attr.form]="formString"
168
- [customStorage]="customStorage"
169
- >
170
- <ng-content></ng-content>
171
- </descope-wc>
192
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DescopeComponent, isStandalone: true, selector: "descope[flowId]", inputs: { flowId: "flowId", locale: "locale", theme: "theme", tenant: "tenant", telemetryKey: "telemetryKey", redirectUrl: "redirectUrl", autoFocus: "autoFocus", validateOnBlur: "validateOnBlur", restartOnError: "restartOnError", sendSessionToken: "sendSessionToken", debug: "debug", errorTransformer: "errorTransformer", onScreenUpdate: "onScreenUpdate", client: "client", nonce: "nonce", dismissScreenErrorOnInput: "dismissScreenErrorOnInput", form: "form", logger: "logger", styleId: "styleId", themeOverride: "themeOverride", popupOrigin: "popupOrigin" }, outputs: { success: "success", error: "error", ready: "ready" }, host: { attributes: { "ngSkipHydration": "true" } }, viewQueries: [{ propertyName: "wcTpl", first: true, predicate: ["wcTpl"], descendants: true, static: true }, { propertyName: "wcAnchor", first: true, predicate: ["wcAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
193
+ <ng-container #wcAnchor></ng-container>
194
+ <ng-template #wcTpl>
195
+ <descope-wc
196
+ [attr.project-id]="projectId"
197
+ [attr.flow-id]="flowId"
198
+ [attr.base-url]="baseUrl"
199
+ [attr.base-static-url]="baseStaticUrl"
200
+ [attr.base-cdn-url]="baseCdnUrl"
201
+ [attr.store-last-authenticated-user]="storeLastAuthenticatedUser"
202
+ [attr.theme]="theme"
203
+ [attr.locale]="locale"
204
+ [attr.tenant]="tenant"
205
+ [attr.telemetry-key]="telemetryKey"
206
+ [attr.redirect-url]="redirectUrl"
207
+ [attr.auto-focus]="autoFocus"
208
+ [attr.validate-on-blur]="validateOnBlur"
209
+ [attr.restart-on-error]="restartOnError"
210
+ [attr.send-session-token]="sendSessionToken"
211
+ [attr.debug]="debug"
212
+ [attr.style-id]="styleId"
213
+ [attr.theme-override]="themeOverride"
214
+ [attr.client]="clientString"
215
+ [attr.nonce]="nonceString"
216
+ [attr.dismiss-screen-error-on-input]="dismissScreenErrorOnInput"
217
+ [attr.popup-origin]="popupOrigin"
218
+ [attr.form]="formString"
219
+ [customStorage]="customStorage"
220
+ >
221
+ <ng-content></ng-content>
222
+ </descope-wc>
223
+ </ng-template>
172
224
  `, isInline: true }); }
173
225
  }
174
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DescopeComponent, decorators: [{
@@ -177,44 +229,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
177
229
  selector: 'descope[flowId]',
178
230
  standalone: true,
179
231
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
232
+ // The subtree is built imperatively (see ngOnInit), so there is nothing for
233
+ // Angular to hydrate here - it re-renders it on the client instead.
234
+ host: { ngSkipHydration: 'true' },
235
+ // The element is intentionally declared inside an <ng-template> instead of
236
+ // rendered directly. Angular appends an element to the DOM in its creation
237
+ // pass but applies [attr.*] bindings in the later update pass, so a
238
+ // <descope-wc> rendered directly here would be connected - and would run its
239
+ // connectedCallback - before it had a project-id. The custom element reads
240
+ // project-id at that moment, fails, and can never recover, which broke every
241
+ // mount after the first (descope/etc#18415). Building the template by hand
242
+ // lets the bindings run while the nodes are still detached.
180
243
  template: `
181
- <descope-wc
182
- #descopeWc
183
- [attr.project-id]="projectId"
184
- [attr.flow-id]="flowId"
185
- [attr.base-url]="baseUrl"
186
- [attr.base-static-url]="baseStaticUrl"
187
- [attr.base-cdn-url]="baseCdnUrl"
188
- [attr.store-last-authenticated-user]="storeLastAuthenticatedUser"
189
- [attr.theme]="theme"
190
- [attr.locale]="locale"
191
- [attr.tenant]="tenant"
192
- [attr.telemetry-key]="telemetryKey"
193
- [attr.redirect-url]="redirectUrl"
194
- [attr.auto-focus]="autoFocus"
195
- [attr.validate-on-blur]="validateOnBlur"
196
- [attr.restart-on-error]="restartOnError"
197
- [attr.send-session-token]="sendSessionToken"
198
- [attr.debug]="debug"
199
- [attr.style-id]="styleId"
200
- [attr.theme-override]="themeOverride"
201
- [attr.client]="clientString"
202
- [attr.nonce]="nonceString"
203
- [attr.dismiss-screen-error-on-input]="dismissScreenErrorOnInput"
204
- [attr.popup-origin]="popupOrigin"
205
- [attr.form]="formString"
206
- [customStorage]="customStorage"
207
- >
208
- <ng-content></ng-content>
209
- </descope-wc>
244
+ <ng-container #wcAnchor></ng-container>
245
+ <ng-template #wcTpl>
246
+ <descope-wc
247
+ [attr.project-id]="projectId"
248
+ [attr.flow-id]="flowId"
249
+ [attr.base-url]="baseUrl"
250
+ [attr.base-static-url]="baseStaticUrl"
251
+ [attr.base-cdn-url]="baseCdnUrl"
252
+ [attr.store-last-authenticated-user]="storeLastAuthenticatedUser"
253
+ [attr.theme]="theme"
254
+ [attr.locale]="locale"
255
+ [attr.tenant]="tenant"
256
+ [attr.telemetry-key]="telemetryKey"
257
+ [attr.redirect-url]="redirectUrl"
258
+ [attr.auto-focus]="autoFocus"
259
+ [attr.validate-on-blur]="validateOnBlur"
260
+ [attr.restart-on-error]="restartOnError"
261
+ [attr.send-session-token]="sendSessionToken"
262
+ [attr.debug]="debug"
263
+ [attr.style-id]="styleId"
264
+ [attr.theme-override]="themeOverride"
265
+ [attr.client]="clientString"
266
+ [attr.nonce]="nonceString"
267
+ [attr.dismiss-screen-error-on-input]="dismissScreenErrorOnInput"
268
+ [attr.popup-origin]="popupOrigin"
269
+ [attr.form]="formString"
270
+ [customStorage]="customStorage"
271
+ >
272
+ <ng-content></ng-content>
273
+ </descope-wc>
274
+ </ng-template>
210
275
  `
211
276
  }]
212
277
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DescopeAuthService }, { type: i2.DescopeAuthConfig }, { type: undefined, decorators: [{
213
278
  type: Inject,
214
279
  args: [PLATFORM_ID]
215
- }] }], propDecorators: { descopeWc: [{
280
+ }] }], propDecorators: { wcTpl: [{
281
+ type: ViewChild,
282
+ args: ['wcTpl', { static: true }]
283
+ }], wcAnchor: [{
216
284
  type: ViewChild,
217
- args: ['descopeWc']
285
+ args: ['wcAnchor', { read: ViewContainerRef, static: true }]
218
286
  }], flowId: [{
219
287
  type: Input
220
288
  }], locale: [{
@@ -264,4 +332,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
264
332
  }], ready: [{
265
333
  type: Output
266
334
  }] } });
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvbGliL2NvbXBvbmVudHMvZGVzY29wZS9kZXNjb3BlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFFVCxzQkFBc0IsRUFDdEIsTUFBTSxFQUNOLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQTZDcEQsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixJQUFJLFlBQVk7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ2xDLE9BQU8sT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNqQyxJQUFJ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QUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBU0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsS0FBSztzQkFBZCxNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBBZnRlclZpZXdJbml0LFxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICBJbmplY3QsXG4gIFBMQVRGT1JNX0lEXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGVzY29wZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGVzY29wZS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYmFzZUhlYWRlcnMgfSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGVzY29wZUF1dGhDb25maWcsIElMb2dnZXIgfSBmcm9tICcuLi8uLi90eXBlcy90eXBlcyc7XG5cbi8vIFVzZSBcImltcG9ydCB0eXBlXCIgdG8gaW1wb3J0IG9ubHkgdGhlIFR5cGVTY3JpcHQgdHlwZSBpbmZvcm1hdGlvbi5cbi8vIFRoaXMgaXMgc2FmZSBmb3IgU1NSIGJlY2F1c2UgaXQncyBjb21wbGV0ZWx5IGVyYXNlZCBhdCBjb21waWxlIHRpbWUgYW5kIGdlbmVyYXRlcyBubyBydW50aW1lIGltcG9ydC5cbmltcG9ydCB0eXBlIERlc2NvcGVXZWJDb21wb25lbnQgZnJvbSAnQGRlc2NvcGUvd2ViLWNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbVN0b3JhZ2UgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCBPdmVycmlkZVRoZW1lcyBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzY29wZVtmbG93SWRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkZXNjb3BlLXdjXG4gICAgICAjZGVzY29wZVdjXG4gICAgICBbYXR0ci5wcm9qZWN0LWlkXT1cInByb2plY3RJZFwiXG4gICAgICBbYXR0ci5mbG93LWlkXT1cImZsb3dJZFwiXG4gICAgICBbYXR0ci5iYXNlLXVybF09XCJiYXNlVXJsXCJcbiAgICAgIFthdHRyLmJhc2Utc3RhdGljLXVybF09XCJiYXNlU3RhdGljVXJsXCJcbiAgICAgIFthdHRyLmJhc2UtY2RuLXVybF09XCJiYXNlQ2RuVXJsXCJcbiAgICAgIFthdHRyLnN0b3JlLWxhc3QtYXV0aGVudGljYXRlZC11c2VyXT1cInN0b3JlTGFzdEF1dGhlbnRpY2F0ZWRVc2VyXCJcbiAgICAgIFthdHRyLnRoZW1lXT1cInRoZW1lXCJcbiAgICAgIFthdHRyLmxvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW2F0dHIudGVuYW50XT1cInRlbmFudFwiXG4gICAgICBbYXR0ci50ZWxlbWV0cnkta2V5XT1cInRlbGVtZXRyeUtleVwiXG4gICAgICBbYXR0ci5yZWRpcmVjdC11cmxdPVwicmVkaXJlY3RVcmxcIlxuICAgICAgW2F0dHIuYXV0by1mb2N1c109XCJhdXRvRm9jdXNcIlxuICAgICAgW2F0dHIudmFsaWRhdGUtb24tYmx1cl09XCJ2YWxpZGF0ZU9uQmx1clwiXG4gICAgICBbYXR0ci5yZXN0YXJ0LW9uLWVycm9yXT1cInJlc3RhcnRPbkVycm9yXCJcbiAgICAgIFthdHRyLnNlbmQtc2Vzc2lvbi10b2tlbl09XCJzZW5kU2Vzc2lvblRva2VuXCJcbiAgICAgIFthdHRyLmRlYnVnXT1cImRlYnVnXCJcbiAgICAgIFthdHRyLnN0eWxlLWlkXT1cInN0eWxlSWRcIlxuICAgICAgW2F0dHIudGhlbWUtb3ZlcnJpZGVdPVwidGhlbWVPdmVycmlkZVwiXG4gICAgICBbYXR0ci5jbGllbnRdPVwiY2xpZW50U3RyaW5nXCJcbiAgICAgIFthdHRyLm5vbmNlXT1cIm5vbmNlU3RyaW5nXCJcbiAgICAgIFthdHRyLmRpc21pc3Mtc2NyZWVuLWVycm9yLW9uLWlucHV0XT1cImRpc21pc3NTY3JlZW5FcnJvck9uSW5wdXRcIlxuICAgICAgW2F0dHIucG9wdXAtb3JpZ2luXT1cInBvcHVwT3JpZ2luXCJcbiAgICAgIFthdHRyLmZvcm1dPVwiZm9ybVN0cmluZ1wiXG4gICAgICBbY3VzdG9tU3RvcmFnZV09XCJjdXN0b21TdG9yYWdlXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kZXNjb3BlLXdjPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERlc2NvcGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2Rlc2NvcGVXYycpXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzY29wZVdjITogRWxlbWVudFJlZjxEZXNjb3BlV2ViQ29tcG9uZW50PjtcblxuICBnZXQgY2xpZW50U3RyaW5nKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmNsaWVudCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuY2xpZW50KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG5vbmNlU3RyaW5nKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLm5vbmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5ub25jZSA9PT0gJ3N0cmluZycgPyB0aGlzLm5vbmNlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGZvcm1TdHJpbmcoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuZm9ybSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByb2plY3RJZCE6IHN0cmluZztcbiAgYmFzZVVybD86IHN0cmluZztcbiAgYmFzZVN0YXRpY1VybD86IHN0cmluZztcbiAgYmFzZUNkblVybD86IHN0cmluZztcbiAgc3RvcmVMYXN0QXV0aGVudGljYXRlZFVzZXI/OiBib29sZWFuO1xuICBjdXN0b21TdG9yYWdlPzogQ3VzdG9tU3RvcmFnZTtcbiAgQElucHV0KCkgZmxvd0lkITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuICBASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyB8ICdvcyc7XG4gIEBJbnB1dCgpIHRlbmFudDogc3RyaW5nO1xuICBASW5wdXQoKSB0ZWxlbWV0cnlLZXk6IHN0cmluZztcbiAgQElucHV0KCkgcmVkaXJlY3RVcmw6IHN0cmluZztcbiAgQElucHV0KCkgYXV0b0ZvY3VzOiB0cnVlIHwgZmFsc2UgfCAnc2tpcEZpcnN0U2NyZWVuJztcbiAgQElucHV0KCkgdmFsaWRhdGVPbkJsdXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlc3RhcnRPbkVycm9yOiBib29sZWFuO1xuICBASW5wdXQoKSBzZW5kU2Vzc2lvblRva2VuOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGRlYnVnOiBib29sZWFuO1xuICBASW5wdXQoKSBlcnJvclRyYW5zZm9ybWVyOiAoZXJyb3I6IHsgdGV4dDogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfSkgPT4gc3RyaW5nO1xuICBASW5wdXQoKSBvblNjcmVlblVwZGF0ZTogKFxuICAgIHNjcmVlbk5hbWU6IHN0cmluZyxcbiAgICBjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIG5leHQ6IChcbiAgICAgIGludGVyYWN0aW9uSWQ6IHN0cmluZyxcbiAgICAgIGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICApID0+IFByb21pc2U8dW5rbm93bj4sXG4gICAgcmVmOiBIVE1MRWxlbWVudFxuICApID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBjbGllbnQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIEBJbnB1dCgpIG5vbmNlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc21pc3NTY3JlZW5FcnJvck9uSW5wdXQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIEBJbnB1dCgpIGxvZ2dlcjogSUxvZ2dlcjtcbiAgQElucHV0KCkgc3R5bGVJZDogc3RyaW5nO1xuICBASW5wdXQoKSB0aGVtZU92ZXJyaWRlOiBPdmVycmlkZVRoZW1lcztcbiAgQElucHV0KCkgcG9wdXBPcmlnaW46IHN0cmluZztcblxuICBAT3V0cHV0KCkgc3VjY2VzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD4oKTtcbiAgQE91dHB1dCgpIGVycm9yOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWR5OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSB3ZWJDb21wb25lbnQ/OiBEZXNjb3BlV2ViQ29tcG9uZW50O1xuICBwcml2YXRlIGlzV2ViQ29tcG9uZW50TG9hZGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IERlc2NvcGVBdXRoU2VydmljZSxcbiAgICBkZXNjb3BlQ29uZmlnOiBEZXNjb3BlQXV0aENvbmZpZyxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdFxuICApIHtcbiAgICB0aGlzLnByb2plY3RJZCA9IGRlc2NvcGVDb25maWcucHJvamVjdElkO1xuICAgIHRoaXMuYmFzZVVybCA9IGRlc2NvcGVDb25maWcuYmFzZVVybDtcbiAgICB0aGlzLmJhc2VTdGF0aWNVcmwgPSBkZXNjb3BlQ29uZmlnLmJhc2VTdGF0aWNVcmw7XG4gICAgdGhpcy5iYXNlQ2RuVXJsID0gZGVzY29wZUNvbmZpZy5iYXNlQ2RuVXJsO1xuICAgIHRoaXMuc3RvcmVMYXN0QXV0aGVudGljYXRlZFVzZXIgPSBkZXNjb3BlQ29uZmlnLnN0b3JlTGFzdEF1dGhlbnRpY2F0ZWRVc2VyO1xuICAgIHRoaXMuY3VzdG9tU3RvcmFnZSA9IGRlc2NvcGVDb25maWcuY3VzdG9tU3RvcmFnZTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE9ubHkgbG9hZCB3ZWIgY29tcG9uZW50IGluIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmxvYWRXZWJDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFdlYkNvbXBvbmVudCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc1dlYkNvbXBvbmVudExvYWRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBEeW5hbWljYWxseSBpbXBvcnQgdGhlIHdlYiBjb21wb25lbnQgb25seSBpbiBicm93c2VyIGNvbnRleHRcbiAgICAgIGNvbnN0IERlc2NvcGVXY01vZHVsZSA9IGF3YWl0IGltcG9ydCgnQGRlc2NvcGUvd2ViLWNvbXBvbmVudCcpO1xuICAgICAgY29uc3QgRGVzY29wZVdjID0gRGVzY29wZVdjTW9kdWxlLmRlZmF1bHQ7XG4gICAgICBjb25zdCBzZGsgPSB0aGlzLmF1dGhTZXJ2aWNlLmRlc2NvcGVTZGs7XG5cbiAgICAgIERlc2NvcGVXYy5zZGtDb25maWdPdmVycmlkZXMgPSB7XG4gICAgICAgIC8vIE92ZXJyaWRlcyB0aGUgd2ViLWNvbXBvbmVudCdzIGJhc2UgaGVhZGVycyB0byBpbmRpY2F0ZSB1c2FnZSB2aWEgdGhlIEFuZ3VsYXIgU0RLXG4gICAgICAgIGJhc2VIZWFkZXJzLFxuICAgICAgICAvLyBEaXNhYmxlcyB0b2tlbiBwZXJzaXN0ZW5jZSB3aXRoaW4gdGhlIHdlYi1jb21wb25lbnQgdG8gZGVsZWdhdGUgdG9rZW4gbWFuYWdlbWVudFxuICAgICAgICAvLyB0byB0aGUgZ2xvYmFsIFNESyBob29rcy4gVGhpcyBlbnN1cmVzIHRva2VuIGhhbmRsaW5nIGFsaWducyB3aXRoIHRoZSBTREsncyBjb25maWd1cmF0aW9uLFxuICAgICAgICAvLyBhbmQgd2ViLWNvbXBvbmVudCByZXF1ZXN0cyBsZXZlcmFnZSB0aGUgZ2xvYmFsIFNESydzIGJlZm9yZVJlcXVlc3QgaG9va3MgZm9yIGNvbnNpc3RlbmN5XG4gICAgICAgIHBlcnNpc3RUb2tlbnM6IGZhbHNlLFxuICAgICAgICBob29rczoge1xuICAgICAgICAgIGdldCBiZWZvcmVSZXF1ZXN0KCkge1xuICAgICAgICAgICAgLy8gUmV0cmlldmVzIHRoZSBiZWZvcmVSZXF1ZXN0IGhvb2sgZnJvbSB0aGUgZ2xvYmFsIFNESywgd2hpY2ggaXMgaW5pdGlhbGl6ZWRcbiAgICAgICAgICAgIC8vIHdpdGhpbiB0aGUgQXV0aFByb3ZpZGVyIHVzaW5nIHRoZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24uIFRoaXMgYXBwcm9hY2ggZW5zdXJlc1xuICAgICAgICAgICAgLy8gdGhlIHdlYi1jb21wb25lbnQgdXRpbGl6ZXMgdGhlIHNhbWUgYmVmb3JlUmVxdWVzdCBob29rcyBhcyB0aGUgZ2xvYmFsIFNES1xuICAgICAgICAgICAgcmV0dXJuIHNkay5odHRwQ2xpZW50Lmhvb2tzPy5iZWZvcmVSZXF1ZXN0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2V0IGJlZm9yZVJlcXVlc3QoXykge1xuICAgICAgICAgICAgLy8gVGhlIGVtcHR5IHNldHRlciBwcmV2ZW50cyBydW50aW1lIGVycm9ycyB3aGVuIGF0dGVtcHRzIGFyZSBtYWRlIHRvIGFzc2lnbiBhIHZhbHVlIHRvICdiZWZvcmVSZXF1ZXN0Jy5cbiAgICAgICAgICAgIC8vIEphdmFTY3JpcHQgb2JqZWN0cyBkZWZhdWx0IHRvIGhhdmluZyBib3RoIGdldHRlcnMgYW5kIHNldHRlcnNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHRoaXMuaXNXZWJDb21wb25lbnRMb2FkZWQgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgRGVzY29wZSB3ZWIgY29tcG9uZW50OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRlc2NvcGVXYz8ubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgdGhpcy53ZWJDb21wb25lbnQgPSB0aGlzLmRlc2NvcGVXYy5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuc2V0dXBOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53ZWJDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuc2V0dXBOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndlYkNvbXBvbmVudCkgcmV0dXJuO1xuXG4gICAgLy8gSGFuZGxlIG5vbi1hdHRyaWJ1dGUgcHJvcGVydGllc1xuICAgIGlmICh0aGlzLmVycm9yVHJhbnNmb3JtZXIpIHtcbiAgICAgIHRoaXMud2ViQ29tcG9uZW50LmVycm9yVHJhbnNmb3JtZXIgPSB0aGlzLmVycm9yVHJhbnNmb3JtZXI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub25TY3JlZW5VcGRhdGUpIHtcbiAgICAgIHRoaXMud2ViQ29tcG9uZW50Lm9uU2NyZWVuVXBkYXRlID0gdGhpcy5vblNjcmVlblVwZGF0ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgIHRoaXMud2ViQ29tcG9uZW50LmxvZ2dlciA9IHRoaXMubG9nZ2VyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2ViQ29tcG9uZW50KSByZXR1cm47XG5cbiAgICB0aGlzLndlYkNvbXBvbmVudC5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICBmcm9tKFxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmRlc2NvcGVTZGsuaHR0cENsaWVudC5ob29rcz8uYWZ0ZXJSZXF1ZXN0IShcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgIHt9IGFzIGFueSxcbiAgICAgICAgICBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoKGUgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbCkpXG4gICAgICAgICkgYXMgUHJvbWlzZTx1bmtub3duPlxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy5zdWNjZXNzPy5lbWl0KGUgYXMgQ3VzdG9tRXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLndlYkNvbXBvbmVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIChlOiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yPy5lbWl0KGUgYXMgQ3VzdG9tRXZlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVhZHkpIHtcbiAgICAgIHRoaXMud2ViQ29tcG9uZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3JlYWR5JywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlYWR5Py5lbWl0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY29wZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNkay9zcmMvbGliL2NvbXBvbmVudHMvZGVzY29wZS9kZXNjb3BlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFTcEQsK0VBQStFO0FBQy9FLGdDQUFnQztBQUNoQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFtRHZCLE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsSUFBSSxZQUFZO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNsQyxPQUFPLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRSxDQUFDO0lBRUQs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OztHQWdDVDtpQkFDRjs7MEJBdUZJLE1BQU07MkJBQUMsV0FBVzt5Q0FwRkosS0FBSztzQkFEckIsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU1uQixRQUFRO3NCQUR4QixTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9DdEQsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQVNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUVHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICBJbmplY3QsXG4gIFBMQVRGT1JNX0lEXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGVzY29wZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGVzY29wZS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYmFzZUhlYWRlcnMgfSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGVzY29wZUF1dGhDb25maWcsIElMb2dnZXIgfSBmcm9tICcuLi8uLi90eXBlcy90eXBlcyc7XG5cbi8vIFVzZSBcImltcG9ydCB0eXBlXCIgdG8gaW1wb3J0IG9ubHkgdGhlIFR5cGVTY3JpcHQgdHlwZSBpbmZvcm1hdGlvbi5cbi8vIFRoaXMgaXMgc2FmZSBmb3IgU1NSIGJlY2F1c2UgaXQncyBjb21wbGV0ZWx5IGVyYXNlZCBhdCBjb21waWxlIHRpbWUgYW5kIGdlbmVyYXRlcyBubyBydW50aW1lIGltcG9ydC5cbmltcG9ydCB0eXBlIERlc2NvcGVXZWJDb21wb25lbnQgZnJvbSAnQGRlc2NvcGUvd2ViLWNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbVN0b3JhZ2UgfSBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcbmltcG9ydCBPdmVycmlkZVRoZW1lcyBmcm9tICdAZGVzY29wZS93ZWItY29tcG9uZW50JztcblxuLy8gTm9kZS5FTEVNRU5UX05PREUsIGFzIGEgbGl0ZXJhbCAtIHRoZSBOb2RlIGdsb2JhbCBpcyBub3QgZ3VhcmFudGVlZCB0byBleGlzdFxuLy8gZHVyaW5nIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cbmNvbnN0IEVMRU1FTlRfTk9ERSA9IDE7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc2NvcGVbZmxvd0lkXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbiAgLy8gVGhlIHN1YnRyZWUgaXMgYnVpbHQgaW1wZXJhdGl2ZWx5IChzZWUgbmdPbkluaXQpLCBzbyB0aGVyZSBpcyBub3RoaW5nIGZvclxuICAvLyBBbmd1bGFyIHRvIGh5ZHJhdGUgaGVyZSAtIGl0IHJlLXJlbmRlcnMgaXQgb24gdGhlIGNsaWVudCBpbnN0ZWFkLlxuICBob3N0OiB7IG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnIH0sXG4gIC8vIFRoZSBlbGVtZW50IGlzIGludGVudGlvbmFsbHkgZGVjbGFyZWQgaW5zaWRlIGFuIDxuZy10ZW1wbGF0ZT4gaW5zdGVhZCBvZlxuICAvLyByZW5kZXJlZCBkaXJlY3RseS4gQW5ndWxhciBhcHBlbmRzIGFuIGVsZW1lbnQgdG8gdGhlIERPTSBpbiBpdHMgY3JlYXRpb25cbiAgLy8gcGFzcyBidXQgYXBwbGllcyBbYXR0ci4qXSBiaW5kaW5ncyBpbiB0aGUgbGF0ZXIgdXBkYXRlIHBhc3MsIHNvIGFcbiAgLy8gPGRlc2NvcGUtd2M+IHJlbmRlcmVkIGRpcmVjdGx5IGhlcmUgd291bGQgYmUgY29ubmVjdGVkIC0gYW5kIHdvdWxkIHJ1biBpdHNcbiAgLy8gY29ubmVjdGVkQ2FsbGJhY2sgLSBiZWZvcmUgaXQgaGFkIGEgcHJvamVjdC1pZC4gVGhlIGN1c3RvbSBlbGVtZW50IHJlYWRzXG4gIC8vIHByb2plY3QtaWQgYXQgdGhhdCBtb21lbnQsIGZhaWxzLCBhbmQgY2FuIG5ldmVyIHJlY292ZXIsIHdoaWNoIGJyb2tlIGV2ZXJ5XG4gIC8vIG1vdW50IGFmdGVyIHRoZSBmaXJzdCAoZGVzY29wZS9ldGMjMTg0MTUpLiBCdWlsZGluZyB0aGUgdGVtcGxhdGUgYnkgaGFuZFxuICAvLyBsZXRzIHRoZSBiaW5kaW5ncyBydW4gd2hpbGUgdGhlIG5vZGVzIGFyZSBzdGlsbCBkZXRhY2hlZC5cbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICN3Y0FuY2hvcj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3djVHBsPlxuICAgICAgPGRlc2NvcGUtd2NcbiAgICAgICAgW2F0dHIucHJvamVjdC1pZF09XCJwcm9qZWN0SWRcIlxuICAgICAgICBbYXR0ci5mbG93LWlkXT1cImZsb3dJZFwiXG4gICAgICAgIFthdHRyLmJhc2UtdXJsXT1cImJhc2VVcmxcIlxuICAgICAgICBbYXR0ci5iYXNlLXN0YXRpYy11cmxdPVwiYmFzZVN0YXRpY1VybFwiXG4gICAgICAgIFthdHRyLmJhc2UtY2RuLXVybF09XCJiYXNlQ2RuVXJsXCJcbiAgICAgICAgW2F0dHIuc3RvcmUtbGFzdC1hdXRoZW50aWNhdGVkLXVzZXJdPVwic3RvcmVMYXN0QXV0aGVudGljYXRlZFVzZXJcIlxuICAgICAgICBbYXR0ci50aGVtZV09XCJ0aGVtZVwiXG4gICAgICAgIFthdHRyLmxvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICBbYXR0ci50ZW5hbnRdPVwidGVuYW50XCJcbiAgICAgICAgW2F0dHIudGVsZW1ldHJ5LWtleV09XCJ0ZWxlbWV0cnlLZXlcIlxuICAgICAgICBbYXR0ci5yZWRpcmVjdC11cmxdPVwicmVkaXJlY3RVcmxcIlxuICAgICAgICBbYXR0ci5hdXRvLWZvY3VzXT1cImF1dG9Gb2N1c1wiXG4gICAgICAgIFthdHRyLnZhbGlkYXRlLW9uLWJsdXJdPVwidmFsaWRhdGVPbkJsdXJcIlxuICAgICAgICBbYXR0ci5yZXN0YXJ0LW9uLWVycm9yXT1cInJlc3RhcnRPbkVycm9yXCJcbiAgICAgICAgW2F0dHIuc2VuZC1zZXNzaW9uLXRva2VuXT1cInNlbmRTZXNzaW9uVG9rZW5cIlxuICAgICAgICBbYXR0ci5kZWJ1Z109XCJkZWJ1Z1wiXG4gICAgICAgIFthdHRyLnN0eWxlLWlkXT1cInN0eWxlSWRcIlxuICAgICAgICBbYXR0ci50aGVtZS1vdmVycmlkZV09XCJ0aGVtZU92ZXJyaWRlXCJcbiAgICAgICAgW2F0dHIuY2xpZW50XT1cImNsaWVudFN0cmluZ1wiXG4gICAgICAgIFthdHRyLm5vbmNlXT1cIm5vbmNlU3RyaW5nXCJcbiAgICAgICAgW2F0dHIuZGlzbWlzcy1zY3JlZW4tZXJyb3Itb24taW5wdXRdPVwiZGlzbWlzc1NjcmVlbkVycm9yT25JbnB1dFwiXG4gICAgICAgIFthdHRyLnBvcHVwLW9yaWdpbl09XCJwb3B1cE9yaWdpblwiXG4gICAgICAgIFthdHRyLmZvcm1dPVwiZm9ybVN0cmluZ1wiXG4gICAgICAgIFtjdXN0b21TdG9yYWdlXT1cImN1c3RvbVN0b3JhZ2VcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rlc2NvcGUtd2M+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEZXNjb3BlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3djVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSByZWFkb25seSB3Y1RwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8vIEFuY2hvciBpbnNpZGUgdGhpcyBjb21wb25lbnQncyBvd24gdmlldywgc28gdGhlIGluc2VydGVkIHZpZXcgc3RheXMgaW4gdGhlXG4gIC8vIGNvbXBvbmVudCdzIGNoYW5nZS1kZXRlY3Rpb24gdHJlZSBhbmQgQW5ndWxhciBkZXN0cm95cyBpdCB3aXRoIHRoZSBjb21wb25lbnQuXG4gIEBWaWV3Q2hpbGQoJ3djQW5jaG9yJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSByZWFkb25seSB3Y0FuY2hvciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSB3Y1ZpZXc/OiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj47XG5cbiAgcHJpdmF0ZSBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuXG4gIGdldCBjbGllbnRTdHJpbmcoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuY2xpZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5jbGllbnQpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBnZXQgbm9uY2VTdHJpbmcoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMubm9uY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLm5vbmNlID09PSAnc3RyaW5nJyA/IHRoaXMubm9uY2UgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgZm9ybVN0cmluZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJvamVjdElkITogc3RyaW5nO1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBiYXNlU3RhdGljVXJsPzogc3RyaW5nO1xuICBiYXNlQ2RuVXJsPzogc3RyaW5nO1xuICBzdG9yZUxhc3RBdXRoZW50aWNhdGVkVXNlcj86IGJvb2xlYW47XG4gIGN1c3RvbVN0b3JhZ2U/OiBDdXN0b21TdG9yYWdlO1xuICBASW5wdXQoKSBmbG93SWQhOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgbG9jYWxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRoZW1lOiAnbGlnaHQnIHwgJ2RhcmsnIHwgJ29zJztcbiAgQElucHV0KCkgdGVuYW50OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRlbGVtZXRyeUtleTogc3RyaW5nO1xuICBASW5wdXQoKSByZWRpcmVjdFVybDogc3RyaW5nO1xuICBASW5wdXQoKSBhdXRvRm9jdXM6IHRydWUgfCBmYWxzZSB8ICdza2lwRmlyc3RTY3JlZW4nO1xuICBASW5wdXQoKSB2YWxpZGF0ZU9uQmx1cjogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVzdGFydE9uRXJyb3I6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNlbmRTZXNzaW9uVG9rZW46IGJvb2xlYW47XG5cbiAgQElucHV0KCkgZGVidWc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGVycm9yVHJhbnNmb3JtZXI6IChlcnJvcjogeyB0ZXh0OiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9KSA9PiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9uU2NyZWVuVXBkYXRlOiAoXG4gICAgc2NyZWVuTmFtZTogc3RyaW5nLFxuICAgIGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgbmV4dDogKFxuICAgICAgaW50ZXJhY3Rpb25JZDogc3RyaW5nLFxuICAgICAgZm9ybTogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICkgPT4gUHJvbWlzZTx1bmtub3duPixcbiAgICByZWY6IEhUTUxFbGVtZW50XG4gICkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG4gIEBJbnB1dCgpIGNsaWVudDogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgQElucHV0KCkgbm9uY2U6IHN0cmluZztcbiAgQElucHV0KCkgZGlzbWlzc1NjcmVlbkVycm9yT25JbnB1dDogYm9vbGVhbjtcbiAgQElucHV0KCkgZm9ybTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgQElucHV0KCkgbG9nZ2VyOiBJTG9nZ2VyO1xuICBASW5wdXQoKSBzdHlsZUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRoZW1lT3ZlcnJpZGU6IE92ZXJyaWRlVGhlbWVzO1xuICBASW5wdXQoKSBwb3B1cE9yaWdpbjogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBzdWNjZXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PigpO1xuICBAT3V0cHV0KCkgZXJyb3I6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZHk6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIHdlYkNvbXBvbmVudD86IERlc2NvcGVXZWJDb21wb25lbnQ7XG4gIHByaXZhdGUgaXNXZWJDb21wb25lbnRMb2FkZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogRGVzY29wZUF1dGhTZXJ2aWNlLFxuICAgIGRlc2NvcGVDb25maWc6IERlc2NvcGVBdXRoQ29uZmlnLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0XG4gICkge1xuICAgIHRoaXMucHJvamVjdElkID0gZGVzY29wZUNvbmZpZy5wcm9qZWN0SWQ7XG4gICAgdGhpcy5iYXNlVXJsID0gZGVzY29wZUNvbmZpZy5iYXNlVXJsO1xuICAgIHRoaXMuYmFzZVN0YXRpY1VybCA9IGRlc2NvcGVDb25maWcuYmFzZVN0YXRpY1VybDtcbiAgICB0aGlzLmJhc2VDZG5VcmwgPSBkZXNjb3BlQ29uZmlnLmJhc2VDZG5Vcmw7XG4gICAgdGhpcy5zdG9yZUxhc3RBdXRoZW50aWNhdGVkVXNlciA9IGRlc2NvcGVDb25maWcuc3RvcmVMYXN0QXV0aGVudGljYXRlZFVzZXI7XG4gICAgdGhpcy5jdXN0b21TdG9yYWdlID0gZGVzY29wZUNvbmZpZy5jdXN0b21TdG9yYWdlO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gTG9hZCB0aGUgd2ViIGNvbXBvbmVudCBiZWZvcmUgYnVpbGRpbmcgdGhlIGVsZW1lbnQuIFRoZSBvcmRlciBtYXR0ZXJzOlxuICAgIC8vIGxvYWRXZWJDb21wb25lbnQgc2V0cyBEZXNjb3BlV2Muc2RrQ29uZmlnT3ZlcnJpZGVzLCBhbmQgaWYgc29tZXRoaW5nIGVsc2VcbiAgICAvLyBvbiB0aGUgcGFnZSBhbHJlYWR5IGltcG9ydGVkIEBkZXNjb3BlL3dlYi1jb21wb25lbnQgdGhlbiBkZXNjb3BlLXdjIGlzXG4gICAgLy8gYWxyZWFkeSBkZWZpbmVkLCBzbyB0aGUgZWxlbWVudCB3b3VsZCBpbml0aWFsaXplIHRoZSBtb21lbnQgaXQgaXNcbiAgICAvLyBjb25uZWN0ZWQuIENvbm5lY3RpbmcgaXQgZmlyc3Qgd291bGQgbGV0IHRoZSBmbG93IHN0YXJ0IHdpdGhvdXQgdGhlXG4gICAgLy8gQW5ndWxhciBTREsncyBiYXNlIGhlYWRlcnMsIHBlcnNpc3RUb2tlbnM6IGZhbHNlLCBhbmQgYmVmb3JlUmVxdWVzdCBob29rLlxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRXZWJDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICAvLyBCdWlsdCBvbiB0aGUgc2VydmVyIHRvbywgc28gdGhlIHNlcnZlci1yZW5kZXJlZCBtYXJrdXAga2VlcHMgY29udGFpbmluZ1xuICAgIC8vIGRlc2NvcGUtd2MgYXMgaXQgZGlkIGJlZm9yZS4gbmdTa2lwSHlkcmF0aW9uIG1lYW5zIHRoZSBjbGllbnQgcmUtcmVuZGVyc1xuICAgIC8vIHRoaXMgc3VidHJlZSBhbnl3YXksIHNvIHRoZSBzZXJ2ZXIgY29weSBvbmx5IHNlcnZlcyB0aGUgZmlyc3QgcGFpbnQuXG4gICAgdGhpcy5jcmVhdGVXZWJDb21wb25lbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHRlbXBsYXRlIHdoaWxlIGl0cyBub2RlcyBhcmUgc3RpbGwgZGV0YWNoZWQgZnJvbSB0aGUgZG9jdW1lbnQsXG4gICAqIGFwcGxpZXMgdGhlIGF0dHJpYnV0ZSBiaW5kaW5ncywgYW5kIG9ubHkgdGhlbiBjb25uZWN0cyB0aGUgZWxlbWVudC4gVGhpcyBpc1xuICAgKiB3aGF0IGd1YXJhbnRlZXMgcHJvamVjdC1pZCBhbmQgZmxvdy1pZCBhcmUgcHJlc2VudCB3aGVuIHRoZSBjdXN0b20gZWxlbWVudFxuICAgKiBydW5zIGl0cyBjb25uZWN0ZWRDYWxsYmFjay5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlV2ViQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIC8vIG5nT25Jbml0IGF3YWl0cyB0aGUgaW1wb3J0LCBzbyB0aGUgY29tcG9uZW50IGNhbiBhbHJlYWR5IGJlIGRlc3Ryb3llZCBieVxuICAgIC8vIHRoZSB0aW1lIHdlIGdldCBoZXJlIChhIHJvdXRlIGNoYW5nZSB3aGlsZSB0aGUgY2h1bmsgaXMgZG93bmxvYWRpbmcpLlxuICAgIC8vIEluc2VydGluZyBpbnRvIGEgZGVzdHJveWVkIFZpZXdDb250YWluZXJSZWYgd291bGQgdGhyb3csIGFuZCBub3RoaW5nXG4gICAgLy8gd291bGQgZXZlciBjbGVhbiB0aGUgdmlldyB1cC5cbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCB8fCB0aGlzLndjVmlldykgcmV0dXJuO1xuXG4gICAgLy8gY3JlYXRlRW1iZWRkZWRWaWV3IGJ1aWxkcyB0aGUgbm9kZXMgd2l0aG91dCBwdXR0aW5nIHRoZW0gaW4gdGhlIGRvY3VtZW50LFxuICAgIC8vIHNvIHRoZSBlbGVtZW50IGlzIG5vdCBjb25uZWN0ZWQgeWV0IGFuZCBpdHMgY29ubmVjdGVkQ2FsbGJhY2sgaGFzIG5vdCBydW4uXG4gICAgY29uc3QgdmlldyA9IHRoaXMud2NUcGwuY3JlYXRlRW1iZWRkZWRWaWV3KHVuZGVmaW5lZCk7XG4gICAgLy8gQXBwbHkgdGhlIFthdHRyLipdIGJpbmRpbmdzIHdoaWxlIHRoZSBub2RlcyBhcmUgc3RpbGwgZGV0YWNoZWQuXG4gICAgdmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy53Y1ZpZXcgPSB2aWV3O1xuXG4gICAgLy8gVGhlIHRlbXBsYXRlIGhvbGRzIGV4YWN0bHkgb25lIGVsZW1lbnQsIDxkZXNjb3BlLXdjPiwgYW5kIGVhY2ggY29tcG9uZW50XG4gICAgLy8gaW5zdGFuY2UgYnVpbGRzIGl0cyBvd24gdmlldyAtIHNvIHRoaXMgcGlja3MgdGhhdCBpbnN0YW5jZSdzIG93biBlbGVtZW50XG4gICAgLy8gYW5kIG5ldmVyIHNlZXMgYW5vdGhlciBpbnN0YW5jZSdzLiBTZWxlY3RlZCBieSBub2RlIHR5cGUgcmF0aGVyIHRoYW4gYXNcbiAgICAvLyByb290Tm9kZXNbMF0gc28gdGVtcGxhdGUgd2hpdGVzcGFjZSBjYW4gbmV2ZXIgc2hpZnQgaXQsIGFuZCBjb21wYXJlZFxuICAgIC8vIGFnYWluc3QgYSBsaXRlcmFsIGJlY2F1c2UgTm9kZSBpcyBub3QgZ3VhcmFudGVlZCB0byBleGlzdCBkdXJpbmcgU1NSLlxuICAgIHRoaXMud2ViQ29tcG9uZW50ID0gdmlldy5yb290Tm9kZXMuZmluZChcbiAgICAgIChub2RlOiB7IG5vZGVUeXBlOiBudW1iZXIgfSkgPT4gbm9kZS5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFXG4gICAgKSBhcyBEZXNjb3BlV2ViQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgLy8gSW5zZXJ0aW5nIGNvbm5lY3RzIHRoZSBlbGVtZW50IC0gaXRzIGNvbm5lY3RlZENhbGxiYWNrIHJ1bnMgaGVyZSwgd2l0aFxuICAgIC8vIGV2ZXJ5IGF0dHJpYnV0ZSBhbHJlYWR5IHNldC5cbiAgICB0aGlzLndjQW5jaG9yLmluc2VydCh2aWV3KTtcblxuICAgIGlmICghdGhpcy53ZWJDb21wb25lbnQpIHJldHVybjtcblxuICAgIHRoaXMuc2V0dXBOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRXZWJDb21wb25lbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNXZWJDb21wb25lbnRMb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gRHluYW1pY2FsbHkgaW1wb3J0IHRoZSB3ZWIgY29tcG9uZW50IG9ubHkgaW4gYnJvd3NlciBjb250ZXh0XG4gICAgICBjb25zdCBEZXNjb3BlV2NNb2R1bGUgPSBhd2FpdCBpbXBvcnQoJ0BkZXNjb3BlL3dlYi1jb21wb25lbnQnKTtcbiAgICAgIGNvbnN0IERlc2NvcGVXYyA9IERlc2NvcGVXY01vZHVsZS5kZWZhdWx0O1xuICAgICAgY29uc3Qgc2RrID0gdGhpcy5hdXRoU2VydmljZS5kZXNjb3BlU2RrO1xuXG4gICAgICBEZXNjb3BlV2Muc2RrQ29uZmlnT3ZlcnJpZGVzID0ge1xuICAgICAgICAvLyBPdmVycmlkZXMgdGhlIHdlYi1jb21wb25lbnQncyBiYXNlIGhlYWRlcnMgdG8gaW5kaWNhdGUgdXNhZ2UgdmlhIHRoZSBBbmd1bGFyIFNES1xuICAgICAgICBiYXNlSGVhZGVycyxcbiAgICAgICAgLy8gRGlzYWJsZXMgdG9rZW4gcGVyc2lzdGVuY2Ugd2l0aGluIHRoZSB3ZWItY29tcG9uZW50IHRvIGRlbGVnYXRlIHRva2VuIG1hbmFnZW1lbnRcbiAgICAgICAgLy8gdG8gdGhlIGdsb2JhbCBTREsgaG9va3MuIFRoaXMgZW5zdXJlcyB0b2tlbiBoYW5kbGluZyBhbGlnbnMgd2l0aCB0aGUgU0RLJ3MgY29uZmlndXJhdGlvbixcbiAgICAgICAgLy8gYW5kIHdlYi1jb21wb25lbnQgcmVxdWVzdHMgbGV2ZXJhZ2UgdGhlIGdsb2JhbCBTREsncyBiZWZvcmVSZXF1ZXN0IGhvb2tzIGZvciBjb25zaXN0ZW5jeVxuICAgICAgICBwZXJzaXN0VG9rZW5zOiBmYWxzZSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBnZXQgYmVmb3JlUmVxdWVzdCgpIHtcbiAgICAgICAgICAgIC8vIFJldHJpZXZlcyB0aGUgYmVmb3JlUmVxdWVzdCBob29rIGZyb20gdGhlIGdsb2JhbCBTREssIHdoaWNoIGlzIGluaXRpYWxpemVkXG4gICAgICAgICAgICAvLyB3aXRoaW4gdGhlIEF1dGhQcm92aWRlciB1c2luZyB0aGUgZGVzaXJlZCBjb25maWd1cmF0aW9uLiBUaGlzIGFwcHJvYWNoIGVuc3VyZXNcbiAgICAgICAgICAgIC8vIHRoZSB3ZWItY29tcG9uZW50IHV0aWxpemVzIHRoZSBzYW1lIGJlZm9yZVJlcXVlc3QgaG9va3MgYXMgdGhlIGdsb2JhbCBTREtcbiAgICAgICAgICAgIHJldHVybiBzZGsuaHR0cENsaWVudC5ob29rcz8uYmVmb3JlUmVxdWVzdDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldCBiZWZvcmVSZXF1ZXN0KF8pIHtcbiAgICAgICAgICAgIC8vIFRoZSBlbXB0eSBzZXR0ZXIgcHJldmVudHMgcnVudGltZSBlcnJvcnMgd2hlbiBhdHRlbXB0cyBhcmUgbWFkZSB0byBhc3NpZ24gYSB2YWx1ZSB0byAnYmVmb3JlUmVxdWVzdCcuXG4gICAgICAgICAgICAvLyBKYXZhU2NyaXB0IG9iamVjdHMgZGVmYXVsdCB0byBoYXZpbmcgYm90aCBnZXR0ZXJzIGFuZCBzZXR0ZXJzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB0aGlzLmlzV2ViQ29tcG9uZW50TG9hZGVkID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIERlc2NvcGUgd2ViIGNvbXBvbmVudDonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gR3VhcmRzIHRoZSBuZ09uSW5pdCByYWNlIC0gdGhlIGNvbnRpbnVhdGlvbiBjYW4gc3RpbGwgYmUgcGVuZGluZyBoZXJlLlxuICAgIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xuXG4gICAgLy8gd2NBbmNob3Igb3ducyB0aGUgdmlldywgc28gQW5ndWxhciB3b3VsZCB0ZWFyIGl0IGRvd24gYW55d2F5IC0gYnV0IHdoZW4gYVxuICAgIC8vIHBhcmVudCB2aWV3IGlzIGdvaW5nIGF3YXkgQW5ndWxhciBza2lwcyByZW1vdmluZyB0aGUgaW5kaXZpZHVhbCBub2RlcywgYW5kXG4gICAgLy8gdGhlbiB0aGUgZWxlbWVudCBuZXZlciBkaXNjb25uZWN0cy4gRGVzdHJveWluZyBpdCBoZXJlIHRha2VzIHRoZSBlbGVtZW50XG4gICAgLy8gb3V0IG9mIHRoZSBET00sIHNvIHRoZSB3ZWIgY29tcG9uZW50J3MgZGlzY29ubmVjdGVkQ2FsbGJhY2sgcnVucyBhbmQgZHJvcHNcbiAgICAvLyBpdHMgd2luZG93IGxpc3RlbmVycyBhbmQgZmxvdy1zdGF0ZSBzdWJzY3JpcHRpb25zLlxuICAgIHRoaXMud2NWaWV3Py5kZXN0cm95KCk7XG4gICAgdGhpcy53Y1ZpZXcgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy53ZWJDb21wb25lbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53ZWJDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuc2V0dXBOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndlYkNvbXBvbmVudCkgcmV0dXJuO1xuXG4gICAgLy8gSGFuZGxlIG5vbi1hdHRyaWJ1dGUgcHJvcGVydGllc1xuICAgIGlmICh0aGlzLmVycm9yVHJhbnNmb3JtZXIpIHtcbiAgICAgIHRoaXMud2ViQ29tcG9uZW50LmVycm9yVHJhbnNmb3JtZXIgPSB0aGlzLmVycm9yVHJhbnNmb3JtZXI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub25TY3JlZW5VcGRhdGUpIHtcbiAgICAgIHRoaXMud2ViQ29tcG9uZW50Lm9uU2NyZWVuVXBkYXRlID0gdGhpcy5vblNjcmVlblVwZGF0ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgIHRoaXMud2ViQ29tcG9uZW50LmxvZ2dlciA9IHRoaXMubG9nZ2VyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2ViQ29tcG9uZW50KSByZXR1cm47XG5cbiAgICB0aGlzLndlYkNvbXBvbmVudC5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICBmcm9tKFxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmRlc2NvcGVTZGsuaHR0cENsaWVudC5ob29rcz8uYWZ0ZXJSZXF1ZXN0IShcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgIHt9IGFzIGFueSxcbiAgICAgICAgICBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoKGUgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbCkpXG4gICAgICAgICkgYXMgUHJvbWlzZTx1bmtub3duPlxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy5zdWNjZXNzPy5lbWl0KGUgYXMgQ3VzdG9tRXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLndlYkNvbXBvbmVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIChlOiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yPy5lbWl0KGUgYXMgQ3VzdG9tRXZlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVhZHkpIHtcbiAgICAgIHRoaXMud2ViQ29tcG9uZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3JlYWR5JywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlYWR5Py5lbWl0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, EventEmitter, PLATFORM_ID, Component, CUSTOM_ELEMENTS_SCHEMA, Inject, ViewChild, Input, Output, Directive, NgModule, Optional, SkipSelf } from '@angular/core';
2
+ import { Injectable, inject, EventEmitter, PLATFORM_ID, ViewContainerRef, Component, CUSTOM_ELEMENTS_SCHEMA, Inject, ViewChild, Input, Output, Directive, NgModule, Optional, SkipSelf } from '@angular/core';
3
3
  import createSdk from '@descope/web-js-sdk';
4
4
  import { from, BehaviorSubject, finalize, tap, of, throwError } from 'rxjs';
5
5
  import { Router } from '@angular/router';
@@ -33,7 +33,7 @@ function observabilify(value) {
33
33
  }
34
34
 
35
35
  const environment = {
36
- buildVersion: '0.28.3'
36
+ buildVersion: '0.28.5'
37
37
  };
38
38
 
39
39
  const baseHeaders = {
@@ -256,6 +256,9 @@ const descopeInterceptor = (request, next) => {
256
256
  }
257
257
  };
258
258
 
259
+ // Node.ELEMENT_NODE, as a literal - the Node global is not guaranteed to exist
260
+ // during server-side rendering.
261
+ const ELEMENT_NODE = 1;
259
262
  class DescopeComponent {
260
263
  get clientString() {
261
264
  if (!this.client)
@@ -286,6 +289,7 @@ class DescopeComponent {
286
289
  this.elementRef = elementRef;
287
290
  this.authService = authService;
288
291
  this.platformId = platformId;
292
+ this.isDestroyed = false;
289
293
  this.success = new EventEmitter();
290
294
  this.error = new EventEmitter();
291
295
  this.ready = new EventEmitter();
@@ -298,11 +302,52 @@ class DescopeComponent {
298
302
  this.customStorage = descopeConfig.customStorage;
299
303
  }
300
304
  async ngOnInit() {
301
- // Only load web component in browser environment
302
- if (!isPlatformBrowser(this.platformId)) {
305
+ // Load the web component before building the element. The order matters:
306
+ // loadWebComponent sets DescopeWc.sdkConfigOverrides, and if something else
307
+ // on the page already imported @descope/web-component then descope-wc is
308
+ // already defined, so the element would initialize the moment it is
309
+ // connected. Connecting it first would let the flow start without the
310
+ // Angular SDK's base headers, persistTokens: false, and beforeRequest hook.
311
+ if (isPlatformBrowser(this.platformId)) {
312
+ await this.loadWebComponent();
313
+ }
314
+ // Built on the server too, so the server-rendered markup keeps containing
315
+ // descope-wc as it did before. ngSkipHydration means the client re-renders
316
+ // this subtree anyway, so the server copy only serves the first paint.
317
+ this.createWebComponent();
318
+ }
319
+ /**
320
+ * Builds the template while its nodes are still detached from the document,
321
+ * applies the attribute bindings, and only then connects the element. This is
322
+ * what guarantees project-id and flow-id are present when the custom element
323
+ * runs its connectedCallback.
324
+ */
325
+ createWebComponent() {
326
+ // ngOnInit awaits the import, so the component can already be destroyed by
327
+ // the time we get here (a route change while the chunk is downloading).
328
+ // Inserting into a destroyed ViewContainerRef would throw, and nothing
329
+ // would ever clean the view up.
330
+ if (this.isDestroyed || this.wcView)
303
331
  return;
304
- }
305
- await this.loadWebComponent();
332
+ // createEmbeddedView builds the nodes without putting them in the document,
333
+ // so the element is not connected yet and its connectedCallback has not run.
334
+ const view = this.wcTpl.createEmbeddedView(undefined);
335
+ // Apply the [attr.*] bindings while the nodes are still detached.
336
+ view.detectChanges();
337
+ this.wcView = view;
338
+ // The template holds exactly one element, <descope-wc>, and each component
339
+ // instance builds its own view - so this picks that instance's own element
340
+ // and never sees another instance's. Selected by node type rather than as
341
+ // rootNodes[0] so template whitespace can never shift it, and compared
342
+ // against a literal because Node is not guaranteed to exist during SSR.
343
+ this.webComponent = view.rootNodes.find((node) => node.nodeType === ELEMENT_NODE);
344
+ // Inserting connects the element - its connectedCallback runs here, with
345
+ // every attribute already set.
346
+ this.wcAnchor.insert(view);
347
+ if (!this.webComponent)
348
+ return;
349
+ this.setupNonAttributeProperties();
350
+ this.setupEventListeners();
306
351
  }
307
352
  async loadWebComponent() {
308
353
  if (this.isWebComponentLoaded) {
@@ -340,12 +385,17 @@ class DescopeComponent {
340
385
  console.error('Failed to load Descope web component:', error);
341
386
  }
342
387
  }
343
- ngAfterViewInit() {
344
- if (!this.descopeWc?.nativeElement)
345
- return;
346
- this.webComponent = this.descopeWc.nativeElement;
347
- this.setupNonAttributeProperties();
348
- this.setupEventListeners();
388
+ ngOnDestroy() {
389
+ // Guards the ngOnInit race - the continuation can still be pending here.
390
+ this.isDestroyed = true;
391
+ // wcAnchor owns the view, so Angular would tear it down anyway - but when a
392
+ // parent view is going away Angular skips removing the individual nodes, and
393
+ // then the element never disconnects. Destroying it here takes the element
394
+ // out of the DOM, so the web component's disconnectedCallback runs and drops
395
+ // its window listeners and flow-state subscriptions.
396
+ this.wcView?.destroy();
397
+ this.wcView = undefined;
398
+ this.webComponent = undefined;
349
399
  }
350
400
  ngOnChanges() {
351
401
  if (this.webComponent) {
@@ -390,36 +440,38 @@ class DescopeComponent {
390
440
  }
391
441
  }
392
442
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DescopeComponent, deps: [{ token: i0.ElementRef }, { token: DescopeAuthService }, { token: DescopeAuthConfig }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
393
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DescopeComponent, isStandalone: true, selector: "descope[flowId]", inputs: { flowId: "flowId", locale: "locale", theme: "theme", tenant: "tenant", telemetryKey: "telemetryKey", redirectUrl: "redirectUrl", autoFocus: "autoFocus", validateOnBlur: "validateOnBlur", restartOnError: "restartOnError", sendSessionToken: "sendSessionToken", debug: "debug", errorTransformer: "errorTransformer", onScreenUpdate: "onScreenUpdate", client: "client", nonce: "nonce", dismissScreenErrorOnInput: "dismissScreenErrorOnInput", form: "form", logger: "logger", styleId: "styleId", themeOverride: "themeOverride", popupOrigin: "popupOrigin" }, outputs: { success: "success", error: "error", ready: "ready" }, viewQueries: [{ propertyName: "descopeWc", first: true, predicate: ["descopeWc"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
394
- <descope-wc
395
- #descopeWc
396
- [attr.project-id]="projectId"
397
- [attr.flow-id]="flowId"
398
- [attr.base-url]="baseUrl"
399
- [attr.base-static-url]="baseStaticUrl"
400
- [attr.base-cdn-url]="baseCdnUrl"
401
- [attr.store-last-authenticated-user]="storeLastAuthenticatedUser"
402
- [attr.theme]="theme"
403
- [attr.locale]="locale"
404
- [attr.tenant]="tenant"
405
- [attr.telemetry-key]="telemetryKey"
406
- [attr.redirect-url]="redirectUrl"
407
- [attr.auto-focus]="autoFocus"
408
- [attr.validate-on-blur]="validateOnBlur"
409
- [attr.restart-on-error]="restartOnError"
410
- [attr.send-session-token]="sendSessionToken"
411
- [attr.debug]="debug"
412
- [attr.style-id]="styleId"
413
- [attr.theme-override]="themeOverride"
414
- [attr.client]="clientString"
415
- [attr.nonce]="nonceString"
416
- [attr.dismiss-screen-error-on-input]="dismissScreenErrorOnInput"
417
- [attr.popup-origin]="popupOrigin"
418
- [attr.form]="formString"
419
- [customStorage]="customStorage"
420
- >
421
- <ng-content></ng-content>
422
- </descope-wc>
443
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DescopeComponent, isStandalone: true, selector: "descope[flowId]", inputs: { flowId: "flowId", locale: "locale", theme: "theme", tenant: "tenant", telemetryKey: "telemetryKey", redirectUrl: "redirectUrl", autoFocus: "autoFocus", validateOnBlur: "validateOnBlur", restartOnError: "restartOnError", sendSessionToken: "sendSessionToken", debug: "debug", errorTransformer: "errorTransformer", onScreenUpdate: "onScreenUpdate", client: "client", nonce: "nonce", dismissScreenErrorOnInput: "dismissScreenErrorOnInput", form: "form", logger: "logger", styleId: "styleId", themeOverride: "themeOverride", popupOrigin: "popupOrigin" }, outputs: { success: "success", error: "error", ready: "ready" }, host: { attributes: { "ngSkipHydration": "true" } }, viewQueries: [{ propertyName: "wcTpl", first: true, predicate: ["wcTpl"], descendants: true, static: true }, { propertyName: "wcAnchor", first: true, predicate: ["wcAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
444
+ <ng-container #wcAnchor></ng-container>
445
+ <ng-template #wcTpl>
446
+ <descope-wc
447
+ [attr.project-id]="projectId"
448
+ [attr.flow-id]="flowId"
449
+ [attr.base-url]="baseUrl"
450
+ [attr.base-static-url]="baseStaticUrl"
451
+ [attr.base-cdn-url]="baseCdnUrl"
452
+ [attr.store-last-authenticated-user]="storeLastAuthenticatedUser"
453
+ [attr.theme]="theme"
454
+ [attr.locale]="locale"
455
+ [attr.tenant]="tenant"
456
+ [attr.telemetry-key]="telemetryKey"
457
+ [attr.redirect-url]="redirectUrl"
458
+ [attr.auto-focus]="autoFocus"
459
+ [attr.validate-on-blur]="validateOnBlur"
460
+ [attr.restart-on-error]="restartOnError"
461
+ [attr.send-session-token]="sendSessionToken"
462
+ [attr.debug]="debug"
463
+ [attr.style-id]="styleId"
464
+ [attr.theme-override]="themeOverride"
465
+ [attr.client]="clientString"
466
+ [attr.nonce]="nonceString"
467
+ [attr.dismiss-screen-error-on-input]="dismissScreenErrorOnInput"
468
+ [attr.popup-origin]="popupOrigin"
469
+ [attr.form]="formString"
470
+ [customStorage]="customStorage"
471
+ >
472
+ <ng-content></ng-content>
473
+ </descope-wc>
474
+ </ng-template>
423
475
  `, isInline: true }); }
424
476
  }
425
477
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DescopeComponent, decorators: [{
@@ -428,44 +480,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
428
480
  selector: 'descope[flowId]',
429
481
  standalone: true,
430
482
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
483
+ // The subtree is built imperatively (see ngOnInit), so there is nothing for
484
+ // Angular to hydrate here - it re-renders it on the client instead.
485
+ host: { ngSkipHydration: 'true' },
486
+ // The element is intentionally declared inside an <ng-template> instead of
487
+ // rendered directly. Angular appends an element to the DOM in its creation
488
+ // pass but applies [attr.*] bindings in the later update pass, so a
489
+ // <descope-wc> rendered directly here would be connected - and would run its
490
+ // connectedCallback - before it had a project-id. The custom element reads
491
+ // project-id at that moment, fails, and can never recover, which broke every
492
+ // mount after the first (descope/etc#18415). Building the template by hand
493
+ // lets the bindings run while the nodes are still detached.
431
494
  template: `
432
- <descope-wc
433
- #descopeWc
434
- [attr.project-id]="projectId"
435
- [attr.flow-id]="flowId"
436
- [attr.base-url]="baseUrl"
437
- [attr.base-static-url]="baseStaticUrl"
438
- [attr.base-cdn-url]="baseCdnUrl"
439
- [attr.store-last-authenticated-user]="storeLastAuthenticatedUser"
440
- [attr.theme]="theme"
441
- [attr.locale]="locale"
442
- [attr.tenant]="tenant"
443
- [attr.telemetry-key]="telemetryKey"
444
- [attr.redirect-url]="redirectUrl"
445
- [attr.auto-focus]="autoFocus"
446
- [attr.validate-on-blur]="validateOnBlur"
447
- [attr.restart-on-error]="restartOnError"
448
- [attr.send-session-token]="sendSessionToken"
449
- [attr.debug]="debug"
450
- [attr.style-id]="styleId"
451
- [attr.theme-override]="themeOverride"
452
- [attr.client]="clientString"
453
- [attr.nonce]="nonceString"
454
- [attr.dismiss-screen-error-on-input]="dismissScreenErrorOnInput"
455
- [attr.popup-origin]="popupOrigin"
456
- [attr.form]="formString"
457
- [customStorage]="customStorage"
458
- >
459
- <ng-content></ng-content>
460
- </descope-wc>
495
+ <ng-container #wcAnchor></ng-container>
496
+ <ng-template #wcTpl>
497
+ <descope-wc
498
+ [attr.project-id]="projectId"
499
+ [attr.flow-id]="flowId"
500
+ [attr.base-url]="baseUrl"
501
+ [attr.base-static-url]="baseStaticUrl"
502
+ [attr.base-cdn-url]="baseCdnUrl"
503
+ [attr.store-last-authenticated-user]="storeLastAuthenticatedUser"
504
+ [attr.theme]="theme"
505
+ [attr.locale]="locale"
506
+ [attr.tenant]="tenant"
507
+ [attr.telemetry-key]="telemetryKey"
508
+ [attr.redirect-url]="redirectUrl"
509
+ [attr.auto-focus]="autoFocus"
510
+ [attr.validate-on-blur]="validateOnBlur"
511
+ [attr.restart-on-error]="restartOnError"
512
+ [attr.send-session-token]="sendSessionToken"
513
+ [attr.debug]="debug"
514
+ [attr.style-id]="styleId"
515
+ [attr.theme-override]="themeOverride"
516
+ [attr.client]="clientString"
517
+ [attr.nonce]="nonceString"
518
+ [attr.dismiss-screen-error-on-input]="dismissScreenErrorOnInput"
519
+ [attr.popup-origin]="popupOrigin"
520
+ [attr.form]="formString"
521
+ [customStorage]="customStorage"
522
+ >
523
+ <ng-content></ng-content>
524
+ </descope-wc>
525
+ </ng-template>
461
526
  `
462
527
  }]
463
528
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: DescopeAuthService }, { type: DescopeAuthConfig }, { type: undefined, decorators: [{
464
529
  type: Inject,
465
530
  args: [PLATFORM_ID]
466
- }] }], propDecorators: { descopeWc: [{
531
+ }] }], propDecorators: { wcTpl: [{
532
+ type: ViewChild,
533
+ args: ['wcTpl', { static: true }]
534
+ }], wcAnchor: [{
467
535
  type: ViewChild,
468
- args: ['descopeWc']
536
+ args: ['wcAnchor', { read: ViewContainerRef, static: true }]
469
537
  }], flowId: [{
470
538
  type: Input
471
539
  }], locale: [{
@@ -1 +1 @@
1
- {"version":3,"file":"descope-angular-sdk.mjs","sources":["../../projects/angular-sdk/src/lib/utils/helpers.ts","../../projects/angular-sdk/src/environment.ts","../../projects/angular-sdk/src/lib/utils/constants.ts","../../projects/angular-sdk/src/lib/types/types.ts","../../projects/angular-sdk/src/lib/services/descope-auth.service.ts","../../projects/angular-sdk/src/lib/services/descope-auth.guard.ts","../../projects/angular-sdk/src/lib/services/descope.interceptor.ts","../../projects/angular-sdk/src/lib/components/descope/descope.component.ts","../../projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.ts","../../projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.html","../../projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.ts","../../projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.html","../../projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.ts","../../projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.html","../../projects/angular-sdk/src/lib/base/base-lazy-widget.component.ts","../../projects/angular-sdk/src/lib/components/user-management/user-management.component.ts","../../projects/angular-sdk/src/lib/components/role-management/role-management.component.ts","../../projects/angular-sdk/src/lib/components/access-key-management/access-key-management.component.ts","../../projects/angular-sdk/src/lib/components/audit-management/audit-management.component.ts","../../projects/angular-sdk/src/lib/components/user-profile/user-profile.component.ts","../../projects/angular-sdk/src/lib/components/applications-portal/applications-portal.component.ts","../../projects/angular-sdk/src/lib/descope-auth.module.ts","../../projects/angular-sdk/src/public-api.ts","../../projects/angular-sdk/src/descope-angular-sdk.ts"],"sourcesContent":["import { from, Observable } from 'rxjs';\n\nexport type Observablefied<T> = {\n [K in keyof T]: T[K] extends (...args: infer Args) => Promise<infer R>\n ? (...args: Args) => Observable<R>\n : T[K] extends (...args: infer Args) => infer R\n ? (...args: Args) => R\n : T[K] extends object\n ? Observablefied<T[K]>\n : T[K];\n};\n\nexport function observabilify<T>(value: T): Observablefied<T> {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const observableValue: any = {};\n\n for (const key in value) {\n if (typeof value[key] === 'function') {\n const fn = value[key] as (...args: unknown[]) => unknown;\n observableValue[key] = (...args: unknown[]) => {\n const fnResult = fn(...args);\n if (fnResult instanceof Promise) {\n return from(fnResult);\n } else {\n return fnResult;\n }\n };\n } else if (typeof value[key] === 'object' && value[key] !== null) {\n observableValue[key] = observabilify(value[key]);\n } else {\n observableValue[key] = value[key];\n }\n }\n\n return observableValue as Observablefied<T>;\n}\n","export const environment = {\n buildVersion: '0.28.3'\n};\n","import { environment } from '../../environment';\n\nexport const baseHeaders = {\n 'x-descope-sdk-name': 'angular',\n 'x-descope-sdk-version': environment.buildVersion\n};\n\n// Detect if running in a native flow (e.g., mobile app with Descope bridge in a webview)\nexport const isDescopeBridge = () =>\n typeof window !== 'undefined' && !!(window as any)['descopeBridge'];\n\nexport const isBrowser = () => typeof window !== 'undefined';\n","import { CookieConfig, OidcConfig } from '@descope/web-js-sdk';\nimport type { CustomStorage, ILogger } from '@descope/web-component';\nexport class DescopeAuthConfig {\n projectId = '';\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n // Default is true. If true, tokens will be stored on local storage.\n persistTokens?: boolean;\n // Default is true. If true, the SDK will automatically refresh the session token when it is about to expire\n autoRefresh?: boolean;\n sessionTokenViaCookie?: CookieConfig;\n // If truthy the SDK refresh and logout functions will use the OIDC client\n // Accepts boolean or OIDC configuration\n oidcConfig?: OidcConfig;\n // Default is true. If true, last authenticated user will be stored on local storage and can accessed with getUser function\n storeLastAuthenticatedUser?: boolean;\n pathsToIntercept?: string[];\n // Custom storage configuration for tokens and user data\n customStorage?: CustomStorage;\n}\n\nexport type { ILogger };\n","/* eslint-disable no-console */\n// workaround for TS issue https://github.com/microsoft/TypeScript/issues/42873\n// eslint-disable-next-line\nimport type * as _1 from '@descope/core-js-sdk';\nimport { Injectable } from '@angular/core';\nimport type { UserResponse } from '@descope/web-js-sdk';\nimport type * as _2 from 'oidc-client-ts'; // eslint-disable-line\nimport createSdk from '@descope/web-js-sdk';\nimport { BehaviorSubject, finalize, Observable, tap } from 'rxjs';\nimport { observabilify, Observablefied } from '../utils/helpers';\nimport { baseHeaders, isBrowser } from '../utils/constants';\nimport { DescopeAuthConfig } from '../types/types';\n\ntype DescopeSDK = ReturnType<typeof createSdk>;\ntype AngularDescopeSDK = Observablefied<DescopeSDK>;\n\nexport interface DescopeSession {\n isAuthenticated: boolean;\n isSessionLoading: boolean;\n sessionToken: string | null;\n claims?: Record<string, any>;\n}\n\nexport type DescopeUser = {\n user?: UserResponse | null;\n isUserLoading: boolean;\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DescopeAuthService {\n public descopeSdk: AngularDescopeSDK;\n private readonly sessionSubject: BehaviorSubject<DescopeSession>;\n private readonly userSubject: BehaviorSubject<DescopeUser>;\n readonly session$: Observable<DescopeSession>;\n readonly user$: Observable<DescopeUser>;\n\n constructor(config: DescopeAuthConfig) {\n this.descopeSdk = observabilify<DescopeSDK>(\n createSdk({\n persistTokens: isBrowser() as true,\n storeLastAuthenticatedUser: isBrowser() as true,\n autoRefresh: isBrowser() as true,\n ...config,\n baseHeaders\n })\n );\n\n this.sessionSubject = new BehaviorSubject<DescopeSession>({\n isAuthenticated: false,\n isSessionLoading: false,\n sessionToken: '',\n claims: undefined\n });\n this.session$ = this.sessionSubject.asObservable();\n this.userSubject = new BehaviorSubject<DescopeUser>({\n isUserLoading: false\n });\n this.user$ = this.userSubject.asObservable();\n this.descopeSdk.onSessionTokenChange(this.setSession.bind(this));\n this.descopeSdk.onIsAuthenticatedChange(this.setIsAuthenticated.bind(this));\n this.descopeSdk.onUserChange(this.setUser.bind(this));\n this.descopeSdk.onClaimsChange(this.setClaims.bind(this));\n }\n\n refreshSession(tryRefresh?: boolean) {\n const beforeRefreshSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...beforeRefreshSession,\n isSessionLoading: true\n });\n return this.descopeSdk.refresh(undefined, tryRefresh).pipe(\n finalize(() => {\n const afterRefreshSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...afterRefreshSession,\n isSessionLoading: false\n });\n })\n );\n }\n\n refreshUser() {\n const beforeRefreshUser = this.userSubject.value;\n this.userSubject.next({\n ...beforeRefreshUser,\n isUserLoading: true\n });\n return this.descopeSdk.me().pipe(\n tap((data) => {\n const afterRequestUser = this.userSubject.value;\n if (data.data) {\n this.userSubject.next({\n ...afterRequestUser,\n user: {\n ...data.data\n }\n });\n }\n }),\n finalize(() => {\n const afterRefreshUser = this.userSubject.value;\n this.userSubject.next({\n ...afterRefreshUser,\n isUserLoading: false\n });\n })\n );\n }\n\n getSessionToken() {\n if (isBrowser()) {\n return (\n this.descopeSdk as AngularDescopeSDK & {\n getSessionToken: () => string | null;\n }\n ).getSessionToken();\n }\n console.warn('Get session token is not supported in SSR');\n return '';\n }\n\n getRefreshToken() {\n if (isBrowser()) {\n return (\n this.descopeSdk as AngularDescopeSDK & {\n getRefreshToken: () => string | null;\n }\n ).getRefreshToken();\n }\n this.descopeSdk.getJwtPermissions;\n console.warn('Get refresh token is not supported in SSR');\n return '';\n }\n\n isSessionTokenExpired(token = this.getSessionToken()) {\n if (isBrowser()) {\n return this.descopeSdk.isJwtExpired(token ?? '');\n }\n console.warn('isSessionTokenExpired is not supported in SSR');\n return true;\n }\n\n isRefreshTokenExpired(token = this.getRefreshToken()) {\n if (isBrowser()) {\n return (\n this.descopeSdk as AngularDescopeSDK & {\n isJwtExpired: (token: string) => boolean | null;\n }\n ).isJwtExpired(token ?? '');\n }\n console.warn('isRefreshTokenExpired is not supported in SSR');\n return true;\n }\n\n getJwtPermissions(token = this.getSessionToken(), tenant?: string) {\n if (token === null) {\n console.error('Could not get JWT Permissions - not authenticated');\n return [];\n }\n return this.descopeSdk.getJwtPermissions(token, tenant);\n }\n\n getJwtRoles(token = this.getSessionToken(), tenant?: string) {\n if (token === null) {\n console.error('Could not get JWT Roles - not authenticated');\n return [];\n }\n return this.descopeSdk.getJwtRoles(token, tenant);\n }\n\n isAuthenticated() {\n return this.sessionSubject.value.isAuthenticated;\n }\n\n setSession(sessionToken: string | null) {\n const currentSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...currentSession,\n sessionToken\n });\n }\n\n setIsAuthenticated(isAuthenticated: boolean) {\n const currentSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...currentSession,\n isAuthenticated\n });\n }\n\n setUser(user: UserResponse | null) {\n const currentUser = this.userSubject.value;\n this.userSubject.next({\n isUserLoading: currentUser.isUserLoading,\n user\n });\n }\n\n setClaims(claims?: DescopeSession['claims']) {\n const currentSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...currentSession,\n claims\n });\n }\n}\n","import { inject } from '@angular/core';\n\nimport { DescopeAuthService } from './descope-auth.service';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { from, of } from 'rxjs';\n\nexport const descopeAuthGuard = (route: ActivatedRouteSnapshot) => {\n const authService = inject(DescopeAuthService);\n const router = inject(Router);\n const fallbackUrl = route.data['descopeFallbackUrl'];\n const isAuthenticated = authService.isAuthenticated();\n if (!isAuthenticated && !!fallbackUrl) {\n return from(router.navigate([fallbackUrl]));\n }\n return of(isAuthenticated);\n};\n","import { inject } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpHandlerFn,\n HttpInterceptorFn,\n HttpRequest\n} from '@angular/common/http';\nimport { throwError } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { DescopeAuthService } from './descope-auth.service';\nimport { DescopeAuthConfig } from '../types/types';\nimport { isDescopeBridge } from '../utils/constants';\n\nexport const descopeInterceptor: HttpInterceptorFn = (request, next) => {\n const config = inject(DescopeAuthConfig);\n const authService = inject(DescopeAuthService);\n\n function refreshAndRetry(\n request: HttpRequest<unknown>,\n next: HttpHandlerFn,\n error?: HttpErrorResponse\n ) {\n return authService.refreshSession().pipe(\n switchMap((refreshed) => {\n if (refreshed.ok && refreshed.data) {\n const requestWithRefreshedToken = addTokenToRequest(\n request,\n refreshed.data?.sessionJwt\n );\n return next(requestWithRefreshedToken);\n } else {\n return throwError(\n () => error ?? new Error('Could not refresh session!')\n );\n }\n })\n );\n }\n\n function shouldIntercept(request: HttpRequest<unknown>): boolean {\n if (isDescopeBridge()) return false;\n return (\n (config.pathsToIntercept?.length === 0 ||\n config.pathsToIntercept?.some((path) => request.url.includes(path))) ??\n true\n );\n }\n\n function addTokenToRequest(\n request: HttpRequest<unknown>,\n token: string\n ): HttpRequest<unknown> {\n return request.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n if (shouldIntercept(request)) {\n const token = authService.getSessionToken();\n if (!token) {\n return refreshAndRetry(request, next);\n }\n const requestWithToken = addTokenToRequest(request, token);\n return next(requestWithToken).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401 || error.status === 403) {\n return refreshAndRetry(request, next, error);\n } else {\n return throwError(() => error);\n }\n })\n );\n } else {\n return next(request);\n }\n};\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n ViewChild,\n AfterViewInit,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DescopeAuthService } from '../../services/descope-auth.service';\nimport { from } from 'rxjs';\nimport { baseHeaders } from '../../utils/constants';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\n\n// Use \"import type\" to import only the TypeScript type information.\n// This is safe for SSR because it's completely erased at compile time and generates no runtime import.\nimport type DescopeWebComponent from '@descope/web-component';\nimport type { CustomStorage } from '@descope/web-component';\nimport OverrideThemes from '@descope/web-component';\n\n@Component({\n selector: 'descope[flowId]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: `\n <descope-wc\n #descopeWc\n [attr.project-id]=\"projectId\"\n [attr.flow-id]=\"flowId\"\n [attr.base-url]=\"baseUrl\"\n [attr.base-static-url]=\"baseStaticUrl\"\n [attr.base-cdn-url]=\"baseCdnUrl\"\n [attr.store-last-authenticated-user]=\"storeLastAuthenticatedUser\"\n [attr.theme]=\"theme\"\n [attr.locale]=\"locale\"\n [attr.tenant]=\"tenant\"\n [attr.telemetry-key]=\"telemetryKey\"\n [attr.redirect-url]=\"redirectUrl\"\n [attr.auto-focus]=\"autoFocus\"\n [attr.validate-on-blur]=\"validateOnBlur\"\n [attr.restart-on-error]=\"restartOnError\"\n [attr.send-session-token]=\"sendSessionToken\"\n [attr.debug]=\"debug\"\n [attr.style-id]=\"styleId\"\n [attr.theme-override]=\"themeOverride\"\n [attr.client]=\"clientString\"\n [attr.nonce]=\"nonceString\"\n [attr.dismiss-screen-error-on-input]=\"dismissScreenErrorOnInput\"\n [attr.popup-origin]=\"popupOrigin\"\n [attr.form]=\"formString\"\n [customStorage]=\"customStorage\"\n >\n <ng-content></ng-content>\n </descope-wc>\n `\n})\nexport class DescopeComponent implements OnInit, OnChanges, AfterViewInit {\n @ViewChild('descopeWc')\n private readonly descopeWc!: ElementRef<DescopeWebComponent>;\n\n get clientString(): string | undefined {\n if (!this.client) return undefined;\n try {\n return JSON.stringify(this.client);\n } catch {\n return undefined;\n }\n }\n\n get nonceString(): string | undefined {\n if (!this.nonce) return undefined;\n return typeof this.nonce === 'string' ? this.nonce : undefined;\n }\n\n get formString(): string | undefined {\n if (!this.form) return undefined;\n try {\n return JSON.stringify(this.form);\n } catch {\n return undefined;\n }\n }\n\n projectId!: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n storeLastAuthenticatedUser?: boolean;\n customStorage?: CustomStorage;\n @Input() flowId!: string;\n\n @Input() locale: string;\n @Input() theme: 'light' | 'dark' | 'os';\n @Input() tenant: string;\n @Input() telemetryKey: string;\n @Input() redirectUrl: string;\n @Input() autoFocus: true | false | 'skipFirstScreen';\n @Input() validateOnBlur: boolean;\n @Input() restartOnError: boolean;\n @Input() sendSessionToken: boolean;\n\n @Input() debug: boolean;\n @Input() errorTransformer: (error: { text: string; type: string }) => string;\n @Input() onScreenUpdate: (\n screenName: string,\n context: Record<string, any>,\n next: (\n interactionId: string,\n form: Record<string, any>\n ) => Promise<unknown>,\n ref: HTMLElement\n ) => boolean | Promise<boolean>;\n @Input() client: Record<string, any>;\n @Input() nonce: string;\n @Input() dismissScreenErrorOnInput: boolean;\n @Input() form: Record<string, any>;\n @Input() logger: ILogger;\n @Input() styleId: string;\n @Input() themeOverride: OverrideThemes;\n @Input() popupOrigin: string;\n\n @Output() success: EventEmitter<CustomEvent> =\n new EventEmitter<CustomEvent>();\n @Output() error: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n private webComponent?: DescopeWebComponent;\n private isWebComponentLoaded = false;\n\n constructor(\n private elementRef: ElementRef,\n private authService: DescopeAuthService,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) private platformId: object\n ) {\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n this.storeLastAuthenticatedUser = descopeConfig.storeLastAuthenticatedUser;\n this.customStorage = descopeConfig.customStorage;\n }\n\n async ngOnInit(): Promise<void> {\n // Only load web component in browser environment\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n await this.loadWebComponent();\n }\n\n private async loadWebComponent(): Promise<void> {\n if (this.isWebComponentLoaded) {\n return;\n }\n\n try {\n // Dynamically import the web component only in browser context\n const DescopeWcModule = await import('@descope/web-component');\n const DescopeWc = DescopeWcModule.default;\n const sdk = this.authService.descopeSdk;\n\n DescopeWc.sdkConfigOverrides = {\n // Overrides the web-component's base headers to indicate usage via the Angular SDK\n baseHeaders,\n // Disables token persistence within the web-component to delegate token management\n // to the global SDK hooks. This ensures token handling aligns with the SDK's configuration,\n // and web-component requests leverage the global SDK's beforeRequest hooks for consistency\n persistTokens: false,\n hooks: {\n get beforeRequest() {\n // Retrieves the beforeRequest hook from the global SDK, which is initialized\n // within the AuthProvider using the desired configuration. This approach ensures\n // the web-component utilizes the same beforeRequest hooks as the global SDK\n return sdk.httpClient.hooks?.beforeRequest;\n },\n set beforeRequest(_) {\n // The empty setter prevents runtime errors when attempts are made to assign a value to 'beforeRequest'.\n // JavaScript objects default to having both getters and setters\n }\n }\n };\n\n this.isWebComponentLoaded = true;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Descope web component:', error);\n }\n }\n\n ngAfterViewInit(): void {\n if (!this.descopeWc?.nativeElement) return;\n\n this.webComponent = this.descopeWc.nativeElement;\n this.setupNonAttributeProperties();\n this.setupEventListeners();\n }\n\n ngOnChanges(): void {\n if (this.webComponent) {\n this.setupNonAttributeProperties();\n }\n }\n\n private setupNonAttributeProperties(): void {\n if (!this.webComponent) return;\n\n // Handle non-attribute properties\n if (this.errorTransformer) {\n this.webComponent.errorTransformer = this.errorTransformer;\n }\n\n if (this.onScreenUpdate) {\n this.webComponent.onScreenUpdate = this.onScreenUpdate;\n }\n\n if (this.logger) {\n this.webComponent.logger = this.logger;\n }\n }\n\n private setupEventListeners(): void {\n if (!this.webComponent) return;\n\n this.webComponent.addEventListener('success', (e: Event) => {\n from(\n this.authService.descopeSdk.httpClient.hooks?.afterRequest!(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {} as any,\n new Response(JSON.stringify((e as CustomEvent).detail))\n ) as Promise<unknown>\n ).subscribe(() => {\n if (this.success) {\n this.success?.emit(e as CustomEvent);\n }\n });\n });\n\n if (this.error) {\n this.webComponent.addEventListener('error', (e: Event) => {\n this.error?.emit(e as CustomEvent);\n });\n }\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n CUSTOM_ELEMENTS_SCHEMA\n} from '@angular/core';\nimport { DescopeComponent } from '../descope/descope.component';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\n\n@Component({\n selector: 'descope-sign-in-flow',\n standalone: true,\n imports: [DescopeComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './sign-in-flow.component.html'\n})\nexport class SignInFlowComponent {\n projectId: string;\n\n @Input() locale: string;\n @Input() theme: 'light' | 'dark' | 'os';\n @Input() tenant: string;\n @Input() telemetryKey: string;\n @Input() redirectUrl: string;\n @Input() autoFocus: true | false | 'skipFirstScreen';\n @Input() validateOnBlur: boolean;\n @Input() restartOnError: boolean;\n @Input() sendSessionToken: boolean;\n\n @Input() debug: boolean;\n @Input() errorTransformer: (error: { text: string; type: string }) => string;\n @Input() onScreenUpdate: (\n screenName: string,\n context: Record<string, any>,\n next: (\n interactionId: string,\n form: Record<string, any>\n ) => Promise<unknown>,\n ref: HTMLElement\n ) => boolean | Promise<boolean>;\n @Input() client: Record<string, any>;\n @Input() nonce: string;\n @Input() dismissScreenErrorOnInput: boolean;\n @Input() form: Record<string, any>;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() success: EventEmitter<CustomEvent> =\n new EventEmitter<CustomEvent>();\n @Output() error: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n constructor(descopeConfig: DescopeAuthConfig) {\n this.projectId = descopeConfig.projectId;\n }\n}\n","<descope\n (success)=\"success.emit($event)\"\n (error)=\"error.emit($event)\"\n flowId=\"sign-in\"\n [locale]=\"locale\"\n [theme]=\"theme\"\n [tenant]=\"tenant\"\n [telemetryKey]=\"telemetryKey\"\n [redirectUrl]=\"redirectUrl\"\n [autoFocus]=\"autoFocus\"\n [validateOnBlur]=\"validateOnBlur\"\n [restartOnError]=\"restartOnError\"\n [sendSessionToken]=\"sendSessionToken\"\n [debug]=\"debug\"\n [errorTransformer]=\"errorTransformer\"\n [onScreenUpdate]=\"onScreenUpdate\"\n [client]=\"client\"\n [nonce]=\"nonce\"\n [dismissScreenErrorOnInput]=\"dismissScreenErrorOnInput\"\n [form]=\"form\"\n [logger]=\"logger\"\n [styleId]=\"styleId\"\n>\n</descope>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n CUSTOM_ELEMENTS_SCHEMA\n} from '@angular/core';\nimport { DescopeComponent } from '../descope/descope.component';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\n\n@Component({\n selector: 'descope-sign-up-flow',\n standalone: true,\n imports: [DescopeComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './sign-up-flow.component.html'\n})\nexport class SignUpFlowComponent {\n projectId: string;\n\n @Input() locale: string;\n @Input() theme: 'light' | 'dark' | 'os';\n @Input() tenant: string;\n @Input() telemetryKey: string;\n @Input() redirectUrl: string;\n @Input() autoFocus: true | false | 'skipFirstScreen';\n @Input() validateOnBlur: boolean;\n @Input() restartOnError: boolean;\n @Input() sendSessionToken: boolean;\n\n @Input() debug: boolean;\n @Input() errorTransformer: (error: { text: string; type: string }) => string;\n @Input() onScreenUpdate: (\n screenName: string,\n context: Record<string, any>,\n next: (\n interactionId: string,\n form: Record<string, any>\n ) => Promise<unknown>,\n ref: HTMLElement\n ) => boolean | Promise<boolean>;\n @Input() client: Record<string, any>;\n @Input() nonce: string;\n @Input() dismissScreenErrorOnInput: boolean;\n @Input() form: Record<string, any>;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() success: EventEmitter<CustomEvent> =\n new EventEmitter<CustomEvent>();\n @Output() error: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n constructor(descopeConfig: DescopeAuthConfig) {\n this.projectId = descopeConfig.projectId;\n }\n}\n","<descope\n (success)=\"success.emit($event)\"\n (error)=\"error.emit($event)\"\n flowId=\"sign-up\"\n [locale]=\"locale\"\n [theme]=\"theme\"\n [tenant]=\"tenant\"\n [telemetryKey]=\"telemetryKey\"\n [redirectUrl]=\"redirectUrl\"\n [autoFocus]=\"autoFocus\"\n [validateOnBlur]=\"validateOnBlur\"\n [restartOnError]=\"restartOnError\"\n [sendSessionToken]=\"sendSessionToken\"\n [debug]=\"debug\"\n [errorTransformer]=\"errorTransformer\"\n [onScreenUpdate]=\"onScreenUpdate\"\n [client]=\"client\"\n [nonce]=\"nonce\"\n [dismissScreenErrorOnInput]=\"dismissScreenErrorOnInput\"\n [form]=\"form\"\n [logger]=\"logger\"\n [styleId]=\"styleId\"\n>\n</descope>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n CUSTOM_ELEMENTS_SCHEMA\n} from '@angular/core';\nimport { DescopeComponent } from '../descope/descope.component';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\n\n@Component({\n selector: 'descope-sign-up-or-in-flow',\n standalone: true,\n imports: [DescopeComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './sign-up-or-in-flow.component.html'\n})\nexport class SignUpOrInFlowComponent {\n projectId: string;\n\n @Input() locale: string;\n @Input() theme: 'light' | 'dark' | 'os';\n @Input() tenant: string;\n @Input() telemetryKey: string;\n @Input() redirectUrl: string;\n @Input() autoFocus: true | false | 'skipFirstScreen';\n @Input() validateOnBlur: boolean;\n @Input() restartOnError: boolean;\n @Input() sendSessionToken: boolean;\n\n @Input() debug: boolean;\n @Input() errorTransformer: (error: { text: string; type: string }) => string;\n @Input() onScreenUpdate: (\n screenName: string,\n context: Record<string, any>,\n next: (\n interactionId: string,\n form: Record<string, any>\n ) => Promise<unknown>,\n ref: HTMLElement\n ) => boolean | Promise<boolean>;\n @Input() client: Record<string, any>;\n @Input() nonce: string;\n @Input() dismissScreenErrorOnInput: boolean;\n @Input() form: Record<string, any>;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() success: EventEmitter<CustomEvent> =\n new EventEmitter<CustomEvent>();\n @Output() error: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n constructor(descopeConfig: DescopeAuthConfig) {\n this.projectId = descopeConfig.projectId;\n }\n}\n","<descope\n (success)=\"success.emit($event)\"\n (error)=\"error.emit($event)\"\n flowId=\"sign-up-or-in\"\n [locale]=\"locale\"\n [theme]=\"theme\"\n [tenant]=\"tenant\"\n [telemetryKey]=\"telemetryKey\"\n [redirectUrl]=\"redirectUrl\"\n [autoFocus]=\"autoFocus\"\n [validateOnBlur]=\"validateOnBlur\"\n [restartOnError]=\"restartOnError\"\n [sendSessionToken]=\"sendSessionToken\"\n [debug]=\"debug\"\n [errorTransformer]=\"errorTransformer\"\n [onScreenUpdate]=\"onScreenUpdate\"\n [client]=\"client\"\n [nonce]=\"nonce\"\n [dismissScreenErrorOnInput]=\"dismissScreenErrorOnInput\"\n [form]=\"form\"\n [logger]=\"logger\"\n [styleId]=\"styleId\"\n>\n</descope>\n","import {\n Directive,\n ElementRef,\n Inject,\n OnChanges,\n OnInit,\n PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Abstract base class for widget components that need to be lazily loaded\n * with SSR support. This class handles the common lifecycle patterns:\n * - Browser detection for SSR compatibility\n * - Lazy loading of widgets\n * - DOM manipulation (appending to element)\n * - Lifecycle coordination between loading, setup, and event listeners\n *\n * Derived components must implement:\n * - loadWidget(): Dynamic import and instantiation of the specific widget\n * - setupWebComponent(): Configure attributes and properties on the widget\n * - setupEventListeners(): Attach event listeners to the widget\n */\n@Directive()\nexport abstract class BaseLazyWidgetComponent implements OnInit, OnChanges {\n protected webComponent?: HTMLElement;\n\n constructor(\n protected elementRef: ElementRef,\n @Inject(PLATFORM_ID) protected platformId: object\n ) {}\n\n async ngOnInit(): Promise<void> {\n // Only load widget in browser environment\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const widget = await this.loadWidget();\n if (widget) {\n this.webComponent = widget;\n this.setupWebComponent();\n this.elementRef.nativeElement.appendChild(this.webComponent);\n // Set up event listeners after the widget is loaded and appended\n this.setupEventListeners();\n }\n }\n\n ngOnChanges(): void {\n if (this.webComponent) {\n this.setupWebComponent();\n }\n }\n\n /**\n * Load the widget module dynamically. This method should:\n * 1. Dynamically import the widget module\n * 2. Instantiate the widget\n * 3. Return the widget as an HTMLElement\n * 4. Handle errors appropriately\n *\n * @returns The instantiated widget element, or null if loading failed\n */\n protected abstract loadWidget(): Promise<HTMLElement | null>;\n\n /**\n * Configure the web component by setting attributes and properties.\n * This is called after the widget is loaded and whenever inputs change.\n */\n protected abstract setupWebComponent(): void;\n\n /**\n * Attach event listeners to the web component.\n * This is called once after the view is initialized.\n */\n protected abstract setupEventListeners(): void;\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'user-management[tenant]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: ''\n})\nexport class UserManagementComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() tenant: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/user-management-widget');\n const DescopeUserManagementWidget = WidgetModule.default;\n return new DescopeUserManagementWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load User Management widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('tenant', this.tenant);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'role-management[tenant]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: ''\n})\nexport class RoleManagementComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() tenant: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/role-management-widget');\n const DescopeRoleManagementWidget = WidgetModule.default;\n return new DescopeRoleManagementWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Role Management widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('tenant', this.tenant);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'access-key-management[tenant]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: ''\n})\nexport class AccessKeyManagementComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() tenant: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import(\n '@descope/access-key-management-widget'\n );\n const DescopeAccessKeyManagementWidget = WidgetModule.default;\n return new DescopeAccessKeyManagementWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Access Key Management widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('tenant', this.tenant);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'audit-management[tenant]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: ''\n})\nexport class AuditManagementComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() tenant: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/audit-management-widget');\n const DescopeAuditManagementWidget = WidgetModule.default;\n return new DescopeAuditManagementWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Audit Management widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('tenant', this.tenant);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { DescopeAuthService } from '../../services/descope-auth.service';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'user-profile',\n standalone: true,\n template: ''\n})\nexport class UserProfileComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() logout: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n private descopeAuthService: DescopeAuthService,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/user-profile-widget');\n const DescopeUserProfileWidget = WidgetModule.default;\n return new DescopeUserProfileWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load User Profile widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n this.webComponent.addEventListener('logout', (e: Event) => {\n this.logout?.emit(e as CustomEvent);\n this.descopeAuthService.setSession('');\n this.descopeAuthService.setIsAuthenticated(false);\n this.descopeAuthService.setUser(null);\n });\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'applications-portal',\n standalone: true,\n template: ''\n})\nexport class ApplicationsPortalComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() logout: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/applications-portal-widget');\n const DescopeApplicationsPortalWidget = WidgetModule.default;\n return new DescopeApplicationsPortalWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Applications Portal widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.logout) {\n this.webComponent.addEventListener('logout', (e: Event) => {\n this.logout?.emit(e as CustomEvent);\n });\n }\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n CUSTOM_ELEMENTS_SCHEMA,\n ModuleWithProviders,\n NgModule,\n Optional,\n SkipSelf\n} from '@angular/core';\nimport { DescopeComponent } from './components/descope/descope.component';\nimport { SignInFlowComponent } from './components/sign-in-flow/sign-in-flow.component';\nimport { SignUpFlowComponent } from './components/sign-up-flow/sign-up-flow.component';\nimport { SignUpOrInFlowComponent } from './components/sign-up-or-in-flow/sign-up-or-in-flow.component';\nimport { UserManagementComponent } from './components/user-management/user-management.component';\nimport { RoleManagementComponent } from './components/role-management/role-management.component';\nimport { AccessKeyManagementComponent } from './components/access-key-management/access-key-management.component';\nimport { AuditManagementComponent } from './components/audit-management/audit-management.component';\nimport { UserProfileComponent } from './components/user-profile/user-profile.component';\nimport { ApplicationsPortalComponent } from './components/applications-portal/applications-portal.component';\nimport { DescopeAuthConfig } from './types/types';\n\n@NgModule({\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [\n DescopeComponent,\n SignInFlowComponent,\n SignUpFlowComponent,\n SignUpOrInFlowComponent,\n UserManagementComponent,\n RoleManagementComponent,\n AccessKeyManagementComponent,\n AuditManagementComponent,\n UserProfileComponent,\n ApplicationsPortalComponent\n ],\n exports: [\n DescopeComponent,\n SignInFlowComponent,\n SignUpFlowComponent,\n SignUpOrInFlowComponent,\n UserManagementComponent,\n RoleManagementComponent,\n AccessKeyManagementComponent,\n AuditManagementComponent,\n UserProfileComponent,\n ApplicationsPortalComponent\n ]\n})\nexport class DescopeAuthModule {\n constructor(@Optional() @SkipSelf() parentModule?: DescopeAuthModule) {\n if (parentModule) {\n // eslint-disable-next-line no-console\n console.log('DescopeAuthModule is loaded in a child module');\n }\n }\n\n static forRoot(\n config?: DescopeAuthConfig\n ): ModuleWithProviders<DescopeAuthModule> {\n return {\n ngModule: DescopeAuthModule,\n providers: [{ provide: DescopeAuthConfig, useValue: config }]\n };\n }\n}\n","/*\n * Public API Surface of angular-sdk\n */\n\nexport * from './lib/services/descope-auth.service';\nexport * from './lib/services/descope-auth.guard';\nexport * from './lib/services/descope.interceptor';\nexport * from './lib/descope-auth.module';\nexport * from './lib/components/descope/descope.component';\nexport * from './lib/components/sign-in-flow/sign-in-flow.component';\nexport * from './lib/components/sign-up-flow/sign-up-flow.component';\nexport * from './lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component';\nexport * from './lib/components/user-management/user-management.component';\nexport * from './lib/components/role-management/role-management.component';\nexport * from './lib/components/access-key-management/access-key-management.component';\nexport * from './lib/components/audit-management/audit-management.component';\nexport * from './lib/components/user-profile/user-profile.component';\nexport * from './lib/components/applications-portal/applications-portal.component';\nexport * from './lib/types/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DescopeAuthConfig"],"mappings":"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"}
1
+ {"version":3,"file":"descope-angular-sdk.mjs","sources":["../../projects/angular-sdk/src/lib/utils/helpers.ts","../../projects/angular-sdk/src/environment.ts","../../projects/angular-sdk/src/lib/utils/constants.ts","../../projects/angular-sdk/src/lib/types/types.ts","../../projects/angular-sdk/src/lib/services/descope-auth.service.ts","../../projects/angular-sdk/src/lib/services/descope-auth.guard.ts","../../projects/angular-sdk/src/lib/services/descope.interceptor.ts","../../projects/angular-sdk/src/lib/components/descope/descope.component.ts","../../projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.ts","../../projects/angular-sdk/src/lib/components/sign-in-flow/sign-in-flow.component.html","../../projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.ts","../../projects/angular-sdk/src/lib/components/sign-up-flow/sign-up-flow.component.html","../../projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.ts","../../projects/angular-sdk/src/lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component.html","../../projects/angular-sdk/src/lib/base/base-lazy-widget.component.ts","../../projects/angular-sdk/src/lib/components/user-management/user-management.component.ts","../../projects/angular-sdk/src/lib/components/role-management/role-management.component.ts","../../projects/angular-sdk/src/lib/components/access-key-management/access-key-management.component.ts","../../projects/angular-sdk/src/lib/components/audit-management/audit-management.component.ts","../../projects/angular-sdk/src/lib/components/user-profile/user-profile.component.ts","../../projects/angular-sdk/src/lib/components/applications-portal/applications-portal.component.ts","../../projects/angular-sdk/src/lib/descope-auth.module.ts","../../projects/angular-sdk/src/public-api.ts","../../projects/angular-sdk/src/descope-angular-sdk.ts"],"sourcesContent":["import { from, Observable } from 'rxjs';\n\nexport type Observablefied<T> = {\n [K in keyof T]: T[K] extends (...args: infer Args) => Promise<infer R>\n ? (...args: Args) => Observable<R>\n : T[K] extends (...args: infer Args) => infer R\n ? (...args: Args) => R\n : T[K] extends object\n ? Observablefied<T[K]>\n : T[K];\n};\n\nexport function observabilify<T>(value: T): Observablefied<T> {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const observableValue: any = {};\n\n for (const key in value) {\n if (typeof value[key] === 'function') {\n const fn = value[key] as (...args: unknown[]) => unknown;\n observableValue[key] = (...args: unknown[]) => {\n const fnResult = fn(...args);\n if (fnResult instanceof Promise) {\n return from(fnResult);\n } else {\n return fnResult;\n }\n };\n } else if (typeof value[key] === 'object' && value[key] !== null) {\n observableValue[key] = observabilify(value[key]);\n } else {\n observableValue[key] = value[key];\n }\n }\n\n return observableValue as Observablefied<T>;\n}\n","export const environment = {\n buildVersion: '0.28.5'\n};\n","import { environment } from '../../environment';\n\nexport const baseHeaders = {\n 'x-descope-sdk-name': 'angular',\n 'x-descope-sdk-version': environment.buildVersion\n};\n\n// Detect if running in a native flow (e.g., mobile app with Descope bridge in a webview)\nexport const isDescopeBridge = () =>\n typeof window !== 'undefined' && !!(window as any)['descopeBridge'];\n\nexport const isBrowser = () => typeof window !== 'undefined';\n","import { CookieConfig, OidcConfig } from '@descope/web-js-sdk';\nimport type { CustomStorage, ILogger } from '@descope/web-component';\nexport class DescopeAuthConfig {\n projectId = '';\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n // Default is true. If true, tokens will be stored on local storage.\n persistTokens?: boolean;\n // Default is true. If true, the SDK will automatically refresh the session token when it is about to expire\n autoRefresh?: boolean;\n sessionTokenViaCookie?: CookieConfig;\n // If truthy the SDK refresh and logout functions will use the OIDC client\n // Accepts boolean or OIDC configuration\n oidcConfig?: OidcConfig;\n // Default is true. If true, last authenticated user will be stored on local storage and can accessed with getUser function\n storeLastAuthenticatedUser?: boolean;\n pathsToIntercept?: string[];\n // Custom storage configuration for tokens and user data\n customStorage?: CustomStorage;\n}\n\nexport type { ILogger };\n","/* eslint-disable no-console */\n// workaround for TS issue https://github.com/microsoft/TypeScript/issues/42873\n// eslint-disable-next-line\nimport type * as _1 from '@descope/core-js-sdk';\nimport { Injectable } from '@angular/core';\nimport type { UserResponse } from '@descope/web-js-sdk';\nimport type * as _2 from 'oidc-client-ts'; // eslint-disable-line\nimport createSdk from '@descope/web-js-sdk';\nimport { BehaviorSubject, finalize, Observable, tap } from 'rxjs';\nimport { observabilify, Observablefied } from '../utils/helpers';\nimport { baseHeaders, isBrowser } from '../utils/constants';\nimport { DescopeAuthConfig } from '../types/types';\n\ntype DescopeSDK = ReturnType<typeof createSdk>;\ntype AngularDescopeSDK = Observablefied<DescopeSDK>;\n\nexport interface DescopeSession {\n isAuthenticated: boolean;\n isSessionLoading: boolean;\n sessionToken: string | null;\n claims?: Record<string, any>;\n}\n\nexport type DescopeUser = {\n user?: UserResponse | null;\n isUserLoading: boolean;\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DescopeAuthService {\n public descopeSdk: AngularDescopeSDK;\n private readonly sessionSubject: BehaviorSubject<DescopeSession>;\n private readonly userSubject: BehaviorSubject<DescopeUser>;\n readonly session$: Observable<DescopeSession>;\n readonly user$: Observable<DescopeUser>;\n\n constructor(config: DescopeAuthConfig) {\n this.descopeSdk = observabilify<DescopeSDK>(\n createSdk({\n persistTokens: isBrowser() as true,\n storeLastAuthenticatedUser: isBrowser() as true,\n autoRefresh: isBrowser() as true,\n ...config,\n baseHeaders\n })\n );\n\n this.sessionSubject = new BehaviorSubject<DescopeSession>({\n isAuthenticated: false,\n isSessionLoading: false,\n sessionToken: '',\n claims: undefined\n });\n this.session$ = this.sessionSubject.asObservable();\n this.userSubject = new BehaviorSubject<DescopeUser>({\n isUserLoading: false\n });\n this.user$ = this.userSubject.asObservable();\n this.descopeSdk.onSessionTokenChange(this.setSession.bind(this));\n this.descopeSdk.onIsAuthenticatedChange(this.setIsAuthenticated.bind(this));\n this.descopeSdk.onUserChange(this.setUser.bind(this));\n this.descopeSdk.onClaimsChange(this.setClaims.bind(this));\n }\n\n refreshSession(tryRefresh?: boolean) {\n const beforeRefreshSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...beforeRefreshSession,\n isSessionLoading: true\n });\n return this.descopeSdk.refresh(undefined, tryRefresh).pipe(\n finalize(() => {\n const afterRefreshSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...afterRefreshSession,\n isSessionLoading: false\n });\n })\n );\n }\n\n refreshUser() {\n const beforeRefreshUser = this.userSubject.value;\n this.userSubject.next({\n ...beforeRefreshUser,\n isUserLoading: true\n });\n return this.descopeSdk.me().pipe(\n tap((data) => {\n const afterRequestUser = this.userSubject.value;\n if (data.data) {\n this.userSubject.next({\n ...afterRequestUser,\n user: {\n ...data.data\n }\n });\n }\n }),\n finalize(() => {\n const afterRefreshUser = this.userSubject.value;\n this.userSubject.next({\n ...afterRefreshUser,\n isUserLoading: false\n });\n })\n );\n }\n\n getSessionToken() {\n if (isBrowser()) {\n return (\n this.descopeSdk as AngularDescopeSDK & {\n getSessionToken: () => string | null;\n }\n ).getSessionToken();\n }\n console.warn('Get session token is not supported in SSR');\n return '';\n }\n\n getRefreshToken() {\n if (isBrowser()) {\n return (\n this.descopeSdk as AngularDescopeSDK & {\n getRefreshToken: () => string | null;\n }\n ).getRefreshToken();\n }\n this.descopeSdk.getJwtPermissions;\n console.warn('Get refresh token is not supported in SSR');\n return '';\n }\n\n isSessionTokenExpired(token = this.getSessionToken()) {\n if (isBrowser()) {\n return this.descopeSdk.isJwtExpired(token ?? '');\n }\n console.warn('isSessionTokenExpired is not supported in SSR');\n return true;\n }\n\n isRefreshTokenExpired(token = this.getRefreshToken()) {\n if (isBrowser()) {\n return (\n this.descopeSdk as AngularDescopeSDK & {\n isJwtExpired: (token: string) => boolean | null;\n }\n ).isJwtExpired(token ?? '');\n }\n console.warn('isRefreshTokenExpired is not supported in SSR');\n return true;\n }\n\n getJwtPermissions(token = this.getSessionToken(), tenant?: string) {\n if (token === null) {\n console.error('Could not get JWT Permissions - not authenticated');\n return [];\n }\n return this.descopeSdk.getJwtPermissions(token, tenant);\n }\n\n getJwtRoles(token = this.getSessionToken(), tenant?: string) {\n if (token === null) {\n console.error('Could not get JWT Roles - not authenticated');\n return [];\n }\n return this.descopeSdk.getJwtRoles(token, tenant);\n }\n\n isAuthenticated() {\n return this.sessionSubject.value.isAuthenticated;\n }\n\n setSession(sessionToken: string | null) {\n const currentSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...currentSession,\n sessionToken\n });\n }\n\n setIsAuthenticated(isAuthenticated: boolean) {\n const currentSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...currentSession,\n isAuthenticated\n });\n }\n\n setUser(user: UserResponse | null) {\n const currentUser = this.userSubject.value;\n this.userSubject.next({\n isUserLoading: currentUser.isUserLoading,\n user\n });\n }\n\n setClaims(claims?: DescopeSession['claims']) {\n const currentSession = this.sessionSubject.value;\n this.sessionSubject.next({\n ...currentSession,\n claims\n });\n }\n}\n","import { inject } from '@angular/core';\n\nimport { DescopeAuthService } from './descope-auth.service';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { from, of } from 'rxjs';\n\nexport const descopeAuthGuard = (route: ActivatedRouteSnapshot) => {\n const authService = inject(DescopeAuthService);\n const router = inject(Router);\n const fallbackUrl = route.data['descopeFallbackUrl'];\n const isAuthenticated = authService.isAuthenticated();\n if (!isAuthenticated && !!fallbackUrl) {\n return from(router.navigate([fallbackUrl]));\n }\n return of(isAuthenticated);\n};\n","import { inject } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpHandlerFn,\n HttpInterceptorFn,\n HttpRequest\n} from '@angular/common/http';\nimport { throwError } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { DescopeAuthService } from './descope-auth.service';\nimport { DescopeAuthConfig } from '../types/types';\nimport { isDescopeBridge } from '../utils/constants';\n\nexport const descopeInterceptor: HttpInterceptorFn = (request, next) => {\n const config = inject(DescopeAuthConfig);\n const authService = inject(DescopeAuthService);\n\n function refreshAndRetry(\n request: HttpRequest<unknown>,\n next: HttpHandlerFn,\n error?: HttpErrorResponse\n ) {\n return authService.refreshSession().pipe(\n switchMap((refreshed) => {\n if (refreshed.ok && refreshed.data) {\n const requestWithRefreshedToken = addTokenToRequest(\n request,\n refreshed.data?.sessionJwt\n );\n return next(requestWithRefreshedToken);\n } else {\n return throwError(\n () => error ?? new Error('Could not refresh session!')\n );\n }\n })\n );\n }\n\n function shouldIntercept(request: HttpRequest<unknown>): boolean {\n if (isDescopeBridge()) return false;\n return (\n (config.pathsToIntercept?.length === 0 ||\n config.pathsToIntercept?.some((path) => request.url.includes(path))) ??\n true\n );\n }\n\n function addTokenToRequest(\n request: HttpRequest<unknown>,\n token: string\n ): HttpRequest<unknown> {\n return request.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n if (shouldIntercept(request)) {\n const token = authService.getSessionToken();\n if (!token) {\n return refreshAndRetry(request, next);\n }\n const requestWithToken = addTokenToRequest(request, token);\n return next(requestWithToken).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401 || error.status === 403) {\n return refreshAndRetry(request, next, error);\n } else {\n return throwError(() => error);\n }\n })\n );\n } else {\n return next(request);\n }\n};\n","import {\n Component,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DescopeAuthService } from '../../services/descope-auth.service';\nimport { from } from 'rxjs';\nimport { baseHeaders } from '../../utils/constants';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\n\n// Use \"import type\" to import only the TypeScript type information.\n// This is safe for SSR because it's completely erased at compile time and generates no runtime import.\nimport type DescopeWebComponent from '@descope/web-component';\nimport type { CustomStorage } from '@descope/web-component';\nimport OverrideThemes from '@descope/web-component';\n\n// Node.ELEMENT_NODE, as a literal - the Node global is not guaranteed to exist\n// during server-side rendering.\nconst ELEMENT_NODE = 1;\n\n@Component({\n selector: 'descope[flowId]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n // The subtree is built imperatively (see ngOnInit), so there is nothing for\n // Angular to hydrate here - it re-renders it on the client instead.\n host: { ngSkipHydration: 'true' },\n // The element is intentionally declared inside an <ng-template> instead of\n // rendered directly. Angular appends an element to the DOM in its creation\n // pass but applies [attr.*] bindings in the later update pass, so a\n // <descope-wc> rendered directly here would be connected - and would run its\n // connectedCallback - before it had a project-id. The custom element reads\n // project-id at that moment, fails, and can never recover, which broke every\n // mount after the first (descope/etc#18415). Building the template by hand\n // lets the bindings run while the nodes are still detached.\n template: `\n <ng-container #wcAnchor></ng-container>\n <ng-template #wcTpl>\n <descope-wc\n [attr.project-id]=\"projectId\"\n [attr.flow-id]=\"flowId\"\n [attr.base-url]=\"baseUrl\"\n [attr.base-static-url]=\"baseStaticUrl\"\n [attr.base-cdn-url]=\"baseCdnUrl\"\n [attr.store-last-authenticated-user]=\"storeLastAuthenticatedUser\"\n [attr.theme]=\"theme\"\n [attr.locale]=\"locale\"\n [attr.tenant]=\"tenant\"\n [attr.telemetry-key]=\"telemetryKey\"\n [attr.redirect-url]=\"redirectUrl\"\n [attr.auto-focus]=\"autoFocus\"\n [attr.validate-on-blur]=\"validateOnBlur\"\n [attr.restart-on-error]=\"restartOnError\"\n [attr.send-session-token]=\"sendSessionToken\"\n [attr.debug]=\"debug\"\n [attr.style-id]=\"styleId\"\n [attr.theme-override]=\"themeOverride\"\n [attr.client]=\"clientString\"\n [attr.nonce]=\"nonceString\"\n [attr.dismiss-screen-error-on-input]=\"dismissScreenErrorOnInput\"\n [attr.popup-origin]=\"popupOrigin\"\n [attr.form]=\"formString\"\n [customStorage]=\"customStorage\"\n >\n <ng-content></ng-content>\n </descope-wc>\n </ng-template>\n `\n})\nexport class DescopeComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('wcTpl', { static: true })\n private readonly wcTpl!: TemplateRef<unknown>;\n\n // Anchor inside this component's own view, so the inserted view stays in the\n // component's change-detection tree and Angular destroys it with the component.\n @ViewChild('wcAnchor', { read: ViewContainerRef, static: true })\n private readonly wcAnchor!: ViewContainerRef;\n\n private wcView?: EmbeddedViewRef<unknown>;\n\n private isDestroyed = false;\n\n get clientString(): string | undefined {\n if (!this.client) return undefined;\n try {\n return JSON.stringify(this.client);\n } catch {\n return undefined;\n }\n }\n\n get nonceString(): string | undefined {\n if (!this.nonce) return undefined;\n return typeof this.nonce === 'string' ? this.nonce : undefined;\n }\n\n get formString(): string | undefined {\n if (!this.form) return undefined;\n try {\n return JSON.stringify(this.form);\n } catch {\n return undefined;\n }\n }\n\n projectId!: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n storeLastAuthenticatedUser?: boolean;\n customStorage?: CustomStorage;\n @Input() flowId!: string;\n\n @Input() locale: string;\n @Input() theme: 'light' | 'dark' | 'os';\n @Input() tenant: string;\n @Input() telemetryKey: string;\n @Input() redirectUrl: string;\n @Input() autoFocus: true | false | 'skipFirstScreen';\n @Input() validateOnBlur: boolean;\n @Input() restartOnError: boolean;\n @Input() sendSessionToken: boolean;\n\n @Input() debug: boolean;\n @Input() errorTransformer: (error: { text: string; type: string }) => string;\n @Input() onScreenUpdate: (\n screenName: string,\n context: Record<string, any>,\n next: (\n interactionId: string,\n form: Record<string, any>\n ) => Promise<unknown>,\n ref: HTMLElement\n ) => boolean | Promise<boolean>;\n @Input() client: Record<string, any>;\n @Input() nonce: string;\n @Input() dismissScreenErrorOnInput: boolean;\n @Input() form: Record<string, any>;\n @Input() logger: ILogger;\n @Input() styleId: string;\n @Input() themeOverride: OverrideThemes;\n @Input() popupOrigin: string;\n\n @Output() success: EventEmitter<CustomEvent> =\n new EventEmitter<CustomEvent>();\n @Output() error: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n private webComponent?: DescopeWebComponent;\n private isWebComponentLoaded = false;\n\n constructor(\n private elementRef: ElementRef,\n private authService: DescopeAuthService,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) private platformId: object\n ) {\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n this.storeLastAuthenticatedUser = descopeConfig.storeLastAuthenticatedUser;\n this.customStorage = descopeConfig.customStorage;\n }\n\n async ngOnInit(): Promise<void> {\n // Load the web component before building the element. The order matters:\n // loadWebComponent sets DescopeWc.sdkConfigOverrides, and if something else\n // on the page already imported @descope/web-component then descope-wc is\n // already defined, so the element would initialize the moment it is\n // connected. Connecting it first would let the flow start without the\n // Angular SDK's base headers, persistTokens: false, and beforeRequest hook.\n if (isPlatformBrowser(this.platformId)) {\n await this.loadWebComponent();\n }\n\n // Built on the server too, so the server-rendered markup keeps containing\n // descope-wc as it did before. ngSkipHydration means the client re-renders\n // this subtree anyway, so the server copy only serves the first paint.\n this.createWebComponent();\n }\n\n /**\n * Builds the template while its nodes are still detached from the document,\n * applies the attribute bindings, and only then connects the element. This is\n * what guarantees project-id and flow-id are present when the custom element\n * runs its connectedCallback.\n */\n private createWebComponent(): void {\n // ngOnInit awaits the import, so the component can already be destroyed by\n // the time we get here (a route change while the chunk is downloading).\n // Inserting into a destroyed ViewContainerRef would throw, and nothing\n // would ever clean the view up.\n if (this.isDestroyed || this.wcView) return;\n\n // createEmbeddedView builds the nodes without putting them in the document,\n // so the element is not connected yet and its connectedCallback has not run.\n const view = this.wcTpl.createEmbeddedView(undefined);\n // Apply the [attr.*] bindings while the nodes are still detached.\n view.detectChanges();\n this.wcView = view;\n\n // The template holds exactly one element, <descope-wc>, and each component\n // instance builds its own view - so this picks that instance's own element\n // and never sees another instance's. Selected by node type rather than as\n // rootNodes[0] so template whitespace can never shift it, and compared\n // against a literal because Node is not guaranteed to exist during SSR.\n this.webComponent = view.rootNodes.find(\n (node: { nodeType: number }) => node.nodeType === ELEMENT_NODE\n ) as DescopeWebComponent | undefined;\n\n // Inserting connects the element - its connectedCallback runs here, with\n // every attribute already set.\n this.wcAnchor.insert(view);\n\n if (!this.webComponent) return;\n\n this.setupNonAttributeProperties();\n this.setupEventListeners();\n }\n\n private async loadWebComponent(): Promise<void> {\n if (this.isWebComponentLoaded) {\n return;\n }\n\n try {\n // Dynamically import the web component only in browser context\n const DescopeWcModule = await import('@descope/web-component');\n const DescopeWc = DescopeWcModule.default;\n const sdk = this.authService.descopeSdk;\n\n DescopeWc.sdkConfigOverrides = {\n // Overrides the web-component's base headers to indicate usage via the Angular SDK\n baseHeaders,\n // Disables token persistence within the web-component to delegate token management\n // to the global SDK hooks. This ensures token handling aligns with the SDK's configuration,\n // and web-component requests leverage the global SDK's beforeRequest hooks for consistency\n persistTokens: false,\n hooks: {\n get beforeRequest() {\n // Retrieves the beforeRequest hook from the global SDK, which is initialized\n // within the AuthProvider using the desired configuration. This approach ensures\n // the web-component utilizes the same beforeRequest hooks as the global SDK\n return sdk.httpClient.hooks?.beforeRequest;\n },\n set beforeRequest(_) {\n // The empty setter prevents runtime errors when attempts are made to assign a value to 'beforeRequest'.\n // JavaScript objects default to having both getters and setters\n }\n }\n };\n\n this.isWebComponentLoaded = true;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Descope web component:', error);\n }\n }\n\n ngOnDestroy(): void {\n // Guards the ngOnInit race - the continuation can still be pending here.\n this.isDestroyed = true;\n\n // wcAnchor owns the view, so Angular would tear it down anyway - but when a\n // parent view is going away Angular skips removing the individual nodes, and\n // then the element never disconnects. Destroying it here takes the element\n // out of the DOM, so the web component's disconnectedCallback runs and drops\n // its window listeners and flow-state subscriptions.\n this.wcView?.destroy();\n this.wcView = undefined;\n this.webComponent = undefined;\n }\n\n ngOnChanges(): void {\n if (this.webComponent) {\n this.setupNonAttributeProperties();\n }\n }\n\n private setupNonAttributeProperties(): void {\n if (!this.webComponent) return;\n\n // Handle non-attribute properties\n if (this.errorTransformer) {\n this.webComponent.errorTransformer = this.errorTransformer;\n }\n\n if (this.onScreenUpdate) {\n this.webComponent.onScreenUpdate = this.onScreenUpdate;\n }\n\n if (this.logger) {\n this.webComponent.logger = this.logger;\n }\n }\n\n private setupEventListeners(): void {\n if (!this.webComponent) return;\n\n this.webComponent.addEventListener('success', (e: Event) => {\n from(\n this.authService.descopeSdk.httpClient.hooks?.afterRequest!(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {} as any,\n new Response(JSON.stringify((e as CustomEvent).detail))\n ) as Promise<unknown>\n ).subscribe(() => {\n if (this.success) {\n this.success?.emit(e as CustomEvent);\n }\n });\n });\n\n if (this.error) {\n this.webComponent.addEventListener('error', (e: Event) => {\n this.error?.emit(e as CustomEvent);\n });\n }\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n CUSTOM_ELEMENTS_SCHEMA\n} from '@angular/core';\nimport { DescopeComponent } from '../descope/descope.component';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\n\n@Component({\n selector: 'descope-sign-in-flow',\n standalone: true,\n imports: [DescopeComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './sign-in-flow.component.html'\n})\nexport class SignInFlowComponent {\n projectId: string;\n\n @Input() locale: string;\n @Input() theme: 'light' | 'dark' | 'os';\n @Input() tenant: string;\n @Input() telemetryKey: string;\n @Input() redirectUrl: string;\n @Input() autoFocus: true | false | 'skipFirstScreen';\n @Input() validateOnBlur: boolean;\n @Input() restartOnError: boolean;\n @Input() sendSessionToken: boolean;\n\n @Input() debug: boolean;\n @Input() errorTransformer: (error: { text: string; type: string }) => string;\n @Input() onScreenUpdate: (\n screenName: string,\n context: Record<string, any>,\n next: (\n interactionId: string,\n form: Record<string, any>\n ) => Promise<unknown>,\n ref: HTMLElement\n ) => boolean | Promise<boolean>;\n @Input() client: Record<string, any>;\n @Input() nonce: string;\n @Input() dismissScreenErrorOnInput: boolean;\n @Input() form: Record<string, any>;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() success: EventEmitter<CustomEvent> =\n new EventEmitter<CustomEvent>();\n @Output() error: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n constructor(descopeConfig: DescopeAuthConfig) {\n this.projectId = descopeConfig.projectId;\n }\n}\n","<descope\n (success)=\"success.emit($event)\"\n (error)=\"error.emit($event)\"\n flowId=\"sign-in\"\n [locale]=\"locale\"\n [theme]=\"theme\"\n [tenant]=\"tenant\"\n [telemetryKey]=\"telemetryKey\"\n [redirectUrl]=\"redirectUrl\"\n [autoFocus]=\"autoFocus\"\n [validateOnBlur]=\"validateOnBlur\"\n [restartOnError]=\"restartOnError\"\n [sendSessionToken]=\"sendSessionToken\"\n [debug]=\"debug\"\n [errorTransformer]=\"errorTransformer\"\n [onScreenUpdate]=\"onScreenUpdate\"\n [client]=\"client\"\n [nonce]=\"nonce\"\n [dismissScreenErrorOnInput]=\"dismissScreenErrorOnInput\"\n [form]=\"form\"\n [logger]=\"logger\"\n [styleId]=\"styleId\"\n>\n</descope>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n CUSTOM_ELEMENTS_SCHEMA\n} from '@angular/core';\nimport { DescopeComponent } from '../descope/descope.component';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\n\n@Component({\n selector: 'descope-sign-up-flow',\n standalone: true,\n imports: [DescopeComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './sign-up-flow.component.html'\n})\nexport class SignUpFlowComponent {\n projectId: string;\n\n @Input() locale: string;\n @Input() theme: 'light' | 'dark' | 'os';\n @Input() tenant: string;\n @Input() telemetryKey: string;\n @Input() redirectUrl: string;\n @Input() autoFocus: true | false | 'skipFirstScreen';\n @Input() validateOnBlur: boolean;\n @Input() restartOnError: boolean;\n @Input() sendSessionToken: boolean;\n\n @Input() debug: boolean;\n @Input() errorTransformer: (error: { text: string; type: string }) => string;\n @Input() onScreenUpdate: (\n screenName: string,\n context: Record<string, any>,\n next: (\n interactionId: string,\n form: Record<string, any>\n ) => Promise<unknown>,\n ref: HTMLElement\n ) => boolean | Promise<boolean>;\n @Input() client: Record<string, any>;\n @Input() nonce: string;\n @Input() dismissScreenErrorOnInput: boolean;\n @Input() form: Record<string, any>;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() success: EventEmitter<CustomEvent> =\n new EventEmitter<CustomEvent>();\n @Output() error: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n constructor(descopeConfig: DescopeAuthConfig) {\n this.projectId = descopeConfig.projectId;\n }\n}\n","<descope\n (success)=\"success.emit($event)\"\n (error)=\"error.emit($event)\"\n flowId=\"sign-up\"\n [locale]=\"locale\"\n [theme]=\"theme\"\n [tenant]=\"tenant\"\n [telemetryKey]=\"telemetryKey\"\n [redirectUrl]=\"redirectUrl\"\n [autoFocus]=\"autoFocus\"\n [validateOnBlur]=\"validateOnBlur\"\n [restartOnError]=\"restartOnError\"\n [sendSessionToken]=\"sendSessionToken\"\n [debug]=\"debug\"\n [errorTransformer]=\"errorTransformer\"\n [onScreenUpdate]=\"onScreenUpdate\"\n [client]=\"client\"\n [nonce]=\"nonce\"\n [dismissScreenErrorOnInput]=\"dismissScreenErrorOnInput\"\n [form]=\"form\"\n [logger]=\"logger\"\n [styleId]=\"styleId\"\n>\n</descope>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n CUSTOM_ELEMENTS_SCHEMA\n} from '@angular/core';\nimport { DescopeComponent } from '../descope/descope.component';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\n\n@Component({\n selector: 'descope-sign-up-or-in-flow',\n standalone: true,\n imports: [DescopeComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './sign-up-or-in-flow.component.html'\n})\nexport class SignUpOrInFlowComponent {\n projectId: string;\n\n @Input() locale: string;\n @Input() theme: 'light' | 'dark' | 'os';\n @Input() tenant: string;\n @Input() telemetryKey: string;\n @Input() redirectUrl: string;\n @Input() autoFocus: true | false | 'skipFirstScreen';\n @Input() validateOnBlur: boolean;\n @Input() restartOnError: boolean;\n @Input() sendSessionToken: boolean;\n\n @Input() debug: boolean;\n @Input() errorTransformer: (error: { text: string; type: string }) => string;\n @Input() onScreenUpdate: (\n screenName: string,\n context: Record<string, any>,\n next: (\n interactionId: string,\n form: Record<string, any>\n ) => Promise<unknown>,\n ref: HTMLElement\n ) => boolean | Promise<boolean>;\n @Input() client: Record<string, any>;\n @Input() nonce: string;\n @Input() dismissScreenErrorOnInput: boolean;\n @Input() form: Record<string, any>;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() success: EventEmitter<CustomEvent> =\n new EventEmitter<CustomEvent>();\n @Output() error: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n constructor(descopeConfig: DescopeAuthConfig) {\n this.projectId = descopeConfig.projectId;\n }\n}\n","<descope\n (success)=\"success.emit($event)\"\n (error)=\"error.emit($event)\"\n flowId=\"sign-up-or-in\"\n [locale]=\"locale\"\n [theme]=\"theme\"\n [tenant]=\"tenant\"\n [telemetryKey]=\"telemetryKey\"\n [redirectUrl]=\"redirectUrl\"\n [autoFocus]=\"autoFocus\"\n [validateOnBlur]=\"validateOnBlur\"\n [restartOnError]=\"restartOnError\"\n [sendSessionToken]=\"sendSessionToken\"\n [debug]=\"debug\"\n [errorTransformer]=\"errorTransformer\"\n [onScreenUpdate]=\"onScreenUpdate\"\n [client]=\"client\"\n [nonce]=\"nonce\"\n [dismissScreenErrorOnInput]=\"dismissScreenErrorOnInput\"\n [form]=\"form\"\n [logger]=\"logger\"\n [styleId]=\"styleId\"\n>\n</descope>\n","import {\n Directive,\n ElementRef,\n Inject,\n OnChanges,\n OnInit,\n PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Abstract base class for widget components that need to be lazily loaded\n * with SSR support. This class handles the common lifecycle patterns:\n * - Browser detection for SSR compatibility\n * - Lazy loading of widgets\n * - DOM manipulation (appending to element)\n * - Lifecycle coordination between loading, setup, and event listeners\n *\n * Derived components must implement:\n * - loadWidget(): Dynamic import and instantiation of the specific widget\n * - setupWebComponent(): Configure attributes and properties on the widget\n * - setupEventListeners(): Attach event listeners to the widget\n */\n@Directive()\nexport abstract class BaseLazyWidgetComponent implements OnInit, OnChanges {\n protected webComponent?: HTMLElement;\n\n constructor(\n protected elementRef: ElementRef,\n @Inject(PLATFORM_ID) protected platformId: object\n ) {}\n\n async ngOnInit(): Promise<void> {\n // Only load widget in browser environment\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const widget = await this.loadWidget();\n if (widget) {\n this.webComponent = widget;\n this.setupWebComponent();\n this.elementRef.nativeElement.appendChild(this.webComponent);\n // Set up event listeners after the widget is loaded and appended\n this.setupEventListeners();\n }\n }\n\n ngOnChanges(): void {\n if (this.webComponent) {\n this.setupWebComponent();\n }\n }\n\n /**\n * Load the widget module dynamically. This method should:\n * 1. Dynamically import the widget module\n * 2. Instantiate the widget\n * 3. Return the widget as an HTMLElement\n * 4. Handle errors appropriately\n *\n * @returns The instantiated widget element, or null if loading failed\n */\n protected abstract loadWidget(): Promise<HTMLElement | null>;\n\n /**\n * Configure the web component by setting attributes and properties.\n * This is called after the widget is loaded and whenever inputs change.\n */\n protected abstract setupWebComponent(): void;\n\n /**\n * Attach event listeners to the web component.\n * This is called once after the view is initialized.\n */\n protected abstract setupEventListeners(): void;\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'user-management[tenant]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: ''\n})\nexport class UserManagementComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() tenant: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/user-management-widget');\n const DescopeUserManagementWidget = WidgetModule.default;\n return new DescopeUserManagementWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load User Management widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('tenant', this.tenant);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'role-management[tenant]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: ''\n})\nexport class RoleManagementComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() tenant: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/role-management-widget');\n const DescopeRoleManagementWidget = WidgetModule.default;\n return new DescopeRoleManagementWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Role Management widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('tenant', this.tenant);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'access-key-management[tenant]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: ''\n})\nexport class AccessKeyManagementComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() tenant: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import(\n '@descope/access-key-management-widget'\n );\n const DescopeAccessKeyManagementWidget = WidgetModule.default;\n return new DescopeAccessKeyManagementWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Access Key Management widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('tenant', this.tenant);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'audit-management[tenant]',\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: ''\n})\nexport class AuditManagementComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() tenant: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/audit-management-widget');\n const DescopeAuditManagementWidget = WidgetModule.default;\n return new DescopeAuditManagementWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Audit Management widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('tenant', this.tenant);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { DescopeAuthService } from '../../services/descope-auth.service';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'user-profile',\n standalone: true,\n template: ''\n})\nexport class UserProfileComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() logout: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n private descopeAuthService: DescopeAuthService,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/user-profile-widget');\n const DescopeUserProfileWidget = WidgetModule.default;\n return new DescopeUserProfileWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load User Profile widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n this.webComponent.addEventListener('logout', (e: Event) => {\n this.logout?.emit(e as CustomEvent);\n this.descopeAuthService.setSession('');\n this.descopeAuthService.setIsAuthenticated(false);\n this.descopeAuthService.setUser(null);\n });\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n Inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DescopeAuthConfig, ILogger } from '../../types/types';\nimport { BaseLazyWidgetComponent } from '../../base/base-lazy-widget.component';\n\n@Component({\n selector: 'applications-portal',\n standalone: true,\n template: ''\n})\nexport class ApplicationsPortalComponent extends BaseLazyWidgetComponent {\n projectId: string;\n baseUrl?: string;\n baseStaticUrl?: string;\n baseCdnUrl?: string;\n @Input() widgetId: string;\n\n @Input() theme: 'light' | 'dark' | 'os';\n\n @Input() locale: string;\n @Input() debug: boolean;\n @Input() logger: ILogger;\n @Input() styleId: string;\n\n @Output() logout: EventEmitter<CustomEvent> = new EventEmitter<CustomEvent>();\n\n @Output() ready: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementRef: ElementRef,\n descopeConfig: DescopeAuthConfig,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n super(elementRef, platformId);\n this.projectId = descopeConfig.projectId;\n this.baseUrl = descopeConfig.baseUrl;\n this.baseStaticUrl = descopeConfig.baseStaticUrl;\n this.baseCdnUrl = descopeConfig.baseCdnUrl;\n }\n\n protected async loadWidget(): Promise<HTMLElement | null> {\n try {\n const WidgetModule = await import('@descope/applications-portal-widget');\n const DescopeApplicationsPortalWidget = WidgetModule.default;\n return new DescopeApplicationsPortalWidget() as unknown as HTMLElement;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to load Applications Portal widget:', error);\n return null;\n }\n }\n\n protected setupWebComponent() {\n if (!this.webComponent) return;\n\n this.webComponent.setAttribute('project-id', this.projectId);\n this.webComponent.setAttribute('widget-id', this.widgetId);\n if (this.baseUrl) {\n this.webComponent.setAttribute('base-url', this.baseUrl);\n }\n if (this.baseStaticUrl) {\n this.webComponent.setAttribute('base-static-url', this.baseStaticUrl);\n }\n if (this.baseCdnUrl) {\n this.webComponent.setAttribute('base-cdn-url', this.baseCdnUrl);\n }\n if (this.theme) {\n this.webComponent.setAttribute('theme', this.theme);\n }\n if (this.locale) {\n this.webComponent.setAttribute('locale', this.locale);\n }\n if (this.debug) {\n this.webComponent.setAttribute('debug', this.debug.toString());\n }\n\n if (this.logger) {\n (this.webComponent as any).logger = this.logger;\n }\n if (this.styleId) {\n this.webComponent.setAttribute('style-id', this.styleId);\n }\n }\n\n protected setupEventListeners(): void {\n if (!this.webComponent) return;\n\n if (this.logout) {\n this.webComponent.addEventListener('logout', (e: Event) => {\n this.logout?.emit(e as CustomEvent);\n });\n }\n if (this.ready) {\n this.webComponent.addEventListener('ready', () => {\n this.ready?.emit();\n });\n }\n }\n}\n","import {\n CUSTOM_ELEMENTS_SCHEMA,\n ModuleWithProviders,\n NgModule,\n Optional,\n SkipSelf\n} from '@angular/core';\nimport { DescopeComponent } from './components/descope/descope.component';\nimport { SignInFlowComponent } from './components/sign-in-flow/sign-in-flow.component';\nimport { SignUpFlowComponent } from './components/sign-up-flow/sign-up-flow.component';\nimport { SignUpOrInFlowComponent } from './components/sign-up-or-in-flow/sign-up-or-in-flow.component';\nimport { UserManagementComponent } from './components/user-management/user-management.component';\nimport { RoleManagementComponent } from './components/role-management/role-management.component';\nimport { AccessKeyManagementComponent } from './components/access-key-management/access-key-management.component';\nimport { AuditManagementComponent } from './components/audit-management/audit-management.component';\nimport { UserProfileComponent } from './components/user-profile/user-profile.component';\nimport { ApplicationsPortalComponent } from './components/applications-portal/applications-portal.component';\nimport { DescopeAuthConfig } from './types/types';\n\n@NgModule({\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n imports: [\n DescopeComponent,\n SignInFlowComponent,\n SignUpFlowComponent,\n SignUpOrInFlowComponent,\n UserManagementComponent,\n RoleManagementComponent,\n AccessKeyManagementComponent,\n AuditManagementComponent,\n UserProfileComponent,\n ApplicationsPortalComponent\n ],\n exports: [\n DescopeComponent,\n SignInFlowComponent,\n SignUpFlowComponent,\n SignUpOrInFlowComponent,\n UserManagementComponent,\n RoleManagementComponent,\n AccessKeyManagementComponent,\n AuditManagementComponent,\n UserProfileComponent,\n ApplicationsPortalComponent\n ]\n})\nexport class DescopeAuthModule {\n constructor(@Optional() @SkipSelf() parentModule?: DescopeAuthModule) {\n if (parentModule) {\n // eslint-disable-next-line no-console\n console.log('DescopeAuthModule is loaded in a child module');\n }\n }\n\n static forRoot(\n config?: DescopeAuthConfig\n ): ModuleWithProviders<DescopeAuthModule> {\n return {\n ngModule: DescopeAuthModule,\n providers: [{ provide: DescopeAuthConfig, useValue: config }]\n };\n }\n}\n","/*\n * Public API Surface of angular-sdk\n */\n\nexport * from './lib/services/descope-auth.service';\nexport * from './lib/services/descope-auth.guard';\nexport * from './lib/services/descope.interceptor';\nexport * from './lib/descope-auth.module';\nexport * from './lib/components/descope/descope.component';\nexport * from './lib/components/sign-in-flow/sign-in-flow.component';\nexport * from './lib/components/sign-up-flow/sign-up-flow.component';\nexport * from './lib/components/sign-up-or-in-flow/sign-up-or-in-flow.component';\nexport * from './lib/components/user-management/user-management.component';\nexport * from './lib/components/role-management/role-management.component';\nexport * from './lib/components/access-key-management/access-key-management.component';\nexport * from './lib/components/audit-management/audit-management.component';\nexport * from './lib/components/user-profile/user-profile.component';\nexport * from './lib/components/applications-portal/applications-portal.component';\nexport * from './lib/types/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DescopeAuthConfig"],"mappings":"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"}
@@ -1,14 +1,17 @@
1
- import { ElementRef, EventEmitter, OnChanges, OnInit, AfterViewInit } from '@angular/core';
1
+ import { ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit } from '@angular/core';
2
2
  import { DescopeAuthService } from '../../services/descope-auth.service';
3
3
  import { DescopeAuthConfig, ILogger } from '../../types/types';
4
4
  import type { CustomStorage } from '@descope/web-component';
5
5
  import OverrideThemes from '@descope/web-component';
6
6
  import * as i0 from "@angular/core";
7
- export declare class DescopeComponent implements OnInit, OnChanges, AfterViewInit {
7
+ export declare class DescopeComponent implements OnInit, OnChanges, OnDestroy {
8
8
  private elementRef;
9
9
  private authService;
10
10
  private platformId;
11
- private readonly descopeWc;
11
+ private readonly wcTpl;
12
+ private readonly wcAnchor;
13
+ private wcView?;
14
+ private isDestroyed;
12
15
  get clientString(): string | undefined;
13
16
  get nonceString(): string | undefined;
14
17
  get formString(): string | undefined;
@@ -49,8 +52,15 @@ export declare class DescopeComponent implements OnInit, OnChanges, AfterViewIni
49
52
  private isWebComponentLoaded;
50
53
  constructor(elementRef: ElementRef, authService: DescopeAuthService, descopeConfig: DescopeAuthConfig, platformId: object);
51
54
  ngOnInit(): Promise<void>;
55
+ /**
56
+ * Builds the template while its nodes are still detached from the document,
57
+ * applies the attribute bindings, and only then connects the element. This is
58
+ * what guarantees project-id and flow-id are present when the custom element
59
+ * runs its connectedCallback.
60
+ */
61
+ private createWebComponent;
52
62
  private loadWebComponent;
53
- ngAfterViewInit(): void;
63
+ ngOnDestroy(): void;
54
64
  ngOnChanges(): void;
55
65
  private setupNonAttributeProperties;
56
66
  private setupEventListeners;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/angular-sdk",
3
- "version": "0.28.3",
3
+ "version": "0.28.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=16.0.0",
6
6
  "@angular/core": ">=16.0.0"
@@ -27,14 +27,14 @@
27
27
  "tslib": "^2.3.0",
28
28
  "@descope/access-key-management-widget": "0.10.3",
29
29
  "@descope/audit-management-widget": "0.9.3",
30
- "@descope/role-management-widget": "0.10.3",
31
- "@descope/user-management-widget": "0.19.2",
32
- "@descope/user-profile-widget": "0.18.3",
33
- "@descope/tenant-profile-widget": "0.9.3",
30
+ "@descope/user-management-widget": "0.19.3",
31
+ "@descope/user-profile-widget": "0.18.4",
32
+ "@descope/tenant-profile-widget": "0.9.4",
34
33
  "@descope/applications-portal-widget": "0.9.3",
35
- "@descope/web-component": "4.3.3",
34
+ "@descope/web-component": "4.3.4",
36
35
  "@descope/web-js-sdk": "1.53.0",
37
- "@descope/core-js-sdk": "2.71.0"
36
+ "@descope/core-js-sdk": "2.71.0",
37
+ "@descope/role-management-widget": "0.10.3"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@angular-devkit/build-angular": "^19.0.0",