@aminya/dotenv-vault
Version:
A secrets manager for .env files – from the same people that pioneered dotenv.
103 lines (102 loc) • 3.7 kB
JavaScript
"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();