react-native-ble-mesh 1.0.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 (465) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/LICENSE +21 -0
  3. package/README.md +706 -0
  4. package/docs/API.md +462 -0
  5. package/docs/ARCHITECTURE.md +384 -0
  6. package/docs/CONTRIBUTING.md +244 -0
  7. package/docs/NODE_QUICKSTART.md +259 -0
  8. package/docs/PROTOCOL.md +195 -0
  9. package/docs/REACT_NATIVE.md +315 -0
  10. package/docs/SECURITY.md +152 -0
  11. package/docs/api/constants_audio.js.html +184 -0
  12. package/docs/api/constants_ble.js.html +165 -0
  13. package/docs/api/constants_crypto.js.html +107 -0
  14. package/docs/api/constants_errors.js.html +256 -0
  15. package/docs/api/constants_events.js.html +148 -0
  16. package/docs/api/constants_index.js.html +76 -0
  17. package/docs/api/constants_protocol.js.html +205 -0
  18. package/docs/api/crypto_aead.js.html +243 -0
  19. package/docs/api/crypto_chacha20.js.html +235 -0
  20. package/docs/api/crypto_hkdf.js.html +241 -0
  21. package/docs/api/crypto_hmac.js.html +197 -0
  22. package/docs/api/crypto_index.js.html +126 -0
  23. package/docs/api/crypto_keys_KeyManager.js.html +325 -0
  24. package/docs/api/crypto_keys_KeyPair.js.html +270 -0
  25. package/docs/api/crypto_keys_SecureStorage.js.html +273 -0
  26. package/docs/api/crypto_keys_index.js.html +86 -0
  27. package/docs/api/crypto_noise_handshake.js.html +464 -0
  28. package/docs/api/crypto_noise_index.js.html +81 -0
  29. package/docs/api/crypto_noise_session.js.html +307 -0
  30. package/docs/api/crypto_noise_state.js.html +322 -0
  31. package/docs/api/crypto_poly1305.js.html +167 -0
  32. package/docs/api/crypto_sha256.js.html +294 -0
  33. package/docs/api/crypto_x25519.js.html +208 -0
  34. package/docs/api/errors_AudioError.js.html +218 -0
  35. package/docs/api/errors_ConnectionError.js.html +163 -0
  36. package/docs/api/errors_CryptoError.js.html +157 -0
  37. package/docs/api/errors_HandshakeError.js.html +176 -0
  38. package/docs/api/errors_MeshError.js.html +154 -0
  39. package/docs/api/errors_MessageError.js.html +183 -0
  40. package/docs/api/errors_ValidationError.js.html +204 -0
  41. package/docs/api/errors_index.js.html +78 -0
  42. package/docs/api/fonts/OpenSans-Bold-webfont.eot +0 -0
  43. package/docs/api/fonts/OpenSans-Bold-webfont.svg +1830 -0
  44. package/docs/api/fonts/OpenSans-Bold-webfont.woff +0 -0
  45. package/docs/api/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  46. package/docs/api/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
  47. package/docs/api/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  48. package/docs/api/fonts/OpenSans-Italic-webfont.eot +0 -0
  49. package/docs/api/fonts/OpenSans-Italic-webfont.svg +1830 -0
  50. package/docs/api/fonts/OpenSans-Italic-webfont.woff +0 -0
  51. package/docs/api/fonts/OpenSans-Light-webfont.eot +0 -0
  52. package/docs/api/fonts/OpenSans-Light-webfont.svg +1831 -0
  53. package/docs/api/fonts/OpenSans-Light-webfont.woff +0 -0
  54. package/docs/api/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  55. package/docs/api/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
  56. package/docs/api/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  57. package/docs/api/fonts/OpenSans-Regular-webfont.eot +0 -0
  58. package/docs/api/fonts/OpenSans-Regular-webfont.svg +1831 -0
  59. package/docs/api/fonts/OpenSans-Regular-webfont.woff +0 -0
  60. package/docs/api/hooks_AppStateManager.js.html +233 -0
  61. package/docs/api/hooks_index.js.html +87 -0
  62. package/docs/api/hooks_useMesh.js.html +213 -0
  63. package/docs/api/hooks_useMessages.js.html +263 -0
  64. package/docs/api/hooks_usePeers.js.html +165 -0
  65. package/docs/api/index.html +868 -0
  66. package/docs/api/index.js.html +236 -0
  67. package/docs/api/mesh_dedup_BloomFilter.js.html +261 -0
  68. package/docs/api/mesh_dedup_DedupManager.js.html +266 -0
  69. package/docs/api/mesh_dedup_MessageCache.js.html +273 -0
  70. package/docs/api/mesh_dedup_index.js.html +70 -0
  71. package/docs/api/mesh_fragment_Assembler.js.html +335 -0
  72. package/docs/api/mesh_fragment_Fragmenter.js.html +230 -0
  73. package/docs/api/mesh_fragment_index.js.html +75 -0
  74. package/docs/api/mesh_index.js.html +72 -0
  75. package/docs/api/mesh_peer_Peer.js.html +296 -0
  76. package/docs/api/mesh_peer_PeerDiscovery.js.html +334 -0
  77. package/docs/api/mesh_peer_PeerManager.js.html +320 -0
  78. package/docs/api/mesh_peer_index.js.html +70 -0
  79. package/docs/api/mesh_router_MessageRouter.js.html +411 -0
  80. package/docs/api/mesh_router_PathFinder.js.html +386 -0
  81. package/docs/api/mesh_router_RouteTable.js.html +346 -0
  82. package/docs/api/mesh_router_index.js.html +70 -0
  83. package/docs/api/module-audio_buffer.html +168 -0
  84. package/docs/api/module-audio_buffer_FrameBuffer-FrameBuffer.html +2971 -0
  85. package/docs/api/module-audio_buffer_FrameBuffer.html +178 -0
  86. package/docs/api/module-audio_buffer_JitterBuffer-JitterBuffer.html +2761 -0
  87. package/docs/api/module-audio_buffer_JitterBuffer.html +178 -0
  88. package/docs/api/module-audio_codec.html +168 -0
  89. package/docs/api/module-audio_codec_LC3Codec-LC3Codec.html +2876 -0
  90. package/docs/api/module-audio_codec_LC3Codec.html +178 -0
  91. package/docs/api/module-audio_codec_LC3Decoder-LC3Decoder.html +1788 -0
  92. package/docs/api/module-audio_codec_LC3Decoder.html +178 -0
  93. package/docs/api/module-audio_codec_LC3Encoder-LC3Encoder.html +1512 -0
  94. package/docs/api/module-audio_codec_LC3Encoder.html +178 -0
  95. package/docs/api/module-audio_session.html +168 -0
  96. package/docs/api/module-audio_session_AudioSession-AudioSession.html +3922 -0
  97. package/docs/api/module-audio_session_AudioSession.html +178 -0
  98. package/docs/api/module-audio_session_VoiceMessage-VoiceMessage.html +3690 -0
  99. package/docs/api/module-audio_session_VoiceMessage-VoiceMessageRecorder.html +1780 -0
  100. package/docs/api/module-audio_session_VoiceMessage.html +332 -0
  101. package/docs/api/module-audio_transport.html +168 -0
  102. package/docs/api/module-audio_transport_AudioFragmenter-AudioAssembler.html +1545 -0
  103. package/docs/api/module-audio_transport_AudioFragmenter-AudioFragmenter.html +658 -0
  104. package/docs/api/module-audio_transport_AudioFragmenter.html +181 -0
  105. package/docs/api/module-audio_transport_AudioFramer.html +1414 -0
  106. package/docs/api/module-constants.html +168 -0
  107. package/docs/api/module-constants_audio.html +1782 -0
  108. package/docs/api/module-constants_ble.html +940 -0
  109. package/docs/api/module-constants_crypto.html +823 -0
  110. package/docs/api/module-constants_errors.html +316 -0
  111. package/docs/api/module-constants_events.html +244 -0
  112. package/docs/api/module-constants_protocol.html +1534 -0
  113. package/docs/api/module-crypto.html +169 -0
  114. package/docs/api/module-crypto_aead.html +1625 -0
  115. package/docs/api/module-crypto_chacha20.html +1440 -0
  116. package/docs/api/module-crypto_hkdf.html +1421 -0
  117. package/docs/api/module-crypto_hmac.html +828 -0
  118. package/docs/api/module-crypto_keys.html +169 -0
  119. package/docs/api/module-crypto_keys_KeyManager-KeyManager.html +2364 -0
  120. package/docs/api/module-crypto_keys_KeyManager.html +252 -0
  121. package/docs/api/module-crypto_keys_KeyPair.html +245 -0
  122. package/docs/api/module-crypto_keys_SecureStorage-MemorySecureStorage.html +923 -0
  123. package/docs/api/module-crypto_keys_SecureStorage-SecureStorage.html +942 -0
  124. package/docs/api/module-crypto_keys_SecureStorage.html +516 -0
  125. package/docs/api/module-crypto_noise.html +169 -0
  126. package/docs/api/module-crypto_noise_handshake-NoiseHandshake.html +2240 -0
  127. package/docs/api/module-crypto_noise_handshake.html +782 -0
  128. package/docs/api/module-crypto_noise_session-NoiseSession.html +1804 -0
  129. package/docs/api/module-crypto_noise_session.html +325 -0
  130. package/docs/api/module-crypto_noise_state-SymmetricState.html +1387 -0
  131. package/docs/api/module-crypto_noise_state.html +324 -0
  132. package/docs/api/module-crypto_poly1305.html +884 -0
  133. package/docs/api/module-crypto_sha256-HashContext.html +447 -0
  134. package/docs/api/module-crypto_sha256.html +942 -0
  135. package/docs/api/module-crypto_x25519.html +1503 -0
  136. package/docs/api/module-errors.html +168 -0
  137. package/docs/api/module-errors_AudioError-AudioError.html +4711 -0
  138. package/docs/api/module-errors_AudioError.html +178 -0
  139. package/docs/api/module-errors_ConnectionError-ConnectionError.html +3649 -0
  140. package/docs/api/module-errors_ConnectionError.html +178 -0
  141. package/docs/api/module-errors_CryptoError-CryptoError.html +3453 -0
  142. package/docs/api/module-errors_CryptoError.html +178 -0
  143. package/docs/api/module-errors_HandshakeError-HandshakeError.html +4261 -0
  144. package/docs/api/module-errors_HandshakeError.html +178 -0
  145. package/docs/api/module-errors_MeshError-MeshError.html +2155 -0
  146. package/docs/api/module-errors_MeshError.html +178 -0
  147. package/docs/api/module-errors_MessageError-MessageError.html +4545 -0
  148. package/docs/api/module-errors_MessageError.html +178 -0
  149. package/docs/api/module-errors_ValidationError-ValidationError.html +3432 -0
  150. package/docs/api/module-errors_ValidationError.html +178 -0
  151. package/docs/api/module-hooks.html +182 -0
  152. package/docs/api/module-hooks_AppStateManager-AppStateManager.html +1620 -0
  153. package/docs/api/module-hooks_AppStateManager.html +178 -0
  154. package/docs/api/module-hooks_useMesh.html +457 -0
  155. package/docs/api/module-hooks_useMessages.html +466 -0
  156. package/docs/api/module-hooks_usePeers.html +348 -0
  157. package/docs/api/module-mesh.html +168 -0
  158. package/docs/api/module-mesh_dedup.html +168 -0
  159. package/docs/api/module-mesh_dedup_BloomFilter-BloomFilter.html +2158 -0
  160. package/docs/api/module-mesh_dedup_BloomFilter.html +178 -0
  161. package/docs/api/module-mesh_dedup_DedupManager-DedupManager.html +2880 -0
  162. package/docs/api/module-mesh_dedup_DedupManager.html +178 -0
  163. package/docs/api/module-mesh_dedup_MessageCache-CacheNode.html +246 -0
  164. package/docs/api/module-mesh_dedup_MessageCache-MessageCache.html +2314 -0
  165. package/docs/api/module-mesh_dedup_MessageCache.html +181 -0
  166. package/docs/api/module-mesh_fragment.html +168 -0
  167. package/docs/api/module-mesh_fragment_Assembler-Assembler.html +2869 -0
  168. package/docs/api/module-mesh_fragment_Assembler-PendingFragmentSet.html +895 -0
  169. package/docs/api/module-mesh_fragment_Assembler.html +181 -0
  170. package/docs/api/module-mesh_fragment_Fragmenter.html +1084 -0
  171. package/docs/api/module-mesh_peer.html +168 -0
  172. package/docs/api/module-mesh_peer_Peer-Peer.html +4986 -0
  173. package/docs/api/module-mesh_peer_Peer.html +178 -0
  174. package/docs/api/module-mesh_peer_PeerDiscovery-PeerDiscovery.html +3423 -0
  175. package/docs/api/module-mesh_peer_PeerDiscovery.html +438 -0
  176. package/docs/api/module-mesh_peer_PeerManager-PeerManager.html +5258 -0
  177. package/docs/api/module-mesh_peer_PeerManager.html +178 -0
  178. package/docs/api/module-mesh_router.html +168 -0
  179. package/docs/api/module-mesh_router_MessageRouter-MessageRouter.html +3285 -0
  180. package/docs/api/module-mesh_router_MessageRouter.html +178 -0
  181. package/docs/api/module-mesh_router_PathFinder-PathFinder.html +3323 -0
  182. package/docs/api/module-mesh_router_PathFinder.html +421 -0
  183. package/docs/api/module-mesh_router_RouteTable-RouteTable.html +4115 -0
  184. package/docs/api/module-mesh_router_RouteTable.html +421 -0
  185. package/docs/api/module-protocol.html +169 -0
  186. package/docs/api/module-protocol_crc32.html +815 -0
  187. package/docs/api/module-protocol_deserializer.html +1393 -0
  188. package/docs/api/module-protocol_header-MessageHeader.html +2879 -0
  189. package/docs/api/module-protocol_header.html +892 -0
  190. package/docs/api/module-protocol_message-Message.html +4682 -0
  191. package/docs/api/module-protocol_message.html +178 -0
  192. package/docs/api/module-protocol_serializer.html +911 -0
  193. package/docs/api/module-protocol_validator.html +1396 -0
  194. package/docs/api/module-rn-ble-mesh.html +866 -0
  195. package/docs/api/module-service.html +168 -0
  196. package/docs/api/module-service_HandshakeManager-HandshakeManager.html +185 -0
  197. package/docs/api/module-service_HandshakeManager.html +175 -0
  198. package/docs/api/module-service_MeshService-MeshService.html +185 -0
  199. package/docs/api/module-service_MeshService.html +175 -0
  200. package/docs/api/module-service_SessionManager-SessionManager.html +174 -0
  201. package/docs/api/module-service_SessionManager.html +175 -0
  202. package/docs/api/module-service_audio.html +168 -0
  203. package/docs/api/module-service_audio_AudioManager-AudioManager.html +4653 -0
  204. package/docs/api/module-service_audio_AudioManager.html +254 -0
  205. package/docs/api/module-service_text.html +168 -0
  206. package/docs/api/module-service_text_TextManager-TextManager.html +6104 -0
  207. package/docs/api/module-service_text_TextManager.html +254 -0
  208. package/docs/api/module-service_text_broadcast.html +168 -0
  209. package/docs/api/module-service_text_broadcast_BroadcastManager-BroadcastManager.html +2434 -0
  210. package/docs/api/module-service_text_broadcast_BroadcastManager.html +254 -0
  211. package/docs/api/module-service_text_channel.html +168 -0
  212. package/docs/api/module-service_text_channel_Channel-Channel.html +4337 -0
  213. package/docs/api/module-service_text_channel_Channel.html +178 -0
  214. package/docs/api/module-service_text_channel_ChannelManager-ChannelManager.html +1927 -0
  215. package/docs/api/module-service_text_channel_ChannelManager.html +175 -0
  216. package/docs/api/module-service_text_message.html +168 -0
  217. package/docs/api/module-service_text_message_TextMessage-TextMessage.html +4162 -0
  218. package/docs/api/module-service_text_message_TextMessage.html +178 -0
  219. package/docs/api/module-service_text_message_TextSerializer.html +1725 -0
  220. package/docs/api/module-storage.html +168 -0
  221. package/docs/api/module-storage_AsyncStorageAdapter-AsyncStorageAdapter.html +4159 -0
  222. package/docs/api/module-storage_AsyncStorageAdapter.html +178 -0
  223. package/docs/api/module-storage_MemoryStorage-MemoryStorage.html +3154 -0
  224. package/docs/api/module-storage_MemoryStorage.html +178 -0
  225. package/docs/api/module-storage_MessageStore-MessageStore.html +5299 -0
  226. package/docs/api/module-storage_MessageStore.html +178 -0
  227. package/docs/api/module-storage_Storage-Storage.html +4169 -0
  228. package/docs/api/module-storage_Storage.html +178 -0
  229. package/docs/api/module-transport.html +168 -0
  230. package/docs/api/module-transport_BLEAdapter-BLEAdapter.html +4724 -0
  231. package/docs/api/module-transport_BLEAdapter.html +178 -0
  232. package/docs/api/module-transport_BLETransport-BLETransport.html +3263 -0
  233. package/docs/api/module-transport_BLETransport.html +178 -0
  234. package/docs/api/module-transport_MockTransport-MockTransport.html +3947 -0
  235. package/docs/api/module-transport_MockTransport.html +178 -0
  236. package/docs/api/module-transport_NodeBLEAdapter-NodeBLEAdapter.html +3216 -0
  237. package/docs/api/module-transport_NodeBLEAdapter.html +178 -0
  238. package/docs/api/module-transport_RNBLEAdapter-RNBLEAdapter.html +3216 -0
  239. package/docs/api/module-transport_RNBLEAdapter.html +178 -0
  240. package/docs/api/module-transport_Transport-Transport.html +4071 -0
  241. package/docs/api/module-transport_Transport.html +254 -0
  242. package/docs/api/module-transport_adapters.html +168 -0
  243. package/docs/api/module-transport_adapters_BLEAdapter-BLEAdapter.html +4724 -0
  244. package/docs/api/module-transport_adapters_BLEAdapter.html +178 -0
  245. package/docs/api/module-transport_adapters_NodeBLEAdapter-NodeBLEAdapter.html +3216 -0
  246. package/docs/api/module-transport_adapters_NodeBLEAdapter.html +178 -0
  247. package/docs/api/module-transport_adapters_RNBLEAdapter-RNBLEAdapter.html +3216 -0
  248. package/docs/api/module-transport_adapters_RNBLEAdapter.html +178 -0
  249. package/docs/api/module-utils.html +168 -0
  250. package/docs/api/module-utils_BoundedMap-BoundedMap.html +3301 -0
  251. package/docs/api/module-utils_BoundedMap.html +178 -0
  252. package/docs/api/module-utils_EventEmitter-EventEmitter.html +3358 -0
  253. package/docs/api/module-utils_EventEmitter.html +178 -0
  254. package/docs/api/module-utils_LRUCache-LRUCache.html +4134 -0
  255. package/docs/api/module-utils_LRUCache.html +178 -0
  256. package/docs/api/module-utils_RateLimiter-RateLimiter.html +2176 -0
  257. package/docs/api/module-utils_RateLimiter.html +500 -0
  258. package/docs/api/module-utils_TimeoutManager-TimeoutManager.html +1781 -0
  259. package/docs/api/module-utils_TimeoutManager.html +175 -0
  260. package/docs/api/module-utils_bytes.html +1789 -0
  261. package/docs/api/module-utils_debug.html +837 -0
  262. package/docs/api/module-utils_encoding.html +1184 -0
  263. package/docs/api/module-utils_retry.html +1457 -0
  264. package/docs/api/module-utils_time.html +1665 -0
  265. package/docs/api/module-utils_uuid.html +1269 -0
  266. package/docs/api/module-utils_validation.html +2176 -0
  267. package/docs/api/protocol_crc32.js.html +147 -0
  268. package/docs/api/protocol_deserializer.js.html +295 -0
  269. package/docs/api/protocol_header.js.html +276 -0
  270. package/docs/api/protocol_index.js.html +120 -0
  271. package/docs/api/protocol_message.js.html +287 -0
  272. package/docs/api/protocol_serializer.js.html +240 -0
  273. package/docs/api/protocol_validator.js.html +330 -0
  274. package/docs/api/scripts/linenumber.js +25 -0
  275. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -0
  276. package/docs/api/scripts/prettify/lang-css.js +2 -0
  277. package/docs/api/scripts/prettify/prettify.js +28 -0
  278. package/docs/api/service_HandshakeManager.js.html +232 -0
  279. package/docs/api/service_MeshService.js.html +371 -0
  280. package/docs/api/service_SessionManager.js.html +153 -0
  281. package/docs/api/service_audio_AudioManager.js.html +541 -0
  282. package/docs/api/service_audio_buffer_FrameBuffer.js.html +223 -0
  283. package/docs/api/service_audio_buffer_JitterBuffer.js.html +244 -0
  284. package/docs/api/service_audio_buffer_index.js.html +68 -0
  285. package/docs/api/service_audio_codec_LC3Codec.js.html +345 -0
  286. package/docs/api/service_audio_codec_LC3Decoder.js.html +185 -0
  287. package/docs/api/service_audio_codec_LC3Encoder.js.html +194 -0
  288. package/docs/api/service_audio_codec_index.js.html +70 -0
  289. package/docs/api/service_audio_index.js.html +96 -0
  290. package/docs/api/service_audio_session_AudioSession.js.html +348 -0
  291. package/docs/api/service_audio_session_VoiceMessage.js.html +432 -0
  292. package/docs/api/service_audio_session_index.js.html +70 -0
  293. package/docs/api/service_audio_transport_AudioFragmenter.js.html +314 -0
  294. package/docs/api/service_audio_transport_AudioFramer.js.html +236 -0
  295. package/docs/api/service_audio_transport_index.js.html +69 -0
  296. package/docs/api/service_index.js.html +93 -0
  297. package/docs/api/service_text_TextManager.js.html +578 -0
  298. package/docs/api/service_text_broadcast_BroadcastManager.js.html +276 -0
  299. package/docs/api/service_text_broadcast_index.js.html +66 -0
  300. package/docs/api/service_text_channel_Channel.js.html +280 -0
  301. package/docs/api/service_text_channel_ChannelManager.js.html +225 -0
  302. package/docs/api/service_text_channel_index.js.html +68 -0
  303. package/docs/api/service_text_index.js.html +85 -0
  304. package/docs/api/service_text_message_TextMessage.js.html +350 -0
  305. package/docs/api/service_text_message_TextSerializer.js.html +218 -0
  306. package/docs/api/service_text_message_index.js.html +68 -0
  307. package/docs/api/storage_AsyncStorageAdapter.js.html +357 -0
  308. package/docs/api/storage_MemoryStorage.js.html +279 -0
  309. package/docs/api/storage_MessageStore.js.html +369 -0
  310. package/docs/api/storage_Storage.js.html +214 -0
  311. package/docs/api/storage_index.js.html +72 -0
  312. package/docs/api/styles/jsdoc-default.css +358 -0
  313. package/docs/api/styles/prettify-jsdoc.css +111 -0
  314. package/docs/api/styles/prettify-tomorrow.css +132 -0
  315. package/docs/api/transport_BLEAdapter.js.html +231 -0
  316. package/docs/api/transport_BLETransport.js.html +411 -0
  317. package/docs/api/transport_MockTransport.js.html +339 -0
  318. package/docs/api/transport_NodeBLEAdapter.js.html +479 -0
  319. package/docs/api/transport_RNBLEAdapter.js.html +382 -0
  320. package/docs/api/transport_Transport.js.html +242 -0
  321. package/docs/api/transport_adapters_BLEAdapter.js.html +231 -0
  322. package/docs/api/transport_adapters_NodeBLEAdapter.js.html +479 -0
  323. package/docs/api/transport_adapters_RNBLEAdapter.js.html +382 -0
  324. package/docs/api/transport_adapters_index.js.html +70 -0
  325. package/docs/api/transport_index.js.html +87 -0
  326. package/docs/api/utils_BoundedMap.js.html +205 -0
  327. package/docs/api/utils_EventEmitter.js.html +259 -0
  328. package/docs/api/utils_LRUCache.js.html +256 -0
  329. package/docs/api/utils_RateLimiter.js.html +256 -0
  330. package/docs/api/utils_TimeoutManager.js.html +218 -0
  331. package/docs/api/utils_base64%0A%0AThis%20implementation%20avoids%20string%20concatenation%20in%20loops%20which%20is%20O(n%C2%B2).%0AUses%20array%20building%20which%20is%20O(n)%20-%20critical%20for%20React%20Native%20performance.module_.html +717 -0
  332. package/docs/api/utils_base64.js.html +205 -0
  333. package/docs/api/utils_bytes.js.html +241 -0
  334. package/docs/api/utils_debug.js.html +205 -0
  335. package/docs/api/utils_encoding.js.html +302 -0
  336. package/docs/api/utils_index.js.html +160 -0
  337. package/docs/api/utils_retry.js.html +200 -0
  338. package/docs/api/utils_time.js.html +220 -0
  339. package/docs/api/utils_uuid.js.html +199 -0
  340. package/docs/api/utils_validation.js.html +259 -0
  341. package/examples/node-chat/chat.js +220 -0
  342. package/examples/node-quickstart/index.js +94 -0
  343. package/examples/testing/test-helper.js +182 -0
  344. package/package.json +111 -0
  345. package/src/constants/audio.js +130 -0
  346. package/src/constants/ble.js +111 -0
  347. package/src/constants/crypto.js +53 -0
  348. package/src/constants/errors.js +202 -0
  349. package/src/constants/events.js +94 -0
  350. package/src/constants/index.js +22 -0
  351. package/src/constants/protocol.js +151 -0
  352. package/src/crypto/aead.js +189 -0
  353. package/src/crypto/chacha20.js +181 -0
  354. package/src/crypto/hkdf.js +187 -0
  355. package/src/crypto/hmac.js +143 -0
  356. package/src/crypto/index.js +72 -0
  357. package/src/crypto/keys/KeyManager.js +271 -0
  358. package/src/crypto/keys/KeyPair.js +216 -0
  359. package/src/crypto/keys/SecureStorage.js +219 -0
  360. package/src/crypto/keys/index.js +32 -0
  361. package/src/crypto/noise/handshake.js +410 -0
  362. package/src/crypto/noise/index.js +27 -0
  363. package/src/crypto/noise/session.js +253 -0
  364. package/src/crypto/noise/state.js +268 -0
  365. package/src/crypto/poly1305.js +113 -0
  366. package/src/crypto/sha256.js +240 -0
  367. package/src/crypto/x25519.js +154 -0
  368. package/src/errors/AudioError.js +164 -0
  369. package/src/errors/ConnectionError.js +109 -0
  370. package/src/errors/CryptoError.js +103 -0
  371. package/src/errors/HandshakeError.js +122 -0
  372. package/src/errors/MeshError.js +100 -0
  373. package/src/errors/MessageError.js +129 -0
  374. package/src/errors/ValidationError.js +150 -0
  375. package/src/errors/index.js +24 -0
  376. package/src/hooks/AppStateManager.js +179 -0
  377. package/src/hooks/index.js +33 -0
  378. package/src/hooks/useMesh.js +159 -0
  379. package/src/hooks/useMessages.js +209 -0
  380. package/src/hooks/usePeers.js +111 -0
  381. package/src/index.d.ts +494 -0
  382. package/src/index.js +182 -0
  383. package/src/index.mjs +62 -0
  384. package/src/mesh/dedup/BloomFilter.js +207 -0
  385. package/src/mesh/dedup/DedupManager.js +212 -0
  386. package/src/mesh/dedup/MessageCache.js +219 -0
  387. package/src/mesh/dedup/index.js +16 -0
  388. package/src/mesh/fragment/Assembler.js +281 -0
  389. package/src/mesh/fragment/Fragmenter.js +176 -0
  390. package/src/mesh/fragment/index.js +21 -0
  391. package/src/mesh/index.js +18 -0
  392. package/src/mesh/peer/Peer.js +242 -0
  393. package/src/mesh/peer/PeerDiscovery.js +280 -0
  394. package/src/mesh/peer/PeerManager.js +266 -0
  395. package/src/mesh/peer/index.js +16 -0
  396. package/src/mesh/router/MessageRouter.js +357 -0
  397. package/src/mesh/router/PathFinder.js +332 -0
  398. package/src/mesh/router/RouteTable.js +292 -0
  399. package/src/mesh/router/index.js +16 -0
  400. package/src/protocol/crc32.js +93 -0
  401. package/src/protocol/deserializer.js +241 -0
  402. package/src/protocol/header.js +222 -0
  403. package/src/protocol/index.js +66 -0
  404. package/src/protocol/message.js +233 -0
  405. package/src/protocol/serializer.js +186 -0
  406. package/src/protocol/validator.js +276 -0
  407. package/src/service/HandshakeManager.js +178 -0
  408. package/src/service/MeshService.js +317 -0
  409. package/src/service/SessionManager.js +99 -0
  410. package/src/service/audio/AudioManager.js +487 -0
  411. package/src/service/audio/buffer/FrameBuffer.js +169 -0
  412. package/src/service/audio/buffer/JitterBuffer.js +190 -0
  413. package/src/service/audio/buffer/index.js +14 -0
  414. package/src/service/audio/codec/LC3Codec.js +291 -0
  415. package/src/service/audio/codec/LC3Decoder.js +131 -0
  416. package/src/service/audio/codec/LC3Encoder.js +140 -0
  417. package/src/service/audio/codec/index.js +16 -0
  418. package/src/service/audio/index.js +42 -0
  419. package/src/service/audio/session/AudioSession.js +294 -0
  420. package/src/service/audio/session/VoiceMessage.js +378 -0
  421. package/src/service/audio/session/index.js +16 -0
  422. package/src/service/audio/transport/AudioFragmenter.js +260 -0
  423. package/src/service/audio/transport/AudioFramer.js +182 -0
  424. package/src/service/audio/transport/index.js +15 -0
  425. package/src/service/index.js +39 -0
  426. package/src/service/text/TextManager.js +524 -0
  427. package/src/service/text/broadcast/BroadcastManager.js +222 -0
  428. package/src/service/text/broadcast/index.js +12 -0
  429. package/src/service/text/channel/Channel.js +226 -0
  430. package/src/service/text/channel/ChannelManager.js +171 -0
  431. package/src/service/text/channel/index.js +14 -0
  432. package/src/service/text/index.js +31 -0
  433. package/src/service/text/message/TextMessage.js +296 -0
  434. package/src/service/text/message/TextSerializer.js +164 -0
  435. package/src/service/text/message/index.js +14 -0
  436. package/src/storage/AsyncStorageAdapter.js +303 -0
  437. package/src/storage/MemoryStorage.js +225 -0
  438. package/src/storage/MessageStore.js +315 -0
  439. package/src/storage/Storage.js +160 -0
  440. package/src/storage/index.js +18 -0
  441. package/src/transport/BLEAdapter.js +177 -0
  442. package/src/transport/BLETransport.js +357 -0
  443. package/src/transport/MockTransport.js +285 -0
  444. package/src/transport/NodeBLEAdapter.js +425 -0
  445. package/src/transport/RNBLEAdapter.js +328 -0
  446. package/src/transport/Transport.js +188 -0
  447. package/src/transport/adapters/BLEAdapter.js +177 -0
  448. package/src/transport/adapters/NodeBLEAdapter.js +425 -0
  449. package/src/transport/adapters/RNBLEAdapter.js +328 -0
  450. package/src/transport/adapters/index.js +16 -0
  451. package/src/transport/index.js +33 -0
  452. package/src/utils/BoundedMap.js +151 -0
  453. package/src/utils/EventEmitter.js +205 -0
  454. package/src/utils/LRUCache.js +202 -0
  455. package/src/utils/RateLimiter.js +202 -0
  456. package/src/utils/TimeoutManager.js +164 -0
  457. package/src/utils/base64.js +151 -0
  458. package/src/utils/bytes.js +187 -0
  459. package/src/utils/debug.js +151 -0
  460. package/src/utils/encoding.js +248 -0
  461. package/src/utils/index.js +106 -0
  462. package/src/utils/retry.js +146 -0
  463. package/src/utils/time.js +166 -0
  464. package/src/utils/uuid.js +145 -0
  465. package/src/utils/validation.js +205 -0
