@azure/msal-angular 6.1.0 → 6.2.1

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.
@@ -9,7 +9,7 @@ import * as i4 from '@angular/router';
9
9
 
10
10
  /* eslint-disable header/header */
11
11
  const name = "@azure/msal-angular";
12
- const version = "6.1.0";
12
+ const version = "6.2.1";
13
13
 
14
14
  /*
15
15
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -68,10 +68,10 @@ class MsalBroadcastService {
68
68
  this._inProgress.next(InteractionStatus.None);
69
69
  }
70
70
  }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalBroadcastService, deps: [{ token: MSAL_INSTANCE }, { token: i0.NgZone }, { token: MSAL_BROADCAST_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
72
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalBroadcastService }); }
71
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalBroadcastService, deps: [{ token: MSAL_INSTANCE }, { token: i0.NgZone }, { token: MSAL_BROADCAST_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
72
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalBroadcastService }); }
73
73
  }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalBroadcastService, decorators: [{
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalBroadcastService, decorators: [{
75
75
  type: Injectable
76
76
  }], ctorParameters: () => [{ type: undefined, decorators: [{
77
77
  type: Inject,
@@ -165,10 +165,10 @@ class MsalService {
165
165
  this.logger = logger.clone(name, version);
166
166
  this.instance.setLogger(logger);
167
167
  }
168
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalService, deps: [{ token: MSAL_INSTANCE }, { token: i3.Location }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
169
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalService }); }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalService, deps: [{ token: MSAL_INSTANCE }, { token: i3.Location }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
169
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalService }); }
170
170
  }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalService, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalService, decorators: [{
172
172
  type: Injectable
173
173
  }], ctorParameters: () => [{ type: undefined, decorators: [{
174
174
  type: Inject,
@@ -380,10 +380,10 @@ class MsalGuard {
380
380
  this.authService.getLogger().verbose("Guard - canLoad", "");
381
381
  return this.activateHelper();
382
382
  }
383
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalGuard, deps: [{ token: MSAL_GUARD_CONFIG }, { token: MsalBroadcastService }, { token: MsalService }, { token: i3.Location }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
384
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalGuard }); }
383
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalGuard, deps: [{ token: MSAL_GUARD_CONFIG }, { token: MsalBroadcastService }, { token: MsalService }, { token: i3.Location }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
384
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalGuard }); }
385
385
  }
386
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalGuard, decorators: [{
386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalGuard, decorators: [{
387
387
  type: Injectable
388
388
  }], ctorParameters: () => [{ type: undefined, decorators: [{
389
389
  type: Inject,
@@ -722,10 +722,10 @@ class MsalInterceptor {
722
722
  const regex = new RegExp(`^${regexBody}$`);
723
723
  return regex.test(input);
724
724
  }
725
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalInterceptor, deps: [{ token: MSAL_INTERCEPTOR_CONFIG }, { token: MsalService }, { token: i3.Location }, { token: MsalBroadcastService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
726
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalInterceptor }); }
725
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalInterceptor, deps: [{ token: MSAL_INTERCEPTOR_CONFIG }, { token: MsalService }, { token: i3.Location }, { token: MsalBroadcastService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
726
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalInterceptor }); }
727
727
  }
728
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalInterceptor, decorators: [{
728
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalInterceptor, decorators: [{
729
729
  type: Injectable
730
730
  }], ctorParameters: () => [{ type: undefined, decorators: [{
731
731
  type: Inject,
@@ -752,10 +752,10 @@ class MsalRedirectComponent {
752
752
  this.authService.getLogger().verbose("MsalRedirectComponent activated", "");
753
753
  this.authService.handleRedirectObservable().subscribe();
754
754
  }
755
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalRedirectComponent, deps: [{ token: MsalService }], target: i0.ɵɵFactoryTarget.Component }); }
756
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.2", type: MsalRedirectComponent, isStandalone: false, selector: "app-redirect", ngImport: i0, template: "", isInline: true }); }
755
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalRedirectComponent, deps: [{ token: MsalService }], target: i0.ɵɵFactoryTarget.Component }); }
756
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.2", type: MsalRedirectComponent, isStandalone: false, selector: "app-redirect", ngImport: i0, template: "", isInline: true }); }
757
757
  }
758
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalRedirectComponent, decorators: [{
758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalRedirectComponent, decorators: [{
759
759
  type: Component,
760
760
  args: [{
761
761
  selector: "app-redirect",
@@ -789,11 +789,11 @@ class MsalModule {
789
789
  ],
790
790
  };
791
791
  }
792
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
793
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.2", ngImport: i0, type: MsalModule, declarations: [MsalRedirectComponent], imports: [CommonModule] }); }
794
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalModule, providers: [MsalGuard, MsalBroadcastService], imports: [CommonModule] }); }
792
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
793
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.2", ngImport: i0, type: MsalModule, declarations: [MsalRedirectComponent], imports: [CommonModule] }); }
794
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalModule, providers: [MsalGuard, MsalBroadcastService], imports: [CommonModule] }); }
795
795
  }
796
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalModule, decorators: [{
796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalModule, decorators: [{
797
797
  type: NgModule,
798
798
  args: [{
799
799
  declarations: [MsalRedirectComponent],
@@ -842,10 +842,10 @@ class MsalCustomNavigationClient extends NavigationClient {
842
842
  }
843
843
  return Promise.resolve(options.noHistory);
844
844
  }
845
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalCustomNavigationClient, deps: [{ token: MsalService }, { token: i4.Router }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
846
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalCustomNavigationClient }); }
845
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalCustomNavigationClient, deps: [{ token: MsalService }, { token: i4.Router }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
846
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalCustomNavigationClient }); }
847
847
  }
848
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MsalCustomNavigationClient, decorators: [{
848
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: MsalCustomNavigationClient, decorators: [{
849
849
  type: Injectable
850
850
  }], ctorParameters: () => [{ type: MsalService }, { type: i4.Router }, { type: i3.Location }] });
851
851
 
@@ -1 +1 @@
1
- {"version":3,"file":"azure-msal-angular.mjs","sources":["../../src/packageMetadata.ts","../../src/constants.ts","../../src/msal.broadcast.service.ts","../../src/msal.service.ts","../../src/msal.guard.ts","../../src/msal.interceptor.ts","../../src/msal.redirect.component.ts","../../src/msal.module.ts","../../src/msal.navigation.client.ts","../../src/public-api.ts","../../src/azure-msal-angular.ts"],"sourcesContent":["/* eslint-disable header/header */\nexport const name = \"@azure/msal-angular\";\nexport const version = \"6.1.0\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { InjectionToken } from \"@angular/core\";\n\nimport { type IPublicClientApplication } from \"@azure/msal-browser\";\nimport { type MsalBroadcastConfiguration } from \"./msal.broadcast.config\";\nimport { type MsalGuardConfiguration } from \"./msal.guard.config\";\nimport { type MsalInterceptorConfiguration } from \"./msal.interceptor.config\";\n\nexport const MSAL_INSTANCE = new InjectionToken<IPublicClientApplication>(\n \"MSAL_INSTANCE\"\n);\n\nexport const MSAL_GUARD_CONFIG = new InjectionToken<MsalGuardConfiguration>(\n \"MSAL_GUARD_CONFIG\"\n);\n\nexport const MSAL_INTERCEPTOR_CONFIG =\n new InjectionToken<MsalInterceptorConfiguration>(\"MSAL_INTERCEPTOR_CONFIG\");\n\nexport const MSAL_BROADCAST_CONFIG =\n new InjectionToken<MsalBroadcastConfiguration>(\"MSAL_BROADCAST_CONFIG\");\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Inject, Injectable, NgZone, Optional } from \"@angular/core\";\nimport {\n EventMessage,\n EventMessageUtils,\n IPublicClientApplication,\n InteractionStatus,\n} from \"@azure/msal-browser\";\nimport { BehaviorSubject, Observable, ReplaySubject, Subject } from \"rxjs\";\nimport { MsalBroadcastConfiguration } from \"./msal.broadcast.config\";\nimport { MSAL_BROADCAST_CONFIG, MSAL_INSTANCE } from \"./constants\";\nimport { name, version } from \"./packageMetadata\";\n\n@Injectable()\nexport class MsalBroadcastService {\n private _msalSubject: Subject<EventMessage>;\n public msalSubject$: Observable<EventMessage>;\n private _inProgress: BehaviorSubject<InteractionStatus>;\n public inProgress$: Observable<InteractionStatus>;\n\n constructor(\n @Inject(MSAL_INSTANCE) private msalInstance: IPublicClientApplication,\n private ngZone: NgZone,\n @Optional()\n @Inject(MSAL_BROADCAST_CONFIG)\n private msalBroadcastConfig?: MsalBroadcastConfiguration\n ) {\n // Make _msalSubject a ReplaySubject if configured to replay past events\n if (\n this.msalBroadcastConfig &&\n this.msalBroadcastConfig.eventsToReplay > 0\n ) {\n this.msalInstance\n .getLogger()\n .clone(name, version)\n .verbose(\n `BroadcastService - eventsToReplay set on BroadcastConfig, replaying the last ${this.msalBroadcastConfig.eventsToReplay} events`,\n \"\"\n );\n this._msalSubject = new ReplaySubject<EventMessage>(\n this.msalBroadcastConfig.eventsToReplay\n );\n } else {\n // Defaults to _msalSubject being a Subject\n this._msalSubject = new Subject<EventMessage>();\n }\n\n this.msalSubject$ = this._msalSubject.asObservable();\n\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\n this._inProgress = new BehaviorSubject<InteractionStatus>(\n InteractionStatus.Startup\n );\n this.inProgress$ = this._inProgress.asObservable();\n\n this.msalInstance.addEventCallback((message: EventMessage) => {\n this.ngZone.run(() => {\n this._msalSubject.next(message);\n const status = EventMessageUtils.getInteractionStatusFromEvent(\n message,\n this._inProgress.value\n );\n if (status !== null) {\n this.msalInstance\n .getLogger()\n .clone(name, version)\n .verbose(\n `BroadcastService - ${message.eventType} results in setting inProgress from ${this._inProgress.value} to ${status}`,\n \"\"\n );\n this._inProgress.next(status);\n }\n });\n });\n }\n\n /**\n * Resets inProgress state to None\n */\n resetInProgressEvent(): void {\n if (this._inProgress.value === InteractionStatus.Startup) {\n this._inProgress.next(InteractionStatus.None);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Inject, Injectable, Injector } from \"@angular/core\";\nimport { Location } from \"@angular/common\";\nimport {\n IPublicClientApplication,\n EndSessionRequest,\n EndSessionPopupRequest,\n AuthenticationResult,\n RedirectRequest,\n SilentRequest,\n PopupRequest,\n SsoSilentRequest,\n Logger,\n WrapperSKU,\n HandleRedirectPromiseOptions,\n} from \"@azure/msal-browser\";\nimport { Observable, from } from \"rxjs\";\nimport { IMsalService } from \"./IMsalService\";\nimport { name, version } from \"./packageMetadata\";\nimport { MSAL_INSTANCE } from \"./constants\";\nimport { MsalBroadcastService } from \"./msal.broadcast.service\";\n\n@Injectable()\nexport class MsalService implements IMsalService {\n private redirectHash?: string;\n private logger?: Logger;\n\n constructor(\n @Inject(MSAL_INSTANCE) public instance: IPublicClientApplication,\n private location: Location,\n private injector: Injector\n ) {\n const hash = this.location.path(true).split(\"#\").pop();\n if (hash) {\n this.redirectHash = `#${hash}`;\n }\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, version);\n }\n\n initialize(): Observable<void> {\n return from(this.instance.initialize());\n }\n /**\n * Ensures the PublicClientApplication has been initialized.\n */\n private withInitialize<T>(call: () => Promise<T>): Observable<T> {\n return from(this.instance.initialize().then(() => call()));\n }\n acquireTokenPopup(request: PopupRequest): Observable<AuthenticationResult> {\n return this.withInitialize(() => this.instance.acquireTokenPopup(request));\n }\n acquireTokenRedirect(request: RedirectRequest): Observable<void> {\n return this.withInitialize(() =>\n this.instance.acquireTokenRedirect(request)\n );\n }\n acquireTokenSilent(\n silentRequest: SilentRequest\n ): Observable<AuthenticationResult> {\n return this.withInitialize(() =>\n this.instance.acquireTokenSilent(silentRequest)\n );\n }\n /**\n * @deprecated Pass options object instead of hash string. Use handleRedirectObservable({ hash: \"#...\" }) instead.\n */\n handleRedirectObservable(\n hash: string\n ): Observable<AuthenticationResult | null>;\n /**\n * Handles the redirect response from authentication. Call this on every page load after a redirect-based login.\n * If no options are provided, the service will attempt to use the cached redirect hash captured during construction.\n *\n * @param options - Optional configuration for redirect handling, such as an explicit hash value to process.\n * @returns Observable that emits the AuthenticationResult when a redirect is successfully handled.\n */\n handleRedirectObservable(\n options?: HandleRedirectPromiseOptions\n ): Observable<AuthenticationResult | null>;\n handleRedirectObservable(\n hashOrOptions?: string | HandleRedirectPromiseOptions\n ): Observable<AuthenticationResult | null> {\n // Support both legacy string parameter (hash) and new options object\n const options: HandleRedirectPromiseOptions =\n typeof hashOrOptions === \"string\"\n ? { hash: hashOrOptions }\n : hashOrOptions || {};\n\n // Only include hash in the final options if there's a value\n const hash = options.hash || this.redirectHash;\n const finalOptions: HandleRedirectPromiseOptions = {\n ...options,\n ...(hash ? { hash } : {}),\n };\n\n return from(\n this.instance\n .initialize()\n .then(() => this.instance.handleRedirectPromise(finalOptions))\n .finally(() => {\n // update inProgress state to none\n this.injector.get(MsalBroadcastService).resetInProgressEvent();\n })\n );\n }\n loginPopup(request?: PopupRequest): Observable<AuthenticationResult> {\n return this.withInitialize(() => this.instance.loginPopup(request));\n }\n loginRedirect(request?: RedirectRequest): Observable<void> {\n return this.withInitialize(() => this.instance.loginRedirect(request));\n }\n logoutRedirect(logoutRequest?: EndSessionRequest): Observable<void> {\n return this.withInitialize(() =>\n this.instance.logoutRedirect(logoutRequest)\n );\n }\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Observable<void> {\n return this.withInitialize(() => this.instance.logoutPopup(logoutRequest));\n }\n ssoSilent(request: SsoSilentRequest): Observable<AuthenticationResult> {\n return this.withInitialize(() => this.instance.ssoSilent(request));\n }\n /**\n * Gets logger for msal-angular.\n * If no logger set, returns logger instance created with same options as msal-browser\n */\n getLogger(): Logger {\n if (!this.logger) {\n this.logger = this.instance.getLogger().clone(name, version);\n }\n return this.logger;\n }\n // Create a logger instance for msal-angular with the same options as msal-browser\n setLogger(logger: Logger): void {\n this.logger = logger.clone(name, version);\n this.instance.setLogger(logger);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Injectable, Inject } from \"@angular/core\";\nimport { Location } from \"@angular/common\";\nimport {\n ActivatedRouteSnapshot,\n RouterStateSnapshot,\n UrlTree,\n Router,\n} from \"@angular/router\";\nimport {\n InteractionType,\n BrowserConfigurationAuthError,\n BrowserUtils,\n PopupRequest,\n RedirectRequest,\n AuthenticationResult,\n} from \"@azure/msal-browser\";\nimport { Observable, of } from \"rxjs\";\nimport { concatMap, catchError, map } from \"rxjs/operators\";\nimport { MsalService } from \"./msal.service\";\nimport { MsalGuardConfiguration } from \"./msal.guard.config\";\nimport { MsalBroadcastService } from \"./msal.broadcast.service\";\nimport { MSAL_GUARD_CONFIG } from \"./constants\";\n\n@Injectable()\nexport class MsalGuard {\n private loginFailedRoute?: UrlTree;\n\n constructor(\n @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration,\n private msalBroadcastService: MsalBroadcastService,\n private authService: MsalService,\n private location: Location,\n private router: Router\n ) {\n // Subscribing so events in MsalGuard will set inProgress$ observable\n this.msalBroadcastService.inProgress$.subscribe();\n }\n\n /**\n * Parses url string to UrlTree\n * @param url\n */\n parseUrl(url: string): UrlTree {\n return this.router.parseUrl(url);\n }\n\n /**\n * Builds the absolute url for the destination page\n * @param path Relative path of requested page\n * @returns Full destination url\n */\n getDestinationUrl(path: string): string {\n this.authService.getLogger().verbose(\"Guard - getting destination url\", \"\");\n // Absolute base url for the application (default to origin if base element not present)\n const baseElements = document.getElementsByTagName(\"base\");\n const baseUrl = this.location.normalize(\n baseElements.length ? baseElements[0].href : window.location.origin\n );\n\n // Path of page (including hash, if using hash routing)\n const pathUrl = this.location.prepareExternalUrl(path);\n\n // Hash location strategy\n if (pathUrl.startsWith(\"#\")) {\n this.authService\n .getLogger()\n .verbose(\"Guard - destination by hash routing\", \"\");\n return `${baseUrl}/${pathUrl}`;\n }\n\n /*\n * If using path location strategy, pathUrl will include the relative portion of the base path (e.g. /base/page).\n * Since baseUrl also includes /base, can just concatentate baseUrl + path\n */\n return `${baseUrl}${path}`;\n }\n\n /**\n * Interactively prompt the user to login\n * @param url Path of the requested page\n */\n private loginInteractively(state: RouterStateSnapshot): Observable<boolean> {\n const authRequest =\n typeof this.msalGuardConfig.authRequest === \"function\"\n ? this.msalGuardConfig.authRequest(this.authService, state)\n : { ...this.msalGuardConfig.authRequest };\n if (this.msalGuardConfig.interactionType === InteractionType.Popup) {\n this.authService\n .getLogger()\n .verbose(\n \"Guard - logging in by popup\",\n authRequest.correlationId ?? \"\"\n );\n return this.authService.loginPopup(authRequest as PopupRequest).pipe(\n map((response: AuthenticationResult) => {\n this.authService\n .getLogger()\n .verbose(\n \"Guard - login by popup successful, can activate, setting active account\",\n authRequest.correlationId ?? \"\"\n );\n this.authService.instance.setActiveAccount(response.account);\n return true;\n })\n );\n }\n\n this.authService\n .getLogger()\n .verbose(\n \"Guard - logging in by redirect\",\n authRequest.correlationId ?? \"\"\n );\n const redirectStartPage = this.getDestinationUrl(state.url);\n return this.authService\n .loginRedirect({\n redirectStartPage,\n ...authRequest,\n } as RedirectRequest)\n .pipe(map(() => false));\n }\n\n /**\n * Helper which checks for the correct interaction type, prevents page with Guard to be set as redirect, and calls handleRedirectObservable\n * @param state\n */\n private activateHelper(\n state?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> {\n if (\n this.msalGuardConfig.interactionType !== InteractionType.Popup &&\n this.msalGuardConfig.interactionType !== InteractionType.Redirect\n ) {\n throw new BrowserConfigurationAuthError(\n \"invalid_interaction_type\",\n \"\",\n \"Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration\"\n );\n }\n this.authService.getLogger().verbose(\"MSAL Guard activated\", \"\");\n\n /*\n * If a page with MSAL Guard is set as the redirect for acquireTokenSilent,\n * short-circuit to prevent redirecting or popups.\n */\n if (typeof window === \"undefined\") {\n this.authService\n .getLogger()\n .info(\n \"Guard - window is undefined, MSAL does not support server-side token acquisition\",\n \"\"\n );\n return of(true);\n } else {\n try {\n BrowserUtils.blockReloadInHiddenIframes();\n } catch (error) {\n if (\n !this.authService.instance.getConfiguration().system\n .allowRedirectInIframe\n ) {\n this.authService\n .getLogger()\n .warning(\n \"Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.\",\n \"\"\n );\n return of(false);\n }\n }\n }\n\n /**\n * If a loginFailedRoute is set in the config, set this as the loginFailedRoute\n */\n if (this.msalGuardConfig.loginFailedRoute) {\n this.loginFailedRoute = this.parseUrl(\n this.msalGuardConfig.loginFailedRoute\n );\n }\n\n // Capture current path before it gets changed by handleRedirectObservable\n const currentPath = this.location.path(true);\n\n return this.authService.initialize().pipe(\n concatMap(() => {\n return this.authService.handleRedirectObservable();\n }),\n concatMap(() => {\n if (!this.authService.instance.getAllAccounts().length) {\n if (state) {\n this.authService\n .getLogger()\n .verbose(\n \"Guard - no accounts retrieved, log in required to activate\",\n \"\"\n );\n return this.loginInteractively(state);\n }\n this.authService\n .getLogger()\n .verbose(\n \"Guard - no accounts retrieved, no state, cannot load\",\n \"\"\n );\n return of(false);\n }\n\n this.authService\n .getLogger()\n .verbose(\n \"Guard - at least 1 account exists, can activate or load\",\n \"\"\n );\n\n // Prevent navigating the app to /#code= or /code=\n if (state) {\n /*\n * Path routing:\n * state.url: /#code=...\n * state.root.fragment: code=...\n */\n\n /*\n * Hash routing:\n * state.url: /code\n * state.root.fragment: null\n */\n const urlContainsCode: boolean = this.includesCode(state.url);\n const fragmentContainsCode: boolean =\n !!state.root &&\n !!state.root.fragment &&\n this.includesCode(`#${state.root.fragment}`);\n const hashRouting: boolean =\n this.location.prepareExternalUrl(state.url).indexOf(\"#\") === 0;\n\n // Ensure code parameter is in fragment (and not in query parameter), or that hash hash routing is used\n if (urlContainsCode && (fragmentContainsCode || hashRouting)) {\n this.authService\n .getLogger()\n .info(\n \"Guard - Hash contains known code response, stopping navigation.\",\n \"\"\n );\n\n // Path routing (navigate to current path without hash)\n if (currentPath.indexOf(\"#\") > -1) {\n return of(this.parseUrl(this.location.path()));\n }\n\n // Hash routing (navigate to root path)\n return of(this.parseUrl(\"\"));\n }\n }\n\n return of(true);\n }),\n catchError((error: Error) => {\n this.authService\n .getLogger()\n .error(\"Guard - error while logging in, unable to activate\", \"\");\n this.authService\n .getLogger()\n .errorPii(`Guard - error: ${error.message}`, \"\");\n /**\n * If a loginFailedRoute is set, checks to see if state is passed before returning route\n */\n if (this.loginFailedRoute && state) {\n this.authService\n .getLogger()\n .verbose(\"Guard - loginFailedRoute set, redirecting\", \"\");\n return of(this.loginFailedRoute);\n }\n return of(false);\n })\n );\n }\n\n includesCode(path: string): boolean {\n return (\n (path.lastIndexOf(\"/code\") > -1 &&\n path.lastIndexOf(\"/code\") === path.length - \"/code\".length) || // path.endsWith(\"/code\")\n path.indexOf(\"#code=\") > -1 ||\n path.indexOf(\"&code=\") > -1\n );\n }\n\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> {\n this.authService.getLogger().verbose(\"Guard - canActivate\", \"\");\n return this.activateHelper(state);\n }\n\n canActivateChild(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> {\n this.authService.getLogger().verbose(\"Guard - canActivateChild\", \"\");\n return this.activateHelper(state);\n }\n\n canMatch(): Observable<boolean | UrlTree> {\n this.authService.getLogger().verbose(\"Guard - canLoad\", \"\");\n return this.activateHelper();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Injectable, Inject } from \"@angular/core\";\nimport { Location, DOCUMENT } from \"@angular/common\";\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n} from \"@angular/common/http\"; // eslint-disable-line import/no-unresolved\nimport {\n AccountInfo,\n AuthenticationResult,\n BrowserConfigurationAuthError,\n InteractionStatus,\n InteractionType,\n} from \"@azure/msal-browser\";\nimport { Observable, EMPTY, of } from \"rxjs\";\nimport { switchMap, catchError, take, filter } from \"rxjs/operators\";\nimport { MsalService } from \"./msal.service\";\nimport {\n MsalInterceptorAuthRequest,\n MsalInterceptorConfiguration,\n ProtectedResourceScopes,\n} from \"./msal.interceptor.config\";\nimport { MsalBroadcastService } from \"./msal.broadcast.service\";\nimport { MSAL_INTERCEPTOR_CONFIG } from \"./constants\";\n\n@Injectable()\nexport class MsalInterceptor implements HttpInterceptor {\n private _document: Document;\n\n constructor(\n @Inject(MSAL_INTERCEPTOR_CONFIG)\n private msalInterceptorConfig: MsalInterceptorConfiguration,\n private authService: MsalService,\n private location: Location,\n private msalBroadcastService: MsalBroadcastService,\n @Inject(DOCUMENT) document: Document\n ) {\n this._document = document;\n\n if (this.msalInterceptorConfig.strictMatching === undefined) {\n this.authService\n .getLogger()\n .warning(\n `[MSAL] strictMatching is enabled by default. See: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/msal-interceptor.md#strict-matching-strictmatching`,\n \"\"\n );\n }\n }\n\n intercept(\n req: HttpRequest<any>, // eslint-disable-line @typescript-eslint/no-explicit-any\n next: HttpHandler\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Observable<HttpEvent<any>> {\n if (\n this.msalInterceptorConfig.interactionType !== InteractionType.Popup &&\n this.msalInterceptorConfig.interactionType !== InteractionType.Redirect\n ) {\n throw new BrowserConfigurationAuthError(\n \"invalid_interaction_type\",\n \"\",\n \"Invalid interaction type provided to MSAL Interceptor. InteractionType.Popup, InteractionType.Redirect must be provided in the msalInterceptorConfiguration\"\n );\n }\n\n this.authService.getLogger().verbose(\"MSAL Interceptor activated\", \"\");\n const scopes = this.getScopesForEndpoint(req.url, req.method);\n\n // If no scopes for endpoint, does not acquire token\n if (!scopes || scopes.length === 0) {\n this.authService\n .getLogger()\n .verbose(\"Interceptor - no scopes for endpoint\", \"\");\n return next.handle(req);\n }\n\n // Sets account as active account or first account\n let account: AccountInfo;\n const activeAccount = this.authService.instance.getActiveAccount();\n if (activeAccount) {\n this.authService\n .getLogger()\n .verbose(\"Interceptor - active account selected\", \"\");\n account = activeAccount;\n } else {\n this.authService\n .getLogger()\n .verbose(\n \"Interceptor - no active account, fallback to first account\",\n \"\"\n );\n account = this.authService.instance.getAllAccounts()[0];\n }\n\n const authRequest =\n typeof this.msalInterceptorConfig.authRequest === \"function\"\n ? this.msalInterceptorConfig.authRequest(this.authService, req, {\n account: account,\n })\n : { ...this.msalInterceptorConfig.authRequest, account };\n\n this.authService\n .getLogger()\n .info(`Interceptor - ${scopes.length} scopes found for endpoint`, \"\");\n this.authService\n .getLogger()\n .infoPii(`Interceptor - [${scopes}] scopes found for ${req.url}`, \"\");\n\n return this.acquireToken(authRequest, scopes, account).pipe(\n switchMap((result: AuthenticationResult) => {\n this.authService\n .getLogger()\n .verbose(\"Interceptor - setting authorization headers\", \"\");\n const headers = req.headers.set(\n \"Authorization\",\n `Bearer ${result.accessToken}`\n );\n\n const requestClone = req.clone({ headers });\n return next.handle(requestClone);\n })\n );\n }\n\n /**\n * Try to acquire token silently. Invoke interaction if acquireTokenSilent rejected with error or resolved with null access token\n * @param authRequest Request\n * @param scopes Array of scopes for the request\n * @param account Account\n * @returns Authentication result\n */\n private acquireToken(\n authRequest: MsalInterceptorAuthRequest,\n scopes: string[],\n account: AccountInfo\n ): Observable<AuthenticationResult> {\n // Note: For MSA accounts, include openid scope when calling acquireTokenSilent to return idToken\n return this.authService\n .acquireTokenSilent({ ...authRequest, scopes, account })\n .pipe(\n catchError(() => {\n this.authService\n .getLogger()\n .error(\n \"Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve.\",\n authRequest.correlationId ?? \"\"\n );\n return this.msalBroadcastService.inProgress$.pipe(\n take(1),\n switchMap((status: InteractionStatus) => {\n if (status === InteractionStatus.None) {\n return this.acquireTokenInteractively(authRequest, scopes);\n }\n\n return this.msalBroadcastService.inProgress$.pipe(\n filter(\n (status: InteractionStatus) =>\n status === InteractionStatus.None\n ),\n take(1),\n switchMap(() => this.acquireToken(authRequest, scopes, account))\n );\n })\n );\n }),\n switchMap((result: AuthenticationResult) => {\n if (!result.accessToken) {\n this.authService\n .getLogger()\n .error(\n \"Interceptor - acquireTokenSilent resolved with null access token. Known issue with B2C tenants, invoking interaction to resolve.\",\n authRequest.correlationId ?? \"\"\n );\n return this.msalBroadcastService.inProgress$.pipe(\n filter(\n (status: InteractionStatus) => status === InteractionStatus.None\n ),\n take(1),\n switchMap(() =>\n this.acquireTokenInteractively(authRequest, scopes)\n )\n );\n }\n return of(result);\n })\n );\n }\n\n /**\n * Invoke interaction for the given set of scopes\n * @param authRequest Request\n * @param scopes Array of scopes for the request\n * @returns Result from the interactive request\n */\n private acquireTokenInteractively(\n authRequest: MsalInterceptorAuthRequest,\n scopes: string[]\n ): Observable<AuthenticationResult> {\n if (this.msalInterceptorConfig.interactionType === InteractionType.Popup) {\n this.authService\n .getLogger()\n .verbose(\n \"Interceptor - error acquiring token silently, acquiring by popup\",\n authRequest.correlationId ?? \"\"\n );\n return this.authService.acquireTokenPopup({ ...authRequest, scopes });\n }\n this.authService\n .getLogger()\n .verbose(\n \"Interceptor - error acquiring token silently, acquiring by redirect\",\n authRequest.correlationId ?? \"\"\n );\n const redirectStartPage = window.location.href;\n this.authService.acquireTokenRedirect({\n ...authRequest,\n scopes,\n redirectStartPage,\n });\n return EMPTY;\n }\n\n /**\n * Looks up the scopes for the given endpoint from the protectedResourceMap\n * @param endpoint Url of the request\n * @param httpMethod Http method of the request\n * @returns Array of scopes, or null if not found\n *\n */\n private getScopesForEndpoint(\n endpoint: string,\n httpMethod: string\n ): Array<string> | null {\n this.authService\n .getLogger()\n .verbose(\"Interceptor - getting scopes for endpoint\", \"\");\n\n // Ensures endpoints and protected resources compared are normalized\n const normalizedEndpoint = this.location.normalize(endpoint);\n\n const protectedResourcesArray = Array.from(\n this.msalInterceptorConfig.protectedResourceMap.keys()\n );\n\n const matchingProtectedResources = this.matchResourcesToEndpoint(\n protectedResourcesArray,\n normalizedEndpoint\n );\n\n if (matchingProtectedResources.length > 0) {\n return this.matchScopesToEndpoint(\n this.msalInterceptorConfig.protectedResourceMap,\n matchingProtectedResources,\n httpMethod\n );\n }\n\n return null;\n }\n\n /**\n * Finds resource endpoints that match request endpoint\n * @param protectedResourcesEndpoints\n * @param endpoint\n * @returns\n */\n private matchResourcesToEndpoint(\n protectedResourcesEndpoints: string[],\n endpoint: string\n ): Array<string> {\n const matchingResources: Array<string> = [];\n\n protectedResourcesEndpoints.forEach((key) => {\n const normalizedKey = this.location.normalize(key);\n\n // Get url components\n const absoluteKey = this.getAbsoluteUrl(normalizedKey);\n const keyComponents = new URL(absoluteKey);\n const absoluteEndpoint = this.getAbsoluteUrl(endpoint);\n const endpointComponents = new URL(absoluteEndpoint);\n\n if (this.checkUrlComponents(keyComponents, endpointComponents)) {\n matchingResources.push(key);\n }\n });\n\n return matchingResources;\n }\n\n /**\n * Compares URL segments between key and endpoint\n * @param key\n * @param endpoint\n * @returns\n */\n private checkUrlComponents(\n keyComponents: URL,\n endpointComponents: URL\n ): boolean {\n // URL properties from https://developer.mozilla.org/en-US/docs/Web/API/URL\n const urlProperties = [\n \"protocol\",\n \"host\",\n \"pathname\",\n \"search\",\n \"hash\",\n ] as const;\n\n // Maps URL property names to the component identifiers used by matchPatternStrict.\n const componentMap: Record<\n string,\n \"protocol\" | \"host\" | \"path\" | \"search\" | \"hash\"\n > = {\n protocol: \"protocol\",\n host: \"host\",\n pathname: \"path\",\n search: \"search\",\n hash: \"hash\",\n };\n\n const useStrictMatching =\n this.msalInterceptorConfig.strictMatching !== false;\n\n for (const property of urlProperties) {\n if (keyComponents[property]) {\n const decodedInput = decodeURIComponent(keyComponents[property]);\n if (useStrictMatching) {\n /*\n * Strict matching (v5 default): anchored patterns, metacharacters\n * are treated as literals, host wildcards do not span dot separators.\n */\n const component = componentMap[property];\n if (\n !this.matchPatternStrict(\n decodedInput,\n endpointComponents[property],\n component\n )\n ) {\n return false;\n }\n } else {\n // Legacy matching: preserved for backwards compatibility with v4.\n if (!this.matchPattern(decodedInput, endpointComponents[property])) {\n return false;\n }\n }\n }\n }\n\n return true;\n }\n\n /**\n * Transforms relative urls to absolute urls\n * @param url\n * @returns\n */\n private getAbsoluteUrl(url: string): string {\n const link = this._document.createElement(\"a\");\n link.href = url;\n return link.href;\n }\n\n /**\n * Finds scopes from first matching endpoint with HTTP method that matches request\n * @param protectedResourceMap Protected resource map\n * @param endpointArray Array of resources that match request endpoint\n * @param httpMethod Http method of the request\n * @returns\n */\n private matchScopesToEndpoint(\n protectedResourceMap: Map<\n string,\n Array<string | ProtectedResourceScopes> | null\n >,\n endpointArray: string[],\n httpMethod: string\n ): Array<string> | null {\n const allMatchedScopes: Array<string[] | null> = [];\n\n // Check each matched endpoint for matching HttpMethod and scopes\n endpointArray.forEach((matchedEndpoint) => {\n const scopesForEndpoint: string[] = [];\n const methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);\n\n // Return if resource is unprotected\n if (methodAndScopesArray === null) {\n allMatchedScopes.push(null);\n return;\n }\n\n if (methodAndScopesArray === undefined) {\n return;\n }\n\n methodAndScopesArray.forEach((entry) => {\n // Entry is either array of scopes or ProtectedResourceScopes object\n if (typeof entry === \"string\") {\n scopesForEndpoint.push(entry);\n } else {\n // Ensure methods being compared are normalized\n const normalizedRequestMethod = httpMethod.toLowerCase();\n const normalizedResourceMethod = entry.httpMethod.toLowerCase();\n // Method in protectedResourceMap matches request http method\n if (normalizedResourceMethod === normalizedRequestMethod) {\n // Validate if scopes comes null to unprotect the resource in a certain http method\n if (entry.scopes === null) {\n allMatchedScopes.push(null);\n } else {\n entry.scopes.forEach((scope) => {\n scopesForEndpoint.push(scope);\n });\n }\n }\n }\n });\n\n // Only add to all scopes if scopes for endpoint and method is found\n if (scopesForEndpoint.length > 0) {\n allMatchedScopes.push(scopesForEndpoint);\n }\n });\n\n if (allMatchedScopes.length > 0) {\n if (allMatchedScopes.length > 1) {\n this.authService\n .getLogger()\n .warning(\n \"Interceptor - More than 1 matching scopes for endpoint found.\",\n \"\"\n );\n }\n // Returns scopes for first matching endpoint\n return allMatchedScopes[0];\n }\n\n return null;\n }\n\n /**\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\n * @param input String to match against\n */\n private matchPattern(pattern: string, input: string): boolean {\n /**\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\n */\n // eslint-disable-next-line security/detect-non-literal-regexp\n const regex: RegExp = new RegExp(\n pattern\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\*/g, \"[^ ]*\")\n .replace(/\\?/g, \"\\\\?\")\n );\n\n return regex.test(input);\n }\n\n /**\n * Tests if a given string matches a given pattern using stricter, anchored\n * matching semantics.\n *\n * Differences from `matchPattern` (legacy):\n * - All regex metacharacters (including `.` and `?`) are treated as literals.\n * - The generated regex is anchored with `^` and `$` (full-string match).\n * - `*` wildcard behaviour depends on the URL component:\n * - `host`: `*` maps to `[^.]*` — matches any characters that do NOT\n * include `.`, so wildcards stay within a single DNS label.\n * - All other components: `*` matches any characters.\n *\n * @param pattern - The protectedResourceMap key pattern.\n * @param input - The URL component value from the outgoing request.\n * @param component - Which URL component is being matched.\n * @returns `true` if the full input string matches the pattern.\n */\n private matchPatternStrict(\n pattern: string,\n input: string,\n component: \"protocol\" | \"host\" | \"path\" | \"search\" | \"hash\"\n ): boolean {\n // Step 1: Escape all regex metacharacters so literals (including . and ?) match literally.\n let regexBody = pattern.replace(/[.+^${}()|[\\]\\\\*?]/g, \"\\\\$&\");\n\n // Step 2: Replace escaped wildcards with component-aware regex equivalents.\n if (component === \"host\") {\n regexBody = regexBody.replace(/\\\\\\*/g, \"[^.]*\");\n } else {\n // Path, protocol, search, hash: `*` matches any characters.\n regexBody = regexBody.replace(/\\\\\\*/g, \".*\");\n }\n\n // Step 3: Anchor for full-string matching.\n // eslint-disable-next-line security/detect-non-literal-regexp\n const regex = new RegExp(`^${regexBody}$`);\n return regex.test(input);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * This is a dedicated redirect component to be added to Angular apps to\n * handle redirects when using @azure/msal-angular.\n * Import this component to use redirects in your app.\n */\n\nimport { Component, OnInit } from \"@angular/core\";\nimport { MsalService } from \"./msal.service\";\n\n@Component({\n selector: \"app-redirect\",\n template: \"\",\n standalone: false,\n})\nexport class MsalRedirectComponent implements OnInit {\n constructor(private authService: MsalService) {}\n\n ngOnInit(): void {\n this.authService.getLogger().verbose(\"MsalRedirectComponent activated\", \"\");\n this.authService.handleRedirectObservable().subscribe();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { IPublicClientApplication } from \"@azure/msal-browser\";\nimport { MsalBroadcastService } from \"./msal.broadcast.service\";\nimport { MsalGuard } from \"./msal.guard\";\nimport { MsalGuardConfiguration } from \"./msal.guard.config\";\nimport { MsalInterceptorConfiguration } from \"./msal.interceptor.config\";\nimport { MsalRedirectComponent } from \"./msal.redirect.component\";\nimport { MsalService } from \"./msal.service\";\nimport {\n MSAL_INSTANCE,\n MSAL_GUARD_CONFIG,\n MSAL_INTERCEPTOR_CONFIG,\n} from \"./constants\";\n\n@NgModule({\n declarations: [MsalRedirectComponent],\n imports: [CommonModule],\n providers: [MsalGuard, MsalBroadcastService],\n})\nexport class MsalModule {\n static forRoot(\n msalInstance: IPublicClientApplication,\n guardConfig: MsalGuardConfiguration,\n interceptorConfig: MsalInterceptorConfiguration\n ): ModuleWithProviders<MsalModule> {\n return {\n ngModule: MsalModule,\n providers: [\n {\n provide: MSAL_INSTANCE,\n useValue: msalInstance,\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useValue: guardConfig,\n },\n {\n provide: MSAL_INTERCEPTOR_CONFIG,\n useValue: interceptorConfig,\n },\n MsalService,\n ],\n };\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Injectable } from \"@angular/core\";\nimport { Location } from \"@angular/common\";\nimport { Router } from \"@angular/router\";\nimport { NavigationClient, NavigationOptions } from \"@azure/msal-browser\";\nimport { MsalService } from \"./msal.service\";\n\n/**\n * Custom navigation used for Angular client-side navigation.\n * See performance doc for details:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular/docs/performance.md\n */\n@Injectable()\nexport class MsalCustomNavigationClient extends NavigationClient {\n constructor(\n private authService: MsalService,\n private router: Router,\n private location: Location\n ) {\n super();\n }\n\n async navigateInternal(\n url: string,\n options: NavigationOptions\n ): Promise<boolean> {\n this.authService.getLogger().trace(\"MsalCustomNavigationClient called\", \"\");\n\n this.authService\n .getLogger()\n .verbose(\"MsalCustomNavigationClient - navigating\", \"\");\n this.authService\n .getLogger()\n .verbosePii(`MsalCustomNavigationClient - navigating to url: ${url}`, \"\");\n\n // Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled\n if (options.noHistory) {\n return super.navigateInternal(url, options);\n } else {\n // Normalizing newUrl if no query string\n const urlComponents = new URL(url);\n const newUrl = urlComponents.search\n ? `${urlComponents.pathname}${urlComponents.search}`\n : this.location.normalize(urlComponents.pathname);\n await this.router.navigateByUrl(newUrl, {\n replaceUrl: options.noHistory,\n });\n }\n return Promise.resolve(options.noHistory);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @packageDocumentation\n * @module @azure/msal-angular\n */\n\nexport { MsalService } from \"./msal.service\";\nexport { IMsalService } from \"./IMsalService\";\nexport { MsalGuard } from \"./msal.guard\";\nexport {\n MsalGuardConfiguration,\n MsalGuardAuthRequest,\n} from \"./msal.guard.config\";\nexport { MsalInterceptor } from \"./msal.interceptor\";\nexport {\n MsalInterceptorConfiguration,\n MsalInterceptorAuthRequest,\n ProtectedResourceScopes,\n} from \"./msal.interceptor.config\";\nexport {\n MSAL_INSTANCE,\n MSAL_GUARD_CONFIG,\n MSAL_INTERCEPTOR_CONFIG,\n MSAL_BROADCAST_CONFIG,\n} from \"./constants\";\nexport { MsalBroadcastService } from \"./msal.broadcast.service\";\nexport { MsalBroadcastConfiguration } from \"./msal.broadcast.config\";\nexport { MsalModule } from \"./msal.module\";\nexport { MsalRedirectComponent } from \"./msal.redirect.component\";\nexport { MsalCustomNavigationClient } from \"./msal.navigation.client\";\nexport { version } from \"./packageMetadata\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.MsalBroadcastService","i2.MsalService","i1.MsalService","i2","i3.MsalBroadcastService"],"mappings":"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"}
1
+ {"version":3,"file":"azure-msal-angular.mjs","sources":["../../src/packageMetadata.ts","../../src/constants.ts","../../src/msal.broadcast.service.ts","../../src/msal.service.ts","../../src/msal.guard.ts","../../src/msal.interceptor.ts","../../src/msal.redirect.component.ts","../../src/msal.module.ts","../../src/msal.navigation.client.ts","../../src/public-api.ts","../../src/azure-msal-angular.ts"],"sourcesContent":["/* eslint-disable header/header */\nexport const name = \"@azure/msal-angular\";\nexport const version = \"6.2.1\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { InjectionToken } from \"@angular/core\";\n\nimport { type IPublicClientApplication } from \"@azure/msal-browser\";\nimport { type MsalBroadcastConfiguration } from \"./msal.broadcast.config\";\nimport { type MsalGuardConfiguration } from \"./msal.guard.config\";\nimport { type MsalInterceptorConfiguration } from \"./msal.interceptor.config\";\n\nexport const MSAL_INSTANCE = new InjectionToken<IPublicClientApplication>(\n \"MSAL_INSTANCE\"\n);\n\nexport const MSAL_GUARD_CONFIG = new InjectionToken<MsalGuardConfiguration>(\n \"MSAL_GUARD_CONFIG\"\n);\n\nexport const MSAL_INTERCEPTOR_CONFIG =\n new InjectionToken<MsalInterceptorConfiguration>(\"MSAL_INTERCEPTOR_CONFIG\");\n\nexport const MSAL_BROADCAST_CONFIG =\n new InjectionToken<MsalBroadcastConfiguration>(\"MSAL_BROADCAST_CONFIG\");\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Inject, Injectable, NgZone, Optional } from \"@angular/core\";\nimport {\n EventMessage,\n EventMessageUtils,\n IPublicClientApplication,\n InteractionStatus,\n} from \"@azure/msal-browser\";\nimport { BehaviorSubject, Observable, ReplaySubject, Subject } from \"rxjs\";\nimport { MsalBroadcastConfiguration } from \"./msal.broadcast.config\";\nimport { MSAL_BROADCAST_CONFIG, MSAL_INSTANCE } from \"./constants\";\nimport { name, version } from \"./packageMetadata\";\n\n@Injectable()\nexport class MsalBroadcastService {\n private _msalSubject: Subject<EventMessage>;\n public msalSubject$: Observable<EventMessage>;\n private _inProgress: BehaviorSubject<InteractionStatus>;\n public inProgress$: Observable<InteractionStatus>;\n\n constructor(\n @Inject(MSAL_INSTANCE) private msalInstance: IPublicClientApplication,\n private ngZone: NgZone,\n @Optional()\n @Inject(MSAL_BROADCAST_CONFIG)\n private msalBroadcastConfig?: MsalBroadcastConfiguration\n ) {\n // Make _msalSubject a ReplaySubject if configured to replay past events\n if (\n this.msalBroadcastConfig &&\n this.msalBroadcastConfig.eventsToReplay > 0\n ) {\n this.msalInstance\n .getLogger()\n .clone(name, version)\n .verbose(\n `BroadcastService - eventsToReplay set on BroadcastConfig, replaying the last ${this.msalBroadcastConfig.eventsToReplay} events`,\n \"\"\n );\n this._msalSubject = new ReplaySubject<EventMessage>(\n this.msalBroadcastConfig.eventsToReplay\n );\n } else {\n // Defaults to _msalSubject being a Subject\n this._msalSubject = new Subject<EventMessage>();\n }\n\n this.msalSubject$ = this._msalSubject.asObservable();\n\n // InProgress as BehaviorSubject so most recent inProgress state will be available upon subscription\n this._inProgress = new BehaviorSubject<InteractionStatus>(\n InteractionStatus.Startup\n );\n this.inProgress$ = this._inProgress.asObservable();\n\n this.msalInstance.addEventCallback((message: EventMessage) => {\n this.ngZone.run(() => {\n this._msalSubject.next(message);\n const status = EventMessageUtils.getInteractionStatusFromEvent(\n message,\n this._inProgress.value\n );\n if (status !== null) {\n this.msalInstance\n .getLogger()\n .clone(name, version)\n .verbose(\n `BroadcastService - ${message.eventType} results in setting inProgress from ${this._inProgress.value} to ${status}`,\n \"\"\n );\n this._inProgress.next(status);\n }\n });\n });\n }\n\n /**\n * Resets inProgress state to None\n */\n resetInProgressEvent(): void {\n if (this._inProgress.value === InteractionStatus.Startup) {\n this._inProgress.next(InteractionStatus.None);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Inject, Injectable, Injector } from \"@angular/core\";\nimport { Location } from \"@angular/common\";\nimport {\n IPublicClientApplication,\n EndSessionRequest,\n EndSessionPopupRequest,\n AuthenticationResult,\n RedirectRequest,\n SilentRequest,\n PopupRequest,\n SsoSilentRequest,\n Logger,\n WrapperSKU,\n HandleRedirectPromiseOptions,\n} from \"@azure/msal-browser\";\nimport { Observable, from } from \"rxjs\";\nimport { IMsalService } from \"./IMsalService\";\nimport { name, version } from \"./packageMetadata\";\nimport { MSAL_INSTANCE } from \"./constants\";\nimport { MsalBroadcastService } from \"./msal.broadcast.service\";\n\n@Injectable()\nexport class MsalService implements IMsalService {\n private redirectHash?: string;\n private logger?: Logger;\n\n constructor(\n @Inject(MSAL_INSTANCE) public instance: IPublicClientApplication,\n private location: Location,\n private injector: Injector\n ) {\n const hash = this.location.path(true).split(\"#\").pop();\n if (hash) {\n this.redirectHash = `#${hash}`;\n }\n this.instance.initializeWrapperLibrary(WrapperSKU.Angular, version);\n }\n\n initialize(): Observable<void> {\n return from(this.instance.initialize());\n }\n /**\n * Ensures the PublicClientApplication has been initialized.\n */\n private withInitialize<T>(call: () => Promise<T>): Observable<T> {\n return from(this.instance.initialize().then(() => call()));\n }\n acquireTokenPopup(request: PopupRequest): Observable<AuthenticationResult> {\n return this.withInitialize(() => this.instance.acquireTokenPopup(request));\n }\n acquireTokenRedirect(request: RedirectRequest): Observable<void> {\n return this.withInitialize(() =>\n this.instance.acquireTokenRedirect(request)\n );\n }\n acquireTokenSilent(\n silentRequest: SilentRequest\n ): Observable<AuthenticationResult> {\n return this.withInitialize(() =>\n this.instance.acquireTokenSilent(silentRequest)\n );\n }\n /**\n * @deprecated Pass options object instead of hash string. Use handleRedirectObservable({ hash: \"#...\" }) instead.\n */\n handleRedirectObservable(\n hash: string\n ): Observable<AuthenticationResult | null>;\n /**\n * Handles the redirect response from authentication. Call this on every page load after a redirect-based login.\n * If no options are provided, the service will attempt to use the cached redirect hash captured during construction.\n *\n * @param options - Optional configuration for redirect handling, such as an explicit hash value to process.\n * @returns Observable that emits the AuthenticationResult when a redirect is successfully handled.\n */\n handleRedirectObservable(\n options?: HandleRedirectPromiseOptions\n ): Observable<AuthenticationResult | null>;\n handleRedirectObservable(\n hashOrOptions?: string | HandleRedirectPromiseOptions\n ): Observable<AuthenticationResult | null> {\n // Support both legacy string parameter (hash) and new options object\n const options: HandleRedirectPromiseOptions =\n typeof hashOrOptions === \"string\"\n ? { hash: hashOrOptions }\n : hashOrOptions || {};\n\n // Only include hash in the final options if there's a value\n const hash = options.hash || this.redirectHash;\n const finalOptions: HandleRedirectPromiseOptions = {\n ...options,\n ...(hash ? { hash } : {}),\n };\n\n return from(\n this.instance\n .initialize()\n .then(() => this.instance.handleRedirectPromise(finalOptions))\n .finally(() => {\n // update inProgress state to none\n this.injector.get(MsalBroadcastService).resetInProgressEvent();\n })\n );\n }\n loginPopup(request?: PopupRequest): Observable<AuthenticationResult> {\n return this.withInitialize(() => this.instance.loginPopup(request));\n }\n loginRedirect(request?: RedirectRequest): Observable<void> {\n return this.withInitialize(() => this.instance.loginRedirect(request));\n }\n logoutRedirect(logoutRequest?: EndSessionRequest): Observable<void> {\n return this.withInitialize(() =>\n this.instance.logoutRedirect(logoutRequest)\n );\n }\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Observable<void> {\n return this.withInitialize(() => this.instance.logoutPopup(logoutRequest));\n }\n ssoSilent(request: SsoSilentRequest): Observable<AuthenticationResult> {\n return this.withInitialize(() => this.instance.ssoSilent(request));\n }\n /**\n * Gets logger for msal-angular.\n * If no logger set, returns logger instance created with same options as msal-browser\n */\n getLogger(): Logger {\n if (!this.logger) {\n this.logger = this.instance.getLogger().clone(name, version);\n }\n return this.logger;\n }\n // Create a logger instance for msal-angular with the same options as msal-browser\n setLogger(logger: Logger): void {\n this.logger = logger.clone(name, version);\n this.instance.setLogger(logger);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Injectable, Inject } from \"@angular/core\";\nimport { Location } from \"@angular/common\";\nimport {\n ActivatedRouteSnapshot,\n RouterStateSnapshot,\n UrlTree,\n Router,\n} from \"@angular/router\";\nimport {\n InteractionType,\n BrowserConfigurationAuthError,\n BrowserUtils,\n PopupRequest,\n RedirectRequest,\n AuthenticationResult,\n} from \"@azure/msal-browser\";\nimport { Observable, of } from \"rxjs\";\nimport { concatMap, catchError, map } from \"rxjs/operators\";\nimport { MsalService } from \"./msal.service\";\nimport { MsalGuardConfiguration } from \"./msal.guard.config\";\nimport { MsalBroadcastService } from \"./msal.broadcast.service\";\nimport { MSAL_GUARD_CONFIG } from \"./constants\";\n\n@Injectable()\nexport class MsalGuard {\n private loginFailedRoute?: UrlTree;\n\n constructor(\n @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration,\n private msalBroadcastService: MsalBroadcastService,\n private authService: MsalService,\n private location: Location,\n private router: Router\n ) {\n // Subscribing so events in MsalGuard will set inProgress$ observable\n this.msalBroadcastService.inProgress$.subscribe();\n }\n\n /**\n * Parses url string to UrlTree\n * @param url\n */\n parseUrl(url: string): UrlTree {\n return this.router.parseUrl(url);\n }\n\n /**\n * Builds the absolute url for the destination page\n * @param path Relative path of requested page\n * @returns Full destination url\n */\n getDestinationUrl(path: string): string {\n this.authService.getLogger().verbose(\"Guard - getting destination url\", \"\");\n // Absolute base url for the application (default to origin if base element not present)\n const baseElements = document.getElementsByTagName(\"base\");\n const baseUrl = this.location.normalize(\n baseElements.length ? baseElements[0].href : window.location.origin\n );\n\n // Path of page (including hash, if using hash routing)\n const pathUrl = this.location.prepareExternalUrl(path);\n\n // Hash location strategy\n if (pathUrl.startsWith(\"#\")) {\n this.authService\n .getLogger()\n .verbose(\"Guard - destination by hash routing\", \"\");\n return `${baseUrl}/${pathUrl}`;\n }\n\n /*\n * If using path location strategy, pathUrl will include the relative portion of the base path (e.g. /base/page).\n * Since baseUrl also includes /base, can just concatentate baseUrl + path\n */\n return `${baseUrl}${path}`;\n }\n\n /**\n * Interactively prompt the user to login\n * @param url Path of the requested page\n */\n private loginInteractively(state: RouterStateSnapshot): Observable<boolean> {\n const authRequest =\n typeof this.msalGuardConfig.authRequest === \"function\"\n ? this.msalGuardConfig.authRequest(this.authService, state)\n : { ...this.msalGuardConfig.authRequest };\n if (this.msalGuardConfig.interactionType === InteractionType.Popup) {\n this.authService\n .getLogger()\n .verbose(\n \"Guard - logging in by popup\",\n authRequest.correlationId ?? \"\"\n );\n return this.authService.loginPopup(authRequest as PopupRequest).pipe(\n map((response: AuthenticationResult) => {\n this.authService\n .getLogger()\n .verbose(\n \"Guard - login by popup successful, can activate, setting active account\",\n authRequest.correlationId ?? \"\"\n );\n this.authService.instance.setActiveAccount(response.account);\n return true;\n })\n );\n }\n\n this.authService\n .getLogger()\n .verbose(\n \"Guard - logging in by redirect\",\n authRequest.correlationId ?? \"\"\n );\n const redirectStartPage = this.getDestinationUrl(state.url);\n return this.authService\n .loginRedirect({\n redirectStartPage,\n ...authRequest,\n } as RedirectRequest)\n .pipe(map(() => false));\n }\n\n /**\n * Helper which checks for the correct interaction type, prevents page with Guard to be set as redirect, and calls handleRedirectObservable\n * @param state\n */\n private activateHelper(\n state?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> {\n if (\n this.msalGuardConfig.interactionType !== InteractionType.Popup &&\n this.msalGuardConfig.interactionType !== InteractionType.Redirect\n ) {\n throw new BrowserConfigurationAuthError(\n \"invalid_interaction_type\",\n \"\",\n \"Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration\"\n );\n }\n this.authService.getLogger().verbose(\"MSAL Guard activated\", \"\");\n\n /*\n * If a page with MSAL Guard is set as the redirect for acquireTokenSilent,\n * short-circuit to prevent redirecting or popups.\n */\n if (typeof window === \"undefined\") {\n this.authService\n .getLogger()\n .info(\n \"Guard - window is undefined, MSAL does not support server-side token acquisition\",\n \"\"\n );\n return of(true);\n } else {\n try {\n BrowserUtils.blockReloadInHiddenIframes();\n } catch (error) {\n if (\n !this.authService.instance.getConfiguration().system\n .allowRedirectInIframe\n ) {\n this.authService\n .getLogger()\n .warning(\n \"Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.\",\n \"\"\n );\n return of(false);\n }\n }\n }\n\n /**\n * If a loginFailedRoute is set in the config, set this as the loginFailedRoute\n */\n if (this.msalGuardConfig.loginFailedRoute) {\n this.loginFailedRoute = this.parseUrl(\n this.msalGuardConfig.loginFailedRoute\n );\n }\n\n // Capture current path before it gets changed by handleRedirectObservable\n const currentPath = this.location.path(true);\n\n return this.authService.initialize().pipe(\n concatMap(() => {\n return this.authService.handleRedirectObservable();\n }),\n concatMap(() => {\n if (!this.authService.instance.getAllAccounts().length) {\n if (state) {\n this.authService\n .getLogger()\n .verbose(\n \"Guard - no accounts retrieved, log in required to activate\",\n \"\"\n );\n return this.loginInteractively(state);\n }\n this.authService\n .getLogger()\n .verbose(\n \"Guard - no accounts retrieved, no state, cannot load\",\n \"\"\n );\n return of(false);\n }\n\n this.authService\n .getLogger()\n .verbose(\n \"Guard - at least 1 account exists, can activate or load\",\n \"\"\n );\n\n // Prevent navigating the app to /#code= or /code=\n if (state) {\n /*\n * Path routing:\n * state.url: /#code=...\n * state.root.fragment: code=...\n */\n\n /*\n * Hash routing:\n * state.url: /code\n * state.root.fragment: null\n */\n const urlContainsCode: boolean = this.includesCode(state.url);\n const fragmentContainsCode: boolean =\n !!state.root &&\n !!state.root.fragment &&\n this.includesCode(`#${state.root.fragment}`);\n const hashRouting: boolean =\n this.location.prepareExternalUrl(state.url).indexOf(\"#\") === 0;\n\n // Ensure code parameter is in fragment (and not in query parameter), or that hash hash routing is used\n if (urlContainsCode && (fragmentContainsCode || hashRouting)) {\n this.authService\n .getLogger()\n .info(\n \"Guard - Hash contains known code response, stopping navigation.\",\n \"\"\n );\n\n // Path routing (navigate to current path without hash)\n if (currentPath.indexOf(\"#\") > -1) {\n return of(this.parseUrl(this.location.path()));\n }\n\n // Hash routing (navigate to root path)\n return of(this.parseUrl(\"\"));\n }\n }\n\n return of(true);\n }),\n catchError((error: Error) => {\n this.authService\n .getLogger()\n .error(\"Guard - error while logging in, unable to activate\", \"\");\n this.authService\n .getLogger()\n .errorPii(`Guard - error: ${error.message}`, \"\");\n /**\n * If a loginFailedRoute is set, checks to see if state is passed before returning route\n */\n if (this.loginFailedRoute && state) {\n this.authService\n .getLogger()\n .verbose(\"Guard - loginFailedRoute set, redirecting\", \"\");\n return of(this.loginFailedRoute);\n }\n return of(false);\n })\n );\n }\n\n includesCode(path: string): boolean {\n return (\n (path.lastIndexOf(\"/code\") > -1 &&\n path.lastIndexOf(\"/code\") === path.length - \"/code\".length) || // path.endsWith(\"/code\")\n path.indexOf(\"#code=\") > -1 ||\n path.indexOf(\"&code=\") > -1\n );\n }\n\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> {\n this.authService.getLogger().verbose(\"Guard - canActivate\", \"\");\n return this.activateHelper(state);\n }\n\n canActivateChild(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> {\n this.authService.getLogger().verbose(\"Guard - canActivateChild\", \"\");\n return this.activateHelper(state);\n }\n\n canMatch(): Observable<boolean | UrlTree> {\n this.authService.getLogger().verbose(\"Guard - canLoad\", \"\");\n return this.activateHelper();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Injectable, Inject } from \"@angular/core\";\nimport { Location, DOCUMENT } from \"@angular/common\";\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n} from \"@angular/common/http\"; // eslint-disable-line import/no-unresolved\nimport {\n AccountInfo,\n AuthenticationResult,\n BrowserConfigurationAuthError,\n InteractionStatus,\n InteractionType,\n} from \"@azure/msal-browser\";\nimport { Observable, EMPTY, of } from \"rxjs\";\nimport { switchMap, catchError, take, filter } from \"rxjs/operators\";\nimport { MsalService } from \"./msal.service\";\nimport {\n MsalInterceptorAuthRequest,\n MsalInterceptorConfiguration,\n ProtectedResourceScopes,\n} from \"./msal.interceptor.config\";\nimport { MsalBroadcastService } from \"./msal.broadcast.service\";\nimport { MSAL_INTERCEPTOR_CONFIG } from \"./constants\";\n\n@Injectable()\nexport class MsalInterceptor implements HttpInterceptor {\n private _document: Document;\n\n constructor(\n @Inject(MSAL_INTERCEPTOR_CONFIG)\n private msalInterceptorConfig: MsalInterceptorConfiguration,\n private authService: MsalService,\n private location: Location,\n private msalBroadcastService: MsalBroadcastService,\n @Inject(DOCUMENT) document: Document\n ) {\n this._document = document;\n\n if (this.msalInterceptorConfig.strictMatching === undefined) {\n this.authService\n .getLogger()\n .warning(\n `[MSAL] strictMatching is enabled by default. See: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/msal-interceptor.md#strict-matching-strictmatching`,\n \"\"\n );\n }\n }\n\n intercept(\n req: HttpRequest<any>, // eslint-disable-line @typescript-eslint/no-explicit-any\n next: HttpHandler\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Observable<HttpEvent<any>> {\n if (\n this.msalInterceptorConfig.interactionType !== InteractionType.Popup &&\n this.msalInterceptorConfig.interactionType !== InteractionType.Redirect\n ) {\n throw new BrowserConfigurationAuthError(\n \"invalid_interaction_type\",\n \"\",\n \"Invalid interaction type provided to MSAL Interceptor. InteractionType.Popup, InteractionType.Redirect must be provided in the msalInterceptorConfiguration\"\n );\n }\n\n this.authService.getLogger().verbose(\"MSAL Interceptor activated\", \"\");\n const scopes = this.getScopesForEndpoint(req.url, req.method);\n\n // If no scopes for endpoint, does not acquire token\n if (!scopes || scopes.length === 0) {\n this.authService\n .getLogger()\n .verbose(\"Interceptor - no scopes for endpoint\", \"\");\n return next.handle(req);\n }\n\n // Sets account as active account or first account\n let account: AccountInfo;\n const activeAccount = this.authService.instance.getActiveAccount();\n if (activeAccount) {\n this.authService\n .getLogger()\n .verbose(\"Interceptor - active account selected\", \"\");\n account = activeAccount;\n } else {\n this.authService\n .getLogger()\n .verbose(\n \"Interceptor - no active account, fallback to first account\",\n \"\"\n );\n account = this.authService.instance.getAllAccounts()[0];\n }\n\n const authRequest =\n typeof this.msalInterceptorConfig.authRequest === \"function\"\n ? this.msalInterceptorConfig.authRequest(this.authService, req, {\n account: account,\n })\n : { ...this.msalInterceptorConfig.authRequest, account };\n\n this.authService\n .getLogger()\n .info(`Interceptor - ${scopes.length} scopes found for endpoint`, \"\");\n this.authService\n .getLogger()\n .infoPii(`Interceptor - [${scopes}] scopes found for ${req.url}`, \"\");\n\n return this.acquireToken(authRequest, scopes, account).pipe(\n switchMap((result: AuthenticationResult) => {\n this.authService\n .getLogger()\n .verbose(\"Interceptor - setting authorization headers\", \"\");\n const headers = req.headers.set(\n \"Authorization\",\n `Bearer ${result.accessToken}`\n );\n\n const requestClone = req.clone({ headers });\n return next.handle(requestClone);\n })\n );\n }\n\n /**\n * Try to acquire token silently. Invoke interaction if acquireTokenSilent rejected with error or resolved with null access token\n * @param authRequest Request\n * @param scopes Array of scopes for the request\n * @param account Account\n * @returns Authentication result\n */\n private acquireToken(\n authRequest: MsalInterceptorAuthRequest,\n scopes: string[],\n account: AccountInfo\n ): Observable<AuthenticationResult> {\n // Note: For MSA accounts, include openid scope when calling acquireTokenSilent to return idToken\n return this.authService\n .acquireTokenSilent({ ...authRequest, scopes, account })\n .pipe(\n catchError(() => {\n this.authService\n .getLogger()\n .error(\n \"Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve.\",\n authRequest.correlationId ?? \"\"\n );\n return this.msalBroadcastService.inProgress$.pipe(\n take(1),\n switchMap((status: InteractionStatus) => {\n if (status === InteractionStatus.None) {\n return this.acquireTokenInteractively(authRequest, scopes);\n }\n\n return this.msalBroadcastService.inProgress$.pipe(\n filter(\n (status: InteractionStatus) =>\n status === InteractionStatus.None\n ),\n take(1),\n switchMap(() => this.acquireToken(authRequest, scopes, account))\n );\n })\n );\n }),\n switchMap((result: AuthenticationResult) => {\n if (!result.accessToken) {\n this.authService\n .getLogger()\n .error(\n \"Interceptor - acquireTokenSilent resolved with null access token. Known issue with B2C tenants, invoking interaction to resolve.\",\n authRequest.correlationId ?? \"\"\n );\n return this.msalBroadcastService.inProgress$.pipe(\n filter(\n (status: InteractionStatus) => status === InteractionStatus.None\n ),\n take(1),\n switchMap(() =>\n this.acquireTokenInteractively(authRequest, scopes)\n )\n );\n }\n return of(result);\n })\n );\n }\n\n /**\n * Invoke interaction for the given set of scopes\n * @param authRequest Request\n * @param scopes Array of scopes for the request\n * @returns Result from the interactive request\n */\n private acquireTokenInteractively(\n authRequest: MsalInterceptorAuthRequest,\n scopes: string[]\n ): Observable<AuthenticationResult> {\n if (this.msalInterceptorConfig.interactionType === InteractionType.Popup) {\n this.authService\n .getLogger()\n .verbose(\n \"Interceptor - error acquiring token silently, acquiring by popup\",\n authRequest.correlationId ?? \"\"\n );\n return this.authService.acquireTokenPopup({ ...authRequest, scopes });\n }\n this.authService\n .getLogger()\n .verbose(\n \"Interceptor - error acquiring token silently, acquiring by redirect\",\n authRequest.correlationId ?? \"\"\n );\n const redirectStartPage = window.location.href;\n this.authService.acquireTokenRedirect({\n ...authRequest,\n scopes,\n redirectStartPage,\n });\n return EMPTY;\n }\n\n /**\n * Looks up the scopes for the given endpoint from the protectedResourceMap\n * @param endpoint Url of the request\n * @param httpMethod Http method of the request\n * @returns Array of scopes, or null if not found\n *\n */\n private getScopesForEndpoint(\n endpoint: string,\n httpMethod: string\n ): Array<string> | null {\n this.authService\n .getLogger()\n .verbose(\"Interceptor - getting scopes for endpoint\", \"\");\n\n // Ensures endpoints and protected resources compared are normalized\n const normalizedEndpoint = this.location.normalize(endpoint);\n\n const protectedResourcesArray = Array.from(\n this.msalInterceptorConfig.protectedResourceMap.keys()\n );\n\n const matchingProtectedResources = this.matchResourcesToEndpoint(\n protectedResourcesArray,\n normalizedEndpoint\n );\n\n if (matchingProtectedResources.length > 0) {\n return this.matchScopesToEndpoint(\n this.msalInterceptorConfig.protectedResourceMap,\n matchingProtectedResources,\n httpMethod\n );\n }\n\n return null;\n }\n\n /**\n * Finds resource endpoints that match request endpoint\n * @param protectedResourcesEndpoints\n * @param endpoint\n * @returns\n */\n private matchResourcesToEndpoint(\n protectedResourcesEndpoints: string[],\n endpoint: string\n ): Array<string> {\n const matchingResources: Array<string> = [];\n\n protectedResourcesEndpoints.forEach((key) => {\n const normalizedKey = this.location.normalize(key);\n\n // Get url components\n const absoluteKey = this.getAbsoluteUrl(normalizedKey);\n const keyComponents = new URL(absoluteKey);\n const absoluteEndpoint = this.getAbsoluteUrl(endpoint);\n const endpointComponents = new URL(absoluteEndpoint);\n\n if (this.checkUrlComponents(keyComponents, endpointComponents)) {\n matchingResources.push(key);\n }\n });\n\n return matchingResources;\n }\n\n /**\n * Compares URL segments between key and endpoint\n * @param key\n * @param endpoint\n * @returns\n */\n private checkUrlComponents(\n keyComponents: URL,\n endpointComponents: URL\n ): boolean {\n // URL properties from https://developer.mozilla.org/en-US/docs/Web/API/URL\n const urlProperties = [\n \"protocol\",\n \"host\",\n \"pathname\",\n \"search\",\n \"hash\",\n ] as const;\n\n // Maps URL property names to the component identifiers used by matchPatternStrict.\n const componentMap: Record<\n string,\n \"protocol\" | \"host\" | \"path\" | \"search\" | \"hash\"\n > = {\n protocol: \"protocol\",\n host: \"host\",\n pathname: \"path\",\n search: \"search\",\n hash: \"hash\",\n };\n\n const useStrictMatching =\n this.msalInterceptorConfig.strictMatching !== false;\n\n for (const property of urlProperties) {\n if (keyComponents[property]) {\n const decodedInput = decodeURIComponent(keyComponents[property]);\n if (useStrictMatching) {\n /*\n * Strict matching (v5 default): anchored patterns, metacharacters\n * are treated as literals, host wildcards do not span dot separators.\n */\n const component = componentMap[property];\n if (\n !this.matchPatternStrict(\n decodedInput,\n endpointComponents[property],\n component\n )\n ) {\n return false;\n }\n } else {\n // Legacy matching: preserved for backwards compatibility with v4.\n if (!this.matchPattern(decodedInput, endpointComponents[property])) {\n return false;\n }\n }\n }\n }\n\n return true;\n }\n\n /**\n * Transforms relative urls to absolute urls\n * @param url\n * @returns\n */\n private getAbsoluteUrl(url: string): string {\n const link = this._document.createElement(\"a\");\n link.href = url;\n return link.href;\n }\n\n /**\n * Finds scopes from first matching endpoint with HTTP method that matches request\n * @param protectedResourceMap Protected resource map\n * @param endpointArray Array of resources that match request endpoint\n * @param httpMethod Http method of the request\n * @returns\n */\n private matchScopesToEndpoint(\n protectedResourceMap: Map<\n string,\n Array<string | ProtectedResourceScopes> | null\n >,\n endpointArray: string[],\n httpMethod: string\n ): Array<string> | null {\n const allMatchedScopes: Array<string[] | null> = [];\n\n // Check each matched endpoint for matching HttpMethod and scopes\n endpointArray.forEach((matchedEndpoint) => {\n const scopesForEndpoint: string[] = [];\n const methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);\n\n // Return if resource is unprotected\n if (methodAndScopesArray === null) {\n allMatchedScopes.push(null);\n return;\n }\n\n if (methodAndScopesArray === undefined) {\n return;\n }\n\n methodAndScopesArray.forEach((entry) => {\n // Entry is either array of scopes or ProtectedResourceScopes object\n if (typeof entry === \"string\") {\n scopesForEndpoint.push(entry);\n } else {\n // Ensure methods being compared are normalized\n const normalizedRequestMethod = httpMethod.toLowerCase();\n const normalizedResourceMethod = entry.httpMethod.toLowerCase();\n // Method in protectedResourceMap matches request http method\n if (normalizedResourceMethod === normalizedRequestMethod) {\n // Validate if scopes comes null to unprotect the resource in a certain http method\n if (entry.scopes === null) {\n allMatchedScopes.push(null);\n } else {\n entry.scopes.forEach((scope) => {\n scopesForEndpoint.push(scope);\n });\n }\n }\n }\n });\n\n // Only add to all scopes if scopes for endpoint and method is found\n if (scopesForEndpoint.length > 0) {\n allMatchedScopes.push(scopesForEndpoint);\n }\n });\n\n if (allMatchedScopes.length > 0) {\n if (allMatchedScopes.length > 1) {\n this.authService\n .getLogger()\n .warning(\n \"Interceptor - More than 1 matching scopes for endpoint found.\",\n \"\"\n );\n }\n // Returns scopes for first matching endpoint\n return allMatchedScopes[0];\n }\n\n return null;\n }\n\n /**\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\n * @param input String to match against\n */\n private matchPattern(pattern: string, input: string): boolean {\n /**\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\n */\n // eslint-disable-next-line security/detect-non-literal-regexp\n const regex: RegExp = new RegExp(\n pattern\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\*/g, \"[^ ]*\")\n .replace(/\\?/g, \"\\\\?\")\n );\n\n return regex.test(input);\n }\n\n /**\n * Tests if a given string matches a given pattern using stricter, anchored\n * matching semantics.\n *\n * Differences from `matchPattern` (legacy):\n * - All regex metacharacters (including `.` and `?`) are treated as literals.\n * - The generated regex is anchored with `^` and `$` (full-string match).\n * - `*` wildcard behaviour depends on the URL component:\n * - `host`: `*` maps to `[^.]*` — matches any characters that do NOT\n * include `.`, so wildcards stay within a single DNS label.\n * - All other components: `*` matches any characters.\n *\n * @param pattern - The protectedResourceMap key pattern.\n * @param input - The URL component value from the outgoing request.\n * @param component - Which URL component is being matched.\n * @returns `true` if the full input string matches the pattern.\n */\n private matchPatternStrict(\n pattern: string,\n input: string,\n component: \"protocol\" | \"host\" | \"path\" | \"search\" | \"hash\"\n ): boolean {\n // Step 1: Escape all regex metacharacters so literals (including . and ?) match literally.\n let regexBody = pattern.replace(/[.+^${}()|[\\]\\\\*?]/g, \"\\\\$&\");\n\n // Step 2: Replace escaped wildcards with component-aware regex equivalents.\n if (component === \"host\") {\n regexBody = regexBody.replace(/\\\\\\*/g, \"[^.]*\");\n } else {\n // Path, protocol, search, hash: `*` matches any characters.\n regexBody = regexBody.replace(/\\\\\\*/g, \".*\");\n }\n\n // Step 3: Anchor for full-string matching.\n // eslint-disable-next-line security/detect-non-literal-regexp\n const regex = new RegExp(`^${regexBody}$`);\n return regex.test(input);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * This is a dedicated redirect component to be added to Angular apps to\n * handle redirects when using @azure/msal-angular.\n * Import this component to use redirects in your app.\n */\n\nimport { Component, OnInit } from \"@angular/core\";\nimport { MsalService } from \"./msal.service\";\n\n@Component({\n selector: \"app-redirect\",\n template: \"\",\n standalone: false,\n})\nexport class MsalRedirectComponent implements OnInit {\n constructor(private authService: MsalService) {}\n\n ngOnInit(): void {\n this.authService.getLogger().verbose(\"MsalRedirectComponent activated\", \"\");\n this.authService.handleRedirectObservable().subscribe();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { IPublicClientApplication } from \"@azure/msal-browser\";\nimport { MsalBroadcastService } from \"./msal.broadcast.service\";\nimport { MsalGuard } from \"./msal.guard\";\nimport { MsalGuardConfiguration } from \"./msal.guard.config\";\nimport { MsalInterceptorConfiguration } from \"./msal.interceptor.config\";\nimport { MsalRedirectComponent } from \"./msal.redirect.component\";\nimport { MsalService } from \"./msal.service\";\nimport {\n MSAL_INSTANCE,\n MSAL_GUARD_CONFIG,\n MSAL_INTERCEPTOR_CONFIG,\n} from \"./constants\";\n\n@NgModule({\n declarations: [MsalRedirectComponent],\n imports: [CommonModule],\n providers: [MsalGuard, MsalBroadcastService],\n})\nexport class MsalModule {\n static forRoot(\n msalInstance: IPublicClientApplication,\n guardConfig: MsalGuardConfiguration,\n interceptorConfig: MsalInterceptorConfiguration\n ): ModuleWithProviders<MsalModule> {\n return {\n ngModule: MsalModule,\n providers: [\n {\n provide: MSAL_INSTANCE,\n useValue: msalInstance,\n },\n {\n provide: MSAL_GUARD_CONFIG,\n useValue: guardConfig,\n },\n {\n provide: MSAL_INTERCEPTOR_CONFIG,\n useValue: interceptorConfig,\n },\n MsalService,\n ],\n };\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Injectable } from \"@angular/core\";\nimport { Location } from \"@angular/common\";\nimport { Router } from \"@angular/router\";\nimport { NavigationClient, NavigationOptions } from \"@azure/msal-browser\";\nimport { MsalService } from \"./msal.service\";\n\n/**\n * Custom navigation used for Angular client-side navigation.\n * See performance doc for details:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular/docs/performance.md\n */\n@Injectable()\nexport class MsalCustomNavigationClient extends NavigationClient {\n constructor(\n private authService: MsalService,\n private router: Router,\n private location: Location\n ) {\n super();\n }\n\n async navigateInternal(\n url: string,\n options: NavigationOptions\n ): Promise<boolean> {\n this.authService.getLogger().trace(\"MsalCustomNavigationClient called\", \"\");\n\n this.authService\n .getLogger()\n .verbose(\"MsalCustomNavigationClient - navigating\", \"\");\n this.authService\n .getLogger()\n .verbosePii(`MsalCustomNavigationClient - navigating to url: ${url}`, \"\");\n\n // Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled\n if (options.noHistory) {\n return super.navigateInternal(url, options);\n } else {\n // Normalizing newUrl if no query string\n const urlComponents = new URL(url);\n const newUrl = urlComponents.search\n ? `${urlComponents.pathname}${urlComponents.search}`\n : this.location.normalize(urlComponents.pathname);\n await this.router.navigateByUrl(newUrl, {\n replaceUrl: options.noHistory,\n });\n }\n return Promise.resolve(options.noHistory);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @packageDocumentation\n * @module @azure/msal-angular\n */\n\nexport { MsalService } from \"./msal.service\";\nexport { IMsalService } from \"./IMsalService\";\nexport { MsalGuard } from \"./msal.guard\";\nexport {\n MsalGuardConfiguration,\n MsalGuardAuthRequest,\n} from \"./msal.guard.config\";\nexport { MsalInterceptor } from \"./msal.interceptor\";\nexport {\n MsalInterceptorConfiguration,\n MsalInterceptorAuthRequest,\n ProtectedResourceScopes,\n} from \"./msal.interceptor.config\";\nexport {\n MSAL_INSTANCE,\n MSAL_GUARD_CONFIG,\n MSAL_INTERCEPTOR_CONFIG,\n MSAL_BROADCAST_CONFIG,\n} from \"./constants\";\nexport { MsalBroadcastService } from \"./msal.broadcast.service\";\nexport { MsalBroadcastConfiguration } from \"./msal.broadcast.config\";\nexport { MsalModule } from \"./msal.module\";\nexport { MsalRedirectComponent } from \"./msal.redirect.component\";\nexport { MsalCustomNavigationClient } from \"./msal.navigation.client\";\nexport { version } from \"./packageMetadata\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.MsalBroadcastService","i2.MsalService","i1.MsalService","i2","i3.MsalBroadcastService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure/msal-angular",
3
- "version": "6.1.0",
3
+ "version": "6.2.1",
4
4
  "author": {
5
5
  "name": "Microsoft",
6
6
  "email": "nugetaad@microsoft.com",
@@ -19,7 +19,7 @@
19
19
  ]
20
20
  },
21
21
  "peerDependencies": {
22
- "@azure/msal-browser": "^5.19.0",
22
+ "@azure/msal-browser": "^5.22.0",
23
23
  "rxjs": "^7.4.0"
24
24
  },
25
25
  "module": "fesm2022/azure-msal-angular.mjs",
@@ -286,7 +286,7 @@ declare class MsalCustomNavigationClient extends NavigationClient {
286
286
  static ɵprov: i0.ɵɵInjectableDeclaration<MsalCustomNavigationClient>;
287
287
  }
288
288
 
289
- declare const version = "6.1.0";
289
+ declare const version = "6.2.1";
290
290
 
291
291
  export { MSAL_BROADCAST_CONFIG, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalCustomNavigationClient, MsalGuard, MsalInterceptor, MsalModule, MsalRedirectComponent, MsalService, version };
292
292
  export type { IMsalService, MsalBroadcastConfiguration, MsalGuardAuthRequest, MsalGuardConfiguration, MsalInterceptorAuthRequest, MsalInterceptorConfiguration, ProtectedResourceScopes };