1 #include "JSReferencesCache.h"
2 
3 namespace expo {
JSReferencesCache(jsi::Runtime & runtime)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 
getPropNameID(jsi::Runtime & runtime,const std::string & name)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