easyproctor-hml 2.5.21 → 2.5.22
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/README.md +36 -7
- package/esm/index.js +29 -184
- package/extension/{extensionEasyProctor.d.ts → extension.d.ts} +1 -1
- package/index.js +29 -184
- package/package.json +1 -1
- package/plugins/recorder.d.ts +2 -1
- package/proctoring/options/ProctoringVideoOptions.d.ts +3 -0
- package/proctoring/proctoring.d.ts +0 -6
- package/proctoring/useProctoring.d.ts +0 -2
- package/unpkg/easyproctor.min.js +38 -38
- package/extension/extensionEasyCatcher.d.ts +0 -11
package/README.md
CHANGED
|
@@ -263,17 +263,46 @@ const {
|
|
|
263
263
|
token: "...",
|
|
264
264
|
});
|
|
265
265
|
```
|
|
266
|
-
## Release Note V 2.4.0
|
|
267
|
-
- Compatibilidade com dispositivos móveis
|
|
268
266
|
|
|
269
|
-
## Release Note V 2.
|
|
270
|
-
- Correção
|
|
267
|
+
## Release Note V 2.5.4
|
|
268
|
+
- Fix: Correção sobre as imagens do realtime
|
|
269
|
+
|
|
270
|
+
## Release Note V 2.5.4
|
|
271
|
+
- Novos alertas de tela (Clipboard, SplitScreen)
|
|
272
|
+
- Ajustes na detecção de foco da tela
|
|
273
|
+
- Melhorias na analise biométrica
|
|
274
|
+
- Melhorias na analise do uso de dispositivos
|
|
275
|
+
- Correção do uso de câmera externa no ambiente de produção
|
|
276
|
+
|
|
277
|
+
## Release Note V 2.5.3
|
|
278
|
+
- Fix: Resolução do video
|
|
279
|
+
- Melhorias no proctoring do tipo REALTIME
|
|
280
|
+
|
|
281
|
+
## Release Note V 2.5.2
|
|
282
|
+
- Alteração do nome do callback 'onFinish' para 'onResultAvailable'
|
|
283
|
+
- Melhorias no proctoring do tipo REALTIME
|
|
284
|
+
|
|
285
|
+
## Release Note V 2.5.1
|
|
286
|
+
- Novos atributos no callback de 'onFinish'
|
|
287
|
+
- scoreThreshold: limiar de aprovação da sessão de proctoring
|
|
288
|
+
- justification: em caso de reprovação, esse campo traz o resumo das irregularidades
|
|
289
|
+
|
|
290
|
+
## Release Note V 2.5.0
|
|
291
|
+
- Callback de 'onFinish' no hook de finish que permite o acesso ao resultado da auditoria de forma imediata
|
|
292
|
+
- Melhorias no proctoring em tempo real
|
|
293
|
+
- Melhorias no monitoramento ativo durante o exame
|
|
294
|
+
- Novos tipos de alertas do onRealtimeAlerts:
|
|
295
|
+
- position_detection_on_stream:
|
|
296
|
+
- wrong_face_size_detected: Face muito perto da câmera, afaste-se um pouco mais
|
|
297
|
+
- wrong_face_position_edge_detected: Face muito próxima da borda, mova-se para o centro da tela
|
|
298
|
+
- wrong_face_position_move_right_detected: Face não centralizada, mova-se para a direita
|
|
299
|
+
- wrong_face_position_move_top_detected: Face não centralizada, mova-se para cima
|
|
300
|
+
- wrong_face_position_move_left_detected: Face não centralizada, mova-se para a esquerda
|
|
301
|
+
- wrong_face_position_move_bottom_detected: Face não centralizada, mova-se para baixo
|
|
271
302
|
|
|
272
|
-
## Release Note V 2.3.2
|
|
273
|
-
- Melhorias no fluxo da câmera externa (reset e goToExternalCameraPositionStep)
|
|
274
303
|
|
|
275
304
|
## Release Note V 2.4.0
|
|
276
|
-
- Compatibilidade com dispositivos móveis
|
|
305
|
+
- Compatibilidade com dispositivos móveis
|
|
277
306
|
|
|
278
307
|
## Release Note V 2.3.3
|
|
279
308
|
- Correção do reset no startSession
|
package/esm/index.js
CHANGED
|
@@ -12167,7 +12167,10 @@ function validatePartialVideoOptions(options) {
|
|
|
12167
12167
|
width: options.width,
|
|
12168
12168
|
height: options.height,
|
|
12169
12169
|
minWidth: options.minWidth,
|
|
12170
|
-
minHeight: options.minHeight
|
|
12170
|
+
minHeight: options.minHeight,
|
|
12171
|
+
timeSlice: options.timeSlice,
|
|
12172
|
+
videoBitsPerSecond: options.videoBitsPerSecond,
|
|
12173
|
+
mimeType: options.mimeType
|
|
12171
12174
|
};
|
|
12172
12175
|
} else {
|
|
12173
12176
|
return { width: 640, height: 480 };
|
|
@@ -12254,7 +12257,7 @@ var proctoringId;
|
|
|
12254
12257
|
function setRecorderProctoringId(id) {
|
|
12255
12258
|
proctoringId = id;
|
|
12256
12259
|
}
|
|
12257
|
-
function recorder(stream, buffer, onBufferSizeError = false, onBufferSizeErrorCallback, audio = false) {
|
|
12260
|
+
function recorder(stream, buffer, videoOptions, onBufferSizeError = false, onBufferSizeErrorCallback, audio = false) {
|
|
12258
12261
|
let resolvePromise;
|
|
12259
12262
|
let stopped = false;
|
|
12260
12263
|
let onBufferSizeInterval;
|
|
@@ -12264,7 +12267,7 @@ function recorder(stream, buffer, onBufferSizeError = false, onBufferSizeErrorCa
|
|
|
12264
12267
|
let recorderOptions = {
|
|
12265
12268
|
// eslint-disable-next-line no-useless-escape
|
|
12266
12269
|
mimeType: "video/webm",
|
|
12267
|
-
videoBitsPerSecond: 128e3,
|
|
12270
|
+
videoBitsPerSecond: (videoOptions == null ? void 0 : videoOptions.videoBitsPerSecond) || 128e3,
|
|
12268
12271
|
audioBitsPerSecond: 64 * 1e3
|
|
12269
12272
|
};
|
|
12270
12273
|
if (MediaRecorder.isTypeSupported("video/webm;codecs=vp9")) {
|
|
@@ -12274,15 +12277,25 @@ function recorder(stream, buffer, onBufferSizeError = false, onBufferSizeErrorCa
|
|
|
12274
12277
|
"vp9 codec not supported. Using default mimeType without vp9."
|
|
12275
12278
|
);
|
|
12276
12279
|
}
|
|
12280
|
+
if (videoOptions == null ? void 0 : videoOptions.mimeType) {
|
|
12281
|
+
recorderOptions.mimeType = videoOptions == null ? void 0 : videoOptions.mimeType;
|
|
12282
|
+
}
|
|
12277
12283
|
if (audio) {
|
|
12278
12284
|
recorderOptions = {
|
|
12279
12285
|
mimeType: "audio/webm",
|
|
12280
12286
|
audioBitsPerSecond: 64 * 1e3
|
|
12281
12287
|
};
|
|
12282
12288
|
}
|
|
12289
|
+
console.log("recorderOptions bitsPerSecond", recorderOptions.bitsPerSecond);
|
|
12283
12290
|
const mediaRecorder = new MediaRecorder(stream, recorderOptions);
|
|
12284
12291
|
mediaRecorder.ondataavailable = (e3) => {
|
|
12285
12292
|
bufferSize = bufferSize + e3.data.size;
|
|
12293
|
+
console.log("video tracks length > 0", stream.getVideoTracks().length > 0);
|
|
12294
|
+
if (stream.getVideoTracks().length > 0) {
|
|
12295
|
+
const videoTrack = stream.getVideoTracks()[0];
|
|
12296
|
+
console.log(videoTrack.readyState);
|
|
12297
|
+
console.log(videoTrack.enabled);
|
|
12298
|
+
}
|
|
12286
12299
|
if (e3.data.size > 0) {
|
|
12287
12300
|
buffer.push(e3.data);
|
|
12288
12301
|
}
|
|
@@ -12310,14 +12323,10 @@ function recorder(stream, buffer, onBufferSizeError = false, onBufferSizeErrorCa
|
|
|
12310
12323
|
function startRecording() {
|
|
12311
12324
|
return new Promise((resolve) => {
|
|
12312
12325
|
resolvePromise = resolve;
|
|
12313
|
-
|
|
12326
|
+
console.log("startRecording", videoOptions == null ? void 0 : videoOptions.timeSlice);
|
|
12327
|
+
mediaRecorder.start((videoOptions == null ? void 0 : videoOptions.timeSlice) || 1e4);
|
|
12314
12328
|
bufferSize = 0;
|
|
12315
12329
|
stopped = false;
|
|
12316
|
-
if (onBufferSizeError) {
|
|
12317
|
-
onBufferSizeInterval = setInterval(async () => {
|
|
12318
|
-
await mediaRecorder.requestData();
|
|
12319
|
-
}, 3e4);
|
|
12320
|
-
}
|
|
12321
12330
|
});
|
|
12322
12331
|
}
|
|
12323
12332
|
function stopRecording() {
|
|
@@ -12848,6 +12857,7 @@ var CameraRecorder = class {
|
|
|
12848
12857
|
this.cameraStream,
|
|
12849
12858
|
// streamToRecord,
|
|
12850
12859
|
this.blobs,
|
|
12860
|
+
this.videoOptions,
|
|
12851
12861
|
this.options.onBufferSizeError,
|
|
12852
12862
|
(e3) => this.bufferError(e3),
|
|
12853
12863
|
false
|
|
@@ -14526,9 +14536,7 @@ var CapturePhoto = class {
|
|
|
14526
14536
|
);
|
|
14527
14537
|
await this.cameraRecorder.startRecording();
|
|
14528
14538
|
cameraContainer.srcObject = this.cameraRecorder.cameraStream;
|
|
14529
|
-
cameraContainer.play()
|
|
14530
|
-
console.warn("Autoplay bloqueado ou erro ao iniciar v\xEDdeo:", e3);
|
|
14531
|
-
});
|
|
14539
|
+
cameraContainer.play();
|
|
14532
14540
|
}
|
|
14533
14541
|
shot() {
|
|
14534
14542
|
const cameraContainer = document.querySelector("#cameraStream");
|
|
@@ -14621,9 +14629,6 @@ var CapturePhoto = class {
|
|
|
14621
14629
|
const video = document.createElement("video");
|
|
14622
14630
|
video.setAttribute("id", "cameraStream");
|
|
14623
14631
|
video.muted = true;
|
|
14624
|
-
video.setAttribute("playsinline", "true");
|
|
14625
|
-
video.setAttribute("webkit-playsinline", "true");
|
|
14626
|
-
video.autoplay = true;
|
|
14627
14632
|
divCamera.style.position = "fixed";
|
|
14628
14633
|
divCamera.style.top = "0";
|
|
14629
14634
|
divCamera.style.left = "0";
|
|
@@ -14810,8 +14815,8 @@ var CapturePhoto = class {
|
|
|
14810
14815
|
}
|
|
14811
14816
|
};
|
|
14812
14817
|
|
|
14813
|
-
// src/extension/
|
|
14814
|
-
var
|
|
14818
|
+
// src/extension/extension.ts
|
|
14819
|
+
var Extension = class {
|
|
14815
14820
|
constructor() {
|
|
14816
14821
|
this.hasExtension = false;
|
|
14817
14822
|
this.tryes = 0;
|
|
@@ -14856,89 +14861,6 @@ var ExtensionEasyProctor = class {
|
|
|
14856
14861
|
}
|
|
14857
14862
|
};
|
|
14858
14863
|
|
|
14859
|
-
// src/extension/extensionEasyCatcher.ts
|
|
14860
|
-
var ExtensionEasyCatcher = class {
|
|
14861
|
-
constructor(options) {
|
|
14862
|
-
this.hasExtension = false;
|
|
14863
|
-
this.tryes = 0;
|
|
14864
|
-
this.responseStart = false;
|
|
14865
|
-
this.options = options || {};
|
|
14866
|
-
}
|
|
14867
|
-
/**
|
|
14868
|
-
* Verifica se a extensão está instalada e ativa.
|
|
14869
|
-
* Retorna o número da versão se encontrada, ou lança erro após timeout.
|
|
14870
|
-
*/
|
|
14871
|
-
checkExtensionInstalled(timeoutMs = 2e3) {
|
|
14872
|
-
return new Promise((resolve, reject) => {
|
|
14873
|
-
let handled = false;
|
|
14874
|
-
const handler = (event) => {
|
|
14875
|
-
if (event.source === window && event.data.sender === "easyproctor-extension" && event.data.message_name === "version") {
|
|
14876
|
-
handled = true;
|
|
14877
|
-
window.removeEventListener("message", handler);
|
|
14878
|
-
resolve(event.data.message);
|
|
14879
|
-
}
|
|
14880
|
-
};
|
|
14881
|
-
window.addEventListener("message", handler);
|
|
14882
|
-
window.postMessage({
|
|
14883
|
-
type: "easycatcher",
|
|
14884
|
-
func: "verifyExtensionEasycatcher"
|
|
14885
|
-
}, "*");
|
|
14886
|
-
setTimeout(() => {
|
|
14887
|
-
if (!handled) {
|
|
14888
|
-
window.removeEventListener("message", handler);
|
|
14889
|
-
reject(new Error("Extens\xE3o n\xE3o detectada ou n\xE3o respondeu."));
|
|
14890
|
-
}
|
|
14891
|
-
}, timeoutMs);
|
|
14892
|
-
});
|
|
14893
|
-
}
|
|
14894
|
-
/**
|
|
14895
|
-
* Solicita o JSON da sessão atual capturado pela extensão.
|
|
14896
|
-
*/
|
|
14897
|
-
getSessionData(timeoutMs = 5e3) {
|
|
14898
|
-
return new Promise((resolve, reject) => {
|
|
14899
|
-
let handled = false;
|
|
14900
|
-
const handler = (event) => {
|
|
14901
|
-
if (event.source === window && event.data.sender === "easyproctor-extension" && event.data.message_name === "data_response") {
|
|
14902
|
-
handled = true;
|
|
14903
|
-
window.removeEventListener("message", handler);
|
|
14904
|
-
resolve(event.data.payload);
|
|
14905
|
-
}
|
|
14906
|
-
};
|
|
14907
|
-
window.addEventListener("message", handler);
|
|
14908
|
-
window.postMessage({
|
|
14909
|
-
type: "easycatcher",
|
|
14910
|
-
func: "getDataExtensionEasycatcher"
|
|
14911
|
-
}, "*");
|
|
14912
|
-
setTimeout(() => {
|
|
14913
|
-
if (!handled) {
|
|
14914
|
-
window.removeEventListener("message", handler);
|
|
14915
|
-
reject(new Error("Timeout ao aguardar dados da extens\xE3o."));
|
|
14916
|
-
}
|
|
14917
|
-
}, timeoutMs);
|
|
14918
|
-
});
|
|
14919
|
-
}
|
|
14920
|
-
start() {
|
|
14921
|
-
return new Promise((resolve, reject) => {
|
|
14922
|
-
let handled = false;
|
|
14923
|
-
const handler = (event) => {
|
|
14924
|
-
if (event.source === window && event.data.sender === "easyproctor-extension" && event.data.message_name === "started_confirmed") {
|
|
14925
|
-
handled = true;
|
|
14926
|
-
window.removeEventListener("message", handler);
|
|
14927
|
-
resolve(true);
|
|
14928
|
-
}
|
|
14929
|
-
};
|
|
14930
|
-
window.addEventListener("message", handler);
|
|
14931
|
-
window.postMessage({ type: "easycatcher", func: "startExtensionEasycatcher" }, "*");
|
|
14932
|
-
setTimeout(() => {
|
|
14933
|
-
if (!handled) {
|
|
14934
|
-
window.removeEventListener("message", handler);
|
|
14935
|
-
reject(new Error("Timeout: Extens\xE3o n\xE3o confirmou o in\xEDcio."));
|
|
14936
|
-
}
|
|
14937
|
-
}, 3e3);
|
|
14938
|
-
});
|
|
14939
|
-
}
|
|
14940
|
-
};
|
|
14941
|
-
|
|
14942
14864
|
// src/modules/onChangeDevices.ts
|
|
14943
14865
|
var onChangeDevices = class {
|
|
14944
14866
|
constructor(repositoryDevices, proctoringId2, sessionOptions, allRecorders) {
|
|
@@ -15375,7 +15297,7 @@ var AudioRecorder = class {
|
|
|
15375
15297
|
audio: { deviceId: this.options.microphoneId || "default" }
|
|
15376
15298
|
};
|
|
15377
15299
|
this.audioStream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
15378
|
-
const { startRecording, stopRecording, pauseRecording, resumeRecording } = recorder(this.audioStream, this.blobs, void 0, void 0, true);
|
|
15300
|
+
const { startRecording, stopRecording, pauseRecording, resumeRecording } = recorder(this.audioStream, this.blobs, null, void 0, void 0, true);
|
|
15379
15301
|
this.recordingStart = startRecording;
|
|
15380
15302
|
this.recordingStop = stopRecording;
|
|
15381
15303
|
this.recordingPause = pauseRecording;
|
|
@@ -17966,7 +17888,7 @@ var ScreenRecorder = class {
|
|
|
17966
17888
|
});
|
|
17967
17889
|
throw NOT_SHARED_SCREEN;
|
|
17968
17890
|
}
|
|
17969
|
-
const { startRecording, stopRecording } = recorder(this.screenStream, this.blobs, this.options.onBufferSizeError, onBufferSizeErrorCallback);
|
|
17891
|
+
const { startRecording, stopRecording } = recorder(this.screenStream, this.blobs, null, this.options.onBufferSizeError, onBufferSizeErrorCallback);
|
|
17970
17892
|
this.recordingStart = startRecording;
|
|
17971
17893
|
this.recordingStop = stopRecording;
|
|
17972
17894
|
this.recordingStart();
|
|
@@ -21036,7 +20958,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21036
20958
|
this.connection = null;
|
|
21037
20959
|
this.context = context;
|
|
21038
20960
|
this.onRealtimeAlertsCallback = onRealtimeAlertsCallback;
|
|
21039
|
-
console.log("context -> ", context);
|
|
21040
20961
|
this.backend = new BackendService({
|
|
21041
20962
|
type: (context == null ? void 0 : context.type) || "prod",
|
|
21042
20963
|
token: context.token
|
|
@@ -21050,7 +20971,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21050
20971
|
try {
|
|
21051
20972
|
this.transmissionOk = false;
|
|
21052
20973
|
const response = await this.backend.externalCameraCheckTransmission("" + this.externalSessionId);
|
|
21053
|
-
console.log(response);
|
|
21054
20974
|
let attempts = 0;
|
|
21055
20975
|
while (!this.transmissionOk && attempts <= 5) {
|
|
21056
20976
|
await new Promise((resolve) => setTimeout(resolve, 2e3));
|
|
@@ -21067,16 +20987,13 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21067
20987
|
try {
|
|
21068
20988
|
this.proctoringId = proctoringId2;
|
|
21069
20989
|
const response = await this.backend.externalCameraStartTransmission("" + this.externalSessionId, proctoringId2);
|
|
21070
|
-
console.log(response);
|
|
21071
20990
|
} catch (error) {
|
|
21072
|
-
console.error("Erro ao iniciar transmiss\xE3o:", error);
|
|
21073
20991
|
throw new Error("N\xE3o foi poss\xEDvel iniciar a transmiss\xE3o.");
|
|
21074
20992
|
}
|
|
21075
20993
|
}
|
|
21076
20994
|
async goToPositionGuide() {
|
|
21077
20995
|
try {
|
|
21078
20996
|
const response = await this.backend.goToExternalCameraPositionStep("" + this.externalSessionId);
|
|
21079
|
-
console.log(response);
|
|
21080
20997
|
} catch (error) {
|
|
21081
20998
|
console.error("Erro ao enviar comando de Position:", error);
|
|
21082
20999
|
throw new Error("N\xE3o foi poss\xEDvel enviar comando de Position Guide.");
|
|
@@ -21086,7 +21003,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21086
21003
|
if (this.connection) {
|
|
21087
21004
|
const actionMessage = new ActionMessage();
|
|
21088
21005
|
actionMessage.command = "Reset";
|
|
21089
|
-
console.log("Enviando comando 'Reset' para o aplicativo...");
|
|
21090
21006
|
this.connection.invoke(
|
|
21091
21007
|
"SendAction",
|
|
21092
21008
|
this.externalSessionId,
|
|
@@ -21100,7 +21016,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21100
21016
|
this.onTakePictureCallback = onTakePictureCallback;
|
|
21101
21017
|
const actionMessage = new ActionMessage();
|
|
21102
21018
|
actionMessage.command = "Capture";
|
|
21103
|
-
console.log("Enviando comando 'Capture' para o aplicativo...");
|
|
21104
21019
|
this.connection.invoke(
|
|
21105
21020
|
"SendAction",
|
|
21106
21021
|
this.externalSessionId,
|
|
@@ -21119,7 +21034,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21119
21034
|
await this.reset();
|
|
21120
21035
|
const response = await this.backend.externalCameraStartSession();
|
|
21121
21036
|
this.externalSessionId = response.externalSessionId;
|
|
21122
|
-
console.log(this.externalSessionId);
|
|
21123
21037
|
this.currentStep = 0 /* STARTED */;
|
|
21124
21038
|
const pairingObject = {
|
|
21125
21039
|
externalSessionId: this.externalSessionId,
|
|
@@ -21128,7 +21042,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21128
21042
|
};
|
|
21129
21043
|
const pairingDataString = JSON.stringify(pairingObject);
|
|
21130
21044
|
this.qrCodeBase64Image = await import_qrcode.default.toDataURL(pairingDataString);
|
|
21131
|
-
console.log(this.qrCodeBase64Image);
|
|
21132
21045
|
return this.qrCodeBase64Image;
|
|
21133
21046
|
} catch (error) {
|
|
21134
21047
|
this.disconnectWebSocket();
|
|
@@ -21227,7 +21140,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21227
21140
|
var _a2;
|
|
21228
21141
|
const actionMessage = new ActionMessage();
|
|
21229
21142
|
actionMessage.command = "Cancel";
|
|
21230
|
-
console.log("Enviando comando 'Cancel' para o aplicativo...");
|
|
21231
21143
|
(_a2 = this.connection) == null ? void 0 : _a2.invoke(
|
|
21232
21144
|
"SendAction",
|
|
21233
21145
|
this.externalSessionId,
|
|
@@ -21567,8 +21479,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21567
21479
|
this.connection.on(
|
|
21568
21480
|
"ReceiveMessage",
|
|
21569
21481
|
(sessionId, messageStr) => {
|
|
21570
|
-
console.log("sessionId: ", sessionId);
|
|
21571
|
-
console.log("Message: ", messageStr);
|
|
21572
21482
|
if (sessionId !== this.externalSessionId) {
|
|
21573
21483
|
console.warn("Sess\xE3o diferente!");
|
|
21574
21484
|
return;
|
|
@@ -21576,7 +21486,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21576
21486
|
try {
|
|
21577
21487
|
const messageKey = messageStr;
|
|
21578
21488
|
const message = ExternalCameraStatusEnum[messageKey];
|
|
21579
|
-
console.log("Mensagem -> ", message);
|
|
21580
21489
|
this.handleWebSocketMessage(message);
|
|
21581
21490
|
} catch (e3) {
|
|
21582
21491
|
console.error("Erro ao processar mensagem do WebSocket:", e3);
|
|
@@ -21586,8 +21495,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21586
21495
|
this.connection.on(
|
|
21587
21496
|
"ReceiveAction",
|
|
21588
21497
|
(sessionId, actionMessage) => {
|
|
21589
|
-
console.log("sessionId: ", sessionId);
|
|
21590
|
-
console.log("Message: ", actionMessage);
|
|
21591
21498
|
if (sessionId !== this.externalSessionId) {
|
|
21592
21499
|
console.warn("Sess\xE3o diferente!");
|
|
21593
21500
|
return;
|
|
@@ -21601,7 +21508,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21601
21508
|
);
|
|
21602
21509
|
try {
|
|
21603
21510
|
await this.connection.start();
|
|
21604
|
-
console.log("Conectado ao Hub SignalR com sucesso!");
|
|
21605
21511
|
} catch (err) {
|
|
21606
21512
|
console.error("Falha ao conectar ou entrar no grupo do SignalR: ", err);
|
|
21607
21513
|
throw new Error("N\xE3o foi poss\xEDvel conectar ao servi\xE7o em tempo real.");
|
|
@@ -21728,7 +21634,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
21728
21634
|
if (this.connection) {
|
|
21729
21635
|
try {
|
|
21730
21636
|
await this.connection.stop();
|
|
21731
|
-
console.log("Desconectado do SignalR.");
|
|
21732
21637
|
} catch (err) {
|
|
21733
21638
|
console.error("Erro ao desconectar do SignalR:", err);
|
|
21734
21639
|
} finally {
|
|
@@ -21762,7 +21667,6 @@ var Proctoring = class {
|
|
|
21762
21667
|
constructor(context) {
|
|
21763
21668
|
this.context = context;
|
|
21764
21669
|
this.deviceData = null;
|
|
21765
|
-
this.sessionStartTime = 0;
|
|
21766
21670
|
this.paramsConfig = {
|
|
21767
21671
|
audioBehaviourParameters: {
|
|
21768
21672
|
recordingBitrate: 128,
|
|
@@ -21986,7 +21890,10 @@ var Proctoring = class {
|
|
|
21986
21890
|
width: this.videoOptions.width,
|
|
21987
21891
|
height: this.videoOptions.height,
|
|
21988
21892
|
minWidth: this.videoOptions.minWidth,
|
|
21989
|
-
minHeight: this.videoOptions.minHeight
|
|
21893
|
+
minHeight: this.videoOptions.minHeight,
|
|
21894
|
+
timeSlice: this.videoOptions.timeSlice,
|
|
21895
|
+
videoBitsPerSecond: this.videoOptions.videoBitsPerSecond,
|
|
21896
|
+
mimeType: this.videoOptions.mimeType
|
|
21990
21897
|
},
|
|
21991
21898
|
this.paramsConfig,
|
|
21992
21899
|
this.backend,
|
|
@@ -22037,10 +21944,7 @@ var Proctoring = class {
|
|
|
22037
21944
|
if (this.context.token === void 0) {
|
|
22038
21945
|
throw TOKEN_MISSING;
|
|
22039
21946
|
}
|
|
22040
|
-
|
|
22041
|
-
this.extensionEasycatcher = new ExtensionEasyCatcher();
|
|
22042
|
-
}
|
|
22043
|
-
this.extension = new ExtensionEasyProctor();
|
|
21947
|
+
this.extension = new Extension();
|
|
22044
21948
|
this.extension.addEventListener();
|
|
22045
21949
|
const baseURL = this.backend.selectBaseUrl(this.context.type);
|
|
22046
21950
|
const devices = await enumarateDevices();
|
|
@@ -22089,7 +21993,6 @@ var Proctoring = class {
|
|
|
22089
21993
|
} catch (error) {
|
|
22090
21994
|
throw EXTERNAL_CAMERA_NOT_STARTED;
|
|
22091
21995
|
}
|
|
22092
|
-
this.sessionStartTime = Date.now();
|
|
22093
21996
|
this.allRecorders.cameraRecorder.setProctoringId(this.proctoringId);
|
|
22094
21997
|
this.allRecorders.noiseRecorder.setProctoringId(this.proctoringId);
|
|
22095
21998
|
this.proctoringSession.setProctoringId(this.proctoringId);
|
|
@@ -22265,7 +22168,6 @@ Upload Services: ${uploaderServices}`,
|
|
|
22265
22168
|
});
|
|
22266
22169
|
if (this.appChecker) {
|
|
22267
22170
|
const externalSessionId = this.appChecker.getExternalCameraSessionId();
|
|
22268
|
-
console.log("externalSessionId -> ", externalSessionId);
|
|
22269
22171
|
if (externalSessionId != "null") {
|
|
22270
22172
|
await this.backend.externalCameraFinish(externalSessionId);
|
|
22271
22173
|
}
|
|
@@ -22388,59 +22290,6 @@ Error: ` + error
|
|
|
22388
22290
|
_screenStream: (_a2 = this.allRecorders.screenRecorder) == null ? void 0 : _a2.screenStream
|
|
22389
22291
|
};
|
|
22390
22292
|
}
|
|
22391
|
-
async startChallenge(templateId) {
|
|
22392
|
-
if (!this.sessionOptions.useChallenge) {
|
|
22393
|
-
throw new Error("useChallenge is set as false on start method");
|
|
22394
|
-
}
|
|
22395
|
-
await this.extensionEasycatcher.checkExtensionInstalled().catch((err) => {
|
|
22396
|
-
throw new Error("EasyCatcher Extension is not installed");
|
|
22397
|
-
});
|
|
22398
|
-
this.extensionEasycatcher.start();
|
|
22399
|
-
const start = Date.now() - this.sessionStartTime;
|
|
22400
|
-
await this.backend.startChallenge({
|
|
22401
|
-
proctoringId: this.proctoringId,
|
|
22402
|
-
templateId,
|
|
22403
|
-
start
|
|
22404
|
-
}).then((resp) => {
|
|
22405
|
-
console.log(resp);
|
|
22406
|
-
this.challengeId = resp.id;
|
|
22407
|
-
}).catch((reason) => {
|
|
22408
|
-
trackers.registerError(
|
|
22409
|
-
this.proctoringId,
|
|
22410
|
-
"N\xE3o foi poss\xEDvel iniciar desafio!"
|
|
22411
|
-
);
|
|
22412
|
-
throw reason;
|
|
22413
|
-
});
|
|
22414
|
-
this.isChallengeRunning = true;
|
|
22415
|
-
}
|
|
22416
|
-
async stopChallenge() {
|
|
22417
|
-
if (!this.isChallengeRunning) {
|
|
22418
|
-
throw new Error("Challenge not started");
|
|
22419
|
-
}
|
|
22420
|
-
try {
|
|
22421
|
-
const sessionData = await this.extensionEasycatcher.getSessionData();
|
|
22422
|
-
const end = Date.now() - this.sessionStartTime;
|
|
22423
|
-
await this.backend.stopChallenge(
|
|
22424
|
-
this.challengeId,
|
|
22425
|
-
{
|
|
22426
|
-
end,
|
|
22427
|
-
data: sessionData
|
|
22428
|
-
}
|
|
22429
|
-
).catch((reason) => {
|
|
22430
|
-
trackers.registerError(
|
|
22431
|
-
this.proctoringId,
|
|
22432
|
-
"N\xE3o foi poss\xEDvel finalizar o desafio no backend!"
|
|
22433
|
-
);
|
|
22434
|
-
return void 0;
|
|
22435
|
-
});
|
|
22436
|
-
this.isChallengeRunning = false;
|
|
22437
|
-
} catch (error) {
|
|
22438
|
-
trackers.registerError(
|
|
22439
|
-
this.proctoringId,
|
|
22440
|
-
"Erro ao recuperar dados da extens\xE3o: " + error.message
|
|
22441
|
-
);
|
|
22442
|
-
}
|
|
22443
|
-
}
|
|
22444
22293
|
};
|
|
22445
22294
|
|
|
22446
22295
|
// src/proctoring/SignTerm.ts
|
|
@@ -22668,8 +22517,6 @@ function useProctoring(proctoringOptions, enviromentConfig = "prod") {
|
|
|
22668
22517
|
return originalStart(parameters2, videoOptions);
|
|
22669
22518
|
};
|
|
22670
22519
|
const finish = proctoring.finish.bind(proctoring);
|
|
22671
|
-
const startChallenge = proctoring.startChallenge.bind(proctoring);
|
|
22672
|
-
const stopChallenge = proctoring.stopChallenge.bind(proctoring);
|
|
22673
22520
|
const pause = proctoring.pause.bind(proctoring);
|
|
22674
22521
|
const resume = proctoring.resume.bind(proctoring);
|
|
22675
22522
|
const onFocus = proctoring.setOnFocusCallback.bind(proctoring);
|
|
@@ -22692,8 +22539,6 @@ function useProctoring(proctoringOptions, enviromentConfig = "prod") {
|
|
|
22692
22539
|
login,
|
|
22693
22540
|
start,
|
|
22694
22541
|
finish,
|
|
22695
|
-
startChallenge,
|
|
22696
|
-
stopChallenge,
|
|
22697
22542
|
onFocus,
|
|
22698
22543
|
onLostFocus,
|
|
22699
22544
|
onChangeDevices: onChangeDevices2,
|