npmFactory

Result<T, String> npmFactory<T extends JSAny>(

  1. String packageName,
  2. String functionPath
)

Call a factory function from an npm module.

Useful for packages that export factory functions rather than components, like createStackNavigator from @react-navigation/stack.

final stackNav = npmFactory<JSFunction>(
  '@react-navigation/stack',
  'createStackNavigator',
);
final Stack = stackNav.call();

Implementation

Result<T, String> npmFactory<T extends JSAny>(
  String packageName,
  String functionPath,
) {
  final moduleResult = loadNpmModule(packageName);
  if (moduleResult case Error(:final error)) {
    return Error(error);
  }
  final module = (moduleResult as Success<JSObject, String>).value;

final componentResult = getComponentFromModule(module, functionPath); return switch (componentResult) { Success(:final value) => Success(value as T), Error(:final error) => Error(error), }; }