@arfuhad/react-native-smart-camera 0.1.2 → 0.1.5

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 (265) hide show
  1. package/CHANGELOG.md +75 -3
  2. package/README.md +259 -206
  3. package/android/build.gradle +14 -39
  4. package/android/src/main/java/com/smartcamera/FaceDetectorFrameProcessorPlugin.kt +324 -0
  5. package/android/src/main/java/com/smartcamera/SmartCameraPackage.kt +28 -0
  6. package/build/detection/blinkProcessor.js +2 -1
  7. package/build/detection/blinkProcessor.js.map +1 -1
  8. package/build/detection/faceDetector.d.ts +4 -4
  9. package/build/detection/faceDetector.d.ts.map +1 -1
  10. package/build/detection/faceDetector.js +31 -11
  11. package/build/detection/faceDetector.js.map +1 -1
  12. package/build/detection/index.d.ts +1 -1
  13. package/build/detection/index.d.ts.map +1 -1
  14. package/build/detection/index.js +1 -1
  15. package/build/detection/index.js.map +1 -1
  16. package/build/detection/staticImageDetector.d.ts +11 -11
  17. package/build/detection/staticImageDetector.d.ts.map +1 -1
  18. package/build/detection/staticImageDetector.js +19 -23
  19. package/build/detection/staticImageDetector.js.map +1 -1
  20. package/build/hooks/index.d.ts +6 -0
  21. package/build/hooks/index.d.ts.map +1 -1
  22. package/build/hooks/index.js +8 -0
  23. package/build/hooks/index.js.map +1 -1
  24. package/build/hooks/useBlinkDetection.d.ts +27 -16
  25. package/build/hooks/useBlinkDetection.d.ts.map +1 -1
  26. package/build/hooks/useBlinkDetection.js +63 -37
  27. package/build/hooks/useBlinkDetection.js.map +1 -1
  28. package/build/hooks/useFaceDetection.js +3 -2
  29. package/build/hooks/useFaceDetection.js.map +1 -1
  30. package/build/hooks/useFaceDetector.d.ts +123 -0
  31. package/build/hooks/useFaceDetector.d.ts.map +1 -0
  32. package/build/hooks/useFaceDetector.js +133 -0
  33. package/build/hooks/useFaceDetector.js.map +1 -0
  34. package/build/hooks/useSmartCamera.js.map +1 -1
  35. package/build/hooks/useSmartCameraWebRTC.d.ts +3 -5
  36. package/build/hooks/useSmartCameraWebRTC.d.ts.map +1 -1
  37. package/build/hooks/useSmartCameraWebRTC.js +19 -87
  38. package/build/hooks/useSmartCameraWebRTC.js.map +1 -1
  39. package/build/hooks/useWebRTC.d.ts +88 -0
  40. package/build/hooks/useWebRTC.d.ts.map +1 -0
  41. package/build/hooks/useWebRTC.js +394 -0
  42. package/build/hooks/useWebRTC.js.map +1 -0
  43. package/build/hooks/useWebRTCWithDetection.d.ts +89 -0
  44. package/build/hooks/useWebRTCWithDetection.d.ts.map +1 -0
  45. package/build/hooks/useWebRTCWithDetection.js +131 -0
  46. package/build/hooks/useWebRTCWithDetection.js.map +1 -0
  47. package/build/index.d.ts +24 -10
  48. package/build/index.d.ts.map +1 -1
  49. package/build/index.js +38 -13
  50. package/build/index.js.map +1 -1
  51. package/build/types.d.ts +28 -12
  52. package/build/types.d.ts.map +1 -1
  53. package/build/types.js.map +1 -1
  54. package/build/utils/index.js.map +1 -1
  55. package/build/webrtc/WebRTCBridge.d.ts +3 -0
  56. package/build/webrtc/WebRTCBridge.d.ts.map +1 -1
  57. package/build/webrtc/WebRTCBridge.js +12 -15
  58. package/build/webrtc/WebRTCBridge.js.map +1 -1
  59. package/build/webrtc/WebRTCManager.d.ts +148 -0
  60. package/build/webrtc/WebRTCManager.d.ts.map +1 -0
  61. package/build/webrtc/WebRTCManager.js +383 -0
  62. package/build/webrtc/WebRTCManager.js.map +1 -0
  63. package/build/webrtc/index.d.ts +3 -1
  64. package/build/webrtc/index.d.ts.map +1 -1
  65. package/build/webrtc/index.js +5 -0
  66. package/build/webrtc/index.js.map +1 -1
  67. package/build/webrtc/types.d.ts +212 -4
  68. package/build/webrtc/types.d.ts.map +1 -1
  69. package/build/webrtc/types.js +34 -1
  70. package/build/webrtc/types.js.map +1 -1
  71. package/ios/FaceDetectorFrameProcessorPlugin.m +11 -0
  72. package/ios/FaceDetectorFrameProcessorPlugin.swift +304 -0
  73. package/package.json +11 -11
  74. package/react-native-smart-camera.podspec +32 -0
  75. package/src/detection/blinkProcessor.ts +127 -0
  76. package/src/detection/faceDetector.ts +78 -0
  77. package/src/detection/index.ts +3 -0
  78. package/src/detection/staticImageDetector.ts +53 -0
  79. package/src/hooks/index.ts +26 -0
  80. package/src/hooks/useBlinkDetection.ts +127 -0
  81. package/src/hooks/useFaceDetection.ts +105 -0
  82. package/src/hooks/useFaceDetector.ts +191 -0
  83. package/src/hooks/useSmartCamera.ts +83 -0
  84. package/src/hooks/useSmartCameraWebRTC.ts +120 -0
  85. package/src/hooks/useWebRTC.ts +453 -0
  86. package/src/hooks/useWebRTCWithDetection.ts +181 -0
  87. package/src/index.ts +170 -0
  88. package/src/types.ts +636 -0
  89. package/src/utils/index.ts +355 -0
  90. package/src/webrtc/WebRTCBridge.ts +127 -0
  91. package/src/webrtc/WebRTCManager.ts +453 -0
  92. package/src/webrtc/index.ts +50 -0
  93. package/src/webrtc/types.ts +361 -0
  94. package/android/build/.transforms/e0a0b120a9ccc3a8de4f5784bc36b161/results.bin +0 -1
  95. package/android/build/.transforms/e0a0b120a9ccc3a8de4f5784bc36b161/transformed/classes/classes_dex/classes.dex +0 -0
  96. package/android/build/generated/source/buildConfig/debug/expo/modules/smartcamera/BuildConfig.java +0 -10
  97. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +0 -7
  98. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +0 -18
  99. package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +0 -6
  100. package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +0 -1
  101. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  102. package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
  103. package/android/build/intermediates/compile_symbol_list/debug/R.txt +0 -0
  104. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
  105. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  106. package/android/build/intermediates/java_res/debug/out/META-INF/arfuhad-react-native-smart-camera_debug.kotlin_module +0 -0
  107. package/android/build/intermediates/javac/debug/classes/expo/modules/smartcamera/BuildConfig.class +0 -0
  108. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +0 -2
  109. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +0 -7
  110. package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +0 -7
  111. package/android/build/intermediates/navigation_json/debug/navigation.json +0 -1
  112. package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
  113. package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +0 -1
  114. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  115. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  116. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  117. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  118. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  119. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  120. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  121. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  122. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  123. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  124. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  125. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  126. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  127. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  128. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  129. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  130. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  131. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  132. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  133. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  134. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  135. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  136. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  137. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  138. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  139. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  140. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  141. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  142. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
  143. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
  144. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
  145. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
  146. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
  147. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
  148. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
  149. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  150. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  151. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  152. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  153. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  154. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  155. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  156. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  157. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  158. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  159. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  160. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  161. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  162. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  163. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  164. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  165. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  166. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  167. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  168. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  169. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  170. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  171. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  172. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  173. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  174. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  175. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  176. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  177. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  178. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  179. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  180. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  181. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  182. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  183. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  184. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  185. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  186. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  187. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  188. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  189. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  190. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  191. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  192. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  193. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  194. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  195. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  196. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  197. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  198. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  199. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  200. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  201. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  202. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -16
  203. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  204. package/android/build/tmp/kotlin-classes/debug/META-INF/arfuhad-react-native-smart-camera_debug.kotlin_module +0 -0
  205. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/DetectedFace.class +0 -0
  206. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceBounds.class +0 -0
  207. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceContoursData.class +0 -0
  208. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceDetectionOptions.class +0 -0
  209. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceLandmarksData.class +0 -0
  210. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader$Companion.class +0 -0
  211. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader$loadImage$2.class +0 -0
  212. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader.class +0 -0
  213. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector$detectFaces$2$1.class +0 -0
  214. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector$detectFaces$2$2.class +0 -0
  215. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector.class +0 -0
  216. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetectorKt$sam$com_google_android_gms_tasks_OnSuccessListener$0.class +0 -0
  217. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetectorKt.class +0 -0
  218. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/PointData.class +0 -0
  219. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$Companion.class +0 -0
  220. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$1$1$1.class +0 -0
  221. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$1$3$1.class +0 -0
  222. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$1$4$1.class +0 -0
  223. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunction$1.class +0 -0
  224. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunction$2.class +0 -0
  225. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunction$3.class +0 -0
  226. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$1.class +0 -0
  227. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$2.class +0 -0
  228. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$3.class +0 -0
  229. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$4.class +0 -0
  230. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$1.class +0 -0
  231. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$2.class +0 -0
  232. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$3.class +0 -0
  233. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$4.class +0 -0
  234. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$FunctionWithoutArgs$1.class +0 -0
  235. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$FunctionWithoutArgs$2.class +0 -0
  236. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$OnActivityEntersBackground$1.class +0 -0
  237. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$OnActivityEntersForeground$1.class +0 -0
  238. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$OnDestroy$1.class +0 -0
  239. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule.class +0 -0
  240. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraView.class +0 -0
  241. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/WebRTCFrameBridge$Companion.class +0 -0
  242. package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/WebRTCFrameBridge.class +0 -0
  243. package/android/src/main/java/expo/modules/smartcamera/ImageLoader.kt +0 -106
  244. package/android/src/main/java/expo/modules/smartcamera/MLKitFaceDetector.kt +0 -273
  245. package/android/src/main/java/expo/modules/smartcamera/SmartCameraModule.kt +0 -205
  246. package/android/src/main/java/expo/modules/smartcamera/SmartCameraView.kt +0 -153
  247. package/android/src/main/java/expo/modules/smartcamera/WebRTCFrameBridge.kt +0 -184
  248. package/build/SmartCamera.d.ts +0 -17
  249. package/build/SmartCamera.d.ts.map +0 -1
  250. package/build/SmartCamera.js +0 -270
  251. package/build/SmartCamera.js.map +0 -1
  252. package/build/SmartCameraModule.d.ts +0 -112
  253. package/build/SmartCameraModule.d.ts.map +0 -1
  254. package/build/SmartCameraModule.js +0 -121
  255. package/build/SmartCameraModule.js.map +0 -1
  256. package/build/SmartCameraView.d.ts +0 -8
  257. package/build/SmartCameraView.d.ts.map +0 -1
  258. package/build/SmartCameraView.js +0 -7
  259. package/build/SmartCameraView.js.map +0 -1
  260. package/expo-module.config.json +0 -9
  261. package/ios/MLKitFaceDetector.swift +0 -310
  262. package/ios/SmartCamera.podspec +0 -33
  263. package/ios/SmartCameraModule.swift +0 -225
  264. package/ios/SmartCameraView.swift +0 -146
  265. package/ios/WebRTCFrameBridge.swift +0 -150
