@datastax/astra-db-ts
Version:
Data API TypeScript client
35 lines (34 loc) • 1.31 kB
JavaScript
// 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);