guardia-messenger/node_modules/expo-modules-core/ios/JSI/ExpoModulesHostObject.mm
DESKTOP-TKLFCPRython f29f525c77 refactor: 101.79.17.164 → zioinfo.co.kr 전체 도메인 변환 + Manager UI 배포
- 37개 파일 IP → zioinfo.co.kr 치환 (소스/매뉴얼/설정/하네스)
- Manager DrConsole/NetworkConsole/CsapConsole 빌드 + /var/www/manager/ 배포
- 테스트: Manager HTTP 200, ITSM 신규 API 7개 전체 200

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 10:09:17 +09:00

61 lines
2.3 KiB
Plaintext

// Copyright 2022-present 650 Industries. All rights reserved.
#import <ExpoModulesCore/ExpoModulesHostObject.h>
#import <ExpoModulesCore/EXJavaScriptObject.h>
#import <ExpoModulesCore/LazyObject.h>
#import <ExpoModulesCore/Swift.h>
namespace expo {
ExpoModulesHostObject::ExpoModulesHostObject(EXAppContext *appContext) : appContext(appContext) {}
ExpoModulesHostObject::~ExpoModulesHostObject() {
modulesCache.clear();
appContext._runtime = nil;
}
jsi::Value ExpoModulesHostObject::get(jsi::Runtime &runtime, const jsi::PropNameID &name) {
std::string moduleName = name.utf8(runtime);
NSString *nsModuleName = [NSString stringWithUTF8String:moduleName.c_str()];
if (![appContext hasModule:nsModuleName]) {
// The module object can already be cached but no longer registered — we remove it from the cache in that case.
modulesCache.erase(moduleName);
return jsi::Value::undefined();
}
if (UniqueJSIObject &cachedObject = modulesCache[moduleName]) {
return jsi::Value(runtime, *cachedObject);
}
// Create a lazy object for the specific module. It defers initialization of the final module object.
LazyObject::Shared moduleLazyObject = std::make_shared<LazyObject>(^SharedJSIObject(jsi::Runtime &runtime) {
return [[appContext getNativeModuleObject:nsModuleName] getShared];
});
// Save the module's lazy host object for later use.
modulesCache[moduleName] = std::make_unique<jsi::Object>(jsi::Object::createFromHostObject(runtime, moduleLazyObject));
return jsi::Value(runtime, *modulesCache[moduleName]);
}
void ExpoModulesHostObject::set(jsi::Runtime &runtime, const jsi::PropNameID &name, const jsi::Value &value) {
std::string message("RuntimeError: Cannot override the host object for expo module '");
message += name.utf8(runtime);
message += "'.";
throw jsi::JSError(runtime, message);
}
std::vector<jsi::PropNameID> ExpoModulesHostObject::getPropertyNames(jsi::Runtime &runtime) {
NSArray<NSString *> *moduleNames = [appContext getModuleNames];
std::vector<jsi::PropNameID> propertyNames;
propertyNames.reserve([moduleNames count]);
for (NSString *moduleName in moduleNames) {
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, [moduleName UTF8String]));
}
return propertyNames;
}
} // namespace expo