@mikashboks/capture-intelligence-core 0.1.24 → 0.2.1

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 (57) hide show
  1. package/dist/cjs/capture-guidance.d.ts +106 -0
  2. package/dist/cjs/capture-guidance.d.ts.map +1 -0
  3. package/dist/cjs/capture-guidance.js +398 -0
  4. package/dist/cjs/capture-guidance.js.map +1 -0
  5. package/dist/cjs/index.d.ts +8 -3
  6. package/dist/cjs/index.d.ts.map +1 -1
  7. package/dist/cjs/index.js +35 -3
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/metrics.d.ts +30 -0
  10. package/dist/cjs/metrics.d.ts.map +1 -1
  11. package/dist/cjs/metrics.js +80 -0
  12. package/dist/cjs/metrics.js.map +1 -1
  13. package/dist/cjs/mrz-parser.d.ts +71 -0
  14. package/dist/cjs/mrz-parser.d.ts.map +1 -0
  15. package/dist/cjs/mrz-parser.js +160 -0
  16. package/dist/cjs/mrz-parser.js.map +1 -0
  17. package/dist/cjs/quality-checks.d.ts +5 -2
  18. package/dist/cjs/quality-checks.d.ts.map +1 -1
  19. package/dist/cjs/quality-checks.js +24 -3
  20. package/dist/cjs/quality-checks.js.map +1 -1
  21. package/dist/cjs/types.d.ts +18 -0
  22. package/dist/cjs/types.d.ts.map +1 -1
  23. package/dist/cjs/types.js +12 -1
  24. package/dist/cjs/types.js.map +1 -1
  25. package/dist/cjs/version.d.ts +7 -0
  26. package/dist/cjs/version.d.ts.map +1 -0
  27. package/dist/cjs/version.js +10 -0
  28. package/dist/cjs/version.js.map +1 -0
  29. package/dist/esm/capture-guidance.d.ts +106 -0
  30. package/dist/esm/capture-guidance.d.ts.map +1 -0
  31. package/dist/esm/capture-guidance.js +390 -0
  32. package/dist/esm/capture-guidance.js.map +1 -0
  33. package/dist/esm/index.d.ts +8 -3
  34. package/dist/esm/index.d.ts.map +1 -1
  35. package/dist/esm/index.js +6 -2
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/metrics.d.ts +30 -0
  38. package/dist/esm/metrics.d.ts.map +1 -1
  39. package/dist/esm/metrics.js +79 -1
  40. package/dist/esm/metrics.js.map +1 -1
  41. package/dist/esm/mrz-parser.d.ts +71 -0
  42. package/dist/esm/mrz-parser.d.ts.map +1 -0
  43. package/dist/esm/mrz-parser.js +156 -0
  44. package/dist/esm/mrz-parser.js.map +1 -0
  45. package/dist/esm/quality-checks.d.ts +5 -2
  46. package/dist/esm/quality-checks.d.ts.map +1 -1
  47. package/dist/esm/quality-checks.js +24 -3
  48. package/dist/esm/quality-checks.js.map +1 -1
  49. package/dist/esm/types.d.ts +18 -0
  50. package/dist/esm/types.d.ts.map +1 -1
  51. package/dist/esm/types.js +11 -0
  52. package/dist/esm/types.js.map +1 -1
  53. package/dist/esm/version.d.ts +7 -0
  54. package/dist/esm/version.d.ts.map +1 -0
  55. package/dist/esm/version.js +7 -0
  56. package/dist/esm/version.js.map +1 -0
  57. package/package.json +1 -1
