debugHierarchy static method
Implementation
static String debugHierarchy() {
if (_persistentScopes.isEmpty && _autoDisposeScopes.isEmpty) {
return 'No scopes being tracked';
}
final buffer = StringBuffer();
buffer.writeln('🏗️ Scope Hierarchy:');
if (_persistentScopes.isNotEmpty) {
buffer.writeln('🔒 Persistent Scopes (${_persistentScopes.length}):');
for (final entry in _persistentScopes.entries) {
final childCount = _childScopes[entry.key]?.length ?? 0;
final autoDisposeChildCount =
_activeAutoDisposeChildren[entry.key]?.length ?? 0;
final parent = _parentScopes[entry.key] ?? 'root';
final depCount = entry.value.getAllDependencies().length;
final isExplicit = _explicitlyPersistentScopes.contains(entry.key);
buffer.writeln(
' 📦 ${entry.key} ${isExplicit ? '(explicit)' : '(implicit)'}');
buffer.writeln(' ├─ Parent: $parent');
buffer.writeln(' ├─ Dependencies: $depCount');
buffer.writeln(' ├─ Persistent children: $childCount');
buffer.writeln(' └─ Auto-dispose children: $autoDisposeChildCount');
}
}
if (_autoDisposeScopes.isNotEmpty) {
buffer.writeln('⚡ Auto-Dispose Scopes (${_autoDisposeScopes.length}):');
for (final entry in _autoDisposeScopes.entries) {
final parent = _parentScopes[entry.key] ?? 'root';
final depCount = entry.value.getAllDependencies().length;
buffer.writeln(' ⚡ ${entry.key}');
buffer.writeln(' ├─ Parent: $parent');
buffer.writeln(' └─ Dependencies: $depCount');
}
}
return buffer.toString();
}