UNPKG

@datastax/astra-db-ts

Version:
35 lines (34 loc) 1.31 kB
// Copyright Datastax, Inc // SPDX-License-Identifier: Apache-2.0 import { MonoidalOptionsHandler, monoids } from '../../lib/opts-handlers.js'; import { TokenProvider } from '../../lib/index.js'; import { exact, nullish, oneOf, optional, string } 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'; const monoid = monoids.object({ logging: InternalLogger.cfg, endpointUrl: monoids.optional(), astraEnv: monoids.optional(), timeoutDefaults: Timeouts.cfg, adminToken: TokenProvider.opts, }); const decoder = nullish(exact({ environment: EnvironmentCfgHandler.decoder, logging: InternalLogger.cfg.decoder, adminToken: TokenProvider.opts.decoder, endpointUrl: optional(string), astraEnv: optional(oneOf(['dev', 'prod', 'test'])), timeoutDefaults: Timeouts.cfg.decoder, })); const transformer = decoder.transform((input) => { if (!input) { return monoid.empty; } return { ...input, endpointUrl: input.endpointUrl, astraEnv: input.astraEnv, }; }); export const AdminOptsHandler = new MonoidalOptionsHandler(transformer, monoid);