@myinterview/widget-react 1.0.311 → 1.1.0

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 (166) hide show
  1. package/dist/cjs/App.d.ts +3 -0
  2. package/dist/cjs/components/AnswerInstructions.d.ts +7 -0
  3. package/dist/cjs/components/AssessmentController.d.ts +12 -0
  4. package/dist/cjs/components/AssessmentFreeText.d.ts +7 -0
  5. package/dist/cjs/components/AssessmentMultiSelect.d.ts +9 -0
  6. package/dist/cjs/components/AssessmentSingleSelect.d.ts +9 -0
  7. package/dist/cjs/components/CharactersLimit.d.ts +7 -0
  8. package/dist/cjs/components/CountDown.d.ts +8 -0
  9. package/dist/cjs/components/Counter.d.ts +8 -0
  10. package/dist/cjs/components/DeviceSelector.d.ts +11 -0
  11. package/dist/cjs/components/DeviceSelectorList.d.ts +9 -0
  12. package/dist/cjs/components/DeviceSelectorListNative.d.ts +6 -0
  13. package/dist/cjs/components/Error.d.ts +8 -0
  14. package/dist/cjs/components/ErrorBoundaries.d.ts +9 -0
  15. package/dist/cjs/components/Errors.d.ts +12 -0
  16. package/dist/cjs/components/Explanation.d.ts +8 -0
  17. package/dist/cjs/components/Footer.d.ts +2 -0
  18. package/dist/cjs/components/Header.d.ts +10 -0
  19. package/dist/cjs/components/InnerView.d.ts +15 -0
  20. package/dist/cjs/components/Main.d.ts +11 -0
  21. package/dist/cjs/components/OuterView.d.ts +8 -0
  22. package/dist/cjs/components/PermissionSteps.d.ts +6 -0
  23. package/dist/cjs/components/PracticeModeInfo.d.ts +2 -0
  24. package/dist/cjs/components/PreviewItem.d.ts +20 -0
  25. package/dist/cjs/components/PreviewList.d.ts +18 -0
  26. package/dist/cjs/components/Question.d.ts +8 -0
  27. package/dist/cjs/components/QuestionItem.d.ts +12 -0
  28. package/dist/cjs/components/QuestionParamaters.d.ts +9 -0
  29. package/dist/cjs/components/QuestionsList.d.ts +11 -0
  30. package/dist/cjs/components/RecorderModal.d.ts +13 -0
  31. package/dist/cjs/components/Setup.d.ts +7 -0
  32. package/dist/cjs/components/SetupChecks.d.ts +14 -0
  33. package/dist/cjs/components/SliderModal.d.ts +8 -0
  34. package/dist/cjs/components/TopTips.d.ts +2 -0
  35. package/dist/cjs/components/Upload.d.ts +13 -0
  36. package/dist/cjs/components/VideoCamera.d.ts +31 -0
  37. package/dist/cjs/components/VideoQuestion.d.ts +10 -0
  38. package/dist/cjs/components/VideoTimeBar.d.ts +9 -0
  39. package/dist/cjs/components/WelcomePage.d.ts +16 -0
  40. package/dist/cjs/components/Widget.d.ts +3 -0
  41. package/dist/cjs/components/icons/ClockIcon.d.ts +2 -0
  42. package/dist/cjs/components/icons/Loading.d.ts +2 -0
  43. package/dist/cjs/components/icons/NoCameraMic.d.ts +2 -0
  44. package/dist/cjs/components/icons/PlayIcon.d.ts +6 -0
  45. package/dist/cjs/components/icons/Retake.d.ts +2 -0
  46. package/dist/cjs/components/icons/RotateScreenIcon.d.ts +2 -0
  47. package/dist/cjs/components/ui/DotSeparator.d.ts +2 -0
  48. package/dist/cjs/components/ui/Loader.d.ts +2 -0
  49. package/dist/cjs/components/ui/MicrophoneIndicator.d.ts +7 -0
  50. package/dist/cjs/components/ui/MinimizeButton.d.ts +6 -0
  51. package/dist/cjs/components/ui/PracticeMode.d.ts +2 -0
  52. package/dist/cjs/components/ui/Progress.d.ts +6 -0
  53. package/dist/cjs/components/ui/QuestionDuration.d.ts +6 -0
  54. package/dist/cjs/components/ui/QuestionNumber.d.ts +7 -0
  55. package/dist/cjs/components/ui/RecordingButton.d.ts +6 -0
  56. package/dist/cjs/components/ui/RotateScreen.d.ts +2 -0
  57. package/dist/cjs/components/ui/Signal.d.ts +9 -0
  58. package/dist/cjs/components/ui/StartNowButton.d.ts +6 -0
  59. package/dist/cjs/components/ui/StartRecordingButton.d.ts +11 -0
  60. package/dist/cjs/components/ui/StopRecordingButton.d.ts +7 -0
  61. package/dist/cjs/components/ui/UnsupportedModal.d.ts +6 -0
  62. package/dist/cjs/config/index.d.ts +7 -0
  63. package/dist/cjs/config/local.env.d.ts +6 -0
  64. package/dist/cjs/config/prod.env.d.ts +6 -0
  65. package/dist/cjs/config/staging.env.d.ts +6 -0
  66. package/dist/cjs/i18n/config.d.ts +1490 -0
  67. package/dist/cjs/index.d.ts +4 -0
  68. package/dist/cjs/index.js +36599 -0
  69. package/dist/cjs/index.js.map +1 -0
  70. package/dist/cjs/interfaces/candidateInterface.d.ts +14 -0
  71. package/dist/cjs/interfaces/candidateSessionInterface.d.ts +83 -0
  72. package/dist/cjs/interfaces/companyInterface.d.ts +4 -0
  73. package/dist/cjs/interfaces/configInterface.d.ts +64 -0
  74. package/dist/cjs/interfaces/countDownInterface.d.ts +23 -0
  75. package/dist/cjs/interfaces/jobInterface.d.ts +72 -0
  76. package/dist/cjs/interfaces/microphoneInterface.d.ts +41 -0
  77. package/dist/cjs/interfaces/networkInterface.d.ts +9 -0
  78. package/dist/cjs/interfaces/previewInterface.d.ts +14 -0
  79. package/dist/cjs/interfaces/recorderInterface.d.ts +203 -0
  80. package/dist/cjs/interfaces/storageInterface.d.ts +29 -0
  81. package/dist/cjs/interfaces/uploaderInterface.d.ts +41 -0
  82. package/dist/cjs/interfaces/videoInterface.d.ts +84 -0
  83. package/dist/cjs/interfaces/widgetInterface.d.ts +231 -0
  84. package/dist/cjs/machines/acceleratorMachines/accUploaderMachine.d.ts +6 -0
  85. package/dist/cjs/machines/acceleratorMachines/accWidgetMachine.d.ts +6 -0
  86. package/dist/cjs/machines/acceleratorMachines/counterMachine.d.ts +5 -0
  87. package/dist/cjs/machines/acceleratorMachines/microphoneMachine.d.ts +6 -0
  88. package/dist/cjs/machines/acceleratorMachines/networkMachine.d.ts +5 -0
  89. package/dist/cjs/machines/acceleratorMachines/previewMachine.d.ts +6 -0
  90. package/dist/cjs/machines/acceleratorMachines/recorderMachineV2.d.ts +6 -0
  91. package/dist/cjs/machines/acceleratorMachines/storageMachine.d.ts +6 -0
  92. package/dist/cjs/reportWebVitals.d.ts +3 -0
  93. package/dist/cjs/services/axiosInstances.service.d.ts +4 -0
  94. package/dist/cjs/services/s3.service.d.ts +1 -0
  95. package/dist/cjs/services/session.service.d.ts +57 -0
  96. package/dist/cjs/services/speedTest.service.d.ts +2 -0
  97. package/dist/cjs/services/video.service.d.ts +7 -0
  98. package/dist/cjs/setupTests.d.ts +1 -0
  99. package/dist/cjs/utils/authToken.utils.d.ts +7 -0
  100. package/dist/cjs/utils/constants.utils.d.ts +21 -0
  101. package/dist/cjs/utils/convertor.utils.d.ts +2 -0
  102. package/dist/cjs/utils/debug.utils.d.ts +19 -0
  103. package/dist/cjs/utils/device.utils.d.ts +12 -0
  104. package/dist/cjs/utils/errors.utils.d.ts +9 -0
  105. package/dist/cjs/utils/formatters.utils.d.ts +5 -0
  106. package/dist/cjs/utils/languages.utils.d.ts +1 -0
  107. package/dist/cjs/utils/messages.utils.d.ts +16 -0
  108. package/dist/cjs/utils/recorderErrors.utils.d.ts +29 -0
  109. package/dist/cjs/utils/sentry.utils.d.ts +6 -0
  110. package/dist/cjs/utils/statusCodes.utils.d.ts +13 -0
  111. package/dist/cjs/workers/microphone.worker.d.ts +2 -0
  112. package/dist/cjs/workers/worker-builder.d.ts +3 -0
  113. package/dist/esm/App.d.ts +1 -0
  114. package/dist/esm/components/AnswerInstructions.d.ts +7 -0
  115. package/dist/esm/components/AssessmentController.d.ts +12 -0
  116. package/dist/esm/components/AssessmentFreeText.d.ts +7 -0
  117. package/dist/esm/components/AssessmentMultiSelect.d.ts +9 -0
  118. package/dist/esm/components/AssessmentSingleSelect.d.ts +9 -0
  119. package/dist/esm/components/CharactersLimit.d.ts +7 -0
  120. package/dist/esm/components/CountDown.d.ts +3 -1
  121. package/dist/esm/components/DeviceSelector.d.ts +3 -2
  122. package/dist/esm/components/Errors.d.ts +2 -2
  123. package/dist/esm/components/Explanation.d.ts +2 -1
  124. package/dist/esm/components/InnerView.d.ts +1 -0
  125. package/dist/esm/components/Main.d.ts +2 -0
  126. package/dist/esm/components/PracticeModeInfo.d.ts +1 -7
  127. package/dist/esm/components/PreviewItem.d.ts +4 -0
  128. package/dist/esm/components/PreviewList.d.ts +1 -0
  129. package/dist/esm/components/Question.d.ts +2 -3
  130. package/dist/esm/components/QuestionItem.d.ts +2 -2
  131. package/dist/esm/components/QuestionParamaters.d.ts +9 -0
  132. package/dist/esm/components/QuestionsList.d.ts +2 -2
  133. package/dist/esm/components/RecorderModal.d.ts +2 -4
  134. package/dist/esm/components/Setup.d.ts +1 -0
  135. package/dist/esm/components/VideoCamera.d.ts +4 -2
  136. package/dist/esm/components/Widget.d.ts +0 -3
  137. package/dist/esm/components/ui/DotSeparator.d.ts +2 -0
  138. package/dist/esm/components/ui/StartRecordingButton.d.ts +1 -0
  139. package/dist/esm/i18n/config.d.ts +349 -0
  140. package/dist/esm/index.d.ts +2 -2
  141. package/dist/esm/index.js +6327 -12129
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/interfaces/candidateSessionInterface.d.ts +1 -1
  144. package/dist/esm/interfaces/configInterface.d.ts +12 -6
  145. package/dist/esm/interfaces/countDownInterface.d.ts +23 -0
  146. package/dist/esm/interfaces/jobInterface.d.ts +43 -3
  147. package/dist/esm/interfaces/microphoneInterface.d.ts +3 -0
  148. package/dist/esm/interfaces/recorderInterface.d.ts +8 -3
  149. package/dist/esm/interfaces/uploaderInterface.d.ts +5 -3
  150. package/dist/esm/interfaces/videoInterface.d.ts +30 -1
  151. package/dist/esm/interfaces/widgetInterface.d.ts +28 -10
  152. package/dist/esm/machines/acceleratorMachines/counterMachine.d.ts +5 -0
  153. package/dist/esm/services/session.service.d.ts +1 -1
  154. package/dist/esm/services/video.service.d.ts +4 -4
  155. package/dist/esm/utils/constants.utils.d.ts +8 -0
  156. package/dist/esm/utils/convertor.utils.d.ts +2 -0
  157. package/dist/esm/utils/device.utils.d.ts +1 -1
  158. package/dist/esm/utils/formatters.utils.d.ts +1 -1
  159. package/dist/esm/utils/languages.utils.d.ts +1 -0
  160. package/dist/esm/utils/recorderErrors.utils.d.ts +1 -0
  161. package/dist/esm/utils/sentry.utils.d.ts +3 -1
  162. package/dist/esm/workers/microphone.worker.d.ts +2 -0
  163. package/dist/esm/workers/worker-builder.d.ts +3 -0
  164. package/dist/index.d.ts +82 -19
  165. package/package.json +121 -16
  166. package/dist/esm/utils/practiceQuestions.utils.d.ts +0 -2
