@qore-id/react-native-qoreid-sdk 1.2.4 → 1.2.5

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.
@@ -82,7 +82,7 @@ class QoreidSdk: RCTEventEmitter {
82
82
  vc.onQoreIdResult = { [weak self] result in
83
83
  self?.onQoreIdResultReceived(result: result)
84
84
  }
85
- self.controller().pushViewController(vc, animated: false)
85
+ self.controller()?.pushViewController(vc, animated: false)
86
86
  }
87
87
  }
88
88
  }
@@ -91,10 +91,10 @@ class QoreidSdk: RCTEventEmitter {
91
91
  if let result = result {
92
92
  if let errorResult = result as? ErrorResult {
93
93
  self.sendEvent(withName: "onResult", body:["code": String(describing: errorResult.code), "data": self.parseData(errorResult.data), "message": errorResult.message, "event": "ERROR_RESULT"])
94
- self.controller().popViewController(animated: false)
94
+ self.controller()?.popViewController(animated: false)
95
95
  } else if let successResult = result as? SuccessResult {
96
96
  self.sendEvent(withName: "onResult", body:["data": self.parseData( successResult.data), "message": successResult.message!, "event": "SUCCESS_RESULT"])
97
- self.controller().popViewController(animated: false)
97
+ self.controller()?.popViewController(animated: false)
98
98
  } else if let pendingResult = result as? PendingResult {
99
99
  self.sendEvent(withName: "onResult", body:["data": pendingResult.data?.verification?.id! ?? 0, "message": pendingResult.message!, "event": "SESSION_RESULT"])
100
100
  }
@@ -137,9 +137,18 @@ class QoreidSdk: RCTEventEmitter {
137
137
  return false
138
138
  }
139
139
 
140
- private func controller() -> UINavigationController {
141
- let rootViewController = UIApplication.shared.keyWindow?.rootViewController
142
- return rootViewController as! UINavigationController
140
+ private func controller() -> UINavigationController? {
141
+ if #available(iOS 13.0, *) {
142
+ // iOS 13 and later
143
+ let scenes = UIApplication.shared.connectedScenes
144
+ let windowScene = scenes.first { $0.activationState == .foregroundActive } as? UIWindowScene
145
+ let window = windowScene?.windows.first { $0.isKeyWindow }
146
+ return (window?.rootViewController as! UINavigationController)
147
+ } else {
148
+ // iOS 12 and earlier
149
+ let window = UIApplication.shared.keyWindow
150
+ return (window?.rootViewController as! UINavigationController)
151
+ }
143
152
  }
144
153
  }
145
154
 
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _default = exports.default = _reactNative.TurboModuleRegistry.getEnforcing('QoreidSdk');
9
+ //# sourceMappingURL=QoreIDSDKSpec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["QoreIDSDKSpec.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMpCC,gCAAmB,CAACC,YAAY,CAAO,WAAW,CAAC","ignoreList":[]}
@@ -3,25 +3,25 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var _utils = require("./utils.js");
7
- Object.keys(_utils).forEach(function (key) {
6
+ var _qoreIdSdk = require("./qoreIdSdk.js");
7
+ Object.keys(_qoreIdSdk).forEach(function (key) {
8
8
  if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _utils[key]) return;
9
+ if (key in exports && exports[key] === _qoreIdSdk[key]) return;
10
10
  Object.defineProperty(exports, key, {
11
11
  enumerable: true,
12
12
  get: function () {
13
- return _utils[key];
13
+ return _qoreIdSdk[key];
14
14
  }
15
15
  });
16
16
  });
17
- var _qoreIdSdk = require("./qoreIdSdk.js");
18
- Object.keys(_qoreIdSdk).forEach(function (key) {
17
+ var _utils = require("./utils.js");
18
+ Object.keys(_utils).forEach(function (key) {
19
19
  if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _qoreIdSdk[key]) return;
20
+ if (key in exports && exports[key] === _utils[key]) return;
21
21
  Object.defineProperty(exports, key, {
22
22
  enumerable: true,
23
23
  get: function () {
24
- return _qoreIdSdk[key];
24
+ return _utils[key];
25
25
  }
26
26
  });
27
27
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_qoreIdSdk"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_qoreIdSdk","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_utils"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,MAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,MAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,MAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -7,51 +7,70 @@ exports.QoreIdSdk = void 0;
7
7
  exports.useQoreIdSdk = useQoreIdSdk;
8
8
  var _reactNative = require("react-native");
9
9
  var _react = require("react");
10
- const LINKING_ERROR = `The package '@qoreid/react-native-qoreid-sdk' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
11
- ios: "- You have run 'pod install'\n",
12
- default: ''
13
- }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
14
- const QoreidRNModule = _reactNative.NativeModules.QoreidSdk;
15
- const ReactNativeQoreidSdkModule = QoreidRNModule ?? new Proxy({}, {
16
- get() {
17
- throw new Error(LINKING_ERROR);
10
+ var _QoreIDSDKSpec = _interopRequireDefault(require("./QoreIDSDKSpec.js"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ /**
13
+ * @name validateLaunchData
14
+ * @description QoreIdSDK validation and launch module
15
+ * @module QoreIdSdk
16
+ * @requires QoreIdSdk native module installed
17
+ *
18
+ */
19
+ function validateLaunchData(data, module) {
20
+ // check that QoreIdSdk is installed
21
+ if (!module) {
22
+ throw new Error('QoreIdSdk native module is not installed');
18
23
  }
19
- });
24
+ if (!data) {
25
+ throw new Error('Data is required');
26
+ }
27
+ if (!data.customerReference) {
28
+ throw new Error('Customer reference is required');
29
+ }
30
+ if (!data.productCode && !data.flowId) {
31
+ throw new Error('Product code or flow ID is required');
32
+ }
33
+ if (!data.clientId) {
34
+ throw new Error('Client ID is required');
35
+ }
36
+ }
20
37
  const QoreIdSdk = exports.QoreIdSdk = {
21
38
  /**
22
39
  * lauches QoreID SDK
23
- * @param initialData - data to launch Qore ID SDK
40
+ * @param data - data to launch Qore ID SDK
24
41
  * @requires QoreIdSdk native module installed
25
42
  */
26
- launch(initialData) {
43
+ launch(data) {
44
+ // Validate the initial data
45
+ validateLaunchData(data, _QoreIDSDKSpec.default);
27
46
  const payload = {
28
47
  config: {
29
- flowId: initialData.flowId || 0,
30
- customerReference: initialData.customerReference,
31
- productCode: initialData.productCode,
32
- clientId: initialData.clientId,
33
- defaultIdType: initialData?.defaultIdType ?? ''
48
+ flowId: data.flowId || 0,
49
+ customerReference: data.customerReference,
50
+ productCode: data.productCode,
51
+ clientId: data.clientId,
52
+ defaultIdType: data?.defaultIdType ?? ''
34
53
  },
35
54
  applicantData: {
36
- ...initialData.applicantData
55
+ ...data.applicantData
37
56
  },
38
57
  addressData: {
39
- ...initialData.addressData
58
+ ...data.addressData
40
59
  },
41
- acceptedDocuments: initialData.ocrAcceptedDocuments,
60
+ acceptedDocuments: data?.ocrAcceptedDocuments ?? [],
42
61
  identityData: {
43
- ...initialData.identityData
62
+ ...data.identityData
44
63
  },
45
- extraData: initialData.extraData
64
+ extraData: data.extraData
46
65
  };
47
- ReactNativeQoreidSdkModule.launchQoreidSdk(payload);
66
+ _QoreIDSDKSpec.default.launchQoreidSdk(payload);
48
67
  },
49
68
  /**
50
69
  * QoreIdSdk events listener. It takes callbacks to handle success and error events
51
70
  * @param callback(data: OnResultType) Handles various events from QoreID SDK
52
71
  */
53
72
  events(callback) {
54
- const eventEmitter = _reactNative.Platform.OS === 'android' ? new _reactNative.NativeEventEmitter() : new _reactNative.NativeEventEmitter(ReactNativeQoreidSdkModule);
73
+ const eventEmitter = _reactNative.Platform.OS !== 'ios' ? new _reactNative.NativeEventEmitter() : new _reactNative.NativeEventEmitter(_reactNative.NativeModules.QoreidSdk);
55
74
  let eventListener = eventEmitter?.addListener('onResult', callback);
56
75
  return () => {
57
76
  eventListener.remove();
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_react","LINKING_ERROR","Platform","select","ios","default","QoreidRNModule","NativeModules","QoreidSdk","ReactNativeQoreidSdkModule","Proxy","get","Error","QoreIdSdk","exports","launch","initialData","payload","config","flowId","customerReference","productCode","clientId","defaultIdType","applicantData","addressData","acceptedDocuments","ocrAcceptedDocuments","identityData","extraData","launchQoreidSdk","events","callback","eventEmitter","OS","NativeEventEmitter","eventListener","addListener","remove","useQoreIdSdk","onResult","useEffect","unsubscribed","launchQoreId"],"sourceRoot":"../../src","sources":["qoreIdSdk.tsx"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,aAAa,GACjB,0FAA0F,GAC1FC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,cAAc,GAAGC,0BAAa,CAACC,SAAS;AAE9C,MAAMC,0BAA0B,GAC9BH,cAAc,IACd,IAAII,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACX,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEI,MAAMY,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACvB;AACF;AACA;AACA;AACA;EACEE,MAAMA,CAACC,WAAuB,EAAE;IAC9B,MAAMC,OAAO,GAAG;MACdC,MAAM,EAAE;QACNC,MAAM,EAAEH,WAAW,CAACG,MAAM,IAAI,CAAC;QAC/BC,iBAAiB,EAAEJ,WAAW,CAACI,iBAAiB;QAChDC,WAAW,EAAEL,WAAW,CAACK,WAAW;QACpCC,QAAQ,EAAEN,WAAW,CAACM,QAAQ;QAC9BC,aAAa,EAAEP,WAAW,EAAEO,aAAa,IAAI;MAC/C,CAAC;MACDC,aAAa,EAAE;QACb,GAAGR,WAAW,CAACQ;MACjB,CAAC;MACDC,WAAW,EAAE;QACX,GAAGT,WAAW,CAACS;MACjB,CAAC;MACDC,iBAAiB,EAAEV,WAAW,CAACW,oBAAoB;MACnDC,YAAY,EAAE;QAAE,GAAGZ,WAAW,CAACY;MAAa,CAAC;MAC7CC,SAAS,EAAEb,WAAW,CAACa;IACzB,CAAC;IACDpB,0BAA0B,CAACqB,eAAe,CAACb,OAAO,CAAC;EACrD,CAAC;EAED;AACF;AACA;AACA;EACEc,MAAMA,CAACC,QAAkC,EAAE;IACzC,MAAMC,YAAY,GAChB/B,qBAAQ,CAACgC,EAAE,KAAK,SAAS,GACrB,IAAIC,+BAAkB,CAAC,CAAC,GACxB,IAAIA,+BAAkB,CAAC1B,0BAA0B,CAAC;IACxD,IAAI2B,aAAa,GAAGH,YAAY,EAAEI,WAAW,CAAC,UAAU,EAAEL,QAAQ,CAAC;IAEnE,OAAO,MAAM;MACXI,aAAa,CAACE,MAAM,CAAC,CAAC;IACxB,CAAC;EACH;AACF,CAAC;AAEM,SAASC,YAAYA,CAAC;EAC3BC;AAGF,CAAC,EAAE;EACD,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,YAAY,GAAG7B,SAAS,CAACkB,MAAM,CAACS,QAAQ,CAAC;IAC/C,OAAO,MAAM;MACXE,YAAY,CAAC,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAACF,QAAQ,CAAC,CAAC;EAEd,OAAO;IAAEG,YAAY,EAAE9B,SAAS,CAACE;EAAO,CAAC;AAC3C","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_react","_QoreIDSDKSpec","_interopRequireDefault","e","__esModule","default","validateLaunchData","data","module","Error","customerReference","productCode","flowId","clientId","QoreIdSdk","exports","launch","QoreIDSDKSpec","payload","config","defaultIdType","applicantData","addressData","acceptedDocuments","ocrAcceptedDocuments","identityData","extraData","launchQoreidSdk","events","callback","eventEmitter","Platform","OS","NativeEventEmitter","NativeModules","QoreidSdk","eventListener","addListener","remove","useQoreIdSdk","onResult","useEffect","unsubscribed","launchQoreId"],"sourceRoot":"../../src","sources":["qoreIdSdk.tsx"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAC,sBAAA,CAAAH,OAAA;AAA4C,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,kBAAkBA,CAACC,IAAgB,EAAEC,MAAW,EAAE;EACzD;EACA,IAAI,CAACA,MAAM,EAAE;IACX,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;EAC7D;EAEA,IAAI,CAACF,IAAI,EAAE;IACT,MAAM,IAAIE,KAAK,CAAC,kBAAkB,CAAC;EACrC;EAEA,IAAI,CAACF,IAAI,CAACG,iBAAiB,EAAE;IAC3B,MAAM,IAAID,KAAK,CAAC,gCAAgC,CAAC;EACnD;EAEA,IAAI,CAACF,IAAI,CAACI,WAAW,IAAI,CAACJ,IAAI,CAACK,MAAM,EAAE;IACrC,MAAM,IAAIH,KAAK,CAAC,qCAAqC,CAAC;EACxD;EAEA,IAAI,CAACF,IAAI,CAACM,QAAQ,EAAE;IAClB,MAAM,IAAIJ,KAAK,CAAC,uBAAuB,CAAC;EAC1C;AACF;AAEO,MAAMK,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACvB;AACF;AACA;AACA;AACA;EACEE,MAAMA,CAACT,IAAgB,EAAE;IACvB;IACAD,kBAAkB,CAACC,IAAI,EAAEU,sBAAa,CAAC;IAEvC,MAAMC,OAAO,GAAG;MACdC,MAAM,EAAE;QACNP,MAAM,EAAEL,IAAI,CAACK,MAAM,IAAI,CAAC;QACxBF,iBAAiB,EAAEH,IAAI,CAACG,iBAAiB;QACzCC,WAAW,EAAEJ,IAAI,CAACI,WAAW;QAC7BE,QAAQ,EAAEN,IAAI,CAACM,QAAQ;QACvBO,aAAa,EAAEb,IAAI,EAAEa,aAAa,IAAI;MACxC,CAAC;MACDC,aAAa,EAAE;QACb,GAAGd,IAAI,CAACc;MACV,CAAC;MACDC,WAAW,EAAE;QACX,GAAGf,IAAI,CAACe;MACV,CAAC;MACDC,iBAAiB,EAAEhB,IAAI,EAAEiB,oBAAoB,IAAI,EAAE;MACnDC,YAAY,EAAE;QAAE,GAAGlB,IAAI,CAACkB;MAAa,CAAC;MACtCC,SAAS,EAAEnB,IAAI,CAACmB;IAClB,CAAC;IACDT,sBAAa,CAACU,eAAe,CAACT,OAAO,CAAC;EACxC,CAAC;EAED;AACF;AACA;AACA;EACEU,MAAMA,CAACC,QAAkC,EAAE;IACzC,MAAMC,YAAY,GAChBC,qBAAQ,CAACC,EAAE,KAAK,KAAK,GACjB,IAAIC,+BAAkB,CAAC,CAAC,GACxB,IAAIA,+BAAkB,CAACC,0BAAa,CAACC,SAAS,CAAC;IACrD,IAAIC,aAAa,GAAGN,YAAY,EAAEO,WAAW,CAAC,UAAU,EAAER,QAAQ,CAAC;IAEnE,OAAO,MAAM;MACXO,aAAa,CAACE,MAAM,CAAC,CAAC;IACxB,CAAC;EACH;AACF,CAAC;AAEM,SAASC,YAAYA,CAAC;EAC3BC;AAGF,CAAC,EAAE;EACD,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,YAAY,GAAG5B,SAAS,CAACc,MAAM,CAACY,QAAQ,CAAC;IAC/C,OAAO,MAAM;MACXE,YAAY,CAAC,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAACF,QAAQ,CAAC,CAAC;EAEd,OAAO;IAAEG,YAAY,EAAE7B,SAAS,CAACE;EAAO,CAAC;AAC3C","ignoreList":[]}
@@ -1,2 +1,13 @@
1
1
  "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "utils", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _utils.utils;
10
+ }
11
+ });
12
+ var _utils = require("./utils.js");
2
13
  //# sourceMappingURL=types.d.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.d.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":["_utils","require"],"sourceRoot":"../../src","sources":["types.d.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["acceptedDocuments","Nigeria","Ghana","Kenya","productCodes","utils","exports"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":";;;;;;AAAA,MAAMA,iBAAiB,GAAG;EACxBC,OAAO,EAAE,CACP,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,cAAc,CACf;EACDC,KAAK,EAAE,CACL,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,CACjB;EACDC,KAAK,EAAE,CACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc;AAElB,CAAC;AAED,MAAMC,YAAY,GAAG,CACnB,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mCAAmC,EACnC,uBAAuB,EACvB,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,0BAA0B,EAC1B,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,KAAK;AACL;AACA,UAAU,EACV,aAAa,EACb,KAAK,EACL,aAAa,CACd;AAEM,MAAMC,KAAK,GAAAC,OAAA,CAAAD,KAAA,GAAG;EACnBD,YAAY;EACZJ;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["acceptedDocuments","Nigeria","Ghana","Kenya","productCodes","utils","exports"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":";;;;;;AAAA,MAAMA,iBAAiB,GAAG;EACxBC,OAAO,EAAE,CACP,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,cAAc,CACN;EACVC,KAAK,EAAE,CACL,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,CACR;EACVC,KAAK,EAAE,CACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc;AAElB,CAAU;AAEV,MAAMC,YAAY,GAAG,CACnB,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mCAAmC,EACnC,uBAAuB,EACvB,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,0BAA0B,EAC1B,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,KAAK;AACL;AACA,UAAU,EACV,aAAa,EACb,KAAK,EACL,aAAa,CACL;AAEH,MAAMC,KAAK,GAAAC,OAAA,CAAAD,KAAA,GAAG;EACnBD,YAAY;EACZJ;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ export default TurboModuleRegistry.getEnforcing('QoreidSdk');
5
+ //# sourceMappingURL=QoreIDSDKSpec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["QoreIDSDKSpec.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAMlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,WAAW,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
 
3
- export * from "./utils.js";
4
3
  export * from "./qoreIdSdk.js";
4
+ export * from "./utils.js";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,cAAc,YAAS;AACvB,cAAc,gBAAa","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,cAAc,gBAAa;AAC3B,cAAc,YAAS","ignoreList":[]}
@@ -2,51 +2,69 @@
2
2
 
3
3
  import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
4
4
  import { useEffect } from 'react';
5
- const LINKING_ERROR = `The package '@qoreid/react-native-qoreid-sdk' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
6
- ios: "- You have run 'pod install'\n",
7
- default: ''
8
- }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
9
- const QoreidRNModule = NativeModules.QoreidSdk;
10
- const ReactNativeQoreidSdkModule = QoreidRNModule ?? new Proxy({}, {
11
- get() {
12
- throw new Error(LINKING_ERROR);
5
+ import QoreIDSDKSpec from "./QoreIDSDKSpec.js";
6
+ /**
7
+ * @name validateLaunchData
8
+ * @description QoreIdSDK validation and launch module
9
+ * @module QoreIdSdk
10
+ * @requires QoreIdSdk native module installed
11
+ *
12
+ */
13
+ function validateLaunchData(data, module) {
14
+ // check that QoreIdSdk is installed
15
+ if (!module) {
16
+ throw new Error('QoreIdSdk native module is not installed');
13
17
  }
14
- });
18
+ if (!data) {
19
+ throw new Error('Data is required');
20
+ }
21
+ if (!data.customerReference) {
22
+ throw new Error('Customer reference is required');
23
+ }
24
+ if (!data.productCode && !data.flowId) {
25
+ throw new Error('Product code or flow ID is required');
26
+ }
27
+ if (!data.clientId) {
28
+ throw new Error('Client ID is required');
29
+ }
30
+ }
15
31
  export const QoreIdSdk = {
16
32
  /**
17
33
  * lauches QoreID SDK
18
- * @param initialData - data to launch Qore ID SDK
34
+ * @param data - data to launch Qore ID SDK
19
35
  * @requires QoreIdSdk native module installed
20
36
  */
21
- launch(initialData) {
37
+ launch(data) {
38
+ // Validate the initial data
39
+ validateLaunchData(data, QoreIDSDKSpec);
22
40
  const payload = {
23
41
  config: {
24
- flowId: initialData.flowId || 0,
25
- customerReference: initialData.customerReference,
26
- productCode: initialData.productCode,
27
- clientId: initialData.clientId,
28
- defaultIdType: initialData?.defaultIdType ?? ''
42
+ flowId: data.flowId || 0,
43
+ customerReference: data.customerReference,
44
+ productCode: data.productCode,
45
+ clientId: data.clientId,
46
+ defaultIdType: data?.defaultIdType ?? ''
29
47
  },
30
48
  applicantData: {
31
- ...initialData.applicantData
49
+ ...data.applicantData
32
50
  },
33
51
  addressData: {
34
- ...initialData.addressData
52
+ ...data.addressData
35
53
  },
36
- acceptedDocuments: initialData.ocrAcceptedDocuments,
54
+ acceptedDocuments: data?.ocrAcceptedDocuments ?? [],
37
55
  identityData: {
38
- ...initialData.identityData
56
+ ...data.identityData
39
57
  },
40
- extraData: initialData.extraData
58
+ extraData: data.extraData
41
59
  };
42
- ReactNativeQoreidSdkModule.launchQoreidSdk(payload);
60
+ QoreIDSDKSpec.launchQoreidSdk(payload);
43
61
  },
44
62
  /**
45
63
  * QoreIdSdk events listener. It takes callbacks to handle success and error events
46
64
  * @param callback(data: OnResultType) Handles various events from QoreID SDK
47
65
  */
48
66
  events(callback) {
49
- const eventEmitter = Platform.OS === 'android' ? new NativeEventEmitter() : new NativeEventEmitter(ReactNativeQoreidSdkModule);
67
+ const eventEmitter = Platform.OS !== 'ios' ? new NativeEventEmitter() : new NativeEventEmitter(NativeModules.QoreidSdk);
50
68
  let eventListener = eventEmitter?.addListener('onResult', callback);
51
69
  return () => {
52
70
  eventListener.remove();
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","NativeModules","Platform","useEffect","LINKING_ERROR","select","ios","default","QoreidRNModule","QoreidSdk","ReactNativeQoreidSdkModule","Proxy","get","Error","QoreIdSdk","launch","initialData","payload","config","flowId","customerReference","productCode","clientId","defaultIdType","applicantData","addressData","acceptedDocuments","ocrAcceptedDocuments","identityData","extraData","launchQoreidSdk","events","callback","eventEmitter","OS","eventListener","addListener","remove","useQoreIdSdk","onResult","unsubscribed","launchQoreId"],"sourceRoot":"../../src","sources":["qoreIdSdk.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAE1E,SAASC,SAAS,QAAQ,OAAO;AAEjC,MAAMC,aAAa,GACjB,0FAA0F,GAC1FF,QAAQ,CAACG,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,cAAc,GAAGP,aAAa,CAACQ,SAAS;AAE9C,MAAMC,0BAA0B,GAC9BF,cAAc,IACd,IAAIG,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEH,OAAO,MAAMU,SAAS,GAAG;EACvB;AACF;AACA;AACA;AACA;EACEC,MAAMA,CAACC,WAAuB,EAAE;IAC9B,MAAMC,OAAO,GAAG;MACdC,MAAM,EAAE;QACNC,MAAM,EAAEH,WAAW,CAACG,MAAM,IAAI,CAAC;QAC/BC,iBAAiB,EAAEJ,WAAW,CAACI,iBAAiB;QAChDC,WAAW,EAAEL,WAAW,CAACK,WAAW;QACpCC,QAAQ,EAAEN,WAAW,CAACM,QAAQ;QAC9BC,aAAa,EAAEP,WAAW,EAAEO,aAAa,IAAI;MAC/C,CAAC;MACDC,aAAa,EAAE;QACb,GAAGR,WAAW,CAACQ;MACjB,CAAC;MACDC,WAAW,EAAE;QACX,GAAGT,WAAW,CAACS;MACjB,CAAC;MACDC,iBAAiB,EAAEV,WAAW,CAACW,oBAAoB;MACnDC,YAAY,EAAE;QAAE,GAAGZ,WAAW,CAACY;MAAa,CAAC;MAC7CC,SAAS,EAAEb,WAAW,CAACa;IACzB,CAAC;IACDnB,0BAA0B,CAACoB,eAAe,CAACb,OAAO,CAAC;EACrD,CAAC;EAED;AACF;AACA;AACA;EACEc,MAAMA,CAACC,QAAkC,EAAE;IACzC,MAAMC,YAAY,GAChB/B,QAAQ,CAACgC,EAAE,KAAK,SAAS,GACrB,IAAIlC,kBAAkB,CAAC,CAAC,GACxB,IAAIA,kBAAkB,CAACU,0BAA0B,CAAC;IACxD,IAAIyB,aAAa,GAAGF,YAAY,EAAEG,WAAW,CAAC,UAAU,EAAEJ,QAAQ,CAAC;IAEnE,OAAO,MAAM;MACXG,aAAa,CAACE,MAAM,CAAC,CAAC;IACxB,CAAC;EACH;AACF,CAAC;AAED,OAAO,SAASC,YAAYA,CAAC;EAC3BC;AAGF,CAAC,EAAE;EACDpC,SAAS,CAAC,MAAM;IACd,MAAMqC,YAAY,GAAG1B,SAAS,CAACiB,MAAM,CAACQ,QAAQ,CAAC;IAC/C,OAAO,MAAM;MACXC,YAAY,CAAC,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAACD,QAAQ,CAAC,CAAC;EAEd,OAAO;IAAEE,YAAY,EAAE3B,SAAS,CAACC;EAAO,CAAC;AAC3C","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","NativeModules","Platform","useEffect","QoreIDSDKSpec","validateLaunchData","data","module","Error","customerReference","productCode","flowId","clientId","QoreIdSdk","launch","payload","config","defaultIdType","applicantData","addressData","acceptedDocuments","ocrAcceptedDocuments","identityData","extraData","launchQoreidSdk","events","callback","eventEmitter","OS","QoreidSdk","eventListener","addListener","remove","useQoreIdSdk","onResult","unsubscribed","launchQoreId"],"sourceRoot":"../../src","sources":["qoreIdSdk.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAC1E,SAASC,SAAS,QAAQ,OAAO;AAEjC,OAAOC,aAAa,MAAM,oBAAiB;AAG3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CAACC,IAAgB,EAAEC,MAAW,EAAE;EACzD;EACA,IAAI,CAACA,MAAM,EAAE;IACX,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;EAC7D;EAEA,IAAI,CAACF,IAAI,EAAE;IACT,MAAM,IAAIE,KAAK,CAAC,kBAAkB,CAAC;EACrC;EAEA,IAAI,CAACF,IAAI,CAACG,iBAAiB,EAAE;IAC3B,MAAM,IAAID,KAAK,CAAC,gCAAgC,CAAC;EACnD;EAEA,IAAI,CAACF,IAAI,CAACI,WAAW,IAAI,CAACJ,IAAI,CAACK,MAAM,EAAE;IACrC,MAAM,IAAIH,KAAK,CAAC,qCAAqC,CAAC;EACxD;EAEA,IAAI,CAACF,IAAI,CAACM,QAAQ,EAAE;IAClB,MAAM,IAAIJ,KAAK,CAAC,uBAAuB,CAAC;EAC1C;AACF;AAEA,OAAO,MAAMK,SAAS,GAAG;EACvB;AACF;AACA;AACA;AACA;EACEC,MAAMA,CAACR,IAAgB,EAAE;IACvB;IACAD,kBAAkB,CAACC,IAAI,EAAEF,aAAa,CAAC;IAEvC,MAAMW,OAAO,GAAG;MACdC,MAAM,EAAE;QACNL,MAAM,EAAEL,IAAI,CAACK,MAAM,IAAI,CAAC;QACxBF,iBAAiB,EAAEH,IAAI,CAACG,iBAAiB;QACzCC,WAAW,EAAEJ,IAAI,CAACI,WAAW;QAC7BE,QAAQ,EAAEN,IAAI,CAACM,QAAQ;QACvBK,aAAa,EAAEX,IAAI,EAAEW,aAAa,IAAI;MACxC,CAAC;MACDC,aAAa,EAAE;QACb,GAAGZ,IAAI,CAACY;MACV,CAAC;MACDC,WAAW,EAAE;QACX,GAAGb,IAAI,CAACa;MACV,CAAC;MACDC,iBAAiB,EAAEd,IAAI,EAAEe,oBAAoB,IAAI,EAAE;MACnDC,YAAY,EAAE;QAAE,GAAGhB,IAAI,CAACgB;MAAa,CAAC;MACtCC,SAAS,EAAEjB,IAAI,CAACiB;IAClB,CAAC;IACDnB,aAAa,CAACoB,eAAe,CAACT,OAAO,CAAC;EACxC,CAAC;EAED;AACF;AACA;AACA;EACEU,MAAMA,CAACC,QAAkC,EAAE;IACzC,MAAMC,YAAY,GAChBzB,QAAQ,CAAC0B,EAAE,KAAK,KAAK,GACjB,IAAI5B,kBAAkB,CAAC,CAAC,GACxB,IAAIA,kBAAkB,CAACC,aAAa,CAAC4B,SAAS,CAAC;IACrD,IAAIC,aAAa,GAAGH,YAAY,EAAEI,WAAW,CAAC,UAAU,EAAEL,QAAQ,CAAC;IAEnE,OAAO,MAAM;MACXI,aAAa,CAACE,MAAM,CAAC,CAAC;IACxB,CAAC;EACH;AACF,CAAC;AAED,OAAO,SAASC,YAAYA,CAAC;EAC3BC;AAGF,CAAC,EAAE;EACD/B,SAAS,CAAC,MAAM;IACd,MAAMgC,YAAY,GAAGtB,SAAS,CAACY,MAAM,CAACS,QAAQ,CAAC;IAC/C,OAAO,MAAM;MACXC,YAAY,CAAC,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAACD,QAAQ,CAAC,CAAC;EAEd,OAAO;IAAEE,YAAY,EAAEvB,SAAS,CAACC;EAAO,CAAC;AAC3C","ignoreList":[]}
@@ -1,2 +1,4 @@
1
1
  "use strict";
2
+
3
+ export { utils } from "./utils.js";
2
4
  //# sourceMappingURL=types.d.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.d.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":["utils"],"sourceRoot":"../../src","sources":["types.d.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,YAAS","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["acceptedDocuments","Nigeria","Ghana","Kenya","productCodes","utils"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":";;AAAA,MAAMA,iBAAiB,GAAG;EACxBC,OAAO,EAAE,CACP,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,cAAc,CACf;EACDC,KAAK,EAAE,CACL,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,CACjB;EACDC,KAAK,EAAE,CACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc;AAElB,CAAC;AAED,MAAMC,YAAY,GAAG,CACnB,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mCAAmC,EACnC,uBAAuB,EACvB,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,0BAA0B,EAC1B,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,KAAK;AACL;AACA,UAAU,EACV,aAAa,EACb,KAAK,EACL,aAAa,CACd;AAED,OAAO,MAAMC,KAAK,GAAG;EACnBD,YAAY;EACZJ;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["acceptedDocuments","Nigeria","Ghana","Kenya","productCodes","utils"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":";;AAAA,MAAMA,iBAAiB,GAAG;EACxBC,OAAO,EAAE,CACP,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,cAAc,CACN;EACVC,KAAK,EAAE,CACL,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,CACR;EACVC,KAAK,EAAE,CACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc;AAElB,CAAU;AAEV,MAAMC,YAAY,GAAG,CACnB,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mCAAmC,EACnC,uBAAuB,EACvB,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,0BAA0B,EAC1B,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,KAAK;AACL;AACA,UAAU,EACV,aAAa,EACb,KAAK,EACL,aAAa,CACL;AAEV,OAAO,MAAMC,KAAK,GAAG;EACnBD,YAAY;EACZJ;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { TurboModule } from 'react-native';
2
+ export interface Spec extends TurboModule {
3
+ launchQoreidSdk: (arg: Record<string, unknown>) => void;
4
+ }
5
+ declare const _default: Spec;
6
+ export default _default;
7
+ //# sourceMappingURL=QoreIDSDKSpec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QoreIDSDKSpec.d.ts","sourceRoot":"","sources":["../../../src/QoreIDSDKSpec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACzD;;AAED,wBAAmE"}
@@ -1,4 +1,3 @@
1
- export * from './utils';
2
1
  export * from './qoreIdSdk';
3
- export type { QoreIdData, OnResult } from './types';
2
+ export * from './utils';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -2,10 +2,10 @@ import type { OnResult, QoreIdData } from './types';
2
2
  export declare const QoreIdSdk: {
3
3
  /**
4
4
  * lauches QoreID SDK
5
- * @param initialData - data to launch Qore ID SDK
5
+ * @param data - data to launch Qore ID SDK
6
6
  * @requires QoreIdSdk native module installed
7
7
  */
8
- launch(initialData: QoreIdData): void;
8
+ launch(data: QoreIdData): void;
9
9
  /**
10
10
  * QoreIdSdk events listener. It takes callbacks to handle success and error events
11
11
  * @param callback(data: OnResultType) Handles various events from QoreID SDK
@@ -15,6 +15,6 @@ export declare const QoreIdSdk: {
15
15
  export declare function useQoreIdSdk({ onResult, }: {
16
16
  onResult: (data: OnResult) => void;
17
17
  }): {
18
- launchQoreId: (initialData: QoreIdData) => void;
18
+ launchQoreId: (data: QoreIdData) => void;
19
19
  };
20
20
  //# sourceMappingURL=qoreIdSdk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qoreIdSdk.d.ts","sourceRoot":"","sources":["../../../src/qoreIdSdk.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAsBpD,eAAO,MAAM,SAAS;IACpB;;;;OAIG;wBACiB,UAAU;IAsB9B;;;OAGG;qBACc,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI;CAW1C,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CACpC;gCA3CqB,UAAU;EAoD/B"}
1
+ {"version":3,"file":"qoreIdSdk.d.ts","sourceRoot":"","sources":["../../../src/qoreIdSdk.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAgCpD,eAAO,MAAM,SAAS;IACpB;;;;OAIG;iBACU,UAAU;IAyBvB;;;OAGG;qBACc,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI;CAW1C,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CACpC;yBA9Cc,UAAU;EAuDxB"}
@@ -1,9 +1,9 @@
1
1
  export declare const utils: {
2
- productCodes: string[];
2
+ productCodes: readonly ["alien_card", "brs", "business_address", "bvn_basic", "bvn_boolean", "bvn_nuban", "bvn_premium", "cac_basic", "cac_premium", "drivers_license", "employment", "guarantor", "face_verification_bvn", "face_verification_drivers_license", "face_verification_nin", "face_verification_passport_ng", "face_verification_passport_ke", "face_verification_vnin", "individual_address", "kenya_id", "license_plate_basic", "license_plate_premium", "liveness", "liveness_bvn", "liveness_drivers_license", "liveness_nin", "liveness_ocr", "liveness_passport_ng", "liveness_vnin", "nin", "nin_phone", "nuban", "ocr", "passport_ng", "passport_ke", "property", "tin", "verifind", "verifind_4d", "vin", "virtual_nin"];
3
3
  acceptedDocuments: {
4
- Nigeria: string[];
5
- Ghana: string[];
6
- Kenya: string[];
4
+ readonly Nigeria: readonly ["DRIVERS_LICENSE_NGA", "VOTERS_CARD_NGA", "NIN_SLIP_NGA", "PASSPORT_NGA"];
5
+ readonly Ghana: readonly ["DRIVERS_LICENSE_GHA", "NHIS_CARD_GHA", "ECOWAS_CARD_GHA", "SOCIAL_SECURITY_GHA", "VOTERS_CARD_GHA", "PASSPORT_GHA", "GHANA_CARD_GHA"];
6
+ readonly Kenya: readonly ["DRIVERS_LICENSE_KEN", "NATIONAL_ID_KEN", "REFUGEE_ID_KEN", "PASSPORT_KEN"];
7
7
  };
8
8
  };
9
9
  //# sourceMappingURL=utils.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qore-id/react-native-qoreid-sdk",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "description": "QoreId React Native SDK",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
@@ -65,6 +65,8 @@
65
65
  "@react-native-community/cli": "15.0.0",
66
66
  "@react-native/eslint-config": "^0.73.1",
67
67
  "@release-it/conventional-changelog": "^5.0.0",
68
+ "@testing-library/react-hooks": "^8.0.1",
69
+ "@testing-library/react-native": "^13.2.2",
68
70
  "@types/jest": "^29.5.5",
69
71
  "@types/react": "^18.2.44",
70
72
  "commitlint": "^17.0.2",
@@ -77,6 +79,7 @@
77
79
  "react": "18.3.1",
78
80
  "react-native": "0.76.1",
79
81
  "react-native-builder-bob": "^0.30.3",
82
+ "react-test-renderer": "18.3.1",
80
83
  "release-it": "^15.0.0",
81
84
  "turbo": "^1.10.7",
82
85
  "typescript": "^5.2.2"
@@ -176,6 +179,14 @@
176
179
  ]
177
180
  ]
178
181
  },
182
+ "codegenConfig": {
183
+ "name": "qoreid-react-native-sdk",
184
+ "type": "modules",
185
+ "jsSrcsDir": "src",
186
+ "android": {
187
+ "javaPackageName": "com.qoreidsdk"
188
+ }
189
+ },
179
190
  "create-react-native-library": {
180
191
  "type": "module-legacy",
181
192
  "languages": "kotlin-swift",
@@ -0,0 +1,8 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+
4
+ export interface Spec extends TurboModule {
5
+ launchQoreidSdk: (arg: Record<string, unknown>) => void;
6
+ }
7
+
8
+ export default TurboModuleRegistry.getEnforcing<Spec>('QoreidSdk');
package/src/index.tsx CHANGED
@@ -1,3 +1,2 @@
1
- export * from './utils';
2
1
  export * from './qoreIdSdk';
3
- export type { QoreIdData, OnResult } from './types';
2
+ export * from './utils';
package/src/qoreIdSdk.tsx CHANGED
@@ -1,52 +1,68 @@
1
1
  import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
2
- import type { OnResult, QoreIdData } from './types';
3
2
  import { useEffect } from 'react';
4
3
 
5
- const LINKING_ERROR =
6
- `The package '@qoreid/react-native-qoreid-sdk' doesn't seem to be linked. Make sure: \n\n` +
7
- Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
8
- '- You rebuilt the app after installing the package\n' +
9
- '- You are not using Expo Go\n';
4
+ import QoreIDSDKSpec from './QoreIDSDKSpec';
5
+ import type { OnResult, QoreIdData } from './types';
6
+
7
+ /**
8
+ * @name validateLaunchData
9
+ * @description QoreIdSDK validation and launch module
10
+ * @module QoreIdSdk
11
+ * @requires QoreIdSdk native module installed
12
+ *
13
+ */
14
+ function validateLaunchData(data: QoreIdData, module: any) {
15
+ // check that QoreIdSdk is installed
16
+ if (!module) {
17
+ throw new Error('QoreIdSdk native module is not installed');
18
+ }
10
19
 
11
- const QoreidRNModule = NativeModules.QoreidSdk;
20
+ if (!data) {
21
+ throw new Error('Data is required');
22
+ }
12
23
 
13
- const ReactNativeQoreidSdkModule =
14
- QoreidRNModule ??
15
- new Proxy(
16
- {},
17
- {
18
- get() {
19
- throw new Error(LINKING_ERROR);
20
- },
21
- }
22
- );
24
+ if (!data.customerReference) {
25
+ throw new Error('Customer reference is required');
26
+ }
27
+
28
+ if (!data.productCode && !data.flowId) {
29
+ throw new Error('Product code or flow ID is required');
30
+ }
31
+
32
+ if (!data.clientId) {
33
+ throw new Error('Client ID is required');
34
+ }
35
+ }
23
36
 
24
37
  export const QoreIdSdk = {
25
38
  /**
26
39
  * lauches QoreID SDK
27
- * @param initialData - data to launch Qore ID SDK
40
+ * @param data - data to launch Qore ID SDK
28
41
  * @requires QoreIdSdk native module installed
29
42
  */
30
- launch(initialData: QoreIdData) {
43
+ launch(data: QoreIdData) {
44
+ // Validate the initial data
45
+ validateLaunchData(data, QoreIDSDKSpec);
46
+
31
47
  const payload = {
32
48
  config: {
33
- flowId: initialData.flowId || 0,
34
- customerReference: initialData.customerReference,
35
- productCode: initialData.productCode,
36
- clientId: initialData.clientId,
37
- defaultIdType: initialData?.defaultIdType ?? '',
49
+ flowId: data.flowId || 0,
50
+ customerReference: data.customerReference,
51
+ productCode: data.productCode,
52
+ clientId: data.clientId,
53
+ defaultIdType: data?.defaultIdType ?? '',
38
54
  },
39
55
  applicantData: {
40
- ...initialData.applicantData,
56
+ ...data.applicantData,
41
57
  },
42
58
  addressData: {
43
- ...initialData.addressData,
59
+ ...data.addressData,
44
60
  },
45
- acceptedDocuments: initialData.ocrAcceptedDocuments,
46
- identityData: { ...initialData.identityData },
47
- extraData: initialData.extraData,
61
+ acceptedDocuments: data?.ocrAcceptedDocuments ?? [],
62
+ identityData: { ...data.identityData },
63
+ extraData: data.extraData,
48
64
  };
49
- ReactNativeQoreidSdkModule.launchQoreidSdk(payload);
65
+ QoreIDSDKSpec.launchQoreidSdk(payload);
50
66
  },
51
67
 
52
68
  /**
@@ -55,9 +71,9 @@ export const QoreIdSdk = {
55
71
  */
56
72
  events(callback: (data: OnResult) => void) {
57
73
  const eventEmitter =
58
- Platform.OS === 'android'
74
+ Platform.OS !== 'ios'
59
75
  ? new NativeEventEmitter()
60
- : new NativeEventEmitter(ReactNativeQoreidSdkModule);
76
+ : new NativeEventEmitter(NativeModules.QoreidSdk);
61
77
  let eventListener = eventEmitter?.addListener('onResult', callback);
62
78
 
63
79
  return () => {
package/src/types.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export { utils } from './utils';
2
+
1
3
  export interface QoreIdData {
2
4
  flowId?: number;
3
5
  customerReference: string;
@@ -6,7 +8,7 @@ export interface QoreIdData {
6
8
  defaultIdType?: string;
7
9
  applicantData?: ApplicantData;
8
10
  addressData?: AddressData;
9
- ocrAcceptedDocuments: string[];
11
+ ocrAcceptedDocuments?: string[];
10
12
  identityData?: IdentityData;
11
13
  /** extra property is only usable for internal use only */
12
14
  extraData?: {
@@ -67,8 +69,7 @@ export function useQoreIdSdk({
67
69
  }: {
68
70
  onResult: (data: OnResult) => void;
69
71
  }): {
70
- launchQoreId: (
71
- initialData: QoreIdData,
72
- _callback?: (data: OnResult) => void
73
- ) => void;
72
+ launchQoreId: (initialData: QoreIdData) => void;
74
73
  };
74
+
75
+ export type Utils = typeof utils;
package/src/utils.ts CHANGED
@@ -4,7 +4,7 @@ const acceptedDocuments = {
4
4
  'VOTERS_CARD_NGA',
5
5
  'NIN_SLIP_NGA',
6
6
  'PASSPORT_NGA',
7
- ],
7
+ ] as const,
8
8
  Ghana: [
9
9
  'DRIVERS_LICENSE_GHA',
10
10
  'NHIS_CARD_GHA',
@@ -13,14 +13,14 @@ const acceptedDocuments = {
13
13
  'VOTERS_CARD_GHA',
14
14
  'PASSPORT_GHA',
15
15
  'GHANA_CARD_GHA',
16
- ],
16
+ ] as const,
17
17
  Kenya: [
18
18
  'DRIVERS_LICENSE_KEN',
19
19
  'NATIONAL_ID_KEN',
20
20
  'REFUGEE_ID_KEN',
21
21
  'PASSPORT_KEN',
22
- ],
23
- };
22
+ ] as const,
23
+ } as const;
24
24
 
25
25
  const productCodes = [
26
26
  'alien_card',
@@ -65,7 +65,7 @@ const productCodes = [
65
65
  'verifind_4d',
66
66
  'vin',
67
67
  'virtual_nin',
68
- ];
68
+ ] as const;
69
69
 
70
70
  export const utils = {
71
71
  productCodes,