UNPKG

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
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