smartcomply-web-sdk 1.0.49 → 1.0.51

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 (41) hide show
  1. package/dist/camera/ActionDetector.d.ts +15 -21
  2. package/dist/camera/ActionDetector.d.ts.map +1 -1
  3. package/dist/camera/ActionDetector.js +51 -104
  4. package/dist/camera/ActionDetector.js.map +1 -1
  5. package/dist/esm/camera/ActionDetector.d.ts +15 -21
  6. package/dist/esm/camera/ActionDetector.d.ts.map +1 -1
  7. package/dist/esm/camera/ActionDetector.js +51 -104
  8. package/dist/esm/camera/ActionDetector.js.map +1 -1
  9. package/dist/esm/flow/SmartComplyFlow.d.ts.map +1 -1
  10. package/dist/esm/flow/SmartComplyFlow.js +3 -4
  11. package/dist/esm/flow/SmartComplyFlow.js.map +1 -1
  12. package/dist/esm/modules/liveness/LivenessUI.d.ts +19 -15
  13. package/dist/esm/modules/liveness/LivenessUI.d.ts.map +1 -1
  14. package/dist/esm/modules/liveness/LivenessUI.js +99 -311
  15. package/dist/esm/modules/liveness/LivenessUI.js.map +1 -1
  16. package/dist/esm/modules/liveness/liveness.d.ts +10 -9
  17. package/dist/esm/modules/liveness/liveness.d.ts.map +1 -1
  18. package/dist/esm/modules/liveness/liveness.js +57 -104
  19. package/dist/esm/modules/liveness/liveness.js.map +1 -1
  20. package/dist/esm/utils/constants.d.ts +12 -6
  21. package/dist/esm/utils/constants.d.ts.map +1 -1
  22. package/dist/esm/utils/constants.js +13 -7
  23. package/dist/esm/utils/constants.js.map +1 -1
  24. package/dist/flow/SmartComplyFlow.d.ts.map +1 -1
  25. package/dist/flow/SmartComplyFlow.js +3 -4
  26. package/dist/flow/SmartComplyFlow.js.map +1 -1
  27. package/dist/modules/liveness/LivenessUI.d.ts +19 -15
  28. package/dist/modules/liveness/LivenessUI.d.ts.map +1 -1
  29. package/dist/modules/liveness/LivenessUI.js +99 -311
  30. package/dist/modules/liveness/LivenessUI.js.map +1 -1
  31. package/dist/modules/liveness/liveness.d.ts +10 -9
  32. package/dist/modules/liveness/liveness.d.ts.map +1 -1
  33. package/dist/modules/liveness/liveness.js +56 -103
  34. package/dist/modules/liveness/liveness.js.map +1 -1
  35. package/dist/smartcomply.browser.js +213 -513
  36. package/dist/smartcomply.browser.js.map +3 -3
  37. package/dist/utils/constants.d.ts +12 -6
  38. package/dist/utils/constants.d.ts.map +1 -1
  39. package/dist/utils/constants.js +13 -7
  40. package/dist/utils/constants.js.map +1 -1
  41. package/package.json +2 -2
