@json-eval-rs/react-native 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +455 -0
- package/android/CMakeLists.txt +78 -0
- package/android/build.gradle +90 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/cpp/json-eval-rn.cpp +875 -0
- package/android/src/main/java/com/jsonevalrs/JsonEvalRsModule.kt +532 -0
- package/android/src/main/java/com/jsonevalrs/JsonEvalRsPackage.kt +16 -0
- package/android/src/main/jniLibs/arm64-v8a/libjson_eval_rs.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libjson_eval_rs.so +0 -0
- package/android/src/main/jniLibs/x86/libjson_eval_rs.so +0 -0
- package/android/src/main/jniLibs/x86_64/libjson_eval_rs.so +0 -0
- package/cpp/json-eval-bridge.cpp +1366 -0
- package/cpp/json-eval-bridge.h +583 -0
- package/ios/JsonEvalRs.h +5 -0
- package/ios/JsonEvalRs.mm +852 -0
- package/ios/JsonEvalRs.xcframework/Info.plist +44 -0
- package/ios/JsonEvalRs.xcframework/ios-arm64/libjson_eval_rs.a +0 -0
- package/ios/JsonEvalRs.xcframework/ios-arm64_x86_64-simulator/libjson_eval_rs.a +0 -0
- package/json-eval-rs.podspec +33 -0
- package/lib/commonjs/index.js +786 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/index.js +778 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/index.d.ts +565 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +140 -0
- package/src/index.tsx +999 -0
|
@@ -0,0 +1,852 @@
|
|
|
1
|
+
#import "JsonEvalRs.h"
|
|
2
|
+
#import <React/RCTLog.h>
|
|
3
|
+
#include "json-eval-bridge.h"
|
|
4
|
+
|
|
5
|
+
using namespace jsoneval;
|
|
6
|
+
|
|
7
|
+
@implementation JsonEvalRs
|
|
8
|
+
|
|
9
|
+
RCT_EXPORT_MODULE()
|
|
10
|
+
|
|
11
|
+
// Helper methods
|
|
12
|
+
// Note: These conversions are required by React Native bridge architecture
|
|
13
|
+
// We minimize copies where possible, but some are unavoidable due to lifetime management
|
|
14
|
+
- (NSString *)stringFromStdString:(const std::string &)str {
|
|
15
|
+
// Creates NSString from UTF-8 C string (copies data)
|
|
16
|
+
return [NSString stringWithUTF8String:str.c_str()];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
- (std::string)stdStringFromNSString:(NSString *)str {
|
|
20
|
+
if (str == nil) return "";
|
|
21
|
+
// UTF8String returns a pointer to UTF-8 representation (minimal copy)
|
|
22
|
+
// We must copy to std::string for safe lifetime management
|
|
23
|
+
const char* utf8 = [str UTF8String];
|
|
24
|
+
return utf8 ? std::string(utf8) : std::string();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
- (NSString *)arrayToJsonString:(NSArray *)array {
|
|
28
|
+
NSMutableArray *quotedItems = [NSMutableArray array];
|
|
29
|
+
for (NSString *item in array) {
|
|
30
|
+
[quotedItems addObject:[NSString stringWithFormat:@"\"%@\"", item]];
|
|
31
|
+
}
|
|
32
|
+
return [NSString stringWithFormat:@"[%@]", [quotedItems componentsJoinedByString:@","]];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(create:(NSString *)schema
|
|
36
|
+
context:(NSString *)context
|
|
37
|
+
data:(NSString *)data)
|
|
38
|
+
{
|
|
39
|
+
std::string schemaStr = [self stdStringFromNSString:schema];
|
|
40
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
41
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
42
|
+
|
|
43
|
+
std::string handle = JsonEvalBridge::create(schemaStr, contextStr, dataStr);
|
|
44
|
+
return [self stringFromStdString:handle];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(createFromMsgpack:(NSArray *)schemaMsgpack
|
|
48
|
+
context:(NSString *)context
|
|
49
|
+
data:(NSString *)data)
|
|
50
|
+
{
|
|
51
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
52
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
53
|
+
|
|
54
|
+
// Convert NSArray to std::vector<uint8_t>
|
|
55
|
+
std::vector<uint8_t> msgpackBytes;
|
|
56
|
+
msgpackBytes.reserve([schemaMsgpack count]);
|
|
57
|
+
for (NSNumber *num in schemaMsgpack) {
|
|
58
|
+
msgpackBytes.push_back([num unsignedCharValue]);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
std::string handle = JsonEvalBridge::createFromMsgpack(msgpackBytes, contextStr, dataStr);
|
|
62
|
+
return [self stringFromStdString:handle];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(createFromCache:(NSString *)cacheKey
|
|
66
|
+
context:(NSString *)context
|
|
67
|
+
data:(NSString *)data)
|
|
68
|
+
{
|
|
69
|
+
std::string cacheKeyStr = [self stdStringFromNSString:cacheKey];
|
|
70
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
71
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
72
|
+
|
|
73
|
+
std::string handle = JsonEvalBridge::createFromCache(cacheKeyStr, contextStr, dataStr);
|
|
74
|
+
return [self stringFromStdString:handle];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
RCT_EXPORT_METHOD(evaluate:(NSString *)handle
|
|
78
|
+
data:(NSString *)data
|
|
79
|
+
context:(NSString *)context
|
|
80
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
81
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
82
|
+
{
|
|
83
|
+
// Convert Objective-C strings to C++ (required by bridge architecture)
|
|
84
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
85
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
86
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
87
|
+
|
|
88
|
+
JsonEvalBridge::evaluateAsync(handleStr, dataStr, contextStr,
|
|
89
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
90
|
+
if (error.empty()) {
|
|
91
|
+
// Zero-copy within native: direct pointer access to result
|
|
92
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
93
|
+
} else {
|
|
94
|
+
reject(@"EVALUATE_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
RCT_EXPORT_METHOD(compileLogic:(NSString *)handle
|
|
101
|
+
logicStr:(NSString *)logicStr
|
|
102
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
103
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
104
|
+
{
|
|
105
|
+
try {
|
|
106
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
107
|
+
std::string logicStrCpp = [self stdStringFromNSString:logicStr];
|
|
108
|
+
uint64_t logicId = JsonEvalBridge::compileLogic(handleStr, logicStrCpp);
|
|
109
|
+
if (logicId == 0) {
|
|
110
|
+
reject(@"COMPILE_LOGIC_ERROR", @"Failed to compile logic", nil);
|
|
111
|
+
} else {
|
|
112
|
+
resolve(@(logicId));
|
|
113
|
+
}
|
|
114
|
+
} catch (const std::exception& e) {
|
|
115
|
+
reject(@"COMPILE_LOGIC_ERROR", [NSString stringWithUTF8String:e.what()], nil);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
RCT_EXPORT_METHOD(runLogic:(NSString *)handle
|
|
120
|
+
logicId:(nonnull NSNumber *)logicId
|
|
121
|
+
data:(NSString *)data
|
|
122
|
+
context:(NSString *)context
|
|
123
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
124
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
125
|
+
{
|
|
126
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
127
|
+
uint64_t logicIdValue = [logicId unsignedLongLongValue];
|
|
128
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
129
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
130
|
+
|
|
131
|
+
JsonEvalBridge::runLogicAsync(handleStr, logicIdValue, dataStr, contextStr,
|
|
132
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
133
|
+
if (error.empty()) {
|
|
134
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
135
|
+
} else {
|
|
136
|
+
reject(@"RUN_LOGIC_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
RCT_EXPORT_METHOD(validate:(NSString *)handle
|
|
143
|
+
data:(NSString *)data
|
|
144
|
+
context:(NSString *)context
|
|
145
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
146
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
147
|
+
{
|
|
148
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
149
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
150
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
151
|
+
|
|
152
|
+
JsonEvalBridge::validateAsync(handleStr, dataStr, contextStr,
|
|
153
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
154
|
+
if (error.empty()) {
|
|
155
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
156
|
+
} else {
|
|
157
|
+
reject(@"VALIDATE_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
RCT_EXPORT_METHOD(evaluateDependents:(NSString *)handle
|
|
164
|
+
changedPathsJson:(NSString *)changedPathsJson
|
|
165
|
+
data:(NSString *)data
|
|
166
|
+
context:(NSString *)context
|
|
167
|
+
reEvaluate:(BOOL)reEvaluate
|
|
168
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
169
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
170
|
+
{
|
|
171
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
172
|
+
std::string pathsJsonStr = [self stdStringFromNSString:changedPathsJson];
|
|
173
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
174
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
175
|
+
|
|
176
|
+
JsonEvalBridge::evaluateDependentsAsync(handleStr, pathsJsonStr, dataStr, contextStr, reEvaluate,
|
|
177
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
178
|
+
if (error.empty()) {
|
|
179
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
180
|
+
} else {
|
|
181
|
+
reject(@"EVALUATE_DEPENDENTS_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
RCT_EXPORT_METHOD(getEvaluatedSchema:(NSString *)handle
|
|
188
|
+
skipLayout:(BOOL)skipLayout
|
|
189
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
190
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
191
|
+
{
|
|
192
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
193
|
+
|
|
194
|
+
JsonEvalBridge::getEvaluatedSchemaAsync(handleStr, skipLayout,
|
|
195
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
196
|
+
if (error.empty()) {
|
|
197
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
198
|
+
} else {
|
|
199
|
+
reject(@"GET_SCHEMA_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
RCT_EXPORT_METHOD(getSchemaValue:(NSString *)handle
|
|
206
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
207
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
208
|
+
{
|
|
209
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
210
|
+
|
|
211
|
+
JsonEvalBridge::getSchemaValueAsync(handleStr,
|
|
212
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
213
|
+
if (error.empty()) {
|
|
214
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
215
|
+
} else {
|
|
216
|
+
reject(@"GET_VALUE_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
RCT_EXPORT_METHOD(getEvaluatedSchemaWithoutParams:(NSString *)handle
|
|
223
|
+
skipLayout:(BOOL)skipLayout
|
|
224
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
225
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
226
|
+
{
|
|
227
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
228
|
+
|
|
229
|
+
JsonEvalBridge::getEvaluatedSchemaWithoutParamsAsync(handleStr, skipLayout,
|
|
230
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
231
|
+
if (error.empty()) {
|
|
232
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
233
|
+
} else {
|
|
234
|
+
reject(@"GET_SCHEMA_WITHOUT_PARAMS_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
RCT_EXPORT_METHOD(getEvaluatedSchemaByPath:(NSString *)handle
|
|
241
|
+
path:(NSString *)path
|
|
242
|
+
skipLayout:(BOOL)skipLayout
|
|
243
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
244
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
245
|
+
{
|
|
246
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
247
|
+
std::string pathStr = [self stdStringFromNSString:path];
|
|
248
|
+
|
|
249
|
+
JsonEvalBridge::getEvaluatedSchemaByPathAsync(handleStr, pathStr, skipLayout,
|
|
250
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
251
|
+
if (error.empty()) {
|
|
252
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
253
|
+
} else {
|
|
254
|
+
reject(@"GET_EVALUATED_SCHEMA_BY_PATH_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
RCT_EXPORT_METHOD(getEvaluatedSchemaByPaths:(NSString *)handle
|
|
261
|
+
pathsJson:(NSString *)pathsJson
|
|
262
|
+
skipLayout:(BOOL)skipLayout
|
|
263
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
264
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
265
|
+
{
|
|
266
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
267
|
+
std::string pathsJsonStr = [self stdStringFromNSString:pathsJson];
|
|
268
|
+
|
|
269
|
+
JsonEvalBridge::getEvaluatedSchemaByPathsAsync(handleStr, pathsJsonStr, skipLayout,
|
|
270
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
271
|
+
if (error.empty()) {
|
|
272
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
273
|
+
} else {
|
|
274
|
+
reject(@"GET_EVALUATED_SCHEMA_BY_PATHS_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
RCT_EXPORT_METHOD(getSchemaByPath:(NSString *)handle
|
|
281
|
+
path:(NSString *)path
|
|
282
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
283
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
284
|
+
{
|
|
285
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
286
|
+
std::string pathStr = [self stdStringFromNSString:path];
|
|
287
|
+
|
|
288
|
+
JsonEvalBridge::getSchemaByPathAsync(handleStr, pathStr,
|
|
289
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
290
|
+
if (error.empty()) {
|
|
291
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
292
|
+
} else {
|
|
293
|
+
reject(@"GET_SCHEMA_BY_PATH_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
RCT_EXPORT_METHOD(getSchemaByPaths:(NSString *)handle
|
|
300
|
+
pathsJson:(NSString *)pathsJson
|
|
301
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
302
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
303
|
+
{
|
|
304
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
305
|
+
std::string pathsJsonStr = [self stdStringFromNSString:pathsJson];
|
|
306
|
+
|
|
307
|
+
JsonEvalBridge::getSchemaByPathsAsync(handleStr, pathsJsonStr,
|
|
308
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
309
|
+
if (error.empty()) {
|
|
310
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
311
|
+
} else {
|
|
312
|
+
reject(@"GET_SCHEMA_BY_PATH_S_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
RCT_EXPORT_METHOD(reloadSchema:(NSString *)handle
|
|
319
|
+
schema:(NSString *)schema
|
|
320
|
+
context:(NSString *)context
|
|
321
|
+
data:(NSString *)data
|
|
322
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
323
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
324
|
+
{
|
|
325
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
326
|
+
std::string schemaStr = [self stdStringFromNSString:schema];
|
|
327
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
328
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
329
|
+
|
|
330
|
+
JsonEvalBridge::reloadSchemaAsync(handleStr, schemaStr, contextStr, dataStr,
|
|
331
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
332
|
+
if (error.empty()) {
|
|
333
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
334
|
+
} else {
|
|
335
|
+
reject(@"RELOAD_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
RCT_EXPORT_METHOD(reloadSchemaMsgpack:(NSString *)handle
|
|
342
|
+
schemaMsgpack:(NSArray *)schemaMsgpack
|
|
343
|
+
context:(NSString *)context
|
|
344
|
+
data:(NSString *)data
|
|
345
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
346
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
347
|
+
{
|
|
348
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
349
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
350
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
351
|
+
|
|
352
|
+
// Convert NSArray to std::vector<uint8_t>
|
|
353
|
+
std::vector<uint8_t> msgpackBytes;
|
|
354
|
+
msgpackBytes.reserve([schemaMsgpack count]);
|
|
355
|
+
for (NSNumber *num in schemaMsgpack) {
|
|
356
|
+
msgpackBytes.push_back([num unsignedCharValue]);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
JsonEvalBridge::reloadSchemaMsgpackAsync(handleStr, msgpackBytes, contextStr, dataStr,
|
|
360
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
361
|
+
if (error.empty()) {
|
|
362
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
363
|
+
} else {
|
|
364
|
+
reject(@"RELOAD_MSGPACK_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
RCT_EXPORT_METHOD(reloadSchemaFromCache:(NSString *)handle
|
|
371
|
+
cacheKey:(NSString *)cacheKey
|
|
372
|
+
context:(NSString *)context
|
|
373
|
+
data:(NSString *)data
|
|
374
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
375
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
376
|
+
{
|
|
377
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
378
|
+
std::string cacheKeyStr = [self stdStringFromNSString:cacheKey];
|
|
379
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
380
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
381
|
+
|
|
382
|
+
JsonEvalBridge::reloadSchemaFromCacheAsync(handleStr, cacheKeyStr, contextStr, dataStr,
|
|
383
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
384
|
+
if (error.empty()) {
|
|
385
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
386
|
+
} else {
|
|
387
|
+
reject(@"RELOAD_CACHE_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
RCT_EXPORT_METHOD(cacheStats:(NSString *)handle
|
|
394
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
395
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
396
|
+
{
|
|
397
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
398
|
+
|
|
399
|
+
JsonEvalBridge::cacheStatsAsync(handleStr,
|
|
400
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
401
|
+
if (error.empty()) {
|
|
402
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
403
|
+
} else {
|
|
404
|
+
reject(@"CACHE_STATS_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
RCT_EXPORT_METHOD(clearCache:(NSString *)handle
|
|
411
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
412
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
413
|
+
{
|
|
414
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
415
|
+
|
|
416
|
+
JsonEvalBridge::clearCacheAsync(handleStr,
|
|
417
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
418
|
+
if (error.empty()) {
|
|
419
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
420
|
+
} else {
|
|
421
|
+
reject(@"CLEAR_CACHE_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
RCT_EXPORT_METHOD(cacheLen:(NSString *)handle
|
|
428
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
429
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
430
|
+
{
|
|
431
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
432
|
+
|
|
433
|
+
JsonEvalBridge::cacheLenAsync(handleStr,
|
|
434
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
435
|
+
if (error.empty()) {
|
|
436
|
+
NSInteger len = [[NSString stringWithUTF8String:result.c_str()] integerValue];
|
|
437
|
+
resolve(@(len));
|
|
438
|
+
} else {
|
|
439
|
+
reject(@"CACHE_LEN_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
RCT_EXPORT_METHOD(enableCache:(NSString *)handle
|
|
446
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
447
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
448
|
+
{
|
|
449
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
450
|
+
|
|
451
|
+
JsonEvalBridge::enableCacheAsync(handleStr,
|
|
452
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
453
|
+
if (error.empty()) {
|
|
454
|
+
resolve(nil);
|
|
455
|
+
} else {
|
|
456
|
+
reject(@"ENABLE_CACHE_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
RCT_EXPORT_METHOD(disableCache:(NSString *)handle
|
|
463
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
464
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
465
|
+
{
|
|
466
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
467
|
+
|
|
468
|
+
JsonEvalBridge::disableCacheAsync(handleStr,
|
|
469
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
470
|
+
if (error.empty()) {
|
|
471
|
+
resolve(nil);
|
|
472
|
+
} else {
|
|
473
|
+
reject(@"DISABLE_CACHE_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isCacheEnabled:(NSString *)handle)
|
|
480
|
+
{
|
|
481
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
482
|
+
bool enabled = JsonEvalBridge::isCacheEnabled(handleStr);
|
|
483
|
+
return @(enabled);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
RCT_EXPORT_METHOD(validatePaths:(NSString *)handle
|
|
487
|
+
data:(NSString *)data
|
|
488
|
+
context:(NSString *)context
|
|
489
|
+
paths:(NSArray *)paths
|
|
490
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
491
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
492
|
+
{
|
|
493
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
494
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
495
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
496
|
+
std::string pathsJson = paths ? [self stdStringFromNSString:[self arrayToJsonString:paths]] : "";
|
|
497
|
+
|
|
498
|
+
JsonEvalBridge::validatePathsAsync(handleStr, dataStr, contextStr, pathsJson,
|
|
499
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
500
|
+
if (error.empty()) {
|
|
501
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
502
|
+
} else {
|
|
503
|
+
reject(@"VALIDATE_PATHS_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
RCT_EXPORT_METHOD(resolveLayout:(NSString *)handle
|
|
510
|
+
evaluate:(BOOL)evaluate
|
|
511
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
512
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
513
|
+
{
|
|
514
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
515
|
+
|
|
516
|
+
JsonEvalBridge::resolveLayoutAsync(handleStr, evaluate,
|
|
517
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
518
|
+
if (error.empty()) {
|
|
519
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
520
|
+
} else {
|
|
521
|
+
reject(@"RESOLVE_LAYOUT_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
RCT_EXPORT_METHOD(compileAndRunLogic:(NSString *)handle
|
|
528
|
+
logicStr:(NSString *)logicStr
|
|
529
|
+
data:(NSString *)data
|
|
530
|
+
context:(NSString *)context
|
|
531
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
532
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
533
|
+
{
|
|
534
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
535
|
+
std::string logicString = [self stdStringFromNSString:logicStr];
|
|
536
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
537
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
538
|
+
|
|
539
|
+
JsonEvalBridge::compileAndRunLogicAsync(handleStr, logicString, dataStr, contextStr,
|
|
540
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
541
|
+
if (error.empty()) {
|
|
542
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
543
|
+
} else {
|
|
544
|
+
reject(@"COMPILE_AND_RUN_LOGIC_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
// ============================================================================
|
|
551
|
+
// Subform Methods
|
|
552
|
+
// ============================================================================
|
|
553
|
+
|
|
554
|
+
RCT_EXPORT_METHOD(evaluateSubform:(NSString *)handle
|
|
555
|
+
subformPath:(NSString *)subformPath
|
|
556
|
+
data:(NSString *)data
|
|
557
|
+
context:(NSString *)context
|
|
558
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
559
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
560
|
+
{
|
|
561
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
562
|
+
std::string pathStr = [self stdStringFromNSString:subformPath];
|
|
563
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
564
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
565
|
+
|
|
566
|
+
JsonEvalBridge::evaluateSubformAsync(handleStr, pathStr, dataStr, contextStr,
|
|
567
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
568
|
+
if (error.empty()) {
|
|
569
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
570
|
+
} else {
|
|
571
|
+
reject(@"EVALUATE_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
);
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
RCT_EXPORT_METHOD(validateSubform:(NSString *)handle
|
|
578
|
+
subformPath:(NSString *)subformPath
|
|
579
|
+
data:(NSString *)data
|
|
580
|
+
context:(NSString *)context
|
|
581
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
582
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
583
|
+
{
|
|
584
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
585
|
+
std::string pathStr = [self stdStringFromNSString:subformPath];
|
|
586
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
587
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
588
|
+
|
|
589
|
+
JsonEvalBridge::validateSubformAsync(handleStr, pathStr, dataStr, contextStr,
|
|
590
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
591
|
+
if (error.empty()) {
|
|
592
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
593
|
+
} else {
|
|
594
|
+
reject(@"VALIDATE_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
);
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
RCT_EXPORT_METHOD(evaluateDependentsSubform:(NSString *)handle
|
|
601
|
+
subformPath:(NSString *)subformPath
|
|
602
|
+
changedPath:(NSString *)changedPath
|
|
603
|
+
data:(NSString *)data
|
|
604
|
+
context:(NSString *)context
|
|
605
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
606
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
607
|
+
{
|
|
608
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
609
|
+
std::string subformPathStr = [self stdStringFromNSString:subformPath];
|
|
610
|
+
std::string changedPathStr = [self stdStringFromNSString:changedPath];
|
|
611
|
+
std::string dataStr = [self stdStringFromNSString:data];
|
|
612
|
+
std::string contextStr = [self stdStringFromNSString:context];
|
|
613
|
+
|
|
614
|
+
JsonEvalBridge::evaluateDependentsSubformAsync(handleStr, subformPathStr, changedPathStr, dataStr, contextStr,
|
|
615
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
616
|
+
if (error.empty()) {
|
|
617
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
618
|
+
} else {
|
|
619
|
+
reject(@"EVALUATE_DEPENDENTS_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
);
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
RCT_EXPORT_METHOD(resolveLayoutSubform:(NSString *)handle
|
|
626
|
+
subformPath:(NSString *)subformPath
|
|
627
|
+
evaluate:(BOOL)evaluate
|
|
628
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
629
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
630
|
+
{
|
|
631
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
632
|
+
std::string pathStr = [self stdStringFromNSString:subformPath];
|
|
633
|
+
|
|
634
|
+
JsonEvalBridge::resolveLayoutSubformAsync(handleStr, pathStr, evaluate,
|
|
635
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
636
|
+
if (error.empty()) {
|
|
637
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
638
|
+
} else {
|
|
639
|
+
reject(@"RESOLVE_LAYOUT_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
RCT_EXPORT_METHOD(getEvaluatedSchemaSubform:(NSString *)handle
|
|
646
|
+
subformPath:(NSString *)subformPath
|
|
647
|
+
resolveLayout:(BOOL)resolveLayout
|
|
648
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
649
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
650
|
+
{
|
|
651
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
652
|
+
std::string pathStr = [self stdStringFromNSString:subformPath];
|
|
653
|
+
|
|
654
|
+
JsonEvalBridge::getEvaluatedSchemaSubformAsync(handleStr, pathStr, resolveLayout,
|
|
655
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
656
|
+
if (error.empty()) {
|
|
657
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
658
|
+
} else {
|
|
659
|
+
reject(@"GET_EVALUATED_SCHEMA_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
RCT_EXPORT_METHOD(getSchemaValueSubform:(NSString *)handle
|
|
666
|
+
subformPath:(NSString *)subformPath
|
|
667
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
668
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
669
|
+
{
|
|
670
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
671
|
+
std::string pathStr = [self stdStringFromNSString:subformPath];
|
|
672
|
+
|
|
673
|
+
JsonEvalBridge::getSchemaValueSubformAsync(handleStr, pathStr,
|
|
674
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
675
|
+
if (error.empty()) {
|
|
676
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
677
|
+
} else {
|
|
678
|
+
reject(@"GET_SCHEMA_VALUE_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
);
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
RCT_EXPORT_METHOD(getEvaluatedSchemaWithoutParamsSubform:(NSString *)handle
|
|
685
|
+
subformPath:(NSString *)subformPath
|
|
686
|
+
resolveLayout:(BOOL)resolveLayout
|
|
687
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
688
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
689
|
+
{
|
|
690
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
691
|
+
std::string pathStr = [self stdStringFromNSString:subformPath];
|
|
692
|
+
|
|
693
|
+
JsonEvalBridge::getEvaluatedSchemaWithoutParamsSubformAsync(handleStr, pathStr, resolveLayout,
|
|
694
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
695
|
+
if (error.empty()) {
|
|
696
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
697
|
+
} else {
|
|
698
|
+
reject(@"GET_EVALUATED_SCHEMA_WITHOUT_PARAMS_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
);
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
RCT_EXPORT_METHOD(getEvaluatedSchemaByPathSubform:(NSString *)handle
|
|
705
|
+
subformPath:(NSString *)subformPath
|
|
706
|
+
schemaPath:(NSString *)schemaPath
|
|
707
|
+
skipLayout:(BOOL)skipLayout
|
|
708
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
709
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
710
|
+
{
|
|
711
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
712
|
+
std::string subformPathStr = [self stdStringFromNSString:subformPath];
|
|
713
|
+
std::string schemaPathStr = [self stdStringFromNSString:schemaPath];
|
|
714
|
+
|
|
715
|
+
JsonEvalBridge::getEvaluatedSchemaByPathSubformAsync(handleStr, subformPathStr, schemaPathStr, skipLayout,
|
|
716
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
717
|
+
if (error.empty()) {
|
|
718
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
719
|
+
} else {
|
|
720
|
+
reject(@"GET_EVALUATED_SCHEMA_BY_PATH_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
);
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
RCT_EXPORT_METHOD(getEvaluatedSchemaByPathsSubform:(NSString *)handle
|
|
727
|
+
subformPath:(NSString *)subformPath
|
|
728
|
+
schemaPathsJson:(NSString *)schemaPathsJson
|
|
729
|
+
skipLayout:(BOOL)skipLayout
|
|
730
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
731
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
732
|
+
{
|
|
733
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
734
|
+
std::string subformPathStr = [self stdStringFromNSString:subformPath];
|
|
735
|
+
std::string schemaPathsJsonStr = [self stdStringFromNSString:schemaPathsJson];
|
|
736
|
+
|
|
737
|
+
JsonEvalBridge::getEvaluatedSchemaByPathsSubformAsync(handleStr, subformPathStr, schemaPathsJsonStr, skipLayout,
|
|
738
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
739
|
+
if (error.empty()) {
|
|
740
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
741
|
+
} else {
|
|
742
|
+
reject(@"GET_EVALUATED_SCHEMA_BY_PATHS_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
);
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
RCT_EXPORT_METHOD(getSubformPaths:(NSString *)handle
|
|
749
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
750
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
751
|
+
{
|
|
752
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
753
|
+
|
|
754
|
+
JsonEvalBridge::getSubformPathsAsync(handleStr,
|
|
755
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
756
|
+
if (error.empty()) {
|
|
757
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
758
|
+
} else {
|
|
759
|
+
reject(@"GET_SUBFORM_PATHS_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
);
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
RCT_EXPORT_METHOD(getSchemaByPathSubform:(NSString *)handle
|
|
766
|
+
subformPath:(NSString *)subformPath
|
|
767
|
+
schemaPath:(NSString *)schemaPath
|
|
768
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
769
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
770
|
+
{
|
|
771
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
772
|
+
std::string subformPathStr = [self stdStringFromNSString:subformPath];
|
|
773
|
+
std::string schemaPathStr = [self stdStringFromNSString:schemaPath];
|
|
774
|
+
|
|
775
|
+
JsonEvalBridge::getSchemaByPathSubformAsync(handleStr, subformPathStr, schemaPathStr,
|
|
776
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
777
|
+
if (error.empty()) {
|
|
778
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
779
|
+
} else {
|
|
780
|
+
reject(@"GET_SCHEMA_BY_PATH_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
);
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
RCT_EXPORT_METHOD(getSchemaByPathsSubform:(NSString *)handle
|
|
787
|
+
subformPath:(NSString *)subformPath
|
|
788
|
+
schemaPathsJson:(NSString *)schemaPathsJson
|
|
789
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
790
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
791
|
+
{
|
|
792
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
793
|
+
std::string subformPathStr = [self stdStringFromNSString:subformPath];
|
|
794
|
+
std::string schemaPathsJsonStr = [self stdStringFromNSString:schemaPathsJson];
|
|
795
|
+
|
|
796
|
+
JsonEvalBridge::getSchemaByPathsSubformAsync(handleStr, subformPathStr, schemaPathsJsonStr,
|
|
797
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
798
|
+
if (error.empty()) {
|
|
799
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
800
|
+
} else {
|
|
801
|
+
reject(@"GET_SCHEMA_BY_PATHS_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
RCT_EXPORT_METHOD(hasSubform:(NSString *)handle
|
|
808
|
+
subformPath:(NSString *)subformPath
|
|
809
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
810
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
811
|
+
{
|
|
812
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
813
|
+
std::string pathStr = [self stdStringFromNSString:subformPath];
|
|
814
|
+
|
|
815
|
+
JsonEvalBridge::hasSubformAsync(handleStr, pathStr,
|
|
816
|
+
[resolve, reject](const std::string& result, const std::string& error) {
|
|
817
|
+
if (error.empty()) {
|
|
818
|
+
resolve([NSString stringWithUTF8String:result.c_str()]);
|
|
819
|
+
} else {
|
|
820
|
+
reject(@"HAS_SUBFORM_ERROR", [NSString stringWithUTF8String:error.c_str()], nil);
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
);
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(dispose:(NSString *)handle)
|
|
827
|
+
{
|
|
828
|
+
std::string handleStr = [self stdStringFromNSString:handle];
|
|
829
|
+
JsonEvalBridge::dispose(handleStr);
|
|
830
|
+
return nil;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
RCT_EXPORT_METHOD(version:(RCTPromiseResolveBlock)resolve
|
|
834
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
835
|
+
{
|
|
836
|
+
@try {
|
|
837
|
+
std::string ver = JsonEvalBridge::version();
|
|
838
|
+
resolve([self stringFromStdString:ver]);
|
|
839
|
+
} @catch (NSException *exception) {
|
|
840
|
+
reject(@"VERSION_ERROR", exception.reason, nil);
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
RCT_EXPORT_METHOD(multiply:(double)a
|
|
845
|
+
b:(double)b
|
|
846
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
847
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
848
|
+
{
|
|
849
|
+
resolve(@(a * b));
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
@end
|