buildDslProjectComponentReuseDecisionJson function
Map<String, dynamic>
buildDslProjectComponentReuseDecisionJson(
- FFProject project, {
- required String query,
- DslReuseResolutionPolicy policy = DslReuseResolutionPolicy.closestMatch,
Builds a project-component reuse decision snapshot for one query.
Implementation
Map<String, dynamic> buildDslProjectComponentReuseDecisionJson(
FFProject project, {
required String query,
DslReuseResolutionPolicy policy = DslReuseResolutionPolicy.closestMatch,
}) {
final components = listComponents(project)
..sort((a, b) => a.name.compareTo(b.name));
final exact =
components.where((component) => component.name == query).firstOrNull;
final suggestions = suggestNearMatches(query, [
for (final component in components) component.name,
]);
final chosen =
exact != null
? exact.name
: switch (policy) {
DslReuseResolutionPolicy.closestMatch when suggestions.isNotEmpty =>
suggestions.first,
_ => null,
};
return <String, dynamic>{
'kind': 'flash_dsl_project_component_reuse_decision',
'query': query,
'policy': policy.name,
'exactMatch':
exact == null
? null
: <String, dynamic>{'name': exact.name, 'key': exact.key},
'chosenComponent': chosen,
'suggestions': suggestions,
'availableComponents': [
for (final component in components)
<String, dynamic>{'name': component.name, 'key': component.key},
],
};
}