UNPKG

@datastax/astra-db-ts

Version:
64 lines (63 loc) 2.39 kB
"use strict"; // 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;