diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.cpp b/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.cpp index f3641afcb52..b0924be26e1 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.cpp +++ b/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.cpp @@ -6,9 +6,34 @@ */ #include "TurboModule.h" +#include namespace facebook::react { +TurboModuleMethodValueKind getTurboModuleMethodValueKind( + jsi::Runtime& rt, + const jsi::Value* value) { + if (!value || value->isUndefined() || value->isNull()) { + return VoidKind; + } else if (value->isBool()) { + return BooleanKind; + } else if (value->isNumber()) { + return NumberKind; + } else if (value->isString()) { + return StringKind; + } else if (value->isObject()) { + auto object = value->asObject(rt); + if (object.isArray(rt)) { + return ArrayKind; + } else if (object.isFunction(rt)) { + return FunctionKind; + } + return ObjectKind; + } + react_native_assert(false && "Unsupported jsi::Value kind"); + return VoidKind; +} + TurboModule::TurboModule( std::string name, std::shared_ptr jsInvoker) diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h b/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h index 4ecfe86f143..ccd9d1f8596 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +++ b/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h @@ -31,6 +31,13 @@ enum TurboModuleMethodValueKind { PromiseKind, }; +/** + * Determines TurboModuleMethodValueKind based on the jsi::Value type. + */ +TurboModuleMethodValueKind getTurboModuleMethodValueKind( + jsi::Runtime& rt, + const jsi::Value* value); + class TurboCxxModule; class TurboModuleBinding;