@privateid/ultrapass-web-sdk 1.3.1 → 1.3.2-1300478

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 (216) hide show
  1. package/README.md +75 -75
  2. package/dist/apiUtils.d.ts +46 -46
  3. package/dist/apiUtils.js +922 -922
  4. package/dist/application/index.d.ts +7 -7
  5. package/dist/application/index.js +27 -27
  6. package/dist/application/modules/core/document/DocumentService.d.ts +22 -22
  7. package/dist/application/modules/core/document/DocumentService.js +254 -254
  8. package/dist/application/modules/core/document/document.constants.d.ts +15 -15
  9. package/dist/application/modules/core/document/document.constants.js +21 -21
  10. package/dist/application/modules/core/document/document.domain.d.ts +7 -7
  11. package/dist/application/modules/core/document/document.domain.js +1 -1
  12. package/dist/application/modules/core/document/document.types.d.ts +17 -17
  13. package/dist/application/modules/core/document/document.types.js +1 -1
  14. package/dist/application/modules/core/document/document.utils.d.ts +3 -3
  15. package/dist/application/modules/core/document/document.utils.js +58 -58
  16. package/dist/application/modules/core/document/index.d.ts +3 -3
  17. package/dist/application/modules/core/document/index.js +1 -1
  18. package/dist/application/modules/core/face/FaceService.d.ts +33 -33
  19. package/dist/application/modules/core/face/FaceService.js +228 -221
  20. package/dist/application/modules/core/face/FaceService.js.map +1 -1
  21. package/dist/application/modules/core/face/face.constants.d.ts +53 -53
  22. package/dist/application/modules/core/face/face.constants.js +53 -53
  23. package/dist/application/modules/core/face/face.domain.d.ts +10 -10
  24. package/dist/application/modules/core/face/face.domain.js +1 -1
  25. package/dist/application/modules/core/face/face.types.d.ts +41 -38
  26. package/dist/application/modules/core/face/face.types.js +1 -1
  27. package/dist/application/modules/core/face/face.utils.d.ts +15 -15
  28. package/dist/application/modules/core/face/face.utils.js +101 -101
  29. package/dist/application/modules/core/face/index.d.ts +3 -3
  30. package/dist/application/modules/core/face/index.js +1 -1
  31. package/dist/application/modules/global/shared.constants.d.ts +2 -2
  32. package/dist/application/modules/global/shared.constants.js +2 -2
  33. package/dist/application/modules/global/shared.utils.d.ts +25 -25
  34. package/dist/application/modules/global/shared.utils.js +100 -100
  35. package/dist/application/modules/global/shared.utils.js.map +1 -1
  36. package/dist/application/modules/internal/feature-flag/LDFeatureFlagService.d.ts +9 -0
  37. package/dist/application/modules/internal/feature-flag/LDFeatureFlagService.js +32 -0
  38. package/dist/application/modules/internal/feature-flag/LDFeatureFlagService.js.map +1 -0
  39. package/dist/application/modules/internal/feature-flag/feature-flag-init.d.ts +11 -0
  40. package/dist/application/modules/internal/feature-flag/feature-flag-init.js +24 -0
  41. package/dist/application/modules/internal/feature-flag/feature-flag-init.js.map +1 -0
  42. package/dist/application/modules/internal/feature-flag/feature-flag.domain.d.ts +10 -0
  43. package/dist/application/modules/internal/feature-flag/feature-flag.domain.js +7 -0
  44. package/dist/application/modules/internal/feature-flag/feature-flag.domain.js.map +1 -0
  45. package/dist/application/modules/internal/feature-flag/featureFlagInit.d.ts +11 -0
  46. package/dist/application/modules/internal/feature-flag/featureFlagInit.js +44 -0
  47. package/dist/application/modules/internal/feature-flag/featureFlagInit.js.map +1 -0
  48. package/dist/application/modules/internal/feature-flag/index.d.ts +2 -0
  49. package/dist/application/modules/internal/feature-flag/index.js +3 -0
  50. package/dist/application/modules/internal/feature-flag/index.js.map +1 -0
  51. package/dist/application/modules/internal/shared/index.d.ts +2 -0
  52. package/dist/application/modules/internal/shared/index.js +3 -0
  53. package/dist/application/modules/internal/shared/index.js.map +1 -0
  54. package/dist/application/modules/internal/shared/shared.constants.d.ts +2 -0
  55. package/dist/application/modules/internal/shared/shared.constants.js +3 -0
  56. package/dist/application/modules/internal/shared/shared.constants.js.map +1 -0
  57. package/dist/application/modules/internal/shared/shared.utils.d.ts +44 -0
  58. package/dist/application/modules/internal/shared/shared.utils.js +204 -0
  59. package/dist/application/modules/internal/shared/shared.utils.js.map +1 -0
  60. package/dist/application/modules/internal/wasm-orchestrator/WasmOrchestratorService.d.ts +28 -0
  61. package/dist/application/modules/internal/wasm-orchestrator/WasmOrchestratorService.js +380 -0
  62. package/dist/application/modules/internal/wasm-orchestrator/WasmOrchestratorService.js.map +1 -0
  63. package/dist/application/modules/internal/wasm-orchestrator/index.d.ts +6 -0
  64. package/dist/application/modules/internal/wasm-orchestrator/index.js +9 -0
  65. package/dist/application/modules/internal/wasm-orchestrator/index.js.map +1 -0
  66. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.constants.d.ts +28 -0
  67. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.constants.js +35 -0
  68. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.constants.js.map +1 -0
  69. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.domain.d.ts +51 -0
  70. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.domain.js +2 -0
  71. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.domain.js.map +1 -0
  72. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.types.d.ts +142 -0
  73. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.types.js +2 -0
  74. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.types.js.map +1 -0
  75. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.utils.d.ts +86 -0
  76. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.utils.js +201 -0
  77. package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.utils.js.map +1 -0
  78. package/dist/application/modules/support/camera/CameraServiceFactory.d.ts +10 -10
  79. package/dist/application/modules/support/camera/CameraServiceFactory.js +33 -33
  80. package/dist/application/modules/support/camera/CameraServiceFactory.js.map +1 -1
  81. package/dist/application/modules/support/camera/camera.constants.d.ts +9 -9
  82. package/dist/application/modules/support/camera/camera.constants.js +48 -48
  83. package/dist/application/modules/support/camera/camera.domain.d.ts +15 -15
  84. package/dist/application/modules/support/camera/camera.domain.js +1 -1
  85. package/dist/application/modules/support/camera/camera.types.d.ts +42 -42
  86. package/dist/application/modules/support/camera/camera.types.js +10 -10
  87. package/dist/application/modules/support/camera/camera.utils.d.ts +157 -157
  88. package/dist/application/modules/support/camera/camera.utils.js +623 -623
  89. package/dist/application/modules/support/camera/index.d.ts +24 -24
  90. package/dist/application/modules/support/camera/index.js +27 -27
  91. package/dist/application/modules/support/camera/services/BaseCameraService.d.ts +41 -41
  92. package/dist/application/modules/support/camera/services/BaseCameraService.js +278 -278
  93. package/dist/application/modules/support/camera/services/DesktopCameraService.d.ts +5 -5
  94. package/dist/application/modules/support/camera/services/DesktopCameraService.js +46 -46
  95. package/dist/application/modules/support/camera/services/FirefoxCameraService.d.ts +5 -5
  96. package/dist/application/modules/support/camera/services/FirefoxCameraService.js +46 -46
  97. package/dist/application/modules/support/camera/services/MacSafariCameraService.d.ts +5 -5
  98. package/dist/application/modules/support/camera/services/MacSafariCameraService.js +47 -47
  99. package/dist/application/modules/support/camera/services/MobileCameraService.d.ts +5 -5
  100. package/dist/application/modules/support/camera/services/MobileCameraService.js +133 -133
  101. package/dist/application/modules/support/engine/EngineService.d.ts +15 -0
  102. package/dist/application/modules/support/engine/EngineService.js +106 -0
  103. package/dist/application/modules/support/engine/EngineService.js.map +1 -0
  104. package/dist/application/modules/support/engine/engine.constants.d.ts +33 -0
  105. package/dist/application/modules/support/engine/engine.constants.js +35 -0
  106. package/dist/application/modules/support/engine/engine.constants.js.map +1 -0
  107. package/dist/application/modules/support/engine/engine.domain.d.ts +23 -0
  108. package/dist/application/modules/support/engine/engine.domain.js +2 -0
  109. package/dist/application/modules/support/engine/engine.domain.js.map +1 -0
  110. package/dist/application/modules/support/engine/engine.types.d.ts +32 -0
  111. package/dist/application/modules/support/engine/engine.types.js +2 -0
  112. package/dist/application/modules/support/engine/engine.types.js.map +1 -0
  113. package/dist/application/modules/support/engine/engine.utils.d.ts +65 -0
  114. package/dist/application/modules/support/engine/engine.utils.js +135 -0
  115. package/dist/application/modules/support/engine/engine.utils.js.map +1 -0
  116. package/dist/application/modules/support/engine/index.d.ts +3 -0
  117. package/dist/application/modules/support/engine/index.js +2 -0
  118. package/dist/application/modules/support/engine/index.js.map +1 -0
  119. package/dist/application/modules/support/permissions/PermissionsService.d.ts +55 -55
  120. package/dist/application/modules/support/permissions/PermissionsService.js +183 -183
  121. package/dist/application/modules/support/permissions/index.d.ts +4 -4
  122. package/dist/application/modules/support/permissions/index.js +2 -2
  123. package/dist/application/modules/support/permissions/permission.utils.d.ts +6 -6
  124. package/dist/application/modules/support/permissions/permission.utils.js +33 -33
  125. package/dist/application/modules/support/permissions/permissions.domain.d.ts +6 -6
  126. package/dist/application/modules/support/permissions/permissions.domain.js +1 -1
  127. package/dist/application/modules/support/permissions/permissions.types.d.ts +9 -9
  128. package/dist/application/modules/support/permissions/permissions.types.js +1 -1
  129. package/dist/application/modules/support/wasm/WasmService.d.ts +25 -25
  130. package/dist/application/modules/support/wasm/WasmService.js +156 -155
  131. package/dist/application/modules/support/wasm/WasmService.js.map +1 -1
  132. package/dist/application/modules/support/wasm/index.d.ts +6 -6
  133. package/dist/application/modules/support/wasm/index.js +8 -8
  134. package/dist/application/modules/support/wasm/wasm.constants.d.ts +78 -78
  135. package/dist/application/modules/support/wasm/wasm.constants.js +86 -86
  136. package/dist/application/modules/support/wasm/wasm.domain.d.ts +52 -52
  137. package/dist/application/modules/support/wasm/wasm.domain.js +1 -1
  138. package/dist/application/modules/support/wasm/wasm.types.d.ts +119 -118
  139. package/dist/application/modules/support/wasm/wasm.types.js +1 -1
  140. package/dist/application/modules/support/wasm/wasm.utils.d.ts +88 -88
  141. package/dist/application/modules/support/wasm/wasm.utils.js +243 -243
  142. package/dist/application/modules/support/wasm-orchestrator/WasmOrchestratorService.d.ts +28 -0
  143. package/dist/application/modules/support/wasm-orchestrator/WasmOrchestratorService.js +324 -0
  144. package/dist/application/modules/support/wasm-orchestrator/WasmOrchestratorService.js.map +1 -0
  145. package/dist/application/modules/support/wasm-orchestrator/index.d.ts +6 -0
  146. package/dist/application/modules/support/wasm-orchestrator/index.js +9 -0
  147. package/dist/application/modules/support/wasm-orchestrator/index.js.map +1 -0
  148. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.constants.d.ts +36 -0
  149. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.constants.js +44 -0
  150. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.constants.js.map +1 -0
  151. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.domain.d.ts +47 -0
  152. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.domain.js +2 -0
  153. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.domain.js.map +1 -0
  154. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.types.d.ts +136 -0
  155. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.types.js +2 -0
  156. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.types.js.map +1 -0
  157. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.utils.d.ts +91 -0
  158. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.utils.js +250 -0
  159. package/dist/application/modules/support/wasm-orchestrator/wasm-orchestrator.utils.js.map +1 -0
  160. package/dist/application/workers/index.d.ts +42 -42
  161. package/dist/application/workers/index.js +8 -8
  162. package/dist/application/workers/wasm/WasmWorkerService.d.ts +66 -0
  163. package/dist/application/workers/wasm/WasmWorkerService.js +801 -0
  164. package/dist/application/workers/wasm/WasmWorkerService.js.map +1 -0
  165. package/dist/application/workers/wasm/index.d.ts +4 -0
  166. package/dist/application/workers/wasm/index.js +9 -0
  167. package/dist/application/workers/wasm/index.js.map +1 -0
  168. package/dist/application/workers/wasm/wasm-worker.constants.d.ts +5 -0
  169. package/dist/application/workers/wasm/wasm-worker.constants.js +6 -0
  170. package/dist/application/workers/wasm/wasm-worker.constants.js.map +1 -0
  171. package/dist/application/workers/wasm/wasm-worker.domain.d.ts +99 -0
  172. package/dist/application/workers/wasm/wasm-worker.domain.js +2 -0
  173. package/dist/application/workers/wasm/wasm-worker.domain.js.map +1 -0
  174. package/dist/application/workers/wasm/wasm-worker.types.d.ts +88 -0
  175. package/dist/application/workers/wasm/wasm-worker.types.js +2 -0
  176. package/dist/application/workers/wasm/wasm-worker.types.js.map +1 -0
  177. package/dist/application/workers/wasm/wasm-worker.utils.d.ts +10 -0
  178. package/dist/application/workers/wasm/wasm-worker.utils.js +130 -0
  179. package/dist/application/workers/wasm/wasm-worker.utils.js.map +1 -0
  180. package/dist/buildConfig.d.ts +3 -0
  181. package/dist/buildConfig.js +7 -0
  182. package/dist/buildConfig.js.map +1 -0
  183. package/dist/cameraUtils.d.ts +77 -77
  184. package/dist/cameraUtils.js +361 -361
  185. package/dist/constants.d.ts +9 -9
  186. package/dist/constants.js +13 -13
  187. package/dist/createCallback.d.ts +56 -56
  188. package/dist/createCallback.js +332 -331
  189. package/dist/createCallback.js.map +1 -1
  190. package/dist/dbUtils.d.ts +14 -14
  191. package/dist/dbUtils.js +148 -148
  192. package/dist/envUtils.d.ts +4 -4
  193. package/dist/envUtils.js +16 -16
  194. package/dist/faceModule.d.ts +196 -196
  195. package/dist/faceModule.js +978 -978
  196. package/dist/featureFlagInit.d.ts +11 -0
  197. package/dist/featureFlagInit.js +44 -0
  198. package/dist/featureFlagInit.js.map +1 -0
  199. package/dist/index.d.ts +38 -38
  200. package/dist/index.js +82 -82
  201. package/dist/main.d.ts +30 -30
  202. package/dist/main.js +84 -84
  203. package/dist/types.d.ts +139 -139
  204. package/dist/types.js +77 -77
  205. package/dist/utils.d.ts +84 -84
  206. package/dist/utils.js +580 -580
  207. package/package.json +102 -102
  208. package/wasm/ultra/nosimd/{25.11.13-1357710 → 26.01.08-1300478}/privid_fhe_uber.js +18 -18
  209. package/wasm/ultra/nosimd/{25.11.13-1357710 → 26.01.08-1300478}/privid_fhe_uber.wasm +0 -0
  210. package/wasm/ultra/nosimd/version.json +2 -2
  211. package/wasm/ultra/simd/{25.11.13-1357710 → 26.01.08-1300478}/privid_fhe_uber.js +18 -18
  212. package/wasm/ultra/simd/{25.11.13-1357710 → 26.01.08-1300478}/privid_fhe_uber.wasm +0 -0
  213. package/wasm/ultra/simd/version.json +2 -2
  214. package/workers/comlink.min.js +7 -7
  215. package/workers/comlink.min.js.map +1 -1
  216. package/workers/wasm.worker.js +936 -924
