@arfuhad/react-native-smart-camera 0.1.0

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 (95) hide show
  1. package/ARCHITECTURE.md +341 -0
  2. package/README.md +154 -0
  3. package/android/build.gradle +89 -0
  4. package/android/src/main/AndroidManifest.xml +2 -0
  5. package/android/src/main/java/expo/modules/smartcamera/ImageLoader.kt +106 -0
  6. package/android/src/main/java/expo/modules/smartcamera/MLKitFaceDetector.kt +273 -0
  7. package/android/src/main/java/expo/modules/smartcamera/SmartCameraModule.kt +205 -0
  8. package/android/src/main/java/expo/modules/smartcamera/SmartCameraView.kt +153 -0
  9. package/android/src/main/java/expo/modules/smartcamera/WebRTCFrameBridge.kt +184 -0
  10. package/app.plugin.js +17 -0
  11. package/build/SmartCamera.d.ts +17 -0
  12. package/build/SmartCamera.d.ts.map +1 -0
  13. package/build/SmartCamera.js +270 -0
  14. package/build/SmartCamera.js.map +1 -0
  15. package/build/SmartCameraModule.d.ts +112 -0
  16. package/build/SmartCameraModule.d.ts.map +1 -0
  17. package/build/SmartCameraModule.js +121 -0
  18. package/build/SmartCameraModule.js.map +1 -0
  19. package/build/SmartCameraView.d.ts +8 -0
  20. package/build/SmartCameraView.d.ts.map +1 -0
  21. package/build/SmartCameraView.js +7 -0
  22. package/build/SmartCameraView.js.map +1 -0
  23. package/build/detection/blinkProcessor.d.ts +23 -0
  24. package/build/detection/blinkProcessor.d.ts.map +1 -0
  25. package/build/detection/blinkProcessor.js +90 -0
  26. package/build/detection/blinkProcessor.js.map +1 -0
  27. package/build/detection/faceDetector.d.ts +16 -0
  28. package/build/detection/faceDetector.d.ts.map +1 -0
  29. package/build/detection/faceDetector.js +46 -0
  30. package/build/detection/faceDetector.js.map +1 -0
  31. package/build/detection/index.d.ts +4 -0
  32. package/build/detection/index.d.ts.map +1 -0
  33. package/build/detection/index.js +4 -0
  34. package/build/detection/index.js.map +1 -0
  35. package/build/detection/staticImageDetector.d.ts +25 -0
  36. package/build/detection/staticImageDetector.d.ts.map +1 -0
  37. package/build/detection/staticImageDetector.js +48 -0
  38. package/build/detection/staticImageDetector.js.map +1 -0
  39. package/build/hooks/index.d.ts +5 -0
  40. package/build/hooks/index.d.ts.map +1 -0
  41. package/build/hooks/index.js +5 -0
  42. package/build/hooks/index.js.map +1 -0
  43. package/build/hooks/useBlinkDetection.d.ts +39 -0
  44. package/build/hooks/useBlinkDetection.d.ts.map +1 -0
  45. package/build/hooks/useBlinkDetection.js +67 -0
  46. package/build/hooks/useBlinkDetection.js.map +1 -0
  47. package/build/hooks/useFaceDetection.d.ts +46 -0
  48. package/build/hooks/useFaceDetection.d.ts.map +1 -0
  49. package/build/hooks/useFaceDetection.js +80 -0
  50. package/build/hooks/useFaceDetection.js.map +1 -0
  51. package/build/hooks/useSmartCamera.d.ts +31 -0
  52. package/build/hooks/useSmartCamera.d.ts.map +1 -0
  53. package/build/hooks/useSmartCamera.js +75 -0
  54. package/build/hooks/useSmartCamera.js.map +1 -0
  55. package/build/hooks/useSmartCameraWebRTC.d.ts +58 -0
  56. package/build/hooks/useSmartCameraWebRTC.d.ts.map +1 -0
  57. package/build/hooks/useSmartCameraWebRTC.js +160 -0
  58. package/build/hooks/useSmartCameraWebRTC.js.map +1 -0
  59. package/build/index.d.ts +14 -0
  60. package/build/index.d.ts.map +1 -0
  61. package/build/index.js +20 -0
  62. package/build/index.js.map +1 -0
  63. package/build/types.d.ts +478 -0
  64. package/build/types.d.ts.map +1 -0
  65. package/build/types.js +2 -0
  66. package/build/types.js.map +1 -0
  67. package/build/utils/index.d.ts +98 -0
  68. package/build/utils/index.d.ts.map +1 -0
  69. package/build/utils/index.js +276 -0
  70. package/build/utils/index.js.map +1 -0
  71. package/build/webrtc/WebRTCBridge.d.ts +55 -0
  72. package/build/webrtc/WebRTCBridge.d.ts.map +1 -0
  73. package/build/webrtc/WebRTCBridge.js +113 -0
  74. package/build/webrtc/WebRTCBridge.js.map +1 -0
  75. package/build/webrtc/index.d.ts +3 -0
  76. package/build/webrtc/index.d.ts.map +1 -0
  77. package/build/webrtc/index.js +2 -0
  78. package/build/webrtc/index.js.map +1 -0
  79. package/build/webrtc/types.d.ts +64 -0
  80. package/build/webrtc/types.d.ts.map +1 -0
  81. package/build/webrtc/types.js +5 -0
  82. package/build/webrtc/types.js.map +1 -0
  83. package/expo-module.config.json +9 -0
  84. package/ios/MLKitFaceDetector.swift +310 -0
  85. package/ios/SmartCamera.podspec +33 -0
  86. package/ios/SmartCameraModule.swift +225 -0
  87. package/ios/SmartCameraView.swift +146 -0
  88. package/ios/WebRTCFrameBridge.swift +150 -0
  89. package/package.json +91 -0
  90. package/plugin/build/index.d.ts +28 -0
  91. package/plugin/build/index.js +33 -0
  92. package/plugin/build/withSmartCameraAndroid.d.ts +9 -0
  93. package/plugin/build/withSmartCameraAndroid.js +108 -0
  94. package/plugin/build/withSmartCameraIOS.d.ts +11 -0
  95. package/plugin/build/withSmartCameraIOS.js +92 -0
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.withSmartCameraIOS = void 0;
37
+ const config_plugins_1 = require("@expo/config-plugins");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ /**
41
+ * Add camera and microphone permissions to Info.plist
42
+ */
43
+ const withPermissions = (config, options) => {
44
+ return (0, config_plugins_1.withInfoPlist)(config, (configWithInfoPlist) => {
45
+ // Camera permission
46
+ configWithInfoPlist.modResults.NSCameraUsageDescription =
47
+ configWithInfoPlist.modResults.NSCameraUsageDescription ?? options.cameraPermissionText;
48
+ // Microphone permission
49
+ configWithInfoPlist.modResults.NSMicrophoneUsageDescription =
50
+ configWithInfoPlist.modResults.NSMicrophoneUsageDescription ?? options.microphonePermissionText;
51
+ return configWithInfoPlist;
52
+ });
53
+ };
54
+ /**
55
+ * Add ML Kit pod to Podfile if enabled
56
+ */
57
+ const withMLKitPod = (config, options) => {
58
+ if (!options.enableMLKit) {
59
+ return config;
60
+ }
61
+ return (0, config_plugins_1.withDangerousMod)(config, [
62
+ 'ios',
63
+ async (dangerousConfig) => {
64
+ const podfilePath = path.join(dangerousConfig.modRequest.platformProjectRoot, 'Podfile');
65
+ if (fs.existsSync(podfilePath)) {
66
+ let podfileContents = fs.readFileSync(podfilePath, 'utf-8');
67
+ // Check if ML Kit pod is already added
68
+ if (!podfileContents.includes('GoogleMLKit/FaceDetection')) {
69
+ // Add ML Kit pod after the use_expo_modules! line
70
+ podfileContents = podfileContents.replace(/use_expo_modules!/, `use_expo_modules!
71
+
72
+ # SmartCamera ML Kit Face Detection
73
+ pod 'GoogleMLKit/FaceDetection', '~> 4.0.0'`);
74
+ fs.writeFileSync(podfilePath, podfileContents);
75
+ }
76
+ }
77
+ return dangerousConfig;
78
+ },
79
+ ]);
80
+ };
81
+ /**
82
+ * iOS configuration for react-native-smart-camera
83
+ */
84
+ const withSmartCameraIOS = (config, options) => {
85
+ // Add permissions
86
+ config = withPermissions(config, options);
87
+ // Add ML Kit pod if enabled
88
+ config = withMLKitPod(config, options);
89
+ return config;
90
+ };
91
+ exports.withSmartCameraIOS = withSmartCameraIOS;
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aFNtYXJ0Q2FtZXJhSU9TLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dpdGhTbWFydENhbWVyYUlPUy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFJOEI7QUFDOUIsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQVM3Qjs7R0FFRztBQUNILE1BQU0sZUFBZSxHQUFtQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUMxRSxPQUFPLElBQUEsOEJBQWEsRUFBQyxNQUFNLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1FBQ25ELG9CQUFvQjtRQUNwQixtQkFBbUIsQ0FBQyxVQUFVLENBQUMsd0JBQXdCO1lBQ3JELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFFMUYsd0JBQXdCO1FBQ3hCLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyw0QkFBNEI7WUFDekQsbUJBQW1CLENBQUMsVUFBVSxDQUFDLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztRQUVsRyxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFlBQVksR0FBbUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxJQUFBLGlDQUFnQixFQUFDLE1BQU0sRUFBRTtRQUM5QixLQUFLO1FBQ0wsS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUV6RixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRTVELHVDQUF1QztnQkFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDO29CQUMzRCxrREFBa0Q7b0JBQ2xELGVBQWUsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUN2QyxtQkFBbUIsRUFDbkI7Ozs4Q0FHa0MsQ0FDbkMsQ0FBQztvQkFDRixFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDakQsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLGVBQWUsQ0FBQztRQUN6QixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSSxNQUFNLGtCQUFrQixHQUFtQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNwRixrQkFBa0I7SUFDbEIsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFMUMsNEJBQTRCO0lBQzVCLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXZDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQVJXLFFBQUEsa0JBQWtCLHNCQVE3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbmZpZ1BsdWdpbixcbiAgd2l0aEluZm9QbGlzdCxcbiAgd2l0aERhbmdlcm91c01vZCxcbn0gZnJvbSAnQGV4cG8vY29uZmlnLXBsdWdpbnMnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuZXhwb3J0IGludGVyZmFjZSBJT1NQbHVnaW5PcHRpb25zIHtcbiAgY2FtZXJhUGVybWlzc2lvblRleHQ6IHN0cmluZztcbiAgbWljcm9waG9uZVBlcm1pc3Npb25UZXh0OiBzdHJpbmc7XG4gIGVuYWJsZU1MS2l0OiBib29sZWFuO1xuICBlbmFibGVXZWJSVEM6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQWRkIGNhbWVyYSBhbmQgbWljcm9waG9uZSBwZXJtaXNzaW9ucyB0byBJbmZvLnBsaXN0XG4gKi9cbmNvbnN0IHdpdGhQZXJtaXNzaW9uczogQ29uZmlnUGx1Z2luPElPU1BsdWdpbk9wdGlvbnM+ID0gKGNvbmZpZywgb3B0aW9ucykgPT4ge1xuICByZXR1cm4gd2l0aEluZm9QbGlzdChjb25maWcsIChjb25maWdXaXRoSW5mb1BsaXN0KSA9PiB7XG4gICAgLy8gQ2FtZXJhIHBlcm1pc3Npb25cbiAgICBjb25maWdXaXRoSW5mb1BsaXN0Lm1vZFJlc3VsdHMuTlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uID1cbiAgICAgIGNvbmZpZ1dpdGhJbmZvUGxpc3QubW9kUmVzdWx0cy5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb24gPz8gb3B0aW9ucy5jYW1lcmFQZXJtaXNzaW9uVGV4dDtcblxuICAgIC8vIE1pY3JvcGhvbmUgcGVybWlzc2lvblxuICAgIGNvbmZpZ1dpdGhJbmZvUGxpc3QubW9kUmVzdWx0cy5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uID1cbiAgICAgIGNvbmZpZ1dpdGhJbmZvUGxpc3QubW9kUmVzdWx0cy5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uID8/IG9wdGlvbnMubWljcm9waG9uZVBlcm1pc3Npb25UZXh0O1xuXG4gICAgcmV0dXJuIGNvbmZpZ1dpdGhJbmZvUGxpc3Q7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBBZGQgTUwgS2l0IHBvZCB0byBQb2RmaWxlIGlmIGVuYWJsZWRcbiAqL1xuY29uc3Qgd2l0aE1MS2l0UG9kOiBDb25maWdQbHVnaW48SU9TUGx1Z2luT3B0aW9ucz4gPSAoY29uZmlnLCBvcHRpb25zKSA9PiB7XG4gIGlmICghb3B0aW9ucy5lbmFibGVNTEtpdCkge1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICByZXR1cm4gd2l0aERhbmdlcm91c01vZChjb25maWcsIFtcbiAgICAnaW9zJyxcbiAgICBhc3luYyAoZGFuZ2Vyb3VzQ29uZmlnKSA9PiB7XG4gICAgICBjb25zdCBwb2RmaWxlUGF0aCA9IHBhdGguam9pbihkYW5nZXJvdXNDb25maWcubW9kUmVxdWVzdC5wbGF0Zm9ybVByb2plY3RSb290LCAnUG9kZmlsZScpO1xuICAgICAgXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhwb2RmaWxlUGF0aCkpIHtcbiAgICAgICAgbGV0IHBvZGZpbGVDb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhwb2RmaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgIFxuICAgICAgICAvLyBDaGVjayBpZiBNTCBLaXQgcG9kIGlzIGFscmVhZHkgYWRkZWRcbiAgICAgICAgaWYgKCFwb2RmaWxlQ29udGVudHMuaW5jbHVkZXMoJ0dvb2dsZU1MS2l0L0ZhY2VEZXRlY3Rpb24nKSkge1xuICAgICAgICAgIC8vIEFkZCBNTCBLaXQgcG9kIGFmdGVyIHRoZSB1c2VfZXhwb19tb2R1bGVzISBsaW5lXG4gICAgICAgICAgcG9kZmlsZUNvbnRlbnRzID0gcG9kZmlsZUNvbnRlbnRzLnJlcGxhY2UoXG4gICAgICAgICAgICAvdXNlX2V4cG9fbW9kdWxlcyEvLFxuICAgICAgICAgICAgYHVzZV9leHBvX21vZHVsZXMhXG5cbiAgIyBTbWFydENhbWVyYSBNTCBLaXQgRmFjZSBEZXRlY3Rpb25cbiAgcG9kICdHb29nbGVNTEtpdC9GYWNlRGV0ZWN0aW9uJywgJ34+IDQuMC4wJ2BcbiAgICAgICAgICApO1xuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMocG9kZmlsZVBhdGgsIHBvZGZpbGVDb250ZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhbmdlcm91c0NvbmZpZztcbiAgICB9LFxuICBdKTtcbn07XG5cbi8qKlxuICogaU9TIGNvbmZpZ3VyYXRpb24gZm9yIHJlYWN0LW5hdGl2ZS1zbWFydC1jYW1lcmFcbiAqL1xuZXhwb3J0IGNvbnN0IHdpdGhTbWFydENhbWVyYUlPUzogQ29uZmlnUGx1Z2luPElPU1BsdWdpbk9wdGlvbnM+ID0gKGNvbmZpZywgb3B0aW9ucykgPT4ge1xuICAvLyBBZGQgcGVybWlzc2lvbnNcbiAgY29uZmlnID0gd2l0aFBlcm1pc3Npb25zKGNvbmZpZywgb3B0aW9ucyk7XG5cbiAgLy8gQWRkIE1MIEtpdCBwb2QgaWYgZW5hYmxlZFxuICBjb25maWcgPSB3aXRoTUxLaXRQb2QoY29uZmlnLCBvcHRpb25zKTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcblxuIl19