easyproctor 2.5.1 → 2.5.3
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 +12 -0
- package/esm/index.js +3012 -188
- package/index.js +3010 -188
- package/interfaces/ParamsConfig.d.ts +2 -1
- package/new-flow/backend/BackendService.d.ts +1 -1
- package/new-flow/proctoring/ProctoringSession.d.ts +8 -4
- package/new-flow/recorders/AlertRecorder.d.ts +20 -4
- package/new-flow/recorders/CameraRecorder.d.ts +2 -1
- package/new-flow/recorders/NoiseRecorder.d.ts +7 -0
- package/new-flow/upload/UploadService.d.ts +1 -0
- package/package.json +3 -1
- package/proctoring/proctoring.d.ts +8 -3
- package/proctoring/useProctoring.d.ts +3 -3
- package/unpkg/easyproctor.min.js +64 -45
|
@@ -5,7 +5,6 @@ export type AudioBehaviourParameters = {
|
|
|
5
5
|
noiseLimit?: number;
|
|
6
6
|
};
|
|
7
7
|
export type ImageBehaviourParameters = {
|
|
8
|
-
frames?: number;
|
|
9
8
|
useUploadImage?: boolean;
|
|
10
9
|
uploadInterval?: number;
|
|
11
10
|
saveVideo?: boolean;
|
|
@@ -25,6 +24,8 @@ export type VideoBehaviourParameters = {
|
|
|
25
24
|
detectSpeech?: boolean;
|
|
26
25
|
retryEnabled?: boolean;
|
|
27
26
|
maxRetries?: number;
|
|
27
|
+
realtimePackageSize?: number;
|
|
28
|
+
realtimeUploadInterval?: number;
|
|
28
29
|
};
|
|
29
30
|
export default interface IParamsConfig {
|
|
30
31
|
audioBehaviourParameters?: AudioBehaviourParameters;
|
|
@@ -39,7 +39,7 @@ export declare class BackendService {
|
|
|
39
39
|
stopChallenge(challengeId: string, body: any): Promise<any>;
|
|
40
40
|
startRealtimeAlert(body: any): Promise<any>;
|
|
41
41
|
stopRealtimeAlert(body: any): Promise<any>;
|
|
42
|
-
verifyFace(proctoringId: any, faceImage: any): Promise<any>;
|
|
42
|
+
verifyFace(proctoringId: any, faceImage: any, retry: boolean): Promise<any>;
|
|
43
43
|
getServerHour(token: string): Promise<string>;
|
|
44
44
|
private makeRequest;
|
|
45
45
|
makeRequestAxios<R>(data: {
|
|
@@ -18,24 +18,28 @@ export declare enum RecordingOrigin {
|
|
|
18
18
|
export declare enum AlertCategory {
|
|
19
19
|
NoFace = 1,
|
|
20
20
|
MultipleFaces = 2,
|
|
21
|
-
|
|
21
|
+
FocusOff = 25,
|
|
22
22
|
EnvironmentMultiplePeople = 28,
|
|
23
23
|
EnvironmentNoPeople = 29,
|
|
24
24
|
PotentialCamera = 32,
|
|
25
25
|
SpyDeviceDisconnected = 33,
|
|
26
26
|
StopSharingScreen = 34,
|
|
27
|
-
ChangeDevices = 39
|
|
27
|
+
ChangeDevices = 39,
|
|
28
|
+
ForbiddenAction = 100,
|
|
29
|
+
System = 200
|
|
28
30
|
}
|
|
29
31
|
export declare enum FinishRealtimeWarningCategory {
|
|
30
32
|
Face = 0,
|
|
31
|
-
People = 1
|
|
33
|
+
People = 1,
|
|
34
|
+
LostFocus = 2
|
|
32
35
|
}
|
|
33
36
|
export declare enum AlertType {
|
|
34
37
|
Audio = 1,
|
|
35
38
|
Video = 2,
|
|
36
39
|
Screen = 3,
|
|
37
40
|
Image = 4,
|
|
38
|
-
Environment = 5
|
|
41
|
+
Environment = 5,
|
|
42
|
+
System = 6
|
|
39
43
|
}
|
|
40
44
|
export interface Alert {
|
|
41
45
|
begin: number;
|
|
@@ -6,18 +6,34 @@ export declare class AlertRecorder implements IRecorder {
|
|
|
6
6
|
private startTime;
|
|
7
7
|
private onLostFocusCallback;
|
|
8
8
|
private onFocusCallback;
|
|
9
|
+
private onRealtimeAlertCallback?;
|
|
9
10
|
private optionsProctoring;
|
|
11
|
+
private lastActivityTime;
|
|
12
|
+
private idleCheckInterval;
|
|
13
|
+
private readonly IDLE_THRESHOLD_MS;
|
|
14
|
+
private resizeTimeout;
|
|
10
15
|
constructor(options: {
|
|
11
|
-
onLostFocusCallback: () => void;
|
|
12
|
-
onFocusCallback: () => void;
|
|
16
|
+
onLostFocusCallback: (response: any) => void;
|
|
17
|
+
onFocusCallback: (response: any) => void;
|
|
18
|
+
onRealtimeAlertCallback?: (response: any) => void;
|
|
13
19
|
}, optionsProctoring: ProctoringSessionOptions);
|
|
14
20
|
startRecording(): Promise<void>;
|
|
15
21
|
pauseRecording(): Promise<void>;
|
|
16
22
|
resumeRecording(): Promise<void>;
|
|
17
23
|
stopRecording(): Promise<void>;
|
|
18
24
|
saveOnSession(session: ProctoringSession): Promise<void>;
|
|
19
|
-
private
|
|
20
|
-
private
|
|
25
|
+
private attachListeners;
|
|
26
|
+
private detachListeners;
|
|
27
|
+
private handleLostFocus;
|
|
28
|
+
private handleReturnFocus;
|
|
29
|
+
private handleResize;
|
|
30
|
+
private handleUserActivity;
|
|
31
|
+
addBackgroundEvent(description: string, category?: AlertCategory): void;
|
|
32
|
+
private handleCopy;
|
|
33
|
+
private handleCut;
|
|
34
|
+
private handlePaste;
|
|
35
|
+
private getRelativeTime;
|
|
36
|
+
private createAlert;
|
|
21
37
|
addAlert({ alert, type }: {
|
|
22
38
|
alert: AlertCategory;
|
|
23
39
|
type: AlertType;
|
|
@@ -64,8 +64,9 @@ export declare class CameraRecorder implements IRecorder {
|
|
|
64
64
|
resumeRecording(): Promise<void>;
|
|
65
65
|
photoShotsCycle(): void;
|
|
66
66
|
getCurrentImageBase64(): Promise<string>;
|
|
67
|
+
packageCount: number;
|
|
67
68
|
captureFrame(): void;
|
|
68
|
-
|
|
69
|
+
sendPackage(): Promise<void>;
|
|
69
70
|
download(file: File): void;
|
|
70
71
|
saveOnSession(session: ProctoringSession): Promise<void>;
|
|
71
72
|
getFile(file: string, name: string, type: string): Promise<File>;
|
|
@@ -29,6 +29,13 @@ export declare class NoiseRecorder implements IRecorder {
|
|
|
29
29
|
backend: BackendService | undefined;
|
|
30
30
|
backendToken: string | undefined;
|
|
31
31
|
proctoringId: string | undefined;
|
|
32
|
+
private preRollBuffer;
|
|
33
|
+
private recordingChunks;
|
|
34
|
+
private readonly PRE_ROLL_SECONDS;
|
|
35
|
+
private readonly SAMPLE_RATE;
|
|
36
|
+
private readonly MAX_PRE_ROLL_CHUNKS;
|
|
37
|
+
private lastNoiseTime;
|
|
38
|
+
private readonly SILENCE_THRESHOLD;
|
|
32
39
|
constructor(optionsProctoring: ProctoringSessionOptions, proctoringSession: ProctoringSession, paramsConfig: IParamsConfig, cameraRecorder: CameraRecorder, onRealtimeAlertsCallback: (response: any) => void, backend?: BackendService, backendToken?: string);
|
|
33
40
|
setProctoringId(proctoringId: string): void;
|
|
34
41
|
startRecording(): Promise<void>;
|
|
@@ -8,6 +8,7 @@ export declare class UploadService implements IUploadService {
|
|
|
8
8
|
private imageBatchNum;
|
|
9
9
|
private contImages;
|
|
10
10
|
constructor(proctoringId: string, backend: BackendService);
|
|
11
|
+
uploadPackage(data: UploadDataDTO, token: string): Promise<any>;
|
|
11
12
|
uploadImages(data: UploadDataDTO, token: string, packSize: number): Promise<UploadResult>;
|
|
12
13
|
upload(data: UploadDataDTO, token: string, image?: boolean): Promise<UploadResult>;
|
|
13
14
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easyproctor",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.3",
|
|
4
4
|
"description": "Modulo web de gravação do EasyProctor",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/dom-mediacapture-record": "^1.0.11",
|
|
26
26
|
"@types/file-saver": "^2.0.7",
|
|
27
|
+
"@types/jszip": "^3.4.0",
|
|
27
28
|
"@types/qrcode": "^1.5.5",
|
|
28
29
|
"@types/recordrtc": "^5.6.8",
|
|
29
30
|
"@typescript-eslint/eslint-plugin": "^5.8.0",
|
|
@@ -32,6 +33,7 @@
|
|
|
32
33
|
"esbuild-serve": "^1.0.1",
|
|
33
34
|
"eslint": "^8.2.0",
|
|
34
35
|
"eslint-plugin-html": "^6.2.0",
|
|
36
|
+
"jszip": "^3.10.1",
|
|
35
37
|
"typescript": "^4.5.4"
|
|
36
38
|
},
|
|
37
39
|
"dependencies": {
|
|
@@ -15,7 +15,7 @@ export interface ProctoringContext {
|
|
|
15
15
|
}
|
|
16
16
|
export interface ProctoringFinisherOptions {
|
|
17
17
|
onProgress?: (percentage: number) => void;
|
|
18
|
-
|
|
18
|
+
onResultAvailable?: (score: number, scoreThreshold: number, approved: boolean, justification: string) => void;
|
|
19
19
|
}
|
|
20
20
|
export interface ProctoringChangeDevicesOptions {
|
|
21
21
|
status?: (devices: DevicesChanged) => void;
|
|
@@ -55,12 +55,17 @@ export declare class Proctoring {
|
|
|
55
55
|
private allRecorders;
|
|
56
56
|
private spyCam;
|
|
57
57
|
appChecker: ExternalCameraChecker;
|
|
58
|
+
private verifyFirstFaceInterval;
|
|
58
59
|
private onStopSharingScreenCallback;
|
|
59
60
|
setOnStopSharingScreenCallback(cb: () => void): void;
|
|
61
|
+
private setOnLostFocusAlertRecorderCallback;
|
|
62
|
+
private setOnFocusAlertRecorderCallback;
|
|
60
63
|
private onLostFocusCallback;
|
|
61
|
-
|
|
64
|
+
private onLostFocusAlertRecorderCallback;
|
|
65
|
+
setOnLostFocusCallback(cb: () => void): Promise<void>;
|
|
62
66
|
private onFocusCallback;
|
|
63
|
-
|
|
67
|
+
private onFocusAlertRecorderCallback;
|
|
68
|
+
setOnFocusCallback(cb: () => void): Promise<void>;
|
|
64
69
|
private onChangeDevicesCallback;
|
|
65
70
|
onChangeDevices(options?: ProctoringChangeDevicesOptions): Promise<void>;
|
|
66
71
|
private convertRealtimeCategoryToAlertCategory;
|
|
@@ -3,10 +3,10 @@ import enumarateDevices from "../modules/enumarateDevices";
|
|
|
3
3
|
import { ProctoringContext } from "./proctoring";
|
|
4
4
|
export declare function useProctoring(proctoringOptions: ProctoringContext, enviromentConfig?: string): {
|
|
5
5
|
login: () => Promise<void>;
|
|
6
|
-
start: (parameters: any) => Promise<import("../dtos/StartProctoringResponse").default>;
|
|
6
|
+
start: (parameters: any, videoOptions: any) => Promise<import("../dtos/StartProctoringResponse").default>;
|
|
7
7
|
finish: (options?: import("./proctoring").ProctoringFinisherOptions) => Promise<void>;
|
|
8
|
-
onFocus: (cb: () => void) => void
|
|
9
|
-
onLostFocus: (cb: () => void) => void
|
|
8
|
+
onFocus: (cb: () => void) => Promise<void>;
|
|
9
|
+
onLostFocus: (cb: () => void) => Promise<void>;
|
|
10
10
|
onChangeDevices: (options?: import("./proctoring").ProctoringChangeDevicesOptions) => Promise<void>;
|
|
11
11
|
onBufferSizeError: (cb: (cameraStream?: any) => void) => void;
|
|
12
12
|
onRealtimeAlerts: (options?: import("./proctoring").ProctoringRealtimeAlertsOptions) => Promise<void>;
|