import packageInfo from "./package.json"; import { decorateDefaultCredentialProvider } from "@aws-sdk/client-sts"; import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } from "@aws-sdk/config-resolver"; import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node"; import { Hash } from "@aws-sdk/hash-node"; import { NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS } from "@aws-sdk/middleware-endpoint-discovery"; import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@aws-sdk/middleware-retry"; import { loadConfig as loadNodeConfig } from "@aws-sdk/node-config-provider"; import { NodeHttpHandler, streamCollector } from "@aws-sdk/node-http-handler"; import { fromBase64, toBase64 } from "@aws-sdk/util-base64-node"; import { calculateBodyLength } from "@aws-sdk/util-body-length-node"; import { defaultUserAgent } from "@aws-sdk/util-user-agent-node"; import { fromUtf8, toUtf8 } from "@aws-sdk/util-utf8-node"; import { DynamoDBClientConfig } from "./DynamoDBClient"; import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; /** * @internal */ export const getRuntimeConfig = (config: DynamoDBClientConfig = {}) => { const clientSharedValues = getSharedRuntimeConfig(config); return { ...clientSharedValues, ...config, runtime: "node", base64Decoder: config.base64Decoder ?? fromBase64, base64Encoder: config.base64Encoder ?? toBase64, bodyLengthChecker: config.bodyLengthChecker ?? calculateBodyLength, credentialDefaultProvider: config.credentialDefaultProvider ?? decorateDefaultCredentialProvider(credentialDefaultProvider), defaultUserAgentProvider: config.defaultUserAgentProvider ?? defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), endpointDiscoveryEnabledProvider: config.endpointDiscoveryEnabledProvider ?? loadNodeConfig(NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS), maxAttempts: config.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS), region: config.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS), requestHandler: config.requestHandler ?? new NodeHttpHandler(), retryModeProvider: config.retryModeProvider ?? loadNodeConfig(NODE_RETRY_MODE_CONFIG_OPTIONS), sha256: config.sha256 ?? Hash.bind(null, "sha256"), streamCollector: config.streamCollector ?? streamCollector, utf8Decoder: config.utf8Decoder ?? fromUtf8, utf8Encoder: config.utf8Encoder ?? toUtf8, }; };