1 #include "JSReferencesCache.h" 2 3 namespace expo { 4 JSReferencesCache::JSReferencesCache(jsi::Runtime &runtime) { 5 jsObjectRegistry.emplace( 6 JSKeys::PROMISE, 7 std::make_unique<jsi::Object>( 8 runtime.global().getPropertyAsFunction(runtime, "Promise") 9 ) 10 ); 11 } 12 13 jsi::PropNameID &JSReferencesCache::getPropNameID( 14 jsi::Runtime &runtime, 15 const std::string &name 16 ) { 17 auto propName = propNameIDRegistry.find(name); 18 19 if (propName == propNameIDRegistry.end()) { 20 auto propNameID = std::make_unique<jsi::PropNameID>(jsi::PropNameID::forAscii(runtime, name)); 21 auto [result, _] = propNameIDRegistry.emplace(name, std::move(propNameID)); 22 return *result->second; 23 } 24 return *propName->second; 25 } 26 } // namespace expo 27