@haroldtran/react-native-pax 0.1.7
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/LICENSE +20 -0
- package/README.md +311 -0
- package/android/build.gradle +82 -0
- package/android/gradle.properties +5 -0
- package/android/libs/POSLink_Core.jar +0 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/paxposlink/PaxPoslinkModule.java +355 -0
- package/android/src/main/java/com/paxposlink/PaxPoslinkPackage.java +28 -0
- package/ios/PaxPoslink.h +12 -0
- package/ios/PaxPoslink.mm +27 -0
- package/ios/PaxPoslink.xcodeproj/project.pbxproj +274 -0
- package/ios/PaxPoslink.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/lib/commonjs/index.js +48 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/module/index.js +37 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/commonjs/index.d.ts +9 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/module/index.d.ts +9 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/package.json +185 -0
- package/react-native-pax-poslink.podspec +35 -0
- package/src/index.tsx +77 -0
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
package com.paxposlink;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.Promise;
|
|
6
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
7
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
8
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
9
|
+
import com.facebook.react.module.annotations.ReactModule;
|
|
10
|
+
import com.facebook.react.bridge.Arguments;
|
|
11
|
+
import com.facebook.react.bridge.WritableMap;
|
|
12
|
+
import java.util.Map;
|
|
13
|
+
import java.util.HashMap;
|
|
14
|
+
import com.paxposlink.poslink.CommSetting;
|
|
15
|
+
import com.paxposlink.poslink.POSLinkAndroid;
|
|
16
|
+
import com.paxposlink.poslink.LogSetting;
|
|
17
|
+
import com.paxposlink.poslink.PosLink;
|
|
18
|
+
import com.paxposlink.poslink.PaymentRequest;
|
|
19
|
+
import com.paxposlink.poslink.ProcessTransResult;
|
|
20
|
+
import com.paxposlink.poslink.PaymentResponse;
|
|
21
|
+
import com.paxposlink.poslink.BatchRequest;
|
|
22
|
+
import com.paxposlink.poslink.BatchResponse;
|
|
23
|
+
import com.paxposlink.poslink.CommSetting;
|
|
24
|
+
import android.os.HandlerThread;
|
|
25
|
+
import android.os.Handler;
|
|
26
|
+
import android.os.Looper;
|
|
27
|
+
import java.lang.Runnable;
|
|
28
|
+
import android.util.Log;
|
|
29
|
+
import android.content.Context;
|
|
30
|
+
|
|
31
|
+
@ReactModule(name = PaxPoslinkModule.NAME)
|
|
32
|
+
public class PaxPoslinkModule extends ReactContextBaseJavaModule {
|
|
33
|
+
public static final String NAME = "PaxPoslink";
|
|
34
|
+
private PosLink poslink;
|
|
35
|
+
private HandlerThread handlerThread;
|
|
36
|
+
private Context context;
|
|
37
|
+
|
|
38
|
+
public PaxPoslinkModule(ReactApplicationContext reactContext) {
|
|
39
|
+
|
|
40
|
+
super(reactContext);
|
|
41
|
+
this.context = reactContext;
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@Override
|
|
46
|
+
@NonNull
|
|
47
|
+
public String getName() {
|
|
48
|
+
return NAME;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Example method
|
|
52
|
+
// See https://reactnative.dev/docs/native-modules-android
|
|
53
|
+
@ReactMethod
|
|
54
|
+
public void multiply(double a, double b, Promise promise) {
|
|
55
|
+
promise.resolve(a * b);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@ReactMethod
|
|
59
|
+
public void initPOSLink(String type, String timeout, Boolean proxy, String ip, String port, Promise promise) {
|
|
60
|
+
|
|
61
|
+
try {
|
|
62
|
+
LogSetting logSetting = new LogSetting();
|
|
63
|
+
|
|
64
|
+
logSetting.setLogMode(true); // Open or close log
|
|
65
|
+
logSetting.setLevel(LogSetting.LOGLEVEL.DEBUG); // Set log level
|
|
66
|
+
logSetting.setLogFileName("POSLinkLog"); // Set the file name of output log
|
|
67
|
+
logSetting.setOutputPath("sdcard/log"); // Set path for output log
|
|
68
|
+
logSetting.setLogDays("30"); // Keep log for 30 days
|
|
69
|
+
|
|
70
|
+
// Setting connection configurations
|
|
71
|
+
CommSetting commSetting = new CommSetting();
|
|
72
|
+
|
|
73
|
+
commSetting.setType(type);
|
|
74
|
+
|
|
75
|
+
if (ip != null) {
|
|
76
|
+
commSetting.setDestIP(ip);
|
|
77
|
+
commSetting.setDestPort(port);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
commSetting.setTimeOut(timeout);
|
|
81
|
+
|
|
82
|
+
if (proxy) {
|
|
83
|
+
commSetting.setEnableProxy(proxy);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
poslink = new PosLink(this.context);
|
|
87
|
+
|
|
88
|
+
poslink.SetCommSetting(commSetting);
|
|
89
|
+
|
|
90
|
+
promise.resolve(true);
|
|
91
|
+
|
|
92
|
+
} catch (Exception e) {
|
|
93
|
+
promise.reject("Exception Error", e);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@ReactMethod
|
|
99
|
+
private void runPayment(String amount, String tip, Promise promise) {
|
|
100
|
+
|
|
101
|
+
PaymentRequest req = new PaymentRequest();
|
|
102
|
+
|
|
103
|
+
req.TenderType = req.ParseTenderType("CREDIT");
|
|
104
|
+
req.TransType = req.ParseTransType("SALE");
|
|
105
|
+
req.ECRRefNum = "1";
|
|
106
|
+
req.Amount = amount;
|
|
107
|
+
req.TipAmt = tip;
|
|
108
|
+
|
|
109
|
+
this.runTransaction(req, promise);
|
|
110
|
+
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@ReactMethod
|
|
114
|
+
private void runAuth(String amount, Promise promise) {
|
|
115
|
+
|
|
116
|
+
PaymentRequest req = new PaymentRequest();
|
|
117
|
+
|
|
118
|
+
req.TenderType = req.ParseTenderType("CREDIT");
|
|
119
|
+
req.TransType = req.ParseTransType("AUTH");
|
|
120
|
+
req.ECRRefNum = "1";
|
|
121
|
+
req.Amount = amount;
|
|
122
|
+
|
|
123
|
+
this.runTransaction(req, promise);
|
|
124
|
+
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@ReactMethod
|
|
128
|
+
private void runReturn(String amount, Promise promise) {
|
|
129
|
+
|
|
130
|
+
PaymentRequest req = new PaymentRequest();
|
|
131
|
+
|
|
132
|
+
req.TenderType = req.ParseTenderType("CREDIT");
|
|
133
|
+
req.TransType = req.ParseTransType("RETURN");
|
|
134
|
+
req.ECRRefNum = "5";
|
|
135
|
+
req.Amount = amount;
|
|
136
|
+
|
|
137
|
+
this.runTransaction(req, promise);
|
|
138
|
+
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
@ReactMethod
|
|
142
|
+
private void closeBatch(Promise promise) {
|
|
143
|
+
|
|
144
|
+
handlerThread = new HandlerThread("MyHandlerThread");
|
|
145
|
+
handlerThread.start();
|
|
146
|
+
Looper looper = handlerThread.getLooper();
|
|
147
|
+
Handler handler = new Handler(looper);
|
|
148
|
+
|
|
149
|
+
handler.post(new Runnable() {
|
|
150
|
+
|
|
151
|
+
@Override
|
|
152
|
+
public void run() {
|
|
153
|
+
BatchRequest batchRequest = new BatchRequest();
|
|
154
|
+
batchRequest.TransType = batchRequest.ParseTransType("BATCHCLOSE");
|
|
155
|
+
poslink.BatchRequest = batchRequest;
|
|
156
|
+
|
|
157
|
+
ProcessTransResult ptr = poslink.ProcessTrans();
|
|
158
|
+
|
|
159
|
+
if (ptr.Code == ProcessTransResult.ProcessTransResultCode.OK) {
|
|
160
|
+
BatchResponse response = poslink.BatchResponse;
|
|
161
|
+
|
|
162
|
+
WritableMap map = Arguments.createMap();
|
|
163
|
+
map.putString("AuthCode", response.AuthCode);
|
|
164
|
+
map.putString("BatchFailedCount", response.BatchFailedCount);
|
|
165
|
+
map.putString("BatchFailedRefNum", response.BatchFailedRefNum);
|
|
166
|
+
map.putString("BatchNum", response.BatchNum);
|
|
167
|
+
map.putString("CashAmount", response.CashAmount);
|
|
168
|
+
map.putString("CashCount", response.CashCount);
|
|
169
|
+
map.putString("CHECKAmount", response.CHECKAmount);
|
|
170
|
+
map.putString("CreditAmount", response.CreditAmount);
|
|
171
|
+
map.putString("CreditCount", response.CreditCount);
|
|
172
|
+
map.putString("DebitAmount", response.DebitAmount);
|
|
173
|
+
map.putString("DebitCount", response.DebitCount);
|
|
174
|
+
map.putString("EBTAmount", response.EBTAmount);
|
|
175
|
+
map.putString("EBTCount", response.EBTCount);
|
|
176
|
+
map.putString("ExtData", response.ExtData);
|
|
177
|
+
map.putString("GiftAmount", response.GiftAmount);
|
|
178
|
+
map.putString("GiftCount", response.GiftCount);
|
|
179
|
+
map.putString("HostCode", response.HostCode);
|
|
180
|
+
map.putString("HostResponse", response.HostResponse);
|
|
181
|
+
map.putString("HostTraceNum", response.HostTraceNum);
|
|
182
|
+
map.putString("LoyaltyAmount", response.LoyaltyAmount);
|
|
183
|
+
map.putString("LoyaltyCount", response.LoyaltyCount);
|
|
184
|
+
map.putString("Message", response.Message);
|
|
185
|
+
map.putString("ResultCode", response.ResultCode);
|
|
186
|
+
map.putString("ResultTxt", response.ResultTxt);
|
|
187
|
+
map.putString("SAFDeletedCount", response.SAFDeletedCount);
|
|
188
|
+
map.putString("SAFFailedCount", response.SAFFailedCount);
|
|
189
|
+
map.putString("SAFFailedTotal", response.SAFFailedTotal);
|
|
190
|
+
map.putString("SAFTotalAmount", response.SAFTotalAmount);
|
|
191
|
+
map.putString("SAFTotalCount", response.SAFTotalCount);
|
|
192
|
+
map.putString("SAFUploadedAmount", response.SAFUploadedAmount);
|
|
193
|
+
map.putString("SAFUploadedCount", response.SAFUploadedCount);
|
|
194
|
+
map.putString("TID", response.TID);
|
|
195
|
+
map.putString("Timestamp", response.Timestamp);
|
|
196
|
+
|
|
197
|
+
promise.resolve(map);
|
|
198
|
+
|
|
199
|
+
} else if (ptr.Code == ProcessTransResult.ProcessTransResultCode.TimeOut) {
|
|
200
|
+
String errorMsg = ptr.Msg;
|
|
201
|
+
String errorCode = String.valueOf(ptr.Code);
|
|
202
|
+
promise.reject(ptr.Msg);
|
|
203
|
+
|
|
204
|
+
} else {
|
|
205
|
+
String errorMsg = ptr.Msg;
|
|
206
|
+
String errorCode = String.valueOf(ptr.Code);
|
|
207
|
+
promise.reject(ptr.Msg);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
@ReactMethod
|
|
214
|
+
private void runPostAuth(String amount, String refNum, String authCode, Promise promise) {
|
|
215
|
+
PaymentRequest req = new PaymentRequest();
|
|
216
|
+
|
|
217
|
+
req.TenderType = req.ParseTenderType("CREDIT");
|
|
218
|
+
req.TransType = req.ParseTransType("POSTAUTH");
|
|
219
|
+
req.ECRRefNum = "1";
|
|
220
|
+
req.OrigRefNum = refNum;
|
|
221
|
+
req.AuthCode = authCode;
|
|
222
|
+
req.Amount = amount;
|
|
223
|
+
|
|
224
|
+
this.runTransaction(req, promise);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
@ReactMethod
|
|
228
|
+
private void runVoid(String refNum, String authCode, Promise promise) {
|
|
229
|
+
PaymentRequest req = new PaymentRequest();
|
|
230
|
+
|
|
231
|
+
req.TenderType = req.ParseTenderType("CREDIT");
|
|
232
|
+
req.TransType = req.ParseTransType("VOID");
|
|
233
|
+
req.ECRRefNum = "1";
|
|
234
|
+
req.OrigRefNum = refNum;
|
|
235
|
+
req.AuthCode = authCode;
|
|
236
|
+
|
|
237
|
+
this.runTransaction(req, promise);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@ReactMethod
|
|
241
|
+
private void runAdjustment(String amount, String refNum, Promise promise) {
|
|
242
|
+
PaymentRequest req = new PaymentRequest();
|
|
243
|
+
|
|
244
|
+
req.TenderType = req.ParseTenderType("CREDIT");
|
|
245
|
+
req.TransType = req.ParseTransType("ADJUST");
|
|
246
|
+
req.OrigTraceNum = refNum;
|
|
247
|
+
req.ECRRefNum = "1";
|
|
248
|
+
req.OrigRefNum = refNum;
|
|
249
|
+
req.Amount = amount;
|
|
250
|
+
|
|
251
|
+
this.runTransaction(req, promise);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
@ReactMethod
|
|
255
|
+
private void runTransaction(PaymentRequest request, Promise promise) {
|
|
256
|
+
|
|
257
|
+
handlerThread = new HandlerThread("MyHandlerThread");
|
|
258
|
+
handlerThread.start();
|
|
259
|
+
Looper looper = handlerThread.getLooper();
|
|
260
|
+
Handler handler = new Handler(looper);
|
|
261
|
+
|
|
262
|
+
handler.post(new Runnable() {
|
|
263
|
+
|
|
264
|
+
@Override
|
|
265
|
+
public void run() {
|
|
266
|
+
Log.d("DEBUG_POSLINK_INFO", String.valueOf(poslink.GetCommSetting().getDestIP()));
|
|
267
|
+
|
|
268
|
+
poslink.PaymentRequest = request;
|
|
269
|
+
|
|
270
|
+
ProcessTransResult ptr = poslink.ProcessTrans();
|
|
271
|
+
|
|
272
|
+
Log.d("DEBUG_PAYMENT_REQUEST", String.valueOf(ptr.Msg));
|
|
273
|
+
|
|
274
|
+
// Check transaction result
|
|
275
|
+
if (ptr.Code == ProcessTransResult.ProcessTransResultCode.OK) {
|
|
276
|
+
/**
|
|
277
|
+
* When the transResult.Code is OK, then the response has already been
|
|
278
|
+
* assigned to poslink instance's PaymentResponse field automatically,
|
|
279
|
+
* what you only need to do is get the response from the field
|
|
280
|
+
*/
|
|
281
|
+
PaymentResponse response = poslink.PaymentResponse;
|
|
282
|
+
|
|
283
|
+
Log.d("PAYMENT_RESPONSE_DEBUG AuthCode", response.AuthCode);
|
|
284
|
+
WritableMap map = Arguments.createMap();
|
|
285
|
+
map.putString("ApprovedAmount", response.ApprovedAmount);
|
|
286
|
+
map.putString("ApprovedCashBackAmount", response.ApprovedCashBackAmount);
|
|
287
|
+
map.putString("ApprovedMerchantFee", response.ApprovedMerchantFee);
|
|
288
|
+
map.putString("ApprovedTaxAmount", response.ApprovedTaxAmount);
|
|
289
|
+
map.putString("ApprovedTipAmount", response.ApprovedTipAmount);
|
|
290
|
+
map.putString("AuthCode", response.AuthCode);
|
|
291
|
+
map.putString("AuthorizationResponse", response.AuthorizationResponse);
|
|
292
|
+
map.putString("AvsResponse", response.AvsResponse);
|
|
293
|
+
map.putString("BogusAccountNum", response.BogusAccountNum);
|
|
294
|
+
map.putString("CardType", response.CardType);
|
|
295
|
+
map.putString("CvResponse", response.CvResponse);
|
|
296
|
+
map.putString("DebitAccountType", response.DebitAccountType);
|
|
297
|
+
map.putString("ECRTransID", response.ECRTransID);
|
|
298
|
+
map.putString("EDCType", response.EDCType);
|
|
299
|
+
map.putString("ExtraBalance", response.ExtraBalance);
|
|
300
|
+
map.putString("GatewayTransactionID", response.GatewayTransactionID);
|
|
301
|
+
map.putString("GiftCardType", response.GiftCardType);
|
|
302
|
+
map.putString("HostAccount", response.HostAccount);
|
|
303
|
+
map.putString("HostCardType", response.HostCardType);
|
|
304
|
+
map.putString("HostCode", response.HostCode);
|
|
305
|
+
map.putString("HostDetailedMessage", response.HostDetailedMessage);
|
|
306
|
+
map.putString("HostResponse", response.HostResponse);
|
|
307
|
+
map.putString("HostTimeStamp", response.HostTimeStamp);
|
|
308
|
+
map.putString("IssuerResponseCode", response.IssuerResponseCode);
|
|
309
|
+
map.putString("MaskedPAN", response.MaskedPAN);
|
|
310
|
+
map.putString("Message", response.Message);
|
|
311
|
+
map.putString("PayloadData", response.PayloadData);
|
|
312
|
+
map.putString("PaymentAccountReferenceID", response.PaymentAccountReferenceID);
|
|
313
|
+
map.putString("RawResponse", response.RawResponse);
|
|
314
|
+
map.putString("RefNum", response.RefNum);
|
|
315
|
+
map.putString("RemainingBalance", response.RemainingBalance);
|
|
316
|
+
map.putString("RequestedAmount", response.RequestedAmount);
|
|
317
|
+
map.putString("ResultCode", response.ResultCode);
|
|
318
|
+
map.putString("ResultTxt", response.ResultTxt);
|
|
319
|
+
map.putString("RetrievalReferenceNumber", response.RetrievalReferenceNumber);
|
|
320
|
+
map.putString("SigFileName", response.SigFileName);
|
|
321
|
+
map.putString("SignData", response.SignData);
|
|
322
|
+
map.putString("Timestamp", response.Timestamp);
|
|
323
|
+
map.putString("Track1Data", response.Track1Data);
|
|
324
|
+
map.putString("Track2Data", response.Track2Data);
|
|
325
|
+
map.putString("Track3Data", response.Track3Data);
|
|
326
|
+
map.putString("TransactionIntegrityClass", response.TransactionIntegrityClass);
|
|
327
|
+
map.putString("TransactionRemainingAmount", response.TransactionRemainingAmount);
|
|
328
|
+
map.putString("ExtData", response.ExtData);
|
|
329
|
+
|
|
330
|
+
promise.resolve(map);
|
|
331
|
+
|
|
332
|
+
} else if (ptr.Code == ProcessTransResult.ProcessTransResultCode.TimeOut) {
|
|
333
|
+
String errorMsg = ptr.Msg;
|
|
334
|
+
String errorCode = String.valueOf(ptr.Code);
|
|
335
|
+
Log.d("PAYMENT_RESPONSE_DEBUG", errorMsg);
|
|
336
|
+
Log.d("PAYMENT_RESPONSE_DEBUG", errorCode);
|
|
337
|
+
handler.getLooper().quit();
|
|
338
|
+
promise.reject(ptr.Msg);
|
|
339
|
+
|
|
340
|
+
} else {
|
|
341
|
+
String errorMsg = ptr.Msg;
|
|
342
|
+
String errorCode = String.valueOf(ptr.Code);
|
|
343
|
+
Log.d("PAYMENT_RESPONSE_DEBUG", errorCode);
|
|
344
|
+
Log.d("PAYMENT_RESPONSE_DEBUG", errorMsg);
|
|
345
|
+
promise.reject(ptr.Msg);
|
|
346
|
+
|
|
347
|
+
handler.getLooper().quit();
|
|
348
|
+
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
package com.paxposlink;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.ReactPackage;
|
|
6
|
+
import com.facebook.react.bridge.NativeModule;
|
|
7
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
8
|
+
import com.facebook.react.uimanager.ViewManager;
|
|
9
|
+
|
|
10
|
+
import java.util.ArrayList;
|
|
11
|
+
import java.util.Collections;
|
|
12
|
+
import java.util.List;
|
|
13
|
+
|
|
14
|
+
public class PaxPoslinkPackage implements ReactPackage {
|
|
15
|
+
@NonNull
|
|
16
|
+
@Override
|
|
17
|
+
public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
|
|
18
|
+
List<NativeModule> modules = new ArrayList<>();
|
|
19
|
+
modules.add(new PaxPoslinkModule(reactContext));
|
|
20
|
+
return modules;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@NonNull
|
|
24
|
+
@Override
|
|
25
|
+
public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
|
|
26
|
+
return Collections.emptyList();
|
|
27
|
+
}
|
|
28
|
+
}
|
package/ios/PaxPoslink.h
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#import "PaxPoslink.h"
|
|
2
|
+
|
|
3
|
+
@implementation PaxPoslink
|
|
4
|
+
RCT_EXPORT_MODULE()
|
|
5
|
+
|
|
6
|
+
// Example method
|
|
7
|
+
// See // https://reactnative.dev/docs/native-modules-ios
|
|
8
|
+
RCT_REMAP_METHOD(multiply,
|
|
9
|
+
multiplyWithA:(double)a withB:(double)b
|
|
10
|
+
withResolver:(RCTPromiseResolveBlock)resolve
|
|
11
|
+
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
12
|
+
{
|
|
13
|
+
NSNumber *result = @(a * b);
|
|
14
|
+
|
|
15
|
+
resolve(result);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Don't compile this code when we build for the old architecture.
|
|
19
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
20
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
21
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params
|
|
22
|
+
{
|
|
23
|
+
return std::make_shared<facebook::react::NativePaxPoslinkSpecJSI>(params);
|
|
24
|
+
}
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
@end
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
// !$*UTF8*$!
|
|
2
|
+
{
|
|
3
|
+
archiveVersion = 1;
|
|
4
|
+
classes = {
|
|
5
|
+
};
|
|
6
|
+
objectVersion = 46;
|
|
7
|
+
objects = {
|
|
8
|
+
|
|
9
|
+
/* Begin PBXBuildFile section */
|
|
10
|
+
5E555C0D2413F4C50049A1A2 /* PaxPoslink.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* PaxPoslink.m */; };
|
|
11
|
+
/* End PBXBuildFile section */
|
|
12
|
+
|
|
13
|
+
/* Begin PBXCopyFilesBuildPhase section */
|
|
14
|
+
58B511D91A9E6C8500147676 /* CopyFiles */ = {
|
|
15
|
+
isa = PBXCopyFilesBuildPhase;
|
|
16
|
+
buildActionMask = 2147483647;
|
|
17
|
+
dstPath = "include/$(PRODUCT_NAME)";
|
|
18
|
+
dstSubfolderSpec = 16;
|
|
19
|
+
files = (
|
|
20
|
+
);
|
|
21
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
22
|
+
};
|
|
23
|
+
/* End PBXCopyFilesBuildPhase section */
|
|
24
|
+
|
|
25
|
+
/* Begin PBXFileReference section */
|
|
26
|
+
134814201AA4EA6300B7C361 /* libPaxPoslink.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPaxPoslink.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
27
|
+
B3E7B5881CC2AC0600A0062D /* PaxPoslink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaxPoslink.h; sourceTree = "<group>"; };
|
|
28
|
+
B3E7B5891CC2AC0600A0062D /* PaxPoslink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PaxPoslink.m; sourceTree = "<group>"; };
|
|
29
|
+
/* End PBXFileReference section */
|
|
30
|
+
|
|
31
|
+
/* Begin PBXFrameworksBuildPhase section */
|
|
32
|
+
58B511D81A9E6C8500147676 /* Frameworks */ = {
|
|
33
|
+
isa = PBXFrameworksBuildPhase;
|
|
34
|
+
buildActionMask = 2147483647;
|
|
35
|
+
files = (
|
|
36
|
+
);
|
|
37
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
38
|
+
};
|
|
39
|
+
/* End PBXFrameworksBuildPhase section */
|
|
40
|
+
|
|
41
|
+
/* Begin PBXGroup section */
|
|
42
|
+
134814211AA4EA7D00B7C361 /* Products */ = {
|
|
43
|
+
isa = PBXGroup;
|
|
44
|
+
children = (
|
|
45
|
+
134814201AA4EA6300B7C361 /* libPaxPoslink.a */,
|
|
46
|
+
);
|
|
47
|
+
name = Products;
|
|
48
|
+
sourceTree = "<group>";
|
|
49
|
+
};
|
|
50
|
+
58B511D21A9E6C8500147676 = {
|
|
51
|
+
isa = PBXGroup;
|
|
52
|
+
children = (
|
|
53
|
+
B3E7B5881CC2AC0600A0062D /* PaxPoslink.h */,
|
|
54
|
+
B3E7B5891CC2AC0600A0062D /* PaxPoslink.m */,
|
|
55
|
+
134814211AA4EA7D00B7C361 /* Products */,
|
|
56
|
+
);
|
|
57
|
+
sourceTree = "<group>";
|
|
58
|
+
};
|
|
59
|
+
/* End PBXGroup section */
|
|
60
|
+
|
|
61
|
+
/* Begin PBXNativeTarget section */
|
|
62
|
+
58B511DA1A9E6C8500147676 /* PaxPoslink */ = {
|
|
63
|
+
isa = PBXNativeTarget;
|
|
64
|
+
buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "PaxPoslink" */;
|
|
65
|
+
buildPhases = (
|
|
66
|
+
58B511D71A9E6C8500147676 /* Sources */,
|
|
67
|
+
58B511D81A9E6C8500147676 /* Frameworks */,
|
|
68
|
+
58B511D91A9E6C8500147676 /* CopyFiles */,
|
|
69
|
+
);
|
|
70
|
+
buildRules = (
|
|
71
|
+
);
|
|
72
|
+
dependencies = (
|
|
73
|
+
);
|
|
74
|
+
name = PaxPoslink;
|
|
75
|
+
productName = RCTDataManager;
|
|
76
|
+
productReference = 134814201AA4EA6300B7C361 /* libPaxPoslink.a */;
|
|
77
|
+
productType = "com.apple.product-type.library.static";
|
|
78
|
+
};
|
|
79
|
+
/* End PBXNativeTarget section */
|
|
80
|
+
|
|
81
|
+
/* Begin PBXProject section */
|
|
82
|
+
58B511D31A9E6C8500147676 /* Project object */ = {
|
|
83
|
+
isa = PBXProject;
|
|
84
|
+
attributes = {
|
|
85
|
+
LastUpgradeCheck = 0920;
|
|
86
|
+
ORGANIZATIONNAME = Facebook;
|
|
87
|
+
TargetAttributes = {
|
|
88
|
+
58B511DA1A9E6C8500147676 = {
|
|
89
|
+
CreatedOnToolsVersion = 6.1.1;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "PaxPoslink" */;
|
|
94
|
+
compatibilityVersion = "Xcode 3.2";
|
|
95
|
+
developmentRegion = English;
|
|
96
|
+
hasScannedForEncodings = 0;
|
|
97
|
+
knownRegions = (
|
|
98
|
+
English,
|
|
99
|
+
en,
|
|
100
|
+
);
|
|
101
|
+
mainGroup = 58B511D21A9E6C8500147676;
|
|
102
|
+
productRefGroup = 58B511D21A9E6C8500147676;
|
|
103
|
+
projectDirPath = "";
|
|
104
|
+
projectRoot = "";
|
|
105
|
+
targets = (
|
|
106
|
+
58B511DA1A9E6C8500147676 /* PaxPoslink */,
|
|
107
|
+
);
|
|
108
|
+
};
|
|
109
|
+
/* End PBXProject section */
|
|
110
|
+
|
|
111
|
+
/* Begin PBXSourcesBuildPhase section */
|
|
112
|
+
58B511D71A9E6C8500147676 /* Sources */ = {
|
|
113
|
+
isa = PBXSourcesBuildPhase;
|
|
114
|
+
buildActionMask = 2147483647;
|
|
115
|
+
files = (
|
|
116
|
+
B3E7B58A1CC2AC0600A0062D /* PaxPoslink.m in Sources */,
|
|
117
|
+
);
|
|
118
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
119
|
+
};
|
|
120
|
+
/* End PBXSourcesBuildPhase section */
|
|
121
|
+
|
|
122
|
+
/* Begin XCBuildConfiguration section */
|
|
123
|
+
58B511ED1A9E6C8500147676 /* Debug */ = {
|
|
124
|
+
isa = XCBuildConfiguration;
|
|
125
|
+
buildSettings = {
|
|
126
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
127
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
128
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
129
|
+
CLANG_ENABLE_MODULES = YES;
|
|
130
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
131
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
132
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
133
|
+
CLANG_WARN_COMMA = YES;
|
|
134
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
135
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
136
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
137
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
138
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
139
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
140
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
141
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
142
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
143
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
144
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
145
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
146
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
147
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
148
|
+
COPY_PHASE_STRIP = NO;
|
|
149
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
150
|
+
ENABLE_TESTABILITY = YES;
|
|
151
|
+
"EXCLUDED_ARCHS[sdk=*]" = arm64;
|
|
152
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
153
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
|
154
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
155
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
|
156
|
+
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
157
|
+
"DEBUG=1",
|
|
158
|
+
"$(inherited)",
|
|
159
|
+
);
|
|
160
|
+
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
|
161
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
162
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
163
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
164
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
165
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
166
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
167
|
+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
168
|
+
MTL_ENABLE_DEBUG_INFO = YES;
|
|
169
|
+
ONLY_ACTIVE_ARCH = YES;
|
|
170
|
+
SDKROOT = iphoneos;
|
|
171
|
+
};
|
|
172
|
+
name = Debug;
|
|
173
|
+
};
|
|
174
|
+
58B511EE1A9E6C8500147676 /* Release */ = {
|
|
175
|
+
isa = XCBuildConfiguration;
|
|
176
|
+
buildSettings = {
|
|
177
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
178
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
179
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
180
|
+
CLANG_ENABLE_MODULES = YES;
|
|
181
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
182
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
183
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
184
|
+
CLANG_WARN_COMMA = YES;
|
|
185
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
186
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
187
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
188
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
189
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
190
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
191
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
192
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
193
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
194
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
195
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
196
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
197
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
198
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
199
|
+
COPY_PHASE_STRIP = YES;
|
|
200
|
+
ENABLE_NS_ASSERTIONS = NO;
|
|
201
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
202
|
+
"EXCLUDED_ARCHS[sdk=*]" = arm64;
|
|
203
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
204
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
205
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
206
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
207
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
208
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
209
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
210
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
211
|
+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
212
|
+
MTL_ENABLE_DEBUG_INFO = NO;
|
|
213
|
+
SDKROOT = iphoneos;
|
|
214
|
+
VALIDATE_PRODUCT = YES;
|
|
215
|
+
};
|
|
216
|
+
name = Release;
|
|
217
|
+
};
|
|
218
|
+
58B511F01A9E6C8500147676 /* Debug */ = {
|
|
219
|
+
isa = XCBuildConfiguration;
|
|
220
|
+
buildSettings = {
|
|
221
|
+
HEADER_SEARCH_PATHS = (
|
|
222
|
+
"$(inherited)",
|
|
223
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
224
|
+
"$(SRCROOT)/../../../React/**",
|
|
225
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
226
|
+
);
|
|
227
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
228
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
229
|
+
PRODUCT_NAME = PaxPoslink;
|
|
230
|
+
SKIP_INSTALL = YES;
|
|
231
|
+
};
|
|
232
|
+
name = Debug;
|
|
233
|
+
};
|
|
234
|
+
58B511F11A9E6C8500147676 /* Release */ = {
|
|
235
|
+
isa = XCBuildConfiguration;
|
|
236
|
+
buildSettings = {
|
|
237
|
+
HEADER_SEARCH_PATHS = (
|
|
238
|
+
"$(inherited)",
|
|
239
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
240
|
+
"$(SRCROOT)/../../../React/**",
|
|
241
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
242
|
+
);
|
|
243
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
244
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
245
|
+
PRODUCT_NAME = PaxPoslink;
|
|
246
|
+
SKIP_INSTALL = YES;
|
|
247
|
+
};
|
|
248
|
+
name = Release;
|
|
249
|
+
};
|
|
250
|
+
/* End XCBuildConfiguration section */
|
|
251
|
+
|
|
252
|
+
/* Begin XCConfigurationList section */
|
|
253
|
+
58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "PaxPoslink" */ = {
|
|
254
|
+
isa = XCConfigurationList;
|
|
255
|
+
buildConfigurations = (
|
|
256
|
+
58B511ED1A9E6C8500147676 /* Debug */,
|
|
257
|
+
58B511EE1A9E6C8500147676 /* Release */,
|
|
258
|
+
);
|
|
259
|
+
defaultConfigurationIsVisible = 0;
|
|
260
|
+
defaultConfigurationName = Release;
|
|
261
|
+
};
|
|
262
|
+
58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "PaxPoslink" */ = {
|
|
263
|
+
isa = XCConfigurationList;
|
|
264
|
+
buildConfigurations = (
|
|
265
|
+
58B511F01A9E6C8500147676 /* Debug */,
|
|
266
|
+
58B511F11A9E6C8500147676 /* Release */,
|
|
267
|
+
);
|
|
268
|
+
defaultConfigurationIsVisible = 0;
|
|
269
|
+
defaultConfigurationName = Release;
|
|
270
|
+
};
|
|
271
|
+
/* End XCConfigurationList section */
|
|
272
|
+
};
|
|
273
|
+
rootObject = 58B511D31A9E6C8500147676 /* Project object */;
|
|
274
|
+
}
|