@@ -17,18 +17,34 @@ CxxNodeApiHostModule::requireNodeAddon(jsi::Runtime &rt,
1717 react::TurboModule &turboModule,
1818 const jsi::Value args[], size_t count) {
1919 auto &thisModule = static_cast <CxxNodeApiHostModule &>(turboModule);
20- if (1 == count && args[0 ].isString ()) {
21- return thisModule.requireNodeAddon (rt, args[0 ].asString (rt));
20+ if (3 == count) {
21+ // Must be `requireNodeAddon(requiredPath: string, requiredPackageName: string, requiredFrom: string)`
22+ return thisModule.requireNodeAddon (rt,
23+ args[0 ].asString (rt),
24+ args[1 ].asString (rt),
25+ args[2 ].asString (rt));
2226 }
23- // TODO: Throw a meaningful error
24- return jsi::Value::undefined ();
27+ throw jsi::JSError (rt, " Invalid number of arguments to requireNodeAddon()" );
2528}
2629
2730jsi::Value
2831CxxNodeApiHostModule::requireNodeAddon (jsi::Runtime &rt,
29- const jsi::String libraryName) {
30- const std::string libraryNameStr = libraryName.utf8 (rt);
32+ const jsi::String &requiredPath,
33+ const jsi::String &requiredPackageName,
34+ const jsi::String &requiredFrom) {
35+ return requireNodeAddon (rt,
36+ requiredPath.utf8 (rt),
37+ requiredPackageName.utf8 (rt),
38+ requiredFrom.utf8 (rt));
39+ }
40+
41+ jsi::Value
42+ CxxNodeApiHostModule::requireNodeAddon (jsi::Runtime &rt,
43+ const std::string &requiredPath,
44+ const std::string &requiredPackageName,
45+ const std::string &requiredFrom) {
3146
47+ const std::string &libraryNameStr = requiredPath;
3248 auto [it, inserted] = nodeAddons_.emplace (libraryNameStr, NodeAddon ());
3349 NodeAddon &addon = it->second ;
3450
0 commit comments