@@ -1,107 +1,63 @@
1
- const ICONS = {
2
- BLINK: "👁",
3
- TURN_LEFT: "↔",
4
- TURN_RIGHT: "↔",
5
- TURN_HEAD: "↔",
6
- OPEN_MOUTH: "😮",
7
- };
8
- const ACTION_CUES = {
9
- BLINK: `<div style="font-size:52px;line-height:1;animation:sc-blink 1.2s ease-in-out infinite;">👁️</div>
10
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">BLINK YOUR EYES</div>`,
11
- TURN_LEFT: `<div style="font-size:52px;line-height:1;animation:sc-turn-head 1.4s ease-in-out infinite;">↔️</div>
12
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">TURN HEAD SIDEWAYS</div>`,
13
- TURN_RIGHT: `<div style="font-size:52px;line-height:1;animation:sc-turn-head 1.4s ease-in-out infinite;">↔️</div>
14
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">TURN HEAD SIDEWAYS</div>`,
15
- TURN_HEAD: `<div style="font-size:52px;line-height:1;animation:sc-turn-head 1.4s ease-in-out infinite;">↔️</div>
16
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">TURN HEAD SIDE TO SIDE</div>`,
17
- OPEN_MOUTH: `<div style="font-size:52px;line-height:1;animation:sc-mouth 1.2s ease-in-out infinite;">😮</div>
18
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">OPEN YOUR MOUTH</div>`,
19
- };
20
1
  function injectLivenessKeyframes() {
21
2
  if (document.getElementById("sc-liveness-kf"))
22
3
  return;
23
4
  const s = document.createElement("style");
24
5
  s.id = "sc-liveness-kf";
25
- s.textContent = `
26
- @keyframes sc-blink {
27
- 0%,100% { transform:scaleY(1); }
28
- 40% { transform:scaleY(0.1); }
29
- 50% { transform:scaleY(1); }
30
- }
31
- @keyframes sc-turn-head {
32
- 0%,100% { transform:translateX(0); }
33
- 25% { transform:translateX(-12px); }
34
- 75% { transform:translateX(12px); }
35
- }
36
- @keyframes sc-mouth {
37
- 0%,100% { transform:scaleY(1); }
38
- 40% { transform:scaleY(1.25); }
39
- 60% { transform:scaleY(1); }
40
- }
41
- @keyframes sc-pop-in {
42
- 0% { transform:scale(0.7); opacity:0; }
43
- 60% { transform:scale(1.05); }
44
- 100% { transform:scale(1); opacity:1; }
45
- }
6
+ s.textContent = `
7
+ @keyframes sc-pop-in {
8
+ 0% { transform:scale(0.7); opacity:0; }
9
+ 60% { transform:scale(1.05); }
10
+ 100% { transform:scale(1); opacity:1; }
11
+ }
12
+ @keyframes sc-scan-dot {
13
+ 0%,100% { opacity:0.3; transform:scale(0.85); }
14
+ 50% { opacity:1; transform:scale(1); }
15
+ }
46
16
  `;
47
17
  document.head.appendChild(s);
48
18
  }
19
+ /**
20
+ * Single-view passive liveness scan UI: full-width camera, oval face guide,
21
+ * one instruction line, a subtle scanning progress ring. No step-by-step
22
+ * challenge list — replaces the earlier two-column "BLINK / TURN_HEAD /
23
+ * OPEN_MOUTH" checklist design with a plain natural-motion scan.
24
+ */
49
25
  export class LivenessUI {
50
26
  constructor() {
51
27
  this.root = null;
52
28
  this.videoEl = null;
53
29
  this.instructionEl = null;
54
- this.stepsEl = null;
55
- this.progressBarEl = null;
56
30
  this.confidenceRingEl = null;
57
- this.timerEl = null;
58
31
  this.overlayEl = null;
59
- this.actionCueEl = null;
60
- this.timerInterval = null;
61
- this.totalActions = 0;
62
- this.currentCueAction = null;
32
+ this.dotsEl = null;
63
33
  this.docCaptureRoot = null;
64
- // updateActions() is called on every requestAnimationFrame tick (~60fps,
65
- // up to the challenge's ~45s time limit) — cache each action's step
66
- // element (avoids a querySelector per action per frame) and its last
67
- // rendered detected/active combination (avoids rewriting the same style
68
- // properties every frame when nothing about that action changed).
69
- this.stepEls = null;
70
- this.lastActionRender = new Map();
34
+ this.scanStartMs = 0;
35
+ this.scanDurationMs = 0;
71
36
  }
72
37
  mount(container, challenge) {
73
38
  injectLivenessKeyframes();
74
- this.totalActions = challenge.actions.length;
75
- // ── Root — two-column layout ──────────────────────────────────────
76
39
  this.root = document.createElement("div");
77
- this.root.style.cssText = `
78
- display:flex;flex-direction:row;width:100%;margin:0 auto;
79
- background:#0a0a0a;border-radius:16px;overflow:hidden;
80
- font-family:system-ui,-apple-system,sans-serif;
81
- box-shadow:0 8px 32px rgba(0,0,0,0.4);
82
- min-height:340px;
83
- `;
84
- // ── LEFT: Camera column ───────────────────────────────────────────
85
- const camCol = document.createElement("div");
86
- camCol.style.cssText = `
87
- position:relative;flex:0 0 55%;
88
- background:#000;overflow:hidden;
40
+ this.root.style.cssText = `
41
+ position:relative;width:100%;max-width:420px;margin:0 auto;
42
+ background:#0a0a0a;border-radius:16px;overflow:hidden;
43
+ font-family:system-ui,-apple-system,sans-serif;
44
+ box-shadow:0 8px 32px rgba(0,0,0,0.4);
45
+ aspect-ratio:3/4;
89
46
  `;
90
47
  this.videoEl = document.createElement("video");
91
48
  this.videoEl.autoplay = true;
92
49
  this.videoEl.playsInline = true;
93
50
  this.videoEl.muted = true;
94
- this.videoEl.style.cssText = `
95
- width:100%;height:100%;display:block;
96
- transform:scaleX(-1);object-fit:cover;
97
- min-height:320px;
51
+ this.videoEl.style.cssText = `
52
+ width:100%;height:100%;display:block;
53
+ transform:scaleX(-1);object-fit:cover;
98
54
  `;
99
- // Oval guide — centred in camera column
55
+ // Oval guide — centred
100
56
  const guideWrap = document.createElement("div");
101
- guideWrap.style.cssText = `
102
- position:absolute;top:50%;left:50%;
103
- transform:translate(-50%,-55%);
104
- width:140px;height:180px;pointer-events:none;
57
+ guideWrap.style.cssText = `
58
+ position:absolute;top:50%;left:50%;
59
+ transform:translate(-50%,-52%);
60
+ width:64%;aspect-ratio:140/180;pointer-events:none;
105
61
  `;
106
62
  const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
107
63
  svg.setAttribute("viewBox", "0 0 140 180");
@@ -112,9 +68,8 @@ export class LivenessUI {
112
68
  bgOval.setAttribute("rx", "64");
113
69
  bgOval.setAttribute("ry", "86");
114
70
  bgOval.setAttribute("fill", "none");
115
- bgOval.setAttribute("stroke", "rgba(255,255,255,0.3)");
71
+ bgOval.setAttribute("stroke", "rgba(255,255,255,0.35)");
116
72
  bgOval.setAttribute("stroke-width", "2");
117
- bgOval.setAttribute("stroke-dasharray", "6 3");
118
73
  const confOval = document.createElementNS("http://www.w3.org/2000/svg", "ellipse");
119
74
  confOval.setAttribute("cx", "70");
120
75
  confOval.setAttribute("cy", "90");
@@ -126,231 +81,99 @@ export class LivenessUI {
126
81
  const circ = 2 * Math.PI * Math.sqrt((64 * 64 + 86 * 86) / 2);
127
82
  confOval.setAttribute("stroke-dasharray", `${circ}`);
128
83
  confOval.setAttribute("stroke-dashoffset", `${circ}`);
129
- confOval.style.cssText = "transition:stroke-dashoffset 0.15s ease;transform:rotate(-90deg);transform-origin:70px 90px;";
84
+ confOval.style.cssText = "transition:stroke-dashoffset 0.2s linear;transform:rotate(-90deg);transform-origin:70px 90px;";
130
85
  this.confidenceRingEl = confOval;
131
86
  svg.appendChild(bgOval);
132
87
  svg.appendChild(confOval);
133
88
  guideWrap.appendChild(svg);
134
- // Instruction text — top of camera column
89
+ // Instruction — top, gradient scrim
135
90
  const camTop = document.createElement("div");
136
- camTop.style.cssText = `
137
- position:absolute;top:0;left:0;right:0;
138
- background:linear-gradient(180deg,rgba(0,0,0,0.8) 0%,transparent 100%);
139
- padding:10px 12px 28px;
91
+ camTop.style.cssText = `
92
+ position:absolute;top:0;left:0;right:0;
93
+ background:linear-gradient(180deg,rgba(0,0,0,0.8) 0%,transparent 100%);
94
+ padding:14px 16px 32px;
140
95
  `;
141
96
  this.instructionEl = document.createElement("div");
142
- this.instructionEl.style.cssText = `
143
- color:#fff;font-size:13px;font-weight:600;text-align:center;line-height:1.4;
97
+ this.instructionEl.style.cssText = `
98
+ color:#fff;font-size:14px;font-weight:600;text-align:center;line-height:1.4;
144
99
  `;
145
100
  this.instructionEl.textContent = challenge.instruction;
146
101
  camTop.appendChild(this.instructionEl);
147
- // Timer — bottom of camera column
102
+ // Scan progress dots — bottom
148
103
  const camBottom = document.createElement("div");
149
- camBottom.style.cssText = `
150
- position:absolute;bottom:0;left:0;right:0;
151
- background:linear-gradient(0deg,rgba(0,0,0,0.7) 0%,transparent 100%);
152
- padding:24px 10px 8px;text-align:center;
153
- `;
154
- this.timerEl = document.createElement("div");
155
- this.timerEl.style.cssText = `
156
- color:rgba(255,255,255,0.5);font-size:11px;font-variant-numeric:tabular-nums;
157
- `;
158
- camBottom.appendChild(this.timerEl);
159
- // Action cue — centre of camera column
160
- this.actionCueEl = document.createElement("div");
161
- this.actionCueEl.style.cssText = `
162
- position:absolute;bottom:36px;left:50%;transform:translateX(-50%);
163
- z-index:5;pointer-events:none;display:none;text-align:center;
164
- background:rgba(0,0,0,0.6);backdrop-filter:blur(4px);
165
- border-radius:14px;padding:10px 18px;min-width:170px;
166
- border:1.5px solid rgba(255,255,255,0.12);
167
- `;
168
- camCol.appendChild(this.videoEl);
169
- camCol.appendChild(guideWrap);
170
- camCol.appendChild(camTop);
171
- camCol.appendChild(camBottom);
172
- camCol.appendChild(this.actionCueEl);
173
- // ── RIGHT: Steps column ───────────────────────────────────────────
174
- const stepsCol = document.createElement("div");
175
- stepsCol.style.cssText = `
176
- flex:1;display:flex;flex-direction:column;
177
- padding:16px 14px;gap:8px;
178
- background:#111;border-left:1px solid rgba(255,255,255,0.06);
179
- justify-content:space-between;
180
- `;
181
- // Progress bar at top of steps column
182
- const progressWrap = document.createElement("div");
183
- progressWrap.style.cssText = `
184
- height:3px;background:rgba(255,255,255,0.1);border-radius:2px;overflow:hidden;
185
- margin-bottom:4px;
104
+ camBottom.style.cssText = `
105
+ position:absolute;bottom:0;left:0;right:0;
106
+ background:linear-gradient(0deg,rgba(0,0,0,0.7) 0%,transparent 100%);
107
+ padding:28px 10px 18px;display:flex;justify-content:center;
186
108
  `;
187
- this.progressBarEl = document.createElement("div");
188
- this.progressBarEl.style.cssText = `
189
- height:100%;width:0%;background:linear-gradient(90deg,#22c55e,#4ade80);
190
- border-radius:2px;transition:width 0.4s ease;
191
- `;
192
- progressWrap.appendChild(this.progressBarEl);
193
- // Steps list
194
- this.stepsEl = document.createElement("div");
195
- this.stepsEl.style.cssText = "display:flex;flex-direction:column;gap:6px;flex:1;";
196
- this.stepEls = new Map();
197
- this.lastActionRender = new Map();
198
- for (let i = 0; i < challenge.actions.length; i++) {
199
- const action = challenge.actions[i];
200
- const step = document.createElement("div");
201
- step.dataset.action = action;
202
- step.style.cssText = `
203
- display:flex;align-items:center;gap:8px;
204
- padding:8px 10px;border-radius:10px;
205
- background:rgba(255,255,255,0.04);
206
- border:1px solid rgba(255,255,255,0.06);
207
- transition:all 0.3s ease;
208
- opacity:${i === 0 ? "1" : "0.45"};
209
- `;
210
- const num = document.createElement("div");
211
- num.className = "sc-step-num";
212
- num.style.cssText = `
213
- width:24px;height:24px;border-radius:50%;flex-shrink:0;
214
- display:flex;align-items:center;justify-content:center;
215
- font-size:12px;font-weight:700;color:#fff;
216
- background:rgba(255,255,255,0.1);
217
- border:1.5px solid rgba(255,255,255,0.2);
218
- transition:all 0.3s ease;
109
+ this.dotsEl = document.createElement("div");
110
+ this.dotsEl.style.cssText = "display:flex;gap:6px;";
111
+ for (let i = 0; i < 3; i++) {
112
+ const dot = document.createElement("div");
113
+ dot.style.cssText = `
114
+ width:6px;height:6px;border-radius:50%;background:#22c55e;
115
+ animation:sc-scan-dot 1.1s ease-in-out ${i * 0.18}s infinite;
219
116
  `;
220
- num.textContent = String(i + 1);
221
- const label = document.createElement("div");
222
- label.style.cssText = "color:#fff;font-size:12px;font-weight:500;flex:1;line-height:1.3;";
223
- label.textContent = this.describeAction(action);
224
- const icon = document.createElement("div");
225
- icon.style.cssText = "font-size:16px;flex-shrink:0;";
226
- icon.textContent = ICONS[action] || "";
227
- step.appendChild(num);
228
- step.appendChild(label);
229
- step.appendChild(icon);
230
- this.stepsEl.appendChild(step);
231
- this.stepEls.set(action, { step, num });
117
+ this.dotsEl.appendChild(dot);
232
118
  }
233
- stepsCol.appendChild(progressWrap);
234
- stepsCol.appendChild(this.stepsEl);
235
- // Result overlay — full root
119
+ camBottom.appendChild(this.dotsEl);
120
+ this.root.appendChild(this.videoEl);
121
+ this.root.appendChild(guideWrap);
122
+ this.root.appendChild(camTop);
123
+ this.root.appendChild(camBottom);
124
+ // Result overlay
236
125
  this.overlayEl = document.createElement("div");
237
- this.overlayEl.style.cssText = `
238
- position:absolute;inset:0;display:none;align-items:center;
239
- justify-content:center;z-index:10;
240
- background:rgba(0,0,0,0.88);backdrop-filter:blur(8px);
126
+ this.overlayEl.style.cssText = `
127
+ position:absolute;inset:0;display:none;align-items:center;
128
+ justify-content:center;z-index:10;
129
+ background:rgba(0,0,0,0.88);backdrop-filter:blur(8px);
241
130
  `;
242
- // ── Assemble ──────────────────────────────────────────────────────
243
- this.root.appendChild(camCol);
244
- this.root.appendChild(stepsCol);
245
131
  this.root.appendChild(this.overlayEl);
246
132
  container.appendChild(this.root);
247
- this.startTimer(challenge.time_limit_seconds);
133
+ this.scanDurationMs = challenge.time_limit_seconds * 1000;
134
+ this.startScanClock();
248
135
  return this.videoEl;
249
136
  }
250
- updateActions(states) {
251
- if (!this.stepsEl || !this.progressBarEl || !this.stepEls)
252
- return;
253
- let completed = 0;
254
- for (const state of states) {
255
- if (state.detected)
256
- completed++;
257
- // Called every rAF tick (~60fps, up to ~45s) — most frames carry the
258
- // same detected/active combination as the last one, so skip the DOM
259
- // writes entirely unless this action's discrete state actually flipped.
260
- const renderKey = state.detected ? "detected" : state.active ? "active" : "idle";
261
- if (this.lastActionRender.get(state.action) === renderKey)
262
- continue;
263
- this.lastActionRender.set(state.action, renderKey);
264
- const cached = this.stepEls.get(state.action);
265
- if (!cached)
266
- continue;
267
- const { step, num } = cached;
268
- if (state.detected) {
269
- step.style.opacity = "1";
270
- step.style.background = "rgba(34,197,94,0.12)";
271
- step.style.borderColor = "rgba(34,197,94,0.3)";
272
- if (num) {
273
- num.style.background = "#22c55e";
274
- num.style.borderColor = "#22c55e";
275
- num.textContent = "✓";
276
- }
277
- }
278
- else if (state.active) {
279
- step.style.opacity = "1";
280
- step.style.background = "rgba(59,130,246,0.12)";
281
- step.style.borderColor = "rgba(59,130,246,0.3)";
282
- if (num) {
283
- num.style.borderColor = "#3b82f6";
284
- num.style.background = "rgba(59,130,246,0.3)";
285
- }
286
- }
287
- }
288
- const activeState = states.find((s) => s.active && !s.detected) ?? null;
289
- const pct = this.totalActions > 0 ? (completed / this.totalActions) * 100 : 0;
290
- this.progressBarEl.style.width = `${pct}%`;
291
- if (this.confidenceRingEl) {
292
- const circ = 2 * Math.PI * Math.sqrt((64 * 64 + 86 * 86) / 2);
293
- const conf = activeState ? activeState.confidence : 0;
294
- this.confidenceRingEl.setAttribute("stroke-dashoffset", `${circ * (1 - conf)}`);
295
- this.confidenceRingEl.setAttribute("stroke", conf > 0.6 ? "#22c55e" : "#3b82f6");
296
- }
297
- this.updateActionCue(activeState?.action ?? null);
137
+ /**
138
+ * Resets the progress ring's clock to now. The caller (liveness.ts) mounts
139
+ * the UI, then waits ~1s for camera AE/AF to settle before the detection
140
+ * loop actually starts — call this again right when detection begins so
141
+ * the ring's timing matches the real scan window instead of running ahead.
142
+ */
143
+ startScanClock() {
144
+ this.scanStartMs = performance.now();
298
145
  }
299
- updateActionCue(action) {
300
- if (!this.actionCueEl)
301
- return;
302
- if (!action) {
303
- this.actionCueEl.style.display = "none";
304
- this.currentCueAction = null;
305
- return;
306
- }
307
- if (action === this.currentCueAction)
308
- return;
309
- this.currentCueAction = action;
310
- const cueHtml = ACTION_CUES[action];
311
- if (!cueHtml) {
312
- this.actionCueEl.style.display = "none";
146
+ /** Advances the scan progress ring based on elapsed time in the window. */
147
+ updateScanProgress(livenessConfirmed) {
148
+ if (!this.confidenceRingEl)
313
149
  return;
314
- }
315
- this.actionCueEl.innerHTML = cueHtml;
316
- this.actionCueEl.style.display = "block";
317
- this.actionCueEl.style.animation = "none";
318
- void this.actionCueEl.offsetWidth;
319
- this.actionCueEl.style.animation = "sc-pop-in 0.3s ease forwards";
150
+ const elapsed = performance.now() - this.scanStartMs;
151
+ const pct = this.scanDurationMs > 0 ? Math.min(1, elapsed / this.scanDurationMs) : 0;
152
+ const circ = 2 * Math.PI * Math.sqrt((64 * 64 + 86 * 86) / 2);
153
+ this.confidenceRingEl.setAttribute("stroke-dashoffset", `${circ * (1 - pct)}`);
154
+ this.confidenceRingEl.setAttribute("stroke", livenessConfirmed ? "#22c55e" : "#3b82f6");
320
155
  }
321
156
  updateInstruction(text) {
322
157
  if (this.instructionEl)
323
158
  this.instructionEl.textContent = text;
324
159
  }
325
- stopTimer() {
326
- if (this.timerInterval) {
327
- clearInterval(this.timerInterval);
328
- this.timerInterval = null;
329
- }
330
- if (this.timerEl)
331
- this.timerEl.textContent = "";
332
- }
333
160
  showResult(status, _verificationId) {
334
161
  return new Promise((resolve) => {
335
162
  if (!this.overlayEl) {
336
163
  resolve();
337
164
  return;
338
165
  }
339
- if (this.actionCueEl)
340
- this.actionCueEl.style.display = "none";
341
- this.stopTimer();
342
166
  const ok = status === "processing";
343
167
  this.overlayEl.style.display = "flex";
344
- // C3: Internal entry ID removed — never expose DB integers to end users
345
- this.overlayEl.innerHTML = `
346
- <div style="text-align:center;color:#fff;animation:sc-pop-in 0.35s ease;padding:24px;">
347
- <div style="width:72px;height:72px;border-radius:50%;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;font-size:32px;
348
- background:${ok ? "rgba(34,197,94,0.2)" : "rgba(239,68,68,0.2)"};
349
- border:3px solid ${ok ? "#22c55e" : "#ef4444"};">
350
- ${ok ? "✓" : "✕"}
351
- </div>
352
- <div style="font-size:17px;font-weight:700;margin-bottom:8px;">${ok ? "Verification submitted" : "Submission failed"}</div>
353
- <div style="font-size:12px;opacity:0.6;line-height:1.6;">${ok ? "Hold on while we wrap up…" : "Something went wrong. Please try again."}</div>
168
+ this.overlayEl.innerHTML = `
169
+ <div style="text-align:center;color:#fff;animation:sc-pop-in 0.35s ease;padding:24px;">
170
+ <div style="width:72px;height:72px;border-radius:50%;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;font-size:32px;
171
+ background:${ok ? "rgba(34,197,94,0.2)" : "rgba(239,68,68,0.2)"};
172
+ border:3px solid ${ok ? "#22c55e" : "#ef4444"};">
173
+ ${ok ? "✓" : "✕"}
174
+ </div>
175
+ <div style="font-size:17px;font-weight:700;margin-bottom:8px;">${ok ? "Verification submitted" : "Submission failed"}</div>
176
+ <div style="font-size:12px;opacity:0.6;line-height:1.6;">${ok ? "Hold on while we wrap up…" : "Something went wrong. Please try again."}</div>
354
177
  </div>`;
355
178
  setTimeout(resolve, 1800);
356
179
  });
@@ -361,16 +184,13 @@ export class LivenessUI {
361
184
  resolve();
362
185
  return;
363
186
  }
364
- if (this.actionCueEl)
365
- this.actionCueEl.style.display = "none";
366
- this.stopTimer();
367
187
  this.overlayEl.style.display = "flex";
368
- this.overlayEl.innerHTML = `
369
- <div style="text-align:center;color:#fff;animation:sc-pop-in 0.35s ease;padding:24px;">
370
- <div style="width:72px;height:72px;border-radius:50%;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;font-size:32px;background:rgba(251,191,36,0.15);border:3px solid #fbbf24;">⏱</div>
371
- <div style="font-size:17px;font-weight:700;margin-bottom:8px;">Time's Up</div>
372
- <div style="font-size:12px;opacity:0.6;margin-bottom:18px;">You ran out of time. Please try again.</div>
373
- <button id="sc-retry-btn" style="padding:11px 28px;border-radius:10px;background:#3b82f6;color:#fff;border:none;cursor:pointer;font-size:14px;font-weight:600;width:100%;max-width:180px;">Try Again</button>
188
+ this.overlayEl.innerHTML = `
189
+ <div style="text-align:center;color:#fff;animation:sc-pop-in 0.35s ease;padding:24px;">
190
+ <div style="width:72px;height:72px;border-radius:50%;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;font-size:32px;background:rgba(251,191,36,0.15);border:3px solid #fbbf24;">⏱</div>
191
+ <div style="font-size:17px;font-weight:700;margin-bottom:8px;">Time's Up</div>
192
+ <div style="font-size:12px;opacity:0.6;margin-bottom:18px;">We couldn't confirm liveness in time. Please try again.</div>
193
+ <button id="sc-retry-btn" style="padding:11px 28px;border-radius:10px;background:#3b82f6;color:#fff;border:none;cursor:pointer;font-size:14px;font-weight:600;width:100%;max-width:180px;">Try Again</button>
374
194
  </div>`;
375
195
  const btn = this.overlayEl.querySelector("#sc-retry-btn");
376
196
  if (btn) {
@@ -449,7 +269,6 @@ export class LivenessUI {
449
269
  });
450
270
  }
451
271
  unmount() {
452
- this.stopTimer();
453
272
  try {
454
273
  this.docCaptureRoot?.remove();
455
274
  }
@@ -462,40 +281,9 @@ export class LivenessUI {
462
281
  this.root = null;
463
282
  this.videoEl = null;
464
283
  this.instructionEl = null;
465
- this.stepsEl = null;
466
- this.progressBarEl = null;
467
284
  this.confidenceRingEl = null;
468
- this.timerEl = null;
469
285
  this.overlayEl = null;
470
- this.actionCueEl = null;
471
- this.stepEls = null;
472
- this.lastActionRender.clear();
473
- }
474
- startTimer(seconds) {
475
- let remaining = seconds;
476
- const update = () => {
477
- if (!this.timerEl)
478
- return;
479
- const m = Math.floor(remaining / 60);
480
- const s = remaining % 60;
481
- this.timerEl.textContent = `${m > 0 ? `${m}:${String(s).padStart(2, "0")}` : `${s}s`} remaining`;
482
- if (remaining <= 5)
483
- this.timerEl.style.color = "#ef4444";
484
- };
485
- update();
486
- this.timerInterval = setInterval(() => { remaining--; update(); if (remaining <= 0 && this.timerInterval) {
487
- clearInterval(this.timerInterval);
488
- } }, 1000);
489
- }
490
- describeAction(action) {
491
- const labels = {
492
- BLINK: "Blink your eyes",
493
- TURN_LEFT: "Turn your head to the side",
494
- TURN_RIGHT: "Turn your head to the side",
495
- TURN_HEAD: "Turn your head side to side",
496
- OPEN_MOUTH: "Open your mouth wide",
497
- };
498
- return labels[action] || action.replace(/_/g, " ").toLowerCase();
286
+ this.dotsEl = null;
499
287
  }
500
288
  }
501
289
  //# sourceMappingURL=LivenessUI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LivenessUI.js","sourceRoot":"","sources":["../../../../src/modules/liveness/LivenessUI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LivenessUI.js","sourceRoot":"","sources":["../../../../src/modules/liveness/LivenessUI.ts"],"names":[],"mappings":"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"}
@@ -59,18 +59,20 @@ export declare class LivenessModule {
59
59
  /**
60
60
  * Full liveness check — orchestrates the entire flow:
61
61
  *
62
- * 1. Take autoshot selfie from camera
63
- * 2. Create liveness entry on backend (with challenge actions + selfie + optional doc)
64
- * 3. Run action detection loop (camera + MediaPipe)
65
- * 4. Record video (document/liveness flows) OR skip recording (data verification)
66
- * 5. Submit to backend and return response (status: "processing")
62
+ * 1. Run action detection loop (camera + MediaPipe) — challenge actions only,
63
+ * not recorded (fast head/mouth motion produces blurry frames).
64
+ * 2. Create liveness entry on backend (with challenge actions + optional doc)
65
+ * 3. Record a short, clean, post-challenge clip (neutral pose + a natural
66
+ * blink) — this is what's sent for face comparison in LIVENESS mode.
67
+ * 4. Submit to backend and return response (status: "processing")
67
68
  *
68
- * For data_verification the backend uses COMPARISON mode (autoshot vs govt DB photo)
69
- * so video recording is unnecessary — we skip it to save bandwidth and latency.
69
+ * Backend runs LIVENESS mode (blink/motion check, then its own comparison
70
+ * frame extracted from this same video) for both data and document
71
+ * verification — see FACE_COMPARISON_USER_GUIDE.md.
70
72
  *
71
73
  * @param container - DOM element to mount the liveness UI into
72
74
  * @param params - identifier info and optional document image
73
- * @param actions - override challenge actions (default: BLINK, TURN_HEAD, OPEN_MOUTH)
75
+ * @param actions - override the challenge_actions tag sent to the backend (default: BLINK)
74
76
  * @param existingEntryId - reuse an already-created LivenessEntry (avoids double charge)
75
77
  */
76
78
  startCheck(container: HTMLElement, params: {
@@ -113,6 +115,5 @@ export declare class LivenessModule {
113
115
  * in captureFrame() calibrated against this.
114
116
  */
115
117
  private _computeBlurScore;
116
- private describeAction;
117
118
  }
118
119
  //# sourceMappingURL=liveness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"liveness.d.ts","sourceRoot":"","sources":["../../../../src/modules/liveness/liveness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAS9B;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;;;;;OAMG;IACG,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiE5E;;;;;;;;;OASG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,EACf,YAAY,EAAE,IAAI,EAClB,YAAY,CAAC,EAAE,IAAI,EACnB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,sBAAsB,CAAC;IAqBlC;;;;;;;;OAQG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QACzC,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtC,CAAC;IAIF;;;;;;;;;;;;;;;;OAgBG;IACG,UAAU,CACd,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QACtB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QACvB,cAAc,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,iBAAiB,CAAC,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,eAAe,CAAC;QAIpF,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;KACtC,EACD,OAAO,CAAC,EAAE,eAAe,EAAE,EAC3B,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,sBAAsB,CAAC;IAoWlC;;;;;;;;;;OAUG;YACW,YAAY;IA+C1B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,cAAc;CAUvB"}
1
+ {"version":3,"file":"liveness.d.ts","sourceRoot":"","sources":["../../../../src/modules/liveness/liveness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAS9B;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;;;;;OAMG;IACG,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiE5E;;;;;;;;;OASG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,EACf,YAAY,EAAE,IAAI,EAClB,YAAY,CAAC,EAAE,IAAI,EACnB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,sBAAsB,CAAC;IAqBlC;;;;;;;;OAQG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QACzC,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtC,CAAC;IAIF;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CACd,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QACtB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QACvB,cAAc,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,iBAAiB,CAAC,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,eAAe,CAAC;QAIpF,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;KACtC,EACD,OAAO,CAAC,EAAE,eAAe,EAAE,EAC3B,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,sBAAsB,CAAC;IAsTlC;;;;;;;;;;OAUG;YACW,YAAY;IA+C1B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;CAsC1B"}