@@ -0,0 +1,328 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @fileoverview React Native BLE adapter using react-native-ble-plx
5
+ * @module transport/adapters/RNBLEAdapter
6
+ */
7
+
8
+ const BLEAdapter = require('./BLEAdapter');
9
+
10
+ /**
11
+ * React Native BLE adapter implementation.
12
+ * Wraps react-native-ble-plx for BLE communication in React Native apps.
13
+ *
14
+ * NOTE: react-native-ble-plx is an optional peer dependency.
15
+ * Install it separately: npm install react-native-ble-plx
16
+ *
17
+ * @class RNBLEAdapter
18
+ * @extends BLEAdapter
19
+ */
20
+ class RNBLEAdapter extends BLEAdapter {
21
+ /**
22
+ * Creates a new RNBLEAdapter instance
23
+ * @param {Object} [options={}] - Adapter options
24
+ * @param {Object} [options.BleManager] - BleManager class from react-native-ble-plx
25
+ */
26
+ constructor(options = {}) {
27
+ super(options);
28
+
29
+ /**
30
+ * BleManager instance
31
+ * @type {Object|null}
32
+ * @private
33
+ */
34
+ this._manager = null;
35
+
36
+ /**
37
+ * BleManager class reference
38
+ * @type {Function|null}
39
+ * @private
40
+ */
41
+ this._BleManager = options.BleManager || null;
42
+
43
+ /**
44
+ * Connected devices map
45
+ * @type {Map<string, Object>}
46
+ * @private
47
+ */
48
+ this._devices = new Map();
49
+
50
+ /**
51
+ * Subscription handlers map
52
+ * @type {Map<string, Object>}
53
+ * @private
54
+ */
55
+ this._subscriptions = new Map();
56
+
57
+ /**
58
+ * Scan subscription reference
59
+ * @type {Object|null}
60
+ * @private
61
+ */
62
+ this._scanSubscription = null;
63
+
64
+ /**
65
+ * State subscription reference
66
+ * @type {Object|null}
67
+ * @private
68
+ */
69
+ this._stateSubscription = null;
70
+ }
71
+
72
+ /**
73
+ * Initializes the BLE manager
74
+ * @returns {Promise<void>}
75
+ * @throws {Error} If react-native-ble-plx is not available
76
+ */
77
+ async initialize() {
78
+ if (this._initialized) {
79
+ return;
80
+ }
81
+
82
+ // Try to load BleManager if not provided
83
+ if (!this._BleManager) {
84
+ try {
85
+ const blePlx = require('react-native-ble-plx');
86
+ this._BleManager = blePlx.BleManager;
87
+ } catch (error) {
88
+ throw new Error(
89
+ 'react-native-ble-plx is required. Install with: npm install react-native-ble-plx'
90
+ );
91
+ }
92
+ }
93
+
94
+ this._manager = new this._BleManager();
95
+
96
+ // Subscribe to state changes
97
+ this._stateSubscription = this._manager.onStateChange((state) => {
98
+ this._notifyStateChange(this._mapState(state));
99
+ }, true);
100
+
101
+ this._initialized = true;
102
+ }
103
+
104
+ /**
105
+ * Destroys the BLE manager and releases resources
106
+ * @returns {Promise<void>}
107
+ */
108
+ async destroy() {
109
+ if (!this._initialized) {
110
+ return;
111
+ }
112
+
113
+ // Cancel all subscriptions
114
+ for (const subscription of this._subscriptions.values()) {
115
+ subscription.remove();
116
+ }
117
+ this._subscriptions.clear();
118
+
119
+ // Stop scanning
120
+ this.stopScan();
121
+
122
+ // Remove state subscription
123
+ if (this._stateSubscription) {
124
+ this._stateSubscription.remove();
125
+ this._stateSubscription = null;
126
+ }
127
+
128
+ // Disconnect all devices
129
+ for (const deviceId of this._devices.keys()) {
130
+ await this.disconnect(deviceId);
131
+ }
132
+
133
+ // Destroy manager
134
+ if (this._manager) {
135
+ this._manager.destroy();
136
+ this._manager = null;
137
+ }
138
+
139
+ this._initialized = false;
140
+ }
141
+
142
+ /**
143
+ * Starts scanning for BLE devices
144
+ * @param {string[]} serviceUUIDs - Service UUIDs to filter by
145
+ * @param {Function} callback - Callback for discovered devices
146
+ * @returns {Promise<void>}
147
+ */
148
+ async startScan(serviceUUIDs, callback) {
149
+ this._ensureInitialized();
150
+
151
+ this._manager.startDeviceScan(serviceUUIDs, null, (error, device) => {
152
+ if (error) {
153
+ return;
154
+ }
155
+ if (device) {
156
+ callback({
157
+ id: device.id,
158
+ name: device.name || device.localName,
159
+ rssi: device.rssi
160
+ });
161
+ }
162
+ });
163
+ }
164
+
165
+ /**
166
+ * Stops scanning for BLE devices
167
+ */
168
+ stopScan() {
169
+ if (this._manager) {
170
+ this._manager.stopDeviceScan();
171
+ }
172
+ }
173
+
174
+ /**
175
+ * Connects to a BLE device
176
+ * @param {string} deviceId - Device ID to connect to
177
+ * @returns {Promise<Object>} Connected device info
178
+ */
179
+ async connect(deviceId) {
180
+ this._ensureInitialized();
181
+
182
+ const device = await this._manager.connectToDevice(deviceId);
183
+ await device.discoverAllServicesAndCharacteristics();
184
+
185
+ this._devices.set(deviceId, device);
186
+
187
+ // Monitor disconnection
188
+ device.onDisconnected(() => {
189
+ this._devices.delete(deviceId);
190
+ });
191
+
192
+ return {
193
+ id: device.id,
194
+ name: device.name,
195
+ rssi: device.rssi
196
+ };
197
+ }
198
+
199
+ /**
200
+ * Disconnects from a BLE device
201
+ * @param {string} deviceId - Device ID to disconnect from
202
+ * @returns {Promise<void>}
203
+ */
204
+ async disconnect(deviceId) {
205
+ const device = this._devices.get(deviceId);
206
+ if (device) {
207
+ await this._manager.cancelDeviceConnection(deviceId);
208
+ this._devices.delete(deviceId);
209
+ }
210
+ }
211
+
212
+ /**
213
+ * Writes data to a characteristic
214
+ * @param {string} deviceId - Target device ID
215
+ * @param {string} serviceUUID - Service UUID
216
+ * @param {string} charUUID - Characteristic UUID
217
+ * @param {Uint8Array} data - Data to write
218
+ * @returns {Promise<void>}
219
+ */
220
+ async write(deviceId, serviceUUID, charUUID, data) {
221
+ this._ensureInitialized();
222
+
223
+ const base64Data = this._uint8ArrayToBase64(data);
224
+ await this._manager.writeCharacteristicWithResponseForDevice(
225
+ deviceId,
226
+ serviceUUID,
227
+ charUUID,
228
+ base64Data
229
+ );
230
+ }
231
+
232
+ /**
233
+ * Subscribes to characteristic notifications
234
+ * @param {string} deviceId - Target device ID
235
+ * @param {string} serviceUUID - Service UUID
236
+ * @param {string} charUUID - Characteristic UUID
237
+ * @param {Function} callback - Notification callback
238
+ * @returns {Promise<void>}
239
+ */
240
+ async subscribe(deviceId, serviceUUID, charUUID, callback) {
241
+ this._ensureInitialized();
242
+
243
+ const key = `${deviceId}:${serviceUUID}:${charUUID}`;
244
+ const subscription = this._manager.monitorCharacteristicForDevice(
245
+ deviceId,
246
+ serviceUUID,
247
+ charUUID,
248
+ (error, characteristic) => {
249
+ if (!error && characteristic) {
250
+ const data = this._base64ToUint8Array(characteristic.value);
251
+ callback(data);
252
+ }
253
+ }
254
+ );
255
+
256
+ this._subscriptions.set(key, subscription);
257
+ }
258
+
259
+ /**
260
+ * Gets the current Bluetooth state
261
+ * @returns {Promise<string>} Bluetooth state
262
+ */
263
+ async getState() {
264
+ this._ensureInitialized();
265
+ const state = await this._manager.state();
266
+ return this._mapState(state);
267
+ }
268
+
269
+ /**
270
+ * Maps react-native-ble-plx state to BLEAdapter state
271
+ * @param {string} state - RN BLE state
272
+ * @returns {string} Mapped state
273
+ * @private
274
+ */
275
+ _mapState(state) {
276
+ const stateMap = {
277
+ Unknown: BLEAdapter.STATE.UNKNOWN,
278
+ Resetting: BLEAdapter.STATE.RESETTING,
279
+ Unsupported: BLEAdapter.STATE.UNSUPPORTED,
280
+ Unauthorized: BLEAdapter.STATE.UNAUTHORIZED,
281
+ PoweredOff: BLEAdapter.STATE.POWERED_OFF,
282
+ PoweredOn: BLEAdapter.STATE.POWERED_ON
283
+ };
284
+ return stateMap[state] || BLEAdapter.STATE.UNKNOWN;
285
+ }
286
+
287
+ /**
288
+ * Ensures the adapter is initialized
289
+ * @throws {Error} If not initialized
290
+ * @private
291
+ */
292
+ _ensureInitialized() {
293
+ if (!this._initialized) {
294
+ throw new Error('RNBLEAdapter is not initialized');
295
+ }
296
+ }
297
+
298
+ /**
299
+ * Converts Uint8Array to Base64 string
300
+ * @param {Uint8Array} bytes - Bytes to convert
301
+ * @returns {string} Base64 string
302
+ * @private
303
+ */
304
+ _uint8ArrayToBase64(bytes) {
305
+ let binary = '';
306
+ for (let i = 0; i < bytes.length; i++) {
307
+ binary += String.fromCharCode(bytes[i]);
308
+ }
309
+ return btoa(binary);
310
+ }
311
+
312
+ /**
313
+ * Converts Base64 string to Uint8Array
314
+ * @param {string} base64 - Base64 string
315
+ * @returns {Uint8Array} Byte array
316
+ * @private
317
+ */
318
+ _base64ToUint8Array(base64) {
319
+ const binary = atob(base64);
320
+ const bytes = new Uint8Array(binary.length);
321
+ for (let i = 0; i < binary.length; i++) {
322
+ bytes[i] = binary.charCodeAt(i);
323
+ }
324
+ return bytes;
325
+ }
326
+ }
327
+
328
+ module.exports = RNBLEAdapter;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @fileoverview BLE adapter exports
5
+ * @module transport/adapters
6
+ */
7
+
8
+ const BLEAdapter = require('./BLEAdapter');
9
+ const RNBLEAdapter = require('./RNBLEAdapter');
10
+ const NodeBLEAdapter = require('./NodeBLEAdapter');
11
+
12
+ module.exports = {
13
+ BLEAdapter,
14
+ RNBLEAdapter,
15
+ NodeBLEAdapter
16
+ };
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @fileoverview Transport module exports
5
+ * @module transport
6
+ */
7
+
8
+ const Transport = require('./Transport');
9
+ const MockTransport = require('./MockTransport');
10
+ const BLETransport = require('./BLETransport');
11
+
12
+ // Adapters (now flat in transport folder)
13
+ const BLEAdapter = require('./BLEAdapter');
14
+ const RNBLEAdapter = require('./RNBLEAdapter');
15
+ const NodeBLEAdapter = require('./NodeBLEAdapter');
16
+
17
+ // Legacy: keep adapters object for backward compatibility
18
+ const adapters = require('./adapters');
19
+
20
+ module.exports = {
21
+ // Core transports
22
+ Transport,
23
+ MockTransport,
24
+ BLETransport,
25
+
26
+ // Adapters (flat exports for easy imports)
27
+ BLEAdapter,
28
+ RNBLEAdapter,
29
+ NodeBLEAdapter,
30
+
31
+ // Legacy adapters namespace
32
+ adapters
33
+ };
@@ -0,0 +1,151 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @fileoverview Map with maximum size and LRU eviction
5
+ * @module utils/BoundedMap
6
+ */
7
+
8
+ /**
9
+ * Map with maximum size limit and LRU eviction policy
10
+ * When the map exceeds maxSize, the least recently used entry is removed.
11
+ *
12
+ * @class BoundedMap
13
+ * @template K, V
14
+ * @example
15
+ * const cache = new BoundedMap(100);
16
+ * cache.set('key1', 'value1');
17
+ * const value = cache.get('key1'); // Marks as recently used
18
+ */
19
+ class BoundedMap {
20
+ /**
21
+ * Creates a new BoundedMap
22
+ * @param {number} [maxSize=1000] - Maximum number of entries
23
+ */
24
+ constructor(maxSize = 1000) {
25
+ if (typeof maxSize !== 'number' || maxSize < 1) {
26
+ throw new Error('maxSize must be a positive number');
27
+ }
28
+ /** @private */
29
+ this._maxSize = maxSize;
30
+ /** @private */
31
+ this._map = new Map();
32
+ }
33
+
34
+ /**
35
+ * Get the value for a key (marks as recently used)
36
+ * @param {K} key - The key to look up
37
+ * @returns {V|undefined} The value or undefined
38
+ */
39
+ get(key) {
40
+ if (!this._map.has(key)) {
41
+ return undefined;
42
+ }
43
+ // Move to end (most recently used)
44
+ const value = this._map.get(key);
45
+ this._map.delete(key);
46
+ this._map.set(key, value);
47
+ return value;
48
+ }
49
+
50
+ /**
51
+ * Set a key-value pair (evicts LRU if at capacity)
52
+ * @param {K} key - The key
53
+ * @param {V} value - The value
54
+ * @returns {BoundedMap} This instance for chaining
55
+ */
56
+ set(key, value) {
57
+ // If key exists, delete it first to update position
58
+ if (this._map.has(key)) {
59
+ this._map.delete(key);
60
+ } else if (this._map.size >= this._maxSize) {
61
+ // Evict least recently used (first entry)
62
+ const firstKey = this._map.keys().next().value;
63
+ this._map.delete(firstKey);
64
+ }
65
+ this._map.set(key, value);
66
+ return this;
67
+ }
68
+
69
+ /**
70
+ * Check if key exists
71
+ * @param {K} key - The key to check
72
+ * @returns {boolean} True if key exists
73
+ */
74
+ has(key) {
75
+ return this._map.has(key);
76
+ }
77
+
78
+ /**
79
+ * Delete a key
80
+ * @param {K} key - The key to delete
81
+ * @returns {boolean} True if key was deleted
82
+ */
83
+ delete(key) {
84
+ return this._map.delete(key);
85
+ }
86
+
87
+ /**
88
+ * Clear all entries
89
+ */
90
+ clear() {
91
+ this._map.clear();
92
+ }
93
+
94
+ /**
95
+ * Get the number of entries
96
+ * @returns {number} Number of entries
97
+ */
98
+ get size() {
99
+ return this._map.size;
100
+ }
101
+
102
+ /**
103
+ * Get the maximum size
104
+ * @returns {number} Maximum size
105
+ */
106
+ get maxSize() {
107
+ return this._maxSize;
108
+ }
109
+
110
+ /**
111
+ * Get all keys
112
+ * @returns {IterableIterator<K>} Iterator of keys
113
+ */
114
+ keys() {
115
+ return this._map.keys();
116
+ }
117
+
118
+ /**
119
+ * Get all values
120
+ * @returns {IterableIterator<V>} Iterator of values
121
+ */
122
+ values() {
123
+ return this._map.values();
124
+ }
125
+
126
+ /**
127
+ * Get all entries
128
+ * @returns {Iterator} Iterator of [key, value] pairs
129
+ */
130
+ entries() {
131
+ return this._map.entries();
132
+ }
133
+
134
+ /**
135
+ * Iterate over entries
136
+ * @param {function(V, K, BoundedMap): void} callback - Callback function
137
+ */
138
+ forEach(callback) {
139
+ this._map.forEach((value, key) => callback(value, key, this));
140
+ }
141
+
142
+ /**
143
+ * Make iterable
144
+ * @returns {Iterator} Iterator of [key, value] pairs
145
+ */
146
+ [Symbol.iterator]() {
147
+ return this._map[Symbol.iterator]();
148
+ }
149
+ }
150
+
151
+ module.exports = BoundedMap;