@datastax/astra-db-ts
Version:
Data API TypeScript client
52 lines (51 loc) • 2.46 kB
JavaScript
;
// Copyright Datastax, Inc
// SPDX-License-Identifier: Apache-2.0
Object.defineProperty(exports, "__esModule", { value: true });
exports.DbOptsHandler = void 0;
const opts_handlers_js_1 = require("../../lib/opts-handlers.js");
const index_js_1 = require("../../lib/index.js");
const decoders_1 = require("decoders");
const timeouts_js_1 = require("../../lib/api/timeouts/timeouts.js");
const internal_logger_js_1 = require("../../lib/logging/internal-logger.js");
const ser_des_js_1 = require("../../documents/tables/ser-des/ser-des.js");
const ser_des_js_2 = require("../../documents/collections/ser-des/ser-des.js");
const monoid = opts_handlers_js_1.monoids.object({
logging: internal_logger_js_1.InternalLogger.cfg,
keyspace: opts_handlers_js_1.monoids.optional(),
dataApiPath: opts_handlers_js_1.monoids.optional(),
collSerdes: ser_des_js_2.CollSerDes.cfg,
tableSerdes: ser_des_js_1.TableSerDes.cfg,
timeoutDefaults: timeouts_js_1.Timeouts.cfg,
token: index_js_1.TokenProvider.opts,
});
const decoder = (0, decoders_1.nullish)((0, decoders_1.exact)({
logging: internal_logger_js_1.InternalLogger.cfg.decoder,
token: index_js_1.TokenProvider.opts.decoder,
dataApiPath: (0, decoders_1.optional)(decoders_1.string),
keyspace: (0, decoders_1.optional)((0, decoders_1.regex)(/^\w{1,48}$/, 'Expected a string of 1-48 alphanumeric characters')),
timeoutDefaults: timeouts_js_1.Timeouts.cfg.decoder,
serdes: (0, decoders_1.optional)((0, decoders_1.exact)({
collection: ser_des_js_2.CollSerDes.cfg.decoder,
table: ser_des_js_1.TableSerDes.cfg.decoder,
mutateInPlace: (0, decoders_1.optional)((0, decoders_1.oneOf)([true, false])),
})),
}));
const transformer = decoder.transform((input) => {
var _a, _b;
if (!input) {
return monoid.empty;
}
if (input.serdes) {
(_a = input.serdes.collection).mutateInPlace ?? (_a.mutateInPlace = input.serdes.mutateInPlace);
(_b = input.serdes.table).mutateInPlace ?? (_b.mutateInPlace = input.serdes.mutateInPlace);
}
return {
...input,
keyspace: input.keyspace,
dataApiPath: input.dataApiPath,
collSerdes: input.serdes?.collection ?? ser_des_js_2.CollSerDes.cfg.empty,
tableSerdes: input.serdes?.table ?? ser_des_js_1.TableSerDes.cfg.empty,
};
});
exports.DbOptsHandler = new opts_handlers_js_1.MonoidalOptionsHandler(transformer, monoid);