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,110 +1,66 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LivenessUI = void 0;
4
- const ICONS = {
5
- BLINK: "👁",
6
- TURN_LEFT: "↔",
7
- TURN_RIGHT: "↔",
8
- TURN_HEAD: "↔",
9
- OPEN_MOUTH: "😮",
10
- };
11
- const ACTION_CUES = {
12
- BLINK: `<div style="font-size:52px;line-height:1;animation:sc-blink 1.2s ease-in-out infinite;">👁️</div>
13
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">BLINK YOUR EYES</div>`,
14
- TURN_LEFT: `<div style="font-size:52px;line-height:1;animation:sc-turn-head 1.4s ease-in-out infinite;">↔️</div>
15
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">TURN HEAD SIDEWAYS</div>`,
16
- TURN_RIGHT: `<div style="font-size:52px;line-height:1;animation:sc-turn-head 1.4s ease-in-out infinite;">↔️</div>
17
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">TURN HEAD SIDEWAYS</div>`,
18
- TURN_HEAD: `<div style="font-size:52px;line-height:1;animation:sc-turn-head 1.4s ease-in-out infinite;">↔️</div>
19
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">TURN HEAD SIDE TO SIDE</div>`,
20
- OPEN_MOUTH: `<div style="font-size:52px;line-height:1;animation:sc-mouth 1.2s ease-in-out infinite;">😮</div>
21
- <div style="font-size:12px;font-weight:600;color:#fff;margin-top:6px;letter-spacing:0.5px;">OPEN YOUR MOUTH</div>`,
22
- };
23
4
  function injectLivenessKeyframes() {
24
5
  if (document.getElementById("sc-liveness-kf"))
25
6
  return;
26
7
  const s = document.createElement("style");
27
8
  s.id = "sc-liveness-kf";
28
- s.textContent = `
29
- @keyframes sc-blink {
30
- 0%,100% { transform:scaleY(1); }
31
- 40% { transform:scaleY(0.1); }
32
- 50% { transform:scaleY(1); }
33
- }
34
- @keyframes sc-turn-head {
35
- 0%,100% { transform:translateX(0); }
36
- 25% { transform:translateX(-12px); }
37
- 75% { transform:translateX(12px); }
38
- }
39
- @keyframes sc-mouth {
40
- 0%,100% { transform:scaleY(1); }
41
- 40% { transform:scaleY(1.25); }
42
- 60% { transform:scaleY(1); }
43
- }
44
- @keyframes sc-pop-in {
45
- 0% { transform:scale(0.7); opacity:0; }
46
- 60% { transform:scale(1.05); }
47
- 100% { transform:scale(1); opacity:1; }
48
- }
9
+ s.textContent = `
10
+ @keyframes sc-pop-in {
11
+ 0% { transform:scale(0.7); opacity:0; }
12
+ 60% { transform:scale(1.05); }
13
+ 100% { transform:scale(1); opacity:1; }
14
+ }
15
+ @keyframes sc-scan-dot {
16
+ 0%,100% { opacity:0.3; transform:scale(0.85); }
17
+ 50% { opacity:1; transform:scale(1); }
18
+ }
49
19
  `;
50
20
  document.head.appendChild(s);
51
21
  }
22
+ /**
23
+ * Single-view passive liveness scan UI: full-width camera, oval face guide,
24
+ * one instruction line, a subtle scanning progress ring. No step-by-step
25
+ * challenge list — replaces the earlier two-column "BLINK / TURN_HEAD /
26
+ * OPEN_MOUTH" checklist design with a plain natural-motion scan.
27
+ */
52
28
  class LivenessUI {
53
29
  constructor() {
54
30
  this.root = null;
55
31
  this.videoEl = null;
56
32
  this.instructionEl = null;
57
- this.stepsEl = null;
58
- this.progressBarEl = null;
59
33
  this.confidenceRingEl = null;
60
- this.timerEl = null;
61
34
  this.overlayEl = null;
62
- this.actionCueEl = null;
63
- this.timerInterval = null;
64
- this.totalActions = 0;
65
- this.currentCueAction = null;
35
+ this.dotsEl = null;
66
36
  this.docCaptureRoot = null;
67
- // updateActions() is called on every requestAnimationFrame tick (~60fps,
68
- // up to the challenge's ~45s time limit) — cache each action's step
69
- // element (avoids a querySelector per action per frame) and its last
70
- // rendered detected/active combination (avoids rewriting the same style
71
- // properties every frame when nothing about that action changed).
72
- this.stepEls = null;
73
- this.lastActionRender = new Map();
37
+ this.scanStartMs = 0;
38
+ this.scanDurationMs = 0;
74
39
  }
75
40
  mount(container, challenge) {
76
41
  injectLivenessKeyframes();
77
- this.totalActions = challenge.actions.length;
78
- // ── Root — two-column layout ──────────────────────────────────────
79
42
  this.root = document.createElement("div");
80
- this.root.style.cssText = `
81
- display:flex;flex-direction:row;width:100%;margin:0 auto;
82
- background:#0a0a0a;border-radius:16px;overflow:hidden;
83
- font-family:system-ui,-apple-system,sans-serif;
84
- box-shadow:0 8px 32px rgba(0,0,0,0.4);
85
- min-height:340px;
86
- `;
87
- // ── LEFT: Camera column ───────────────────────────────────────────
88
- const camCol = document.createElement("div");
89
- camCol.style.cssText = `
90
- position:relative;flex:0 0 55%;
91
- background:#000;overflow:hidden;
43
+ this.root.style.cssText = `
44
+ position:relative;width:100%;max-width:420px;margin:0 auto;
45
+ background:#0a0a0a;border-radius:16px;overflow:hidden;
46
+ font-family:system-ui,-apple-system,sans-serif;
47
+ box-shadow:0 8px 32px rgba(0,0,0,0.4);
48
+ aspect-ratio:3/4;
92
49
  `;
93
50
  this.videoEl = document.createElement("video");
94
51
  this.videoEl.autoplay = true;
95
52
  this.videoEl.playsInline = true;
96
53
  this.videoEl.muted = true;
97
- this.videoEl.style.cssText = `
98
- width:100%;height:100%;display:block;
99
- transform:scaleX(-1);object-fit:cover;
100
- min-height:320px;
54
+ this.videoEl.style.cssText = `
55
+ width:100%;height:100%;display:block;
56
+ transform:scaleX(-1);object-fit:cover;
101
57
  `;
102
- // Oval guide — centred in camera column
58
+ // Oval guide — centred
103
59
  const guideWrap = document.createElement("div");
104
- guideWrap.style.cssText = `
105
- position:absolute;top:50%;left:50%;
106
- transform:translate(-50%,-55%);
107
- width:140px;height:180px;pointer-events:none;
60
+ guideWrap.style.cssText = `
61
+ position:absolute;top:50%;left:50%;
62
+ transform:translate(-50%,-52%);
63
+ width:64%;aspect-ratio:140/180;pointer-events:none;
108
64
  `;
109
65
  const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
110
66
  svg.setAttribute("viewBox", "0 0 140 180");
@@ -115,9 +71,8 @@ class LivenessUI {
115
71
  bgOval.setAttribute("rx", "64");
116
72
  bgOval.setAttribute("ry", "86");
117
73
  bgOval.setAttribute("fill", "none");
118
- bgOval.setAttribute("stroke", "rgba(255,255,255,0.3)");
74
+ bgOval.setAttribute("stroke", "rgba(255,255,255,0.35)");
119
75
  bgOval.setAttribute("stroke-width", "2");
120
- bgOval.setAttribute("stroke-dasharray", "6 3");
121
76
  const confOval = document.createElementNS("http://www.w3.org/2000/svg", "ellipse");
122
77
  confOval.setAttribute("cx", "70");
123
78
  confOval.setAttribute("cy", "90");
@@ -129,231 +84,99 @@ class LivenessUI {
129
84
  const circ = 2 * Math.PI * Math.sqrt((64 * 64 + 86 * 86) / 2);
130
85
  confOval.setAttribute("stroke-dasharray", `${circ}`);
131
86
  confOval.setAttribute("stroke-dashoffset", `${circ}`);
132
- confOval.style.cssText = "transition:stroke-dashoffset 0.15s ease;transform:rotate(-90deg);transform-origin:70px 90px;";
87
+ confOval.style.cssText = "transition:stroke-dashoffset 0.2s linear;transform:rotate(-90deg);transform-origin:70px 90px;";
133
88
  this.confidenceRingEl = confOval;
134
89
  svg.appendChild(bgOval);
135
90
  svg.appendChild(confOval);
136
91
  guideWrap.appendChild(svg);
137
- // Instruction text — top of camera column
92
+ // Instruction — top, gradient scrim
138
93
  const camTop = document.createElement("div");
139
- camTop.style.cssText = `
140
- position:absolute;top:0;left:0;right:0;
141
- background:linear-gradient(180deg,rgba(0,0,0,0.8) 0%,transparent 100%);
142
- padding:10px 12px 28px;
94
+ camTop.style.cssText = `
95
+ position:absolute;top:0;left:0;right:0;
96
+ background:linear-gradient(180deg,rgba(0,0,0,0.8) 0%,transparent 100%);
97
+ padding:14px 16px 32px;
143
98
  `;
144
99
  this.instructionEl = document.createElement("div");
145
- this.instructionEl.style.cssText = `
146
- color:#fff;font-size:13px;font-weight:600;text-align:center;line-height:1.4;
100
+ this.instructionEl.style.cssText = `
101
+ color:#fff;font-size:14px;font-weight:600;text-align:center;line-height:1.4;
147
102
  `;
148
103
  this.instructionEl.textContent = challenge.instruction;
149
104
  camTop.appendChild(this.instructionEl);
150
- // Timer — bottom of camera column
105
+ // Scan progress dots — bottom
151
106
  const camBottom = document.createElement("div");
152
- camBottom.style.cssText = `
153
- position:absolute;bottom:0;left:0;right:0;
154
- background:linear-gradient(0deg,rgba(0,0,0,0.7) 0%,transparent 100%);
155
- padding:24px 10px 8px;text-align:center;
156
- `;
157
- this.timerEl = document.createElement("div");
158
- this.timerEl.style.cssText = `
159
- color:rgba(255,255,255,0.5);font-size:11px;font-variant-numeric:tabular-nums;
160
- `;
161
- camBottom.appendChild(this.timerEl);
162
- // Action cue — centre of camera column
163
- this.actionCueEl = document.createElement("div");
164
- this.actionCueEl.style.cssText = `
165
- position:absolute;bottom:36px;left:50%;transform:translateX(-50%);
166
- z-index:5;pointer-events:none;display:none;text-align:center;
167
- background:rgba(0,0,0,0.6);backdrop-filter:blur(4px);
168
- border-radius:14px;padding:10px 18px;min-width:170px;
169
- border:1.5px solid rgba(255,255,255,0.12);
170
- `;
171
- camCol.appendChild(this.videoEl);
172
- camCol.appendChild(guideWrap);
173
- camCol.appendChild(camTop);
174
- camCol.appendChild(camBottom);
175
- camCol.appendChild(this.actionCueEl);
176
- // ── RIGHT: Steps column ───────────────────────────────────────────
177
- const stepsCol = document.createElement("div");
178
- stepsCol.style.cssText = `
179
- flex:1;display:flex;flex-direction:column;
180
- padding:16px 14px;gap:8px;
181
- background:#111;border-left:1px solid rgba(255,255,255,0.06);
182
- justify-content:space-between;
183
- `;
184
- // Progress bar at top of steps column
185
- const progressWrap = document.createElement("div");
186
- progressWrap.style.cssText = `
187
- height:3px;background:rgba(255,255,255,0.1);border-radius:2px;overflow:hidden;
188
- margin-bottom:4px;
107
+ camBottom.style.cssText = `
108
+ position:absolute;bottom:0;left:0;right:0;
109
+ background:linear-gradient(0deg,rgba(0,0,0,0.7) 0%,transparent 100%);
110
+ padding:28px 10px 18px;display:flex;justify-content:center;
189
111
  `;
190
- this.progressBarEl = document.createElement("div");
191
- this.progressBarEl.style.cssText = `
192
- height:100%;width:0%;background:linear-gradient(90deg,#22c55e,#4ade80);
193
- border-radius:2px;transition:width 0.4s ease;
194
- `;
195
- progressWrap.appendChild(this.progressBarEl);
196
- // Steps list
197
- this.stepsEl = document.createElement("div");
198
- this.stepsEl.style.cssText = "display:flex;flex-direction:column;gap:6px;flex:1;";
199
- this.stepEls = new Map();
200
- this.lastActionRender = new Map();
201
- for (let i = 0; i < challenge.actions.length; i++) {
202
- const action = challenge.actions[i];
203
- const step = document.createElement("div");
204
- step.dataset.action = action;
205
- step.style.cssText = `
206
- display:flex;align-items:center;gap:8px;
207
- padding:8px 10px;border-radius:10px;
208
- background:rgba(255,255,255,0.04);
209
- border:1px solid rgba(255,255,255,0.06);
210
- transition:all 0.3s ease;
211
- opacity:${i === 0 ? "1" : "0.45"};
212
- `;
213
- const num = document.createElement("div");
214
- num.className = "sc-step-num";
215
- num.style.cssText = `
216
- width:24px;height:24px;border-radius:50%;flex-shrink:0;
217
- display:flex;align-items:center;justify-content:center;
218
- font-size:12px;font-weight:700;color:#fff;
219
- background:rgba(255,255,255,0.1);
220
- border:1.5px solid rgba(255,255,255,0.2);
221
- transition:all 0.3s ease;
112
+ this.dotsEl = document.createElement("div");
113
+ this.dotsEl.style.cssText = "display:flex;gap:6px;";
114
+ for (let i = 0; i < 3; i++) {
115
+ const dot = document.createElement("div");
116
+ dot.style.cssText = `
117
+ width:6px;height:6px;border-radius:50%;background:#22c55e;
118
+ animation:sc-scan-dot 1.1s ease-in-out ${i * 0.18}s infinite;
222
119
  `;
223
- num.textContent = String(i + 1);
224
- const label = document.createElement("div");
225
- label.style.cssText = "color:#fff;font-size:12px;font-weight:500;flex:1;line-height:1.3;";
226
- label.textContent = this.describeAction(action);
227
- const icon = document.createElement("div");
228
- icon.style.cssText = "font-size:16px;flex-shrink:0;";
229
- icon.textContent = ICONS[action] || "";
230
- step.appendChild(num);
231
- step.appendChild(label);
232
- step.appendChild(icon);
233
- this.stepsEl.appendChild(step);
234
- this.stepEls.set(action, { step, num });
120
+ this.dotsEl.appendChild(dot);
235
121
  }
236
- stepsCol.appendChild(progressWrap);
237
- stepsCol.appendChild(this.stepsEl);
238
- // Result overlay — full root
122
+ camBottom.appendChild(this.dotsEl);
123
+ this.root.appendChild(this.videoEl);
124
+ this.root.appendChild(guideWrap);
125
+ this.root.appendChild(camTop);
126
+ this.root.appendChild(camBottom);
127
+ // Result overlay
239
128
  this.overlayEl = document.createElement("div");
240
- this.overlayEl.style.cssText = `
241
- position:absolute;inset:0;display:none;align-items:center;
242
- justify-content:center;z-index:10;
243
- background:rgba(0,0,0,0.88);backdrop-filter:blur(8px);
129
+ this.overlayEl.style.cssText = `
130
+ position:absolute;inset:0;display:none;align-items:center;
131
+ justify-content:center;z-index:10;
132
+ background:rgba(0,0,0,0.88);backdrop-filter:blur(8px);
244
133
  `;
245
- // ── Assemble ──────────────────────────────────────────────────────
246
- this.root.appendChild(camCol);
247
- this.root.appendChild(stepsCol);
248
134
  this.root.appendChild(this.overlayEl);
249
135
  container.appendChild(this.root);
250
- this.startTimer(challenge.time_limit_seconds);
136
+ this.scanDurationMs = challenge.time_limit_seconds * 1000;
137
+ this.startScanClock();
251
138
  return this.videoEl;
252
139
  }
253
- updateActions(states) {
254
- if (!this.stepsEl || !this.progressBarEl || !this.stepEls)
255
- return;
256
- let completed = 0;
257
- for (const state of states) {
258
- if (state.detected)
259
- completed++;
260
- // Called every rAF tick (~60fps, up to ~45s) — most frames carry the
261
- // same detected/active combination as the last one, so skip the DOM
262
- // writes entirely unless this action's discrete state actually flipped.
263
- const renderKey = state.detected ? "detected" : state.active ? "active" : "idle";
264
- if (this.lastActionRender.get(state.action) === renderKey)
265
- continue;
266
- this.lastActionRender.set(state.action, renderKey);
267
- const cached = this.stepEls.get(state.action);
268
- if (!cached)
269
- continue;
270
- const { step, num } = cached;
271
- if (state.detected) {
272
- step.style.opacity = "1";
273
- step.style.background = "rgba(34,197,94,0.12)";
274
- step.style.borderColor = "rgba(34,197,94,0.3)";
275
- if (num) {
276
- num.style.background = "#22c55e";
277
- num.style.borderColor = "#22c55e";
278
- num.textContent = "✓";
279
- }
280
- }
281
- else if (state.active) {
282
- step.style.opacity = "1";
283
- step.style.background = "rgba(59,130,246,0.12)";
284
- step.style.borderColor = "rgba(59,130,246,0.3)";
285
- if (num) {
286
- num.style.borderColor = "#3b82f6";
287
- num.style.background = "rgba(59,130,246,0.3)";
288
- }
289
- }
290
- }
291
- const activeState = states.find((s) => s.active && !s.detected) ?? null;
292
- const pct = this.totalActions > 0 ? (completed / this.totalActions) * 100 : 0;
293
- this.progressBarEl.style.width = `${pct}%`;
294
- if (this.confidenceRingEl) {
295
- const circ = 2 * Math.PI * Math.sqrt((64 * 64 + 86 * 86) / 2);
296
- const conf = activeState ? activeState.confidence : 0;
297
- this.confidenceRingEl.setAttribute("stroke-dashoffset", `${circ * (1 - conf)}`);
298
- this.confidenceRingEl.setAttribute("stroke", conf > 0.6 ? "#22c55e" : "#3b82f6");
299
- }
300
- this.updateActionCue(activeState?.action ?? null);
140
+ /**
141
+ * Resets the progress ring's clock to now. The caller (liveness.ts) mounts
142
+ * the UI, then waits ~1s for camera AE/AF to settle before the detection
143
+ * loop actually starts — call this again right when detection begins so
144
+ * the ring's timing matches the real scan window instead of running ahead.
145
+ */
146
+ startScanClock() {
147
+ this.scanStartMs = performance.now();
301
148
  }
302
- updateActionCue(action) {
303
- if (!this.actionCueEl)
304
- return;
305
- if (!action) {
306
- this.actionCueEl.style.display = "none";
307
- this.currentCueAction = null;
308
- return;
309
- }
310
- if (action === this.currentCueAction)
311
- return;
312
- this.currentCueAction = action;
313
- const cueHtml = ACTION_CUES[action];
314
- if (!cueHtml) {
315
- this.actionCueEl.style.display = "none";
149
+ /** Advances the scan progress ring based on elapsed time in the window. */
150
+ updateScanProgress(livenessConfirmed) {
151
+ if (!this.confidenceRingEl)
316
152
  return;
317
- }
318
- this.actionCueEl.innerHTML = cueHtml;
319
- this.actionCueEl.style.display = "block";
320
- this.actionCueEl.style.animation = "none";
321
- void this.actionCueEl.offsetWidth;
322
- this.actionCueEl.style.animation = "sc-pop-in 0.3s ease forwards";
153
+ const elapsed = performance.now() - this.scanStartMs;
154
+ const pct = this.scanDurationMs > 0 ? Math.min(1, elapsed / this.scanDurationMs) : 0;
155
+ const circ = 2 * Math.PI * Math.sqrt((64 * 64 + 86 * 86) / 2);
156
+ this.confidenceRingEl.setAttribute("stroke-dashoffset", `${circ * (1 - pct)}`);
157
+ this.confidenceRingEl.setAttribute("stroke", livenessConfirmed ? "#22c55e" : "#3b82f6");
323
158
  }
324
159
  updateInstruction(text) {
325
160
  if (this.instructionEl)
326
161
  this.instructionEl.textContent = text;
327
162
  }
328
- stopTimer() {
329
- if (this.timerInterval) {
330
- clearInterval(this.timerInterval);
331
- this.timerInterval = null;
332
- }
333
- if (this.timerEl)
334
- this.timerEl.textContent = "";
335
- }
336
163
  showResult(status, _verificationId) {
337
164
  return new Promise((resolve) => {
338
165
  if (!this.overlayEl) {
339
166
  resolve();
340
167
  return;
341
168
  }
342
- if (this.actionCueEl)
343
- this.actionCueEl.style.display = "none";
344
- this.stopTimer();
345
169
  const ok = status === "processing";
346
170
  this.overlayEl.style.display = "flex";
347
- // C3: Internal entry ID removed — never expose DB integers to end users
348
- this.overlayEl.innerHTML = `
349
- <div style="text-align:center;color:#fff;animation:sc-pop-in 0.35s ease;padding:24px;">
350
- <div style="width:72px;height:72px;border-radius:50%;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;font-size:32px;
351
- background:${ok ? "rgba(34,197,94,0.2)" : "rgba(239,68,68,0.2)"};
352
- border:3px solid ${ok ? "#22c55e" : "#ef4444"};">
353
- ${ok ? "✓" : "✕"}
354
- </div>
355
- <div style="font-size:17px;font-weight:700;margin-bottom:8px;">${ok ? "Verification submitted" : "Submission failed"}</div>
356
- <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>
171
+ this.overlayEl.innerHTML = `
172
+ <div style="text-align:center;color:#fff;animation:sc-pop-in 0.35s ease;padding:24px;">
173
+ <div style="width:72px;height:72px;border-radius:50%;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;font-size:32px;
174
+ background:${ok ? "rgba(34,197,94,0.2)" : "rgba(239,68,68,0.2)"};
175
+ border:3px solid ${ok ? "#22c55e" : "#ef4444"};">
176
+ ${ok ? "✓" : "✕"}
177
+ </div>
178
+ <div style="font-size:17px;font-weight:700;margin-bottom:8px;">${ok ? "Verification submitted" : "Submission failed"}</div>
179
+ <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>
357
180
  </div>`;
358
181
  setTimeout(resolve, 1800);
359
182
  });
@@ -364,16 +187,13 @@ class LivenessUI {
364
187
  resolve();
365
188
  return;
366
189
  }
367
- if (this.actionCueEl)
368
- this.actionCueEl.style.display = "none";
369
- this.stopTimer();
370
190
  this.overlayEl.style.display = "flex";
371
- this.overlayEl.innerHTML = `
372
- <div style="text-align:center;color:#fff;animation:sc-pop-in 0.35s ease;padding:24px;">
373
- <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>
374
- <div style="font-size:17px;font-weight:700;margin-bottom:8px;">Time's Up</div>
375
- <div style="font-size:12px;opacity:0.6;margin-bottom:18px;">You ran out of time. Please try again.</div>
376
- <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>
191
+ this.overlayEl.innerHTML = `
192
+ <div style="text-align:center;color:#fff;animation:sc-pop-in 0.35s ease;padding:24px;">
193
+ <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>
194
+ <div style="font-size:17px;font-weight:700;margin-bottom:8px;">Time's Up</div>
195
+ <div style="font-size:12px;opacity:0.6;margin-bottom:18px;">We couldn't confirm liveness in time. Please try again.</div>
196
+ <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>
377
197
  </div>`;
378
198
  const btn = this.overlayEl.querySelector("#sc-retry-btn");
379
199
  if (btn) {
@@ -452,7 +272,6 @@ class LivenessUI {
452
272
  });
453
273
  }
454
274
  unmount() {
455
- this.stopTimer();
456
275
  try {
457
276
  this.docCaptureRoot?.remove();
458
277
  }
@@ -465,40 +284,9 @@ class LivenessUI {
465
284
  this.root = null;
466
285
  this.videoEl = null;
467
286
  this.instructionEl = null;
468
- this.stepsEl = null;
469
- this.progressBarEl = null;
470
287
  this.confidenceRingEl = null;
471
- this.timerEl = null;
472
288
  this.overlayEl = null;
473
- this.actionCueEl = null;
474
- this.stepEls = null;
475
- this.lastActionRender.clear();
476
- }
477
- startTimer(seconds) {
478
- let remaining = seconds;
479
- const update = () => {
480
- if (!this.timerEl)
481
- return;
482
- const m = Math.floor(remaining / 60);
483
- const s = remaining % 60;
484
- this.timerEl.textContent = `${m > 0 ? `${m}:${String(s).padStart(2, "0")}` : `${s}s`} remaining`;
485
- if (remaining <= 5)
486
- this.timerEl.style.color = "#ef4444";
487
- };
488
- update();
489
- this.timerInterval = setInterval(() => { remaining--; update(); if (remaining <= 0 && this.timerInterval) {
490
- clearInterval(this.timerInterval);
491
- } }, 1000);
492
- }
493
- describeAction(action) {
494
- const labels = {
495
- BLINK: "Blink your eyes",
496
- TURN_LEFT: "Turn your head to the side",
497
- TURN_RIGHT: "Turn your head to the side",
498
- TURN_HEAD: "Turn your head side to side",
499
- OPEN_MOUTH: "Open your mouth wide",
500
- };
501
- return labels[action] || action.replace(/_/g, " ").toLowerCase();
289
+ this.dotsEl = null;
502
290
  }
503
291
  }
504
292
  exports.LivenessUI = LivenessUI;
@@ -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"}