@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,131 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { StorageError, SyncStorage } from "./Storage.js";
8
+ import { SupportedStorageTypes } from "./StringifyTools.js";
9
+
10
+ export class StorageBackendMemory extends SyncStorage {
11
+ protected isInitialized = false;
12
+
13
+ constructor(protected store: any = {}) {
14
+ super();
15
+ }
16
+
17
+ get initialized() {
18
+ return this.isInitialized;
19
+ }
20
+
21
+ static async create(store: any = {}) {
22
+ const storage = new StorageBackendMemory(store);
23
+ storage.initialize();
24
+ return storage;
25
+ }
26
+
27
+ private createContextKey(contexts: string[]) {
28
+ const key = contexts.join(".");
29
+ if (!key.length || key.includes("..") || key.startsWith(".") || key.endsWith("."))
30
+ throw new StorageError("Context must not be an empty string.");
31
+ return key;
32
+ }
33
+
34
+ initialize() {
35
+ if (this.initialized) throw new StorageError("Storage already initialized!");
36
+ this.isInitialized = true;
37
+ // nothing else to do
38
+ }
39
+
40
+ close() {
41
+ this.isInitialized = false;
42
+ // nothing to do
43
+ }
44
+
45
+ clear() {
46
+ this.store = {};
47
+ }
48
+
49
+ get<T extends SupportedStorageTypes>(contexts: string[], key: string): T | undefined {
50
+ if (!this.initialized) throw new StorageError("Storage is not initialized");
51
+ if (!contexts.length || !key.length) throw new StorageError("Context and key must not be empty.");
52
+ return this.store[this.createContextKey(contexts)]?.[key];
53
+ }
54
+
55
+ #setKey(contexts: string[], key: string, value: SupportedStorageTypes) {
56
+ if (!contexts.length || !key.length) throw new StorageError("Context and key must not be empty.");
57
+ const contextKey = this.createContextKey(contexts);
58
+ if (this.store[contextKey] === undefined) {
59
+ this.store[contextKey] = {};
60
+ }
61
+ this.store[contextKey][key] = value;
62
+ }
63
+
64
+ set(
65
+ contexts: string[],
66
+ keyOrValues: string | Record<string, SupportedStorageTypes>,
67
+ value?: SupportedStorageTypes,
68
+ ) {
69
+ if (!this.initialized) throw new StorageError("Storage is not initialized");
70
+ if (typeof keyOrValues === "string") {
71
+ this.#setKey(contexts, keyOrValues, value);
72
+ } else {
73
+ Object.entries(keyOrValues).forEach(([key, value]) => {
74
+ this.#setKey(contexts, key, value);
75
+ });
76
+ }
77
+ }
78
+
79
+ delete(contexts: string[], key: string) {
80
+ if (!this.initialized) throw new StorageError("Storage is not initialized");
81
+ if (!contexts.length || !key.length) throw new StorageError("Context and key must not be empty.");
82
+ delete this.store[this.createContextKey(contexts)]?.[key];
83
+ }
84
+
85
+ keys(contexts: string[]) {
86
+ if (!this.initialized) throw new StorageError("Storage is not initialized");
87
+ if (!contexts.length) throw new StorageError("Context must not be empty!");
88
+ return Object.keys(this.store[this.createContextKey(contexts)] ?? {});
89
+ }
90
+
91
+ values(contexts: string[]) {
92
+ // Initialize and context checks are done by keys method
93
+ const values = {} as Record<string, SupportedStorageTypes>;
94
+ for (const key of this.keys(contexts)) {
95
+ values[key] = this.get(contexts, key);
96
+ }
97
+ return values;
98
+ }
99
+
100
+ contexts(contexts: string[]) {
101
+ if (!this.initialized) throw new StorageError("Storage is not initialized");
102
+ const contextKey = contexts.length ? this.createContextKey(contexts) : "";
103
+ const startContextKey = contextKey.length ? `${contextKey}.` : "";
104
+ const foundContexts = new Array<string>();
105
+ Object.keys(this.store).forEach(key => {
106
+ if (key.startsWith(startContextKey)) {
107
+ const subKeys = key.substring(startContextKey.length).split(".");
108
+ if (subKeys.length < 1) return; // should never happen
109
+ const context = subKeys[0];
110
+ if (!foundContexts.includes(context)) {
111
+ foundContexts.push(context);
112
+ }
113
+ }
114
+ });
115
+ return foundContexts;
116
+ }
117
+
118
+ clearAll(contexts: string[]) {
119
+ if (!this.initialized) throw new StorageError("Storage is not initialized");
120
+ const contextKey = this.createContextKey(contexts);
121
+ if (contextKey.length) {
122
+ delete this.store[contextKey];
123
+ }
124
+ const startContextKey = contextKey.length ? `${contextKey}.` : "";
125
+ Object.keys(this.store).forEach(key => {
126
+ if (key.startsWith(startContextKey)) {
127
+ delete this.store[key];
128
+ }
129
+ });
130
+ }
131
+ }
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { MaybePromise } from "../util/Promises.js";
8
+ import { Storage, StorageError, StorageOperationResult } from "./Storage.js";
9
+ import { SupportedStorageTypes } from "./StringifyTools.js";
10
+
11
+ export class StorageContext<S extends Storage = any> {
12
+ constructor(
13
+ private readonly storage: S,
14
+ readonly thisContexts: string[],
15
+ ) {}
16
+
17
+ get<T extends SupportedStorageTypes>(key: string, defaultValue?: T): StorageOperationResult<S, T> {
18
+ const value = this.storage.get(this.thisContexts, key);
19
+ if (value !== undefined) {
20
+ if (MaybePromise.is(value)) {
21
+ return value.then(v => {
22
+ if (v !== undefined) return v;
23
+ if (defaultValue === undefined) {
24
+ throw new StorageError(
25
+ `No value found for key ${key} in context ${this.thisContexts} and no default value specified!`,
26
+ );
27
+ }
28
+ return defaultValue;
29
+ }) as StorageOperationResult<S, T>;
30
+ }
31
+ return value as StorageOperationResult<S, T>;
32
+ }
33
+ if (defaultValue === undefined) {
34
+ throw new StorageError(
35
+ `No value found for key ${key} in context ${this.thisContexts} and no default value specified!`,
36
+ );
37
+ }
38
+ return defaultValue as StorageOperationResult<S, T>;
39
+ }
40
+
41
+ has(key: string) {
42
+ const value = this.storage.get(this.thisContexts, key);
43
+ if (value !== undefined) {
44
+ if (MaybePromise.is(value)) {
45
+ return value.then(v => v !== undefined) as StorageOperationResult<S, boolean>;
46
+ }
47
+ return true as StorageOperationResult<S, boolean>;
48
+ }
49
+ return false as StorageOperationResult<S, boolean>;
50
+ }
51
+
52
+ set(key: string, value: SupportedStorageTypes): StorageOperationResult<S>;
53
+ set(values: Record<string, SupportedStorageTypes>): StorageOperationResult<S>;
54
+ set(keyOrValues: string | Record<string, SupportedStorageTypes>, value?: SupportedStorageTypes) {
55
+ if (typeof keyOrValues === "string") {
56
+ return this.storage.set(this.thisContexts, keyOrValues, value) as StorageOperationResult<S>;
57
+ }
58
+ return this.storage.set(this.thisContexts, keyOrValues) as StorageOperationResult<S>;
59
+ }
60
+
61
+ delete(key: string) {
62
+ return this.storage.delete(this.thisContexts, key) as StorageOperationResult<S>;
63
+ }
64
+
65
+ createContext(context: string): StorageContext<S> {
66
+ if (context.length === 0) throw new StorageError("Context must not be an empty string");
67
+ if (context.includes(".")) throw new StorageError("Context must not contain dots!");
68
+ return new StorageContext(this.storage, [...this.thisContexts, context]);
69
+ }
70
+
71
+ keys() {
72
+ return this.storage.keys(this.thisContexts) as StorageOperationResult<S, string[]>;
73
+ }
74
+
75
+ values() {
76
+ return this.storage.values(this.thisContexts) as StorageOperationResult<
77
+ S,
78
+ Record<string, SupportedStorageTypes>
79
+ >;
80
+ }
81
+
82
+ contexts() {
83
+ return this.storage.contexts(this.thisContexts) as StorageOperationResult<S, string[]>;
84
+ }
85
+
86
+ /** Clears all keys in this context */
87
+ clear() {
88
+ const keys = this.keys();
89
+ if (MaybePromise.is(keys)) {
90
+ return keys.then(keys => {
91
+ return Promise.all(keys.map(key => this.delete(key))).then(() => Promise.resolve());
92
+ }) as StorageOperationResult<S>;
93
+ }
94
+ const promises = new Array<PromiseLike<void>>();
95
+ keys.forEach(key => {
96
+ const promise = this.delete(key);
97
+ if (promise !== undefined && MaybePromise.is(promise)) {
98
+ promises.push(promise);
99
+ }
100
+ });
101
+ if (promises.length > 0) {
102
+ return Promise.all(promises).then(() => Promise.resolve()) as StorageOperationResult<S>;
103
+ }
104
+ return undefined as StorageOperationResult<S>;
105
+ }
106
+
107
+ /** Clears all keys in this context and all created sub-contexts. */
108
+ clearAll() {
109
+ return this.storage.clearAll(this.thisContexts) as StorageOperationResult<S>;
110
+ }
111
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { MaybePromise } from "../util/Promises.js";
8
+ import { Storage, StorageError } from "./Storage.js";
9
+ import { StorageContext } from "./StorageContext.js";
10
+
11
+ export class StorageManager<S extends Storage = any> {
12
+ private initialized = false;
13
+
14
+ constructor(private storage: S) {}
15
+
16
+ initialize(): MaybePromise<void> {
17
+ if (!this.storage.initialized) {
18
+ const init = this.storage.initialize();
19
+ if (MaybePromise.is(init)) {
20
+ return init.then(() => {
21
+ this.initialized = true;
22
+ });
23
+ }
24
+ }
25
+ this.initialized = true;
26
+ }
27
+
28
+ close() {
29
+ this.initialized = false;
30
+ return this.storage.close();
31
+ }
32
+
33
+ createContext(context: string): StorageContext<S> {
34
+ if (!this.initialized) throw new StorageError("The storage needs to be initialized first!");
35
+ if (!context.length) throw new StorageError("Context must not be an empty string!");
36
+ if (context.includes(".")) throw new StorageError("Context must not contain dots!");
37
+ return new StorageContext(this.storage, [context]);
38
+ }
39
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { NoProviderError } from "../MatterError.js";
8
+ import { Environment } from "../environment/Environment.js";
9
+ import { Environmental } from "../environment/Environmental.js";
10
+ import { Diagnostic } from "../log/Diagnostic.js";
11
+ import { Storage } from "./Storage.js";
12
+ import { StorageManager } from "./StorageManager.js";
13
+
14
+ /**
15
+ * Service adapter for the Matter.js storage API.
16
+ */
17
+ export class StorageService {
18
+ #factory?: (namespace: string) => Storage;
19
+ #location?: string;
20
+
21
+ constructor(environment: Environment, factory?: (namespace: string) => Storage) {
22
+ environment.set(StorageService, this);
23
+ this.#factory = factory;
24
+ }
25
+
26
+ static [Environmental.create](environment: Environment) {
27
+ return new this(environment);
28
+ }
29
+
30
+ /**
31
+ * Open storage. The storage is initialized but the caller must take ownership.
32
+ *
33
+ * @param namespace a unique namespace identifier such as a root node ID
34
+ */
35
+ async open(namespace: string) {
36
+ if (this.#factory === undefined) {
37
+ throw new NoProviderError("Storage is unavailable because no platform implementation is installed");
38
+ }
39
+
40
+ const storage = this.#factory(namespace);
41
+ const manager = new StorageManager(storage);
42
+ await manager.initialize();
43
+ return manager;
44
+ }
45
+
46
+ /**
47
+ * Install a factory for opening storage. Without such a factory storage is unavailable.
48
+ */
49
+ set factory(factory: (namespace: string) => Storage) {
50
+ this.#factory = factory;
51
+ }
52
+
53
+ /**
54
+ * The storage location. Only used for diagnostic purposes.
55
+ */
56
+ get location() {
57
+ return this.#location;
58
+ }
59
+
60
+ set location(location: string | undefined) {
61
+ this.#location = location;
62
+ }
63
+
64
+ [Diagnostic.value]() {
65
+ return [
66
+ "Persistence",
67
+ Diagnostic.dict({
68
+ location: location ?? "(unknown)",
69
+ available: !!this.#factory,
70
+ }),
71
+ ];
72
+ }
73
+ }
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { UnexpectedDataError } from "../MatterError.js";
8
+ import { Bytes } from "../util/Bytes.js";
9
+ import { isObject } from "../util/Type.js";
10
+
11
+ /** Supported base types to stringify the data for the storage that can be used as keys and also values. */
12
+ type SupportedStorageBaseTypes = string | number | boolean | bigint | Uint8Array;
13
+
14
+ /** Supported combined types to stringify the data for the storage that can be used as values. */
15
+ type SupportedComplexStorageTypes =
16
+ | Array<SupportedStorageBaseTypes | SupportedComplexStorageTypes> // Arrays
17
+ | { [key: string]: SupportedStorageBaseTypes | SupportedComplexStorageTypes | null | undefined } // Objects
18
+ | Array<[SupportedStorageBaseTypes, SupportedStorageBaseTypes | SupportedComplexStorageTypes | null | undefined]> // Map style arrays
19
+ | Map<SupportedStorageBaseTypes, SupportedStorageBaseTypes | SupportedComplexStorageTypes>
20
+ | null
21
+ | undefined; // Maps
22
+
23
+ export type SupportedStorageTypes = SupportedStorageBaseTypes | SupportedComplexStorageTypes;
24
+
25
+ /** Special Magic key to identify special object types with custom encoding in JSON. */
26
+ const JSON_SPECIAL_KEY_TYPE = "__object__";
27
+
28
+ /** Special Magic key to identify the value of the custom encoded objects in JSON. */
29
+ const JSON_SPECIAL_KEY_VALUE = "__value__";
30
+
31
+ export function toJson(object: SupportedStorageTypes, spaces?: number): string {
32
+ return JSON.stringify(
33
+ object,
34
+ (_key, value) => {
35
+ if (value === undefined) {
36
+ return `{"${JSON_SPECIAL_KEY_TYPE}":"Undefined"}`;
37
+ }
38
+ if (typeof value === "bigint") {
39
+ return `{"${JSON_SPECIAL_KEY_TYPE}":"BigInt","${JSON_SPECIAL_KEY_VALUE}":"${value.toString()}"}`;
40
+ }
41
+ if (value instanceof Uint8Array) {
42
+ return `{"${JSON_SPECIAL_KEY_TYPE}":"Uint8Array","${JSON_SPECIAL_KEY_VALUE}":"${Bytes.toHex(value)}"}`;
43
+ }
44
+ //Node.js can sometimes pass in a native Buffer object in place of a Uint8Array, of which it is a subclass of, the Buffer class implements its own toJSON method which breaks our serialization.
45
+ if (isObject(value) && value.type === "Buffer" && Array.isArray(value.data)) {
46
+ return `{"${JSON_SPECIAL_KEY_TYPE}":"Uint8Array","${JSON_SPECIAL_KEY_VALUE}":"${Bytes.toHex(
47
+ Uint8Array.from(value.data),
48
+ )}"}`;
49
+ }
50
+ if (value instanceof Map) {
51
+ return `{"${JSON_SPECIAL_KEY_TYPE}":"Map","${JSON_SPECIAL_KEY_VALUE}":${JSON.stringify(
52
+ toJson(Array.from(value.entries())),
53
+ )}}`;
54
+ }
55
+ return value;
56
+ },
57
+ spaces,
58
+ );
59
+ }
60
+
61
+ export function fromJson(json: string): SupportedStorageTypes {
62
+ return JSON.parse(json, (_key, value) => {
63
+ if (typeof value === "string" && value.startsWith(`{"${JSON_SPECIAL_KEY_TYPE}":"`) && value.endsWith("}")) {
64
+ const data = JSON.parse(value);
65
+ const object = data[JSON_SPECIAL_KEY_TYPE];
66
+ switch (object) {
67
+ case "Undefined":
68
+ return undefined;
69
+ case "BigInt":
70
+ return BigInt(data[JSON_SPECIAL_KEY_VALUE]);
71
+ case "Uint8Array":
72
+ return Bytes.fromHex(data[JSON_SPECIAL_KEY_VALUE]);
73
+ case "Map":
74
+ return new Map(
75
+ fromJson(data[JSON_SPECIAL_KEY_VALUE]) as [
76
+ SupportedStorageBaseTypes,
77
+ SupportedStorageBaseTypes,
78
+ ][],
79
+ );
80
+
81
+ // TODO Remove in the future, leave here for now for backward compatibility?
82
+ case "AttributeId":
83
+ case "CaseAuthenticatedTag":
84
+ case "ClusterId":
85
+ case "CommandId":
86
+ case "DataVersion":
87
+ case "DeviceTypeId":
88
+ case "EndpointNumber":
89
+ case "EntryIndex":
90
+ case "EventId":
91
+ case "FabricIndex":
92
+ case "FieldId":
93
+ case "GroupId":
94
+ case "VendorId":
95
+ return data[JSON_SPECIAL_KEY_VALUE];
96
+ case "EventNumber":
97
+ case "FabricId":
98
+ case "NodeId":
99
+ return BigInt(data[JSON_SPECIAL_KEY_VALUE]);
100
+
101
+ default:
102
+ throw new UnexpectedDataError(`Unknown object type: ${object}`);
103
+ }
104
+ }
105
+ return value;
106
+ });
107
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export * from "./Storage.js";
8
+ export * from "./StorageBackendMemory.js";
9
+ export * from "./StorageContext.js";
10
+ export * from "./StorageManager.js";
11
+ export * from "./StorageService.js";
12
+ export * from "./StringifyTools.js";
@@ -0,0 +1,179 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { ImplementationError } from "../MatterError.js";
8
+ import { Diagnostic } from "../log/Diagnostic.js";
9
+ import { DiagnosticSource } from "../log/DiagnosticSource.js";
10
+
11
+ const registry = new Set<Timer>();
12
+
13
+ /**
14
+ * Timer and date/time management interface.
15
+ *
16
+ * You may replace this platform abstraction but we provide an implementation compatible with any standard JS
17
+ * environment.
18
+ */
19
+ export class Time {
20
+ static get = () => time;
21
+
22
+ now() {
23
+ return new Date();
24
+ }
25
+ static readonly now = (): Date => Time.get().now();
26
+
27
+ nowMs() {
28
+ return this.now().getTime();
29
+ }
30
+ static readonly nowMs = (): number => Time.get().nowMs();
31
+
32
+ /** Returns a timer that will call callback after durationMs has passed. */
33
+ getTimer(name: string, durationMs: number, callback: Timer.Callback): Timer {
34
+ return new StandardTimer(name, durationMs, callback, false);
35
+ }
36
+ static readonly getTimer = (name: string, durationMs: number, callback: Timer.Callback): Timer =>
37
+ Time.get().getTimer(name, durationMs, callback);
38
+
39
+ /** Returns a timer that will periodically call callback at intervalMs intervals. */
40
+ getPeriodicTimer(name: string, intervalMs: number, callback: Timer.Callback): Timer {
41
+ return new StandardTimer(name, intervalMs, callback, true);
42
+ }
43
+ static readonly getPeriodicTimer = (name: string, intervalMs: number, callback: Timer.Callback): Timer =>
44
+ Time.get().getPeriodicTimer(name, intervalMs, callback);
45
+
46
+ static readonly sleep = async (name: string, durationMs: number): Promise<void> =>
47
+ new Promise(resolve => Time.get().getTimer(name, durationMs, resolve).start());
48
+
49
+ static register(timer: Timer) {
50
+ timer.elapsed = Diagnostic.elapsed();
51
+ registry.add(timer);
52
+ }
53
+
54
+ static unregister(timer: Timer) {
55
+ registry.delete(timer);
56
+ }
57
+ }
58
+
59
+ const time = new Time();
60
+
61
+ export interface Timer {
62
+ /** Name (diagnostics) */
63
+ name: string;
64
+
65
+ /** Set to true to indicate the timer should not prevent program exit */
66
+ utility: boolean;
67
+
68
+ /** System ID (diagnostics) */
69
+ systemId: unknown;
70
+
71
+ /** Interval (diagnostics) */
72
+ intervalMs: number;
73
+
74
+ /** Is the timer periodic? (diagnostics) */
75
+ isPeriodic: boolean;
76
+
77
+ /** Amount of time interval has been active (diagnostics) */
78
+ elapsed?: Diagnostic.Elapsed;
79
+
80
+ /** Is true if this timer is running. */
81
+ isRunning: boolean;
82
+
83
+ /** Starts this timer, chainable. */
84
+ start(): Timer;
85
+
86
+ /** Stops this timer, chainable. */
87
+ stop(): Timer;
88
+ }
89
+
90
+ export namespace Timer {
91
+ export type Callback = () => any;
92
+ }
93
+
94
+ export class StandardTimer implements Timer {
95
+ #timerId: unknown;
96
+ #utility = false;
97
+ isRunning = false;
98
+
99
+ get systemId() {
100
+ return Number(this.#timerId);
101
+ }
102
+
103
+ constructor(
104
+ readonly name: string,
105
+ readonly intervalMs: number,
106
+ private readonly callback: Timer.Callback,
107
+ readonly isPeriodic: boolean,
108
+ ) {
109
+ if (intervalMs < 0 || intervalMs > 2147483647) {
110
+ throw new ImplementationError(
111
+ `Invalid intervalMs: ${intervalMs}. The value must be between 0 and 32-bit maximum value (2147483647)`,
112
+ );
113
+ }
114
+ }
115
+
116
+ get utility() {
117
+ return this.#utility;
118
+ }
119
+
120
+ set utility(utility: boolean) {
121
+ if (utility === this.#utility) {
122
+ return;
123
+ }
124
+
125
+ // Support node.js-style environments to control whether the timer blocks process exit
126
+ if (this.#timerId != undefined) {
127
+ const timerId = this.#timerId as { ref?: () => void; unref?: () => void };
128
+ if (utility) {
129
+ timerId.unref?.();
130
+ } else {
131
+ timerId.ref?.();
132
+ }
133
+ }
134
+
135
+ this.#utility = utility;
136
+ }
137
+
138
+ start() {
139
+ if (this.isRunning) this.stop();
140
+ Time.register(this);
141
+ this.isRunning = true;
142
+ this.#timerId = (this.isPeriodic ? setInterval : setTimeout)(() => {
143
+ if (!this.isPeriodic) {
144
+ Time.unregister(this);
145
+ this.isRunning = false;
146
+ }
147
+ this.callback();
148
+ }, this.intervalMs);
149
+ return this;
150
+ }
151
+
152
+ stop() {
153
+ (this.isPeriodic ? clearInterval : clearTimeout)(this.#timerId as ReturnType<typeof setTimeout>);
154
+ Time.unregister(this);
155
+ this.isRunning = false;
156
+ return this;
157
+ }
158
+ }
159
+
160
+ // Hook for testing frameworks
161
+ if (typeof MatterHooks !== "undefined") {
162
+ MatterHooks.timeSetup?.(Time);
163
+ }
164
+
165
+ DiagnosticSource.add({
166
+ get [Diagnostic.value]() {
167
+ return Diagnostic.node("⏱", "Timers", {
168
+ children: [...registry].map(timer => [
169
+ timer.name,
170
+ Diagnostic.dict({
171
+ periodic: timer.isPeriodic,
172
+ interval: Diagnostic.interval(timer.intervalMs),
173
+ system: timer.systemId,
174
+ elapsed: timer.elapsed,
175
+ }),
176
+ ]),
177
+ });
178
+ },
179
+ });
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export * from "./Time.js";
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "../../tools/tsc/tsconfig.lib.json",
3
+ "compilerOptions": {
4
+ "types": [
5
+ "@matter/tools",
6
+ "globals"
7
+ ]
8
+ },
9
+ "references": []
10
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Array types
3
+ *
4
+ * @license
5
+ * Copyright 2022-2024 Matter.js Authors
6
+ * SPDX-License-Identifier: Apache-2.0
7
+ */
8
+
9
+ export type AtLeastOne<T> = ArrayMinLength<T, 1>;
10
+
11
+ type BuildArrayMinLength<T, N extends number, Current extends T[]> = Current["length"] extends N
12
+ ? [...Current, ...T[]]
13
+ : BuildArrayMinLength<T, N, [...Current, T]>;
14
+
15
+ export type ArrayMinLength<T, N extends number> = BuildArrayMinLength<T, N, []>;