@creditkarma/dynamic-config
Version:
Dynamic Config for Node.js backed by Consul and Vault
54 lines • 1.95 kB
JavaScript
;
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