@azure/msal-angular 4.0.20 → 5.0.0-alpha.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.
Files changed (37) hide show
  1. package/IMsalService.d.ts +16 -17
  2. package/README.md +3 -1
  3. package/constants.d.ts +9 -5
  4. package/{fesm2020 → fesm2022}/azure-msal-angular.mjs +740 -734
  5. package/fesm2022/azure-msal-angular.mjs.map +1 -0
  6. package/index.d.ts +5 -5
  7. package/msal.broadcast.config.d.ts +3 -3
  8. package/msal.broadcast.service.d.ts +19 -19
  9. package/msal.guard.config.d.ts +9 -9
  10. package/msal.guard.d.ts +43 -43
  11. package/msal.interceptor.config.d.ts +13 -13
  12. package/msal.interceptor.d.ts +70 -70
  13. package/msal.module.d.ts +13 -13
  14. package/msal.navigation.client.d.ts +19 -19
  15. package/msal.redirect.component.d.ts +15 -15
  16. package/msal.service.d.ts +32 -33
  17. package/package.json +5 -15
  18. package/packageMetadata.d.ts +2 -2
  19. package/public-api.d.ts +17 -17
  20. package/esm2020/IMsalService.mjs +0 -6
  21. package/esm2020/azure-msal-angular.mjs +0 -5
  22. package/esm2020/constants.mjs +0 -10
  23. package/esm2020/msal.broadcast.config.mjs +0 -6
  24. package/esm2020/msal.broadcast.service.mjs +0 -66
  25. package/esm2020/msal.guard.config.mjs +0 -6
  26. package/esm2020/msal.guard.mjs +0 -218
  27. package/esm2020/msal.interceptor.config.mjs +0 -6
  28. package/esm2020/msal.interceptor.mjs +0 -270
  29. package/esm2020/msal.module.mjs +0 -46
  30. package/esm2020/msal.navigation.client.mjs +0 -53
  31. package/esm2020/msal.redirect.component.mjs +0 -31
  32. package/esm2020/msal.service.mjs +0 -88
  33. package/esm2020/packageMetadata.mjs +0 -4
  34. package/esm2020/public-api.mjs +0 -18
  35. package/fesm2015/azure-msal-angular.mjs +0 -762
  36. package/fesm2015/azure-msal-angular.mjs.map +0 -1
  37. package/fesm2020/azure-msal-angular.mjs.map +0 -1