@@ -0,0 +1,14 @@
1
+ export interface ICandidate {
2
+ candidate_id?: string;
3
+ email: string;
4
+ username?: string;
5
+ phone?: string;
6
+ video_id?: string;
7
+ redirectUrl?: string;
8
+ additionalData?: object;
9
+ disableResume?: boolean;
10
+ reapply?: boolean;
11
+ enableNotifications?: boolean;
12
+ apiKey?: string;
13
+ company_id?: string;
14
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * @author tht7 ( tht7 )
3
+ * @date 10/07/12022 6:48 pm
4
+ */
5
+ declare global {
6
+ interface Window {
7
+ candidateSession?: ICandidateSession;
8
+ }
9
+ }
10
+ export declare const enum CandidateSessionError {
11
+ NO_CANDIDATE_FOUND = "NO_CANDIDATE_FOUND",
12
+ NO_JOB_FOUND = "NO_JOB_FOUND",
13
+ DEADLINE_EXPIRED = "DEADLINE_EXPIRED",
14
+ NO_AUDIO = "NO_AUDIO",
15
+ NO_VIDEO = "NO_VIDEO",
16
+ PERMISSIONS_BLOCKED = "PERMISSIONS_BLOCKED",
17
+ JOB_INACTIVE = "JOB_INACTIVE",
18
+ SUBSCRIPTION_PAUSED = "SUBSCRIPTION_PAUSED",
19
+ SUBSCRIPTION_CANCELLED = "SUBSCRIPTION_CANCELLED",
20
+ INTERVIEW_ALREADY_COMPLETED = "INTERVIEW_ALREADY_COMPLETED",
21
+ MEDIA_RECORDER_ERROR = "MEDIA_RECORDER_ERROR"
22
+ }
23
+ export declare const enum CandidateSessionWarnings {
24
+ LOW_LIGHT = "LOW_LIGHT",
25
+ LOW_VOLUME = "LOW_VOLUME",
26
+ SLOW_CONNECTION = "SLOW_CONNECTION",
27
+ NO_INTERNET = "NO_INTERNET",
28
+ NotAllowedError = "NotAllowedError",
29
+ NotFoundError = "NotFoundError",
30
+ NotReadableError = "NotReadableError",
31
+ OverconstrainedError = "OverconstrainedError",
32
+ SecurityError = "SecurityError"
33
+ }
34
+ export type CandidateSessionSourceType = 'direct' | 'email' | 'sms' | 'email_reminder' | 'sms_reminder';
35
+ export declare const enum CandidateSessionSourceMap {
36
+ direct_start_inter = "direct",
37
+ reminder_start_inter = "email_reminder",
38
+ reminder_sms_start_inter = "sms_reminder",
39
+ email_start_inter = "email",
40
+ sms_start_inter = "sms"
41
+ }
42
+ export interface ICandidateSession {
43
+ session_id: string;
44
+ duration: number;
45
+ error?: keyof typeof CandidateSessionError;
46
+ warnings?: (keyof typeof CandidateSessionWarnings)[];
47
+ reload_count: number;
48
+ files_uploaded_count: number;
49
+ widget_version: string;
50
+ company_id: string;
51
+ apiKey: string;
52
+ job_id?: string;
53
+ candidate_id?: string;
54
+ video_id?: string;
55
+ email?: string;
56
+ source?: CandidateSessionSourceType;
57
+ userAgent?: string;
58
+ ip?: string;
59
+ candidate_location?: string;
60
+ first_interaction?: Date;
61
+ form_filled?: Date;
62
+ document_uploaded?: Date;
63
+ top_tips_shown?: Date;
64
+ top_tips_clicked?: Date;
65
+ top_tips_positive_rating?: boolean;
66
+ widget_shown?: Date;
67
+ widget_practiced?: Date;
68
+ widget_camera_setup?: Date;
69
+ widget_microphone_setup?: Date;
70
+ widget_slow_internet_setup?: Date;
71
+ widget_high_internet_setup?: Date;
72
+ widget_medium_internet_setup?: Date;
73
+ widget_start_click_setup?: Date;
74
+ widget_change_camera_setup?: Date;
75
+ widget_change_mic_setup?: Date;
76
+ widget_exit?: Date;
77
+ widget_retake_count: number;
78
+ widget_submitted?: Date;
79
+ widget_completed?: Date;
80
+ page_closed: Date;
81
+ createdAt: Date;
82
+ updatedAt: Date;
83
+ }
@@ -0,0 +1,4 @@
1
+ export interface ICompany {
2
+ name: string;
3
+ shouldShowWaterMark: boolean;
4
+ }
@@ -0,0 +1,64 @@
1
+ import { CSSProperties } from 'react';
2
+ import { ICandidate } from './candidateInterface';
3
+ import { ICompany } from './companyInterface';
4
+ import { ALL_JOB_QUESTIONS_TYPE, IClientJob, IClientQuestion, IJob } from './jobInterface';
5
+ import { IVideo } from './videoInterface';
6
+ export type IMessageType = 'completed' | 'deadline' | 'applied' | 'inactiveJob';
7
+ export interface IOnFinish {
8
+ redirectUrl?: string;
9
+ video_id: string;
10
+ }
11
+ export interface IOnError {
12
+ messageType: IMessageType;
13
+ }
14
+ export type IEnv = 'dev' | 'staging' | 'production' | 'development' | 'local';
15
+ interface IConfig {
16
+ auth: string;
17
+ onWidgetClicked?: () => void;
18
+ onFinish?: (data: IOnFinish) => void;
19
+ onError?: (data: IOnError) => void;
20
+ onWidgetClose?: () => void;
21
+ openAnimation?: boolean;
22
+ debug?: boolean;
23
+ practiceQuestions?: ALL_JOB_QUESTIONS_TYPE[];
24
+ overlay?: string;
25
+ introVideo?: string;
26
+ welcomeTitle?: string;
27
+ welcomeText?: string;
28
+ env?: IEnv;
29
+ minimizable?: boolean;
30
+ hideHeader?: boolean;
31
+ hideIntercom?: boolean;
32
+ disablePractice?: boolean;
33
+ }
34
+ export type IClientConfig = Omit<IConfig, 'practiceQuestions'> & {
35
+ practiceQuestions?: IClientQuestion[];
36
+ };
37
+ export interface IWidgetConfig {
38
+ video?: IVideo;
39
+ candidate: ICandidate;
40
+ job?: IJob;
41
+ company?: ICompany;
42
+ config: IConfig;
43
+ disabled?: boolean;
44
+ buttonText?: string;
45
+ buttonStyle?: CSSProperties;
46
+ children?: React.ReactNode;
47
+ styleUrls?: string | string[];
48
+ fontsUrls?: string | string[];
49
+ }
50
+ export type IClientWidgetConfig = Omit<IWidgetConfig, 'job' | 'config'> & {
51
+ job: IClientJob;
52
+ config: IClientConfig;
53
+ };
54
+ export interface IWidgetConfigResponse {
55
+ video: IVideo;
56
+ candidate: ICandidate;
57
+ job: IJob;
58
+ }
59
+ export interface IWidgetConfigRequest {
60
+ video?: IVideo;
61
+ candidate?: ICandidate;
62
+ job?: IJob;
63
+ }
64
+ export {};
@@ -0,0 +1,23 @@
1
+ export interface CounterInterface {
2
+ counterRef: any;
3
+ ms: number;
4
+ isAutoStart: boolean;
5
+ callback: string;
6
+ }
7
+ export declare const enum GUARDS {
8
+ IS_AUTO_START = "isAutoStart"
9
+ }
10
+ export declare const enum STATES {
11
+ IDLE = "idle",
12
+ COUNTING = "counting",
13
+ PAUSED = "paused"
14
+ }
15
+ export declare const enum ACTIONS {
16
+ TICK = "tick",
17
+ INIT_OBSERVER = "initObserver"
18
+ }
19
+ export declare const enum EVENTS {
20
+ TICK = "TICK",
21
+ START = "START",
22
+ PAUSE = "PAUSE"
23
+ }
@@ -0,0 +1,72 @@
1
+ export declare const enum ANSWER_TYPES {
2
+ VIDEO = "video",
3
+ TEXT = "text",
4
+ MULTIPLE = "multiple_choice",
5
+ SINGLE = "single_choice"
6
+ }
7
+ export interface IQuestion {
8
+ question: string;
9
+ numOfRetakes: number;
10
+ partDuration: number;
11
+ thinkingTime: number;
12
+ timeLimit?: number;
13
+ videoQuestion?: string;
14
+ description?: string;
15
+ }
16
+ export interface IQuestionDefault extends IQuestion {
17
+ answerType?: `${ANSWER_TYPES.VIDEO}`;
18
+ }
19
+ export interface IQuestionTextAnswer extends IQuestion {
20
+ answerType: `${ANSWER_TYPES.TEXT}`;
21
+ config?: {
22
+ minChars?: number;
23
+ maxChars?: number;
24
+ };
25
+ }
26
+ export interface IMultipleChoiceOptionDefinition {
27
+ id: string;
28
+ label: string;
29
+ }
30
+ export interface IQuestionChoiceAnswer extends IQuestion {
31
+ config?: {
32
+ shuffle?: boolean;
33
+ answers: IMultipleChoiceOptionDefinition[];
34
+ };
35
+ }
36
+ export interface IQuestionMultipleAnswer extends IQuestionChoiceAnswer {
37
+ answerType: `${ANSWER_TYPES.MULTIPLE}`;
38
+ config?: {
39
+ minAnswers?: number;
40
+ maxAnswers?: number;
41
+ } & IQuestionChoiceAnswer['config'];
42
+ }
43
+ export interface IQuestionSingleAnswer extends IQuestionChoiceAnswer {
44
+ answerType: `${ANSWER_TYPES.SINGLE}`;
45
+ }
46
+ type leanQuestion<T> = Omit<T, 'numOfRetakes' | 'partDuration' | 'thinkingTime'> & {
47
+ attempts?: number;
48
+ duration?: number;
49
+ thinkingTime?: number;
50
+ };
51
+ export type ALL_JOB_QUESTIONS_TYPE = IQuestionDefault | IQuestionTextAnswer | IQuestionMultipleAnswer | IQuestionSingleAnswer;
52
+ export type ASSESSMENT_QUESTIONS_TYPE = Exclude<ALL_JOB_QUESTIONS_TYPE, IQuestionDefault>;
53
+ export type IClientQuestion = leanQuestion<IQuestionDefault> | leanQuestion<IQuestionTextAnswer> | leanQuestion<IQuestionMultipleAnswer> | leanQuestion<IQuestionSingleAnswer>;
54
+ export interface IJob {
55
+ language?: string;
56
+ transcriptLanguage?: string;
57
+ title?: string;
58
+ company?: string;
59
+ job_id?: string;
60
+ logo?: string;
61
+ questions?: ALL_JOB_QUESTIONS_TYPE[];
62
+ old_jobID?: string;
63
+ termsUrl?: string;
64
+ privacyUrl?: string;
65
+ apiKey?: string;
66
+ company_id?: string;
67
+ jobID?: string;
68
+ }
69
+ export type IClientJob = Omit<IJob, 'questions'> & {
70
+ questions?: IClientQuestion[];
71
+ };
72
+ export {};
@@ -0,0 +1,41 @@
1
+ export interface InitialState {
2
+ mediaStream: MediaStream | null;
3
+ micData: number;
4
+ retakes: number;
5
+ webWorker: Worker | null;
6
+ }
7
+ export declare const enum STATES {
8
+ INACTIVE = "inactive",
9
+ ACTIVE = "active",
10
+ NOT_RECEIVING_DATA = "notReceivingData",
11
+ RECEIVING_DATA = "receivingData",
12
+ DATA_CHECK = "dataCheck"
13
+ }
14
+ export declare const enum ACTIONS {
15
+ COLLECT_BREADCRUMB = "collectBreadcrumb",
16
+ INIT_WEB_WORKER = "initWebWorker",
17
+ CONSOLE_LOG = "consoleLog",
18
+ SET_MEDIA_STREAM = "setMediaStream",
19
+ UPDATE_MIC = "updateMic",
20
+ UPDATE_RETAKES = "UPDATE_RETAKES",
21
+ CLEAN_RETAKES = "CLEAN_RETAKES",
22
+ SENTRY = "sentry"
23
+ }
24
+ export declare const enum EVENTS {
25
+ UNMUTE = "UNMUTE",
26
+ MUTE = "MUTE",
27
+ ON_SET_MEDIA_STREAM = "ON_SET_MEDIA_STREAM",
28
+ SEND_DATA = "SEND_DATA",
29
+ MIC_CHECK = "MIC_CHECK",
30
+ SEND_ERROR = "SEND_ERROR",
31
+ UPDATE_RETAKES = "UPDATE_RETAKES",
32
+ CLEAN_RETAKES = "CLEAN_RETAKES"
33
+ }
34
+ export declare const enum SERVICES {
35
+ CHECK_MICROPHONE_LEVEL = "checkMicrophoneLevel"
36
+ }
37
+ export declare const enum GUARDS {
38
+ IS_MEDIA_STREAM_AVAILABLE = "isMediaStreamAvailable",
39
+ IS_MIC_NOT_RECEIVING_DATA = "isMicNotReceivingData",
40
+ IS_MIC_RECEIVING_DATA = "isMicReceivingData"
41
+ }
@@ -0,0 +1,9 @@
1
+ export declare const enum STATES {
2
+ READY = "ready"
3
+ }
4
+ export declare const enum ACTIONS {
5
+ SET_CONNECTION = "setConnection"
6
+ }
7
+ export declare const enum EVENTS {
8
+ CONNECTION_CHANGED = "CONNECTION_CHANGED"
9
+ }
@@ -0,0 +1,14 @@
1
+ export interface PreviewInterface {
2
+ videosUrls: string[];
3
+ }
4
+ export declare const enum STATES {
5
+ IDLE = "idle",
6
+ ERROR = "error",
7
+ FINISH = "finish"
8
+ }
9
+ export declare const enum EVENTS {
10
+ TAKES_RECEIVED = "TAKES_RECEIVED"
11
+ }
12
+ export declare const enum ACTIONS {
13
+ SET_TAKES = "setTakes"
14
+ }
@@ -0,0 +1,203 @@
1
+ import { ActorRef, DoneInvokeEvent } from 'xstate';
2
+ import { RefObject } from 'react';
3
+ export declare const enum SPEED_TEST_LEVEL {
4
+ LOW = 0,
5
+ MEDIUM = 1,
6
+ HIGH = 2
7
+ }
8
+ export type mediaDeviceType = 'video' | 'audio';
9
+ type ConstrainProps = {
10
+ video: {
11
+ width: {
12
+ min?: number;
13
+ ideal?: number;
14
+ max: number;
15
+ };
16
+ aspectRatio?: number;
17
+ };
18
+ audio: boolean;
19
+ };
20
+ interface FacingMode {
21
+ exact: string;
22
+ }
23
+ export interface RecorderInterface {
24
+ facingMode: FacingMode;
25
+ microphoneRef: ActorRef<DoneInvokeEvent<any>> | null;
26
+ countDownRef: ActorRef<DoneInvokeEvent<any>> | null;
27
+ mediaStream?: MediaStream;
28
+ mediaRecorder?: MediaRecorder;
29
+ videoDevices: MediaDeviceInfo[];
30
+ audioDevices: MediaDeviceInfo[];
31
+ selectedVideoDevice?: MediaDeviceInfo;
32
+ selectedAudioDevice?: MediaDeviceInfo;
33
+ mimeType: string;
34
+ mimeTypes: string[];
35
+ isMobile: boolean;
36
+ isSafeMode: boolean;
37
+ isAutoStart: boolean;
38
+ speedTestLevel: SPEED_TEST_LEVEL;
39
+ constraint: ConstrainProps;
40
+ videoRef: RefObject<HTMLVideoElement>;
41
+ videoBitsPerSecond: number;
42
+ countdown: number;
43
+ recordingTime: number;
44
+ durations: number;
45
+ isMicError: boolean;
46
+ }
47
+ export declare const enum MIME_TYPES {
48
+ WEBM = "video/webm",
49
+ MP4 = "video/mp4"
50
+ }
51
+ export declare const enum STATES {
52
+ INIT = "init",
53
+ IDLE = "idle",
54
+ RECORDING = "recording",
55
+ WAITING = "waiting",
56
+ ERROR = "error",
57
+ INIT_RECORDER = "initRecorder",
58
+ COUNT_DOWN = "countDown",
59
+ COLLECTING_BLOBS = "collectingBlobs",
60
+ RECORDER_TIMER = "recorderTimer",
61
+ RECORDER_SENDING_BLOBS = "recorderSendingBlobs"
62
+ }
63
+ export declare const enum ACTIONS {
64
+ STOP_COUNT_DOWN_ACTOR = "STOP_COUNT_DOWN_ACTOR",
65
+ INIT_COUNT_DOWN_ACTOR = "INIT_COUNT_DOWN_ACTOR",
66
+ SESSION_EVENT = "SESSION_EVENT",
67
+ SENTRY = "SENTRY",
68
+ CONSOLE_LOG = "CONSOLE_LOG",
69
+ REMOVE_MIC_ERROR = "REMOVE_MIC_ERROR",
70
+ PAUSE_MEDIA_RECORDER = "PAUSE_MEDIA_RECORDER",
71
+ RESUME_MEDIA_RECORDER = "RESUME_MEDIA_RECORDER",
72
+ SEND_CURRENT_TAKE = "SEND_CURRENT_TAKE",
73
+ STOP_MICROPHONE_MACHINE = "STOP_MICROPHONE_MACHINE",
74
+ STOP_MEDIA_RECORDER = "STOP_MEDIA_RECORDER",
75
+ DISABLED_AUTO_START = "DISABLED_AUTO_START",
76
+ SET_AUTO_START = "SET_AUTO_START",
77
+ UPDATE_RECORDING_TIME = "UPDATE_RECORDING_TIME",
78
+ UPDATE_COUNT_DOWN = "UPDATE_COUNT_DOWN",
79
+ SET_MIC_MACHINE = "INIT_MIC_MACHINE",
80
+ SEND_MEDIA_STREAM_TO_MIC_MACHINE = "SET_MEDIA_STREAM_TO_MIC_MACHINE",
81
+ SET_MEDIA_STREAM_CORE = "SET_MEDIA_STREAM_CORE",
82
+ STOP_MEDIA_STREAM = "STOP_MEDIA_STREAM",
83
+ SET_MIME_TYPE = "SET_MIME_TYPE",
84
+ SET_SAFE_MODE = "SET_SAFE_MODE",
85
+ SEND_ERROR_TO_PARENT = "SEND_ERROR_TO_PARENT",
86
+ SEND_SUCCESS_TO_PARENT = "SEND_SUCCESS_TO_PARENT",
87
+ CHANGE_VIDEO_DEVICE = "CHANGE_VIDEO_DEVICE",
88
+ CHANGE_AUDIO_DEVICE = "CHANGE_AUDIO_DEVICE",
89
+ SET_QUESTION_PARAMS = "SET_QUESTION_PARAMS",
90
+ UPDATE_CONSTRAINT = "UPDATE_CONSTRAINT",
91
+ UPDATE_AUDIO_AND_VIDEO_DEVICES = "UPDATE_AUDIO_AND_VIDEO_DEVICES",
92
+ SET_FORCE_START = "SET_FORCE_START",
93
+ RESET_MACHINE = "RESET_MACHINE",
94
+ UPDATE_MACHINE_FOR_NEW_QUESTION = "UPDATE_MACHINE_FOR_NEW_QUESTION",
95
+ SET_MEDIA_RECORDER = "SET_MEDIA_RECORDER",
96
+ SET_MIC_ERROR = "SET_MIC_ERROR"
97
+ }
98
+ export declare const enum EVENTS {
99
+ SEND_RECORDER_TO_WAITING_STATE = "SEND_RECORDER_TO_WAITING_STATE",
100
+ CHANGE_VIDEO_DEVICE = "CHANGE_VIDEO_DEVICE",
101
+ CHANGE_AUDIO_DEVICE = "CHANGE_AUDIO_DEVICE",
102
+ START_RECORDING = "START_RECORDING",
103
+ SET_QUESTION_PARAMS = "SET_QUESTION_PARAMS",
104
+ SPEED_TEST_RESULT_UPDATED = "SPEED_TEST_RESULT_UPDATED",
105
+ RECORDER_DEVICE_ERROR = "RECORDER_DEVICE_ERROR",
106
+ UPDATE_DEVICES_LIST = "UPDATE_DEVICES_LIST",
107
+ UPDATE_CURRENT_DEVICE = "UPDATE_CURRENT_DEVICE",
108
+ RECORDING_UPDATE_TIMER = "RECORDING_UPDATE_TIMER",
109
+ UPDATE_TIMER = "UPDATE_TIMER",
110
+ FORCE_START = "FORCE_START",
111
+ STOP_RECORDING = "STOP_RECORDING",
112
+ SET_MEDIA_RECORDER = "SET_MEDIA_RECORDER",
113
+ SEND_CURRENT_TAKE = "SEND_CURRENT_TAKE",
114
+ RE_INIT = "RE_INIT",
115
+ RETRY = "RETRY",
116
+ MIC_DATA_RECEIVED = "MIC_DATA_RECEIVED",
117
+ PAUSE_MEDIA_RECORDER = "PAUSE_MEDIA_RECORDER"
118
+ }
119
+ export declare const enum SERVICES {
120
+ GET_MEDIA_STREAM = "getMediaStream",
121
+ GET_MEDIA_RECORDER = "getMediaRecorder"
122
+ }
123
+ export declare const enum GUARDS {
124
+ IS_TIME_TO_STOP_RECORDING = "isTimeToStopRecording",
125
+ IS_RECORDER_ACTIVE = "isRecorderActive",
126
+ IS_TIME_TO_START_RECORDING = "isTimeToStartRecording",
127
+ NO_SOUND_FROM_MIC_MACHINE = "noSoundFromMicMachine",
128
+ IS_NOT_ALLOWED_ERROR = "isNotAllowedError",
129
+ IS_ERROR_WITH_WRONG_PARAMS = "isErrorWithWrongParams",
130
+ IS_AUTO_START = "isAutoStart",
131
+ IS_QUALITY_CHANGED = "isQualityChanged",
132
+ IS_VIDEO_CORRUPTED = "isVideoCorrupted"
133
+ }
134
+ export declare const mediaConstrains: {
135
+ hd: {
136
+ video: {
137
+ width: {
138
+ min: number;
139
+ ideal: number;
140
+ max: number;
141
+ };
142
+ };
143
+ audio: boolean;
144
+ };
145
+ vga: {
146
+ video: {
147
+ width: {
148
+ max: number;
149
+ ideal: number;
150
+ };
151
+ };
152
+ audio: boolean;
153
+ };
154
+ qvga: {
155
+ video: {
156
+ width: {
157
+ min: number;
158
+ ideal: number;
159
+ max: number;
160
+ };
161
+ aspectRatio: number;
162
+ };
163
+ audio: boolean;
164
+ };
165
+ mobile: {
166
+ video: {
167
+ width: {
168
+ min: number;
169
+ ideal: number;
170
+ max: number;
171
+ };
172
+ aspectRatio: number;
173
+ };
174
+ audio: boolean;
175
+ };
176
+ mobile2: {
177
+ video: {
178
+ width: {
179
+ min: number;
180
+ ideal: number;
181
+ max: number;
182
+ };
183
+ aspectRatio: number;
184
+ };
185
+ audio: boolean;
186
+ };
187
+ mobile3: {
188
+ video: {
189
+ width: {
190
+ min: number;
191
+ ideal: number;
192
+ max: number;
193
+ };
194
+ aspectRatio: number;
195
+ };
196
+ audio: boolean;
197
+ };
198
+ noVideo: {
199
+ video: boolean;
200
+ audio: boolean;
201
+ };
202
+ };
203
+ export {};
@@ -0,0 +1,29 @@
1
+ export interface ITakeObj {
2
+ file: File[];
3
+ objectUrl: string;
4
+ }
5
+ interface IFilesQuestion {
6
+ [questionNumber: number]: ITakeObj[];
7
+ }
8
+ export interface InitialState {
9
+ questions: IFilesQuestion;
10
+ practice: IFilesQuestion;
11
+ }
12
+ export declare const enum EVENTS {
13
+ STORE_TAKE = "STORE_TAKE",
14
+ GET_TAKE = "GET_TAKE",
15
+ GET_TAKES = "GET_TAKES",
16
+ REMOVE_TAKES = "REMOVE_TAKES"
17
+ }
18
+ export declare const enum ACTIONS {
19
+ CONSOLE_LOG = "consoleLog",
20
+ STORE_TAKE = "storeTake",
21
+ SEND_TAKE = "sendTake",
22
+ SEND_TAKES = "sendTakes",
23
+ REMOVE_TAKES = "removeTakes"
24
+ }
25
+ export declare const enum TAKE_TYPES {
26
+ QUESTION = "question",
27
+ PRACTICE = "practice"
28
+ }
29
+ export {};
@@ -0,0 +1,41 @@
1
+ import { ALL_VIDEO_FILE_TYPES } from './videoInterface';
2
+ interface ILastUploadChunkl {
3
+ loaded: number;
4
+ timeStamp: number;
5
+ }
6
+ export interface InitialState {
7
+ isConnected: boolean;
8
+ currentQuestion: number | null;
9
+ file: File | null;
10
+ signedUrl: string;
11
+ uploadSpeed: number;
12
+ lastUploadChunk: ILastUploadChunkl;
13
+ videoId: string;
14
+ videoFile: ALL_VIDEO_FILE_TYPES;
15
+ }
16
+ export declare const enum STATES {
17
+ IDLE = "idle",
18
+ UPLOAD_CONTROLLER = "uploadController",
19
+ UPLOADING = "uploading",
20
+ GET_SIGNED_URL = "getSignedUrl",
21
+ UPLOAD_TO_S3 = "uploadToS3",
22
+ UPLOADED = "uploaded",
23
+ FINISHED = "finished"
24
+ }
25
+ export declare const enum ACTIONS {
26
+ SET_UPLOADED = "setUploaded",
27
+ CONSOLE_LOG = "consoleLog",
28
+ SET_CONNECTION = "setConnection",
29
+ SET_SIGNED_URL = "setSignedUrl",
30
+ SET_VIDEO_FILE = "setVideoFile",
31
+ INITIAL_UPLOAD_TIMESTAMP = "initialUploadTimestamp",
32
+ UPDATE_UPLOAD_SPEED = "updateUploadSpeed",
33
+ SEND_UPLOAD_PROGRESS = "sendUploadProgress",
34
+ UPDATE_PARENT = "updateParent",
35
+ SENTRY = "sentry"
36
+ }
37
+ export declare const enum GUARDS {
38
+ CAN_UPLOAD = "canUplaod",
39
+ IS_ASSESSMENT_QUESTION = "isAssessmentQuestion"
40
+ }
41
+ export {};
@@ -0,0 +1,84 @@
1
+ import { ANSWER_TYPES } from './jobInterface';
2
+ export interface IVideoDimensions {
3
+ width: number;
4
+ height: number;
5
+ }
6
+ export interface IVideoPlatformOS {
7
+ architecture: number;
8
+ family: string;
9
+ version: string;
10
+ }
11
+ export interface IVideoPlatform {
12
+ description: string;
13
+ layout: string;
14
+ manufacturer: string;
15
+ name: string;
16
+ prerelease: string;
17
+ product: string;
18
+ ua: string;
19
+ version: string;
20
+ os: IVideoPlatformOS;
21
+ }
22
+ export interface IVideoFile {
23
+ completed: boolean;
24
+ uploaded: boolean;
25
+ filename: string;
26
+ retakes: number;
27
+ started: boolean;
28
+ videoLength?: number;
29
+ uploadUrl?: string;
30
+ question?: string;
31
+ selectedTake?: number;
32
+ originalDimensions?: IVideoDimensions;
33
+ }
34
+ export interface IVideoFileDefault extends IVideoFile {
35
+ answerType?: ANSWER_TYPES.VIDEO;
36
+ }
37
+ export interface IMultipleAnswer {
38
+ id: string;
39
+ label: string;
40
+ selected: boolean;
41
+ }
42
+ export interface IVideoFileTextAnswer extends IVideoFile {
43
+ answerType: ANSWER_TYPES.TEXT;
44
+ answer: string;
45
+ }
46
+ export interface IVideoFileMultipleAnswer extends IVideoFile {
47
+ answerType: ANSWER_TYPES.MULTIPLE;
48
+ answer: IMultipleAnswer[];
49
+ }
50
+ export interface IVideoFileSingleAnswer extends IVideoFile {
51
+ answerType: ANSWER_TYPES.SINGLE;
52
+ answer: IMultipleAnswer[];
53
+ }
54
+ export type ALL_VIDEO_FILE_TYPES = IVideoFileDefault | IVideoFileTextAnswer | IVideoFileMultipleAnswer | IVideoFileSingleAnswer;
55
+ export type ASSESSMENT_VIDEO_FILE_TYPES = Exclude<ALL_VIDEO_FILE_TYPES, IVideoFileDefault>;
56
+ export type CURRENT_QUESTION_ANSWER_TYPES = ASSESSMENT_VIDEO_FILE_TYPES['answer'];
57
+ export interface IVideo {
58
+ video_id?: string;
59
+ bandwidth?: string;
60
+ clicked?: boolean;
61
+ started?: boolean;
62
+ completed?: boolean;
63
+ uploaded?: boolean;
64
+ jobID?: string;
65
+ platform?: IVideoPlatform;
66
+ quality?: string;
67
+ referrer?: string;
68
+ cvUrl?: string;
69
+ videos?: ALL_VIDEO_FILE_TYPES[];
70
+ processTime?: number;
71
+ files?: string[];
72
+ personalInfo?: Record<string, string>;
73
+ language?: string;
74
+ gdprTimestamp?: string;
75
+ tracking?: {
76
+ reminder: number;
77
+ source: number;
78
+ };
79
+ }
80
+ export declare const enum VIDEO_STATUS {
81
+ INCOMPLETED = 0,
82
+ COMPLETED = 1,
83
+ UPLOADED = 2
84
+ }