@buddy-works/unit-tests
Version:
Universal test results collector for Jest, Jasmine, Mocha, Cypress, Playwright, and Vitest that sends results to Buddy Works API in real-time
98 lines (97 loc) • 3.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.environmentConfig = exports.environmentError = void 0;
exports.setEnvironmentVariable = setEnvironmentVariable;
const environmentConfig = {
BUDDY_UT_TOKEN: { type: 'string', required: true, secret: true },
CI: { type: 'boolean' },
BUDDY_LOGGER_LEVEL: { type: 'string' },
BUDDY_DEV_LOGGER: { type: 'string' },
BUDDY_API_URL: { type: 'string' },
BUDDY_SESSION_ID: { type: 'string' },
BUDDY_API_FAILURE: { type: 'boolean' },
};
exports.environmentConfig = environmentConfig;
function processConfigEntry(key, config) {
if (config.type === 'boolean') {
return getEnvironmentFlag(key, config.defaultValue ?? false);
}
else {
const stringConfig = config;
return stringConfig.required === true
? getEnvironment(key, true)
: getEnvironment(key, false);
}
}
function loadEnvironment() {
const variables = {};
for (const key of Object.keys(environmentConfig)) {
try {
const config = environmentConfig[key];
if (config.type === 'string' && config.required) {
getEnvironment(key, true);
}
}
catch (error) {
return {
error,
variables: {},
};
}
}
for (const key of Object.keys(environmentConfig)) {
Object.defineProperty(variables, key, {
get() {
return processConfigEntry(key, environmentConfig[key]);
},
enumerable: true,
configurable: true,
});
}
return {
variables,
};
}
function setEnvironmentVariable(key, value) {
const config = environmentConfig[key];
if (config.type === 'boolean') {
process.env[key] = value ? '1' : '0';
}
else {
if (value === undefined) {
process.env[key] = '';
}
else {
process.env[key] = value;
}
}
}
function getEnvironment(key, required = false) {
const MISSING_REQUIRED_ENVIRONMENT_VARIABLE_ERROR = `Missing required configuration. Please set the ${key} environment variable.`;
const value = process.env[key];
if (value === undefined) {
if (required) {
throw new Error(MISSING_REQUIRED_ENVIRONMENT_VARIABLE_ERROR);
}
return undefined;
}
const trimmedValue = value.trim();
if (trimmedValue === '') {
if (required) {
throw new Error(MISSING_REQUIRED_ENVIRONMENT_VARIABLE_ERROR);
}
return undefined;
}
return trimmedValue;
}
function getEnvironmentFlag(key, defaultValue = false) {
const value = process.env[key];
if (value === undefined) {
return defaultValue;
}
const falseValues = ['0', 'false', 'no', 'off', ''];
return !falseValues.includes(value.toLowerCase().trim());
}
const environmentResult = loadEnvironment();
exports.default = environmentResult.variables;
exports.environmentError = environmentResult.error;