@mikashboks/capture-intelligence-core 0.1.10 → 0.1.18

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.
Files changed (83) hide show
  1. package/dist/cjs/capture-normalization.d.ts +21 -1
  2. package/dist/cjs/capture-normalization.d.ts.map +1 -1
  3. package/dist/cjs/capture-normalization.js +85 -13
  4. package/dist/cjs/capture-normalization.js.map +1 -1
  5. package/dist/cjs/document-classifier.d.ts.map +1 -1
  6. package/dist/cjs/document-classifier.js +59 -2
  7. package/dist/cjs/document-classifier.js.map +1 -1
  8. package/dist/cjs/document-placement.d.ts +21 -0
  9. package/dist/cjs/document-placement.d.ts.map +1 -0
  10. package/dist/cjs/document-placement.js +66 -0
  11. package/dist/cjs/document-placement.js.map +1 -0
  12. package/dist/cjs/index.d.ts +12 -4
  13. package/dist/cjs/index.d.ts.map +1 -1
  14. package/dist/cjs/index.js +27 -2
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/issuing-country.d.ts +16 -0
  17. package/dist/cjs/issuing-country.d.ts.map +1 -0
  18. package/dist/cjs/issuing-country.js +77 -0
  19. package/dist/cjs/issuing-country.js.map +1 -0
  20. package/dist/cjs/kyc-mobile-contract.d.ts +13 -1
  21. package/dist/cjs/kyc-mobile-contract.d.ts.map +1 -1
  22. package/dist/cjs/kyc-mobile-contract.js +64 -6
  23. package/dist/cjs/kyc-mobile-contract.js.map +1 -1
  24. package/dist/cjs/mrz-band-detector.d.ts +12 -5
  25. package/dist/cjs/mrz-band-detector.d.ts.map +1 -1
  26. package/dist/cjs/mrz-band-detector.js +29 -14
  27. package/dist/cjs/mrz-band-detector.js.map +1 -1
  28. package/dist/cjs/mrz-check-digits.d.ts +74 -0
  29. package/dist/cjs/mrz-check-digits.d.ts.map +1 -0
  30. package/dist/cjs/mrz-check-digits.js +478 -0
  31. package/dist/cjs/mrz-check-digits.js.map +1 -0
  32. package/dist/cjs/mrz-policy.d.ts +18 -0
  33. package/dist/cjs/mrz-policy.d.ts.map +1 -0
  34. package/dist/cjs/mrz-policy.js +90 -0
  35. package/dist/cjs/mrz-policy.js.map +1 -0
  36. package/dist/cjs/quality-checks.d.ts +14 -0
  37. package/dist/cjs/quality-checks.d.ts.map +1 -1
  38. package/dist/cjs/quality-checks.js +43 -5
  39. package/dist/cjs/quality-checks.js.map +1 -1
  40. package/dist/cjs/types.d.ts +2 -2
  41. package/dist/cjs/types.js +2 -2
  42. package/dist/esm/capture-normalization.d.ts +21 -1
  43. package/dist/esm/capture-normalization.d.ts.map +1 -1
  44. package/dist/esm/capture-normalization.js +84 -13
  45. package/dist/esm/capture-normalization.js.map +1 -1
  46. package/dist/esm/document-classifier.d.ts.map +1 -1
  47. package/dist/esm/document-classifier.js +59 -2
  48. package/dist/esm/document-classifier.js.map +1 -1
  49. package/dist/esm/document-placement.d.ts +21 -0
  50. package/dist/esm/document-placement.d.ts.map +1 -0
  51. package/dist/esm/document-placement.js +62 -0
  52. package/dist/esm/document-placement.js.map +1 -0
  53. package/dist/esm/index.d.ts +12 -4
  54. package/dist/esm/index.d.ts.map +1 -1
  55. package/dist/esm/index.js +7 -3
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/issuing-country.d.ts +16 -0
  58. package/dist/esm/issuing-country.d.ts.map +1 -0
  59. package/dist/esm/issuing-country.js +71 -0
  60. package/dist/esm/issuing-country.js.map +1 -0
  61. package/dist/esm/kyc-mobile-contract.d.ts +13 -1
  62. package/dist/esm/kyc-mobile-contract.d.ts.map +1 -1
  63. package/dist/esm/kyc-mobile-contract.js +63 -5
  64. package/dist/esm/kyc-mobile-contract.js.map +1 -1
  65. package/dist/esm/mrz-band-detector.d.ts +12 -5
  66. package/dist/esm/mrz-band-detector.d.ts.map +1 -1
  67. package/dist/esm/mrz-band-detector.js +29 -14
  68. package/dist/esm/mrz-band-detector.js.map +1 -1
  69. package/dist/esm/mrz-check-digits.d.ts +74 -0
  70. package/dist/esm/mrz-check-digits.d.ts.map +1 -0
  71. package/dist/esm/mrz-check-digits.js +471 -0
  72. package/dist/esm/mrz-check-digits.js.map +1 -0
  73. package/dist/esm/mrz-policy.d.ts +18 -0
  74. package/dist/esm/mrz-policy.d.ts.map +1 -0
  75. package/dist/esm/mrz-policy.js +87 -0
  76. package/dist/esm/mrz-policy.js.map +1 -0
  77. package/dist/esm/quality-checks.d.ts +14 -0
  78. package/dist/esm/quality-checks.d.ts.map +1 -1
  79. package/dist/esm/quality-checks.js +42 -5
  80. package/dist/esm/quality-checks.js.map +1 -1
  81. package/dist/esm/types.d.ts +2 -2
  82. package/dist/esm/types.js +2 -2
  83. package/package.json +8 -4
