@equinor/fusion-framework-module-msal 7.0.0-next.0 → 7.1.0
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.
- package/CHANGELOG.md +85 -5
- package/README.md +77 -0
- package/dist/esm/MsalClient.js +12 -7
- package/dist/esm/MsalClient.js.map +1 -1
- package/dist/esm/MsalConfigurator.js +32 -0
- package/dist/esm/MsalConfigurator.js.map +1 -1
- package/dist/esm/MsalProvider.js +55 -0
- package/dist/esm/MsalProvider.js.map +1 -1
- package/dist/esm/create-proxy-provider.js +5 -2
- package/dist/esm/create-proxy-provider.js.map +1 -1
- package/dist/esm/static.js +8 -7
- package/dist/esm/static.js.map +1 -1
- package/dist/esm/v4/create-proxy-provider.js +73 -0
- package/dist/esm/v4/create-proxy-provider.js.map +1 -0
- package/dist/esm/v4/index.js +12 -0
- package/dist/esm/v4/index.js.map +1 -0
- package/dist/esm/v4/types.js +27 -0
- package/dist/esm/v4/types.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/versioning/resolve-version.js +17 -4
- package/dist/esm/versioning/resolve-version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/MsalClient.interface.d.ts +17 -1
- package/dist/types/MsalConfigurator.d.ts +28 -0
- package/dist/types/MsalProvider.d.ts +5 -0
- package/dist/types/static.d.ts +9 -8
- package/dist/types/v4/create-proxy-provider.d.ts +20 -0
- package/dist/types/v4/index.d.ts +12 -0
- package/dist/types/v4/types.d.ts +587 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +13 -6
- package/src/MsalClient.interface.ts +18 -0
- package/src/MsalClient.ts +22 -3
- package/src/MsalConfigurator.ts +33 -0
- package/src/MsalProvider.ts +58 -0
- package/src/MsalProxyProvider.interface.ts +1 -0
- package/src/create-proxy-provider.ts +5 -2
- package/src/static.ts +8 -7
- package/src/v4/create-proxy-provider.ts +74 -0
- package/src/v4/index.ts +13 -0
- package/src/v4/types.ts +727 -0
- package/src/version.ts +1 -1
- package/src/versioning/resolve-version.ts +17 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,77 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
## 7.
|
|
3
|
+
## 7.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#4000](https://github.com/equinor/fusion-framework/pull/4000) [`0b34d5d`](https://github.com/equinor/fusion-framework/commit/0b34d5d895c740a77fc995abeca910fdca1cf633) Thanks [@odinr](https://github.com/odinr)! - Add support for backend-issued auth code exchange in MSAL module
|
|
8
|
+
|
|
9
|
+
Enable automatic sign-in using a backend-issued SPA authorization code without requiring interactive MSAL login flows. This eliminates double-login issues and provides seamless user experience when backend pre-authenticates users.
|
|
10
|
+
|
|
11
|
+
**New API:**
|
|
12
|
+
|
|
13
|
+
- `MsalConfigurator.setAuthCode(authCode: string)` - Configure backend auth code for token exchange
|
|
14
|
+
- `IMsalClient.acquireTokenByCode(request)` - Exchange auth code for tokens (inherited from PublicClientApplication)
|
|
15
|
+
|
|
16
|
+
**How it works:**
|
|
17
|
+
|
|
18
|
+
1. Backend authenticates user and generates short-lived SPA auth code
|
|
19
|
+
2. Frontend calls `builder.setAuthCode(authCode)` during MSAL configuration
|
|
20
|
+
3. During `initialize()`, auth code is exchanged for tokens before `requiresAuth` check
|
|
21
|
+
4. Tokens are cached by MSAL - user is automatically signed in
|
|
22
|
+
5. Falls back to standard MSAL flows if exchange fails
|
|
23
|
+
|
|
24
|
+
**Example:**
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
enableMSAL(configurator, (builder) => {
|
|
28
|
+
builder.setClientConfig({
|
|
29
|
+
auth: { clientId: "app-id", tenantId: "tenant-id" },
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// Backend injects auth code as window.MSAL_AUTH_CODE during initial first page load
|
|
33
|
+
if (typeof window !== "undefined" && window.MSAL_AUTH_CODE) {
|
|
34
|
+
builder.setAuthCode(window.MSAL_AUTH_CODE);
|
|
35
|
+
delete (window as any).MSAL_AUTH_CODE; // Clear after consuming
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
builder.setRequiresAuth(true);
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Fixes: https://github.com/equinor/fusion-core-tasks/issues/271
|
|
43
|
+
|
|
44
|
+
## 7.0.0
|
|
45
|
+
|
|
46
|
+
### Major Changes
|
|
47
|
+
|
|
48
|
+
- [#3944](https://github.com/equinor/fusion-framework/pull/3944) [`cb37cae`](https://github.com/equinor/fusion-framework/commit/cb37cae45e06778e8d1ea20faed31b582e49fcae) Thanks [@dependabot](https://github.com/apps/dependabot)! - Upgrade @azure/msal-browser from v2.39.0 to v5.0.2
|
|
49
|
+
|
|
50
|
+
**Changes:**
|
|
51
|
+
|
|
52
|
+
- Updated MSAL browser dependency to v5.0.2
|
|
53
|
+
- Added V5 to MsalModuleVersion enum for version detection
|
|
54
|
+
- Updated version mapping logic to handle MSAL v5.x (maps to V5)
|
|
55
|
+
- Created v4 compatibility layer with frozen type snapshots from MSAL v5
|
|
56
|
+
- Fixed internal logger calls to include required correlationId parameter
|
|
57
|
+
- Added v4 export to package.json for consumers needing v4-compatible types
|
|
58
|
+
|
|
59
|
+
**Breaking changes:**
|
|
60
|
+
None - all changes are internal. Consumer API remains unchanged and fully backward compatible.
|
|
61
|
+
|
|
62
|
+
**Migration:**
|
|
63
|
+
No action required. The module automatically detects and uses MSAL v5 when available, while maintaining compatibility with existing code through version proxies.
|
|
64
|
+
|
|
65
|
+
## 6.0.5
|
|
4
66
|
|
|
5
67
|
### Patch Changes
|
|
6
68
|
|
|
7
|
-
- [#
|
|
69
|
+
- [#3866](https://github.com/equinor/fusion-framework/pull/3866) [`f70d66f`](https://github.com/equinor/fusion-framework/commit/f70d66f1bc826e614140adb2c6ee052f98e3b3da) Thanks [@dependabot](https://github.com/apps/dependabot)! - Internal: Dedupe zod dependency to 4.3.5
|
|
70
|
+
|
|
71
|
+
Deduplicated zod dependency to version 4.3.5 across all packages using `pnpm dedupe`. This aligns all packages (AI plugins upgraded from v3.25.76, other packages consolidated from v4.1.8/v4.1.11) to use the same latest stable version, improving consistency and reducing bundle size. All builds, tests, and linting pass successfully.
|
|
8
72
|
|
|
9
|
-
- Updated dependencies [[`
|
|
10
|
-
- @equinor/fusion-framework-module-telemetry@
|
|
11
|
-
- @equinor/fusion-framework-module@5.0.6-next.0
|
|
73
|
+
- Updated dependencies [[`f70d66f`](https://github.com/equinor/fusion-framework/commit/f70d66f1bc826e614140adb2c6ee052f98e3b3da)]:
|
|
74
|
+
- @equinor/fusion-framework-module-telemetry@4.6.1
|
|
12
75
|
|
|
13
76
|
## 6.0.4
|
|
14
77
|
|
|
@@ -72,6 +135,7 @@
|
|
|
72
135
|
**🚀 Enhanced features available** - New v4 APIs provide better performance, security, and error handling.
|
|
73
136
|
|
|
74
137
|
## What You Get
|
|
138
|
+
|
|
75
139
|
- **Better Security**: Latest MSAL v4 security improvements and vulnerability fixes
|
|
76
140
|
- **Improved Performance**: Faster token acquisition and caching
|
|
77
141
|
- **Enhanced Error Handling**: More robust error recovery and retry mechanisms
|
|
@@ -116,6 +180,7 @@
|
|
|
116
180
|
- [#3714](https://github.com/equinor/fusion-framework/pull/3714) [`11fe961`](https://github.com/equinor/fusion-framework/commit/11fe961794e4960ccb987bc320268cc9b263f1f8) Thanks [@odinr](https://github.com/odinr)! - Add optional provider-level telemetry for MSAL flows and update interface methods.
|
|
117
181
|
|
|
118
182
|
**BREAKING CHANGES:**
|
|
183
|
+
|
|
119
184
|
- `acquireAccessToken(options: AcquireTokenOptions)` → `acquireAccessToken(options: AcquireTokenOptionsLegacy)`
|
|
120
185
|
- `acquireToken(options: AcquireTokenOptions)` → `acquireToken(options: AcquireTokenOptionsLegacy)`
|
|
121
186
|
- `logout(options?: LogoutOptions): Promise<void>` → `logout(options?: LogoutOptions): Promise<boolean>`
|
|
@@ -123,6 +188,7 @@
|
|
|
123
188
|
- Added `initialize(): Promise<void>` method
|
|
124
189
|
|
|
125
190
|
**New Features:**
|
|
191
|
+
|
|
126
192
|
- Optional provider-level telemetry for MSAL flows (login, token acquisition, redirect handling)
|
|
127
193
|
- Emits telemetry events and measurements via injected telemetry provider when available
|
|
128
194
|
- Includes basic metadata (framework module version, clientId, tenantId) and authentication context
|
|
@@ -175,6 +241,7 @@
|
|
|
175
241
|
### Minor Changes
|
|
176
242
|
|
|
177
243
|
- [#3573](https://github.com/equinor/fusion-framework/pull/3573) [`b42b116`](https://github.com/equinor/fusion-framework/commit/b42b11616487c534e8e01f2df126e2ad05ce6a8f) Thanks [@odinr](https://github.com/odinr)! - Refactored AuthProvider to use a cleaner `client` property instead of deprecated `defaultClient`.
|
|
244
|
+
|
|
178
245
|
- Added `client` property to IAuthProvider interface
|
|
179
246
|
- Replaced deprecated `defaultClient` getter with `client` getter
|
|
180
247
|
- Updated internal references to use private `#client` field
|
|
@@ -183,12 +250,14 @@
|
|
|
183
250
|
- [#3572](https://github.com/equinor/fusion-framework/pull/3572) [`2d90f8b`](https://github.com/equinor/fusion-framework/commit/2d90f8b3806aa3deec5ca60142d38118748b1d3e) Thanks [@odinr](https://github.com/odinr)! - Refactored MSAL versioning module to use warnings instead of errors for version incompatibilities.
|
|
184
251
|
|
|
185
252
|
**Changes:**
|
|
253
|
+
|
|
186
254
|
- Removed `create-version-message.ts` and `static.ts` utility files
|
|
187
255
|
- Modified `resolveVersion()` to collect warnings for version mismatches instead of throwing errors
|
|
188
256
|
- Simplified `VersionError` class by removing factory methods and type enum references
|
|
189
257
|
- Updated tests to reflect new warning-based behavior
|
|
190
258
|
|
|
191
259
|
**Breaking Changes:**
|
|
260
|
+
|
|
192
261
|
- Version resolution now returns warnings for incompatible versions instead of throwing errors
|
|
193
262
|
- This change is backward compatible as existing code will continue to work, but error handling behavior has changed
|
|
194
263
|
|
|
@@ -202,6 +271,7 @@
|
|
|
202
271
|
- [#3442](https://github.com/equinor/fusion-framework/pull/3442) [`3b614f8`](https://github.com/equinor/fusion-framework/commit/3b614f87138f5a52f8ccc50ca8c6598ef3db37d6) Thanks [@asbjornhaland](https://github.com/asbjornhaland)! - Update biome to latest version
|
|
203
272
|
|
|
204
273
|
- [#3428](https://github.com/equinor/fusion-framework/pull/3428) [`1700ca8`](https://github.com/equinor/fusion-framework/commit/1700ca8851fa108e55e9729fd24f595272766e63) Thanks [@dependabot](https://github.com/apps/dependabot)! - Update zod from 4.1.9 to 4.1.11
|
|
274
|
+
|
|
205
275
|
- **v4.1.10**: Fixed shape caching issue (#5263) improving validation performance for complex schemas
|
|
206
276
|
- **v4.1.11**: Maintenance release with general improvements
|
|
207
277
|
|
|
@@ -219,6 +289,7 @@
|
|
|
219
289
|
Updated source code to migrate from zod v3 to v4. Updated zod dependency from v3.25.76 to v4.1.8 and modified authentication configuration schemas in the MSAL module to be compatible with zod v4's stricter type checking and updated API.
|
|
220
290
|
|
|
221
291
|
Key changes in source code:
|
|
292
|
+
|
|
222
293
|
- Updated `AuthClientConfigSchema` and `AuthConfigSchema` for zod v4 compatibility
|
|
223
294
|
- Enhanced version schema transformation to work with zod v4
|
|
224
295
|
- Improved validation of client configuration (clientId, tenantId, redirectUri)
|
|
@@ -227,6 +298,7 @@
|
|
|
227
298
|
Breaking changes: Schema validation behavior may differ due to zod v4's stricter type checking. Error message format has changed from zod v3 to v4 format. Function schema definitions now require explicit typing.
|
|
228
299
|
|
|
229
300
|
Links:
|
|
301
|
+
|
|
230
302
|
- [Zod v4 Migration Guide](https://github.com/colinhacks/zod/releases/tag/v4.0.0)
|
|
231
303
|
- [Zod v4.1.8 Release Notes](https://github.com/colinhacks/zod/releases/tag/v4.1.8)
|
|
232
304
|
|
|
@@ -237,6 +309,7 @@
|
|
|
237
309
|
- [#3376](https://github.com/equinor/fusion-framework/pull/3376) [`da373ad`](https://github.com/equinor/fusion-framework/commit/da373ade663898b2628e28529b6e3dea3b91ed43) Thanks [@odinr](https://github.com/odinr)! - Improved MSAL module version checking to be more permissive for minor and patch versions.
|
|
238
310
|
|
|
239
311
|
Fixes: #3375
|
|
312
|
+
|
|
240
313
|
- Refactored version checking logic into dedicated versioning module
|
|
241
314
|
- Made version checking more permissive for minor and patch versions
|
|
242
315
|
- Only major version incompatibilities will block execution
|
|
@@ -251,6 +324,7 @@
|
|
|
251
324
|
### Patch Changes
|
|
252
325
|
|
|
253
326
|
- [#3343](https://github.com/equinor/fusion-framework/pull/3343) [`68dc22f`](https://github.com/equinor/fusion-framework/commit/68dc22f582bb68fbc94f29ad053122f81c049405) Thanks [@odinr](https://github.com/odinr)! - Enhanced documentation with comprehensive guides and improved developer experience.
|
|
327
|
+
|
|
254
328
|
- **Complete documentation rewrite** with better structure and organization
|
|
255
329
|
- **Added comprehensive API reference** with detailed interface documentation
|
|
256
330
|
- **Enhanced configuration guide** with clear required/optional settings tables
|
|
@@ -261,6 +335,7 @@
|
|
|
261
335
|
- **Added package description** for better npm package visibility
|
|
262
336
|
|
|
263
337
|
**Key Improvements:**
|
|
338
|
+
|
|
264
339
|
- Clear separation between required and optional configuration
|
|
265
340
|
- Comprehensive API reference with TypeScript interfaces
|
|
266
341
|
- Migration guidance for v4 breaking changes
|
|
@@ -281,6 +356,7 @@
|
|
|
281
356
|
### Patch Changes
|
|
282
357
|
|
|
283
358
|
- [#3088](https://github.com/equinor/fusion-framework/pull/3088) [`7441b13`](https://github.com/equinor/fusion-framework/commit/7441b13aa50dd7362d1629086a27b6b4e571575d) Thanks [@eikeland](https://github.com/eikeland)! - chore: update package typesVersions
|
|
359
|
+
|
|
284
360
|
- Updated package.json typesVersions.
|
|
285
361
|
- Ensures backward compatibility with older node versions.
|
|
286
362
|
- Ensured consistency with workspace and repository configuration.
|
|
@@ -346,6 +422,7 @@
|
|
|
346
422
|
- [#2814](https://github.com/equinor/fusion-framework/pull/2814) [`ea4b522`](https://github.com/equinor/fusion-framework/commit/ea4b5221b30719289fc947b5dbb0acd3ea52ffaa) Thanks [@odinr](https://github.com/odinr)! - Rework of the MSAL module to support module hoisting. This means that sub modules instances will proxy the parent module instance. This means that the module instance will be shared between all instances of the module.
|
|
347
423
|
|
|
348
424
|
**Highlights:**
|
|
425
|
+
|
|
349
426
|
- Versioning module, config and provider.
|
|
350
427
|
- Interfaces for MSAL versions
|
|
351
428
|
- Proxy provider instances for sub modules.
|
|
@@ -353,6 +430,7 @@
|
|
|
353
430
|
- Configurator using `BaseConfigBuilder` (aligned with other modules)
|
|
354
431
|
|
|
355
432
|
**BREAKING CHANGES:**
|
|
433
|
+
|
|
356
434
|
- `configureMsal` has changed parameter signature to `configureMsal(msalConfigurator: MsalConfigurator): void`
|
|
357
435
|
- Added `enableMsal` with parameter signature to `enableMsal(configurator: IModulesConfigurator, configureMsal: (msalConfigurator: MsalConfigurator) => void): void`
|
|
358
436
|
|
|
@@ -411,6 +489,7 @@
|
|
|
411
489
|
- [#2320](https://github.com/equinor/fusion-framework/pull/2320) [`1dd85f3`](https://github.com/equinor/fusion-framework/commit/1dd85f3a408a73df556d1812a5f280945cc100ee) Thanks [@odinr](https://github.com/odinr)! - Removed the `removeComments` option from the `tsconfig.base.json` file.
|
|
412
490
|
|
|
413
491
|
Removing the `removeComments` option allows TypeScript to preserve comments in the compiled JavaScript output. This can be beneficial for several reasons:
|
|
492
|
+
|
|
414
493
|
1. Improved debugging: Preserved comments can help developers understand the code better during debugging sessions.
|
|
415
494
|
2. Documentation: JSDoc comments and other important code documentation will be retained in the compiled output.
|
|
416
495
|
3. Source map accuracy: Keeping comments can lead to more accurate source maps, which is crucial for debugging and error tracking.
|
|
@@ -536,6 +615,7 @@
|
|
|
536
615
|
### Patch Changes
|
|
537
616
|
|
|
538
617
|
- [#905](https://github.com/equinor/fusion-framework/pull/905) [`a7858a1c`](https://github.com/equinor/fusion-framework/commit/a7858a1c01542e2dc94370709f122b4b99c3219c) Thanks [@odinr](https://github.com/odinr)! - **🚧 Chore: dedupe packages**
|
|
618
|
+
|
|
539
619
|
- align all versions of typescript
|
|
540
620
|
- update types to build
|
|
541
621
|
- a couple of typecasts did not [satisfies](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-0.html#satisfies-support-in-jsdoc) and was recasted as `unknwon`, marked with `TODO`, should be fixed in future
|
package/README.md
CHANGED
|
@@ -78,6 +78,83 @@ try {
|
|
|
78
78
|
> [!IMPORTANT]
|
|
79
79
|
> The `@equinor/fusion-framework-app` enables this package by default, so applications using the app package do not need to enable this module manually.
|
|
80
80
|
|
|
81
|
+
## Backend-Issued Auth Code Flow
|
|
82
|
+
|
|
83
|
+
Enable automatic sign-in using a backend-issued authorization code without interactive login prompts.
|
|
84
|
+
|
|
85
|
+
### Overview
|
|
86
|
+
|
|
87
|
+
When your backend authenticates a user and generates a short-lived SPA auth code, the MSAL module can exchange it for tokens during initialization, eliminating double-login issues and providing seamless authentication.
|
|
88
|
+
|
|
89
|
+
### Usage
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { enableMSAL } from '@equinor/fusion-framework-module-msal';
|
|
93
|
+
|
|
94
|
+
enableMSAL(configurator, (builder) => {
|
|
95
|
+
builder.setClientConfig({
|
|
96
|
+
auth: {
|
|
97
|
+
clientId: 'your-client-id',
|
|
98
|
+
tenantId: 'your-tenant-id'
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// Backend injects auth code as window.MSAL_AUTH_CODE during initial first page load
|
|
103
|
+
// This is the most secure approach - only available on first render, cleared after use
|
|
104
|
+
if (typeof window !== 'undefined' && window.MSAL_AUTH_CODE) {
|
|
105
|
+
builder.setAuthCode(window.MSAL_AUTH_CODE);
|
|
106
|
+
delete (window as any).MSAL_AUTH_CODE; // Clear after consuming
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
builder.setRequiresAuth(true);
|
|
110
|
+
});
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### How It Works
|
|
114
|
+
|
|
115
|
+
1. Backend authenticates user and generates short-lived auth code
|
|
116
|
+
2. Frontend passes auth code to MSAL: `builder.setAuthCode(authCode)`
|
|
117
|
+
3. During `initialize()`: auth code exchanged for tokens (before `requiresAuth` check)
|
|
118
|
+
4. Tokens cached by MSAL → user automatically signed in
|
|
119
|
+
5. Falls back to standard MSAL flows on exchange failure
|
|
120
|
+
|
|
121
|
+
### API: `setAuthCode(authCode: string)`
|
|
122
|
+
|
|
123
|
+
Sets backend-issued auth code for token exchange during initialization.
|
|
124
|
+
|
|
125
|
+
**Returns:** configurator instance (chainable)
|
|
126
|
+
|
|
127
|
+
**Behavior:**
|
|
128
|
+
- Exchange happens before `requiresAuth` check
|
|
129
|
+
- On success: user auto-authenticated, no login prompt
|
|
130
|
+
- On failure: falls back to standard MSAL login
|
|
131
|
+
- Auth code cleared after exchange (no reuse)
|
|
132
|
+
|
|
133
|
+
**Example:**
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
// Best practice: Backend injects auth code on initial page load as window.MSAL_AUTH_CODE
|
|
137
|
+
if (typeof window !== 'undefined' && window.MSAL_AUTH_CODE) {
|
|
138
|
+
builder.setAuthCode(window.MSAL_AUTH_CODE);
|
|
139
|
+
delete (window as any).MSAL_AUTH_CODE; // Clear after consuming to prevent reuse
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Security
|
|
144
|
+
|
|
145
|
+
- ✅ Auth codes: single-use, short-lived (5-10 min)
|
|
146
|
+
- ✅ MSAL validates tokens from Microsoft authority
|
|
147
|
+
- ✅ Tokens stored securely, refresh tokens auto-managed
|
|
148
|
+
- ⚠️ Pass codes securely: HTTPS, HTTP-only cookies, or encrypted channels
|
|
149
|
+
|
|
150
|
+
### Troubleshooting
|
|
151
|
+
|
|
152
|
+
| Issue | Solution |
|
|
153
|
+
|-------|----------|
|
|
154
|
+
| Auth code not exchanged | Verify `setAuthCode()` called before init |
|
|
155
|
+
| Invalid auth code error | Confirm backend `WithSpaAuthCode` enabled, code is fresh |
|
|
156
|
+
| Still shows login prompt | Check auth code exchange completes before `requiresAuth` check |
|
|
157
|
+
| Exchange fails | Auth code may have expired; backend should generate fresh code per load |
|
|
81
158
|
|
|
82
159
|
## Configuration
|
|
83
160
|
|
package/dist/esm/MsalClient.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { PublicClientApplication, } from '@azure/msal-browser';
|
|
2
|
+
/**
|
|
3
|
+
* Fallback correlation ID for logger calls when request doesn't provide one.
|
|
4
|
+
* Empty string indicates a non-request-specific log (validation, configuration warnings).
|
|
5
|
+
*/
|
|
6
|
+
const FUSION_CORRELATION_ID = '';
|
|
2
7
|
/**
|
|
3
8
|
* MSAL v4 client implementation with extended properties and methods.
|
|
4
9
|
*
|
|
@@ -83,14 +88,14 @@ export class MsalClient extends PublicClientApplication {
|
|
|
83
88
|
// This provides better UX by avoiding unnecessary popups/redirects
|
|
84
89
|
if (options.silent) {
|
|
85
90
|
if (!options.request.account && !options.request.loginHint) {
|
|
86
|
-
this.getLogger().warning('No account or login hint provided, please provide an account or login hint in the request');
|
|
91
|
+
this.getLogger().warning('No account or login hint provided, please provide an account or login hint in the request', options.request.correlationId || FUSION_CORRELATION_ID);
|
|
87
92
|
}
|
|
88
93
|
try {
|
|
89
94
|
return await this.ssoSilent(options.request);
|
|
90
95
|
}
|
|
91
96
|
catch {
|
|
92
97
|
// Silent login failed - continue to interactive flow
|
|
93
|
-
this.getLogger().warning('Silent login failed, falling back to interactive');
|
|
98
|
+
this.getLogger().warning('Silent login failed, falling back to interactive', options.request.correlationId || FUSION_CORRELATION_ID);
|
|
94
99
|
}
|
|
95
100
|
}
|
|
96
101
|
// Perform interactive authentication based on specified behavior
|
|
@@ -140,7 +145,7 @@ export class MsalClient extends PublicClientApplication {
|
|
|
140
145
|
*/
|
|
141
146
|
async logout(options) {
|
|
142
147
|
if (!options?.account) {
|
|
143
|
-
this.getLogger().warning('No account available for logout, please provide an account in the options');
|
|
148
|
+
this.getLogger().warning('No account available for logout, please provide an account in the options', FUSION_CORRELATION_ID);
|
|
144
149
|
}
|
|
145
150
|
const logoutRequest = {
|
|
146
151
|
account: options?.account,
|
|
@@ -177,23 +182,23 @@ export class MsalClient extends PublicClientApplication {
|
|
|
177
182
|
throw new Error('No request provided, please provide a request in the options');
|
|
178
183
|
}
|
|
179
184
|
if (request.scopes.length === 0) {
|
|
180
|
-
this.getLogger().warning('No scopes provided, please provide scopes in the request option, see options.request for more information.');
|
|
185
|
+
this.getLogger().warning('No scopes provided, please provide scopes in the request option, see options.request for more information.', request.correlationId || FUSION_CORRELATION_ID);
|
|
181
186
|
}
|
|
182
187
|
// Attempt silent token acquisition first
|
|
183
188
|
// This fetches from cache or uses refresh token without user interaction
|
|
184
189
|
if (silent) {
|
|
185
190
|
if (request.account) {
|
|
186
191
|
try {
|
|
187
|
-
this.getLogger().verbose('Attempting to acquire token silently');
|
|
192
|
+
this.getLogger().verbose('Attempting to acquire token silently', request.correlationId || FUSION_CORRELATION_ID);
|
|
188
193
|
return await this.acquireTokenSilent(request);
|
|
189
194
|
}
|
|
190
195
|
catch {
|
|
191
196
|
// Silent acquisition failed - fall back to interactive
|
|
192
|
-
this.getLogger().warning('Silent token acquisition failed, falling back to interactive');
|
|
197
|
+
this.getLogger().warning('Silent token acquisition failed, falling back to interactive', request.correlationId || FUSION_CORRELATION_ID);
|
|
193
198
|
}
|
|
194
199
|
}
|
|
195
200
|
else {
|
|
196
|
-
this.getLogger().warning('Cannot acquire token silently, no account provided, falling back to interactive.');
|
|
201
|
+
this.getLogger().warning('Cannot acquire token silently, no account provided, falling back to interactive.', request.correlationId || FUSION_CORRELATION_ID);
|
|
197
202
|
}
|
|
198
203
|
}
|
|
199
204
|
// Perform interactive token acquisition
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MsalClient.js","sourceRoot":"","sources":["../../src/MsalClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAMxB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"MsalClient.js","sourceRoot":"","sources":["../../src/MsalClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ const MsalConfigSchema = z.object({
|
|
|
29
29
|
provider: z.custom().optional(),
|
|
30
30
|
requiresAuth: z.boolean().optional(),
|
|
31
31
|
redirectUri: z.string().optional(),
|
|
32
|
+
authCode: z.string().optional(),
|
|
32
33
|
version: z.string().transform((x) => String(semver.coerce(x))),
|
|
33
34
|
telemetry: TelemetryConfigSchema,
|
|
34
35
|
});
|
|
@@ -96,6 +97,37 @@ export class MsalConfigurator extends BaseConfigBuilder {
|
|
|
96
97
|
this.#msalConfig = config;
|
|
97
98
|
return this;
|
|
98
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Sets a backend-issued authorization code for token exchange.
|
|
102
|
+
*
|
|
103
|
+
* This enables the MSAL module to exchange a backend-generated auth code for tokens
|
|
104
|
+
* during initialization, allowing users to be automatically signed in without triggering
|
|
105
|
+
* an interactive MSAL login flow. The auth code is exchanged before the requiresAuth check,
|
|
106
|
+
* so tokens are cached and no login prompt appears.
|
|
107
|
+
*
|
|
108
|
+
* This follows Microsoft's standard SPA Auth Code Flow pattern and is compatible with
|
|
109
|
+
* MSAL Browser's acquireTokenByCode() method.
|
|
110
|
+
*
|
|
111
|
+
* @param authCode - The authorization code issued by the backend
|
|
112
|
+
* @returns The configurator instance for method chaining
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* // Backend provides auth code in HTML/config
|
|
117
|
+
* const config = { auth: { code: getAuthCodeFromBackend() } };
|
|
118
|
+
* configurator.setAuthCode(config.auth.code);
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* @remarks
|
|
122
|
+
* - Auth codes are single-use and short-lived (typically 5-10 minutes)
|
|
123
|
+
* - The exchange happens during module initialization before requiresAuth check
|
|
124
|
+
* - If exchange fails, the provider falls back to standard MSAL authentication flows
|
|
125
|
+
* - Requires backend to be configured with SPA Auth Code support
|
|
126
|
+
*/
|
|
127
|
+
setAuthCode(authCode) {
|
|
128
|
+
this._set('authCode', async () => authCode);
|
|
129
|
+
return this;
|
|
130
|
+
}
|
|
99
131
|
/**
|
|
100
132
|
* Sets whether authentication is required for the application.
|
|
101
133
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MsalConfigurator.js","sourceRoot":"","sources":["../../src/MsalConfigurator.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EACL,cAAc,GAEf,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAA2C,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAsB,CAAC,QAAQ,EAAE;IACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QAC7D,MAAM,EAAE,MAAM;QACd,OAAO;KACR,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;CAC/E,CAAC,CAAC;AAUH;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAe;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAiB,CAAC,QAAQ,EAAE;IAC9C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,SAAS,EAAE,qBAAqB;CACjC,CAAC,CAAC;AAUH;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,gBAAiB,SAAQ,iBAA6B;IACjE,WAAW,CAAoB;IAE/B;;;;OAIG;IACH,IAAW,OAAO;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH;QACE,KAAK,EAAE,CAAC;QACR,sBAAsB;QACtB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,0DAA0D;QAC1D,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBAC1D,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,MAAyB;QACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,eAAe,CAAC,YAAqB;QACnC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAwB;QAClC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,MAAmB;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,YAAY,CAAC,SAAyC;QACpD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAAC,QAA6C;QAChE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,KAAe;QAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,SAAqB;QACxC,qDAAqD;QACrD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE5D,+DAA+D;QAC/D,uFAAuF;QACvF,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;YAEtC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC;gBACpC,IAAI,EAAE,yDAAyD;gBAC/D,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK;gBAC7B,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE;aACzD,CAAC,CAAC;YAEH,wEAAwE;YACxE,sDAAsD;YACtD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/D,YAAY,CAAC,IAAI,CAAC,SAAS,GAAG,qCAAqC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClG,CAAC;YAED,sEAAsE;YACtE,6FAA6F;YAC7F,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACxB,YAAY,CAAC,KAAK,GAAG,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;YACzD,CAAC;YAED,yDAAyD;YACzD,6EAA6E;YAC7E,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;gBACtE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;gBAEvD,QAAQ,CAAC,UAAU,CAAC;oBAClB,IAAI,EAAE,oEAAoE;oBAC1E,KAAK,EAAE,cAAc,CAAC,KAAK;oBAC3B,KAAK;oBACL,QAAQ;iBACT,CAAC,CAAC;gBAEH,YAAY,CAAC,MAAM,GAAG;oBACpB,GAAG,YAAY,CAAC,MAAM;oBACtB,aAAa,EAAE;wBACb,oEAAoE;wBACpE,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;wBACzD,uDAAuD;wBACvD,cAAc,EAAE,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC;wBACpF,oFAAoF;wBACpF,QAAQ,EAAE,QAAQ,CAAC,OAAO;wBAC1B,mEAAmE;wBACnE,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa;qBACtC;iBACF,CAAC;YACJ,CAAC;YACD,wDAAwD;YACxD,MAAM,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"MsalConfigurator.js","sourceRoot":"","sources":["../../src/MsalConfigurator.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/MsalProvider.js
CHANGED
|
@@ -31,6 +31,7 @@ export class MsalProvider extends BaseModuleProvider {
|
|
|
31
31
|
#client;
|
|
32
32
|
#telemetry;
|
|
33
33
|
#requiresAuth;
|
|
34
|
+
#authCode;
|
|
34
35
|
/**
|
|
35
36
|
* The MSAL module version enum value indicating the API compatibility level.
|
|
36
37
|
*
|
|
@@ -88,6 +89,9 @@ export class MsalProvider extends BaseModuleProvider {
|
|
|
88
89
|
});
|
|
89
90
|
this.#requiresAuth = config.requiresAuth;
|
|
90
91
|
this.#telemetry = config.telemetry;
|
|
92
|
+
// Extract auth code from config if present
|
|
93
|
+
// This will be used during initialize to exchange for tokens
|
|
94
|
+
this.#authCode = config.authCode;
|
|
91
95
|
// Validate required client configuration
|
|
92
96
|
if (!config.client) {
|
|
93
97
|
const error = new Error('Client is required, please provide a valid client in the configuration');
|
|
@@ -103,12 +107,17 @@ export class MsalProvider extends BaseModuleProvider {
|
|
|
103
107
|
*
|
|
104
108
|
* This method must be called before using any authentication operations. It performs:
|
|
105
109
|
* - Client initialization
|
|
110
|
+
* - Auth code exchange (if backend-issued code provided)
|
|
106
111
|
* - Redirect result handling (if returning from auth flow)
|
|
107
112
|
* - Automatic login attempt if requiresAuth is enabled and no valid session exists
|
|
108
113
|
*
|
|
109
114
|
* @returns Promise that resolves when initialization is complete
|
|
110
115
|
*
|
|
111
116
|
* @remarks
|
|
117
|
+
* Auth code exchange happens before the requiresAuth check, allowing automatic sign-in
|
|
118
|
+
* without user interaction when a valid backend-issued code is provided. If exchange fails,
|
|
119
|
+
* the provider falls back to standard MSAL authentication flows.
|
|
120
|
+
*
|
|
112
121
|
* The provider will attempt automatic login with empty scopes if requiresAuth is true.
|
|
113
122
|
* Apps should call acquireToken with actual scopes after initialization completes.
|
|
114
123
|
*/
|
|
@@ -116,6 +125,52 @@ export class MsalProvider extends BaseModuleProvider {
|
|
|
116
125
|
const measurement = this._trackMeasurement('initialize', TelemetryLevel.Debug);
|
|
117
126
|
// Initialize the underlying MSAL client first
|
|
118
127
|
await this.#client.initialize();
|
|
128
|
+
// Priority 0: Exchange auth code if provided by backend
|
|
129
|
+
// This must happen before the requiresAuth check so tokens are cached
|
|
130
|
+
if (this.#authCode) {
|
|
131
|
+
try {
|
|
132
|
+
this._trackEvent('initialize.exchanging-auth-code', TelemetryLevel.Information);
|
|
133
|
+
// Use MSAL's acquireTokenByCode to exchange backend auth code for tokens
|
|
134
|
+
// This follows Microsoft's standard SPA Auth Code Flow pattern
|
|
135
|
+
const clientId = this.#client.clientId;
|
|
136
|
+
if (!clientId) {
|
|
137
|
+
throw new Error('Client ID is required for auth code exchange');
|
|
138
|
+
}
|
|
139
|
+
// Exchange the auth code for tokens using the client ID's default scope.
|
|
140
|
+
// The `/.default` scope represents all permissions configured for this app in Entra ID,
|
|
141
|
+
// ensuring the exchanged tokens have the correct app-level permissions without requiring
|
|
142
|
+
// the caller to specify scopes. This follows MSAL's recommended SPA auth code pattern.
|
|
143
|
+
// This method is inherited from PublicClientApplication (MSAL Browser v4+)
|
|
144
|
+
const result = await this.#client.acquireTokenByCode({
|
|
145
|
+
code: this.#authCode,
|
|
146
|
+
scopes: [`${clientId}/.default`],
|
|
147
|
+
});
|
|
148
|
+
// Successfully exchanged auth code - set active account
|
|
149
|
+
if (result.account) {
|
|
150
|
+
this.#client.setActiveAccount(result.account);
|
|
151
|
+
this._trackEvent('initialize.auth-code-exchanged-account', TelemetryLevel.Information, {
|
|
152
|
+
properties: {
|
|
153
|
+
username: result.account.username,
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
// Auth code exchange failed - log and fall back to standard flows
|
|
160
|
+
this._trackException('initialize.auth-code-exchange-failed', TelemetryLevel.Warning, {
|
|
161
|
+
exception: error instanceof Error ? error : new Error(String(error)),
|
|
162
|
+
properties: {
|
|
163
|
+
message: error instanceof Error ? error.message : String(error),
|
|
164
|
+
reason: 'Auth code exchange failed, falling back to standard authentication flows',
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
// Continue to requiresAuth check - will trigger standard login if needed
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
// Clear auth code to avoid repeated attempts
|
|
171
|
+
this.#authCode = undefined;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
119
174
|
// Only attempt authentication if this provider requires it
|
|
120
175
|
if (this.#requiresAuth) {
|
|
121
176
|
// Priority 1: Check if returning from redirect-based authentication
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MsalProvider.js","sourceRoot":"","sources":["../../src/MsalProvider.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAI/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAW9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,YAAa,SAAQ,kBAA8B;IAC9D,OAAO,CAAc;IACrB,UAAU,CAIR;IACF,aAAa,CAAW;
|
|
1
|
+
{"version":3,"file":"MsalProvider.js","sourceRoot":"","sources":["../../src/MsalProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MsalModuleVersion } from './static';
|
|
2
2
|
import { resolveVersion } from './versioning/resolve-version';
|
|
3
3
|
import { createProxyProvider as createProxyProvider_v2 } from './v2/create-proxy-provider';
|
|
4
|
+
import { createProxyProvider as createProxyProvider_v4 } from './v4/create-proxy-provider';
|
|
4
5
|
/**
|
|
5
6
|
* Creates a proxy provider for version compatibility.
|
|
6
7
|
*
|
|
@@ -26,8 +27,10 @@ export function createProxyProvider(provider, version) {
|
|
|
26
27
|
// Create v2-compatible proxy with legacy API adapters
|
|
27
28
|
return createProxyProvider_v2(provider);
|
|
28
29
|
case MsalModuleVersion.V4:
|
|
29
|
-
// Create
|
|
30
|
-
|
|
30
|
+
// Create v4-compatible proxy (passthrough with v4 version metadata)
|
|
31
|
+
return createProxyProvider_v4(provider);
|
|
32
|
+
case MsalModuleVersion.V5:
|
|
33
|
+
// Create transparent proxy for v5 - passes through to original provider
|
|
31
34
|
return new Proxy(provider, {
|
|
32
35
|
get: (target, prop) => {
|
|
33
36
|
switch (prop) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-proxy-provider.js","sourceRoot":"","sources":["../../src/create-proxy-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,IAAI,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAE3F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAuB,EACvB,OAAe;IAEf,mEAAmE;IACnE,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEhD,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,iBAAiB,CAAC,EAAE;YACvB,sDAAsD;YACtD,OAAO,sBAAsB,CAAC,QAAQ,CAAM,CAAC;QAC/C,KAAK,iBAAiB,CAAC,EAAE;YACvB,
|
|
1
|
+
{"version":3,"file":"create-proxy-provider.js","sourceRoot":"","sources":["../../src/create-proxy-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,IAAI,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,mBAAmB,IAAI,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAE3F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAuB,EACvB,OAAe;IAEf,mEAAmE;IACnE,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEhD,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,iBAAiB,CAAC,EAAE;YACvB,sDAAsD;YACtD,OAAO,sBAAsB,CAAC,QAAQ,CAAM,CAAC;QAC/C,KAAK,iBAAiB,CAAC,EAAE;YACvB,oEAAoE;YACpE,OAAO,sBAAsB,CAAC,QAAQ,CAAM,CAAC;QAC/C,KAAK,iBAAiB,CAAC,EAAE;YACvB,wEAAwE;YACxE,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;gBACzB,GAAG,EAAE,CAAC,MAAqB,EAAE,IAAyB,EAAE,EAAE;oBACxD,QAAQ,IAAI,EAAE,CAAC;wBACb,KAAK,SAAS,CAAC,CAAC,CAAC;4BACf,OAAO,MAAM,CAAC,OAAO,CAAC;wBACxB,CAAC;wBACD,KAAK,aAAa,CAAC,CAAC,CAAC;4BACnB,OAAO,WAAW,CAAC;wBACrB,CAAC;wBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;4BACd,OAAO,MAAM,CAAC,MAAM,CAAC;wBACvB,CAAC;wBACD,KAAK,SAAS,CAAC,CAAC,CAAC;4BACf,OAAO,MAAM,CAAC,OAAO,CAAC;wBACxB,CAAC;wBACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;4BAC1B,OAAO,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAChD,CAAC;wBACD,KAAK,cAAc,CAAC,CAAC,CAAC;4BACpB,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC1C,CAAC;wBACD,KAAK,OAAO,CAAC,CAAC,CAAC;4BACb,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACnC,CAAC;wBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;4BACd,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACpC,CAAC;wBACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;4BACtB,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC5C,CAAC;wBACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;4BAC3B,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACjD,CAAC;wBACD,KAAK,YAAY,CAAC,CAAC,CAAC;4BAClB,OAAO,GAAG,EAAE;gCACV,8DAA8D;4BAChE,CAAC,CAAC;wBACJ,CAAC;wBACD,OAAO,CAAC,CAAC,CAAC;4BACR,8EAA8E;4BAC9E,IAAI,IAAI,KAAK,MAAM;gCAAE,OAAO,SAAS,CAAC;4BAEtC,uFAAuF;4BACvF,MAAM,SAAS,GAAU,IAAI,CAAC;4BAC9B,OAAQ,MAAwB,CAAC,SAAS,CAAC,CAAC;wBAC9C,CAAC;oBACH,CAAC;gBACH,CAAC;aACF,CAAM,CAAC;QACV;YACE,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,mBAAmB,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|