npmFactory
Result<
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),
};
}