package/dist/cjs/index.js CHANGED
@@ -9,8 +9,9 @@
9
9
  * objects, numeric values). Zero browser dependencies.
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.detectDocumentCropFromGrey = exports.computeEdgeEnergyProfile = exports.rgbaToGreyscalePico = exports.rgbaToGreyscale = exports.getDocumentCaptureFrameAspectRatio = exports.buildCaptureNormalizationPlan = exports.getRotationToExpectedOrientation = exports.mapPreviewRectToImageCrop = exports.analyzeImageMetadata = exports.checkDocumentLikelihood = exports.getDocumentReviewProfile = exports.getPreviousFlowStepId = exports.getNextFlowStepId = exports.validateKycMobileWorkflowConfigContract = exports.KYC_MOBILE_VALID_ADDRESS_METHODS = exports.KYC_MOBILE_SIERRA_LEONE_STEP_ORDER = exports.KYC_MOBILE_REQUIRED_TERMINAL_STEP_IDS = exports.KYC_MOBILE_KNOWN_STEP_IDS = exports.KYC_MOBILE_ADDRESS_STEP_IDS = exports.isAddressStepComplete = exports.hasStructuredAddress = exports.hasAddressProofCoordinates = exports.getEffectiveAddressMethod = exports.getAddressMethodStartBehavior = exports.getRecommendedAddressMethod = exports.sanitizeAllowedAddressMethods = exports.isAddressMethod = exports.ADDRESS_METHOD_ORDER = exports.PICO_ANALYSIS_H = exports.PICO_ANALYSIS_W = exports.ADDRESS_SUBMIT_ANYWAY_FAILURE_THRESHOLD = exports.SELFIE_SUBMIT_ANYWAY_FAILURE_THRESHOLD = exports.DOC_SUBMIT_ANYWAY_FAILURE_THRESHOLD = exports.DOC_GALLERY_FAILURE_THRESHOLD = exports.CAPTURE_DOCUMENT_EDGE_READY_MULTIPLIER = exports.CAPTURE_DOCUMENT_AREA_MIN = exports.CAPTURE_DOCUMENT_MANUAL_FALLBACK_SECS = exports.CAPTURE_DOCUMENT_SHARPNESS_MIN = exports.CAM_DOC_CENTER_OFFSET_MAX = exports.CAM_EDGE_COVERAGE_THRESHOLD = exports.CAM_EDGE_PIXEL_THRESHOLD = exports.CAM_FRAME_DIFF_THRESHOLD = exports.CAM_STABLE_FRAMES_NEEDED = exports.CAM_EDGE_THRESHOLD = exports.CAM_BLUR_THRESHOLD = exports.CAM_BRIGHTNESS_MAX = exports.CAM_BRIGHTNESS_MIN = exports.CAM_ANALYSIS_H = exports.CAM_ANALYSIS_W = exports.CamState = void 0;
13
- exports.getOverrideBannerMessage = exports.getOverrideButtonText = exports.getNextButtonDisabledReason = exports.evaluateReviewFailure = exports.evaluateSelfieFailure = exports.evaluateDocumentFailure = exports.isFaceCentered = exports.checkFaceInImage = exports.runSelfieQualityChecks = exports.runDocumentQualityChecks = exports.getReviewModeFromDocumentType = exports.hasHardBlockingQualityFailure = exports.shouldShowSubmitAnyway = exports.countFailedReview = exports.createQualityFailureState = exports.getSubmitAnywayThreshold = exports.getQualityBucket = exports.MRZ_DENSITY_SCORE_SATURATION = exports.MRZ_SEARCH_TOP_FRAC = exports.MRZ_MAX_BAND_ASPECT = exports.MRZ_MIN_BAND_ASPECT = exports.MRZ_MIN_BAND_WIDTH_FRAC = exports.MRZ_MAX_BAND_HEIGHT = exports.MRZ_MIN_BAND_HEIGHT = exports.MRZ_ROW_DENSITY_RATIO_THRESHOLD = exports.MRZ_HORIZONTAL_GRADIENT_THRESHOLD = exports.detectPassportMrzBand = exports.looksLikeDocument = exports.analyzeFrame = exports.computeFrameDiff = exports.detectDocumentRect = exports.computeEdgeEnergy = exports.computeLaplacianVarianceFloat = exports.computeLaplacianVariance = exports.computeBrightness = exports.rgbaToGreyInPlace = void 0;
12
+ exports.mapPreviewRectToImageCropWithDiagnostics = exports.analyzeImageMetadata = exports.checkDocumentLikelihood = exports.getDocumentReviewProfile = exports.getPreviousFlowStepId = exports.getNextFlowStepId = exports.resolveIssuingCountry = exports.normalizeIssuingCountry = exports.getIssuingCountryMetadata = exports.validateKycMobileWorkflowConfigContract = exports.KYC_MOBILE_VALID_SUBMISSION_COMPLETION_MODES = exports.KYC_MOBILE_VALID_GPS_POLICIES = exports.KYC_MOBILE_VALID_CAPTURE_MODES = exports.KYC_MOBILE_VALID_ADDRESS_FIELD_MODES = exports.KYC_MOBILE_VALID_ADDRESS_METHODS = exports.KYC_MOBILE_SIERRA_LEONE_STEP_ORDER = exports.KYC_MOBILE_REQUIRED_TERMINAL_STEP_IDS = exports.KYC_MOBILE_KNOWN_STEP_IDS = exports.KYC_MOBILE_ADDRESS_STEP_IDS = exports.isAddressStepComplete = exports.hasStructuredAddress = exports.hasAddressProofCoordinates = exports.getEffectiveAddressMethod = exports.getAddressMethodStartBehavior = exports.getRecommendedAddressMethod = exports.sanitizeAllowedAddressMethods = exports.isAddressMethod = exports.ADDRESS_METHOD_ORDER = exports.PICO_ANALYSIS_H = exports.PICO_ANALYSIS_W = exports.ADDRESS_SUBMIT_ANYWAY_FAILURE_THRESHOLD = exports.SELFIE_SUBMIT_ANYWAY_FAILURE_THRESHOLD = exports.DOC_SUBMIT_ANYWAY_FAILURE_THRESHOLD = exports.DOC_GALLERY_FAILURE_THRESHOLD = exports.CAPTURE_DOCUMENT_EDGE_READY_MULTIPLIER = exports.CAPTURE_DOCUMENT_AREA_MIN = exports.CAPTURE_DOCUMENT_MANUAL_FALLBACK_SECS = exports.CAPTURE_DOCUMENT_SHARPNESS_MIN = exports.CAM_DOC_CENTER_OFFSET_MAX = exports.CAM_EDGE_COVERAGE_THRESHOLD = exports.CAM_EDGE_PIXEL_THRESHOLD = exports.CAM_FRAME_DIFF_THRESHOLD = exports.CAM_STABLE_FRAMES_NEEDED = exports.CAM_EDGE_THRESHOLD = exports.CAM_BLUR_THRESHOLD = exports.CAM_BRIGHTNESS_MAX = exports.CAM_BRIGHTNESS_MIN = exports.CAM_ANALYSIS_H = exports.CAM_ANALYSIS_W = exports.CamState = void 0;
13
+ exports.isFaceCentered = exports.checkFaceInImage = exports.runSelfieQualityChecks = exports.runDocumentQualityChecks = exports.getReviewModeFromDocumentType = exports.isRetryEscapableDocumentCornerFailure = exports.hasHardBlockingQualityFailure = exports.shouldShowSubmitAnyway = exports.countFailedReview = exports.createQualityFailureState = exports.getSubmitAnywayThreshold = exports.getQualityBucket = exports.resolveDocumentMrzPolicy = exports.validateMrzCheckDigits = exports.parseMrzText = exports.normalizeMrzLines = exports.computeMrzCheckDigit = exports.getMrzCharacterValue = exports.MRZ_DENSITY_SCORE_SATURATION = exports.MRZ_SEARCH_TOP_FRAC = exports.MRZ_MAX_BAND_ASPECT = exports.MRZ_MIN_BAND_ASPECT = exports.MRZ_MIN_BAND_WIDTH_FRAC = exports.MRZ_MAX_BAND_HEIGHT = exports.MRZ_MIN_BAND_HEIGHT = exports.MRZ_ROW_DENSITY_RATIO_THRESHOLD = exports.MRZ_HORIZONTAL_GRADIENT_THRESHOLD = exports.detectPassportMrzBand = exports.looksLikeDocument = exports.analyzeFrame = exports.computeFrameDiff = exports.detectDocumentRect = exports.computeEdgeEnergy = exports.computeLaplacianVarianceFloat = exports.computeLaplacianVariance = exports.computeBrightness = exports.rgbaToGreyInPlace = exports.detectDocumentCropFromGrey = exports.computeEdgeEnergyProfile = exports.rgbaToGreyscalePico = exports.rgbaToGreyscale = exports.evaluateDocumentPlacement = exports.CAPTURE_READY_SAFE_INSET_MIN = exports.CAPTURE_READY_CENTER_MAX_BY_SHAPE = exports.CAPTURE_READY_AREA_MAX_BY_SHAPE = exports.CAPTURE_READY_AREA_MIN_BY_SHAPE = exports.getDocumentCaptureFrameAspectRatio = exports.buildCaptureNormalizationPlan = exports.getRotationToExpectedOrientation = exports.mapPreviewRectToImageCrop = void 0;
14
+ exports.getOverrideBannerMessage = exports.getOverrideButtonText = exports.getNextButtonDisabledReason = exports.evaluateReviewFailure = exports.evaluateSelfieFailure = exports.evaluateDocumentFailure = void 0;
14
15
  var types_js_1 = require("./types.js");
15
16
  Object.defineProperty(exports, "CamState", { enumerable: true, get: function () { return types_js_1.CamState; } });
16
17
  Object.defineProperty(exports, "CAM_ANALYSIS_W", { enumerable: true, get: function () { return types_js_1.CAM_ANALYSIS_W; } });
