@auth0/auth0-angular 2.4.0 → 2.5.0

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,296 +0,0 @@
1
- import { Injectable, Inject } from '@angular/core';
2
- import { of, from, Subject, iif, defer, ReplaySubject, throwError, } from 'rxjs';
3
- import { concatMap, tap, map, takeUntil, catchError, switchMap, withLatestFrom, } from 'rxjs/operators';
4
- import { Auth0ClientService } from './auth.client';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./auth.config";
7
- import * as i2 from "./abstract-navigator";
8
- import * as i3 from "./auth.state";
9
- import * as i4 from "@auth0/auth0-spa-js";
10
- export class AuthService {
11
- constructor(auth0Client, configFactory, navigator, authState) {
12
- this.auth0Client = auth0Client;
13
- this.configFactory = configFactory;
14
- this.navigator = navigator;
15
- this.authState = authState;
16
- this.appStateSubject$ = new ReplaySubject(1);
17
- // https://stackoverflow.com/a/41177163
18
- this.ngUnsubscribe$ = new Subject();
19
- /**
20
- * Emits boolean values indicating the loading state of the SDK.
21
- */
22
- this.isLoading$ = this.authState.isLoading$;
23
- /**
24
- * Emits boolean values indicating the authentication state of the user. If `true`, it means a user has authenticated.
25
- * This depends on the value of `isLoading$`, so there is no need to manually check the loading state of the SDK.
26
- */
27
- this.isAuthenticated$ = this.authState.isAuthenticated$;
28
- /**
29
- * Emits details about the authenticated user, or null if not authenticated.
30
- */
31
- this.user$ = this.authState.user$;
32
- /**
33
- * Emits ID token claims when authenticated, or null if not authenticated.
34
- */
35
- this.idTokenClaims$ = this.authState.idTokenClaims$;
36
- /**
37
- * Emits errors that occur during login, or when checking for an active session on startup.
38
- */
39
- this.error$ = this.authState.error$;
40
- /**
41
- * Emits the value (if any) that was passed to the `loginWithRedirect` method call
42
- * but only **after** `handleRedirectCallback` is first called
43
- */
44
- this.appState$ = this.appStateSubject$.asObservable();
45
- const checkSessionOrCallback$ = (isCallback) => iif(() => isCallback, this.handleRedirectCallback(), defer(() => this.auth0Client.checkSession()));
46
- this.shouldHandleCallback()
47
- .pipe(switchMap((isCallback) => checkSessionOrCallback$(isCallback).pipe(catchError((error) => {
48
- const config = this.configFactory.get();
49
- this.navigator.navigateByUrl(config.errorPath || '/');
50
- this.authState.setError(error);
51
- return of(undefined);
52
- }))), tap(() => {
53
- this.authState.setIsLoading(false);
54
- }), takeUntil(this.ngUnsubscribe$))
55
- .subscribe();
56
- }
57
- /**
58
- * Called when the service is destroyed
59
- */
60
- ngOnDestroy() {
61
- // https://stackoverflow.com/a/41177163
62
- this.ngUnsubscribe$.next();
63
- this.ngUnsubscribe$.complete();
64
- }
65
- /**
66
- * ```js
67
- * loginWithRedirect(options);
68
- * ```
69
- *
70
- * Performs a redirect to `/authorize` using the parameters
71
- * provided as arguments. Random and secure `state` and `nonce`
72
- * parameters will be auto-generated.
73
- *
74
- * @param options The login options
75
- */
76
- loginWithRedirect(options) {
77
- return from(this.auth0Client.loginWithRedirect(options));
78
- }
79
- /**
80
- * ```js
81
- * await loginWithPopup(options);
82
- * ```
83
- *
84
- * Opens a popup with the `/authorize` URL using the parameters
85
- * provided as arguments. Random and secure `state` and `nonce`
86
- * parameters will be auto-generated. If the response is successful,
87
- * results will be valid according to their expiration times.
88
- *
89
- * IMPORTANT: This method has to be called from an event handler
90
- * that was started by the user like a button click, for example,
91
- * otherwise the popup will be blocked in most browsers.
92
- *
93
- * @param options The login options
94
- * @param config Configuration for the popup window
95
- */
96
- loginWithPopup(options, config) {
97
- return from(this.auth0Client.loginWithPopup(options, config).then(() => {
98
- this.authState.refresh();
99
- }));
100
- }
101
- /**
102
- * ```js
103
- * logout();
104
- * ```
105
- *
106
- * Clears the application session and performs a redirect to `/v2/logout`, using
107
- * the parameters provided as arguments, to clear the Auth0 session.
108
- * If the `federated` option is specified it also clears the Identity Provider session.
109
- * If the `openUrl` option is set to false, it only clears the application session.
110
- * It is invalid to set both the `federated` to true and `openUrl` to `false`,
111
- * and an error will be thrown if you do.
112
- * [Read more about how Logout works at Auth0](https://auth0.com/docs/logout).
113
- *
114
- * @param options The logout options
115
- */
116
- logout(options) {
117
- return from(this.auth0Client.logout(options).then(() => {
118
- if (options?.openUrl === false || options?.openUrl) {
119
- this.authState.refresh();
120
- }
121
- }));
122
- }
123
- /**
124
- * ```js
125
- * getAccessTokenSilently(options).subscribe(token => ...)
126
- * ```
127
- *
128
- * If there's a valid token stored, return it. Otherwise, opens an
129
- * iframe with the `/authorize` URL using the parameters provided
130
- * as arguments. Random and secure `state` and `nonce` parameters
131
- * will be auto-generated. If the response is successful, results
132
- * will be valid according to their expiration times.
133
- *
134
- * If refresh tokens are used, the token endpoint is called directly with the
135
- * 'refresh_token' grant. If no refresh token is available to make this call,
136
- * the SDK falls back to using an iframe to the '/authorize' URL.
137
- *
138
- * This method may use a web worker to perform the token call if the in-memory
139
- * cache is used.
140
- *
141
- * If an `audience` value is given to this function, the SDK always falls
142
- * back to using an iframe to make the token exchange.
143
- *
144
- * Note that in all cases, falling back to an iframe requires access to
145
- * the `auth0` cookie, and thus will not work in browsers that block third-party
146
- * cookies by default (Safari, Brave, etc).
147
- *
148
- * @param options The options for configuring the token fetch.
149
- */
150
- getAccessTokenSilently(options = {}) {
151
- return of(this.auth0Client).pipe(concatMap((client) => options.detailedResponse === true
152
- ? client.getTokenSilently({ ...options, detailedResponse: true })
153
- : client.getTokenSilently(options)), tap((token) => {
154
- if (token) {
155
- this.authState.setAccessToken(typeof token === 'string' ? token : token.access_token);
156
- }
157
- }), catchError((error) => {
158
- this.authState.setError(error);
159
- this.authState.refresh();
160
- return throwError(error);
161
- }));
162
- }
163
- /**
164
- * ```js
165
- * getTokenWithPopup(options).subscribe(token => ...)
166
- * ```
167
- *
168
- * Get an access token interactively.
169
- *
170
- * Opens a popup with the `/authorize` URL using the parameters
171
- * provided as arguments. Random and secure `state` and `nonce`
172
- * parameters will be auto-generated. If the response is successful,
173
- * results will be valid according to their expiration times.
174
- */
175
- getAccessTokenWithPopup(options) {
176
- return of(this.auth0Client).pipe(concatMap((client) => client.getTokenWithPopup(options)), tap((token) => {
177
- if (token) {
178
- this.authState.setAccessToken(token);
179
- }
180
- }), catchError((error) => {
181
- this.authState.setError(error);
182
- this.authState.refresh();
183
- return throwError(error);
184
- }));
185
- }
186
- /**
187
- * ```js
188
- * handleRedirectCallback(url).subscribe(result => ...)
189
- * ```
190
- *
191
- * After the browser redirects back to the callback page,
192
- * call `handleRedirectCallback` to handle success and error
193
- * responses from Auth0. If the response is successful, results
194
- * will be valid according to their expiration times.
195
- *
196
- * Calling this method also refreshes the authentication and user states.
197
- *
198
- * @param url The URL to that should be used to retrieve the `state` and `code` values. Defaults to `window.location.href` if not given.
199
- */
200
- handleRedirectCallback(url) {
201
- return defer(() => this.auth0Client.handleRedirectCallback(url)).pipe(withLatestFrom(this.authState.isLoading$), tap(([result, isLoading]) => {
202
- if (!isLoading) {
203
- this.authState.refresh();
204
- }
205
- const appState = result?.appState;
206
- const target = appState?.target ?? '/';
207
- if (appState) {
208
- this.appStateSubject$.next(appState);
209
- }
210
- this.navigator.navigateByUrl(target);
211
- }), map(([result]) => result));
212
- }
213
- /**
214
- * ```js
215
- * getDpopNonce(id).subscribe(nonce => ...)
216
- * ```
217
- *
218
- * Gets the DPoP nonce for the specified domain or the default domain.
219
- * The nonce is used in DPoP proof generation for token binding.
220
- *
221
- * @param id Optional identifier for the domain. If not provided, uses the default domain.
222
- * @returns An Observable that emits the DPoP nonce string or undefined if not available.
223
- */
224
- getDpopNonce(id) {
225
- return from(this.auth0Client.getDpopNonce(id));
226
- }
227
- /**
228
- * ```js
229
- * setDpopNonce(nonce, id).subscribe(() => ...)
230
- * ```
231
- *
232
- * Sets the DPoP nonce for the specified domain or the default domain.
233
- * This is typically used after receiving a new nonce from the authorization server.
234
- *
235
- * @param nonce The DPoP nonce value to set.
236
- * @param id Optional identifier for the domain. If not provided, uses the default domain.
237
- * @returns An Observable that completes when the nonce is set.
238
- */
239
- setDpopNonce(nonce, id) {
240
- return from(this.auth0Client.setDpopNonce(nonce, id));
241
- }
242
- /**
243
- * ```js
244
- * generateDpopProof(params).subscribe(proof => ...)
245
- * ```
246
- *
247
- * Generates a DPoP (Demonstrating Proof-of-Possession) proof JWT.
248
- * This proof is used to bind access tokens to a specific client, providing
249
- * an additional layer of security for token usage.
250
- *
251
- * @param params Configuration for generating the DPoP proof
252
- * @param params.url The URL of the resource server endpoint
253
- * @param params.method The HTTP method (e.g., 'GET', 'POST')
254
- * @param params.nonce Optional DPoP nonce from the authorization server
255
- * @param params.accessToken The access token to bind to the proof
256
- * @returns An Observable that emits the generated DPoP proof as a JWT string.
257
- */
258
- generateDpopProof(params) {
259
- return from(this.auth0Client.generateDpopProof(params));
260
- }
261
- /**
262
- * ```js
263
- * const fetcher = createFetcher(config);
264
- * ```
265
- *
266
- * Creates a custom fetcher instance that can be used to make authenticated
267
- * HTTP requests. The fetcher automatically handles token refresh and can
268
- * be configured with custom request/response handling.
269
- *
270
- * @param config Optional configuration for the fetcher
271
- * @returns A Fetcher instance configured with the Auth0 client.
272
- */
273
- createFetcher(config) {
274
- return this.auth0Client.createFetcher(config);
275
- }
276
- shouldHandleCallback() {
277
- return of(location.search).pipe(map((search) => {
278
- const searchParams = new URLSearchParams(search);
279
- return ((searchParams.has('code') || searchParams.has('error')) &&
280
- searchParams.has('state') &&
281
- !this.configFactory.get().skipRedirectCallback);
282
- }));
283
- }
284
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, deps: [{ token: Auth0ClientService }, { token: i1.AuthClientConfig }, { token: i2.AbstractNavigator }, { token: i3.AuthState }], target: i0.ɵɵFactoryTarget.Injectable }); }
285
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, providedIn: 'root' }); }
286
- }
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, decorators: [{
288
- type: Injectable,
289
- args: [{
290
- providedIn: 'root',
291
- }]
292
- }], ctorParameters: () => [{ type: i4.Auth0Client, decorators: [{
293
- type: Inject,
294
- args: [Auth0ClientService]
295
- }] }, { type: i1.AuthClientConfig }, { type: i2.AbstractNavigator }, { type: i3.AuthState }] });
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQWdCOUQsT0FBTyxFQUNMLEVBQUUsRUFDRixJQUFJLEVBQ0osT0FBTyxFQUVQLEdBQUcsRUFDSCxLQUFLLEVBQ0wsYUFBYSxFQUNiLFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxTQUFTLEVBQ1QsR0FBRyxFQUNILEdBQUcsRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVNuRCxNQUFNLE9BQU8sV0FBVztJQXVDdEIsWUFDc0MsV0FBd0IsRUFDcEQsYUFBK0IsRUFDL0IsU0FBNEIsRUFDNUIsU0FBb0I7UUFIUSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNwRCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXhDdEIscUJBQWdCLEdBQUcsSUFBSSxhQUFhLENBQVksQ0FBQyxDQUFDLENBQUM7UUFFM0QsdUNBQXVDO1FBQy9CLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM3Qzs7V0FFRztRQUNNLGVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztRQUVoRDs7O1dBR0c7UUFDTSxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDO1FBRTVEOztXQUVHO1FBQ00sVUFBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMs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RlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXlDSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEF1dGgwQ2xpZW50LFxuICBQb3B1cExvZ2luT3B0aW9ucyxcbiAgUG9wdXBDb25maWdPcHRpb25zLFxuICBHZXRUb2tlblNpbGVudGx5T3B0aW9ucyxcbiAgR2V0VG9rZW5XaXRoUG9wdXBPcHRpb25zLFxuICBSZWRpcmVjdExvZ2luUmVzdWx0LFxuICBHZXRUb2tlblNpbGVudGx5VmVyYm9zZVJlc3BvbnNlLFxuICBDb25uZWN0QWNjb3VudFJlZGlyZWN0UmVzdWx0LFxuICBDdXN0b21GZXRjaE1pbmltYWxPdXRwdXQsXG4gIEZldGNoZXIsXG4gIEZldGNoZXJDb25maWcsXG59IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuXG5pbXBvcnQge1xuICBvZixcbiAgZnJvbSxcbiAgU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgaWlmLFxuICBkZWZlcixcbiAgUmVwbGF5U3ViamVjdCxcbiAgdGhyb3dFcnJvcixcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGNvbmNhdE1hcCxcbiAgdGFwLFxuICBtYXAsXG4gIHRha2VVbnRpbCxcbiAgY2F0Y2hFcnJvcixcbiAgc3dpdGNoTWFwLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoMENsaWVudFNlcnZpY2UgfSBmcm9tICcuL2F1dGguY2xpZW50JztcbmltcG9ydCB7IEFic3RyYWN0TmF2aWdhdG9yIH0gZnJvbSAnLi9hYnN0cmFjdC1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgQXV0aENsaWVudENvbmZpZywgQXBwU3RhdGUgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhTdGF0ZSB9IGZyb20gJy4vYXV0aC5zdGF0ZSc7XG5pbXBvcnQgeyBMb2dvdXRPcHRpb25zLCBSZWRpcmVjdExvZ2luT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZTxUQXBwU3RhdGUgZXh0ZW5kcyBBcHBTdGF0ZSA9IEFwcFN0YXRlPlxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICBwcml2YXRlIGFwcFN0YXRlU3ViamVjdCQgPSBuZXcgUmVwbGF5U3ViamVjdDxUQXBwU3RhdGU+KDEpO1xuXG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MTE3NzE2M1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgLyoqXG4gICAqIEVtaXRzIGJvb2xlYW4gdmFsdWVzIGluZGljYXRpbmcgdGhlIGxvYWRpbmcgc3RhdGUgb2YgdGhlIFNESy5cbiAgICovXG4gIHJlYWRvbmx5IGlzTG9hZGluZyQgPSB0aGlzLmF1dGhTdGF0ZS5pc0xvYWRpbmckO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBib29sZWFuIHZhbHVlcyBpbmRpY2F0aW5nIHRoZSBhdXRoZW50aWNhdGlvbiBzdGF0ZSBvZiB0aGUgdXNlci4gSWYgYHRydWVgLCBpdCBtZWFucyBhIHVzZXIgaGFzIGF1dGhlbnRpY2F0ZWQuXG4gICAqIFRoaXMgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgYGlzTG9hZGluZyRgLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIG1hbnVhbGx5IGNoZWNrIHRoZSBsb2FkaW5nIHN0YXRlIG9mIHRoZSBTREsuXG4gICAqL1xuICByZWFkb25seSBpc0F1dGhlbnRpY2F0ZWQkID0gdGhpcy5hdXRoU3RhdGUuaXNBdXRoZW50aWNhdGVkJDtcblxuICAvKipcbiAgICogRW1pdHMgZGV0YWlscyBhYm91dCB0aGUgYXV0aGVudGljYXRlZCB1c2VyLCBvciBudWxsIGlmIG5vdCBhdXRoZW50aWNhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlciQgPSB0aGlzLmF1dGhTdGF0ZS51c2VyJDtcblxuICAvKipcbiAgICogRW1pdHMgSUQgdG9rZW4gY2xhaW1zIHdoZW4gYXV0aGVudGljYXRlZCwgb3IgbnVsbCBpZiBub3QgYXV0aGVudGljYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkVG9rZW5DbGFpbXMkID0gdGhpcy5hdXRoU3RhdGUuaWRUb2tlbkNsYWltcyQ7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGVycm9ycyB0aGF0IG9jY3VyIGR1cmluZyBsb2dpbiwgb3Igd2hlbiBjaGVja2luZyBmb3IgYW4gYWN0aXZlIHNlc3Npb24gb24gc3RhcnR1cC5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yJCA9IHRoaXMuYXV0aFN0YXRlLmVycm9yJDtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIHZhbHVlIChpZiBhbnkpIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgYGxvZ2luV2l0aFJlZGlyZWN0YCBtZXRob2QgY2FsbFxuICAgKiBidXQgb25seSAqKmFmdGVyKiogYGhhbmRsZVJlZGlyZWN0Q2FsbGJhY2tgIGlzIGZpcnN0IGNhbGxlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwU3RhdGUkID0gdGhpcy5hcHBTdGF0ZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQXV0aDBDbGllbnRTZXJ2aWNlKSBwcml2YXRlIGF1dGgwQ2xpZW50OiBBdXRoMENsaWVudCxcbiAgICBwcml2YXRlIGNvbmZpZ0ZhY3Rvcnk6IEF1dGhDbGllbnRDb25maWcsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3I6IEFic3RyYWN0TmF2aWdhdG9yLFxuICAgIHByaXZhdGUgYXV0aFN0YXRlOiBBdXRoU3RhdGVcbiAgKSB7XG4gICAgY29uc3QgY2hlY2tTZXNzaW9uT3JDYWxsYmFjayQgPSAoaXNDYWxsYmFjazogYm9vbGVhbikgPT5cbiAgICAgIGlpZihcbiAgICAgICAgKCkgPT4gaXNDYWxsYmFjayxcbiAgICAgICAgdGhpcy5oYW5kbGVSZWRpcmVjdENhbGxiYWNrKCksXG4gICAgICAgIGRlZmVyKCgpID0+IHRoaXMuYXV0aDBDbGllbnQuY2hlY2tTZXNzaW9uKCkpXG4gICAgICApO1xuXG4gICAgdGhpcy5zaG91bGRIYW5kbGVDYWxsYmFjaygpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChpc0NhbGxiYWNrKSA9PlxuICAgICAgICAgIGNoZWNrU2Vzc2lvbk9yQ2FsbGJhY2skKGlzQ2FsbGJhY2spLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ0ZhY3RvcnkuZ2V0KCk7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yLm5hdmlnYXRlQnlVcmwoY29uZmlnLmVycm9yUGF0aCB8fCAnLycpO1xuICAgICAgICAgICAgICB0aGlzLmF1dGhTdGF0ZS5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdXRoU3RhdGUuc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBzZXJ2aWNlIGlzIGRlc3Ryb3llZFxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQxMTc3MTYzXG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGxvZ2luV2l0aFJlZGlyZWN0KG9wdGlvbnMpO1xuICAgKiBgYGBcbiAgICpcbiAgICogUGVyZm9ybXMgYSByZWRpcmVjdCB0byBgL2F1dGhvcml6ZWAgdXNpbmcgdGhlIHBhcmFtZXRlcnNcbiAgICogcHJvdmlkZWQgYXMgYXJndW1lbnRzLiBSYW5kb20gYW5kIHNlY3VyZSBgc3RhdGVgIGFuZCBgbm9uY2VgXG4gICAqIHBhcmFtZXRlcnMgd2lsbCBiZSBhdXRvLWdlbmVyYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGxvZ2luIG9wdGlvbnNcbiAgICovXG4gIGxvZ2luV2l0aFJlZGlyZWN0KFxuICAgIG9wdGlvbnM/OiBSZWRpcmVjdExvZ2luT3B0aW9uczxUQXBwU3RhdGU+XG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYXV0aDBDbGllbnQubG9naW5XaXRoUmVkaXJlY3Qob3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGF3YWl0IGxvZ2luV2l0aFBvcHVwKG9wdGlvbnMpO1xuICAgKiBgYGBcbiAgICpcbiAgICogT3BlbnMgYSBwb3B1cCB3aXRoIHRoZSBgL2F1dGhvcml6ZWAgVVJMIHVzaW5nIHRoZSBwYXJhbWV0ZXJzXG4gICAqIHByb3ZpZGVkIGFzIGFyZ3VtZW50cy4gUmFuZG9tIGFuZCBzZWN1cmUgYHN0YXRlYCBhbmQgYG5vbmNlYFxuICAgKiBwYXJhbWV0ZXJzIHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuIElmIHRoZSByZXNwb25zZSBpcyBzdWNjZXNzZnVsLFxuICAgKiByZXN1bHRzIHdpbGwgYmUgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZWlyIGV4cGlyYXRpb24gdGltZXMuXG4gICAqXG4gICAqIElNUE9SVEFOVDogVGhpcyBtZXRob2QgaGFzIHRvIGJlIGNhbGxlZCBmcm9tIGFuIGV2ZW50IGhhbmRsZXJcbiAgICogdGhhdCB3YXMgc3RhcnRlZCBieSB0aGUgdXNlciBsaWtlIGEgYnV0dG9uIGNsaWNrLCBmb3IgZXhhbXBsZSxcbiAgICogb3RoZXJ3aXNlIHRoZSBwb3B1cCB3aWxsIGJlIGJsb2NrZWQgaW4gbW9zdCBicm93c2Vycy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGxvZ2luIG9wdGlvbnNcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgcG9wdXAgd2luZG93XG4gICAqL1xuICBsb2dpbldpdGhQb3B1cChcbiAgICBvcHRpb25zPzogUG9wdXBMb2dpbk9wdGlvbnMsXG4gICAgY29uZmlnPzogUG9wdXBDb25maWdPcHRpb25zXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5hdXRoMENsaWVudC5sb2dpbldpdGhQb3B1cChvcHRpb25zLCBjb25maWcpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmF1dGhTdGF0ZS5yZWZyZXNoKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogbG9nb3V0KCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBDbGVhcnMgdGhlIGFwcGxpY2F0aW9uIHNlc3Npb24gYW5kIHBlcmZvcm1zIGEgcmVkaXJlY3QgdG8gYC92Mi9sb2dvdXRgLCB1c2luZ1xuICAgKiB0aGUgcGFyYW1ldGVycyBwcm92aWRlZCBhcyBhcmd1bWVudHMsIHRvIGNsZWFyIHRoZSBBdXRoMCBzZXNzaW9uLlxuICAgKiBJZiB0aGUgYGZlZGVyYXRlZGAgb3B0aW9uIGlzIHNwZWNpZmllZCBpdCBhbHNvIGNsZWFycyB0aGUgSWRlbnRpdHkgUHJvdmlkZXIgc2Vzc2lvbi5cbiAgICogSWYgdGhlIGBvcGVuVXJsYCBvcHRpb24gaXMgc2V0IHRvIGZhbHNlLCBpdCBvbmx5IGNsZWFycyB0aGUgYXBwbGljYXRpb24gc2Vzc2lvbi5cbiAgICogSXQgaXMgaW52YWxpZCB0byBzZXQgYm90aCB0aGUgYGZlZGVyYXRlZGAgdG8gdHJ1ZSBhbmQgYG9wZW5VcmxgIHRvIGBmYWxzZWAsXG4gICAqIGFuZCBhbiBlcnJvciB3aWxsIGJlIHRocm93biBpZiB5b3UgZG8uXG4gICAqIFtSZWFkIG1vcmUgYWJvdXQgaG93IExvZ291dCB3b3JrcyBhdCBBdXRoMF0oaHR0cHM6Ly9hdXRoMC5jb20vZG9jcy9sb2dvdXQpLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgbG9nb3V0IG9wdGlvbnNcbiAgICovXG4gIGxvZ291dChvcHRpb25zPzogTG9nb3V0T3B0aW9ucyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5hdXRoMENsaWVudC5sb2dvdXQob3B0aW9ucykudGhlbigoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zPy5vcGVuVXJsID09PSBmYWxzZSB8fCBvcHRpb25zPy5vcGVuVXJsKSB7XG4gICAgICAgICAgdGhpcy5hdXRoU3RhdGUucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIG5ldyBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIC9vYXV0aC90b2tlbiBlbmRwb2ludCwgb21pdHRpbmcgdGhlIHJlZnJlc2ggdG9rZW4uXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgdG9rZW4gZmV0Y2guXG4gICAqL1xuICBnZXRBY2Nlc3NUb2tlblNpbGVudGx5KFxuICAgIG9wdGlvbnM6IEdldFRva2VuU2lsZW50bHlPcHRpb25zICYgeyBkZXRhaWxlZFJlc3BvbnNlOiB0cnVlIH1cbiAgKTogT2JzZXJ2YWJsZTxHZXRUb2tlblNpbGVudGx5VmVyYm9zZVJlc3BvbnNlPjtcblxuICAvKipcbiAgICogRmV0Y2hlcyBhIG5ldyBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgdG9rZW4gZmV0Y2guXG4gICAqL1xuICBnZXRBY2Nlc3NUb2tlblNpbGVudGx5KG9wdGlvbnM/OiBHZXRUb2tlblNpbGVudGx5T3B0aW9ucyk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKipcbiAgICogYGBganNcbiAgICogZ2V0QWNjZXNzVG9rZW5TaWxlbnRseShvcHRpb25zKS5zdWJzY3JpYmUodG9rZW4gPT4gLi4uKVxuICAgKiBgYGBcbiAgICpcbiAgICogSWYgdGhlcmUncyBhIHZhbGlkIHRva2VuIHN0b3JlZCwgcmV0dXJuIGl0LiBPdGhlcndpc2UsIG9wZW5zIGFuXG4gICAqIGlmcmFtZSB3aXRoIHRoZSBgL2F1dGhvcml6ZWAgVVJMIHVzaW5nIHRoZSBwYXJhbWV0ZXJzIHByb3ZpZGVkXG4gICAqIGFzIGFyZ3VtZW50cy4gUmFuZG9tIGFuZCBzZWN1cmUgYHN0YXRlYCBhbmQgYG5vbmNlYCBwYXJhbWV0ZXJzXG4gICAqIHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuIElmIHRoZSByZXNwb25zZSBpcyBzdWNjZXNzZnVsLCByZXN1bHRzXG4gICAqIHdpbGwgYmUgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZWlyIGV4cGlyYXRpb24gdGltZXMuXG4gICAqXG4gICAqIElmIHJlZnJlc2ggdG9rZW5zIGFyZSB1c2VkLCB0aGUgdG9rZW4gZW5kcG9pbnQgaXMgY2FsbGVkIGRpcmVjdGx5IHdpdGggdGhlXG4gICAqICdyZWZyZXNoX3Rva2VuJyBncmFudC4gSWYgbm8gcmVmcmVzaCB0b2tlbiBpcyBhdmFpbGFibGUgdG8gbWFrZSB0aGlzIGNhbGwsXG4gICAqIHRoZSBTREsgZmFsbHMgYmFjayB0byB1c2luZyBhbiBpZnJhbWUgdG8gdGhlICcvYXV0aG9yaXplJyBVUkwuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG1heSB1c2UgYSB3ZWIgd29ya2VyIHRvIHBlcmZvcm0gdGhlIHRva2VuIGNhbGwgaWYgdGhlIGluLW1lbW9yeVxuICAgKiBjYWNoZSBpcyB1c2VkLlxuICAgKlxuICAgKiBJZiBhbiBgYXVkaWVuY2VgIHZhbHVlIGlzIGdpdmVuIHRvIHRoaXMgZnVuY3Rpb24sIHRoZSBTREsgYWx3YXlzIGZhbGxzXG4gICAqIGJhY2sgdG8gdXNpbmcgYW4gaWZyYW1lIHRvIG1ha2UgdGhlIHRva2VuIGV4Y2hhbmdlLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaW4gYWxsIGNhc2VzLCBmYWxsaW5nIGJhY2sgdG8gYW4gaWZyYW1lIHJlcXVpcmVzIGFjY2VzcyB0b1xuICAgKiB0aGUgYGF1dGgwYCBjb29raWUsIGFuZCB0aHVzIHdpbGwgbm90IHdvcmsgaW4gYnJvd3NlcnMgdGhhdCBibG9jayB0aGlyZC1wYXJ0eVxuICAgKiBjb29raWVzIGJ5IGRlZmF1bHQgKFNhZmFyaSwgQnJhdmUsIGV0YykuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgdG9rZW4gZmV0Y2guXG4gICAqL1xuICBnZXRBY2Nlc3NUb2tlblNpbGVudGx5KFxuICAgIG9wdGlvbnM6IEdldFRva2VuU2lsZW50bHlPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBHZXRUb2tlblNpbGVudGx5VmVyYm9zZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuYXV0aDBDbGllbnQpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNsaWVudCkgPT5cbiAgICAgICAgb3B0aW9ucy5kZXRhaWxlZFJlc3BvbnNlID09PSB0cnVlXG4gICAgICAgICAgPyBjbGllbnQuZ2V0VG9rZW5TaWxlbnRseSh7IC4uLm9wdGlvbnMsIGRldGFpbGVkUmVzcG9uc2U6IHRydWUgfSlcbiAgICAgICAgICA6IGNsaWVudC5nZXRUb2tlblNpbGVudGx5KG9wdGlvbnMpXG4gICAgICApLFxuICAgICAgdGFwKCh0b2tlbikgPT4ge1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICB0aGlzLmF1dGhTdGF0ZS5zZXRBY2Nlc3NUb2tlbihcbiAgICAgICAgICAgIHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgPyB0b2tlbiA6IHRva2VuLmFjY2Vzc190b2tlblxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5hdXRoU3RhdGUuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICB0aGlzLmF1dGhTdGF0ZS5yZWZyZXNoKCk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBnZXRUb2tlbldpdGhQb3B1cChvcHRpb25zKS5zdWJzY3JpYmUodG9rZW4gPT4gLi4uKVxuICAgKiBgYGBcbiAgICpcbiAgICogR2V0IGFuIGFjY2VzcyB0b2tlbiBpbnRlcmFjdGl2ZWx5LlxuICAgKlxuICAgKiBPcGVucyBhIHBvcHVwIHdpdGggdGhlIGAvYXV0aG9yaXplYCBVUkwgdXNpbmcgdGhlIHBhcmFtZXRlcnNcbiAgICogcHJvdmlkZWQgYXMgYXJndW1lbnRzLiBSYW5kb20gYW5kIHNlY3VyZSBgc3RhdGVgIGFuZCBgbm9uY2VgXG4gICAqIHBhcmFtZXRlcnMgd2lsbCBiZSBhdXRvLWdlbmVyYXRlZC4gSWYgdGhlIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWwsXG4gICAqIHJlc3VsdHMgd2lsbCBiZSB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlaXIgZXhwaXJhdGlvbiB0aW1lcy5cbiAgICovXG4gIGdldEFjY2Vzc1Rva2VuV2l0aFBvcHVwKFxuICAgIG9wdGlvbnM/OiBHZXRUb2tlbldpdGhQb3B1cE9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gb2YodGhpcy5hdXRoMENsaWVudCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2xpZW50KSA9PiBjbGllbnQuZ2V0VG9rZW5XaXRoUG9wdXAob3B0aW9ucykpLFxuICAgICAgdGFwKCh0b2tlbikgPT4ge1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICB0aGlzLmF1dGhTdGF0ZS5zZXRBY2Nlc3NUb2tlbih0b2tlbik7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5hdXRoU3RhdGUuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICB0aGlzLmF1dGhTdGF0ZS5yZWZyZXNoKCk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBoYW5kbGVSZWRpcmVjdENhbGxiYWNrKHVybCkuc3Vic2NyaWJlKHJlc3VsdCA9PiAuLi4pXG4gICAqIGBgYFxuICAgKlxuICAgKiBBZnRlciB0aGUgYnJvd3NlciByZWRpcmVjdHMgYmFjayB0byB0aGUgY2FsbGJhY2sgcGFnZSxcbiAgICogY2FsbCBgaGFuZGxlUmVkaXJlY3RDYWxsYmFja2AgdG8gaGFuZGxlIHN1Y2Nlc3MgYW5kIGVycm9yXG4gICAqIHJlc3BvbnNlcyBmcm9tIEF1dGgwLiBJZiB0aGUgcmVzcG9uc2UgaXMgc3VjY2Vzc2Z1bCwgcmVzdWx0c1xuICAgKiB3aWxsIGJlIHZhbGlkIGFjY29yZGluZyB0byB0aGVpciBleHBpcmF0aW9uIHRpbWVzLlxuICAgKlxuICAgKiBDYWxsaW5nIHRoaXMgbWV0aG9kIGFsc28gcmVmcmVzaGVzIHRoZSBhdXRoZW50aWNhdGlvbiBhbmQgdXNlciBzdGF0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBgc3RhdGVgIGFuZCBgY29kZWAgdmFsdWVzLiBEZWZhdWx0cyB0byBgd2luZG93LmxvY2F0aW9uLmhyZWZgIGlmIG5vdCBnaXZlbi5cbiAgICovXG4gIGhhbmRsZVJlZGlyZWN0Q2FsbGJhY2soXG4gICAgdXJsPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8XG4gICAgUmVkaXJlY3RMb2dpblJlc3VsdDxUQXBwU3RhdGU+IHwgQ29ubmVjdEFjY291bnRSZWRpcmVjdFJlc3VsdDxUQXBwU3RhdGU+XG4gID4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgdGhpcy5hdXRoMENsaWVudC5oYW5kbGVSZWRpcmVjdENhbGxiYWNrPFRBcHBTdGF0ZT4odXJsKVxuICAgICkucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuYXV0aFN0YXRlLmlzTG9hZGluZyQpLFxuICAgICAgdGFwKChbcmVzdWx0LCBpc0xvYWRpbmddKSA9PiB7XG4gICAgICAgIGlmICghaXNMb2FkaW5nKSB7XG4gICAgICAgICAgdGhpcy5hdXRoU3RhdGUucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwcFN0YXRlID0gcmVzdWx0Py5hcHBTdGF0ZTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gYXBwU3RhdGU/LnRhcmdldCA/PyAnLyc7XG5cbiAgICAgICAgaWYgKGFwcFN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5hcHBTdGF0ZVN1YmplY3QkLm5leHQoYXBwU3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXZpZ2F0b3IubmF2aWdhdGVCeVVybCh0YXJnZXQpO1xuICAgICAgfSksXG4gICAgICBtYXAoKFtyZXN1bHRdKSA9PiByZXN1bHQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBnZXREcG9wTm9uY2UoaWQpLnN1YnNjcmliZShub25jZSA9PiAuLi4pXG4gICAqIGBgYFxuICAgKlxuICAgKiBHZXRzIHRoZSBEUG9QIG5vbmNlIGZvciB0aGUgc3BlY2lmaWVkIGRvbWFpbiBvciB0aGUgZGVmYXVsdCBkb21haW4uXG4gICAqIFRoZSBub25jZSBpcyB1c2VkIGluIERQb1AgcHJvb2YgZ2VuZXJhdGlvbiBmb3IgdG9rZW4gYmluZGluZy5cbiAgICpcbiAgICogQHBhcmFtIGlkIE9wdGlvbmFsIGlkZW50aWZpZXIgZm9yIHRoZSBkb21haW4uIElmIG5vdCBwcm92aWRlZCwgdXNlcyB0aGUgZGVmYXVsdCBkb21haW4uXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgRFBvUCBub25jZSBzdHJpbmcgb3IgdW5kZWZpbmVkIGlmIG5vdCBhdmFpbGFibGUuXG4gICAqL1xuICBnZXREcG9wTm9uY2UoaWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYXV0aDBDbGllbnQuZ2V0RHBvcE5vbmNlKGlkKSk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogc2V0RHBvcE5vbmNlKG5vbmNlLCBpZCkuc3Vic2NyaWJlKCgpID0+IC4uLilcbiAgICogYGBgXG4gICAqXG4gICAqIFNldHMgdGhlIERQb1Agbm9uY2UgZm9yIHRoZSBzcGVjaWZpZWQgZG9tYWluIG9yIHRoZSBkZWZhdWx0IGRvbWFpbi5cbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBhZnRlciByZWNlaXZpbmcgYSBuZXcgbm9uY2UgZnJvbSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBub25jZSBUaGUgRFBvUCBub25jZSB2YWx1ZSB0byBzZXQuXG4gICAqIEBwYXJhbSBpZCBPcHRpb25hbCBpZGVudGlmaWVyIGZvciB0aGUgZG9tYWluLiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgdGhlIGRlZmF1bHQgZG9tYWluLlxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIG5vbmNlIGlzIHNldC5cbiAgICovXG4gIHNldERwb3BOb25jZShub25jZTogc3RyaW5nLCBpZD86IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYXV0aDBDbGllbnQuc2V0RHBvcE5vbmNlKG5vbmNlLCBpZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGdlbmVyYXRlRHBvcFByb29mKHBhcmFtcykuc3Vic2NyaWJlKHByb29mID0+IC4uLilcbiAgICogYGBgXG4gICAqXG4gICAqIEdlbmVyYXRlcyBhIERQb1AgKERlbW9uc3RyYXRpbmcgUHJvb2Ytb2YtUG9zc2Vzc2lvbikgcHJvb2YgSldULlxuICAgKiBUaGlzIHByb29mIGlzIHVzZWQgdG8gYmluZCBhY2Nlc3MgdG9rZW5zIHRvIGEgc3BlY2lmaWMgY2xpZW50LCBwcm92aWRpbmdcbiAgICogYW4gYWRkaXRpb25hbCBsYXllciBvZiBzZWN1cml0eSBmb3IgdG9rZW4gdXNhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgQ29uZmlndXJhdGlvbiBmb3IgZ2VuZXJhdGluZyB0aGUgRFBvUCBwcm9vZlxuICAgKiBAcGFyYW0gcGFyYW1zLnVybCBUaGUgVVJMIG9mIHRoZSByZXNvdXJjZSBzZXJ2ZXIgZW5kcG9pbnRcbiAgICogQHBhcmFtIHBhcmFtcy5tZXRob2QgVGhlIEhUVFAgbWV0aG9kIChlLmcuLCAnR0VUJywgJ1BPU1QnKVxuICAgKiBAcGFyYW0gcGFyYW1zLm5vbmNlIE9wdGlvbmFsIERQb1Agbm9uY2UgZnJvbSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXJcbiAgICogQHBhcmFtIHBhcmFtcy5hY2Nlc3NUb2tlbiBUaGUgYWNjZXNzIHRva2VuIHRvIGJpbmQgdG8gdGhlIHByb29mXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZ2VuZXJhdGVkIERQb1AgcHJvb2YgYXMgYSBKV1Qgc3RyaW5nLlxuICAgKi9cbiAgZ2VuZXJhdGVEcG9wUHJvb2YocGFyYW1zOiB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgbm9uY2U/OiBzdHJpbmc7XG4gICAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5hdXRoMENsaWVudC5nZW5lcmF0ZURwb3BQcm9vZihwYXJhbXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBjb25zdCBmZXRjaGVyID0gY3JlYXRlRmV0Y2hlcihjb25maWcpO1xuICAgKiBgYGBcbiAgICpcbiAgICogQ3JlYXRlcyBhIGN1c3RvbSBmZXRjaGVyIGluc3RhbmNlIHRoYXQgY2FuIGJlIHVzZWQgdG8gbWFrZSBhdXRoZW50aWNhdGVkXG4gICAqIEhUVFAgcmVxdWVzdHMuIFRoZSBmZXRjaGVyIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB0b2tlbiByZWZyZXNoIGFuZCBjYW5cbiAgICogYmUgY29uZmlndXJlZCB3aXRoIGN1c3RvbSByZXF1ZXN0L3Jlc3BvbnNlIGhhbmRsaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBmZXRjaGVyXG4gICAqIEByZXR1cm5zIEEgRmV0Y2hlciBpbnN0YW5jZSBjb25maWd1cmVkIHdpdGggdGhlIEF1dGgwIGNsaWVudC5cbiAgICovXG4gIGNyZWF0ZUZldGNoZXI8VE91dHB1dCBleHRlbmRzIEN1c3RvbUZldGNoTWluaW1hbE91dHB1dCA9IFJlc3BvbnNlPihcbiAgICBjb25maWc/OiBGZXRjaGVyQ29uZmlnPFRPdXRwdXQ+XG4gICk6IEZldGNoZXI8VE91dHB1dD4ge1xuICAgIHJldHVybiB0aGlzLmF1dGgwQ2xpZW50LmNyZWF0ZUZldGNoZXIoY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkSGFuZGxlQ2FsbGJhY2soKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG9mKGxvY2F0aW9uLnNlYXJjaCkucGlwZShcbiAgICAgIG1hcCgoc2VhcmNoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoc2VhcmNoKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAoc2VhcmNoUGFyYW1zLmhhcygnY29kZScpIHx8IHNlYXJjaFBhcmFtcy5oYXMoJ2Vycm9yJykpICYmXG4gICAgICAgICAgc2VhcmNoUGFyYW1zLmhhcygnc3RhdGUnKSAmJlxuICAgICAgICAgICF0aGlzLmNvbmZpZ0ZhY3RvcnkuZ2V0KCkuc2tpcFJlZGlyZWN0Q2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,100 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { BehaviorSubject, defer, merge, of, ReplaySubject, Subject, } from 'rxjs';
3
- import { concatMap, distinctUntilChanged, filter, mergeMap, scan, shareReplay, switchMap, } from 'rxjs/operators';
4
- import { Auth0ClientService } from './auth.client';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@auth0/auth0-spa-js";
7
- /**
8
- * Tracks the Authentication State for the SDK
9
- */
10
- export class AuthState {
11
- constructor(auth0Client) {
12
- this.auth0Client = auth0Client;
13
- this.isLoadingSubject$ = new BehaviorSubject(true);
14
- this.refresh$ = new Subject();
15
- this.accessToken$ = new ReplaySubject(1);
16
- this.errorSubject$ = new ReplaySubject(1);
17
- /**
18
- * Emits boolean values indicating the loading state of the SDK.
19
- */
20
- this.isLoading$ = this.isLoadingSubject$.asObservable();
21
- /**
22
- * Trigger used to pull User information from the Auth0Client.
23
- * Triggers when the access token has changed.
24
- */
25
- this.accessTokenTrigger$ = this.accessToken$.pipe(scan((acc, current) => ({
26
- previous: acc.current,
27
- current,
28
- }), { current: null, previous: null }), filter(({ previous, current }) => previous !== current));
29
- /**
30
- * Trigger used to pull User information from the Auth0Client.
31
- * Triggers when an event occurs that needs to retrigger the User Profile information.
32
- * Events: Login, Access Token change and Logout
33
- */
34
- this.isAuthenticatedTrigger$ = this.isLoading$.pipe(filter((loading) => !loading), distinctUntilChanged(), switchMap(() =>
35
- // To track the value of isAuthenticated over time, we need to merge:
36
- // - the current value
37
- // - the value whenever the access token changes. (this should always be true of there is an access token
38
- // but it is safer to pass this through this.auth0Client.isAuthenticated() nevertheless)
39
- // - the value whenever refreshState$ emits
40
- merge(defer(() => this.auth0Client.isAuthenticated()), this.accessTokenTrigger$.pipe(mergeMap(() => this.auth0Client.isAuthenticated())), this.refresh$.pipe(mergeMap(() => this.auth0Client.isAuthenticated())))));
41
- /**
42
- * Emits boolean values indicating the authentication state of the user. If `true`, it means a user has authenticated.
43
- * This depends on the value of `isLoading$`, so there is no need to manually check the loading state of the SDK.
44
- */
45
- this.isAuthenticated$ = this.isAuthenticatedTrigger$.pipe(distinctUntilChanged(), shareReplay(1));
46
- /**
47
- * Emits details about the authenticated user, or null if not authenticated.
48
- */
49
- this.user$ = this.isAuthenticatedTrigger$.pipe(concatMap((authenticated) => authenticated ? this.auth0Client.getUser() : of(null)), distinctUntilChanged());
50
- /**
51
- * Emits ID token claims when authenticated, or null if not authenticated.
52
- */
53
- this.idTokenClaims$ = this.isAuthenticatedTrigger$.pipe(concatMap((authenticated) => authenticated ? this.auth0Client.getIdTokenClaims() : of(null)));
54
- /**
55
- * Emits errors that occur during login, or when checking for an active session on startup.
56
- */
57
- this.error$ = this.errorSubject$.asObservable();
58
- }
59
- /**
60
- * Update the isLoading state using the provided value
61
- *
62
- * @param isLoading The new value for isLoading
63
- */
64
- setIsLoading(isLoading) {
65
- this.isLoadingSubject$.next(isLoading);
66
- }
67
- /**
68
- * Refresh the state to ensure the `isAuthenticated`, `user$` and `idTokenClaims$`
69
- * reflect the most up-to-date values from Auth0Client.
70
- */
71
- refresh() {
72
- this.refresh$.next();
73
- }
74
- /**
75
- * Update the access token, doing so will also refresh the state.
76
- *
77
- * @param accessToken The new Access Token
78
- */
79
- setAccessToken(accessToken) {
80
- this.accessToken$.next(accessToken);
81
- }
82
- /**
83
- * Emits the error in the `error$` observable.
84
- *
85
- * @param error The new error
86
- */
87
- setError(error) {
88
- this.errorSubject$.next(error);
89
- }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthState, deps: [{ token: Auth0ClientService }], target: i0.ɵɵFactoryTarget.Injectable }); }
91
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthState, providedIn: 'root' }); }
92
- }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthState, decorators: [{
94
- type: Injectable,
95
- args: [{ providedIn: 'root' }]
96
- }], ctorParameters: () => [{ type: i1.Auth0Client, decorators: [{
97
- type: Inject,
98
- args: [Auth0ClientService]
99
- }] }] });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFDTCxlQUFlLEVBQ2YsS0FBSyxFQUNMLEtBQUssRUFDTCxFQUFFLEVBQ0YsYUFBYSxFQUNiLE9BQU8sR0FDUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixRQUFRLEVBQ1IsSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUVuRDs7R0FFRztBQUVILE1BQU0sT0FBTyxTQUFTO0lBc0ZwQixZQUFnRCxXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXJGaEUsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDdkQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsaUJBQVksR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLElBQUksYUFBYSxDQUFRLENBQUMsQ0FBQyxDQUFDO1FBRXBEOztXQUVHO1FBQ2EsZUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVuRTs7O1dBR0c7UUFDSyx3QkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDbEQsSUFBSSxDQUNGLENBQ0UsR0FBd0QsRUFDeEQsT0FBc0IsRUFDdEIsRUFBRSxDQUFDLENBQUM7WUFDSixRQUFRLEVBQUUsR0FBRyxDQUFDLE9B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WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGgwQ2xpZW50IH0gZnJvbSAnQGF1dGgwL2F1dGgwLXNwYS1qcyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGRlZmVyLFxuICBtZXJnZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY29uY2F0TWFwLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtZXJnZU1hcCxcbiAgc2NhbixcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aDBDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLmNsaWVudCc7XG5cbi8qKlxuICogVHJhY2tzIHRoZSBBdXRoZW50aWNhdGlvbiBTdGF0ZSBmb3IgdGhlIFNES1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhTdGF0ZSB7XG4gIHByaXZhdGUgaXNMb2FkaW5nU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIHJlZnJlc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBhY2Nlc3NUb2tlbiQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICBwcml2YXRlIGVycm9yU3ViamVjdCQgPSBuZXcgUmVwbGF5U3ViamVjdDxFcnJvcj4oMSk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGJvb2xlYW4gdmFsdWVzIGluZGljYXRpbmcgdGhlIGxvYWRpbmcgc3RhdGUgb2YgdGhlIFNESy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc0xvYWRpbmckID0gdGhpcy5pc0xvYWRpbmdTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcblxuICAvKipcbiAgICogVHJpZ2dlciB1c2VkIHRvIHB1bGwgVXNlciBpbmZvcm1hdGlvbiBmcm9tIHRoZSBBdXRoMENsaWVudC5cbiAgICogVHJpZ2dlcnMgd2hlbiB0aGUgYWNjZXNzIHRva2VuIGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBhY2Nlc3NUb2tlblRyaWdnZXIkID0gdGhpcy5hY2Nlc3NUb2tlbiQucGlwZShcbiAgICBzY2FuKFxuICAgICAgKFxuICAgICAgICBhY2M6IHsgY3VycmVudDogc3RyaW5nIHwgbnVsbDsgcHJldmlvdXM6IHN0cmluZyB8IG51bGwgfSxcbiAgICAgICAgY3VycmVudDogc3RyaW5nIHwgbnVsbFxuICAgICAgKSA9PiAoe1xuICAgICAgICBwcmV2aW91czogYWNjLmN1cnJlbnQsXG4gICAgICAgIGN1cnJlbnQsXG4gICAgICB9KSxcbiAgICAgIHsgY3VycmVudDogbnVsbCwgcHJldmlvdXM6IG51bGwgfVxuICAgICksXG4gICAgZmlsdGVyKCh7IHByZXZpb3VzLCBjdXJyZW50IH0pID0+IHByZXZpb3VzICE9PSBjdXJyZW50KVxuICApO1xuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHVzZWQgdG8gcHVsbCBVc2VyIGluZm9ybWF0aW9uIGZyb20gdGhlIEF1dGgwQ2xpZW50LlxuICAgKiBUcmlnZ2VycyB3aGVuIGFuIGV2ZW50IG9jY3VycyB0aGF0IG5lZWRzIHRvIHJldHJpZ2dlciB0aGUgVXNlciBQcm9maWxlIGluZm9ybWF0aW9uLlxuICAgKiBFdmVudHM6IExvZ2luLCBBY2Nlc3MgVG9rZW4gY2hhbmdlIGFuZCBMb2dvdXRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNBdXRoZW50aWNhdGVkVHJpZ2dlciQgPSB0aGlzLmlzTG9hZGluZyQucGlwZShcbiAgICBmaWx0ZXIoKGxvYWRpbmcpID0+ICFsb2FkaW5nKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgLy8gVG8gdHJhY2sgdGhlIHZhbHVlIG9mIGlzQXV0aGVudGljYXRlZCBvdmVyIHRpbWUsIHdlIG5lZWQgdG8gbWVyZ2U6XG4gICAgICAvLyAgLSB0aGUgY3VycmVudCB2YWx1ZVxuICAgICAgLy8gIC0gdGhlIHZhbHVlIHdoZW5ldmVyIHRoZSBhY2Nlc3MgdG9rZW4gY2hhbmdlcy4gKHRoaXMgc2hvdWxkIGFsd2F5cyBiZSB0cnVlIG9mIHRoZXJlIGlzIGFuIGFjY2VzcyB0b2tlblxuICAgICAgLy8gICAgYnV0IGl0IGlzIHNhZmVyIHRvIHBhc3MgdGhpcyB0aHJvdWdoIHRoaXMuYXV0aDBDbGllbnQuaXNBdXRoZW50aWNhdGVkKCkgbmV2ZXJ0aGVsZXNzKVxuICAgICAgLy8gIC0gdGhlIHZhbHVlIHdoZW5ldmVyIHJlZnJlc2hTdGF0ZSQgZW1pdHNcbiAgICAgIG1lcmdlKFxuICAgICAgICBkZWZlcigoKSA9PiB0aGlzLmF1dGgwQ2xpZW50LmlzQXV0aGVudGljYXRlZCgpKSxcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblRyaWdnZXIkLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5hdXRoMENsaWVudC5pc0F1dGhlbnRpY2F0ZWQoKSlcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5yZWZyZXNoJC5waXBlKG1lcmdlTWFwKCgpID0+IHRoaXMuYXV0aDBDbGllbnQuaXNBdXRoZW50aWNhdGVkKCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICAvKipcbiAgICogRW1pdHMgYm9vbGVhbiB2YWx1ZXMgaW5kaWNhdGluZyB0aGUgYXV0aGVudGljYXRpb24gc3RhdGUgb2YgdGhlIHVzZXIuIElmIGB0cnVlYCwgaXQgbWVhbnMgYSB1c2VyIGhhcyBhdXRoZW50aWNhdGVkLlxuICAgKiBUaGlzIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIGBpc0xvYWRpbmckYCwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBtYW51YWxseSBjaGVjayB0aGUgbG9hZGluZyBzdGF0ZSBvZiB0aGUgU0RLLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNBdXRoZW50aWNhdGVkJCA9IHRoaXMuaXNBdXRoZW50aWNhdGVkVHJpZ2dlciQucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGRldGFpbHMgYWJvdXQgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlciwgb3IgbnVsbCBpZiBub3QgYXV0aGVudGljYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXIkID0gdGhpcy5pc0F1dGhlbnRpY2F0ZWRUcmlnZ2VyJC5waXBlKFxuICAgIGNvbmNhdE1hcCgoYXV0aGVudGljYXRlZCkgPT5cbiAgICAgIGF1dGhlbnRpY2F0ZWQgPyB0aGlzLmF1dGgwQ2xpZW50LmdldFVzZXIoKSA6IG9mKG51bGwpXG4gICAgKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIElEIHRva2VuIGNsYWltcyB3aGVuIGF1dGhlbnRpY2F0ZWQsIG9yIG51bGwgaWYgbm90IGF1dGhlbnRpY2F0ZWQuXG4gICAqL1xuICByZWFkb25seSBpZFRva2VuQ2xhaW1zJCA9IHRoaXMuaXNBdXRoZW50aWNhdGVkVHJpZ2dlciQucGlwZShcbiAgICBjb25jYXRNYXAoKGF1dGhlbnRpY2F0ZWQpID0+XG4gICAgICBhdXRoZW50aWNhdGVkID8gdGhpcy5hdXRoMENsaWVudC5nZXRJZFRva2VuQ2xhaW1zKCkgOiBvZihudWxsKVxuICAgIClcbiAgKTtcblxuICAvKipcbiAgICogRW1pdHMgZXJyb3JzIHRoYXQgb2NjdXIgZHVyaW5nIGxvZ2luLCBvciB3aGVuIGNoZWNraW5nIGZvciBhbiBhY3RpdmUgc2Vzc2lvbiBvbiBzdGFydHVwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVycm9yJCA9IHRoaXMuZXJyb3JTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEF1dGgwQ2xpZW50U2VydmljZSkgcHJpdmF0ZSBhdXRoMENsaWVudDogQXV0aDBDbGllbnQpIHt9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgaXNMb2FkaW5nIHN0YXRlIHVzaW5nIHRoZSBwcm92aWRlZCB2YWx1ZVxuICAgKlxuICAgKiBAcGFyYW0gaXNMb2FkaW5nIFRoZSBuZXcgdmFsdWUgZm9yIGlzTG9hZGluZ1xuICAgKi9cbiAgcHVibGljIHNldElzTG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGluZ1N1YmplY3QkLm5leHQoaXNMb2FkaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIHRoZSBzdGF0ZSB0byBlbnN1cmUgdGhlIGBpc0F1dGhlbnRpY2F0ZWRgLCBgdXNlciRgIGFuZCBgaWRUb2tlbkNsYWltcyRgXG4gICAqIHJlZmxlY3QgdGhlIG1vc3QgdXAtdG8tZGF0ZSB2YWx1ZXMgZnJvbSAgQXV0aDBDbGllbnQuXG4gICAqL1xuICBwdWJsaWMgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2gkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGFjY2VzcyB0b2tlbiwgZG9pbmcgc28gd2lsbCBhbHNvIHJlZnJlc2ggdGhlIHN0YXRlLlxuICAgKlxuICAgKiBAcGFyYW0gYWNjZXNzVG9rZW4gVGhlIG5ldyBBY2Nlc3MgVG9rZW5cbiAgICovXG4gIHB1YmxpYyBzZXRBY2Nlc3NUb2tlbihhY2Nlc3NUb2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hY2Nlc3NUb2tlbiQubmV4dChhY2Nlc3NUb2tlbik7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIGVycm9yIGluIHRoZSBgZXJyb3IkYCBvYnNlcnZhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgVGhlIG5ldyBlcnJvclxuICAgKi9cbiAgcHVibGljIHNldEVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yU3ViamVjdCQubmV4dChlcnJvcik7XG4gIH1cbn1cbiJdfQ==
@@ -1,25 +0,0 @@
1
- import { inject } from '@angular/core';
2
- import { AuthGuard } from './auth.guard';
3
- import { AuthHttpInterceptor } from './auth.interceptor';
4
- /**
5
- * Functional AuthGuard to ensure routes can only be accessed when authenticated.
6
- *
7
- * Note: Should only be used as of Angular 15
8
- *
9
- * @param route Contains the information about a route associated with a component loaded in an outlet at a particular moment in time.
10
- * @param state Represents the state of the router at a moment in time.
11
- * @returns An Observable, indicating if the route can be accessed or not
12
- */
13
- export const authGuardFn = (route, state) => inject(AuthGuard).canActivate(route, state);
14
- /**
15
- * Functional AuthHttpInterceptor to include the access token in matching requests.
16
- *
17
- * Note: Should only be used as of Angular 15
18
- *
19
- * @param req An outgoing HTTP request with an optional typed body.
20
- * @param handle Represents the next interceptor in an interceptor chain, or the real backend if there are no
21
- * further interceptors.
22
- * @returns An Observable representing the intercepted HttpRequest
23
- */
24
- export const authHttpInterceptorFn = (req, handle) => inject(AuthHttpInterceptor).intercept(req, { handle });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9mdW5jdGlvbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUN6QixLQUE2QixFQUM3QixLQUEwQixFQUMxQixFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFakQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsR0FBcUIsRUFDckIsTUFBcUUsRUFDckUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoR3VhcmQgfSBmcm9tICcuL2F1dGguZ3VhcmQnO1xuaW1wb3J0IHsgQXV0aEh0dHBJbnRlcmNlcHRvciB9IGZyb20gJy4vYXV0aC5pbnRlcmNlcHRvcic7XG5cbi8qKlxuICogRnVuY3Rpb25hbCBBdXRoR3VhcmQgdG8gZW5zdXJlIHJvdXRlcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aGVuIGF1dGhlbnRpY2F0ZWQuXG4gKlxuICogTm90ZTogU2hvdWxkIG9ubHkgYmUgdXNlZCBhcyBvZiBBbmd1bGFyIDE1XG4gKlxuICogQHBhcmFtIHJvdXRlIENvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIHJvdXRlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbXBvbmVudCBsb2FkZWQgaW4gYW4gb3V0bGV0IGF0IGEgcGFydGljdWxhciBtb21lbnQgaW4gdGltZS5cbiAqIEBwYXJhbSBzdGF0ZSBSZXByZXNlbnRzIHRoZSBzdGF0ZSBvZiB0aGUgcm91dGVyIGF0IGEgbW9tZW50IGluIHRpbWUuXG4gKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlLCBpbmRpY2F0aW5nIGlmIHRoZSByb3V0ZSBjYW4gYmUgYWNjZXNzZWQgb3Igbm90XG4gKi9cbmV4cG9ydCBjb25zdCBhdXRoR3VhcmRGbiA9IChcbiAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4pID0+IGluamVjdChBdXRoR3VhcmQpLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG5cbi8qKlxuICogRnVuY3Rpb25hbCBBdXRoSHR0cEludGVyY2VwdG9yIHRvIGluY2x1ZGUgdGhlIGFjY2VzcyB0b2tlbiBpbiBtYXRjaGluZyByZXF1ZXN0cy5cbiAqXG4gKiBOb3RlOiBTaG91bGQgb25seSBiZSB1c2VkIGFzIG9mIEFuZ3VsYXIgMTVcbiAqXG4gKiBAcGFyYW0gcmVxIEFuIG91dGdvaW5nIEhUVFAgcmVxdWVzdCB3aXRoIGFuIG9wdGlvbmFsIHR5cGVkIGJvZHkuXG4gKiBAcGFyYW0gaGFuZGxlIFJlcHJlc2VudHMgdGhlIG5leHQgaW50ZXJjZXB0b3IgaW4gYW4gaW50ZXJjZXB0b3IgY2hhaW4sIG9yIHRoZSByZWFsIGJhY2tlbmQgaWYgdGhlcmUgYXJlIG5vXG4gKiBmdXJ0aGVyIGludGVyY2VwdG9ycy5cbiAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgcmVwcmVzZW50aW5nIHRoZSBpbnRlcmNlcHRlZCBIdHRwUmVxdWVzdFxuICovXG5leHBvcnQgY29uc3QgYXV0aEh0dHBJbnRlcmNlcHRvckZuID0gKFxuICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gIGhhbmRsZTogKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4pID0+IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PlxuKSA9PiBpbmplY3QoQXV0aEh0dHBJbnRlcmNlcHRvcikuaW50ZXJjZXB0KHJlcSwgeyBoYW5kbGUgfSk7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBSZWRpcmVjdExvZ2luT3B0aW9ucyBhcyBTUEFSZWRpcmVjdExvZ2luT3B0aW9ucyxcbiAgTG9nb3V0T3B0aW9ucyBhcyBTUEFMb2dvdXRPcHRpb25zLFxufSBmcm9tICdAYXV0aDAvYXV0aDAtc3BhLWpzJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdExvZ2luT3B0aW9uczxUQXBwU3RhdGU+XG4gIGV4dGVuZHMgT21pdDxTUEFSZWRpcmVjdExvZ2luT3B0aW9uczxUQXBwU3RhdGU+LCAnb25SZWRpcmVjdCc+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nb3V0T3B0aW9ucyBleHRlbmRzIE9taXQ8U1BBTG9nb3V0T3B0aW9ucywgJ29uUmVkaXJlY3QnPiB7fVxuIl19
@@ -1,37 +0,0 @@
1
- import { Auth0ClientService, Auth0ClientFactory } from './auth.client';
2
- import { AuthConfigService, AuthClientConfig } from './auth.config';
3
- import { AuthGuard } from './auth.guard';
4
- import { AuthHttpInterceptor } from './auth.interceptor';
5
- import { AuthService } from './auth.service';
6
- /**
7
- * Initialize the authentication system. Configuration can either be specified here,
8
- * or by calling AuthClientConfig.set (perhaps from an APP_INITIALIZER factory function).
9
- *
10
- * Note: Should only be used as of Angular 15, and should not be added to a component's providers.
11
- *
12
- * @param config The optional configuration for the SDK.
13
- *
14
- * @example
15
- * bootstrapApplication(AppComponent, {
16
- * providers: [
17
- * provideAuth0(),
18
- * ],
19
- * });
20
- */
21
- export function provideAuth0(config) {
22
- return [
23
- AuthService,
24
- AuthHttpInterceptor,
25
- AuthGuard,
26
- {
27
- provide: AuthConfigService,
28
- useValue: config,
29
- },
30
- {
31
- provide: Auth0ClientService,
32
- useFactory: Auth0ClientFactory.createClient,
33
- deps: [AuthClientConfig],
34
- },
35
- ];
36
- }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9wcm92aWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0M7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQW1CO0lBQzlDLE9BQU87UUFDTCxXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLFNBQVM7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsUUFBUSxFQUFFLE1BQU07U0FDakI7UUFDRDtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsVUFBVSxFQUFFLGtCQUFrQixDQUFDLFlBQVk7WUFDM0MsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7U0FDekI7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoMENsaWVudFNlcnZpY2UsIEF1dGgwQ2xpZW50RmFjdG9yeSB9IGZyb20gJy4vYXV0aC5jbGllbnQnO1xuaW1wb3J0IHsgQXV0aENvbmZpZywgQXV0aENvbmZpZ1NlcnZpY2UsIEF1dGhDbGllbnRDb25maWcgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vYXV0aC5ndWFyZCc7XG5pbXBvcnQgeyBBdXRoSHR0cEludGVyY2VwdG9yIH0gZnJvbSAnLi9hdXRoLmludGVyY2VwdG9yJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGF1dGhlbnRpY2F0aW9uIHN5c3RlbS4gQ29uZmlndXJhdGlvbiBjYW4gZWl0aGVyIGJlIHNwZWNpZmllZCBoZXJlLFxuICogb3IgYnkgY2FsbGluZyBBdXRoQ2xpZW50Q29uZmlnLnNldCAocGVyaGFwcyBmcm9tIGFuIEFQUF9JTklUSUFMSVpFUiBmYWN0b3J5IGZ1bmN0aW9uKS5cbiAqXG4gKiBOb3RlOiBTaG91bGQgb25seSBiZSB1c2VkIGFzIG9mIEFuZ3VsYXIgMTUsIGFuZCBzaG91bGQgbm90IGJlIGFkZGVkIHRvIGEgY29tcG9uZW50J3MgcHJvdmlkZXJzLlxuICpcbiAqIEBwYXJhbSBjb25maWcgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBTREsuXG4gKlxuICogQGV4YW1wbGVcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlQXV0aDAoKSxcbiAqICAgXSxcbiAqIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUF1dGgwKGNvbmZpZz86IEF1dGhDb25maWcpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICBBdXRoU2VydmljZSxcbiAgICBBdXRoSHR0cEludGVyY2VwdG9yLFxuICAgIEF1dGhHdWFyZCxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBdXRoQ29uZmlnU2VydmljZSxcbiAgICAgIHVzZVZhbHVlOiBjb25maWcsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBdXRoMENsaWVudFNlcnZpY2UsXG4gICAgICB1c2VGYWN0b3J5OiBBdXRoMENsaWVudEZhY3RvcnkuY3JlYXRlQ2xpZW50LFxuICAgICAgZGVwczogW0F1dGhDbGllbnRDb25maWddLFxuICAgIH0sXG4gIF07XG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- /*
2
- * Public API Surface of auth0-angular
3
- */
4
- export * from './lib/auth.service';
5
- export * from './lib/auth.module';
6
- export * from './lib/auth.guard';
7
- export * from './lib/auth.interceptor';
8
- export * from './lib/auth.config';
9
- export * from './lib/auth.client';
10
- export * from './lib/auth.state';
11
- export * from './lib/interfaces';
12
- export * from './lib/provide';
13
- export * from './lib/functional';
14
- export * from './lib/abstract-navigator';
15
- export { LocalStorageCache, InMemoryCache, User, GenericError, TimeoutError, MfaRequiredError, PopupTimeoutError, AuthenticationError, PopupCancelledError, MissingRefreshTokenError, UseDpopNonceError, } from '@auth0/auth0-spa-js';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLE9BQU8sRUFRTCxpQkFBaUIsRUFDakIsYUFBYSxFQUViLElBQUksRUFDSixZQUFZLEVBQ1osWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQix3QkFBd0IsRUFJeEIsaUJBQWlCLEdBQ2xCLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGF1dGgwLWFuZ3VsYXJcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguY2xpZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm92aWRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Z1bmN0aW9uYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWJzdHJhY3QtbmF2aWdhdG9yJztcblxuZXhwb3J0IHtcbiAgQXV0aG9yaXphdGlvblBhcmFtcyxcbiAgUG9wdXBMb2dpbk9wdGlvbnMsXG4gIFBvcHVwQ29uZmlnT3B0aW9ucyxcbiAgR2V0VG9rZW5XaXRoUG9wdXBPcHRpb25zLFxuICBHZXRUb2tlblNpbGVudGx5T3B0aW9ucyxcbiAgSUNhY2hlLFxuICBDYWNoZWFibGUsXG4gIExvY2FsU3RvcmFnZUNhY2hlLFxuICBJbk1lbW9yeUNhY2hlLFxuICBJZFRva2VuLFxuICBVc2VyLFxuICBHZW5lcmljRXJyb3IsXG4gIFRpbWVvdXRFcnJvcixcbiAgTWZhUmVxdWlyZWRFcnJvcixcbiAgUG9wdXBUaW1lb3V0RXJyb3IsXG4gIEF1dGhlbnRpY2F0aW9uRXJyb3IsXG4gIFBvcHVwQ2FuY2VsbGVkRXJyb3IsXG4gIE1pc3NpbmdSZWZyZXNoVG9rZW5FcnJvcixcbiAgRmV0Y2hlcixcbiAgRmV0Y2hlckNvbmZpZyxcbiAgQ3VzdG9tRmV0Y2hNaW5pbWFsT3V0cHV0LFxuICBVc2VEcG9wTm9uY2VFcnJvcixcbn0gZnJvbSAnQGF1dGgwL2F1dGgwLXNwYS1qcyc7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export default { name: '@auth0/auth0-angular', version: '2.4.0' };
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcmFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvdXNlcmFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgeyBuYW1lOiAnQGF1dGgwL2F1dGgwLWFuZ3VsYXInLCB2ZXJzaW9uOiAnMi40LjAnIH07XG4iXX0=