dotenv-validator
Version:
55 lines • 2.09 kB
JavaScript
exports.__esModule = true;
var tslib_1 = require("tslib");
function validate(_a) {
var _b = _a.envParsed, envParsed = _b === void 0 ? {} : _b, envDefault = _a.envDefault, envRules = _a.envRules, logPassedMsg = _a.logPassedMsg;
var env = tslib_1.__assign(tslib_1.__assign({}, envDefault), envParsed); // envParsed 는 설정된 값이 언제나 스트링임이 보장된다
// check default
Object.keys(envParsed).forEach(function (key) {
if (!envDefault.hasOwnProperty(key)) {
throw Error(key + "'s defaultValue is not found");
}
});
// check required
if (envRules) {
Object.keys(envRules).forEach(function (key) {
if (envRules[key].required !== true) {
// 명시적으로 required 를 false 로 세팅한 경우만 필수값 체크를 하지 않는다.
// 해당 설정 값의 룰을 등록하지 않은 경우 해당 값은 기본적으로 필수 값이 된다.
return;
}
else {
if (!env[key]) {
throw Error("'" + key + "' is required in .env");
}
}
});
}
// check validator
if (envRules) {
Object.entries(env).forEach(function (_a) {
var key = _a[0], value = _a[1];
if (!envRules[key]) {
// 룰 자체를 등록하지 않은 경우 skip
return;
}
var validator = envRules[key].validator;
if (!validator) {
// validator 등록을 하지 않은 경우 skip
return;
}
var result = validator(value);
if (result === false) {
throw Error("'" + key + "' is not valid in .env");
}
if (result.valid === false) {
throw Error(result.message);
}
});
}
if (logPassedMsg !== false) {
console.log('`.env` validation passed');
}
}
exports["default"] = validate;
//# sourceMappingURL=index.js.map
;