buildDslLibraryComponentReuseDecisionJson function
Builds a linked-library component reuse decision snapshot for one query.
Implementation
Map<String, dynamic> buildDslLibraryComponentReuseDecisionJson(
FFProject project, {
required String query,
String? libraryName,
DslReuseResolutionPolicy policy = DslReuseResolutionPolicy.closestMatch,
Map<String, FFProject> libraryProjects = const {},
}) {
final resolution = buildDslLibraryComponentResolutionJson(
project,
componentName: query,
libraryName: libraryName,
libraryProjects: libraryProjects,
);
final exact = resolution['exactMatch'] as Map<String, dynamic>?;
final suggestions = (resolution['suggestions'] as List).cast<String>();
final chosen =
exact != null
? exact['name']
: switch (policy) {
DslReuseResolutionPolicy.closestMatch when suggestions.isNotEmpty =>
suggestions.first,
_ => null,
};
return <String, dynamic>{
'kind': 'flash_dsl_library_component_reuse_decision',
'query': query,
if (libraryName != null) 'library': libraryName,
'policy': policy.name,
'exactMatch': exact,
'chosenComponent': chosen,
'suggestions': suggestions,
'libraries': resolution['libraries'],
};
}