@@ -1,270 +0,0 @@
1
- /*
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { Injectable, Inject } from "@angular/core";
6
- import { DOCUMENT } from "@angular/common";
7
- import { BrowserConfigurationAuthError, InteractionStatus, InteractionType, StringUtils, } from "@azure/msal-browser";
8
- import { EMPTY, of } from "rxjs";
9
- import { switchMap, catchError, take, filter } from "rxjs/operators";
10
- import { MSAL_INTERCEPTOR_CONFIG } from "./constants";
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "./msal.service";
13
- import * as i2 from "@angular/common";
14
- import * as i3 from "./msal.broadcast.service";
15
- export class MsalInterceptor {
16
- constructor(msalInterceptorConfig, authService, location, msalBroadcastService,
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
18
- document) {
19
- this.msalInterceptorConfig = msalInterceptorConfig;
20
- this.authService = authService;
21
- this.location = location;
22
- this.msalBroadcastService = msalBroadcastService;
23
- this._document = document;
24
- }
25
- intercept(req, // eslint-disable-line @typescript-eslint/no-explicit-any
26
- next
27
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
- ) {
29
- if (this.msalInterceptorConfig.interactionType !== InteractionType.Popup &&
30
- this.msalInterceptorConfig.interactionType !== InteractionType.Redirect) {
31
- throw new BrowserConfigurationAuthError("invalid_interaction_type", "Invalid interaction type provided to MSAL Interceptor. InteractionType.Popup, InteractionType.Redirect must be provided in the msalInterceptorConfiguration");
32
- }
33
- this.authService.getLogger().verbose("MSAL Interceptor activated");
34
- const scopes = this.getScopesForEndpoint(req.url, req.method);
35
- // If no scopes for endpoint, does not acquire token
36
- if (!scopes || scopes.length === 0) {
37
- this.authService
38
- .getLogger()
39
- .verbose("Interceptor - no scopes for endpoint");
40
- return next.handle(req);
41
- }
42
- // Sets account as active account or first account
43
- let account;
44
- if (!!this.authService.instance.getActiveAccount()) {
45
- this.authService
46
- .getLogger()
47
- .verbose("Interceptor - active account selected");
48
- account = this.authService.instance.getActiveAccount();
49
- }
50
- else {
51
- this.authService
52
- .getLogger()
53
- .verbose("Interceptor - no active account, fallback to first account");
54
- account = this.authService.instance.getAllAccounts()[0];
55
- }
56
- const authRequest = typeof this.msalInterceptorConfig.authRequest === "function"
57
- ? this.msalInterceptorConfig.authRequest(this.authService, req, {
58
- account: account,
59
- })
60
- : { ...this.msalInterceptorConfig.authRequest, account };
61
- this.authService
62
- .getLogger()
63
- .info(`Interceptor - ${scopes.length} scopes found for endpoint`);
64
- this.authService
65
- .getLogger()
66
- .infoPii(`Interceptor - [${scopes}] scopes found for ${req.url}`);
67
- return this.acquireToken(authRequest, scopes, account).pipe(switchMap((result) => {
68
- this.authService
69
- .getLogger()
70
- .verbose("Interceptor - setting authorization headers");
71
- const headers = req.headers.set("Authorization", `Bearer ${result.accessToken}`);
72
- const requestClone = req.clone({ headers });
73
- return next.handle(requestClone);
74
- }));
75
- }
76
- /**
77
- * Try to acquire token silently. Invoke interaction if acquireTokenSilent rejected with error or resolved with null access token
78
- * @param authRequest Request
79
- * @param scopes Array of scopes for the request
80
- * @param account Account
81
- * @returns Authentication result
82
- */
83
- acquireToken(authRequest, scopes, account) {
84
- // Note: For MSA accounts, include openid scope when calling acquireTokenSilent to return idToken
85
- return this.authService
86
- .acquireTokenSilent({ ...authRequest, scopes, account })
87
- .pipe(catchError(() => {
88
- this.authService
89
- .getLogger()
90
- .error("Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve.");
91
- return this.msalBroadcastService.inProgress$.pipe(take(1), switchMap((status) => {
92
- if (status === InteractionStatus.None) {
93
- return this.acquireTokenInteractively(authRequest, scopes);
94
- }
95
- return this.msalBroadcastService.inProgress$.pipe(filter((status) => status === InteractionStatus.None), take(1), switchMap(() => this.acquireToken(authRequest, scopes, account)));
96
- }));
97
- }), switchMap((result) => {
98
- if (!result.accessToken) {
99
- this.authService
100
- .getLogger()
101
- .error("Interceptor - acquireTokenSilent resolved with null access token. Known issue with B2C tenants, invoking interaction to resolve.");
102
- return this.msalBroadcastService.inProgress$.pipe(filter((status) => status === InteractionStatus.None), take(1), switchMap(() => this.acquireTokenInteractively(authRequest, scopes)));
103
- }
104
- return of(result);
105
- }));
106
- }
107
- /**
108
- * Invoke interaction for the given set of scopes
109
- * @param authRequest Request
110
- * @param scopes Array of scopes for the request
111
- * @returns Result from the interactive request
112
- */
113
- acquireTokenInteractively(authRequest, scopes) {
114
- if (this.msalInterceptorConfig.interactionType === InteractionType.Popup) {
115
- this.authService
116
- .getLogger()
117
- .verbose("Interceptor - error acquiring token silently, acquiring by popup");
118
- return this.authService.acquireTokenPopup({ ...authRequest, scopes });
119
- }
120
- this.authService
121
- .getLogger()
122
- .verbose("Interceptor - error acquiring token silently, acquiring by redirect");
123
- const redirectStartPage = window.location.href;
124
- this.authService.acquireTokenRedirect({
125
- ...authRequest,
126
- scopes,
127
- redirectStartPage,
128
- });
129
- return EMPTY;
130
- }
131
- /**
132
- * Looks up the scopes for the given endpoint from the protectedResourceMap
133
- * @param endpoint Url of the request
134
- * @param httpMethod Http method of the request
135
- * @returns Array of scopes, or null if not found
136
- *
137
- */
138
- getScopesForEndpoint(endpoint, httpMethod) {
139
- this.authService
140
- .getLogger()
141
- .verbose("Interceptor - getting scopes for endpoint");
142
- // Ensures endpoints and protected resources compared are normalized
143
- const normalizedEndpoint = this.location.normalize(endpoint);
144
- const protectedResourcesArray = Array.from(this.msalInterceptorConfig.protectedResourceMap.keys());
145
- const matchingProtectedResources = this.matchResourcesToEndpoint(protectedResourcesArray, normalizedEndpoint);
146
- if (matchingProtectedResources.length > 0) {
147
- return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources, httpMethod);
148
- }
149
- return null;
150
- }
151
- /**
152
- * Finds resource endpoints that match request endpoint
153
- * @param protectedResourcesEndpoints
154
- * @param endpoint
155
- * @returns
156
- */
157
- matchResourcesToEndpoint(protectedResourcesEndpoints, endpoint) {
158
- const matchingResources = [];
159
- protectedResourcesEndpoints.forEach((key) => {
160
- const normalizedKey = this.location.normalize(key);
161
- // Get url components
162
- const absoluteKey = this.getAbsoluteUrl(normalizedKey);
163
- const keyComponents = new URL(absoluteKey);
164
- const absoluteEndpoint = this.getAbsoluteUrl(endpoint);
165
- const endpointComponents = new URL(absoluteEndpoint);
166
- if (this.checkUrlComponents(keyComponents, endpointComponents)) {
167
- matchingResources.push(key);
168
- }
169
- });
170
- return matchingResources;
171
- }
172
- /**
173
- * Compares URL segments between key and endpoint
174
- * @param key
175
- * @param endpoint
176
- * @returns
177
- */
178
- checkUrlComponents(keyComponents, endpointComponents) {
179
- // URL properties from https://developer.mozilla.org/en-US/docs/Web/API/URL
180
- const urlProperties = ["protocol", "host", "pathname", "search", "hash"];
181
- for (const property of urlProperties) {
182
- if (keyComponents[property]) {
183
- const decodedInput = decodeURIComponent(keyComponents[property]);
184
- if (!StringUtils.matchPattern(decodedInput, endpointComponents[property])) {
185
- return false;
186
- }
187
- }
188
- }
189
- return true;
190
- }
191
- /**
192
- * Transforms relative urls to absolute urls
193
- * @param url
194
- * @returns
195
- */
196
- getAbsoluteUrl(url) {
197
- const link = this._document.createElement("a");
198
- link.href = url;
199
- return link.href;
200
- }
201
- /**
202
- * Finds scopes from first matching endpoint with HTTP method that matches request
203
- * @param protectedResourceMap Protected resource map
204
- * @param endpointArray Array of resources that match request endpoint
205
- * @param httpMethod Http method of the request
206
- * @returns
207
- */
208
- matchScopesToEndpoint(protectedResourceMap, endpointArray, httpMethod) {
209
- const allMatchedScopes = [];
210
- // Check each matched endpoint for matching HttpMethod and scopes
211
- endpointArray.forEach((matchedEndpoint) => {
212
- const scopesForEndpoint = [];
213
- const methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);
214
- // Return if resource is unprotected
215
- if (methodAndScopesArray === null) {
216
- allMatchedScopes.push(null);
217
- return;
218
- }
219
- methodAndScopesArray.forEach((entry) => {
220
- // Entry is either array of scopes or ProtectedResourceScopes object
221
- if (typeof entry === "string") {
222
- scopesForEndpoint.push(entry);
223
- }
224
- else {
225
- // Ensure methods being compared are normalized
226
- const normalizedRequestMethod = httpMethod.toLowerCase();
227
- const normalizedResourceMethod = entry.httpMethod.toLowerCase();
228
- // Method in protectedResourceMap matches request http method
229
- if (normalizedResourceMethod === normalizedRequestMethod) {
230
- // Validate if scopes comes null to unprotect the resource in a certain http method
231
- if (entry.scopes === null) {
232
- allMatchedScopes.push(null);
233
- }
234
- else {
235
- entry.scopes.forEach((scope) => {
236
- scopesForEndpoint.push(scope);
237
- });
238
- }
239
- }
240
- }
241
- });
242
- // Only add to all scopes if scopes for endpoint and method is found
243
- if (scopesForEndpoint.length > 0) {
244
- allMatchedScopes.push(scopesForEndpoint);
245
- }
246
- });
247
- if (allMatchedScopes.length > 0) {
248
- if (allMatchedScopes.length > 1) {
249
- this.authService
250
- .getLogger()
251
- .warning("Interceptor - More than 1 matching scopes for endpoint found.");
252
- }
253
- // Returns scopes for first matching endpoint
254
- return allMatchedScopes[0];
255
- }
256
- return null;
257
- }
258
- }
259
- MsalInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalInterceptor, deps: [{ token: MSAL_INTERCEPTOR_CONFIG }, { token: i1.MsalService }, { token: i2.Location }, { token: i3.MsalBroadcastService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
260
- MsalInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalInterceptor });
261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalInterceptor, decorators: [{
262
- type: Injectable
263
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
264
- type: Inject,
265
- args: [MSAL_INTERCEPTOR_CONFIG]
266
- }] }, { type: i1.MsalService }, { type: i2.Location }, { type: i3.MsalBroadcastService }, { type: undefined, decorators: [{
267
- type: Inject,
268
- args: [DOCUMENT]
269
- }] }]; } });
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tc2FsLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBWSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU9yRCxPQUFPLEVBR0wsNkJBQTZCLEVBQzdCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsV0FBVyxHQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFjLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXJFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFHdEQsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFFVSxxQkFBbUQsRUFDbkQsV0FBd0IsRUFDeEIsUUFBa0IsRUFDbEIsb0JBQTBDO0lBQ2xELGlIQUFpSDtJQUMvRixRQUFjO1FBTHhCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBOEI7UUFDbkQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBSWxELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBb0IsQ0FBQztJQUN4QyxDQUFDO0lBRUQsU0FBUyxDQUNQLEdBQXFCLEVBQUUseURBQXlEO0lBQ2hGLElBQWlCO0lBQ2pCLDhEQUE4RDs7UUFFOUQsSUFDRSxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxLQUFLLGVBQWUsQ0FBQyxLQUFLO1lBQ3BFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEtBQUss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WUFDL0IsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsV0FBVztxQkFDYixTQUFTLEVBQUU7cUJBQ1gsT0FBTyxDQUNOLCtEQUErRCxDQUNoRSxDQUFDO2FBQ0w7WUFDRCw2Q0FBNkM7WUFDN0MsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7NkdBaldVLGVBQWUsa0JBSWhCLHVCQUF1QixvR0FNdkIsUUFBUTtpSEFWUCxlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQUtOLE1BQU07MkJBQUMsdUJBQXVCOzswQkFNOUIsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2NhdGlvbiwgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvbm8tdW5yZXNvbHZlZFxuaW1wb3J0IHtcbiAgQWNjb3VudEluZm8sXG4gIEF1dGhlbnRpY2F0aW9uUmVzdWx0LFxuICBCcm93c2VyQ29uZmlndXJhdGlvbkF1dGhFcnJvcixcbiAgSW50ZXJhY3Rpb25TdGF0dXMsXG4gIEludGVyYWN0aW9uVHlwZSxcbiAgU3RyaW5nVXRpbHMsXG59IGZyb20gXCJAYXp1cmUvbXNhbC1icm93c2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBFTVBUWSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBjYXRjaEVycm9yLCB0YWtlLCBmaWx0ZXIgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5zZXJ2aWNlXCI7XG5pbXBvcnQge1xuICBNc2FsSW50ZXJjZXB0b3JBdXRoUmVxdWVzdCxcbiAgTXNhbEludGVyY2VwdG9yQ29uZmlndXJhdGlvbixcbiAgUHJvdGVjdGVkUmVzb3VyY2VTY29wZXMsXG59IGZyb20gXCIuL21zYWwuaW50ZXJjZXB0b3IuY29uZmlnXCI7XG5pbXBvcnQgeyBNc2FsQnJvYWRjYXN0U2VydmljZSB9IGZyb20gXCIuL21zYWwuYnJvYWRjYXN0LnNlcnZpY2VcIjtcbmltcG9ydCB7IE1TQUxfSU5URVJDRVBUT1JfQ09ORklHIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNc2FsSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBwcml2YXRlIF9kb2N1bWVudD86IERvY3VtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTVNBTF9JTlRFUkNFUFRPUl9DT05GSUcpXG4gICAgcHJpdmF0ZSBtc2FsSW50ZXJjZXB0b3JDb25maWc6IE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb24sXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogTXNhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBtc2FsQnJvYWRjYXN0U2VydmljZTogTXNhbEJyb2FkY2FzdFNlcnZpY2UsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudD86IGFueVxuICApIHtcbiAgICB0aGlzLl9kb2N1bWVudCA9IGRvY3VtZW50IGFzIERvY3VtZW50O1xuICB9XG5cbiAgaW50ZXJjZXB0KFxuICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcuaW50ZXJhY3Rpb25UeXBlICE9PSBJbnRlcmFjdGlvblR5cGUuUG9wdXAgJiZcbiAgICAgIHRoaXMubXNhbEludGVyY2VwdG9yQ29uZmlnLmludGVyYWN0aW9uVHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0XG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgQnJvd3NlckNvbmZpZ3VyYXRpb25BdXRoRXJyb3IoXG4gICAgICAgIFwiaW52YWxpZF9pbnRlcmFjdGlvbl90eXBlXCIsXG4gICAgICAgIFwiSW52YWxpZCBpbnRlcmFjdGlvbiB0eXBlIHByb3ZpZGVkIHRvIE1TQUwgSW50ZXJjZXB0b3IuIEludGVyYWN0aW9uVHlwZS5Qb3B1cCwgSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0IG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIG1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJNU0FMIEludGVyY2VwdG9yIGFjdGl2YXRlZFwiKTtcbiAgICBjb25zdCBzY29wZXMgPSB0aGlzLmdldFNjb3Blc0ZvckVuZHBvaW50KHJlcS51cmwsIHJlcS5tZXRob2QpO1xuXG4gICAgLy8gSWYgbm8gc2NvcGVzIGZvciBlbmRwb2ludCwgZG9lcyBub3QgYWNxdWlyZSB0b2tlblxuICAgIGlmICghc2NvcGVzIHx8IHNjb3Blcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgIC52ZXJib3NlKFwiSW50ZXJjZXB0b3IgLSBubyBzY29wZXMgZm9yIGVuZHBvaW50XCIpO1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgfVxuXG4gICAgLy8gU2V0cyBhY2NvdW50IGFzIGFjdGl2ZSBhY2NvdW50IG9yIGZpcnN0IGFjY291bnRcbiAgICBsZXQgYWNjb3VudDogQWNjb3VudEluZm87XG4gICAgaWYgKCEhdGhpcy5hdXRoU2VydmljZS5pbnN0YW5jZS5nZXRBY3RpdmVBY2NvdW50KCkpIHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgIC52ZXJib3NlKFwiSW50ZXJjZXB0b3IgLSBhY3RpdmUgYWNjb3VudCBzZWxlY3RlZFwiKTtcbiAgICAgIGFjY291bnQgPSB0aGlzLmF1dGhTZXJ2aWNlLmluc3RhbmNlLmdldEFjdGl2ZUFjY291bnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAuZ2V0TG9nZ2VyKClcbiAgICAgICAgLnZlcmJvc2UoXCJJbnRlcmNlcHRvciAtIG5vIGFjdGl2ZSBhY2NvdW50LCBmYWxsYmFjayB0byBmaXJzdCBhY2NvdW50XCIpO1xuICAgICAgYWNjb3VudCA9IHRoaXMuYXV0aFNlcnZpY2UuaW5zdGFuY2UuZ2V0QWxsQWNjb3VudHMoKVswXTtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRoUmVxdWVzdCA9XG4gICAgICB0eXBlb2YgdGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcuYXV0aFJlcXVlc3QgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICA/IHRoaXMubXNhbEludGVyY2VwdG9yQ29uZmlnLmF1dGhSZXF1ZXN0KHRoaXMuYXV0aFNlcnZpY2UsIHJlcSwge1xuICAgICAgICAgICAgYWNjb3VudDogYWNjb3VudCxcbiAgICAgICAgICB9KVxuICAgICAgICA6IHsgLi4udGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcuYXV0aFJlcXVlc3QsIGFjY291bnQgfTtcblxuICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgLmluZm8oYEludGVyY2VwdG9yIC0gJHtzY29wZXMubGVuZ3RofSBzY29wZXMgZm91bmQgZm9yIGVuZHBvaW50YCk7XG4gICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgLmdldExvZ2dlcigpXG4gICAgICAuaW5mb1BpaShgSW50ZXJjZXB0b3IgLSBbJHtzY29wZXN9XSBzY29wZXMgZm91bmQgZm9yICR7cmVxLnVybH1gKTtcblxuICAgIHJldHVybiB0aGlzLmFjcXVpcmVUb2tlbihhdXRoUmVxdWVzdCwgc2NvcGVzLCBhY2NvdW50KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXN1bHQ6IEF1dGhlbnRpY2F0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgICAuZ2V0TG9nZ2VyKClcbiAgICAgICAgICAudmVyYm9zZShcIkludGVyY2VwdG9yIC0gc2V0dGluZyBhdXRob3JpemF0aW9uIGhlYWRlcnNcIik7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSByZXEuaGVhZGVycy5zZXQoXG4gICAgICAgICAgXCJBdXRob3JpemF0aW9uXCIsXG4gICAgICAgICAgYEJlYXJlciAke3Jlc3VsdC5hY2Nlc3NUb2tlbn1gXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgcmVxdWVzdENsb25lID0gcmVxLmNsb25lKHsgaGVhZGVycyB9KTtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3RDbG9uZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIGFjcXVpcmUgdG9rZW4gc2lsZW50bHkuIEludm9rZSBpbnRlcmFjdGlvbiBpZiBhY3F1aXJlVG9rZW5TaWxlbnQgcmVqZWN0ZWQgd2l0aCBlcnJvciBvciByZXNvbHZlZCB3aXRoIG51bGwgYWNjZXNzIHRva2VuXG4gICAqIEBwYXJhbSBhdXRoUmVxdWVzdCBSZXF1ZXN0XG4gICAqIEBwYXJhbSBzY29wZXMgQXJyYXkgb2Ygc2NvcGVzIGZvciB0aGUgcmVxdWVzdFxuICAgKiBAcGFyYW0gYWNjb3VudCBBY2NvdW50XG4gICAqIEByZXR1cm5zIEF1dGhlbnRpY2F0aW9uIHJlc3VsdFxuICAgKi9cbiAgcHJpdmF0ZSBhY3F1aXJlVG9rZW4oXG4gICAgYXV0aFJlcXVlc3Q6IE1zYWxJbnRlcmNlcHRvckF1dGhSZXF1ZXN0LFxuICAgIHNjb3Blczogc3RyaW5nW10sXG4gICAgYWNjb3VudDogQWNjb3VudEluZm9cbiAgKTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xuICAgIC8vIE5vdGU6IEZvciBNU0EgYWNjb3VudHMsIGluY2x1ZGUgb3BlbmlkIHNjb3BlIHdoZW4gY2FsbGluZyBhY3F1aXJlVG9rZW5TaWxlbnQgdG8gcmV0dXJuIGlkVG9rZW5cbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZVxuICAgICAgLmFjcXVpcmVUb2tlblNpbGVudCh7IC4uLmF1dGhSZXF1ZXN0LCBzY29wZXMsIGFjY291bnQgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0TG9nZ2VyKClcbiAgICAgICAgICAgIC5lcnJvcihcbiAgICAgICAgICAgICAgXCJJbnRlcmNlcHRvciAtIGFjcXVpcmVUb2tlblNpbGVudCByZWplY3RlZCB3aXRoIGVycm9yLiBJbnZva2luZyBpbnRlcmFjdGlvbiB0byByZXNvbHZlLlwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0aGlzLm1zYWxCcm9hZGNhc3RTZXJ2aWNlLmluUHJvZ3Jlc3MkLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKChzdGF0dXM6IEludGVyYWN0aW9uU3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzdGF0dXMgPT09IEludGVyYWN0aW9uU3RhdHVzLk5vbmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hY3F1aXJlVG9rZW5JbnRlcmFjdGl2ZWx5KGF1dGhSZXF1ZXN0LCBzY29wZXMpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubXNhbEJyb2FkY2FzdFNlcnZpY2UuaW5Qcm9ncmVzcyQucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAoc3RhdHVzOiBJbnRlcmFjdGlvblN0YXR1cykgPT5cbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzID09PSBJbnRlcmFjdGlvblN0YXR1cy5Ob25lXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFjcXVpcmVUb2tlbihhdXRoUmVxdWVzdCwgc2NvcGVzLCBhY2NvdW50KSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBBdXRoZW50aWNhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmICghcmVzdWx0LmFjY2Vzc1Rva2VuKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlXG4gICAgICAgICAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgICAgICAgICAuZXJyb3IoXG4gICAgICAgICAgICAgICAgXCJJbnRlcmNlcHRvciAtIGFjcXVpcmVUb2tlblNpbGVudCByZXNvbHZlZCB3aXRoIG51bGwgYWNjZXNzIHRva2VuLiBLbm93biBpc3N1ZSB3aXRoIEIyQyB0ZW5hbnRzLCBpbnZva2luZyBpbnRlcmFjdGlvbiB0byByZXNvbHZlLlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tc2FsQnJvYWRjYXN0U2VydmljZS5pblByb2dyZXNzJC5waXBlKFxuICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgKHN0YXR1czogSW50ZXJhY3Rpb25TdGF0dXMpID0+IHN0YXR1cyA9PT0gSW50ZXJhY3Rpb25TdGF0dXMuTm9uZVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmFjcXVpcmVUb2tlbkludGVyYWN0aXZlbHkoYXV0aFJlcXVlc3QsIHNjb3BlcylcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9mKHJlc3VsdCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZSBpbnRlcmFjdGlvbiBmb3IgdGhlIGdpdmVuIHNldCBvZiBzY29wZXNcbiAgICogQHBhcmFtIGF1dGhSZXF1ZXN0IFJlcXVlc3RcbiAgICogQHBhcmFtIHNjb3BlcyBBcnJheSBvZiBzY29wZXMgZm9yIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIFJlc3VsdCBmcm9tIHRoZSBpbnRlcmFjdGl2ZSByZXF1ZXN0XG4gICAqL1xuICBwcml2YXRlIGFjcXVpcmVUb2tlbkludGVyYWN0aXZlbHkoXG4gICAgYXV0aFJlcXVlc3Q6IE1zYWxJbnRlcmNlcHRvckF1dGhSZXF1ZXN0LFxuICAgIHNjb3Blczogc3RyaW5nW11cbiAgKTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xuICAgIGlmICh0aGlzLm1zYWxJbnRlcmNlcHRvckNvbmZpZy5pbnRlcmFjdGlvblR5cGUgPT09IEludGVyYWN0aW9uVHlwZS5Qb3B1cCkge1xuICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAuZ2V0TG9nZ2VyKClcbiAgICAgICAgLnZlcmJvc2UoXG4gICAgICAgICAgXCJJbnRlcmNlcHRvciAtIGVycm9yIGFjcXVpcmluZyB0b2tlbiBzaWxlbnRseSwgYWNxdWlyaW5nIGJ5IHBvcHVwXCJcbiAgICAgICAgKTtcbiAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmFjcXVpcmVUb2tlblBvcHVwKHsgLi4uYXV0aFJlcXVlc3QsIHNjb3BlcyB9KTtcbiAgICB9XG4gICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgLmdldExvZ2dlcigpXG4gICAgICAudmVyYm9zZShcbiAgICAgICAgXCJJbnRlcmNlcHRvciAtIGVycm9yIGFjcXVpcmluZyB0b2tlbiBzaWxlbnRseSwgYWNxdWlyaW5nIGJ5IHJlZGlyZWN0XCJcbiAgICAgICk7XG4gICAgY29uc3QgcmVkaXJlY3RTdGFydFBhZ2UgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmFjcXVpcmVUb2tlblJlZGlyZWN0KHtcbiAgICAgIC4uLmF1dGhSZXF1ZXN0LFxuICAgICAgc2NvcGVzLFxuICAgICAgcmVkaXJlY3RTdGFydFBhZ2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2tzIHVwIHRoZSBzY29wZXMgZm9yIHRoZSBnaXZlbiBlbmRwb2ludCBmcm9tIHRoZSBwcm90ZWN0ZWRSZXNvdXJjZU1hcFxuICAgKiBAcGFyYW0gZW5kcG9pbnQgVXJsIG9mIHRoZSByZXF1ZXN0XG4gICAqIEBwYXJhbSBodHRwTWV0aG9kIEh0dHAgbWV0aG9kIG9mIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHNjb3Blcywgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAgICpcbiAgICovXG4gIHByaXZhdGUgZ2V0U2NvcGVzRm9yRW5kcG9pbnQoXG4gICAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgICBodHRwTWV0aG9kOiBzdHJpbmdcbiAgKTogQXJyYXk8c3RyaW5nPiB8IG51bGwge1xuICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgLnZlcmJvc2UoXCJJbnRlcmNlcHRvciAtIGdldHRpbmcgc2NvcGVzIGZvciBlbmRwb2ludFwiKTtcblxuICAgIC8vIEVuc3VyZXMgZW5kcG9pbnRzIGFuZCBwcm90ZWN0ZWQgcmVzb3VyY2VzIGNvbXBhcmVkIGFyZSBub3JtYWxpemVkXG4gICAgY29uc3Qgbm9ybWFsaXplZEVuZHBvaW50ID0gdGhpcy5sb2NhdGlvbi5ub3JtYWxpemUoZW5kcG9pbnQpO1xuXG4gICAgY29uc3QgcHJvdGVjdGVkUmVzb3VyY2VzQXJyYXkgPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcucHJvdGVjdGVkUmVzb3VyY2VNYXAua2V5cygpXG4gICAgKTtcblxuICAgIGNvbnN0IG1hdGNoaW5nUHJvdGVjdGVkUmVzb3VyY2VzID0gdGhpcy5tYXRjaFJlc291cmNlc1RvRW5kcG9pbnQoXG4gICAgICBwcm90ZWN0ZWRSZXNvdXJjZXNBcnJheSxcbiAgICAgIG5vcm1hbGl6ZWRFbmRwb2ludFxuICAgICk7XG5cbiAgICBpZiAobWF0Y2hpbmdQcm90ZWN0ZWRSZXNvdXJjZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubWF0Y2hTY29wZXNUb0VuZHBvaW50KFxuICAgICAgICB0aGlzLm1zYWxJbnRlcmNlcHRvckNvbmZpZy5wcm90ZWN0ZWRSZXNvdXJjZU1hcCxcbiAgICAgICAgbWF0Y2hpbmdQcm90ZWN0ZWRSZXNvdXJjZXMsXG4gICAgICAgIGh0dHBNZXRob2RcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgcmVzb3VyY2UgZW5kcG9pbnRzIHRoYXQgbWF0Y2ggcmVxdWVzdCBlbmRwb2ludFxuICAgKiBAcGFyYW0gcHJvdGVjdGVkUmVzb3VyY2VzRW5kcG9pbnRzXG4gICAqIEBwYXJhbSBlbmRwb2ludFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBtYXRjaFJlc291cmNlc1RvRW5kcG9pbnQoXG4gICAgcHJvdGVjdGVkUmVzb3VyY2VzRW5kcG9pbnRzOiBzdHJpbmdbXSxcbiAgICBlbmRwb2ludDogc3RyaW5nXG4gICk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IG1hdGNoaW5nUmVzb3VyY2VzOiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgICBwcm90ZWN0ZWRSZXNvdXJjZXNFbmRwb2ludHMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0gdGhpcy5sb2NhdGlvbi5ub3JtYWxpemUoa2V5KTtcblxuICAgICAgLy8gR2V0IHVybCBjb21wb25lbnRzXG4gICAgICBjb25zdCBhYnNvbHV0ZUtleSA9IHRoaXMuZ2V0QWJzb2x1dGVVcmwobm9ybWFsaXplZEtleSk7XG4gICAgICBjb25zdCBrZXlDb21wb25lbnRzID0gbmV3IFVSTChhYnNvbHV0ZUtleSk7XG4gICAgICBjb25zdCBhYnNvbHV0ZUVuZHBvaW50ID0gdGhpcy5nZXRBYnNvbHV0ZVVybChlbmRwb2ludCk7XG4gICAgICBjb25zdCBlbmRwb2ludENvbXBvbmVudHMgPSBuZXcgVVJMKGFic29sdXRlRW5kcG9pbnQpO1xuXG4gICAgICBpZiAodGhpcy5jaGVja1VybENvbXBvbmVudHMoa2V5Q29tcG9uZW50cywgZW5kcG9pbnRDb21wb25lbnRzKSkge1xuICAgICAgICBtYXRjaGluZ1Jlc291cmNlcy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWF0Y2hpbmdSZXNvdXJjZXM7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgVVJMIHNlZ21lbnRzIGJldHdlZW4ga2V5IGFuZCBlbmRwb2ludFxuICAgKiBAcGFyYW0ga2V5XG4gICAqIEBwYXJhbSBlbmRwb2ludFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBjaGVja1VybENvbXBvbmVudHMoXG4gICAga2V5Q29tcG9uZW50czogVVJMLFxuICAgIGVuZHBvaW50Q29tcG9uZW50czogVVJMXG4gICk6IGJvb2xlYW4ge1xuICAgIC8vIFVSTCBwcm9wZXJ0aWVzIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTFxuICAgIGNvbnN0IHVybFByb3BlcnRpZXMgPSBbXCJwcm90b2NvbFwiLCBcImhvc3RcIiwgXCJwYXRobmFtZVwiLCBcInNlYXJjaFwiLCBcImhhc2hcIl07XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHVybFByb3BlcnRpZXMpIHtcbiAgICAgIGlmIChrZXlDb21wb25lbnRzW3Byb3BlcnR5XSkge1xuICAgICAgICBjb25zdCBkZWNvZGVkSW5wdXQgPSBkZWNvZGVVUklDb21wb25lbnQoa2V5Q29tcG9uZW50c1twcm9wZXJ0eV0pO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIVN0cmluZ1V0aWxzLm1hdGNoUGF0dGVybihkZWNvZGVkSW5wdXQsIGVuZHBvaW50Q29tcG9uZW50c1twcm9wZXJ0eV0pXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgcmVsYXRpdmUgdXJscyB0byBhYnNvbHV0ZSB1cmxzXG4gICAqIEBwYXJhbSB1cmxcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgZ2V0QWJzb2x1dGVVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgcmV0dXJuIGxpbmsuaHJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBzY29wZXMgZnJvbSBmaXJzdCBtYXRjaGluZyBlbmRwb2ludCB3aXRoIEhUVFAgbWV0aG9kIHRoYXQgbWF0Y2hlcyByZXF1ZXN0XG4gICAqIEBwYXJhbSBwcm90ZWN0ZWRSZXNvdXJjZU1hcCBQcm90ZWN0ZWQgcmVzb3VyY2UgbWFwXG4gICAqIEBwYXJhbSBlbmRwb2ludEFycmF5IEFycmF5IG9mIHJlc291cmNlcyB0aGF0IG1hdGNoIHJlcXVlc3QgZW5kcG9pbnRcbiAgICogQHBhcmFtIGh0dHBNZXRob2QgSHR0cCBtZXRob2Qgb2YgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgbWF0Y2hTY29wZXNUb0VuZHBvaW50KFxuICAgIHByb3RlY3RlZFJlc291cmNlTWFwOiBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICBBcnJheTxzdHJpbmcgfCBQcm90ZWN0ZWRSZXNvdXJjZVNjb3Blcz4gfCBudWxsXG4gICAgPixcbiAgICBlbmRwb2ludEFycmF5OiBzdHJpbmdbXSxcbiAgICBodHRwTWV0aG9kOiBzdHJpbmdcbiAgKTogQXJyYXk8c3RyaW5nPiB8IG51bGwge1xuICAgIGNvbnN0IGFsbE1hdGNoZWRTY29wZXMgPSBbXTtcblxuICAgIC8vIENoZWNrIGVhY2ggbWF0Y2hlZCBlbmRwb2ludCBmb3IgbWF0Y2hpbmcgSHR0cE1ldGhvZCBhbmQgc2NvcGVzXG4gICAgZW5kcG9pbnRBcnJheS5mb3JFYWNoKChtYXRjaGVkRW5kcG9pbnQpID0+IHtcbiAgICAgIGNvbnN0IHNjb3Blc0ZvckVuZHBvaW50ID0gW107XG4gICAgICBjb25zdCBtZXRob2RBbmRTY29wZXNBcnJheSA9IHByb3RlY3RlZFJlc291cmNlTWFwLmdldChtYXRjaGVkRW5kcG9pbnQpO1xuXG4gICAgICAvLyBSZXR1cm4gaWYgcmVzb3VyY2UgaXMgdW5wcm90ZWN0ZWRcbiAgICAgIGlmIChtZXRob2RBbmRTY29wZXNBcnJheSA9PT0gbnVsbCkge1xuICAgICAgICBhbGxNYXRjaGVkU2NvcGVzLnB1c2gobnVsbCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbWV0aG9kQW5kU2NvcGVzQXJyYXkuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgLy8gRW50cnkgaXMgZWl0aGVyIGFycmF5IG9mIHNjb3BlcyBvciBQcm90ZWN0ZWRSZXNvdXJjZVNjb3BlcyBvYmplY3RcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHNjb3Blc0ZvckVuZHBvaW50LnB1c2goZW50cnkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEVuc3VyZSBtZXRob2RzIGJlaW5nIGNvbXBhcmVkIGFyZSBub3JtYWxpemVkXG4gICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFJlcXVlc3RNZXRob2QgPSBodHRwTWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFJlc291cmNlTWV0aG9kID0gZW50cnkuaHR0cE1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIC8vIE1ldGhvZCBpbiBwcm90ZWN0ZWRSZXNvdXJjZU1hcCBtYXRjaGVzIHJlcXVlc3QgaHR0cCBtZXRob2RcbiAgICAgICAgICBpZiAobm9ybWFsaXplZFJlc291cmNlTWV0aG9kID09PSBub3JtYWxpemVkUmVxdWVzdE1ldGhvZCkge1xuICAgICAgICAgICAgLy8gVmFsaWRhdGUgaWYgc2NvcGVzIGNvbWVzIG51bGwgdG8gdW5wcm90ZWN0IHRoZSByZXNvdXJjZSBpbiBhIGNlcnRhaW4gaHR0cCBtZXRob2RcbiAgICAgICAgICAgIGlmIChlbnRyeS5zY29wZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgYWxsTWF0Y2hlZFNjb3Blcy5wdXNoKG51bGwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZW50cnkuc2NvcGVzLmZvckVhY2goKHNjb3BlKSA9PiB7XG4gICAgICAgICAgICAgICAgc2NvcGVzRm9yRW5kcG9pbnQucHVzaChzY29wZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIE9ubHkgYWRkIHRvIGFsbCBzY29wZXMgaWYgc2NvcGVzIGZvciBlbmRwb2ludCBhbmQgbWV0aG9kIGlzIGZvdW5kXG4gICAgICBpZiAoc2NvcGVzRm9yRW5kcG9pbnQubGVuZ3RoID4gMCkge1xuICAgICAgICBhbGxNYXRjaGVkU2NvcGVzLnB1c2goc2NvcGVzRm9yRW5kcG9pbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGFsbE1hdGNoZWRTY29wZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGFsbE1hdGNoZWRTY29wZXMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlXG4gICAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgICAgLndhcm5pbmcoXG4gICAgICAgICAgICBcIkludGVyY2VwdG9yIC0gTW9yZSB0aGFuIDEgbWF0Y2hpbmcgc2NvcGVzIGZvciBlbmRwb2ludCBmb3VuZC5cIlxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyBSZXR1cm5zIHNjb3BlcyBmb3IgZmlyc3QgbWF0Y2hpbmcgZW5kcG9pbnRcbiAgICAgIHJldHVybiBhbGxNYXRjaGVkU2NvcGVzWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
@@ -1,46 +0,0 @@
1
- /*
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { NgModule } from "@angular/core";
6
- import { CommonModule } from "@angular/common";
7
- import { MsalBroadcastService } from "./msal.broadcast.service";
8
- import { MsalGuard } from "./msal.guard";
9
- import { MsalRedirectComponent } from "./msal.redirect.component";
10
- import { MsalService } from "./msal.service";
11
- import { MSAL_INSTANCE, MSAL_GUARD_CONFIG, MSAL_INTERCEPTOR_CONFIG, } from "./constants";
12
- import * as i0 from "@angular/core";
13
- export class MsalModule {
14
- static forRoot(msalInstance, guardConfig, interceptorConfig) {
15
- return {
16
- ngModule: MsalModule,
17
- providers: [
18
- {
19
- provide: MSAL_INSTANCE,
20
- useValue: msalInstance,
21
- },
22
- {
23
- provide: MSAL_GUARD_CONFIG,
24
- useValue: guardConfig,
25
- },
26
- {
27
- provide: MSAL_INTERCEPTOR_CONFIG,
28
- useValue: interceptorConfig,
29
- },
30
- MsalService,
31
- ],
32
- };
33
- }
34
- }
35
- MsalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
36
- MsalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: MsalModule, declarations: [MsalRedirectComponent], imports: [CommonModule] });
37
- MsalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalModule, providers: [MsalGuard, MsalBroadcastService], imports: [CommonModule] });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalModule, decorators: [{
39
- type: NgModule,
40
- args: [{
41
- declarations: [MsalRedirectComponent],
42
- imports: [CommonModule],
43
- providers: [MsalGuard, MsalBroadcastService],
44
- }]
45
- }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNhbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHVCQUF1QixHQUN4QixNQUFNLGFBQWEsQ0FBQzs7QUFPckIsTUFBTSxPQUFPLFVBQVU7SUFDckIsTUFBTSxDQUFDLE9BQU8sQ0FDWixZQUFzQyxFQUN0QyxXQUFtQyxFQUNuQyxpQkFBK0M7UUFFL0MsT0FBTztZQUNMLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsUUFBUSxFQUFFLFlBQVk7aUJBQ3ZCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxXQUFXO2lCQUN0QjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsdUJBQXVCO29CQUNoQyxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QjtnQkFDRCxXQUFXO2FBQ1o7U0FDRixDQUFDO0lBQ0osQ0FBQzs7d0dBeEJVLFVBQVU7eUdBQVYsVUFBVSxpQkFKTixxQkFBcUIsYUFDMUIsWUFBWTt5R0FHWCxVQUFVLGFBRlYsQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsWUFEbEMsWUFBWTs0RkFHWCxVQUFVO2tCQUx0QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQztpQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSVB1YmxpY0NsaWVudEFwcGxpY2F0aW9uIH0gZnJvbSBcIkBhenVyZS9tc2FsLWJyb3dzZXJcIjtcbmltcG9ydCB7IE1zYWxCcm9hZGNhc3RTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5icm9hZGNhc3Quc2VydmljZVwiO1xuaW1wb3J0IHsgTXNhbEd1YXJkIH0gZnJvbSBcIi4vbXNhbC5ndWFyZFwiO1xuaW1wb3J0IHsgTXNhbEd1YXJkQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL21zYWwuZ3VhcmQuY29uZmlnXCI7XG5pbXBvcnQgeyBNc2FsSW50ZXJjZXB0b3JDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vbXNhbC5pbnRlcmNlcHRvci5jb25maWdcIjtcbmltcG9ydCB7IE1zYWxSZWRpcmVjdENvbXBvbmVudCB9IGZyb20gXCIuL21zYWwucmVkaXJlY3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgTVNBTF9JTlNUQU5DRSxcbiAgTVNBTF9HVUFSRF9DT05GSUcsXG4gIE1TQUxfSU5URVJDRVBUT1JfQ09ORklHLFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTXNhbFJlZGlyZWN0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW01zYWxHdWFyZCwgTXNhbEJyb2FkY2FzdFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBNc2FsTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoXG4gICAgbXNhbEluc3RhbmNlOiBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sXG4gICAgZ3VhcmRDb25maWc6IE1zYWxHdWFyZENvbmZpZ3VyYXRpb24sXG4gICAgaW50ZXJjZXB0b3JDb25maWc6IE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25cbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxNc2FsTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBNc2FsTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBNU0FMX0lOU1RBTkNFLFxuICAgICAgICAgIHVzZVZhbHVlOiBtc2FsSW5zdGFuY2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBNU0FMX0dVQVJEX0NPTkZJRyxcbiAgICAgICAgICB1c2VWYWx1ZTogZ3VhcmRDb25maWcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBNU0FMX0lOVEVSQ0VQVE9SX0NPTkZJRyxcbiAgICAgICAgICB1c2VWYWx1ZTogaW50ZXJjZXB0b3JDb25maWcsXG4gICAgICAgIH0sXG4gICAgICAgIE1zYWxTZXJ2aWNlLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,53 +0,0 @@
1
- /*
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { Injectable } from "@angular/core";
6
- import { NavigationClient, UrlString, } from "@azure/msal-browser";
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./msal.service";
9
- import * as i2 from "@angular/router";
10
- import * as i3 from "@angular/common";
11
- /**
12
- * Custom navigation used for Angular client-side navigation.
13
- * See performance doc for details:
14
- * https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular/docs/performance.md
15
- */
16
- export class MsalCustomNavigationClient extends NavigationClient {
17
- constructor(authService, router, location) {
18
- super();
19
- this.authService = authService;
20
- this.router = router;
21
- this.location = location;
22
- }
23
- async navigateInternal(url, options) {
24
- this.authService.getLogger().trace("MsalCustomNavigationClient called");
25
- this.authService
26
- .getLogger()
27
- .verbose("MsalCustomNavigationClient - navigating");
28
- this.authService
29
- .getLogger()
30
- .verbosePii(`MsalCustomNavigationClient - navigating to url: ${url}`);
31
- // Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled
32
- if (options.noHistory) {
33
- return super.navigateInternal(url, options);
34
- }
35
- else {
36
- // Normalizing newUrl if no query string
37
- const urlComponents = new UrlString(url).getUrlComponents();
38
- const newUrl = urlComponents.QueryString
39
- ? `${urlComponents.AbsolutePath}?${urlComponents.QueryString}`
40
- : this.location.normalize(urlComponents.AbsolutePath);
41
- await this.router.navigateByUrl(newUrl, {
42
- replaceUrl: options.noHistory,
43
- });
44
- }
45
- return Promise.resolve(options.noHistory);
46
- }
47
- }
48
- MsalCustomNavigationClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalCustomNavigationClient, deps: [{ token: i1.MsalService }, { token: i2.Router }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Injectable });
49
- MsalCustomNavigationClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalCustomNavigationClient });
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalCustomNavigationClient, decorators: [{
51
- type: Injectable
52
- }], ctorParameters: function () { return [{ type: i1.MsalService }, { type: i2.Router }, { type: i3.Location }]; } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5uYXZpZ2F0aW9uLmNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tc2FsLm5hdmlnYXRpb24uY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixTQUFTLEdBQ1YsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFHN0I7Ozs7R0FJRztBQUVILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFDOUQsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsUUFBa0I7UUFFMUIsS0FBSyxFQUFFLENBQUM7UUFKQSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUc1QixDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUNwQixHQUFXLEVBQ1gsT0FBMEI7UUFFMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsV0FBVzthQUNiLFNBQVMsRUFBRTthQUNYLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXO2FBQ2IsU0FBUyxFQUFFO2FBQ1gsVUFBVSxDQUFDLG1EQUFtRCxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLG9HQUFvRztRQUNwRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDckIsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzdDO2FBQU07WUFDTCx3Q0FBd0M7WUFDeEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1RCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsV0FBVztnQkFDdEMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsV0FBVyxFQUFFO2dCQUM5RCxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hELE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO2dCQUN0QyxVQUFVLEVBQUUsT0FBTyxDQUFDLFNBQVM7YUFDOUIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7O3dIQXBDVSwwQkFBMEI7NEhBQTFCLDBCQUEwQjs0RkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1xuICBOYXZpZ2F0aW9uQ2xpZW50LFxuICBOYXZpZ2F0aW9uT3B0aW9ucyxcbiAgVXJsU3RyaW5nLFxufSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcblxuLyoqXG4gKiBDdXN0b20gbmF2aWdhdGlvbiB1c2VkIGZvciBBbmd1bGFyIGNsaWVudC1zaWRlIG5hdmlnYXRpb24uXG4gKiBTZWUgcGVyZm9ybWFuY2UgZG9jIGZvciBkZXRhaWxzOlxuICogaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlQUQvbWljcm9zb2Z0LWF1dGhlbnRpY2F0aW9uLWxpYnJhcnktZm9yLWpzL3RyZWUvZGV2L2xpYi9tc2FsLWFuZ3VsYXIvZG9jcy9wZXJmb3JtYW5jZS5tZFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTXNhbEN1c3RvbU5hdmlnYXRpb25DbGllbnQgZXh0ZW5kcyBOYXZpZ2F0aW9uQ2xpZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogTXNhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVJbnRlcm5hbChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiBOYXZpZ2F0aW9uT3B0aW9uc1xuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnRyYWNlKFwiTXNhbEN1c3RvbU5hdmlnYXRpb25DbGllbnQgY2FsbGVkXCIpO1xuXG4gICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgLmdldExvZ2dlcigpXG4gICAgICAudmVyYm9zZShcIk1zYWxDdXN0b21OYXZpZ2F0aW9uQ2xpZW50IC0gbmF2aWdhdGluZ1wiKTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlXG4gICAgICAuZ2V0TG9nZ2VyKClcbiAgICAgIC52ZXJib3NlUGlpKGBNc2FsQ3VzdG9tTmF2aWdhdGlvbkNsaWVudCAtIG5hdmlnYXRpbmcgdG8gdXJsOiAke3VybH1gKTtcblxuICAgIC8vIFByZXZlbnQgaGFzaCBjbGVhcmluZyBmcm9tIGNhdXNpbmcgYW4gaXNzdWUgd2l0aCBDbGllbnQtc2lkZSBuYXZpZ2F0aW9uIGFmdGVyIHJlZGlyZWN0IGlzIGhhbmRsZWRcbiAgICBpZiAob3B0aW9ucy5ub0hpc3RvcnkpIHtcbiAgICAgIHJldHVybiBzdXBlci5uYXZpZ2F0ZUludGVybmFsKHVybCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vcm1hbGl6aW5nIG5ld1VybCBpZiBubyBxdWVyeSBzdHJpbmdcbiAgICAgIGNvbnN0IHVybENvbXBvbmVudHMgPSBuZXcgVXJsU3RyaW5nKHVybCkuZ2V0VXJsQ29tcG9uZW50cygpO1xuICAgICAgY29uc3QgbmV3VXJsID0gdXJsQ29tcG9uZW50cy5RdWVyeVN0cmluZ1xuICAgICAgICA/IGAke3VybENvbXBvbmVudHMuQWJzb2x1dGVQYXRofT8ke3VybENvbXBvbmVudHMuUXVlcnlTdHJpbmd9YFxuICAgICAgICA6IHRoaXMubG9jYXRpb24ubm9ybWFsaXplKHVybENvbXBvbmVudHMuQWJzb2x1dGVQYXRoKTtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobmV3VXJsLCB7XG4gICAgICAgIHJlcGxhY2VVcmw6IG9wdGlvbnMubm9IaXN0b3J5LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUob3B0aW9ucy5ub0hpc3RvcnkpO1xuICB9XG59XG4iXX0=
@@ -1,31 +0,0 @@
1
- /*
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- /**
6
- * This is a dedicated redirect component to be added to Angular apps to
7
- * handle redirects when using @azure/msal-angular.
8
- * Import this component to use redirects in your app.
9
- */
10
- import { Component } from "@angular/core";
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "./msal.service";
13
- export class MsalRedirectComponent {
14
- constructor(authService) {
15
- this.authService = authService;
16
- }
17
- ngOnInit() {
18
- this.authService.getLogger().verbose("MsalRedirectComponent activated");
19
- this.authService.handleRedirectObservable().subscribe();
20
- }
21
- }
22
- MsalRedirectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalRedirectComponent, deps: [{ token: i1.MsalService }], target: i0.ɵɵFactoryTarget.Component });
23
- MsalRedirectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MsalRedirectComponent, selector: "app-redirect", ngImport: i0, template: "", isInline: true });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalRedirectComponent, decorators: [{
25
- type: Component,
26
- args: [{
27
- selector: "app-redirect",
28
- template: "",
29
- }]
30
- }], ctorParameters: function () { return [{ type: i1.MsalService }]; } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5yZWRpcmVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNhbC5yZWRpcmVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUg7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQU9sRCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUVoRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUQsQ0FBQzs7bUhBTlUscUJBQXFCO3VHQUFyQixxQkFBcUIsb0RBRnRCLEVBQUU7NEZBRUQscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYSBkZWRpY2F0ZWQgcmVkaXJlY3QgY29tcG9uZW50IHRvIGJlIGFkZGVkIHRvIEFuZ3VsYXIgYXBwcyB0b1xuICogaGFuZGxlIHJlZGlyZWN0cyB3aGVuIHVzaW5nIEBhenVyZS9tc2FsLWFuZ3VsYXIuXG4gKiBJbXBvcnQgdGhpcyBjb21wb25lbnQgdG8gdXNlIHJlZGlyZWN0cyBpbiB5b3VyIGFwcC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLXJlZGlyZWN0XCIsXG4gIHRlbXBsYXRlOiBcIlwiLFxufSlcbmV4cG9ydCBjbGFzcyBNc2FsUmVkaXJlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBNc2FsU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJNc2FsUmVkaXJlY3RDb21wb25lbnQgYWN0aXZhdGVkXCIpO1xuICAgIHRoaXMuYXV0aFNlcnZpY2UuaGFuZGxlUmVkaXJlY3RPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,88 +0,0 @@
1
- /*
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { Inject, Injectable } from "@angular/core";
6
- import { WrapperSKU, } from "@azure/msal-browser";
7
- import { from } from "rxjs";
8
- import { name, version } from "./packageMetadata";
9
- import { MSAL_INSTANCE } from "./constants";
10
- import { MsalBroadcastService } from "./msal.broadcast.service";
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/common";
13
- export class MsalService {
14
- constructor(instance, location, injector) {
15
- this.instance = instance;
16
- this.location = location;
17
- this.injector = injector;
18
- const hash = this.location.path(true).split("#").pop();
19
- if (hash) {
20
- this.redirectHash = `#${hash}`;
21
- }
22
- this.instance.initializeWrapperLibrary(WrapperSKU.Angular, version);
23
- }
24
- initialize() {
25
- return from(this.instance.initialize());
26
- }
27
- acquireTokenPopup(request) {
28
- return from(this.instance.acquireTokenPopup(request));
29
- }
30
- acquireTokenRedirect(request) {
31
- return from(this.instance.acquireTokenRedirect(request));
32
- }
33
- acquireTokenSilent(silentRequest) {
34
- return from(this.instance.acquireTokenSilent(silentRequest));
35
- }
36
- handleRedirectObservable(hash) {
37
- return from(this.instance
38
- .initialize()
39
- .then(() => this.instance.handleRedirectPromise(hash || this.redirectHash))
40
- .finally(() => {
41
- // update inProgress state to none
42
- this.injector.get(MsalBroadcastService).resetInProgressEvent();
43
- }));
44
- }
45
- loginPopup(request) {
46
- return from(this.instance.loginPopup(request));
47
- }
48
- loginRedirect(request) {
49
- return from(this.instance.loginRedirect(request));
50
- }
51
- // @deprecated: Use logoutRedirect or logoutPopup
52
- logout(logoutRequest) {
53
- return from(this.instance.logout(logoutRequest));
54
- }
55
- logoutRedirect(logoutRequest) {
56
- return from(this.instance.logoutRedirect(logoutRequest));
57
- }
58
- logoutPopup(logoutRequest) {
59
- return from(this.instance.logoutPopup(logoutRequest));
60
- }
61
- ssoSilent(request) {
62
- return from(this.instance.ssoSilent(request));
63
- }
64
- /**
65
- * Gets logger for msal-angular.
66
- * If no logger set, returns logger instance created with same options as msal-browser
67
- */
68
- getLogger() {
69
- if (!this.logger) {
70
- this.logger = this.instance.getLogger().clone(name, version);
71
- }
72
- return this.logger;
73
- }
74
- // Create a logger instance for msal-angular with the same options as msal-browser
75
- setLogger(logger) {
76
- this.logger = logger.clone(name, version);
77
- this.instance.setLogger(logger);
78
- }
79
- }
80
- MsalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalService, deps: [{ token: MSAL_INSTANCE }, { token: i1.Location }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
81
- MsalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalService });
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalService, decorators: [{
83
- type: Injectable
84
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
85
- type: Inject,
86
- args: [MSAL_INSTANCE]
87
- }] }, { type: i1.Location }, { type: i0.Injector }]; } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21zYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBVUwsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUdoRSxNQUFNLE9BQU8sV0FBVztJQUl0QixZQUNnQyxRQUFrQyxFQUN4RCxRQUFrQixFQUNsQixRQUFrQjtRQUZJLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ3hELGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUUxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkQsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7U0FDaEM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELGlCQUFpQixDQUFDLE9BQXFCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsT0FBd0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxrQkFBa0IsQ0FDaEIsYUFBNEI7UUFFNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxJQUFhO1FBQ3BDLE9BQU8sSUFBSSxDQUNULElBQUksQ0FBQyxRQUFRO2FBQ1YsVUFBVSxFQUFFO2FBQ1osSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUNULElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FDL0Q7YUFDQSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1osa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUNELFVBQVUsQ0FBQyxPQUFzQjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxhQUFhLENBQUMsT0FBeUI7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsaURBQWlEO0lBQ2pELE1BQU0sQ0FBQyxhQUFpQztRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxjQUFjLENBQUMsYUFBaUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0QsV0FBVyxDQUFDLGFBQXNDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELFNBQVMsQ0FBQyxPQUF5QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELGtGQUFrRjtJQUNsRixTQUFTLENBQUMsTUFBYztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O3lHQTVFVSxXQUFXLGtCQUtaLGFBQWE7NkdBTFosV0FBVzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFNTixNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIElQdWJsaWNDbGllbnRBcHBsaWNhdGlvbixcbiAgRW5kU2Vzc2lvblJlcXVlc3QsXG4gIEVuZFNlc3Npb25Qb3B1cFJlcXVlc3QsXG4gIEF1dGhlbnRpY2F0aW9uUmVzdWx0LFxuICBSZWRpcmVjdFJlcXVlc3QsXG4gIFNpbGVudFJlcXVlc3QsXG4gIFBvcHVwUmVxdWVzdCxcbiAgU3NvU2lsZW50UmVxdWVzdCxcbiAgTG9nZ2VyLFxuICBXcmFwcGVyU0tVLFxufSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBJTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9JTXNhbFNlcnZpY2VcIjtcbmltcG9ydCB7IG5hbWUsIHZlcnNpb24gfSBmcm9tIFwiLi9wYWNrYWdlTWV0YWRhdGFcIjtcbmltcG9ydCB7IE1TQUxfSU5TVEFOQ0UgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE1zYWxCcm9hZGNhc3RTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5icm9hZGNhc3Quc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTXNhbFNlcnZpY2UgaW1wbGVtZW50cyBJTXNhbFNlcnZpY2Uge1xuICBwcml2YXRlIHJlZGlyZWN0SGFzaDogc3RyaW5nO1xuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTVNBTF9JTlNUQU5DRSkgcHVibGljIGluc3RhbmNlOiBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubG9jYXRpb24ucGF0aCh0cnVlKS5zcGxpdChcIiNcIikucG9wKCk7XG4gICAgaWYgKGhhc2gpIHtcbiAgICAgIHRoaXMucmVkaXJlY3RIYXNoID0gYCMke2hhc2h9YDtcbiAgICB9XG4gICAgdGhpcy5pbnN0YW5jZS5pbml0aWFsaXplV3JhcHBlckxpYnJhcnkoV3JhcHBlclNLVS5Bbmd1bGFyLCB2ZXJzaW9uKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5pbml0aWFsaXplKCkpO1xuICB9XG4gIGFjcXVpcmVUb2tlblBvcHVwKHJlcXVlc3Q6IFBvcHVwUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmFjcXVpcmVUb2tlblBvcHVwKHJlcXVlc3QpKTtcbiAgfVxuICBhY3F1aXJlVG9rZW5SZWRpcmVjdChyZXF1ZXN0OiBSZWRpcmVjdFJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmFjcXVpcmVUb2tlblJlZGlyZWN0KHJlcXVlc3QpKTtcbiAgfVxuICBhY3F1aXJlVG9rZW5TaWxlbnQoXG4gICAgc2lsZW50UmVxdWVzdDogU2lsZW50UmVxdWVzdFxuICApOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5hY3F1aXJlVG9rZW5TaWxlbnQoc2lsZW50UmVxdWVzdCkpO1xuICB9XG4gIGhhbmRsZVJlZGlyZWN0T2JzZXJ2YWJsZShoYXNoPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5pbnN0YW5jZVxuICAgICAgICAuaW5pdGlhbGl6ZSgpXG4gICAgICAgIC50aGVuKCgpID0+XG4gICAgICAgICAgdGhpcy5pbnN0YW5jZS5oYW5kbGVSZWRpcmVjdFByb21pc2UoaGFzaCB8fCB0aGlzLnJlZGlyZWN0SGFzaClcbiAgICAgICAgKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgLy8gdXBkYXRlIGluUHJvZ3Jlc3Mgc3RhdGUgdG8gbm9uZVxuICAgICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KE1zYWxCcm9hZGNhc3RTZXJ2aWNlKS5yZXNldEluUHJvZ3Jlc3NFdmVudCgpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cbiAgbG9naW5Qb3B1cChyZXF1ZXN0PzogUG9wdXBSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2UubG9naW5Qb3B1cChyZXF1ZXN0KSk7XG4gIH1cbiAgbG9naW5SZWRpcmVjdChyZXF1ZXN0PzogUmVkaXJlY3RSZXF1ZXN0KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5sb2dpblJlZGlyZWN0KHJlcXVlc3QpKTtcbiAgfVxuICAvLyBAZGVwcmVjYXRlZDogVXNlIGxvZ291dFJlZGlyZWN0IG9yIGxvZ291dFBvcHVwXG4gIGxvZ291dChsb2dvdXRSZXF1ZXN0PzogRW5kU2Vzc2lvblJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ291dChsb2dvdXRSZXF1ZXN0KSk7XG4gIH1cbiAgbG9nb3V0UmVkaXJlY3QobG9nb3V0UmVxdWVzdD86IEVuZFNlc3Npb25SZXF1ZXN0KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5sb2dvdXRSZWRpcmVjdChsb2dvdXRSZXF1ZXN0KSk7XG4gIH1cbiAgbG9nb3V0UG9wdXAobG9nb3V0UmVxdWVzdD86IEVuZFNlc3Npb25Qb3B1cFJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ291dFBvcHVwKGxvZ291dFJlcXVlc3QpKTtcbiAgfVxuICBzc29TaWxlbnQocmVxdWVzdDogU3NvU2lsZW50UmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLnNzb1NpbGVudChyZXF1ZXN0KSk7XG4gIH1cbiAgLyoqXG4gICAqIEdldHMgbG9nZ2VyIGZvciBtc2FsLWFuZ3VsYXIuXG4gICAqIElmIG5vIGxvZ2dlciBzZXQsIHJldHVybnMgbG9nZ2VyIGluc3RhbmNlIGNyZWF0ZWQgd2l0aCBzYW1lIG9wdGlvbnMgYXMgbXNhbC1icm93c2VyXG4gICAqL1xuICBnZXRMb2dnZXIoKTogTG9nZ2VyIHtcbiAgICBpZiAoIXRoaXMubG9nZ2VyKSB7XG4gICAgICB0aGlzLmxvZ2dlciA9IHRoaXMuaW5zdGFuY2UuZ2V0TG9nZ2VyKCkuY2xvbmUobmFtZSwgdmVyc2lvbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmxvZ2dlcjtcbiAgfVxuICAvLyBDcmVhdGUgYSBsb2dnZXIgaW5zdGFuY2UgZm9yIG1zYWwtYW5ndWxhciB3aXRoIHRoZSBzYW1lIG9wdGlvbnMgYXMgbXNhbC1icm93c2VyXG4gIHNldExvZ2dlcihsb2dnZXI6IExvZ2dlcik6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyLmNsb25lKG5hbWUsIHZlcnNpb24pO1xuICAgIHRoaXMuaW5zdGFuY2Uuc2V0TG9nZ2VyKGxvZ2dlcik7XG4gIH1cbn1cbiJdfQ==
@@ -1,4 +0,0 @@
1
- /* eslint-disable header/header */
2
- export const name = "@azure/msal-angular";
3
- export const version = "4.0.20";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZU1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhY2thZ2VNZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLHFCQUFxQixDQUFDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBoZWFkZXIvaGVhZGVyICovXG5leHBvcnQgY29uc3QgbmFtZSA9IFwiQGF6dXJlL21zYWwtYW5ndWxhclwiO1xuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSBcIjQuMC4yMFwiO1xuIl19
@@ -1,18 +0,0 @@
1
- /*
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- /**
6
- * @packageDocumentation
7
- * @module @azure/msal-angular
8
- */
9
- export { MsalService } from "./msal.service";
10
- export { MsalGuard } from "./msal.guard";
11
- export { MsalInterceptor } from "./msal.interceptor";
12
- export { MSAL_INSTANCE, MSAL_GUARD_CONFIG, MSAL_INTERCEPTOR_CONFIG, MSAL_BROADCAST_CONFIG, } from "./constants";
13
- export { MsalBroadcastService } from "./msal.broadcast.service";
14
- export { MsalModule } from "./msal.module";
15
- export { MsalRedirectComponent } from "./msal.redirect.component";
16
- export { MsalCustomNavigationClient } from "./msal.navigation.client";
17
- export { version } from "./packageMetadata";
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVIOzs7R0FHRztBQUVILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBS3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU1yRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIEBhenVyZS9tc2FsLWFuZ3VsYXJcbiAqL1xuXG5leHBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xuZXhwb3J0IHsgSU1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vSU1zYWxTZXJ2aWNlXCI7XG5leHBvcnQgeyBNc2FsR3VhcmQgfSBmcm9tIFwiLi9tc2FsLmd1YXJkXCI7XG5leHBvcnQge1xuICBNc2FsR3VhcmRDb25maWd1cmF0aW9uLFxuICBNc2FsR3VhcmRBdXRoUmVxdWVzdCxcbn0gZnJvbSBcIi4vbXNhbC5ndWFyZC5jb25maWdcIjtcbmV4cG9ydCB7IE1zYWxJbnRlcmNlcHRvciB9IGZyb20gXCIuL21zYWwuaW50ZXJjZXB0b3JcIjtcbmV4cG9ydCB7XG4gIE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb24sXG4gIE1zYWxJbnRlcmNlcHRvckF1dGhSZXF1ZXN0LFxuICBQcm90ZWN0ZWRSZXNvdXJjZVNjb3Blcyxcbn0gZnJvbSBcIi4vbXNhbC5pbnRlcmNlcHRvci5jb25maWdcIjtcbmV4cG9ydCB7XG4gIE1TQUxfSU5TVEFOQ0UsXG4gIE1TQUxfR1VBUkRfQ09ORklHLFxuICBNU0FMX0lOVEVSQ0VQVE9SX0NPTkZJRyxcbiAgTVNBTF9CUk9BRENBU1RfQ09ORklHLFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCB7IE1zYWxCcm9hZGNhc3RTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5icm9hZGNhc3Quc2VydmljZVwiO1xuZXhwb3J0IHsgTXNhbEJyb2FkY2FzdENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9tc2FsLmJyb2FkY2FzdC5jb25maWdcIjtcbmV4cG9ydCB7IE1zYWxNb2R1bGUgfSBmcm9tIFwiLi9tc2FsLm1vZHVsZVwiO1xuZXhwb3J0IHsgTXNhbFJlZGlyZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4vbXNhbC5yZWRpcmVjdC5jb21wb25lbnRcIjtcbmV4cG9ydCB7IE1zYWxDdXN0b21OYXZpZ2F0aW9uQ2xpZW50IH0gZnJvbSBcIi4vbXNhbC5uYXZpZ2F0aW9uLmNsaWVudFwiO1xuZXhwb3J0IHsgdmVyc2lvbiB9IGZyb20gXCIuL3BhY2thZ2VNZXRhZGF0YVwiO1xuIl19