register static method
void
register()
Registers custom VM service extensions (ext.bloom.*) callable from DevTools or Bloom Go.
Implementation
static void register() {
if (_isRegistered) return;
_isRegistered = true;
// 1. Query Cache Inspector
developer.registerExtension('ext.bloom.getQueryCache', (method, parameters) async {
try {
final cacheDump = BloomData.dumpCache();
return developer.ServiceExtensionResponse.result(jsonEncode({
'status': 'ok',
'cache': cacheDump,
'count': BloomData.entryCount,
'timestamp': DateTime.now().toIso8601String(),
}));
} catch (e) {
return developer.ServiceExtensionResponse.error(
developer.ServiceExtensionResponse.extensionError,
e.toString(),
);
}
});
// 2. Clear Query Cache
developer.registerExtension('ext.bloom.clearCache', (method, parameters) async {
BloomData.clear();
return developer.ServiceExtensionResponse.result(jsonEncode({
'status': 'ok',
'message': 'Bloom cache cleared successfully',
}));
});
// 3. DI Container Inspector
developer.registerExtension('ext.bloom.getContainerInfo', (method, parameters) async {
try {
final containerDump = globalContainer.dumpContainer();
return developer.ServiceExtensionResponse.result(jsonEncode({
'status': 'ok',
'container': containerDump,
}));
} catch (e) {
return developer.ServiceExtensionResponse.error(
developer.ServiceExtensionResponse.extensionError,
e.toString(),
);
}
});
// 4. Router State Inspector
developer.registerExtension('ext.bloom.getRouterState', (method, parameters) async {
try {
final routerDump = BloomRouter.dumpRouter();
return developer.ServiceExtensionResponse.result(jsonEncode({
'status': 'ok',
'router': routerDump,
}));
} catch (e) {
return developer.ServiceExtensionResponse.error(
developer.ServiceExtensionResponse.extensionError,
e.toString(),
);
}
});
// 5. Config Inspector
developer.registerExtension('ext.bloom.getConfig', (method, parameters) async {
try {
final config = Bloom.config;
return developer.ServiceExtensionResponse.result(jsonEncode({
'status': 'ok',
'name': config.name,
'version': config.version,
'mode': config.mode,
'activeFlavor': Bloom.activeFlavor,
}));
} catch (e) {
return developer.ServiceExtensionResponse.error(
developer.ServiceExtensionResponse.extensionError,
e.toString(),
);
}
});
logger.debug('BloomDevToolsService: Registered Bloom VM service extensions.');
}