serverless
Version:
Serverless Framework - Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more
36 lines (33 loc) • 1.24 kB
JavaScript
;
const processVariables = (propertyPath, variablesMeta, resultMap) => {
let hasUnresolvedSources = false;
if (!variablesMeta.variables) return hasUnresolvedSources;
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) {
if (processVariables(propertyPath, paramData, resultMap)) hasUnresolvedSources = true;
}
if (hasUnresolvedSources) continue;
}
if (sourceData.address) {
if (processVariables(propertyPath, sourceData.address, resultMap)) {
hasUnresolvedSources = true;
continue;
}
}
hasUnresolvedSources = true;
if (!resultMap.has(sourceData.type)) resultMap.set(sourceData.type, new Set());
resultMap.get(sourceData.type).add(propertyPath);
}
return hasUnresolvedSources;
};
module.exports = (propertiesVariablesMeta) => {
const resultMap = new Map();
for (const [propertyPath, propertyVariablesMeta] of propertiesVariablesMeta) {
processVariables(propertyPath, propertyVariablesMeta, resultMap);
}
return resultMap;
};