in ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js [641:715]
function refreshRelationships(entity) {
return $q.all(Array.from(entity.config.keys()).reduce((promises, key) => {
let value = entity.config.get(key);
// Return promises that returns an object like { key: "my-config-key-key", issues: [] }
if (value instanceof Dsl) {
promises.push(
parseInput(value.toString(), entity).then(dsl => {
entity.config.set(key, dsl);
return {
key: key,
issues: dsl.getAllIssues()
};
}).catch(() => $q.resolve({
key: key,
issues: []
}))
);
} else if (value instanceof Array) {
promises.push(
$q.all(value.reduce((issues, itemValue, itemIndex) => {
return issues.concat(
parseInput(itemValue, entity).then(dsl => {
value[itemIndex] = dsl;
return dsl.getAllIssues();
}).catch(() => [])
);
}, [])).then(issues => {
return {
key: key,
issues: issues.reduce((acc, issue) => acc.concat(issue), [])
}
})
);
} else if (value instanceof Object) {
promises.push(
$q.all(Object.keys(value).reduce((issues, itemKey) => {
return issues.concat(
parseInput(value[itemKey], entity).then(dsl => {
value[itemKey] = dsl;
return dsl.getAllIssues();
}).catch(() => [])
);
}, [])).then(issues => {
return {
key: key,
issues: issues.reduce((acc, issue) => acc.concat(issue), [])
}
})
);
} else {
promises.push(
parseInput(value, entity).then(dsl => {
entity.config.set(key, dsl);
return {
key: key,
issues: dsl.getAllIssues()
};
}).catch(() => $q.resolve({
key: key,
issues: []
}))
);
}
return promises;
}, [])).then(results => {
results.forEach(result => {
entity.clearIssues({ref: result.key, phase: 'relationship'});
result.issues.forEach(issue => {
entity.addIssue(Issue.builder().group('config').phase('relationship').ref(result.key).message($sce.trustAsHtml(issue)).build());
});
})
});
}