idmission-web-sdk 0.0.68 → 0.0.70

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.
@@ -0,0 +1,5 @@
1
+ import { SubmissionResponseStatus } from '../../contexts/SubmissionContext';
2
+ export declare class SubmissionError extends Error {
3
+ status: SubmissionResponseStatus;
4
+ constructor(status: SubmissionResponseStatus);
5
+ }
@@ -0,0 +1,6 @@
1
+ import { ReactElement } from 'react';
2
+ import { SubmissionError } from './SubmissionError';
3
+ export type SubmissionErrorOverlayProps = {
4
+ submissionError: SubmissionError;
5
+ };
6
+ export declare const SubmissionErrorOverlay: ({ submissionError, }: SubmissionErrorOverlayProps) => ReactElement;
@@ -106,12 +106,13 @@ export type SubmissionMetadata = {
106
106
  Resolution?: string;
107
107
  GeoLocation?: string;
108
108
  };
109
+ export type SubmissionResponseStatus = {
110
+ statusCode: string;
111
+ statusMessage?: string;
112
+ errorData?: string;
113
+ };
109
114
  export type SubmissionResponse = {
110
- status: {
111
- statusCode: string;
112
- statusMessage?: string;
113
- errorData?: string;
114
- };
115
+ status: SubmissionResponseStatus;
115
116
  resultData: Record<string, unknown>;
116
117
  };
