@equinor/fusion-framework-module-msal 7.0.0 → 7.2.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 +47 -0
- package/README.md +77 -0
- package/dist/esm/MsalConfigurator.js +51 -0
- package/dist/esm/MsalConfigurator.js.map +1 -1
- package/dist/esm/MsalProvider.js +59 -0
- package/dist/esm/MsalProvider.js.map +1 -1
- package/dist/esm/module.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/MsalClient.interface.d.ts +17 -1
- package/dist/types/MsalConfigurator.d.ts +43 -0
- package/dist/types/MsalProvider.d.ts +5 -0
- package/dist/types/module.d.ts +5 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +4 -4
- package/src/MsalClient.interface.ts +18 -0
- package/src/MsalConfigurator.ts +53 -0
- package/src/MsalProvider.ts +63 -0
- package/src/module.ts +5 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,52 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 7.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#4049](https://github.com/equinor/fusion-framework/pull/4049) [`dcf51aa`](https://github.com/equinor/fusion-framework/commit/dcf51aa87ac79200893ec4909632554464e75055) Thanks [@odinr](https://github.com/odinr)! - Add configurable default `loginHint` for MSAL logins to enable silent SSO and pre-fill usernames.
|
|
8
|
+
|
|
9
|
+
## 7.1.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#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
|
|
14
|
+
|
|
15
|
+
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.
|
|
16
|
+
|
|
17
|
+
**New API:**
|
|
18
|
+
|
|
19
|
+
- `MsalConfigurator.setAuthCode(authCode: string)` - Configure backend auth code for token exchange
|
|
20
|
+
- `IMsalClient.acquireTokenByCode(request)` - Exchange auth code for tokens (inherited from PublicClientApplication)
|
|
21
|
+
|
|
22
|
+
**How it works:**
|
|
23
|
+
|
|
24
|
+
1. Backend authenticates user and generates short-lived SPA auth code
|
|
25
|
+
2. Frontend calls `builder.setAuthCode(authCode)` during MSAL configuration
|
|
26
|
+
3. During `initialize()`, auth code is exchanged for tokens before `requiresAuth` check
|
|
27
|
+
4. Tokens are cached by MSAL - user is automatically signed in
|
|
28
|
+
5. Falls back to standard MSAL flows if exchange fails
|
|
29
|
+
|
|
30
|
+
**Example:**
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
enableMSAL(configurator, (builder) => {
|
|
34
|
+
builder.setClientConfig({
|
|
35
|
+
auth: { clientId: "app-id", tenantId: "tenant-id" },
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Backend injects auth code as window.MSAL_AUTH_CODE during initial first page load
|
|
39
|
+
if (typeof window !== "undefined" && window.MSAL_AUTH_CODE) {
|
|
40
|
+
builder.setAuthCode(window.MSAL_AUTH_CODE);
|
|
41
|
+
delete (window as any).MSAL_AUTH_CODE; // Clear after consuming
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
builder.setRequiresAuth(true);
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Fixes: https://github.com/equinor/fusion-core-tasks/issues/271
|
|
49
|
+
|
|
3
50
|
## 7.0.0
|
|
4
51
|
|
|
5
52
|
### Major Changes
|
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
|
|
|
@@ -29,6 +29,8 @@ const MsalConfigSchema = z.object({
|
|
|
29
29
|
provider: z.custom().optional(),
|
|
30
30
|
requiresAuth: z.boolean().optional(),
|
|
31
31
|
redirectUri: z.string().optional(),
|
|
32
|
+
loginHint: z.string().optional(),
|
|
33
|
+
authCode: z.string().optional(),
|
|
32
34
|
version: z.string().transform((x) => String(semver.coerce(x))),
|
|
33
35
|
telemetry: TelemetryConfigSchema,
|
|
34
36
|
});
|
|
@@ -96,6 +98,37 @@ export class MsalConfigurator extends BaseConfigBuilder {
|
|
|
96
98
|
this.#msalConfig = config;
|
|
97
99
|
return this;
|
|
98
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Sets a backend-issued authorization code for token exchange.
|
|
103
|
+
*
|
|
104
|
+
* This enables the MSAL module to exchange a backend-generated auth code for tokens
|
|
105
|
+
* during initialization, allowing users to be automatically signed in without triggering
|
|
106
|
+
* an interactive MSAL login flow. The auth code is exchanged before the requiresAuth check,
|
|
107
|
+
* so tokens are cached and no login prompt appears.
|
|
108
|
+
*
|
|
109
|
+
* This follows Microsoft's standard SPA Auth Code Flow pattern and is compatible with
|
|
110
|
+
* MSAL Browser's acquireTokenByCode() method.
|
|
111
|
+
*
|
|
112
|
+
* @param authCode - The authorization code issued by the backend
|
|
113
|
+
* @returns The configurator instance for method chaining
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* // Backend provides auth code in HTML/config
|
|
118
|
+
* const config = { auth: { code: getAuthCodeFromBackend() } };
|
|
119
|
+
* configurator.setAuthCode(config.auth.code);
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* @remarks
|
|
123
|
+
* - Auth codes are single-use and short-lived (typically 5-10 minutes)
|
|
124
|
+
* - The exchange happens during module initialization before requiresAuth check
|
|
125
|
+
* - If exchange fails, the provider falls back to standard MSAL authentication flows
|
|
126
|
+
* - Requires backend to be configured with SPA Auth Code support
|
|
127
|
+
*/
|
|
128
|
+
setAuthCode(authCode) {
|
|
129
|
+
this._set('authCode', async () => authCode);
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
99
132
|
/**
|
|
100
133
|
* Sets whether authentication is required for the application.
|
|
101
134
|
*
|
|
@@ -119,6 +152,24 @@ export class MsalConfigurator extends BaseConfigBuilder {
|
|
|
119
152
|
this._set('requiresAuth', async () => requiresAuth);
|
|
120
153
|
return this;
|
|
121
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Sets a default login hint for authentication flows.
|
|
157
|
+
*
|
|
158
|
+
* The login hint is used to pre-fill the username during authentication and
|
|
159
|
+
* enables silent SSO when no account is available.
|
|
160
|
+
*
|
|
161
|
+
* @param loginHint - The preferred username/email to use as login hint
|
|
162
|
+
* @returns The configurator instance for method chaining
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```typescript
|
|
166
|
+
* configurator.setLoginHint('user@company.com');
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
setLoginHint(loginHint) {
|
|
170
|
+
this._set('loginHint', async () => loginHint);
|
|
171
|
+
return this;
|
|
172
|
+
}
|
|
122
173
|
/**
|
|
123
174
|
* @deprecated - since version 5.1.0, use setClient instead
|
|
124
175
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MsalConfigurator.js","sourceRoot":"","sources":["../../src/MsalConfigurator.ts"],"names":[],"mappings":"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"}
|
|
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,8 @@ export class MsalProvider extends BaseModuleProvider {
|
|
|
31
31
|
#client;
|
|
32
32
|
#telemetry;
|
|
33
33
|
#requiresAuth;
|
|
34
|
+
#authCode;
|
|
35
|
+
#loginHint;
|
|
34
36
|
/**
|
|
35
37
|
* The MSAL module version enum value indicating the API compatibility level.
|
|
36
38
|
*
|
|
@@ -88,6 +90,10 @@ export class MsalProvider extends BaseModuleProvider {
|
|
|
88
90
|
});
|
|
89
91
|
this.#requiresAuth = config.requiresAuth;
|
|
90
92
|
this.#telemetry = config.telemetry;
|
|
93
|
+
this.#loginHint = config.loginHint;
|
|
94
|
+
// Extract auth code from config if present
|
|
95
|
+
// This will be used during initialize to exchange for tokens
|
|
96
|
+
this.#authCode = config.authCode;
|
|
91
97
|
// Validate required client configuration
|
|
92
98
|
if (!config.client) {
|
|
93
99
|
const error = new Error('Client is required, please provide a valid client in the configuration');
|
|
@@ -103,12 +109,17 @@ export class MsalProvider extends BaseModuleProvider {
|
|
|
103
109
|
*
|
|
104
110
|
* This method must be called before using any authentication operations. It performs:
|
|
105
111
|
* - Client initialization
|
|
112
|
+
* - Auth code exchange (if backend-issued code provided)
|
|
106
113
|
* - Redirect result handling (if returning from auth flow)
|
|
107
114
|
* - Automatic login attempt if requiresAuth is enabled and no valid session exists
|
|
108
115
|
*
|
|
109
116
|
* @returns Promise that resolves when initialization is complete
|
|
110
117
|
*
|
|
111
118
|
* @remarks
|
|
119
|
+
* Auth code exchange happens before the requiresAuth check, allowing automatic sign-in
|
|
120
|
+
* without user interaction when a valid backend-issued code is provided. If exchange fails,
|
|
121
|
+
* the provider falls back to standard MSAL authentication flows.
|
|
122
|
+
*
|
|
112
123
|
* The provider will attempt automatic login with empty scopes if requiresAuth is true.
|
|
113
124
|
* Apps should call acquireToken with actual scopes after initialization completes.
|
|
114
125
|
*/
|
|
@@ -116,6 +127,52 @@ export class MsalProvider extends BaseModuleProvider {
|
|
|
116
127
|
const measurement = this._trackMeasurement('initialize', TelemetryLevel.Debug);
|
|
117
128
|
// Initialize the underlying MSAL client first
|
|
118
129
|
await this.#client.initialize();
|
|
130
|
+
// Priority 0: Exchange auth code if provided by backend
|
|
131
|
+
// This must happen before the requiresAuth check so tokens are cached
|
|
132
|
+
if (this.#authCode) {
|
|
133
|
+
try {
|
|
134
|
+
this._trackEvent('initialize.exchanging-auth-code', TelemetryLevel.Information);
|
|
135
|
+
// Use MSAL's acquireTokenByCode to exchange backend auth code for tokens
|
|
136
|
+
// This follows Microsoft's standard SPA Auth Code Flow pattern
|
|
137
|
+
const clientId = this.#client.clientId;
|
|
138
|
+
if (!clientId) {
|
|
139
|
+
throw new Error('Client ID is required for auth code exchange');
|
|
140
|
+
}
|
|
141
|
+
// Exchange the auth code for tokens using the client ID's default scope.
|
|
142
|
+
// The `/.default` scope represents all permissions configured for this app in Entra ID,
|
|
143
|
+
// ensuring the exchanged tokens have the correct app-level permissions without requiring
|
|
144
|
+
// the caller to specify scopes. This follows MSAL's recommended SPA auth code pattern.
|
|
145
|
+
// This method is inherited from PublicClientApplication (MSAL Browser v4+)
|
|
146
|
+
const result = await this.#client.acquireTokenByCode({
|
|
147
|
+
code: this.#authCode,
|
|
148
|
+
scopes: [`${clientId}/.default`],
|
|
149
|
+
});
|
|
150
|
+
// Successfully exchanged auth code - set active account
|
|
151
|
+
if (result.account) {
|
|
152
|
+
this.#client.setActiveAccount(result.account);
|
|
153
|
+
this._trackEvent('initialize.auth-code-exchanged-account', TelemetryLevel.Information, {
|
|
154
|
+
properties: {
|
|
155
|
+
username: result.account.username,
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
// Auth code exchange failed - log and fall back to standard flows
|
|
162
|
+
this._trackException('initialize.auth-code-exchange-failed', TelemetryLevel.Warning, {
|
|
163
|
+
exception: error instanceof Error ? error : new Error(String(error)),
|
|
164
|
+
properties: {
|
|
165
|
+
message: error instanceof Error ? error.message : String(error),
|
|
166
|
+
reason: 'Auth code exchange failed, falling back to standard authentication flows',
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
// Continue to requiresAuth check - will trigger standard login if needed
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
// Clear auth code to avoid repeated attempts
|
|
173
|
+
this.#authCode = undefined;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
119
176
|
// Only attempt authentication if this provider requires it
|
|
120
177
|
if (this.#requiresAuth) {
|
|
121
178
|
// Priority 1: Check if returning from redirect-based authentication
|
|
@@ -294,6 +351,8 @@ export class MsalProvider extends BaseModuleProvider {
|
|
|
294
351
|
*/
|
|
295
352
|
async login(options) {
|
|
296
353
|
const { behavior = 'redirect', silent = true, request } = options;
|
|
354
|
+
request.loginHint ??=
|
|
355
|
+
this.#loginHint ?? this.account?.username ?? this.account?.loginHint ?? undefined;
|
|
297
356
|
// Determine if silent login is possible based on available account/hint information
|
|
298
357
|
// Silent login requires either an account object or a loginHint to work
|
|
299
358
|
const canLoginSilently = silent && (request.account || request.loginHint);
|
|
@@ -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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"}
|
package/dist/esm/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,MAAM,GAAe;IAChC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC;IACrC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,EAAE;IACvC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEzD,2DAA2D;QAC3D,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;QAED,8EAA8E;QAC9E,2EAA2E;QAC3E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;QACpC,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvE,OAAO,aAAa,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;gBACpE,qEAAqE;gBACrE,yEAAyE;gBACzE,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1C,kEAAkE;QAClE,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,MAAM,GAAe;IAChC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC;IACrC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,EAAE;IACvC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEzD,2DAA2D;QAC3D,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;QAED,8EAA8E;QAC9E,2EAA2E;QAC3E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;QACpC,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvE,OAAO,aAAa,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;gBACpE,qEAAqE;gBACrE,yEAAyE;gBACzE,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1C,kEAAkE;QAClE,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AA0BF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;AACxB,uFAAuF;AACvF,YAA4C,EAC5C,SAAwB,EAClB,EAAE;IACR,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACjE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAuB,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAQH,eAAe,MAAM,CAAC"}
|
package/dist/esm/version.js
CHANGED