package/dist/cjs/index.js CHANGED
@@ -9,14 +9,16 @@
9
9
  * objects, numeric values). Zero browser dependencies.
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.analyzeImageMetadata = exports.checkDocumentLikelihood = exports.getDocumentReviewProfile = exports.getDocumentCaptureGeometryProfile = 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.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.RELAXED_CAPTURE_READY_AREA_MIN_BY_SHAPE = exports.CAPTURE_READY_AREA_MIN_BY_SHAPE = exports.getDocumentCaptureFrameAspectRatio = exports.buildCaptureNormalizationPlan = exports.getRotationToExpectedOrientation = exports.mapPreviewRectToImageCrop = exports.mapPreviewRectToImageCropWithDiagnostics = void 0;
14
- exports.getOverrideBannerMessage = exports.getOverrideButtonText = exports.getNextButtonDisabledReason = exports.evaluateReviewFailure = exports.evaluateSelfieFailure = exports.evaluateDocumentFailure = exports.isFaceCentered = exports.checkFaceInImage = void 0;
12
+ exports.getDocumentReviewProfile = exports.getDocumentCaptureGeometryProfile = 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.SCENE_DARK_REGION_DYNAMIC_RANGE_MAX = exports.SCENE_DARK_SURROUND_LUMA_MAX = exports.CAM_BRIGHTNESS_MIN = exports.CAM_ANALYSIS_H = exports.CAM_ANALYSIS_W = exports.CamState = void 0;
13
+ exports.DOCUMENT_PLACEMENT_GUIDANCE_REASON = exports.resolveCaptureGuidanceSignal = exports.CAPTURE_GUIDANCE_SIGNAL_TABLE = exports.resolveDocumentMrzPolicy = exports.parseMrzLines = exports.MRZ_TD1_LINE_LENGTH = exports.MRZ_TD3_LINE_LENGTH = 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.isSceneDark = exports.computeSceneLightProfile = 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.RELAXED_CAPTURE_READY_AREA_MIN_BY_SHAPE = exports.CAPTURE_READY_AREA_MIN_BY_SHAPE = exports.getDocumentCaptureFrameAspectRatio = exports.buildCaptureNormalizationPlan = exports.getRotationToExpectedOrientation = exports.mapPreviewRectToImageCrop = exports.mapPreviewRectToImageCropWithDiagnostics = exports.analyzeImageMetadata = exports.checkDocumentLikelihood = void 0;
14
+ exports.getOverrideBannerMessage = exports.getOverrideButtonText = exports.getNextButtonDisabledReason = exports.evaluateReviewFailure = exports.evaluateSelfieFailure = exports.evaluateDocumentFailure = 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.CAPTURE_INTELLIGENCE_CORE_VERSION = exports.getMoveToMiddleFeedback = exports.getTiltAwayFromLightGuidance = exports.getDocumentSubjectLabel = exports.WRONG_SIDE_TURN_OVER_FEEDBACK = exports.AUTO_CAPTURE_BURST_ABORT_FEEDBACK = exports.INITIAL_DOCUMENT_FEEDBACK = exports.TAKING_PHOTO_META = exports.GOOD_HOLD_STILL_FEEDBACK = exports.MANUAL_CAPTURE_READY_FEEDBACK = exports.SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS = exports.READY_CHIME_GAIN = exports.READY_CHIME_NOTES = exports.CAPTURE_CONFIRMATION_HOLD_MS = exports.READY_SIGNAL_COOLDOWN_MS = exports.CAPTURE_SIGNAL_VIBRATION_PATTERNS = exports.CAPTURE_GUIDANCE_DAMPING_PROFILES = exports.mapSelfieIssueToGuidanceReason = void 0;
15
15
  var types_js_1 = require("./types.js");
16
16
  Object.defineProperty(exports, "CamState", { enumerable: true, get: function () { return types_js_1.CamState; } });
17
17
  Object.defineProperty(exports, "CAM_ANALYSIS_W", { enumerable: true, get: function () { return types_js_1.CAM_ANALYSIS_W; } });
18
18
  Object.defineProperty(exports, "CAM_ANALYSIS_H", { enumerable: true, get: function () { return types_js_1.CAM_ANALYSIS_H; } });
19
19
  Object.defineProperty(exports, "CAM_BRIGHTNESS_MIN", { enumerable: true, get: function () { return types_js_1.CAM_BRIGHTNESS_MIN; } });
20
+ Object.defineProperty(exports, "SCENE_DARK_SURROUND_LUMA_MAX", { enumerable: true, get: function () { return types_js_1.SCENE_DARK_SURROUND_LUMA_MAX; } });
21
+ Object.defineProperty(exports, "SCENE_DARK_REGION_DYNAMIC_RANGE_MAX", { enumerable: true, get: function () { return types_js_1.SCENE_DARK_REGION_DYNAMIC_RANGE_MAX; } });
20
22
  Object.defineProperty(exports, "CAM_BRIGHTNESS_MAX", { enumerable: true, get: function () { return types_js_1.CAM_BRIGHTNESS_MAX; } });
21
23
  Object.defineProperty(exports, "CAM_BLUR_THRESHOLD", { enumerable: true, get: function () { return types_js_1.CAM_BLUR_THRESHOLD; } });
22
24
  Object.defineProperty(exports, "CAM_EDGE_THRESHOLD", { enumerable: true, get: function () { return types_js_1.CAM_EDGE_THRESHOLD; } });
