From ace5dcbeef75d9fb7128c1f82367126d8f980988 Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Thu, 3 Apr 2025 16:33:26 -0700 Subject: [PATCH 01/11] added resetInProgressEvent function to reset event after handleRedirectPromise is called --- lib/msal-angular/src/msal.broadcast.service.ts | 7 +++++++ lib/msal-angular/src/msal.service.ts | 17 +++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/msal-angular/src/msal.broadcast.service.ts b/lib/msal-angular/src/msal.broadcast.service.ts index fbe2f6a710..38c8c583ec 100644 --- a/lib/msal-angular/src/msal.broadcast.service.ts +++ b/lib/msal-angular/src/msal.broadcast.service.ts @@ -71,4 +71,11 @@ export class MsalBroadcastService { } }); } + + /** + * Resets inProgress state to None + */ + resetInProgressEvent(): void { + this._inProgress.next(InteractionStatus.None); + } } diff --git a/lib/msal-angular/src/msal.service.ts b/lib/msal-angular/src/msal.service.ts index 4feba8e4d0..a23870a814 100644 --- a/lib/msal-angular/src/msal.service.ts +++ b/lib/msal-angular/src/msal.service.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. */ -import { Inject, Injectable } from "@angular/core"; +import { Inject, Injectable, Injector } from "@angular/core"; import { Location } from "@angular/common"; import { IPublicClientApplication, @@ -21,6 +21,7 @@ import { Observable, from } from "rxjs"; import { IMsalService } from "./IMsalService"; import { name, version } from "./packageMetadata"; import { MSAL_INSTANCE } from "./constants"; +import { MsalBroadcastService } from "./msal.broadcast.service"; @Injectable() export class MsalService implements IMsalService { @@ -29,7 +30,8 @@ export class MsalService implements IMsalService { constructor( @Inject(MSAL_INSTANCE) public instance: IPublicClientApplication, - private location: Location + private location: Location, + private injector: Injector ) { const hash = this.location.path(true).split("#").pop(); if (hash) { @@ -59,6 +61,17 @@ export class MsalService implements IMsalService { .then(() => this.instance.handleRedirectPromise(hash || this.redirectHash) ) + .catch((error) => { + this.logger.error( + "Error while executing handleRedirectPromise", + error + ); + throw error; // Rethrow the error to ensure the return type matches + }) + .finally(() => { + // update inProgress state to none + this.injector.get(MsalBroadcastService).resetInProgressEvent(); + }) ); } loginPopup(request?: PopupRequest): Observable { From 9c1f419db2541c4b58b52330e859d7aca677832e Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Thu, 3 Apr 2025 16:39:02 -0700 Subject: [PATCH 02/11] Change files --- ...-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 change/@azure-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json diff --git a/change/@azure-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json b/change/@azure-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json new file mode 100644 index 0000000000..c8e4bd4710 --- /dev/null +++ b/change/@azure-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "added resetInProgressEvent function to reset event after handleRedirectPromise is called", + "packageName": "@azure/msal-angular", + "email": "lalimasharda@microsoft.com", + "dependentChangeType": "patch" +} From e2ce90adb9b104f10c24d7854e3c1059a5a9180e Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Thu, 3 Apr 2025 16:39:46 -0700 Subject: [PATCH 03/11] change file updates --- ...azure-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/change/@azure-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json b/change/@azure-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json index c8e4bd4710..8dd404251d 100644 --- a/change/@azure-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json +++ b/change/@azure-msal-angular-ecec97fd-ef4a-434a-acbb-42aae92467b7.json @@ -1,6 +1,6 @@ { "type": "patch", - "comment": "added resetInProgressEvent function to reset event after handleRedirectPromise is called", + "comment": "added resetInProgressEvent function to reset event after handleRedirectPromise is called #7682", "packageName": "@azure/msal-angular", "email": "lalimasharda@microsoft.com", "dependentChangeType": "patch" From 65689b929b24b27d861abe2f1dc8af40033244be Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Thu, 3 Apr 2025 16:42:39 -0700 Subject: [PATCH 04/11] updating package-lock --- package-lock.json | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index e4b0e557bc..d4f98423a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44259,9 +44259,9 @@ } }, "node_modules/vite": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.11.tgz", - "integrity": "sha512-4mVdhLkZ0vpqZLGJhNm+X1n7juqXApEMGlUXcOQawA45UmpxivOYaMBkI/Js3FlBsNA8hCgEnX5X04moFitSGw==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.12.tgz", + "integrity": "sha512-qrMwavANtSz91nDy3zEiUHMtL09x0mniQsSMvDkNxuCBM1W5vriJ22hEmwTth6DhLSWsZnHBT0yHFAQXt6efGA==", "dev": true, "license": "MIT", "peer": true, @@ -54327,8 +54327,8 @@ "@angular/platform-browser": "^19.1.0", "@angular/platform-browser-dynamic": "^19.1.0", "@angular/router": "^19.1.0", - "@azure/msal-angular": "^4.0.0", - "@azure/msal-browser": "^4.0.0", + "@azure/msal-angular": "file:../../../lib/msal-angular/dist/azure-msal-angular-4.0.8.tgz", + "@azure/msal-browser": "file:../../../lib/msal-browser", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" @@ -55204,6 +55204,19 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, + "samples/msal-angular-samples/angular-standalone-sample/node_modules/@azure/msal-angular": { + "version": "4.0.8", + "resolved": "file:lib/msal-angular/dist/azure-msal-angular-4.0.8.tgz", + "integrity": "sha512-TRI4YEzwBfMnFDzn8x6YVqOm2hLP1Cb5cFE0mwTu3+xVViuB3hx8F76/39K0HzIK3Bckya9izbiupjVrm6z4zg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@azure/msal-browser": "^4.9.0", + "rxjs": "^7.0.0" + } + }, "samples/msal-angular-samples/angular-standalone-sample/node_modules/@babel/core": { "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", From ca548bd30fa69922a8a2f1aea64f66df6c41df03 Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Thu, 3 Apr 2025 16:46:47 -0700 Subject: [PATCH 05/11] undo local changes in package-lock --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index d4f98423a0..7b893c3dbf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -54327,8 +54327,8 @@ "@angular/platform-browser": "^19.1.0", "@angular/platform-browser-dynamic": "^19.1.0", "@angular/router": "^19.1.0", - "@azure/msal-angular": "file:../../../lib/msal-angular/dist/azure-msal-angular-4.0.8.tgz", - "@azure/msal-browser": "file:../../../lib/msal-browser", + "@azure/msal-angular": "^4.0.0", + "@azure/msal-browser": "^4.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" From e21aa7f3e91500a654c2d0a66783ff0d03fccf14 Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Thu, 3 Apr 2025 16:48:01 -0700 Subject: [PATCH 06/11] undo local changes in package-lock --- package-lock.json | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7b893c3dbf..5e02d4d91c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55204,19 +55204,6 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, - "samples/msal-angular-samples/angular-standalone-sample/node_modules/@azure/msal-angular": { - "version": "4.0.8", - "resolved": "file:lib/msal-angular/dist/azure-msal-angular-4.0.8.tgz", - "integrity": "sha512-TRI4YEzwBfMnFDzn8x6YVqOm2hLP1Cb5cFE0mwTu3+xVViuB3hx8F76/39K0HzIK3Bckya9izbiupjVrm6z4zg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@azure/msal-browser": "^4.9.0", - "rxjs": "^7.0.0" - } - }, "samples/msal-angular-samples/angular-standalone-sample/node_modules/@babel/core": { "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", From 1276e2ff768205ffe7badd036afaa09a8534dbec Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Thu, 3 Apr 2025 18:17:13 -0700 Subject: [PATCH 07/11] fixed unit tests failing --- lib/msal-angular/karma.conf.js | 3 ++- lib/msal-angular/src/msal.broadcast.service.spec.ts | 1 + lib/msal-angular/src/msal.guard.spec.ts | 1 + lib/msal-angular/src/msal.interceptor.spec.ts | 1 + lib/msal-angular/src/msal.navigation.client.spec.ts | 1 + lib/msal-angular/src/msal.redirect.component.spec.ts | 1 + lib/msal-angular/src/msal.service.spec.ts | 7 ++++--- lib/msal-angular/src/msal.service.ts | 8 +++----- 8 files changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/msal-angular/karma.conf.js b/lib/msal-angular/karma.conf.js index 52cf3da0d2..5c0544b82e 100644 --- a/lib/msal-angular/karma.conf.js +++ b/lib/msal-angular/karma.conf.js @@ -18,7 +18,8 @@ module.exports = function (config) { jasmine: { failSpecWithNoExpectations: true }, - clearContext: false // leave Jasmine Spec Runner output visible in browser + clearContext: false, // leave Jasmine Spec Runner output visible in browser + captureConsole: true // turns on console logging for test debugging }, coverageIstanbulReporter: { dir: require("path").join(__dirname, "./coverage"), diff --git a/lib/msal-angular/src/msal.broadcast.service.spec.ts b/lib/msal-angular/src/msal.broadcast.service.spec.ts index 89ec85abea..e645d7db85 100644 --- a/lib/msal-angular/src/msal.broadcast.service.spec.ts +++ b/lib/msal-angular/src/msal.broadcast.service.spec.ts @@ -40,6 +40,7 @@ function initializeMsal(providers: any[] = []) { }), ], providers: [MsalBroadcastService, ...providers], + teardown: { destroyAfterEach: false }, }); broadcastService = TestBed.inject(MsalBroadcastService); } diff --git a/lib/msal-angular/src/msal.guard.spec.ts b/lib/msal-angular/src/msal.guard.spec.ts index 4f4087862f..a201d2c7af 100644 --- a/lib/msal-angular/src/msal.guard.spec.ts +++ b/lib/msal-angular/src/msal.guard.spec.ts @@ -68,6 +68,7 @@ function initializeMsal(providers: any[] = []) { RouterTestingModule.withRoutes([]), ], providers: [MsalGuard, MsalService, MsalBroadcastService, ...providers], + teardown: { destroyAfterEach: false }, }); authService = TestBed.inject(MsalService); diff --git a/lib/msal-angular/src/msal.interceptor.spec.ts b/lib/msal-angular/src/msal.interceptor.spec.ts index 4d61d74aff..7d5ae07281 100644 --- a/lib/msal-angular/src/msal.interceptor.spec.ts +++ b/lib/msal-angular/src/msal.interceptor.spec.ts @@ -124,6 +124,7 @@ function initializeMsal() { }, Location, ], + teardown: { destroyAfterEach: false }, }); interceptor = TestBed.inject(MsalInterceptor); diff --git a/lib/msal-angular/src/msal.navigation.client.spec.ts b/lib/msal-angular/src/msal.navigation.client.spec.ts index af121ab1b9..3d1b1ee2b6 100644 --- a/lib/msal-angular/src/msal.navigation.client.spec.ts +++ b/lib/msal-angular/src/msal.navigation.client.spec.ts @@ -44,6 +44,7 @@ describe("MsalCustomNaviationClient", () => { MsalService, MsalGuard, ], + teardown: { destroyAfterEach: false }, }); authService = TestBed.inject(MsalService); navigationClient = TestBed.inject(MsalCustomNavigationClient); diff --git a/lib/msal-angular/src/msal.redirect.component.spec.ts b/lib/msal-angular/src/msal.redirect.component.spec.ts index c62dfe129c..7c9d059f92 100644 --- a/lib/msal-angular/src/msal.redirect.component.spec.ts +++ b/lib/msal-angular/src/msal.redirect.component.spec.ts @@ -27,6 +27,7 @@ function initializeMsal() { declarations: [MsalRedirectComponent], imports: [MsalModule.forRoot(MSALInstanceFactory(), null, null)], providers: [], + teardown: { destroyAfterEach: false }, }); authService = TestBed.inject(MsalService); diff --git a/lib/msal-angular/src/msal.service.spec.ts b/lib/msal-angular/src/msal.service.spec.ts index ebe680c4fb..b22c5dd630 100644 --- a/lib/msal-angular/src/msal.service.spec.ts +++ b/lib/msal-angular/src/msal.service.spec.ts @@ -30,6 +30,7 @@ function initializeMsal() { }), ], providers: [MsalService, MsalBroadcastService], + teardown: { destroyAfterEach: false }, }); authService = TestBed.inject(MsalService); @@ -198,7 +199,7 @@ describe("MsalService", () => { authService.ssoSilent(request).subscribe({ error: (error: AuthError) => { - expect(error.message).toBe(sampleError.message); + expect(error.errorMessage).toBe(sampleError.errorMessage); expect( PublicClientApplication.prototype.ssoSilent ).toHaveBeenCalledWith(request); @@ -259,7 +260,7 @@ describe("MsalService", () => { authService.acquireTokenSilent(request).subscribe({ error: (error: AuthError) => { - expect(error.message).toBe(sampleError.message); + expect(error.errorMessage).toBe(sampleError.errorMessage); expect( PublicClientApplication.prototype.acquireTokenSilent ).toHaveBeenCalledWith(request); @@ -339,7 +340,7 @@ describe("MsalService", () => { authService.acquireTokenPopup(request).subscribe({ error: (error: AuthError) => { - expect(error.message).toBe(sampleError.message); + expect(error.errorMessage).toBe(sampleError.errorMessage); expect( PublicClientApplication.prototype.acquireTokenPopup ).toHaveBeenCalledWith(request); diff --git a/lib/msal-angular/src/msal.service.ts b/lib/msal-angular/src/msal.service.ts index a23870a814..175fbe9111 100644 --- a/lib/msal-angular/src/msal.service.ts +++ b/lib/msal-angular/src/msal.service.ts @@ -16,6 +16,7 @@ import { SsoSilentRequest, Logger, WrapperSKU, + AuthError, } from "@azure/msal-browser"; import { Observable, from } from "rxjs"; import { IMsalService } from "./IMsalService"; @@ -61,11 +62,8 @@ export class MsalService implements IMsalService { .then(() => this.instance.handleRedirectPromise(hash || this.redirectHash) ) - .catch((error) => { - this.logger.error( - "Error while executing handleRedirectPromise", - error - ); + .catch((error: AuthError) => { + this.logger.error("Error while executing handleRedirectPromise"); throw error; // Rethrow the error to ensure the return type matches }) .finally(() => { From a6f98bed1e22b7d392cbfc8409055fc3c0e534f0 Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Thu, 3 Apr 2025 20:23:53 -0700 Subject: [PATCH 08/11] added and updated unit test for bug fix --- .../src/msal.broadcast.service.spec.ts | 28 +++++++++++++++++++ lib/msal-angular/src/msal.service.spec.ts | 19 +++++++++++-- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/lib/msal-angular/src/msal.broadcast.service.spec.ts b/lib/msal-angular/src/msal.broadcast.service.spec.ts index e645d7db85..aca40331cc 100644 --- a/lib/msal-angular/src/msal.broadcast.service.spec.ts +++ b/lib/msal-angular/src/msal.broadcast.service.spec.ts @@ -443,4 +443,32 @@ describe("MsalBroadcastService", () => { InteractionType.Redirect ); }); + + it("automatically sets inProgress to None when handleRedirectPromise returns without emitting HANDLE_REDIRECT_END", (done) => { + const expectedInProgress = [ + InteractionStatus.Startup, + InteractionStatus.HandleRedirect, + InteractionStatus.None, + ]; + let index = 0; + + subscription = broadcastService.inProgress$.subscribe((result) => { + expect(result).toEqual(expectedInProgress[index]); + if (index === expectedInProgress.length - 1) { + done(); + } else if ( + expectedInProgress[index] === InteractionStatus.HandleRedirect + ) { + index++; + broadcastService.resetInProgressEvent(); + } else { + index++; + } + }); + + eventHandler.emitEvent( + EventType.HANDLE_REDIRECT_START, + InteractionType.Redirect + ); + }); }); diff --git a/lib/msal-angular/src/msal.service.spec.ts b/lib/msal-angular/src/msal.service.spec.ts index b22c5dd630..59a53662c8 100644 --- a/lib/msal-angular/src/msal.service.spec.ts +++ b/lib/msal-angular/src/msal.service.spec.ts @@ -2,12 +2,14 @@ import { TestBed } from "@angular/core/testing"; import { AuthenticationResult, AuthError, + InteractionStatus, InteractionType, Logger, PublicClientApplication, SilentRequest, } from "@azure/msal-browser"; import { MsalModule, MsalBroadcastService, MsalService } from "./public-api"; +import { takeLast } from "rxjs/operators"; let authService: MsalService; let broadcastService: MsalBroadcastService; @@ -351,11 +353,14 @@ describe("MsalService", () => { }); describe("handleRedirectObservable", () => { - it("success", (done) => { + it("success and resets inProgress event to none", (done) => { const sampleAccessToken = { accessToken: "123abc", }; + //@ts-ignore + broadcastService._inProgress.next(InteractionStatus.Startup); + spyOn(PublicClientApplication.prototype, "initialize").and.returnValue( Promise.resolve() ); @@ -380,13 +385,19 @@ describe("MsalService", () => { expect( PublicClientApplication.prototype.handleRedirectPromise ).toHaveBeenCalled(); + broadcastService.inProgress$.subscribe((result) => { + expect(result).toBe(InteractionStatus.None); + }); done(); }); }); - it("failure", (done) => { + it("failure and also resets inProgress event to none", (done) => { const sampleError = new AuthError("123", "message"); + //@ts-ignore + broadcastService._inProgress.next(InteractionStatus.Startup); + spyOn(PublicClientApplication.prototype, "initialize").and.returnValue( Promise.resolve() ); @@ -409,6 +420,10 @@ describe("MsalService", () => { expect( PublicClientApplication.prototype.handleRedirectPromise ).toHaveBeenCalled(); + broadcastService.inProgress$.pipe(takeLast(1)).subscribe((result) => { + console.log("failure result", result); + expect(result).toBe(InteractionStatus.None); + }); done(); }, }); From d2157849b121e5ba0fc57ee7f5ff964411d2328d Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Fri, 4 Apr 2025 09:42:48 -0700 Subject: [PATCH 09/11] removed HRP error handling from angular --- lib/msal-angular/src/msal.service.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/msal-angular/src/msal.service.ts b/lib/msal-angular/src/msal.service.ts index 175fbe9111..b17ada1473 100644 --- a/lib/msal-angular/src/msal.service.ts +++ b/lib/msal-angular/src/msal.service.ts @@ -62,10 +62,6 @@ export class MsalService implements IMsalService { .then(() => this.instance.handleRedirectPromise(hash || this.redirectHash) ) - .catch((error: AuthError) => { - this.logger.error("Error while executing handleRedirectPromise"); - throw error; // Rethrow the error to ensure the return type matches - }) .finally(() => { // update inProgress state to none this.injector.get(MsalBroadcastService).resetInProgressEvent(); From b4a57fd53ff8ea4cf304104efa917377b91b4e45 Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Fri, 4 Apr 2025 10:48:23 -0700 Subject: [PATCH 10/11] added condition for resetting inProgress event --- lib/msal-angular/src/msal.broadcast.service.spec.ts | 9 +++------ lib/msal-angular/src/msal.broadcast.service.ts | 4 +++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/msal-angular/src/msal.broadcast.service.spec.ts b/lib/msal-angular/src/msal.broadcast.service.spec.ts index aca40331cc..589791d477 100644 --- a/lib/msal-angular/src/msal.broadcast.service.spec.ts +++ b/lib/msal-angular/src/msal.broadcast.service.spec.ts @@ -444,10 +444,9 @@ describe("MsalBroadcastService", () => { ); }); - it("automatically sets inProgress to None when handleRedirectPromise returns without emitting HANDLE_REDIRECT_END", (done) => { + it("automatically sets inProgress to None when handleRedirectPromise returns without emitting an event", (done) => { const expectedInProgress = [ InteractionStatus.Startup, - InteractionStatus.HandleRedirect, InteractionStatus.None, ]; let index = 0; @@ -456,9 +455,7 @@ describe("MsalBroadcastService", () => { expect(result).toEqual(expectedInProgress[index]); if (index === expectedInProgress.length - 1) { done(); - } else if ( - expectedInProgress[index] === InteractionStatus.HandleRedirect - ) { + } else if (expectedInProgress[index] === InteractionStatus.Startup) { index++; broadcastService.resetInProgressEvent(); } else { @@ -467,7 +464,7 @@ describe("MsalBroadcastService", () => { }); eventHandler.emitEvent( - EventType.HANDLE_REDIRECT_START, + EventType.INITIALIZE_START, InteractionType.Redirect ); }); diff --git a/lib/msal-angular/src/msal.broadcast.service.ts b/lib/msal-angular/src/msal.broadcast.service.ts index 38c8c583ec..218ea2b9f7 100644 --- a/lib/msal-angular/src/msal.broadcast.service.ts +++ b/lib/msal-angular/src/msal.broadcast.service.ts @@ -76,6 +76,8 @@ export class MsalBroadcastService { * Resets inProgress state to None */ resetInProgressEvent(): void { - this._inProgress.next(InteractionStatus.None); + if (this._inProgress.value === InteractionStatus.Startup) { + this._inProgress.next(InteractionStatus.None); + } } } From d65993b8f0637f2f5d6d9354169848c41a1cb776 Mon Sep 17 00:00:00 2001 From: Lalima Sharda Date: Fri, 4 Apr 2025 11:57:59 -0700 Subject: [PATCH 11/11] fixed linting error --- lib/msal-angular/src/msal.service.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/msal-angular/src/msal.service.ts b/lib/msal-angular/src/msal.service.ts index b17ada1473..6a440d14dd 100644 --- a/lib/msal-angular/src/msal.service.ts +++ b/lib/msal-angular/src/msal.service.ts @@ -16,7 +16,6 @@ import { SsoSilentRequest, Logger, WrapperSKU, - AuthError, } from "@azure/msal-browser"; import { Observable, from } from "rxjs"; import { IMsalService } from "./IMsalService";