@azure/msal-common 14.6.0-alpha.0 → 14.6.1
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/dist/account/AccountInfo.d.ts +58 -58
- package/dist/account/AccountInfo.mjs +59 -59
- package/dist/account/AuthToken.d.ts +17 -17
- package/dist/account/AuthToken.mjs +58 -58
- package/dist/account/CcsCredential.d.ts +9 -9
- package/dist/account/CcsCredential.mjs +8 -8
- package/dist/account/ClientCredentials.d.ts +14 -14
- package/dist/account/ClientInfo.d.ts +18 -18
- package/dist/account/ClientInfo.mjs +37 -37
- package/dist/account/TokenClaims.d.ts +83 -83
- package/dist/account/TokenClaims.mjs +20 -20
- package/dist/authority/Authority.d.ts +253 -254
- package/dist/authority/Authority.d.ts.map +1 -1
- package/dist/authority/Authority.mjs +831 -816
- package/dist/authority/Authority.mjs.map +1 -1
- package/dist/authority/AuthorityFactory.d.ts +18 -31
- package/dist/authority/AuthorityFactory.d.ts.map +1 -1
- package/dist/authority/AuthorityFactory.mjs +29 -50
- package/dist/authority/AuthorityFactory.mjs.map +1 -1
- package/dist/authority/AuthorityMetadata.d.ts +43 -503
- package/dist/authority/AuthorityMetadata.d.ts.map +1 -1
- package/dist/authority/AuthorityMetadata.mjs +137 -603
- package/dist/authority/AuthorityMetadata.mjs.map +1 -1
- package/dist/authority/AuthorityOptions.d.ts +27 -27
- package/dist/authority/AuthorityOptions.mjs +18 -18
- package/dist/authority/AuthorityType.d.ts +10 -10
- package/dist/authority/AuthorityType.mjs +13 -13
- package/dist/authority/AzureRegion.d.ts +1 -1
- package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
- package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +8 -8
- package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
- package/dist/authority/CloudInstanceDiscoveryResponse.mjs +8 -8
- package/dist/authority/ImdsOptions.d.ts +5 -5
- package/dist/authority/OIDCOptions.d.ts +8 -8
- package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
- package/dist/authority/OpenIdConfigResponse.mjs +10 -10
- package/dist/authority/ProtocolMode.d.ts +8 -8
- package/dist/authority/ProtocolMode.mjs +11 -11
- package/dist/authority/RegionDiscovery.d.ts +32 -32
- package/dist/authority/RegionDiscovery.mjs +106 -106
- package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
- package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
- package/dist/cache/CacheManager.d.ts +508 -508
- package/dist/cache/CacheManager.mjs +1237 -1237
- package/dist/cache/entities/AccessTokenEntity.d.ts +25 -25
- package/dist/cache/entities/AccountEntity.d.ts +106 -106
- package/dist/cache/entities/AccountEntity.mjs +244 -244
- package/dist/cache/entities/AppMetadataEntity.d.ts +11 -39
- package/dist/cache/entities/AppMetadataEntity.d.ts.map +1 -1
- package/dist/cache/entities/AuthorityMetadataEntity.d.ts +15 -48
- package/dist/cache/entities/AuthorityMetadataEntity.d.ts.map +1 -1
- package/dist/cache/entities/CacheRecord.d.ts +14 -14
- package/dist/cache/entities/CacheRecord.mjs +14 -14
- package/dist/cache/entities/CredentialEntity.d.ts +30 -30
- package/dist/cache/entities/IdTokenEntity.d.ts +8 -8
- package/dist/cache/entities/RefreshTokenEntity.d.ts +7 -7
- package/dist/cache/entities/ServerTelemetryEntity.d.ts +5 -5
- package/dist/cache/entities/ThrottlingEntity.d.ts +7 -7
- package/dist/cache/interface/ICacheManager.d.ts +166 -166
- package/dist/cache/interface/ICachePlugin.d.ts +5 -5
- package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
- package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
- package/dist/cache/persistence/TokenCacheContext.mjs +25 -25
- package/dist/cache/utils/CacheHelpers.d.ts +94 -70
- package/dist/cache/utils/CacheHelpers.d.ts.map +1 -1
- package/dist/cache/utils/CacheHelpers.mjs +326 -252
- package/dist/cache/utils/CacheHelpers.mjs.map +1 -1
- package/dist/cache/utils/CacheTypes.d.ts +69 -69
- package/dist/client/AuthorizationCodeClient.d.ts +74 -74
- package/dist/client/AuthorizationCodeClient.mjs +402 -402
- package/dist/client/BaseClient.d.ts +51 -51
- package/dist/client/BaseClient.d.ts.map +1 -1
- package/dist/client/BaseClient.mjs +101 -101
- package/dist/client/BaseClient.mjs.map +1 -1
- package/dist/client/RefreshTokenClient.d.ts +35 -35
- package/dist/client/RefreshTokenClient.mjs +204 -204
- package/dist/client/SilentFlowClient.d.ts +27 -27
- package/dist/client/SilentFlowClient.mjs +128 -128
- package/dist/config/AppTokenProvider.d.ts +38 -38
- package/dist/config/ClientConfiguration.d.ts +150 -150
- package/dist/config/ClientConfiguration.d.ts.map +1 -1
- package/dist/config/ClientConfiguration.mjs +98 -96
- package/dist/config/ClientConfiguration.mjs.map +1 -1
- package/dist/constants/AADServerParamKeys.d.ts +52 -52
- package/dist/constants/AADServerParamKeys.mjs +56 -56
- package/dist/crypto/ICrypto.d.ts +58 -58
- package/dist/crypto/ICrypto.mjs +30 -30
- package/dist/crypto/IGuidGenerator.d.ts +4 -4
- package/dist/crypto/JoseHeader.d.ts +22 -22
- package/dist/crypto/JoseHeader.mjs +37 -37
- package/dist/crypto/PopTokenGenerator.d.ts +60 -60
- package/dist/crypto/PopTokenGenerator.mjs +82 -82
- package/dist/crypto/SignedHttpRequest.d.ts +15 -15
- package/dist/error/AuthError.d.ts +44 -44
- package/dist/error/AuthError.mjs +46 -46
- package/dist/error/AuthErrorCodes.d.ts +5 -5
- package/dist/error/AuthErrorCodes.mjs +9 -9
- package/dist/error/ClientAuthError.d.ts +237 -237
- package/dist/error/ClientAuthError.mjs +249 -249
- package/dist/error/ClientAuthErrorCodes.d.ts +44 -44
- package/dist/error/ClientAuthErrorCodes.mjs +48 -48
- package/dist/error/ClientConfigurationError.d.ts +128 -128
- package/dist/error/ClientConfigurationError.mjs +135 -135
- package/dist/error/ClientConfigurationErrorCodes.d.ts +22 -22
- package/dist/error/ClientConfigurationErrorCodes.mjs +26 -26
- package/dist/error/InteractionRequiredAuthError.d.ts +61 -61
- package/dist/error/InteractionRequiredAuthError.mjs +84 -84
- package/dist/error/InteractionRequiredAuthErrorCodes.d.ts +7 -7
- package/dist/error/InteractionRequiredAuthErrorCodes.mjs +13 -13
- package/dist/error/JoseHeaderError.d.ts +15 -15
- package/dist/error/JoseHeaderError.mjs +22 -22
- package/dist/error/JoseHeaderErrorCodes.d.ts +2 -2
- package/dist/error/JoseHeaderErrorCodes.mjs +6 -6
- package/dist/error/ServerError.d.ts +7 -7
- package/dist/error/ServerError.mjs +14 -14
- package/dist/index.cjs +8081 -8611
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +99 -99
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +4 -5
- package/dist/index.mjs.map +1 -1
- package/dist/logger/Logger.d.ts +95 -95
- package/dist/logger/Logger.mjs +188 -188
- package/dist/network/INetworkModule.d.ts +29 -29
- package/dist/network/INetworkModule.mjs +12 -12
- package/dist/network/NetworkManager.d.ts +33 -33
- package/dist/network/NetworkManager.mjs +34 -34
- package/dist/network/RequestThumbprint.d.ts +18 -18
- package/dist/network/ThrottlingUtils.d.ts +42 -42
- package/dist/network/ThrottlingUtils.mjs +95 -95
- package/dist/packageMetadata.d.ts +2 -2
- package/dist/packageMetadata.d.ts.map +1 -1
- package/dist/packageMetadata.mjs +4 -4
- package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
- package/dist/request/AuthenticationHeaderParser.mjs +55 -55
- package/dist/request/BaseAuthRequest.d.ts +43 -43
- package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
- package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
- package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
- package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
- package/dist/request/CommonEndSessionRequest.d.ts +21 -21
- package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
- package/dist/request/CommonRefreshTokenRequest.d.ts +22 -22
- package/dist/request/CommonSilentFlowRequest.d.ts +27 -27
- package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
- package/dist/request/NativeRequest.d.ts +19 -19
- package/dist/request/NativeSignOutRequest.d.ts +5 -5
- package/dist/request/RequestParameterBuilder.d.ts +217 -217
- package/dist/request/RequestParameterBuilder.mjs +381 -381
- package/dist/request/RequestValidator.d.ts +33 -33
- package/dist/request/RequestValidator.mjs +81 -81
- package/dist/request/ScopeSet.d.ts +88 -88
- package/dist/request/ScopeSet.mjs +197 -197
- package/dist/request/StoreInCache.d.ts +8 -8
- package/dist/response/AuthenticationResult.d.ts +41 -41
- package/dist/response/AuthorizationCodePayload.d.ts +13 -13
- package/dist/response/DeviceCodeResponse.d.ts +25 -25
- package/dist/response/ExternalTokenResponse.d.ts +15 -15
- package/dist/response/IMDSBadResponse.d.ts +4 -4
- package/dist/response/ResponseHandler.d.ts +69 -69
- package/dist/response/ResponseHandler.mjs +350 -347
- package/dist/response/ResponseHandler.mjs.map +1 -1
- package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
- package/dist/response/ServerAuthorizationTokenResponse.d.ts +47 -47
- package/dist/telemetry/performance/IPerformanceClient.d.ts +57 -57
- package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
- package/dist/telemetry/performance/PerformanceClient.d.ts +198 -198
- package/dist/telemetry/performance/PerformanceClient.mjs +412 -412
- package/dist/telemetry/performance/PerformanceEvent.d.ts +464 -464
- package/dist/telemetry/performance/PerformanceEvent.mjs +253 -253
- package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
- package/dist/telemetry/performance/StubPerformanceClient.mjs +76 -76
- package/dist/telemetry/server/ServerTelemetryManager.d.ts +66 -66
- package/dist/telemetry/server/ServerTelemetryManager.mjs +201 -201
- package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
- package/dist/url/IUri.d.ts +12 -12
- package/dist/url/UrlString.d.ts +48 -48
- package/dist/url/UrlString.mjs +161 -161
- package/dist/utils/Constants.d.ts +296 -298
- package/dist/utils/Constants.d.ts.map +1 -1
- package/dist/utils/Constants.mjs +310 -313
- package/dist/utils/Constants.mjs.map +1 -1
- package/dist/utils/FunctionWrappers.d.ts +27 -27
- package/dist/utils/FunctionWrappers.mjs +84 -84
- package/dist/utils/MsalTypes.d.ts +6 -6
- package/dist/utils/ProtocolUtils.d.ts +42 -42
- package/dist/utils/ProtocolUtils.mjs +69 -69
- package/dist/utils/StringUtils.d.ts +40 -40
- package/dist/utils/StringUtils.mjs +95 -95
- package/dist/utils/TimeUtils.d.ts +27 -27
- package/dist/utils/TimeUtils.mjs +45 -45
- package/dist/utils/UrlUtils.d.ts +10 -10
- package/dist/utils/UrlUtils.mjs +44 -44
- package/package.json +1 -1
- package/src/authority/Authority.ts +69 -29
- package/src/authority/AuthorityFactory.ts +48 -92
- package/src/authority/AuthorityMetadata.ts +23 -526
- package/src/cache/entities/AppMetadataEntity.ts +6 -81
- package/src/cache/entities/AuthorityMetadataEntity.ts +2 -94
- package/src/cache/utils/CacheHelpers.ts +111 -0
- package/src/client/BaseClient.ts +10 -11
- package/src/config/ClientConfiguration.ts +4 -4
- package/src/index.ts +1 -2
- package/src/packageMetadata.ts +1 -1
- package/src/response/ResponseHandler.ts +5 -5
- package/src/utils/Constants.ts +0 -4
- package/dist/cache/entities/AppMetadataEntity.mjs +0 -73
- package/dist/cache/entities/AppMetadataEntity.mjs.map +0 -1
- package/dist/cache/entities/AuthorityMetadataEntity.mjs +0 -86
- package/dist/cache/entities/AuthorityMetadataEntity.mjs.map +0 -1
|
@@ -3,13 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { CloudDiscoveryMetadata } from "../../authority/CloudDiscoveryMetadata";
|
|
7
|
-
import { OpenIdConfigResponse } from "../../authority/OpenIdConfigResponse";
|
|
8
|
-
import { AUTHORITY_METADATA_CONSTANTS } from "../../utils/Constants";
|
|
9
|
-
import { TimeUtils } from "../../utils/TimeUtils";
|
|
10
|
-
|
|
11
6
|
/** @internal */
|
|
12
|
-
export
|
|
7
|
+
export type AuthorityMetadataEntity = {
|
|
13
8
|
aliases: Array<string>;
|
|
14
9
|
preferred_cache: string;
|
|
15
10
|
preferred_network: string;
|
|
@@ -22,91 +17,4 @@ export class AuthorityMetadataEntity {
|
|
|
22
17
|
endpointsFromNetwork: boolean;
|
|
23
18
|
expiresAt: number;
|
|
24
19
|
jwks_uri: string;
|
|
25
|
-
|
|
26
|
-
constructor() {
|
|
27
|
-
this.expiresAt =
|
|
28
|
-
TimeUtils.nowSeconds() +
|
|
29
|
-
AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Update the entity with new aliases, preferred_cache and preferred_network values
|
|
34
|
-
* @param metadata
|
|
35
|
-
* @param fromNetwork
|
|
36
|
-
*/
|
|
37
|
-
updateCloudDiscoveryMetadata(
|
|
38
|
-
metadata: CloudDiscoveryMetadata,
|
|
39
|
-
fromNetwork: boolean
|
|
40
|
-
): void {
|
|
41
|
-
this.aliases = metadata.aliases;
|
|
42
|
-
this.preferred_cache = metadata.preferred_cache;
|
|
43
|
-
this.preferred_network = metadata.preferred_network;
|
|
44
|
-
this.aliasesFromNetwork = fromNetwork;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Update the entity with new endpoints
|
|
49
|
-
* @param metadata
|
|
50
|
-
* @param fromNetwork
|
|
51
|
-
*/
|
|
52
|
-
updateEndpointMetadata(
|
|
53
|
-
metadata: OpenIdConfigResponse,
|
|
54
|
-
fromNetwork: boolean
|
|
55
|
-
): void {
|
|
56
|
-
this.authorization_endpoint = metadata.authorization_endpoint;
|
|
57
|
-
this.token_endpoint = metadata.token_endpoint;
|
|
58
|
-
this.end_session_endpoint = metadata.end_session_endpoint;
|
|
59
|
-
this.issuer = metadata.issuer;
|
|
60
|
-
this.endpointsFromNetwork = fromNetwork;
|
|
61
|
-
this.jwks_uri = metadata.jwks_uri;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Save the authority that was used to create this cache entry
|
|
66
|
-
* @param authority
|
|
67
|
-
*/
|
|
68
|
-
updateCanonicalAuthority(authority: string): void {
|
|
69
|
-
this.canonical_authority = authority;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Reset the exiresAt value
|
|
74
|
-
*/
|
|
75
|
-
resetExpiresAt(): void {
|
|
76
|
-
this.expiresAt =
|
|
77
|
-
TimeUtils.nowSeconds() +
|
|
78
|
-
AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Returns whether or not the data needs to be refreshed
|
|
83
|
-
*/
|
|
84
|
-
isExpired(): boolean {
|
|
85
|
-
return this.expiresAt <= TimeUtils.nowSeconds();
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Validates an entity: checks for all expected params
|
|
90
|
-
* @param entity
|
|
91
|
-
*/
|
|
92
|
-
static isAuthorityMetadataEntity(key: string, entity: object): boolean {
|
|
93
|
-
if (!entity) {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return (
|
|
98
|
-
key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&
|
|
99
|
-
entity.hasOwnProperty("aliases") &&
|
|
100
|
-
entity.hasOwnProperty("preferred_cache") &&
|
|
101
|
-
entity.hasOwnProperty("preferred_network") &&
|
|
102
|
-
entity.hasOwnProperty("canonical_authority") &&
|
|
103
|
-
entity.hasOwnProperty("authorization_endpoint") &&
|
|
104
|
-
entity.hasOwnProperty("token_endpoint") &&
|
|
105
|
-
entity.hasOwnProperty("issuer") &&
|
|
106
|
-
entity.hasOwnProperty("aliasesFromNetwork") &&
|
|
107
|
-
entity.hasOwnProperty("endpointsFromNetwork") &&
|
|
108
|
-
entity.hasOwnProperty("expiresAt") &&
|
|
109
|
-
entity.hasOwnProperty("jwks_uri")
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
20
|
+
};
|
|
@@ -5,11 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
import { extractTokenClaims } from "../../account/AuthToken";
|
|
7
7
|
import { TokenClaims } from "../../account/TokenClaims";
|
|
8
|
+
import { CloudDiscoveryMetadata } from "../../authority/CloudDiscoveryMetadata";
|
|
9
|
+
import { OpenIdConfigResponse } from "../../authority/OpenIdConfigResponse";
|
|
8
10
|
import {
|
|
9
11
|
ClientAuthErrorCodes,
|
|
10
12
|
createClientAuthError,
|
|
11
13
|
} from "../../error/ClientAuthError";
|
|
12
14
|
import {
|
|
15
|
+
APP_METADATA,
|
|
16
|
+
AUTHORITY_METADATA_CONSTANTS,
|
|
13
17
|
AuthenticationScheme,
|
|
14
18
|
CredentialType,
|
|
15
19
|
SERVER_TELEM_CONSTANTS,
|
|
@@ -18,6 +22,8 @@ import {
|
|
|
18
22
|
} from "../../utils/Constants";
|
|
19
23
|
import { TimeUtils } from "../../utils/TimeUtils";
|
|
20
24
|
import { AccessTokenEntity } from "../entities/AccessTokenEntity";
|
|
25
|
+
import { AppMetadataEntity } from "../entities/AppMetadataEntity";
|
|
26
|
+
import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity";
|
|
21
27
|
import { CredentialEntity } from "../entities/CredentialEntity";
|
|
22
28
|
import { IdTokenEntity } from "../entities/IdTokenEntity";
|
|
23
29
|
import { RefreshTokenEntity } from "../entities/RefreshTokenEntity";
|
|
@@ -350,3 +356,108 @@ export function isThrottlingEntity(key: string, entity?: object): boolean {
|
|
|
350
356
|
|
|
351
357
|
return validateKey && validateEntity;
|
|
352
358
|
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Generate AppMetadata Cache Key as per the schema: appmetadata-<environment>-<client_id>
|
|
362
|
+
*/
|
|
363
|
+
export function generateAppMetadataKey({
|
|
364
|
+
environment,
|
|
365
|
+
clientId,
|
|
366
|
+
}: AppMetadataEntity): string {
|
|
367
|
+
const appMetaDataKeyArray: Array<string> = [
|
|
368
|
+
APP_METADATA,
|
|
369
|
+
environment,
|
|
370
|
+
clientId,
|
|
371
|
+
];
|
|
372
|
+
return appMetaDataKeyArray
|
|
373
|
+
.join(Separators.CACHE_KEY_SEPARATOR)
|
|
374
|
+
.toLowerCase();
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/*
|
|
378
|
+
* Validates an entity: checks for all expected params
|
|
379
|
+
* @param entity
|
|
380
|
+
*/
|
|
381
|
+
export function isAppMetadataEntity(key: string, entity: object): boolean {
|
|
382
|
+
if (!entity) {
|
|
383
|
+
return false;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
return (
|
|
387
|
+
key.indexOf(APP_METADATA) === 0 &&
|
|
388
|
+
entity.hasOwnProperty("clientId") &&
|
|
389
|
+
entity.hasOwnProperty("environment")
|
|
390
|
+
);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Validates an entity: checks for all expected params
|
|
395
|
+
* @param entity
|
|
396
|
+
*/
|
|
397
|
+
export function isAuthorityMetadataEntity(
|
|
398
|
+
key: string,
|
|
399
|
+
entity: object
|
|
400
|
+
): boolean {
|
|
401
|
+
if (!entity) {
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
return (
|
|
406
|
+
key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&
|
|
407
|
+
entity.hasOwnProperty("aliases") &&
|
|
408
|
+
entity.hasOwnProperty("preferred_cache") &&
|
|
409
|
+
entity.hasOwnProperty("preferred_network") &&
|
|
410
|
+
entity.hasOwnProperty("canonical_authority") &&
|
|
411
|
+
entity.hasOwnProperty("authorization_endpoint") &&
|
|
412
|
+
entity.hasOwnProperty("token_endpoint") &&
|
|
413
|
+
entity.hasOwnProperty("issuer") &&
|
|
414
|
+
entity.hasOwnProperty("aliasesFromNetwork") &&
|
|
415
|
+
entity.hasOwnProperty("endpointsFromNetwork") &&
|
|
416
|
+
entity.hasOwnProperty("expiresAt") &&
|
|
417
|
+
entity.hasOwnProperty("jwks_uri")
|
|
418
|
+
);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Reset the exiresAt value
|
|
423
|
+
*/
|
|
424
|
+
export function generateAuthorityMetadataExpiresAt(): number {
|
|
425
|
+
return (
|
|
426
|
+
TimeUtils.nowSeconds() +
|
|
427
|
+
AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS
|
|
428
|
+
);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
export function updateAuthorityEndpointMetadata(
|
|
432
|
+
authorityMetadata: AuthorityMetadataEntity,
|
|
433
|
+
updatedValues: OpenIdConfigResponse,
|
|
434
|
+
fromNetwork: boolean
|
|
435
|
+
): void {
|
|
436
|
+
authorityMetadata.authorization_endpoint =
|
|
437
|
+
updatedValues.authorization_endpoint;
|
|
438
|
+
authorityMetadata.token_endpoint = updatedValues.token_endpoint;
|
|
439
|
+
authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;
|
|
440
|
+
authorityMetadata.issuer = updatedValues.issuer;
|
|
441
|
+
authorityMetadata.endpointsFromNetwork = fromNetwork;
|
|
442
|
+
authorityMetadata.jwks_uri = updatedValues.jwks_uri;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
export function updateCloudDiscoveryMetadata(
|
|
446
|
+
authorityMetadata: AuthorityMetadataEntity,
|
|
447
|
+
updatedValues: CloudDiscoveryMetadata,
|
|
448
|
+
fromNetwork: boolean
|
|
449
|
+
): void {
|
|
450
|
+
authorityMetadata.aliases = updatedValues.aliases;
|
|
451
|
+
authorityMetadata.preferred_cache = updatedValues.preferred_cache;
|
|
452
|
+
authorityMetadata.preferred_network = updatedValues.preferred_network;
|
|
453
|
+
authorityMetadata.aliasesFromNetwork = fromNetwork;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Returns whether or not the data needs to be refreshed
|
|
458
|
+
*/
|
|
459
|
+
export function isAuthorityMetadataExpired(
|
|
460
|
+
metadata: AuthorityMetadataEntity
|
|
461
|
+
): boolean {
|
|
462
|
+
return metadata.expiresAt <= TimeUtils.nowSeconds();
|
|
463
|
+
}
|
package/src/client/BaseClient.ts
CHANGED
|
@@ -24,7 +24,7 @@ import { buildClientInfoFromHomeAccountId } from "../account/ClientInfo";
|
|
|
24
24
|
import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient";
|
|
25
25
|
import { RequestParameterBuilder } from "../request/RequestParameterBuilder";
|
|
26
26
|
import { BaseAuthRequest } from "../request/BaseAuthRequest";
|
|
27
|
-
import {
|
|
27
|
+
import { createDiscoveredInstance } from "../authority/AuthorityFactory";
|
|
28
28
|
import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent";
|
|
29
29
|
|
|
30
30
|
/**
|
|
@@ -191,16 +191,15 @@ export abstract class BaseClient {
|
|
|
191
191
|
correlationId
|
|
192
192
|
);
|
|
193
193
|
const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;
|
|
194
|
-
const cloudInstanceAuthority =
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
);
|
|
194
|
+
const cloudInstanceAuthority = await createDiscoveredInstance(
|
|
195
|
+
cloudInstanceAuthorityUri,
|
|
196
|
+
this.networkClient,
|
|
197
|
+
this.cacheManager,
|
|
198
|
+
this.authority.options,
|
|
199
|
+
this.logger,
|
|
200
|
+
correlationId,
|
|
201
|
+
this.performanceClient
|
|
202
|
+
);
|
|
204
203
|
this.authority = cloudInstanceAuthority;
|
|
205
204
|
}
|
|
206
205
|
|
|
@@ -6,10 +6,7 @@
|
|
|
6
6
|
import { INetworkModule } from "../network/INetworkModule";
|
|
7
7
|
import { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from "../crypto/ICrypto";
|
|
8
8
|
import { ILoggerCallback, Logger, LogLevel } from "../logger/Logger";
|
|
9
|
-
import {
|
|
10
|
-
Constants,
|
|
11
|
-
DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,
|
|
12
|
-
} from "../utils/Constants";
|
|
9
|
+
import { Constants } from "../utils/Constants";
|
|
13
10
|
import { version } from "../packageMetadata";
|
|
14
11
|
import { Authority } from "../authority/Authority";
|
|
15
12
|
import { AzureCloudInstance } from "../authority/AuthorityOptions";
|
|
@@ -24,6 +21,9 @@ import {
|
|
|
24
21
|
createClientAuthError,
|
|
25
22
|
} from "../error/ClientAuthError";
|
|
26
23
|
|
|
24
|
+
// Token renewal offset default in seconds
|
|
25
|
+
const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;
|
|
26
|
+
|
|
27
27
|
/**
|
|
28
28
|
* Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.
|
|
29
29
|
*
|
package/src/index.ts
CHANGED
|
@@ -59,7 +59,7 @@ export {
|
|
|
59
59
|
AzureCloudInstance,
|
|
60
60
|
StaticAuthorityOptions,
|
|
61
61
|
} from "./authority/AuthorityOptions";
|
|
62
|
-
export
|
|
62
|
+
export * as AuthorityFactory from "./authority/AuthorityFactory";
|
|
63
63
|
export { AuthorityType } from "./authority/AuthorityType";
|
|
64
64
|
export { ProtocolMode } from "./authority/ProtocolMode";
|
|
65
65
|
export { OIDCOptions } from "./authority/OIDCOptions";
|
|
@@ -204,7 +204,6 @@ export {
|
|
|
204
204
|
GrantType,
|
|
205
205
|
AADAuthorityConstants,
|
|
206
206
|
HttpStatus,
|
|
207
|
-
DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,
|
|
208
207
|
JsonWebTokenTypes,
|
|
209
208
|
} from "./utils/Constants";
|
|
210
209
|
export * as AADServerParamKeys from "./constants/AADServerParamKeys";
|
package/src/packageMetadata.ts
CHANGED
|
@@ -524,11 +524,11 @@ export class ResponseHandler {
|
|
|
524
524
|
// appMetadata
|
|
525
525
|
let cachedAppMetadata: AppMetadataEntity | null = null;
|
|
526
526
|
if (serverTokenResponse.foci) {
|
|
527
|
-
cachedAppMetadata =
|
|
528
|
-
this.clientId,
|
|
529
|
-
env,
|
|
530
|
-
serverTokenResponse.foci
|
|
531
|
-
|
|
527
|
+
cachedAppMetadata = {
|
|
528
|
+
clientId: this.clientId,
|
|
529
|
+
environment: env,
|
|
530
|
+
familyId: serverTokenResponse.foci,
|
|
531
|
+
};
|
|
532
532
|
}
|
|
533
533
|
|
|
534
534
|
return new CacheRecord(
|
package/src/utils/Constants.ts
CHANGED
|
@@ -68,7 +68,6 @@ export const HttpStatus = {
|
|
|
68
68
|
SUCCESS_RANGE_END: 299,
|
|
69
69
|
REDIRECT: 302,
|
|
70
70
|
CLIENT_ERROR_RANGE_START: 400,
|
|
71
|
-
UNAUTHORIZED: 401,
|
|
72
71
|
CLIENT_ERROR_RANGE_END: 499,
|
|
73
72
|
SERVER_ERROR_RANGE_START: 500,
|
|
74
73
|
SERVER_ERROR_RANGE_END: 599,
|
|
@@ -371,6 +370,3 @@ export type JsonWebTokenTypes =
|
|
|
371
370
|
(typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes];
|
|
372
371
|
|
|
373
372
|
export const ONE_DAY_IN_MS = 86400000;
|
|
374
|
-
|
|
375
|
-
// Token renewal offset default in seconds
|
|
376
|
-
export const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/*! @azure/msal-common v14.6.0-alpha.0 2023-12-15 */
|
|
2
|
-
'use strict';
|
|
3
|
-
import { Separators, APP_METADATA } from '../../utils/Constants.mjs';
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
7
|
-
* Licensed under the MIT License.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* APP_METADATA Cache
|
|
11
|
-
*
|
|
12
|
-
* Key:Value Schema:
|
|
13
|
-
*
|
|
14
|
-
* Key: appmetadata-<environment>-<client_id>
|
|
15
|
-
*
|
|
16
|
-
* Value:
|
|
17
|
-
* {
|
|
18
|
-
* clientId: client ID of the application
|
|
19
|
-
* environment: entity that issued the token, represented as a full host
|
|
20
|
-
* familyId: Family ID identifier, '1' represents Microsoft Family
|
|
21
|
-
* }
|
|
22
|
-
*/
|
|
23
|
-
class AppMetadataEntity {
|
|
24
|
-
/**
|
|
25
|
-
* Generate AppMetadata Cache Key as per the schema: appmetadata-<environment>-<client_id>
|
|
26
|
-
*/
|
|
27
|
-
generateAppMetadataKey() {
|
|
28
|
-
return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Generate AppMetadata Cache Key
|
|
32
|
-
*/
|
|
33
|
-
static generateAppMetadataCacheKey(environment, clientId) {
|
|
34
|
-
const appMetaDataKeyArray = [
|
|
35
|
-
APP_METADATA,
|
|
36
|
-
environment,
|
|
37
|
-
clientId,
|
|
38
|
-
];
|
|
39
|
-
return appMetaDataKeyArray
|
|
40
|
-
.join(Separators.CACHE_KEY_SEPARATOR)
|
|
41
|
-
.toLowerCase();
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Creates AppMetadataEntity
|
|
45
|
-
* @param clientId
|
|
46
|
-
* @param environment
|
|
47
|
-
* @param familyId
|
|
48
|
-
*/
|
|
49
|
-
static createAppMetadataEntity(clientId, environment, familyId) {
|
|
50
|
-
const appMetadata = new AppMetadataEntity();
|
|
51
|
-
appMetadata.clientId = clientId;
|
|
52
|
-
appMetadata.environment = environment;
|
|
53
|
-
if (familyId) {
|
|
54
|
-
appMetadata.familyId = familyId;
|
|
55
|
-
}
|
|
56
|
-
return appMetadata;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Validates an entity: checks for all expected params
|
|
60
|
-
* @param entity
|
|
61
|
-
*/
|
|
62
|
-
static isAppMetadataEntity(key, entity) {
|
|
63
|
-
if (!entity) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
return (key.indexOf(APP_METADATA) === 0 &&
|
|
67
|
-
entity.hasOwnProperty("clientId") &&
|
|
68
|
-
entity.hasOwnProperty("environment"));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export { AppMetadataEntity };
|
|
73
|
-
//# sourceMappingURL=AppMetadataEntity.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppMetadataEntity.mjs","sources":["../../../src/cache/entities/AppMetadataEntity.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;AAGG;AAIH;;;;;;;;;;;;;AAaG;MACU,iBAAiB,CAAA;AAK1B;;AAEG;IACH,sBAAsB,GAAA;AAClB,QAAA,OAAO,iBAAiB,CAAC,2BAA2B,CAChD,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,CAChB,CAAC;KACL;AAED;;AAEG;AACH,IAAA,OAAO,2BAA2B,CAC9B,WAAmB,EACnB,QAAgB,EAAA;AAEhB,QAAA,MAAM,mBAAmB,GAAkB;YACvC,YAAY;YACZ,WAAW;YACX,QAAQ;SACX,CAAC;AACF,QAAA,OAAO,mBAAmB;AACrB,aAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;AACpC,aAAA,WAAW,EAAE,CAAC;KACtB;AAED;;;;;AAKG;AACH,IAAA,OAAO,uBAAuB,CAC1B,QAAgB,EAChB,WAAmB,EACnB,QAAiB,EAAA;AAEjB,QAAA,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAE5C,QAAA,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChC,QAAA,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;AACtC,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,WAAW,CAAC;KACtB;AAED;;;AAGG;AACH,IAAA,OAAO,mBAAmB,CAAC,GAAW,EAAE,MAAc,EAAA;QAClD,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,QACI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;AAC/B,YAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC;AACjC,YAAA,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,EACtC;KACL;AACJ;;;;"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/*! @azure/msal-common v14.6.0-alpha.0 2023-12-15 */
|
|
2
|
-
'use strict';
|
|
3
|
-
import { AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.mjs';
|
|
4
|
-
import { TimeUtils } from '../../utils/TimeUtils.mjs';
|
|
5
|
-
|
|
6
|
-
/*
|
|
7
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
8
|
-
* Licensed under the MIT License.
|
|
9
|
-
*/
|
|
10
|
-
/** @internal */
|
|
11
|
-
class AuthorityMetadataEntity {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.expiresAt =
|
|
14
|
-
TimeUtils.nowSeconds() +
|
|
15
|
-
AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Update the entity with new aliases, preferred_cache and preferred_network values
|
|
19
|
-
* @param metadata
|
|
20
|
-
* @param fromNetwork
|
|
21
|
-
*/
|
|
22
|
-
updateCloudDiscoveryMetadata(metadata, fromNetwork) {
|
|
23
|
-
this.aliases = metadata.aliases;
|
|
24
|
-
this.preferred_cache = metadata.preferred_cache;
|
|
25
|
-
this.preferred_network = metadata.preferred_network;
|
|
26
|
-
this.aliasesFromNetwork = fromNetwork;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Update the entity with new endpoints
|
|
30
|
-
* @param metadata
|
|
31
|
-
* @param fromNetwork
|
|
32
|
-
*/
|
|
33
|
-
updateEndpointMetadata(metadata, fromNetwork) {
|
|
34
|
-
this.authorization_endpoint = metadata.authorization_endpoint;
|
|
35
|
-
this.token_endpoint = metadata.token_endpoint;
|
|
36
|
-
this.end_session_endpoint = metadata.end_session_endpoint;
|
|
37
|
-
this.issuer = metadata.issuer;
|
|
38
|
-
this.endpointsFromNetwork = fromNetwork;
|
|
39
|
-
this.jwks_uri = metadata.jwks_uri;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Save the authority that was used to create this cache entry
|
|
43
|
-
* @param authority
|
|
44
|
-
*/
|
|
45
|
-
updateCanonicalAuthority(authority) {
|
|
46
|
-
this.canonical_authority = authority;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Reset the exiresAt value
|
|
50
|
-
*/
|
|
51
|
-
resetExpiresAt() {
|
|
52
|
-
this.expiresAt =
|
|
53
|
-
TimeUtils.nowSeconds() +
|
|
54
|
-
AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Returns whether or not the data needs to be refreshed
|
|
58
|
-
*/
|
|
59
|
-
isExpired() {
|
|
60
|
-
return this.expiresAt <= TimeUtils.nowSeconds();
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Validates an entity: checks for all expected params
|
|
64
|
-
* @param entity
|
|
65
|
-
*/
|
|
66
|
-
static isAuthorityMetadataEntity(key, entity) {
|
|
67
|
-
if (!entity) {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&
|
|
71
|
-
entity.hasOwnProperty("aliases") &&
|
|
72
|
-
entity.hasOwnProperty("preferred_cache") &&
|
|
73
|
-
entity.hasOwnProperty("preferred_network") &&
|
|
74
|
-
entity.hasOwnProperty("canonical_authority") &&
|
|
75
|
-
entity.hasOwnProperty("authorization_endpoint") &&
|
|
76
|
-
entity.hasOwnProperty("token_endpoint") &&
|
|
77
|
-
entity.hasOwnProperty("issuer") &&
|
|
78
|
-
entity.hasOwnProperty("aliasesFromNetwork") &&
|
|
79
|
-
entity.hasOwnProperty("endpointsFromNetwork") &&
|
|
80
|
-
entity.hasOwnProperty("expiresAt") &&
|
|
81
|
-
entity.hasOwnProperty("jwks_uri"));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export { AuthorityMetadataEntity };
|
|
86
|
-
//# sourceMappingURL=AuthorityMetadataEntity.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AuthorityMetadataEntity.mjs","sources":["../../../src/cache/entities/AuthorityMetadataEntity.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;AAGG;AAOH;MACa,uBAAuB,CAAA;AAchC,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,SAAS;YACV,SAAS,CAAC,UAAU,EAAE;gBACtB,4BAA4B,CAAC,oBAAoB,CAAC;KACzD;AAED;;;;AAIG;IACH,4BAA4B,CACxB,QAAgC,EAChC,WAAoB,EAAA;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;AAChD,QAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;AACpD,QAAA,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;KACzC;AAED;;;;AAIG;IACH,sBAAsB,CAClB,QAA8B,EAC9B,WAAoB,EAAA;AAEpB,QAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;AAC9D,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;AAC9C,QAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC9B,QAAA,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;KACrC;AAED;;;AAGG;AACH,IAAA,wBAAwB,CAAC,SAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;KACxC;AAED;;AAEG;IACH,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,SAAS;YACV,SAAS,CAAC,UAAU,EAAE;gBACtB,4BAA4B,CAAC,oBAAoB,CAAC;KACzD;AAED;;AAEG;IACH,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;KACnD;AAED;;;AAGG;AACH,IAAA,OAAO,yBAAyB,CAAC,GAAW,EAAE,MAAc,EAAA;QACxD,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,QACI,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,SAAS,CAAC,KAAK,CAAC;AACzD,YAAA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;AAChC,YAAA,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC;AACxC,YAAA,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC;AAC1C,YAAA,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC;AAC5C,YAAA,MAAM,CAAC,cAAc,CAAC,wBAAwB,CAAC;AAC/C,YAAA,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC;AACvC,YAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC/B,YAAA,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC;AAC3C,YAAA,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC;AAC7C,YAAA,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC;AAClC,YAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EACnC;KACL;AACJ;;;;"}
|