UNPKG

@aminya/dotenv-vault

Version:

A secrets manager for .env files – from the same people that pioneered dotenv.

103 lines (102 loc) 3.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.vars = exports.Vars = void 0; const tslib_1 = require("tslib"); const dotenv = tslib_1.__importStar(require("dotenv")); const fs_1 = require("fs"); class Vars { get cli() { // read from process.env first, then .env.vault settings, then default return process.env.DOTENV_CLI || this.vaultParsed.DOTENV_CLI || 'npx dotenv-vault@latest'; } get apiUrl() { // read from process.env first, then .env.vault settings, then default return process.env.DOTENV_API_URL || this.vaultParsed.DOTENV_API_URL || 'https://vault.dotenv.org'; } get vaultFileHeaderComment() { return `#/-------------------.env.vault---------------------/ #/ cloud-agnostic vaulting standard / #/ [how it works](https://dotenv.org/env-vault) / #/--------------------------------------------------/`; } get meFileHeaderComment() { return `#/!!!!!!!!!!!!!!!!!!!!.env.me!!!!!!!!!!!!!!!!!!!!!!!/ #/ credential file. DO NOT commit to source control / #/ [how it works](https://dotenv.org/env-me) / #/--------------------------------------------------/`; } get keysFileHeaderComment() { return `#/!!!!!!!!!!!!!!!!!!!.env.keys!!!!!!!!!!!!!!!!!!!!!!/ #/ DOTENV_KEYs. DO NOT commit to source control / #/ [how it works](https://dotenv.org/env-keys) / #/--------------------------------------------------/`; } get vaultFilename() { // if .env.project (old) file exists use it. otherwise use .env.vault if ((0, fs_1.existsSync)('.env.project')) { return '.env.project'; } return '.env.vault'; } get vaultKey() { if (this.vaultFilename === '.env.project') { return 'DOTENV_PROJECT'; } return 'DOTENV_VAULT'; } get vaultParsed() { return dotenv.configDotenv({ path: exports.vars.vaultFilename }).parsed || {}; } get vaultValue() { return this.vaultParsed[exports.vars.vaultKey] || ''; } get existingEnvVault() { return (0, fs_1.existsSync)(this.vaultFilename); } get missingEnvVault() { return !(0, fs_1.existsSync)(this.vaultFilename); } get emptyEnvVault() { return !(this.vaultValue && this.vaultValue.toString().length > 1); } get existingVaultValue() { return this.vaultValue.toString().length === 68; } invalidVaultValue(identifier) { return !(identifier && identifier.length === 68); } invalidMeValue(credential) { return !(credential && credential.length === 67); } missingEnvMe(dotenvMe) { if (dotenvMe) { // it's not missing if dotenvMe is passed return false; } return !(0, fs_1.existsSync)('.env.me'); } emptyEnvMe(dotenvMe) { if (dotenvMe) { return false; } return !(this.meValue && this.meValue.toString().length > 1); } get meValue() { return (dotenv.configDotenv({ path: '.env.me' }).parsed || {}).DOTENV_ME; } missingEnv(filename = '.env') { return !(0, fs_1.existsSync)(filename); } emptyEnv(filename = '.env') { const envContent = (0, fs_1.readFileSync)(filename, 'utf8'); return !(envContent && envContent.toString().length > 0); } get missingEnvKeys() { return !(0, fs_1.existsSync)('.env.keys'); } get emptyEnvKeys() { const envKeysContent = (0, fs_1.readFileSync)('.env.keys', 'utf8'); return !(envKeysContent && envKeysContent.toString().length > 0); } } exports.Vars = Vars; exports.vars = new Vars();