Skip to content

Commit e0b5139

Browse files
author
Mariusz Pasinski
committed
feat: make requireNodeAddon() take 3 arguments
This change also resolves a TODO when dispatching of `requireNodeAddon()` failed due to invalid number of arguments
1 parent b0071ff commit e0b5139

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

packages/host/cpp/CxxNodeApiHostModule.cpp

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2730
jsi::Value
2831
CxxNodeApiHostModule::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

packages/host/cpp/CxxNodeApiHostModule.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ class JSI_EXPORT CxxNodeApiHostModule : public facebook::react::TurboModule {
2020
const facebook::jsi::Value args[], size_t count);
2121
facebook::jsi::Value requireNodeAddon(facebook::jsi::Runtime &rt,
2222
const facebook::jsi::String path);
23+
facebook::jsi::Value requireNodeAddon(facebook::jsi::Runtime &rt,
24+
const facebook::jsi::String &requiredPath,
25+
const facebook::jsi::String &requiredPackageName,
26+
const facebook::jsi::String &requiredFrom);
27+
facebook::jsi::Value requireNodeAddon(facebook::jsi::Runtime &rt,
28+
const std::string &requiredPath,
29+
const std::string &requiredPackageName,
30+
const std::string &requiredFrom);
2331

2432
protected:
2533
struct NodeAddon {

0 commit comments

Comments
 (0)