/*! @azure/msal-common v14.4.0 2023-11-07 */ 'use strict'; import { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.mjs'; import { Logger, LogLevel } from '../logger/Logger.mjs'; import { Constants } from '../utils/Constants.mjs'; import { version } from '../packageMetadata.mjs'; import { AzureCloudInstance } from '../authority/AuthorityOptions.mjs'; import { DefaultStorageClass } from '../cache/CacheManager.mjs'; import { ProtocolMode } from '../authority/ProtocolMode.mjs'; import { createClientAuthError } from '../error/ClientAuthError.mjs'; import { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs'; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ // Token renewal offset default in seconds const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300; const DEFAULT_SYSTEM_OPTIONS = { tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC, preventCorsPreflight: false, }; const DEFAULT_LOGGER_IMPLEMENTATION = { loggerCallback: () => { // allow users to not set loggerCallback }, piiLoggingEnabled: false, logLevel: LogLevel.Info, correlationId: Constants.EMPTY_STRING, }; const DEFAULT_CACHE_OPTIONS = { claimsBasedCachingEnabled: false, }; const DEFAULT_NETWORK_IMPLEMENTATION = { async sendGetRequestAsync() { throw createClientAuthError(methodNotImplemented); }, async sendPostRequestAsync() { throw createClientAuthError(methodNotImplemented); }, }; const DEFAULT_LIBRARY_INFO = { sku: Constants.SKU, version: version, cpu: Constants.EMPTY_STRING, os: Constants.EMPTY_STRING, }; const DEFAULT_CLIENT_CREDENTIALS = { clientSecret: Constants.EMPTY_STRING, clientAssertion: undefined, }; const DEFAULT_AZURE_CLOUD_OPTIONS = { azureCloudInstance: AzureCloudInstance.None, tenant: `${Constants.DEFAULT_COMMON_TENANT}`, }; const DEFAULT_TELEMETRY_OPTIONS = { application: { appName: "", appVersion: "", }, }; /** * Function that sets the default options when not explicitly configured from app developer * * @param Configuration * * @returns Configuration */ function buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) { const loggerOptions = { ...DEFAULT_LOGGER_IMPLEMENTATION, ...userLoggerOption, }; return { authOptions: buildAuthOptions(userAuthOptions), systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions }, loggerOptions: loggerOptions, cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions }, storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)), networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION, cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION, clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS, libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo }, telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry }, serverTelemetryManager: serverTelemetryManager || null, persistencePlugin: persistencePlugin || null, serializableCache: serializableCache || null, }; } /** * Construct authoptions from the client and platform passed values * @param authOptions */ function buildAuthOptions(authOptions) { return { clientCapabilities: [], azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS, skipAuthorityMetadataCache: false, ...authOptions, }; } /** * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise * @param ClientConfiguration */ function isOidcProtocolMode(config) { return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC); } export { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration, isOidcProtocolMode }; //# sourceMappingURL=ClientConfiguration.mjs.map