@@ -50,7 +51,15 @@ Object.defineProperty(exports, "KYC_MOBILE_KNOWN_STEP_IDS", { enumerable: true,
50
51
  Object.defineProperty(exports, "KYC_MOBILE_REQUIRED_TERMINAL_STEP_IDS", { enumerable: true, get: function () { return kyc_mobile_contract_js_1.KYC_MOBILE_REQUIRED_TERMINAL_STEP_IDS; } });
51
52
  Object.defineProperty(exports, "KYC_MOBILE_SIERRA_LEONE_STEP_ORDER", { enumerable: true, get: function () { return kyc_mobile_contract_js_1.KYC_MOBILE_SIERRA_LEONE_STEP_ORDER; } });
52
53
  Object.defineProperty(exports, "KYC_MOBILE_VALID_ADDRESS_METHODS", { enumerable: true, get: function () { return kyc_mobile_contract_js_1.KYC_MOBILE_VALID_ADDRESS_METHODS; } });
54
+ Object.defineProperty(exports, "KYC_MOBILE_VALID_ADDRESS_FIELD_MODES", { enumerable: true, get: function () { return kyc_mobile_contract_js_1.KYC_MOBILE_VALID_ADDRESS_FIELD_MODES; } });
55
+ Object.defineProperty(exports, "KYC_MOBILE_VALID_CAPTURE_MODES", { enumerable: true, get: function () { return kyc_mobile_contract_js_1.KYC_MOBILE_VALID_CAPTURE_MODES; } });
56
+ Object.defineProperty(exports, "KYC_MOBILE_VALID_GPS_POLICIES", { enumerable: true, get: function () { return kyc_mobile_contract_js_1.KYC_MOBILE_VALID_GPS_POLICIES; } });
57
+ Object.defineProperty(exports, "KYC_MOBILE_VALID_SUBMISSION_COMPLETION_MODES", { enumerable: true, get: function () { return kyc_mobile_contract_js_1.KYC_MOBILE_VALID_SUBMISSION_COMPLETION_MODES; } });
53
58
  Object.defineProperty(exports, "validateKycMobileWorkflowConfigContract", { enumerable: true, get: function () { return kyc_mobile_contract_js_1.validateKycMobileWorkflowConfigContract; } });
59
+ var issuing_country_js_1 = require("./issuing-country.js");
60
+ Object.defineProperty(exports, "getIssuingCountryMetadata", { enumerable: true, get: function () { return issuing_country_js_1.getIssuingCountryMetadata; } });
61
+ Object.defineProperty(exports, "normalizeIssuingCountry", { enumerable: true, get: function () { return issuing_country_js_1.normalizeIssuingCountry; } });
62
+ Object.defineProperty(exports, "resolveIssuingCountry", { enumerable: true, get: function () { return issuing_country_js_1.resolveIssuingCountry; } });
54
63
  var flow_routing_js_1 = require("./flow-routing.js");
55
64
  Object.defineProperty(exports, "getNextFlowStepId", { enumerable: true, get: function () { return flow_routing_js_1.getNextFlowStepId; } });
56
65
  Object.defineProperty(exports, "getPreviousFlowStepId", { enumerable: true, get: function () { return flow_routing_js_1.getPreviousFlowStepId; } });
@@ -61,10 +70,17 @@ Object.defineProperty(exports, "checkDocumentLikelihood", { enumerable: true, ge
61
70
  var metadata_review_js_1 = require("./metadata-review.js");
62
71
  Object.defineProperty(exports, "analyzeImageMetadata", { enumerable: true, get: function () { return metadata_review_js_1.analyzeImageMetadata; } });
63
72
  var capture_normalization_js_1 = require("./capture-normalization.js");
73
+ Object.defineProperty(exports, "mapPreviewRectToImageCropWithDiagnostics", { enumerable: true, get: function () { return capture_normalization_js_1.mapPreviewRectToImageCropWithDiagnostics; } });
64
74
  Object.defineProperty(exports, "mapPreviewRectToImageCrop", { enumerable: true, get: function () { return capture_normalization_js_1.mapPreviewRectToImageCrop; } });
65
75
  Object.defineProperty(exports, "getRotationToExpectedOrientation", { enumerable: true, get: function () { return capture_normalization_js_1.getRotationToExpectedOrientation; } });
66
76
  Object.defineProperty(exports, "buildCaptureNormalizationPlan", { enumerable: true, get: function () { return capture_normalization_js_1.buildCaptureNormalizationPlan; } });
67
77
  Object.defineProperty(exports, "getDocumentCaptureFrameAspectRatio", { enumerable: true, get: function () { return capture_normalization_js_1.getDocumentCaptureFrameAspectRatio; } });
78
+ var document_placement_js_1 = require("./document-placement.js");
79
+ Object.defineProperty(exports, "CAPTURE_READY_AREA_MIN_BY_SHAPE", { enumerable: true, get: function () { return document_placement_js_1.CAPTURE_READY_AREA_MIN_BY_SHAPE; } });
80
+ Object.defineProperty(exports, "CAPTURE_READY_AREA_MAX_BY_SHAPE", { enumerable: true, get: function () { return document_placement_js_1.CAPTURE_READY_AREA_MAX_BY_SHAPE; } });
81
+ Object.defineProperty(exports, "CAPTURE_READY_CENTER_MAX_BY_SHAPE", { enumerable: true, get: function () { return document_placement_js_1.CAPTURE_READY_CENTER_MAX_BY_SHAPE; } });
82
+ Object.defineProperty(exports, "CAPTURE_READY_SAFE_INSET_MIN", { enumerable: true, get: function () { return document_placement_js_1.CAPTURE_READY_SAFE_INSET_MIN; } });
83
+ Object.defineProperty(exports, "evaluateDocumentPlacement", { enumerable: true, get: function () { return document_placement_js_1.evaluateDocumentPlacement; } });
68
84
  var sobel_js_1 = require("./sobel.js");
69
85
  Object.defineProperty(exports, "rgbaToGreyscale", { enumerable: true, get: function () { return sobel_js_1.rgbaToGreyscale; } });
70
86
  Object.defineProperty(exports, "rgbaToGreyscalePico", { enumerable: true, get: function () { return sobel_js_1.rgbaToGreyscalePico; } });
@@ -91,6 +107,14 @@ Object.defineProperty(exports, "MRZ_MIN_BAND_ASPECT", { enumerable: true, get: f
91
107
  Object.defineProperty(exports, "MRZ_MAX_BAND_ASPECT", { enumerable: true, get: function () { return mrz_band_detector_js_1.MRZ_MAX_BAND_ASPECT; } });
92
108
  Object.defineProperty(exports, "MRZ_SEARCH_TOP_FRAC", { enumerable: true, get: function () { return mrz_band_detector_js_1.MRZ_SEARCH_TOP_FRAC; } });
93
109
  Object.defineProperty(exports, "MRZ_DENSITY_SCORE_SATURATION", { enumerable: true, get: function () { return mrz_band_detector_js_1.MRZ_DENSITY_SCORE_SATURATION; } });
110
+ var mrz_check_digits_js_1 = require("./mrz-check-digits.js");
111
+ Object.defineProperty(exports, "getMrzCharacterValue", { enumerable: true, get: function () { return mrz_check_digits_js_1.getMrzCharacterValue; } });
112
+ Object.defineProperty(exports, "computeMrzCheckDigit", { enumerable: true, get: function () { return mrz_check_digits_js_1.computeMrzCheckDigit; } });
113
+ Object.defineProperty(exports, "normalizeMrzLines", { enumerable: true, get: function () { return mrz_check_digits_js_1.normalizeMrzLines; } });
114
+ Object.defineProperty(exports, "parseMrzText", { enumerable: true, get: function () { return mrz_check_digits_js_1.parseMrzText; } });
115
+ Object.defineProperty(exports, "validateMrzCheckDigits", { enumerable: true, get: function () { return mrz_check_digits_js_1.validateMrzCheckDigits; } });
116
+ var mrz_policy_js_1 = require("./mrz-policy.js");
117
+ Object.defineProperty(exports, "resolveDocumentMrzPolicy", { enumerable: true, get: function () { return mrz_policy_js_1.resolveDocumentMrzPolicy; } });
94
118
  var quality_checks_js_1 = require("./quality-checks.js");
95
119
  Object.defineProperty(exports, "getQualityBucket", { enumerable: true, get: function () { return quality_checks_js_1.getQualityBucket; } });
96
120
  Object.defineProperty(exports, "getSubmitAnywayThreshold", { enumerable: true, get: function () { return quality_checks_js_1.getSubmitAnywayThreshold; } });
@@ -98,6 +122,7 @@ Object.defineProperty(exports, "createQualityFailureState", { enumerable: true,
98
122
  Object.defineProperty(exports, "countFailedReview", { enumerable: true, get: function () { return quality_checks_js_1.countFailedReview; } });
99
123
  Object.defineProperty(exports, "shouldShowSubmitAnyway", { enumerable: true, get: function () { return quality_checks_js_1.shouldShowSubmitAnyway; } });
100
124
  Object.defineProperty(exports, "hasHardBlockingQualityFailure", { enumerable: true, get: function () { return quality_checks_js_1.hasHardBlockingQualityFailure; } });
125
+ Object.defineProperty(exports, "isRetryEscapableDocumentCornerFailure", { enumerable: true, get: function () { return quality_checks_js_1.isRetryEscapableDocumentCornerFailure; } });
101
126
  Object.defineProperty(exports, "getReviewModeFromDocumentType", { enumerable: true, get: function () { return quality_checks_js_1.getReviewModeFromDocumentType; } });
102
127
  Object.defineProperty(exports, "runDocumentQualityChecks", { enumerable: true, get: function () { return quality_checks_js_1.runDocumentQualityChecks; } });
103
128
  Object.defineProperty(exports, "runSelfieQualityChecks", { enumerable: true, get: function () { return quality_checks_js_1.runSelfieQualityChecks; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;AAuBH,uCAuBoB;AAtBlB,oGAAA,QAAQ,OAAA;AACR,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,oHAAA,wBAAwB,OAAA;AACxB,oHAAA,wBAAwB,OAAA;AACxB,oHAAA,wBAAwB,OAAA;AACxB,uHAAA,2BAA2B,OAAA;AAC3B,qHAAA,yBAAyB,OAAA;AACzB,0HAAA,8BAA8B,OAAA;AAC9B,iIAAA,qCAAqC,OAAA;AACrC,qHAAA,yBAAyB,OAAA;AACzB,kIAAA,sCAAsC,OAAA;AACtC,yHAAA,6BAA6B,OAAA;AAC7B,+HAAA,mCAAmC,OAAA;AACnC,kIAAA,sCAAsC,OAAA;AACtC,mIAAA,uCAAuC,OAAA;AACvC,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AAWjB,uDAU4B;AAT1B,wHAAA,oBAAoB,OAAA;AACpB,mHAAA,eAAe,OAAA;AACf,iIAAA,6BAA6B,OAAA;AAC7B,+HAAA,2BAA2B,OAAA;AAC3B,iIAAA,6BAA6B,OAAA;AAC7B,6HAAA,yBAAyB,OAAA;AACzB,8HAAA,0BAA0B,OAAA;AAC1B,wHAAA,oBAAoB,OAAA;AACpB,yHAAA,qBAAqB,OAAA;AASvB,mEAOkC;AANhC,qIAAA,2BAA2B,OAAA;AAC3B,mIAAA,yBAAyB,OAAA;AACzB,+IAAA,qCAAqC,OAAA;AACrC,4IAAA,kCAAkC,OAAA;AAClC,0IAAA,gCAAgC,OAAA;AAChC,iJAAA,uCAAuC,OAAA;AAKzC,qDAA6E;AAApE,oHAAA,iBAAiB,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAEjD,+EAA+E;AAC/E,mEAGkC;AAFhC,kIAAA,wBAAwB,OAAA;AACxB,iIAAA,uBAAuB,OAAA;AAKzB,2DAA4D;AAAnD,0HAAA,oBAAoB,OAAA;AAgB7B,uEAKoC;AAJlC,qIAAA,yBAAyB,OAAA;AACzB,4IAAA,gCAAgC,OAAA;AAChC,yIAAA,6BAA6B,OAAA;AAC7B,8IAAA,kCAAkC,OAAA;AAKpC,uCAKoB;AAJlB,2GAAA,eAAe,OAAA;AACf,+GAAA,mBAAmB,OAAA;AACnB,oHAAA,wBAAwB,OAAA;AACxB,sHAAA,0BAA0B,OAAA;AAK5B,2CAUsB;AATpB,+GAAA,iBAAiB,OAAA;AACjB,+GAAA,iBAAiB,OAAA;AACjB,sHAAA,wBAAwB,OAAA;AACxB,2HAAA,6BAA6B,OAAA;AAC7B,+GAAA,iBAAiB,OAAA;AACjB,gHAAA,kBAAkB,OAAA;AAClB,8GAAA,gBAAgB,OAAA;AAChB,0GAAA,YAAY,OAAA;AACZ,+GAAA,iBAAiB,OAAA;AASnB,+DAWgC;AAV9B,6HAAA,qBAAqB,OAAA;AACrB,yIAAA,iCAAiC,OAAA;AACjC,uIAAA,+BAA+B,OAAA;AAC/B,2HAAA,mBAAmB,OAAA;AACnB,2HAAA,mBAAmB,OAAA;AACnB,+HAAA,uBAAuB,OAAA;AACvB,2HAAA,mBAAmB,OAAA;AACnB,2HAAA,mBAAmB,OAAA;AACnB,2HAAA,mBAAmB,OAAA;AACnB,oIAAA,4BAA4B,OAAA;AAU9B,yDAkB6B;AAjB3B,qHAAA,gBAAgB,OAAA;AAChB,6HAAA,wBAAwB,OAAA;AACxB,8HAAA,yBAAyB,OAAA;AACzB,sHAAA,iBAAiB,OAAA;AACjB,2HAAA,sBAAsB,OAAA;AACtB,kIAAA,6BAA6B,OAAA;AAC7B,kIAAA,6BAA6B,OAAA;AAC7B,6HAAA,wBAAwB,OAAA;AACxB,2HAAA,sBAAsB,OAAA;AACtB,qHAAA,gBAAgB,OAAA;AAChB,mHAAA,cAAc,OAAA;AACd,4HAAA,uBAAuB,OAAA;AACvB,0HAAA,qBAAqB,OAAA;AACrB,0HAAA,qBAAqB,OAAA;AACrB,gIAAA,2BAA2B,OAAA;AAC3B,0HAAA,qBAAqB,OAAA;AACrB,6HAAA,wBAAwB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface ResolvedIssuingCountry {
2
+ countryCode: string;
3
+ alpha2?: string;
4
+ alpha3?: string;
5
+ name?: string;
6
+ source?: string;
7
+ }
8
+ export interface IssuingCountryResolutionInput {
9
+ documentMetadata?: Record<string, unknown> | null;
10
+ selectedDocumentAllowedIssuingCountries?: unknown;
11
+ documentPolicyAllowedIssuingCountries?: unknown;
12
+ }
13
+ export declare const normalizeIssuingCountry: (value: unknown, source?: string) => ResolvedIssuingCountry | undefined;
14
+ export declare const getIssuingCountryMetadata: (country: ResolvedIssuingCountry | undefined) => Record<string, string>;
15
+ export declare const resolveIssuingCountry: ({ documentMetadata, selectedDocumentAllowedIssuingCountries, documentPolicyAllowedIssuingCountries, }: IssuingCountryResolutionInput) => ResolvedIssuingCountry | undefined;
16
+ //# sourceMappingURL=issuing-country.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issuing-country.d.ts","sourceRoot":"","sources":["../../src/issuing-country.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClD,uCAAuC,CAAC,EAAE,OAAO,CAAC;IAClD,qCAAqC,CAAC,EAAE,OAAO,CAAC;CACjD;AA4CD,eAAO,MAAM,uBAAuB,GAClC,OAAO,OAAO,EACd,SAAS,MAAM,KACd,sBAAsB,GAAG,SAsB3B,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,SAAS,sBAAsB,GAAG,SAAS,KAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAYvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,uGAInC,6BAA6B,KAAG,sBAAsB,GAAG,SAc3D,CAAC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveIssuingCountry = exports.getIssuingCountryMetadata = exports.normalizeIssuingCountry = void 0;
4
+ const SIERRA_LEONE_COUNTRY = {
5
+ countryCode: 'SL',
6
+ alpha2: 'SL',
7
+ alpha3: 'SLE',
8
+ name: 'Sierra Leone',
9
+ };
10
+ const ISSUING_COUNTRY_ALIASES = new Map([
11
+ 'SL',
12
+ 'SLE',
13
+ 'SIERRA LEONE',
14
+ 'SIERRA_LEONE',
15
+ 'SIERRALEONE',
16
+ 'SIERRA LEONEAN',
17
+ 'SIERRA_LEONEAN',
18
+ 'SIERRALEONEAN',
19
+ ].map(alias => [alias, SIERRA_LEONE_COUNTRY]));
20
+ const normalizeTokenKey = (value) => value
21
+ .trim()
22
+ .toUpperCase()
23
+ .replace(/[\s-]+/g, '_');
24
+ const firstString = (value) => {
25
+ if (typeof value === 'string' && value.trim()) {
26
+ return value.trim();
27
+ }
28
+ if (Array.isArray(value)) {
29
+ return value
30
+ .find((entry) => typeof entry === 'string' && entry.trim().length > 0)
31
+ ?.trim();
32
+ }
33
+ return undefined;
34
+ };
35
+ const normalizeIssuingCountry = (value, source) => {
36
+ const rawValue = firstString(value);
37
+ if (!rawValue) {
38
+ return undefined;
39
+ }
40
+ const normalizedKey = normalizeTokenKey(rawValue);
41
+ const alias = ISSUING_COUNTRY_ALIASES.get(normalizedKey);
42
+ if (alias) {
43
+ return { ...alias, source };
44
+ }
45
+ const upper = rawValue.trim().toUpperCase();
46
+ if (/^[A-Z]{2}$/.test(upper)) {
47
+ return { countryCode: upper, alpha2: upper, source };
48
+ }
49
+ if (/^[A-Z]{3}$/.test(upper)) {
50
+ return { countryCode: upper, alpha3: upper, source };
51
+ }
52
+ return { countryCode: rawValue.trim(), name: rawValue.trim(), source };
53
+ };
54
+ exports.normalizeIssuingCountry = normalizeIssuingCountry;
55
+ const getIssuingCountryMetadata = (country) => {
56
+ if (!country) {
57
+ return {};
58
+ }
59
+ return {
60
+ issuingCountry: country.countryCode,
61
+ ...(country.alpha2 ? { issuingCountryAlpha2: country.alpha2 } : {}),
62
+ ...(country.alpha3 ? { issuingCountryAlpha3: country.alpha3 } : {}),
63
+ ...(country.name ? { issuingCountryName: country.name } : {}),
64
+ ...(country.source ? { issuingCountrySource: country.source } : {}),
65
+ };
66
+ };
67
+ exports.getIssuingCountryMetadata = getIssuingCountryMetadata;
68
+ const resolveIssuingCountry = ({ documentMetadata, selectedDocumentAllowedIssuingCountries, documentPolicyAllowedIssuingCountries, }) => {
69
+ const metadataCountry = (0, exports.normalizeIssuingCountry)(documentMetadata?.issuingCountry, 'document_metadata') ??
70
+ (0, exports.normalizeIssuingCountry)(documentMetadata?.issuingCountryAlpha2, 'document_metadata') ??
71
+ (0, exports.normalizeIssuingCountry)(documentMetadata?.issuingCountryAlpha3, 'document_metadata');
72
+ return (metadataCountry ??
73
+ (0, exports.normalizeIssuingCountry)(selectedDocumentAllowedIssuingCountries, 'selected_document_option') ??
74
+ (0, exports.normalizeIssuingCountry)(documentPolicyAllowedIssuingCountries, 'document_policy'));
75
+ };
76
+ exports.resolveIssuingCountry = resolveIssuingCountry;
77
+ //# sourceMappingURL=issuing-country.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issuing-country.js","sourceRoot":"","sources":["../../src/issuing-country.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
1
  export declare const KYC_MOBILE_VALID_ADDRESS_METHODS: readonly ["address_document", "front_door_photo", "typed_address"];
2
+ export declare const KYC_MOBILE_VALID_CAPTURE_MODES: readonly ["manual_unlock", "auto_capture"];
3
+ export declare const KYC_MOBILE_VALID_SUBMISSION_COMPLETION_MODES: readonly ["wait_for_workflow", "fast_handoff"];
4
+ export declare const KYC_MOBILE_VALID_ADDRESS_FIELD_MODES: readonly ["legacy_sl", "street_district_city"];
5
+ export declare const KYC_MOBILE_VALID_GPS_POLICIES: readonly ["auto", "manual", "disabled"];
2
6
  export declare const KYC_MOBILE_ADDRESS_STEP_IDS: readonly ["address-proof-start", "address-input", "address-proof-photo", "check-address-proof"];
3
7
  export declare const KYC_MOBILE_REQUIRED_TERMINAL_STEP_IDS: readonly ["loading", "resubmission", "decline", "manual-review", "error", "final"];
4
8
  export declare const KYC_MOBILE_SIERRA_LEONE_STEP_ORDER: readonly ["welcome", "document-selection", "document-start", "document-photo", "check-document", "document-photo-back-start", "document-photo-back", "check-document-photo-back", "selfie-start", "selfie", "check-selfie", "address-proof-start", "address-input", "address-proof-photo", "check-address-proof", "loading", "resubmission", "decline", "manual-review", "error", "final"];
5
9
  export declare const KYC_MOBILE_KNOWN_STEP_IDS: readonly ["welcome", "customer-info", "document-selection", "document-start", "document-photo", "check-document", "document-photo-back-start", "document-photo-back", "check-document-photo-back", "selfie-start", "selfie", "check-selfie", "address-proof-start", "address-input", "address-proof-photo", "check-address-proof", "loading", "resubmission", "decline", "manual-review", "error", "final"];
6
- export type KycMobileContractIssueCode = 'missing_config_array' | 'missing_required_step' | 'duplicate_step' | 'unknown_step' | 'unstable_step_id' | 'unsupported_address_method' | 'invalid_step_order';
10
+ export type KycMobileContractIssueCode = 'missing_config_array' | 'missing_required_step' | 'duplicate_step' | 'unknown_step' | 'unstable_step_id' | 'unsupported_address_method' | 'unsupported_ui_flag' | 'invalid_step_order';
7
11
  export interface KycMobileContractIssue {
8
12
  code: KycMobileContractIssueCode;
9
13
  path: string;
@@ -12,8 +16,16 @@ export interface KycMobileContractIssue {
12
16
  export interface KycMobileWorkflowConfigContract {
13
17
  kycSdkSteps?: unknown;
14
18
  kycSdkDocumentOptions?: unknown;
19
+ kycSdkDocumentPolicy?: {
20
+ allowedDocumentTypes?: unknown;
21
+ allowedIssuingCountries?: unknown;
22
+ } | null;
15
23
  kycSdkUi?: {
16
24
  allowedAddressMethods?: unknown;
25
+ captureMode?: unknown;
26
+ submissionCompletionMode?: unknown;
27
+ addressFieldMode?: unknown;
28
+ gpsPolicy?: unknown;
17
29
  } | null;
18
30
  }
19
31
  export declare function validateKycMobileWorkflowConfigContract(config: KycMobileWorkflowConfigContract | null | undefined): KycMobileContractIssue[];
@@ -1 +1 @@
1
- {"version":3,"file":"kyc-mobile-contract.d.ts","sourceRoot":"","sources":["../../src/kyc-mobile-contract.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gCAAgC,oEAAqC,CAAC;AAEnF,eAAO,MAAM,2BAA2B,iGAK9B,CAAC;AAEX,eAAO,MAAM,qCAAqC,oFAOxC,CAAC;AAEX,eAAO,MAAM,kCAAkC,4XAiBrC,CAAC;AAEX,eAAO,MAAM,yBAAyB,6YAe5B,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAClC,sBAAsB,GACtB,uBAAuB,GACvB,gBAAgB,GAChB,cAAc,GACd,kBAAkB,GAClB,4BAA4B,GAC5B,oBAAoB,CAAC;AAEzB,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,0BAA0B,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE;QACT,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC,GAAG,IAAI,CAAC;CACV;AA4CD,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,+BAA+B,GAAG,IAAI,GAAG,SAAS,GACzD,sBAAsB,EAAE,CAwG1B"}
1
+ {"version":3,"file":"kyc-mobile-contract.d.ts","sourceRoot":"","sources":["../../src/kyc-mobile-contract.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gCAAgC,oEAAqC,CAAC;AACnF,eAAO,MAAM,8BAA8B,4CAA6C,CAAC;AACzF,eAAO,MAAM,4CAA4C,gDAG/C,CAAC;AACX,eAAO,MAAM,oCAAoC,gDAAiD,CAAC;AACnG,eAAO,MAAM,6BAA6B,yCAA0C,CAAC;AAErF,eAAO,MAAM,2BAA2B,iGAK9B,CAAC;AAEX,eAAO,MAAM,qCAAqC,oFAOxC,CAAC;AAEX,eAAO,MAAM,kCAAkC,4XAiBrC,CAAC;AAEX,eAAO,MAAM,yBAAyB,6YAe5B,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAClC,sBAAsB,GACtB,uBAAuB,GACvB,gBAAgB,GAChB,cAAc,GACd,kBAAkB,GAClB,4BAA4B,GAC5B,qBAAqB,GACrB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,0BAA0B,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oBAAoB,CAAC,EAAE;QACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;KACnC,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,EAAE;QACT,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,IAAI,CAAC;CACV;AA4ED,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,+BAA+B,GAAG,IAAI,GAAG,SAAS,GACzD,sBAAsB,EAAE,CAoL1B"}
@@ -1,9 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KYC_MOBILE_KNOWN_STEP_IDS = exports.KYC_MOBILE_SIERRA_LEONE_STEP_ORDER = exports.KYC_MOBILE_REQUIRED_TERMINAL_STEP_IDS = exports.KYC_MOBILE_ADDRESS_STEP_IDS = exports.KYC_MOBILE_VALID_ADDRESS_METHODS = void 0;
3
+ exports.KYC_MOBILE_KNOWN_STEP_IDS = exports.KYC_MOBILE_SIERRA_LEONE_STEP_ORDER = exports.KYC_MOBILE_REQUIRED_TERMINAL_STEP_IDS = exports.KYC_MOBILE_ADDRESS_STEP_IDS = exports.KYC_MOBILE_VALID_GPS_POLICIES = exports.KYC_MOBILE_VALID_ADDRESS_FIELD_MODES = exports.KYC_MOBILE_VALID_SUBMISSION_COMPLETION_MODES = exports.KYC_MOBILE_VALID_CAPTURE_MODES = exports.KYC_MOBILE_VALID_ADDRESS_METHODS = void 0;
4
4
  exports.validateKycMobileWorkflowConfigContract = validateKycMobileWorkflowConfigContract;
5
5
  const address_proof_js_1 = require("./address-proof.js");
6
6
  exports.KYC_MOBILE_VALID_ADDRESS_METHODS = [...address_proof_js_1.ADDRESS_METHOD_ORDER];
7
+ exports.KYC_MOBILE_VALID_CAPTURE_MODES = ['manual_unlock', 'auto_capture'];
8
+ exports.KYC_MOBILE_VALID_SUBMISSION_COMPLETION_MODES = [
9
+ 'wait_for_workflow',
10
+ 'fast_handoff',
11
+ ];
12
+ exports.KYC_MOBILE_VALID_ADDRESS_FIELD_MODES = ['legacy_sl', 'street_district_city'];
13
+ exports.KYC_MOBILE_VALID_GPS_POLICIES = ['auto', 'manual', 'disabled'];
7
14
  exports.KYC_MOBILE_ADDRESS_STEP_IDS = [
8
15
  'address-proof-start',
9
16
  'address-input',
@@ -81,17 +88,64 @@ const pushOrderIssueIfInvalid = (issues, stepIndexById, beforeStepId, afterStepI
81
88
  return;
82
89
  pushInvalidStepOrderIssue(issues, beforeStepId, afterStepId);
83
90
  };
91
+ const pushUnsupportedUiFlagIssue = (issues, path, label, value) => {
92
+ issues.push({
93
+ code: 'unsupported_ui_flag',
94
+ path,
95
+ message: `KYC mobile config has unsupported ${label}: ${String(value)}`,
96
+ });
97
+ };
98
+ const validateOptionalStringEnum = (issues, value, allowed, path, label) => {
99
+ if (typeof value === 'undefined' || value === null || value === '') {
100
+ return;
101
+ }
102
+ const normalized = typeof value === 'string' ? value.trim().toLowerCase() : '';
103
+ if (allowed.includes(normalized)) {
104
+ return;
105
+ }
106
+ pushUnsupportedUiFlagIssue(issues, path, label, value);
107
+ };
84
108
  function validateKycMobileWorkflowConfigContract(config) {
85
109
  const issues = [];
86
- const steps = Array.isArray(config?.kycSdkSteps)
87
- ? config.kycSdkSteps.filter((step) => typeof step === 'string')
110
+ const safeConfig = config ?? {};
111
+ const documentOptions = Array.isArray(safeConfig.kycSdkDocumentOptions)
112
+ ? safeConfig.kycSdkDocumentOptions
113
+ : [];
114
+ const documentPolicy = safeConfig.kycSdkDocumentPolicy ?? {};
115
+ const uiConfig = safeConfig.kycSdkUi ?? {};
116
+ const steps = Array.isArray(safeConfig.kycSdkSteps)
117
+ ? safeConfig.kycSdkSteps.filter((step) => typeof step === 'string')
88
118
  : [];
89
119
  if (!steps.length) {
90
120
  pushMissingArrayIssue(issues, 'kycSdkSteps', 'mobile step configuration');
91
121
  }
92
- if (!Array.isArray(config?.kycSdkDocumentOptions) || config.kycSdkDocumentOptions.length === 0) {
122
+ if (documentOptions.length === 0) {
93
123
  pushMissingArrayIssue(issues, 'kycSdkDocumentOptions', 'mobile document configuration');
94
124
  }
125
+ const allowedPolicyIssuingCountries = Array.isArray(documentPolicy.allowedIssuingCountries)
126
+ ? documentPolicy.allowedIssuingCountries.filter((country) => typeof country === 'string' && country.trim().length > 0)
127
+ : [];
128
+ if (allowedPolicyIssuingCountries.length === 0) {
129
+ pushMissingArrayIssue(issues, 'kycSdkDocumentPolicy.allowedIssuingCountries', 'document issuing country policy');
130
+ }
131
+ if (documentOptions.length > 0) {
132
+ documentOptions.forEach((option, index) => {
133
+ const optionRecord = option && typeof option === 'object' && !Array.isArray(option)
134
+ ? option
135
+ : {};
136
+ const allowedIssuingCountries = Array.isArray(optionRecord.allowedIssuingCountries)
137
+ ? optionRecord.allowedIssuingCountries.filter((country) => typeof country === 'string' && country.trim().length > 0)
138
+ : [];
139
+ if (allowedIssuingCountries.length > 0) {
140
+ return;
141
+ }
142
+ issues.push({
143
+ code: 'missing_config_array',
144
+ path: `kycSdkDocumentOptions[${index}].allowedIssuingCountries`,
145
+ message: `KYC mobile document option is missing allowed issuing countries: ${typeof optionRecord.type === 'string' ? optionRecord.type : index}`,
146
+ });
147
+ });
148
+ }
95
149
  const seenSteps = new Set();
96
150
  const stepIndexById = new Map();
97
151
  for (const step of steps) {
@@ -123,8 +177,8 @@ function validateKycMobileWorkflowConfigContract(config) {
123
177
  }
124
178
  }
125
179
  }
126
- const allowedAddressMethods = Array.isArray(config?.kycSdkUi?.allowedAddressMethods)
127
- ? config.kycSdkUi.allowedAddressMethods
180
+ const allowedAddressMethods = Array.isArray(uiConfig.allowedAddressMethods)
181
+ ? uiConfig.allowedAddressMethods
128
182
  : [];
129
183
  const validAddressMethods = allowedAddressMethods.filter(address_proof_js_1.isAddressMethod);
130
184
  const shouldCollectProofMedia = validAddressMethods.some(method => method !== 'typed_address');
@@ -154,6 +208,10 @@ function validateKycMobileWorkflowConfigContract(config) {
154
208
  });
155
209
  }
156
210
  }
211
+ validateOptionalStringEnum(issues, uiConfig.captureMode, exports.KYC_MOBILE_VALID_CAPTURE_MODES, 'kycSdkUi.captureMode', 'capture mode');
212
+ validateOptionalStringEnum(issues, uiConfig.submissionCompletionMode, exports.KYC_MOBILE_VALID_SUBMISSION_COMPLETION_MODES, 'kycSdkUi.submissionCompletionMode', 'submission completion mode');
213
+ validateOptionalStringEnum(issues, uiConfig.addressFieldMode, exports.KYC_MOBILE_VALID_ADDRESS_FIELD_MODES, 'kycSdkUi.addressFieldMode', 'address field mode');
214
+ validateOptionalStringEnum(issues, uiConfig.gpsPolicy, exports.KYC_MOBILE_VALID_GPS_POLICIES, 'kycSdkUi.gpsPolicy', 'GPS policy');
157
215
  pushOrderIssueIfInvalid(issues, stepIndexById, 'address-proof-start', 'address-input');
158
216
  if (shouldCollectProofMedia) {
159
217
  pushOrderIssueIfInvalid(issues, stepIndexById, 'address-input', 'address-proof-photo');
@@ -1 +1 @@
1
- {"version":3,"file":"kyc-mobile-contract.js","sourceRoot":"","sources":["../../src/kyc-mobile-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kyc-mobile-contract.js","sourceRoot":"","sources":["../../src/kyc-mobile-contract.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,9 @@
14
14
  *
15
15
  * Algorithm (cheap enough for 15 fps on 320×240 mid-range Android):
16
16
  * 1. Restrict search to the bottom ~40% and mirrored top ~40% of the overlay
17
- * region so upside-down passports still surface the MRZ signal.
17
+ * region so upside-down passports still surface the MRZ signal. Callers
18
+ * can opt into additional lower-page slices for live passport capture,
19
+ * where the data page may sit high inside a tall viewfinder.
18
20
  * 2. For each row in that slice, count pixels where the absolute
19
21
  * horizontal gradient |I(x+1) − I(x−1)| exceeds a fixed threshold,
20
22
  * and record the leftmost / rightmost strong-gradient column.
@@ -38,7 +40,7 @@ export declare const MRZ_MAX_LINE_GAP = 8;
38
40
  export declare const MRZ_MIN_BAND_WIDTH_FRAC = 0.4;
39
41
  export declare const MRZ_MIN_BAND_ASPECT = 4;
40
42
  export declare const MRZ_MAX_BAND_ASPECT = 30;
41
- /** MRZ search window: bottom 0.55 1.0 of the overlay region (excludes the photo half). */
43
+ /** MRZ search window: bottom 0.55 -> 1.0 of the overlay region (excludes the photo half). */
42
44
  export declare const MRZ_SEARCH_TOP_FRAC = 0.55;
43
45
  /** Density at which the row-density score saturates (1.0). */
44
46
  export declare const MRZ_DENSITY_SCORE_SATURATION = 0.45;
@@ -50,9 +52,9 @@ export interface MrzBandDetectionInput {
50
52
  /** Height of the greyscale buffer. */
51
53
  greyH: number;
52
54
  /**
53
- * Region of interest in greyW×greyH pixel coords. The MRZ is searched in
54
- * the bottom `MRZ_SEARCH_TOP_FRAC..1.0` of this region and a mirrored top
55
- * slice for 180-degree rotations.
55
+ * Region of interest in greyW×greyH pixel coords. The MRZ is searched in
56
+ * the bottom `MRZ_SEARCH_TOP_FRAC..1.0` of this region and a mirrored top
57
+ * slice for 180-degree rotations.
56
58
  */
57
59
  region: {
58
60
  x1: number;
@@ -60,6 +62,11 @@ export interface MrzBandDetectionInput {
60
62
  x2: number;
61
63
  y2: number;
62
64
  };
65
+ /**
66
+ * Optional additional lower-page search starts as fractions of the region
67
+ * height. Existing callers omit this and keep the original fixed search.
68
+ */
69
+ extraSearchTopFracs?: readonly number[];
63
70
  }
64
71
  export interface MrzBandBoundingBox {
65
72
  x: number;
@@ -1 +1 @@
1
- {"version":3,"file":"mrz-band-detector.d.ts","sourceRoot":"","sources":["../../src/mrz-band-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,+BAA+B,OAAO,CAAC;AACpD,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,4FAA4F;AAC5F,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,8DAA8D;AAC9D,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,IAAI,EAAE,UAAU,GAAG,iBAAiB,CAAC;IACrC,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChC,kFAAkF;IAClF,cAAc,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;CACzB;AAoBD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CAsC1F"}
1
+ {"version":3,"file":"mrz-band-detector.d.ts","sourceRoot":"","sources":["../../src/mrz-band-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,+BAA+B,OAAO,CAAC;AACpD,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,8DAA8D;AAC9D,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,IAAI,EAAE,UAAU,GAAG,iBAAiB,CAAC;IACrC,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D;;;OAGG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChC,kFAAkF;IAClF,cAAc,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;CACzB;AAmCD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CA2C1F"}
@@ -15,7 +15,9 @@
15
15
  *
16
16
  * Algorithm (cheap enough for 15 fps on 320×240 mid-range Android):
17
17
  * 1. Restrict search to the bottom ~40% and mirrored top ~40% of the overlay
18
- * region so upside-down passports still surface the MRZ signal.
18
+ * region so upside-down passports still surface the MRZ signal. Callers
19
+ * can opt into additional lower-page slices for live passport capture,
20
+ * where the data page may sit high inside a tall viewfinder.
19
21
  * 2. For each row in that slice, count pixels where the absolute
20
22
  * horizontal gradient |I(x+1) − I(x−1)| exceeds a fixed threshold,
21
23
  * and record the leftmost / rightmost strong-gradient column.
@@ -42,7 +44,7 @@ exports.MRZ_MAX_LINE_GAP = 8;
42
44
  exports.MRZ_MIN_BAND_WIDTH_FRAC = 0.4;
43
45
  exports.MRZ_MIN_BAND_ASPECT = 4;
44
46
  exports.MRZ_MAX_BAND_ASPECT = 30;
45
- /** MRZ search window: bottom 0.55 1.0 of the overlay region (excludes the photo half). */
47
+ /** MRZ search window: bottom 0.55 -> 1.0 of the overlay region (excludes the photo half). */
46
48
  exports.MRZ_SEARCH_TOP_FRAC = 0.55;
47
49
  /** Density at which the row-density score saturates (1.0). */
48
50
  exports.MRZ_DENSITY_SCORE_SATURATION = 0.45;
@@ -64,8 +66,20 @@ function chooseMrzDetectionResult(results) {
64
66
  });
65
67
  return best ?? EMPTY_RESULT;
66
68
  }
69
+ function getSearchTopFracs(extraSearchTopFracs) {
70
+ const fracs = [exports.MRZ_SEARCH_TOP_FRAC, ...(extraSearchTopFracs ?? [])]
71
+ .filter(frac => Number.isFinite(frac) && frac > 0 && frac < 1)
72
+ .sort((a, b) => a - b);
73
+ const unique = [];
74
+ for (const frac of fracs) {
75
+ if (!unique.some(existing => Math.abs(existing - frac) < 0.001)) {
76
+ unique.push(frac);
77
+ }
78
+ }
79
+ return unique;
80
+ }
67
81
  function detectPassportMrzBand(input) {
68
- const { grey, greyW, greyH, region } = input;
82
+ const { grey, greyW, greyH, region, extraSearchTopFracs } = input;
69
83
  if (!grey || grey.length < greyW * greyH)
70
84
  return EMPTY_RESULT;
71
85
  const rx1 = Math.max(1, Math.min(greyW - 2, Math.round(region.x1)));
@@ -76,13 +90,14 @@ function detectPassportMrzBand(input) {
76
90
  const regionH = ry2 - ry1;
77
91
  if (regionW < 32 || regionH < 18)
78
92
  return EMPTY_RESULT;
79
- const bottomSliceY1 = ry1 + Math.floor(regionH * exports.MRZ_SEARCH_TOP_FRAC);
80
- const bottomSliceY2 = ry2;
81
- const sliceHeight = bottomSliceY2 - bottomSliceY1;
82
- const topSliceY1 = ry1;
83
- const topSliceY2 = Math.min(ry2, topSliceY1 + sliceHeight);
84
- return chooseMrzDetectionResult([
85
- detectPassportMrzBandInSlice({
93
+ const results = [];
94
+ for (const topFrac of getSearchTopFracs(extraSearchTopFracs)) {
95
+ const bottomSliceY1 = ry1 + Math.floor(regionH * topFrac);
96
+ const bottomSliceY2 = ry2;
97
+ const sliceHeight = bottomSliceY2 - bottomSliceY1;
98
+ const topSliceY1 = ry1;
99
+ const topSliceY2 = Math.min(ry2, topSliceY1 + sliceHeight);
100
+ results.push(detectPassportMrzBandInSlice({
86
101
  grey,
87
102
  greyW,
88
103
  rx1,
@@ -90,8 +105,7 @@ function detectPassportMrzBand(input) {
90
105
  regionW,
91
106
  sliceY1: bottomSliceY1,
92
107
  sliceY2: bottomSliceY2,
93
- }),
94
- detectPassportMrzBandInSlice({
108
+ }), detectPassportMrzBandInSlice({
95
109
  grey,
96
110
  greyW,
97
111
  rx1,
@@ -99,8 +113,9 @@ function detectPassportMrzBand(input) {
99
113
  regionW,
100
114
  sliceY1: topSliceY1,
101
115
  sliceY2: topSliceY2,
102
- }),
103
- ]);
116
+ }));
117
+ }
118
+ return chooseMrzDetectionResult(results);
104
119
  }
105
120
  function detectPassportMrzBandInSlice(input) {
106
121
  const { grey, greyW, rx1, rx2, regionW, sliceY1, sliceY2 } = input;
@@ -1 +1 @@
1
- {"version":3,"file":"mrz-band-detector.js","sourceRoot":"","sources":["../../src/mrz-band-detector.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;;AAsEH,sDAsCC;AA1GY,QAAA,iCAAiC,GAAG,EAAE,CAAC;AACvC,QAAA,+BAA+B,GAAG,IAAI,CAAC;AACvC,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACxB,QAAA,mBAAmB,GAAG,EAAE,CAAC;AACzB,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACxB,QAAA,gBAAgB,GAAG,CAAC,CAAC;AACrB,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAC9B,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACxB,QAAA,mBAAmB,GAAG,EAAE,CAAC;AACtC,4FAA4F;AAC/E,QAAA,mBAAmB,GAAG,IAAI,CAAC;AACxC,8DAA8D;AACjD,QAAA,4BAA4B,GAAG,IAAI,CAAC;AAsCjD,MAAM,YAAY,GAA2B,MAAM,CAAC,MAAM,CAAC;IACzD,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,IAAI;IACV,cAAc,EAAE,CAAC;IACjB,iBAAiB,EAAE,CAAC;IACpB,eAAe,EAAE,CAAC;CACnB,CAAC,CAAC;AAEH,SAAS,wBAAwB,CAAC,OAAiC;IACjE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClF,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QACtE,OAAO,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,IAAI,YAAY,CAAC;AAC9B,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAA4B;IAChE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC7C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK;QAAE,OAAO,YAAY,CAAC;IAE9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1B,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1B,IAAI,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,YAAY,CAAC;IAEtD,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,2BAAmB,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,GAAG,CAAC;IAC1B,MAAM,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC;IAClD,MAAM,UAAU,GAAG,GAAG,CAAC;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC;IAE3D,OAAO,wBAAwB,CAAC;QAC9B,4BAA4B,CAAC;YAC3B,IAAI;YACJ,KAAK;YACL,GAAG;YACH,GAAG;YACH,OAAO;YACP,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,aAAa;SACvB,CAAC;QACF,4BAA4B,CAAC;YAC3B,IAAI;YACJ,KAAK;YACL,GAAG;YACH,GAAG;YACH,OAAO;YACP,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;SACpB,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,4BAA4B,CAAC,KAQrC;IACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACnE,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACjC,IAAI,MAAM,GAAG,2BAAmB;QAAE,OAAO,YAAY,CAAC;IAEtD,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,IAAI,EAAE,GAAG,yCAAiC,EAAE,CAAC;gBAC3C,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC,CAAC;oBAAE,KAAK,GAAG,CAAC,CAAC;gBAC5B,IAAI,GAAG,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QACD,wEAAwE;QACxE,oEAAoE;QACpE,wEAAwE;QACxE,+DAA+D;QAC/D,oEAAoE;QACpE,EAAE;QACF,iDAAiD;QACjD,wDAAwD;QACxD,iEAAiE;QACjE,oEAAoE;QACpE,kEAAkE;QAClE,qEAAqE;QACrE,uEAAuE;QACvE,qEAAqE;QACrE,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QACpE,MAAM,kBAAkB,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;QACpE,UAAU,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;QACzB,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACrB,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACnB,IAAI,OAAO,GAAG,UAAU;YAAE,UAAU,GAAG,OAAO,CAAC;IACjD,CAAC;IAED,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,EAAE,GAAG,YAAY,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IAEnE,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,kCAAkC;IAClC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,uCAA+B,CAAC,CAAC;IACpF,MAAM,IAAI,GAOL,EAAE,CAAC;IACR,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC;QAC9D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,QAAQ,KAAK,CAAC,CAAC;gBAAE,QAAQ,GAAG,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC;YACvB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,IAAI,GAAG,QAAQ,CAAC;YACpB,IAAI,KAAK,GAAG,CAAC,QAAQ,CAAC;YACtB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;oBAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/D,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;oBAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC3C,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW;oBAAE,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,2BAAmB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBACrF,IAAI,CAAC,IAAI,CAAC;oBACR,KAAK;oBACL,GAAG;oBACH,SAAS,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC;oBAC1B,IAAI;oBACJ,KAAK;oBACL,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;YACD,QAAQ,GAAG,CAAC,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,GAAG,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,IAQlB,EAAE,EAAE;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;QAClC,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACrD,MAAM,QAAQ,GACZ,IAAI,CAAC,SAAS,IAAI,2BAAmB;YACrC,YAAY,IAAI,2BAAmB;YACnC,YAAY,IAAI,2BAAmB,CAAC;QACtC,MAAM,OAAO,GAAG,SAAS,IAAI,+BAAuB,CAAC;QACrD,MAAM,QAAQ,GAAG,UAAU,IAAI,2BAAmB,IAAI,UAAU,IAAI,2BAAmB,CAAC;QACxF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,oCAA4B,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,+BAAuB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzF,MAAM,WAAW,GAAG,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,CAAC,EACD,IAAI,CAAC,GAAG,CACN,CAAC,EACD,IAAI,GAAG,YAAY,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAChF,CACF,CAAC;QACF,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/E,OAAO;YACL,GAAG,IAAI;YACP,YAAY;YACZ,KAAK;YACL,SAAS;YACT,UAAU;YACV,KAAK,EAAE,WAAW,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ;YACrD,UAAU;SACX,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,UAAU,GAAmC,EAAE,CAAC;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,UAAU,CAAC,IAAI,CACb,SAAS,CAAC;YACR,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B,CAAC,CACH,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACrC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,wBAAgB;YAAE,SAAS;QAChD,UAAU,CAAC,IAAI,CACb,SAAS,CAAC;YACR,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YACzC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;YACnC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;YACtC,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;SACzD,CAAC,CACH,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,GAAG,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;IAElE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO;YACL,GAAG,YAAY;YACf,cAAc,EAAE,UAAU;YAC1B,iBAAiB,EAAE,IAAI,CAAC,SAAS;YACjC,eAAe,EAAE,IAAI,CAAC,UAAU;SACjC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE;YACJ,CAAC,EAAE,IAAI,CAAC,IAAI;YACZ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK;YACvB,CAAC,EAAE,IAAI,CAAC,KAAK;YACb,CAAC,EAAE,IAAI,CAAC,YAAY;SACrB;QACD,cAAc,EAAE,UAAU;QAC1B,iBAAiB,EAAE,IAAI,CAAC,SAAS;QACjC,eAAe,EAAE,IAAI,CAAC,UAAU;KACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mrz-band-detector.js","sourceRoot":"","sources":["../../src/mrz-band-detector.ts"],"names":[],"mappings":"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"}