@tap-payments/auth-jsconnect 2.12.6-development → 2.12.8-development

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 CHANGED
@@ -20,12 +20,17 @@ yarn add @tap-payments/auth-jsconnect
20
20
 
21
21
  ## Features
22
22
 
23
- - [Connect](#Connect)
24
- - [Business](#Business)
25
- - [Password](#Password)
26
- - [Individual](#Individual)
27
- - [Bank](#Bank)
28
- - [Tax](#Tax)
23
+ - [Connect](#Connect) - Create a new account with Tap Payments
24
+ - [ConnectExpress](#ConnectExpress) - Simplified connect flow
25
+ - [Business](#Business) - Business entity onboarding and verification
26
+ - [Individual](#Individual) - Individual entity onboarding and verification
27
+ - [Entity](#Entity) - Entity management and verification
28
+ - [Password](#Password) - Password management and recovery
29
+ - [Bank](#Bank) - Bank account management
30
+ - [Tax](#Tax) - Tax information management
31
+ - [Terminal](#Terminal) - Terminal kit for point-of-sale operations
32
+ - [Auth](#Auth) - Authentication module
33
+ - [KYC](#KYC) - Know Your Customer verification
29
34
 
30
35
  ## Examples
31
36
 
@@ -135,17 +140,48 @@ const App = () => {
135
140
  ```
136
141
 
137
142
  ## Connect
138
- - Help our merchants to create a account with Tap Payments
143
+ - Help merchants create an account with Tap Payments
139
144
 
140
- ## Business
145
+ ## ConnectExpress
146
+ - Streamlined onboarding flow with simplified user experience
141
147
 
142
- ## Password
148
+ ## Business
149
+ - Business entity registration and verification
150
+ - License number validation
151
+ - Support for creating new sessions after expiry
143
152
 
144
153
  ## Individual
154
+ - Individual entity registration and verification
155
+ - Arabic name validation (English names only accepted)
156
+ - Support for creating new sessions after expiry
157
+
158
+ ## Entity
159
+ - Entity information management
160
+ - Frontend-editable fields even when non-editable from backend
161
+ - Entity verification workflows
162
+
163
+ ## Password
164
+ - Password management and recovery
165
+ - Session expiry handling with new session creation support
145
166
 
146
167
  ## Bank
168
+ - Bank account information management and verification
147
169
 
148
170
  ## Tax
171
+ - Tax identification and information management
172
+ - Support for creating new sessions after expiry
173
+ - UNN Collection logic improvements
174
+
175
+ ## Terminal
176
+ - Point-of-sale terminal operations
177
+ - Session expiry management with new session creation support
178
+ - Hotfix for improved session handling
179
+
180
+ ## Auth
181
+ - Core authentication module for the library
182
+
183
+ ## KYC
184
+ - Know Your Customer verification processes
149
185
 
150
186
  ```
151
187
 
@@ -164,4 +200,18 @@ const App = () => {
164
200
  | onFlowCompleted `required` - `function` | callback function will called after completing the flow |
165
201
  | onReady `required` - `function` | callback function will call after loading library configuration |
166
202
  | onStepError `required` - `function` | callback function will call in case if any error happened in the screen |
167
- | onStepStarted `required` - `function` | callback function will call in the begging of each step |
203
+ | onStepCompleted `optional` - `function` | callback function will call after completing each step |
204
+ | onStepStarted `required` - `function` | callback function will call in the beginning of each step |
205
+
206
+ ## Branch Information
207
+
208
+ This repository maintains multiple branches for different environments and stages:
209
+
210
+ | Branch | Purpose | Environment |
211
+ | ------------- | ------------------------------ | ----------- |
212
+ | `main` | Production releases | Production |
213
+ | `beta` | Beta features and testing | Beta |
214
+ | `sandbox` | Sandbox environment testing | Sandbox |
215
+ | `development` | Development features and fixes | Development |
216
+
217
+ **Workflow**: `development` → `sandbox` → `beta` → `main` (production)
@@ -266,14 +266,16 @@ export var retrieveBoardStatus = createAsyncThunk('bank/retrieveBoardStatus', fu
266
266
  }
267
267
  });
268
268
  }); });
269
- export var retrieveBoardDetails = createAsyncThunk('bank/retrieveBoardDetails', function (_a) {
269
+ export var retrieveBoardDetails = createAsyncThunk('bank/retrieveBoardDetails', function (_a, thunkApi) {
270
270
  var boardId = _a.boardId, id = _a.individualId, type = _a.individualType;
271
271
  return __awaiter(void 0, void 0, void 0, function () {
272
- var data, individualData, boardData, serviceCallBack, _b, boardRes, individualRes;
272
+ var responseBody, data, individualData, boardData, serviceCallBack, _b, boardRes, individualRes;
273
273
  var _c, _d, _e;
274
274
  return __generator(this, function (_f) {
275
275
  switch (_f.label) {
276
- case 0: return [4, API.boardService.retrieveBoardDetails(boardId)];
276
+ case 0:
277
+ responseBody = thunkApi.getState().bank.data.verify.responseBody;
278
+ return [4, API.boardService.retrieveBoardDetails(boardId)];
277
279
  case 1:
278
280
  data = _f.sent();
279
281
  individualData = data === null || data === void 0 ? void 0 : data.user;
@@ -286,7 +288,7 @@ export var retrieveBoardDetails = createAsyncThunk('bank/retrieveBoardDetails',
286
288
  individualData = individualRes;
287
289
  boardData = boardRes;
288
290
  _f.label = 3;
289
- case 3: return [2, __assign(__assign({}, boardData), { brand: boardData === null || boardData === void 0 ? void 0 : boardData.brand, bank_account: boardData === null || boardData === void 0 ? void 0 : boardData.bank_account, entity: boardData === null || boardData === void 0 ? void 0 : boardData.entity, merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant, name: (_d = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _d === void 0 ? void 0 : _d.names, business: boardData === null || boardData === void 0 ? void 0 : boardData.business, individuals: boardData === null || boardData === void 0 ? void 0 : boardData.individuals, contact: (_e = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _e === void 0 ? void 0 : _e.contact, user: individualData, board_status: boardData === null || boardData === void 0 ? void 0 : boardData.status })];
291
+ case 3: return [2, __assign(__assign({}, boardData), { brand: boardData === null || boardData === void 0 ? void 0 : boardData.brand, bank_account: __assign(__assign({}, responseBody === null || responseBody === void 0 ? void 0 : responseBody.bank_account), boardData === null || boardData === void 0 ? void 0 : boardData.bank_account), entity: boardData === null || boardData === void 0 ? void 0 : boardData.entity, merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant, name: (_d = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _d === void 0 ? void 0 : _d.names, business: boardData === null || boardData === void 0 ? void 0 : boardData.business, individuals: boardData === null || boardData === void 0 ? void 0 : boardData.individuals, contact: (_e = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _e === void 0 ? void 0 : _e.contact, user: individualData, board_status: boardData === null || boardData === void 0 ? void 0 : boardData.status })];
290
292
  }
291
293
  });
292
294
  });
@@ -296,14 +296,16 @@ export var retrieveBoardStatus = createAsyncThunk('brand/retrieveBoardStatus', f
296
296
  }
297
297
  });
298
298
  }); });
299
- export var retrieveBoardDetails = createAsyncThunk('brand/retrieveBoardDetails', function (_a) {
299
+ export var retrieveBoardDetails = createAsyncThunk('brand/retrieveBoardDetails', function (_a, thunkApi) {
300
300
  var boardId = _a.boardId, id = _a.individualId, type = _a.individualType;
301
301
  return __awaiter(void 0, void 0, void 0, function () {
302
- var data, individualData, boardData, serviceCallBack, _b, boardRes, individualRes;
302
+ var responseBody, data, individualData, boardData, serviceCallBack, _b, boardRes, individualRes;
303
303
  var _c, _d, _e;
304
304
  return __generator(this, function (_f) {
305
305
  switch (_f.label) {
306
- case 0: return [4, API.boardService.retrieveBoardDetails(boardId)];
306
+ case 0:
307
+ responseBody = thunkApi.getState().brand.data.verify.responseBody;
308
+ return [4, API.boardService.retrieveBoardDetails(boardId)];
307
309
  case 1:
308
310
  data = _f.sent();
309
311
  individualData = data === null || data === void 0 ? void 0 : data.user;
@@ -316,7 +318,7 @@ export var retrieveBoardDetails = createAsyncThunk('brand/retrieveBoardDetails',
316
318
  individualData = individualRes;
317
319
  boardData = boardRes;
318
320
  _f.label = 3;
319
- case 3: return [2, __assign(__assign({}, boardData), { brand: boardData === null || boardData === void 0 ? void 0 : boardData.brand, bank_account: boardData === null || boardData === void 0 ? void 0 : boardData.bank_account, entity: boardData === null || boardData === void 0 ? void 0 : boardData.entity, merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant, name: (_d = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _d === void 0 ? void 0 : _d.names, individuals: boardData === null || boardData === void 0 ? void 0 : boardData.individuals, contact: (_e = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _e === void 0 ? void 0 : _e.contact, user: individualData, board_status: boardData === null || boardData === void 0 ? void 0 : boardData.status })];
321
+ case 3: return [2, __assign(__assign({}, boardData), { brand: __assign(__assign({}, responseBody === null || responseBody === void 0 ? void 0 : responseBody.brand), boardData === null || boardData === void 0 ? void 0 : boardData.brand), bank_account: boardData === null || boardData === void 0 ? void 0 : boardData.bank_account, entity: boardData === null || boardData === void 0 ? void 0 : boardData.entity, merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant, name: (_d = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _d === void 0 ? void 0 : _d.names, individuals: boardData === null || boardData === void 0 ? void 0 : boardData.individuals, contact: (_e = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _e === void 0 ? void 0 : _e.contact, user: individualData, board_status: boardData === null || boardData === void 0 ? void 0 : boardData.status })];
320
322
  }
321
323
  });
322
324
  });
@@ -277,14 +277,16 @@ export var retrieveBoardStatus = createAsyncThunk('entity/retrieveBoardStatus',
277
277
  }
278
278
  });
279
279
  }); });
280
- export var retrieveBoardDetails = createAsyncThunk('entityRetrieveEntityInfo', function (_a) {
280
+ export var retrieveBoardDetails = createAsyncThunk('entityRetrieveEntityInfo', function (_a, thunkApi) {
281
281
  var boardId = _a.boardId, id = _a.individualId, type = _a.individualType;
282
282
  return __awaiter(void 0, void 0, void 0, function () {
283
- var data, individualData, boardData, serviceCallBack, _b, boardRes, individualRes;
283
+ var responseBody, data, individualData, boardData, serviceCallBack, _b, boardRes, individualRes;
284
284
  var _c, _d, _e;
285
285
  return __generator(this, function (_f) {
286
286
  switch (_f.label) {
287
- case 0: return [4, API.boardService.retrieveBoardDetails(boardId)];
287
+ case 0:
288
+ responseBody = thunkApi.getState().entity.data.verify.responseBody;
289
+ return [4, API.boardService.retrieveBoardDetails(boardId)];
288
290
  case 1:
289
291
  data = _f.sent();
290
292
  individualData = data === null || data === void 0 ? void 0 : data.user;
@@ -297,7 +299,7 @@ export var retrieveBoardDetails = createAsyncThunk('entityRetrieveEntityInfo', f
297
299
  individualData = individualRes;
298
300
  boardData = boardRes;
299
301
  _f.label = 3;
300
- case 3: return [2, __assign(__assign({}, boardData), { brand: boardData === null || boardData === void 0 ? void 0 : boardData.brand, bank_account: boardData === null || boardData === void 0 ? void 0 : boardData.bank_account, entity: boardData === null || boardData === void 0 ? void 0 : boardData.entity, merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant, name: (_d = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _d === void 0 ? void 0 : _d.names, individuals: boardData === null || boardData === void 0 ? void 0 : boardData.individuals, contact: (_e = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _e === void 0 ? void 0 : _e.contact, user: individualData, board_status: boardData === null || boardData === void 0 ? void 0 : boardData.status })];
302
+ case 3: return [2, __assign(__assign({}, boardData), { brand: boardData === null || boardData === void 0 ? void 0 : boardData.brand, bank_account: boardData === null || boardData === void 0 ? void 0 : boardData.bank_account, entity: __assign(__assign({}, responseBody === null || responseBody === void 0 ? void 0 : responseBody.entity), boardData === null || boardData === void 0 ? void 0 : boardData.entity), merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant, name: (_d = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _d === void 0 ? void 0 : _d.names, individuals: boardData === null || boardData === void 0 ? void 0 : boardData.individuals, contact: (_e = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _e === void 0 ? void 0 : _e.contact, user: individualData, board_status: boardData === null || boardData === void 0 ? void 0 : boardData.status })];
301
303
  }
302
304
  });
303
305
  });
@@ -424,7 +424,7 @@ export var retrieveBoardDetails = createAsyncThunk('retrieveIndividualBoardDetai
424
424
  case 1:
425
425
  _c = _g.sent(), user = _c.user, data = __rest(_c, ["user"]);
426
426
  if (!((individualData === null || individualData === void 0 ? void 0 : individualData.id) === (user === null || user === void 0 ? void 0 : user.id))) return [3, 2];
427
- individualData = user;
427
+ individualData = __assign(__assign({}, individualData), user);
428
428
  return [3, 4];
429
429
  case 2:
430
430
  if (!(!(individualData === null || individualData === void 0 ? void 0 : individualData.is_authorized) && id && type)) return [3, 4];
@@ -152,14 +152,16 @@ export var retrieveBoardStatus = createAsyncThunk('tax/retrieveBoardStatus', fun
152
152
  }
153
153
  });
154
154
  }); });
155
- export var retrieveBoardDetails = createAsyncThunk('tax/retrieveBrandInfo', function (_a) {
155
+ export var retrieveBoardDetails = createAsyncThunk('tax/retrieveBrandInfo', function (_a, thunkApi) {
156
156
  var boardId = _a.boardId, id = _a.individualId, type = _a.individualType;
157
157
  return __awaiter(void 0, void 0, void 0, function () {
158
- var data, individualData, boardData, serviceCallBack, _b, boardRes, individualRes;
158
+ var responseBody, data, individualData, boardData, serviceCallBack, _b, boardRes, individualRes;
159
159
  var _c, _d, _e, _f;
160
160
  return __generator(this, function (_g) {
161
161
  switch (_g.label) {
162
- case 0: return [4, API.boardService.retrieveBoardDetails(boardId)];
162
+ case 0:
163
+ responseBody = thunkApi.getState().tax.data.verify.responseBody;
164
+ return [4, API.boardService.retrieveBoardDetails(boardId)];
163
165
  case 1:
164
166
  data = _g.sent();
165
167
  individualData = data === null || data === void 0 ? void 0 : data.user;
@@ -172,7 +174,7 @@ export var retrieveBoardDetails = createAsyncThunk('tax/retrieveBrandInfo', func
172
174
  individualData = individualRes;
173
175
  boardData = boardRes;
174
176
  _g.label = 3;
175
- case 3: return [2, __assign(__assign({}, boardData), { brand: boardData === null || boardData === void 0 ? void 0 : boardData.brand, bank_account: boardData === null || boardData === void 0 ? void 0 : boardData.bank_account, entity: boardData === null || boardData === void 0 ? void 0 : boardData.entity, merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant, name: (_d = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _d === void 0 ? void 0 : _d.names, vatID: (_e = boardData === null || boardData === void 0 ? void 0 : boardData.entity) === null || _e === void 0 ? void 0 : _e.vat_id, individuals: boardData === null || boardData === void 0 ? void 0 : boardData.individuals, contact: (_f = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _f === void 0 ? void 0 : _f.contact, user: individualData, board_status: boardData === null || boardData === void 0 ? void 0 : boardData.status })];
177
+ case 3: return [2, __assign(__assign({}, boardData), { brand: boardData === null || boardData === void 0 ? void 0 : boardData.brand, bank_account: boardData === null || boardData === void 0 ? void 0 : boardData.bank_account, entity: __assign(__assign({}, responseBody === null || responseBody === void 0 ? void 0 : responseBody.entity), boardData === null || boardData === void 0 ? void 0 : boardData.entity), merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant, name: (_d = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _d === void 0 ? void 0 : _d.names, vatID: (_e = boardData === null || boardData === void 0 ? void 0 : boardData.entity) === null || _e === void 0 ? void 0 : _e.vat_id, individuals: boardData === null || boardData === void 0 ? void 0 : boardData.individuals, contact: (_f = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _f === void 0 ? void 0 : _f.contact, user: individualData, board_status: boardData === null || boardData === void 0 ? void 0 : boardData.status })];
176
178
  }
177
179
  });
178
180
  });
@@ -42,14 +42,15 @@ var redirect = function (link) {
42
42
  window.open(link, '_blank');
43
43
  };
44
44
  export var Terms = function () {
45
- var _a, _b, _c;
45
+ var _a, _b, _c, _d, _e;
46
46
  var st = useSanitizedTranslation();
47
47
  var isAr = useLanguage().isAr;
48
48
  var dispatch = useAppDispatch();
49
49
  var settingsData = useAppSelector(settingsSelector).data;
50
- var _d = useAppSelector(kycSelector), loading = _d.loading, error = _d.error, data = _d.data;
51
- var hasOneUserOnly = ((_b = (_a = data.responseData) === null || _a === void 0 ? void 0 : _a.userList) === null || _b === void 0 ? void 0 : _b.length) === 1;
52
- var user = hasOneUserOnly ? (_c = data.responseData) === null || _c === void 0 ? void 0 : _c.userList[0] : undefined;
50
+ var _f = useAppSelector(kycSelector), loading = _f.loading, error = _f.error, data = _f.data;
51
+ var hasUsers = (_b = (_a = data.responseData) === null || _a === void 0 ? void 0 : _a.userList) === null || _b === void 0 ? void 0 : _b.length;
52
+ var hasOneUserOnly = ((_d = (_c = data.responseData) === null || _c === void 0 ? void 0 : _c.userList) === null || _d === void 0 ? void 0 : _d.length) === 1;
53
+ var user = hasOneUserOnly ? (_e = data.responseData) === null || _e === void 0 ? void 0 : _e.userList[0] : undefined;
53
54
  var idNumber = user ? maskIDNumber(user.identification.id) : '';
54
55
  var countryCode = settingsData.businessCountry.iso2.toLowerCase();
55
56
  var termsAndConditionsLink = getWebsiteLink(isAr, countryCode, EXTERNAL_LINKS.TERMS_CONDITIONS);
@@ -82,6 +83,6 @@ export var Terms = function () {
82
83
  return st('continue');
83
84
  return isSACountry ? st('approve_with_nafath_app') : st('approve_with_paci_app');
84
85
  };
85
- return (_jsxs(ScreenContainer, { children: [_jsx(Header, { idNumber: idNumber }), _jsx(BoxStyled, __assign({ onClick: function () { return redirect(termsAndConditionsLink); } }, { children: st('kyc_terms_conditions') })), _jsx(BoxStyled, __assign({ onClick: function () { return redirect(termsAndConditionsLink); } }, { children: st('kyc_refund_policy') })), _jsx(BoxStyled, __assign({ onClick: function () { return redirect(termsAndConditionsLink); } }, { children: st('kyc_dispute_policy') })), _jsx(BoxStyled, __assign({ onClick: function () { return redirect(privacyPolicyLink); }, sx: { mb: error ? 3 : 0 } }, { children: st('kyc_privacy_policy') })), _jsx(Button, __assign({ disabled: isOtherThanKWOrSACountry, sx: { mt: 3 }, disableBack: true, isAr: isAr, loading: loading, error: st(error || ''), onClick: onNext }, { children: getNextButtonTitle() }))] }));
86
+ return (_jsxs(ScreenContainer, { children: [_jsx(Header, { idNumber: idNumber }), _jsx(BoxStyled, __assign({ onClick: function () { return redirect(termsAndConditionsLink); } }, { children: st('kyc_terms_conditions') })), _jsx(BoxStyled, __assign({ onClick: function () { return redirect(termsAndConditionsLink); } }, { children: st('kyc_refund_policy') })), _jsx(BoxStyled, __assign({ onClick: function () { return redirect(termsAndConditionsLink); } }, { children: st('kyc_dispute_policy') })), _jsx(BoxStyled, __assign({ onClick: function () { return redirect(privacyPolicyLink); }, sx: { mb: error ? 3 : 0 } }, { children: st('kyc_privacy_policy') })), _jsx(Button, __assign({ disabled: isOtherThanKWOrSACountry ? true : !hasUsers, sx: { mt: 3 }, disableBack: true, isAr: isAr, loading: loading, error: st(error || ''), onClick: onNext }, { children: getNextButtonTitle() }))] }));
86
87
  };
87
88
  export default memo(Terms);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tap-payments/auth-jsconnect",
3
- "version": "2.12.6-development",
3
+ "version": "2.12.8-development",
4
4
  "description": "connect library, auth",
5
5
  "private": false,
6
6
  "main": "build/index.js",