@privateid/ultrapass-web-sdk 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/modules/core/document/DocumentService.js +21 -1
- package/dist/application/modules/core/document/DocumentService.js.map +1 -1
- package/dist/application/modules/support/camera/services/BaseCameraService.js +20 -6
- package/dist/application/modules/support/camera/services/BaseCameraService.js.map +1 -1
- package/dist/application/modules/support/camera/services/VideoIntegrityMonitor.d.ts +9 -0
- package/dist/application/modules/support/camera/services/VideoIntegrityMonitor.js +173 -94
- package/dist/application/modules/support/camera/services/VideoIntegrityMonitor.js.map +1 -1
- package/dist/application/workers/wasm/WasmWorkerService.js +1 -1
- package/dist/application/workers/wasm/WasmWorkerService.js.map +1 -1
- package/dist/application/workers/wasm/wasm-worker.utils.d.ts +1 -2
- package/dist/application/workers/wasm/wasm-worker.utils.js +2 -3
- package/dist/application/workers/wasm/wasm-worker.utils.js.map +1 -1
- package/package.json +1 -1
- package/wasm/ultra/manifest.json +3 -3
- package/workers/wasm-new.worker.js +1 -1
- package/workers/wasm-new.worker.js.map +3 -3
|
@@ -41,6 +41,10 @@ export class DocumentService {
|
|
|
41
41
|
if (params.config) {
|
|
42
42
|
configuration = Object.assign(Object.assign({}, configuration), params.config);
|
|
43
43
|
}
|
|
44
|
+
if (!this.cameraService.checkVideoElementIsReady()) {
|
|
45
|
+
setTimeout(() => params.callback({ doc_validation_status: -1 }), 100);
|
|
46
|
+
return { success: false };
|
|
47
|
+
}
|
|
44
48
|
const imageData = this.generateImageData();
|
|
45
49
|
if (!imageData) {
|
|
46
50
|
setTimeout(() => params.callback({ doc_validation_status: -1 }), 100);
|
|
@@ -74,6 +78,10 @@ export class DocumentService {
|
|
|
74
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
75
79
|
printLogs('[DocumentService] scanPassport params', params);
|
|
76
80
|
try {
|
|
81
|
+
if (!this.cameraService.checkVideoElementIsReady()) {
|
|
82
|
+
setTimeout(() => params.callback({ doc_validation_status: -1 }), 100);
|
|
83
|
+
return { success: false };
|
|
84
|
+
}
|
|
77
85
|
const imageData = this.generateImageData();
|
|
78
86
|
if (!imageData) {
|
|
79
87
|
setTimeout(() => params.callback({ doc_validation_status: -1 }), 100);
|
|
@@ -137,6 +145,9 @@ export class DocumentService {
|
|
|
137
145
|
configuration = Object.assign(Object.assign({}, configuration), { detect_document_only: true });
|
|
138
146
|
this.privid_wasm_result = createBackScanCallback({ callback: integrityWrappedCallback });
|
|
139
147
|
}
|
|
148
|
+
if (!this.cameraService.checkVideoElementIsReady()) {
|
|
149
|
+
return { result: ERROR_RESULT };
|
|
150
|
+
}
|
|
140
151
|
const imageData = this.generateImageData();
|
|
141
152
|
if (!imageData) {
|
|
142
153
|
// Rely on Rerun 3-second interval timer as retry fallback.
|
|
@@ -291,9 +302,18 @@ export class DocumentService {
|
|
|
291
302
|
(_a = context.resetTransform) === null || _a === void 0 ? void 0 : _a.call(context);
|
|
292
303
|
context.clearRect(0, 0, canvas.width, canvas.height);
|
|
293
304
|
context.drawImage(videoElement, 0, 0, canvas.width, canvas.height);
|
|
294
|
-
|
|
305
|
+
const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
|
|
306
|
+
if (imageData.width === 0 || imageData.height === 0) {
|
|
307
|
+
printLogs('[DocumentService] generateImageData: corrupt frame (zero dimensions)', null, 'WARN');
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
return imageData;
|
|
295
311
|
}
|
|
296
312
|
prepareCanvas(videoElement) {
|
|
313
|
+
if (!videoElement || videoElement.readyState !== 4) {
|
|
314
|
+
printLogs('[DocumentService] prepareCanvas: video not ready (readyState !== 4)', null, 'WARN');
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
297
317
|
const height = (videoElement === null || videoElement === void 0 ? void 0 : videoElement.videoHeight) || 0;
|
|
298
318
|
const width = (videoElement === null || videoElement === void 0 ? void 0 : videoElement.videoWidth) || 0;
|
|
299
319
|
if (width === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentService.js","sourceRoot":"","sources":["../../../../../src/application/modules/core/document/DocumentService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DocumentService.js","sourceRoot":"","sources":["../../../../../src/application/modules/core/document/DocumentService.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,8 +87,15 @@ export class BaseCameraService {
|
|
|
87
87
|
const videoEl = yield startVideo(videoElementId, stream);
|
|
88
88
|
this.setMediaStream(stream);
|
|
89
89
|
this.setMediaDevices(devices);
|
|
90
|
-
// Initialize integrity monitor for this camera session
|
|
91
|
-
|
|
90
|
+
// Initialize integrity monitor for this camera session.
|
|
91
|
+
// Wrapped in try/catch — monitor failures must never block camera initialization.
|
|
92
|
+
try {
|
|
93
|
+
this.integrityMonitor = new VideoIntegrityMonitor(videoEl, stream);
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
printLogs('[BaseCameraService] integrity monitor initialization failed — camera will proceed without it', e, 'ERROR');
|
|
97
|
+
this.integrityMonitor = null;
|
|
98
|
+
}
|
|
92
99
|
return {
|
|
93
100
|
// TODO: what does this status represents? Should it be `success`?
|
|
94
101
|
status: true,
|
|
@@ -138,6 +145,17 @@ export class BaseCameraService {
|
|
|
138
145
|
closeCamera(element) {
|
|
139
146
|
return __awaiter(this, void 0, void 0, function* () {
|
|
140
147
|
try {
|
|
148
|
+
// Dispose integrity monitor BEFORE touching srcObject — the monitor intercepts
|
|
149
|
+
// srcObject assignments, so it must be torn down first to avoid interference.
|
|
150
|
+
if (this.integrityMonitor) {
|
|
151
|
+
try {
|
|
152
|
+
this.integrityMonitor.dispose();
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
printLogs('[BaseCameraService] integrity monitor dispose error', e, 'ERROR');
|
|
156
|
+
}
|
|
157
|
+
this.integrityMonitor = null;
|
|
158
|
+
}
|
|
141
159
|
// TODO: Control devices, elements and streams only on SDK side to avoid issues with multiple SDK instances
|
|
142
160
|
const video = element || this.getVideoElementId();
|
|
143
161
|
const videoEl = document.getElementById(video);
|
|
@@ -164,10 +182,6 @@ export class BaseCameraService {
|
|
|
164
182
|
this.closeMediaStream();
|
|
165
183
|
this.setCurrentDeviceId(null);
|
|
166
184
|
this.setMediaDevices(null);
|
|
167
|
-
if (this.integrityMonitor) {
|
|
168
|
-
this.integrityMonitor.dispose();
|
|
169
|
-
this.integrityMonitor = null;
|
|
170
|
-
}
|
|
171
185
|
// backoff to ensure camera hardware is released
|
|
172
186
|
yield new Promise((resolve) => setTimeout(resolve, 200));
|
|
173
187
|
printLogs('[BaseCameraService] closeCamera: hardware released', '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCameraService.js","sourceRoot":"","sources":["../../../../../../src/application/modules/support/camera/services/BaseCameraService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BaseCameraService.js","sourceRoot":"","sources":["../../../../../../src/application/modules/support/camera/services/BaseCameraService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,cAAc,GAMf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAE5F,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,OAAgB,iBAAiB;IAgBrC,YAAY,kBAAsC;QAblD,4DAA4D;QAClD,mBAAc,GAAkB,IAAI,CAAC;QAC/C,gCAAgC;QACtB,oBAAe,GAAkB,IAAI,CAAC;QAChD,8CAA8C;QACpC,aAAQ,GAAmB,cAAc,CAAC,KAAK,CAAC;QAC1D,0CAA0C;QAChC,gBAAW,GAAuB,IAAI,CAAC;QACjD,gDAAgD;QACtC,iBAAY,GAA6B,IAAI,CAAC;QACxD,6EAA6E;QACnE,qBAAgB,GAAiC,IAAI,CAAC;QAG9D,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAIe,mBAAmB,CACjC,MAAmB,EACnB,OAA0B,EAC1B,QAA+B,EAC/B,cAAsB;;;YAEtB,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;YAEvC,8CAA8C;YAC9C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClC,SAAS,CAAC,oEAAoE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC7F,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;aACpC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAExB,sCAAsC;YACtC,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE;gBAC/B,SAAS,CAAC,sEAAsE,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC5G,6BAA6B;gBAC7B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE;wBAC/B,OAAO,EAAE,CAAC;qBACX;yBAAM;wBACL,MAAM,OAAO,GAAG,GAAG,EAAE;4BACnB,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;4BAC7C,OAAO,EAAE,CAAC;wBACZ,CAAC,CAAC;wBACF,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBAC1C,iBAAiB;wBACjB,UAAU,CAAC,GAAG,EAAE;4BACd,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;4BAC7C,OAAO,EAAE,CAAC;wBACZ,CAAC,EAAE,IAAI,CAAC,CAAC;qBACV;gBACH,CAAC,CAAC,CAAC;aACJ;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5E,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAE9D,qEAAqE;YACrE,yCAAyC;YACzC,IAAI,CAAC,QAAQ,EAAE;gBACb,SAAS,CAAC,oFAAoF,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;gBAE5G,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzD,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAE1D,IAAI,CAAC,QAAQ,EAAE;oBACb,oEAAoE;oBACpE,SAAS,CAAC,+EAA+E,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;oBACvG,QAAQ,GAAG;wBACT,QAAQ,EAAE,IAAI,CAAC,eAAe,IAAI,SAAS;wBAC3C,KAAK,EAAE,CAAC,MAAA,MAAA,KAAK,CAAC,cAAc,qDAAI,0CAAE,KAAgB,KAAI,SAAS;wBAC/D,MAAM,EAAE,CAAC,MAAA,MAAA,KAAK,CAAC,cAAc,qDAAI,0CAAE,MAAiB,KAAI,SAAS;wBACjE,UAAU,EAAE,QAAQ,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;qBAC/D,CAAC;oBACT,SAAS,CAAC,kEAAkE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;iBACjG;aACF;YAED,SAAS,CAAC,oDAAoD,EAAE,QAAQ,CAAC,CAAC;YAC1E,IAAI,YAAY,EAAE;gBAChB,SAAS,CAAC,wDAAwD,EAAE,YAAY,CAAC,CAAC;aACnF;YAED,SAAS,CAAC,gDAAgD,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE9B,wDAAwD;YACxD,kFAAkF;YAClF,IAAI;gBACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aACpE;YAAC,OAAO,CAAC,EAAE;gBACV,SAAS,CAAC,8FAA8F,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;gBACtH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAC9B;YAED,OAAO;gBACL,kEAAkE;gBAClE,MAAM,EAAE,IAAI;gBACZ,MAAM;gBACN,OAAO;gBACP,QAAQ;gBACR,QAAQ;gBACR,YAAY;gBACZ,YAAY,EAAE,IAAI;aACnB,CAAC;;KACH;IAED,wEAAwE;IAC9D,MAAM,CAAO,oBAAoB,CAAC,cAAuB,EAAE,cAA+B;;YAClG,MAAM,SAAS,GAAG,CAAC,cAAc,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,6BAA6B;YACrE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,gCAAgC;YAEvE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE;gBACtD,IAAI;oBACF,yDAAyD;oBACzD,MAAM,eAAe,GAA2B;wBAC9C,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,cAAc;4BACnB,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;4BACzC,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE;qBACpF,CAAC;oBAEF,SAAS,CAAC,kCAAkC,OAAO,GAAG,CAAC,gCAAgC,EAAE,eAAe,CAAC,CAAC;oBAE1G,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;oBAE9E,mCAAmC;oBACnC,UAAU,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBACxD,SAAS,CAAC,gDAAgD,OAAO,WAAW,EAAE,EAAE,CAAC,CAAC;oBAElF,uDAAuD;oBACvD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzD,OAAO;iBACR;gBAAC,OAAO,KAAU,EAAE;oBACnB,wCAAwC;oBACxC,SAAS,CACP,kCAAkC,OAAO,GAAG,CAAC,IAAI,WAAW,yBAAyB,KAAK,CAAC,IAAI,EAAE,EACjG,EAAE,CACH,CAAC;oBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;iBAC9D;aACF;YAED,qDAAqD;YACrD,SAAS,CAAC,gEAAgE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1F,CAAC;KAAA;IAEY,WAAW,CAAC,OAAgB;;YACvC,IAAI;gBACF,+EAA+E;gBAC/E,8EAA8E;gBAC9E,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACzB,IAAI;wBACF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;qBACjC;oBAAC,OAAO,CAAC,EAAE;wBACV,SAAS,CAAC,qDAAqD,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBAC9E;oBACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;iBAC9B;gBAED,2GAA2G;gBAC3G,MAAM,KAAK,GAAG,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAA4B,CAAC;gBAE1E,MAAM,iBAAiB,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAA+B,CAAC;gBACnE,SAAS,CAAC,oDAAoD,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAElF,IAAI,iBAAiB,EAAE;oBACrB,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;oBAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBACvB,SAAS,CAAC,iDAAiD,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC1E,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,CAAC,CAAC,CAAC;oBACH,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;oBAEzB,yCAAyC;oBACzC,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CACR,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAC5B,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE;4BAChC,OAAO,EAAE,CAAC;yBACX;6BAAM;4BACL,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;4BAChC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;yBACnC;oBACH,CAAC,CAAC,CACL,CACF,CAAC;iBACH;gBAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAE3B,gDAAgD;gBAChD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzD,SAAS,CAAC,oDAAoD,EAAE,EAAE,CAAC,CAAC;aACrE;YAAC,OAAO,KAAK,EAAE;gBACd,SAAS,CAAC,yCAAyC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;aACtE;QACH,CAAC;KAAA;IAEY,YAAY,CAAC,MAA0B;;YAClD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAAE,OAAO,IAAI,CAAC;YAE3C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAE5C,mJAAmJ;YACnJ,gMAAgM;YAChM,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9C,SAAS,CAAC,8DAA8D,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;gBACtF,OAAO,IAAI,CAAC;aACb;YAED,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEpF,2EAA2E;YAC3E,IAAI,CAAC,cAAc,EAAE;gBACnB,SAAS,CAAC,oDAAoD,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACzF,OAAO,IAAI,CAAC;aACb;YAED,MAAM,gBAAgB,GAAmB,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC;gBAC9E,CAAC,CAAC,cAAc,CAAC,IAAI;gBACrB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;YAEzB,SAAS,CAAC,4CAA4C,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEzE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAEzB,MAAM,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAEhF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;gBACnC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;gBACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,eAAe,EAAE,gBAAgB;aAClC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,EAAE;gBACX,SAAS,CAAC,yDAAyD,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBAClF,OAAO,IAAI,CAAC;aACb;YAED,OAAO;gBACL,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC;KAAA;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;IACnC,CAAC;IAED,mBAAmB;IACZ,iBAAiB,CAAC,cAAsB;QAC7C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,oBAAoB;IACb,kBAAkB;QACvB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAqB,CAAC;IAC1E,CAAC;IAED,YAAY;IACF,WAAW,CAAC,QAAwB;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,eAAe;IACL,cAAc,CAAC,WAA+B;QACtD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAES,gBAAgB;QACxB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;SAC/D;IACH,CAAC;IAED,gBAAgB;IACN,eAAe,CAAC,OAAiC;QACzD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,iBAAiB;IACP,kBAAkB,CAAC,QAAgB;QAC3C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAEM,kBAAkB;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,oBAAoB;IACP,oBAAoB;;YAC/B,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,CAAC;KAAA;IAEM,wBAAwB;QAC7B,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,KAAK,CAAC,CAAC;IACjF,CAAC;CACF"}
|
|
@@ -7,11 +7,16 @@ import { IntegritySnapshot } from '../camera.types';
|
|
|
7
7
|
*
|
|
8
8
|
* Pull-based: call `getSnapshot()` to read accumulated violations.
|
|
9
9
|
* Once a violation is recorded, it persists for the entire session.
|
|
10
|
+
*
|
|
11
|
+
* SAFETY: This is an observational feature — it must NEVER throw into the camera path
|
|
12
|
+
* or prevent camera operations from completing. All initialization and callback code
|
|
13
|
+
* is wrapped in try/catch to guarantee this.
|
|
10
14
|
*/
|
|
11
15
|
export declare class VideoIntegrityMonitor {
|
|
12
16
|
private violations;
|
|
13
17
|
private videoElement;
|
|
14
18
|
private legitimateStream;
|
|
19
|
+
private disposed;
|
|
15
20
|
private videoAttributeObserver;
|
|
16
21
|
private parentChildListObserver;
|
|
17
22
|
private onAddTrack;
|
|
@@ -27,6 +32,10 @@ export declare class VideoIntegrityMonitor {
|
|
|
27
32
|
/**
|
|
28
33
|
* Intercepts srcObject setter on the video element instance via Object.defineProperty.
|
|
29
34
|
* MutationObserver cannot observe srcObject because it is a JS property, not a DOM attribute.
|
|
35
|
+
*
|
|
36
|
+
* SAFETY: The setter always delegates to the original prototype setter regardless of
|
|
37
|
+
* whether the violation recording succeeds or fails. The camera stream must never be
|
|
38
|
+
* blocked by integrity monitoring.
|
|
30
39
|
*/
|
|
31
40
|
private interceptSrcObject;
|
|
32
41
|
/**
|
|
@@ -16,10 +16,15 @@ import { printLogs } from '../../../internal/shared/shared.utils';
|
|
|
16
16
|
*
|
|
17
17
|
* Pull-based: call `getSnapshot()` to read accumulated violations.
|
|
18
18
|
* Once a violation is recorded, it persists for the entire session.
|
|
19
|
+
*
|
|
20
|
+
* SAFETY: This is an observational feature — it must NEVER throw into the camera path
|
|
21
|
+
* or prevent camera operations from completing. All initialization and callback code
|
|
22
|
+
* is wrapped in try/catch to guarantee this.
|
|
19
23
|
*/
|
|
20
24
|
export class VideoIntegrityMonitor {
|
|
21
25
|
constructor(videoElement, stream) {
|
|
22
26
|
this.violations = [];
|
|
27
|
+
this.disposed = false;
|
|
23
28
|
// Observers
|
|
24
29
|
this.videoAttributeObserver = null;
|
|
25
30
|
this.parentChildListObserver = null;
|
|
@@ -30,16 +35,43 @@ export class VideoIntegrityMonitor {
|
|
|
30
35
|
this.videoElement = videoElement;
|
|
31
36
|
this.legitimateStream = stream;
|
|
32
37
|
this.originalId = videoElement.id;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
// Each init step is isolated — a failure in one must not prevent the others
|
|
39
|
+
// or propagate up to the camera initialization flow.
|
|
40
|
+
try {
|
|
41
|
+
this.interceptSrcObject();
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
printLogs('[VideoIntegrityMonitor] failed to init srcObject interceptor', e, 'WARN');
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
this.initVideoAttributeObserver();
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
printLogs('[VideoIntegrityMonitor] failed to init attribute observer', e, 'WARN');
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
this.initParentObserver();
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
printLogs('[VideoIntegrityMonitor] failed to init parent observer', e, 'WARN');
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
this.initStreamListeners();
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
printLogs('[VideoIntegrityMonitor] failed to init stream listeners', e, 'WARN');
|
|
63
|
+
}
|
|
37
64
|
this.trackValidationDone = this.validateTrackSource();
|
|
38
65
|
printLogs('[VideoIntegrityMonitor] initialized', '');
|
|
39
66
|
}
|
|
40
67
|
getSnapshot() {
|
|
41
68
|
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
|
|
69
|
+
try {
|
|
70
|
+
yield this.trackValidationDone;
|
|
71
|
+
}
|
|
72
|
+
catch (_a) {
|
|
73
|
+
// Track validation failed — return whatever violations we have so far
|
|
74
|
+
}
|
|
43
75
|
return {
|
|
44
76
|
violations: [...this.violations],
|
|
45
77
|
tampered: this.violations.length > 0,
|
|
@@ -47,47 +79,77 @@ export class VideoIntegrityMonitor {
|
|
|
47
79
|
});
|
|
48
80
|
}
|
|
49
81
|
dispose() {
|
|
82
|
+
this.disposed = true;
|
|
50
83
|
// Restore original srcObject property descriptor
|
|
51
|
-
|
|
52
|
-
|
|
84
|
+
try {
|
|
85
|
+
if (this.originalSrcObjectDescriptor) {
|
|
86
|
+
Object.defineProperty(this.videoElement, 'srcObject', this.originalSrcObjectDescriptor);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
delete this.videoElement.srcObject;
|
|
90
|
+
}
|
|
53
91
|
}
|
|
54
|
-
|
|
55
|
-
|
|
92
|
+
catch (e) {
|
|
93
|
+
printLogs('[VideoIntegrityMonitor] failed to restore srcObject descriptor', e, 'WARN');
|
|
56
94
|
}
|
|
57
|
-
|
|
58
|
-
this.videoAttributeObserver
|
|
59
|
-
|
|
95
|
+
try {
|
|
96
|
+
if (this.videoAttributeObserver) {
|
|
97
|
+
this.videoAttributeObserver.disconnect();
|
|
98
|
+
this.videoAttributeObserver = null;
|
|
99
|
+
}
|
|
60
100
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.parentChildListObserver = null;
|
|
101
|
+
catch (e) {
|
|
102
|
+
printLogs('[VideoIntegrityMonitor] failed to disconnect attribute observer', e, 'WARN');
|
|
64
103
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
104
|
+
try {
|
|
105
|
+
if (this.parentChildListObserver) {
|
|
106
|
+
this.parentChildListObserver.disconnect();
|
|
107
|
+
this.parentChildListObserver = null;
|
|
108
|
+
}
|
|
68
109
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
this.onRemoveTrack = null;
|
|
110
|
+
catch (e) {
|
|
111
|
+
printLogs('[VideoIntegrityMonitor] failed to disconnect parent observer', e, 'WARN');
|
|
72
112
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
113
|
+
try {
|
|
114
|
+
if (this.onAddTrack) {
|
|
115
|
+
this.legitimateStream.removeEventListener('addtrack', this.onAddTrack);
|
|
116
|
+
this.onAddTrack = null;
|
|
117
|
+
}
|
|
118
|
+
if (this.onRemoveTrack) {
|
|
119
|
+
this.legitimateStream.removeEventListener('removetrack', this.onRemoveTrack);
|
|
120
|
+
this.onRemoveTrack = null;
|
|
121
|
+
}
|
|
122
|
+
const videoTrack = this.legitimateStream.getVideoTracks()[0];
|
|
123
|
+
if (videoTrack && this.onTrackEnded) {
|
|
124
|
+
videoTrack.removeEventListener('ended', this.onTrackEnded);
|
|
125
|
+
this.onTrackEnded = null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
printLogs('[VideoIntegrityMonitor] failed to remove stream listeners', e, 'WARN');
|
|
77
130
|
}
|
|
78
131
|
printLogs('[VideoIntegrityMonitor] disposed', '');
|
|
79
132
|
}
|
|
80
133
|
recordViolation(type, details) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
134
|
+
try {
|
|
135
|
+
this.violations.push({
|
|
136
|
+
type,
|
|
137
|
+
timestamp: Date.now(),
|
|
138
|
+
details,
|
|
139
|
+
});
|
|
140
|
+
printLogs(`[VideoIntegrityMonitor] violation: ${type}`, details, 'WARN');
|
|
141
|
+
}
|
|
142
|
+
catch (_a) {
|
|
143
|
+
// Last resort — never throw from the violation recorder itself
|
|
144
|
+
}
|
|
87
145
|
}
|
|
88
146
|
/**
|
|
89
147
|
* Intercepts srcObject setter on the video element instance via Object.defineProperty.
|
|
90
148
|
* MutationObserver cannot observe srcObject because it is a JS property, not a DOM attribute.
|
|
149
|
+
*
|
|
150
|
+
* SAFETY: The setter always delegates to the original prototype setter regardless of
|
|
151
|
+
* whether the violation recording succeeds or fails. The camera stream must never be
|
|
152
|
+
* blocked by integrity monitoring.
|
|
91
153
|
*/
|
|
92
154
|
interceptSrcObject() {
|
|
93
155
|
const protoDescriptor = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'srcObject');
|
|
@@ -95,19 +157,26 @@ export class VideoIntegrityMonitor {
|
|
|
95
157
|
return;
|
|
96
158
|
// Save whatever descriptor exists on the instance (if any) for cleanup
|
|
97
159
|
this.originalSrcObjectDescriptor = Object.getOwnPropertyDescriptor(this.videoElement, 'srcObject');
|
|
160
|
+
// Capture monitor instance — inside the property descriptor `this` refers to the
|
|
161
|
+
// HTMLVideoElement (the property owner), not the VideoIntegrityMonitor.
|
|
162
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
163
|
+
const monitor = this;
|
|
98
164
|
Object.defineProperty(this.videoElement, 'srcObject', {
|
|
99
165
|
get() {
|
|
100
166
|
var _a, _b;
|
|
101
167
|
return (_b = (_a = protoDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : null;
|
|
102
168
|
},
|
|
103
169
|
set(value) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
170
|
+
// Always apply the value first — camera operations must never be blocked
|
|
171
|
+
protoDescriptor.set.call(this, value);
|
|
172
|
+
// Then record the violation if applicable (after dispose, stop monitoring)
|
|
173
|
+
try {
|
|
174
|
+
if (!monitor.disposed && value !== null && value !== monitor.legitimateStream) {
|
|
175
|
+
monitor.recordViolation('srcObject_changed', 'Video srcObject was reassigned to a different stream');
|
|
176
|
+
}
|
|
108
177
|
}
|
|
109
|
-
|
|
110
|
-
|
|
178
|
+
catch (e) {
|
|
179
|
+
printLogs('[VideoIntegrityMonitor] srcObject interceptor error', e, 'WARN');
|
|
111
180
|
}
|
|
112
181
|
},
|
|
113
182
|
configurable: true,
|
|
@@ -120,31 +189,36 @@ export class VideoIntegrityMonitor {
|
|
|
120
189
|
*/
|
|
121
190
|
initVideoAttributeObserver() {
|
|
122
191
|
this.videoAttributeObserver = new MutationObserver((mutations) => {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
192
|
+
try {
|
|
193
|
+
for (const mutation of mutations) {
|
|
194
|
+
if (mutation.type !== 'attributes')
|
|
195
|
+
continue;
|
|
196
|
+
switch (mutation.attributeName) {
|
|
197
|
+
case 'style':
|
|
198
|
+
case 'hidden': {
|
|
199
|
+
// Only flag when the video element is actually hidden — benign style
|
|
200
|
+
// changes (positioning, dimensions, transitions) are common in frameworks
|
|
201
|
+
const computed = getComputedStyle(this.videoElement);
|
|
202
|
+
const isHidden = this.videoElement.hidden ||
|
|
203
|
+
computed.display === 'none' ||
|
|
204
|
+
computed.visibility === 'hidden' ||
|
|
205
|
+
parseFloat(computed.opacity) === 0;
|
|
206
|
+
if (isHidden) {
|
|
207
|
+
this.recordViolation('style_tampered', `Video element hidden via "${mutation.attributeName}"`);
|
|
208
|
+
}
|
|
209
|
+
break;
|
|
138
210
|
}
|
|
139
|
-
|
|
211
|
+
case 'id':
|
|
212
|
+
if (this.videoElement.id !== this.originalId) {
|
|
213
|
+
this.recordViolation('id_changed', `Video element ID changed from "${this.originalId}" to "${this.videoElement.id}"`);
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
140
216
|
}
|
|
141
|
-
case 'id':
|
|
142
|
-
if (this.videoElement.id !== this.originalId) {
|
|
143
|
-
this.recordViolation('id_changed', `Video element ID changed from "${this.originalId}" to "${this.videoElement.id}"`);
|
|
144
|
-
}
|
|
145
|
-
break;
|
|
146
217
|
}
|
|
147
218
|
}
|
|
219
|
+
catch (e) {
|
|
220
|
+
printLogs('[VideoIntegrityMonitor] attribute observer error', e, 'WARN');
|
|
221
|
+
}
|
|
148
222
|
});
|
|
149
223
|
this.videoAttributeObserver.observe(this.videoElement, {
|
|
150
224
|
attributes: true,
|
|
@@ -159,32 +233,37 @@ export class VideoIntegrityMonitor {
|
|
|
159
233
|
if (!parent)
|
|
160
234
|
return;
|
|
161
235
|
this.parentChildListObserver = new MutationObserver((mutations) => {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
// Check if our video element was removed
|
|
166
|
-
for (const removed of mutation.removedNodes) {
|
|
167
|
-
if (removed === this.videoElement) {
|
|
168
|
-
this.recordViolation('element_removed', 'Video element was removed from the DOM');
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
// Check for suspicious new siblings
|
|
172
|
-
for (const added of mutation.addedNodes) {
|
|
173
|
-
if (!(added instanceof HTMLElement))
|
|
236
|
+
try {
|
|
237
|
+
for (const mutation of mutations) {
|
|
238
|
+
if (mutation.type !== 'childList')
|
|
174
239
|
continue;
|
|
175
|
-
//
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
if (added instanceof HTMLCanvasElement) {
|
|
181
|
-
this.recordViolation('overlay_injected', `<canvas> element injected as sibling`);
|
|
240
|
+
// Check if our video element was removed
|
|
241
|
+
for (const removed of mutation.removedNodes) {
|
|
242
|
+
if (removed === this.videoElement) {
|
|
243
|
+
this.recordViolation('element_removed', 'Video element was removed from the DOM');
|
|
244
|
+
}
|
|
182
245
|
}
|
|
183
|
-
|
|
184
|
-
|
|
246
|
+
// Check for suspicious new siblings
|
|
247
|
+
for (const added of mutation.addedNodes) {
|
|
248
|
+
if (!(added instanceof HTMLElement))
|
|
249
|
+
continue;
|
|
250
|
+
// A new video element added alongside ours could be a replacement
|
|
251
|
+
if (added instanceof HTMLVideoElement && added !== this.videoElement) {
|
|
252
|
+
this.recordViolation('element_replaced', `New <video> element added as sibling (id="${added.id || '(none)'}")`);
|
|
253
|
+
}
|
|
254
|
+
// Canvas or img overlays
|
|
255
|
+
if (added instanceof HTMLCanvasElement) {
|
|
256
|
+
this.recordViolation('overlay_injected', `<canvas> element injected as sibling`);
|
|
257
|
+
}
|
|
258
|
+
if (added instanceof HTMLImageElement) {
|
|
259
|
+
this.recordViolation('overlay_injected', `<img> element injected as sibling`);
|
|
260
|
+
}
|
|
185
261
|
}
|
|
186
262
|
}
|
|
187
263
|
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
printLogs('[VideoIntegrityMonitor] parent observer error', e, 'WARN');
|
|
266
|
+
}
|
|
188
267
|
});
|
|
189
268
|
this.parentChildListObserver.observe(parent, { childList: true });
|
|
190
269
|
}
|
|
@@ -216,19 +295,19 @@ export class VideoIntegrityMonitor {
|
|
|
216
295
|
validateTrackSource() {
|
|
217
296
|
var _a;
|
|
218
297
|
return __awaiter(this, void 0, void 0, function* () {
|
|
219
|
-
const videoTrack = this.legitimateStream.getVideoTracks()[0];
|
|
220
|
-
if (!videoTrack)
|
|
221
|
-
return;
|
|
222
|
-
const label = videoTrack.label;
|
|
223
|
-
const settings = (_a = videoTrack.getSettings) === null || _a === void 0 ? void 0 : _a.call(videoTrack);
|
|
224
|
-
const trackDeviceId = settings === null || settings === void 0 ? void 0 : settings.deviceId;
|
|
225
|
-
// Canvas capture tracks typically have empty labels
|
|
226
|
-
if (!label || label.trim() === '') {
|
|
227
|
-
this.recordViolation('track_source_suspicious', 'Video track has an empty label (possible canvas capture)');
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
// Verify the deviceId matches an actual enumerated device
|
|
231
298
|
try {
|
|
299
|
+
const videoTrack = this.legitimateStream.getVideoTracks()[0];
|
|
300
|
+
if (!videoTrack)
|
|
301
|
+
return;
|
|
302
|
+
const label = videoTrack.label;
|
|
303
|
+
const settings = (_a = videoTrack.getSettings) === null || _a === void 0 ? void 0 : _a.call(videoTrack);
|
|
304
|
+
const trackDeviceId = settings === null || settings === void 0 ? void 0 : settings.deviceId;
|
|
305
|
+
// Canvas capture tracks typically have empty labels
|
|
306
|
+
if (!label || label.trim() === '') {
|
|
307
|
+
this.recordViolation('track_source_suspicious', 'Video track has an empty label (possible canvas capture)');
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
// Verify the deviceId matches an actual enumerated device
|
|
232
311
|
const devices = yield navigator.mediaDevices.enumerateDevices();
|
|
233
312
|
const videoDevices = devices.filter((d) => d.kind === 'videoinput');
|
|
234
313
|
const matchingDevice = videoDevices.find((d) => d.deviceId === trackDeviceId);
|
|
@@ -236,9 +315,9 @@ export class VideoIntegrityMonitor {
|
|
|
236
315
|
this.recordViolation('track_source_suspicious', `Track deviceId "${trackDeviceId}" not found in enumerated devices`);
|
|
237
316
|
}
|
|
238
317
|
}
|
|
239
|
-
catch (
|
|
240
|
-
//
|
|
241
|
-
printLogs('[VideoIntegrityMonitor]
|
|
318
|
+
catch (e) {
|
|
319
|
+
// Validation failure must not affect camera operations
|
|
320
|
+
printLogs('[VideoIntegrityMonitor] track source validation error', e, 'WARN');
|
|
242
321
|
}
|
|
243
322
|
});
|
|
244
323
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoIntegrityMonitor.js","sourceRoot":"","sources":["../../../../../../src/application/modules/support/camera/services/VideoIntegrityMonitor.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"VideoIntegrityMonitor.js","sourceRoot":"","sources":["../../../../../../src/application/modules/support/camera/services/VideoIntegrityMonitor.ts"],"names":[],"mappings":"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"}
|