@datastax/astra-db-ts
Version:
Data API TypeScript client
64 lines (63 loc) • 2.39 kB
JavaScript
;
// Copyright Datastax, Inc
// SPDX-License-Identifier: Apache-2.0
Object.defineProperty(exports, "__esModule", { value: true });
exports.TokenProvider = void 0;
const index_js_1 = require("../../lib/index.js");
const utils_js_1 = require("../../lib/utils.js");
const opts_handlers_js_1 = require("../../lib/opts-handlers.js");
const decoders_1 = require("decoders");
const constants_js_1 = require("../../lib/api/constants.js");
class TokenProvider {
toHeadersProvider() {
// eslint-disable-next-line @typescript-eslint/no-this-alias -- necessary in this case
const tp = this;
const hp = new (class extends index_js_1.HeadersProvider {
getHeaders(ctx) {
const maybePromise = tp.getToken();
return (maybePromise instanceof Promise)
? maybePromise.then(tp._mkAuthHeader(ctx))
: tp._mkAuthHeader(ctx)(maybePromise);
}
})();
return index_js_1.HeadersProvider.opts.fromObj.parse(hp);
}
_mkAuthHeader(ctx) {
return (token) => (token)
? (ctx.for === 'data-api')
? { [constants_js_1.DEFAULT_DATA_API_AUTH_HEADER]: token }
: { [constants_js_1.DEFAULT_DEVOPS_API_AUTH_HEADER]: `Bearer ${token}` }
: {};
}
}
exports.TokenProvider = TokenProvider;
class UnsetTokenProvider extends TokenProvider {
constructor() {
super();
}
getToken() {
return undefined;
}
}
Object.defineProperty(UnsetTokenProvider, "INSTANCE", {
enumerable: true,
configurable: true,
writable: true,
value: new UnsetTokenProvider()
});
const monoid = {
empty: UnsetTokenProvider.INSTANCE,
concat: (0, utils_js_1.findLast)((a) => a !== UnsetTokenProvider.INSTANCE, UnsetTokenProvider.INSTANCE),
};
const decoder = (0, decoders_1.nullish)((0, decoders_1.either)((0, utils_js_1.anyInstanceOf)(TokenProvider), decoders_1.string));
const transformed = decoder.transform((input) => {
if (typeof input === 'string') {
return new index_js_1.StaticTokenProvider(input);
}
if ((0, utils_js_1.isNullish)(input)) {
return UnsetTokenProvider.INSTANCE;
}
return input;
});
const TokenProviderOptsHandler = new opts_handlers_js_1.MonoidalOptionsHandler(transformed, monoid);
TokenProvider.opts = TokenProviderOptsHandler;