miva-proctor-sdk 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +31 -0
  2. package/dist/cjs/index.d.ts +5 -0
  3. package/dist/cjs/index.js +22 -0
  4. package/dist/cjs/src/core/client/axios/axiosServerError.d.ts +14 -0
  5. package/dist/cjs/src/core/client/axios/axiosServerError.js +25 -0
  6. package/dist/cjs/src/core/client/axios/errors.d.ts +9 -0
  7. package/dist/cjs/src/core/client/axios/errors.js +28 -0
  8. package/dist/cjs/src/core/client/axios/index.d.ts +6 -0
  9. package/dist/cjs/src/core/client/axios/index.js +34 -0
  10. package/dist/cjs/src/core/client/baseAPI.d.ts +11 -0
  11. package/dist/cjs/src/core/client/baseAPI.js +40 -0
  12. package/dist/cjs/src/core/client/config.d.ts +14 -0
  13. package/dist/cjs/src/core/client/config.js +18 -0
  14. package/dist/cjs/src/core/client/proctor-metric.service.d.ts +16 -0
  15. package/dist/cjs/src/core/client/proctor-metric.service.js +83 -0
  16. package/dist/cjs/src/core/client/proctor-metric.type.d.ts +24 -0
  17. package/dist/cjs/src/core/client/proctor-metric.type.js +3 -0
  18. package/dist/cjs/src/core/index.d.ts +6 -0
  19. package/dist/cjs/src/core/index.js +23 -0
  20. package/dist/cjs/src/core/proctor/audioDetector.d.ts +38 -0
  21. package/dist/cjs/src/core/proctor/audioDetector.js +319 -0
  22. package/dist/cjs/src/core/proctor/faceDetector.d.ts +15 -0
  23. package/dist/cjs/src/core/proctor/faceDetector.js +42 -0
  24. package/dist/cjs/src/core/proctor/index.d.ts +39 -0
  25. package/dist/cjs/src/core/proctor/index.js +299 -0
  26. package/dist/cjs/src/core/proctor/mediaPermission.d.ts +17 -0
  27. package/dist/cjs/src/core/proctor/mediaPermission.js +77 -0
  28. package/dist/cjs/src/index.d.ts +3 -0
  29. package/dist/cjs/src/index.js +20 -0
  30. package/dist/cjs/src/modules/ProctoringManager.d.ts +30 -0
  31. package/dist/cjs/src/modules/ProctoringManager.js +74 -0
  32. package/dist/cjs/src/modules/index.d.ts +1 -0
  33. package/dist/cjs/src/modules/index.js +18 -0
  34. package/dist/cjs/src/types/common.d.ts +5 -0
  35. package/dist/cjs/src/types/common.js +10 -0
  36. package/dist/cjs/src/types/index.d.ts +2 -0
  37. package/dist/cjs/src/types/index.js +19 -0
  38. package/dist/cjs/src/types/sessions.d.ts +15 -0
  39. package/dist/cjs/src/types/sessions.js +14 -0
  40. package/dist/cjs/src/utils/index.d.ts +1 -0
  41. package/dist/cjs/src/utils/index.js +3 -0
  42. package/dist/esm/index.d.ts +5 -0
  43. package/dist/esm/index.js +6 -0
  44. package/dist/esm/src/core/client/axios/axiosServerError.d.ts +14 -0
  45. package/dist/esm/src/core/client/axios/axiosServerError.js +20 -0
  46. package/dist/esm/src/core/client/axios/errors.d.ts +9 -0
  47. package/dist/esm/src/core/client/axios/errors.js +22 -0
  48. package/dist/esm/src/core/client/axios/index.d.ts +6 -0
  49. package/dist/esm/src/core/client/axios/index.js +27 -0
  50. package/dist/esm/src/core/client/baseAPI.d.ts +11 -0
  51. package/dist/esm/src/core/client/baseAPI.js +34 -0
  52. package/dist/esm/src/core/client/config.d.ts +14 -0
  53. package/dist/esm/src/core/client/config.js +15 -0
  54. package/dist/esm/src/core/client/proctor-metric.service.d.ts +16 -0
  55. package/dist/esm/src/core/client/proctor-metric.service.js +80 -0
  56. package/dist/esm/src/core/client/proctor-metric.type.d.ts +24 -0
  57. package/dist/esm/src/core/client/proctor-metric.type.js +2 -0
  58. package/dist/esm/src/core/index.d.ts +6 -0
  59. package/dist/esm/src/core/index.js +7 -0
  60. package/dist/esm/src/core/proctor/audioDetector.d.ts +38 -0
  61. package/dist/esm/src/core/proctor/audioDetector.js +315 -0
  62. package/dist/esm/src/core/proctor/faceDetector.d.ts +15 -0
  63. package/dist/esm/src/core/proctor/faceDetector.js +38 -0
  64. package/dist/esm/src/core/proctor/index.d.ts +39 -0
  65. package/dist/esm/src/core/proctor/index.js +295 -0
  66. package/dist/esm/src/core/proctor/mediaPermission.d.ts +17 -0
  67. package/dist/esm/src/core/proctor/mediaPermission.js +74 -0
  68. package/dist/esm/src/index.d.ts +3 -0
  69. package/dist/esm/src/index.js +4 -0
  70. package/dist/esm/src/modules/ProctoringManager.d.ts +30 -0
  71. package/dist/esm/src/modules/ProctoringManager.js +71 -0
  72. package/dist/esm/src/modules/index.d.ts +1 -0
  73. package/dist/esm/src/modules/index.js +2 -0
  74. package/dist/esm/src/types/common.d.ts +5 -0
  75. package/dist/esm/src/types/common.js +7 -0
  76. package/dist/esm/src/types/index.d.ts +2 -0
  77. package/dist/esm/src/types/index.js +3 -0
  78. package/dist/esm/src/types/sessions.d.ts +15 -0
  79. package/dist/esm/src/types/sessions.js +11 -0
  80. package/dist/esm/src/utils/index.d.ts +1 -0
  81. package/dist/esm/src/utils/index.js +2 -0
  82. package/dist/types/index.d.ts +5 -0
  83. package/dist/types/src/core/client/axios/axiosServerError.d.ts +14 -0
  84. package/dist/types/src/core/client/axios/errors.d.ts +9 -0
  85. package/dist/types/src/core/client/axios/index.d.ts +6 -0
  86. package/dist/types/src/core/client/baseAPI.d.ts +11 -0
  87. package/dist/types/src/core/client/config.d.ts +14 -0
  88. package/dist/types/src/core/client/proctor-metric.service.d.ts +16 -0
  89. package/dist/types/src/core/client/proctor-metric.type.d.ts +24 -0
  90. package/dist/types/src/core/index.d.ts +6 -0
  91. package/dist/types/src/core/proctor/audioDetector.d.ts +38 -0
  92. package/dist/types/src/core/proctor/faceDetector.d.ts +15 -0
  93. package/dist/types/src/core/proctor/index.d.ts +39 -0
  94. package/dist/types/src/core/proctor/mediaPermission.d.ts +17 -0
  95. package/dist/types/src/index.d.ts +3 -0
  96. package/dist/types/src/modules/ProctoringManager.d.ts +30 -0
  97. package/dist/types/src/modules/index.d.ts +1 -0
  98. package/dist/types/src/types/common.d.ts +5 -0
  99. package/dist/types/src/types/index.d.ts +2 -0
  100. package/dist/types/src/types/sessions.d.ts +15 -0
  101. package/dist/types/src/utils/index.d.ts +1 -0
  102. package/dist/umd/index.js +2 -0
  103. package/dist/umd/index.js.LICENSE.txt +8 -0
  104. package/package.json +94 -0
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,5 @@
1
+ export * from './src/modules';
2
+ export * from './src/utils';
3
+ export * from './src/types';
4
+ export * from './src/core';
5
+ export * from './src/index';
@@ -0,0 +1,6 @@
1
+ export * from './src/modules';
2
+ export * from './src/utils';
3
+ export * from './src/types';
4
+ export * from './src/core';
5
+ export * from './src/index';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGFBQWEsQ0FBQyJ9
@@ -0,0 +1,14 @@
1
+ import { WrappedError } from './errors';
2
+ export declare type AxiosErrorObject = {};
3
+ export declare class AxiosError extends WrappedError<AxiosErrorObject> {
4
+ }
5
+ export declare class AxiosServerError extends AxiosError {
6
+ readonly status: number;
7
+ readonly statusText: string;
8
+ readonly data: {};
9
+ constructor(response: {
10
+ data: {};
11
+ status: number;
12
+ statusText: string;
13
+ }, originalError: AxiosErrorObject);
14
+ }
@@ -0,0 +1,20 @@
1
+ import { WrappedError } from './errors';
2
+ // /**
3
+ // * An error thrown by axios made r with large fields removed and the original error converted
4
+ // * into an object with its config removed.
5
+ // */
6
+ export class AxiosError extends WrappedError {
7
+ }
8
+ // /**
9
+ // * Axios error with only status, statusText and data response error fields and a smaller original
10
+ // * error.
11
+ // */
12
+ export class AxiosServerError extends AxiosError {
13
+ constructor(response, originalError) {
14
+ super(`${response.status}: ${response.statusText} - ${JSON.stringify(response.data, null, 2)}`, originalError);
15
+ this.status = response.status;
16
+ this.statusText = response.statusText;
17
+ this.data = response.data;
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3NTZXJ2ZXJFcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL2NsaWVudC9heGlvcy9heGlvc1NlcnZlckVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFLeEMsTUFBTTtBQUNOLGdHQUFnRztBQUNoRyw2Q0FBNkM7QUFDN0MsTUFBTTtBQUNOLE1BQU0sT0FBTyxVQUFXLFNBQVEsWUFBOEI7Q0FBRztBQUVqRSxNQUFNO0FBQ04scUdBQXFHO0FBQ3JHLGFBQWE7QUFDYixPQUFPO0FBQ1AsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFVBQVU7SUFLOUMsWUFDRSxRQUEwRCxFQUMxRCxhQUErQjtRQUUvQixLQUFLLENBQ0gsR0FBRyxRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxVQUFVLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUN4RixhQUFhLENBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzVCLENBQUM7Q0FDRiJ9
@@ -0,0 +1,9 @@
1
+ export declare class CustomError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class WrappedError<T = Error> extends CustomError {
5
+ readonly originalError: T;
6
+ constructor(message: string, originalError: T);
7
+ }
8
+ export declare class ConfigError extends CustomError {
9
+ }
@@ -0,0 +1,22 @@
1
+ // /**
2
+ // * Base class for custom errors.
3
+ // */
4
+ export class CustomError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ // Set a more specific name. This will show up in e.g. console.log.
8
+ this.name = this.constructor.name;
9
+ }
10
+ }
11
+ // /**
12
+ // * Base class for a custom error which wraps another error.
13
+ // */
14
+ export class WrappedError extends CustomError {
15
+ constructor(message, originalError) {
16
+ super(message);
17
+ this.originalError = originalError;
18
+ }
19
+ }
20
+ export class ConfigError extends CustomError {
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvcmUvY2xpZW50L2F4aW9zL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQ04sbUNBQW1DO0FBQ25DLE1BQU07QUFDTixNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUs7SUFDbEMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVELE1BQU07QUFDTixnRUFBZ0U7QUFDaEUsUUFBUTtBQUNSLE1BQU0sT0FBTyxZQUF3QixTQUFRLFdBQVc7SUFHcEQsWUFDRSxPQUFlLEVBQ2YsYUFBZ0I7UUFFaEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0NBQUcifQ==
@@ -0,0 +1,6 @@
1
+ import { AxiosInstance, AxiosRequestConfig } from 'axios';
2
+ export declare class AxiosWrapper {
3
+ axiosInstance: AxiosInstance;
4
+ constructor(axiosInstance: AxiosInstance);
5
+ makeRequest(options: AxiosRequestConfig): Promise<any>;
6
+ }
@@ -0,0 +1,27 @@
1
+ import axios from 'axios';
2
+ import _ from 'lodash';
3
+ import { AxiosServerError, AxiosError } from './axiosServerError';
4
+ export class AxiosWrapper {
5
+ constructor(axiosInstance) {
6
+ this.axiosInstance = axiosInstance;
7
+ }
8
+ async makeRequest(options) {
9
+ try {
10
+ const response = await this.axiosInstance(options);
11
+ return response.data;
12
+ }
13
+ catch (error) {
14
+ if (axios.isAxiosError(error)) {
15
+ const Error = _.omit(error.toJSON(), 'config');
16
+ if (error.response) {
17
+ const smallerResponse = _.pick(error.response, ['data', 'status', 'statusText']);
18
+ throw new AxiosServerError(smallerResponse, Error);
19
+ }
20
+ // request error or timeout error
21
+ throw new AxiosError(`Axios: ${error.message}`, Error);
22
+ }
23
+ throw error;
24
+ }
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9jbGllbnQvYXhpb3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUE0QyxNQUFNLE9BQU8sQ0FBQztBQUNqRSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRixNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFZLGFBQTRCO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQTJCO1FBQ2xELElBQUk7WUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ3RCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sS0FBSyxHQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDakUsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO29CQUNsQixNQUFNLGVBQWUsR0FBcUQsQ0FBQyxDQUFDLElBQUksQ0FDOUUsS0FBSyxDQUFDLFFBQVEsRUFDZCxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQ2pDLENBQUM7b0JBQ0YsTUFBTSxJQUFJLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDcEQ7Z0JBQ0QsaUNBQWlDO2dCQUNqQyxNQUFNLElBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3hEO1lBQ0QsTUFBTSxLQUFLLENBQUM7U0FDYjtJQUNILENBQUM7Q0FDRiJ9
@@ -0,0 +1,11 @@
1
+ import { AxiosInstance } from "axios";
2
+ import { Environment } from '../../types/common';
3
+ export declare const API_STAGING_HOST = "https://metrics.staging.miva.university";
4
+ export declare const API_UAT_HOST = "https://metrics.miva.university";
5
+ export declare const API_PROD_HOST = "https://metrics.miva.university";
6
+ export declare const STAGING_API_KEY = "";
7
+ export declare const UAT_API_KEY = "";
8
+ export declare const PROD_API_KEY = "";
9
+ export declare const MIVA_PROCTOR_SERVICE_ENDPOINT = "https://metrics.staging.miva.university";
10
+ declare const createAxios: (env: Environment) => AxiosInstance;
11
+ export { createAxios };
@@ -0,0 +1,34 @@
1
+ import axios from "axios";
2
+ import { Environment } from '../../types/common';
3
+ const TIMEOUT = 30000;
4
+ export const API_STAGING_HOST = 'https://metrics.staging.miva.university';
5
+ export const API_UAT_HOST = 'https://metrics.miva.university';
6
+ export const API_PROD_HOST = 'https://metrics.miva.university';
7
+ export const STAGING_API_KEY = '';
8
+ export const UAT_API_KEY = '';
9
+ export const PROD_API_KEY = '';
10
+ const host = {
11
+ [Environment.Staging]: API_STAGING_HOST,
12
+ [Environment.UAT]: API_UAT_HOST,
13
+ [Environment.Prod]: API_PROD_HOST
14
+ };
15
+ const apiKeys = {
16
+ [Environment.Staging]: STAGING_API_KEY,
17
+ [Environment.UAT]: UAT_API_KEY,
18
+ [Environment.Prod]: PROD_API_KEY
19
+ };
20
+ export const MIVA_PROCTOR_SERVICE_ENDPOINT = API_STAGING_HOST;
21
+ const createAxios = (env) => {
22
+ const baseUrl = host[env];
23
+ const apiKey = apiKeys[env];
24
+ return axios.create({
25
+ baseURL: baseUrl,
26
+ headers: {
27
+ 'Content-Type': 'application/json',
28
+ 'x-api-key': apiKey,
29
+ },
30
+ timeout: TIMEOUT
31
+ });
32
+ };
33
+ export { createAxios };
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUFQSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL2NsaWVudC9iYXNlQVBJLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBdUMsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQztBQUV0QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyx5Q0FBeUMsQ0FBQztBQUMxRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsaUNBQWlDLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGlDQUFpQyxDQUFDO0FBRy9ELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUM5QixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBRS9CLE1BQU0sSUFBSSxHQUFHO0lBQ1gsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCO0lBQ3ZDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVk7SUFDL0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYTtDQUNsQyxDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQUc7SUFDWixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxlQUFlO0lBQ3RDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVc7SUFDOUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWTtDQUNuQyxDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsZ0JBQWdCLENBQUE7QUFFN0QsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFnQixFQUFpQixFQUFFO0lBRXBELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFNUIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2xCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLE9BQU8sRUFBRTtZQUNQLGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsV0FBVyxFQUFHLE1BQU07U0FDckI7UUFDRCxPQUFPLEVBQUUsT0FBTztLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFJSixPQUFPLEVBQ0gsV0FBVyxFQUNkLENBQUEifQ==
@@ -0,0 +1,14 @@
1
+ declare const CONFIG: {
2
+ API_SESSIONS_PATH: {
3
+ START_SESSION: string;
4
+ END_SESSION: string;
5
+ PING_SESSION: string;
6
+ DELETE_SESSION: string;
7
+ SESSIONS: string;
8
+ SESSIONS_ACTIVE: string;
9
+ };
10
+ API_ACTIVITIES_PATH: {
11
+ ACTIVITIES: string;
12
+ };
13
+ };
14
+ export { CONFIG };
@@ -0,0 +1,15 @@
1
+ const CONFIG = {
2
+ API_SESSIONS_PATH: {
3
+ START_SESSION: '/sessions/start',
4
+ END_SESSION: '/sessions/:id/end',
5
+ PING_SESSION: '/sessions/:id/ping',
6
+ DELETE_SESSION: '/sessions/:id',
7
+ SESSIONS: '/sessions',
8
+ SESSIONS_ACTIVE: '/sessions/active',
9
+ },
10
+ API_ACTIVITIES_PATH: {
11
+ ACTIVITIES: '/activities',
12
+ },
13
+ };
14
+ export { CONFIG };
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvcmUvY2xpZW50L2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE1BQU0sR0FBRztJQUNiLGlCQUFpQixFQUFFO1FBQ2pCLGFBQWEsRUFBRSxpQkFBaUI7UUFDaEMsV0FBVyxFQUFFLG1CQUFtQjtRQUNoQyxZQUFZLEVBQUUsb0JBQW9CO1FBQ2xDLGNBQWMsRUFBRSxlQUFlO1FBQy9CLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLGVBQWUsRUFBRSxrQkFBa0I7S0FDcEM7SUFDRCxtQkFBbUIsRUFBRTtRQUNuQixVQUFVLEVBQUUsYUFBYTtLQUMxQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMifQ==
@@ -0,0 +1,16 @@
1
+ import { Environment } from '../../types/common';
2
+ import { IGetActivitiesParams, IGetSessionsParams, IStartSessionParams, IUpdateActivitiesParams } from './proctor-metric.type';
3
+ declare class ProctorMetricService {
4
+ private axiosInstance;
5
+ private axiosWrapper;
6
+ constructor(env: Environment);
7
+ startSession(params: IStartSessionParams): Promise<any>;
8
+ getSessions(params: IGetSessionsParams): Promise<any>;
9
+ getActiveSessions(userId: string): Promise<any>;
10
+ endSession(sessionId: string): Promise<any>;
11
+ pingSession(sessionId: string): Promise<any>;
12
+ deleteSession(sessionId: string): Promise<any>;
13
+ updateActivities(params: IUpdateActivitiesParams): Promise<any>;
14
+ getActivities(params: IGetActivitiesParams): Promise<any>;
15
+ }
16
+ export { ProctorMetricService };
@@ -0,0 +1,80 @@
1
+ import { AxiosWrapper } from './axios';
2
+ import { createAxios } from './baseAPI';
3
+ import { CONFIG } from './config';
4
+ class ProctorMetricService {
5
+ constructor(env) {
6
+ this.axiosInstance = createAxios(env);
7
+ this.axiosWrapper = new AxiosWrapper(this.axiosInstance);
8
+ }
9
+ async startSession(params) {
10
+ const data = await this.axiosWrapper.makeRequest({
11
+ url: CONFIG.API_SESSIONS_PATH.START_SESSION,
12
+ method: 'POST',
13
+ data: params,
14
+ });
15
+ return data;
16
+ }
17
+ async getSessions(params) {
18
+ const data = await this.axiosWrapper.makeRequest({
19
+ url: CONFIG.API_SESSIONS_PATH.SESSIONS,
20
+ method: 'GET',
21
+ data: params,
22
+ });
23
+ return data;
24
+ }
25
+ async getActiveSessions(userId) {
26
+ const data = await this.axiosWrapper.makeRequest({
27
+ url: CONFIG.API_SESSIONS_PATH.SESSIONS_ACTIVE,
28
+ method: 'GET',
29
+ params: {
30
+ studentId: userId,
31
+ },
32
+ });
33
+ return data;
34
+ }
35
+ async endSession(sessionId) {
36
+ const data = await this.axiosWrapper.makeRequest({
37
+ url: CONFIG.API_SESSIONS_PATH.END_SESSION.replace(':id', sessionId),
38
+ method: 'POST',
39
+ data: {
40
+ timestamp: new Date().toISOString(),
41
+ },
42
+ });
43
+ return data;
44
+ }
45
+ async pingSession(sessionId) {
46
+ const data = await this.axiosWrapper.makeRequest({
47
+ url: CONFIG.API_SESSIONS_PATH.PING_SESSION.replace(':id', sessionId),
48
+ method: 'POST',
49
+ data: {
50
+ timestamp: new Date().toISOString(),
51
+ },
52
+ });
53
+ return data;
54
+ }
55
+ async deleteSession(sessionId) {
56
+ const data = await this.axiosWrapper.makeRequest({
57
+ url: CONFIG.API_SESSIONS_PATH.DELETE_SESSION.replace(':id', sessionId),
58
+ method: 'DELETE',
59
+ });
60
+ return data;
61
+ }
62
+ async updateActivities(params) {
63
+ const data = await this.axiosWrapper.makeRequest({
64
+ url: CONFIG.API_ACTIVITIES_PATH.ACTIVITIES,
65
+ method: 'POST',
66
+ data: params,
67
+ });
68
+ return data;
69
+ }
70
+ async getActivities(params) {
71
+ const data = await this.axiosWrapper.makeRequest({
72
+ url: CONFIG.API_ACTIVITIES_PATH.ACTIVITIES,
73
+ method: 'GET',
74
+ params: params,
75
+ });
76
+ return data;
77
+ }
78
+ }
79
+ export { ProctorMetricService };
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3Rvci1tZXRyaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL2NsaWVudC9wcm9jdG9yLW1ldHJpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2xDLE1BQU0sb0JBQW9CO0lBSXhCLFlBQW1CLEdBQWdCO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQTJCO1FBQ25ELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDL0MsR0FBRyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhO1lBQzNDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQTBCO1FBQ2pELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDL0MsR0FBRyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRO1lBQ3RDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsaUJBQWlCLENB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
@@ -0,0 +1,24 @@
1
+ import { Evidence } from '../../types/sessions';
2
+ export interface IStartSessionParams {
3
+ courseId: string;
4
+ examId: string;
5
+ studentId: string;
6
+ timestamp: string;
7
+ }
8
+ export interface IGetSessionsParams {
9
+ courseId: string;
10
+ examId: string;
11
+ studentId: string;
12
+ }
13
+ export interface IUpdateActivitiesParams {
14
+ sessionId: string;
15
+ activityType: string;
16
+ timestamp: string;
17
+ details: string;
18
+ image?: Evidence;
19
+ }
20
+ export interface IGetActivitiesParams {
21
+ sessionId: string;
22
+ page: number;
23
+ limit: number;
24
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3Rvci1tZXRyaWMudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL2NsaWVudC9wcm9jdG9yLW1ldHJpYy50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,6 @@
1
+ export * from './proctor';
2
+ export * from './client/proctor-metric.service';
3
+ export * from './client/proctor-metric.type';
4
+ export * from './client/config';
5
+ export * from './client/baseAPI';
6
+ export * from './client/axios';
@@ -0,0 +1,7 @@
1
+ export * from './proctor';
2
+ export * from './client/proctor-metric.service';
3
+ export * from './client/proctor-metric.type';
4
+ export * from './client/config';
5
+ export * from './client/baseAPI';
6
+ export * from './client/axios';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUMifQ==
@@ -0,0 +1,38 @@
1
+ declare type VolumeState = 'mute' | 'silence' | 'signal' | 'clipping';
2
+ export declare type AudioEvents = {
3
+ onMute: (event: Event) => void;
4
+ onUnmute: (event: Event) => void;
5
+ onAudioBlob: (blob: Blob) => void;
6
+ };
7
+ export declare class AudioDetector {
8
+ volumeState: VolumeState;
9
+ speechStarted: boolean;
10
+ silenceItems: number;
11
+ signalItems: number;
12
+ speechStartTime: number;
13
+ prerecordingItems: number;
14
+ speechVolumesList: any[];
15
+ meter: any;
16
+ mediaStreamSource: any;
17
+ audioContext?: AudioContext;
18
+ recorder: MediaRecorder | undefined;
19
+ recordedChunks: Blob[];
20
+ events: AudioEvents;
21
+ constructor(events: AudioEvents);
22
+ start(): Promise<void>;
23
+ stop(): Promise<void>;
24
+ average(array: number[]): number;
25
+ averageSignal(): number;
26
+ dispatchEvent(eventName: string, eventData: any): boolean;
27
+ mute(timestamp: any, duration: any): void;
28
+ signal(timestamp: any, duration: any): void;
29
+ silence(timestamp: any, duration: any): void;
30
+ sampleThresholdsDecision(muteVolume: number, speakingMinVolume: number): void;
31
+ prerecording(prespeechstartMsecs: number, timeoutMsecs: number): void;
32
+ audioDetection(config: any): void;
33
+ createAudioMeter(audioContext: any, clipLevel?: any, averaging?: any, clipLag?: any): any;
34
+ private audioStream;
35
+ volumeAudioProcess(event: any): void;
36
+ addEventListeners(): void;
37
+ }
38
+ export {};