BBAJSBindingConverter.h 1.7 KB
//
//  BBAJSBindingConverter.h
//  BBAMNP
//
//  Created by baidu on 2019/8/20.
//

#import <Foundation/Foundation.h>
#import <WebKit/WebKit.h>
#import <JavaScriptCore/JavaScriptCore.h>

@interface BBAJSBindingConverter : NSObject

/**
 * @brief NSData转为js ArrayBuffer
 *
 * @param data NSData
 * @param jsContext JSContext
 * @return ArrayBuffer
 */
+ (JSValue *)dataToArrayBuffer:(NSData *)data jsContext:(JSContext *)jsContext;

/**
 * @brief 尝试把JSValue数据类型转成 数字类型的 array
 *  如果 jsValue 实际JS对象是array那么正常数据转化,如果是 typedArray类型,则尝试做数据类型转化
 *  最后如果是array,但是里面的对象不是number,我们也认定是错误
 *
 * @param jsValue JSValue
 * @return ArrayBuffer
 */
+ (NSArray<NSNumber *> *)arrayFromJSValue:(JSValue *)jsValue API_AVAILABLE(ios(10.0));

/**
 *  typedArray数据类型转成 OC Array。如果不是typedArray 则返回nil,如果是普通的array 也是返回nil
 */
+ (NSArray<NSNumber *> *)arrayFromTypedArray:(JSValue *)typedArrayJSValue API_AVAILABLE(ios(10.0));

/**
 *  @brief 判断 jsValue是否可以转化成typedArray类型
 *  @return BOOL
 */
+ (BOOL)checkJSValueIsTypedArray:(JSValue *)jsValue API_AVAILABLE(ios(10.0));

/**
 * @brief OCArray 转成 JS Float32 typedArray
 *
 * @param array oc array
 * @param context JSContext
 * @return valid if succeed
 */
+ (JSValue *)float32TypedArrayJSValueFromArray:(NSArray *)array jsContext:(JSContext *)context;

/**
 * @brief JSValueRef转换成NSString
 *
 * @param ctx oc JSContext
 * @param valueRef  JSValueRef
 * @return NSString
*/
+ (NSString *)JSValueRefToNSString:(JSContextRef)ctx
                        jsValueRef:(JSValueRef)valueRef;

@end