@@ -0,0 +1,204 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { detect } from 'detect-browser';
11
+ import { simd } from 'wasm-feature-detect';
12
+ import { DEBUG_TYPES_WITH_IMAGES } from '../../core/document/document.constants';
13
+ import { FeatureFlagKey } from '../feature-flag';
14
+ // Singleton instance for feature flag service
15
+ let featureFlagServiceInstance = null;
16
+ /**
17
+ Saving the feature flag service instance for shared utilities
18
+ */
19
+ export function setFeatureFlagService(service) {
20
+ featureFlagServiceInstance = service;
21
+ }
22
+ export function iOS() {
23
+ return ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform);
24
+ }
25
+ export function getDebugType() {
26
+ const queryParams = new URLSearchParams(window.location.search);
27
+ const searchedParameterResult = queryParams.get('debug_type');
28
+ if (searchedParameterResult) {
29
+ return searchedParameterResult;
30
+ }
31
+ // keep the environments !== 'prod' in debug mode 3
32
+ const environment = getEnvironment();
33
+ if (environment !== 'prod') {
34
+ return '3';
35
+ }
36
+ const debugTypeFromFlag = featureFlagServiceInstance.evaluateFlag(FeatureFlagKey.DebugType);
37
+ return (debugTypeFromFlag === null || debugTypeFromFlag === void 0 ? void 0 : debugTypeFromFlag.toString()) || '0';
38
+ }
39
+ export function printLogs(message, data, type = 'LOG') {
40
+ const errorLogs = ['1', '2', '3', '901', '902', '903'];
41
+ const warningLogs = ['2', '3', '902', '903'];
42
+ const allLogs = ['3', '903', '904'];
43
+ // const debugType = getDebugType();
44
+ const debugType = '3'; // Force all logs for now
45
+ if (type === 'ERROR' && errorLogs.includes(debugType)) {
46
+ console.error('DEBUG_SDK', message, data);
47
+ }
48
+ else if (type === 'WARN' && warningLogs.includes(debugType)) {
49
+ console.warn('DEBUG_SDK', message, data);
50
+ }
51
+ else if (type === 'LOG' && allLogs.includes(debugType)) {
52
+ console.log('DEBUG_SDK', message, data);
53
+ }
54
+ }
55
+ export function getDefaultCameraDeviceId() {
56
+ return localStorage.getItem('defaultDeviceId');
57
+ }
58
+ /**
59
+ * Set default camera device ID in localStorage
60
+ */
61
+ export function setDefaultCameraDeviceId(deviceId) {
62
+ localStorage.setItem('defaultDeviceId', deviceId);
63
+ }
64
+ /**
65
+ * Check if current platform is mobile using detect-browser
66
+ */
67
+ export function isMobilePlatform() {
68
+ const { os } = detect();
69
+ return iOS() || ['iOS', 'android', 'Android OS'].includes(os);
70
+ }
71
+ /**
72
+ * Check if current device is mobile using user agent detection
73
+ * More comprehensive than isMobilePlatform but uses UA sniffing
74
+ */
75
+ export function isMobileDevice() {
76
+ const { os } = detect();
77
+ return ['iOS', 'Android OS', 'Windows Mobile'].includes(os);
78
+ }
79
+ // TODO: remove this from shared and leave only in wasm.utils
80
+ /**
81
+ * Get SIMD support status
82
+ */
83
+ export function getIsSIMD() {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ try {
86
+ return yield simd();
87
+ }
88
+ catch (error) {
89
+ return false;
90
+ }
91
+ });
92
+ }
93
+ /**
94
+ * Check if debug mode should create images
95
+ */
96
+ export function shouldCreateDebugImages() {
97
+ const debugType = getDebugType();
98
+ return DEBUG_TYPES_WITH_IMAGES.includes(debugType);
99
+ }
100
+ /**
101
+ * Create and download images for debugging purposes
102
+ */
103
+ export function createDebugImages(images, title, isEnrollFlow) {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ if (!shouldCreateDebugImages()) {
106
+ return;
107
+ }
108
+ try {
109
+ const promises = images.map((imageData) => __awaiter(this, void 0, void 0, function* () {
110
+ const canvas = document.createElement('canvas');
111
+ canvas.width = imageData.width;
112
+ canvas.height = imageData.height;
113
+ const context = canvas.getContext('2d');
114
+ context.putImageData(imageData, 0, 0);
115
+ const blob = yield new Promise((resolve) => canvas.toBlob(resolve, 'image/jpeg'));
116
+ const url = URL.createObjectURL(blob);
117
+ return { url, blob };
118
+ }));
119
+ const data = yield Promise.all(promises);
120
+ const a = document.createElement('a');
121
+ for (let i = 0; i < data.length; i++) {
122
+ yield new Promise((resolve) => {
123
+ a.href = data[i].url;
124
+ a.type = 'image/png';
125
+ a.download = `${title}_${isEnrollFlow ? 'enroll' : 'predict'}.png`;
126
+ document.body.appendChild(a);
127
+ a.click();
128
+ setTimeout(() => {
129
+ document.body.removeChild(a);
130
+ URL.revokeObjectURL(data[i].url);
131
+ resolve();
132
+ }, 1000);
133
+ });
134
+ }
135
+ printLogs('[face.utils] Debug images created and downloaded', { title, count: images.length });
136
+ }
137
+ catch (error) {
138
+ printLogs('[face.utils] Error creating debug images', error, 'ERROR');
139
+ }
140
+ });
141
+ }
142
+ /**
143
+ * Convert canvas/image data to base64
144
+ */
145
+ export function imageDataToBase64(imageData) {
146
+ return new Promise((resolve) => {
147
+ const canvas = document.createElement('canvas');
148
+ canvas.width = imageData.width;
149
+ canvas.height = imageData.height;
150
+ const context = canvas.getContext('2d');
151
+ context.putImageData(imageData, 0, 0);
152
+ canvas.toBlob((blob) => {
153
+ const reader = new FileReader();
154
+ reader.onloadend = () => resolve(reader.result);
155
+ reader.readAsDataURL(blob);
156
+ });
157
+ });
158
+ }
159
+ /**
160
+ * Wrapper for callback that creates debug images before calling the original callback
161
+ */
162
+ export function wrapCallbackWithImageCreation(callback, imageData, isEnrollFlow) {
163
+ return (result) => __awaiter(this, void 0, void 0, function* () {
164
+ var _a, _b;
165
+ if (shouldCreateDebugImages()) {
166
+ const title = `original_${(_a = result === null || result === void 0 ? void 0 : result.face_validation_status) !== null && _a !== void 0 ? _a : 'unknown'}_${(_b = result === null || result === void 0 ? void 0 : result.antispoof_status) !== null && _b !== void 0 ? _b : 'unknown'}`;
167
+ yield createDebugImages([imageData], title, isEnrollFlow);
168
+ }
169
+ callback(result);
170
+ });
171
+ }
172
+ export function downloadImageFromBase64(base64Data, filename) {
173
+ const debugType = getDebugType();
174
+ if (!(debugType === '903' || debugType === '904')) {
175
+ return false;
176
+ }
177
+ try {
178
+ // Check if base64Data already has the data URL prefix
179
+ const dataUrl = base64Data.startsWith('data:') ? base64Data : `data:image/jpeg;base64,${base64Data}`;
180
+ const a = document.createElement('a');
181
+ a.href = dataUrl;
182
+ a.download = `${filename}.jpg`;
183
+ document.body.appendChild(a);
184
+ a.click();
185
+ document.body.removeChild(a);
186
+ printLogs('[face.utils] Debug cropped image downloaded', filename);
187
+ return true;
188
+ }
189
+ catch (error) {
190
+ printLogs('[face.utils] Error downloading debug image', error, 'ERROR');
191
+ return false;
192
+ }
193
+ }
194
+ let environment;
195
+ export const setEnvVariables = (env) => {
196
+ environment = env;
197
+ };
198
+ const getEnvironment = () => {
199
+ if (environment) {
200
+ return environment;
201
+ }
202
+ return null;
203
+ };
204
+ //# sourceMappingURL=shared.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.utils.js","sourceRoot":"","sources":["../../../../../src/application/modules/internal/shared/shared.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { WasmOrchestrator } from './wasm-orchestrator.domain';
2
+ import { WasmLoadResult, WasmLoadModuleParams, EncryptionResult, WasmResultCallback, CompareEmbeddingsParams, ScanFrontPhotoIdParams, ScanPassportParams, ScanBackPhotoIdParams } from './wasm-orchestrator.types';
3
+ import { FeatureFlagProvider } from '../feature-flag';
4
+ export declare class WasmOrchestratorService implements WasmOrchestrator {
5
+ private hasSimdSupport;
6
+ private wasmWorkerService?;
7
+ private wasmWorkerServiceInitialized;
8
+ private featureFlagService;
9
+ private workerFunctions;
10
+ constructor(featureFlagService: FeatureFlagProvider);
11
+ /**
12
+ * Lazy initialization of logger - creates logger only when first needed
13
+ */
14
+ private getWasmWorkerService;
15
+ initialize(): Promise<void>;
16
+ loadModule(params: WasmLoadModuleParams): Promise<WasmLoadResult>;
17
+ checkIfModelsLoaded: () => Promise<boolean>;
18
+ enroll(imageData: ImageData, config: string, callback: WasmResultCallback, onAntiSpoofProgress?: any): Promise<boolean>;
19
+ predict: (images: ImageData[], isSimd: boolean, config: string, callback: WasmResultCallback, onAntiSpoofProgress?: (...args: unknown[]) => void, onWasmCroppingCallback?: (base64Image: string) => void) => Promise<any>;
20
+ estimateAge: (images: ImageData[], isSimd: boolean, config: string, callback: WasmResultCallback, onAntiSpoofProgress?: (...args: unknown[]) => void, onWasmCroppingCallback?: (base64Image: string) => void) => Promise<boolean>;
21
+ compareEmbeddings: (params: CompareEmbeddingsParams) => Promise<boolean>;
22
+ scanFrontPhotoIdDocument: (params: ScanFrontPhotoIdParams) => Promise<boolean>;
23
+ scanBackPhotoIdDocument: (params: ScanBackPhotoIdParams) => Promise<boolean>;
24
+ scanPassport: (params: ScanPassportParams) => Promise<boolean>;
25
+ extractDocumentOCR: (imageData: ImageData | string, config: string, callback: WasmResultCallback) => Promise<boolean>;
26
+ pkiEncrypt(payload: unknown): Promise<EncryptionResult>;
27
+ freeWasmMemory(): Promise<boolean>;
28
+ }
@@ -0,0 +1,380 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ /* eslint-disable lines-between-class-members */
11
+ /* eslint-disable import/prefer-default-export */
12
+ import { proxy } from 'comlink';
13
+ import { checkLoadSimdBuild, checkSimdSupport, createCallbackError } from './wasm-orchestrator.utils';
14
+ import { getDebugType, printLogs } from '../shared';
15
+ import { WasmWorkerService } from '../../../workers/wasm';
16
+ import { isLoad, ultraEnroll, ultraPredict, pkiEncrypt, ultraScanBackDocument, ultraScanFrontDocument, ultraCompareEmbeddings, ultraAgeEstimate, ultraDocumentOcr, freeMemory, checkIfModelsLoaded, } from '../../../../utils';
17
+ import { FeatureFlagKey } from '../feature-flag';
18
+ export class WasmOrchestratorService {
19
+ constructor(featureFlagService) {
20
+ this.hasSimdSupport = false;
21
+ this.wasmWorkerServiceInitialized = false;
22
+ this.checkIfModelsLoaded = () => __awaiter(this, void 0, void 0, function* () {
23
+ var _a;
24
+ if (!((_a = this.workerFunctions) === null || _a === void 0 ? void 0 : _a.checkIfModelsLoaded)) {
25
+ throw new Error('[WasmOrchestratorService] WASM worker not initialized');
26
+ }
27
+ try {
28
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.EngineServiceWebWorker);
29
+ if (isNewWebWorkerRefactoringEnabled) {
30
+ printLogs('[WasmOrchestratorService] checkIfModelsLoaded using New Web Worker', '');
31
+ const wasmWorker = yield this.getWasmWorkerService();
32
+ const areModelsLoaded = yield wasmWorker.checkModelsAreLoaded();
33
+ printLogs('[WasmOrchestratorService] checkIfModelsLoaded areModelsLodaded', areModelsLoaded);
34
+ return areModelsLoaded;
35
+ }
36
+ printLogs('[WasmOrchestratorService] checkIfModelsLoaded using Legacy Web Worker', '');
37
+ const areModelsLoaded = yield this.workerFunctions.checkIfModelsLoaded();
38
+ printLogs('[WasmOrchestratorService] checkIfModelsLoaded areModelsLodaded', areModelsLoaded);
39
+ return areModelsLoaded;
40
+ }
41
+ catch (error) {
42
+ return false;
43
+ }
44
+ });
45
+ this.predict = (images, isSimd, config, callback, onAntiSpoofProgress, onWasmCroppingCallback) => __awaiter(this, void 0, void 0, function* () {
46
+ var _b;
47
+ if (!((_b = this.workerFunctions) === null || _b === void 0 ? void 0 : _b.ultraPredict)) {
48
+ throw new Error('[WasmOrchestratorService] WASM worker not initialized');
49
+ }
50
+ try {
51
+ printLogs('[WasmOrchestratorService] predict config', config);
52
+ printLogs('[WasmOrchestratorService] onAntiSpoofProgress received:', onAntiSpoofProgress ? 'YES ✅' : 'NO ❌');
53
+ printLogs('[WasmService] onWasmCroppingCallback received:', onWasmCroppingCallback ? 'YES ✅' : 'NO ❌');
54
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.FaceServiceWebWorker);
55
+ if (isNewWebWorkerRefactoringEnabled) {
56
+ printLogs('[WasmOrchestratorService] predict using New Web Worker', '');
57
+ const wasmWorker = yield this.getWasmWorkerService();
58
+ return wasmWorker.ultraPredict({
59
+ originalImages: images,
60
+ simd: isSimd,
61
+ config,
62
+ }, callback);
63
+ }
64
+ printLogs('[WasmOrchestratorService] predict using Legacy Web Worker', '');
65
+ return this.workerFunctions.ultraPredict(images, isSimd, config, callback, onAntiSpoofProgress, onWasmCroppingCallback);
66
+ }
67
+ catch (error) {
68
+ printLogs('[WasmOrchestratorService] predict error:', error, 'ERROR');
69
+ return false;
70
+ }
71
+ });
72
+ this.estimateAge = (images, isSimd, config, callback, onAntiSpoofProgress, onWasmCroppingCallback) => __awaiter(this, void 0, void 0, function* () {
73
+ var _c;
74
+ if (!((_c = this.workerFunctions) === null || _c === void 0 ? void 0 : _c.ultraAgeEstimate)) {
75
+ throw new Error('[WasmOrchestratorService] WASM worker not initialized');
76
+ }
77
+ try {
78
+ printLogs('[WasmOrchestratorService] estimateAge config', config);
79
+ printLogs('[WasmOrchestratorService] onAntiSpoofProgress received:', onAntiSpoofProgress ? 'YES ✅' : 'NO ❌');
80
+ printLogs('[WasmService] onWasmCroppingCallback received:', onWasmCroppingCallback ? 'YES ✅' : 'NO ❌');
81
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.FaceServiceWebWorker);
82
+ if (isNewWebWorkerRefactoringEnabled) {
83
+ printLogs('[WasmOrchestratorService] estimateAge using New Web Worker', '');
84
+ const wasmWorker = yield this.getWasmWorkerService();
85
+ return wasmWorker.ultraAgeEstimate({
86
+ originalImages: images,
87
+ simd: isSimd,
88
+ config,
89
+ }, callback, onAntiSpoofProgress, onWasmCroppingCallback);
90
+ }
91
+ printLogs('[WasmOrchestratorService] estimateAge using Legacy Web Worker', '');
92
+ return this.workerFunctions.ultraAgeEstimate(images, isSimd, config, callback, onAntiSpoofProgress, onWasmCroppingCallback);
93
+ }
94
+ catch (error) {
95
+ printLogs('[WasmOrchestratorService] estimateAge error:', error, 'ERROR');
96
+ return false;
97
+ }
98
+ });
99
+ this.compareEmbeddings = (params) => __awaiter(this, void 0, void 0, function* () {
100
+ try {
101
+ printLogs('[WasmOrchestratorService] compareEmbeddings config', params.config);
102
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.DocumentServiceWebWorker);
103
+ if (isNewWebWorkerRefactoringEnabled) {
104
+ printLogs('[WasmOrchestratorService] compareEmbeddings using New Web Worker', '');
105
+ const wasmWorker = yield this.getWasmWorkerService();
106
+ const proxiedResultCallback = proxy(params.callback);
107
+ return wasmWorker.ultraCompareEmbeddings({
108
+ encryptedEmbeddingsA: params.documentEmbeddings,
109
+ encryptedEmbeddingsB: params.enrollEmbeddings,
110
+ config: JSON.stringify(params.config),
111
+ }, proxiedResultCallback);
112
+ }
113
+ printLogs('[WasmOrchestratorService] compareEmbeddings using Legacy Web Worker', '');
114
+ return this.workerFunctions.ultraCompareEmbeddings(params.documentEmbeddings, params.enrollEmbeddings, JSON.stringify(params.config), params.callback);
115
+ }
116
+ catch (error) {
117
+ printLogs('[WasmOrchestratorService] compareEmbeddings error:', error, 'ERROR');
118
+ return false;
119
+ }
120
+ });
121
+ this.scanFrontPhotoIdDocument = (params) => __awaiter(this, void 0, void 0, function* () {
122
+ var _d;
123
+ if (!((_d = this.workerFunctions) === null || _d === void 0 ? void 0 : _d.ultraScanFrontDocument)) {
124
+ throw new Error('[WasmOrchestratorService] WASM worker not initialized');
125
+ }
126
+ try {
127
+ printLogs('[WasmOrchestratorService] scanFrontPhotoIdDocument config', params.config);
128
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.DocumentServiceWebWorker);
129
+ if (isNewWebWorkerRefactoringEnabled) {
130
+ printLogs('[WasmOrchestratorService] scanFrontPhotoIdDocument using New Web Worker', '');
131
+ const wasmWorker = yield this.getWasmWorkerService();
132
+ return wasmWorker.ultraScanFrontDocument({
133
+ imageInput: params.imageData,
134
+ simd: this.hasSimdSupport,
135
+ config: params.config,
136
+ }, params.callback);
137
+ }
138
+ printLogs('[WasmOrchestratorService] scanFrontPhotoIdDocument using Legacy Web Worker', '');
139
+ return this.workerFunctions.ultraScanFrontDocument(params.imageData, this.hasSimdSupport, params.config, params.callback);
140
+ }
141
+ catch (error) {
142
+ printLogs('[WasmOrchestratorService] scanFrontPhotoIdDocument error:', error, 'ERROR');
143
+ return false;
144
+ }
145
+ });
146
+ this.scanBackPhotoIdDocument = (params) => __awaiter(this, void 0, void 0, function* () {
147
+ try {
148
+ printLogs('[WasmOrchestratorService] scanBackPhotoIdDocument config', params.config);
149
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.DocumentServiceWebWorker);
150
+ if (isNewWebWorkerRefactoringEnabled) {
151
+ printLogs('[WasmOrchestratorService] scanBackPhotoIdDocument using New Web Worker', '');
152
+ const wasmWorker = yield this.getWasmWorkerService();
153
+ return wasmWorker.ultraScanBackDocument({
154
+ imageInput: params.imageData,
155
+ simd: params.isSimd,
156
+ config: params.config,
157
+ }, params.callback);
158
+ }
159
+ printLogs('[WasmOrchestratorService] scanBackPhotoIdDocument using Legacy Web Worker', '');
160
+ return this.workerFunctions.ultraScanBackDocument(params.imageData, params.isSimd, params.config, params.callback);
161
+ }
162
+ catch (error) {
163
+ printLogs('[WasmOrchestratorService] scanBackPhotoIdDocument error:', error, 'ERROR');
164
+ return false;
165
+ }
166
+ });
167
+ this.scanPassport = (params) => __awaiter(this, void 0, void 0, function* () {
168
+ try {
169
+ printLogs('[WasmOrchestratorService] scanPassport config', params.config);
170
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.DocumentServiceWebWorker);
171
+ if (isNewWebWorkerRefactoringEnabled) {
172
+ printLogs('[WasmOrchestratorService] scanPassport using New Web Worker', '');
173
+ const wasmWorker = yield this.getWasmWorkerService();
174
+ return wasmWorker.ultraScanFrontDocument({
175
+ imageInput: params.imageData,
176
+ simd: this.hasSimdSupport,
177
+ config: params.config,
178
+ }, params.callback);
179
+ }
180
+ printLogs('[WasmOrchestratorService] scanPassport using Legacy Web Worker', '');
181
+ return this.workerFunctions.ultraScanFrontDocument(params.imageData, this.hasSimdSupport, params.config, params.callback);
182
+ }
183
+ catch (error) {
184
+ printLogs('[WasmOrchestratorService] scanPassport error:', error, 'ERROR');
185
+ return false;
186
+ }
187
+ });
188
+ this.extractDocumentOCR = (imageData, config, callback) => __awaiter(this, void 0, void 0, function* () {
189
+ try {
190
+ printLogs('[WasmOrchestratorService] extractDocumentOCR config', config);
191
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.DocumentServiceWebWorker);
192
+ if (isNewWebWorkerRefactoringEnabled) {
193
+ printLogs('[WasmOrchestratorService] extractDocumentOCR using New Web Worker', '');
194
+ const wasmWorker = yield this.getWasmWorkerService();
195
+ return wasmWorker.ultraDocumentOcr({
196
+ imageInput: imageData,
197
+ config,
198
+ }, callback);
199
+ }
200
+ printLogs('[WasmOrchestratorService] extractDocumentOCR using Legacy Web Worker', '');
201
+ return this.workerFunctions.ultraDocumentOcr(imageData, config, callback);
202
+ }
203
+ catch (error) {
204
+ printLogs('[WasmOrchestratorService] extractDocumentOCR error:', error, 'ERROR');
205
+ return false;
206
+ }
207
+ });
208
+ // TODO: Bring worker functions to this service.
209
+ this.workerFunctions = {
210
+ isLoad,
211
+ ultraPredict,
212
+ pkiEncrypt,
213
+ ultraScanBackDocument,
214
+ ultraScanFrontDocument,
215
+ ultraCompareEmbeddings,
216
+ ultraDocumentOcr,
217
+ freeMemory,
218
+ ultraEnroll,
219
+ ultraAgeEstimate,
220
+ checkIfModelsLoaded,
221
+ };
222
+ this.featureFlagService = featureFlagService;
223
+ }
224
+ /**
225
+ * Lazy initialization of logger - creates logger only when first needed
226
+ */
227
+ getWasmWorkerService() {
228
+ return __awaiter(this, void 0, void 0, function* () {
229
+ if (!this.wasmWorkerServiceInitialized) {
230
+ this.wasmWorkerService = yield new WasmWorkerService();
231
+ this.wasmWorkerServiceInitialized = true;
232
+ }
233
+ if (!this.wasmWorkerService) {
234
+ throw new Error('[WasmOrchestratorService] Failed to initialize WasmWorkerService');
235
+ }
236
+ return this.wasmWorkerService;
237
+ });
238
+ }
239
+ initialize() {
240
+ return __awaiter(this, void 0, void 0, function* () {
241
+ this.hasSimdSupport = yield checkSimdSupport();
242
+ });
243
+ }
244
+ loadModule(params) {
245
+ var _a, _b;
246
+ return __awaiter(this, void 0, void 0, function* () {
247
+ if (!this.workerFunctions.isLoad) {
248
+ throw new Error('[WasmOrchestratorService] WASM worker not initialized');
249
+ }
250
+ try {
251
+ const shouldLoadSimdBuild = yield checkLoadSimdBuild();
252
+ const wasmErrorCallback = proxy(createCallbackError({ callback: params.wasmFailureCallback }));
253
+ const useNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.EngineServiceWebWorker);
254
+ if (useNewWebWorkerRefactoringEnabled) {
255
+ printLogs('[WasmOrchestratorService] loadModule using New Web Worker', '');
256
+ const wasmWorker = yield this.getWasmWorkerService();
257
+ // Remove non-cloneable data (functions) before passing to worker
258
+ // Functions cannot be cloned and will cause an error when passed to the worker via Comlink as an object property
259
+ const loaded = yield wasmWorker.loadModules({
260
+ simd: params.skipSimdCheck ? false : shouldLoadSimdBuild,
261
+ apiUrl: params.apiUrl,
262
+ sessionToken: params.sessionToken,
263
+ publicKey: params.publicKey,
264
+ debugType: getDebugType(),
265
+ cacheConfig: true,
266
+ useCdn: (_a = params.useCdn) !== null && _a !== void 0 ? _a : true,
267
+ shouldRegenerateSession: params.shouldRegenerateSession || false,
268
+ usageScenario: params.usageScenario || '',
269
+ cacheContent: params.cacheContent,
270
+ }, wasmErrorCallback);
271
+ printLogs('[WasmOrchestratorService] loadModule', loaded);
272
+ return {
273
+ support: true,
274
+ };
275
+ }
276
+ printLogs('[WasmOrchestratorService] loadModule using Legacy Web Worker', '');
277
+ const loaded = yield this.workerFunctions.isLoad(params.skipSimdCheck ? false : shouldLoadSimdBuild, params.apiUrl, params.sessionToken, params.publicKey, getDebugType(), true, params.timeout, (_b = params.useCdn) !== null && _b !== void 0 ? _b : true, params.shouldRegenerateSession || false, wasmErrorCallback, params.usageScenario || '', params.cacheContent);
278
+ printLogs('[WasmOrchestratorService] loadModule', loaded);
279
+ return {
280
+ support: true,
281
+ };
282
+ }
283
+ catch (error) {
284
+ printLogs('[WasmOrchestratorService] WasmWorkerService error:', error, 'ERROR');
285
+ return {
286
+ support: false,
287
+ message: `Failed to load WASM module: ${error.message}`,
288
+ };
289
+ }
290
+ });
291
+ }
292
+ enroll(imageData, config, callback, onAntiSpoofProgress) {
293
+ var _a;
294
+ return __awaiter(this, void 0, void 0, function* () {
295
+ if (!((_a = this.workerFunctions) === null || _a === void 0 ? void 0 : _a.ultraEnroll)) {
296
+ throw new Error('[WasmOrchestratorService] WASM worker not initialized');
297
+ }
298
+ try {
299
+ printLogs('[WasmOrchestratorService] enroll config', config);
300
+ printLogs('[WasmOrchestratorService] onAntiSpoofProgress received:', onAntiSpoofProgress ? 'YES ✅' : 'NO ❌');
301
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.FaceServiceWebWorker);
302
+ if (isNewWebWorkerRefactoringEnabled) {
303
+ printLogs('[WasmOrchestratorService] enroll using New Web Worker', '');
304
+ const wasmWorker = yield this.getWasmWorkerService();
305
+ return wasmWorker.ultraEnroll({
306
+ imageData,
307
+ simd: this.hasSimdSupport,
308
+ config,
309
+ }, callback, onAntiSpoofProgress);
310
+ }
311
+ printLogs('[WasmOrchestratorService] enroll using Legacy Web Worker', '');
312
+ return this.workerFunctions.ultraEnroll(imageData, this.hasSimdSupport, config, callback, onAntiSpoofProgress);
313
+ }
314
+ catch (error) {
315
+ printLogs('[WasmOrchestratorService] enroll error:', error, 'ERROR');
316
+ return false;
317
+ }
318
+ });
319
+ }
320
+ pkiEncrypt(payload) {
321
+ var _a;
322
+ return __awaiter(this, void 0, void 0, function* () {
323
+ if (!((_a = this.workerFunctions) === null || _a === void 0 ? void 0 : _a.pkiEncrypt)) {
324
+ throw new Error('[WasmOrchestratorService] WASM worker not initialized');
325
+ }
326
+ try {
327
+ printLogs('[WasmOrchestratorService] pkiEncrypt payload', payload);
328
+ const isNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.EngineServiceWebWorker);
329
+ if (isNewWebWorkerRefactoringEnabled) {
330
+ printLogs('[WasmOrchestratorService] pkiEncrypt using New Web Worker', '');
331
+ const wasmWorker = yield this.getWasmWorkerService();
332
+ const result = yield wasmWorker.pkiEncrypt({
333
+ payload: JSON.stringify(payload),
334
+ });
335
+ const parsedResult = typeof result === 'string' ? JSON.parse(result) : result;
336
+ printLogs('[WasmOrchestratorService] pkiEncrypt parsedResult', parsedResult);
337
+ return parsedResult;
338
+ }
339
+ printLogs('[WasmOrchestratorService] pkiEncrypt using Legacy Web Worker', '');
340
+ const result = yield this.workerFunctions.pkiEncrypt({
341
+ payload: JSON.stringify(payload),
342
+ });
343
+ const parsedResult = typeof result === 'string' ? JSON.parse(result) : result;
344
+ printLogs('[WasmOrchestratorService] pkiEncrypt parsedResult', parsedResult);
345
+ return parsedResult;
346
+ }
347
+ catch (error) {
348
+ printLogs('[WasmOrchestratorService] pkiEncrypt error:', error, 'ERROR');
349
+ return null;
350
+ }
351
+ });
352
+ }
353
+ freeWasmMemory() {
354
+ var _a;
355
+ return __awaiter(this, void 0, void 0, function* () {
356
+ if (!((_a = this.workerFunctions) === null || _a === void 0 ? void 0 : _a.freeMemory)) {
357
+ throw new Error('[WasmOrchestratorService] WASM worker not initialized');
358
+ }
359
+ try {
360
+ const useNewWebWorkerRefactoringEnabled = this.featureFlagService.evaluateFlag(FeatureFlagKey.EngineServiceWebWorker);
361
+ if (useNewWebWorkerRefactoringEnabled) {
362
+ printLogs('[WasmOrchestratorService] freeMemory using New Web Worker', '');
363
+ const wasmWorker = yield this.getWasmWorkerService();
364
+ const memoryFreed = yield wasmWorker.freeMemory();
365
+ printLogs('[WasmOrchestratorService] freeMemory result', memoryFreed);
366
+ return memoryFreed;
367
+ }
368
+ printLogs('[WasmOrchestratorService] freeMemory using Legacy Web Worker', '');
369
+ const memoryFreed = yield this.workerFunctions.freeMemory();
370
+ printLogs('[WasmOrchestratorService] freeMemory result', memoryFreed);
371
+ return memoryFreed;
372
+ }
373
+ catch (error) {
374
+ printLogs('[WasmOrchestratorService] freeMemory error:', error, 'ERROR');
375
+ return false;
376
+ }
377
+ });
378
+ }
379
+ }
380
+ //# sourceMappingURL=WasmOrchestratorService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WasmOrchestratorService.js","sourceRoot":"","sources":["../../../../../src/application/modules/internal/wasm-orchestrator/WasmOrchestratorService.ts"],"names":[],"mappings":"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"}