get-env-or-die
Version:
Utility to get and typecast environment variables.
81 lines • 9.11 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRegExpEnv = exports.getDateEnv = exports.getUrlEnv = exports.getArrayEnv = exports.getBoolEnv = exports.getIntEnv = exports.getStringEnv = exports.getEnv = void 0;
const url_1 = require("url");
const getEnv = (name, fallback) => {
return (0, exports.getStringEnv)(name, fallback);
};
exports.getEnv = getEnv;
const getStringEnv = (name, fallback) => {
return genericGetEnv(name, fallback);
};
exports.getStringEnv = getStringEnv;
const getIntEnv = (name, fallback) => {
const env = genericGetEnv(name, fallback);
const int = parseInt(env, 10);
if (isNaN(int)) {
throw new Error(`Env ${name} is not an integer.`);
}
return int;
};
exports.getIntEnv = getIntEnv;
const getBoolEnv = (name, fallback) => {
let env = genericGetEnv(name, fallback);
if (typeof env === 'boolean')
return env;
env = env.toLowerCase();
if (env === '1' || env === 'true')
return true;
if (env === '0' || env === 'false')
return false;
throw new Error(`Env ${name} is not a boolean.`);
};
exports.getBoolEnv = getBoolEnv;
const getArrayEnv = (name, fallback) => {
const env = genericGetEnv(name, fallback);
if (Array.isArray(env))
return env;
return env.split(',');
};
exports.getArrayEnv = getArrayEnv;
const getUrlEnv = (name, fallback) => {
const env = genericGetEnv(name, fallback);
try {
return new url_1.URL(env);
}
catch (_a) {
throw new Error(`Env ${name} is not an url.`);
}
};
exports.getUrlEnv = getUrlEnv;
const getDateEnv = (name, fallback) => {
const env = genericGetEnv(name, fallback);
const date = new Date(env);
if (date.toString() === 'Invalid Date') {
throw new Error(`Env ${name} is not a date.`);
}
return date;
};
exports.getDateEnv = getDateEnv;
const getRegExpEnv = (name, fallback) => {
const env = genericGetEnv(name, fallback);
if (env instanceof RegExp)
return env;
try {
const match = env.match(new RegExp('^/(.*?)/([gimy]*)$'));
return new RegExp(match[1], match[2]);
}
catch (_a) {
throw new Error(`Env ${name} is not a regExp.`);
}
};
exports.getRegExpEnv = getRegExpEnv;
const genericGetEnv = (name, fallback) => {
const env = process.env[name];
if (env)
return env;
if (fallback !== undefined)
return fallback;
throw new Error(`Env ${name} does not exist and no fallback value provided.`);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTBCO0FBRW5CLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBWSxFQUFFLFFBQWlCLEVBQVUsRUFBRTtJQUNoRSxPQUFPLElBQUEsb0JBQVksRUFBQyxJQUFJLEVBQUUsUUFBUSxDQUFXLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRlcsUUFBQSxNQUFNLFVBRWpCO0FBRUssTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFZLEVBQUUsUUFBaUIsRUFBVSxFQUFFO0lBQ3RFLE9BQU8sYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLENBQVcsQ0FBQztBQUNqRCxDQUFDLENBQUM7QUFGVyxRQUFBLFlBQVksZ0JBRXZCO0FBRUssTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsUUFBaUIsRUFBVSxFQUFFO0lBQ25FLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5QixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLHFCQUFxQixDQUFDLENBQUM7S0FDbkQ7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQVBXLFFBQUEsU0FBUyxhQU9wQjtBQUVLLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBWSxFQUFFLFFBQWtCLEVBQVcsRUFBRTtJQUN0RSxJQUFJLEdBQUcsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLElBQUksT0FBTyxHQUFHLEtBQUssU0FBUztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3pDLEdBQUcsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENB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bmV4cG9ydCBjb25zdCBnZXRFbnYgPSAobmFtZTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBnZXRTdHJpbmdFbnYobmFtZSwgZmFsbGJhY2spIGFzIHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJpbmdFbnYgPSAobmFtZTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBnZW5lcmljR2V0RW52KG5hbWUsIGZhbGxiYWNrKSBhcyBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW50RW52ID0gKG5hbWU6IHN0cmluZywgZmFsbGJhY2s/OiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICBjb25zdCBlbnYgPSBnZW5lcmljR2V0RW52KG5hbWUsIGZhbGxiYWNrKTtcbiAgY29uc3QgaW50ID0gcGFyc2VJbnQoZW52LCAxMCk7XG4gIGlmIChpc05hTihpbnQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFbnYgJHtuYW1lfSBpcyBub3QgYW4gaW50ZWdlci5gKTtcbiAgfVxuICByZXR1cm4gaW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJvb2xFbnYgPSAobmFtZTogc3RyaW5nLCBmYWxsYmFjaz86IGJvb2xlYW4pOiBib29sZWFuID0+IHtcbiAgbGV0IGVudiA9IGdlbmVyaWNHZXRFbnYobmFtZSwgZmFsbGJhY2spO1xuICBpZiAodHlwZW9mIGVudiA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gZW52O1xuICBlbnYgPSBlbnYudG9Mb3dlckNhc2UoKTtcbiAgaWYgKGVudiA9PT0gJzEnIHx8IGVudiA9PT0gJ3RydWUnKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGVudiA9PT0gJzAnIHx8IGVudiA9PT0gJ2ZhbHNlJykgcmV0dXJuIGZhbHNlO1xuICB0aHJvdyBuZXcgRXJyb3IoYEVudiAke25hbWV9IGlzIG5vdCBhIGJvb2xlYW4uYCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXJyYXlFbnYgPSAobmFtZTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZ1tdKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBlbnYgPSBnZW5lcmljR2V0RW52KG5hbWUsIGZhbGxiYWNrKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZW52KSkgcmV0dXJuIGVudjtcbiAgcmV0dXJuIGVudi5zcGxpdCgnLCcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVybEVudiA9IChuYW1lOiBzdHJpbmcsIGZhbGxiYWNrPzogVVJMKTogVVJMID0+IHtcbiAgY29uc3QgZW52ID0gZ2VuZXJpY0dldEVudihuYW1lLCBmYWxsYmFjayk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwoZW52KTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFbnYgJHtuYW1lfSBpcyBub3QgYW4gdXJsLmApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0ZUVudiA9IChuYW1lOiBzdHJpbmcsIGZhbGxiYWNrPzogRGF0ZSk6IERhdGUgPT4ge1xuICBjb25zdCBlbnYgPSBnZW5lcmljR2V0RW52KG5hbWUsIGZhbGxiYWNrKTtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGVudik7XG4gIGlmIChkYXRlLnRvU3RyaW5nKCkgPT09ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFbnYgJHtuYW1lfSBpcyBub3QgYSBkYXRlLmApO1xuICB9XG4gIHJldHVybiBkYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZ0V4cEVudiA9IChuYW1lOiBzdHJpbmcsIGZhbGxiYWNrPzogUmVnRXhwKTogUmVnRXhwID0+IHtcbiAgY29uc3QgZW52ID0gZ2VuZXJpY0dldEVudihuYW1lLCBmYWxsYmFjayk7XG4gIGlmIChlbnYgaW5zdGFuY2VvZiBSZWdFeHAgKSByZXR1cm4gZW52O1xuICB0cnkge1xuICAgIGNvbnN0IG1hdGNoID0gZW52Lm1hdGNoKG5ldyBSZWdFeHAoJ14vKC4qPykvKFtnaW15XSopJCcpKTtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChtYXRjaFsxXSwgbWF0Y2hbMl0pO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVudiAke25hbWV9IGlzIG5vdCBhIHJlZ0V4cC5gKTtcbiAgfVxufTtcblxuY29uc3QgZ2VuZXJpY0dldEVudiA9IChuYW1lOiBzdHJpbmcsIGZhbGxiYWNrPzogYW55KTogYW55ID0+IHtcbiAgY29uc3QgZW52ID0gcHJvY2Vzcy5lbnZbbmFtZV07XG4gIGlmIChlbnYpIHJldHVybiBlbnY7XG4gIGlmIChmYWxsYmFjayAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsbGJhY2s7XG4gIHRocm93IG5ldyBFcnJvcihgRW52ICR7bmFtZX0gZG9lcyBub3QgZXhpc3QgYW5kIG5vIGZhbGxiYWNrIHZhbHVlIHByb3ZpZGVkLmApO1xufTtcblxuIl19
;