1ec62a260STomasz Sapeta // Copyright 2022-present 650 Industries. All rights reserved. 2ec62a260STomasz Sapeta 3ec62a260STomasz Sapeta #import <Foundation/Foundation.h> 4ec62a260STomasz Sapeta #import <ExpoModulesCore/EXJavaScriptObject.h> 5ec62a260STomasz Sapeta 6ec62a260STomasz Sapeta #ifdef __cplusplus 7ec62a260STomasz Sapeta #import <jsi/jsi.h> 8ec62a260STomasz Sapeta namespace jsi = facebook::jsi; 9ec62a260STomasz Sapeta #endif // __cplusplus 10ec62a260STomasz Sapeta 11ec62a260STomasz Sapeta @class EXJavaScriptRuntime; 12*a2ddfabcSTomasz Sapeta @class EXRawJavaScriptFunction; 13002d516eSTomasz Sapeta @class EXJavaScriptTypedArray; 14ec62a260STomasz Sapeta 15ec62a260STomasz Sapeta /** 16ec62a260STomasz Sapeta Represents any JavaScript value. Its purpose is to exposes `facebook::jsi::Value` API back to Swift. 17ec62a260STomasz Sapeta */ 18ec62a260STomasz Sapeta NS_SWIFT_NAME(JavaScriptValue) 19ec62a260STomasz Sapeta @interface EXJavaScriptValue : NSObject 20ec62a260STomasz Sapeta 21ec62a260STomasz Sapeta #ifdef __cplusplus 22ec62a260STomasz Sapeta - (nonnull instancetype)initWithRuntime:(nonnull EXJavaScriptRuntime *)runtime 23ec62a260STomasz Sapeta value:(std::shared_ptr<jsi::Value>)value; 249bc9ec42STomasz Sapeta 259bc9ec42STomasz Sapeta /** 269bc9ec42STomasz Sapeta \return the underlying `jsi::Value`. 279bc9ec42STomasz Sapeta */ 289bc9ec42STomasz Sapeta - (nonnull jsi::Value *)get; 29ec62a260STomasz Sapeta #endif // __cplusplus 30ec62a260STomasz Sapeta 31ec62a260STomasz Sapeta #pragma mark - Type checking 32ec62a260STomasz Sapeta 33ec62a260STomasz Sapeta - (BOOL)isUndefined; 34ec62a260STomasz Sapeta - (BOOL)isNull; 35ec62a260STomasz Sapeta - (BOOL)isBool; 36ec62a260STomasz Sapeta - (BOOL)isNumber; 37ec62a260STomasz Sapeta - (BOOL)isString; 38ec62a260STomasz Sapeta - (BOOL)isSymbol; 39ec62a260STomasz Sapeta - (BOOL)isObject; 40ec62a260STomasz Sapeta - (BOOL)isFunction; 41002d516eSTomasz Sapeta - (BOOL)isTypedArray; 42ec62a260STomasz Sapeta 43ec62a260STomasz Sapeta #pragma mark - Type casting 44ec62a260STomasz Sapeta 45ec62a260STomasz Sapeta - (nullable id)getRaw; 46ec62a260STomasz Sapeta - (BOOL)getBool; 47ec62a260STomasz Sapeta - (NSInteger)getInt; 48ec62a260STomasz Sapeta - (double)getDouble; 49ec62a260STomasz Sapeta - (nonnull NSString *)getString; 50ec62a260STomasz Sapeta - (nonnull NSArray<EXJavaScriptValue *> *)getArray; 51ec62a260STomasz Sapeta - (nonnull NSDictionary<NSString *, id> *)getDictionary; 52ec62a260STomasz Sapeta - (nonnull EXJavaScriptObject *)getObject; 53*a2ddfabcSTomasz Sapeta - (nonnull EXRawJavaScriptFunction *)getFunction; 54002d516eSTomasz Sapeta - (nullable EXJavaScriptTypedArray *)getTypedArray; 55ec62a260STomasz Sapeta 56ec62a260STomasz Sapeta #pragma mark - Helpers 57ec62a260STomasz Sapeta 58ec62a260STomasz Sapeta - (nonnull NSString *)toString; 59ec62a260STomasz Sapeta 60ec62a260STomasz Sapeta @end 61