// Copyright 2004-present Facebook. All Rights Reserved. #pragma once #include #include #include #include #include "ModuleRegistry.h" namespace facebook { namespace react { /** * Holds and creates JS representations of the modules in ModuleRegistry */ class JSCNativeModules { public: explicit JSCNativeModules(std::shared_ptr moduleRegistry); JSValueRef getModule(JSContextRef context, JSStringRef name); void reset(); private: folly::Optional m_genNativeModuleJS; std::shared_ptr m_moduleRegistry; std::unordered_map m_objects; folly::Optional createModule(const std::string& name, JSContextRef context); }; } }