osls
Version:
Open-source alternative to Serverless Framework
29 lines (26 loc) • 971 B
JavaScript
;
const processVariables = (propertyPath, variablesMeta, resultMap) => {
if (!variablesMeta.variables) return;
for (const variableMeta of variablesMeta.variables) {
if (!variableMeta.sources) continue;
const sourceData = variableMeta.sources[0];
if (!sourceData.type) continue;
if (sourceData.params) {
for (const paramData of sourceData.params) {
processVariables(propertyPath, paramData, resultMap);
}
}
if (sourceData.address) {
processVariables(propertyPath, sourceData.address, resultMap);
}
if (!resultMap.has(sourceData.type)) resultMap.set(sourceData.type, new Set());
resultMap.get(sourceData.type).add(propertyPath);
}
};
module.exports = (propertiesVariablesMeta) => {
const resultMap = new Map();
for (const [propertyPath, propertyVariablesMeta] of propertiesVariablesMeta) {
processVariables(propertyPath, propertyVariablesMeta, resultMap);
}
return resultMap;
};