envilder
Version:
A CLI and GitHub Action that securely centralizes your environment variables from AWS SSM or Azure Key Vault as a single source of truth
60 lines • 2.43 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
/**
* Core client that resolves secrets from a configured provider.
*
* For most use cases prefer the {@link Envilder} facade.
* Use this class directly when you need a custom {@link ISecretProvider}.
*
* @example
* ```typescript
* const provider = new MyCustomProvider();
* const mapFile = new MapFileParser().parse(json);
* const secrets = await new EnvilderClient(provider).resolveSecrets(mapFile);
* ```
*/
export class EnvilderClient {
constructor(secretProvider) {
if (!secretProvider) {
throw new Error('secretProvider cannot be null');
}
this.secretProvider = secretProvider;
}
/**
* Resolves all mappings against the configured secret provider.
* Entries whose secret does not exist are silently omitted.
*/
resolveSecrets(mapFile) {
return __awaiter(this, void 0, void 0, function* () {
if (mapFile.mappings.size === 0) {
return new Map();
}
const secretPaths = [...new Set(mapFile.mappings.values())];
const resolved = yield this.secretProvider.getSecrets(secretPaths);
const result = new Map();
for (const [envVarName, secretPath] of mapFile.mappings) {
const value = resolved.get(secretPath);
if (value !== undefined) {
result.set(envVarName, value);
}
}
return result;
});
}
/**
* Sets every key/value pair as a process-level environment variable.
*/
static injectIntoEnvironment(secrets) {
for (const [key, value] of secrets) {
process.env[key] = value;
}
}
}
//# sourceMappingURL=envilder-client.js.map