in lib/environmentConfigurationResolver.js [74:123]
resolveObjectVariables: async (object) => {
let paths = null;
try {
paths = identifyPaths(object);
} catch(parseError) {
throw parseError;
}
const names = Object.getOwnPropertyNames(paths);
for (let i = 0; i < names.length; i++) {
const path = names[i];
const parsed = paths[path];
const variableName = parsed.hostname;
let variableValue = provider.get(variableName);
// Support for default variables
if (variableValue === undefined && parsed.query && parsed.query.default) {
variableValue = parsed.query.default;
}
// Loose equality "true" for boolean values
if (parsed.query && parsed.query.trueIf) {
variableValue = parsed.query.trueIf == /* loose */ variableValue;
}
// Cast if a type is set to 'boolean' or 'integer'
if (parsed.query && parsed.query.type) {
const currentValue = variableValue;
switch (parsed.query.type) {
case 'boolean':
case 'bool':
if (currentValue && currentValue !== 'false' && currentValue != '0' && currentValue !== 'False') {
variableValue = true;
} else {
variableValue = false;
}
break;
case 'integer':
case 'int':
variableValue = parseInt(currentValue, 10);
break;
default:
throw new Error(`The "type" parameter for the env:// string was set to "${parsed.query.type}", a type that is currently not supported.`);
}
}
objectPath.set(object, path, variableValue);
}
},