catalyst-core 0.2.0-beta.2 → 0.3.0-beta.1

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 (184) hide show
  1. package/babel.native.config.cjs +8 -0
  2. package/bin/catalyst.js +49 -105
  3. package/changelog.md +8 -0
  4. package/dist/caching.js +1 -1
  5. package/dist/index.jsx +8 -0
  6. package/dist/logger.js +74 -3
  7. package/dist/native/androidProject/app/build.gradle.kts +1 -0
  8. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/CustomWebview.kt +143 -4
  9. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/MainActivity.kt +26 -6
  10. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/MetricsMonitor.kt +143 -17
  11. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/NativeBridge.kt +6 -0
  12. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/WebCacheManager.kt +26 -0
  13. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/utils/BridgeUtils.kt +56 -1
  14. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/utils/KeyboardUtil.kt +48 -8
  15. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/utils/PerfDeliveryState.kt +36 -0
  16. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/utils/PerfEventBuffer.kt +289 -0
  17. package/dist/native/androidProject/app/src/main/java/io/yourname/androidproject/utils/ProfilerNavigationState.kt +13 -0
  18. package/dist/native/androidProject/app/src/test/java/io/yourname/androidproject/ProfilerLifecycleTest.kt +51 -0
  19. package/dist/native/androidSetup.js +300 -8
  20. package/dist/native/bridge/WebBridge.js +481 -59
  21. package/dist/native/bridge/constants/NativeInterfaces.js +290 -44
  22. package/dist/native/bridge/errors.js +250 -26
  23. package/dist/native/bridge/hooks/index.js +125 -1
  24. package/dist/native/bridge/hooks/useCamera.js +347 -9
  25. package/dist/native/bridge/hooks/useDataProtection.js +200 -2
  26. package/dist/native/bridge/hooks/useDeviceInfo.js +71 -2
  27. package/dist/native/bridge/hooks/useFilePicker.js +429 -2
  28. package/dist/native/bridge/hooks/useGoogleSignIn.js +81 -1
  29. package/dist/native/bridge/hooks/useHapticFeedback.js +196 -1
  30. package/dist/native/bridge/hooks/useIntent.js +95 -1
  31. package/dist/native/bridge/hooks/useNativeTransition.js +202 -27
  32. package/dist/native/bridge/hooks/useNetworkStatus.js +84 -3
  33. package/dist/native/bridge/hooks/useNotification.js +318 -2
  34. package/dist/native/bridge/hooks/useSafeArea.js +84 -2
  35. package/dist/native/bridge/hooks/useVideoStream.js +434 -6
  36. package/dist/native/bridge/hooks/utils.js +27 -1
  37. package/dist/native/bridge/hooks.js +16 -1
  38. package/dist/native/bridge/perf/collectors/ApiCollector.js +85 -0
  39. package/dist/native/bridge/perf/collectors/CacheCollector.js +215 -0
  40. package/dist/native/bridge/perf/collectors/HookCollector.js +165 -0
  41. package/dist/native/bridge/perf/collectors/InsightsCollector.js +505 -0
  42. package/dist/native/bridge/perf/collectors/InteractionCollector.js +273 -0
  43. package/dist/native/bridge/perf/collectors/KeyboardCollector.js +124 -0
  44. package/dist/native/bridge/perf/collectors/NavigationCollector.js +294 -0
  45. package/dist/native/bridge/perf/collectors/NetworkTimingCollector.js +183 -0
  46. package/dist/native/bridge/perf/collectors/RenderCollector.js +284 -0
  47. package/dist/native/bridge/perf/collectors/ScrollCollector.js +111 -0
  48. package/dist/native/bridge/perf/collectors/ThreadCollector.js +111 -0
  49. package/dist/native/bridge/perf/core/constants.js +126 -0
  50. package/dist/native/bridge/perf/core/measure.js +189 -0
  51. package/dist/native/bridge/perf/core/session.js +100 -0
  52. package/dist/native/bridge/perf/core/store.js +554 -0
  53. package/dist/native/bridge/perf/core/summary.js +174 -0
  54. package/dist/native/bridge/perf/core/traceExport.js +240 -0
  55. package/dist/native/bridge/perf/core/waterfalls.js +146 -0
  56. package/dist/native/bridge/perf/index.js +402 -0
  57. package/dist/native/bridge/safeArea.js +53 -5
  58. package/dist/native/bridge/standardizedHooks.js +595 -82
  59. package/dist/native/bridge/useBaseHook.js +274 -38
  60. package/dist/native/bridge/utils/CameraUtils.js +201 -56
  61. package/dist/native/bridge/utils/FileObjectConverter.js +129 -18
  62. package/dist/native/bridge/utils/NativeBridge.js +425 -141
  63. package/dist/native/buildAndroid/assets.js +510 -13
  64. package/dist/native/buildAndroid/build.js +296 -19
  65. package/dist/native/buildAndroid/config.js +87 -1
  66. package/dist/native/buildAndroid/index.js +374 -1
  67. package/dist/native/buildAppAndroid.js +34 -2
  68. package/dist/native/buildAppIos.js +62 -2
  69. package/dist/native/buildIos/assets.js +609 -8
  70. package/dist/native/buildIos/build.js +639 -20
  71. package/dist/native/buildIos/config.js +294 -12
  72. package/dist/native/buildIos/index.js +343 -6
  73. package/dist/native/buildIos/plugins.js +343 -16
  74. package/dist/native/internal-plugins/device-info-plugin/android/DeviceInfoPlugin.kt +43 -0
  75. package/dist/native/internal-plugins/device-info-plugin/ios/DeviceInfoPlugin.swift +28 -0
  76. package/dist/native/internal-plugins/device-info-plugin/manifest.json +19 -0
  77. package/dist/native/internalPluginUtils.js +232 -7
  78. package/dist/native/iosnativeWebView/Sources/Core/Constants/CatalystConstants.swift +19 -0
  79. package/dist/native/iosnativeWebView/Sources/Core/Constants/ConfigConstants.swift +4 -0
  80. package/dist/native/iosnativeWebView/Sources/Core/Utils/BootTimingUtility.swift +5 -1
  81. package/dist/native/iosnativeWebView/Sources/Core/Utils/CacheManager.swift +10 -0
  82. package/dist/native/iosnativeWebView/Sources/Core/Utils/DisplayLinkPerfMonitor.swift +89 -0
  83. package/dist/native/iosnativeWebView/Sources/Core/Utils/PerfEventBuffer.swift +373 -0
  84. package/dist/native/iosnativeWebView/Sources/Core/WebView/BridgeFileHandler.swift +35 -1
  85. package/dist/native/iosnativeWebView/Sources/Core/WebView/BridgeMessageValidator.swift +24 -11
  86. package/dist/native/iosnativeWebView/Sources/Core/WebView/NativeBridge.swift +9 -0
  87. package/dist/native/iosnativeWebView/Sources/Core/WebView/WebView.swift +126 -0
  88. package/dist/native/iosnativeWebView/Sources/Core/WebView/WebViewNavigationDelegate.swift +75 -1
  89. package/dist/native/iosnativeWebView/iosnativeWebViewTests/BridgeMessageValidatorTests.swift +13 -0
  90. package/dist/native/package.json +3 -0
  91. package/dist/native/plugin-bridge/PluginBridge.js +227 -1
  92. package/dist/native/pluginComposerAndroid.js +407 -23
  93. package/dist/native/pluginComposerIos.js +435 -11
  94. package/dist/native/renameAndroidProject.js +1094 -88
  95. package/dist/native/setupEmulatorIos.js +289 -22
  96. package/dist/native/setupServer.js +160 -19
  97. package/dist/native/terminalProgress.js +199 -11
  98. package/dist/native/utils.js +193 -15
  99. package/dist/offline/catalyst-sw.js +145 -1
  100. package/dist/offline/registerServiceWorker.js +33 -1
  101. package/dist/otel.js +375 -46
  102. package/dist/router/ClientRouter.js +14 -2
  103. package/dist/router/ServerRouter.js +9 -1
  104. package/dist/router.js +1 -1
  105. package/dist/scripts/build.js +112 -3
  106. package/dist/scripts/checkVersion.js +3 -1
  107. package/dist/scripts/cleanCache.js +30 -1
  108. package/dist/scripts/generateOfflineManifest.js +116 -1
  109. package/dist/scripts/loadEnvironmentVariables.js +32 -6
  110. package/dist/scripts/plugins.js +309 -1
  111. package/dist/scripts/preServerInit.js +13 -0
  112. package/dist/scripts/scriptUtils.js +54 -3
  113. package/dist/scripts/serve.js +51 -4
  114. package/dist/scripts/start.js +47 -10
  115. package/dist/scripts/validator.js +149 -1
  116. package/dist/sentry.cjs +127 -0
  117. package/dist/sentry.js +125 -5
  118. package/dist/server/expressServer.js +250 -5
  119. package/dist/server/manifestCache.js +36 -0
  120. package/dist/server/renderer/ChunkExtractor.js +144 -0
  121. package/dist/server/renderer/document/Body.jsx +59 -0
  122. package/dist/server/renderer/document/FastRefresh.jsx +20 -0
  123. package/dist/server/renderer/document/Head.jsx +60 -0
  124. package/dist/server/renderer/document/index.jsx +2 -0
  125. package/dist/server/renderer/extract.js +149 -31
  126. package/dist/server/renderer/handler.jsx +433 -0
  127. package/dist/server/renderer/index.js +8 -1
  128. package/dist/server/renderer/render.js +47 -0
  129. package/dist/server/utils/botDetectionMiddleware.js +29 -0
  130. package/dist/server/utils/cjsRequire.js +10 -0
  131. package/dist/server/utils/userAgentUtil.js +87 -9
  132. package/dist/server/utils/validator.js +164 -1
  133. package/dist/vite/FastRefresh.jsx +20 -0
  134. package/dist/vite/inject-cache-key-plugin.js +276 -0
  135. package/dist/vite/loadCustomViteConfig.js +22 -0
  136. package/dist/vite/manifest-categorization-plugin.js +455 -0
  137. package/dist/vite/node-loader.mjs +458 -0
  138. package/dist/vite/scssParams.js +21 -0
  139. package/dist/vite/vite.config.client.js +130 -0
  140. package/dist/vite/vite.config.js +422 -0
  141. package/dist/vite/vite.config.server.js +84 -0
  142. package/dist/web-router/components/MetaTag.jsx +34 -0
  143. package/dist/web-router/components/RouterDataProvider.jsx +332 -0
  144. package/dist/web-router/components/Split.jsx +200 -0
  145. package/dist/web-router/components/SplitInview.jsx +106 -0
  146. package/dist/web-router/components/SsrRequestContext.jsx +14 -0
  147. package/dist/web-router/context.jsx +12 -0
  148. package/dist/web-router/hooks.jsx +72 -0
  149. package/dist/web-router/types/components/MetaTag.d.ts +2 -0
  150. package/dist/web-router/types/components/RouterDataProvider.d.ts +95 -0
  151. package/dist/web-router/types/context.d.ts +14 -0
  152. package/dist/web-router/types/hooks.d.ts +1 -0
  153. package/dist/web-router/types/index.d.ts +3 -0
  154. package/dist/web-router/types/utils/metaDataUtils.d.ts +24 -0
  155. package/dist/web-router/utils/metaDataUtils.jsx +119 -0
  156. package/mcp_v2/conversion-tasks.json +35 -17
  157. package/mcp_v2/knowledge-base.json +124 -13
  158. package/mcp_v2/lib/helpers.js +10 -0
  159. package/mcp_v2/mcp.js +4 -4
  160. package/mcp_v2/package.json +1 -0
  161. package/mcp_v2/tools/build.js +116 -20
  162. package/mcp_v2/tools/conversion.js +106 -5
  163. package/mcp_v2/tools/tasks.js +18 -14
  164. package/package.json +35 -68
  165. package/babel.config.js +0 -32
  166. package/dist/index.js +0 -1
  167. package/dist/scripts/devBuild.js +0 -3
  168. package/dist/scripts/devServe.js +0 -3
  169. package/dist/scripts/loadScriptsBeforeServerStarts.js +0 -4
  170. package/dist/scripts/registerAliases.js +0 -6
  171. package/dist/server/renderer/document/Body.js +0 -11
  172. package/dist/server/renderer/document/Head.js +0 -9
  173. package/dist/server/renderer/document/index.js +0 -1
  174. package/dist/server/renderer/handler.js +0 -47
  175. package/dist/server/startServer.js +0 -57
  176. package/dist/webpack/babel-plugins/remove-client.plugin.js +0 -5
  177. package/dist/webpack/babel-plugins/remove-ssr.plugin.js +0 -5
  178. package/dist/webpack/babel.config.client.js +0 -1
  179. package/dist/webpack/babel.config.ssr.js +0 -1
  180. package/dist/webpack/base.babel.js +0 -7
  181. package/dist/webpack/development.client.babel.js +0 -10
  182. package/dist/webpack/production.client.babel.js +0 -4
  183. package/dist/webpack/production.ssr.babel.js +0 -8
  184. package/dist/webpack/scssParams.js +0 -9