@@ -91,6 +93,8 @@ Object.defineProperty(exports, "detectDocumentCropFromGrey", { enumerable: true,
91
93
  var metrics_js_1 = require("./metrics.js");
92
94
  Object.defineProperty(exports, "rgbaToGreyInPlace", { enumerable: true, get: function () { return metrics_js_1.rgbaToGreyInPlace; } });
93
95
  Object.defineProperty(exports, "computeBrightness", { enumerable: true, get: function () { return metrics_js_1.computeBrightness; } });
96
+ Object.defineProperty(exports, "computeSceneLightProfile", { enumerable: true, get: function () { return metrics_js_1.computeSceneLightProfile; } });
97
+ Object.defineProperty(exports, "isSceneDark", { enumerable: true, get: function () { return metrics_js_1.isSceneDark; } });
94
98
  Object.defineProperty(exports, "computeLaplacianVariance", { enumerable: true, get: function () { return metrics_js_1.computeLaplacianVariance; } });
95
99
  Object.defineProperty(exports, "computeLaplacianVarianceFloat", { enumerable: true, get: function () { return metrics_js_1.computeLaplacianVarianceFloat; } });
96
100
  Object.defineProperty(exports, "computeEdgeEnergy", { enumerable: true, get: function () { return metrics_js_1.computeEdgeEnergy; } });
@@ -115,8 +119,36 @@ Object.defineProperty(exports, "computeMrzCheckDigit", { enumerable: true, get:
115
119
  Object.defineProperty(exports, "normalizeMrzLines", { enumerable: true, get: function () { return mrz_check_digits_js_1.normalizeMrzLines; } });
116
120
  Object.defineProperty(exports, "parseMrzText", { enumerable: true, get: function () { return mrz_check_digits_js_1.parseMrzText; } });
117
121
  Object.defineProperty(exports, "validateMrzCheckDigits", { enumerable: true, get: function () { return mrz_check_digits_js_1.validateMrzCheckDigits; } });
122
+ var mrz_parser_js_1 = require("./mrz-parser.js");
123
+ Object.defineProperty(exports, "MRZ_TD3_LINE_LENGTH", { enumerable: true, get: function () { return mrz_parser_js_1.MRZ_TD3_LINE_LENGTH; } });
124
+ Object.defineProperty(exports, "MRZ_TD1_LINE_LENGTH", { enumerable: true, get: function () { return mrz_parser_js_1.MRZ_TD1_LINE_LENGTH; } });
125
+ Object.defineProperty(exports, "parseMrzLines", { enumerable: true, get: function () { return mrz_parser_js_1.parseMrzLines; } });
118
126
  var mrz_policy_js_1 = require("./mrz-policy.js");
119
127
  Object.defineProperty(exports, "resolveDocumentMrzPolicy", { enumerable: true, get: function () { return mrz_policy_js_1.resolveDocumentMrzPolicy; } });
128
+ var capture_guidance_js_1 = require("./capture-guidance.js");
129
+ Object.defineProperty(exports, "CAPTURE_GUIDANCE_SIGNAL_TABLE", { enumerable: true, get: function () { return capture_guidance_js_1.CAPTURE_GUIDANCE_SIGNAL_TABLE; } });
130
+ Object.defineProperty(exports, "resolveCaptureGuidanceSignal", { enumerable: true, get: function () { return capture_guidance_js_1.resolveCaptureGuidanceSignal; } });
131
+ Object.defineProperty(exports, "DOCUMENT_PLACEMENT_GUIDANCE_REASON", { enumerable: true, get: function () { return capture_guidance_js_1.DOCUMENT_PLACEMENT_GUIDANCE_REASON; } });
132
+ Object.defineProperty(exports, "mapSelfieIssueToGuidanceReason", { enumerable: true, get: function () { return capture_guidance_js_1.mapSelfieIssueToGuidanceReason; } });
133
+ Object.defineProperty(exports, "CAPTURE_GUIDANCE_DAMPING_PROFILES", { enumerable: true, get: function () { return capture_guidance_js_1.CAPTURE_GUIDANCE_DAMPING_PROFILES; } });
134
+ Object.defineProperty(exports, "CAPTURE_SIGNAL_VIBRATION_PATTERNS", { enumerable: true, get: function () { return capture_guidance_js_1.CAPTURE_SIGNAL_VIBRATION_PATTERNS; } });
135
+ Object.defineProperty(exports, "READY_SIGNAL_COOLDOWN_MS", { enumerable: true, get: function () { return capture_guidance_js_1.READY_SIGNAL_COOLDOWN_MS; } });
136
+ Object.defineProperty(exports, "CAPTURE_CONFIRMATION_HOLD_MS", { enumerable: true, get: function () { return capture_guidance_js_1.CAPTURE_CONFIRMATION_HOLD_MS; } });
137
+ Object.defineProperty(exports, "READY_CHIME_NOTES", { enumerable: true, get: function () { return capture_guidance_js_1.READY_CHIME_NOTES; } });
138
+ Object.defineProperty(exports, "READY_CHIME_GAIN", { enumerable: true, get: function () { return capture_guidance_js_1.READY_CHIME_GAIN; } });
139
+ Object.defineProperty(exports, "SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS", { enumerable: true, get: function () { return capture_guidance_js_1.SELFIE_MANUAL_FALLBACK_HARD_BLOCK_EXTENSION_MS; } });
140
+ Object.defineProperty(exports, "MANUAL_CAPTURE_READY_FEEDBACK", { enumerable: true, get: function () { return capture_guidance_js_1.MANUAL_CAPTURE_READY_FEEDBACK; } });
141
+ Object.defineProperty(exports, "GOOD_HOLD_STILL_FEEDBACK", { enumerable: true, get: function () { return capture_guidance_js_1.GOOD_HOLD_STILL_FEEDBACK; } });
142
+ Object.defineProperty(exports, "TAKING_PHOTO_META", { enumerable: true, get: function () { return capture_guidance_js_1.TAKING_PHOTO_META; } });
143
+ Object.defineProperty(exports, "INITIAL_DOCUMENT_FEEDBACK", { enumerable: true, get: function () { return capture_guidance_js_1.INITIAL_DOCUMENT_FEEDBACK; } });
144
+ Object.defineProperty(exports, "AUTO_CAPTURE_BURST_ABORT_FEEDBACK", { enumerable: true, get: function () { return capture_guidance_js_1.AUTO_CAPTURE_BURST_ABORT_FEEDBACK; } });
145
+ Object.defineProperty(exports, "WRONG_SIDE_TURN_OVER_FEEDBACK", { enumerable: true, get: function () { return capture_guidance_js_1.WRONG_SIDE_TURN_OVER_FEEDBACK; } });
146
+ Object.defineProperty(exports, "getDocumentSubjectLabel", { enumerable: true, get: function () { return capture_guidance_js_1.getDocumentSubjectLabel; } });
147
+ Object.defineProperty(exports, "getTiltAwayFromLightGuidance", { enumerable: true, get: function () { return capture_guidance_js_1.getTiltAwayFromLightGuidance; } });
148
+ Object.defineProperty(exports, "getMoveToMiddleFeedback", { enumerable: true, get: function () { return capture_guidance_js_1.getMoveToMiddleFeedback; } });
149
+ /* -- Version beacon -------------------------------------------------------- */
150
+ var version_js_1 = require("./version.js");
151
+ Object.defineProperty(exports, "CAPTURE_INTELLIGENCE_CORE_VERSION", { enumerable: true, get: function () { return version_js_1.CAPTURE_INTELLIGENCE_CORE_VERSION; } });
120
152
  var quality_checks_js_1 = require("./quality-checks.js");
121
153
  Object.defineProperty(exports, "getQualityBucket", { enumerable: true, get: function () { return quality_checks_js_1.getQualityBucket; } });
122
154
  Object.defineProperty(exports, "getSubmitAnywayThreshold", { enumerable: true, get: function () { return quality_checks_js_1.getSubmitAnywayThreshold; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,36 @@ export declare function rgbaToGreyInPlace(rgba: Uint8ClampedArray | Uint8Array,
29
29
  * @param region - Overlay region in fractional coordinates
30
30
  */
31
31
  export declare function computeBrightness(grey: Uint8Array, w: number, h: number, region: OverlayRegion): number;
32
+ export interface SceneLightProfile {
33
+ /**
34
+ * Mean luma of the pixels OUTSIDE the document region. `undefined` when the
35
+ * raster contains no outside pixels (region covers the whole raster).
36
+ */
37
+ surroundLuma?: number;
38
+ /** p95 − p5 luma spread INSIDE the region (contrast available to detectors). */
39
+ regionDynamicRange: number;
40
+ }
41
+ /**
42
+ * Region-mean brightness alone is structurally blind at night: a dim-but-
43
+ * readable card meters well above the dark floor while the surround sits near
44
+ * black (prod 2026-06-10 22:52: card region ~46-49 vs CAM_BRIGHTNESS_MIN 28,
45
+ * surround ~12) — so too_dark never fired and the system misblamed geometry
46
+ * for the whole session. The dual signal below (dark surround AND compressed
47
+ * in-region dynamic range) identifies a dark SCENE without false-flagging a
48
+ * well-lit card on a dark desk, whose region dynamic range stays wide.
49
+ */
50
+ export declare function computeSceneLightProfile(grey: Uint8Array, w: number, h: number, region: OverlayRegion): SceneLightProfile;
51
+ /**
52
+ * True when the SCENE (not just the document region) is too dark for the
53
+ * detectors to work: near-black surround AND compressed contrast inside the
54
+ * region. Either signal alone is innocent — a dark desk in daylight keeps a
55
+ * wide region range; a washed-out region in bright light keeps a lit
56
+ * surround.
57
+ */
58
+ export declare function isSceneDark(profile: {
59
+ surroundLuma?: number;
60
+ regionDynamicRange?: number;
61
+ }): boolean;
32
62
  /**
33
63
  * Compute Laplacian variance for sharpness detection.
34
64
  * Higher values indicate sharper images.
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAa9E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,GAAG,UAAU,EACpC,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,MAAM,GACjB,IAAI,CAKN;AAID;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,GACpB,MAAM,CAcR;AAID;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB9F;AAID;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,EAAE,YAAY,CAAC;IACxB,kEAAkE;IAClE,SAAS,EAAE,YAAY,CAAC;IACxB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,GACpB,kBAAkB,CAiDpB;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CA0D3E;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAOzF;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,UAAU,GAAG,IAAI,GAC9B,YAAY,CA+Bd;AAID;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CA0CzF"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAe9E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,GAAG,UAAU,EACpC,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,MAAM,GACjB,IAAI,CAKN;AAID;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,GACpB,MAAM,CAcR;AAID,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,GACpB,iBAAiB,CAoDnB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAOV;AAID;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB9F;AAID;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,EAAE,YAAY,CAAC;IACxB,kEAAkE;IAClE,SAAS,EAAE,YAAY,CAAC;IACxB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,GACpB,kBAAkB,CAiDpB;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CA0D3E;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAOzF;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,UAAU,GAAG,IAAI,GAC9B,YAAY,CAsCd;AAID;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CA0CzF"}
@@ -13,6 +13,8 @@
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.rgbaToGreyInPlace = rgbaToGreyInPlace;
15
15
  exports.computeBrightness = computeBrightness;
16
+ exports.computeSceneLightProfile = computeSceneLightProfile;
17
+ exports.isSceneDark = isSceneDark;
16
18
  exports.computeLaplacianVariance = computeLaplacianVariance;
17
19
  exports.computeLaplacianVarianceFloat = computeLaplacianVarianceFloat;
18
20
  exports.computeEdgeEnergy = computeEdgeEnergy;
@@ -62,6 +64,78 @@ function computeBrightness(grey, w, h, region) {
62
64
  }
63
65
  return brightCount > 0 ? brightSum / brightCount : 0;
64
66
  }
67
+ /**
68
+ * Region-mean brightness alone is structurally blind at night: a dim-but-
69
+ * readable card meters well above the dark floor while the surround sits near
70
+ * black (prod 2026-06-10 22:52: card region ~46-49 vs CAM_BRIGHTNESS_MIN 28,
71
+ * surround ~12) — so too_dark never fired and the system misblamed geometry
72
+ * for the whole session. The dual signal below (dark surround AND compressed
73
+ * in-region dynamic range) identifies a dark SCENE without false-flagging a
74
+ * well-lit card on a dark desk, whose region dynamic range stays wide.
75
+ */
76
+ function computeSceneLightProfile(grey, w, h, region) {
77
+ const bx1 = Math.max(0, Math.round(region.x1 * w));
78
+ const by1 = Math.max(0, Math.round(region.y1 * h));
79
+ const bx2 = Math.min(w, Math.round(region.x2 * w));
80
+ const by2 = Math.min(h, Math.round(region.y2 * h));
81
+ const histogram = new Uint32Array(256);
82
+ let insideCount = 0;
83
+ let outsideSum = 0;
84
+ let outsideCount = 0;
85
+ for (let y = 0; y < h; y++) {
86
+ const rowOffset = y * w;
87
+ const rowInside = y >= by1 && y < by2;
88
+ for (let x = 0; x < w; x++) {
89
+ const value = grey[rowOffset + x];
90
+ if (rowInside && x >= bx1 && x < bx2) {
91
+ histogram[value]++;
92
+ insideCount++;
93
+ }
94
+ else {
95
+ outsideSum += value;
96
+ outsideCount++;
97
+ }
98
+ }
99
+ }
100
+ let regionDynamicRange = 0;
101
+ if (insideCount > 0) {
102
+ const p5Target = insideCount * 0.05;
103
+ const p95Target = insideCount * 0.95;
104
+ let cumulative = 0;
105
+ let p5 = 0;
106
+ let p95 = 255;
107
+ let p5Found = false;
108
+ for (let value = 0; value < 256; value++) {
109
+ cumulative += histogram[value];
110
+ if (!p5Found && cumulative >= p5Target) {
111
+ p5 = value;
112
+ p5Found = true;
113
+ }
114
+ if (cumulative >= p95Target) {
115
+ p95 = value;
116
+ break;
117
+ }
118
+ }
119
+ regionDynamicRange = Math.max(0, p95 - p5);
120
+ }
121
+ return {
122
+ ...(outsideCount > 0 ? { surroundLuma: outsideSum / outsideCount } : {}),
123
+ regionDynamicRange,
124
+ };
125
+ }
126
+ /**
127
+ * True when the SCENE (not just the document region) is too dark for the
128
+ * detectors to work: near-black surround AND compressed contrast inside the
129
+ * region. Either signal alone is innocent — a dark desk in daylight keeps a
130
+ * wide region range; a washed-out region in bright light keeps a lit
131
+ * surround.
132
+ */
133
+ function isSceneDark(profile) {
134
+ return (typeof profile.surroundLuma === 'number' &&
135
+ profile.surroundLuma < types_js_1.SCENE_DARK_SURROUND_LUMA_MAX &&
136
+ typeof profile.regionDynamicRange === 'number' &&
137
+ profile.regionDynamicRange < types_js_1.SCENE_DARK_REGION_DYNAMIC_RANGE_MAX);
138
+ }
65
139
  /* -- Blur (Laplacian variance) -------------------------------------------- */
66
140
  /**
67
141
  * Compute Laplacian variance for sharpness detection.
@@ -264,8 +338,14 @@ function analyzeFrame(grey, w, h, region, prevGreyData) {
264
338
  const docRect = detectDocumentRect(edgeResult.rowEnergy, edgeResult.colEnergy, edgeResult.regionW, edgeResult.regionH);
265
339
  // 5. Frame-to-frame difference (stability)
266
340
  const frameDiff = computeFrameDiff(grey, prevGreyData);
341
+ // 6. Scene light profile (low-light dual signal)
342
+ const sceneLight = computeSceneLightProfile(grey, w, h, region);
267
343
  return {
268
344
  brightness,
345
+ ...(typeof sceneLight.surroundLuma === 'number'
346
+ ? { surroundLuma: sceneLight.surroundLuma }
347
+ : {}),
348
+ regionDynamicRange: sceneLight.regionDynamicRange,
269
349
  blurScore,
270
350
  edgeEnergy: edgeResult.avgEdge,
271
351
  frameDiff,
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Strict ICAO 9303 MRZ parser for TD3 (passport, 2 x 44) and TD1 (ID card,
3
+ * 3 x 30) machine-readable zones.
4
+ *
5
+ * Unlike the tolerant `mrz-check-digits.ts` validator (which trims oversized
6
+ * OCR lines, autocorrects digit confusions, and supports TD2), this parser is
7
+ * format-exact: lines are only trimmed/uppercased, anything that is not an
8
+ * exact TD3/TD1 shape is rejected with a reason, and no OCR fuzzing is
9
+ * applied. Downstream capture gates use it as an unambiguous content signal.
10
+ *
11
+ * DOM-free and dependency-free; safe for web, native, and server consumers.
12
+ */
13
+ export type MrzFormat = 'td3' | 'td1';
14
+ export type MrzRejectionReason = 'wrong_line_count' | 'wrong_line_length' | 'invalid_characters';
15
+ export interface MrzFields {
16
+ documentCode: string;
17
+ issuingState: string;
18
+ surname: string;
19
+ givenNames: string;
20
+ documentNumber: string;
21
+ nationality: string;
22
+ /** Raw YYMMDD as printed in the MRZ. */
23
+ dateOfBirth: string;
24
+ /** Raw MRZ sex character: 'M', 'F', 'X', or '<'. */
25
+ sex: string;
26
+ /** Raw YYMMDD as printed in the MRZ. */
27
+ dateOfExpiry: string;
28
+ /** TD3 personal number / TD1 optional data 1, when non-filler. */
29
+ personalNumber?: string;
30
+ }
31
+ export interface MrzCheckDigits {
32
+ documentNumber: boolean;
33
+ dateOfBirth: boolean;
34
+ dateOfExpiry: boolean;
35
+ /** Only present when the TD3 personal-number field is non-filler. */
36
+ personalNumber?: boolean;
37
+ composite: boolean;
38
+ }
39
+ export interface MrzParseAccepted {
40
+ format: MrzFormat;
41
+ /** True only when every applicable check digit passes. */
42
+ valid: boolean;
43
+ reason?: undefined;
44
+ fields: MrzFields;
45
+ checkDigits: MrzCheckDigits;
46
+ allCheckDigitsValid: boolean;
47
+ /** Weighted fraction of passing check digits in [0, 1]; composite counts double. */
48
+ confidence: number;
49
+ }
50
+ export interface MrzParseRejected {
51
+ format: null;
52
+ valid: false;
53
+ reason: MrzRejectionReason;
54
+ fields: null;
55
+ checkDigits: null;
56
+ allCheckDigitsValid: false;
57
+ confidence: 0;
58
+ }
59
+ export type MrzParseResult = MrzParseAccepted | MrzParseRejected;
60
+ export declare const MRZ_TD3_LINE_LENGTH = 44;
61
+ export declare const MRZ_TD1_LINE_LENGTH = 30;
62
+ /**
63
+ * Parse candidate OCR lines as a strict ICAO 9303 TD3 or TD1 MRZ.
64
+ *
65
+ * Lines are trimmed, uppercased, and blank lines dropped; beyond that the
66
+ * shape must be exact (2 x 44 chars for TD3, 3 x 30 chars for TD1, alphabet
67
+ * `A-Z0-9<`). Anything else is rejected with a `reason` instead of being
68
+ * fuzzed into shape.
69
+ */
70
+ export declare function parseMrzLines(candidateLines: readonly string[]): MrzParseResult;
71
+ //# sourceMappingURL=mrz-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mrz-parser.d.ts","sourceRoot":"","sources":["../../src/mrz-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAEtC,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAEjG,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,0DAA0D;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,cAAc,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,mBAAmB,EAAE,KAAK,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEjE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAmJtC;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAc/E"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ /**
3
+ * Strict ICAO 9303 MRZ parser for TD3 (passport, 2 x 44) and TD1 (ID card,
4
+ * 3 x 30) machine-readable zones.
5
+ *
6
+ * Unlike the tolerant `mrz-check-digits.ts` validator (which trims oversized
7
+ * OCR lines, autocorrects digit confusions, and supports TD2), this parser is
8
+ * format-exact: lines are only trimmed/uppercased, anything that is not an
9
+ * exact TD3/TD1 shape is rejected with a reason, and no OCR fuzzing is
10
+ * applied. Downstream capture gates use it as an unambiguous content signal.
11
+ *
12
+ * DOM-free and dependency-free; safe for web, native, and server consumers.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MRZ_TD1_LINE_LENGTH = exports.MRZ_TD3_LINE_LENGTH = void 0;
16
+ exports.parseMrzLines = parseMrzLines;
17
+ const mrz_check_digits_js_1 = require("./mrz-check-digits.js");
18
+ exports.MRZ_TD3_LINE_LENGTH = 44;
19
+ exports.MRZ_TD1_LINE_LENGTH = 30;
20
+ const MRZ_LINE_CHARS = /^[A-Z0-9<]+$/;
21
+ const MRZ_COMPOSITE_CONFIDENCE_WEIGHT = 2;
22
+ function reject(reason) {
23
+ return {
24
+ format: null,
25
+ valid: false,
26
+ reason,
27
+ fields: null,
28
+ checkDigits: null,
29
+ allCheckDigitsValid: false,
30
+ confidence: 0,
31
+ };
32
+ }
33
+ function stripTrailingFillers(value) {
34
+ return value.replace(/<+$/, '');
35
+ }
36
+ function decodeNameComponent(value) {
37
+ return value.replace(/</g, ' ').replace(/ +/g, ' ').trim();
38
+ }
39
+ function parseNameField(value) {
40
+ const separatorIndex = value.indexOf('<<');
41
+ if (separatorIndex === -1) {
42
+ return { surname: decodeNameComponent(value), givenNames: '' };
43
+ }
44
+ return {
45
+ surname: decodeNameComponent(value.slice(0, separatorIndex)),
46
+ givenNames: decodeNameComponent(value.slice(separatorIndex + 2)),
47
+ };
48
+ }
49
+ function isAllCheckDigitsValid(checkDigits) {
50
+ return (checkDigits.documentNumber &&
51
+ checkDigits.dateOfBirth &&
52
+ checkDigits.dateOfExpiry &&
53
+ checkDigits.composite &&
54
+ checkDigits.personalNumber !== false);
55
+ }
56
+ function computeConfidence(checkDigits) {
57
+ const weighted = [
58
+ [checkDigits.documentNumber, 1],
59
+ [checkDigits.dateOfBirth, 1],
60
+ [checkDigits.dateOfExpiry, 1],
61
+ [checkDigits.personalNumber, 1],
62
+ [checkDigits.composite, MRZ_COMPOSITE_CONFIDENCE_WEIGHT],
63
+ ];
64
+ let total = 0;
65
+ let passed = 0;
66
+ for (const [result, weight] of weighted) {
67
+ if (result === undefined)
68
+ continue;
69
+ total += weight;
70
+ if (result)
71
+ passed += weight;
72
+ }
73
+ return total === 0 ? 0 : passed / total;
74
+ }
75
+ function accept(format, fields, checkDigits) {
76
+ const allCheckDigitsValid = isAllCheckDigitsValid(checkDigits);
77
+ return {
78
+ format,
79
+ valid: allCheckDigitsValid,
80
+ fields,
81
+ checkDigits,
82
+ allCheckDigitsValid,
83
+ confidence: computeConfidence(checkDigits),
84
+ };
85
+ }
86
+ function parseTd3(line1, line2) {
87
+ const rawPersonalNumber = line2.slice(28, 42);
88
+ const personalNumber = stripTrailingFillers(rawPersonalNumber);
89
+ const checkDigits = {
90
+ documentNumber: (0, mrz_check_digits_js_1.computeMrzCheckDigit)(line2.slice(0, 9)) === line2[9],
91
+ dateOfBirth: (0, mrz_check_digits_js_1.computeMrzCheckDigit)(line2.slice(13, 19)) === line2[19],
92
+ dateOfExpiry: (0, mrz_check_digits_js_1.computeMrzCheckDigit)(line2.slice(21, 27)) === line2[27],
93
+ composite: (0, mrz_check_digits_js_1.computeMrzCheckDigit)(`${line2.slice(0, 10)}${line2.slice(13, 20)}${line2.slice(21, 43)}`) ===
94
+ line2[43],
95
+ };
96
+ if (personalNumber !== '') {
97
+ checkDigits.personalNumber = (0, mrz_check_digits_js_1.computeMrzCheckDigit)(rawPersonalNumber) === line2[42];
98
+ }
99
+ const fields = {
100
+ documentCode: stripTrailingFillers(line1.slice(0, 2)),
101
+ issuingState: stripTrailingFillers(line1.slice(2, 5)),
102
+ ...parseNameField(line1.slice(5)),
103
+ documentNumber: stripTrailingFillers(line2.slice(0, 9)),
104
+ nationality: stripTrailingFillers(line2.slice(10, 13)),
105
+ dateOfBirth: line2.slice(13, 19),
106
+ sex: line2.slice(20, 21),
107
+ dateOfExpiry: line2.slice(21, 27),
108
+ };
109
+ if (personalNumber !== '') {
110
+ fields.personalNumber = personalNumber;
111
+ }
112
+ return accept('td3', fields, checkDigits);
113
+ }
114
+ function parseTd1(line1, line2, line3) {
115
+ const optionalData1 = stripTrailingFillers(line1.slice(15, 30));
116
+ const checkDigits = {
117
+ documentNumber: (0, mrz_check_digits_js_1.computeMrzCheckDigit)(line1.slice(5, 14)) === line1[14],
118
+ dateOfBirth: (0, mrz_check_digits_js_1.computeMrzCheckDigit)(line2.slice(0, 6)) === line2[6],
119
+ dateOfExpiry: (0, mrz_check_digits_js_1.computeMrzCheckDigit)(line2.slice(8, 14)) === line2[14],
120
+ composite: (0, mrz_check_digits_js_1.computeMrzCheckDigit)(`${line1.slice(5, 30)}${line2.slice(0, 7)}${line2.slice(8, 15)}${line2.slice(18, 29)}`) === line2[29],
121
+ };
122
+ const fields = {
123
+ documentCode: stripTrailingFillers(line1.slice(0, 2)),
124
+ issuingState: stripTrailingFillers(line1.slice(2, 5)),
125
+ ...parseNameField(line3),
126
+ documentNumber: stripTrailingFillers(line1.slice(5, 14)),
127
+ nationality: stripTrailingFillers(line2.slice(15, 18)),
128
+ dateOfBirth: line2.slice(0, 6),
129
+ sex: line2.slice(7, 8),
130
+ dateOfExpiry: line2.slice(8, 14),
131
+ };
132
+ if (optionalData1 !== '') {
133
+ fields.personalNumber = optionalData1;
134
+ }
135
+ return accept('td1', fields, checkDigits);
136
+ }
137
+ /**
138
+ * Parse candidate OCR lines as a strict ICAO 9303 TD3 or TD1 MRZ.
139
+ *
140
+ * Lines are trimmed, uppercased, and blank lines dropped; beyond that the
141
+ * shape must be exact (2 x 44 chars for TD3, 3 x 30 chars for TD1, alphabet
142
+ * `A-Z0-9<`). Anything else is rejected with a `reason` instead of being
143
+ * fuzzed into shape.
144
+ */
145
+ function parseMrzLines(candidateLines) {
146
+ const lines = candidateLines
147
+ .map(line => String(line).trim().toUpperCase())
148
+ .filter(line => line.length > 0);
149
+ if (lines.length !== 2 && lines.length !== 3)
150
+ return reject('wrong_line_count');
151
+ const expectedLength = lines.length === 2 ? exports.MRZ_TD3_LINE_LENGTH : exports.MRZ_TD1_LINE_LENGTH;
152
+ if (lines.some(line => line.length !== expectedLength))
153
+ return reject('wrong_line_length');
154
+ if (lines.some(line => !MRZ_LINE_CHARS.test(line)))
155
+ return reject('invalid_characters');
156
+ return lines.length === 2
157
+ ? parseTd3(lines[0], lines[1])
158
+ : parseTd1(lines[0], lines[1], lines[2]);
159
+ }
160
+ //# sourceMappingURL=mrz-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mrz-parser.js","sourceRoot":"","sources":["../../src/mrz-parser.ts"],"names":[],"mappings":"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"}
@@ -192,10 +192,13 @@ export declare function evaluateReviewFailure(checks: QualityCheckResults, optio
192
192
  export declare function getNextButtonDisabledReason(checks: QualityCheckResults, isSelfieOrOptions: boolean | ReviewDecisionOptions, isAddressProof?: boolean): string;
193
193
  /**
194
194
  * Get the override button text for the submit-anyway flow.
195
+ *
196
+ * The 'agent' persona strings are the agent-kyc-app's shipped copy, owned
197
+ * here so client and core cannot drift.
195
198
  */
196
- export declare function getOverrideButtonText(stepSig: string): string;
199
+ export declare function getOverrideButtonText(stepSig: string, persona?: 'self' | 'agent'): string;
197
200
  /**
198
201
  * Get the override banner message based on failure count and bucket.
199
202
  */
200
- export declare function getOverrideBannerMessage(stepSig: string, failCount: number, reviewMode?: ReviewMode): string;
203
+ export declare function getOverrideBannerMessage(stepSig: string, failCount: number, reviewMode?: ReviewMode, persona?: 'self' | 'agent'): string;
201
204
  //# sourceMappingURL=quality-checks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quality-checks.d.ts","sourceRoot":"","sources":["../../src/quality-checks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quality-checks.d.ts","sourceRoot":"","sources":["../../src/quality-checks.ts"],"names":[],"mappings":"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"}