@memberjunction/ng-auth-services 0.9.56 → 0.9.64

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.
@@ -1,15 +1,15 @@
1
- import { Observable } from 'rxjs';
2
- import * as i0 from "@angular/core";
3
- export declare abstract class MJAuthBase {
4
- authenticated: boolean;
5
- constructor();
6
- abstract login(options?: any): any;
7
- abstract logout(): any;
8
- abstract isAuthenticated(): any;
9
- abstract getUser(): any;
10
- abstract getUserClaims(): Observable<any>;
11
- abstract checkExpiredTokenError(error: string): boolean;
12
- protected setAuthenticated(value: boolean): void;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<MJAuthBase, never>;
14
- static ɵprov: i0.ɵɵInjectableDeclaration<MJAuthBase>;
15
- }
1
+ import { Observable } from 'rxjs';
2
+ import * as i0 from "@angular/core";
3
+ export declare abstract class MJAuthBase {
4
+ authenticated: boolean;
5
+ constructor();
6
+ abstract login(options?: any): Promise<any>;
7
+ abstract logout(): Promise<any>;
8
+ abstract isAuthenticated(): Promise<any>;
9
+ abstract getUser(): Promise<any>;
10
+ abstract getUserClaims(): Promise<Observable<any>>;
11
+ abstract checkExpiredTokenError(error: string): boolean;
12
+ protected setAuthenticated(value: boolean): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<MJAuthBase, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<MJAuthBase>;
15
+ }
@@ -1,18 +1,18 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class MJAuthBase {
4
- constructor() {
5
- this.authenticated = false;
6
- }
7
- setAuthenticated(value) {
8
- this.authenticated = value;
9
- }
10
- }
11
- MJAuthBase.ɵfac = function MJAuthBase_Factory(t) { return new (t || MJAuthBase)(); };
12
- MJAuthBase.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MJAuthBase, factory: MJAuthBase.ɵfac, providedIn: 'root' });
13
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAuthBase, [{
14
- type: Injectable,
15
- args: [{
16
- providedIn: 'root'
17
- }]
18
- }], function () { return []; }, null); })();
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class MJAuthBase {
4
+ constructor() {
5
+ this.authenticated = false;
6
+ }
7
+ setAuthenticated(value) {
8
+ this.authenticated = value;
9
+ }
10
+ }
11
+ MJAuthBase.ɵfac = function MJAuthBase_Factory(t) { return new (t || MJAuthBase)(); };
12
+ MJAuthBase.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MJAuthBase, factory: MJAuthBase.ɵfac, providedIn: 'root' });
13
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAuthBase, [{
14
+ type: Injectable,
15
+ args: [{
16
+ providedIn: 'root'
17
+ }]
18
+ }], () => [], null); })();
@@ -1,16 +1,16 @@
1
- import { MJAuthBase } from './mjexplorer-auth-base.service';
2
- import { AuthService, User } from '@auth0/auth0-angular';
3
- import { Observable } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- export declare class MJAuth0Provider extends MJAuthBase {
6
- auth: AuthService;
7
- constructor(auth: AuthService);
8
- login(options?: any): any;
9
- logout(): void;
10
- getUser(): Observable<User | null | undefined>;
11
- isAuthenticated(): Observable<boolean>;
12
- getUserClaims(): Observable<any>;
13
- checkExpiredTokenError(error: string): boolean;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<MJAuth0Provider, never>;
15
- static ɵprov: i0.ɵɵInjectableDeclaration<MJAuth0Provider>;
16
- }
1
+ import { MJAuthBase } from './mjexplorer-auth-base.service';
2
+ import { AuthService, User } from '@auth0/auth0-angular';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class MJAuth0Provider extends MJAuthBase {
6
+ auth: AuthService;
7
+ constructor(auth: AuthService);
8
+ login(options?: any): any;
9
+ logout(): Promise<void>;
10
+ getUser(): Promise<Observable<User | null | undefined>>;
11
+ isAuthenticated(): Promise<Observable<boolean>>;
12
+ getUserClaims(): Promise<Observable<any>>;
13
+ checkExpiredTokenError(error: string): boolean;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<MJAuth0Provider, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<MJAuth0Provider>;
16
+ }
@@ -1,39 +1,56 @@
1
- import { Injectable } from '@angular/core';
2
- import { MJAuthBase } from './mjexplorer-auth-base.service';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@auth0/auth0-angular";
5
- export class MJAuth0Provider extends MJAuthBase {
6
- constructor(auth) {
7
- super();
8
- this.auth = auth;
9
- this.auth.isAuthenticated$.subscribe((loggedIn) => {
10
- this.setAuthenticated(loggedIn);
11
- });
12
- }
13
- login(options) {
14
- this.auth.loginWithRedirect(options);
15
- }
16
- logout() {
17
- this.auth.logout({ logoutParams: { returnTo: document.location.origin } });
18
- }
19
- getUser() {
20
- return this.auth.user$;
21
- }
22
- isAuthenticated() {
23
- return this.auth.isAuthenticated$;
24
- }
25
- getUserClaims() {
26
- return this.auth.idTokenClaims$;
27
- }
28
- checkExpiredTokenError(error) {
29
- return error === null || error === void 0 ? void 0 : error.includes('jwt expired');
30
- }
31
- }
32
- MJAuth0Provider.ɵfac = function MJAuth0Provider_Factory(t) { return new (t || MJAuth0Provider)(i0.ɵɵinject(i1.AuthService)); };
33
- MJAuth0Provider.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MJAuth0Provider, factory: MJAuth0Provider.ɵfac, providedIn: 'root' });
34
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAuth0Provider, [{
35
- type: Injectable,
36
- args: [{
37
- providedIn: 'root'
38
- }]
39
- }], function () { return [{ type: i1.AuthService }]; }, null); })();
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Injectable } from '@angular/core';
11
+ import { MJAuthBase } from './mjexplorer-auth-base.service';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@auth0/auth0-angular";
14
+ export class MJAuth0Provider extends MJAuthBase {
15
+ constructor(auth) {
16
+ super();
17
+ this.auth = auth;
18
+ this.auth.isAuthenticated$.subscribe((loggedIn) => {
19
+ this.setAuthenticated(loggedIn);
20
+ });
21
+ }
22
+ login(options) {
23
+ this.auth.loginWithRedirect(options);
24
+ }
25
+ logout() {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ this.auth.logout({ logoutParams: { returnTo: document.location.origin } });
28
+ });
29
+ }
30
+ getUser() {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ return this.auth.user$;
33
+ });
34
+ }
35
+ isAuthenticated() {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ return this.auth.isAuthenticated$;
38
+ });
39
+ }
40
+ getUserClaims() {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ return this.auth.idTokenClaims$;
43
+ });
44
+ }
45
+ checkExpiredTokenError(error) {
46
+ return error === null || error === void 0 ? void 0 : error.includes('jwt expired');
47
+ }
48
+ }
49
+ MJAuth0Provider.ɵfac = function MJAuth0Provider_Factory(t) { return new (t || MJAuth0Provider)(i0.ɵɵinject(i1.AuthService)); };
50
+ MJAuth0Provider.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MJAuth0Provider, factory: MJAuth0Provider.ɵfac, providedIn: 'root' });
51
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAuth0Provider, [{
52
+ type: Injectable,
53
+ args: [{
54
+ providedIn: 'root'
55
+ }]
56
+ }], () => [{ type: i1.AuthService }], null); })();
@@ -1,19 +1,22 @@
1
- import { MJAuthBase } from './mjexplorer-auth-base.service';
2
- import { Observable } from 'rxjs';
3
- import { MsalBroadcastService, MsalService } from '@azure/msal-angular';
4
- import { AccountInfo } from '@azure/msal-common';
5
- import * as i0 from "@angular/core";
6
- export declare class MJMSALProvider extends MJAuthBase {
7
- auth: MsalService;
8
- private msalBroadcastService;
9
- private readonly _destroying$;
10
- constructor(auth: MsalService, msalBroadcastService: MsalBroadcastService);
11
- login(options?: any): Promise<any>;
12
- logout(): void;
13
- getUser(): AccountInfo | null;
14
- isAuthenticated(): Observable<boolean>;
15
- getUserClaims(): Observable<any>;
16
- checkExpiredTokenError(error: string): boolean;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<MJMSALProvider, never>;
18
- static ɵprov: i0.ɵɵInjectableDeclaration<MJMSALProvider>;
19
- }
1
+ import { MJAuthBase } from './mjexplorer-auth-base.service';
2
+ import { Observable } from 'rxjs';
3
+ import { MsalBroadcastService, MsalService } from '@azure/msal-angular';
4
+ import { AccountInfo } from '@azure/msal-common';
5
+ import * as i0 from "@angular/core";
6
+ export declare class MJMSALProvider extends MJAuthBase {
7
+ auth: MsalService;
8
+ private msalBroadcastService;
9
+ private readonly _destroying$;
10
+ private readonly _initializationCompleted$;
11
+ constructor(auth: MsalService, msalBroadcastService: MsalBroadcastService);
12
+ private initializeMSAL;
13
+ private ensureInitialized;
14
+ login(options?: any): Promise<any>;
15
+ logout(): Promise<void>;
16
+ getUser(): Promise<AccountInfo | null>;
17
+ isAuthenticated(): Promise<Observable<boolean>>;
18
+ getUserClaims(): Promise<Observable<any>>;
19
+ checkExpiredTokenError(error: string): boolean;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<MJMSALProvider, never>;
21
+ static ɵprov: i0.ɵɵInjectableDeclaration<MJMSALProvider>;
22
+ }
@@ -1,89 +1,119 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { Injectable } from '@angular/core';
11
- import { MJAuthBase } from './mjexplorer-auth-base.service';
12
- import { Subject, catchError, filter, from, map, of, throwError } from 'rxjs';
13
- import { CacheLookupPolicy, InteractionRequiredAuthError, InteractionStatus } from '@azure/msal-browser';
14
- import { LogError } from '@memberjunction/core';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@azure/msal-angular";
17
- export class MJMSALProvider extends MJAuthBase {
18
- constructor(auth, msalBroadcastService) {
19
- super();
20
- this.auth = auth;
21
- this.msalBroadcastService = msalBroadcastService;
22
- this._destroying$ = new Subject();
23
- this.auth.instance.setActiveAccount(this.auth.instance.getAllAccounts()[0] || null);
24
- this.msalBroadcastService.inProgress$
25
- .pipe(filter((status) => status === InteractionStatus.None))
26
- .subscribe(() => {
27
- this.setAuthenticated(this.auth.instance.getAllAccounts().length > 0);
28
- this.auth.instance.setActiveAccount(this.auth.instance.getAllAccounts()[0] || null);
29
- });
30
- }
31
- login(options) {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- const silentRequest = {
34
- scopes: ['User.Read', 'email', 'profile']
35
- };
36
- this.auth.loginRedirect(silentRequest).subscribe({
37
- next: () => {
38
- this.auth.instance.setActiveAccount(this.auth.instance.getAllAccounts()[0] || null);
39
- window.location.reload();
40
- },
41
- error: (error) => {
42
- LogError(error);
43
- }
44
- });
45
- });
46
- }
47
- logout() {
48
- this.auth.logoutRedirect().subscribe(() => {
49
- window.location.reload();
50
- });
51
- }
52
- getUser() {
53
- return this.auth.instance.getActiveAccount();
54
- }
55
- isAuthenticated() {
56
- return of(this.auth.instance.getActiveAccount() != null);
57
- }
58
- getUserClaims() {
59
- const account = this.auth.instance.getActiveAccount();
60
- const silentRequest = {
61
- scopes: ['User.Read', 'email', 'profile'],
62
- account: account,
63
- cacheLookupPolicy: CacheLookupPolicy.RefreshTokenAndNetwork
64
- };
65
- if (account) {
66
- return from(this.auth.instance.acquireTokenSilent(silentRequest)).pipe(map((response) => response), catchError((error) => {
67
- LogError(error);
68
- if (error instanceof InteractionRequiredAuthError) {
69
- return from(this.auth.instance.acquireTokenSilent(silentRequest));
70
- }
71
- return throwError(error);
72
- }));
73
- }
74
- else {
75
- return from(this.auth.instance.acquireTokenSilent(silentRequest));
76
- }
77
- }
78
- checkExpiredTokenError(error) {
79
- return error === null || error === void 0 ? void 0 : error.trim().toLowerCase().includes('you need to be authorized to perform');
80
- }
81
- }
82
- MJMSALProvider.ɵfac = function MJMSALProvider_Factory(t) { return new (t || MJMSALProvider)(i0.ɵɵinject(i1.MsalService), i0.ɵɵinject(i1.MsalBroadcastService)); };
83
- MJMSALProvider.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MJMSALProvider, factory: MJMSALProvider.ɵfac, providedIn: 'root' });
84
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJMSALProvider, [{
85
- type: Injectable,
86
- args: [{
87
- providedIn: 'root'
88
- }]
89
- }], function () { return [{ type: i1.MsalService }, { type: i1.MsalBroadcastService }]; }, null); })();
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Injectable } from '@angular/core';
11
+ import { MJAuthBase } from './mjexplorer-auth-base.service';
12
+ import { BehaviorSubject, Subject, catchError, filter, from, map, of, throwError, takeUntil, take, firstValueFrom } from 'rxjs';
13
+ import { CacheLookupPolicy, InteractionRequiredAuthError, InteractionStatus } from '@azure/msal-browser';
14
+ import { LogError } from '@memberjunction/core';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "@azure/msal-angular";
17
+ export class MJMSALProvider extends MJAuthBase {
18
+ constructor(auth, msalBroadcastService) {
19
+ super();
20
+ this.auth = auth;
21
+ this.msalBroadcastService = msalBroadcastService;
22
+ this._destroying$ = new Subject();
23
+ this._initializationCompleted$ = new BehaviorSubject(false);
24
+ this.initializeMSAL();
25
+ }
26
+ initializeMSAL() {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ yield this.auth.instance.initialize();
29
+ // After initialization logic
30
+ this.auth.instance.setActiveAccount(this.auth.instance.getAllAccounts()[0] || null);
31
+ this.msalBroadcastService.inProgress$
32
+ .pipe(filter((status) => status === InteractionStatus.None), takeUntil(this._destroying$))
33
+ .subscribe(() => {
34
+ this.setAuthenticated(this.auth.instance.getAllAccounts().length > 0);
35
+ this.auth.instance.setActiveAccount(this.auth.instance.getAllAccounts()[0] || null);
36
+ });
37
+ this._initializationCompleted$.next(true); // Signal initialization complete
38
+ });
39
+ }
40
+ // Ensure methods wait for initialization
41
+ ensureInitialized() {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ if (!this._initializationCompleted$.value) {
44
+ yield firstValueFrom(this._initializationCompleted$.pipe(filter(done => done), take(1)));
45
+ }
46
+ });
47
+ }
48
+ login(options) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ yield this.ensureInitialized();
51
+ const silentRequest = {
52
+ scopes: ['User.Read', 'email', 'profile']
53
+ };
54
+ this.auth.loginRedirect(silentRequest).subscribe({
55
+ next: () => {
56
+ this.auth.instance.setActiveAccount(this.auth.instance.getAllAccounts()[0] || null);
57
+ window.location.reload();
58
+ },
59
+ error: (error) => {
60
+ LogError(error);
61
+ }
62
+ });
63
+ });
64
+ }
65
+ logout() {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ yield this.ensureInitialized();
68
+ this.auth.logoutRedirect().subscribe(() => {
69
+ window.location.reload();
70
+ });
71
+ });
72
+ }
73
+ getUser() {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ yield this.ensureInitialized();
76
+ return this.auth.instance.getActiveAccount();
77
+ });
78
+ }
79
+ isAuthenticated() {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ yield this.ensureInitialized();
82
+ return of(this.auth.instance.getActiveAccount() != null);
83
+ });
84
+ }
85
+ getUserClaims() {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ yield this.ensureInitialized();
88
+ const account = this.auth.instance.getActiveAccount();
89
+ const silentRequest = {
90
+ scopes: ['User.Read', 'email', 'profile'],
91
+ account: account,
92
+ cacheLookupPolicy: CacheLookupPolicy.RefreshTokenAndNetwork
93
+ };
94
+ if (account) {
95
+ return from(this.auth.instance.acquireTokenSilent(silentRequest)).pipe(map((response) => response), catchError((error) => {
96
+ LogError(error);
97
+ if (error instanceof InteractionRequiredAuthError) {
98
+ return from(this.auth.instance.acquireTokenSilent(silentRequest));
99
+ }
100
+ return throwError(error);
101
+ }));
102
+ }
103
+ else {
104
+ return from(this.auth.instance.acquireTokenSilent(silentRequest));
105
+ }
106
+ });
107
+ }
108
+ checkExpiredTokenError(error) {
109
+ return error === null || error === void 0 ? void 0 : error.trim().toLowerCase().includes('you need to be authorized to perform');
110
+ }
111
+ }
112
+ MJMSALProvider.ɵfac = function MJMSALProvider_Factory(t) { return new (t || MJMSALProvider)(i0.ɵɵinject(i1.MsalService), i0.ɵɵinject(i1.MsalBroadcastService)); };
113
+ MJMSALProvider.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MJMSALProvider, factory: MJMSALProvider.ɵfac, providedIn: 'root' });
114
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJMSALProvider, [{
115
+ type: Injectable,
116
+ args: [{
117
+ providedIn: 'root'
118
+ }]
119
+ }], () => [{ type: i1.MsalService }, { type: i1.MsalBroadcastService }], null); })();
@@ -1,3 +1,3 @@
1
- export * from './lib/mjexplorer-auth-base.service';
2
- export * from './lib/mjexplorer-auth0-provider.service';
3
- export * from './lib/mjexplorer-msal-provider.service';
1
+ export * from './lib/mjexplorer-auth-base.service';
2
+ export * from './lib/mjexplorer-auth0-provider.service';
3
+ export * from './lib/mjexplorer-msal-provider.service';
@@ -1,6 +1,6 @@
1
- /*
2
- * Public API Surface
3
- */
4
- export * from './lib/mjexplorer-auth-base.service';
5
- export * from './lib/mjexplorer-auth0-provider.service';
6
- export * from './lib/mjexplorer-msal-provider.service';
1
+ /*
2
+ * Public API Surface
3
+ */
4
+ export * from './lib/mjexplorer-auth-base.service';
5
+ export * from './lib/mjexplorer-auth0-provider.service';
6
+ export * from './lib/mjexplorer-msal-provider.service';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-auth-services",
3
- "version": "0.9.56",
3
+ "version": "0.9.64",
4
4
  "description": "MemberJunction Explorer: Authentication Services",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -15,19 +15,19 @@
15
15
  "author": "",
16
16
  "license": "ISC",
17
17
  "devDependencies": {
18
- "@angular/compiler": "^15.2.0",
19
- "@angular/compiler-cli": "^15.2.0"
18
+ "@angular/compiler": "^17.1.2",
19
+ "@angular/compiler-cli": "^17.1.2"
20
20
  },
21
21
  "peerDependencies": {
22
- "@angular/common": "^15.2.0",
23
- "@angular/core": "^15.2.0",
24
- "@angular/forms": "^15.2.0",
25
- "@angular/router": "^15.2.0",
22
+ "@angular/common": "^17.1.2",
23
+ "@angular/core": "^17.1.2",
24
+ "@angular/forms": "^17.1.2",
25
+ "@angular/router": "^17.1.2",
26
26
  "@auth0/auth0-angular": "^2.2.1",
27
- "@azure/msal-angular": "^2.5.8"
27
+ "@azure/msal-angular": "^3.0.11"
28
28
  },
29
29
  "dependencies": {
30
- "@memberjunction/core": "^0.9.128",
30
+ "@memberjunction/core": "^0.9.134",
31
31
  "tslib": "^2.3.0"
32
32
  },
33
33
  "sideEffects": false