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