@@ -1,46 +1,292 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.isValidInterface=exports.isValidCommand=exports.isValidCallback=exports.getInterfacesByCategory=exports.default=exports.debugInterfaces=exports.TRANSPORT_TYPES=exports.RESPONSE_STATUS=exports.PERMISSION_STATUS=exports.NATIVE_COMMANDS=exports.NATIVE_CALLBACKS=exports.INTERFACE_CATEGORIES=exports.INTENT_STATES=exports.HAPTIC_FEEDBACK_TYPES=exports.FILE_PICKER_STATES=exports.CAMERA_SOURCE=exports.CAMERA_QUALITY=exports.CAMERA_FORMAT=exports.CAMERA_FLASH_MODE=exports.CAMERA_DEVICE=exports.ALL_INTERFACES=exports.ALL_COMMANDS=exports.ALL_CALLBACKS=void 0;// Native Bridge Interface Constants
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isValidInterface = exports.isValidCommand = exports.isValidCallback = exports.getInterfacesByCategory = exports.default = exports.debugInterfaces = exports.TRANSPORT_TYPES = exports.RESPONSE_STATUS = exports.PERMISSION_STATUS = exports.NATIVE_COMMANDS = exports.NATIVE_CALLBACKS = exports.INTERFACE_CATEGORIES = exports.INTENT_STATES = exports.HAPTIC_FEEDBACK_TYPES = exports.FILE_PICKER_STATES = exports.CAMERA_SOURCE = exports.CAMERA_QUALITY = exports.CAMERA_FORMAT = exports.CAMERA_FLASH_MODE = exports.CAMERA_DEVICE = exports.ALL_INTERFACES = exports.ALL_COMMANDS = exports.ALL_CALLBACKS = void 0;
7
+ // Native Bridge Interface Constants
2
8
  // Centralized definitions for all native interface communications
9
+
3
10
  // Command Interfaces: Web → Native (outgoing commands)
