loadModule method

Future<bool> loadModule(
  1. String moduleId
)

Lazily load a module. Checks feature flags before loading.

Implementation

Future<bool> loadModule(String moduleId) async {
  // Check feature flags
  if (featureFlags != null && !featureFlags!.isModuleEnabled(moduleId)) {
    return false;
  }

  final state = _modules[moduleId];
  if (state == null) return false;
  if (state.loaded) return true;

  // Check dependencies
  final moduleInfo = _manifest?.getModule(moduleId);
  if (moduleInfo != null) {
    for (final dep in moduleInfo.dependencies) {
      if (!isModuleLoaded(dep)) {
        final depLoaded = await loadModule(dep);
        if (!depLoaded) return false;
      }
    }
  }

  // Initialize module
  if (state.initializer != null) {
    await state.initializer!();
  }

  state.loaded = true;
  state.version = moduleInfo?.version;
  return true;
}