@matter/general 0.11.0-alpha.0-20241005-e3e4e4a7a

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 (692) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/MatterError.d.ts +95 -0
  4. package/dist/cjs/MatterError.d.ts.map +1 -0
  5. package/dist/cjs/MatterError.js +177 -0
  6. package/dist/cjs/MatterError.js.map +6 -0
  7. package/dist/cjs/codec/Base64Codec.d.ts +23 -0
  8. package/dist/cjs/codec/Base64Codec.d.ts.map +1 -0
  9. package/dist/cjs/codec/Base64Codec.js +134 -0
  10. package/dist/cjs/codec/Base64Codec.js.map +6 -0
  11. package/dist/cjs/codec/DerCodec.d.ts +83 -0
  12. package/dist/cjs/codec/DerCodec.d.ts.map +1 -0
  13. package/dist/cjs/codec/DerCodec.js +286 -0
  14. package/dist/cjs/codec/DerCodec.js.map +6 -0
  15. package/dist/cjs/codec/DerTypes.d.ts +73 -0
  16. package/dist/cjs/codec/DerTypes.d.ts.map +1 -0
  17. package/dist/cjs/codec/DerTypes.js +132 -0
  18. package/dist/cjs/codec/DerTypes.js.map +6 -0
  19. package/dist/cjs/codec/DnsCodec.d.ts +86 -0
  20. package/dist/cjs/codec/DnsCodec.d.ts.map +1 -0
  21. package/dist/cjs/codec/DnsCodec.js +355 -0
  22. package/dist/cjs/codec/DnsCodec.js.map +6 -0
  23. package/dist/cjs/codec/index.d.ts +10 -0
  24. package/dist/cjs/codec/index.d.ts.map +1 -0
  25. package/dist/cjs/codec/index.js +27 -0
  26. package/dist/cjs/codec/index.js.map +6 -0
  27. package/dist/cjs/crypto/Crypto.d.ts +169 -0
  28. package/dist/cjs/crypto/Crypto.d.ts.map +1 -0
  29. package/dist/cjs/crypto/Crypto.js +103 -0
  30. package/dist/cjs/crypto/Crypto.js.map +6 -0
  31. package/dist/cjs/crypto/CryptoConstants.d.ts +19 -0
  32. package/dist/cjs/crypto/CryptoConstants.d.ts.map +1 -0
  33. package/dist/cjs/crypto/CryptoConstants.js +48 -0
  34. package/dist/cjs/crypto/CryptoConstants.js.map +6 -0
  35. package/dist/cjs/crypto/Key.d.ts +171 -0
  36. package/dist/cjs/crypto/Key.d.ts.map +1 -0
  37. package/dist/cjs/crypto/Key.js +356 -0
  38. package/dist/cjs/crypto/Key.js.map +6 -0
  39. package/dist/cjs/crypto/Spake2p.d.ts +40 -0
  40. package/dist/cjs/crypto/Spake2p.d.ts.map +1 -0
  41. package/dist/cjs/crypto/Spake2p.js +128 -0
  42. package/dist/cjs/crypto/Spake2p.js.map +6 -0
  43. package/dist/cjs/crypto/index.d.ts +10 -0
  44. package/dist/cjs/crypto/index.d.ts.map +1 -0
  45. package/dist/cjs/crypto/index.js +27 -0
  46. package/dist/cjs/crypto/index.js.map +6 -0
  47. package/dist/cjs/environment/Environment.d.ts +96 -0
  48. package/dist/cjs/environment/Environment.d.ts.map +1 -0
  49. package/dist/cjs/environment/Environment.js +199 -0
  50. package/dist/cjs/environment/Environment.js.map +6 -0
  51. package/dist/cjs/environment/Environmental.d.ts +52 -0
  52. package/dist/cjs/environment/Environmental.d.ts.map +1 -0
  53. package/dist/cjs/environment/Environmental.js +33 -0
  54. package/dist/cjs/environment/Environmental.js.map +6 -0
  55. package/dist/cjs/environment/RuntimeService.d.ts +107 -0
  56. package/dist/cjs/environment/RuntimeService.d.ts.map +1 -0
  57. package/dist/cjs/environment/RuntimeService.js +222 -0
  58. package/dist/cjs/environment/RuntimeService.js.map +6 -0
  59. package/dist/cjs/environment/VariableService.d.ts +58 -0
  60. package/dist/cjs/environment/VariableService.d.ts.map +1 -0
  61. package/dist/cjs/environment/VariableService.js +257 -0
  62. package/dist/cjs/environment/VariableService.js.map +6 -0
  63. package/dist/cjs/environment/index.d.ts +10 -0
  64. package/dist/cjs/environment/index.d.ts.map +1 -0
  65. package/dist/cjs/environment/index.js +27 -0
  66. package/dist/cjs/environment/index.js.map +6 -0
  67. package/dist/cjs/index.d.ts +17 -0
  68. package/dist/cjs/index.d.ts.map +1 -0
  69. package/dist/cjs/index.js +34 -0
  70. package/dist/cjs/index.js.map +6 -0
  71. package/dist/cjs/log/Diagnostic.d.ts +140 -0
  72. package/dist/cjs/log/Diagnostic.d.ts.map +1 -0
  73. package/dist/cjs/log/Diagnostic.js +297 -0
  74. package/dist/cjs/log/Diagnostic.js.map +6 -0
  75. package/dist/cjs/log/DiagnosticSource.d.ts +16 -0
  76. package/dist/cjs/log/DiagnosticSource.d.ts.map +1 -0
  77. package/dist/cjs/log/DiagnosticSource.js +45 -0
  78. package/dist/cjs/log/DiagnosticSource.js.map +6 -0
  79. package/dist/cjs/log/LogFormat.d.ts +33 -0
  80. package/dist/cjs/log/LogFormat.d.ts.map +1 -0
  81. package/dist/cjs/log/LogFormat.js +503 -0
  82. package/dist/cjs/log/LogFormat.js.map +6 -0
  83. package/dist/cjs/log/LogLevel.d.ts +18 -0
  84. package/dist/cjs/log/LogLevel.d.ts.map +1 -0
  85. package/dist/cjs/log/LogLevel.js +57 -0
  86. package/dist/cjs/log/LogLevel.js.map +6 -0
  87. package/dist/cjs/log/Logger.d.ts +220 -0
  88. package/dist/cjs/log/Logger.d.ts.map +1 -0
  89. package/dist/cjs/log/Logger.js +401 -0
  90. package/dist/cjs/log/Logger.js.map +6 -0
  91. package/dist/cjs/log/index.d.ts +11 -0
  92. package/dist/cjs/log/index.d.ts.map +1 -0
  93. package/dist/cjs/log/index.js +28 -0
  94. package/dist/cjs/log/index.js.map +6 -0
  95. package/dist/cjs/math/ReedSolomon.d.ts +11 -0
  96. package/dist/cjs/math/ReedSolomon.d.ts.map +1 -0
  97. package/dist/cjs/math/ReedSolomon.js +109 -0
  98. package/dist/cjs/math/ReedSolomon.js.map +6 -0
  99. package/dist/cjs/math/Verhoeff.d.ts +17 -0
  100. package/dist/cjs/math/Verhoeff.d.ts.map +1 -0
  101. package/dist/cjs/math/Verhoeff.js +64 -0
  102. package/dist/cjs/math/Verhoeff.js.map +6 -0
  103. package/dist/cjs/math/index.d.ts +8 -0
  104. package/dist/cjs/math/index.d.ts.map +1 -0
  105. package/dist/cjs/math/index.js +25 -0
  106. package/dist/cjs/math/index.js.map +6 -0
  107. package/dist/cjs/net/Channel.d.ts +24 -0
  108. package/dist/cjs/net/Channel.d.ts.map +1 -0
  109. package/dist/cjs/net/Channel.js +35 -0
  110. package/dist/cjs/net/Channel.js.map +6 -0
  111. package/dist/cjs/net/NetInterface.d.ts +24 -0
  112. package/dist/cjs/net/NetInterface.d.ts.map +1 -0
  113. package/dist/cjs/net/NetInterface.js +42 -0
  114. package/dist/cjs/net/NetInterface.js.map +6 -0
  115. package/dist/cjs/net/Network.d.ts +54 -0
  116. package/dist/cjs/net/Network.d.ts.map +1 -0
  117. package/dist/cjs/net/Network.js +50 -0
  118. package/dist/cjs/net/Network.js.map +6 -0
  119. package/dist/cjs/net/ServerAddress.d.ts +17 -0
  120. package/dist/cjs/net/ServerAddress.d.ts.map +1 -0
  121. package/dist/cjs/net/ServerAddress.js +32 -0
  122. package/dist/cjs/net/ServerAddress.js.map +6 -0
  123. package/dist/cjs/net/TransportInterface.d.ts +40 -0
  124. package/dist/cjs/net/TransportInterface.d.ts.map +1 -0
  125. package/dist/cjs/net/TransportInterface.js +55 -0
  126. package/dist/cjs/net/TransportInterface.js.map +6 -0
  127. package/dist/cjs/net/UdpChannel.d.ts +25 -0
  128. package/dist/cjs/net/UdpChannel.d.ts.map +1 -0
  129. package/dist/cjs/net/UdpChannel.js +30 -0
  130. package/dist/cjs/net/UdpChannel.js.map +6 -0
  131. package/dist/cjs/net/UdpInterface.d.ts +35 -0
  132. package/dist/cjs/net/UdpInterface.d.ts.map +1 -0
  133. package/dist/cjs/net/UdpInterface.js +82 -0
  134. package/dist/cjs/net/UdpInterface.js.map +6 -0
  135. package/dist/cjs/net/UdpMulticastServer.d.ts +30 -0
  136. package/dist/cjs/net/UdpMulticastServer.d.ts.map +1 -0
  137. package/dist/cjs/net/UdpMulticastServer.js +133 -0
  138. package/dist/cjs/net/UdpMulticastServer.js.map +6 -0
  139. package/dist/cjs/net/index.d.ts +17 -0
  140. package/dist/cjs/net/index.d.ts.map +1 -0
  141. package/dist/cjs/net/index.js +34 -0
  142. package/dist/cjs/net/index.js.map +6 -0
  143. package/dist/cjs/net/mock/MockNetwork.d.ts +19 -0
  144. package/dist/cjs/net/mock/MockNetwork.d.ts.map +1 -0
  145. package/dist/cjs/net/mock/MockNetwork.js +56 -0
  146. package/dist/cjs/net/mock/MockNetwork.js.map +6 -0
  147. package/dist/cjs/net/mock/MockUdpChannel.d.ts +27 -0
  148. package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -0
  149. package/dist/cjs/net/mock/MockUdpChannel.js +76 -0
  150. package/dist/cjs/net/mock/MockUdpChannel.js.map +6 -0
  151. package/dist/cjs/net/mock/NetworkSimulator.d.ts +18 -0
  152. package/dist/cjs/net/mock/NetworkSimulator.d.ts.map +1 -0
  153. package/dist/cjs/net/mock/NetworkSimulator.js +73 -0
  154. package/dist/cjs/net/mock/NetworkSimulator.js.map +6 -0
  155. package/dist/cjs/package.json +6 -0
  156. package/dist/cjs/polyfills/disposable.d.ts +7 -0
  157. package/dist/cjs/polyfills/disposable.d.ts.map +1 -0
  158. package/dist/cjs/polyfills/disposable.js +19 -0
  159. package/dist/cjs/polyfills/disposable.js.map +6 -0
  160. package/dist/cjs/polyfills/index.d.ts +7 -0
  161. package/dist/cjs/polyfills/index.d.ts.map +1 -0
  162. package/dist/cjs/polyfills/index.js +8 -0
  163. package/dist/cjs/polyfills/index.js.map +6 -0
  164. package/dist/cjs/storage/Storage.d.ts +54 -0
  165. package/dist/cjs/storage/Storage.d.ts.map +1 -0
  166. package/dist/cjs/storage/Storage.js +38 -0
  167. package/dist/cjs/storage/Storage.js.map +6 -0
  168. package/dist/cjs/storage/StorageBackendMemory.d.ts +27 -0
  169. package/dist/cjs/storage/StorageBackendMemory.d.ts.map +1 -0
  170. package/dist/cjs/storage/StorageBackendMemory.js +131 -0
  171. package/dist/cjs/storage/StorageBackendMemory.js.map +6 -0
  172. package/dist/cjs/storage/StorageContext.d.ts +26 -0
  173. package/dist/cjs/storage/StorageContext.d.ts.map +1 -0
  174. package/dist/cjs/storage/StorageContext.js +117 -0
  175. package/dist/cjs/storage/StorageContext.js.map +6 -0
  176. package/dist/cjs/storage/StorageManager.d.ts +17 -0
  177. package/dist/cjs/storage/StorageManager.d.ts.map +1 -0
  178. package/dist/cjs/storage/StorageManager.js +59 -0
  179. package/dist/cjs/storage/StorageManager.js.map +6 -0
  180. package/dist/cjs/storage/StorageService.d.ts +35 -0
  181. package/dist/cjs/storage/StorageService.d.ts.map +1 -0
  182. package/dist/cjs/storage/StorageService.js +82 -0
  183. package/dist/cjs/storage/StorageService.js.map +6 -0
  184. package/dist/cjs/storage/StringifyTools.d.ts +16 -0
  185. package/dist/cjs/storage/StringifyTools.d.ts.map +1 -0
  186. package/dist/cjs/storage/StringifyTools.js +105 -0
  187. package/dist/cjs/storage/StringifyTools.js.map +6 -0
  188. package/dist/cjs/storage/index.d.ts +12 -0
  189. package/dist/cjs/storage/index.d.ts.map +1 -0
  190. package/dist/cjs/storage/index.js +29 -0
  191. package/dist/cjs/storage/index.js.map +6 -0
  192. package/dist/cjs/time/Time.d.ts +66 -0
  193. package/dist/cjs/time/Time.d.ts.map +1 -0
  194. package/dist/cjs/time/Time.js +137 -0
  195. package/dist/cjs/time/Time.js.map +6 -0
  196. package/dist/cjs/time/index.d.ts +7 -0
  197. package/dist/cjs/time/index.d.ts.map +1 -0
  198. package/dist/cjs/time/index.js +24 -0
  199. package/dist/cjs/time/index.js.map +6 -0
  200. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  201. package/dist/cjs/util/Array.d.ts +12 -0
  202. package/dist/cjs/util/Array.d.ts.map +1 -0
  203. package/dist/cjs/util/Array.js +24 -0
  204. package/dist/cjs/util/Array.js.map +6 -0
  205. package/dist/cjs/util/Bytes.d.ts +23 -0
  206. package/dist/cjs/util/Bytes.d.ts.map +1 -0
  207. package/dist/cjs/util/Bytes.js +95 -0
  208. package/dist/cjs/util/Bytes.js.map +6 -0
  209. package/dist/cjs/util/Cache.d.ts +33 -0
  210. package/dist/cjs/util/Cache.d.ts.map +1 -0
  211. package/dist/cjs/util/Cache.js +114 -0
  212. package/dist/cjs/util/Cache.js.map +6 -0
  213. package/dist/cjs/util/Construction.d.ts +182 -0
  214. package/dist/cjs/util/Construction.d.ts.map +1 -0
  215. package/dist/cjs/util/Construction.js +417 -0
  216. package/dist/cjs/util/Construction.js.map +6 -0
  217. package/dist/cjs/util/DataReadQueue.d.ts +17 -0
  218. package/dist/cjs/util/DataReadQueue.d.ts.map +1 -0
  219. package/dist/cjs/util/DataReadQueue.js +76 -0
  220. package/dist/cjs/util/DataReadQueue.js.map +6 -0
  221. package/dist/cjs/util/DataReader.d.ts +32 -0
  222. package/dist/cjs/util/DataReader.d.ts.map +1 -0
  223. package/dist/cjs/util/DataReader.js +101 -0
  224. package/dist/cjs/util/DataReader.js.map +6 -0
  225. package/dist/cjs/util/DataWriter.d.ts +26 -0
  226. package/dist/cjs/util/DataWriter.d.ts.map +1 -0
  227. package/dist/cjs/util/DataWriter.js +114 -0
  228. package/dist/cjs/util/DataWriter.js.map +6 -0
  229. package/dist/cjs/util/DeepCopy.d.ts +12 -0
  230. package/dist/cjs/util/DeepCopy.d.ts.map +1 -0
  231. package/dist/cjs/util/DeepCopy.js +58 -0
  232. package/dist/cjs/util/DeepCopy.js.map +6 -0
  233. package/dist/cjs/util/DeepEqual.d.ts +7 -0
  234. package/dist/cjs/util/DeepEqual.d.ts.map +1 -0
  235. package/dist/cjs/util/DeepEqual.js +55 -0
  236. package/dist/cjs/util/DeepEqual.js.map +6 -0
  237. package/dist/cjs/util/Error.d.ts +12 -0
  238. package/dist/cjs/util/Error.d.ts.map +1 -0
  239. package/dist/cjs/util/Error.js +41 -0
  240. package/dist/cjs/util/Error.js.map +6 -0
  241. package/dist/cjs/util/GeneratedClass.d.ts +62 -0
  242. package/dist/cjs/util/GeneratedClass.d.ts.map +1 -0
  243. package/dist/cjs/util/GeneratedClass.js +117 -0
  244. package/dist/cjs/util/GeneratedClass.js.map +6 -0
  245. package/dist/cjs/util/Introspection.d.ts +38 -0
  246. package/dist/cjs/util/Introspection.d.ts.map +1 -0
  247. package/dist/cjs/util/Introspection.js +85 -0
  248. package/dist/cjs/util/Introspection.js.map +6 -0
  249. package/dist/cjs/util/Ip.d.ts +8 -0
  250. package/dist/cjs/util/Ip.d.ts.map +1 -0
  251. package/dist/cjs/util/Ip.js +90 -0
  252. package/dist/cjs/util/Ip.js.map +6 -0
  253. package/dist/cjs/util/Lifecycle.d.ts +97 -0
  254. package/dist/cjs/util/Lifecycle.d.ts.map +1 -0
  255. package/dist/cjs/util/Lifecycle.js +89 -0
  256. package/dist/cjs/util/Lifecycle.js.map +6 -0
  257. package/dist/cjs/util/Multiplex.d.ts +14 -0
  258. package/dist/cjs/util/Multiplex.d.ts.map +1 -0
  259. package/dist/cjs/util/Multiplex.js +22 -0
  260. package/dist/cjs/util/Multiplex.js.map +6 -0
  261. package/dist/cjs/util/Mutex.d.ts +34 -0
  262. package/dist/cjs/util/Mutex.d.ts.map +1 -0
  263. package/dist/cjs/util/Mutex.js +105 -0
  264. package/dist/cjs/util/Mutex.js.map +6 -0
  265. package/dist/cjs/util/NamedHandler.d.ts +21 -0
  266. package/dist/cjs/util/NamedHandler.d.ts.map +1 -0
  267. package/dist/cjs/util/NamedHandler.js +54 -0
  268. package/dist/cjs/util/NamedHandler.js.map +6 -0
  269. package/dist/cjs/util/Number.d.ts +37 -0
  270. package/dist/cjs/util/Number.d.ts.map +1 -0
  271. package/dist/cjs/util/Number.js +97 -0
  272. package/dist/cjs/util/Number.js.map +6 -0
  273. package/dist/cjs/util/Observable.d.ts +197 -0
  274. package/dist/cjs/util/Observable.d.ts.map +1 -0
  275. package/dist/cjs/util/Observable.js +340 -0
  276. package/dist/cjs/util/Observable.js.map +6 -0
  277. package/dist/cjs/util/PromiseQueue.d.ts +25 -0
  278. package/dist/cjs/util/PromiseQueue.d.ts.map +1 -0
  279. package/dist/cjs/util/PromiseQueue.js +107 -0
  280. package/dist/cjs/util/PromiseQueue.js.map +6 -0
  281. package/dist/cjs/util/Promises.d.ts +68 -0
  282. package/dist/cjs/util/Promises.d.ts.map +1 -0
  283. package/dist/cjs/util/Promises.js +199 -0
  284. package/dist/cjs/util/Promises.js.map +6 -0
  285. package/dist/cjs/util/Set.d.ts +60 -0
  286. package/dist/cjs/util/Set.d.ts.map +1 -0
  287. package/dist/cjs/util/Set.js +145 -0
  288. package/dist/cjs/util/Set.js.map +6 -0
  289. package/dist/cjs/util/Singleton.d.ts +7 -0
  290. package/dist/cjs/util/Singleton.d.ts.map +1 -0
  291. package/dist/cjs/util/Singleton.js +36 -0
  292. package/dist/cjs/util/Singleton.js.map +6 -0
  293. package/dist/cjs/util/Stream.d.ts +16 -0
  294. package/dist/cjs/util/Stream.d.ts.map +1 -0
  295. package/dist/cjs/util/Stream.js +38 -0
  296. package/dist/cjs/util/Stream.js.map +6 -0
  297. package/dist/cjs/util/String.d.ts +39 -0
  298. package/dist/cjs/util/String.d.ts.map +1 -0
  299. package/dist/cjs/util/String.js +208 -0
  300. package/dist/cjs/util/String.js.map +6 -0
  301. package/dist/cjs/util/Type.d.ts +84 -0
  302. package/dist/cjs/util/Type.d.ts.map +1 -0
  303. package/dist/cjs/util/Type.js +52 -0
  304. package/dist/cjs/util/Type.js.map +6 -0
  305. package/dist/cjs/util/index.d.ts +30 -0
  306. package/dist/cjs/util/index.d.ts.map +1 -0
  307. package/dist/cjs/util/index.js +47 -0
  308. package/dist/cjs/util/index.js.map +6 -0
  309. package/dist/esm/MatterError.d.ts +95 -0
  310. package/dist/esm/MatterError.d.ts.map +1 -0
  311. package/dist/esm/MatterError.js +157 -0
  312. package/dist/esm/MatterError.js.map +6 -0
  313. package/dist/esm/codec/Base64Codec.d.ts +23 -0
  314. package/dist/esm/codec/Base64Codec.d.ts.map +1 -0
  315. package/dist/esm/codec/Base64Codec.js +114 -0
  316. package/dist/esm/codec/Base64Codec.js.map +6 -0
  317. package/dist/esm/codec/DerCodec.d.ts +83 -0
  318. package/dist/esm/codec/DerCodec.d.ts.map +1 -0
  319. package/dist/esm/codec/DerCodec.js +266 -0
  320. package/dist/esm/codec/DerCodec.js.map +6 -0
  321. package/dist/esm/codec/DerTypes.d.ts +73 -0
  322. package/dist/esm/codec/DerTypes.d.ts.map +1 -0
  323. package/dist/esm/codec/DerTypes.js +122 -0
  324. package/dist/esm/codec/DerTypes.js.map +6 -0
  325. package/dist/esm/codec/DnsCodec.d.ts +86 -0
  326. package/dist/esm/codec/DnsCodec.d.ts.map +1 -0
  327. package/dist/esm/codec/DnsCodec.js +335 -0
  328. package/dist/esm/codec/DnsCodec.js.map +6 -0
  329. package/dist/esm/codec/index.d.ts +10 -0
  330. package/dist/esm/codec/index.d.ts.map +1 -0
  331. package/dist/esm/codec/index.js +10 -0
  332. package/dist/esm/codec/index.js.map +6 -0
  333. package/dist/esm/crypto/Crypto.d.ts +169 -0
  334. package/dist/esm/crypto/Crypto.d.ts.map +1 -0
  335. package/dist/esm/crypto/Crypto.js +73 -0
  336. package/dist/esm/crypto/Crypto.js.map +6 -0
  337. package/dist/esm/crypto/CryptoConstants.d.ts +19 -0
  338. package/dist/esm/crypto/CryptoConstants.d.ts.map +1 -0
  339. package/dist/esm/crypto/CryptoConstants.js +28 -0
  340. package/dist/esm/crypto/CryptoConstants.js.map +6 -0
  341. package/dist/esm/crypto/Key.d.ts +171 -0
  342. package/dist/esm/crypto/Key.d.ts.map +1 -0
  343. package/dist/esm/crypto/Key.js +336 -0
  344. package/dist/esm/crypto/Key.js.map +6 -0
  345. package/dist/esm/crypto/Spake2p.d.ts +40 -0
  346. package/dist/esm/crypto/Spake2p.d.ts.map +1 -0
  347. package/dist/esm/crypto/Spake2p.js +108 -0
  348. package/dist/esm/crypto/Spake2p.js.map +6 -0
  349. package/dist/esm/crypto/index.d.ts +10 -0
  350. package/dist/esm/crypto/index.d.ts.map +1 -0
  351. package/dist/esm/crypto/index.js +10 -0
  352. package/dist/esm/crypto/index.js.map +6 -0
  353. package/dist/esm/environment/Environment.d.ts +96 -0
  354. package/dist/esm/environment/Environment.d.ts.map +1 -0
  355. package/dist/esm/environment/Environment.js +179 -0
  356. package/dist/esm/environment/Environment.js.map +6 -0
  357. package/dist/esm/environment/Environmental.d.ts +52 -0
  358. package/dist/esm/environment/Environmental.d.ts.map +1 -0
  359. package/dist/esm/environment/Environmental.js +13 -0
  360. package/dist/esm/environment/Environmental.js.map +6 -0
  361. package/dist/esm/environment/RuntimeService.d.ts +107 -0
  362. package/dist/esm/environment/RuntimeService.d.ts.map +1 -0
  363. package/dist/esm/environment/RuntimeService.js +202 -0
  364. package/dist/esm/environment/RuntimeService.js.map +6 -0
  365. package/dist/esm/environment/VariableService.d.ts +58 -0
  366. package/dist/esm/environment/VariableService.d.ts.map +1 -0
  367. package/dist/esm/environment/VariableService.js +237 -0
  368. package/dist/esm/environment/VariableService.js.map +6 -0
  369. package/dist/esm/environment/index.d.ts +10 -0
  370. package/dist/esm/environment/index.d.ts.map +1 -0
  371. package/dist/esm/environment/index.js +10 -0
  372. package/dist/esm/environment/index.js.map +6 -0
  373. package/dist/esm/index.d.ts +17 -0
  374. package/dist/esm/index.d.ts.map +1 -0
  375. package/dist/esm/index.js +17 -0
  376. package/dist/esm/index.js.map +6 -0
  377. package/dist/esm/log/Diagnostic.d.ts +140 -0
  378. package/dist/esm/log/Diagnostic.d.ts.map +1 -0
  379. package/dist/esm/log/Diagnostic.js +277 -0
  380. package/dist/esm/log/Diagnostic.js.map +6 -0
  381. package/dist/esm/log/DiagnosticSource.d.ts +16 -0
  382. package/dist/esm/log/DiagnosticSource.d.ts.map +1 -0
  383. package/dist/esm/log/DiagnosticSource.js +25 -0
  384. package/dist/esm/log/DiagnosticSource.js.map +6 -0
  385. package/dist/esm/log/LogFormat.d.ts +33 -0
  386. package/dist/esm/log/LogFormat.d.ts.map +1 -0
  387. package/dist/esm/log/LogFormat.js +483 -0
  388. package/dist/esm/log/LogFormat.js.map +6 -0
  389. package/dist/esm/log/LogLevel.d.ts +18 -0
  390. package/dist/esm/log/LogLevel.d.ts.map +1 -0
  391. package/dist/esm/log/LogLevel.js +37 -0
  392. package/dist/esm/log/LogLevel.js.map +6 -0
  393. package/dist/esm/log/Logger.d.ts +220 -0
  394. package/dist/esm/log/Logger.d.ts.map +1 -0
  395. package/dist/esm/log/Logger.js +381 -0
  396. package/dist/esm/log/Logger.js.map +6 -0
  397. package/dist/esm/log/index.d.ts +11 -0
  398. package/dist/esm/log/index.d.ts.map +1 -0
  399. package/dist/esm/log/index.js +11 -0
  400. package/dist/esm/log/index.js.map +6 -0
  401. package/dist/esm/math/ReedSolomon.d.ts +11 -0
  402. package/dist/esm/math/ReedSolomon.d.ts.map +1 -0
  403. package/dist/esm/math/ReedSolomon.js +89 -0
  404. package/dist/esm/math/ReedSolomon.js.map +6 -0
  405. package/dist/esm/math/Verhoeff.d.ts +17 -0
  406. package/dist/esm/math/Verhoeff.d.ts.map +1 -0
  407. package/dist/esm/math/Verhoeff.js +44 -0
  408. package/dist/esm/math/Verhoeff.js.map +6 -0
  409. package/dist/esm/math/index.d.ts +8 -0
  410. package/dist/esm/math/index.d.ts.map +1 -0
  411. package/dist/esm/math/index.js +8 -0
  412. package/dist/esm/math/index.js.map +6 -0
  413. package/dist/esm/net/Channel.d.ts +24 -0
  414. package/dist/esm/net/Channel.d.ts.map +1 -0
  415. package/dist/esm/net/Channel.js +15 -0
  416. package/dist/esm/net/Channel.js.map +6 -0
  417. package/dist/esm/net/NetInterface.d.ts +24 -0
  418. package/dist/esm/net/NetInterface.d.ts.map +1 -0
  419. package/dist/esm/net/NetInterface.js +22 -0
  420. package/dist/esm/net/NetInterface.js.map +6 -0
  421. package/dist/esm/net/Network.d.ts +54 -0
  422. package/dist/esm/net/Network.d.ts.map +1 -0
  423. package/dist/esm/net/Network.js +30 -0
  424. package/dist/esm/net/Network.js.map +6 -0
  425. package/dist/esm/net/ServerAddress.d.ts +17 -0
  426. package/dist/esm/net/ServerAddress.d.ts.map +1 -0
  427. package/dist/esm/net/ServerAddress.js +12 -0
  428. package/dist/esm/net/ServerAddress.js.map +6 -0
  429. package/dist/esm/net/TransportInterface.d.ts +40 -0
  430. package/dist/esm/net/TransportInterface.d.ts.map +1 -0
  431. package/dist/esm/net/TransportInterface.js +35 -0
  432. package/dist/esm/net/TransportInterface.js.map +6 -0
  433. package/dist/esm/net/UdpChannel.d.ts +25 -0
  434. package/dist/esm/net/UdpChannel.d.ts.map +1 -0
  435. package/dist/esm/net/UdpChannel.js +10 -0
  436. package/dist/esm/net/UdpChannel.js.map +6 -0
  437. package/dist/esm/net/UdpInterface.d.ts +35 -0
  438. package/dist/esm/net/UdpInterface.d.ts.map +1 -0
  439. package/dist/esm/net/UdpInterface.js +62 -0
  440. package/dist/esm/net/UdpInterface.js.map +6 -0
  441. package/dist/esm/net/UdpMulticastServer.d.ts +30 -0
  442. package/dist/esm/net/UdpMulticastServer.d.ts.map +1 -0
  443. package/dist/esm/net/UdpMulticastServer.js +113 -0
  444. package/dist/esm/net/UdpMulticastServer.js.map +6 -0
  445. package/dist/esm/net/index.d.ts +17 -0
  446. package/dist/esm/net/index.d.ts.map +1 -0
  447. package/dist/esm/net/index.js +17 -0
  448. package/dist/esm/net/index.js.map +6 -0
  449. package/dist/esm/net/mock/MockNetwork.d.ts +19 -0
  450. package/dist/esm/net/mock/MockNetwork.d.ts.map +1 -0
  451. package/dist/esm/net/mock/MockNetwork.js +36 -0
  452. package/dist/esm/net/mock/MockNetwork.js.map +6 -0
  453. package/dist/esm/net/mock/MockUdpChannel.d.ts +27 -0
  454. package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -0
  455. package/dist/esm/net/mock/MockUdpChannel.js +56 -0
  456. package/dist/esm/net/mock/MockUdpChannel.js.map +6 -0
  457. package/dist/esm/net/mock/NetworkSimulator.d.ts +18 -0
  458. package/dist/esm/net/mock/NetworkSimulator.d.ts.map +1 -0
  459. package/dist/esm/net/mock/NetworkSimulator.js +53 -0
  460. package/dist/esm/net/mock/NetworkSimulator.js.map +6 -0
  461. package/dist/esm/package.json +6 -0
  462. package/dist/esm/polyfills/disposable.d.ts +7 -0
  463. package/dist/esm/polyfills/disposable.d.ts.map +1 -0
  464. package/dist/esm/polyfills/disposable.js +18 -0
  465. package/dist/esm/polyfills/disposable.js.map +6 -0
  466. package/dist/esm/polyfills/index.d.ts +7 -0
  467. package/dist/esm/polyfills/index.d.ts.map +1 -0
  468. package/dist/esm/polyfills/index.js +7 -0
  469. package/dist/esm/polyfills/index.js.map +6 -0
  470. package/dist/esm/storage/Storage.d.ts +54 -0
  471. package/dist/esm/storage/Storage.d.ts.map +1 -0
  472. package/dist/esm/storage/Storage.js +18 -0
  473. package/dist/esm/storage/Storage.js.map +6 -0
  474. package/dist/esm/storage/StorageBackendMemory.d.ts +27 -0
  475. package/dist/esm/storage/StorageBackendMemory.d.ts.map +1 -0
  476. package/dist/esm/storage/StorageBackendMemory.js +111 -0
  477. package/dist/esm/storage/StorageBackendMemory.js.map +6 -0
  478. package/dist/esm/storage/StorageContext.d.ts +26 -0
  479. package/dist/esm/storage/StorageContext.d.ts.map +1 -0
  480. package/dist/esm/storage/StorageContext.js +97 -0
  481. package/dist/esm/storage/StorageContext.js.map +6 -0
  482. package/dist/esm/storage/StorageManager.d.ts +17 -0
  483. package/dist/esm/storage/StorageManager.d.ts.map +1 -0
  484. package/dist/esm/storage/StorageManager.js +39 -0
  485. package/dist/esm/storage/StorageManager.js.map +6 -0
  486. package/dist/esm/storage/StorageService.d.ts +35 -0
  487. package/dist/esm/storage/StorageService.d.ts.map +1 -0
  488. package/dist/esm/storage/StorageService.js +62 -0
  489. package/dist/esm/storage/StorageService.js.map +6 -0
  490. package/dist/esm/storage/StringifyTools.d.ts +16 -0
  491. package/dist/esm/storage/StringifyTools.d.ts.map +1 -0
  492. package/dist/esm/storage/StringifyTools.js +85 -0
  493. package/dist/esm/storage/StringifyTools.js.map +6 -0
  494. package/dist/esm/storage/index.d.ts +12 -0
  495. package/dist/esm/storage/index.d.ts.map +1 -0
  496. package/dist/esm/storage/index.js +12 -0
  497. package/dist/esm/storage/index.js.map +6 -0
  498. package/dist/esm/time/Time.d.ts +66 -0
  499. package/dist/esm/time/Time.d.ts.map +1 -0
  500. package/dist/esm/time/Time.js +117 -0
  501. package/dist/esm/time/Time.js.map +6 -0
  502. package/dist/esm/time/index.d.ts +7 -0
  503. package/dist/esm/time/index.d.ts.map +1 -0
  504. package/dist/esm/time/index.js +7 -0
  505. package/dist/esm/time/index.js.map +6 -0
  506. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  507. package/dist/esm/util/Array.d.ts +12 -0
  508. package/dist/esm/util/Array.d.ts.map +1 -0
  509. package/dist/esm/util/Array.js +8 -0
  510. package/dist/esm/util/Array.js.map +6 -0
  511. package/dist/esm/util/Bytes.d.ts +23 -0
  512. package/dist/esm/util/Bytes.d.ts.map +1 -0
  513. package/dist/esm/util/Bytes.js +75 -0
  514. package/dist/esm/util/Bytes.js.map +6 -0
  515. package/dist/esm/util/Cache.d.ts +33 -0
  516. package/dist/esm/util/Cache.d.ts.map +1 -0
  517. package/dist/esm/util/Cache.js +94 -0
  518. package/dist/esm/util/Cache.js.map +6 -0
  519. package/dist/esm/util/Construction.d.ts +182 -0
  520. package/dist/esm/util/Construction.d.ts.map +1 -0
  521. package/dist/esm/util/Construction.js +397 -0
  522. package/dist/esm/util/Construction.js.map +6 -0
  523. package/dist/esm/util/DataReadQueue.d.ts +17 -0
  524. package/dist/esm/util/DataReadQueue.d.ts.map +1 -0
  525. package/dist/esm/util/DataReadQueue.js +56 -0
  526. package/dist/esm/util/DataReadQueue.js.map +6 -0
  527. package/dist/esm/util/DataReader.d.ts +32 -0
  528. package/dist/esm/util/DataReader.d.ts.map +1 -0
  529. package/dist/esm/util/DataReader.js +81 -0
  530. package/dist/esm/util/DataReader.js.map +6 -0
  531. package/dist/esm/util/DataWriter.d.ts +26 -0
  532. package/dist/esm/util/DataWriter.d.ts.map +1 -0
  533. package/dist/esm/util/DataWriter.js +94 -0
  534. package/dist/esm/util/DataWriter.js.map +6 -0
  535. package/dist/esm/util/DeepCopy.d.ts +12 -0
  536. package/dist/esm/util/DeepCopy.d.ts.map +1 -0
  537. package/dist/esm/util/DeepCopy.js +38 -0
  538. package/dist/esm/util/DeepCopy.js.map +6 -0
  539. package/dist/esm/util/DeepEqual.d.ts +7 -0
  540. package/dist/esm/util/DeepEqual.d.ts.map +1 -0
  541. package/dist/esm/util/DeepEqual.js +35 -0
  542. package/dist/esm/util/DeepEqual.js.map +6 -0
  543. package/dist/esm/util/Error.d.ts +12 -0
  544. package/dist/esm/util/Error.d.ts.map +1 -0
  545. package/dist/esm/util/Error.js +21 -0
  546. package/dist/esm/util/Error.js.map +6 -0
  547. package/dist/esm/util/GeneratedClass.d.ts +62 -0
  548. package/dist/esm/util/GeneratedClass.d.ts.map +1 -0
  549. package/dist/esm/util/GeneratedClass.js +97 -0
  550. package/dist/esm/util/GeneratedClass.js.map +6 -0
  551. package/dist/esm/util/Introspection.d.ts +38 -0
  552. package/dist/esm/util/Introspection.d.ts.map +1 -0
  553. package/dist/esm/util/Introspection.js +65 -0
  554. package/dist/esm/util/Introspection.js.map +6 -0
  555. package/dist/esm/util/Ip.d.ts +8 -0
  556. package/dist/esm/util/Ip.d.ts.map +1 -0
  557. package/dist/esm/util/Ip.js +70 -0
  558. package/dist/esm/util/Ip.js.map +6 -0
  559. package/dist/esm/util/Lifecycle.d.ts +97 -0
  560. package/dist/esm/util/Lifecycle.d.ts.map +1 -0
  561. package/dist/esm/util/Lifecycle.js +69 -0
  562. package/dist/esm/util/Lifecycle.js.map +6 -0
  563. package/dist/esm/util/Multiplex.d.ts +14 -0
  564. package/dist/esm/util/Multiplex.d.ts.map +1 -0
  565. package/dist/esm/util/Multiplex.js +6 -0
  566. package/dist/esm/util/Multiplex.js.map +6 -0
  567. package/dist/esm/util/Mutex.d.ts +34 -0
  568. package/dist/esm/util/Mutex.d.ts.map +1 -0
  569. package/dist/esm/util/Mutex.js +85 -0
  570. package/dist/esm/util/Mutex.js.map +6 -0
  571. package/dist/esm/util/NamedHandler.d.ts +21 -0
  572. package/dist/esm/util/NamedHandler.d.ts.map +1 -0
  573. package/dist/esm/util/NamedHandler.js +34 -0
  574. package/dist/esm/util/NamedHandler.js.map +6 -0
  575. package/dist/esm/util/Number.d.ts +37 -0
  576. package/dist/esm/util/Number.d.ts.map +1 -0
  577. package/dist/esm/util/Number.js +77 -0
  578. package/dist/esm/util/Number.js.map +6 -0
  579. package/dist/esm/util/Observable.d.ts +197 -0
  580. package/dist/esm/util/Observable.d.ts.map +1 -0
  581. package/dist/esm/util/Observable.js +320 -0
  582. package/dist/esm/util/Observable.js.map +6 -0
  583. package/dist/esm/util/PromiseQueue.d.ts +25 -0
  584. package/dist/esm/util/PromiseQueue.d.ts.map +1 -0
  585. package/dist/esm/util/PromiseQueue.js +87 -0
  586. package/dist/esm/util/PromiseQueue.js.map +6 -0
  587. package/dist/esm/util/Promises.d.ts +68 -0
  588. package/dist/esm/util/Promises.d.ts.map +1 -0
  589. package/dist/esm/util/Promises.js +179 -0
  590. package/dist/esm/util/Promises.js.map +6 -0
  591. package/dist/esm/util/Set.d.ts +60 -0
  592. package/dist/esm/util/Set.d.ts.map +1 -0
  593. package/dist/esm/util/Set.js +125 -0
  594. package/dist/esm/util/Set.js.map +6 -0
  595. package/dist/esm/util/Singleton.d.ts +7 -0
  596. package/dist/esm/util/Singleton.d.ts.map +1 -0
  597. package/dist/esm/util/Singleton.js +16 -0
  598. package/dist/esm/util/Singleton.js.map +6 -0
  599. package/dist/esm/util/Stream.d.ts +16 -0
  600. package/dist/esm/util/Stream.d.ts.map +1 -0
  601. package/dist/esm/util/Stream.js +18 -0
  602. package/dist/esm/util/Stream.js.map +6 -0
  603. package/dist/esm/util/String.d.ts +39 -0
  604. package/dist/esm/util/String.d.ts.map +1 -0
  605. package/dist/esm/util/String.js +188 -0
  606. package/dist/esm/util/String.js.map +6 -0
  607. package/dist/esm/util/Type.d.ts +84 -0
  608. package/dist/esm/util/Type.d.ts.map +1 -0
  609. package/dist/esm/util/Type.js +32 -0
  610. package/dist/esm/util/Type.js.map +6 -0
  611. package/dist/esm/util/index.d.ts +30 -0
  612. package/dist/esm/util/index.d.ts.map +1 -0
  613. package/dist/esm/util/index.js +30 -0
  614. package/dist/esm/util/index.js.map +6 -0
  615. package/package.json +76 -0
  616. package/src/MatterError.ts +205 -0
  617. package/src/codec/Base64Codec.ts +137 -0
  618. package/src/codec/DerCodec.ts +300 -0
  619. package/src/codec/DerTypes.ts +145 -0
  620. package/src/codec/DnsCodec.ts +393 -0
  621. package/src/codec/index.ts +10 -0
  622. package/src/crypto/Crypto.ts +136 -0
  623. package/src/crypto/CryptoConstants.ts +19 -0
  624. package/src/crypto/Key.ts +600 -0
  625. package/src/crypto/Spake2p.ts +128 -0
  626. package/src/crypto/index.ts +10 -0
  627. package/src/environment/Environment.ts +215 -0
  628. package/src/environment/Environmental.ts +60 -0
  629. package/src/environment/RuntimeService.ts +301 -0
  630. package/src/environment/VariableService.ts +308 -0
  631. package/src/environment/index.ts +10 -0
  632. package/src/index.ts +17 -0
  633. package/src/log/Diagnostic.ts +454 -0
  634. package/src/log/DiagnosticSource.ts +30 -0
  635. package/src/log/LogFormat.ts +646 -0
  636. package/src/log/LogLevel.ts +36 -0
  637. package/src/log/Logger.ts +474 -0
  638. package/src/log/index.ts +11 -0
  639. package/src/math/ReedSolomon.ts +100 -0
  640. package/src/math/Verhoeff.ts +47 -0
  641. package/src/math/index.ts +8 -0
  642. package/src/net/Channel.ts +30 -0
  643. package/src/net/NetInterface.ts +33 -0
  644. package/src/net/Network.ts +70 -0
  645. package/src/net/ServerAddress.ts +22 -0
  646. package/src/net/TransportInterface.ts +56 -0
  647. package/src/net/UdpChannel.ts +30 -0
  648. package/src/net/UdpInterface.ts +75 -0
  649. package/src/net/UdpMulticastServer.ts +138 -0
  650. package/src/net/index.ts +17 -0
  651. package/src/net/mock/MockNetwork.ts +42 -0
  652. package/src/net/mock/MockUdpChannel.ts +69 -0
  653. package/src/net/mock/NetworkSimulator.ts +63 -0
  654. package/src/polyfills/disposable.ts +24 -0
  655. package/src/polyfills/index.ts +7 -0
  656. package/src/storage/Storage.ts +61 -0
  657. package/src/storage/StorageBackendMemory.ts +131 -0
  658. package/src/storage/StorageContext.ts +111 -0
  659. package/src/storage/StorageManager.ts +39 -0
  660. package/src/storage/StorageService.ts +73 -0
  661. package/src/storage/StringifyTools.ts +107 -0
  662. package/src/storage/index.ts +12 -0
  663. package/src/time/Time.ts +179 -0
  664. package/src/time/index.ts +7 -0
  665. package/src/tsconfig.json +10 -0
  666. package/src/util/Array.ts +15 -0
  667. package/src/util/Bytes.ts +73 -0
  668. package/src/util/Cache.ts +111 -0
  669. package/src/util/Construction.ts +717 -0
  670. package/src/util/DataReadQueue.ts +55 -0
  671. package/src/util/DataReader.ts +100 -0
  672. package/src/util/DataWriter.ts +109 -0
  673. package/src/util/DeepCopy.ts +47 -0
  674. package/src/util/DeepEqual.ts +49 -0
  675. package/src/util/Error.ts +32 -0
  676. package/src/util/GeneratedClass.ts +204 -0
  677. package/src/util/Introspection.ts +93 -0
  678. package/src/util/Ip.ts +71 -0
  679. package/src/util/Lifecycle.ts +135 -0
  680. package/src/util/Multiplex.ts +14 -0
  681. package/src/util/Mutex.ts +100 -0
  682. package/src/util/NamedHandler.ts +52 -0
  683. package/src/util/Number.ts +71 -0
  684. package/src/util/Observable.ts +550 -0
  685. package/src/util/PromiseQueue.ts +102 -0
  686. package/src/util/Promises.ts +278 -0
  687. package/src/util/Set.ts +189 -0
  688. package/src/util/Singleton.ts +13 -0
  689. package/src/util/Stream.ts +19 -0
  690. package/src/util/String.ts +248 -0
  691. package/src/util/Type.ts +145 -0
  692. package/src/util/index.ts +30 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { MatterError, NoProviderError } from "../MatterError.js";