4
- const NATIVE_COMMANDS=exports.NATIVE_COMMANDS={// Camera commands
5
- OPEN_CAMERA:"openCamera",REQUEST_CAMERA_PERMISSION:"requestCameraPermission",// Video stream commands
6
- START_VIDEO_STREAM:"startVideoStream",STOP_VIDEO_STREAM:"stopVideoStream",SET_VIDEO_STREAM_ZOOM:"setVideoStreamZoom",SET_VIDEO_STREAM_TORCH:"setVideoStreamTorch",SET_VIDEO_STREAM_FPS:"setVideoStreamFps",FLIP_VIDEO_STREAM:"flipVideoStream",// File commands
7
- PICK_FILE:"pickFile",OPEN_FILE_WITH_INTENT:"openFileWithIntent",// Haptic feedback commands
8
- REQUEST_HAPTIC_FEEDBACK:"requestHapticFeedback",// Notification commands
9
- SCHEDULE_LOCAL_NOTIFICATION:"scheduleLocalNotification",CANCEL_LOCAL_NOTIFICATION:"cancelLocalNotification",REQUEST_NOTIFICATION_PERMISSION:"requestNotificationPermission",REGISTER_FOR_PUSH_NOTIFICATIONS:"registerForPushNotifications",UPDATE_BADGE_COUNT:"updateBadgeCount",SUBSCRIBE_TO_TOPIC:"subscribeToTopic",UNSUBSCRIBE_FROM_TOPIC:"unsubscribeFromTopic",GET_SUBSCRIBED_TOPICS:"getSubscribedTopics",// Device info commands
10
- GET_DEVICE_INFO:"getDeviceInfo",// Network commands
11
- GET_NETWORK_STATUS:"getNetworkStatus",// Auth commands
12
- GOOGLE_SIGN_IN:"googleSignIn",// Transition commands
13
- START_TRANSITION:"startTransition",COMMIT_TRANSITION:"commitTransition",CANCEL_TRANSITION:"cancelTransition",// Safe area commands
14
- GET_SAFE_AREA:"getSafeArea",// Security commands
15
- SET_SCREEN_SECURE:"setScreenSecure",GET_SCREEN_SECURE:"getScreenSecure",CLEAR_WEB_DATA:"clearWebData"};// Callback Interfaces: Native → Web (incoming events/callbacks)
16
- const NATIVE_CALLBACKS=exports.NATIVE_CALLBACKS={// Camera callbacks
17
- CAMERA_PERMISSION_STATUS:"CAMERA_PERMISSION_STATUS",ON_CAMERA_CAPTURE:"ON_CAMERA_CAPTURE",ON_CAMERA_ERROR:"ON_CAMERA_ERROR",// Video stream callbacks
18
- ON_VIDEO_STREAM_READY:"ON_VIDEO_STREAM_READY",ON_VIDEO_STREAM_STOPPED:"ON_VIDEO_STREAM_STOPPED",ON_QR_DETECTED:"ON_QR_DETECTED",ON_TORCH_CHANGED:"ON_TORCH_CHANGED",ON_ZOOM_CHANGED:"ON_ZOOM_CHANGED",// File picker callbacks
19
- ON_FILE_PICKED:"ON_FILE_PICKED",ON_FILE_PICK_ERROR:"ON_FILE_PICK_ERROR",ON_FILE_PICK_CANCELLED:"ON_FILE_PICK_CANCELLED",ON_FILE_PICK_STATE_UPDATE:"ON_FILE_PICK_STATE_UPDATE",// Intent callbacks
20
- ON_INTENT_SUCCESS:"ON_INTENT_SUCCESS",ON_INTENT_ERROR:"ON_INTENT_ERROR",ON_INTENT_CANCELLED:"ON_INTENT_CANCELLED",// Haptic feedback callbacks
21
- HAPTIC_FEEDBACK:"HAPTIC_FEEDBACK",// Notification callbacks
22
- NOTIFICATION_PERMISSION_STATUS:"NOTIFICATION_PERMISSION_STATUS",LOCAL_NOTIFICATION_SCHEDULED:"LOCAL_NOTIFICATION_SCHEDULED",LOCAL_NOTIFICATION_CANCELLED:"LOCAL_NOTIFICATION_CANCELLED",PUSH_NOTIFICATION_TOKEN:"PUSH_NOTIFICATION_TOKEN",NOTIFICATION_RECEIVED:"NOTIFICATION_RECEIVED",NOTIFICATION_ACTION_PERFORMED:"NOTIFICATION_ACTION_PERFORMED",NOTIFICATION_TAPPED:"NOTIFICATION_TAPPED",TOPIC_SUBSCRIPTION_RESULT:"TOPIC_SUBSCRIPTION_RESULT",SUBSCRIBED_TOPICS_RESULT:"SUBSCRIBED_TOPICS_RESULT",// Device info callbacks
23
- ON_DEVICE_INFO_SUCCESS:"ON_DEVICE_INFO_SUCCESS",ON_DEVICE_INFO_ERROR:"ON_DEVICE_INFO_ERROR",// Auth callbacks
24
- ON_GOOGLE_SIGN_IN_SUCCESS:"ON_GOOGLE_SIGN_IN_SUCCESS",ON_GOOGLE_SIGN_IN_ERROR:"ON_GOOGLE_SIGN_IN_ERROR",ON_GOOGLE_SIGN_IN_CANCELLED:"ON_GOOGLE_SIGN_IN_CANCELLED",// Network callbacks
25
- NETWORK_STATUS_CHANGED:"NETWORK_STATUS_CHANGED",// Safe area callbacks
26
- ON_SAFE_AREA_INSETS_UPDATED:"ON_SAFE_AREA_INSETS_UPDATED",// Transition callbacks
27
- ON_TRANSITION_COMMITTED:"ON_TRANSITION_COMMITTED",ON_TRANSITION_CANCELLED:"ON_TRANSITION_CANCELLED",ON_TRANSITION_TIMEOUT:"ON_TRANSITION_TIMEOUT",// Security callbacks
28
- ON_SCREEN_SECURE_SET:"ON_SCREEN_SECURE_SET",ON_SCREEN_SECURE_STATUS:"ON_SCREEN_SECURE_STATUS",ON_SCREEN_SECURE_ERROR:"ON_SCREEN_SECURE_ERROR",ON_WEB_DATA_CLEARED:"ON_WEB_DATA_CLEARED",ON_WEB_DATA_CLEAR_ERROR:"ON_WEB_DATA_CLEAR_ERROR"};// Interface Categories for easier management
29
- const INTERFACE_CATEGORIES=exports.INTERFACE_CATEGORIES={CAMERA:{commands:[NATIVE_COMMANDS.OPEN_CAMERA,NATIVE_COMMANDS.REQUEST_CAMERA_PERMISSION],callbacks:[NATIVE_CALLBACKS.CAMERA_PERMISSION_STATUS,NATIVE_CALLBACKS.ON_CAMERA_CAPTURE,NATIVE_CALLBACKS.ON_CAMERA_ERROR]},FILE:{commands:[NATIVE_COMMANDS.PICK_FILE,NATIVE_COMMANDS.OPEN_FILE_WITH_INTENT],callbacks:[NATIVE_CALLBACKS.ON_FILE_PICKED,NATIVE_CALLBACKS.ON_FILE_PICK_ERROR,NATIVE_CALLBACKS.ON_FILE_PICK_CANCELLED,NATIVE_CALLBACKS.ON_FILE_PICK_STATE_UPDATE]},INTENT:{commands:[NATIVE_COMMANDS.OPEN_FILE_WITH_INTENT],callbacks:[NATIVE_CALLBACKS.ON_INTENT_SUCCESS,NATIVE_CALLBACKS.ON_INTENT_ERROR,NATIVE_CALLBACKS.ON_INTENT_CANCELLED]},HAPTIC:{commands:[NATIVE_COMMANDS.REQUEST_HAPTIC_FEEDBACK],callbacks:[NATIVE_CALLBACKS.HAPTIC_FEEDBACK]},NOTIFICATION:{commands:[NATIVE_COMMANDS.SCHEDULE_LOCAL_NOTIFICATION,NATIVE_COMMANDS.CANCEL_LOCAL_NOTIFICATION,NATIVE_COMMANDS.REQUEST_NOTIFICATION_PERMISSION,NATIVE_COMMANDS.REGISTER_FOR_PUSH_NOTIFICATIONS,NATIVE_COMMANDS.UPDATE_BADGE_COUNT,NATIVE_COMMANDS.SUBSCRIBE_TO_TOPIC,NATIVE_COMMANDS.UNSUBSCRIBE_FROM_TOPIC,NATIVE_COMMANDS.GET_SUBSCRIBED_TOPICS],callbacks:[NATIVE_CALLBACKS.NOTIFICATION_PERMISSION_STATUS,NATIVE_CALLBACKS.LOCAL_NOTIFICATION_SCHEDULED,NATIVE_CALLBACKS.LOCAL_NOTIFICATION_CANCELLED,NATIVE_CALLBACKS.PUSH_NOTIFICATION_TOKEN,NATIVE_CALLBACKS.NOTIFICATION_RECEIVED,NATIVE_CALLBACKS.NOTIFICATION_ACTION_PERFORMED,NATIVE_CALLBACKS.NOTIFICATION_TAPPED,NATIVE_CALLBACKS.TOPIC_SUBSCRIPTION_RESULT,NATIVE_CALLBACKS.SUBSCRIBED_TOPICS_RESULT]},DEVICE_INFO:{commands:[NATIVE_COMMANDS.GET_DEVICE_INFO],callbacks:[NATIVE_CALLBACKS.ON_DEVICE_INFO_SUCCESS,NATIVE_CALLBACKS.ON_DEVICE_INFO_ERROR]},AUTH:{commands:[NATIVE_COMMANDS.GOOGLE_SIGN_IN],callbacks:[NATIVE_CALLBACKS.ON_GOOGLE_SIGN_IN_SUCCESS,NATIVE_CALLBACKS.ON_GOOGLE_SIGN_IN_ERROR,NATIVE_CALLBACKS.ON_GOOGLE_SIGN_IN_CANCELLED]},NETWORK:{commands:[NATIVE_COMMANDS.GET_NETWORK_STATUS],callbacks:[NATIVE_CALLBACKS.NETWORK_STATUS_CHANGED]},SECURITY:{commands:[NATIVE_COMMANDS.SET_SCREEN_SECURE,NATIVE_COMMANDS.GET_SCREEN_SECURE,NATIVE_COMMANDS.CLEAR_WEB_DATA],callbacks:[NATIVE_CALLBACKS.ON_SCREEN_SECURE_SET,NATIVE_CALLBACKS.ON_SCREEN_SECURE_ERROR,NATIVE_CALLBACKS.ON_WEB_DATA_CLEARED,NATIVE_CALLBACKS.ON_WEB_DATA_CLEAR_ERROR]},TRANSITION:{commands:[NATIVE_COMMANDS.START_TRANSITION,NATIVE_COMMANDS.COMMIT_TRANSITION,NATIVE_COMMANDS.CANCEL_TRANSITION],callbacks:[NATIVE_CALLBACKS.ON_TRANSITION_COMMITTED,NATIVE_CALLBACKS.ON_TRANSITION_CANCELLED,NATIVE_CALLBACKS.ON_TRANSITION_TIMEOUT]}};// All available interfaces (for validation)
30
- const ALL_COMMANDS=exports.ALL_COMMANDS=Object.values(NATIVE_COMMANDS);const ALL_CALLBACKS=exports.ALL_CALLBACKS=Object.values(NATIVE_CALLBACKS);const ALL_INTERFACES=exports.ALL_INTERFACES=[...ALL_COMMANDS,...ALL_CALLBACKS];// Permission status constants
31
- const PERMISSION_STATUS=exports.PERMISSION_STATUS={GRANTED:"GRANTED",DENIED:"DENIED",NOT_DETERMINED:"NOT_DETERMINED",RESTRICTED:"RESTRICTED"};// Haptic feedback types (matching Android implementation)
32
- const HAPTIC_FEEDBACK_TYPES=exports.HAPTIC_FEEDBACK_TYPES={VIRTUAL_KEY:"VIRTUAL_KEY",LONG_PRESS:"LONG_PRESS",DEFAULT:"DEFAULT",// Legacy types for backward compatibility
33
- LIGHT:"VIRTUAL_KEY",MEDIUM:"DEFAULT",HEAVY:"LONG_PRESS"};// File picker state constants
34
- const FILE_PICKER_STATES=exports.FILE_PICKER_STATES={OPENING:"opening",PROCESSING:"processing",IDLE:null};// Intent processing states
35
- const INTENT_STATES=exports.INTENT_STATES={PROCESSING:"processing",DOWNLOADING:"downloading",OPENING:"opening",IDLE:null};// Camera quality constants
36
- const CAMERA_QUALITY=exports.CAMERA_QUALITY={HIGH:"high",MEDIUM:"medium",LOW:"low"};// Camera format constants
37
- const CAMERA_FORMAT=exports.CAMERA_FORMAT={JPEG:"jpeg",PNG:"png"};// Camera device constants
38
- const CAMERA_DEVICE=exports.CAMERA_DEVICE={FRONT:"front",REAR:"rear",BACK:"rear"// Alias for rear
39
- };// Camera flash mode constants
40
- const CAMERA_FLASH_MODE=exports.CAMERA_FLASH_MODE={AUTO:"auto",ON:"on",OFF:"off"};// Transport type constants (matching native implementation)
41
- const TRANSPORT_TYPES=exports.TRANSPORT_TYPES={BASE64:"BASE64",FILE_URL:"FILE_URL",FRAMEWORK_SERVER:"FRAMEWORK_SERVER"};// Camera source constants
42
- const CAMERA_SOURCE=exports.CAMERA_SOURCE={CAMERA:"camera",FILE_PICKER:"file_picker"};// Response status constants
43
- const RESPONSE_STATUS=exports.RESPONSE_STATUS={SUCCESS:"SUCCESS",ERROR:"ERROR",CANCELLED:"CANCELLED"};// Utility functions for interface validation
44
- const isValidCommand=command=>ALL_COMMANDS.includes(command);exports.isValidCommand=isValidCommand;const isValidCallback=callback=>ALL_CALLBACKS.includes(callback);exports.isValidCallback=isValidCallback;const isValidInterface=interfaceName=>ALL_INTERFACES.includes(interfaceName);// Get interfaces by category
45
- exports.isValidInterface=isValidInterface;const getInterfacesByCategory=category=>{const categoryData=INTERFACE_CATEGORIES[category.toUpperCase()];if(!categoryData){throw new Error(`Invalid category: ${category}`);}return categoryData;};// Debug helper to list all interfaces
46
- exports.getInterfacesByCategory=getInterfacesByCategory;const debugInterfaces=()=>{console.group("🌉 Native Bridge Interfaces");console.log("Commands:",ALL_COMMANDS);console.log("Callbacks:",ALL_CALLBACKS);console.log("Categories:",Object.keys(INTERFACE_CATEGORIES));console.groupEnd();};exports.debugInterfaces=debugInterfaces;var _default=exports.default={NATIVE_COMMANDS,NATIVE_CALLBACKS,INTERFACE_CATEGORIES,ALL_COMMANDS,ALL_CALLBACKS,ALL_INTERFACES,PERMISSION_STATUS,HAPTIC_FEEDBACK_TYPES,FILE_PICKER_STATES,INTENT_STATES,CAMERA_QUALITY,CAMERA_FORMAT,CAMERA_DEVICE,CAMERA_FLASH_MODE,TRANSPORT_TYPES,CAMERA_SOURCE,RESPONSE_STATUS,isValidCommand,isValidCallback,isValidInterface,getInterfacesByCategory,debugInterfaces};
11
+ const NATIVE_COMMANDS = exports.NATIVE_COMMANDS = {
12
+ // Camera commands
13
+ OPEN_CAMERA: "openCamera",
14
+ REQUEST_CAMERA_PERMISSION: "requestCameraPermission",
15
+ // Video stream commands
16
+ START_VIDEO_STREAM: "startVideoStream",
17
+ STOP_VIDEO_STREAM: "stopVideoStream",
18
+ SET_VIDEO_STREAM_ZOOM: "setVideoStreamZoom",
19
+ SET_VIDEO_STREAM_TORCH: "setVideoStreamTorch",
20
+ SET_VIDEO_STREAM_FPS: "setVideoStreamFps",
21
+ FLIP_VIDEO_STREAM: "flipVideoStream",
22
+ // File commands
23
+ PICK_FILE: "pickFile",
24
+ OPEN_FILE_WITH_INTENT: "openFileWithIntent",
25
+ // Haptic feedback commands
26
+ REQUEST_HAPTIC_FEEDBACK: "requestHapticFeedback",
27
+ // Notification commands
28
+ SCHEDULE_LOCAL_NOTIFICATION: "scheduleLocalNotification",
29
+ CANCEL_LOCAL_NOTIFICATION: "cancelLocalNotification",
30
+ REQUEST_NOTIFICATION_PERMISSION: "requestNotificationPermission",
31
+ REGISTER_FOR_PUSH_NOTIFICATIONS: "registerForPushNotifications",
32
+ UPDATE_BADGE_COUNT: "updateBadgeCount",
33
+ SUBSCRIBE_TO_TOPIC: "subscribeToTopic",
34
+ UNSUBSCRIBE_FROM_TOPIC: "unsubscribeFromTopic",
35
+ GET_SUBSCRIBED_TOPICS: "getSubscribedTopics",
36
+ // Device info commands
37
+ GET_DEVICE_INFO: "getDeviceInfo",
38
+ // Network commands
39
+ GET_NETWORK_STATUS: "getNetworkStatus",
40
+ // Auth commands
41
+ GOOGLE_SIGN_IN: "googleSignIn",
42
+ // Transition commands
43
+ START_TRANSITION: "startTransition",
44
+ COMMIT_TRANSITION: "commitTransition",
45
+ CANCEL_TRANSITION: "cancelTransition",
46
+ // Safe area commands
47
+ GET_SAFE_AREA: "getSafeArea",
48
+ // Security commands
49
+ SET_SCREEN_SECURE: "setScreenSecure",
50
+ GET_SCREEN_SECURE: "getScreenSecure",
51
+ CLEAR_WEB_DATA: "clearWebData"
52
+ };
53
+
54
+ // Callback Interfaces: Native → Web (incoming events/callbacks)
55
+ const NATIVE_CALLBACKS = exports.NATIVE_CALLBACKS = {
56
+ // Camera callbacks
57
+ CAMERA_PERMISSION_STATUS: "CAMERA_PERMISSION_STATUS",
58
+ ON_CAMERA_CAPTURE: "ON_CAMERA_CAPTURE",
59
+ ON_CAMERA_ERROR: "ON_CAMERA_ERROR",
60
+ // Video stream callbacks
61
+ ON_VIDEO_STREAM_READY: "ON_VIDEO_STREAM_READY",
62
+ ON_VIDEO_STREAM_STOPPED: "ON_VIDEO_STREAM_STOPPED",
63
+ ON_QR_DETECTED: "ON_QR_DETECTED",
64
+ ON_TORCH_CHANGED: "ON_TORCH_CHANGED",
65
+ ON_ZOOM_CHANGED: "ON_ZOOM_CHANGED",
66
+ // File picker callbacks
67
+ ON_FILE_PICKED: "ON_FILE_PICKED",
68
+ ON_FILE_PICK_ERROR: "ON_FILE_PICK_ERROR",
69
+ ON_FILE_PICK_CANCELLED: "ON_FILE_PICK_CANCELLED",
70
+ ON_FILE_PICK_STATE_UPDATE: "ON_FILE_PICK_STATE_UPDATE",
71
+ // Intent callbacks
72
+ ON_INTENT_SUCCESS: "ON_INTENT_SUCCESS",
73
+ ON_INTENT_ERROR: "ON_INTENT_ERROR",
74
+ ON_INTENT_CANCELLED: "ON_INTENT_CANCELLED",
75
+ // Haptic feedback callbacks
76
+ HAPTIC_FEEDBACK: "HAPTIC_FEEDBACK",
77
+ // Notification callbacks
78
+ NOTIFICATION_PERMISSION_STATUS: "NOTIFICATION_PERMISSION_STATUS",
79
+ LOCAL_NOTIFICATION_SCHEDULED: "LOCAL_NOTIFICATION_SCHEDULED",
80
+ LOCAL_NOTIFICATION_CANCELLED: "LOCAL_NOTIFICATION_CANCELLED",
81
+ PUSH_NOTIFICATION_TOKEN: "PUSH_NOTIFICATION_TOKEN",
82
+ NOTIFICATION_RECEIVED: "NOTIFICATION_RECEIVED",
83
+ NOTIFICATION_ACTION_PERFORMED: "NOTIFICATION_ACTION_PERFORMED",
84
+ NOTIFICATION_TAPPED: "NOTIFICATION_TAPPED",
85
+ TOPIC_SUBSCRIPTION_RESULT: "TOPIC_SUBSCRIPTION_RESULT",
86
+ SUBSCRIBED_TOPICS_RESULT: "SUBSCRIBED_TOPICS_RESULT",
87
+ // Device info callbacks
88
+ ON_DEVICE_INFO_SUCCESS: "ON_DEVICE_INFO_SUCCESS",
89
+ ON_DEVICE_INFO_ERROR: "ON_DEVICE_INFO_ERROR",
90
+ // Auth callbacks
91
+ ON_GOOGLE_SIGN_IN_SUCCESS: "ON_GOOGLE_SIGN_IN_SUCCESS",
92
+ ON_GOOGLE_SIGN_IN_ERROR: "ON_GOOGLE_SIGN_IN_ERROR",
93
+ ON_GOOGLE_SIGN_IN_CANCELLED: "ON_GOOGLE_SIGN_IN_CANCELLED",
94
+ // Network callbacks
95
+ NETWORK_STATUS_CHANGED: "NETWORK_STATUS_CHANGED",
96
+ // Safe area callbacks
97
+ ON_SAFE_AREA_INSETS_UPDATED: "ON_SAFE_AREA_INSETS_UPDATED",
98
+ // Transition callbacks
99
+ ON_TRANSITION_COMMITTED: "ON_TRANSITION_COMMITTED",
100
+ ON_TRANSITION_CANCELLED: "ON_TRANSITION_CANCELLED",
101
+ ON_TRANSITION_TIMEOUT: "ON_TRANSITION_TIMEOUT",
102
+ // Security callbacks
103
+ ON_SCREEN_SECURE_SET: "ON_SCREEN_SECURE_SET",
104
+ ON_SCREEN_SECURE_STATUS: "ON_SCREEN_SECURE_STATUS",
105
+ ON_SCREEN_SECURE_ERROR: "ON_SCREEN_SECURE_ERROR",
106
+ ON_WEB_DATA_CLEARED: "ON_WEB_DATA_CLEARED",
107
+ ON_WEB_DATA_CLEAR_ERROR: "ON_WEB_DATA_CLEAR_ERROR",
108
+ // Perf telemetry callbacks (native → web)
109
+ CATALYST_PERF_EVENT: "CATALYST_PERF_EVENT"
110
+ };
111
+
112
+ // Interface Categories for easier management
113
+ const INTERFACE_CATEGORIES = exports.INTERFACE_CATEGORIES = {
114
+ CAMERA: {
115
+ commands: [NATIVE_COMMANDS.OPEN_CAMERA, NATIVE_COMMANDS.REQUEST_CAMERA_PERMISSION],
116
+ callbacks: [NATIVE_CALLBACKS.CAMERA_PERMISSION_STATUS, NATIVE_CALLBACKS.ON_CAMERA_CAPTURE, NATIVE_CALLBACKS.ON_CAMERA_ERROR]
117
+ },
118
+ FILE: {
119
+ commands: [NATIVE_COMMANDS.PICK_FILE, NATIVE_COMMANDS.OPEN_FILE_WITH_INTENT],
120
+ callbacks: [NATIVE_CALLBACKS.ON_FILE_PICKED, NATIVE_CALLBACKS.ON_FILE_PICK_ERROR, NATIVE_CALLBACKS.ON_FILE_PICK_CANCELLED, NATIVE_CALLBACKS.ON_FILE_PICK_STATE_UPDATE]
121
+ },
122
+ INTENT: {
123
+ commands: [NATIVE_COMMANDS.OPEN_FILE_WITH_INTENT],
124
+ callbacks: [NATIVE_CALLBACKS.ON_INTENT_SUCCESS, NATIVE_CALLBACKS.ON_INTENT_ERROR, NATIVE_CALLBACKS.ON_INTENT_CANCELLED]
125
+ },
126
+ HAPTIC: {
127
+ commands: [NATIVE_COMMANDS.REQUEST_HAPTIC_FEEDBACK],
128
+ callbacks: [NATIVE_CALLBACKS.HAPTIC_FEEDBACK]
129
+ },
130
+ NOTIFICATION: {
131
+ commands: [NATIVE_COMMANDS.SCHEDULE_LOCAL_NOTIFICATION, NATIVE_COMMANDS.CANCEL_LOCAL_NOTIFICATION, NATIVE_COMMANDS.REQUEST_NOTIFICATION_PERMISSION, NATIVE_COMMANDS.REGISTER_FOR_PUSH_NOTIFICATIONS, NATIVE_COMMANDS.UPDATE_BADGE_COUNT, NATIVE_COMMANDS.SUBSCRIBE_TO_TOPIC, NATIVE_COMMANDS.UNSUBSCRIBE_FROM_TOPIC, NATIVE_COMMANDS.GET_SUBSCRIBED_TOPICS],
132
+ callbacks: [NATIVE_CALLBACKS.NOTIFICATION_PERMISSION_STATUS, NATIVE_CALLBACKS.LOCAL_NOTIFICATION_SCHEDULED, NATIVE_CALLBACKS.LOCAL_NOTIFICATION_CANCELLED, NATIVE_CALLBACKS.PUSH_NOTIFICATION_TOKEN, NATIVE_CALLBACKS.NOTIFICATION_RECEIVED, NATIVE_CALLBACKS.NOTIFICATION_ACTION_PERFORMED, NATIVE_CALLBACKS.NOTIFICATION_TAPPED, NATIVE_CALLBACKS.TOPIC_SUBSCRIPTION_RESULT, NATIVE_CALLBACKS.SUBSCRIBED_TOPICS_RESULT]
133
+ },
134
+ DEVICE_INFO: {
135
+ commands: [NATIVE_COMMANDS.GET_DEVICE_INFO],
136
+ callbacks: [NATIVE_CALLBACKS.ON_DEVICE_INFO_SUCCESS, NATIVE_CALLBACKS.ON_DEVICE_INFO_ERROR]
137
+ },
138
+ AUTH: {
139
+ commands: [NATIVE_COMMANDS.GOOGLE_SIGN_IN],
140
+ callbacks: [NATIVE_CALLBACKS.ON_GOOGLE_SIGN_IN_SUCCESS, NATIVE_CALLBACKS.ON_GOOGLE_SIGN_IN_ERROR, NATIVE_CALLBACKS.ON_GOOGLE_SIGN_IN_CANCELLED]
141
+ },
142
+ NETWORK: {
143
+ commands: [NATIVE_COMMANDS.GET_NETWORK_STATUS],
144
+ callbacks: [NATIVE_CALLBACKS.NETWORK_STATUS_CHANGED]
145
+ },
146
+ SECURITY: {
147
+ commands: [NATIVE_COMMANDS.SET_SCREEN_SECURE, NATIVE_COMMANDS.GET_SCREEN_SECURE, NATIVE_COMMANDS.CLEAR_WEB_DATA],
148
+ callbacks: [NATIVE_CALLBACKS.ON_SCREEN_SECURE_SET, NATIVE_CALLBACKS.ON_SCREEN_SECURE_ERROR, NATIVE_CALLBACKS.ON_WEB_DATA_CLEARED, NATIVE_CALLBACKS.ON_WEB_DATA_CLEAR_ERROR]
149
+ },
150
+ TRANSITION: {
151
+ commands: [NATIVE_COMMANDS.START_TRANSITION, NATIVE_COMMANDS.COMMIT_TRANSITION, NATIVE_COMMANDS.CANCEL_TRANSITION],
152
+ callbacks: [NATIVE_CALLBACKS.ON_TRANSITION_COMMITTED, NATIVE_CALLBACKS.ON_TRANSITION_CANCELLED, NATIVE_CALLBACKS.ON_TRANSITION_TIMEOUT]
153
+ }
154
+ };
155
+
156
+ // All available interfaces (for validation)
157
+ const ALL_COMMANDS = exports.ALL_COMMANDS = Object.values(NATIVE_COMMANDS);
158
+ const ALL_CALLBACKS = exports.ALL_CALLBACKS = Object.values(NATIVE_CALLBACKS);
159
+ const ALL_INTERFACES = exports.ALL_INTERFACES = [...ALL_COMMANDS, ...ALL_CALLBACKS];
160
+
161
+ // Permission status constants
162
+ const PERMISSION_STATUS = exports.PERMISSION_STATUS = {
163
+ GRANTED: "GRANTED",
164
+ DENIED: "DENIED",
165
+ NOT_DETERMINED: "NOT_DETERMINED",
166
+ RESTRICTED: "RESTRICTED"
167
+ };
168
+
169
+ // Haptic feedback types (matching Android implementation)
170
+ const HAPTIC_FEEDBACK_TYPES = exports.HAPTIC_FEEDBACK_TYPES = {
171
+ VIRTUAL_KEY: "VIRTUAL_KEY",
172
+ LONG_PRESS: "LONG_PRESS",
173
+ DEFAULT: "DEFAULT",
174
+ // Legacy types for backward compatibility
175
+ LIGHT: "VIRTUAL_KEY",
176
+ MEDIUM: "DEFAULT",
177
+ HEAVY: "LONG_PRESS"
178
+ };
179
+
180
+ // File picker state constants
181
+ const FILE_PICKER_STATES = exports.FILE_PICKER_STATES = {
182
+ OPENING: "opening",
183
+ PROCESSING: "processing",
184
+ IDLE: null
185
+ };
186
+
187
+ // Intent processing states
188
+ const INTENT_STATES = exports.INTENT_STATES = {
189
+ PROCESSING: "processing",
190
+ DOWNLOADING: "downloading",
191
+ OPENING: "opening",
192
+ IDLE: null
193
+ };
194
+
195
+ // Camera quality constants
196
+ const CAMERA_QUALITY = exports.CAMERA_QUALITY = {
197
+ HIGH: "high",
198
+ MEDIUM: "medium",
199
+ LOW: "low"
200
+ };
201
+
202
+ // Camera format constants
203
+ const CAMERA_FORMAT = exports.CAMERA_FORMAT = {
204
+ JPEG: "jpeg",
205
+ PNG: "png"
206
+ };
207
+
208
+ // Camera device constants
209
+ const CAMERA_DEVICE = exports.CAMERA_DEVICE = {
210
+ FRONT: "front",
211
+ REAR: "rear",
212
+ BACK: "rear" // Alias for rear
213
+ };
214
+
215
+ // Camera flash mode constants
216
+ const CAMERA_FLASH_MODE = exports.CAMERA_FLASH_MODE = {
217
+ AUTO: "auto",
218
+ ON: "on",
219
+ OFF: "off"
220
+ };
221
+
222
+ // Transport type constants (matching native implementation)
223
+ const TRANSPORT_TYPES = exports.TRANSPORT_TYPES = {
224
+ BASE64: "BASE64",
225
+ FILE_URL: "FILE_URL",
226
+ FRAMEWORK_SERVER: "FRAMEWORK_SERVER"
227
+ };
228
+
229
+ // Camera source constants
230
+ const CAMERA_SOURCE = exports.CAMERA_SOURCE = {
231
+ CAMERA: "camera",
232
+ FILE_PICKER: "file_picker"
233
+ };
234
+
235
+ // Response status constants
236
+ const RESPONSE_STATUS = exports.RESPONSE_STATUS = {
237
+ SUCCESS: "SUCCESS",
238
+ ERROR: "ERROR",
239
+ CANCELLED: "CANCELLED"
240
+ };
241
+
242
+ // Utility functions for interface validation
243
+ const isValidCommand = command => ALL_COMMANDS.includes(command);
244
+ exports.isValidCommand = isValidCommand;
245
+ const isValidCallback = callback => ALL_CALLBACKS.includes(callback);
246
+ exports.isValidCallback = isValidCallback;
247
+ const isValidInterface = interfaceName => ALL_INTERFACES.includes(interfaceName);
248
+
249
+ // Get interfaces by category
250
+ exports.isValidInterface = isValidInterface;
251
+ const getInterfacesByCategory = category => {
252
+ const categoryData = INTERFACE_CATEGORIES[category.toUpperCase()];
253
+ if (!categoryData) {
254
+ throw new Error(`Invalid category: ${category}`);
255
+ }
256
+ return categoryData;
257
+ };
258
+
259
+ // Debug helper to list all interfaces
260
+ exports.getInterfacesByCategory = getInterfacesByCategory;
261
+ const debugInterfaces = () => {
262
+ console.group("🌉 Native Bridge Interfaces");
263
+ console.log("Commands:", ALL_COMMANDS);
264
+ console.log("Callbacks:", ALL_CALLBACKS);
265
+ console.log("Categories:", Object.keys(INTERFACE_CATEGORIES));
266
+ console.groupEnd();
267
+ };
268
+ exports.debugInterfaces = debugInterfaces;
269
+ var _default = exports.default = {
270
+ NATIVE_COMMANDS,
271
+ NATIVE_CALLBACKS,
272
+ INTERFACE_CATEGORIES,
273
+ ALL_COMMANDS,
274
+ ALL_CALLBACKS,
275
+ ALL_INTERFACES,
276
+ PERMISSION_STATUS,
277
+ HAPTIC_FEEDBACK_TYPES,
278
+ FILE_PICKER_STATES,
279
+ INTENT_STATES,
280
+ CAMERA_QUALITY,
281
+ CAMERA_FORMAT,
282
+ CAMERA_DEVICE,
283
+ CAMERA_FLASH_MODE,
284
+ TRANSPORT_TYPES,
285
+ CAMERA_SOURCE,
286
+ RESPONSE_STATUS,
287
+ isValidCommand,
288
+ isValidCallback,
289
+ isValidInterface,
290
+ getInterfacesByCategory,
291
+ debugInterfaces
292
+ };
@@ -1,39 +1,263 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.translateError=exports.isDevelopment=exports.createStandardError=exports.ERROR_DEFINITIONS=exports.ERROR_CODES=exports.ERROR_CATEGORIES=void 0;/**
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.translateError = exports.isDevelopment = exports.createStandardError = exports.ERROR_DEFINITIONS = exports.ERROR_CODES = exports.ERROR_CATEGORIES = void 0;
7
+ /**
2
8
  * Standardized Error System for Catalyst Framework
3
9
  * Translates native errors into web developer-friendly messages
4
- */// Error categories for logical grouping
5
- const ERROR_CATEGORIES=exports.ERROR_CATEGORIES={PERMISSION:"PERMISSION",NETWORK:"NETWORK",FILE_SYSTEM:"FILE_SYSTEM",USER_ACTION:"USER_ACTION",VALIDATION:"VALIDATION",SYSTEM:"SYSTEM",UNKNOWN:"UNKNOWN"};// Standardized error codes
6
- const ERROR_CODES=exports.ERROR_CODES={// Permission errors
7
- PERMISSION_DENIED:"PERMISSION_DENIED",PERMISSION_REQUIRED:"PERMISSION_REQUIRED",// Network errors
8
- NETWORK_UNAVAILABLE:"NETWORK_UNAVAILABLE",DOWNLOAD_FAILED:"DOWNLOAD_FAILED",// File system errors
9
- FILE_NOT_FOUND:"FILE_NOT_FOUND",FILE_TOO_LARGE:"FILE_TOO_LARGE",STORAGE_FULL:"STORAGE_FULL",FILE_CORRUPTED:"FILE_CORRUPTED",// User action errors
10
- OPERATION_CANCELLED:"OPERATION_CANCELLED",NO_FILE_SELECTED:"NO_FILE_SELECTED",// Validation errors
11
- INVALID_FILE_TYPE:"INVALID_FILE_TYPE",INVALID_PARAMETERS:"INVALID_PARAMETERS",// System errors
12
- BRIDGE_UNAVAILABLE:"BRIDGE_UNAVAILABLE",FEATURE_UNSUPPORTED:"FEATURE_UNSUPPORTED",INTERNAL_ERROR:"INTERNAL_ERROR",// Camera specific errors
13
- CAMERA_UNAVAILABLE:"CAMERA_UNAVAILABLE",CAMERA_IN_USE:"CAMERA_IN_USE"};// Error definitions with user-friendly messages and recovery actions
14
- const ERROR_DEFINITIONS=exports.ERROR_DEFINITIONS={[ERROR_CODES.PERMISSION_DENIED]:{category:ERROR_CATEGORIES.PERMISSION,defaultMessage:"Permission denied",defaultDetails:"Required permission was not granted by the user",recoverable:true,suggestedAction:"Grant permission in device settings and try again"},[ERROR_CODES.PERMISSION_REQUIRED]:{category:ERROR_CATEGORIES.PERMISSION,defaultMessage:"Permission required",defaultDetails:"This operation requires additional permissions",recoverable:true,suggestedAction:"Grant the required permission to continue"},[ERROR_CODES.NETWORK_UNAVAILABLE]:{category:ERROR_CATEGORIES.NETWORK,defaultMessage:"No internet connection",defaultDetails:"Network connection is required for this operation",recoverable:true,suggestedAction:"Check your internet connection and try again"},[ERROR_CODES.FILE_NOT_FOUND]:{category:ERROR_CATEGORIES.FILE_SYSTEM,defaultMessage:"File not found",defaultDetails:"The requested file could not be located",recoverable:false,suggestedAction:"The file may have been moved or deleted"},[ERROR_CODES.FILE_TOO_LARGE]:{category:ERROR_CATEGORIES.VALIDATION,defaultMessage:"File too large",defaultDetails:"File exceeds the maximum size limit",recoverable:true,suggestedAction:"Choose a smaller file or compress the current file"},[ERROR_CODES.STORAGE_FULL]:{category:ERROR_CATEGORIES.FILE_SYSTEM,defaultMessage:"Storage full",defaultDetails:"Device storage is full and cannot save the file",recoverable:true,suggestedAction:"Free up some storage space and try again"},[ERROR_CODES.OPERATION_CANCELLED]:{category:ERROR_CATEGORIES.USER_ACTION,defaultMessage:"Operation cancelled",defaultDetails:"The operation was cancelled by the user",recoverable:true,suggestedAction:"Try again if you want to complete the operation"},[ERROR_CODES.INVALID_FILE_TYPE]:{category:ERROR_CATEGORIES.VALIDATION,defaultMessage:"Invalid file type",defaultDetails:"The selected file type is not supported",recoverable:true,suggestedAction:"Choose a file with a supported format"},[ERROR_CODES.BRIDGE_UNAVAILABLE]:{category:ERROR_CATEGORIES.SYSTEM,defaultMessage:"Native feature unavailable",defaultDetails:"The native bridge is not available or not initialized",recoverable:false,suggestedAction:"Use web fallback if available"},[ERROR_CODES.FEATURE_UNSUPPORTED]:{category:ERROR_CATEGORIES.SYSTEM,defaultMessage:"Feature not supported",defaultDetails:"This feature is not supported on the current platform",recoverable:false,suggestedAction:"Try using an alternative method or device"},[ERROR_CODES.CAMERA_UNAVAILABLE]:{category:ERROR_CATEGORIES.SYSTEM,defaultMessage:"Camera unavailable",defaultDetails:"Camera hardware is not available or accessible",recoverable:false,suggestedAction:"Check if your device has a camera and try again"},[ERROR_CODES.CAMERA_IN_USE]:{category:ERROR_CATEGORIES.SYSTEM,defaultMessage:"Camera in use",defaultDetails:"Camera is being used by another application",recoverable:true,suggestedAction:"Close other camera apps and try again"},[ERROR_CODES.INTERNAL_ERROR]:{category:ERROR_CATEGORIES.UNKNOWN,defaultMessage:"An unexpected error occurred",defaultDetails:"An internal error occurred while processing the request",recoverable:true,suggestedAction:"Try again or contact support if the problem persists"}};/**
10
+ */
11
+
12
+ // Error categories for logical grouping
13
+ const ERROR_CATEGORIES = exports.ERROR_CATEGORIES = {
14
+ PERMISSION: "PERMISSION",
15
+ NETWORK: "NETWORK",
16
+ FILE_SYSTEM: "FILE_SYSTEM",
17
+ USER_ACTION: "USER_ACTION",
18
+ VALIDATION: "VALIDATION",
19
+ SYSTEM: "SYSTEM",
20
+ UNKNOWN: "UNKNOWN"
21
+ };
22
+
23
+ // Standardized error codes
24
+ const ERROR_CODES = exports.ERROR_CODES = {
25
+ // Permission errors
26
+ PERMISSION_DENIED: "PERMISSION_DENIED",
27
+ PERMISSION_REQUIRED: "PERMISSION_REQUIRED",
28
+ // Network errors
29
+ NETWORK_UNAVAILABLE: "NETWORK_UNAVAILABLE",
30
+ DOWNLOAD_FAILED: "DOWNLOAD_FAILED",
31
+ // File system errors
32
+ FILE_NOT_FOUND: "FILE_NOT_FOUND",
33
+ FILE_TOO_LARGE: "FILE_TOO_LARGE",
34
+ STORAGE_FULL: "STORAGE_FULL",
35
+ FILE_CORRUPTED: "FILE_CORRUPTED",
36
+ // User action errors
37
+ OPERATION_CANCELLED: "OPERATION_CANCELLED",
38
+ NO_FILE_SELECTED: "NO_FILE_SELECTED",
39
+ // Validation errors
40
+ INVALID_FILE_TYPE: "INVALID_FILE_TYPE",
41
+ INVALID_PARAMETERS: "INVALID_PARAMETERS",
42
+ // System errors
43
+ BRIDGE_UNAVAILABLE: "BRIDGE_UNAVAILABLE",
44
+ FEATURE_UNSUPPORTED: "FEATURE_UNSUPPORTED",
45
+ INTERNAL_ERROR: "INTERNAL_ERROR",
46
+ // Camera specific errors
47
+ CAMERA_UNAVAILABLE: "CAMERA_UNAVAILABLE",
48
+ CAMERA_IN_USE: "CAMERA_IN_USE"
49
+ };
50
+
51
+ // Error definitions with user-friendly messages and recovery actions
52
+ const ERROR_DEFINITIONS = exports.ERROR_DEFINITIONS = {
53
+ [ERROR_CODES.PERMISSION_DENIED]: {
54
+ category: ERROR_CATEGORIES.PERMISSION,
55
+ defaultMessage: "Permission denied",
56
+ defaultDetails: "Required permission was not granted by the user",
57
+ recoverable: true,
58
+ suggestedAction: "Grant permission in device settings and try again"
59
+ },
60
+ [ERROR_CODES.PERMISSION_REQUIRED]: {
61
+ category: ERROR_CATEGORIES.PERMISSION,
62
+ defaultMessage: "Permission required",
63
+ defaultDetails: "This operation requires additional permissions",
64
+ recoverable: true,
65
+ suggestedAction: "Grant the required permission to continue"
66
+ },
67
+ [ERROR_CODES.NETWORK_UNAVAILABLE]: {
68
+ category: ERROR_CATEGORIES.NETWORK,
69
+ defaultMessage: "No internet connection",
70
+ defaultDetails: "Network connection is required for this operation",
71
+ recoverable: true,
72
+ suggestedAction: "Check your internet connection and try again"
73
+ },
74
+ [ERROR_CODES.FILE_NOT_FOUND]: {
75
+ category: ERROR_CATEGORIES.FILE_SYSTEM,
76
+ defaultMessage: "File not found",
77
+ defaultDetails: "The requested file could not be located",
78
+ recoverable: false,
79
+ suggestedAction: "The file may have been moved or deleted"
80
+ },
81
+ [ERROR_CODES.FILE_TOO_LARGE]: {
82
+ category: ERROR_CATEGORIES.VALIDATION,
83
+ defaultMessage: "File too large",
84
+ defaultDetails: "File exceeds the maximum size limit",
85
+ recoverable: true,
86
+ suggestedAction: "Choose a smaller file or compress the current file"
87
+ },
88
+ [ERROR_CODES.STORAGE_FULL]: {
89
+ category: ERROR_CATEGORIES.FILE_SYSTEM,
90
+ defaultMessage: "Storage full",
91
+ defaultDetails: "Device storage is full and cannot save the file",
92
+ recoverable: true,
93
+ suggestedAction: "Free up some storage space and try again"
94
+ },
95
+ [ERROR_CODES.OPERATION_CANCELLED]: {
96
+ category: ERROR_CATEGORIES.USER_ACTION,
97
+ defaultMessage: "Operation cancelled",
98
+ defaultDetails: "The operation was cancelled by the user",
99
+ recoverable: true,
100
+ suggestedAction: "Try again if you want to complete the operation"
101
+ },
102
+ [ERROR_CODES.INVALID_FILE_TYPE]: {
103
+ category: ERROR_CATEGORIES.VALIDATION,
104
+ defaultMessage: "Invalid file type",
105
+ defaultDetails: "The selected file type is not supported",
106
+ recoverable: true,
107
+ suggestedAction: "Choose a file with a supported format"
108
+ },
109
+ [ERROR_CODES.BRIDGE_UNAVAILABLE]: {
110
+ category: ERROR_CATEGORIES.SYSTEM,
111
+ defaultMessage: "Native feature unavailable",
112
+ defaultDetails: "The native bridge is not available or not initialized",
113
+ recoverable: false,
114
+ suggestedAction: "Use web fallback if available"
115
+ },
116
+ [ERROR_CODES.FEATURE_UNSUPPORTED]: {
117
+ category: ERROR_CATEGORIES.SYSTEM,
118
+ defaultMessage: "Feature not supported",
119
+ defaultDetails: "This feature is not supported on the current platform",
120
+ recoverable: false,
121
+ suggestedAction: "Try using an alternative method or device"
122
+ },
123
+ [ERROR_CODES.CAMERA_UNAVAILABLE]: {
124
+ category: ERROR_CATEGORIES.SYSTEM,
125
+ defaultMessage: "Camera unavailable",
126
+ defaultDetails: "Camera hardware is not available or accessible",
127
+ recoverable: false,
128
+ suggestedAction: "Check if your device has a camera and try again"
129
+ },
130
+ [ERROR_CODES.CAMERA_IN_USE]: {
131
+ category: ERROR_CATEGORIES.SYSTEM,
132
+ defaultMessage: "Camera in use",
133
+ defaultDetails: "Camera is being used by another application",
134
+ recoverable: true,
135
+ suggestedAction: "Close other camera apps and try again"
136
+ },
137
+ [ERROR_CODES.INTERNAL_ERROR]: {
138
+ category: ERROR_CATEGORIES.UNKNOWN,
139
+ defaultMessage: "An unexpected error occurred",
140
+ defaultDetails: "An internal error occurred while processing the request",
141
+ recoverable: true,
142
+ suggestedAction: "Try again or contact support if the problem persists"
143
+ }
144
+ };
145
+
146
+ /**
15
147
  * Create a standardized error object
16
148
  * @param {string} code - Error code from ERROR_CODES
17
149
  * @param {string} userMessage - Custom user-friendly message (optional)
18
150
  * @param {any} nativeError - Original native error for debugging
19
151
  * @param {string} customDetails - Custom details (optional)
20
152
  * @returns {Object} Standardized error object
21
- */const createStandardError=(code,userMessage=null,nativeError=null,customDetails=null)=>{const errorInfo=ERROR_DEFINITIONS[code]||ERROR_DEFINITIONS[ERROR_CODES.INTERNAL_ERROR];return{code,category:errorInfo.category,message:userMessage||errorInfo.defaultMessage,details:customDetails||errorInfo.defaultDetails,recoverable:errorInfo.recoverable,action:errorInfo.suggestedAction,nativeError:nativeError,timestamp:new Date().toISOString()};};/**
153
+ */
154
+ const createStandardError = (code, userMessage = null, nativeError = null, customDetails = null) => {
155
+ const errorInfo = ERROR_DEFINITIONS[code] || ERROR_DEFINITIONS[ERROR_CODES.INTERNAL_ERROR];
156
+ return {
157
+ code,
158
+ category: errorInfo.category,
159
+ message: userMessage || errorInfo.defaultMessage,
160
+ details: customDetails || errorInfo.defaultDetails,
161
+ recoverable: errorInfo.recoverable,
162
+ action: errorInfo.suggestedAction,
163
+ nativeError: nativeError,
164
+ timestamp: new Date().toISOString()
165
+ };
166
+ };
167
+
168
+ /**
22
169
  * Translate native error to standardized error
23
170
  * @param {any} nativeError - Native error from Android/iOS
24
171
  * @returns {Object} Standardized error object
25
- */exports.createStandardError=createStandardError;const translateError=nativeError=>{if(!nativeError){return createStandardError(ERROR_CODES.INTERNAL_ERROR,null,nativeError);}const errorString=nativeError.toString().toLowerCase();if(errorString.includes("disabled")&&errorString.includes("config")){return createStandardError(ERROR_CODES.FEATURE_UNSUPPORTED,nativeError.toString(),nativeError);}// Permission errors
26
- if(errorString.includes("permission")&&errorString.includes("denied")){if(errorString.includes("camera")){return createStandardError(ERROR_CODES.PERMISSION_DENIED,"Camera permission denied",nativeError);}if(errorString.includes("storage")||errorString.includes("external_storage")){return createStandardError(ERROR_CODES.PERMISSION_DENIED,"Storage permission denied",nativeError);}return createStandardError(ERROR_CODES.PERMISSION_DENIED,null,nativeError);}// File system errors
27
- if(errorString.includes("filenotfound")||errorString.includes("file not found")){return createStandardError(ERROR_CODES.FILE_NOT_FOUND,null,nativeError);}if(errorString.includes("storage")&&errorString.includes("full")){return createStandardError(ERROR_CODES.STORAGE_FULL,null,nativeError);}// Network errors
28
- if(errorString.includes("network")||errorString.includes("connection")||errorString.includes("internet")){return createStandardError(ERROR_CODES.NETWORK_UNAVAILABLE,null,nativeError);}// User cancellation
29
- if(errorString.includes("cancel")||errorString.includes("abort")){return createStandardError(ERROR_CODES.OPERATION_CANCELLED,null,nativeError);}// Camera specific errors
30
- if(errorString.includes("camera")){if(errorString.includes("unavailable")||errorString.includes("not available")){return createStandardError(ERROR_CODES.CAMERA_UNAVAILABLE,null,nativeError);}if(errorString.includes("in use")||errorString.includes("busy")){return createStandardError(ERROR_CODES.CAMERA_IN_USE,null,nativeError);}}// Activity/Intent errors (Android)
31
- if(errorString.includes("activitynotfound")){return createStandardError(ERROR_CODES.FEATURE_UNSUPPORTED,"No app available to handle this request",nativeError);}// iOS specific error codes
32
- if(typeof nativeError==="object"&&nativeError.code&&nativeError.domain){// Camera errors (iOS)
33
- if(nativeError.domain==="AVCaptureSessionErrorDomain"){if(nativeError.code===-11814){return createStandardError(ERROR_CODES.PERMISSION_DENIED,"Camera access denied",nativeError);}}// Network errors (iOS)
34
- if(nativeError.domain==="NSURLErrorDomain"){if(nativeError.code===-1009){return createStandardError(ERROR_CODES.NETWORK_UNAVAILABLE,null,nativeError);}}// File system errors (iOS)
35
- if(nativeError.domain==="NSCocoaErrorDomain"){if(nativeError.code===260){return createStandardError(ERROR_CODES.FILE_NOT_FOUND,null,nativeError);}}}// Default to internal error
36
- return createStandardError(ERROR_CODES.INTERNAL_ERROR,null,nativeError);};/**
172
+ */
173
+ exports.createStandardError = createStandardError;
174
+ const translateError = nativeError => {
175
+ if (!nativeError) {
176
+ return createStandardError(ERROR_CODES.INTERNAL_ERROR, null, nativeError);
177
+ }
178
+ const errorString = nativeError.toString().toLowerCase();
179
+ if (errorString.includes("disabled") && errorString.includes("config")) {
180
+ return createStandardError(ERROR_CODES.FEATURE_UNSUPPORTED, nativeError.toString(), nativeError);
181
+ }
182
+
183
+ // Permission errors
184
+ if (errorString.includes("permission") && errorString.includes("denied")) {
185
+ if (errorString.includes("camera")) {
186
+ return createStandardError(ERROR_CODES.PERMISSION_DENIED, "Camera permission denied", nativeError);
187
+ }
188
+ if (errorString.includes("storage") || errorString.includes("external_storage")) {
189
+ return createStandardError(ERROR_CODES.PERMISSION_DENIED, "Storage permission denied", nativeError);
190
+ }
191
+ return createStandardError(ERROR_CODES.PERMISSION_DENIED, null, nativeError);
192
+ }
193
+
194
+ // File system errors
195
+ if (errorString.includes("filenotfound") || errorString.includes("file not found")) {
196
+ return createStandardError(ERROR_CODES.FILE_NOT_FOUND, null, nativeError);
197
+ }
198
+ if (errorString.includes("storage") && errorString.includes("full")) {
199
+ return createStandardError(ERROR_CODES.STORAGE_FULL, null, nativeError);
200
+ }
201
+
202
+ // Network errors
203
+ if (errorString.includes("network") || errorString.includes("connection") || errorString.includes("internet")) {
204
+ return createStandardError(ERROR_CODES.NETWORK_UNAVAILABLE, null, nativeError);
205
+ }
206
+
207
+ // User cancellation
208
+ if (errorString.includes("cancel") || errorString.includes("abort")) {
209
+ return createStandardError(ERROR_CODES.OPERATION_CANCELLED, null, nativeError);
210
+ }
211
+
212
+ // Camera specific errors
213
+ if (errorString.includes("camera")) {
214
+ if (errorString.includes("unavailable") || errorString.includes("not available")) {
215
+ return createStandardError(ERROR_CODES.CAMERA_UNAVAILABLE, null, nativeError);
216
+ }
217
+ if (errorString.includes("in use") || errorString.includes("busy")) {
218
+ return createStandardError(ERROR_CODES.CAMERA_IN_USE, null, nativeError);
219
+ }
220
+ }
221
+
222
+ // Activity/Intent errors (Android)
223
+ if (errorString.includes("activitynotfound")) {
224
+ return createStandardError(ERROR_CODES.FEATURE_UNSUPPORTED, "No app available to handle this request", nativeError);
225
+ }
226
+
227
+ // iOS specific error codes
228
+ if (typeof nativeError === "object" && nativeError.code && nativeError.domain) {
229
+ // Camera errors (iOS)
230
+ if (nativeError.domain === "AVCaptureSessionErrorDomain") {
231
+ if (nativeError.code === -11814) {
232
+ return createStandardError(ERROR_CODES.PERMISSION_DENIED, "Camera access denied", nativeError);
233
+ }
234
+ }
235
+
236
+ // Network errors (iOS)
237
+ if (nativeError.domain === "NSURLErrorDomain") {
238
+ if (nativeError.code === -1009) {
239
+ return createStandardError(ERROR_CODES.NETWORK_UNAVAILABLE, null, nativeError);
240
+ }
241
+ }
242
+
243
+ // File system errors (iOS)
244
+ if (nativeError.domain === "NSCocoaErrorDomain") {
245
+ if (nativeError.code === 260) {
246
+ return createStandardError(ERROR_CODES.FILE_NOT_FOUND, null, nativeError);
247
+ }
248
+ }
249
+ }
250
+
251
+ // Default to internal error
252
+ return createStandardError(ERROR_CODES.INTERNAL_ERROR, null, nativeError);
253
+ };
254
+
255
+ /**
37
256
  * Check if development mode is enabled
38
257
  * @returns {boolean} True if in development mode
39
- */exports.translateError=translateError;const isDevelopment=()=>{return typeof process!=="undefined"&&process.env&&process.env.NODE_ENV==="development";};exports.isDevelopment=isDevelopment;
258
+ */
259
+ exports.translateError = translateError;
260
+ const isDevelopment = () => {
261
+ return typeof process !== "undefined" && process.env && process.env.NODE_ENV === "development";
262
+ };
263
+ exports.isDevelopment = isDevelopment;