package/build/index.d.ts CHANGED
@@ -1,14 +1,28 @@
1
- export { SmartCamera } from './SmartCamera';
2
- export { default as SmartCameraModule } from './SmartCameraModule';
3
- export { detectFacesInImage, updateFaceDetectionOptions, initializeWebRTC, startWebRTCStream, stopWebRTCStream, pushWebRTCFrame, isWebRTCStreaming, addFaceDetectionListener, addBlinkDetectionListener, addErrorListener, addWebRTCStateChangeListener, Constants, } from './SmartCameraModule';
4
- export type { PerformanceMode, LandmarkMode, ContourMode, ClassificationMode, CameraFacing, FaceDetectionOptions, FrameProcessorOptions, StaticImageOptions, FaceDetectionConfig, Point, Bounds, FaceLandmarks, ContourType, FaceContours, Face, BlinkEvent, WebRTCMode, VideoConstraints, WebRTCConfig, SmartCameraProps, SmartCameraErrorCode, SmartCameraError, UseSmartCameraWebRTCResult, UseFaceDetectionResult, UseBlinkDetectionResult, UseSmartCameraResult, CameraDevice, Orientation, OutputOrientation, } from './types';
5
- export { useSmartCamera, getAvailableCameras } from './hooks/useSmartCamera';
6
- export { useFaceDetection } from './hooks/useFaceDetection';
7
- export { useBlinkDetection } from './hooks/useBlinkDetection';
8
- export { useSmartCameraWebRTC } from './hooks/useSmartCameraWebRTC';
9
- export { detectFaces } from './detection/faceDetector';
1
+ /**
2
+ * @arfuhad/react-native-smart-camera
3
+ *
4
+ * VisionCamera frame processor plugin for face detection, blink detection, and WebRTC streaming.
5
+ * API designed to match react-native-vision-camera-face-detector.
6
+ */
7
+ export { detectFaces, isFaceDetectorAvailable } from './detection/faceDetector';
8
+ export { useFaceDetector, useFaceDetectorWithCallback, type UseFaceDetectorOptions, type UseFaceDetectorResult, type UseFaceDetectorWithCallbackOptions, type FaceDetectionCallback, } from './hooks/useFaceDetector';
9
+ export type { PerformanceMode, LandmarkMode, ContourMode, ClassificationMode, CameraFacing, FaceDetectionOptions, FrameProcessorOptions, StaticImageOptions, FaceDetectionConfig, Point, Bounds, FaceLandmarks, ContourType, FaceContours, Face, BlinkEvent, EyeStatus, EyeStatusResult, WebRTCMode, VideoConstraints as WebRTCVideoConstraintsLegacy, WebRTCConfig, SmartCameraProps, SmartCameraErrorCode, SmartCameraError, UseSmartCameraWebRTCResult, UseFaceDetectionResult, UseBlinkDetectionResult, UseSmartCameraResult, CameraDevice, Orientation, OutputOrientation, } from './types';
10
+ export { useBlinkDetection, type UseBlinkDetectionOptions } from './hooks/useBlinkDetection';
10
11
  export { processBlinkFromFaces, resetBlinkStates, getEyeState } from './detection/blinkProcessor';
11
- export { detectFacesInImage as detectFacesInImageAsync } from './detection/staticImageDetector';
12
+ export { useSmartCamera, getAvailableCameras } from './hooks/useSmartCamera';
13
+ export { useFaceDetection, type UseFaceDetectionOptions } from './hooks/useFaceDetection';
14
+ export { detectFacesInImage } from './detection/staticImageDetector';
12
15
  export { createFpsLimiter, debounce, throttle, createObjectPool, createSmartCameraError, safeExecute, validateFaceDetectionOptions, createPerformanceMonitor, } from './utils';
16
+ export { useWebRTC } from './hooks/useWebRTC';
17
+ export type { UseWebRTCOptions, UseWebRTCResult } from './hooks/useWebRTC';
18
+ export { useWebRTCWithDetection } from './hooks/useWebRTCWithDetection';
19
+ export type { UseWebRTCWithDetectionOptions } from './hooks/useWebRTCWithDetection';
20
+ export type { UseWebRTCWithDetectionResult } from './hooks/useWebRTCWithDetection';
21
+ export { WebRTCManager, getWebRTCManager, createWebRTCManager, isWebRTCAvailable, } from './webrtc/WebRTCManager';
22
+ export type { ICEServer, PeerConnectionConfig, VideoConstraints, AudioConstraints, MediaConstraints, CallState, WebRTCConnectionState, ICEConnectionState, ICEGatheringState, SignalingState, VideoFrameFormat, WebRTCVideoSourceConfig, WebRTCStreamStats, WebRTCQualitySettings, WebRTCStreamEvent, ICECandidateEvent, SessionDescription, } from './webrtc/types';
23
+ export { DEFAULT_ICE_SERVERS, DEFAULT_PEER_CONNECTION_CONFIG, DEFAULT_MEDIA_CONSTRAINTS, } from './webrtc/types';
24
+ /** @deprecated Use useWebRTC instead */
25
+ export { useSmartCameraWebRTC, type UseSmartCameraWebRTCOptions } from './hooks/useSmartCameraWebRTC';
26
+ /** @deprecated Use WebRTCManager instead */
13
27
  export { WebRTCBridge, getWebRTCBridge } from './webrtc';
