{"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 = \"5.2.2\";\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, 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    @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._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   * 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  acquireTokenPopup(request: PopupRequest): Observable<AuthenticationResult> {\n    return from(this.instance.acquireTokenPopup(request));\n  }\n  acquireTokenRedirect(request: RedirectRequest): Observable<void> {\n    return from(this.instance.acquireTokenRedirect(request));\n  }\n  acquireTokenSilent(\n    silentRequest: SilentRequest\n  ): Observable<AuthenticationResult> {\n    return from(this.instance.acquireTokenSilent(silentRequest));\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 from(this.instance.loginPopup(request));\n  }\n  loginRedirect(request?: RedirectRequest): Observable<void> {\n    return from(this.instance.loginRedirect(request));\n  }\n  logoutRedirect(logoutRequest?: EndSessionRequest): Observable<void> {\n    return from(this.instance.logoutRedirect(logoutRequest));\n  }\n  logoutPopup(logoutRequest?: EndSessionPopupRequest): Observable<void> {\n    return from(this.instance.logoutPopup(logoutRequest));\n  }\n  ssoSilent(request: SsoSilentRequest): Observable<AuthenticationResult> {\n    return from(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(\"Guard - logging in by popup\", authRequest.correlationId);\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(\"Guard - logging in by redirect\", authRequest.correlationId);\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        \"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    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n    @Inject(DOCUMENT) document?: any\n  ) {\n    this._document = document as 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        \"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    if (!!this.authService.instance.getActiveAccount()) {\n      this.authService\n        .getLogger()\n        .verbose(\"Interceptor - active account selected\", \"\");\n      account = this.authService.instance.getActiveAccount();\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 = [\"protocol\", \"host\", \"pathname\", \"search\", \"hash\"];\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 = [];\n\n    // Check each matched endpoint for matching HttpMethod and scopes\n    endpointArray.forEach((matchedEndpoint) => {\n      const scopesForEndpoint = [];\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      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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"}