@incodetech/core 2.0.0-alpha.1 → 2.0.0-alpha.11

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 (109) hide show
  1. package/dist/Manager-Cy9-TMC9.d.ts +19 -0
  2. package/dist/OpenViduLogger-20ZYS-mT.esm.js +3 -0
  3. package/dist/OpenViduLogger-5b7KqNTo.esm.js +803 -0
  4. package/dist/StateMachine-BqPpBhOz.d.ts +2 -0
  5. package/dist/addEvent-s2Za-pK3.esm.js +16 -0
  6. package/dist/chunk-C_Yo44FK.esm.js +49 -0
  7. package/dist/deepsightLoader-Bn2D0REl.esm.js +25 -0
  8. package/dist/email.d.ts +264 -0
  9. package/dist/email.esm.js +479 -0
  10. package/dist/endpoints-B0ltwtb5.esm.js +2335 -0
  11. package/dist/flow.d.ts +578 -0
  12. package/dist/flow.esm.js +628 -0
  13. package/dist/getBrowser-CLEzz0Hi.esm.js +8 -0
  14. package/dist/index.d.ts +226 -0
  15. package/dist/index.esm.js +156 -0
  16. package/dist/lib-CykGFCEr.esm.js +11700 -0
  17. package/dist/permissionServices-BhD0KxsO.esm.js +66 -0
  18. package/dist/phone.d.ts +292 -0
  19. package/dist/phone.esm.js +550 -0
  20. package/dist/recordingsRepository-CTjaf-ER.esm.js +256 -0
  21. package/dist/selfie.d.ts +821 -0
  22. package/dist/selfie.esm.js +1087 -0
  23. package/dist/types-Dif6MQmX.d.ts +5 -0
  24. package/dist/warmup-Cijuyvoc.d.ts +55 -0
  25. package/dist/xstate.esm-2T5fOCTq.esm.js +3261 -0
  26. package/package.json +14 -11
  27. package/src/camera/cameraActor.ts +0 -21
  28. package/src/camera/cameraService.test.ts +0 -437
  29. package/src/camera/cameraService.ts +0 -165
  30. package/src/camera/cameraServices.test.ts +0 -66
  31. package/src/camera/cameraServices.ts +0 -26
  32. package/src/camera/cameraStateMachine.test.ts +0 -602
  33. package/src/camera/cameraStateMachine.ts +0 -264
  34. package/src/camera/index.ts +0 -5
  35. package/src/camera/types.ts +0 -17
  36. package/src/device/getBrowser.ts +0 -31
  37. package/src/device/getDeviceClass.ts +0 -29
  38. package/src/device/index.ts +0 -2
  39. package/src/email/__mocks__/emailMocks.ts +0 -59
  40. package/src/email/emailActor.ts +0 -15
  41. package/src/email/emailManager.test.ts +0 -573
  42. package/src/email/emailManager.ts +0 -427
  43. package/src/email/emailServices.ts +0 -66
  44. package/src/email/emailStateMachine.test.ts +0 -741
  45. package/src/email/emailStateMachine.ts +0 -367
  46. package/src/email/index.ts +0 -39
  47. package/src/email/types.ts +0 -60
  48. package/src/events/addEvent.ts +0 -20
  49. package/src/events/types.ts +0 -7
  50. package/src/flow/__mocks__/flowMocks.ts +0 -84
  51. package/src/flow/flowActor.ts +0 -13
  52. package/src/flow/flowAnalyzer.test.ts +0 -266
  53. package/src/flow/flowAnalyzer.ts +0 -37
  54. package/src/flow/flowCompletionService.ts +0 -21
  55. package/src/flow/flowManager.test.ts +0 -560
  56. package/src/flow/flowManager.ts +0 -235
  57. package/src/flow/flowServices.test.ts +0 -109
  58. package/src/flow/flowServices.ts +0 -13
  59. package/src/flow/flowStateMachine.test.ts +0 -334
  60. package/src/flow/flowStateMachine.ts +0 -182
  61. package/src/flow/index.ts +0 -21
  62. package/src/flow/moduleLoader.test.ts +0 -136
  63. package/src/flow/moduleLoader.ts +0 -73
  64. package/src/flow/orchestratedFlowManager.test.ts +0 -240
  65. package/src/flow/orchestratedFlowManager.ts +0 -231
  66. package/src/flow/orchestratedFlowStateMachine.test.ts +0 -199
  67. package/src/flow/orchestratedFlowStateMachine.ts +0 -325
  68. package/src/flow/types.ts +0 -434
  69. package/src/http/__mocks__/api.ts +0 -88
  70. package/src/http/api.test.ts +0 -231
  71. package/src/http/api.ts +0 -90
  72. package/src/http/endpoints.ts +0 -17
  73. package/src/index.ts +0 -33
  74. package/src/permissions/index.ts +0 -2
  75. package/src/permissions/permissionServices.ts +0 -31
  76. package/src/permissions/types.ts +0 -3
  77. package/src/phone/__mocks__/phoneMocks.ts +0 -71
  78. package/src/phone/index.ts +0 -39
  79. package/src/phone/phoneActor.ts +0 -15
  80. package/src/phone/phoneManager.test.ts +0 -393
  81. package/src/phone/phoneManager.ts +0 -458
  82. package/src/phone/phoneServices.ts +0 -98
  83. package/src/phone/phoneStateMachine.test.ts +0 -918
  84. package/src/phone/phoneStateMachine.ts +0 -422
  85. package/src/phone/types.ts +0 -83
  86. package/src/recordings/recordingsRepository.test.ts +0 -87
  87. package/src/recordings/recordingsRepository.ts +0 -48
  88. package/src/recordings/streamingEvents.ts +0 -10
  89. package/src/selfie/__mocks__/selfieMocks.ts +0 -26
  90. package/src/selfie/index.ts +0 -14
  91. package/src/selfie/selfieActor.ts +0 -17
  92. package/src/selfie/selfieErrorUtils.test.ts +0 -116
  93. package/src/selfie/selfieErrorUtils.ts +0 -66
  94. package/src/selfie/selfieManager.test.ts +0 -297
  95. package/src/selfie/selfieManager.ts +0 -301
  96. package/src/selfie/selfieServices.ts +0 -362
  97. package/src/selfie/selfieStateMachine.test.ts +0 -283
  98. package/src/selfie/selfieStateMachine.ts +0 -804
  99. package/src/selfie/selfieUploadService.test.ts +0 -90
  100. package/src/selfie/selfieUploadService.ts +0 -81
  101. package/src/selfie/types.ts +0 -103
  102. package/src/session/index.ts +0 -5
  103. package/src/session/sessionService.ts +0 -78
  104. package/src/setup.test.ts +0 -61
  105. package/src/setup.ts +0 -171
  106. package/tsconfig.json +0 -13
  107. package/tsdown.config.ts +0 -22
  108. package/vitest.config.ts +0 -37
  109. package/vitest.setup.ts +0 -135
