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,303 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @fileoverview React Native AsyncStorage adapter
5
+ * @module storage/AsyncStorageAdapter
6
+ */
7
+
8
+ const Storage = require('./Storage');
9
+
10
+ /**
11
+ * React Native AsyncStorage adapter.
12
+ * Wraps @react-native-async-storage/async-storage for persistent storage.
13
+ *
14
+ * NOTE: @react-native-async-storage/async-storage is an optional peer dependency.
15
+ * Install it separately: npm install @react-native-async-storage/async-storage
16
+ *
17
+ * @class AsyncStorageAdapter
18
+ * @extends Storage
19
+ */
20
+ class AsyncStorageAdapter extends Storage {
21
+ /**
22
+ * Creates a new AsyncStorageAdapter instance
23
+ * @param {Object} [options={}] - Storage options
24
+ * @param {string} [options.prefix='mesh'] - Key prefix for namespacing
25
+ * @param {Object} [options.AsyncStorage] - AsyncStorage instance (optional)
26
+ */
27
+ constructor(options = {}) {
28
+ super({
29
+ prefix: 'mesh',
30
+ ...options
31
+ });
32
+
33
+ /**
34
+ * AsyncStorage instance
35
+ * @type {Object|null}
36
+ * @private
37
+ */
38
+ this._storage = options.AsyncStorage || null;
39
+
40
+ /**
41
+ * Whether adapter is initialized
42
+ * @type {boolean}
43
+ * @private
44
+ */
45
+ this._initialized = false;
46
+ }
47
+
48
+ /**
49
+ * Initializes the AsyncStorage adapter
50
+ * @returns {Promise<void>}
51
+ * @throws {Error} If AsyncStorage is not available
52
+ */
53
+ async initialize() {
54
+ if (this._initialized) {
55
+ return;
56
+ }
57
+
58
+ // Try to load AsyncStorage if not provided
59
+ if (!this._storage) {
60
+ try {
61
+ const AsyncStorageModule = require('@react-native-async-storage/async-storage');
62
+ this._storage = AsyncStorageModule.default || AsyncStorageModule;
63
+ } catch (error) {
64
+ throw new Error(
65
+ '@react-native-async-storage/async-storage is required. ' +
66
+ 'Install with: npm install @react-native-async-storage/async-storage'
67
+ );
68
+ }
69
+ }
70
+
71
+ this._initialized = true;
72
+ }
73
+
74
+ /**
75
+ * Ensures the adapter is initialized
76
+ * @throws {Error} If not initialized
77
+ * @private
78
+ */
79
+ _ensureInitialized() {
80
+ if (!this._initialized) {
81
+ throw new Error('AsyncStorageAdapter is not initialized. Call initialize() first.');
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Gets a value by key
87
+ * @param {string} key - Key to retrieve
88
+ * @returns {Promise<any>} Stored value or undefined
89
+ */
90
+ async get(key) {
91
+ this._ensureInitialized();
92
+
93
+ const prefixedKey = this._getKey(key);
94
+ const jsonValue = await this._storage.getItem(prefixedKey);
95
+
96
+ if (jsonValue === null) {
97
+ return undefined;
98
+ }
99
+
100
+ try {
101
+ const item = JSON.parse(jsonValue);
102
+
103
+ // Check for expiration
104
+ if (item.expiresAt && Date.now() > item.expiresAt) {
105
+ await this._storage.removeItem(prefixedKey);
106
+ return undefined;
107
+ }
108
+
109
+ return item.value;
110
+ } catch (error) {
111
+ // If JSON parsing fails, return raw value (legacy data)
112
+ return jsonValue;
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Sets a value by key
118
+ * @param {string} key - Key to set
119
+ * @param {any} value - Value to store
120
+ * @param {Object} [options={}] - Set options
121
+ * @param {number} [options.ttl] - Time to live in milliseconds
122
+ * @returns {Promise<void>}
123
+ */
124
+ async set(key, value, options = {}) {
125
+ this._ensureInitialized();
126
+
127
+ const prefixedKey = this._getKey(key);
128
+
129
+ const item = {
130
+ value,
131
+ createdAt: Date.now()
132
+ };
133
+
134
+ if (options.ttl && options.ttl > 0) {
135
+ item.expiresAt = Date.now() + options.ttl;
136
+ }
137
+
138
+ const jsonValue = JSON.stringify(item);
139
+ await this._storage.setItem(prefixedKey, jsonValue);
140
+ }
141
+
142
+ /**
143
+ * Deletes a value by key
144
+ * @param {string} key - Key to delete
145
+ * @returns {Promise<void>}
146
+ */
147
+ async delete(key) {
148
+ this._ensureInitialized();
149
+
150
+ const prefixedKey = this._getKey(key);
151
+ await this._storage.removeItem(prefixedKey);
152
+ }
153
+
154
+ /**
155
+ * Checks if a key exists
156
+ * @param {string} key - Key to check
157
+ * @returns {Promise<boolean>} True if key exists
158
+ */
159
+ async has(key) {
160
+ const value = await this.get(key);
161
+ return value !== undefined;
162
+ }
163
+
164
+ /**
165
+ * Clears all stored data with our prefix
166
+ * @returns {Promise<void>}
167
+ */
168
+ async clear() {
169
+ this._ensureInitialized();
170
+
171
+ const allKeys = await this._storage.getAllKeys();
172
+ const prefix = `${this._options.prefix}:`;
173
+ const keysToRemove = allKeys.filter(key => key.startsWith(prefix));
174
+
175
+ if (keysToRemove.length > 0) {
176
+ await this._storage.multiRemove(keysToRemove);
177
+ }
178
+ }
179
+
180
+ /**
181
+ * Gets all keys (without prefix)
182
+ * @returns {Promise<string[]>} Array of keys
183
+ */
184
+ async keys() {
185
+ this._ensureInitialized();
186
+
187
+ const allKeys = await this._storage.getAllKeys();
188
+ const prefix = `${this._options.prefix}:`;
189
+
190
+ return allKeys
191
+ .filter(key => key.startsWith(prefix))
192
+ .map(key => key.slice(prefix.length));
193
+ }
194
+
195
+ /**
196
+ * Gets multiple values by keys
197
+ * @param {string[]} keys - Keys to retrieve
198
+ * @returns {Promise<Map<string, any>>} Map of key-value pairs
199
+ */
200
+ async getMany(keys) {
201
+ this._ensureInitialized();
202
+
203
+ const prefixedKeys = keys.map(key => this._getKey(key));
204
+ const pairs = await this._storage.multiGet(prefixedKeys);
205
+ const result = new Map();
206
+ const now = Date.now();
207
+
208
+ for (const [prefixedKey, jsonValue] of pairs) {
209
+ if (jsonValue !== null) {
210
+ const key = prefixedKey.slice(this._options.prefix.length + 1);
211
+ try {
212
+ const item = JSON.parse(jsonValue);
213
+ if (!item.expiresAt || now <= item.expiresAt) {
214
+ result.set(key, item.value);
215
+ }
216
+ } catch (error) {
217
+ result.set(key, jsonValue);
218
+ }
219
+ }
220
+ }
221
+
222
+ return result;
223
+ }
224
+
225
+ /**
226
+ * Sets multiple key-value pairs
227
+ * @param {Map<string, any>|Object} entries - Entries to set
228
+ * @param {Object} [options={}] - Set options
229
+ * @param {number} [options.ttl] - Time to live in milliseconds
230
+ * @returns {Promise<void>}
231
+ */
232
+ async setMany(entries, options = {}) {
233
+ this._ensureInitialized();
234
+
235
+ const pairs = entries instanceof Map
236
+ ? Array.from(entries.entries())
237
+ : Object.entries(entries);
238
+
239
+ const now = Date.now();
240
+ const keyValuePairs = pairs.map(([key, value]) => {
241
+ const item = {
242
+ value,
243
+ createdAt: now
244
+ };
245
+
246
+ if (options.ttl && options.ttl > 0) {
247
+ item.expiresAt = now + options.ttl;
248
+ }
249
+
250
+ return [this._getKey(key), JSON.stringify(item)];
251
+ });
252
+
253
+ await this._storage.multiSet(keyValuePairs);
254
+ }
255
+
256
+ /**
257
+ * Deletes multiple keys
258
+ * @param {string[]} keys - Keys to delete
259
+ * @returns {Promise<void>}
260
+ */
261
+ async deleteMany(keys) {
262
+ this._ensureInitialized();
263
+
264
+ const prefixedKeys = keys.map(key => this._getKey(key));
265
+ await this._storage.multiRemove(prefixedKeys);
266
+ }
267
+
268
+ /**
269
+ * Cleans up expired items
270
+ * @returns {Promise<number>} Number of items removed
271
+ */
272
+ async cleanup() {
273
+ this._ensureInitialized();
274
+
275
+ const allKeys = await this.keys();
276
+ const now = Date.now();
277
+ const keysToRemove = [];
278
+
279
+ for (const key of allKeys) {
280
+ const prefixedKey = this._getKey(key);
281
+ const jsonValue = await this._storage.getItem(prefixedKey);
282
+
283
+ if (jsonValue !== null) {
284
+ try {
285
+ const item = JSON.parse(jsonValue);
286
+ if (item.expiresAt && now > item.expiresAt) {
287
+ keysToRemove.push(prefixedKey);
288
+ }
289
+ } catch (error) {
290
+ // Ignore parse errors
291
+ }
292
+ }
293
+ }
294
+
295
+ if (keysToRemove.length > 0) {
296
+ await this._storage.multiRemove(keysToRemove);
297
+ }
298
+
299
+ return keysToRemove.length;
300
+ }
301
+ }
302
+
303
+ module.exports = AsyncStorageAdapter;
@@ -0,0 +1,225 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @fileoverview In-memory storage implementation
5
+ * @module storage/MemoryStorage
6
+ */
7
+
8
+ const Storage = require('./Storage');
9
+
10
+ /**
11
+ * In-memory storage implementation.
12
+ * Stores data in a JavaScript Map. Data is not persisted across restarts.
13
+ * Useful for testing and temporary storage.
14
+ *
15
+ * @class MemoryStorage
16
+ * @extends Storage
17
+ */
18
+ class MemoryStorage extends Storage {
19
+ /**
20
+ * Creates a new MemoryStorage instance
21
+ * @param {Object} [options={}] - Storage options
22
+ * @param {string} [options.prefix=''] - Key prefix for namespacing
23
+ * @param {number} [options.maxSize=0] - Maximum number of items (0 = unlimited)
24
+ */
25
+ constructor(options = {}) {
26
+ super(options);
27
+
28
+ /**
29
+ * Internal storage map
30
+ * @type {Map<string, any>}
31
+ * @private
32
+ */
33
+ this._store = new Map();
34
+
35
+ /**
36
+ * Maximum storage size (0 = unlimited)
37
+ * @type {number}
38
+ * @private
39
+ */
40
+ this._maxSize = options.maxSize || 0;
41
+ }
42
+
43
+ /**
44
+ * Gets a value by key
45
+ * @param {string} key - Key to retrieve
46
+ * @returns {Promise<any>} Stored value or undefined
47
+ */
48
+ async get(key) {
49
+ const prefixedKey = this._getKey(key);
50
+ const item = this._store.get(prefixedKey);
51
+
52
+ if (item === undefined) {
53
+ return undefined;
54
+ }
55
+
56
+ // Check for expiration if item has TTL
57
+ if (item.expiresAt && Date.now() > item.expiresAt) {
58
+ this._store.delete(prefixedKey);
59
+ return undefined;
60
+ }
61
+
62
+ return item.value;
63
+ }
64
+
65
+ /**
66
+ * Sets a value by key
67
+ * @param {string} key - Key to set
68
+ * @param {any} value - Value to store
69
+ * @param {Object} [options={}] - Set options
70
+ * @param {number} [options.ttl] - Time to live in milliseconds
71
+ * @returns {Promise<void>}
72
+ */
73
+ async set(key, value, options = {}) {
74
+ const prefixedKey = this._getKey(key);
75
+
76
+ // Check size limit
77
+ if (this._maxSize > 0 &&
78
+ !this._store.has(prefixedKey) &&
79
+ this._store.size >= this._maxSize) {
80
+ // Remove oldest entry (first entry in Map)
81
+ const firstKey = this._store.keys().next().value;
82
+ this._store.delete(firstKey);
83
+ }
84
+
85
+ const item = {
86
+ value,
87
+ createdAt: Date.now()
88
+ };
89
+
90
+ if (options.ttl && options.ttl > 0) {
91
+ item.expiresAt = Date.now() + options.ttl;
92
+ }
93
+
94
+ this._store.set(prefixedKey, item);
95
+ }
96
+
97
+ /**
98
+ * Deletes a value by key
99
+ * @param {string} key - Key to delete
100
+ * @returns {Promise<void>}
101
+ */
102
+ async delete(key) {
103
+ const prefixedKey = this._getKey(key);
104
+ this._store.delete(prefixedKey);
105
+ }
106
+
107
+ /**
108
+ * Checks if a key exists
109
+ * @param {string} key - Key to check
110
+ * @returns {Promise<boolean>} True if key exists
111
+ */
112
+ async has(key) {
113
+ const prefixedKey = this._getKey(key);
114
+ const item = this._store.get(prefixedKey);
115
+
116
+ if (item === undefined) {
117
+ return false;
118
+ }
119
+
120
+ // Check for expiration
121
+ if (item.expiresAt && Date.now() > item.expiresAt) {
122
+ this._store.delete(prefixedKey);
123
+ return false;
124
+ }
125
+
126
+ return true;
127
+ }
128
+
129
+ /**
130
+ * Clears all stored data
131
+ * @returns {Promise<void>}
132
+ */
133
+ async clear() {
134
+ if (this._options.prefix) {
135
+ // Only clear keys with our prefix
136
+ for (const key of this._store.keys()) {
137
+ if (key.startsWith(`${this._options.prefix}:`)) {
138
+ this._store.delete(key);
139
+ }
140
+ }
141
+ } else {
142
+ this._store.clear();
143
+ }
144
+ }
145
+
146
+ /**
147
+ * Gets all keys (without prefix)
148
+ * @returns {Promise<string[]>} Array of keys
149
+ */
150
+ async keys() {
151
+ const result = [];
152
+ const prefix = this._options.prefix ? `${this._options.prefix}:` : '';
153
+
154
+ for (const key of this._store.keys()) {
155
+ if (!prefix || key.startsWith(prefix)) {
156
+ const unprefixedKey = prefix ? key.slice(prefix.length) : key;
157
+ // Check expiration before including
158
+ const item = this._store.get(key);
159
+ if (!item.expiresAt || Date.now() <= item.expiresAt) {
160
+ result.push(unprefixedKey);
161
+ }
162
+ }
163
+ }
164
+
165
+ return result;
166
+ }
167
+
168
+ /**
169
+ * Gets the current size of the storage
170
+ * @returns {Promise<number>} Number of stored items
171
+ */
172
+ async size() {
173
+ // Clean up expired items first
174
+ await this._cleanupExpired();
175
+ return (await this.keys()).length;
176
+ }
177
+
178
+ /**
179
+ * Cleans up expired items
180
+ * @returns {Promise<number>} Number of items removed
181
+ * @private
182
+ */
183
+ async _cleanupExpired() {
184
+ const now = Date.now();
185
+ let removed = 0;
186
+
187
+ for (const [key, item] of this._store.entries()) {
188
+ if (item.expiresAt && now > item.expiresAt) {
189
+ this._store.delete(key);
190
+ removed++;
191
+ }
192
+ }
193
+
194
+ return removed;
195
+ }
196
+
197
+ /**
198
+ * Gets all entries as an array of [key, value] pairs
199
+ * @returns {Promise<Array>} Array of [key, value] entries
200
+ */
201
+ async entries() {
202
+ const allKeys = await this.keys();
203
+ const result = [];
204
+
205
+ for (const key of allKeys) {
206
+ const value = await this.get(key);
207
+ if (value !== undefined) {
208
+ result.push([key, value]);
209
+ }
210
+ }
211
+
212
+ return result;
213
+ }
214
+
215
+ /**
216
+ * Gets all values
217
+ * @returns {Promise<any[]>} Array of values
218
+ */
219
+ async values() {
220
+ const allEntries = await this.entries();
221
+ return allEntries.map(([, value]) => value);
222
+ }
223
+ }
224
+
225
+ module.exports = MemoryStorage;