@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
@@ -1,184 +1,184 @@
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 { printLogs } from '../../global/shared.utils';
13
- import { logCameraError } from './permission.utils';
14
- /**
15
- * Singleton class to manage camera permissions across the application.
16
- * Provides a single source of truth for camera permission state.
17
- */
18
- class PermissionService {
19
- constructor() {
20
- this.permissionGranted = false;
21
- this.permissionState = 'prompt';
22
- this.listeners = new Set();
23
- this.userMediaTimeout = 5000;
24
- }
25
- static getInstance() {
26
- if (!PermissionService.instance) {
27
- printLogs('[PermissionService] Creating singleton instance', '');
28
- PermissionService.instance = new PermissionService();
29
- }
30
- return PermissionService.instance;
31
- }
32
- /**
33
- * Adds a listener for permission state changes.
34
- * Returns an unsubscribe function to remove the listener.
35
- */
36
- addListener(listener) {
37
- printLogs('[PermissionService] Adding listener', '');
38
- this.listeners.add(listener);
39
- // Return unsubscribe function
40
- return () => {
41
- printLogs('[PermissionService] Removing listener', '');
42
- this.listeners.delete(listener);
43
- };
44
- }
45
- /**
46
- * Notifies all listeners about state changes
47
- */
48
- notifyListeners() {
49
- const state = {
50
- isGranted: this.permissionGranted,
51
- permissionState: this.permissionState,
52
- };
53
- printLogs('[PermissionService] Notifying listeners', state);
54
- this.listeners.forEach((listener) => {
55
- try {
56
- listener(state);
57
- }
58
- catch (error) {
59
- printLogs('[PermissionService] Error in listener:', error, 'ERROR');
60
- }
61
- });
62
- }
63
- /**
64
- * Requests camera permission via browser flow and returns the permission state.
65
- * This is the simplified method for UI consumption.
66
- * If permission is already granted, returns immediately without triggering browser flow.
67
- */
68
- requestCameraPermissions() {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- try {
71
- // Even though permission is already granted, it will recheck to sync with browser state.
72
- // This ensures the internal state is always up to date.
73
- // Get UserMedia will not prompt again if already granted.
74
- yield this.requestBrowserCameraPermission();
75
- return this.getPermissionStateData();
76
- }
77
- catch (error) {
78
- printLogs('[PermissionService] requestBrowserCameraPermissions error:', error, 'ERROR');
79
- return this.getPermissionStateData();
80
- }
81
- });
82
- }
83
- /**
84
- * Checks camera permission status and returns a boolean.
85
- * This is the simplified method for UI consumption.
86
- */
87
- checkCameraPermissions() {
88
- return __awaiter(this, void 0, void 0, function* () {
89
- return this.getPermissionStateData();
90
- });
91
- }
92
- /**
93
- * Requests camera permission and returns permission status.
94
- * Internal method used by camera services.
95
- */
96
- requestBrowserCameraPermission() {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- printLogs('[PermissionService] requestCameraPermission called', {
99
- permissionGranted: this.permissionGranted,
100
- });
101
- try {
102
- const granted = yield this.grantPermission();
103
- this.setPermissionStateData(granted, granted ? 'granted' : 'denied');
104
- return granted;
105
- }
106
- catch (error) {
107
- this.setPermissionStateData(false, (error === null || error === void 0 ? void 0 : error.name) === 'NotAllowedError' ? 'denied' : 'prompt');
108
- printLogs('[PermissionService] Permission request failed', {
109
- errorName: error === null || error === void 0 ? void 0 : error.name,
110
- errorMessage: error === null || error === void 0 ? void 0 : error.message,
111
- newState: this.permissionState,
112
- }, 'ERROR');
113
- return false;
114
- }
115
- });
116
- }
117
- /**
118
- * Checks permission against Permission API and requests via getUserMedia if needed.
119
- * If permission is denied, avoids making getUserMedia call.
120
- * If permission is 'prompt' or 'granted', proceeds with getUserMedia.
121
- * @returns boolean indicating if permission was granted.
122
- */
123
- grantPermission() {
124
- return __awaiter(this, void 0, void 0, function* () {
125
- try {
126
- const shouldRequestPermission = this.checkPermissionShouldBeRequested();
127
- if (!shouldRequestPermission) {
128
- return false;
129
- }
130
- printLogs('[PermissionService] Calling getUserMedia to request permission', '');
131
- const stream = yield this.getUserMediaWithTimeout();
132
- printLogs('[PermissionService] getUserMedia successful, closing stream', '');
133
- stream.getTracks().forEach((t) => t.stop());
134
- yield new Promise((resolve) => setTimeout(resolve, 100));
135
- return true;
136
- }
137
- catch (err) {
138
- printLogs('[PermissionService] requestPermission failed:', err, 'ERROR');
139
- logCameraError(err);
140
- return false;
141
- }
142
- });
143
- }
144
- /**
145
- * Checks permission against Permission API, if supported
146
- * @returns boolean indicating if permission request should proceed.
147
- */
148
- checkPermissionShouldBeRequested() {
149
- return __awaiter(this, void 0, void 0, function* () {
150
- if (navigator.permissions && typeof navigator.permissions.query === 'function') {
151
- printLogs('[PermissionService] Checking permission state via Permissions API', '');
152
- const permission = yield navigator.permissions.query({ name: 'camera' });
153
- this.permissionState = permission.state;
154
- printLogs('[PermissionService] performPermissionRequest Permission state:', permission.state);
155
- if (permission.state === 'denied') {
156
- printLogs('[PermissionService] Camera permission is denied', '', 'WARN');
157
- return false;
158
- }
159
- }
160
- return true;
161
- });
162
- }
163
- getUserMediaWithTimeout() {
164
- return navigator.mediaDevices.getUserMedia({ video: true, audio: false });
165
- }
166
- getPermissionStateData() {
167
- return {
168
- isGranted: this.permissionGranted,
169
- state: this.permissionState,
170
- };
171
- }
172
- setPermissionStateData(isGranted, state) {
173
- this.permissionGranted = isGranted;
174
- this.permissionState = state;
175
- printLogs('[PermissionService] setPermissionStateData', {
176
- granted: isGranted,
177
- state: this.permissionState,
178
- });
179
- // Notify listeners about state change
180
- this.notifyListeners();
181
- }
182
- }
183
- export { PermissionService };
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 { printLogs } from '../../global/shared.utils';
13
+ import { logCameraError } from './permission.utils';
14
+ /**
15
+ * Singleton class to manage camera permissions across the application.
16
+ * Provides a single source of truth for camera permission state.
17
+ */
18
+ class PermissionService {
19
+ constructor() {
20
+ this.permissionGranted = false;
21
+ this.permissionState = 'prompt';
22
+ this.listeners = new Set();
23
+ this.userMediaTimeout = 5000;
24
+ }
25
+ static getInstance() {
26
+ if (!PermissionService.instance) {
27
+ printLogs('[PermissionService] Creating singleton instance', '');
28
+ PermissionService.instance = new PermissionService();
29
+ }
30
+ return PermissionService.instance;
31
+ }
32
+ /**
33
+ * Adds a listener for permission state changes.
34
+ * Returns an unsubscribe function to remove the listener.
35
+ */
36
+ addListener(listener) {
37
+ printLogs('[PermissionService] Adding listener', '');
38
+ this.listeners.add(listener);
39
+ // Return unsubscribe function
40
+ return () => {
41
+ printLogs('[PermissionService] Removing listener', '');
42
+ this.listeners.delete(listener);
43
+ };
44
+ }
45
+ /**
46
+ * Notifies all listeners about state changes
47
+ */
48
+ notifyListeners() {
49
+ const state = {
50
+ isGranted: this.permissionGranted,
51
+ permissionState: this.permissionState,
52
+ };
53
+ printLogs('[PermissionService] Notifying listeners', state);
54
+ this.listeners.forEach((listener) => {
55
+ try {
56
+ listener(state);
57
+ }
58
+ catch (error) {
59
+ printLogs('[PermissionService] Error in listener:', error, 'ERROR');
60
+ }
61
+ });
62
+ }
63
+ /**
64
+ * Requests camera permission via browser flow and returns the permission state.
65
+ * This is the simplified method for UI consumption.
66
+ * If permission is already granted, returns immediately without triggering browser flow.
67
+ */
68
+ requestCameraPermissions() {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ try {
71
+ // Even though permission is already granted, it will recheck to sync with browser state.
72
+ // This ensures the internal state is always up to date.
73
+ // Get UserMedia will not prompt again if already granted.
74
+ yield this.requestBrowserCameraPermission();
75
+ return this.getPermissionStateData();
76
+ }
77
+ catch (error) {
78
+ printLogs('[PermissionService] requestBrowserCameraPermissions error:', error, 'ERROR');
79
+ return this.getPermissionStateData();
80
+ }
81
+ });
82
+ }
83
+ /**
84
+ * Checks camera permission status and returns a boolean.
85
+ * This is the simplified method for UI consumption.
86
+ */
87
+ checkCameraPermissions() {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ return this.getPermissionStateData();
90
+ });
91
+ }
92
+ /**
93
+ * Requests camera permission and returns permission status.
94
+ * Internal method used by camera services.
95
+ */
96
+ requestBrowserCameraPermission() {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ printLogs('[PermissionService] requestCameraPermission called', {
99
+ permissionGranted: this.permissionGranted,
100
+ });
101
+ try {
102
+ const granted = yield this.grantPermission();
103
+ this.setPermissionStateData(granted, granted ? 'granted' : 'denied');
104
+ return granted;
105
+ }
106
+ catch (error) {
107
+ this.setPermissionStateData(false, (error === null || error === void 0 ? void 0 : error.name) === 'NotAllowedError' ? 'denied' : 'prompt');
108
+ printLogs('[PermissionService] Permission request failed', {
109
+ errorName: error === null || error === void 0 ? void 0 : error.name,
110
+ errorMessage: error === null || error === void 0 ? void 0 : error.message,
111
+ newState: this.permissionState,
112
+ }, 'ERROR');
113
+ return false;
114
+ }
115
+ });
116
+ }
117
+ /**
118
+ * Checks permission against Permission API and requests via getUserMedia if needed.
119
+ * If permission is denied, avoids making getUserMedia call.
120
+ * If permission is 'prompt' or 'granted', proceeds with getUserMedia.
121
+ * @returns boolean indicating if permission was granted.
122
+ */
123
+ grantPermission() {
124
+ return __awaiter(this, void 0, void 0, function* () {
125
+ try {
126
+ const shouldRequestPermission = this.checkPermissionShouldBeRequested();
127
+ if (!shouldRequestPermission) {
128
+ return false;
129
+ }
130
+ printLogs('[PermissionService] Calling getUserMedia to request permission', '');
131
+ const stream = yield this.getUserMediaWithTimeout();
132
+ printLogs('[PermissionService] getUserMedia successful, closing stream', '');
133
+ stream.getTracks().forEach((t) => t.stop());
134
+ yield new Promise((resolve) => setTimeout(resolve, 100));
135
+ return true;
136
+ }
137
+ catch (err) {
138
+ printLogs('[PermissionService] requestPermission failed:', err, 'ERROR');
139
+ logCameraError(err);
140
+ return false;
141
+ }
142
+ });
143
+ }
144
+ /**
145
+ * Checks permission against Permission API, if supported
146
+ * @returns boolean indicating if permission request should proceed.
147
+ */
148
+ checkPermissionShouldBeRequested() {
149
+ return __awaiter(this, void 0, void 0, function* () {
150
+ if (navigator.permissions && typeof navigator.permissions.query === 'function') {
151
+ printLogs('[PermissionService] Checking permission state via Permissions API', '');
152
+ const permission = yield navigator.permissions.query({ name: 'camera' });
153
+ this.permissionState = permission.state;
154
+ printLogs('[PermissionService] performPermissionRequest Permission state:', permission.state);
155
+ if (permission.state === 'denied') {
156
+ printLogs('[PermissionService] Camera permission is denied', '', 'WARN');
157
+ return false;
158
+ }
159
+ }
160
+ return true;
161
+ });
162
+ }
163
+ getUserMediaWithTimeout() {
164
+ return navigator.mediaDevices.getUserMedia({ video: true, audio: false });
165
+ }
166
+ getPermissionStateData() {
167
+ return {
168
+ isGranted: this.permissionGranted,
169
+ state: this.permissionState,
170
+ };
171
+ }
172
+ setPermissionStateData(isGranted, state) {
173
+ this.permissionGranted = isGranted;
174
+ this.permissionState = state;
175
+ printLogs('[PermissionService] setPermissionStateData', {
176
+ granted: isGranted,
177
+ state: this.permissionState,
178
+ });
179
+ // Notify listeners about state change
180
+ this.notifyListeners();
181
+ }
182
+ }
183
+ export { PermissionService };
184
184
  //# sourceMappingURL=PermissionsService.js.map