@@ -0,0 +1,256 @@
1
+ import { n as api, t as endpoints } from "./endpoints-B0ltwtb5.esm.js";
2
+ import { t as getUserAgent } from "./getBrowser-CLEzz0Hi.esm.js";
3
+
4
+ //#region src/internal/deepsight/metadataService.ts
5
+ function getWebGLFingerprint() {
6
+ try {
7
+ const canvas = document.createElement("canvas");
8
+ const gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
9
+ if (!gl) return "";
10
+ const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
11
+ if (!debugInfo) return "";
12
+ return gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) || "";
13
+ } catch {
14
+ return "";
15
+ }
16
+ }
17
+ function isBrowserSimulation() {
18
+ const win = window;
19
+ const nav = navigator;
20
+ return !!(win.callPhantom || win._phantom || win.phantom || win.__nightmare || nav.webdriver || win.domAutomation || win.domAutomationController);
21
+ }
22
+ async function getFingerPrint(disableIpify = false) {
23
+ let visitorId = "";
24
+ let ip = "";
25
+ try {
26
+ const canvas = document.createElement("canvas");
27
+ const ctx = canvas.getContext("2d");
28
+ if (ctx) {
29
+ ctx.textBaseline = "top";
30
+ ctx.font = "14px Arial";
31
+ ctx.fillText("fingerprint", 2, 2);
32
+ visitorId = canvas.toDataURL().slice(-50);
33
+ }
34
+ } catch {}
35
+ if (!disableIpify) try {
36
+ const controller = new AbortController();
37
+ const timeoutId = setTimeout(() => controller.abort(), 3e3);
38
+ const response = await fetch("https://api.ipify.org?format=json", { signal: controller.signal });
39
+ clearTimeout(timeoutId);
40
+ ip = (await response.json()).ip || "";
41
+ } catch {}
42
+ return {
43
+ visitorId,
44
+ ip
45
+ };
46
+ }
47
+ function createMetadataService(wasmUtil, visibility) {
48
+ return {
49
+ async initialize(sdkVersion, disableIpify = false) {
50
+ wasmUtil.setSdkPlatform("WEBAPP");
51
+ wasmUtil.setSdkVersion(sdkVersion);
52
+ const ua = getUserAgent();
53
+ const isMobile = /Android|iPhone|iPad|iPod/i.test(ua);
54
+ const fingerPrint = await getFingerPrint(disableIpify).catch(() => ({
55
+ visitorId: "",
56
+ ip: ""
57
+ }));
58
+ const deviceMetadata = {
59
+ kind: isMobile ? "mobile" : "desktop",
60
+ model: "",
61
+ os: void 0,
62
+ osVersion: void 0,
63
+ screenDimensions: {
64
+ width: screen.width,
65
+ height: screen.height
66
+ },
67
+ numTouchPoints: navigator.maxTouchPoints,
68
+ fingerprintHash: fingerPrint.visitorId || "",
69
+ ip: fingerPrint.ip || "",
70
+ backgroundMode: false
71
+ };
72
+ wasmUtil.setDeviceInfo(deviceMetadata);
73
+ const nav = navigator;
74
+ const browserInfo = {
75
+ userAgent: ua,
76
+ getUserMediaAvailability: {
77
+ webkit: nav.webkitGetUserMedia !== void 0,
78
+ moz: nav.mozGetUserMedia !== void 0,
79
+ o: nav.oGetUserMedia !== void 0,
80
+ ms: nav.msGetUserMedia !== void 0
81
+ },
82
+ webglFingerprint: getWebGLFingerprint(),
83
+ inspectorOpened: false,
84
+ isMockedBrowser: isBrowserSimulation()
85
+ };
86
+ wasmUtil.setBrowserInfo(browserInfo, false);
87
+ },
88
+ updateCameraInfo(videoTrack) {
89
+ const settings = videoTrack.getSettings();
90
+ const capabilities = videoTrack.getCapabilities?.() ?? {};
91
+ const labels = videoTrack.label ? [videoTrack.label] : [];
92
+ const cameraInfo = {
93
+ facingMode: settings.facingMode === "user" ? "frontal" : settings.facingMode === "environment" ? "back" : settings.facingMode || "unknown",
94
+ settings,
95
+ capabilities,
96
+ labels
97
+ };
98
+ wasmUtil.setCameraInfo(cameraInfo);
99
+ },
100
+ async checkForVirtualCameraByLabel(videoTrack = null) {
101
+ try {
102
+ if (!videoTrack) {
103
+ const devices = await navigator.mediaDevices.enumerateDevices();
104
+ for (const device of devices) if (device.kind === "videoinput" && wasmUtil.isVirtualCamera(device.label)) return true;
105
+ }
106
+ if (videoTrack && wasmUtil.isVirtualCamera(videoTrack.label)) return true;
107
+ return false;
108
+ } catch {
109
+ return false;
110
+ }
111
+ },
112
+ async analyzeFrame(imageData) {
113
+ await wasmUtil.analyzeFrame(imageData);
114
+ },
115
+ setMotionStatus(status) {
116
+ wasmUtil.setMotionStatus(status);
117
+ },
118
+ setBackgroundMode(backgroundMode) {
119
+ wasmUtil.setBackgroundMode(backgroundMode || visibility.wasBackgrounded);
120
+ visibility.reset();
121
+ },
122
+ estimatePerformance() {
123
+ return wasmUtil.estimatePerformance();
124
+ },
125
+ getMetadata() {
126
+ return wasmUtil.getMetadata();
127
+ },
128
+ getCheck() {
129
+ return wasmUtil.getCheck();
130
+ }
131
+ };
132
+ }
133
+
134
+ //#endregion
135
+ //#region src/internal/deepsight/motionStatusService.ts
136
+ function createMotionStatusService(motionSensor) {
137
+ return {
138
+ async requestPermission() {
139
+ return motionSensor.requestPermission();
140
+ },
141
+ async start() {
142
+ await motionSensor.start();
143
+ },
144
+ stop() {
145
+ motionSensor.stop();
146
+ },
147
+ check() {
148
+ return motionSensor.check();
149
+ },
150
+ get isRunning() {
151
+ return motionSensor.isRunning;
152
+ },
153
+ get hasPermission() {
154
+ return motionSensor.hasPermission;
155
+ }
156
+ };
157
+ }
158
+
159
+ //#endregion
160
+ //#region src/internal/deepsight/deepsightService.ts
161
+ function createDeepsightService(config) {
162
+ const metadata = createMetadataService(config.wasmUtil, config.visibility);
163
+ const motion = createMotionStatusService(config.motionSensor);
164
+ return {
165
+ metadata,
166
+ motion,
167
+ recorder: config.recorder,
168
+ async initialize(disableIpify = false) {
169
+ await metadata.initialize(config.sdkVersion, disableIpify);
170
+ metadata.estimatePerformance();
171
+ },
172
+ async requestMotionPermission() {
173
+ return motion.requestPermission();
174
+ },
175
+ async startMotionSensors() {
176
+ await motion.start();
177
+ },
178
+ stopMotionSensors() {
179
+ motion.stop();
180
+ },
181
+ startRecording(stream) {
182
+ config.recorder.startRecording(stream);
183
+ },
184
+ async checkVirtualCamera(videoTrack) {
185
+ metadata.updateCameraInfo(videoTrack);
186
+ return metadata.checkForVirtualCameraByLabel(videoTrack);
187
+ },
188
+ async performVirtualCameraCheck() {
189
+ const output = {
190
+ canvas: null,
191
+ itr: null,
192
+ skipped: null
193
+ };
194
+ await config.wasmUtil.poc(output);
195
+ if (output?.skipped === false) config.wasmUtil.setZc(output?.itr === true ? "FAIL" : "PASS");
196
+ },
197
+ async performCapture(sessionToken, imageData) {
198
+ let recordingId = null;
199
+ if (config.recorder.isRecording) {
200
+ const result = await config.recorder.stopRecording(10, (base64) => config.wasmUtil.encryptImage(base64), (buffer) => config.wasmUtil.ckvcks(buffer));
201
+ try {
202
+ recordingId = await config.uploadVideo(result.encryptedVideo, sessionToken);
203
+ } catch (error) {
204
+ console.error("[DeepsightService] Failed to upload video:", error);
205
+ }
206
+ }
207
+ await this.performVirtualCameraCheck();
208
+ await metadata.analyzeFrame(imageData);
209
+ const motionStatus = motion.check();
210
+ metadata.setMotionStatus(motionStatus);
211
+ metadata.getCheck();
212
+ metadata.setBackgroundMode(false);
213
+ return {
214
+ metadata: metadata.getMetadata(),
215
+ recordingId
216
+ };
217
+ },
218
+ cleanup() {
219
+ motion.stop();
220
+ config.recorder.reset();
221
+ }
222
+ };
223
+ }
224
+
225
+ //#endregion
226
+ //#region src/internal/recordings/recordingsRepository.ts
227
+ async function createRecordingSession(type) {
228
+ return (await api.post(endpoints.recordingCreateSessionV2, { type })).data;
229
+ }
230
+ async function startRecording(params) {
231
+ return (await api.post(endpoints.recordingStartV2, {
232
+ videoRecordingId: params.videoRecordingId,
233
+ frameRate: 30,
234
+ outputMode: "COMPOSED",
235
+ resolution: params.resolution,
236
+ type: params.type,
237
+ hasAudio: params.hasAudio ?? false
238
+ })).data;
239
+ }
240
+ async function stopRecording(videoRecordingId) {
241
+ return (await api.post(endpoints.recordingStopV2, { videoRecordingId })).data;
242
+ }
243
+ async function uploadDeepsightVideo(encryptedVideo, token) {
244
+ try {
245
+ return (await api.post(endpoints.deepsightVideoImport, {
246
+ video: encryptedVideo,
247
+ type: "selfie"
248
+ }, { headers: { "X-Incode-Hardware-Id": token } })).data.recordingId ?? "";
249
+ } catch (error) {
250
+ console.error("Error uploading deepsight video:", error);
251
+ return "";
252
+ }
253
+ }
254
+
255
+ //#endregion
256
+ export { createDeepsightService as a, uploadDeepsightVideo as i, startRecording as n, stopRecording as r, createRecordingSession as t };