14
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,4BAA4B,EAC5B,SAAS,GACV,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAEV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EAGnB,KAAK,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,YAAY,EACZ,IAAI,EAGJ,UAAU,EAGV,UAAU,EACV,gBAAgB,EAChB,YAAY,EAGZ,gBAAgB,EAGhB,oBAAoB,EACpB,gBAAgB,EAGhB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EAGpB,YAAY,EAGZ,WAAW,EACX,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGlG,OAAO,EAAE,kBAAkB,IAAI,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAGhG,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGhF,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,kCAAkC,EACvC,KAAK,qBAAqB,GAC3B,MAAM,yBAAyB,CAAC;AAMjC,YAAY,EAEV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EAGnB,KAAK,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,YAAY,EACZ,IAAI,EAGJ,UAAU,EACV,SAAS,EACT,eAAe,EAGf,UAAU,EACV,gBAAgB,IAAI,4BAA4B,EAChD,YAAY,EAGZ,gBAAgB,EAGhB,oBAAoB,EACpB,gBAAgB,EAGhB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EAGpB,YAAY,EAGZ,WAAW,EACX,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAOjB,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGlG,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAG1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAOjB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,YAAY,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AACpF,YAAY,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAGnF,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EAEV,SAAS,EACT,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAGhB,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EAGd,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EAGrB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAMxB,wCAAwC;AACxC,OAAO,EAAE,oBAAoB,EAAE,KAAK,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AACtG,4CAA4C;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
package/build/index.js CHANGED
@@ -1,20 +1,45 @@
1
- // Main component
2
- export { SmartCamera } from './SmartCamera';
3
- export { default as SmartCameraModule } from './SmartCameraModule';
4
- // Native module functions
5
- export { detectFacesInImage, updateFaceDetectionOptions, initializeWebRTC, startWebRTCStream, stopWebRTCStream, pushWebRTCFrame, isWebRTCStreaming, addFaceDetectionListener, addBlinkDetectionListener, addErrorListener, addWebRTCStateChangeListener, Constants, } from './SmartCameraModule';
6
- // Hooks
7
- export { useSmartCamera, getAvailableCameras } from './hooks/useSmartCamera';
8
- export { useFaceDetection } from './hooks/useFaceDetection';
1
+ /**
2
+ * @arfuhad/react-native-smart-camera
3
+ *
4
+ * VisionCamera frame processor plugin for face detection, blink detection, and WebRTC streaming.
5
+ * API designed to match react-native-vision-camera-face-detector.
6
+ */
7
+ // =============================================================================
8
+ // PRIMARY EXPORTS (matching react-native-vision-camera-face-detector API)
9
+ // =============================================================================
10
+ // Frame processor function - use directly in useFrameProcessor
11
+ export { detectFaces, isFaceDetectorAvailable } from './detection/faceDetector';
12
+ // Hook for face detection (matches reference package API)
13
+ export { useFaceDetector, useFaceDetectorWithCallback, } from './hooks/useFaceDetector';
14
+ // =============================================================================
15
+ // ADDITIONAL FEATURES (our package only)
16
+ // =============================================================================
17
+ // Blink/Eye detection
9
18
  export { useBlinkDetection } from './hooks/useBlinkDetection';
10
- export { useSmartCameraWebRTC } from './hooks/useSmartCameraWebRTC';
11
- // Frame processors
12
- export { detectFaces } from './detection/faceDetector';
13
19
  export { processBlinkFromFaces, resetBlinkStates, getEyeState } from './detection/blinkProcessor';
20
+ // Camera management hooks
21
+ export { useSmartCamera, getAvailableCameras } from './hooks/useSmartCamera';
22
+ export { useFaceDetection } from './hooks/useFaceDetection';
14
23
  // Static image detection
15
- export { detectFacesInImage as detectFacesInImageAsync } from './detection/staticImageDetector';
24
+ export { detectFacesInImage } from './detection/staticImageDetector';
16
25
  // Utilities
17
26
  export { createFpsLimiter, debounce, throttle, createObjectPool, createSmartCameraError, safeExecute, validateFaceDetectionOptions, createPerformanceMonitor, } from './utils';
18
- // WebRTC Bridge
27
+ // =============================================================================
28
+ // WEBRTC VIDEO CALLING (requires react-native-webrtc)
29
+ // =============================================================================
30
+ // Main WebRTC hook
31
+ export { useWebRTC } from './hooks/useWebRTC';
32
+ // Combined WebRTC + Face Detection hook
33
+ export { useWebRTCWithDetection } from './hooks/useWebRTCWithDetection';
34
+ // WebRTC Manager class
35
+ export { WebRTCManager, getWebRTCManager, createWebRTCManager, isWebRTCAvailable, } from './webrtc/WebRTCManager';
36
+ // Default configurations
37
+ export { DEFAULT_ICE_SERVERS, DEFAULT_PEER_CONNECTION_CONFIG, DEFAULT_MEDIA_CONSTRAINTS, } from './webrtc/types';
38
+ // =============================================================================
39
+ // LEGACY EXPORTS (deprecated - kept for backwards compatibility)
40
+ // =============================================================================
41
+ /** @deprecated Use useWebRTC instead */
42
+ export { useSmartCameraWebRTC } from './hooks/useSmartCameraWebRTC';
43
+ /** @deprecated Use WebRTCManager instead */
19
44
  export { WebRTCBridge, getWebRTCBridge } from './webrtc';
20
45
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,4BAA4B,EAC5B,SAAS,GACV,MAAM,qBAAqB,CAAC;AAoD7B,QAAQ;AACR,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,mBAAmB;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAElG,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,IAAI,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,YAAY;AACZ,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAEjB,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC","sourcesContent":["// Main component\nexport { SmartCamera } from './SmartCamera';\nexport { default as SmartCameraModule } from './SmartCameraModule';\n\n// Native module functions\nexport {\n detectFacesInImage,\n updateFaceDetectionOptions,\n initializeWebRTC,\n startWebRTCStream,\n stopWebRTCStream,\n pushWebRTCFrame,\n isWebRTCStreaming,\n addFaceDetectionListener,\n addBlinkDetectionListener,\n addErrorListener,\n addWebRTCStateChangeListener,\n Constants,\n} from './SmartCameraModule';\n\n// Types\nexport type {\n // Face Detection Options\n PerformanceMode,\n LandmarkMode,\n ContourMode,\n ClassificationMode,\n CameraFacing,\n FaceDetectionOptions,\n FrameProcessorOptions,\n StaticImageOptions,\n FaceDetectionConfig,\n\n // Face Detection Results\n Point,\n Bounds,\n FaceLandmarks,\n ContourType,\n FaceContours,\n Face,\n\n // Blink Detection\n BlinkEvent,\n\n // WebRTC\n WebRTCMode,\n VideoConstraints,\n WebRTCConfig,\n\n // Component Props\n SmartCameraProps,\n\n // Error Handling\n SmartCameraErrorCode,\n SmartCameraError,\n\n // Hook Return Types\n UseSmartCameraWebRTCResult,\n UseFaceDetectionResult,\n UseBlinkDetectionResult,\n UseSmartCameraResult,\n\n // Camera Device\n CameraDevice,\n\n // Orientation\n Orientation,\n OutputOrientation,\n} from './types';\n\n// Hooks\nexport { useSmartCamera, getAvailableCameras } from './hooks/useSmartCamera';\nexport { useFaceDetection } from './hooks/useFaceDetection';\nexport { useBlinkDetection } from './hooks/useBlinkDetection';\nexport { useSmartCameraWebRTC } from './hooks/useSmartCameraWebRTC';\n\n// Frame processors\nexport { detectFaces } from './detection/faceDetector';\nexport { processBlinkFromFaces, resetBlinkStates, getEyeState } from './detection/blinkProcessor';\n\n// Static image detection\nexport { detectFacesInImage as detectFacesInImageAsync } from './detection/staticImageDetector';\n\n// Utilities\nexport {\n createFpsLimiter,\n debounce,\n throttle,\n createObjectPool,\n createSmartCameraError,\n safeExecute,\n validateFaceDetectionOptions,\n createPerformanceMonitor,\n} from './utils';\n\n// WebRTC Bridge\nexport { WebRTCBridge, getWebRTCBridge } from './webrtc';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAEhF,+DAA+D;AAC/D,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,0DAA0D;AAC1D,OAAO,EACL,eAAe,EACf,2BAA2B,GAK5B,MAAM,yBAAyB,CAAC;AAyDjC,gFAAgF;AAChF,yCAAyC;AACzC,gFAAgF;AAEhF,sBAAsB;AACtB,OAAO,EAAE,iBAAiB,EAAiC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAElG,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAgC,MAAM,0BAA0B,CAAC;AAE1F,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,YAAY;AACZ,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAEjB,gFAAgF;AAChF,sDAAsD;AACtD,gFAAgF;AAEhF,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,wCAAwC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,uBAAuB;AACvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AA8BhC,yBAAyB;AACzB,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,gFAAgF;AAChF,iEAAiE;AACjE,gFAAgF;AAEhF,wCAAwC;AACxC,OAAO,EAAE,oBAAoB,EAAoC,MAAM,8BAA8B,CAAC;AACtG,4CAA4C;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
package/build/types.d.ts CHANGED
@@ -396,22 +396,38 @@ export interface UseFaceDetectionResult {
396
396
  */
397
397
  isDetecting: boolean;
398
398
  }
399
+ /**
400
+ * Eye status for a single eye
401
+ */
402
+ export interface EyeStatus {
403
+ /** Eye open probability (0-1, where 0 = closed, 1 = fully open) */
404
+ openProbability: number;
405
+ /** Whether the eye is considered closed based on the threshold */
406
+ isClosed: boolean;
407
+ }
408
+ /**
409
+ * Current eye status for both eyes
410
+ */
411
+ export interface EyeStatusResult {
412
+ /** Left eye status */
413
+ leftEye: EyeStatus;
414
+ /** Right eye status */
415
+ rightEye: EyeStatus;
416
+ /** Face tracking ID */
417
+ faceId?: number;
418
+ /** Timestamp when this status was captured */
419
+ timestamp: number;
420
+ }
399
421
  /**
400
422
  * Return type for useBlinkDetection hook
401
423
  */
