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/index.js
CHANGED
|
@@ -30264,7 +30264,10 @@ function validatePartialVideoOptions(options) {
|
|
|
30264
30264
|
width: options.width,
|
|
30265
30265
|
height: options.height,
|
|
30266
30266
|
minWidth: options.minWidth,
|
|
30267
|
-
minHeight: options.minHeight
|
|
30267
|
+
minHeight: options.minHeight,
|
|
30268
|
+
timeSlice: options.timeSlice,
|
|
30269
|
+
videoBitsPerSecond: options.videoBitsPerSecond,
|
|
30270
|
+
mimeType: options.mimeType
|
|
30268
30271
|
};
|
|
30269
30272
|
} else {
|
|
30270
30273
|
return { width: 640, height: 480 };
|
|
@@ -30351,7 +30354,7 @@ var proctoringId;
|
|
|
30351
30354
|
function setRecorderProctoringId(id) {
|
|
30352
30355
|
proctoringId = id;
|
|
30353
30356
|
}
|
|
30354
|
-
function recorder(stream4, buffer, onBufferSizeError = false, onBufferSizeErrorCallback, audio = false) {
|
|
30357
|
+
function recorder(stream4, buffer, videoOptions, onBufferSizeError = false, onBufferSizeErrorCallback, audio = false) {
|
|
30355
30358
|
let resolvePromise;
|
|
30356
30359
|
let stopped = false;
|
|
30357
30360
|
let onBufferSizeInterval;
|
|
@@ -30361,7 +30364,7 @@ function recorder(stream4, buffer, onBufferSizeError = false, onBufferSizeErrorC
|
|
|
30361
30364
|
let recorderOptions = {
|
|
30362
30365
|
// eslint-disable-next-line no-useless-escape
|
|
30363
30366
|
mimeType: "video/webm",
|
|
30364
|
-
videoBitsPerSecond: 128e3,
|
|
30367
|
+
videoBitsPerSecond: (videoOptions == null ? void 0 : videoOptions.videoBitsPerSecond) || 128e3,
|
|
30365
30368
|
audioBitsPerSecond: 64 * 1e3
|
|
30366
30369
|
};
|
|
30367
30370
|
if (MediaRecorder.isTypeSupported("video/webm;codecs=vp9")) {
|
|
@@ -30371,15 +30374,25 @@ function recorder(stream4, buffer, onBufferSizeError = false, onBufferSizeErrorC
|
|
|
30371
30374
|
"vp9 codec not supported. Using default mimeType without vp9."
|
|
30372
30375
|
);
|
|
30373
30376
|
}
|
|
30377
|
+
if (videoOptions == null ? void 0 : videoOptions.mimeType) {
|
|
30378
|
+
recorderOptions.mimeType = videoOptions == null ? void 0 : videoOptions.mimeType;
|
|
30379
|
+
}
|
|
30374
30380
|
if (audio) {
|
|
30375
30381
|
recorderOptions = {
|
|
30376
30382
|
mimeType: "audio/webm",
|
|
30377
30383
|
audioBitsPerSecond: 64 * 1e3
|
|
30378
30384
|
};
|
|
30379
30385
|
}
|
|
30386
|
+
console.log("recorderOptions bitsPerSecond", recorderOptions.bitsPerSecond);
|
|
30380
30387
|
const mediaRecorder = new MediaRecorder(stream4, recorderOptions);
|
|
30381
30388
|
mediaRecorder.ondataavailable = (e3) => {
|
|
30382
30389
|
bufferSize = bufferSize + e3.data.size;
|
|
30390
|
+
console.log("video tracks length > 0", stream4.getVideoTracks().length > 0);
|
|
30391
|
+
if (stream4.getVideoTracks().length > 0) {
|
|
30392
|
+
const videoTrack = stream4.getVideoTracks()[0];
|
|
30393
|
+
console.log(videoTrack.readyState);
|
|
30394
|
+
console.log(videoTrack.enabled);
|
|
30395
|
+
}
|
|
30383
30396
|
if (e3.data.size > 0) {
|
|
30384
30397
|
buffer.push(e3.data);
|
|
30385
30398
|
}
|
|
@@ -30407,14 +30420,10 @@ function recorder(stream4, buffer, onBufferSizeError = false, onBufferSizeErrorC
|
|
|
30407
30420
|
function startRecording() {
|
|
30408
30421
|
return new Promise((resolve) => {
|
|
30409
30422
|
resolvePromise = resolve;
|
|
30410
|
-
|
|
30423
|
+
console.log("startRecording", videoOptions == null ? void 0 : videoOptions.timeSlice);
|
|
30424
|
+
mediaRecorder.start((videoOptions == null ? void 0 : videoOptions.timeSlice) || 1e4);
|
|
30411
30425
|
bufferSize = 0;
|
|
30412
30426
|
stopped = false;
|
|
30413
|
-
if (onBufferSizeError) {
|
|
30414
|
-
onBufferSizeInterval = setInterval(async () => {
|
|
30415
|
-
await mediaRecorder.requestData();
|
|
30416
|
-
}, 3e4);
|
|
30417
|
-
}
|
|
30418
30427
|
});
|
|
30419
30428
|
}
|
|
30420
30429
|
function stopRecording() {
|
|
@@ -30945,6 +30954,7 @@ var CameraRecorder = class {
|
|
|
30945
30954
|
this.cameraStream,
|
|
30946
30955
|
// streamToRecord,
|
|
30947
30956
|
this.blobs,
|
|
30957
|
+
this.videoOptions,
|
|
30948
30958
|
this.options.onBufferSizeError,
|
|
30949
30959
|
(e3) => this.bufferError(e3),
|
|
30950
30960
|
false
|
|
@@ -32623,9 +32633,7 @@ var CapturePhoto = class {
|
|
|
32623
32633
|
);
|
|
32624
32634
|
await this.cameraRecorder.startRecording();
|
|
32625
32635
|
cameraContainer.srcObject = this.cameraRecorder.cameraStream;
|
|
32626
|
-
cameraContainer.play()
|
|
32627
|
-
console.warn("Autoplay bloqueado ou erro ao iniciar v\xEDdeo:", e3);
|
|
32628
|
-
});
|
|
32636
|
+
cameraContainer.play();
|
|
32629
32637
|
}
|
|
32630
32638
|
shot() {
|
|
32631
32639
|
const cameraContainer = document.querySelector("#cameraStream");
|
|
@@ -32718,9 +32726,6 @@ var CapturePhoto = class {
|
|
|
32718
32726
|
const video = document.createElement("video");
|
|
32719
32727
|
video.setAttribute("id", "cameraStream");
|
|
32720
32728
|
video.muted = true;
|
|
32721
|
-
video.setAttribute("playsinline", "true");
|
|
32722
|
-
video.setAttribute("webkit-playsinline", "true");
|
|
32723
|
-
video.autoplay = true;
|
|
32724
32729
|
divCamera.style.position = "fixed";
|
|
32725
32730
|
divCamera.style.top = "0";
|
|
32726
32731
|
divCamera.style.left = "0";
|
|
@@ -32907,8 +32912,8 @@ var CapturePhoto = class {
|
|
|
32907
32912
|
}
|
|
32908
32913
|
};
|
|
32909
32914
|
|
|
32910
|
-
// src/extension/
|
|
32911
|
-
var
|
|
32915
|
+
// src/extension/extension.ts
|
|
32916
|
+
var Extension = class {
|
|
32912
32917
|
constructor() {
|
|
32913
32918
|
this.hasExtension = false;
|
|
32914
32919
|
this.tryes = 0;
|
|
@@ -32953,89 +32958,6 @@ var ExtensionEasyProctor = class {
|
|
|
32953
32958
|
}
|
|
32954
32959
|
};
|
|
32955
32960
|
|
|
32956
|
-
// src/extension/extensionEasyCatcher.ts
|
|
32957
|
-
var ExtensionEasyCatcher = class {
|
|
32958
|
-
constructor(options) {
|
|
32959
|
-
this.hasExtension = false;
|
|
32960
|
-
this.tryes = 0;
|
|
32961
|
-
this.responseStart = false;
|
|
32962
|
-
this.options = options || {};
|
|
32963
|
-
}
|
|
32964
|
-
/**
|
|
32965
|
-
* Verifica se a extensão está instalada e ativa.
|
|
32966
|
-
* Retorna o número da versão se encontrada, ou lança erro após timeout.
|
|
32967
|
-
*/
|
|
32968
|
-
checkExtensionInstalled(timeoutMs = 2e3) {
|
|
32969
|
-
return new Promise((resolve, reject) => {
|
|
32970
|
-
let handled = false;
|
|
32971
|
-
const handler = (event) => {
|
|
32972
|
-
if (event.source === window && event.data.sender === "easyproctor-extension" && event.data.message_name === "version") {
|
|
32973
|
-
handled = true;
|
|
32974
|
-
window.removeEventListener("message", handler);
|
|
32975
|
-
resolve(event.data.message);
|
|
32976
|
-
}
|
|
32977
|
-
};
|
|
32978
|
-
window.addEventListener("message", handler);
|
|
32979
|
-
window.postMessage({
|
|
32980
|
-
type: "easycatcher",
|
|
32981
|
-
func: "verifyExtensionEasycatcher"
|
|
32982
|
-
}, "*");
|
|
32983
|
-
setTimeout(() => {
|
|
32984
|
-
if (!handled) {
|
|
32985
|
-
window.removeEventListener("message", handler);
|
|
32986
|
-
reject(new Error("Extens\xE3o n\xE3o detectada ou n\xE3o respondeu."));
|
|
32987
|
-
}
|
|
32988
|
-
}, timeoutMs);
|
|
32989
|
-
});
|
|
32990
|
-
}
|
|
32991
|
-
/**
|
|
32992
|
-
* Solicita o JSON da sessão atual capturado pela extensão.
|
|
32993
|
-
*/
|
|
32994
|
-
getSessionData(timeoutMs = 5e3) {
|
|
32995
|
-
return new Promise((resolve, reject) => {
|
|
32996
|
-
let handled = false;
|
|
32997
|
-
const handler = (event) => {
|
|
32998
|
-
if (event.source === window && event.data.sender === "easyproctor-extension" && event.data.message_name === "data_response") {
|
|
32999
|
-
handled = true;
|
|
33000
|
-
window.removeEventListener("message", handler);
|
|
33001
|
-
resolve(event.data.payload);
|
|
33002
|
-
}
|
|
33003
|
-
};
|
|
33004
|
-
window.addEventListener("message", handler);
|
|
33005
|
-
window.postMessage({
|
|
33006
|
-
type: "easycatcher",
|
|
33007
|
-
func: "getDataExtensionEasycatcher"
|
|
33008
|
-
}, "*");
|
|
33009
|
-
setTimeout(() => {
|
|
33010
|
-
if (!handled) {
|
|
33011
|
-
window.removeEventListener("message", handler);
|
|
33012
|
-
reject(new Error("Timeout ao aguardar dados da extens\xE3o."));
|
|
33013
|
-
}
|
|
33014
|
-
}, timeoutMs);
|
|
33015
|
-
});
|
|
33016
|
-
}
|
|
33017
|
-
start() {
|
|
33018
|
-
return new Promise((resolve, reject) => {
|
|
33019
|
-
let handled = false;
|
|
33020
|
-
const handler = (event) => {
|
|
33021
|
-
if (event.source === window && event.data.sender === "easyproctor-extension" && event.data.message_name === "started_confirmed") {
|
|
33022
|
-
handled = true;
|
|
33023
|
-
window.removeEventListener("message", handler);
|
|
33024
|
-
resolve(true);
|
|
33025
|
-
}
|
|
33026
|
-
};
|
|
33027
|
-
window.addEventListener("message", handler);
|
|
33028
|
-
window.postMessage({ type: "easycatcher", func: "startExtensionEasycatcher" }, "*");
|
|
33029
|
-
setTimeout(() => {
|
|
33030
|
-
if (!handled) {
|
|
33031
|
-
window.removeEventListener("message", handler);
|
|
33032
|
-
reject(new Error("Timeout: Extens\xE3o n\xE3o confirmou o in\xEDcio."));
|
|
33033
|
-
}
|
|
33034
|
-
}, 3e3);
|
|
33035
|
-
});
|
|
33036
|
-
}
|
|
33037
|
-
};
|
|
33038
|
-
|
|
33039
32961
|
// src/modules/onChangeDevices.ts
|
|
33040
32962
|
var onChangeDevices = class {
|
|
33041
32963
|
constructor(repositoryDevices, proctoringId2, sessionOptions, allRecorders) {
|
|
@@ -33472,7 +33394,7 @@ var AudioRecorder = class {
|
|
|
33472
33394
|
audio: { deviceId: this.options.microphoneId || "default" }
|
|
33473
33395
|
};
|
|
33474
33396
|
this.audioStream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
33475
|
-
const { startRecording, stopRecording, pauseRecording, resumeRecording } = recorder(this.audioStream, this.blobs, void 0, void 0, true);
|
|
33397
|
+
const { startRecording, stopRecording, pauseRecording, resumeRecording } = recorder(this.audioStream, this.blobs, null, void 0, void 0, true);
|
|
33476
33398
|
this.recordingStart = startRecording;
|
|
33477
33399
|
this.recordingStop = stopRecording;
|
|
33478
33400
|
this.recordingPause = pauseRecording;
|
|
@@ -36063,7 +35985,7 @@ var ScreenRecorder = class {
|
|
|
36063
35985
|
});
|
|
36064
35986
|
throw NOT_SHARED_SCREEN;
|
|
36065
35987
|
}
|
|
36066
|
-
const { startRecording, stopRecording } = recorder(this.screenStream, this.blobs, this.options.onBufferSizeError, onBufferSizeErrorCallback);
|
|
35988
|
+
const { startRecording, stopRecording } = recorder(this.screenStream, this.blobs, null, this.options.onBufferSizeError, onBufferSizeErrorCallback);
|
|
36067
35989
|
this.recordingStart = startRecording;
|
|
36068
35990
|
this.recordingStop = stopRecording;
|
|
36069
35991
|
this.recordingStart();
|
|
@@ -36285,7 +36207,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36285
36207
|
this.connection = null;
|
|
36286
36208
|
this.context = context;
|
|
36287
36209
|
this.onRealtimeAlertsCallback = onRealtimeAlertsCallback;
|
|
36288
|
-
console.log("context -> ", context);
|
|
36289
36210
|
this.backend = new BackendService({
|
|
36290
36211
|
type: (context == null ? void 0 : context.type) || "prod",
|
|
36291
36212
|
token: context.token
|
|
@@ -36299,7 +36220,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36299
36220
|
try {
|
|
36300
36221
|
this.transmissionOk = false;
|
|
36301
36222
|
const response = await this.backend.externalCameraCheckTransmission("" + this.externalSessionId);
|
|
36302
|
-
console.log(response);
|
|
36303
36223
|
let attempts = 0;
|
|
36304
36224
|
while (!this.transmissionOk && attempts <= 5) {
|
|
36305
36225
|
await new Promise((resolve) => setTimeout(resolve, 2e3));
|
|
@@ -36316,16 +36236,13 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36316
36236
|
try {
|
|
36317
36237
|
this.proctoringId = proctoringId2;
|
|
36318
36238
|
const response = await this.backend.externalCameraStartTransmission("" + this.externalSessionId, proctoringId2);
|
|
36319
|
-
console.log(response);
|
|
36320
36239
|
} catch (error) {
|
|
36321
|
-
console.error("Erro ao iniciar transmiss\xE3o:", error);
|
|
36322
36240
|
throw new Error("N\xE3o foi poss\xEDvel iniciar a transmiss\xE3o.");
|
|
36323
36241
|
}
|
|
36324
36242
|
}
|
|
36325
36243
|
async goToPositionGuide() {
|
|
36326
36244
|
try {
|
|
36327
36245
|
const response = await this.backend.goToExternalCameraPositionStep("" + this.externalSessionId);
|
|
36328
|
-
console.log(response);
|
|
36329
36246
|
} catch (error) {
|
|
36330
36247
|
console.error("Erro ao enviar comando de Position:", error);
|
|
36331
36248
|
throw new Error("N\xE3o foi poss\xEDvel enviar comando de Position Guide.");
|
|
@@ -36335,7 +36252,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36335
36252
|
if (this.connection) {
|
|
36336
36253
|
const actionMessage = new ActionMessage();
|
|
36337
36254
|
actionMessage.command = "Reset";
|
|
36338
|
-
console.log("Enviando comando 'Reset' para o aplicativo...");
|
|
36339
36255
|
this.connection.invoke(
|
|
36340
36256
|
"SendAction",
|
|
36341
36257
|
this.externalSessionId,
|
|
@@ -36349,7 +36265,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36349
36265
|
this.onTakePictureCallback = onTakePictureCallback;
|
|
36350
36266
|
const actionMessage = new ActionMessage();
|
|
36351
36267
|
actionMessage.command = "Capture";
|
|
36352
|
-
console.log("Enviando comando 'Capture' para o aplicativo...");
|
|
36353
36268
|
this.connection.invoke(
|
|
36354
36269
|
"SendAction",
|
|
36355
36270
|
this.externalSessionId,
|
|
@@ -36368,7 +36283,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36368
36283
|
await this.reset();
|
|
36369
36284
|
const response = await this.backend.externalCameraStartSession();
|
|
36370
36285
|
this.externalSessionId = response.externalSessionId;
|
|
36371
|
-
console.log(this.externalSessionId);
|
|
36372
36286
|
this.currentStep = 0 /* STARTED */;
|
|
36373
36287
|
const pairingObject = {
|
|
36374
36288
|
externalSessionId: this.externalSessionId,
|
|
@@ -36377,7 +36291,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36377
36291
|
};
|
|
36378
36292
|
const pairingDataString = JSON.stringify(pairingObject);
|
|
36379
36293
|
this.qrCodeBase64Image = await import_qrcode.default.toDataURL(pairingDataString);
|
|
36380
|
-
console.log(this.qrCodeBase64Image);
|
|
36381
36294
|
return this.qrCodeBase64Image;
|
|
36382
36295
|
} catch (error) {
|
|
36383
36296
|
this.disconnectWebSocket();
|
|
@@ -36476,7 +36389,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36476
36389
|
var _a2;
|
|
36477
36390
|
const actionMessage = new ActionMessage();
|
|
36478
36391
|
actionMessage.command = "Cancel";
|
|
36479
|
-
console.log("Enviando comando 'Cancel' para o aplicativo...");
|
|
36480
36392
|
(_a2 = this.connection) == null ? void 0 : _a2.invoke(
|
|
36481
36393
|
"SendAction",
|
|
36482
36394
|
this.externalSessionId,
|
|
@@ -36816,8 +36728,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36816
36728
|
this.connection.on(
|
|
36817
36729
|
"ReceiveMessage",
|
|
36818
36730
|
(sessionId, messageStr) => {
|
|
36819
|
-
console.log("sessionId: ", sessionId);
|
|
36820
|
-
console.log("Message: ", messageStr);
|
|
36821
36731
|
if (sessionId !== this.externalSessionId) {
|
|
36822
36732
|
console.warn("Sess\xE3o diferente!");
|
|
36823
36733
|
return;
|
|
@@ -36825,7 +36735,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36825
36735
|
try {
|
|
36826
36736
|
const messageKey = messageStr;
|
|
36827
36737
|
const message = ExternalCameraStatusEnum[messageKey];
|
|
36828
|
-
console.log("Mensagem -> ", message);
|
|
36829
36738
|
this.handleWebSocketMessage(message);
|
|
36830
36739
|
} catch (e3) {
|
|
36831
36740
|
console.error("Erro ao processar mensagem do WebSocket:", e3);
|
|
@@ -36835,8 +36744,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36835
36744
|
this.connection.on(
|
|
36836
36745
|
"ReceiveAction",
|
|
36837
36746
|
(sessionId, actionMessage) => {
|
|
36838
|
-
console.log("sessionId: ", sessionId);
|
|
36839
|
-
console.log("Message: ", actionMessage);
|
|
36840
36747
|
if (sessionId !== this.externalSessionId) {
|
|
36841
36748
|
console.warn("Sess\xE3o diferente!");
|
|
36842
36749
|
return;
|
|
@@ -36850,7 +36757,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36850
36757
|
);
|
|
36851
36758
|
try {
|
|
36852
36759
|
await this.connection.start();
|
|
36853
|
-
console.log("Conectado ao Hub SignalR com sucesso!");
|
|
36854
36760
|
} catch (err) {
|
|
36855
36761
|
console.error("Falha ao conectar ou entrar no grupo do SignalR: ", err);
|
|
36856
36762
|
throw new Error("N\xE3o foi poss\xEDvel conectar ao servi\xE7o em tempo real.");
|
|
@@ -36977,7 +36883,6 @@ var _ExternalCameraChecker = class _ExternalCameraChecker {
|
|
|
36977
36883
|
if (this.connection) {
|
|
36978
36884
|
try {
|
|
36979
36885
|
await this.connection.stop();
|
|
36980
|
-
console.log("Desconectado do SignalR.");
|
|
36981
36886
|
} catch (err) {
|
|
36982
36887
|
console.error("Erro ao desconectar do SignalR:", err);
|
|
36983
36888
|
} finally {
|
|
@@ -37011,7 +36916,6 @@ var Proctoring = class {
|
|
|
37011
36916
|
constructor(context) {
|
|
37012
36917
|
this.context = context;
|
|
37013
36918
|
this.deviceData = null;
|
|
37014
|
-
this.sessionStartTime = 0;
|
|
37015
36919
|
this.paramsConfig = {
|
|
37016
36920
|
audioBehaviourParameters: {
|
|
37017
36921
|
recordingBitrate: 128,
|
|
@@ -37235,7 +37139,10 @@ var Proctoring = class {
|
|
|
37235
37139
|
width: this.videoOptions.width,
|
|
37236
37140
|
height: this.videoOptions.height,
|
|
37237
37141
|
minWidth: this.videoOptions.minWidth,
|
|
37238
|
-
minHeight: this.videoOptions.minHeight
|
|
37142
|
+
minHeight: this.videoOptions.minHeight,
|
|
37143
|
+
timeSlice: this.videoOptions.timeSlice,
|
|
37144
|
+
videoBitsPerSecond: this.videoOptions.videoBitsPerSecond,
|
|
37145
|
+
mimeType: this.videoOptions.mimeType
|
|
37239
37146
|
},
|
|
37240
37147
|
this.paramsConfig,
|
|
37241
37148
|
this.backend,
|
|
@@ -37286,10 +37193,7 @@ var Proctoring = class {
|
|
|
37286
37193
|
if (this.context.token === void 0) {
|
|
37287
37194
|
throw TOKEN_MISSING;
|
|
37288
37195
|
}
|
|
37289
|
-
|
|
37290
|
-
this.extensionEasycatcher = new ExtensionEasyCatcher();
|
|
37291
|
-
}
|
|
37292
|
-
this.extension = new ExtensionEasyProctor();
|
|
37196
|
+
this.extension = new Extension();
|
|
37293
37197
|
this.extension.addEventListener();
|
|
37294
37198
|
const baseURL = this.backend.selectBaseUrl(this.context.type);
|
|
37295
37199
|
const devices = await enumarateDevices();
|
|
@@ -37338,7 +37242,6 @@ var Proctoring = class {
|
|
|
37338
37242
|
} catch (error) {
|
|
37339
37243
|
throw EXTERNAL_CAMERA_NOT_STARTED;
|
|
37340
37244
|
}
|
|
37341
|
-
this.sessionStartTime = Date.now();
|
|
37342
37245
|
this.allRecorders.cameraRecorder.setProctoringId(this.proctoringId);
|
|
37343
37246
|
this.allRecorders.noiseRecorder.setProctoringId(this.proctoringId);
|
|
37344
37247
|
this.proctoringSession.setProctoringId(this.proctoringId);
|
|
@@ -37514,7 +37417,6 @@ Upload Services: ${uploaderServices}`,
|
|
|
37514
37417
|
});
|
|
37515
37418
|
if (this.appChecker) {
|
|
37516
37419
|
const externalSessionId = this.appChecker.getExternalCameraSessionId();
|
|
37517
|
-
console.log("externalSessionId -> ", externalSessionId);
|
|
37518
37420
|
if (externalSessionId != "null") {
|
|
37519
37421
|
await this.backend.externalCameraFinish(externalSessionId);
|
|
37520
37422
|
}
|
|
@@ -37637,59 +37539,6 @@ Error: ` + error
|
|
|
37637
37539
|
_screenStream: (_a2 = this.allRecorders.screenRecorder) == null ? void 0 : _a2.screenStream
|
|
37638
37540
|
};
|
|
37639
37541
|
}
|
|
37640
|
-
async startChallenge(templateId) {
|
|
37641
|
-
if (!this.sessionOptions.useChallenge) {
|
|
37642
|
-
throw new Error("useChallenge is set as false on start method");
|
|
37643
|
-
}
|
|
37644
|
-
await this.extensionEasycatcher.checkExtensionInstalled().catch((err) => {
|
|
37645
|
-
throw new Error("EasyCatcher Extension is not installed");
|
|
37646
|
-
});
|
|
37647
|
-
this.extensionEasycatcher.start();
|
|
37648
|
-
const start = Date.now() - this.sessionStartTime;
|
|
37649
|
-
await this.backend.startChallenge({
|
|
37650
|
-
proctoringId: this.proctoringId,
|
|
37651
|
-
templateId,
|
|
37652
|
-
start
|
|
37653
|
-
}).then((resp) => {
|
|
37654
|
-
console.log(resp);
|
|
37655
|
-
this.challengeId = resp.id;
|
|
37656
|
-
}).catch((reason) => {
|
|
37657
|
-
trackers.registerError(
|
|
37658
|
-
this.proctoringId,
|
|
37659
|
-
"N\xE3o foi poss\xEDvel iniciar desafio!"
|
|
37660
|
-
);
|
|
37661
|
-
throw reason;
|
|
37662
|
-
});
|
|
37663
|
-
this.isChallengeRunning = true;
|
|
37664
|
-
}
|
|
37665
|
-
async stopChallenge() {
|
|
37666
|
-
if (!this.isChallengeRunning) {
|
|
37667
|
-
throw new Error("Challenge not started");
|
|
37668
|
-
}
|
|
37669
|
-
try {
|
|
37670
|
-
const sessionData = await this.extensionEasycatcher.getSessionData();
|
|
37671
|
-
const end = Date.now() - this.sessionStartTime;
|
|
37672
|
-
await this.backend.stopChallenge(
|
|
37673
|
-
this.challengeId,
|
|
37674
|
-
{
|
|
37675
|
-
end,
|
|
37676
|
-
data: sessionData
|
|
37677
|
-
}
|
|
37678
|
-
).catch((reason) => {
|
|
37679
|
-
trackers.registerError(
|
|
37680
|
-
this.proctoringId,
|
|
37681
|
-
"N\xE3o foi poss\xEDvel finalizar o desafio no backend!"
|
|
37682
|
-
);
|
|
37683
|
-
return void 0;
|
|
37684
|
-
});
|
|
37685
|
-
this.isChallengeRunning = false;
|
|
37686
|
-
} catch (error) {
|
|
37687
|
-
trackers.registerError(
|
|
37688
|
-
this.proctoringId,
|
|
37689
|
-
"Erro ao recuperar dados da extens\xE3o: " + error.message
|
|
37690
|
-
);
|
|
37691
|
-
}
|
|
37692
|
-
}
|
|
37693
37542
|
};
|
|
37694
37543
|
|
|
37695
37544
|
// src/proctoring/SignTerm.ts
|
|
@@ -37917,8 +37766,6 @@ function useProctoring(proctoringOptions, enviromentConfig = "prod") {
|
|
|
37917
37766
|
return originalStart(parameters2, videoOptions);
|
|
37918
37767
|
};
|
|
37919
37768
|
const finish = proctoring.finish.bind(proctoring);
|
|
37920
|
-
const startChallenge = proctoring.startChallenge.bind(proctoring);
|
|
37921
|
-
const stopChallenge = proctoring.stopChallenge.bind(proctoring);
|
|
37922
37769
|
const pause = proctoring.pause.bind(proctoring);
|
|
37923
37770
|
const resume = proctoring.resume.bind(proctoring);
|
|
37924
37771
|
const onFocus = proctoring.setOnFocusCallback.bind(proctoring);
|
|
@@ -37941,8 +37788,6 @@ function useProctoring(proctoringOptions, enviromentConfig = "prod") {
|
|
|
37941
37788
|
login,
|
|
37942
37789
|
start,
|
|
37943
37790
|
finish,
|
|
37944
|
-
startChallenge,
|
|
37945
|
-
stopChallenge,
|
|
37946
37791
|
onFocus,
|
|
37947
37792
|
onLostFocus,
|
|
37948
37793
|
onChangeDevices: onChangeDevices2,
|
package/package.json
CHANGED
package/plugins/recorder.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { ProctoringVideoOptions } from "../proctoring/options/ProctoringVideoOptions";
|
|
1
2
|
export declare function setRecorderProctoringId(id: string): void;
|
|
2
|
-
export default function recorder(stream: MediaStream, buffer: Blob[], onBufferSizeError?: boolean, onBufferSizeErrorCallback?: (e?: any) => void, audio?: boolean): {
|
|
3
|
+
export default function recorder(stream: MediaStream, buffer: Blob[], videoOptions: ProctoringVideoOptions | null, onBufferSizeError?: boolean, onBufferSizeErrorCallback?: (e?: any) => void, audio?: boolean): {
|
|
3
4
|
startRecording: () => Promise<void>;
|
|
4
5
|
stopRecording: () => Promise<void>;
|
|
5
6
|
pauseRecording: () => Promise<void>;
|
|
@@ -3,6 +3,9 @@ export interface ProctoringVideoOptions {
|
|
|
3
3
|
height: number;
|
|
4
4
|
minWidth?: number;
|
|
5
5
|
minHeight?: number;
|
|
6
|
+
timeSlice?: number;
|
|
7
|
+
videoBitsPerSecond?: number;
|
|
8
|
+
mimeType?: string;
|
|
6
9
|
}
|
|
7
10
|
export declare function validatePartialVideoOptions(options: Partial<ProctoringVideoOptions>): ProctoringVideoOptions;
|
|
8
11
|
export declare const getDefaultProctoringVideoOptions: ProctoringVideoOptions;
|
|
@@ -41,9 +41,7 @@ export declare class Proctoring {
|
|
|
41
41
|
private readonly repository;
|
|
42
42
|
private readonly repositoryDevices;
|
|
43
43
|
private extension;
|
|
44
|
-
private extensionEasycatcher;
|
|
45
44
|
private deviceData;
|
|
46
|
-
private sessionStartTime;
|
|
47
45
|
private paramsConfig;
|
|
48
46
|
private proctoringId;
|
|
49
47
|
private insights?;
|
|
@@ -94,8 +92,4 @@ export declare class Proctoring {
|
|
|
94
92
|
audioStream?: MediaStream;
|
|
95
93
|
_screenStream: MediaStream | undefined;
|
|
96
94
|
}>;
|
|
97
|
-
private isChallengeRunning;
|
|
98
|
-
private challengeId;
|
|
99
|
-
startChallenge(templateId: string): Promise<void>;
|
|
100
|
-
stopChallenge(): Promise<void>;
|
|
101
95
|
}
|
|
@@ -5,8 +5,6 @@ export declare function useProctoring(proctoringOptions: ProctoringContext, envi
|
|
|
5
5
|
login: () => Promise<void>;
|
|
6
6
|
start: (parameters: any, videoOptions: any) => Promise<import("../dtos/StartProctoringResponse").default>;
|
|
7
7
|
finish: (options?: import("./proctoring").ProctoringFinisherOptions) => Promise<void>;
|
|
8
|
-
startChallenge: (templateId: string) => Promise<void>;
|
|
9
|
-
stopChallenge: () => Promise<void>;
|
|
10
8
|
onFocus: (cb: () => void) => Promise<void>;
|
|
11
9
|
onLostFocus: (cb: () => void) => Promise<void>;
|
|
12
10
|
onChangeDevices: (options?: import("./proctoring").ProctoringChangeDevicesOptions) => Promise<void>;
|