buildDslLibraryComponentReuseDecisionJson function

Map<String, dynamic> buildDslLibraryComponentReuseDecisionJson(
  1. FFProject project, {
  2. required String query,
  3. String? libraryName,
  4. DslReuseResolutionPolicy policy = DslReuseResolutionPolicy.closestMatch,
  5. Map<String, FFProject> libraryProjects = const {},
})

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'],
  };
}