402
424
  export interface UseBlinkDetectionResult {
403
- /**
404
- * Last blink event
405
- */
406
- lastBlink: BlinkEvent | null;
407
- /**
408
- * Total blink count
409
- */
410
- blinkCount: number;
411
- /**
412
- * Reset blink count
413
- */
414
- resetCount: () => void;
425
+ /** Current eye status (null if no face detected) */
426
+ eyeStatus: EyeStatusResult | null;
427
+ /** Process faces to get eye status - call this with detected faces */
428
+ processEyeStatus: (faces: Face[]) => void;
429
+ /** Reset eye status */
430
+ reset: () => void;
415
431
  }
416
432
  /**
417
433
  * Camera device information
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ViewStyle } from 'react-native';\n\n// ============================================================================\n// Face Detection Options\n// ============================================================================\n\n/**\n * Performance mode for face detection\n * - 'fast': Favor speed over accuracy\n * - 'accurate': Favor accuracy over speed\n */\nexport type PerformanceMode = 'fast' | 'accurate';\n\n/**\n * Mode for detecting facial landmarks\n * - 'none': Don't detect landmarks\n * - 'all': Detect all landmarks (eyes, ears, nose, cheeks, mouth)\n */\nexport type LandmarkMode = 'none' | 'all';\n\n/**\n * Mode for detecting facial contours\n * - 'none': Don't detect contours\n * - 'all': Detect contours (only for most prominent face)\n */\nexport type ContourMode = 'none' | 'all';\n\n/**\n * Mode for face classification\n * - 'none': Don't classify faces\n * - 'all': Classify faces (smiling, eyes open)\n */\nexport type ClassificationMode = 'none' | 'all';\n\n/**\n * Camera facing direction\n */\nexport type CameraFacing = 'front' | 'back';\n\n/**\n * Common face detection options shared between frame processor and static images\n */\nexport interface FaceDetectionOptions {\n /**\n * Favor speed or accuracy when detecting faces\n * @default 'fast'\n */\n performanceMode?: PerformanceMode;\n\n /**\n * Whether to identify facial landmarks: eyes, ears, nose, cheeks, mouth\n * @default 'none'\n */\n landmarkMode?: LandmarkMode;\n\n /**\n * Whether to detect contours of facial features.\n * Contours are detected for only the most prominent face in an image.\n * @default 'none'\n */\n contourMode?: ContourMode;\n\n /**\n * Whether to classify faces into categories such as 'smiling' and 'eyes open'\n * @default 'none'\n */\n classificationMode?: ClassificationMode;\n\n /**\n * Sets the smallest desired face size, expressed as the ratio\n * of the width of the head to width of the image.\n * @default 0.15\n */\n minFaceSize?: number;\n\n /**\n * Whether to assign faces an ID to track faces across images.\n * Note: When contour detection is enabled, only one face is detected,\n * so face tracking doesn't produce useful results. Don't enable both\n * contour detection and face tracking for best performance.\n * @default false\n */\n trackingEnabled?: boolean;\n}\n\n/**\n * Frame processor specific options\n */\nexport interface FrameProcessorOptions extends FaceDetectionOptions {\n /**\n * Current active camera\n * @default 'front'\n */\n cameraFacing?: CameraFacing;\n\n /**\n * Should handle auto scale (face bounds, contour and landmarks) and rotation\n * on native side? If disabled, all detection results will be relative to frame\n * coordinates, not to screen/preview.\n * You shouldn't use this option if you want to draw on screen using Skia Frame Processor.\n * @default false\n */\n autoMode?: boolean;\n\n /**\n * Required if you want to use autoMode. Screen width for coordinate scaling.\n * You must handle your own logic to get screen sizes, with or without statusbar size, etc.\n * @default 1.0\n */\n windowWidth?: number;\n\n /**\n * Required if you want to use autoMode. Screen height for coordinate scaling.\n * You must handle your own logic to get screen sizes, with or without statusbar size, etc.\n * @default 1.0\n */\n windowHeight?: number;\n}\n\n/**\n * Static image face detection options\n */\nexport interface StaticImageOptions extends FaceDetectionOptions {\n /**\n * Image source for static face detection.\n * Can be a require() result (number), a URI string, or an object with uri.\n */\n image: number | string | { uri: string };\n}\n\n// ============================================================================\n// Face Detection Results\n// ============================================================================\n\n/**\n * 2D point coordinates\n */\nexport interface Point {\n x: number;\n y: number;\n}\n\n/**\n * Bounding rectangle\n */\nexport interface Bounds {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/**\n * Facial landmarks detected by ML Kit\n */\nexport interface FaceLandmarks {\n leftEye?: Point;\n rightEye?: Point;\n leftEar?: Point;\n rightEar?: Point;\n leftCheek?: Point;\n rightCheek?: Point;\n noseBase?: Point;\n leftMouth?: Point;\n rightMouth?: Point;\n bottomMouth?: Point;\n}\n\n/**\n * Face contour types\n */\nexport type ContourType =\n | 'face'\n | 'leftEyebrowTop'\n | 'leftEyebrowBottom'\n | 'rightEyebrowTop'\n | 'rightEyebrowBottom'\n | 'leftEye'\n | 'rightEye'\n | 'upperLipTop'\n | 'upperLipBottom'\n | 'lowerLipTop'\n | 'lowerLipBottom'\n | 'noseBridge'\n | 'noseBottom'\n | 'leftCheek'\n | 'rightCheek';\n\n/**\n * Facial contours detected by ML Kit\n */\nexport interface FaceContours {\n [key: string]: Point[];\n}\n\n/**\n * Detected face data\n */\nexport interface Face {\n /**\n * Bounding box of the detected face\n */\n bounds: Bounds;\n\n /**\n * Roll angle of the face (rotation around front-to-back axis)\n */\n rollAngle?: number;\n\n /**\n * Pitch angle of the face (rotation around left-to-right axis)\n */\n pitchAngle?: number;\n\n /**\n * Yaw angle of the face (rotation around top-to-bottom axis)\n */\n yawAngle?: number;\n\n /**\n * Facial landmarks (when landmarkMode is 'all')\n */\n landmarks?: FaceLandmarks;\n\n /**\n * Facial contours (when contourMode is 'all')\n */\n contours?: FaceContours;\n\n /**\n * Probability that the face is smiling (0.0 - 1.0)\n * Only available when classificationMode is 'all'\n */\n smilingProbability?: number;\n\n /**\n * Probability that the left eye is open (0.0 - 1.0)\n * Only available when classificationMode is 'all'\n */\n leftEyeOpenProbability?: number;\n\n /**\n * Probability that the right eye is open (0.0 - 1.0)\n * Only available when classificationMode is 'all'\n */\n rightEyeOpenProbability?: number;\n\n /**\n * Tracking ID for this face (when trackingEnabled is true)\n */\n trackingId?: number;\n}\n\n// ============================================================================\n// Blink Detection\n// ============================================================================\n\n/**\n * Blink detection event\n */\nexport interface BlinkEvent {\n /**\n * Timestamp when the blink was detected\n */\n timestamp: number;\n\n /**\n * Left eye open probability (0.0 - 1.0)\n */\n leftEyeOpen: number;\n\n /**\n * Right eye open probability (0.0 - 1.0)\n */\n rightEyeOpen: number;\n\n /**\n * Whether a blink was detected\n */\n isBlink: boolean;\n\n /**\n * Face tracking ID (when trackingEnabled is true)\n */\n faceId?: number;\n}\n\n// ============================================================================\n// WebRTC Configuration\n// ============================================================================\n\n/**\n * WebRTC mode\n * - 'call': Video calling (1:1 or group)\n * - 'stream': Live streaming to a server\n */\nexport type WebRTCMode = 'call' | 'stream';\n\n/**\n * WebRTC video constraints\n */\nexport interface VideoConstraints {\n width?: number;\n height?: number;\n frameRate?: number;\n}\n\n/**\n * WebRTC configuration\n */\nexport interface WebRTCConfig {\n /**\n * Whether WebRTC is enabled\n */\n enabled: boolean;\n\n /**\n * RTCPeerConnection instance\n */\n peerConnection?: RTCPeerConnection;\n\n /**\n * WebRTC mode (call or stream)\n * @default 'call'\n */\n mode?: WebRTCMode;\n\n /**\n * Video constraints for the stream\n */\n videoConstraints?: VideoConstraints;\n}\n\n// ============================================================================\n// Face Detection Configuration (for SmartCamera component)\n// ============================================================================\n\n/**\n * Face detection configuration for SmartCamera component\n */\nexport interface FaceDetectionConfig extends FaceDetectionOptions {\n /**\n * Whether face detection is enabled\n * @default false\n */\n enabled?: boolean;\n\n /**\n * Handle auto scale on native side\n * @default false\n */\n autoMode?: boolean;\n\n /**\n * Screen width for coordinate scaling (required when autoMode is true)\n * @default 1.0\n */\n windowWidth?: number;\n\n /**\n * Screen height for coordinate scaling (required when autoMode is true)\n * @default 1.0\n */\n windowHeight?: number;\n}\n\n// ============================================================================\n// SmartCamera Component Props\n// ============================================================================\n\n/**\n * SmartCamera component props\n */\nexport interface SmartCameraProps {\n /**\n * Camera facing direction\n * @default 'front'\n */\n camera?: CameraFacing;\n\n /**\n * Target frame rate for the camera\n * @default 30\n */\n fps?: number;\n\n /**\n * Style for the camera view\n */\n style?: ViewStyle;\n\n /**\n * Face detection configuration\n */\n faceDetection?: FaceDetectionConfig;\n\n /**\n * Whether blink detection is enabled\n * @default false\n */\n blinkDetection?: boolean;\n\n /**\n * Callback when a blink is detected\n */\n onBlinkDetected?: (event: BlinkEvent) => void;\n\n /**\n * Callback when faces are detected\n */\n onFaceDetected?: (faces: Face[]) => void;\n\n /**\n * WebRTC configuration for streaming\n */\n webrtc?: WebRTCConfig;\n\n /**\n * Whether the camera is active\n * @default true\n */\n isActive?: boolean;\n\n /**\n * Callback when camera is ready\n */\n onReady?: () => void;\n\n /**\n * Callback when an error occurs\n */\n onError?: (error: SmartCameraError) => void;\n}\n\n// ============================================================================\n// Error Handling\n// ============================================================================\n\n/**\n * Error codes for SmartCamera\n */\nexport type SmartCameraErrorCode =\n | 'CAMERA_UNAVAILABLE'\n | 'PERMISSION_DENIED'\n | 'WEBRTC_ERROR'\n | 'ML_KIT_ERROR'\n | 'FRAME_PROCESSOR_ERROR'\n | 'UNKNOWN_ERROR';\n\n/**\n * SmartCamera error\n */\nexport interface SmartCameraError {\n /**\n * Error code\n */\n code: SmartCameraErrorCode;\n\n /**\n * Human-readable error message\n */\n message: string;\n\n /**\n * Original native error (if available)\n */\n nativeError?: Error;\n}\n\n// ============================================================================\n// Hook Return Types\n// ============================================================================\n\n/**\n * Return type for useSmartCameraWebRTC hook\n */\nexport interface UseSmartCameraWebRTCResult {\n /**\n * The video track for WebRTC\n */\n videoTrack: MediaStreamTrack | null;\n\n /**\n * Start streaming to the peer connection\n */\n startStreaming: () => void;\n\n /**\n * Stop streaming\n */\n stopStreaming: () => void;\n\n /**\n * Switch between front and back camera\n */\n switchCamera: () => void;\n\n /**\n * Whether streaming is active\n */\n isStreaming: boolean;\n}\n\n/**\n * Return type for useFaceDetection hook\n */\nexport interface UseFaceDetectionResult {\n /**\n * Currently detected faces\n */\n faces: Face[];\n\n /**\n * Whether face detection is active/detecting\n */\n isDetecting: boolean;\n}\n\n/**\n * Return type for useBlinkDetection hook\n */\nexport interface UseBlinkDetectionResult {\n /**\n * Last blink event\n */\n lastBlink: BlinkEvent | null;\n\n /**\n * Total blink count\n */\n blinkCount: number;\n\n /**\n * Reset blink count\n */\n resetCount: () => void;\n}\n\n// ============================================================================\n// Camera Device Types\n// ============================================================================\n\n/**\n * Camera device information\n */\nexport interface CameraDevice {\n /**\n * Unique identifier for the camera device\n */\n id: string;\n\n /**\n * Human-readable name of the camera\n */\n name: string;\n\n /**\n * Camera position (front or back)\n */\n position: CameraFacing;\n\n /**\n * Whether the camera has a flash\n */\n hasFlash: boolean;\n\n /**\n * Whether the camera has a torch (flashlight)\n */\n hasTorch: boolean;\n\n /**\n * Whether the camera supports low-light boost\n */\n supportsLowLightBoost: boolean;\n}\n\n/**\n * Return type for useSmartCamera hook\n */\nexport interface UseSmartCameraResult {\n /**\n * Whether camera permission has been granted\n */\n hasPermission: boolean;\n\n /**\n * Request camera permission\n */\n requestPermission: () => Promise<boolean>;\n\n /**\n * Current camera device\n */\n device: CameraDevice | undefined;\n\n /**\n * Switch between front and back camera\n */\n switchCamera: () => void;\n\n /**\n * Current camera facing direction\n */\n currentCamera: CameraFacing;\n}\n\n// ============================================================================\n// Orientation Types\n// ============================================================================\n\n/**\n * Device orientation\n */\nexport type Orientation = 'portrait' | 'portrait-upside-down' | 'landscape-left' | 'landscape-right';\n\n/**\n * Camera output orientation\n */\nexport type OutputOrientation = Orientation | 'device';\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,OAAO;QACL,aAAa,EAAE,GAAY,EAAE;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,aAAa,IAAI,aAAa,EAAE,CAAC;gBACzC,aAAa,GAAG,GAAG,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,aAAa,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,YAAY,EAAE,CAAC,GAAW,EAAE,EAAE;YAC5B,mEAAmE;YACnE,yDAAyD;QAC3D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,EAAK,EACL,KAAa;IAEb,IAAI,SAAS,GAAyC,IAAI,CAAC;IAE3D,OAAO,CAAC,GAAG,IAAmB,EAAE,EAAE;QAChC,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QACD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACZ,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,EAAK,EACL,KAAa;IAEb,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,CAAC,GAAG,IAAmB,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC5B,QAAQ,GAAG,GAAG,CAAC;YACf,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,cAAsB,EAAE,EACxB,UAAkB,GAAG;IAErB,MAAM,IAAI,GAAsB,EAAE,CAAC;IAEnC,oBAAoB;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,OAAO,EAAE,GAAM,EAAE;YACf,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;gBACvB,OAAO,SAAS,CAAC,IAAI,CAAC;YACxB,CAAC;YAED,gCAAgC;YAChC,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClB,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;YAED,0CAA0C;YAC1C,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,CAAC,GAAM,EAAQ,EAAE;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;YACnD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,KAAK,EAAE,GAAS,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACf,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;YACzC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;SAC/C,CAAC;KACH,CAAC;AACJ,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAc,EACd,cAAoC,eAAe;IAEnD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,iCAAiC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAE5C,IAAI,IAAI,GAAyB,WAAW,CAAC;QAC7C,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,IAAI,GAAG,mBAAmB,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACzE,IAAI,GAAG,oBAAoB,CAAC;QAC9B,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,IAAI,GAAG,cAAc,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC3E,IAAI,GAAG,cAAc,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,uBAAuB,CAAC;QACjC,CAAC;QAED,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAoB,EACpB,YAAkC,eAAe;IAEjD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACzE,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAgC;IAC3E,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAqB,CAAC;QAClD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,eAAyB,CAAC;QAC/C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,YAAsB,CAAC;QAC5C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAqB,CAAC;QAC3C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,kBAA4B,CAAC;QAClD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QACtE,MAAM,CAAC,IAAI,CACT,iFAAiF;YACjF,uFAAuF,CACxF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAcD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,aAAqB,EAAE;IAC9D,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,gBAAgB;IAEnD,OAAO;QACL,UAAU,EAAE,GAAW,EAAE;YACvB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,QAAQ,EAAE,CAAC,SAAiB,EAAQ,EAAE;YACpC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC9C,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAErC,2BAA2B;YAC3B,IAAI,eAAe,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBACxC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;YAED,UAAU,EAAE,CAAC;YAEb,2BAA2B;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,GAAG,GAAG,aAAa,CAAC;gBACrC,IAAI,QAAQ,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC;oBACnC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,aAAa,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,UAAU,EAAE,GAAuB,EAAE;YACnC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,OAAO;gBACL,UAAU;gBACV,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;gBACtE,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACrC,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACrC,aAAa;aACd,CAAC;QACJ,CAAC;QAED,KAAK,EAAE,GAAS,EAAE;YAChB,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3B,UAAU,GAAG,CAAC,CAAC;YACf,aAAa,GAAG,CAAC,CAAC;YAClB,aAAa,GAAG,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["/**\n * SmartCamera utility functions\n */\n\n// ============================================================================\n// FPS Limiter\n// ============================================================================\n\n/**\n * Creates an FPS limiter for frame processing\n * \n * @param targetFps - Target frames per second\n * @returns Object with shouldProcess function\n * \n * @example\n * ```ts\n * const limiter = createFpsLimiter(15);\n * \n * const frameProcessor = useFrameProcessor((frame) => {\n * if (!limiter.shouldProcess()) return;\n * // Process frame...\n * }, []);\n * ```\n */\nexport function createFpsLimiter(targetFps: number) {\n const frameInterval = 1000 / targetFps;\n let lastFrameTime = 0;\n\n return {\n shouldProcess: (): boolean => {\n const now = Date.now();\n if (now - lastFrameTime >= frameInterval) {\n lastFrameTime = now;\n return true;\n }\n return false;\n },\n reset: () => {\n lastFrameTime = 0;\n },\n setTargetFps: (fps: number) => {\n // Note: This creates a new interval but doesn't update the closure\n // Consider using a ref if dynamic FPS changes are needed\n },\n };\n}\n\n// ============================================================================\n// Debounce\n// ============================================================================\n\n/**\n * Creates a debounced function\n * \n * @param fn - Function to debounce\n * @param delay - Delay in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: unknown[]) => unknown>(\n fn: T,\n delay: number\n): (...args: Parameters<T>) => void {\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n return (...args: Parameters<T>) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n fn(...args);\n timeoutId = null;\n }, delay);\n };\n}\n\n// ============================================================================\n// Throttle\n// ============================================================================\n\n/**\n * Creates a throttled function\n * \n * @param fn - Function to throttle\n * @param limit - Minimum time between calls in milliseconds\n * @returns Throttled function\n */\nexport function throttle<T extends (...args: unknown[]) => unknown>(\n fn: T,\n limit: number\n): (...args: Parameters<T>) => void {\n let lastCall = 0;\n\n return (...args: Parameters<T>) => {\n const now = Date.now();\n if (now - lastCall >= limit) {\n lastCall = now;\n fn(...args);\n }\n };\n}\n\n// ============================================================================\n// Memory Pool for Face Objects\n// ============================================================================\n\ninterface PooledObject<T> {\n data: T;\n inUse: boolean;\n}\n\n/**\n * Creates an object pool for reducing garbage collection\n * \n * @param factory - Factory function to create new objects\n * @param initialSize - Initial pool size\n * @param maxSize - Maximum pool size\n */\nexport function createObjectPool<T>(\n factory: () => T,\n initialSize: number = 10,\n maxSize: number = 100\n) {\n const pool: PooledObject<T>[] = [];\n\n // Pre-populate pool\n for (let i = 0; i < initialSize; i++) {\n pool.push({ data: factory(), inUse: false });\n }\n\n return {\n acquire: (): T => {\n // Find an available object\n const available = pool.find((obj) => !obj.inUse);\n if (available) {\n available.inUse = true;\n return available.data;\n }\n\n // Create new if pool not at max\n if (pool.length < maxSize) {\n const newObj = { data: factory(), inUse: true };\n pool.push(newObj);\n return newObj.data;\n }\n\n // Pool exhausted, create temporary object\n return factory();\n },\n\n release: (obj: T): void => {\n const pooledObj = pool.find((p) => p.data === obj);\n if (pooledObj) {\n pooledObj.inUse = false;\n }\n },\n\n clear: (): void => {\n pool.length = 0;\n },\n\n getStats: () => ({\n size: pool.length,\n inUse: pool.filter((p) => p.inUse).length,\n available: pool.filter((p) => !p.inUse).length,\n }),\n };\n}\n\n// ============================================================================\n// Error Utilities\n// ============================================================================\n\nimport type { SmartCameraError, SmartCameraErrorCode } from '../types';\n\n/**\n * Creates a SmartCameraError from an unknown error\n * \n * @param error - The original error\n * @param defaultCode - Default error code if not determinable\n * @returns SmartCameraError\n */\nexport function createSmartCameraError(\n error: unknown,\n defaultCode: SmartCameraErrorCode = 'UNKNOWN_ERROR'\n): SmartCameraError {\n if (error instanceof Error) {\n // Check for specific error types\n const message = error.message.toLowerCase();\n\n let code: SmartCameraErrorCode = defaultCode;\n if (message.includes('permission')) {\n code = 'PERMISSION_DENIED';\n } else if (message.includes('camera') && message.includes('unavailable')) {\n code = 'CAMERA_UNAVAILABLE';\n } else if (message.includes('webrtc')) {\n code = 'WEBRTC_ERROR';\n } else if (message.includes('mlkit') || message.includes('face detection')) {\n code = 'ML_KIT_ERROR';\n } else if (message.includes('frame processor')) {\n code = 'FRAME_PROCESSOR_ERROR';\n }\n\n return {\n code,\n message: error.message,\n nativeError: error,\n };\n }\n\n return {\n code: defaultCode,\n message: String(error),\n };\n}\n\n/**\n * Safely execute a function and return a SmartCameraError on failure\n */\nexport async function safeExecute<T>(\n fn: () => Promise<T>,\n errorCode: SmartCameraErrorCode = 'UNKNOWN_ERROR'\n): Promise<{ data: T; error: null } | { data: null; error: SmartCameraError }> {\n try {\n const data = await fn();\n return { data, error: null };\n } catch (error) {\n return { data: null, error: createSmartCameraError(error, errorCode) };\n }\n}\n\n// ============================================================================\n// Validation Utilities\n// ============================================================================\n\n/**\n * Validates face detection options\n */\nexport function validateFaceDetectionOptions(options: Record<string, unknown>): string[] {\n const errors: string[] = [];\n\n if (options.minFaceSize !== undefined) {\n const minFaceSize = options.minFaceSize as number;\n if (typeof minFaceSize !== 'number' || minFaceSize < 0 || minFaceSize > 1) {\n errors.push('minFaceSize must be a number between 0 and 1');\n }\n }\n\n if (options.performanceMode !== undefined) {\n const mode = options.performanceMode as string;\n if (mode !== 'fast' && mode !== 'accurate') {\n errors.push('performanceMode must be \"fast\" or \"accurate\"');\n }\n }\n\n if (options.landmarkMode !== undefined) {\n const mode = options.landmarkMode as string;\n if (mode !== 'none' && mode !== 'all') {\n errors.push('landmarkMode must be \"none\" or \"all\"');\n }\n }\n\n if (options.contourMode !== undefined) {\n const mode = options.contourMode as string;\n if (mode !== 'none' && mode !== 'all') {\n errors.push('contourMode must be \"none\" or \"all\"');\n }\n }\n\n if (options.classificationMode !== undefined) {\n const mode = options.classificationMode as string;\n if (mode !== 'none' && mode !== 'all') {\n errors.push('classificationMode must be \"none\" or \"all\"');\n }\n }\n\n // Warn about contourMode + trackingEnabled combination\n if (options.contourMode === 'all' && options.trackingEnabled === true) {\n errors.push(\n 'Warning: Using contourMode=\"all\" with trackingEnabled=true is not recommended. ' +\n 'Contour detection only works on the most prominent face, making tracking less useful.'\n );\n }\n\n return errors;\n}\n\n// ============================================================================\n// Performance Monitoring\n// ============================================================================\n\ninterface PerformanceMetrics {\n frameCount: number;\n averageProcessingTime: number;\n minProcessingTime: number;\n maxProcessingTime: number;\n droppedFrames: number;\n}\n\n/**\n * Creates a performance monitor for frame processing\n */\nexport function createPerformanceMonitor(windowSize: number = 30) {\n const processingTimes: number[] = [];\n let frameCount = 0;\n let droppedFrames = 0;\n let lastFrameTime = 0;\n const targetFrameTime = 1000 / 30; // 30 FPS target\n\n return {\n startFrame: (): number => {\n return Date.now();\n },\n\n endFrame: (startTime: number): void => {\n const processingTime = Date.now() - startTime;\n processingTimes.push(processingTime);\n \n // Keep only last N samples\n if (processingTimes.length > windowSize) {\n processingTimes.shift();\n }\n\n frameCount++;\n\n // Check for dropped frames\n const now = Date.now();\n if (lastFrameTime > 0) {\n const frameGap = now - lastFrameTime;\n if (frameGap > targetFrameTime * 2) {\n droppedFrames += Math.floor(frameGap / targetFrameTime) - 1;\n }\n }\n lastFrameTime = now;\n },\n\n getMetrics: (): PerformanceMetrics => {\n const times = processingTimes.length > 0 ? processingTimes : [0];\n return {\n frameCount,\n averageProcessingTime: times.reduce((a, b) => a + b, 0) / times.length,\n minProcessingTime: Math.min(...times),\n maxProcessingTime: Math.max(...times),\n droppedFrames,\n };\n },\n\n reset: (): void => {\n processingTimes.length = 0;\n frameCount = 0;\n droppedFrames = 0;\n lastFrameTime = 0;\n },\n };\n}\n\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,OAAO;QACL,aAAa,EAAE,GAAY,EAAE;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,aAAa,IAAI,aAAa,EAAE,CAAC;gBACzC,aAAa,GAAG,GAAG,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,aAAa,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,YAAY,EAAE,CAAC,GAAW,EAAE,EAAE;YAC5B,mEAAmE;YACnE,yDAAyD;QAC3D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,EAAK,EACL,KAAa;IAEb,IAAI,SAAS,GAAyC,IAAI,CAAC;IAE3D,OAAO,CAAC,GAAG,IAAmB,EAAE,EAAE;QAChC,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QACD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACZ,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,EAAK,EACL,KAAa;IAEb,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,CAAC,GAAG,IAAmB,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC5B,QAAQ,GAAG,GAAG,CAAC;YACf,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,cAAsB,EAAE,EACxB,UAAkB,GAAG;IAErB,MAAM,IAAI,GAAsB,EAAE,CAAC;IAEnC,oBAAoB;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,OAAO,EAAE,GAAM,EAAE;YACf,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;gBACvB,OAAO,SAAS,CAAC,IAAI,CAAC;YACxB,CAAC;YAED,gCAAgC;YAChC,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClB,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;YAED,0CAA0C;YAC1C,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,CAAC,GAAM,EAAQ,EAAE;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;YACnD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,KAAK,EAAE,GAAS,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACf,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;YACzC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;SAC/C,CAAC;KACH,CAAC;AACJ,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAc,EACd,cAAoC,eAAe;IAEnD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,iCAAiC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAE5C,IAAI,IAAI,GAAyB,WAAW,CAAC;QAC7C,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,IAAI,GAAG,mBAAmB,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACzE,IAAI,GAAG,oBAAoB,CAAC;QAC9B,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,IAAI,GAAG,cAAc,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC3E,IAAI,GAAG,cAAc,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,uBAAuB,CAAC;QACjC,CAAC;QAED,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAoB,EACpB,YAAkC,eAAe;IAEjD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACzE,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAgC;IAC3E,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAqB,CAAC;QAClD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,eAAyB,CAAC;QAC/C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,YAAsB,CAAC;QAC5C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAqB,CAAC;QAC3C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,kBAA4B,CAAC;QAClD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QACtE,MAAM,CAAC,IAAI,CACT,iFAAiF;YACjF,uFAAuF,CACxF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAcD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,aAAqB,EAAE;IAC9D,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,gBAAgB;IAEnD,OAAO;QACL,UAAU,EAAE,GAAW,EAAE;YACvB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,QAAQ,EAAE,CAAC,SAAiB,EAAQ,EAAE;YACpC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC9C,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAErC,2BAA2B;YAC3B,IAAI,eAAe,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBACxC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;YAED,UAAU,EAAE,CAAC;YAEb,2BAA2B;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,GAAG,GAAG,aAAa,CAAC;gBACrC,IAAI,QAAQ,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC;oBACnC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,aAAa,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,UAAU,EAAE,GAAuB,EAAE;YACnC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,OAAO;gBACL,UAAU;gBACV,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;gBACtE,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACrC,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACrC,aAAa;aACd,CAAC;QACJ,CAAC;QAED,KAAK,EAAE,GAAS,EAAE;YAChB,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3B,UAAU,GAAG,CAAC,CAAC;YACf,aAAa,GAAG,CAAC,CAAC;YAClB,aAAa,GAAG,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -2,6 +2,9 @@ import type { WebRTCVideoSourceConfig, WebRTCStreamStats, WebRTCQualitySettings
2
2
  /**
3
3
  * WebRTC Bridge for SmartCamera
4
4
  *
5
+ * NOTE: This is a stub implementation. WebRTC functionality is not yet implemented.
6
+ * This class provides the interface for future WebRTC integration.
7
+ *
5
8
  * This class provides a bridge between VisionCamera frames and WebRTC,
6
9
  * allowing camera frames to be streamed via WebRTC peer connections.
7
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"WebRTCBridge.d.ts","sourceRoot":"","sources":["../../src/webrtc/WebRTCBridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAwC;IAEtD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBpE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,SAAS,IAAI,uBAAuB,GAAG,IAAI;IAI3C;;;;OAIG;IACG,aAAa,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnE;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAgBnD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B;AAKD;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C"}
1
+ {"version":3,"file":"WebRTCBridge.d.ts","sourceRoot":"","sources":["../../src/webrtc/WebRTCBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAwC;IAEtD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAepE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,SAAS,IAAI,uBAAuB,GAAG,IAAI;IAI3C;;;;OAIG;IACG,aAAa,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAcnD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B;AAKD;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C"}
@@ -1,14 +1,18 @@
1
- import SmartCameraModule from '../SmartCameraModule';
2
1
  /**
3
2
  * WebRTC Bridge for SmartCamera
4
3
  *
4
+ * NOTE: This is a stub implementation. WebRTC functionality is not yet implemented.
5
+ * This class provides the interface for future WebRTC integration.
6
+ *
5
7
  * This class provides a bridge between VisionCamera frames and WebRTC,
6
8
  * allowing camera frames to be streamed via WebRTC peer connections.
7
9
  */
