// Copyright (c) Facebook, Inc. and its affiliates. // // This source code is licensed under the MIT license found in the // LICENSE file in the root directory of this source tree. #pragma once #include #include #include #include #include namespace facebook { namespace react { /** * Holds and creates JS representations of the modules in ModuleRegistry */ class JSINativeModules { public: explicit JSINativeModules(std::shared_ptr moduleRegistry); jsi::Value getModule(jsi::Runtime& rt, const jsi::PropNameID& name); void reset(); private: folly::Optional m_genNativeModuleJS; std::shared_ptr m_moduleRegistry; std::unordered_map m_objects; folly::Optional createModule( jsi::Runtime& rt, const std::string& name); }; } // namespace react } // namespace facebook