@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.
- package/CHANGELOG.md +75 -3
- package/README.md +259 -206
- package/android/build.gradle +14 -39
- package/android/src/main/java/com/smartcamera/FaceDetectorFrameProcessorPlugin.kt +324 -0
- package/android/src/main/java/com/smartcamera/SmartCameraPackage.kt +28 -0
- package/build/detection/blinkProcessor.js +2 -1
- package/build/detection/blinkProcessor.js.map +1 -1
- package/build/detection/faceDetector.d.ts +4 -4
- package/build/detection/faceDetector.d.ts.map +1 -1
- package/build/detection/faceDetector.js +31 -11
- package/build/detection/faceDetector.js.map +1 -1
- package/build/detection/index.d.ts +1 -1
- package/build/detection/index.d.ts.map +1 -1
- package/build/detection/index.js +1 -1
- package/build/detection/index.js.map +1 -1
- package/build/detection/staticImageDetector.d.ts +11 -11
- package/build/detection/staticImageDetector.d.ts.map +1 -1
- package/build/detection/staticImageDetector.js +19 -23
- package/build/detection/staticImageDetector.js.map +1 -1
- package/build/hooks/index.d.ts +6 -0
- package/build/hooks/index.d.ts.map +1 -1
- package/build/hooks/index.js +8 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/useBlinkDetection.d.ts +27 -16
- package/build/hooks/useBlinkDetection.d.ts.map +1 -1
- package/build/hooks/useBlinkDetection.js +63 -37
- package/build/hooks/useBlinkDetection.js.map +1 -1
- package/build/hooks/useFaceDetection.js +3 -2
- package/build/hooks/useFaceDetection.js.map +1 -1
- package/build/hooks/useFaceDetector.d.ts +123 -0
- package/build/hooks/useFaceDetector.d.ts.map +1 -0
- package/build/hooks/useFaceDetector.js +133 -0
- package/build/hooks/useFaceDetector.js.map +1 -0
- package/build/hooks/useSmartCamera.js.map +1 -1
- package/build/hooks/useSmartCameraWebRTC.d.ts +3 -5
- package/build/hooks/useSmartCameraWebRTC.d.ts.map +1 -1
- package/build/hooks/useSmartCameraWebRTC.js +19 -87
- package/build/hooks/useSmartCameraWebRTC.js.map +1 -1
- package/build/hooks/useWebRTC.d.ts +88 -0
- package/build/hooks/useWebRTC.d.ts.map +1 -0
- package/build/hooks/useWebRTC.js +394 -0
- package/build/hooks/useWebRTC.js.map +1 -0
- package/build/hooks/useWebRTCWithDetection.d.ts +89 -0
- package/build/hooks/useWebRTCWithDetection.d.ts.map +1 -0
- package/build/hooks/useWebRTCWithDetection.js +131 -0
- package/build/hooks/useWebRTCWithDetection.js.map +1 -0
- package/build/index.d.ts +24 -10
- package/build/index.d.ts.map +1 -1
- package/build/index.js +38 -13
- package/build/index.js.map +1 -1
- package/build/types.d.ts +28 -12
- package/build/types.d.ts.map +1 -1
- package/build/types.js.map +1 -1
- package/build/utils/index.js.map +1 -1
- package/build/webrtc/WebRTCBridge.d.ts +3 -0
- package/build/webrtc/WebRTCBridge.d.ts.map +1 -1
- package/build/webrtc/WebRTCBridge.js +12 -15
- package/build/webrtc/WebRTCBridge.js.map +1 -1
- package/build/webrtc/WebRTCManager.d.ts +148 -0
- package/build/webrtc/WebRTCManager.d.ts.map +1 -0
- package/build/webrtc/WebRTCManager.js +383 -0
- package/build/webrtc/WebRTCManager.js.map +1 -0
- package/build/webrtc/index.d.ts +3 -1
- package/build/webrtc/index.d.ts.map +1 -1
- package/build/webrtc/index.js +5 -0
- package/build/webrtc/index.js.map +1 -1
- package/build/webrtc/types.d.ts +212 -4
- package/build/webrtc/types.d.ts.map +1 -1
- package/build/webrtc/types.js +34 -1
- package/build/webrtc/types.js.map +1 -1
- package/ios/FaceDetectorFrameProcessorPlugin.m +11 -0
- package/ios/FaceDetectorFrameProcessorPlugin.swift +304 -0
- package/package.json +11 -11
- package/react-native-smart-camera.podspec +32 -0
- package/src/detection/blinkProcessor.ts +127 -0
- package/src/detection/faceDetector.ts +78 -0
- package/src/detection/index.ts +3 -0
- package/src/detection/staticImageDetector.ts +53 -0
- package/src/hooks/index.ts +26 -0
- package/src/hooks/useBlinkDetection.ts +127 -0
- package/src/hooks/useFaceDetection.ts +105 -0
- package/src/hooks/useFaceDetector.ts +191 -0
- package/src/hooks/useSmartCamera.ts +83 -0
- package/src/hooks/useSmartCameraWebRTC.ts +120 -0
- package/src/hooks/useWebRTC.ts +453 -0
- package/src/hooks/useWebRTCWithDetection.ts +181 -0
- package/src/index.ts +170 -0
- package/src/types.ts +636 -0
- package/src/utils/index.ts +355 -0
- package/src/webrtc/WebRTCBridge.ts +127 -0
- package/src/webrtc/WebRTCManager.ts +453 -0
- package/src/webrtc/index.ts +50 -0
- package/src/webrtc/types.ts +361 -0
- package/android/build/.transforms/e0a0b120a9ccc3a8de4f5784bc36b161/results.bin +0 -1
- package/android/build/.transforms/e0a0b120a9ccc3a8de4f5784bc36b161/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/generated/source/buildConfig/debug/expo/modules/smartcamera/BuildConfig.java +0 -10
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +0 -7
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +0 -18
- package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +0 -6
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +0 -1
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
- package/android/build/intermediates/java_res/debug/out/META-INF/arfuhad-react-native-smart-camera_debug.kotlin_module +0 -0
- package/android/build/intermediates/javac/debug/classes/expo/modules/smartcamera/BuildConfig.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +0 -2
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +0 -7
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +0 -7
- package/android/build/intermediates/navigation_json/debug/navigation.json +0 -1
- package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +0 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -16
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/arfuhad-react-native-smart-camera_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/DetectedFace.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceBounds.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceContoursData.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceDetectionOptions.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/FaceLandmarksData.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader$loadImage$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/ImageLoader.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector$detectFaces$2$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector$detectFaces$2$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetector.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetectorKt$sam$com_google_android_gms_tasks_OnSuccessListener$0.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/MLKitFaceDetectorKt.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/PointData.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$1$1$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$1$3$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$1$4$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunction$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunction$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunction$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$AsyncFunctionWithPromise$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$Function$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$FunctionWithoutArgs$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$FunctionWithoutArgs$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$OnActivityEntersBackground$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$OnActivityEntersForeground$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule$definition$lambda$10$$inlined$OnDestroy$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/SmartCameraView.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/WebRTCFrameBridge$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/smartcamera/WebRTCFrameBridge.class +0 -0
- package/android/src/main/java/expo/modules/smartcamera/ImageLoader.kt +0 -106
- package/android/src/main/java/expo/modules/smartcamera/MLKitFaceDetector.kt +0 -273
- package/android/src/main/java/expo/modules/smartcamera/SmartCameraModule.kt +0 -205
- package/android/src/main/java/expo/modules/smartcamera/SmartCameraView.kt +0 -153
- package/android/src/main/java/expo/modules/smartcamera/WebRTCFrameBridge.kt +0 -184
- package/build/SmartCamera.d.ts +0 -17
- package/build/SmartCamera.d.ts.map +0 -1
- package/build/SmartCamera.js +0 -270
- package/build/SmartCamera.js.map +0 -1
- package/build/SmartCameraModule.d.ts +0 -112
- package/build/SmartCameraModule.d.ts.map +0 -1
- package/build/SmartCameraModule.js +0 -121
- package/build/SmartCameraModule.js.map +0 -1
- package/build/SmartCameraView.d.ts +0 -8
- package/build/SmartCameraView.d.ts.map +0 -1
- package/build/SmartCameraView.js +0 -7
- package/build/SmartCameraView.js.map +0 -1
- package/expo-module.config.json +0 -9
- package/ios/MLKitFaceDetector.swift +0 -310
- package/ios/SmartCamera.podspec +0 -33
- package/ios/SmartCameraModule.swift +0 -225
- package/ios/SmartCameraView.swift +0 -146
- package/ios/WebRTCFrameBridge.swift +0 -150
|
@@ -0,0 +1,383 @@
|
|
|
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 from react-native-webrtc (peer dependency)
|
|
10
|
+
let RTCPeerConnection;
|
|
11
|
+
let RTCSessionDescription;
|
|
12
|
+
let RTCIceCandidate;
|
|
13
|
+
let mediaDevices;
|
|
14
|
+
// Lazy load react-native-webrtc to avoid errors when not installed
|
|
15
|
+
function loadWebRTC() {
|
|
16
|
+
if (RTCPeerConnection)
|
|
17
|
+
return true;
|
|
18
|
+
try {
|
|
19
|
+
const webrtc = require('react-native-webrtc');
|
|
20
|
+
RTCPeerConnection = webrtc.RTCPeerConnection;
|
|
21
|
+
RTCSessionDescription = webrtc.RTCSessionDescription;
|
|
22
|
+
RTCIceCandidate = webrtc.RTCIceCandidate;
|
|
23
|
+
mediaDevices = webrtc.mediaDevices;
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error('[WebRTCManager] react-native-webrtc is not installed. ' +
|
|
28
|
+
'Please install it: npm install react-native-webrtc');
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if WebRTC is available
|
|
34
|
+
*/
|
|
35
|
+
export function isWebRTCAvailable() {
|
|
36
|
+
return loadWebRTC();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* WebRTC Manager class for handling peer connections and media streams
|
|
40
|
+
*/
|
|
41
|
+
export class WebRTCManager {
|
|
42
|
+
constructor(config) {
|
|
43
|
+
this.peerConnection = null;
|
|
44
|
+
this.localStream = null;
|
|
45
|
+
this.remoteStream = null;
|
|
46
|
+
this.iceCandidateCallback = null;
|
|
47
|
+
this.remoteStreamCallback = null;
|
|
48
|
+
this.connectionStateCallback = null;
|
|
49
|
+
this.iceConnectionStateCallback = null;
|
|
50
|
+
this.config = config || {
|
|
51
|
+
iceServers: [
|
|
52
|
+
{ urls: 'stun:stun.l.google.com:19302' },
|
|
53
|
+
{ urls: 'stun:stun1.l.google.com:19302' },
|
|
54
|
+
],
|
|
55
|
+
iceTransportPolicy: 'all',
|
|
56
|
+
bundlePolicy: 'balanced',
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// ==========================================================================
|
|
60
|
+
// Local Stream Management
|
|
61
|
+
// ==========================================================================
|
|
62
|
+
/**
|
|
63
|
+
* Get local media stream (camera + microphone)
|
|
64
|
+
*
|
|
65
|
+
* @param constraints - Media constraints for video/audio
|
|
66
|
+
* @returns Promise resolving to MediaStream
|
|
67
|
+
*/
|
|
68
|
+
async getLocalStream(constraints) {
|
|
69
|
+
if (!loadWebRTC()) {
|
|
70
|
+
throw new Error('react-native-webrtc is not available');
|
|
71
|
+
}
|
|
72
|
+
const defaultConstraints = {
|
|
73
|
+
video: {
|
|
74
|
+
width: { ideal: 1280 },
|
|
75
|
+
height: { ideal: 720 },
|
|
76
|
+
frameRate: { ideal: 30 },
|
|
77
|
+
facingMode: 'user',
|
|
78
|
+
},
|
|
79
|
+
audio: {
|
|
80
|
+
echoCancellation: true,
|
|
81
|
+
noiseSuppression: true,
|
|
82
|
+
autoGainControl: true,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
const mergedConstraints = Object.assign(Object.assign({}, defaultConstraints), constraints);
|
|
86
|
+
try {
|
|
87
|
+
const stream = await mediaDevices.getUserMedia(mergedConstraints);
|
|
88
|
+
this.localStream = stream;
|
|
89
|
+
return stream;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error('[WebRTCManager] Failed to get local stream:', error);
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Stop the local media stream
|
|
98
|
+
*/
|
|
99
|
+
stopLocalStream() {
|
|
100
|
+
if (this.localStream) {
|
|
101
|
+
this.localStream.getTracks().forEach((track) => {
|
|
102
|
+
track.stop();
|
|
103
|
+
});
|
|
104
|
+
this.localStream = null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get the current local stream
|
|
109
|
+
*/
|
|
110
|
+
getLocalStreamInstance() {
|
|
111
|
+
return this.localStream;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Switch between front and back camera
|
|
115
|
+
*/
|
|
116
|
+
async switchCamera() {
|
|
117
|
+
if (!this.localStream) {
|
|
118
|
+
throw new Error('No local stream available');
|
|
119
|
+
}
|
|
120
|
+
const videoTrack = this.localStream.getVideoTracks()[0];
|
|
121
|
+
if (videoTrack && typeof videoTrack._switchCamera === 'function') {
|
|
122
|
+
videoTrack._switchCamera();
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
throw new Error('Camera switch not supported');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Toggle video track on/off
|
|
130
|
+
*
|
|
131
|
+
* @param enabled - Whether video should be enabled
|
|
132
|
+
*/
|
|
133
|
+
toggleVideo(enabled) {
|
|
134
|
+
if (this.localStream) {
|
|
135
|
+
this.localStream.getVideoTracks().forEach((track) => {
|
|
136
|
+
track.enabled = enabled;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Toggle audio track on/off
|
|
142
|
+
*
|
|
143
|
+
* @param enabled - Whether audio should be enabled
|
|
144
|
+
*/
|
|
145
|
+
toggleAudio(enabled) {
|
|
146
|
+
if (this.localStream) {
|
|
147
|
+
this.localStream.getAudioTracks().forEach((track) => {
|
|
148
|
+
track.enabled = enabled;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// ==========================================================================
|
|
153
|
+
// Peer Connection Management
|
|
154
|
+
// ==========================================================================
|
|
155
|
+
/**
|
|
156
|
+
* Create a new peer connection
|
|
157
|
+
*
|
|
158
|
+
* @param config - Optional peer connection configuration
|
|
159
|
+
* @returns The created RTCPeerConnection
|
|
160
|
+
*/
|
|
161
|
+
createPeerConnection(config) {
|
|
162
|
+
if (!loadWebRTC()) {
|
|
163
|
+
throw new Error('react-native-webrtc is not available');
|
|
164
|
+
}
|
|
165
|
+
const pcConfig = config || this.config;
|
|
166
|
+
const pc = new RTCPeerConnection(pcConfig);
|
|
167
|
+
this.peerConnection = pc;
|
|
168
|
+
this.setupPeerConnectionListeners();
|
|
169
|
+
return pc;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get the current peer connection
|
|
173
|
+
*/
|
|
174
|
+
getPeerConnection() {
|
|
175
|
+
return this.peerConnection;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Close the peer connection
|
|
179
|
+
*/
|
|
180
|
+
closePeerConnection() {
|
|
181
|
+
if (this.peerConnection) {
|
|
182
|
+
this.peerConnection.close();
|
|
183
|
+
this.peerConnection = null;
|
|
184
|
+
}
|
|
185
|
+
this.remoteStream = null;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Setup listeners for peer connection events
|
|
189
|
+
*/
|
|
190
|
+
setupPeerConnectionListeners() {
|
|
191
|
+
if (!this.peerConnection)
|
|
192
|
+
return;
|
|
193
|
+
// Handle ICE candidates
|
|
194
|
+
this.peerConnection.onicecandidate = (event) => {
|
|
195
|
+
var _a, _b;
|
|
196
|
+
if (this.iceCandidateCallback) {
|
|
197
|
+
this.iceCandidateCallback({
|
|
198
|
+
candidate: event.candidate,
|
|
199
|
+
sdpMid: (_a = event.candidate) === null || _a === void 0 ? void 0 : _a.sdpMid,
|
|
200
|
+
sdpMLineIndex: (_b = event.candidate) === null || _b === void 0 ? void 0 : _b.sdpMLineIndex,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
// Handle remote stream
|
|
205
|
+
this.peerConnection.ontrack = (event) => {
|
|
206
|
+
if (event.streams && event.streams[0]) {
|
|
207
|
+
const stream = event.streams[0];
|
|
208
|
+
this.remoteStream = stream;
|
|
209
|
+
if (this.remoteStreamCallback) {
|
|
210
|
+
this.remoteStreamCallback(stream);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
// Handle connection state changes
|
|
215
|
+
this.peerConnection.onconnectionstatechange = () => {
|
|
216
|
+
if (this.connectionStateCallback && this.peerConnection) {
|
|
217
|
+
this.connectionStateCallback(this.peerConnection.connectionState);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
// Handle ICE connection state changes
|
|
221
|
+
this.peerConnection.oniceconnectionstatechange = () => {
|
|
222
|
+
if (this.iceConnectionStateCallback && this.peerConnection) {
|
|
223
|
+
this.iceConnectionStateCallback(this.peerConnection.iceConnectionState);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Add local stream to peer connection
|
|
229
|
+
*
|
|
230
|
+
* @param stream - The local MediaStream to add
|
|
231
|
+
*/
|
|
232
|
+
addLocalStream(stream) {
|
|
233
|
+
if (!this.peerConnection) {
|
|
234
|
+
throw new Error('Peer connection not created');
|
|
235
|
+
}
|
|
236
|
+
stream.getTracks().forEach((track) => {
|
|
237
|
+
this.peerConnection.addTrack(track, stream);
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Get the remote stream
|
|
242
|
+
*/
|
|
243
|
+
getRemoteStream() {
|
|
244
|
+
return this.remoteStream;
|
|
245
|
+
}
|
|
246
|
+
// ==========================================================================
|
|
247
|
+
// Signaling Helpers
|
|
248
|
+
// ==========================================================================
|
|
249
|
+
/**
|
|
250
|
+
* Create an SDP offer
|
|
251
|
+
*
|
|
252
|
+
* @returns Promise resolving to SessionDescription
|
|
253
|
+
*/
|
|
254
|
+
async createOffer() {
|
|
255
|
+
var _a;
|
|
256
|
+
if (!this.peerConnection) {
|
|
257
|
+
throw new Error('Peer connection not created');
|
|
258
|
+
}
|
|
259
|
+
const offer = await this.peerConnection.createOffer({
|
|
260
|
+
offerToReceiveAudio: true,
|
|
261
|
+
offerToReceiveVideo: true,
|
|
262
|
+
});
|
|
263
|
+
await this.peerConnection.setLocalDescription(offer);
|
|
264
|
+
return {
|
|
265
|
+
type: 'offer',
|
|
266
|
+
sdp: (_a = offer.sdp) !== null && _a !== void 0 ? _a : '',
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Create an SDP answer
|
|
271
|
+
*
|
|
272
|
+
* @returns Promise resolving to SessionDescription
|
|
273
|
+
*/
|
|
274
|
+
async createAnswer() {
|
|
275
|
+
var _a;
|
|
276
|
+
if (!this.peerConnection) {
|
|
277
|
+
throw new Error('Peer connection not created');
|
|
278
|
+
}
|
|
279
|
+
const answer = await this.peerConnection.createAnswer();
|
|
280
|
+
await this.peerConnection.setLocalDescription(answer);
|
|
281
|
+
return {
|
|
282
|
+
type: 'answer',
|
|
283
|
+
sdp: (_a = answer.sdp) !== null && _a !== void 0 ? _a : '',
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Set the remote SDP description
|
|
288
|
+
*
|
|
289
|
+
* @param description - The remote SessionDescription
|
|
290
|
+
*/
|
|
291
|
+
async setRemoteDescription(description) {
|
|
292
|
+
if (!this.peerConnection) {
|
|
293
|
+
throw new Error('Peer connection not created');
|
|
294
|
+
}
|
|
295
|
+
if (!loadWebRTC()) {
|
|
296
|
+
throw new Error('react-native-webrtc is not available');
|
|
297
|
+
}
|
|
298
|
+
const rtcDescription = new RTCSessionDescription(description);
|
|
299
|
+
await this.peerConnection.setRemoteDescription(rtcDescription);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Add an ICE candidate from remote peer
|
|
303
|
+
*
|
|
304
|
+
* @param candidate - The ICE candidate to add
|
|
305
|
+
*/
|
|
306
|
+
async addIceCandidate(candidate) {
|
|
307
|
+
if (!this.peerConnection) {
|
|
308
|
+
throw new Error('Peer connection not created');
|
|
309
|
+
}
|
|
310
|
+
if (!loadWebRTC()) {
|
|
311
|
+
throw new Error('react-native-webrtc is not available');
|
|
312
|
+
}
|
|
313
|
+
const iceCandidate = new RTCIceCandidate(candidate);
|
|
314
|
+
await this.peerConnection.addIceCandidate(iceCandidate);
|
|
315
|
+
}
|
|
316
|
+
// ==========================================================================
|
|
317
|
+
// Event Callbacks
|
|
318
|
+
// ==========================================================================
|
|
319
|
+
/**
|
|
320
|
+
* Register callback for ICE candidates
|
|
321
|
+
*
|
|
322
|
+
* @param callback - Function to call when ICE candidate is generated
|
|
323
|
+
*/
|
|
324
|
+
onIceCandidate(callback) {
|
|
325
|
+
this.iceCandidateCallback = callback;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Register callback for remote stream
|
|
329
|
+
*
|
|
330
|
+
* @param callback - Function to call when remote stream is received
|
|
331
|
+
*/
|
|
332
|
+
onRemoteStream(callback) {
|
|
333
|
+
this.remoteStreamCallback = callback;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Register callback for connection state changes
|
|
337
|
+
*
|
|
338
|
+
* @param callback - Function to call when connection state changes
|
|
339
|
+
*/
|
|
340
|
+
onConnectionStateChange(callback) {
|
|
341
|
+
this.connectionStateCallback = callback;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Register callback for ICE connection state changes
|
|
345
|
+
*
|
|
346
|
+
* @param callback - Function to call when ICE connection state changes
|
|
347
|
+
*/
|
|
348
|
+
onIceConnectionStateChange(callback) {
|
|
349
|
+
this.iceConnectionStateCallback = callback;
|
|
350
|
+
}
|
|
351
|
+
// ==========================================================================
|
|
352
|
+
// Cleanup
|
|
353
|
+
// ==========================================================================
|
|
354
|
+
/**
|
|
355
|
+
* Clean up all resources
|
|
356
|
+
*/
|
|
357
|
+
cleanup() {
|
|
358
|
+
this.stopLocalStream();
|
|
359
|
+
this.closePeerConnection();
|
|
360
|
+
this.iceCandidateCallback = null;
|
|
361
|
+
this.remoteStreamCallback = null;
|
|
362
|
+
this.connectionStateCallback = null;
|
|
363
|
+
this.iceConnectionStateCallback = null;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
// Singleton instance for convenience
|
|
367
|
+
let managerInstance = null;
|
|
368
|
+
/**
|
|
369
|
+
* Get the shared WebRTC manager instance
|
|
370
|
+
*/
|
|
371
|
+
export function getWebRTCManager(config) {
|
|
372
|
+
if (!managerInstance) {
|
|
373
|
+
managerInstance = new WebRTCManager(config);
|
|
374
|
+
}
|
|
375
|
+
return managerInstance;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Create a new WebRTC manager instance
|
|
379
|
+
*/
|
|
380
|
+
export function createWebRTCManager(config) {
|
|
381
|
+
return new WebRTCManager(config);
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=WebRTCManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebRTCManager.js","sourceRoot":"","sources":["../../src/webrtc/WebRTCManager.ts"],"names":[],"mappings":"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"}
|
package/build/webrtc/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { WebRTCManager, getWebRTCManager, createWebRTCManager, isWebRTCAvailable, } from './WebRTCManager';
|
|
1
2
|
export { WebRTCBridge, getWebRTCBridge } from './WebRTCBridge';
|
|
2
|
-
export type {
|
|
3
|
+
export type { ICEServer, PeerConnectionConfig, VideoConstraints, AudioConstraints, MediaConstraints, CallState, WebRTCConnectionState, ICEConnectionState, ICEGatheringState, SignalingState, VideoFrameFormat, WebRTCVideoSourceConfig, WebRTCStreamStats, WebRTCQualitySettings, WebRTCStreamEvent, ICECandidateEvent, SessionDescription, UseWebRTCOptions, UseWebRTCResult, UseWebRTCWithDetectionOptions, } from './types';
|
|
4
|
+
export { DEFAULT_ICE_SERVERS, DEFAULT_PEER_CONNECTION_CONFIG, DEFAULT_MEDIA_CONSTRAINTS, } from './types';
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/webrtc/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/webrtc/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAG/D,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,EAGlB,gBAAgB,EAChB,eAAe,EACf,6BAA6B,GAC9B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,SAAS,CAAC"}
|
package/build/webrtc/index.js
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
|
+
// WebRTC Manager
|
|
2
|
+
export { WebRTCManager, getWebRTCManager, createWebRTCManager, isWebRTCAvailable, } from './WebRTCManager';
|
|
3
|
+
// Legacy Bridge (deprecated, use WebRTCManager instead)
|
|
1
4
|
export { WebRTCBridge, getWebRTCBridge } from './WebRTCBridge';
|
|
5
|
+
// Default configurations
|
|
6
|
+
export { DEFAULT_ICE_SERVERS, DEFAULT_PEER_CONNECTION_CONFIG, DEFAULT_MEDIA_CONSTRAINTS, } from './types';
|
|
2
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/webrtc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/webrtc/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,wDAAwD;AACxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAmC/D,yBAAyB;AACzB,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,SAAS,CAAC"}
|
package/build/webrtc/types.d.ts
CHANGED
|
@@ -1,6 +1,95 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WebRTC-related types for the SmartCamera module
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* ICE server configuration for STUN/TURN servers
|
|
6
|
+
*/
|
|
7
|
+
export interface ICEServer {
|
|
8
|
+
/** STUN/TURN server URLs */
|
|
9
|
+
urls: string | string[];
|
|
10
|
+
/** Username for TURN authentication */
|
|
11
|
+
username?: string;
|
|
12
|
+
/** Credential for TURN authentication */
|
|
13
|
+
credential?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Peer connection configuration
|
|
17
|
+
*/
|
|
18
|
+
export interface PeerConnectionConfig {
|
|
19
|
+
/** ICE servers (STUN/TURN) */
|
|
20
|
+
iceServers?: ICEServer[];
|
|
21
|
+
/** ICE transport policy */
|
|
22
|
+
iceTransportPolicy?: 'all' | 'relay';
|
|
23
|
+
/** Bundle policy */
|
|
24
|
+
bundlePolicy?: 'balanced' | 'max-bundle' | 'max-compat';
|
|
25
|
+
/** RTCP mux policy */
|
|
26
|
+
rtcpMuxPolicy?: 'require';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Video constraints for getUserMedia
|
|
30
|
+
*/
|
|
31
|
+
export interface VideoConstraints {
|
|
32
|
+
/** Frame width in pixels */
|
|
33
|
+
width?: number | {
|
|
34
|
+
min?: number;
|
|
35
|
+
ideal?: number;
|
|
36
|
+
max?: number;
|
|
37
|
+
};
|
|
38
|
+
/** Frame height in pixels */
|
|
39
|
+
height?: number | {
|
|
40
|
+
min?: number;
|
|
41
|
+
ideal?: number;
|
|
42
|
+
max?: number;
|
|
43
|
+
};
|
|
44
|
+
/** Target frame rate */
|
|
45
|
+
frameRate?: number | {
|
|
46
|
+
min?: number;
|
|
47
|
+
ideal?: number;
|
|
48
|
+
max?: number;
|
|
49
|
+
};
|
|
50
|
+
/** Camera facing mode */
|
|
51
|
+
facingMode?: 'user' | 'environment';
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Audio constraints for getUserMedia
|
|
55
|
+
*/
|
|
56
|
+
export interface AudioConstraints {
|
|
57
|
+
/** Enable echo cancellation */
|
|
58
|
+
echoCancellation?: boolean;
|
|
59
|
+
/** Enable noise suppression */
|
|
60
|
+
noiseSuppression?: boolean;
|
|
61
|
+
/** Enable auto gain control */
|
|
62
|
+
autoGainControl?: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Media stream constraints
|
|
66
|
+
*/
|
|
67
|
+
export interface MediaConstraints {
|
|
68
|
+
/** Video constraints (false to disable video) */
|
|
69
|
+
video?: boolean | VideoConstraints;
|
|
70
|
+
/** Audio constraints (false to disable audio) */
|
|
71
|
+
audio?: boolean | AudioConstraints;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* WebRTC call state
|
|
75
|
+
*/
|
|
76
|
+
export type CallState = 'idle' | 'connecting' | 'connected' | 'reconnecting' | 'disconnected' | 'failed';
|
|
77
|
+
/**
|
|
78
|
+
* WebRTC connection state (maps to RTCPeerConnectionState)
|
|
79
|
+
*/
|
|
80
|
+
export type WebRTCConnectionState = 'new' | 'connecting' | 'connected' | 'disconnected' | 'failed' | 'closed';
|
|
81
|
+
/**
|
|
82
|
+
* ICE connection state
|
|
83
|
+
*/
|
|
84
|
+
export type ICEConnectionState = 'new' | 'checking' | 'connected' | 'completed' | 'failed' | 'disconnected' | 'closed';
|
|
85
|
+
/**
|
|
86
|
+
* ICE gathering state
|
|
87
|
+
*/
|
|
88
|
+
export type ICEGatheringState = 'new' | 'gathering' | 'complete';
|
|
89
|
+
/**
|
|
90
|
+
* Signaling state
|
|
91
|
+
*/
|
|
92
|
+
export type SignalingState = 'stable' | 'have-local-offer' | 'have-remote-offer' | 'have-local-pranswer' | 'have-remote-pranswer' | 'closed';
|
|
4
93
|
/**
|
|
5
94
|
* Video frame format for WebRTC
|
|
6
95
|
*/
|
|
@@ -18,10 +107,6 @@ export interface WebRTCVideoSourceConfig {
|
|
|
18
107
|
/** Video frame format. Default: 'I420' */
|
|
19
108
|
format?: VideoFrameFormat;
|
|
20
109
|
}
|
|
21
|
-
/**
|
|
22
|
-
* WebRTC connection state
|
|
23
|
-
*/
|
|
24
|
-
export type WebRTCConnectionState = 'new' | 'connecting' | 'connected' | 'disconnected' | 'failed' | 'closed';
|
|
25
110
|
/**
|
|
26
111
|
* WebRTC stream statistics
|
|
27
112
|
*/
|
|
@@ -38,6 +123,10 @@ export interface WebRTCStreamStats {
|
|
|
38
123
|
bitrate: number;
|
|
39
124
|
/** Round-trip time in ms */
|
|
40
125
|
rtt?: number;
|
|
126
|
+
/** Packets lost */
|
|
127
|
+
packetsLost?: number;
|
|
128
|
+
/** Jitter in ms */
|
|
129
|
+
jitter?: number;
|
|
41
130
|
}
|
|
42
131
|
/**
|
|
43
132
|
* WebRTC stream quality settings
|
|
@@ -61,4 +150,123 @@ export interface WebRTCStreamEvent {
|
|
|
61
150
|
error?: Error;
|
|
62
151
|
stats?: WebRTCStreamStats;
|
|
63
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* ICE candidate event data
|
|
155
|
+
*/
|
|
156
|
+
export interface ICECandidateEvent {
|
|
157
|
+
/** The ICE candidate */
|
|
158
|
+
candidate: RTCIceCandidate | null;
|
|
159
|
+
/** SDP mid */
|
|
160
|
+
sdpMid?: string | null;
|
|
161
|
+
/** SDP m-line index */
|
|
162
|
+
sdpMLineIndex?: number | null;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Session description for signaling
|
|
166
|
+
*/
|
|
167
|
+
export interface SessionDescription {
|
|
168
|
+
/** Type of description (offer/answer) */
|
|
169
|
+
type: 'offer' | 'answer';
|
|
170
|
+
/** SDP string */
|
|
171
|
+
sdp: string;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Options for useWebRTC hook
|
|
175
|
+
*/
|
|
176
|
+
export interface UseWebRTCOptions {
|
|
177
|
+
/** Peer connection configuration */
|
|
178
|
+
config?: PeerConnectionConfig;
|
|
179
|
+
/** Media constraints for local stream */
|
|
180
|
+
mediaConstraints?: MediaConstraints;
|
|
181
|
+
/** Initial camera facing mode */
|
|
182
|
+
initialCamera?: 'front' | 'back';
|
|
183
|
+
/** Auto-start local stream when hook mounts */
|
|
184
|
+
autoStartLocalStream?: boolean;
|
|
185
|
+
/** Callback when call state changes */
|
|
186
|
+
onCallStateChange?: (state: CallState) => void;
|
|
187
|
+
/** Callback when connection state changes */
|
|
188
|
+
onConnectionStateChange?: (state: WebRTCConnectionState) => void;
|
|
189
|
+
/** Callback when ICE connection state changes */
|
|
190
|
+
onIceConnectionStateChange?: (state: ICEConnectionState) => void;
|
|
191
|
+
/** Callback when remote stream is received */
|
|
192
|
+
onRemoteStream?: (stream: MediaStream) => void;
|
|
193
|
+
/** Callback when remote stream is removed */
|
|
194
|
+
onRemoteStreamRemoved?: () => void;
|
|
195
|
+
/** Callback when an error occurs */
|
|
196
|
+
onError?: (error: Error) => void;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Result type for useWebRTC hook
|
|
200
|
+
*/
|
|
201
|
+
export interface UseWebRTCResult {
|
|
202
|
+
/** Local media stream (camera + microphone) */
|
|
203
|
+
localStream: MediaStream | null;
|
|
204
|
+
/** Remote media stream from peer */
|
|
205
|
+
remoteStream: MediaStream | null;
|
|
206
|
+
/** Current call state */
|
|
207
|
+
callState: CallState;
|
|
208
|
+
/** Whether local audio is enabled */
|
|
209
|
+
isAudioEnabled: boolean;
|
|
210
|
+
/** Whether local video is enabled */
|
|
211
|
+
isVideoEnabled: boolean;
|
|
212
|
+
/** Current camera facing mode */
|
|
213
|
+
currentCamera: 'front' | 'back';
|
|
214
|
+
/** Peer connection instance */
|
|
215
|
+
peerConnection: RTCPeerConnection | null;
|
|
216
|
+
/** Start local camera/microphone stream */
|
|
217
|
+
startLocalStream: () => Promise<void>;
|
|
218
|
+
/** Stop local stream */
|
|
219
|
+
stopLocalStream: () => void;
|
|
220
|
+
/** Switch between front and back camera */
|
|
221
|
+
switchCamera: () => Promise<void>;
|
|
222
|
+
/** Toggle local audio on/off */
|
|
223
|
+
toggleAudio: () => void;
|
|
224
|
+
/** Toggle local video on/off */
|
|
225
|
+
toggleVideo: () => void;
|
|
226
|
+
/** Create a new peer connection */
|
|
227
|
+
createPeerConnection: (config?: PeerConnectionConfig) => RTCPeerConnection;
|
|
228
|
+
/** Close the peer connection */
|
|
229
|
+
closePeerConnection: () => void;
|
|
230
|
+
/** Create an SDP offer */
|
|
231
|
+
createOffer: () => Promise<SessionDescription>;
|
|
232
|
+
/** Create an SDP answer */
|
|
233
|
+
createAnswer: () => Promise<SessionDescription>;
|
|
234
|
+
/** Set the remote SDP description */
|
|
235
|
+
setRemoteDescription: (description: SessionDescription) => Promise<void>;
|
|
236
|
+
/** Add an ICE candidate from remote peer */
|
|
237
|
+
addIceCandidate: (candidate: RTCIceCandidate) => Promise<void>;
|
|
238
|
+
/** Register callback for ICE candidates to send to remote peer */
|
|
239
|
+
onIceCandidate: (callback: (candidate: ICECandidateEvent) => void) => void;
|
|
240
|
+
/** Clean up all resources */
|
|
241
|
+
cleanup: () => void;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Options for useWebRTCWithDetection hook
|
|
245
|
+
*/
|
|
246
|
+
export interface UseWebRTCWithDetectionOptions extends UseWebRTCOptions {
|
|
247
|
+
/** Face detection options */
|
|
248
|
+
faceDetection?: {
|
|
249
|
+
enabled?: boolean;
|
|
250
|
+
performanceMode?: 'fast' | 'accurate';
|
|
251
|
+
landmarkMode?: 'none' | 'all';
|
|
252
|
+
classificationMode?: 'none' | 'all';
|
|
253
|
+
};
|
|
254
|
+
/** Eye tracking options */
|
|
255
|
+
eyeTracking?: {
|
|
256
|
+
enabled?: boolean;
|
|
257
|
+
eyeClosedThreshold?: number;
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Default ICE servers (Google STUN servers)
|
|
262
|
+
*/
|
|
263
|
+
export declare const DEFAULT_ICE_SERVERS: ICEServer[];
|
|
264
|
+
/**
|
|
265
|
+
* Default peer connection configuration
|
|
266
|
+
*/
|
|
267
|
+
export declare const DEFAULT_PEER_CONNECTION_CONFIG: PeerConnectionConfig;
|
|
268
|
+
/**
|
|
269
|
+
* Default media constraints
|
|
270
|
+
*/
|
|
271
|
+
export declare const DEFAULT_MEDIA_CONSTRAINTS: MediaConstraints;
|
|
64
272
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/webrtc/types.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/webrtc/types.ts"],"names":[],"mappings":"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"}
|