@azure/msal-angular 4.0.13 → 4.0.14

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 (89) hide show
  1. package/IMsalService.d.ts +17 -0
  2. package/README.md +1 -1
  3. package/constants.d.ts +5 -0
  4. package/esm2020/IMsalService.mjs +6 -0
  5. package/esm2020/azure-msal-angular.mjs +5 -0
  6. package/esm2020/constants.mjs +10 -0
  7. package/esm2020/msal.broadcast.config.mjs +6 -0
  8. package/esm2020/msal.broadcast.service.mjs +66 -0
  9. package/esm2020/msal.guard.config.mjs +6 -0
  10. package/esm2020/msal.guard.mjs +218 -0
  11. package/esm2020/msal.interceptor.config.mjs +6 -0
  12. package/esm2020/msal.interceptor.mjs +270 -0
  13. package/esm2020/msal.module.mjs +46 -0
  14. package/esm2020/msal.navigation.client.mjs +53 -0
  15. package/esm2020/msal.redirect.component.mjs +31 -0
  16. package/esm2020/msal.service.mjs +88 -0
  17. package/esm2020/packageMetadata.mjs +4 -0
  18. package/esm2020/public-api.mjs +18 -0
  19. package/fesm2015/azure-msal-angular.mjs +762 -0
  20. package/fesm2015/azure-msal-angular.mjs.map +1 -0
  21. package/fesm2020/azure-msal-angular.mjs +758 -0
  22. package/fesm2020/azure-msal-angular.mjs.map +1 -0
  23. package/index.d.ts +5 -0
  24. package/msal.broadcast.config.d.ts +3 -0
  25. package/msal.broadcast.service.d.ts +19 -0
  26. package/msal.guard.config.d.ts +9 -0
  27. package/msal.guard.d.ts +43 -0
  28. package/msal.interceptor.config.d.ts +13 -0
  29. package/msal.interceptor.d.ts +70 -0
  30. package/msal.module.d.ts +13 -0
  31. package/msal.navigation.client.d.ts +19 -0
  32. package/msal.redirect.component.d.ts +15 -0
  33. package/msal.service.d.ts +33 -0
  34. package/package.json +26 -56
  35. package/packageMetadata.d.ts +2 -0
  36. package/{src/public-api.ts → public-api.d.ts} +17 -35
  37. package/.beachballrc +0 -3
  38. package/.editorconfig +0 -16
  39. package/.eslintrc.json +0 -3
  40. package/CHANGELOG.json +0 -2315
  41. package/CHANGELOG.md +0 -869
  42. package/FAQ.md +0 -182
  43. package/angular.json +0 -51
  44. package/docs/angular-universal.md +0 -64
  45. package/docs/configuration.md +0 -609
  46. package/docs/errors.md +0 -89
  47. package/docs/events.md +0 -262
  48. package/docs/initialization.md +0 -206
  49. package/docs/known-issues.md +0 -19
  50. package/docs/logging.md +0 -47
  51. package/docs/msal-guard.md +0 -208
  52. package/docs/msal-interceptor.md +0 -160
  53. package/docs/multi-tenant.md +0 -90
  54. package/docs/performance.md +0 -50
  55. package/docs/public-apis.md +0 -29
  56. package/docs/redirects.md +0 -257
  57. package/docs/security.md +0 -4
  58. package/docs/ssosilent.md +0 -84
  59. package/docs/v0-v1-upgrade-guide.md +0 -61
  60. package/docs/v1-v2-upgrade-guide.md +0 -70
  61. package/docs/v2-v3-upgrade-guide.md +0 -52
  62. package/docs/v3-v4-upgrade-guide.md +0 -36
  63. package/karma.conf.js +0 -44
  64. package/ng-package.json +0 -7
  65. package/src/IMsalService.ts +0 -34
  66. package/src/constants.ts +0 -20
  67. package/src/msal.broadcast.config.ts +0 -8
  68. package/src/msal.broadcast.service.spec.ts +0 -471
  69. package/src/msal.broadcast.service.ts +0 -84
  70. package/src/msal.guard.config.ts +0 -27
  71. package/src/msal.guard.spec.ts +0 -525
  72. package/src/msal.guard.ts +0 -290
  73. package/src/msal.interceptor.config.ts +0 -39
  74. package/src/msal.interceptor.spec.ts +0 -1168
  75. package/src/msal.interceptor.ts +0 -388
  76. package/src/msal.module.ts +0 -51
  77. package/src/msal.navigation.client.spec.ts +0 -96
  78. package/src/msal.navigation.client.ts +0 -59
  79. package/src/msal.redirect.component.spec.ts +0 -64
  80. package/src/msal.redirect.component.ts +0 -26
  81. package/src/msal.service.spec.ts +0 -468
  82. package/src/msal.service.ts +0 -104
  83. package/src/packageMetadata.ts +0 -3
  84. package/src/test.ts +0 -19
  85. package/tsconfig.json +0 -25
  86. package/tsconfig.lib.json +0 -27
  87. package/tsconfig.lib.prod.json +0 -10
  88. package/tsconfig.spec.json +0 -17
  89. package/typedoc.json +0 -10
