UNPKG

@creditkarma/dynamic-config

Version:

Dynamic Config for Node.js backed by Consul and Vault

54 lines 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.vaultResolver = void 0; const vault_client_1 = require("@creditkarma/vault-client"); const constants_1 = require("../constants"); const Maybe_1 = require("../Maybe"); const errors = require("../errors"); const logger_1 = require("../logger"); function vaultResolver() { let vaultClient = null; let vaultConfig = null; async function getVaultClient() { if (vaultClient !== null) { return vaultClient; } else { if (vaultConfig !== null) { vaultClient = new Maybe_1.Just(new vault_client_1.VaultClient(vaultConfig)); logger_1.defaultLogger.log(`Vault client initialized for secret config store.`); } else { logger_1.defaultLogger.warn(`Unable to find valid configuration for Vault.`); vaultClient = new Maybe_1.Nothing(); } return vaultClient; } } return { type: 'secret', name: 'vault', init(configInstance, remoteOptions = {}) { vaultConfig = configInstance.get(constants_1.HVAULT_CONFIG_KEY); return Promise.resolve({}); }, async get(key) { return getVaultClient().then((maybeClient) => { return maybeClient.fork((client) => { return client.get(key).then((value) => { return Promise.resolve(value); }, (err) => { throw new errors.HVFailed(err.message); }); }, () => { throw new errors.HVNotConfigured(key); }); }); }, watch(key, cb, type) { // Nothing to do. Can't watch environment variables. }, }; } exports.vaultResolver = vaultResolver; //# sourceMappingURL=vault.js.map