project-setup-validation-yaml
Version:
Validate environment variables, files and directories. Supports YAML configuration
72 lines (70 loc) • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateProjectEnvironment = exports.customEnvValidators = exports.envalidValidationTypes = void 0;
const envalid_1 = require("envalid");
const js_base64_1 = require("js-base64");
/**
* Validates base64, converts to json object and returns
*/
const base64JsonValidator = (0, envalid_1.makeValidator)((input) => {
try {
const str = (0, js_base64_1.decode)(input);
const json = JSON.parse(str);
return json;
}
catch (err) {
throw new Error(`Invalid base64-encoded JSON: ${err.message}`);
}
});
/**
* Validates base64, converts to string and returns
*/
const base64StringValidator = (0, envalid_1.makeValidator)((input) => {
try {
const str = (0, js_base64_1.decode)(input);
return str;
}
catch (err) {
throw new Error(`Invalid base64-encoded string: ${err.message}`);
}
});
/**
* Validation types, default + custom
*/
exports.envalidValidationTypes = {
str: envalid_1.str,
email: envalid_1.email,
json: envalid_1.json,
bool: envalid_1.bool,
host: envalid_1.host,
num: envalid_1.num,
port: envalid_1.port,
url: envalid_1.url,
base64String: base64StringValidator,
base64Json: base64JsonValidator
};
/**
* Custom validators
*/
exports.customEnvValidators = {
base64JsonValidator,
base64StringValidator
};
/**
* Validates and returns clean env
*
* Example:
*
```
import { str, json } from 'envalid'
import {validateProjectEnvironment, customValidators} from './src/validators'
validateProjectEnvironment(process.env, {
FIREBASE_CREDENTIALS_BASE64: customValidators.base64JsonValidator(),
TEST_STRING_ENV: str(),
TEST_JSON_ENV: json()
})
```
Read more: https://www.npmjs.com/package/envalid
*/
exports.validateProjectEnvironment = envalid_1.cleanEnv;
//# sourceMappingURL=projectEnvValidator.js.map