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,259 @@
1
+ # Node.js Quick Start Guide
2
+
3
+ This guide shows how to use react-native-ble-mesh in Node.js applications.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install react-native-ble-mesh
9
+
10
+ # For real BLE hardware support (optional):
11
+ npm install @abandonware/noble
12
+ ```
13
+
14
+ ## Basic Usage
15
+
16
+ ### Method 1: Using Factory Functions (Recommended)
17
+
18
+ ```javascript
19
+ const { createNodeMesh, createTestMesh, MockTransport } = require('react-native-ble-mesh');
20
+
21
+ // For testing without BLE hardware
22
+ async function testExample() {
23
+ // Creates an initialized mesh with MockTransport
24
+ const { mesh, transport } = await createTestMesh({ displayName: 'TestNode' });
25
+
26
+ // Mesh is ready to use!
27
+ mesh.on('message', (msg) => console.log('Received:', msg));
28
+
29
+ // Clean up
30
+ await mesh.stop();
31
+ await mesh.destroy();
32
+ }
33
+
34
+ // For production with BLE
35
+ async function productionExample() {
36
+ const mesh = await createNodeMesh({ displayName: 'MyNode' });
37
+
38
+ // You provide the transport
39
+ const { BLETransport } = require('react-native-ble-mesh');
40
+ const transport = new BLETransport();
41
+
42
+ await mesh.start(transport);
43
+ // ...
44
+ }
45
+ ```
46
+
47
+ ### Method 2: Manual Setup
48
+
49
+ ```javascript
50
+ const { MeshService, MockTransport, MemoryStorage } = require('react-native-ble-mesh');
51
+
52
+ async function main() {
53
+ // Create service
54
+ const mesh = new MeshService({ displayName: 'Alice' });
55
+
56
+ // Initialize with storage
57
+ await mesh.initialize({
58
+ storage: new MemoryStorage()
59
+ });
60
+
61
+ // Create and start transport
62
+ const transport = new MockTransport();
63
+ await mesh.start(transport);
64
+
65
+ // Use the mesh...
66
+ mesh.sendBroadcast('Hello!');
67
+
68
+ // Clean up
69
+ await mesh.stop();
70
+ await mesh.destroy();
71
+ }
72
+ ```
73
+
74
+ ## Connecting Two Nodes
75
+
76
+ ```javascript
77
+ const { createTestMesh } = require('react-native-ble-mesh');
78
+
79
+ async function twoNodeExample() {
80
+ // Create two test nodes
81
+ const { mesh: alice, transport: aliceTransport } = await createTestMesh({ displayName: 'Alice' });
82
+ const { mesh: bob, transport: bobTransport } = await createTestMesh({ displayName: 'Bob' });
83
+
84
+ // Link their transports (simulates BLE discovery)
85
+ aliceTransport.linkTo(bobTransport);
86
+
87
+ // Set up message handlers
88
+ bob.on('message', (msg) => {
89
+ console.log('Bob received:', msg);
90
+ });
91
+
92
+ // Send a message
93
+ alice.sendBroadcast('Hello Bob!');
94
+ }
95
+ ```
96
+
97
+ ## Event Handling
98
+
99
+ ```javascript
100
+ const mesh = await createNodeMesh({ displayName: 'MyNode' });
101
+
102
+ // Peer events
103
+ mesh.on('peer-discovered', ({ peer }) => console.log('Found peer:', peer.id));
104
+ mesh.on('peer-connected', ({ peerId }) => console.log('Connected:', peerId));
105
+ mesh.on('peer-disconnected', ({ peerId }) => console.log('Disconnected:', peerId));
106
+ mesh.on('peer-secured', ({ peer }) => console.log('Secured session with:', peer.id));
107
+
108
+ // Message events
109
+ mesh.on('message', (message) => console.log('Any message:', message));
110
+ mesh.on('private-message', (message) => console.log('Private:', message));
111
+ mesh.on('channel-message', (message) => console.log('Channel:', message));
112
+
113
+ // Handshake events
114
+ mesh.on('handshake-complete', ({ peerId }) => console.log('Handshake done:', peerId));
115
+ mesh.on('handshake-failed', ({ peerId, error }) => console.error('Handshake failed:', error));
116
+
117
+ // State events
118
+ mesh.on('state-changed', ({ oldState, newState }) => console.log(`State: ${oldState} -> ${newState}`));
119
+
120
+ // Error handling
121
+ mesh.on('error', (error) => console.error('Error:', error.code, error.message));
122
+ ```
123
+
124
+ ## Debug Logging
125
+
126
+ Enable debug output to see what's happening:
127
+
128
+ ```bash
129
+ # Enable all debug output
130
+ DEBUG=ble-mesh:* node your-app.js
131
+
132
+ # Enable specific namespaces
133
+ DEBUG=ble-mesh:service,ble-mesh:handshake node your-app.js
134
+ ```
135
+
136
+ Available namespaces:
137
+ - `ble-mesh:service` - MeshService events
138
+ - `ble-mesh:transport` - Transport layer
139
+ - `ble-mesh:crypto` - Cryptographic operations
140
+ - `ble-mesh:handshake` - Noise Protocol handshake
141
+ - `ble-mesh:mesh` - Mesh routing
142
+ - `ble-mesh:protocol` - Protocol serialization
143
+ - `ble-mesh:storage` - Storage operations
144
+
145
+ Or enable programmatically:
146
+
147
+ ```javascript
148
+ const { utils } = require('react-native-ble-mesh');
149
+ utils.enableDebug('ble-mesh:*');
150
+ ```
151
+
152
+ ## ESM Import
153
+
154
+ For ES Modules:
155
+
156
+ ```javascript
157
+ import { createNodeMesh, MockTransport } from 'react-native-ble-mesh';
158
+
159
+ const mesh = await createNodeMesh({ displayName: 'ESMNode' });
160
+ ```
161
+
162
+ ## TypeScript
163
+
164
+ TypeScript definitions are included:
165
+
166
+ ```typescript
167
+ import { MeshService, Peer, Message } from 'react-native-ble-mesh';
168
+
169
+ const mesh = new MeshService({ displayName: 'TypedNode' });
170
+
171
+ mesh.on('peer-discovered', ({ peer }: { peer: Peer }) => {
172
+ console.log(peer.id, peer.name);
173
+ });
174
+
175
+ mesh.on('message', (message: Message) => {
176
+ console.log(message.content);
177
+ });
178
+ ```
179
+
180
+ ## Using Real BLE (Noble)
181
+
182
+ For actual Bluetooth communication:
183
+
184
+ ```javascript
185
+ const { MeshService, BLETransport, MemoryStorage } = require('react-native-ble-mesh');
186
+ const { NodeBLEAdapter } = require('react-native-ble-mesh/adapters');
187
+
188
+ async function realBLE() {
189
+ const mesh = new MeshService({ displayName: 'BLENode' });
190
+ await mesh.initialize({ storage: new MemoryStorage() });
191
+
192
+ // Use real BLE with Noble adapter
193
+ const transport = new BLETransport({
194
+ adapter: new NodeBLEAdapter()
195
+ });
196
+
197
+ await mesh.start(transport);
198
+
199
+ // Now using real Bluetooth!
200
+ }
201
+ ```
202
+
203
+ **Requirements for Noble:**
204
+ - Linux: BlueZ 5.x (install with `apt-get install bluetooth bluez libbluetooth-dev libudev-dev`)
205
+ - macOS: Xcode Command Line Tools
206
+ - Windows: Not currently supported by Noble
207
+
208
+ ## Examples
209
+
210
+ Run the included examples:
211
+
212
+ ```bash
213
+ # Quick start demo
214
+ npm run example:node
215
+
216
+ # Interactive chat (terminal)
217
+ npm run example:chat
218
+
219
+ # Auto chat demo (non-interactive)
220
+ node examples/node-chat/chat.js --auto
221
+ ```
222
+
223
+ ## Testing Helper
224
+
225
+ For unit tests:
226
+
227
+ ```javascript
228
+ const {
229
+ createTestMesh,
230
+ createTestPair,
231
+ createTestNetwork,
232
+ cleanupTestMeshes,
233
+ waitForEvent
234
+ } = require('react-native-ble-mesh/examples/testing/test-helper');
235
+
236
+ describe('My mesh tests', () => {
237
+ let alice, bob;
238
+
239
+ beforeEach(async () => {
240
+ const pair = await createTestPair();
241
+ alice = pair.alice;
242
+ bob = pair.bob;
243
+ });
244
+
245
+ afterEach(async () => {
246
+ await cleanupTestMeshes(alice, bob);
247
+ });
248
+
249
+ test('sends message', async () => {
250
+ alice.sendBroadcast('Hello');
251
+ const event = await waitForEvent(bob, 'message', 1000);
252
+ expect(event).toBeDefined();
253
+ });
254
+ });
255
+ ```
256
+
257
+ ## API Reference
258
+
259
+ See [docs/API.md](API.md) for complete API documentation.
@@ -0,0 +1,195 @@
1
+ # Protocol Specification
2
+
3
+ ## Overview
4
+
5
+ The BLE Mesh Protocol defines the wire format and message types for peer-to-peer communication over Bluetooth Low Energy.
6
+
7
+ ## Message Format
8
+
9
+ ### Header (48 bytes)
10
+
11
+ | Offset | Size | Field | Description |
12
+ |--------|------|-------|-------------|
13
+ | 0 | 1 | version | Protocol version (currently 1) |
14
+ | 1 | 1 | type | Message type identifier |
15
+ | 2 | 1 | flags | Message flags bitmap |
16
+ | 3 | 1 | hopCount | Current hop count |
17
+ | 4 | 1 | maxHops | Maximum allowed hops |
18
+ | 5 | 3 | reserved | Reserved for future use |
19
+ | 8 | 16 | messageId | UUID v4 as bytes |
20
+ | 24 | 8 | timestamp | Creation time (ms since epoch, big-endian) |
21
+ | 32 | 8 | expiresAt | Expiry time (ms since epoch, big-endian) |
22
+ | 40 | 2 | payloadLength | Payload size in bytes (big-endian) |
23
+ | 42 | 1 | fragmentIndex | Fragment index (0-based) |
24
+ | 43 | 1 | fragmentTotal | Total number of fragments |
25
+ | 44 | 4 | checksum | CRC32 of header (excluding checksum field) |
26
+
27
+ ### Payload
28
+
29
+ Variable length payload follows the header. Maximum payload size is 500 bytes.
30
+
31
+ ## Message Types
32
+
33
+ ### Data Messages (0x01-0x0F)
34
+
35
+ | Type | Value | Description |
36
+ |------|-------|-------------|
37
+ | TEXT | 0x01 | Plain text message |
38
+ | TEXT_ACK | 0x02 | Text message acknowledgment |
39
+
40
+ ### Handshake Messages (0x10-0x1F)
41
+
42
+ | Type | Value | Description |
43
+ |------|-------|-------------|
44
+ | HANDSHAKE_INIT | 0x10 | Noise XX Message 1 |
45
+ | HANDSHAKE_RESPONSE | 0x11 | Noise XX Message 2 |
46
+ | HANDSHAKE_FINAL | 0x12 | Noise XX Message 3 |
47
+
48
+ ### Discovery Messages (0x20-0x2F)
49
+
50
+ | Type | Value | Description |
51
+ |------|-------|-------------|
52
+ | PEER_ANNOUNCE | 0x20 | Peer presence announcement |
53
+ | PEER_REQUEST | 0x21 | Request for peer information |
54
+ | PEER_RESPONSE | 0x22 | Response with peer information |
55
+
56
+ ### Channel Messages (0x30-0x3F)
57
+
58
+ | Type | Value | Description |
59
+ |------|-------|-------------|
60
+ | CHANNEL_JOIN | 0x30 | Join channel request |
61
+ | CHANNEL_LEAVE | 0x31 | Leave channel notification |
62
+ | CHANNEL_MESSAGE | 0x32 | Channel broadcast message |
63
+
64
+ ### Private Messages (0x40-0x4F)
65
+
66
+ | Type | Value | Description |
67
+ |------|-------|-------------|
68
+ | PRIVATE_MESSAGE | 0x40 | Encrypted private message |
69
+ | PRIVATE_ACK | 0x41 | Private message acknowledgment |
70
+
71
+ ### Control Messages (0x60-0x6F)
72
+
73
+ | Type | Value | Description |
74
+ |------|-------|-------------|
75
+ | HEARTBEAT | 0x60 | Keep-alive message |
76
+ | PING | 0x61 | Ping request |
77
+ | PONG | 0x62 | Ping response |
78
+
79
+ ### Fragment Messages (0x70-0x7F)
80
+
81
+ | Type | Value | Description |
82
+ |------|-------|-------------|
83
+ | FRAGMENT | 0x70 | Message fragment |
84
+
85
+ ### Error Messages (0xFF)
86
+
87
+ | Type | Value | Description |
88
+ |------|-------|-------------|
89
+ | ERROR | 0xFF | Error notification |
90
+
91
+ ## Message Flags
92
+
93
+ | Flag | Value | Description |
94
+ |------|-------|-------------|
95
+ | NONE | 0x00 | No flags |
96
+ | ENCRYPTED | 0x01 | Payload is encrypted |
97
+ | COMPRESSED | 0x02 | Payload is compressed |
98
+ | REQUIRES_ACK | 0x04 | Acknowledgment requested |
99
+ | IS_FRAGMENT | 0x08 | Message is a fragment |
100
+ | IS_BROADCAST | 0x10 | Broadcast message |
101
+ | HIGH_PRIORITY | 0x20 | High priority delivery |
102
+
103
+ ## Routing
104
+
105
+ ### Hop Count
106
+
107
+ - Messages include current `hopCount` and `maxHops`
108
+ - On relay, `hopCount` is incremented
109
+ - Messages with `hopCount >= maxHops` are not relayed
110
+ - Default `maxHops` is 7
111
+
112
+ ### Duplicate Detection
113
+
114
+ - Bloom filter for fast probabilistic detection
115
+ - LRU cache for verification
116
+ - Messages seen before are dropped
117
+
118
+ ### Route Discovery
119
+
120
+ - Routes learned from received messages
121
+ - Route table maps destination to next hop
122
+ - Routes expire after 10 minutes
123
+
124
+ ## Fragmentation
125
+
126
+ ### Fragment Header
127
+
128
+ For messages exceeding MTU:
129
+
130
+ - `fragmentIndex`: 0-based index of this fragment
131
+ - `fragmentTotal`: Total number of fragments
132
+ - Same `messageId` across all fragments
133
+
134
+ ### Reassembly
135
+
136
+ - Receiver buffers fragments by `messageId`
137
+ - Fragments can arrive out of order
138
+ - Incomplete sets timeout after 60 seconds
139
+ - Payload reassembled in order
140
+
141
+ ## Handshake Protocol
142
+
143
+ ### Noise XX Pattern
144
+
145
+ ```
146
+ -> e (32 bytes)
147
+ <- e, ee, s, es (32 + 48 bytes)
148
+ -> s, se (48 bytes)
149
+ ```
150
+
151
+ ### Message 1 Payload
152
+
153
+ - Initiator ephemeral public key (32 bytes)
154
+
155
+ ### Message 2 Payload
156
+
157
+ - Responder ephemeral public key (32 bytes)
158
+ - Encrypted responder static public key (32 + 16 tag)
159
+
160
+ ### Message 3 Payload
161
+
162
+ - Encrypted initiator static public key (32 + 16 tag)
163
+
164
+ ## BLE Characteristics
165
+
166
+ ### Service UUID
167
+
168
+ ```
169
+ 6E400001-B5A3-F393-E0A9-E50E24DCCA9E
170
+ ```
171
+
172
+ ### TX Characteristic (Write)
173
+
174
+ ```
175
+ 6E400002-B5A3-F393-E0A9-E50E24DCCA9E
176
+ ```
177
+
178
+ ### RX Characteristic (Notify)
179
+
180
+ ```
181
+ 6E400003-B5A3-F393-E0A9-E50E24DCCA9E
182
+ ```
183
+
184
+ ## Serialization
185
+
186
+ - All multi-byte integers are big-endian
187
+ - UUIDs serialized as 16 bytes (no dashes)
188
+ - Strings encoded as UTF-8
189
+ - CRC32 uses polynomial 0xEDB88320
190
+
191
+ ## Version Compatibility
192
+
193
+ - Version 1 is the initial protocol version
194
+ - Future versions maintain backward compatibility
195
+ - Unknown message types are ignored