mergeRequiredIntoOptionalNamespaces static method
Map<String, RequiredNamespace>
mergeRequiredIntoOptionalNamespaces(
- Map<
String, RequiredNamespace> requiredNamespaces, - Map<
String, RequiredNamespace> optionalNamespaces
Merges requiredNamespaces into optionalNamespaces, avoiding duplicates When a key exists in both maps, the values are merged by combining chains, methods, and events while removing duplicates
Implementation
static Map<String, RequiredNamespace> mergeRequiredIntoOptionalNamespaces(
Map<String, RequiredNamespace> requiredNamespaces,
Map<String, RequiredNamespace> optionalNamespaces,
) {
final Map<String, RequiredNamespace> merged = Map.from(optionalNamespaces);
for (final entry in requiredNamespaces.entries) {
final key = entry.key;
final requiredNamespace = entry.value;
if (merged.containsKey(key)) {
// Key exists in both, merge the values
final existingNamespace = merged[key]!;
// Merge chains (remove duplicates)
final mergedChains = <String>{};
if (requiredNamespace.chains != null) {
mergedChains.addAll(requiredNamespace.chains!);
}
if (existingNamespace.chains != null) {
mergedChains.addAll(existingNamespace.chains!);
}
final finalChains =
mergedChains.isNotEmpty ? mergedChains.toList() : null;
// Merge methods (remove duplicates)
final mergedMethods = <String>{};
mergedMethods.addAll(requiredNamespace.methods);
mergedMethods.addAll(existingNamespace.methods);
// Merge events (remove duplicates)
final mergedEvents = <String>{};
mergedEvents.addAll(requiredNamespace.events);
mergedEvents.addAll(existingNamespace.events);
merged[key] = RequiredNamespace(
chains: finalChains,
methods: mergedMethods.toList(),
events: mergedEvents.toList(),
);
} else {
// Key only exists in required, add it to merged
merged[key] = requiredNamespace;
}
}
return merged;
}