8
10
  export class WebRTCBridge {
9
- isInitialized = false;
10
- isStreaming = false;
11
- config = null;
11
+ constructor() {
12
+ this.isInitialized = false;
13
+ this.isStreaming = false;
14
+ this.config = null;
15
+ }
12
16
  /**
13
17
  * Initialize the WebRTC bridge
14
18
  *
@@ -18,7 +22,7 @@ export class WebRTCBridge {
18
22
  if (this.isInitialized) {
19
23
  return;
20
24
  }
21
- await SmartCameraModule.initializeWebRTC();
25
+ console.warn('[WebRTCBridge] WebRTC is not yet implemented');
22
26
  this.isInitialized = true;
23
27
  }
24
28
  /**
@@ -34,12 +38,8 @@ export class WebRTCBridge {
34
38
  console.warn('[WebRTCBridge] Already streaming, stopping first');
35
39
  await this.stopStreaming();
36
40
  }
41
+ console.warn('[WebRTCBridge] WebRTC streaming is not yet implemented');
37
42
  this.config = config;
38
- await SmartCameraModule.startWebRTCStream({
39
- width: config.width,
40
- height: config.height,
41
- frameRate: config.frameRate,
42
- });
43
43
  this.isStreaming = true;
44
44
  }
45
45
  /**
@@ -49,7 +49,6 @@ export class WebRTCBridge {
49
49
  if (!this.isStreaming) {
50
50
  return;
51
51
  }
52
- await SmartCameraModule.stopWebRTCStream();
53
52
  this.isStreaming = false;
54
53
  this.config = null;
55
54
  }
@@ -71,20 +70,18 @@ export class WebRTCBridge {
71
70
  * @param settings - Quality settings to apply
72
71
  */
73
72
  async updateQuality(settings) {
74
- // This would call a native method to adjust encoder settings
75
73
  console.log('[WebRTCBridge] Updating quality:', settings);
76
74
  }
77
75
  /**
78
76
  * Get current stream statistics
79
77
  */
80
78
  async getStats() {
79
+ var _a, _b;
81
80
  if (!this.isStreaming) {
82
81
  return null;
83
82
  }
84
- // This would call a native method to get stats
85
- // For now, return placeholder
86
83
  return {
87
- frameRate: this.config?.frameRate ?? 0,
84
+ frameRate: (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.frameRate) !== null && _b !== void 0 ? _b : 0,
88
85
  framesSent: 0,
89
86
  framesDropped: 0,
90
87
  bytesSent: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"WebRTCBridge.js","sourceRoot":"","sources":["../../src/webrtc/WebRTCBridge.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAOrD;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IACf,aAAa,GAAG,KAAK,CAAC;IACtB,WAAW,GAAG,KAAK,CAAC;IACpB,MAAM,GAAmC,IAAI,CAAC;IAEtD;;;;OAIG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,MAA+B;QAClD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,iBAAiB,CAAC,iBAAiB,CAAC;YACxC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,QAA+B;QACjD,6DAA6D;QAC7D,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+CAA+C;QAC/C,8BAA8B;QAC9B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC;YACtC,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;CACF;AAED,qCAAqC;AACrC,IAAI,cAAc,GAAwB,IAAI,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["import SmartCameraModule from '../SmartCameraModule';\nimport type {\n WebRTCVideoSourceConfig,\n WebRTCStreamStats,\n WebRTCQualitySettings,\n} from './types';\n\n/**\n * WebRTC Bridge for SmartCamera\n * \n * This class provides a bridge between VisionCamera frames and WebRTC,\n * allowing camera frames to be streamed via WebRTC peer connections.\n */\nexport class WebRTCBridge {\n private isInitialized = false;\n private isStreaming = false;\n private config: WebRTCVideoSourceConfig | null = null;\n\n /**\n * Initialize the WebRTC bridge\n * \n * This must be called before starting streaming.\n */\n async initialize(): Promise<void> {\n if (this.isInitialized) {\n return;\n }\n\n await SmartCameraModule.initializeWebRTC();\n this.isInitialized = true;\n }\n\n /**\n * Start streaming camera frames via WebRTC\n * \n * @param config - Video source configuration\n */\n async startStreaming(config: WebRTCVideoSourceConfig): Promise<void> {\n if (!this.isInitialized) {\n await this.initialize();\n }\n\n if (this.isStreaming) {\n console.warn('[WebRTCBridge] Already streaming, stopping first');\n await this.stopStreaming();\n }\n\n this.config = config;\n await SmartCameraModule.startWebRTCStream({\n width: config.width,\n height: config.height,\n frameRate: config.frameRate,\n });\n this.isStreaming = true;\n }\n\n /**\n * Stop streaming\n */\n async stopStreaming(): Promise<void> {\n if (!this.isStreaming) {\n return;\n }\n\n await SmartCameraModule.stopWebRTCStream();\n this.isStreaming = false;\n this.config = null;\n }\n\n /**\n * Check if currently streaming\n */\n getIsStreaming(): boolean {\n return this.isStreaming;\n }\n\n /**\n * Get current configuration\n */\n getConfig(): WebRTCVideoSourceConfig | null {\n return this.config;\n }\n\n /**\n * Update quality settings (if supported)\n * \n * @param settings - Quality settings to apply\n */\n async updateQuality(settings: WebRTCQualitySettings): Promise<void> {\n // This would call a native method to adjust encoder settings\n console.log('[WebRTCBridge] Updating quality:', settings);\n }\n\n /**\n * Get current stream statistics\n */\n async getStats(): Promise<WebRTCStreamStats | null> {\n if (!this.isStreaming) {\n return null;\n }\n\n // This would call a native method to get stats\n // For now, return placeholder\n return {\n frameRate: this.config?.frameRate ?? 0,\n framesSent: 0,\n framesDropped: 0,\n bytesSent: 0,\n bitrate: 0,\n };\n }\n\n /**\n * Cleanup and release resources\n */\n async destroy(): Promise<void> {\n await this.stopStreaming();\n this.isInitialized = false;\n }\n}\n\n// Singleton instance for convenience\nlet bridgeInstance: WebRTCBridge | null = null;\n\n/**\n * Get the shared WebRTC bridge instance\n */\nexport function getWebRTCBridge(): WebRTCBridge {\n if (!bridgeInstance) {\n bridgeInstance = new WebRTCBridge();\n }\n return bridgeInstance;\n}\n\n"]}
1
+ {"version":3,"file":"WebRTCBridge.js","sourceRoot":"","sources":["../../src/webrtc/WebRTCBridge.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,MAAM,OAAO,YAAY;IAAzB;QACU,kBAAa,GAAG,KAAK,CAAC;QACtB,gBAAW,GAAG,KAAK,CAAC;QACpB,WAAM,GAAmC,IAAI,CAAC;IA+FxD,CAAC;IA7FC;;;;OAIG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,MAA+B;QAClD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,QAA+B;QACjD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,SAAS,EAAE,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,mCAAI,CAAC;YACtC,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;CACF;AAED,qCAAqC;AACrC,IAAI,cAAc,GAAwB,IAAI,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * WebRTC Manager for SmartCamera
3
+ *
4
+ * This class provides utilities for managing WebRTC peer connections,
5
+ * media streams, and video calling functionality.
6
+ *
7
+ * Requires react-native-webrtc to be installed in the app.
8
+ */
9
+ import type { PeerConnectionConfig, MediaConstraints, SessionDescription, ICECandidateEvent, WebRTCConnectionState, ICEConnectionState } from './types';
10
+ /**
11
+ * Check if WebRTC is available
12
+ */
13
+ export declare function isWebRTCAvailable(): boolean;
14
+ /**
15
+ * WebRTC Manager class for handling peer connections and media streams
16
+ */
17
+ export declare class WebRTCManager {
18
+ private peerConnection;
19
+ private localStream;
20
+ private remoteStream;
21
+ private config;
22
+ private iceCandidateCallback;
23
+ private remoteStreamCallback;
24
+ private connectionStateCallback;
25
+ private iceConnectionStateCallback;
26
+ constructor(config?: PeerConnectionConfig);
27
+ /**
28
+ * Get local media stream (camera + microphone)
29
+ *
30
+ * @param constraints - Media constraints for video/audio
31
+ * @returns Promise resolving to MediaStream
32
+ */
33
+ getLocalStream(constraints?: MediaConstraints): Promise<MediaStream>;
34
+ /**
35
+ * Stop the local media stream
36
+ */
37
+ stopLocalStream(): void;
38
+ /**
39
+ * Get the current local stream
40
+ */
41
+ getLocalStreamInstance(): MediaStream | null;
42
+ /**
43
+ * Switch between front and back camera
44
+ */
45
+ switchCamera(): Promise<void>;
46
+ /**
47
+ * Toggle video track on/off
48
+ *
49
+ * @param enabled - Whether video should be enabled
50
+ */
51
+ toggleVideo(enabled: boolean): void;
52
+ /**
53
+ * Toggle audio track on/off
54
+ *
55
+ * @param enabled - Whether audio should be enabled
56
+ */
57
+ toggleAudio(enabled: boolean): void;
58
+ /**
59
+ * Create a new peer connection
60
+ *
61
+ * @param config - Optional peer connection configuration
62
+ * @returns The created RTCPeerConnection
63
+ */
64
+ createPeerConnection(config?: PeerConnectionConfig): RTCPeerConnection;
65
+ /**
66
+ * Get the current peer connection
67
+ */
68
+ getPeerConnection(): RTCPeerConnection | null;
69
+ /**
70
+ * Close the peer connection
71
+ */
72
+ closePeerConnection(): void;
73
+ /**
74
+ * Setup listeners for peer connection events
75
+ */
76
+ private setupPeerConnectionListeners;
77
+ /**
78
+ * Add local stream to peer connection
79
+ *
80
+ * @param stream - The local MediaStream to add
81
+ */
82
+ addLocalStream(stream: MediaStream): void;
83
+ /**
84
+ * Get the remote stream
85
+ */
86
+ getRemoteStream(): MediaStream | null;
87
+ /**
88
+ * Create an SDP offer
89
+ *
90
+ * @returns Promise resolving to SessionDescription
91
+ */
92
+ createOffer(): Promise<SessionDescription>;
93
+ /**
94
+ * Create an SDP answer
95
+ *
96
+ * @returns Promise resolving to SessionDescription
97
+ */
98
+ createAnswer(): Promise<SessionDescription>;
99
+ /**
100
+ * Set the remote SDP description
101
+ *
102
+ * @param description - The remote SessionDescription
103
+ */
104
+ setRemoteDescription(description: SessionDescription): Promise<void>;
105
+ /**
106
+ * Add an ICE candidate from remote peer
107
+ *
108
+ * @param candidate - The ICE candidate to add
109
+ */
110
+ addIceCandidate(candidate: RTCIceCandidate): Promise<void>;
111
+ /**
112
+ * Register callback for ICE candidates
113
+ *
114
+ * @param callback - Function to call when ICE candidate is generated
115
+ */
116
+ onIceCandidate(callback: (event: ICECandidateEvent) => void): void;
117
+ /**
118
+ * Register callback for remote stream
119
+ *
120
+ * @param callback - Function to call when remote stream is received
121
+ */
122
+ onRemoteStream(callback: (stream: MediaStream) => void): void;
123
+ /**
124
+ * Register callback for connection state changes
125
+ *
126
+ * @param callback - Function to call when connection state changes
127
+ */
128
+ onConnectionStateChange(callback: (state: WebRTCConnectionState) => void): void;
129
+ /**
130
+ * Register callback for ICE connection state changes
131
+ *
132
+ * @param callback - Function to call when ICE connection state changes
133
+ */
134
+ onIceConnectionStateChange(callback: (state: ICEConnectionState) => void): void;
135
+ /**
136
+ * Clean up all resources
137
+ */
138
+ cleanup(): void;
139
+ }
140
+ /**
141
+ * Get the shared WebRTC manager instance
142
+ */
143
+ export declare function getWebRTCManager(config?: PeerConnectionConfig): WebRTCManager;
144
+ /**
145
+ * Create a new WebRTC manager instance
146
+ */
147
+ export declare function createWebRTCManager(config?: PeerConnectionConfig): WebRTCManager;
148
+ //# sourceMappingURL=WebRTCManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebRTCManager.d.ts","sourceRoot":"","sources":["../../src/webrtc/WebRTCManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAInB,MAAM,SAAS,CAAC;AA4BjB;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,oBAAoB,CAAqD;IACjF,OAAO,CAAC,oBAAoB,CAAgD;IAC5E,OAAO,CAAC,uBAAuB,CAAyD;IACxF,OAAO,CAAC,0BAA0B,CAAsD;gBAE5E,MAAM,CAAC,EAAE,oBAAoB;IAezC;;;;;OAKG;IACG,cAAc,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAkC1E;;OAEG;IACH,eAAe,IAAI,IAAI;IASvB;;OAEG;IACH,sBAAsB,IAAI,WAAW,GAAG,IAAI;IAI5C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAanC;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQnC;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAYnC;;;;;OAKG;IACH,oBAAoB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,iBAAiB;IActE;;OAEG;IACH,iBAAiB,IAAI,iBAAiB,GAAG,IAAI;IAI7C;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAQ3B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA4CpC;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAUzC;;OAEG;IACH,eAAe,IAAI,WAAW,GAAG,IAAI;IAQrC;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAkBhD;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAcjD;;;;OAIG;IACG,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1E;;;;OAIG;IACG,eAAe,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhE;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAIlE;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAI7D;;;;OAIG;IACH,uBAAuB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAAG,IAAI;IAI/E;;;;OAIG;IACH,0BAA0B,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,IAAI;IAQ/E;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAK7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAEhF"}