register method

Future<void> register(
  1. Extension extension,
  2. ExtensionConfig config
)

Implementation

Future<void> register(Extension extension, ExtensionConfig config) async {
  final id = extension.metadata.id;

  if (_extensions.containsKey(id)) {
    throw Exception('Extension $id already registered');
  }

  // Validate dependencies
  for (final dep in config.dependencies) {
    if (!_extensions.containsKey(dep)) {
      throw Exception('Dependency $dep not found for extension $id');
    }
  }

  _extensions[id] = extension;
  _configs[id] = config;
  _states[id] = ExtensionState.REGISTERED;
  _emitEvent(id, ExtensionState.REGISTERED);

  if (config.enabled) {
    await _initializeExtension(id);
  }
}