@@ -1,4 +1,4 @@
1
- export { PermissionService } from './PermissionsService';
2
- export type { IPermissionService } from './permissions.domain';
3
- export type { PermissionListener } from './permissions.types';
4
- export type { PermissionState } from './permissions.types';
1
+ export { PermissionService } from './PermissionsService';
2
+ export type { IPermissionService } from './permissions.domain';
3
+ export type { PermissionListener } from './permissions.types';
4
+ export type { PermissionState } from './permissions.types';
@@ -1,3 +1,3 @@
1
- /* eslint-disable import/prefer-default-export */
2
- export { PermissionService } from './PermissionsService';
1
+ /* eslint-disable import/prefer-default-export */
2
+ export { PermissionService } from './PermissionsService';
3
3
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- /**
2
- * Logs camera-related errors with detailed messages based on error type
3
- * @param error - The error object to log
4
- * @param context - Optional context string to prefix the log messages (defaults to 'MobileCameraService')
5
- */
6
- export declare function logCameraError(error: any, context?: string): void;
1
+ /**
2
+ * Logs camera-related errors with detailed messages based on error type
3
+ * @param error - The error object to log
4
+ * @param context - Optional context string to prefix the log messages (defaults to 'MobileCameraService')
5
+ */
6
+ export declare function logCameraError(error: any, context?: string): void;
@@ -1,34 +1,34 @@
1
- import { printLogs } from '../../global/shared.utils';
2
- /**
3
- * Logs camera-related errors with detailed messages based on error type
4
- * @param error - The error object to log
5
- * @param context - Optional context string to prefix the log messages (defaults to 'MobileCameraService')
6
- */
7
- export function logCameraError(error, context = 'MobileCameraService') {
8
- const errorType = (error === null || error === void 0 ? void 0 : error.name) || (error === null || error === void 0 ? void 0 : error.message) || 'UNKNOWN';
9
- switch (errorType) {
10
- case 'NotAllowedError':
11
- printLogs(`[${context}] Camera permission denied by user`, '', 'ERROR');
12
- break;
13
- case 'NotFoundError':
14
- printLogs(`[${context}] No camera device found`, '', 'ERROR');
15
- break;
16
- case 'NotReadableError':
17
- printLogs(`[${context}] Camera is already in use by another app/tab`, '', 'ERROR');
18
- break;
19
- case 'OverconstrainedError':
20
- printLogs(`[${context}] Camera constraints cannot be satisfied`, '', 'ERROR');
21
- break;
22
- case 'NO_TRACK_SETTINGS':
23
- printLogs(`[${context}] Failed to get track settings from camera`, '', 'ERROR');
24
- break;
25
- case 'NO_VIDEO_TRACKS':
26
- printLogs(`[${context}] Stream has no video tracks`, '', 'ERROR');
27
- break;
28
- default:
29
- printLogs(`[${context}] Unknown camera error: ${errorType}`, '', 'ERROR');
30
- break;
31
- }
32
- printLogs(`[${context}] Error stack: `, (error === null || error === void 0 ? void 0 : error.stack) || 'no stack trace');
33
- }
1
+ import { printLogs } from '../../global/shared.utils';
2
+ /**
3
+ * Logs camera-related errors with detailed messages based on error type
4
+ * @param error - The error object to log
5
+ * @param context - Optional context string to prefix the log messages (defaults to 'MobileCameraService')
6
+ */
7
+ export function logCameraError(error, context = 'MobileCameraService') {
8
+ const errorType = (error === null || error === void 0 ? void 0 : error.name) || (error === null || error === void 0 ? void 0 : error.message) || 'UNKNOWN';
9
+ switch (errorType) {
10
+ case 'NotAllowedError':
11
+ printLogs(`[${context}] Camera permission denied by user`, '', 'ERROR');
12
+ break;
13
+ case 'NotFoundError':
14
+ printLogs(`[${context}] No camera device found`, '', 'ERROR');
15
+ break;
16
+ case 'NotReadableError':
17
+ printLogs(`[${context}] Camera is already in use by another app/tab`, '', 'ERROR');
18
+ break;
19
+ case 'OverconstrainedError':
20
+ printLogs(`[${context}] Camera constraints cannot be satisfied`, '', 'ERROR');
21
+ break;
22
+ case 'NO_TRACK_SETTINGS':
23
+ printLogs(`[${context}] Failed to get track settings from camera`, '', 'ERROR');
24
+ break;
25
+ case 'NO_VIDEO_TRACKS':
26
+ printLogs(`[${context}] Stream has no video tracks`, '', 'ERROR');
27
+ break;
28
+ default:
29
+ printLogs(`[${context}] Unknown camera error: ${errorType}`, '', 'ERROR');
30
+ break;
31
+ }
32
+ printLogs(`[${context}] Error stack: `, (error === null || error === void 0 ? void 0 : error.stack) || 'no stack trace');
33
+ }
34
34
  //# sourceMappingURL=permission.utils.js.map