117
118
  export type LivenessCheckRequest = {
@@ -352,6 +352,41 @@ function getPlatform() {
352
352
  return window.platform;
353
353
  }
354
354
 
355
+ var SubmissionErrorOverlay = function SubmissionErrorOverlay(_a) {
356
+ var submissionError = _a.submissionError;
357
+ return /*#__PURE__*/React__default['default'].createElement(OverlayContainer, null, /*#__PURE__*/React__default['default'].createElement(OverlayInner, {
358
+ style: {
359
+ justifyContent: 'center'
360
+ }
361
+ }, /*#__PURE__*/React__default['default'].createElement("h3", {
362
+ style: {
363
+ marginBottom: 8
364
+ }
365
+ }, "We're sorry, an unexpected error has occurred."), submissionError.status.statusCode && /*#__PURE__*/React__default['default'].createElement("p", {
366
+ style: {
367
+ marginBottom: 0
368
+ }
369
+ }, /*#__PURE__*/React__default['default'].createElement("code", null, "Status: ", submissionError.status.statusCode)), /*#__PURE__*/React__default['default'].createElement("p", {
370
+ style: {
371
+ marginBottom: 0
372
+ }
373
+ }, /*#__PURE__*/React__default['default'].createElement("code", null, submissionError.message)), submissionError.status.errorData && /*#__PURE__*/React__default['default'].createElement("p", {
374
+ style: {
375
+ marginBottom: 0
376
+ }
377
+ }, /*#__PURE__*/React__default['default'].createElement("code", null, submissionError.status.errorData))));
378
+ };
379
+
380
+ var SubmissionError = function (_super) {
381
+ tslib.__extends(SubmissionError, _super);
382
+ function SubmissionError(status) {
383
+ var _this = _super.call(this, status.statusMessage) || this;
384
+ _this.status = status;
385
+ return _this;
386
+ }
387
+ return SubmissionError;
388
+ }(Error);
389
+
355
390
  var SubmissionProvider = function SubmissionProvider(_a) {
356
391
  var action = _a.action,
357
392
  children = _a.children,
@@ -393,44 +428,47 @@ var SubmissionProvider = function SubmissionProvider(_a) {
393
428
  submissionResponse = _o[0],
394
429
  setSubmissionResponse = _o[1];
395
430
  var _p = React.useState(null),
396
- idFrontImage = _p[0],
397
- setIdFrontImage = _p[1];
431
+ submissionError = _p[0],
432
+ setSubmissionError = _p[1];
398
433
  var _q = React.useState(null),
399
- idBackImage = _q[0],
400
- setIdBackImage = _q[1];
434
+ idFrontImage = _q[0],
435
+ setIdFrontImage = _q[1];
401
436
  var _r = React.useState(null),
402
- passportImage = _r[0],
403
- setPassportImage = _r[1];
437
+ idBackImage = _r[0],
438
+ setIdBackImage = _r[1];
404
439
  var _s = React.useState(null),
405
- selfieImage = _s[0],
406
- setSelfieImage = _s[1];
440
+ passportImage = _s[0],
441
+ setPassportImage = _s[1];
407
442
  var _t = React.useState(null),
408
- signatureData = _t[0],
409
- setSignatureData = _t[1];
443
+ selfieImage = _t[0],
444
+ setSelfieImage = _t[1];
410
445
  var _u = React.useState(null),
411
- signatureVideo = _u[0],
412
- setSignatureVideo = _u[1];
446
+ signatureData = _u[0],
447
+ setSignatureData = _u[1];
413
448
  var _v = React.useState(null),
414
- additionalDocuments = _v[0],
415
- setAdditionalDocuments = _v[1];
449
+ signatureVideo = _v[0],
450
+ setSignatureVideo = _v[1];
416
451
  var _w = React.useState(null),
417
- geolocationResult = _w[0],
418
- setGeolocationResult = _w[1];
419
- var _x = React.useState(0),
420
- geolocationAttempts = _x[0],
421
- setGeolocationAttempts = _x[1];
422
- var _y = React.useState(false),
423
- geolocationBlocked = _y[0],
424
- setGeolocationBlocked = _y[1];
425
- var _z = React.useState([]),
426
- idFrontCaptureAttempts = _z[0],
427
- setIdFrontCaptureAttempts = _z[1];
452
+ additionalDocuments = _w[0],
453
+ setAdditionalDocuments = _w[1];
454
+ var _x = React.useState(null),
455
+ geolocationResult = _x[0],
456
+ setGeolocationResult = _x[1];
457
+ var _y = React.useState(0),
458
+ geolocationAttempts = _y[0],
459
+ setGeolocationAttempts = _y[1];
460
+ var _z = React.useState(false),
461
+ geolocationBlocked = _z[0],
462
+ setGeolocationBlocked = _z[1];
428
463
  var _0 = React.useState([]),
429
- idBackCaptureAttempts = _0[0],
430
- setIdBackCaptureAttempts = _0[1];
464
+ idFrontCaptureAttempts = _0[0],
465
+ setIdFrontCaptureAttempts = _0[1];
431
466
  var _1 = React.useState([]),
432
- selfieCaptureAttempts = _1[0],
433
- setSelfieCaptureAttempts = _1[1];
467
+ idBackCaptureAttempts = _1[0],
468
+ setIdBackCaptureAttempts = _1[1];
469
+ var _2 = React.useState([]),
470
+ selfieCaptureAttempts = _2[0],
471
+ setSelfieCaptureAttempts = _2[1];
434
472
  var logIdFrontCaptureAttempt = React.useCallback(function (attempt) {
435
473
  setIdFrontCaptureAttempts(function (attempts) {
436
474
  return tslib.__spreadArray(tslib.__spreadArray([], attempts, true), [attempt], false);
@@ -448,10 +486,11 @@ var SubmissionProvider = function SubmissionProvider(_a) {
448
486
  }, []);
449
487
  var submit = React.useCallback(function () {
450
488
  return tslib.__awaiter(void 0, void 0, void 0, function () {
451
- var submissionResponse_1, submissionRequest_1, metadata, platform, onBeforeSubmitResult, host, endpoint, response, submissionResponse_2, e_1;
452
- var _a;
453
- return tslib.__generator(this, function (_b) {
454
- switch (_b.label) {
489
+ var submissionResponse_1, submissionRequest_1, metadata, platform, onBeforeSubmitResult, host, endpoint, response, _a, submissionResponse_2, e_1, err;
490
+ var _b;
491
+ var _c;
492
+ return tslib.__generator(this, function (_d) {
493
+ switch (_d.label) {
455
494
  case 0:
456
495
  if (action === SubmissionAction.NONE) {
457
496
  submissionResponse_1 = {
@@ -465,9 +504,9 @@ var SubmissionProvider = function SubmissionProvider(_a) {
465
504
  return [2, submissionResponse_1];
466
505
  }
467
506
  setSubmissionStatus(SubmissionStatus.SUBMITTING);
468
- _b.label = 1;
507
+ _d.label = 1;
469
508
  case 1:
470
- _b.trys.push([1, 6,, 7]);
509
+ _d.trys.push([1, 8,, 9]);
471
510
  submissionRequest_1 = {
472
511
  securityData: {
473
512
  userName: '',
@@ -530,7 +569,7 @@ var SubmissionProvider = function SubmissionProvider(_a) {
530
569
  submissionRequest_1.customerData.cardData = cardData;
531
570
  }
532
571
  if (enrollmentId) {
533
- (_a = submissionRequest_1.customerData).personalData || (_a.personalData = {});
572
+ (_c = submissionRequest_1.customerData).personalData || (_c.personalData = {});
534
573
  submissionRequest_1.customerData.personalData.uniqueNumber = enrollmentId;
535
574
  }
536
575
  if (webhooksClientTraceId) {
@@ -571,9 +610,9 @@ var SubmissionProvider = function SubmissionProvider(_a) {
571
610
  if (!onBeforeSubmit) return [3, 3];
572
611
  return [4, onBeforeSubmit(submissionRequest_1)];
573
612
  case 2:
574
- onBeforeSubmitResult = _b.sent();
613
+ onBeforeSubmitResult = _d.sent();
575
614
  if (onBeforeSubmitResult) submissionRequest_1 = onBeforeSubmitResult;
576
- _b.label = 3;
615
+ _d.label = 3;
577
616
  case 3:
578
617
  host = url || determineSubmissionHost(environment, token);
579
618
  endpoint = determineSubmissionEndpoint(action, !!(idFrontImage || idBackImage || passportImage), !!selfieImage, !!token);
@@ -583,50 +622,68 @@ var SubmissionProvider = function SubmissionProvider(_a) {
583
622
  body: JSON.stringify(submissionRequest_1)
584
623
  })];
585
624
  case 4:
586
- response = _b.sent();
587
- return [4, response.json()];
625
+ response = _d.sent();
626
+ if (!!response.ok) return [3, 6];
627
+ _a = SubmissionError.bind;
628
+ _b = {
629
+ statusCode: response.statusText
630
+ };
631
+ return [4, response.text()];
588
632
  case 5:
589
- submissionResponse_2 = _b.sent();
633
+ throw new (_a.apply(SubmissionError, [void 0, (_b.statusMessage = _d.sent(), _b)]))();
634
+ case 6:
635
+ return [4, response.json()];
636
+ case 7:
637
+ submissionResponse_2 = _d.sent();
638
+ if (submissionResponse_2.status.statusCode !== '000') {
639
+ throw new SubmissionError(submissionResponse_2.status);
640
+ }
590
641
  setSubmissionRequest(submissionRequest_1);
591
642
  setSubmissionResponse(submissionResponse_2);
592
643
  setSubmissionStatus(SubmissionStatus.SUBMITTED);
593
644
  onResponseReceived === null || onResponseReceived === void 0 ? void 0 : onResponseReceived(submissionResponse_2);
594
645
  return [2, submissionResponse_2];
595
- case 6:
596
- e_1 = _b.sent();
646
+ case 8:
647
+ e_1 = _d.sent();
648
+ err = e_1;
597
649
  setSubmissionStatus(SubmissionStatus.FAILED);
598
- onRequestFailure === null || onRequestFailure === void 0 ? void 0 : onRequestFailure(e_1);
650
+ setSubmissionError(e_1 instanceof SubmissionError ? e_1 : new SubmissionError({
651
+ statusCode: '',
652
+ statusMessage: err.message
653
+ }));
654
+ onRequestFailure === null || onRequestFailure === void 0 ? void 0 : onRequestFailure(err);
599
655
  return [2, null];
600
- case 7:
656
+ case 9:
601
657
  return [2];
602
658
  }
603
659
  });
604
660
  });
605
- }, [action, additionalDocuments, enrollmentId, environment, geolocationResult, idBackCaptureAttempts, idBackImage, idFrontCaptureAttempts, idFrontImage, onBeforeSubmit, onRequestFailure, onResponseReceived, passportImage, selfieCaptureAttempts, selfieImage, signatureData, token, url]);
661
+ }, [action, additionalDocuments, cardData, companyId, deduplicationEnabled, deduplicationSynchronous, enrollmentId, environment, geolocationResult, idBackCaptureAttempts, idBackImage, idFrontCaptureAttempts, idFrontImage, manualReviewRequired, onBeforeSubmit, onRequestFailure, onResponseReceived, passportImage, personalData, selfieCaptureAttempts, selfieImage, signatureData, token, url, verifyIdWithExternalDatabases, webhooksClientTraceId, webhooksEnabled, webhooksStripSpecialCharacters]);
606
662
  var checkLiveness = React.useCallback(function (imageDataUrl) {
607
663
  return tslib.__awaiter(void 0, void 0, void 0, function () {
608
- var request, host, endpoint, response, submissionResponse;
609
- var _a, _b, _c;
610
- return tslib.__generator(this, function (_d) {
611
- switch (_d.label) {
664
+ var request, host, endpoint, response, _a, submissionResponse_3, e_2, err;
665
+ var _b, _c, _d, _e;
666
+ return tslib.__generator(this, function (_f) {
667
+ switch (_f.label) {
612
668
  case 0:
613
- _a = {
669
+ _f.trys.push([0, 6,, 7]);
670
+ _b = {
614
671
  securityData: {
615
672
  userName: '',
616
673
  password: '',
617
674
  merchantId: 0
618
675
  }
619
676
  };
620
- _b = {};
621
677
  _c = {};
678
+ _d = {};
622
679
  return [4, dataUrlToBase64(imageDataUrl)];
623
680
  case 1:
624
- request = (_a.customerData = (_b.biometricData = (_c.selfie = _d.sent(), _c), _b), _a.additionalData = {
681
+ request = (_b.customerData = (_c.biometricData = (_d.selfie = _f.sent(), _d), _c), _b.additionalData = {
625
682
  uniqueRequestId: new Date().getTime().toString(),
626
683
  stripSpecialCharacters: 'Y',
627
684
  estimateAge: 'N',
628
685
  predictGender: 'N'
629
- }, _a);
686
+ }, _b);
630
687
  host = url || determineSubmissionHost(environment, token);
631
688
  endpoint = liveCheckEndpoint(!!token);
632
689
  return [4, fetch(host + endpoint, {
@@ -635,16 +692,40 @@ var SubmissionProvider = function SubmissionProvider(_a) {
635
692
  body: JSON.stringify(request)
636
693
  })];
637
694
  case 2:
638
- response = _d.sent();
639
- return [4, response.json()];
695
+ response = _f.sent();
696
+ if (!!response.ok) return [3, 4];
697
+ _a = SubmissionError.bind;
698
+ _e = {
699
+ statusCode: response.statusText
700
+ };
701
+ return [4, response.text()];
640
702
  case 3:
641
- submissionResponse = _d.sent();
642
- setSubmissionResponse(submissionResponse);
643
- return [2, submissionResponse];
703
+ throw new (_a.apply(SubmissionError, [void 0, (_e.statusMessage = _f.sent(), _e)]))();
704
+ case 4:
705
+ return [4, response.json()];
706
+ case 5:
707
+ submissionResponse_3 = _f.sent();
708
+ if (submissionResponse_3.status.statusCode !== '000') {
709
+ throw new SubmissionError(submissionResponse_3.status);
710
+ }
711
+ setSubmissionResponse(submissionResponse_3);
712
+ return [2, submissionResponse_3];
713
+ case 6:
714
+ e_2 = _f.sent();
715
+ err = e_2;
716
+ setSubmissionStatus(SubmissionStatus.FAILED);
717
+ setSubmissionError(e_2 instanceof SubmissionError ? e_2 : new SubmissionError({
718
+ statusCode: '',
719
+ statusMessage: err.message
720
+ }));
721
+ onRequestFailure === null || onRequestFailure === void 0 ? void 0 : onRequestFailure(err);
722
+ return [2, null];
723
+ case 7:
724
+ return [2];
644
725
  }
645
726
  });
646
727
  });
647
- }, [environment, token, url]);
728
+ }, [environment, onRequestFailure, token, url]);
648
729
  var retryLocationAccess = React.useCallback(function () {
649
730
  setGeolocationAttempts(function (n) {
650
731
  return n + 1;
@@ -692,7 +773,9 @@ var SubmissionProvider = function SubmissionProvider(_a) {
692
773
  };
693
774
  return /*#__PURE__*/React__default['default'].createElement(SubmissionContext.Provider, {
694
775
  value: value
695
- }, geolocationRequired && geolocationBlocked ? /*#__PURE__*/React__default['default'].createElement(GeolocationAccessDeniedOverlay, null) : children);
776
+ }, geolocationRequired && geolocationBlocked ? /*#__PURE__*/React__default['default'].createElement(GeolocationAccessDeniedOverlay, null) : submissionError ? /*#__PURE__*/React__default['default'].createElement(SubmissionErrorOverlay, {
777
+ submissionError: submissionError
778
+ }) : children);
696
779
  };
697
780
 
698
781
  var DocumentType;
@@ -12940,6 +13023,7 @@ var CustomerVerificationWizard = function CustomerVerificationWizard(_a) {
12940
13023
  }
12941
13024
  });
12942
13025
  case 'NOT_MATCHED':
13026
+ case 'FAILED':
12943
13027
  return /*#__PURE__*/React__default['default'].createElement(CustomerVerificationFailure, {
12944
13028
  assets: assets.failure,
12945
13029
  colors: colors.failure,