@@ -0,0 +1,17 @@
1
+ import { EndSessionRequest, AuthenticationResult, PopupRequest, RedirectRequest, SilentRequest, Logger, SsoSilentRequest } from "@azure/msal-browser";
2
+ import { Observable } from "rxjs";
3
+ export interface IMsalService {
4
+ initialize(): Observable<void>;
5
+ acquireTokenPopup(request: PopupRequest): Observable<AuthenticationResult>;
6
+ acquireTokenRedirect(request: RedirectRequest): Observable<void>;
7
+ acquireTokenSilent(silentRequest: SilentRequest): Observable<AuthenticationResult>;
8
+ handleRedirectObservable(): Observable<AuthenticationResult | null>;
9
+ loginPopup(request?: PopupRequest): Observable<AuthenticationResult>;
10
+ loginRedirect(request?: RedirectRequest): Observable<void>;
11
+ logout(logoutRequest?: EndSessionRequest): Observable<void>;
12
+ logoutRedirect(logoutRequest?: EndSessionRequest): Observable<void>;
13
+ logoutPopup(logoutRequest?: EndSessionRequest): Observable<void>;
14
+ ssoSilent(request: SsoSilentRequest): Observable<AuthenticationResult>;
15
+ getLogger(): Logger;
16
+ setLogger(logger: Logger): void;
17
+ }
package/README.md CHANGED
@@ -46,7 +46,7 @@ At a minimum, `@azure/msal-angular` will follow the [support schedule of the mai
46
46
 
47
47
  | MSAL Angular version | MSAL support status | Supported Angular versions |
48
48
  | -------------------- | ------------------- | -------------------------- |
49
- | MSAL Angular v4 | Active development | 15, 16, 17, 18, 19 |
49
+ | MSAL Angular v4 | Active development | 15, 16, 17, 18, 19, 20 |
50
50
  | MSAL Angular v3 | In maintenance | 15, 16, 17, 18 |
51
51
  | MSAL Angular v2 | In maintenance | 9, 10, 11, 12, 13, 14 |
52
52
  | MSAL Angular v1 | In maintenance | 6, 7, 8, 9 |
package/constants.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export declare const MSAL_INSTANCE: InjectionToken<string>;
3
+ export declare const MSAL_GUARD_CONFIG: InjectionToken<string>;
4
+ export declare const MSAL_INTERCEPTOR_CONFIG: InjectionToken<string>;
5
+ export declare const MSAL_BROADCAST_CONFIG: InjectionToken<string>;
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU1zYWxTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0lNc2FsU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgRW5kU2Vzc2lvblJlcXVlc3QsXG4gIEF1dGhlbnRpY2F0aW9uUmVzdWx0LFxuICBQb3B1cFJlcXVlc3QsXG4gIFJlZGlyZWN0UmVxdWVzdCxcbiAgU2lsZW50UmVxdWVzdCxcbiAgTG9nZ2VyLFxuICBTc29TaWxlbnRSZXF1ZXN0LFxufSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1zYWxTZXJ2aWNlIHtcbiAgaW5pdGlhbGl6ZSgpOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBhY3F1aXJlVG9rZW5Qb3B1cChyZXF1ZXN0OiBQb3B1cFJlcXVlc3QpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PjtcbiAgYWNxdWlyZVRva2VuUmVkaXJlY3QocmVxdWVzdDogUmVkaXJlY3RSZXF1ZXN0KTogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgYWNxdWlyZVRva2VuU2lsZW50KFxuICAgIHNpbGVudFJlcXVlc3Q6IFNpbGVudFJlcXVlc3RcbiAgKTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD47XG4gIGhhbmRsZVJlZGlyZWN0T2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0IHwgbnVsbD47XG4gIGxvZ2luUG9wdXAocmVxdWVzdD86IFBvcHVwUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+O1xuICBsb2dpblJlZGlyZWN0KHJlcXVlc3Q/OiBSZWRpcmVjdFJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAvLyBAZGVwcmVjYXRlZDogVXNlIGxvZ291dFJlZGlyZWN0IG9yIGxvZ291dFBvcHVwXG4gIGxvZ291dChsb2dvdXRSZXF1ZXN0PzogRW5kU2Vzc2lvblJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBsb2dvdXRSZWRpcmVjdChsb2dvdXRSZXF1ZXN0PzogRW5kU2Vzc2lvblJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBsb2dvdXRQb3B1cChsb2dvdXRSZXF1ZXN0PzogRW5kU2Vzc2lvblJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBzc29TaWxlbnQocmVxdWVzdDogU3NvU2lsZW50UmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+O1xuICBnZXRMb2dnZXIoKTogTG9nZ2VyO1xuICBzZXRMb2dnZXIobG9nZ2VyOiBMb2dnZXIpOiB2b2lkO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUtbXNhbC1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6dXJlLW1zYWwtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { InjectionToken } from "@angular/core";
6
+ export const MSAL_INSTANCE = new InjectionToken("MSAL_INSTANCE");
7
+ export const MSAL_GUARD_CONFIG = new InjectionToken("MSAL_GUARD_CONFIG");
8
+ export const MSAL_INTERCEPTOR_CONFIG = new InjectionToken("MSAL_INTERCEPTOR_CONFIG");
9
+ export const MSAL_BROADCAST_CONFIG = new InjectionToken("MSAL_BROADCAST_CONFIG");
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBUyxlQUFlLENBQUMsQ0FBQztBQUV6RSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQsbUJBQW1CLENBQ3BCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FDdkQseUJBQXlCLENBQzFCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FDckQsdUJBQXVCLENBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgY29uc3QgTVNBTF9JTlNUQU5DRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFwiTVNBTF9JTlNUQU5DRVwiKTtcblxuZXhwb3J0IGNvbnN0IE1TQUxfR1VBUkRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXG4gIFwiTVNBTF9HVUFSRF9DT05GSUdcIlxuKTtcblxuZXhwb3J0IGNvbnN0IE1TQUxfSU5URVJDRVBUT1JfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXG4gIFwiTVNBTF9JTlRFUkNFUFRPUl9DT05GSUdcIlxuKTtcblxuZXhwb3J0IGNvbnN0IE1TQUxfQlJPQURDQVNUX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFxuICBcIk1TQUxfQlJPQURDQVNUX0NPTkZJR1wiXG4pO1xuIl19
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5icm9hZGNhc3QuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21zYWwuYnJvYWRjYXN0LmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0IHR5cGUgTXNhbEJyb2FkY2FzdENvbmZpZ3VyYXRpb24gPSB7XG4gIGV2ZW50c1RvUmVwbGF5OiBudW1iZXI7XG59O1xuIl19
@@ -0,0 +1,66 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { Inject, Injectable, Optional } from "@angular/core";
6
+ import { EventMessageUtils, InteractionStatus, } from "@azure/msal-browser";
7
+ import { BehaviorSubject, ReplaySubject, Subject } from "rxjs";
8
+ import { MSAL_BROADCAST_CONFIG, MSAL_INSTANCE } from "./constants";
9
+ import { name, version } from "./packageMetadata";
10
+ import * as i0 from "@angular/core";
11
+ export class MsalBroadcastService {
12
+ constructor(msalInstance, msalBroadcastConfig) {
13
+ this.msalInstance = msalInstance;
14
+ this.msalBroadcastConfig = msalBroadcastConfig;
15
+ // Make _msalSubject a ReplaySubject if configured to replay past events
16
+ if (this.msalBroadcastConfig &&
17
+ this.msalBroadcastConfig.eventsToReplay > 0) {
18
+ this.msalInstance
19
+ .getLogger()
20
+ .clone(name, version)
21
+ .verbose(`BroadcastService - eventsToReplay set on BroadcastConfig, replaying the last ${this.msalBroadcastConfig.eventsToReplay} events`);
22
+ this._msalSubject = new ReplaySubject(this.msalBroadcastConfig.eventsToReplay);
23
+ }
24
+ else {
25
+ // Defaults to _msalSubject being a Subject
26
+ this._msalSubject = new Subject();
27
+ }
28
+ this.msalSubject$ = this._msalSubject.asObservable();
29
+ // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription
30
+ this._inProgress = new BehaviorSubject(InteractionStatus.Startup);
31
+ this.inProgress$ = this._inProgress.asObservable();
32
+ this.msalInstance.addEventCallback((message) => {
33
+ this._msalSubject.next(message);
34
+ const status = EventMessageUtils.getInteractionStatusFromEvent(message, this._inProgress.value);
35
+ if (status !== null) {
36
+ this.msalInstance
37
+ .getLogger()
38
+ .clone(name, version)
39
+ .verbose(`BroadcastService - ${message.eventType} results in setting inProgress from ${this._inProgress.value} to ${status}`);
40
+ this._inProgress.next(status);
41
+ }
42
+ });
43
+ }
44
+ /**
45
+ * Resets inProgress state to None
46
+ */
47
+ resetInProgressEvent() {
48
+ if (this._inProgress.value === InteractionStatus.Startup) {
49
+ this._inProgress.next(InteractionStatus.None);
50
+ }
51
+ }
52
+ }
53
+ MsalBroadcastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalBroadcastService, deps: [{ token: MSAL_INSTANCE }, { token: MSAL_BROADCAST_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
54
+ MsalBroadcastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalBroadcastService });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalBroadcastService, decorators: [{
56
+ type: Injectable
57
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
58
+ type: Inject,
59
+ args: [MSAL_INSTANCE]
60
+ }] }, { type: undefined, decorators: [{
61
+ type: Optional
62
+ }, {
63
+ type: Inject,
64
+ args: [MSAL_BROADCAST_CONFIG]
65
+ }] }]; } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5icm9hZGNhc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tc2FsLmJyb2FkY2FzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBRUwsaUJBQWlCLEVBRWpCLGlCQUFpQixHQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBR2xELE1BQU0sT0FBTyxvQkFBb0I7SUFNL0IsWUFDaUMsWUFBc0MsRUFHN0QsbUJBQWdEO1FBSHpCLGlCQUFZLEdBQVosWUFBWSxDQUEwQjtRQUc3RCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTZCO1FBRXhELHdFQUF3RTtRQUN4RSxJQUNFLElBQUksQ0FBQyxtQkFBbUI7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQzNDO1lBQ0EsSUFBSSxDQUFDLFlBQVk7aUJBQ2QsU0FBUyxFQUFFO2lCQUNYLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2lCQUNwQixPQUFPLENBQ04sZ0ZBQWdGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLFNBQVMsQ0FDakksQ0FBQztZQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxhQUFhLENBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQ3hDLENBQUM7U0FDSDthQUFNO1lBQ0wsMkNBQTJDO1lBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7U0FDakQ7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFckQsb0dBQW9HO1FBQ3BHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQ3BDLGlCQUFpQixDQUFDLE9BQU8sQ0FDMUIsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVuRCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBcUIsRUFBRSxFQUFFO1lBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLDZCQUE2QixDQUM1RCxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQ3ZCLENBQUM7WUFDRixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxZQUFZO3FCQUNkLFNBQVMsRUFBRTtxQkFDWCxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztxQkFDcEIsT0FBTyxDQUNOLHNCQUFzQixPQUFPLENBQUMsU0FBUyx1Q0FBdUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLE9BQU8sTUFBTSxFQUFFLENBQ3BILENBQUM7Z0JBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQjtRQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxLQUFLLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtZQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7O2tIQWhFVSxvQkFBb0Isa0JBT3JCLGFBQWEsYUFFYixxQkFBcUI7c0hBVHBCLG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVOzswQkFRTixNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixRQUFROzswQkFDUixNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEV2ZW50TWVzc2FnZSxcbiAgRXZlbnRNZXNzYWdlVXRpbHMsXG4gIElQdWJsaWNDbGllbnRBcHBsaWNhdGlvbixcbiAgSW50ZXJhY3Rpb25TdGF0dXMsXG59IGZyb20gXCJAYXp1cmUvbXNhbC1icm93c2VyXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTXNhbEJyb2FkY2FzdENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9tc2FsLmJyb2FkY2FzdC5jb25maWdcIjtcbmltcG9ydCB7IE1TQUxfQlJPQURDQVNUX0NPTkZJRywgTVNBTF9JTlNUQU5DRSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgbmFtZSwgdmVyc2lvbiB9IGZyb20gXCIuL3BhY2thZ2VNZXRhZGF0YVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTXNhbEJyb2FkY2FzdFNlcnZpY2Uge1xuICBwcml2YXRlIF9tc2FsU3ViamVjdDogU3ViamVjdDxFdmVudE1lc3NhZ2U+O1xuICBwdWJsaWMgbXNhbFN1YmplY3QkOiBPYnNlcnZhYmxlPEV2ZW50TWVzc2FnZT47XG4gIHByaXZhdGUgX2luUHJvZ3Jlc3M6IEJlaGF2aW9yU3ViamVjdDxJbnRlcmFjdGlvblN0YXR1cz47XG4gIHB1YmxpYyBpblByb2dyZXNzJDogT2JzZXJ2YWJsZTxJbnRlcmFjdGlvblN0YXR1cz47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNU0FMX0lOU1RBTkNFKSBwcml2YXRlIG1zYWxJbnN0YW5jZTogSVB1YmxpY0NsaWVudEFwcGxpY2F0aW9uLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChNU0FMX0JST0FEQ0FTVF9DT05GSUcpXG4gICAgcHJpdmF0ZSBtc2FsQnJvYWRjYXN0Q29uZmlnPzogTXNhbEJyb2FkY2FzdENvbmZpZ3VyYXRpb25cbiAgKSB7XG4gICAgLy8gTWFrZSBfbXNhbFN1YmplY3QgYSBSZXBsYXlTdWJqZWN0IGlmIGNvbmZpZ3VyZWQgdG8gcmVwbGF5IHBhc3QgZXZlbnRzXG4gICAgaWYgKFxuICAgICAgdGhpcy5tc2FsQnJvYWRjYXN0Q29uZmlnICYmXG4gICAgICB0aGlzLm1zYWxCcm9hZGNhc3RDb25maWcuZXZlbnRzVG9SZXBsYXkgPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLm1zYWxJbnN0YW5jZVxuICAgICAgICAuZ2V0TG9nZ2VyKClcbiAgICAgICAgLmNsb25lKG5hbWUsIHZlcnNpb24pXG4gICAgICAgIC52ZXJib3NlKFxuICAgICAgICAgIGBCcm9hZGNhc3RTZXJ2aWNlIC0gZXZlbnRzVG9SZXBsYXkgc2V0IG9uIEJyb2FkY2FzdENvbmZpZywgcmVwbGF5aW5nIHRoZSBsYXN0ICR7dGhpcy5tc2FsQnJvYWRjYXN0Q29uZmlnLmV2ZW50c1RvUmVwbGF5fSBldmVudHNgXG4gICAgICAgICk7XG4gICAgICB0aGlzLl9tc2FsU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PEV2ZW50TWVzc2FnZT4oXG4gICAgICAgIHRoaXMubXNhbEJyb2FkY2FzdENvbmZpZy5ldmVudHNUb1JlcGxheVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdHMgdG8gX21zYWxTdWJqZWN0IGJlaW5nIGEgU3ViamVjdFxuICAgICAgdGhpcy5fbXNhbFN1YmplY3QgPSBuZXcgU3ViamVjdDxFdmVudE1lc3NhZ2U+KCk7XG4gICAgfVxuXG4gICAgdGhpcy5tc2FsU3ViamVjdCQgPSB0aGlzLl9tc2FsU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIC8vIEluUHJvZ3Jlc3MgYXMgQmVoYXZpb3JTdWJqZWN0IHNvIG1vc3QgcmVjZW50IGluUHJvZ3Jlc3Mgc3RhdGUgd2lsbCBiZSBhdmFpbGFibGUgdXBvbiBzdWJzY3JpcHRpb25cbiAgICB0aGlzLl9pblByb2dyZXNzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbnRlcmFjdGlvblN0YXR1cz4oXG4gICAgICBJbnRlcmFjdGlvblN0YXR1cy5TdGFydHVwXG4gICAgKTtcbiAgICB0aGlzLmluUHJvZ3Jlc3MkID0gdGhpcy5faW5Qcm9ncmVzcy5hc09ic2VydmFibGUoKTtcblxuICAgIHRoaXMubXNhbEluc3RhbmNlLmFkZEV2ZW50Q2FsbGJhY2soKG1lc3NhZ2U6IEV2ZW50TWVzc2FnZSkgPT4ge1xuICAgICAgdGhpcy5fbXNhbFN1YmplY3QubmV4dChtZXNzYWdlKTtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IEV2ZW50TWVzc2FnZVV0aWxzLmdldEludGVyYWN0aW9uU3RhdHVzRnJvbUV2ZW50KFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICB0aGlzLl9pblByb2dyZXNzLnZhbHVlXG4gICAgICApO1xuICAgICAgaWYgKHN0YXR1cyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm1zYWxJbnN0YW5jZVxuICAgICAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgICAgIC5jbG9uZShuYW1lLCB2ZXJzaW9uKVxuICAgICAgICAgIC52ZXJib3NlKFxuICAgICAgICAgICAgYEJyb2FkY2FzdFNlcnZpY2UgLSAke21lc3NhZ2UuZXZlbnRUeXBlfSByZXN1bHRzIGluIHNldHRpbmcgaW5Qcm9ncmVzcyBmcm9tICR7dGhpcy5faW5Qcm9ncmVzcy52YWx1ZX0gdG8gJHtzdGF0dXN9YFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuX2luUHJvZ3Jlc3MubmV4dChzdGF0dXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyBpblByb2dyZXNzIHN0YXRlIHRvIE5vbmVcbiAgICovXG4gIHJlc2V0SW5Qcm9ncmVzc0V2ZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pblByb2dyZXNzLnZhbHVlID09PSBJbnRlcmFjdGlvblN0YXR1cy5TdGFydHVwKSB7XG4gICAgICB0aGlzLl9pblByb2dyZXNzLm5leHQoSW50ZXJhY3Rpb25TdGF0dXMuTm9uZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5ndWFyZC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNhbC5ndWFyZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1xuICBQb3B1cFJlcXVlc3QsXG4gIFJlZGlyZWN0UmVxdWVzdCxcbiAgSW50ZXJhY3Rpb25UeXBlLFxufSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBNc2FsR3VhcmRBdXRoUmVxdWVzdCA9XG4gIHwgUGFydGlhbDxQb3B1cFJlcXVlc3Q+XG4gIHwgUGFydGlhbDxPbWl0PFJlZGlyZWN0UmVxdWVzdCwgXCJyZWRpcmVjdFN0YXJ0UGFnZVwiPj47XG5cbmV4cG9ydCB0eXBlIE1zYWxHdWFyZENvbmZpZ3VyYXRpb24gPSB7XG4gIGludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlLlBvcHVwIHwgSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0O1xuICBhdXRoUmVxdWVzdD86XG4gICAgfCBNc2FsR3VhcmRBdXRoUmVxdWVzdFxuICAgIHwgKChcbiAgICAgICAgYXV0aFNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICAgICAgKSA9PiBNc2FsR3VhcmRBdXRoUmVxdWVzdCk7XG4gIGxvZ2luRmFpbGVkUm91dGU/OiBzdHJpbmc7XG59O1xuIl19
@@ -0,0 +1,218 @@
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 { InteractionType, BrowserConfigurationAuthError, BrowserUtils, UrlString, } from "@azure/msal-browser";
7
+ import { of } from "rxjs";
8
+ import { concatMap, catchError, map } from "rxjs/operators";
9
+ import { MSAL_GUARD_CONFIG } from "./constants";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "./msal.broadcast.service";
12
+ import * as i2 from "./msal.service";
13
+ import * as i3 from "@angular/common";
14
+ import * as i4 from "@angular/router";
15
+ export class MsalGuard {
16
+ constructor(msalGuardConfig, msalBroadcastService, authService, location, router) {
17
+ this.msalGuardConfig = msalGuardConfig;
18
+ this.msalBroadcastService = msalBroadcastService;
19
+ this.authService = authService;
20
+ this.location = location;
21
+ this.router = router;
22
+ // Subscribing so events in MsalGuard will set inProgress$ observable
23
+ this.msalBroadcastService.inProgress$.subscribe();
24
+ }
25
+ /**
26
+ * Parses url string to UrlTree
27
+ * @param url
28
+ */
29
+ parseUrl(url) {
30
+ return this.router.parseUrl(url);
31
+ }
32
+ /**
33
+ * Builds the absolute url for the destination page
34
+ * @param path Relative path of requested page
35
+ * @returns Full destination url
36
+ */
37
+ getDestinationUrl(path) {
38
+ this.authService.getLogger().verbose("Guard - getting destination url");
39
+ // Absolute base url for the application (default to origin if base element not present)
40
+ const baseElements = document.getElementsByTagName("base");
41
+ const baseUrl = this.location.normalize(baseElements.length ? baseElements[0].href : window.location.origin);
42
+ // Path of page (including hash, if using hash routing)
43
+ const pathUrl = this.location.prepareExternalUrl(path);
44
+ // Hash location strategy
45
+ if (pathUrl.startsWith("#")) {
46
+ this.authService
47
+ .getLogger()
48
+ .verbose("Guard - destination by hash routing");
49
+ return `${baseUrl}/${pathUrl}`;
50
+ }
51
+ /*
52
+ * If using path location strategy, pathUrl will include the relative portion of the base path (e.g. /base/page).
53
+ * Since baseUrl also includes /base, can just concatentate baseUrl + path
54
+ */
55
+ return `${baseUrl}${path}`;
56
+ }
57
+ /**
58
+ * Interactively prompt the user to login
59
+ * @param url Path of the requested page
60
+ */
61
+ loginInteractively(state) {
62
+ const authRequest = typeof this.msalGuardConfig.authRequest === "function"
63
+ ? this.msalGuardConfig.authRequest(this.authService, state)
64
+ : { ...this.msalGuardConfig.authRequest };
65
+ if (this.msalGuardConfig.interactionType === InteractionType.Popup) {
66
+ this.authService.getLogger().verbose("Guard - logging in by popup");
67
+ return this.authService.loginPopup(authRequest).pipe(map((response) => {
68
+ this.authService
69
+ .getLogger()
70
+ .verbose("Guard - login by popup successful, can activate, setting active account");
71
+ this.authService.instance.setActiveAccount(response.account);
72
+ return true;
73
+ }));
74
+ }
75
+ this.authService.getLogger().verbose("Guard - logging in by redirect");
76
+ const redirectStartPage = this.getDestinationUrl(state.url);
77
+ return this.authService
78
+ .loginRedirect({
79
+ redirectStartPage,
80
+ ...authRequest,
81
+ })
82
+ .pipe(map(() => false));
83
+ }
84
+ /**
85
+ * Helper which checks for the correct interaction type, prevents page with Guard to be set as redirect, and calls handleRedirectObservable
86
+ * @param state
87
+ */
88
+ activateHelper(state) {
89
+ if (this.msalGuardConfig.interactionType !== InteractionType.Popup &&
90
+ this.msalGuardConfig.interactionType !== InteractionType.Redirect) {
91
+ throw new BrowserConfigurationAuthError("invalid_interaction_type", "Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration");
92
+ }
93
+ this.authService.getLogger().verbose("MSAL Guard activated");
94
+ /*
95
+ * If a page with MSAL Guard is set as the redirect for acquireTokenSilent,
96
+ * short-circuit to prevent redirecting or popups.
97
+ */
98
+ if (typeof window !== "undefined") {
99
+ if (UrlString.hashContainsKnownProperties(window.location.hash) &&
100
+ BrowserUtils.isInIframe() &&
101
+ !this.authService.instance.getConfiguration().system
102
+ .allowRedirectInIframe) {
103
+ this.authService
104
+ .getLogger()
105
+ .warning("Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.");
106
+ return of(false);
107
+ }
108
+ }
109
+ else {
110
+ this.authService
111
+ .getLogger()
112
+ .info("Guard - window is undefined, MSAL does not support server-side token acquisition");
113
+ return of(true);
114
+ }
115
+ /**
116
+ * If a loginFailedRoute is set in the config, set this as the loginFailedRoute
117
+ */
118
+ if (this.msalGuardConfig.loginFailedRoute) {
119
+ this.loginFailedRoute = this.parseUrl(this.msalGuardConfig.loginFailedRoute);
120
+ }
121
+ // Capture current path before it gets changed by handleRedirectObservable
122
+ const currentPath = this.location.path(true);
123
+ return this.authService.initialize().pipe(concatMap(() => {
124
+ return this.authService.handleRedirectObservable();
125
+ }), concatMap(() => {
126
+ if (!this.authService.instance.getAllAccounts().length) {
127
+ if (state) {
128
+ this.authService
129
+ .getLogger()
130
+ .verbose("Guard - no accounts retrieved, log in required to activate");
131
+ return this.loginInteractively(state);
132
+ }
133
+ this.authService
134
+ .getLogger()
135
+ .verbose("Guard - no accounts retrieved, no state, cannot load");
136
+ return of(false);
137
+ }
138
+ this.authService
139
+ .getLogger()
140
+ .verbose("Guard - at least 1 account exists, can activate or load");
141
+ // Prevent navigating the app to /#code= or /code=
142
+ if (state) {
143
+ /*
144
+ * Path routing:
145
+ * state.url: /#code=...
146
+ * state.root.fragment: code=...
147
+ */
148
+ /*
149
+ * Hash routing:
150
+ * state.url: /code
151
+ * state.root.fragment: null
152
+ */
153
+ const urlContainsCode = this.includesCode(state.url);
154
+ const fragmentContainsCode = !!state.root &&
155
+ !!state.root.fragment &&
156
+ this.includesCode(`#${state.root.fragment}`);
157
+ const hashRouting = this.location.prepareExternalUrl(state.url).indexOf("#") === 0;
158
+ // Ensure code parameter is in fragment (and not in query parameter), or that hash hash routing is used
159
+ if (urlContainsCode && (fragmentContainsCode || hashRouting)) {
160
+ this.authService
161
+ .getLogger()
162
+ .info("Guard - Hash contains known code response, stopping navigation.");
163
+ // Path routing (navigate to current path without hash)
164
+ if (currentPath.indexOf("#") > -1) {
165
+ return of(this.parseUrl(this.location.path()));
166
+ }
167
+ // Hash routing (navigate to root path)
168
+ return of(this.parseUrl(""));
169
+ }
170
+ }
171
+ return of(true);
172
+ }), catchError((error) => {
173
+ this.authService
174
+ .getLogger()
175
+ .error("Guard - error while logging in, unable to activate");
176
+ this.authService
177
+ .getLogger()
178
+ .errorPii(`Guard - error: ${error.message}`);
179
+ /**
180
+ * If a loginFailedRoute is set, checks to see if state is passed before returning route
181
+ */
182
+ if (this.loginFailedRoute && state) {
183
+ this.authService
184
+ .getLogger()
185
+ .verbose("Guard - loginFailedRoute set, redirecting");
186
+ return of(this.loginFailedRoute);
187
+ }
188
+ return of(false);
189
+ }));
190
+ }
191
+ includesCode(path) {
192
+ return ((path.lastIndexOf("/code") > -1 &&
193
+ path.lastIndexOf("/code") === path.length - "/code".length) || // path.endsWith("/code")
194
+ path.indexOf("#code=") > -1 ||
195
+ path.indexOf("&code=") > -1);
196
+ }
197
+ canActivate(route, state) {
198
+ this.authService.getLogger().verbose("Guard - canActivate");
199
+ return this.activateHelper(state);
200
+ }
201
+ canActivateChild(route, state) {
202
+ this.authService.getLogger().verbose("Guard - canActivateChild");
203
+ return this.activateHelper(state);
204
+ }
205
+ canMatch() {
206
+ this.authService.getLogger().verbose("Guard - canLoad");
207
+ return this.activateHelper();
208
+ }
209
+ }
210
+ MsalGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalGuard, deps: [{ token: MSAL_GUARD_CONFIG }, { token: i1.MsalBroadcastService }, { token: i2.MsalService }, { token: i3.Location }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable });
211
+ MsalGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalGuard });
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MsalGuard, decorators: [{
213
+ type: Injectable
214
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
215
+ type: Inject,
216
+ args: [MSAL_GUARD_CONFIG]
217
+ }] }, { type: i1.MsalBroadcastService }, { type: i2.MsalService }, { type: i3.Location }, { type: i4.Router }]; } });
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tc2FsLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5ELE9BQU8sRUFDTCxlQUFlLEVBQ2YsNkJBQTZCLEVBQzdCLFlBQVksRUFDWixTQUFTLEdBSVYsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBR2hELE1BQU0sT0FBTyxTQUFTO0lBR3BCLFlBQ3FDLGVBQXVDLEVBQ2xFLG9CQUEwQyxFQUMxQyxXQUF3QixFQUN4QixRQUFrQixFQUNsQixNQUFjO1FBSmEsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ2xFLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRXRCLHFFQUFxRTtRQUNyRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FB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LHlCQUF5QjtZQUMxRixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FDVCxLQUE2QixFQUM3QixLQUEwQjtRQUUxQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQ2QsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQy9CLENBQUM7O3VHQWxRVSxTQUFTLGtCQUlWLGlCQUFpQjsyR0FKaEIsU0FBUzs0RkFBVCxTQUFTO2tCQURyQixVQUFVOzswQkFLTixNQUFNOzJCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBVcmxUcmVlLFxuICBSb3V0ZXIsXG59IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7XG4gIEludGVyYWN0aW9uVHlwZSxcbiAgQnJvd3NlckNvbmZpZ3VyYXRpb25BdXRoRXJyb3IsXG4gIEJyb3dzZXJVdGlscyxcbiAgVXJsU3RyaW5nLFxuICBQb3B1cFJlcXVlc3QsXG4gIFJlZGlyZWN0UmVxdWVzdCxcbiAgQXV0aGVudGljYXRpb25SZXN1bHQsXG59IGZyb20gXCJAYXp1cmUvbXNhbC1icm93c2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcbmltcG9ydCB7IE1zYWxHdWFyZENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9tc2FsLmd1YXJkLmNvbmZpZ1wiO1xuaW1wb3J0IHsgTXNhbEJyb2FkY2FzdFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLmJyb2FkY2FzdC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBNU0FMX0dVQVJEX0NPTkZJRyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTXNhbEd1YXJkIHtcbiAgcHJpdmF0ZSBsb2dpbkZhaWxlZFJvdXRlPzogVXJsVHJlZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1TQUxfR1VBUkRfQ09ORklHKSBwcml2YXRlIG1zYWxHdWFyZENvbmZpZzogTXNhbEd1YXJkQ29uZmlndXJhdGlvbixcbiAgICBwcml2YXRlIG1zYWxCcm9hZGNhc3RTZXJ2aWNlOiBNc2FsQnJvYWRjYXN0U2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBNc2FsU2VydmljZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIC8vIFN1YnNjcmliaW5nIHNvIGV2ZW50cyBpbiBNc2FsR3VhcmQgd2lsbCBzZXQgaW5Qcm9ncmVzcyQgb2JzZXJ2YWJsZVxuICAgIHRoaXMubXNhbEJyb2FkY2FzdFNlcnZpY2UuaW5Qcm9ncmVzcyQuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIHVybCBzdHJpbmcgdG8gVXJsVHJlZVxuICAgKiBAcGFyYW0gdXJsXG4gICAqL1xuICBwYXJzZVVybCh1cmw6IHN0cmluZyk6IFVybFRyZWUge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5wYXJzZVVybCh1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgYWJzb2x1dGUgdXJsIGZvciB0aGUgZGVzdGluYXRpb24gcGFnZVxuICAgKiBAcGFyYW0gcGF0aCBSZWxhdGl2ZSBwYXRoIG9mIHJlcXVlc3RlZCBwYWdlXG4gICAqIEByZXR1cm5zIEZ1bGwgZGVzdGluYXRpb24gdXJsXG4gICAqL1xuICBnZXREZXN0aW5hdGlvblVybChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gZ2V0dGluZyBkZXN0aW5hdGlvbiB1cmxcIik7XG4gICAgLy8gQWJzb2x1dGUgYmFzZSB1cmwgZm9yIHRoZSBhcHBsaWNhdGlvbiAoZGVmYXVsdCB0byBvcmlnaW4gaWYgYmFzZSBlbGVtZW50IG5vdCBwcmVzZW50KVxuICAgIGNvbnN0IGJhc2VFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYmFzZVwiKTtcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5sb2NhdGlvbi5ub3JtYWxpemUoXG4gICAgICBiYXNlRWxlbWVudHMubGVuZ3RoID8gYmFzZUVsZW1lbnRzWzBdLmhyZWYgOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICAgKTtcblxuICAgIC8vIFBhdGggb2YgcGFnZSAoaW5jbHVkaW5nIGhhc2gsIGlmIHVzaW5nIGhhc2ggcm91dGluZylcbiAgICBjb25zdCBwYXRoVXJsID0gdGhpcy5sb2NhdGlvbi5wcmVwYXJlRXh0ZXJuYWxVcmwocGF0aCk7XG5cbiAgICAvLyBIYXNoIGxvY2F0aW9uIHN0cmF0ZWd5XG4gICAgaWYgKHBhdGhVcmwuc3RhcnRzV2l0aChcIiNcIikpIHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgIC52ZXJib3NlKFwiR3VhcmQgLSBkZXN0aW5hdGlvbiBieSBoYXNoIHJvdXRpbmdcIik7XG4gICAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtwYXRoVXJsfWA7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBJZiB1c2luZyBwYXRoIGxvY2F0aW9uIHN0cmF0ZWd5LCBwYXRoVXJsIHdpbGwgaW5jbHVkZSB0aGUgcmVsYXRpdmUgcG9ydGlvbiBvZiB0aGUgYmFzZSBwYXRoIChlLmcuIC9iYXNlL3BhZ2UpLlxuICAgICAqIFNpbmNlIGJhc2VVcmwgYWxzbyBpbmNsdWRlcyAvYmFzZSwgY2FuIGp1c3QgY29uY2F0ZW50YXRlIGJhc2VVcmwgKyBwYXRoXG4gICAgICovXG4gICAgcmV0dXJuIGAke2Jhc2VVcmx9JHtwYXRofWA7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJhY3RpdmVseSBwcm9tcHQgdGhlIHVzZXIgdG8gbG9naW5cbiAgICogQHBhcmFtIHVybCBQYXRoIG9mIHRoZSByZXF1ZXN0ZWQgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBsb2dpbkludGVyYWN0aXZlbHkoc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBhdXRoUmVxdWVzdCA9XG4gICAgICB0eXBlb2YgdGhpcy5tc2FsR3VhcmRDb25maWcuYXV0aFJlcXVlc3QgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICA/IHRoaXMubXNhbEd1YXJkQ29uZmlnLmF1dGhSZXF1ZXN0KHRoaXMuYXV0aFNlcnZpY2UsIHN0YXRlKVxuICAgICAgICA6IHsgLi4udGhpcy5tc2FsR3VhcmRDb25maWcuYXV0aFJlcXVlc3QgfTtcbiAgICBpZiAodGhpcy5tc2FsR3VhcmRDb25maWcuaW50ZXJhY3Rpb25UeXBlID09PSBJbnRlcmFjdGlvblR5cGUuUG9wdXApIHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gbG9nZ2luZyBpbiBieSBwb3B1cFwiKTtcbiAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2luUG9wdXAoYXV0aFJlcXVlc3QgYXMgUG9wdXBSZXF1ZXN0KS5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBBdXRoZW50aWNhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgICAgICAgLnZlcmJvc2UoXG4gICAgICAgICAgICAgIFwiR3VhcmQgLSBsb2dpbiBieSBwb3B1cCBzdWNjZXNzZnVsLCBjYW4gYWN0aXZhdGUsIHNldHRpbmcgYWN0aXZlIGFjY291bnRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmluc3RhbmNlLnNldEFjdGl2ZUFjY291bnQocmVzcG9uc2UuYWNjb3VudCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gbG9nZ2luZyBpbiBieSByZWRpcmVjdFwiKTtcbiAgICBjb25zdCByZWRpcmVjdFN0YXJ0UGFnZSA9IHRoaXMuZ2V0RGVzdGluYXRpb25Vcmwoc3RhdGUudXJsKTtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZVxuICAgICAgLmxvZ2luUmVkaXJlY3Qoe1xuICAgICAgICByZWRpcmVjdFN0YXJ0UGFnZSxcbiAgICAgICAgLi4uYXV0aFJlcXVlc3QsXG4gICAgICB9IGFzIFJlZGlyZWN0UmVxdWVzdClcbiAgICAgIC5waXBlKG1hcCgoKSA9PiBmYWxzZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB3aGljaCBjaGVja3MgZm9yIHRoZSBjb3JyZWN0IGludGVyYWN0aW9uIHR5cGUsIHByZXZlbnRzIHBhZ2Ugd2l0aCBHdWFyZCB0byBiZSBzZXQgYXMgcmVkaXJlY3QsIGFuZCBjYWxscyBoYW5kbGVSZWRpcmVjdE9ic2VydmFibGVcbiAgICogQHBhcmFtIHN0YXRlXG4gICAqL1xuICBwcml2YXRlIGFjdGl2YXRlSGVscGVyKFxuICAgIHN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tc2FsR3VhcmRDb25maWcuaW50ZXJhY3Rpb25UeXBlICE9PSBJbnRlcmFjdGlvblR5cGUuUG9wdXAgJiZcbiAgICAgIHRoaXMubXNhbEd1YXJkQ29uZmlnLmludGVyYWN0aW9uVHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0XG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgQnJvd3NlckNvbmZpZ3VyYXRpb25BdXRoRXJyb3IoXG4gICAgICAgIFwiaW52YWxpZF9pbnRlcmFjdGlvbl90eXBlXCIsXG4gICAgICAgIFwiSW52YWxpZCBpbnRlcmFjdGlvbiB0eXBlIHByb3ZpZGVkIHRvIE1TQUwgR3VhcmQuIEludGVyYWN0aW9uVHlwZS5Qb3B1cCBvciBJbnRlcmFjdGlvblR5cGUuUmVkaXJlY3QgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgTXNhbEd1YXJkQ29uZmlndXJhdGlvblwiXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJNU0FMIEd1YXJkIGFjdGl2YXRlZFwiKTtcblxuICAgIC8qXG4gICAgICogSWYgYSBwYWdlIHdpdGggTVNBTCBHdWFyZCBpcyBzZXQgYXMgdGhlIHJlZGlyZWN0IGZvciBhY3F1aXJlVG9rZW5TaWxlbnQsXG4gICAgICogc2hvcnQtY2lyY3VpdCB0byBwcmV2ZW50IHJlZGlyZWN0aW5nIG9yIHBvcHVwcy5cbiAgICAgKi9cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgaWYgKFxuICAgICAgICBVcmxTdHJpbmcuaGFzaENvbnRhaW5zS25vd25Qcm9wZXJ0aWVzKHdpbmRvdy5sb2NhdGlvbi5oYXNoKSAmJlxuICAgICAgICBCcm93c2VyVXRpbHMuaXNJbklmcmFtZSgpICYmXG4gICAgICAgICF0aGlzLmF1dGhTZXJ2aWNlLmluc3RhbmNlLmdldENvbmZpZ3VyYXRpb24oKS5zeXN0ZW1cbiAgICAgICAgICAuYWxsb3dSZWRpcmVjdEluSWZyYW1lXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgICAgIC53YXJuaW5nKFxuICAgICAgICAgICAgXCJHdWFyZCAtIHJlZGlyZWN0VXJpIHNldCB0byBwYWdlIHdpdGggTVNBTCBHdWFyZC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gbm90IHNldCByZWRpcmVjdFVyaSB0byBhIHBhZ2UgdGhhdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgIC5pbmZvKFxuICAgICAgICAgIFwiR3VhcmQgLSB3aW5kb3cgaXMgdW5kZWZpbmVkLCBNU0FMIGRvZXMgbm90IHN1cHBvcnQgc2VydmVyLXNpZGUgdG9rZW4gYWNxdWlzaXRpb25cIlxuICAgICAgICApO1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIGEgbG9naW5GYWlsZWRSb3V0ZSBpcyBzZXQgaW4gdGhlIGNvbmZpZywgc2V0IHRoaXMgYXMgdGhlIGxvZ2luRmFpbGVkUm91dGVcbiAgICAgKi9cbiAgICBpZiAodGhpcy5tc2FsR3VhcmRDb25maWcubG9naW5GYWlsZWRSb3V0ZSkge1xuICAgICAgdGhpcy5sb2dpbkZhaWxlZFJvdXRlID0gdGhpcy5wYXJzZVVybChcbiAgICAgICAgdGhpcy5tc2FsR3VhcmRDb25maWcubG9naW5GYWlsZWRSb3V0ZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDYXB0dXJlIGN1cnJlbnQgcGF0aCBiZWZvcmUgaXQgZ2V0cyBjaGFuZ2VkIGJ5IGhhbmRsZVJlZGlyZWN0T2JzZXJ2YWJsZVxuICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gdGhpcy5sb2NhdGlvbi5wYXRoKHRydWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaW5pdGlhbGl6ZSgpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5oYW5kbGVSZWRpcmVjdE9ic2VydmFibGUoKTtcbiAgICAgIH0pLFxuICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKCkubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlXG4gICAgICAgICAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgICAgICAgICAudmVyYm9zZShcbiAgICAgICAgICAgICAgICBcIkd1YXJkIC0gbm8gYWNjb3VudHMgcmV0cmlldmVkLCBsb2cgaW4gcmVxdWlyZWQgdG8gYWN0aXZhdGVcIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9naW5JbnRlcmFjdGl2ZWx5KHN0YXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgICAgICAudmVyYm9zZShcIkd1YXJkIC0gbm8gYWNjb3VudHMgcmV0cmlldmVkLCBubyBzdGF0ZSwgY2Fubm90IGxvYWRcIik7XG4gICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgICAuZ2V0TG9nZ2VyKClcbiAgICAgICAgICAudmVyYm9zZShcIkd1YXJkIC0gYXQgbGVhc3QgMSBhY2NvdW50IGV4aXN0cywgY2FuIGFjdGl2YXRlIG9yIGxvYWRcIik7XG5cbiAgICAgICAgLy8gUHJldmVudCBuYXZpZ2F0aW5nIHRoZSBhcHAgdG8gLyNjb2RlPSBvciAvY29kZT1cbiAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgLypcbiAgICAgICAgICAgKiBQYXRoIHJvdXRpbmc6XG4gICAgICAgICAgICogc3RhdGUudXJsOiAvI2NvZGU9Li4uXG4gICAgICAgICAgICogc3RhdGUucm9vdC5mcmFnbWVudDogY29kZT0uLi5cbiAgICAgICAgICAgKi9cblxuICAgICAgICAgIC8qXG4gICAgICAgICAgICogSGFzaCByb3V0aW5nOlxuICAgICAgICAgICAqIHN0YXRlLnVybDogL2NvZGVcbiAgICAgICAgICAgKiBzdGF0ZS5yb290LmZyYWdtZW50OiBudWxsXG4gICAgICAgICAgICovXG4gICAgICAgICAgY29uc3QgdXJsQ29udGFpbnNDb2RlOiBib29sZWFuID0gdGhpcy5pbmNsdWRlc0NvZGUoc3RhdGUudXJsKTtcbiAgICAgICAgICBjb25zdCBmcmFnbWVudENvbnRhaW5zQ29kZTogYm9vbGVhbiA9XG4gICAgICAgICAgICAhIXN0YXRlLnJvb3QgJiZcbiAgICAgICAgICAgICEhc3RhdGUucm9vdC5mcmFnbWVudCAmJlxuICAgICAgICAgICAgdGhpcy5pbmNsdWRlc0NvZGUoYCMke3N0YXRlLnJvb3QuZnJhZ21lbnR9YCk7XG4gICAgICAgICAgY29uc3QgaGFzaFJvdXRpbmc6IGJvb2xlYW4gPVxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5wcmVwYXJlRXh0ZXJuYWxVcmwoc3RhdGUudXJsKS5pbmRleE9mKFwiI1wiKSA9PT0gMDtcblxuICAgICAgICAgIC8vIEVuc3VyZSBjb2RlIHBhcmFtZXRlciBpcyBpbiBmcmFnbWVudCAoYW5kIG5vdCBpbiBxdWVyeSBwYXJhbWV0ZXIpLCBvciB0aGF0IGhhc2ggaGFzaCByb3V0aW5nIGlzIHVzZWRcbiAgICAgICAgICBpZiAodXJsQ29udGFpbnNDb2RlICYmIChmcmFnbWVudENvbnRhaW5zQ29kZSB8fCBoYXNoUm91dGluZykpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgICAgICAgIC5pbmZvKFxuICAgICAgICAgICAgICAgIFwiR3VhcmQgLSBIYXNoIGNvbnRhaW5zIGtub3duIGNvZGUgcmVzcG9uc2UsIHN0b3BwaW5nIG5hdmlnYXRpb24uXCJcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gUGF0aCByb3V0aW5nIChuYXZpZ2F0ZSB0byBjdXJyZW50IHBhdGggd2l0aG91dCBoYXNoKVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXRoLmluZGV4T2YoXCIjXCIpID4gLTEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMucGFyc2VVcmwodGhpcy5sb2NhdGlvbi5wYXRoKCkpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSGFzaCByb3V0aW5nIChuYXZpZ2F0ZSB0byByb290IHBhdGgpXG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5wYXJzZVVybChcIlwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgICAgIC5lcnJvcihcIkd1YXJkIC0gZXJyb3Igd2hpbGUgbG9nZ2luZyBpbiwgdW5hYmxlIHRvIGFjdGl2YXRlXCIpO1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlXG4gICAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgICAgLmVycm9yUGlpKGBHdWFyZCAtIGVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBhIGxvZ2luRmFpbGVkUm91dGUgaXMgc2V0LCBjaGVja3MgdG8gc2VlIGlmIHN0YXRlIGlzIHBhc3NlZCBiZWZvcmUgcmV0dXJuaW5nIHJvdXRlXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5sb2dpbkZhaWxlZFJvdXRlICYmIHN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgICAgICAudmVyYm9zZShcIkd1YXJkIC0gbG9naW5GYWlsZWRSb3V0ZSBzZXQsIHJlZGlyZWN0aW5nXCIpO1xuICAgICAgICAgIHJldHVybiBvZih0aGlzLmxvZ2luRmFpbGVkUm91dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpbmNsdWRlc0NvZGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChwYXRoLmxhc3RJbmRleE9mKFwiL2NvZGVcIikgPiAtMSAmJlxuICAgICAgICBwYXRoLmxhc3RJbmRleE9mKFwiL2NvZGVcIikgPT09IHBhdGgubGVuZ3RoIC0gXCIvY29kZVwiLmxlbmd0aCkgfHwgLy8gcGF0aC5lbmRzV2l0aChcIi9jb2RlXCIpXG4gICAgICBwYXRoLmluZGV4T2YoXCIjY29kZT1cIikgPiAtMSB8fFxuICAgICAgcGF0aC5pbmRleE9mKFwiJmNvZGU9XCIpID4gLTFcbiAgICApO1xuICB9XG5cbiAgY2FuQWN0aXZhdGUoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gY2FuQWN0aXZhdGVcIik7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVIZWxwZXIoc3RhdGUpO1xuICB9XG5cbiAgY2FuQWN0aXZhdGVDaGlsZChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiR3VhcmQgLSBjYW5BY3RpdmF0ZUNoaWxkXCIpO1xuICAgIHJldHVybiB0aGlzLmFjdGl2YXRlSGVscGVyKHN0YXRlKTtcbiAgfVxuXG4gIGNhbk1hdGNoKCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJHdWFyZCAtIGNhbkxvYWRcIik7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVIZWxwZXIoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5pbnRlcmNlcHRvci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNhbC5pbnRlcmNlcHRvci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW5yZXNvbHZlZFxuaW1wb3J0IHsgSHR0cFJlcXVlc3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7XG4gIFBvcHVwUmVxdWVzdCxcbiAgUmVkaXJlY3RSZXF1ZXN0LFxuICBJbnRlcmFjdGlvblR5cGUsXG4gIFNpbGVudFJlcXVlc3QsXG59IGZyb20gXCJAYXp1cmUvbXNhbC1icm93c2VyXCI7XG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIE1zYWxJbnRlcmNlcHRvckF1dGhSZXF1ZXN0ID1cbiAgfCBPbWl0PFBvcHVwUmVxdWVzdCwgXCJzY29wZXNcIj5cbiAgfCBPbWl0PFJlZGlyZWN0UmVxdWVzdCwgXCJzY29wZXNcIj5cbiAgfCBPbWl0PFNpbGVudFJlcXVlc3QsIFwic2NvcGVzXCI+O1xuXG5leHBvcnQgdHlwZSBNc2FsSW50ZXJjZXB0b3JDb25maWd1cmF0aW9uID0ge1xuICBpbnRlcmFjdGlvblR5cGU6IEludGVyYWN0aW9uVHlwZS5Qb3B1cCB8IEludGVyYWN0aW9uVHlwZS5SZWRpcmVjdDtcbiAgcHJvdGVjdGVkUmVzb3VyY2VNYXA6IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgQXJyYXk8c3RyaW5nIHwgUHJvdGVjdGVkUmVzb3VyY2VTY29wZXM+IHwgbnVsbFxuICA+O1xuICBhdXRoUmVxdWVzdD86XG4gICAgfCBNc2FsSW50ZXJjZXB0b3JBdXRoUmVxdWVzdFxuICAgIHwgKChcbiAgICAgICAgbXNhbFNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxuICAgICAgICByZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LFxuICAgICAgICBvcmlnaW5hbEF1dGhSZXF1ZXN0OiBNc2FsSW50ZXJjZXB0b3JBdXRoUmVxdWVzdFxuICAgICAgKSA9PiBNc2FsSW50ZXJjZXB0b3JBdXRoUmVxdWVzdCk7XG59O1xuXG5leHBvcnQgdHlwZSBQcm90ZWN0ZWRSZXNvdXJjZVNjb3BlcyA9IHtcbiAgaHR0cE1ldGhvZDogc3RyaW5nO1xuICBzY29wZXM6IEFycmF5PHN0cmluZz4gfCBudWxsO1xufTtcbiJdfQ==