@@ -1,6 +1,6 @@
1
- import { PermissionDataState, PermissionListener } from './permissions.types';
2
- export interface IPermissionService {
3
- requestCameraPermissions(): Promise<PermissionDataState>;
4
- checkCameraPermissions(): Promise<PermissionDataState>;
5
- addListener(listener: PermissionListener): () => void;
6
- }
1
+ import { PermissionDataState, PermissionListener } from './permissions.types';
2
+ export interface IPermissionService {
3
+ requestCameraPermissions(): Promise<PermissionDataState>;
4
+ checkCameraPermissions(): Promise<PermissionDataState>;
5
+ addListener(listener: PermissionListener): () => void;
6
+ }
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=permissions.domain.js.map
@@ -1,9 +1,9 @@
1
- export type PermissionState = 'prompt' | 'granted' | 'denied';
2
- export type PermissionListener = (state: {
3
- isGranted: boolean;
4
- permissionState: PermissionState;
5
- }) => void;
6
- export type PermissionDataState = {
7
- isGranted: boolean;
8
- state: PermissionState;
9
- };
1
+ export type PermissionState = 'prompt' | 'granted' | 'denied';
2
+ export type PermissionListener = (state: {
3
+ isGranted: boolean;
4
+ permissionState: PermissionState;
5
+ }) => void;
6
+ export type PermissionDataState = {
7
+ isGranted: boolean;
8
+ state: PermissionState;
9
+ };
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=permissions.types.js.map
@@ -1,25 +1,25 @@
1
- import { Wasm } from './wasm.domain';
2
- import { WasmLoadResult, WasmModuleOptions, EncryptionResult, WasmResultCallback } from './wasm.types';
3
- export declare class WasmService implements Wasm {
4
- private workerFunctions;
5
- private isInitialized;
6
- private hasSimdSupport;
7
- constructor();
8
- initialize(): Promise<void>;
9
- loadModule(options: WasmModuleOptions): Promise<WasmLoadResult>;
10
- checkIfModelsLoaded: (isEnroll: boolean) => Promise<boolean>;
11
- enroll(imageData: any, config: string, callback: WasmResultCallback): Promise<any>;
12
- predict: (images: ImageData[], isSimd: boolean, config: string, callback: WasmResultCallback) => Promise<any>;
13
- estimateAge: (images: ImageData[], isSimd: boolean, config: string, callback: WasmResultCallback) => Promise<{
14
- result: number;
15
- imageData: Uint8ClampedArray | null;
16
- height: number | null;
17
- width: number | null;
18
- }>;
19
- compareEmbeddings: (embeddingsA: string, embeddingsB: string, config: string, callback: WasmResultCallback) => Promise<any>;
20
- scanFrontPhotoIdDocument: (imageData: ImageData, config: string, callback: WasmResultCallback) => Promise<void>;
21
- scanBackDocument: (imageData: ImageData, isSimd: boolean, config: string, callback: WasmResultCallback) => Promise<any>;
22
- scanPassport: (imageData: ImageData, config: string, callback: WasmResultCallback) => Promise<void>;
23
- documentOcr: (imageData: ImageData | string, config: string, callback: WasmResultCallback) => Promise<any>;
24
- pkiEncrypt: (payload: any) => Promise<EncryptionResult>;
25
- }
1
+ import { Wasm } from './wasm.domain';
2
+ import { WasmLoadResult, WasmModuleOptions, EncryptionResult, WasmResultCallback } from './wasm.types';
3
+ export declare class WasmService implements Wasm {
4
+ private workerFunctions;
5
+ private isInitialized;
6
+ private hasSimdSupport;
7
+ constructor();
8
+ initialize(): Promise<void>;
9
+ loadModule(options: WasmModuleOptions): Promise<WasmLoadResult>;
10
+ checkIfModelsLoaded: (isEnroll: boolean) => Promise<boolean>;
11
+ enroll(imageData: any, config: string, callback: WasmResultCallback): Promise<any>;
12
+ predict: (images: ImageData[], isSimd: boolean, config: string, callback: WasmResultCallback) => Promise<any>;
13
+ estimateAge: (images: ImageData[], isSimd: boolean, config: string, callback: WasmResultCallback, onAntiSpoofProgress?: any) => Promise<{
14
+ result: number;
15
+ imageData: Uint8ClampedArray | null;
16
+ height: number | null;
17
+ width: number | null;
18
+ }>;
19
+ compareEmbeddings: (embeddingsA: string, embeddingsB: string, config: string, callback: WasmResultCallback) => Promise<any>;
20
+ scanFrontPhotoIdDocument: (imageData: ImageData, config: string, callback: WasmResultCallback) => Promise<void>;
21
+ scanBackDocument: (imageData: ImageData, isSimd: boolean, config: string, callback: WasmResultCallback) => Promise<any>;
22
+ scanPassport: (imageData: ImageData, config: string, callback: WasmResultCallback) => Promise<void>;
23
+ documentOcr: (imageData: ImageData | string, config: string, callback: WasmResultCallback) => Promise<any>;
24
+ pkiEncrypt: (payload: any) => Promise<EncryptionResult>;
25
+ }