UNPKG

@datastax/astra-db-ts

Version:
55 lines (54 loc) 2.4 kB
// Copyright Datastax, Inc // SPDX-License-Identifier: Apache-2.0 import { OptionsHandler } from '../../lib/opts-handlers.js'; import { HeadersProvider, TokenProvider } from '../../lib/index.js'; import { exact } from 'decoders'; import { Timeouts } from '../../lib/api/timeouts/timeouts.js'; import { InternalLogger } from '../../lib/logging/internal-logger.js'; import { EnvironmentCfgHandler } from '../../client/opts-handlers/environment-cfg-handler.js'; import { CallerCfgHandler } from '../../client/opts-handlers/caller-cfg-handler.js'; import { DbOptsHandler } from '../../client/opts-handlers/db-opts-handler.js'; import { AdminOptsHandler } from '../../client/opts-handlers/admin-opts-handler.js'; import { HttpOptsHandler } from '../../client/opts-handlers/http-opts-handler.js'; const decoder = exact({ logging: InternalLogger.cfg.decoder, environment: EnvironmentCfgHandler.decoder, httpOptions: HttpOptsHandler.decoder, dbOptions: DbOptsHandler.decoder, adminOptions: AdminOptsHandler.decoder, caller: CallerCfgHandler.decoder, timeoutDefaults: Timeouts.cfg.decoder, additionalHeaders: HeadersProvider.opts.fromObj.decoder, }); export const RootOptsHandler = (defaultToken, client) => { const transformer = decoder.transform((input) => { const dbAndAdminCommon = { timeoutDefaults: input.timeoutDefaults, logging: input.logging, }; return { additionalHeaders: input.additionalHeaders, environment: input.environment, fetchCtx: input.httpOptions, caller: input.caller, client: client, dbOptions: DbOptsHandler.concat([input.dbOptions, { ...DbOptsHandler.empty, token: TokenProvider.opts.concat([ defaultToken, input.dbOptions.token, ]), ...dbAndAdminCommon, }]), adminOptions: AdminOptsHandler.concat([input.adminOptions, { ...AdminOptsHandler.empty, adminToken: TokenProvider.opts.concat([ defaultToken, input.adminOptions.adminToken, ]), ...dbAndAdminCommon, }]), }; }); return new OptionsHandler(transformer); };