8
+ import { MaybePromise } from "../util/Promises.js";
9
+ import { UdpChannel, UdpChannelOptions } from "./UdpChannel.js";
10
+
11
+ export class NetworkError extends MatterError {}
12
+
13
+ /**
14
+ * @see {@link MatterSpecification.v11.Core} § 11.11.4.4
15
+ * Duplicated from the GeneralDiagnostics cluster to avoid circular dependencies.
16
+ */
17
+ export enum InterfaceType {
18
+ /**
19
+ * Indicates an interface of an unspecified type.
20
+ */
21
+ Unspecified = 0,
22
+
23
+ /**
24
+ * Indicates a Wi-Fi interface.
25
+ */
26
+ WiFi = 1,
27
+
28
+ /**
29
+ * Indicates a Ethernet interface.
30
+ */
31
+ Ethernet = 2,
32
+
33
+ /**
34
+ * Indicates a Cellular interface.
35
+ */
36
+ Cellular = 3,
37
+
38
+ /**
39
+ * Indicates a Thread interface.
40
+ */
41
+ Thread = 4,
42
+ }
43
+
44
+ export type NetworkInterface = {
45
+ name: string;
46
+ type?: InterfaceType;
47
+ };
48
+
49
+ export type NetworkInterfaceDetails = {
50
+ mac: string;
51
+ ipV4: string[];
52
+ ipV6: string[];
53
+ };
54
+
55
+ export type NetworkInterfaceDetailed = NetworkInterface & NetworkInterfaceDetails;
56
+
57
+ export abstract class Network {
58
+ // TODO - remove this singleton
59
+ static get: () => Network = () => {
60
+ throw new NoProviderError("No provider configured");
61
+ };
62
+
63
+ abstract getNetInterfaces(configuration?: NetworkInterface[]): MaybePromise<NetworkInterface[]>;
64
+ abstract getIpMac(netInterface: string): MaybePromise<NetworkInterfaceDetails | undefined>;
65
+ abstract createUdpChannel(options: UdpChannelOptions): Promise<UdpChannel>;
66
+
67
+ async close() {
68
+ // Nothing to do
69
+ }
70
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export type ServerAddressIp = {
8
+ type: "udp";
9
+ ip: string;
10
+ port: number;
11
+ };
12
+
13
+ export type ServerAddressBle = {
14
+ type: "ble";
15
+ peripheralAddress: string;
16
+ };
17
+
18
+ export type ServerAddress = ServerAddressIp | ServerAddressBle;
19
+
20
+ export function serverAddressToString(address: ServerAddress): string {
21
+ return address.type === "udp" ? `udp://${address.ip}:${address.port}` : `ble://${address.peripheralAddress}`;
22
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { BasicSet } from "#util/Set.js";
8
+ import { Channel, ChannelType } from "./Channel.js";
9
+
10
+ /**
11
+ * A TransportInterface is a generic interface for sending and receiving data on an established incoming connection.
12
+ * It cannot open new connections.
13
+ */
14
+ export interface TransportInterface {
15
+ onData(listener: (socket: Channel<Uint8Array>, data: Uint8Array) => void): TransportInterface.Listener;
16
+ close(): Promise<void>;
17
+ supports(type: ChannelType, address?: string): boolean;
18
+ }
19
+
20
+ export namespace TransportInterface {
21
+ export interface Listener {
22
+ close(): Promise<void>;
23
+ }
24
+ }
25
+
26
+ /**
27
+ * A collection of {@link TransportInterfaces} managed as a unit.
28
+ */
29
+ export class TransportInterfaceSet<T extends TransportInterface = TransportInterface> extends BasicSet<T> {
30
+ constructor(...initialInterfaces: T[]) {
31
+ super(...initialInterfaces);
32
+ }
33
+
34
+ /**
35
+ * Closes all interfaces.
36
+ */
37
+ async close() {
38
+ for (const transportInterface of this) {
39
+ await transportInterface.close();
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Obtain an interface capable of routing an address.
45
+ */
46
+ interfaceFor(type: ChannelType, address?: string) {
47
+ return this.find(transportInterface => transportInterface.supports(type, address));
48
+ }
49
+
50
+ /**
51
+ * Obtain an interface of specific type.
52
+ */
53
+ hasInterfaceFor(type: ChannelType, address?: string) {
54
+ return this.interfaceFor(type, address) !== undefined;
55
+ }
56
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { ChannelType } from "./Channel.js";
8
+ import { TransportInterface } from "./TransportInterface.js";
9
+
10
+ /** @see {@link MatterSpecification.v12.Core} § 4.4.4 */
11
+ export const MAX_UDP_MESSAGE_SIZE = 1280 - 48; // 48 bytes IP and UDP header size for IPv6
12
+
13
+ export interface UdpChannelOptions {
14
+ listeningPort?: number;
15
+ type: "udp4" | "udp6";
16
+ listeningAddress?: string;
17
+ netInterface?: string;
18
+ membershipAddresses?: string[];
19
+ }
20
+
21
+ export interface UdpChannel {
22
+ maxPayloadSize: number;
23
+ onData(
24
+ listener: (netInterface: string, peerAddress: string, peerPort: number, data: Uint8Array) => void,
25
+ ): TransportInterface.Listener;
26
+ send(host: string, port: number, data: Uint8Array): Promise<void>;
27
+ close(): void;
28
+ get port(): number;
29
+ supports(type: ChannelType, address?: string): boolean;
30
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { Channel, ChannelType } from "./Channel.js";
8
+ import { NetInterface } from "./NetInterface.js";
9
+ import { Network, NetworkError } from "./Network.js";
10
+ import { ServerAddress } from "./ServerAddress.js";
11
+ import { TransportInterface } from "./TransportInterface.js";
12
+ import { UdpChannel } from "./UdpChannel.js";
13
+
14
+ export class UdpInterface implements NetInterface {
15
+ static async create(network: Network, type: "udp4" | "udp6", port?: number, host?: string, netInterface?: string) {
16
+ return new UdpInterface(
17
+ await network.createUdpChannel({ listeningPort: port, type, netInterface, listeningAddress: host }),
18
+ );
19
+ }
20
+
21
+ constructor(private readonly server: UdpChannel) {}
22
+
23
+ supports(type: ChannelType, address: string) {
24
+ return this.server.supports(type, address);
25
+ }
26
+
27
+ async openChannel(address: ServerAddress) {
28
+ if (address.type !== "udp") {
29
+ throw new NetworkError(`Unsupported address type ${address.type}`);
30
+ }
31
+ const { ip, port } = address;
32
+ return Promise.resolve(new UdpConnection(this.server, ip, port));
33
+ }
34
+
35
+ onData(listener: (channel: Channel<Uint8Array>, messageBytes: Uint8Array) => void): TransportInterface.Listener {
36
+ return this.server.onData((_netInterface, peerHost, peerPort, data) =>
37
+ listener(new UdpConnection(this.server, peerHost, peerPort), data),
38
+ );
39
+ }
40
+
41
+ get port() {
42
+ return this.server.port;
43
+ }
44
+
45
+ async close() {
46
+ this.server.close();
47
+ }
48
+ }
49
+
50
+ class UdpConnection implements Channel<Uint8Array> {
51
+ readonly isReliable = false;
52
+ readonly type = ChannelType.UDP;
53
+
54
+ constructor(
55
+ private readonly server: UdpChannel,
56
+ private readonly peerAddress: string,
57
+ private readonly peerPort: number,
58
+ ) {}
59
+
60
+ get maxPayloadSize() {
61
+ return this.server.maxPayloadSize;
62
+ }
63
+
64
+ send(data: Uint8Array) {
65
+ return this.server.send(this.peerAddress, this.peerPort, data);
66
+ }
67
+
68
+ get name() {
69
+ return `${this.type}://${this.peerAddress}:${this.peerPort}`;
70
+ }
71
+
72
+ async close() {
73
+ // UDP is connectionless, so nothing to do here
74
+ }
75
+ }
@@ -0,0 +1,138 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { Logger } from "../log/Logger.js";
8
+ import { Cache } from "../util/Cache.js";
9
+ import { isIPv4 } from "../util/Ip.js";
10
+ import { Network } from "./Network.js";
11
+ import { UdpChannel } from "./UdpChannel.js";
12
+
13
+ const logger = Logger.get("UdpMulticastServer");
14
+
15
+ export interface UdpMulticastServerOptions {
16
+ network: Network;
17
+ listeningPort: number;
18
+ broadcastAddressIpv6: string;
19
+ broadcastAddressIpv4?: string;
20
+ netInterface?: string;
21
+ }
22
+
23
+ export class UdpMulticastServer {
24
+ static async create({
25
+ netInterface,
26
+ broadcastAddressIpv4,
27
+ broadcastAddressIpv6,
28
+ listeningPort,
29
+ network,
30
+ }: UdpMulticastServerOptions) {
31
+ return new UdpMulticastServer(
32
+ network,
33
+ broadcastAddressIpv4,
34
+ broadcastAddressIpv6,
35
+ listeningPort,
36
+ broadcastAddressIpv4 === undefined
37
+ ? undefined
38
+ : await network.createUdpChannel({
39
+ type: "udp4",
40
+ netInterface,
41
+ listeningPort,
42
+ membershipAddresses: [broadcastAddressIpv4],
43
+ }),
44
+ await network.createUdpChannel({
45
+ type: "udp6",
46
+ netInterface,
47
+ listeningPort,
48
+ membershipAddresses: [broadcastAddressIpv6],
49
+ }),
50
+ netInterface,
51
+ );
52
+ }
53
+
54
+ private readonly broadcastChannels = new Cache<Promise<UdpChannel>>(
55
+ "UDP broadcast channel",
56
+ (netInterface, iPv4) => this.createBroadcastChannel(netInterface, iPv4),
57
+ 5 * 60 * 1000 /* 5mn */,
58
+ async (_netInterface, channel) => (await channel).close(),
59
+ );
60
+
61
+ private constructor(
62
+ private readonly network: Network,
63
+ private readonly broadcastAddressIpv4: string | undefined,
64
+ private readonly broadcastAddressIpv6: string,
65
+ private readonly broadcastPort: number,
66
+ private readonly serverIpv4: UdpChannel | undefined,
67
+ private readonly serverIpv6: UdpChannel,
68
+ private readonly netInterface: string | undefined,
69
+ ) {}
70
+
71
+ onMessage(listener: (message: Uint8Array, peerAddress: string, netInterface: string) => void) {
72
+ this.serverIpv4?.onData((netInterface, peerAddress, _port, message) =>
73
+ listener(message, peerAddress, netInterface),
74
+ );
75
+ this.serverIpv6.onData((netInterface, peerAddress, _port, message) =>
76
+ listener(message, peerAddress, netInterface),
77
+ );
78
+ }
79
+
80
+ async send(message: Uint8Array, netInterface?: string, uniCastTarget?: string) {
81
+ netInterface = netInterface ?? this.netInterface;
82
+
83
+ // When we know the network interface and the unicast target, we can send unicast
84
+ if (uniCastTarget !== undefined && netInterface !== undefined) {
85
+ try {
86
+ await (
87
+ await this.broadcastChannels.get(netInterface, isIPv4(uniCastTarget))
88
+ ).send(uniCastTarget, this.broadcastPort, message);
89
+ } catch (error) {
90
+ logger.info(`${netInterface} ${uniCastTarget}: ${(error as Error).message}`);
91
+ }
92
+ } else {
93
+ const netInterfaces =
94
+ netInterface !== undefined ? [{ name: netInterface }] : await this.network.getNetInterfaces();
95
+ await Promise.all(
96
+ netInterfaces.map(async ({ name: netInterface }) => {
97
+ const { ipV4, ipV6 } = (await this.network.getIpMac(netInterface)) ?? {
98
+ mac: "",
99
+ ipV4: [],
100
+ ipV6: [],
101
+ };
102
+ const ips = [...ipV4, ...ipV6];
103
+ await Promise.all(
104
+ ips.map(async ip => {
105
+ const iPv4 = ipV4.includes(ip);
106
+ const broadcastTarget = iPv4 ? this.broadcastAddressIpv4 : this.broadcastAddressIpv6;
107
+ if (broadcastTarget == undefined) {
108
+ // IPv4 but disabled, so just resolve
109
+ return;
110
+ }
111
+ try {
112
+ await (
113
+ await this.broadcastChannels.get(netInterface, iPv4)
114
+ ).send(broadcastTarget, this.broadcastPort, message);
115
+ } catch (error) {
116
+ logger.info(`${netInterface}: ${(error as Error).message}`);
117
+ }
118
+ }),
119
+ );
120
+ }),
121
+ );
122
+ }
123
+ }
124
+
125
+ private async createBroadcastChannel(netInterface: string, iPv4: string): Promise<UdpChannel> {
126
+ return await this.network.createUdpChannel({
127
+ type: iPv4 ? "udp4" : "udp6",
128
+ listeningPort: this.broadcastPort,
129
+ netInterface,
130
+ });
131
+ }
132
+
133
+ async close() {
134
+ this.serverIpv4?.close();
135
+ this.serverIpv6.close();
136
+ await this.broadcastChannels.close();
137
+ }
138
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export * from "./Channel.js";
8
+ export * from "./mock/MockNetwork.js";
9
+ export * from "./mock/MockUdpChannel.js";
10
+ export * from "./mock/NetworkSimulator.js";
11
+ export * from "./NetInterface.js";
12
+ export * from "./Network.js";
13
+ export * from "./ServerAddress.js";
14
+ export * from "./TransportInterface.js";
15
+ export * from "./UdpChannel.js";
16
+ export * from "./UdpInterface.js";
17
+ export * from "./UdpMulticastServer.js";
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { ChannelType } from "#net/Channel.js";
8
+ import { isIPv4 } from "../../util/Ip.js";
9
+ import { Network, NetworkInterface, NetworkInterfaceDetails } from "../Network.js";
10
+ import { UdpChannel, UdpChannelOptions } from "../UdpChannel.js";
11
+ import { MockUdpChannel } from "./MockUdpChannel.js";
12
+ import { NetworkSimulator } from "./NetworkSimulator.js";
13
+
14
+ export class MockNetwork extends Network {
15
+ private readonly ipV4: string[];
16
+ private readonly ipV6: string[];
17
+
18
+ constructor(
19
+ private readonly mac: string,
20
+ ips: string[],
21
+ ) {
22
+ super();
23
+ this.ipV4 = ips.filter(ip => isIPv4(ip));
24
+ this.ipV6 = ips.filter(ip => !isIPv4(ip));
25
+ }
26
+
27
+ getNetInterfaces(): NetworkInterface[] {
28
+ return [{ name: NetworkSimulator.INTERFACE_NAME }];
29
+ }
30
+
31
+ getIpMac(_netInterface: string): NetworkInterfaceDetails {
32
+ return { mac: this.mac, ipV4: this.ipV4, ipV6: this.ipV6 };
33
+ }
34
+
35
+ override createUdpChannel(options: UdpChannelOptions): Promise<UdpChannel> {
36
+ return MockUdpChannel.create(this, options);
37
+ }
38
+
39
+ supports(type: ChannelType, _address: string) {
40
+ return type === ChannelType.UDP;
41
+ }
42
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { ChannelType } from "#net/Channel.js";
8
+ import { NetworkError } from "../Network.js";
9
+ import { TransportInterface } from "../TransportInterface.js";
10
+ import { MAX_UDP_MESSAGE_SIZE, UdpChannel, UdpChannelOptions } from "../UdpChannel.js";
11
+ import { MockNetwork } from "./MockNetwork.js";
12
+ import { NetworkSimulator } from "./NetworkSimulator.js";
13
+
14
+ export class MockUdpChannel implements UdpChannel {
15
+ static async create(
16
+ network: MockNetwork,
17
+ { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions,
18
+ ) {
19
+ const { ipV4, ipV6 } = network.getIpMac(netInterface ?? NetworkSimulator.INTERFACE_NAME);
20
+ const localAddress = type === "udp4" ? ipV4[0] : (ipV6[0] ?? ipV4[0]);
21
+ if (localAddress === undefined) {
22
+ throw new NetworkError("No matching IP on the specified interface");
23
+ }
24
+ return new MockUdpChannel(type, localAddress, listeningAddress, listeningPort);
25
+ }
26
+
27
+ private readonly netListeners = new Array<TransportInterface.Listener>();
28
+ private readonly simulatedNetwork = NetworkSimulator.get();
29
+ private readonly listeningPort: number;
30
+ readonly maxPayloadSize = MAX_UDP_MESSAGE_SIZE;
31
+
32
+ constructor(
33
+ readonly type: "udp4" | "udp6",
34
+ private readonly localAddress: string,
35
+ private readonly listeningAddress: string | undefined,
36
+ listeningPort?: number,
37
+ ) {
38
+ this.listeningPort = listeningPort ?? 1024 + Math.floor(Math.random() * 64511); // Random port 1024-65535
39
+ }
40
+
41
+ onData(listener: (netInterface: string, peerAddress: string, peerPort: number, data: Uint8Array) => void) {
42
+ const netListener = this.simulatedNetwork.onUdpData(this.listeningAddress, this.listeningPort, listener);
43
+ this.netListeners.push(netListener);
44
+ return netListener;
45
+ }
46
+
47
+ async send(host: string, port: number, data: Uint8Array) {
48
+ this.simulatedNetwork.sendUdp(this.localAddress, this.listeningPort, host, port, data);
49
+ }
50
+
51
+ async close() {
52
+ for (const netListener of this.netListeners) {
53
+ await netListener.close();
54
+ }
55
+ this.netListeners.length = 0;
56
+ }
57
+
58
+ async [Symbol.asyncDispose]() {
59
+ return this.close();
60
+ }
61
+
62
+ get port() {
63
+ return this.listeningPort;
64
+ }
65
+
66
+ supports(type: ChannelType, _address: string) {
67
+ return type === ChannelType.UDP;
68
+ }
69
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { Logger } from "../../log/Logger.js";
8
+ import { singleton } from "../../util/Singleton.js";
9
+ import { TransportInterface } from "../TransportInterface.js";
10
+
11
+ const logger = Logger.get("SimulatedNetwork");
12
+
13
+ export class NetworkSimulator {
14
+ static get = singleton(() => new NetworkSimulator());
15
+
16
+ private readonly listenersMap = new Map<string, Array<NetworkSimulator.Listener>>();
17
+
18
+ onUdpData(
19
+ host: string | undefined,
20
+ port: number,
21
+ listener: NetworkSimulator.Listener,
22
+ ): TransportInterface.Listener {
23
+ const ipPort = `${host ?? "*"}:${port}`;
24
+ let listeners = this.listenersMap.get(ipPort);
25
+ if (listeners === undefined) {
26
+ listeners = new Array<NetworkSimulator.Listener>();
27
+ this.listenersMap.set(ipPort, listeners);
28
+ }
29
+ listeners.push(listener);
30
+ return {
31
+ close: async () => this.offUdpData(host, port, listener),
32
+ };
33
+ }
34
+
35
+ private offUdpData(host: string | undefined, port: number, listenerToRemove: NetworkSimulator.Listener) {
36
+ const ipPort = `${host ?? "*"}:${port}`;
37
+ const listeners = this.listenersMap.get(ipPort);
38
+ if (listeners === undefined) return;
39
+ const newListeners = listeners.filter(listener => listener !== listenerToRemove);
40
+ if (newListeners.length === 0) {
41
+ this.listenersMap.delete(ipPort);
42
+ return;
43
+ }
44
+ this.listenersMap.set(ipPort, newListeners);
45
+ }
46
+
47
+ sendUdp(localAddress: string, localPort: number, remoteAddress: string, remotePort: number, data: Uint8Array) {
48
+ [`${remoteAddress}:${remotePort}`, `*:${remotePort}`].forEach(ipPort =>
49
+ this.listenersMap.get(ipPort)?.forEach(listener => {
50
+ try {
51
+ listener(NetworkSimulator.INTERFACE_NAME, localAddress, localPort, data);
52
+ } catch (error) {
53
+ logger.error(error);
54
+ }
55
+ }),
56
+ );
57
+ }
58
+ }
59
+
60
+ export namespace NetworkSimulator {
61
+ export type Listener = (netInterface: string, peerAddress: string, peerPort: number, data: Uint8Array) => void;
62
+ export const INTERFACE_NAME = "fakeInterface";
63
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ // See https://github.com/tc39/proposal-explicit-resource-management
8
+ //
9
+ // We downlevel support for "using foo = ..." using esbuild but downleveling does not include a polyfill so we patch in
10
+ // standin symbols here
11
+
12
+ if (typeof Symbol.dispose !== "symbol") {
13
+ (Symbol as { dispose: symbol }).dispose = Symbol("dispose");
14
+ if (typeof Symbol.dispose !== "symbol") {
15
+ throw new Error("Symbol.dispose is undefined and polyfill installation failed");
16
+ }
17
+ }
18
+
19
+ if (typeof Symbol.asyncDispose !== "symbol") {
20
+ (Symbol as { asyncDispose: symbol }).asyncDispose = Symbol("asyncDispose");
21
+ if (typeof Symbol.asyncDispose !== "symbol") {
22
+ throw new Error("Symbol.asyncDispose is undefined and polyfill installation failed");
23
+ }
24
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import "./disposable.js";
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MatterError } from "../MatterError.js";
7
+ import { MaybePromise } from "../util/Promises.js";
8
+ import { SupportedStorageTypes } from "./StringifyTools.js";
9
+
10
+ export class StorageError extends MatterError {}
11
+
12
+ /**
13
+ * Matter.js uses this key/value API to manage persistent state.
14
+ */
15
+ export interface Storage {
16
+ readonly initialized: boolean;
17
+ initialize(): MaybePromise<void>;
18
+ close(): MaybePromise<void>;
19
+ get(contexts: string[], key: string): MaybePromise<SupportedStorageTypes | undefined>;
20
+ set(contexts: string[], values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
21
+ set(contexts: string[], key: string, value: SupportedStorageTypes): MaybePromise<void>;
22
+ delete(contexts: string[], key: string): MaybePromise<void>;
23
+ keys(contexts: string[]): MaybePromise<string[]>;
24
+ values(contexts: string[]): MaybePromise<Record<string, SupportedStorageTypes>>;
25
+ contexts(contexts: string[]): MaybePromise<string[]>;
26
+ clearAll(contexts: string[]): MaybePromise<void>;
27
+ }
28
+
29
+ // This extra class is needed because of https://github.com/microsoft/TypeScript/issues/57905 in order
30
+ // to have the generics typing support on the "get" method and can be removed when the TS issue is fixed
31
+ // or we remove the legacy API.
32
+ export abstract class MaybeAsyncStorage implements Storage {
33
+ abstract initialized: boolean;
34
+ abstract initialize(): MaybePromise<void>;
35
+ abstract close(): MaybePromise<void>;
36
+ abstract get<T extends SupportedStorageTypes>(contexts: string[], key: string): MaybePromise<T | undefined>;
37
+ abstract set(contexts: string[], values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
38
+ abstract set(contexts: string[], key: string, value: SupportedStorageTypes): MaybePromise<void>;
39
+ abstract delete(contexts: string[], key: string): MaybePromise<void>;
40
+ abstract keys(contexts: string[]): MaybePromise<string[]>;
41
+ abstract values(contexts: string[]): MaybePromise<Record<string, SupportedStorageTypes>>;
42
+ abstract contexts(contexts: string[]): MaybePromise<string[]>;
43
+ abstract clearAll(contexts: string[]): MaybePromise<void>;
44
+ }
45
+
46
+ // This can be removed once we remove the legacy API
47
+ export abstract class SyncStorage implements Storage {
48
+ abstract initialized: boolean;
49
+ abstract initialize(): MaybePromise<void>;
50
+ abstract close(): MaybePromise<void>;
51
+ abstract get<T extends SupportedStorageTypes>(contexts: string[], key: string): T | undefined;
52
+ abstract set(contexts: string[], values: Record<string, SupportedStorageTypes>): void;
53
+ abstract set(contexts: string[], key: string, value: SupportedStorageTypes): void;
54
+ abstract delete(contexts: string[], key: string): void;
55
+ abstract keys(contexts: string[]): string[];
56
+ abstract values(contexts: string[]): Record<string, SupportedStorageTypes>;
57
+ abstract contexts(contexts: string[]): string[];
58
+ abstract clearAll(contexts: string[]): void;
59
+ }
60
+
61
+ export type StorageOperationResult<S extends Storage, T = void> = S extends SyncStorage ? T : Promise<T>;