smartcomply-web-sdk 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +15 -0
- package/README.md +482 -0
- package/dist/camera/ActionDetector.d.ts +26 -0
- package/dist/camera/ActionDetector.d.ts.map +1 -0
- package/dist/camera/ActionDetector.js +114 -0
- package/dist/camera/ActionDetector.js.map +1 -0
- package/dist/camera/CameraManager.d.ts +7 -0
- package/dist/camera/CameraManager.d.ts.map +1 -0
- package/dist/camera/CameraManager.js +31 -0
- package/dist/camera/CameraManager.js.map +1 -0
- package/dist/camera/FaceDetector.d.ts +12 -0
- package/dist/camera/FaceDetector.d.ts.map +1 -0
- package/dist/camera/FaceDetector.js +55 -0
- package/dist/camera/FaceDetector.js.map +1 -0
- package/dist/camera/Permission.d.ts +42 -0
- package/dist/camera/Permission.d.ts.map +1 -0
- package/dist/camera/Permission.js +107 -0
- package/dist/camera/Permission.js.map +1 -0
- package/dist/camera/VideoRecorder.d.ts +12 -0
- package/dist/camera/VideoRecorder.d.ts.map +1 -0
- package/dist/camera/VideoRecorder.js +51 -0
- package/dist/camera/VideoRecorder.js.map +1 -0
- package/dist/client/Config.d.ts +9 -0
- package/dist/client/Config.d.ts.map +1 -0
- package/dist/client/Config.js +8 -0
- package/dist/client/Config.js.map +1 -0
- package/dist/client/HttpClient.d.ts +44 -0
- package/dist/client/HttpClient.d.ts.map +1 -0
- package/dist/client/HttpClient.js +149 -0
- package/dist/client/HttpClient.js.map +1 -0
- package/dist/client/Smartcomply.d.ts +50 -0
- package/dist/client/Smartcomply.d.ts.map +1 -0
- package/dist/client/Smartcomply.js +77 -0
- package/dist/client/Smartcomply.js.map +1 -0
- package/dist/components/CameraView.d.ts +59 -0
- package/dist/components/CameraView.d.ts.map +1 -0
- package/dist/components/CameraView.js +242 -0
- package/dist/components/CameraView.js.map +1 -0
- package/dist/components/DocumentUpload.d.ts +21 -0
- package/dist/components/DocumentUpload.d.ts.map +1 -0
- package/dist/components/DocumentUpload.js +220 -0
- package/dist/components/DocumentUpload.js.map +1 -0
- package/dist/errors/AuthError.d.ts +8 -0
- package/dist/errors/AuthError.d.ts.map +1 -0
- package/dist/errors/AuthError.js +15 -0
- package/dist/errors/AuthError.js.map +1 -0
- package/dist/errors/NetworkError.d.ts +8 -0
- package/dist/errors/NetworkError.d.ts.map +1 -0
- package/dist/errors/NetworkError.js +15 -0
- package/dist/errors/NetworkError.js.map +1 -0
- package/dist/errors/SDKError.d.ts +7 -0
- package/dist/errors/SDKError.d.ts.map +1 -0
- package/dist/errors/SDKError.js +14 -0
- package/dist/errors/SDKError.js.map +1 -0
- package/dist/flow/DocumentCapture.d.ts +54 -0
- package/dist/flow/DocumentCapture.d.ts.map +1 -0
- package/dist/flow/DocumentCapture.js +801 -0
- package/dist/flow/DocumentCapture.js.map +1 -0
- package/dist/flow/SmartComplyFlow.d.ts +104 -0
- package/dist/flow/SmartComplyFlow.d.ts.map +1 -0
- package/dist/flow/SmartComplyFlow.js +1726 -0
- package/dist/flow/SmartComplyFlow.js.map +1 -0
- package/dist/flow/theme.d.ts +30 -0
- package/dist/flow/theme.d.ts.map +1 -0
- package/dist/flow/theme.js +103 -0
- package/dist/flow/theme.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/liveness/LivenessUI.d.ts +46 -0
- package/dist/modules/liveness/LivenessUI.d.ts.map +1 -0
- package/dist/modules/liveness/LivenessUI.js +609 -0
- package/dist/modules/liveness/LivenessUI.js.map +1 -0
- package/dist/modules/liveness/index.d.ts +5 -0
- package/dist/modules/liveness/index.d.ts.map +1 -0
- package/dist/modules/liveness/index.js +10 -0
- package/dist/modules/liveness/index.js.map +1 -0
- package/dist/modules/liveness/liveness.d.ts +85 -0
- package/dist/modules/liveness/liveness.d.ts.map +1 -0
- package/dist/modules/liveness/liveness.js +425 -0
- package/dist/modules/liveness/liveness.js.map +1 -0
- package/dist/modules/liveness/uploader.d.ts +34 -0
- package/dist/modules/liveness/uploader.d.ts.map +1 -0
- package/dist/modules/liveness/uploader.js +106 -0
- package/dist/modules/liveness/uploader.js.map +1 -0
- package/dist/modules/onboarding/index.d.ts +2 -0
- package/dist/modules/onboarding/index.d.ts.map +1 -0
- package/dist/modules/onboarding/index.js +6 -0
- package/dist/modules/onboarding/index.js.map +1 -0
- package/dist/modules/onboarding/onboarding.d.ts +25 -0
- package/dist/modules/onboarding/onboarding.d.ts.map +1 -0
- package/dist/modules/onboarding/onboarding.js +33 -0
- package/dist/modules/onboarding/onboarding.js.map +1 -0
- package/dist/smartcomply.browser.js +8147 -0
- package/dist/smartcomply.browser.js.map +7 -0
- package/dist/types/common.d.ts +27 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +3 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/liveness.d.ts +142 -0
- package/dist/types/liveness.d.ts.map +1 -0
- package/dist/types/liveness.js +3 -0
- package/dist/types/liveness.js.map +1 -0
- package/dist/types/onboarding.d.ts +53 -0
- package/dist/types/onboarding.d.ts.map +1 -0
- package/dist/types/onboarding.js +3 -0
- package/dist/types/onboarding.js.map +1 -0
- package/dist/types/quality.d.ts +23 -0
- package/dist/types/quality.d.ts.map +1 -0
- package/dist/types/quality.js +6 -0
- package/dist/types/quality.js.map +1 -0
- package/dist/utils/ImageQuality.d.ts +48 -0
- package/dist/utils/ImageQuality.d.ts.map +1 -0
- package/dist/utils/ImageQuality.js +186 -0
- package/dist/utils/ImageQuality.js.map +1 -0
- package/dist/utils/constants.d.ts +59 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +70 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/device.d.ts +14 -0
- package/dist/utils/device.d.ts.map +1 -0
- package/dist/utils/device.js +55 -0
- package/dist/utils/device.js.map +1 -0
- package/dist/utils/logger.d.ts +28 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +67 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/validator.d.ts +35 -0
- package/dist/utils/validator.d.ts.map +1 -0
- package/dist/utils/validator.js +116 -0
- package/dist/utils/validator.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard backend response envelope.
|
|
3
|
+
* Every backend endpoint wraps its data in this structure.
|
|
4
|
+
*/
|
|
5
|
+
export interface ApiResponse<T = unknown> {
|
|
6
|
+
status: "success" | "error";
|
|
7
|
+
code: string;
|
|
8
|
+
message: string;
|
|
9
|
+
data: T;
|
|
10
|
+
request_id: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Backend validation error entry.
|
|
14
|
+
*/
|
|
15
|
+
export interface FieldError {
|
|
16
|
+
field: string;
|
|
17
|
+
message: string;
|
|
18
|
+
code: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Backend error data shape.
|
|
22
|
+
*/
|
|
23
|
+
export interface ErrorData {
|
|
24
|
+
errors?: FieldError[];
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;IACR,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend-validated challenge actions. Only these 5 are accepted.
|
|
3
|
+
*/
|
|
4
|
+
export type ChallengeAction = "BLINK" | "TURN_LEFT" | "TURN_RIGHT" | "TURN_HEAD" | "OPEN_MOUTH";
|
|
5
|
+
/**
|
|
6
|
+
* Parameters for creating a liveness entry.
|
|
7
|
+
* Sent as multipart to POST /v1/sdk/liveness/create/
|
|
8
|
+
*/
|
|
9
|
+
export interface LivenessCreateRequest {
|
|
10
|
+
identifier: string;
|
|
11
|
+
identifier_type: string;
|
|
12
|
+
country: string;
|
|
13
|
+
challenge_actions: ChallengeAction[];
|
|
14
|
+
autoshot_file?: File | Blob;
|
|
15
|
+
id_file?: File | Blob;
|
|
16
|
+
document?: File | Blob;
|
|
17
|
+
document_front?: File | Blob;
|
|
18
|
+
document_back?: File | Blob;
|
|
19
|
+
snapshot_file?: File | Blob;
|
|
20
|
+
identity_check?: number;
|
|
21
|
+
device_type?: string;
|
|
22
|
+
os_name?: string;
|
|
23
|
+
browser_timezone?: string;
|
|
24
|
+
fingerprint_id?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Response from POST /v1/sdk/liveness/create/ (unwrapped).
|
|
28
|
+
*/
|
|
29
|
+
export interface LivenessCreateResponse {
|
|
30
|
+
id: number;
|
|
31
|
+
client_id: string;
|
|
32
|
+
challenge_actions: ChallengeAction[];
|
|
33
|
+
expires_at: string | null;
|
|
34
|
+
status: "pending";
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Response from POST /v1/sdk/liveness/submit/ (unwrapped).
|
|
38
|
+
*/
|
|
39
|
+
export interface LivenessSubmitResponse {
|
|
40
|
+
id: number;
|
|
41
|
+
status: "processing";
|
|
42
|
+
submitted_at: string | null;
|
|
43
|
+
metadata: Record<string, unknown>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Webhook payload shape for liveness.completed event.
|
|
47
|
+
* This is what the backend POSTs to the client's webhook_url.
|
|
48
|
+
*/
|
|
49
|
+
export interface LivenessWebhookPayload {
|
|
50
|
+
event: "liveness.completed";
|
|
51
|
+
verification_id: number;
|
|
52
|
+
verification_type: "data_verification" | "document_verification" | "liveness_only";
|
|
53
|
+
status: "passed" | "failed";
|
|
54
|
+
failure_reason: string | null;
|
|
55
|
+
timestamp: string;
|
|
56
|
+
subject: {
|
|
57
|
+
identifier: string;
|
|
58
|
+
identifier_type: string;
|
|
59
|
+
country: string;
|
|
60
|
+
};
|
|
61
|
+
biometrics: {
|
|
62
|
+
liveness_verified: boolean;
|
|
63
|
+
face_match: {
|
|
64
|
+
attempted: boolean;
|
|
65
|
+
verified: boolean | null;
|
|
66
|
+
confidence_percentage: number | null;
|
|
67
|
+
};
|
|
68
|
+
selfie_url: string | null;
|
|
69
|
+
face_analysis: {
|
|
70
|
+
estimated_age: number | null;
|
|
71
|
+
estimated_gender: string | null;
|
|
72
|
+
dominant_emotion: string | null;
|
|
73
|
+
} | null;
|
|
74
|
+
};
|
|
75
|
+
activity: {
|
|
76
|
+
session_id: string | null;
|
|
77
|
+
started_at: string;
|
|
78
|
+
submitted_at: string | null;
|
|
79
|
+
completed_at: string;
|
|
80
|
+
duration_seconds: number | null;
|
|
81
|
+
};
|
|
82
|
+
request_context: {
|
|
83
|
+
ip: {
|
|
84
|
+
address: string | null;
|
|
85
|
+
city: string | null;
|
|
86
|
+
region: string | null;
|
|
87
|
+
country_code: string | null;
|
|
88
|
+
org: string | null;
|
|
89
|
+
asn_number: string | null;
|
|
90
|
+
asn_name: string | null;
|
|
91
|
+
latitude: string | null;
|
|
92
|
+
longitude: string | null;
|
|
93
|
+
timezone: string | null;
|
|
94
|
+
country_matches_document: boolean | null;
|
|
95
|
+
timezone_matches_browser: boolean | null;
|
|
96
|
+
};
|
|
97
|
+
device: {
|
|
98
|
+
user_agent: string | null;
|
|
99
|
+
type: string | null;
|
|
100
|
+
os: string | null;
|
|
101
|
+
timezone: string | null;
|
|
102
|
+
fingerprint_id: string | null;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
customer_profile?: {
|
|
106
|
+
first_name: string | null;
|
|
107
|
+
last_name: string | null;
|
|
108
|
+
other_name: string | null;
|
|
109
|
+
date_of_birth: string | null;
|
|
110
|
+
gender: string | null;
|
|
111
|
+
id_number: string | null;
|
|
112
|
+
serial_number: string | null;
|
|
113
|
+
occupation: string | null;
|
|
114
|
+
place_of_birth: string | null;
|
|
115
|
+
place_of_live: string | null;
|
|
116
|
+
date_of_issue: string | null;
|
|
117
|
+
photo_url: string | null;
|
|
118
|
+
};
|
|
119
|
+
document?: {
|
|
120
|
+
status: string;
|
|
121
|
+
document_type: string;
|
|
122
|
+
is_expired: boolean;
|
|
123
|
+
first_name: string | null;
|
|
124
|
+
last_name: string | null;
|
|
125
|
+
date_of_birth: string | null;
|
|
126
|
+
age: number | null;
|
|
127
|
+
gender: string | null;
|
|
128
|
+
nationality: string | null;
|
|
129
|
+
document_number: string | null;
|
|
130
|
+
expiry_date: string | null;
|
|
131
|
+
issue_date: string | null;
|
|
132
|
+
issuing_authority: string | null;
|
|
133
|
+
face_match: {
|
|
134
|
+
attempted: boolean;
|
|
135
|
+
verified: boolean | null;
|
|
136
|
+
confidence_percentage: number | null;
|
|
137
|
+
selfie_url: string | null;
|
|
138
|
+
document_face_url: string | null;
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=liveness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liveness.d.ts","sourceRoot":"","sources":["../../src/types/liveness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liveness.js","sourceRoot":"","sources":["../../src/types/liveness.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported identity verification types.
|
|
3
|
+
* - "nin" / "bvn": Data verification (Nigeria-only, requires id_number)
|
|
4
|
+
* - "passport" / "national_id" / "drivers_license": Document verification (global)
|
|
5
|
+
*/
|
|
6
|
+
export type OnboardingType = "nin" | "bvn" | "passport" | "national_id" | "drivers_license";
|
|
7
|
+
/**
|
|
8
|
+
* Request payload for POST /v1/sdk/onboarding/verify/
|
|
9
|
+
* Uses identity_type_id (from ChannelItem.id) and dynamic fields.
|
|
10
|
+
*/
|
|
11
|
+
export interface VerifyIdentityRequest {
|
|
12
|
+
identity_type_id: number;
|
|
13
|
+
fields: Record<string, string>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Response from the onboarding verify endpoint (full envelope).
|
|
17
|
+
* Backend returns: { status, code, message, data }
|
|
18
|
+
*/
|
|
19
|
+
export interface VerifyIdentityResponse {
|
|
20
|
+
status: "success" | "verified" | "pending" | "failed";
|
|
21
|
+
code: string;
|
|
22
|
+
message: string;
|
|
23
|
+
data: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Session creation response (unwrapped from envelope).
|
|
27
|
+
*/
|
|
28
|
+
export interface SessionResponse {
|
|
29
|
+
token: string;
|
|
30
|
+
expires_at: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* SDK configuration returned by GET /v1/sdk/initialize/
|
|
34
|
+
*/
|
|
35
|
+
export interface SDKInitConfig {
|
|
36
|
+
id: number;
|
|
37
|
+
brand_name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
theme: string;
|
|
40
|
+
verification_type: string[];
|
|
41
|
+
redirect_url: string | null;
|
|
42
|
+
channels: Record<string, {
|
|
43
|
+
id: number;
|
|
44
|
+
name: string;
|
|
45
|
+
code?: string;
|
|
46
|
+
fields: {
|
|
47
|
+
type: string;
|
|
48
|
+
label: string;
|
|
49
|
+
options?: string[];
|
|
50
|
+
}[];
|
|
51
|
+
}[]>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=onboarding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/types/onboarding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,KAAK,GACL,UAAU,GACV,aAAa,GACb,iBAAiB,CAAC;AAEtB;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,EAAE,CAAA;KAAE,EAAE,CAAC,CAAC;CACxI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/types/onboarding.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for image quality assessment
|
|
3
|
+
*/
|
|
4
|
+
export interface QualityMetrics {
|
|
5
|
+
sharpness: number;
|
|
6
|
+
contrast: number;
|
|
7
|
+
brightness: number;
|
|
8
|
+
isBlurry: boolean;
|
|
9
|
+
hasGlare: boolean;
|
|
10
|
+
overallScore: number;
|
|
11
|
+
}
|
|
12
|
+
export interface QualityFeedback {
|
|
13
|
+
isValid: boolean;
|
|
14
|
+
message: string;
|
|
15
|
+
recommendations: string[];
|
|
16
|
+
quality: QualityMetrics;
|
|
17
|
+
}
|
|
18
|
+
export interface CaptureResult {
|
|
19
|
+
blob: Blob;
|
|
20
|
+
quality: QualityFeedback;
|
|
21
|
+
selectedFrom: number;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/types/quality.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/types/quality.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image Quality Assessment for Document Capture
|
|
3
|
+
* Client-side quality checks before sending to backend
|
|
4
|
+
*/
|
|
5
|
+
export interface QualityMetrics {
|
|
6
|
+
sharpness: number;
|
|
7
|
+
contrast: number;
|
|
8
|
+
brightness: number;
|
|
9
|
+
isBlurry: boolean;
|
|
10
|
+
hasGlare: boolean;
|
|
11
|
+
overallScore: number;
|
|
12
|
+
}
|
|
13
|
+
export interface QualityFeedback {
|
|
14
|
+
isValid: boolean;
|
|
15
|
+
message: string;
|
|
16
|
+
recommendations: string[];
|
|
17
|
+
quality: QualityMetrics;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Calculate image sharpness using Laplacian variance
|
|
21
|
+
* Higher values = sharper image
|
|
22
|
+
*/
|
|
23
|
+
export declare function calculateSharpness(imageData: ImageData): number;
|
|
24
|
+
/**
|
|
25
|
+
* Detect glare (overexposed areas)
|
|
26
|
+
*/
|
|
27
|
+
export declare function detectGlare(imageData: ImageData, threshold?: number): number;
|
|
28
|
+
/**
|
|
29
|
+
* Calculate contrast (standard deviation)
|
|
30
|
+
*/
|
|
31
|
+
export declare function calculateContrast(imageData: ImageData): number;
|
|
32
|
+
/**
|
|
33
|
+
* Calculate brightness (mean pixel value)
|
|
34
|
+
*/
|
|
35
|
+
export declare function calculateBrightness(imageData: ImageData): number;
|
|
36
|
+
/**
|
|
37
|
+
* Full quality assessment
|
|
38
|
+
*/
|
|
39
|
+
export declare function assessQuality(imageData: ImageData): QualityFeedback;
|
|
40
|
+
/**
|
|
41
|
+
* Get quality color for UI feedback
|
|
42
|
+
*/
|
|
43
|
+
export declare function getQualityColor(score: number): string;
|
|
44
|
+
/**
|
|
45
|
+
* Get quality message for display
|
|
46
|
+
*/
|
|
47
|
+
export declare function getQualityMessage(score: number): string;
|
|
48
|
+
//# sourceMappingURL=ImageQuality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageQuality.d.ts","sourceRoot":"","sources":["../../src/utils/ImageQuality.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAwC/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM,CAYjF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAgB9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAShE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe,CAyEnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKvD"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Image Quality Assessment for Document Capture
|
|
4
|
+
* Client-side quality checks before sending to backend
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.calculateSharpness = calculateSharpness;
|
|
8
|
+
exports.detectGlare = detectGlare;
|
|
9
|
+
exports.calculateContrast = calculateContrast;
|
|
10
|
+
exports.calculateBrightness = calculateBrightness;
|
|
11
|
+
exports.assessQuality = assessQuality;
|
|
12
|
+
exports.getQualityColor = getQualityColor;
|
|
13
|
+
exports.getQualityMessage = getQualityMessage;
|
|
14
|
+
/**
|
|
15
|
+
* Calculate image sharpness using Laplacian variance
|
|
16
|
+
* Higher values = sharper image
|
|
17
|
+
*/
|
|
18
|
+
function calculateSharpness(imageData) {
|
|
19
|
+
const { width, height, data } = imageData;
|
|
20
|
+
// Convert to grayscale
|
|
21
|
+
const gray = new Uint8Array(width * height);
|
|
22
|
+
for (let i = 0; i < width * height; i++) {
|
|
23
|
+
const idx = i * 4;
|
|
24
|
+
gray[i] = Math.round(0.299 * data[idx] + 0.587 * data[idx + 1] + 0.114 * data[idx + 2]);
|
|
25
|
+
}
|
|
26
|
+
// Apply Laplacian kernel
|
|
27
|
+
const laplacian = new Float32Array(width * height);
|
|
28
|
+
let sum = 0;
|
|
29
|
+
let sumSq = 0;
|
|
30
|
+
let count = 0;
|
|
31
|
+
for (let y = 1; y < height - 1; y++) {
|
|
32
|
+
for (let x = 1; x < width - 1; x++) {
|
|
33
|
+
const idx = y * width + x;
|
|
34
|
+
// Laplacian kernel
|
|
35
|
+
const val = -1 * gray[idx - width] +
|
|
36
|
+
-1 * gray[idx - 1] +
|
|
37
|
+
4 * gray[idx] +
|
|
38
|
+
-1 * gray[idx + 1] +
|
|
39
|
+
-1 * gray[idx + width];
|
|
40
|
+
laplacian[idx] = val;
|
|
41
|
+
sum += val;
|
|
42
|
+
sumSq += val * val;
|
|
43
|
+
count++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Calculate variance
|
|
47
|
+
const mean = sum / count;
|
|
48
|
+
const variance = (sumSq / count) - (mean * mean);
|
|
49
|
+
return Math.abs(variance);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Detect glare (overexposed areas)
|
|
53
|
+
*/
|
|
54
|
+
function detectGlare(imageData, threshold = 250) {
|
|
55
|
+
const { data } = imageData;
|
|
56
|
+
let overexposed = 0;
|
|
57
|
+
for (let i = 0; i < data.length; i += 4) {
|
|
58
|
+
const brightness = (data[i] + data[i + 1] + data[i + 2]) / 3;
|
|
59
|
+
if (brightness > threshold) {
|
|
60
|
+
overexposed++;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return overexposed / (data.length / 4);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Calculate contrast (standard deviation)
|
|
67
|
+
*/
|
|
68
|
+
function calculateContrast(imageData) {
|
|
69
|
+
const { data } = imageData;
|
|
70
|
+
let sum = 0;
|
|
71
|
+
let sumSq = 0;
|
|
72
|
+
const pixelCount = data.length / 4;
|
|
73
|
+
for (let i = 0; i < data.length; i += 4) {
|
|
74
|
+
const gray = 0.299 * data[i] + 0.587 * data[i + 1] + 0.114 * data[i + 2];
|
|
75
|
+
sum += gray;
|
|
76
|
+
sumSq += gray * gray;
|
|
77
|
+
}
|
|
78
|
+
const mean = sum / pixelCount;
|
|
79
|
+
const variance = (sumSq / pixelCount) - (mean * mean);
|
|
80
|
+
return Math.sqrt(variance);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Calculate brightness (mean pixel value)
|
|
84
|
+
*/
|
|
85
|
+
function calculateBrightness(imageData) {
|
|
86
|
+
const { data } = imageData;
|
|
87
|
+
let sum = 0;
|
|
88
|
+
for (let i = 0; i < data.length; i += 4) {
|
|
89
|
+
sum += (data[i] + data[i + 1] + data[i + 2]) / 3;
|
|
90
|
+
}
|
|
91
|
+
return sum / (data.length / 4);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Full quality assessment
|
|
95
|
+
*/
|
|
96
|
+
function assessQuality(imageData) {
|
|
97
|
+
const sharpness = calculateSharpness(imageData);
|
|
98
|
+
const glare = detectGlare(imageData);
|
|
99
|
+
const contrast = calculateContrast(imageData);
|
|
100
|
+
const brightness = calculateBrightness(imageData);
|
|
101
|
+
const isBlurry = sharpness < 80;
|
|
102
|
+
const hasGlare = glare > 0.15;
|
|
103
|
+
const isTooDark = brightness < 50;
|
|
104
|
+
const isTooBright = brightness > 200;
|
|
105
|
+
const lowContrast = contrast < 30;
|
|
106
|
+
// Calculate overall score (0-100)
|
|
107
|
+
let score = 100;
|
|
108
|
+
if (isBlurry)
|
|
109
|
+
score -= 40;
|
|
110
|
+
if (hasGlare)
|
|
111
|
+
score -= 25;
|
|
112
|
+
if (isTooDark)
|
|
113
|
+
score -= 20;
|
|
114
|
+
if (isTooBright)
|
|
115
|
+
score -= 20;
|
|
116
|
+
if (lowContrast)
|
|
117
|
+
score -= 15;
|
|
118
|
+
const metrics = {
|
|
119
|
+
sharpness: Math.round(sharpness * 10) / 10,
|
|
120
|
+
contrast: Math.round(contrast * 10) / 10,
|
|
121
|
+
brightness: Math.round(brightness * 10) / 10,
|
|
122
|
+
isBlurry,
|
|
123
|
+
hasGlare,
|
|
124
|
+
overallScore: Math.max(0, score),
|
|
125
|
+
};
|
|
126
|
+
// Generate feedback
|
|
127
|
+
const issues = [];
|
|
128
|
+
const recommendations = [];
|
|
129
|
+
if (isBlurry) {
|
|
130
|
+
issues.push("Too blurry");
|
|
131
|
+
recommendations.push("Hold camera steady");
|
|
132
|
+
recommendations.push("Ensure good lighting");
|
|
133
|
+
}
|
|
134
|
+
if (hasGlare) {
|
|
135
|
+
issues.push("Too much glare");
|
|
136
|
+
recommendations.push("Avoid direct light on document");
|
|
137
|
+
recommendations.push("Tilt document slightly");
|
|
138
|
+
}
|
|
139
|
+
if (isTooDark) {
|
|
140
|
+
issues.push("Too dark");
|
|
141
|
+
recommendations.push("Move to brighter area");
|
|
142
|
+
recommendations.push("Turn on more lights");
|
|
143
|
+
}
|
|
144
|
+
if (isTooBright) {
|
|
145
|
+
issues.push("Too bright");
|
|
146
|
+
recommendations.push("Reduce lighting");
|
|
147
|
+
recommendations.push("Move away from direct sun");
|
|
148
|
+
}
|
|
149
|
+
if (lowContrast) {
|
|
150
|
+
issues.push("Low contrast");
|
|
151
|
+
recommendations.push("Ensure even lighting");
|
|
152
|
+
}
|
|
153
|
+
const isValid = score >= 60;
|
|
154
|
+
const message = issues.length > 0
|
|
155
|
+
? issues.join(", ")
|
|
156
|
+
: "Good quality";
|
|
157
|
+
return {
|
|
158
|
+
isValid,
|
|
159
|
+
message,
|
|
160
|
+
recommendations: recommendations.slice(0, 3), // Max 3 recommendations
|
|
161
|
+
quality: metrics,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get quality color for UI feedback
|
|
166
|
+
*/
|
|
167
|
+
function getQualityColor(score) {
|
|
168
|
+
if (score >= 80)
|
|
169
|
+
return "#22c55e"; // Green
|
|
170
|
+
if (score >= 60)
|
|
171
|
+
return "#eab308"; // Yellow
|
|
172
|
+
return "#ef4444"; // Red
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get quality message for display
|
|
176
|
+
*/
|
|
177
|
+
function getQualityMessage(score) {
|
|
178
|
+
if (score >= 80)
|
|
179
|
+
return "Excellent - Ready to capture";
|
|
180
|
+
if (score >= 60)
|
|
181
|
+
return "Good - Can capture";
|
|
182
|
+
if (score >= 40)
|
|
183
|
+
return "Fair - Improve if possible";
|
|
184
|
+
return "Poor - Please adjust";
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=ImageQuality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageQuality.js","sourceRoot":"","sources":["../../src/utils/ImageQuality.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAsBH,gDAwCC;AAKD,kCAYC;AAKD,8CAgBC;AAKD,kDASC;AAKD,sCAyEC;AAKD,0CAIC;AAKD,8CAKC;AAjMD;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,SAAoB;IACrD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAE1C,uBAAuB;IACvB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IACnD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAE1B,mBAAmB;YACnB,MAAM,GAAG,GACP,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;gBACtB,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBAClB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;gBACb,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBAClB,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;YAEzB,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACrB,GAAG,IAAI,GAAG,CAAC;YACX,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC;YACnB,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAEjD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,SAAoB,EAAE,YAAoB,GAAG;IACvE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAC3B,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,UAAU,GAAG,SAAS,EAAE,CAAC;YAC3B,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAoB;IACpD,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAC3B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,GAAG,IAAI,IAAI,CAAC;QACZ,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC;IAC9B,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAEtD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAC3B,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,SAAoB;IAChD,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAElD,MAAM,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;IAC9B,MAAM,SAAS,GAAG,UAAU,GAAG,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,UAAU,GAAG,GAAG,CAAC;IACrC,MAAM,WAAW,GAAG,QAAQ,GAAG,EAAE,CAAC;IAElC,kCAAkC;IAClC,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,QAAQ;QAAE,KAAK,IAAI,EAAE,CAAC;IAC1B,IAAI,QAAQ;QAAE,KAAK,IAAI,EAAE,CAAC;IAC1B,IAAI,SAAS;QAAE,KAAK,IAAI,EAAE,CAAC;IAC3B,IAAI,WAAW;QAAE,KAAK,IAAI,EAAE,CAAC;IAC7B,IAAI,WAAW;QAAE,KAAK,IAAI,EAAE,CAAC;IAE7B,MAAM,OAAO,GAAmB;QAC9B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,EAAE;QAC1C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE;QACxC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,EAAE;QAC5C,QAAQ;QACR,QAAQ;QACR,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;KACjC,CAAC;IAEF,oBAAoB;IACpB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC3C,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,eAAe,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACvD,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC9C,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxC,eAAe,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC,CAAC,cAAc,CAAC;IAEnB,OAAO;QACL,OAAO;QACP,OAAO;QACP,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,wBAAwB;QACtE,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAa;IAC3C,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC,CAAC,QAAQ;IAC3C,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC,CAAC,SAAS;IAC5C,OAAO,SAAS,CAAC,CAAC,MAAM;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,8BAA8B,CAAC;IACvD,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,oBAAoB,CAAC;IAC7C,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,4BAA4B,CAAC;IACrD,OAAO,sBAAsB,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK-wide constants — single source of truth for limits, defaults and
|
|
3
|
+
* backend-defined magic values.
|
|
4
|
+
*/
|
|
5
|
+
export declare const ENDPOINTS: {
|
|
6
|
+
readonly SESSION_CREATE: "/v1/sdk/session/create/";
|
|
7
|
+
readonly SDK_INITIALIZE: "/v1/sdk/initialize/";
|
|
8
|
+
readonly ONBOARDING_VERIFY: "/v1/sdk/onboarding/verify/";
|
|
9
|
+
readonly LIVENESS_CREATE: "/v1/sdk/liveness/create/";
|
|
10
|
+
readonly LIVENESS_SUBMIT: "/v1/sdk/liveness/submit/";
|
|
11
|
+
readonly AVAILABLE_CHANNELS: "/v1/sdk/available-channels/";
|
|
12
|
+
};
|
|
13
|
+
/** Backend session TTL in milliseconds (30 minutes). */
|
|
14
|
+
export declare const SESSION_TTL_MS: number;
|
|
15
|
+
/** Warn the user this many ms before session expires. */
|
|
16
|
+
export declare const SESSION_WARN_BEFORE_MS: number;
|
|
17
|
+
/** Default request timeout in milliseconds. */
|
|
18
|
+
export declare const DEFAULT_TIMEOUT_MS = 30000;
|
|
19
|
+
/** Number of automatic retries on transient network errors. */
|
|
20
|
+
export declare const MAX_RETRIES = 2;
|
|
21
|
+
/** Delay between retries in milliseconds. */
|
|
22
|
+
export declare const RETRY_DELAY_MS = 1000;
|
|
23
|
+
/** Maximum document image size the backend accepts (5 MB). */
|
|
24
|
+
export declare const MAX_DOCUMENT_BYTES: number;
|
|
25
|
+
/** Maximum video size the backend accepts (50 MB). */
|
|
26
|
+
export declare const MAX_VIDEO_BYTES: number;
|
|
27
|
+
/** Maximum snapshot / autoshot size (2 MB). */
|
|
28
|
+
export declare const MAX_SNAPSHOT_BYTES: number;
|
|
29
|
+
/** Accepted MIME types for document images. */
|
|
30
|
+
export declare const ACCEPTED_IMAGE_TYPES: readonly ["image/jpeg", "image/png", "image/webp"];
|
|
31
|
+
/** JPEG quality used when encoding captured frames (0–1). */
|
|
32
|
+
export declare const CAPTURE_JPEG_QUALITY = 0.92;
|
|
33
|
+
/** Backend-accepted challenge actions (UPPERCASE). */
|
|
34
|
+
export declare const CHALLENGE_ACTIONS: readonly ["BLINK", "TURN_LEFT", "TURN_RIGHT", "TURN_HEAD", "OPEN_MOUTH"];
|
|
35
|
+
/** Default set sent when the caller does not specify actions. */
|
|
36
|
+
export declare const DEFAULT_CHALLENGE_ACTIONS: readonly ["BLINK", "TURN_LEFT", "OPEN_MOUTH"];
|
|
37
|
+
/** Time limit per liveness attempt in seconds. */
|
|
38
|
+
export declare const LIVENESS_TIME_LIMIT_SECONDS = 45;
|
|
39
|
+
/** Milliseconds to pause after all actions before capturing the final snapshot. */
|
|
40
|
+
export declare const POST_ACTION_SETTLE_MS = 800;
|
|
41
|
+
/** Ideal resolution for the front-facing liveness camera. */
|
|
42
|
+
export declare const CAMERA_IDEAL_WIDTH = 640;
|
|
43
|
+
export declare const CAMERA_IDEAL_HEIGHT = 480;
|
|
44
|
+
/** Ideal resolution for rear-facing document capture camera. */
|
|
45
|
+
export declare const DOC_CAMERA_IDEAL_WIDTH = 1280;
|
|
46
|
+
export declare const DOC_CAMERA_IDEAL_HEIGHT = 960;
|
|
47
|
+
/** Video bitrate used by MediaRecorder for liveness recordings (~1.4 MB / 45 s). */
|
|
48
|
+
export declare const RECORDING_BITS_PER_SECOND = 250000;
|
|
49
|
+
/** Max milliseconds to wait for an initial face detection before proceeding. */
|
|
50
|
+
export declare const FACE_DETECT_TIMEOUT_MS = 10000;
|
|
51
|
+
/** Polling interval for the face-present check (ms). */
|
|
52
|
+
export declare const FACE_DETECT_POLL_MS = 100;
|
|
53
|
+
/** How long (ms) the success overlay is shown before the flow advances. */
|
|
54
|
+
export declare const RESULT_OVERLAY_DURATION_MS = 2800;
|
|
55
|
+
/** localStorage key used to persist the browser fingerprint ID. */
|
|
56
|
+
export declare const FINGERPRINT_STORAGE_KEY = "_adhere_fid";
|
|
57
|
+
/** z-index for the SDK overlay — high enough to sit above any app content. */
|
|
58
|
+
export declare const OVERLAY_Z_INDEX = 99999;
|
|
59
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,SAAS;;;;;;;CAOZ,CAAC;AAIX,wDAAwD;AACxD,eAAO,MAAM,cAAc,QAAiB,CAAC;AAE7C,yDAAyD;AACzD,eAAO,MAAM,sBAAsB,QAAgB,CAAC;AAIpD,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,6CAA6C;AAC7C,eAAO,MAAM,cAAc,OAAQ,CAAC;AAIpC,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD,sDAAsD;AACtD,eAAO,MAAM,eAAe,QAAmB,CAAC;AAEhD,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB,oDAAqD,CAAC;AAEvF,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAIzC,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,0EAA2E,CAAC;AAE1G,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,+CAAgD,CAAC;AAEvF,kDAAkD;AAClD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAIzC,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,MAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,SAAU,CAAC;AAIjD,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAIvC,2EAA2E;AAC3E,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAEhD,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AAErD,8EAA8E;AAC9E,eAAO,MAAM,eAAe,QAAS,CAAC"}
|