@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.
- package/LICENSE +201 -0
- package/README.md +3 -0
- package/dist/cjs/MatterError.d.ts +95 -0
- package/dist/cjs/MatterError.d.ts.map +1 -0
- package/dist/cjs/MatterError.js +177 -0
- package/dist/cjs/MatterError.js.map +6 -0
- package/dist/cjs/codec/Base64Codec.d.ts +23 -0
- package/dist/cjs/codec/Base64Codec.d.ts.map +1 -0
- package/dist/cjs/codec/Base64Codec.js +134 -0
- package/dist/cjs/codec/Base64Codec.js.map +6 -0
- package/dist/cjs/codec/DerCodec.d.ts +83 -0
- package/dist/cjs/codec/DerCodec.d.ts.map +1 -0
- package/dist/cjs/codec/DerCodec.js +286 -0
- package/dist/cjs/codec/DerCodec.js.map +6 -0
- package/dist/cjs/codec/DerTypes.d.ts +73 -0
- package/dist/cjs/codec/DerTypes.d.ts.map +1 -0
- package/dist/cjs/codec/DerTypes.js +132 -0
- package/dist/cjs/codec/DerTypes.js.map +6 -0
- package/dist/cjs/codec/DnsCodec.d.ts +86 -0
- package/dist/cjs/codec/DnsCodec.d.ts.map +1 -0
- package/dist/cjs/codec/DnsCodec.js +355 -0
- package/dist/cjs/codec/DnsCodec.js.map +6 -0
- package/dist/cjs/codec/index.d.ts +10 -0
- package/dist/cjs/codec/index.d.ts.map +1 -0
- package/dist/cjs/codec/index.js +27 -0
- package/dist/cjs/codec/index.js.map +6 -0
- package/dist/cjs/crypto/Crypto.d.ts +169 -0
- package/dist/cjs/crypto/Crypto.d.ts.map +1 -0
- package/dist/cjs/crypto/Crypto.js +103 -0
- package/dist/cjs/crypto/Crypto.js.map +6 -0
- package/dist/cjs/crypto/CryptoConstants.d.ts +19 -0
- package/dist/cjs/crypto/CryptoConstants.d.ts.map +1 -0
- package/dist/cjs/crypto/CryptoConstants.js +48 -0
- package/dist/cjs/crypto/CryptoConstants.js.map +6 -0
- package/dist/cjs/crypto/Key.d.ts +171 -0
- package/dist/cjs/crypto/Key.d.ts.map +1 -0
- package/dist/cjs/crypto/Key.js +356 -0
- package/dist/cjs/crypto/Key.js.map +6 -0
- package/dist/cjs/crypto/Spake2p.d.ts +40 -0
- package/dist/cjs/crypto/Spake2p.d.ts.map +1 -0
- package/dist/cjs/crypto/Spake2p.js +128 -0
- package/dist/cjs/crypto/Spake2p.js.map +6 -0
- package/dist/cjs/crypto/index.d.ts +10 -0
- package/dist/cjs/crypto/index.d.ts.map +1 -0
- package/dist/cjs/crypto/index.js +27 -0
- package/dist/cjs/crypto/index.js.map +6 -0
- package/dist/cjs/environment/Environment.d.ts +96 -0
- package/dist/cjs/environment/Environment.d.ts.map +1 -0
- package/dist/cjs/environment/Environment.js +199 -0
- package/dist/cjs/environment/Environment.js.map +6 -0
- package/dist/cjs/environment/Environmental.d.ts +52 -0
- package/dist/cjs/environment/Environmental.d.ts.map +1 -0
- package/dist/cjs/environment/Environmental.js +33 -0
- package/dist/cjs/environment/Environmental.js.map +6 -0
- package/dist/cjs/environment/RuntimeService.d.ts +107 -0
- package/dist/cjs/environment/RuntimeService.d.ts.map +1 -0
- package/dist/cjs/environment/RuntimeService.js +222 -0
- package/dist/cjs/environment/RuntimeService.js.map +6 -0
- package/dist/cjs/environment/VariableService.d.ts +58 -0
- package/dist/cjs/environment/VariableService.d.ts.map +1 -0
- package/dist/cjs/environment/VariableService.js +257 -0
- package/dist/cjs/environment/VariableService.js.map +6 -0
- package/dist/cjs/environment/index.d.ts +10 -0
- package/dist/cjs/environment/index.d.ts.map +1 -0
- package/dist/cjs/environment/index.js +27 -0
- package/dist/cjs/environment/index.js.map +6 -0
- package/dist/cjs/index.d.ts +17 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +34 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/log/Diagnostic.d.ts +140 -0
- package/dist/cjs/log/Diagnostic.d.ts.map +1 -0
- package/dist/cjs/log/Diagnostic.js +297 -0
- package/dist/cjs/log/Diagnostic.js.map +6 -0
- package/dist/cjs/log/DiagnosticSource.d.ts +16 -0
- package/dist/cjs/log/DiagnosticSource.d.ts.map +1 -0
- package/dist/cjs/log/DiagnosticSource.js +45 -0
- package/dist/cjs/log/DiagnosticSource.js.map +6 -0
- package/dist/cjs/log/LogFormat.d.ts +33 -0
- package/dist/cjs/log/LogFormat.d.ts.map +1 -0
- package/dist/cjs/log/LogFormat.js +503 -0
- package/dist/cjs/log/LogFormat.js.map +6 -0
- package/dist/cjs/log/LogLevel.d.ts +18 -0
- package/dist/cjs/log/LogLevel.d.ts.map +1 -0
- package/dist/cjs/log/LogLevel.js +57 -0
- package/dist/cjs/log/LogLevel.js.map +6 -0
- package/dist/cjs/log/Logger.d.ts +220 -0
- package/dist/cjs/log/Logger.d.ts.map +1 -0
- package/dist/cjs/log/Logger.js +401 -0
- package/dist/cjs/log/Logger.js.map +6 -0
- package/dist/cjs/log/index.d.ts +11 -0
- package/dist/cjs/log/index.d.ts.map +1 -0
- package/dist/cjs/log/index.js +28 -0
- package/dist/cjs/log/index.js.map +6 -0
- package/dist/cjs/math/ReedSolomon.d.ts +11 -0
- package/dist/cjs/math/ReedSolomon.d.ts.map +1 -0
- package/dist/cjs/math/ReedSolomon.js +109 -0
- package/dist/cjs/math/ReedSolomon.js.map +6 -0
- package/dist/cjs/math/Verhoeff.d.ts +17 -0
- package/dist/cjs/math/Verhoeff.d.ts.map +1 -0
- package/dist/cjs/math/Verhoeff.js +64 -0
- package/dist/cjs/math/Verhoeff.js.map +6 -0
- package/dist/cjs/math/index.d.ts +8 -0
- package/dist/cjs/math/index.d.ts.map +1 -0
- package/dist/cjs/math/index.js +25 -0
- package/dist/cjs/math/index.js.map +6 -0
- package/dist/cjs/net/Channel.d.ts +24 -0
- package/dist/cjs/net/Channel.d.ts.map +1 -0
- package/dist/cjs/net/Channel.js +35 -0
- package/dist/cjs/net/Channel.js.map +6 -0
- package/dist/cjs/net/NetInterface.d.ts +24 -0
- package/dist/cjs/net/NetInterface.d.ts.map +1 -0
- package/dist/cjs/net/NetInterface.js +42 -0
- package/dist/cjs/net/NetInterface.js.map +6 -0
- package/dist/cjs/net/Network.d.ts +54 -0
- package/dist/cjs/net/Network.d.ts.map +1 -0
- package/dist/cjs/net/Network.js +50 -0
- package/dist/cjs/net/Network.js.map +6 -0
- package/dist/cjs/net/ServerAddress.d.ts +17 -0
- package/dist/cjs/net/ServerAddress.d.ts.map +1 -0
- package/dist/cjs/net/ServerAddress.js +32 -0
- package/dist/cjs/net/ServerAddress.js.map +6 -0
- package/dist/cjs/net/TransportInterface.d.ts +40 -0
- package/dist/cjs/net/TransportInterface.d.ts.map +1 -0
- package/dist/cjs/net/TransportInterface.js +55 -0
- package/dist/cjs/net/TransportInterface.js.map +6 -0
- package/dist/cjs/net/UdpChannel.d.ts +25 -0
- package/dist/cjs/net/UdpChannel.d.ts.map +1 -0
- package/dist/cjs/net/UdpChannel.js +30 -0
- package/dist/cjs/net/UdpChannel.js.map +6 -0
- package/dist/cjs/net/UdpInterface.d.ts +35 -0
- package/dist/cjs/net/UdpInterface.d.ts.map +1 -0
- package/dist/cjs/net/UdpInterface.js +82 -0
- package/dist/cjs/net/UdpInterface.js.map +6 -0
- package/dist/cjs/net/UdpMulticastServer.d.ts +30 -0
- package/dist/cjs/net/UdpMulticastServer.d.ts.map +1 -0
- package/dist/cjs/net/UdpMulticastServer.js +133 -0
- package/dist/cjs/net/UdpMulticastServer.js.map +6 -0
- package/dist/cjs/net/index.d.ts +17 -0
- package/dist/cjs/net/index.d.ts.map +1 -0
- package/dist/cjs/net/index.js +34 -0
- package/dist/cjs/net/index.js.map +6 -0
- package/dist/cjs/net/mock/MockNetwork.d.ts +19 -0
- package/dist/cjs/net/mock/MockNetwork.d.ts.map +1 -0
- package/dist/cjs/net/mock/MockNetwork.js +56 -0
- package/dist/cjs/net/mock/MockNetwork.js.map +6 -0
- package/dist/cjs/net/mock/MockUdpChannel.d.ts +27 -0
- package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -0
- package/dist/cjs/net/mock/MockUdpChannel.js +76 -0
- package/dist/cjs/net/mock/MockUdpChannel.js.map +6 -0
- package/dist/cjs/net/mock/NetworkSimulator.d.ts +18 -0
- package/dist/cjs/net/mock/NetworkSimulator.d.ts.map +1 -0
- package/dist/cjs/net/mock/NetworkSimulator.js +73 -0
- package/dist/cjs/net/mock/NetworkSimulator.js.map +6 -0
- package/dist/cjs/package.json +6 -0
- package/dist/cjs/polyfills/disposable.d.ts +7 -0
- package/dist/cjs/polyfills/disposable.d.ts.map +1 -0
- package/dist/cjs/polyfills/disposable.js +19 -0
- package/dist/cjs/polyfills/disposable.js.map +6 -0
- package/dist/cjs/polyfills/index.d.ts +7 -0
- package/dist/cjs/polyfills/index.d.ts.map +1 -0
- package/dist/cjs/polyfills/index.js +8 -0
- package/dist/cjs/polyfills/index.js.map +6 -0
- package/dist/cjs/storage/Storage.d.ts +54 -0
- package/dist/cjs/storage/Storage.d.ts.map +1 -0
- package/dist/cjs/storage/Storage.js +38 -0
- package/dist/cjs/storage/Storage.js.map +6 -0
- package/dist/cjs/storage/StorageBackendMemory.d.ts +27 -0
- package/dist/cjs/storage/StorageBackendMemory.d.ts.map +1 -0
- package/dist/cjs/storage/StorageBackendMemory.js +131 -0
- package/dist/cjs/storage/StorageBackendMemory.js.map +6 -0
- package/dist/cjs/storage/StorageContext.d.ts +26 -0
- package/dist/cjs/storage/StorageContext.d.ts.map +1 -0
- package/dist/cjs/storage/StorageContext.js +117 -0
- package/dist/cjs/storage/StorageContext.js.map +6 -0
- package/dist/cjs/storage/StorageManager.d.ts +17 -0
- package/dist/cjs/storage/StorageManager.d.ts.map +1 -0
- package/dist/cjs/storage/StorageManager.js +59 -0
- package/dist/cjs/storage/StorageManager.js.map +6 -0
- package/dist/cjs/storage/StorageService.d.ts +35 -0
- package/dist/cjs/storage/StorageService.d.ts.map +1 -0
- package/dist/cjs/storage/StorageService.js +82 -0
- package/dist/cjs/storage/StorageService.js.map +6 -0
- package/dist/cjs/storage/StringifyTools.d.ts +16 -0
- package/dist/cjs/storage/StringifyTools.d.ts.map +1 -0
- package/dist/cjs/storage/StringifyTools.js +105 -0
- package/dist/cjs/storage/StringifyTools.js.map +6 -0
- package/dist/cjs/storage/index.d.ts +12 -0
- package/dist/cjs/storage/index.d.ts.map +1 -0
- package/dist/cjs/storage/index.js +29 -0
- package/dist/cjs/storage/index.js.map +6 -0
- package/dist/cjs/time/Time.d.ts +66 -0
- package/dist/cjs/time/Time.d.ts.map +1 -0
- package/dist/cjs/time/Time.js +137 -0
- package/dist/cjs/time/Time.js.map +6 -0
- package/dist/cjs/time/index.d.ts +7 -0
- package/dist/cjs/time/index.d.ts.map +1 -0
- package/dist/cjs/time/index.js +24 -0
- package/dist/cjs/time/index.js.map +6 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/cjs/util/Array.d.ts +12 -0
- package/dist/cjs/util/Array.d.ts.map +1 -0
- package/dist/cjs/util/Array.js +24 -0
- package/dist/cjs/util/Array.js.map +6 -0
- package/dist/cjs/util/Bytes.d.ts +23 -0
- package/dist/cjs/util/Bytes.d.ts.map +1 -0
- package/dist/cjs/util/Bytes.js +95 -0
- package/dist/cjs/util/Bytes.js.map +6 -0
- package/dist/cjs/util/Cache.d.ts +33 -0
- package/dist/cjs/util/Cache.d.ts.map +1 -0
- package/dist/cjs/util/Cache.js +114 -0
- package/dist/cjs/util/Cache.js.map +6 -0
- package/dist/cjs/util/Construction.d.ts +182 -0
- package/dist/cjs/util/Construction.d.ts.map +1 -0
- package/dist/cjs/util/Construction.js +417 -0
- package/dist/cjs/util/Construction.js.map +6 -0
- package/dist/cjs/util/DataReadQueue.d.ts +17 -0
- package/dist/cjs/util/DataReadQueue.d.ts.map +1 -0
- package/dist/cjs/util/DataReadQueue.js +76 -0
- package/dist/cjs/util/DataReadQueue.js.map +6 -0
- package/dist/cjs/util/DataReader.d.ts +32 -0
- package/dist/cjs/util/DataReader.d.ts.map +1 -0
- package/dist/cjs/util/DataReader.js +101 -0
- package/dist/cjs/util/DataReader.js.map +6 -0
- package/dist/cjs/util/DataWriter.d.ts +26 -0
- package/dist/cjs/util/DataWriter.d.ts.map +1 -0
- package/dist/cjs/util/DataWriter.js +114 -0
- package/dist/cjs/util/DataWriter.js.map +6 -0
- package/dist/cjs/util/DeepCopy.d.ts +12 -0
- package/dist/cjs/util/DeepCopy.d.ts.map +1 -0
- package/dist/cjs/util/DeepCopy.js +58 -0
- package/dist/cjs/util/DeepCopy.js.map +6 -0
- package/dist/cjs/util/DeepEqual.d.ts +7 -0
- package/dist/cjs/util/DeepEqual.d.ts.map +1 -0
- package/dist/cjs/util/DeepEqual.js +55 -0
- package/dist/cjs/util/DeepEqual.js.map +6 -0
- package/dist/cjs/util/Error.d.ts +12 -0
- package/dist/cjs/util/Error.d.ts.map +1 -0
- package/dist/cjs/util/Error.js +41 -0
- package/dist/cjs/util/Error.js.map +6 -0
- package/dist/cjs/util/GeneratedClass.d.ts +62 -0
- package/dist/cjs/util/GeneratedClass.d.ts.map +1 -0
- package/dist/cjs/util/GeneratedClass.js +117 -0
- package/dist/cjs/util/GeneratedClass.js.map +6 -0
- package/dist/cjs/util/Introspection.d.ts +38 -0
- package/dist/cjs/util/Introspection.d.ts.map +1 -0
- package/dist/cjs/util/Introspection.js +85 -0
- package/dist/cjs/util/Introspection.js.map +6 -0
- package/dist/cjs/util/Ip.d.ts +8 -0
- package/dist/cjs/util/Ip.d.ts.map +1 -0
- package/dist/cjs/util/Ip.js +90 -0
- package/dist/cjs/util/Ip.js.map +6 -0
- package/dist/cjs/util/Lifecycle.d.ts +97 -0
- package/dist/cjs/util/Lifecycle.d.ts.map +1 -0
- package/dist/cjs/util/Lifecycle.js +89 -0
- package/dist/cjs/util/Lifecycle.js.map +6 -0
- package/dist/cjs/util/Multiplex.d.ts +14 -0
- package/dist/cjs/util/Multiplex.d.ts.map +1 -0
- package/dist/cjs/util/Multiplex.js +22 -0
- package/dist/cjs/util/Multiplex.js.map +6 -0
- package/dist/cjs/util/Mutex.d.ts +34 -0
- package/dist/cjs/util/Mutex.d.ts.map +1 -0
- package/dist/cjs/util/Mutex.js +105 -0
- package/dist/cjs/util/Mutex.js.map +6 -0
- package/dist/cjs/util/NamedHandler.d.ts +21 -0
- package/dist/cjs/util/NamedHandler.d.ts.map +1 -0
- package/dist/cjs/util/NamedHandler.js +54 -0
- package/dist/cjs/util/NamedHandler.js.map +6 -0
- package/dist/cjs/util/Number.d.ts +37 -0
- package/dist/cjs/util/Number.d.ts.map +1 -0
- package/dist/cjs/util/Number.js +97 -0
- package/dist/cjs/util/Number.js.map +6 -0
- package/dist/cjs/util/Observable.d.ts +197 -0
- package/dist/cjs/util/Observable.d.ts.map +1 -0
- package/dist/cjs/util/Observable.js +340 -0
- package/dist/cjs/util/Observable.js.map +6 -0
- package/dist/cjs/util/PromiseQueue.d.ts +25 -0
- package/dist/cjs/util/PromiseQueue.d.ts.map +1 -0
- package/dist/cjs/util/PromiseQueue.js +107 -0
- package/dist/cjs/util/PromiseQueue.js.map +6 -0
- package/dist/cjs/util/Promises.d.ts +68 -0
- package/dist/cjs/util/Promises.d.ts.map +1 -0
- package/dist/cjs/util/Promises.js +199 -0
- package/dist/cjs/util/Promises.js.map +6 -0
- package/dist/cjs/util/Set.d.ts +60 -0
- package/dist/cjs/util/Set.d.ts.map +1 -0
- package/dist/cjs/util/Set.js +145 -0
- package/dist/cjs/util/Set.js.map +6 -0
- package/dist/cjs/util/Singleton.d.ts +7 -0
- package/dist/cjs/util/Singleton.d.ts.map +1 -0
- package/dist/cjs/util/Singleton.js +36 -0
- package/dist/cjs/util/Singleton.js.map +6 -0
- package/dist/cjs/util/Stream.d.ts +16 -0
- package/dist/cjs/util/Stream.d.ts.map +1 -0
- package/dist/cjs/util/Stream.js +38 -0
- package/dist/cjs/util/Stream.js.map +6 -0
- package/dist/cjs/util/String.d.ts +39 -0
- package/dist/cjs/util/String.d.ts.map +1 -0
- package/dist/cjs/util/String.js +208 -0
- package/dist/cjs/util/String.js.map +6 -0
- package/dist/cjs/util/Type.d.ts +84 -0
- package/dist/cjs/util/Type.d.ts.map +1 -0
- package/dist/cjs/util/Type.js +52 -0
- package/dist/cjs/util/Type.js.map +6 -0
- package/dist/cjs/util/index.d.ts +30 -0
- package/dist/cjs/util/index.d.ts.map +1 -0
- package/dist/cjs/util/index.js +47 -0
- package/dist/cjs/util/index.js.map +6 -0
- package/dist/esm/MatterError.d.ts +95 -0
- package/dist/esm/MatterError.d.ts.map +1 -0
- package/dist/esm/MatterError.js +157 -0
- package/dist/esm/MatterError.js.map +6 -0
- package/dist/esm/codec/Base64Codec.d.ts +23 -0
- package/dist/esm/codec/Base64Codec.d.ts.map +1 -0
- package/dist/esm/codec/Base64Codec.js +114 -0
- package/dist/esm/codec/Base64Codec.js.map +6 -0
- package/dist/esm/codec/DerCodec.d.ts +83 -0
- package/dist/esm/codec/DerCodec.d.ts.map +1 -0
- package/dist/esm/codec/DerCodec.js +266 -0
- package/dist/esm/codec/DerCodec.js.map +6 -0
- package/dist/esm/codec/DerTypes.d.ts +73 -0
- package/dist/esm/codec/DerTypes.d.ts.map +1 -0
- package/dist/esm/codec/DerTypes.js +122 -0
- package/dist/esm/codec/DerTypes.js.map +6 -0
- package/dist/esm/codec/DnsCodec.d.ts +86 -0
- package/dist/esm/codec/DnsCodec.d.ts.map +1 -0
- package/dist/esm/codec/DnsCodec.js +335 -0
- package/dist/esm/codec/DnsCodec.js.map +6 -0
- package/dist/esm/codec/index.d.ts +10 -0
- package/dist/esm/codec/index.d.ts.map +1 -0
- package/dist/esm/codec/index.js +10 -0
- package/dist/esm/codec/index.js.map +6 -0
- package/dist/esm/crypto/Crypto.d.ts +169 -0
- package/dist/esm/crypto/Crypto.d.ts.map +1 -0
- package/dist/esm/crypto/Crypto.js +73 -0
- package/dist/esm/crypto/Crypto.js.map +6 -0
- package/dist/esm/crypto/CryptoConstants.d.ts +19 -0
- package/dist/esm/crypto/CryptoConstants.d.ts.map +1 -0
- package/dist/esm/crypto/CryptoConstants.js +28 -0
- package/dist/esm/crypto/CryptoConstants.js.map +6 -0
- package/dist/esm/crypto/Key.d.ts +171 -0
- package/dist/esm/crypto/Key.d.ts.map +1 -0
- package/dist/esm/crypto/Key.js +336 -0
- package/dist/esm/crypto/Key.js.map +6 -0
- package/dist/esm/crypto/Spake2p.d.ts +40 -0
- package/dist/esm/crypto/Spake2p.d.ts.map +1 -0
- package/dist/esm/crypto/Spake2p.js +108 -0
- package/dist/esm/crypto/Spake2p.js.map +6 -0
- package/dist/esm/crypto/index.d.ts +10 -0
- package/dist/esm/crypto/index.d.ts.map +1 -0
- package/dist/esm/crypto/index.js +10 -0
- package/dist/esm/crypto/index.js.map +6 -0
- package/dist/esm/environment/Environment.d.ts +96 -0
- package/dist/esm/environment/Environment.d.ts.map +1 -0
- package/dist/esm/environment/Environment.js +179 -0
- package/dist/esm/environment/Environment.js.map +6 -0
- package/dist/esm/environment/Environmental.d.ts +52 -0
- package/dist/esm/environment/Environmental.d.ts.map +1 -0
- package/dist/esm/environment/Environmental.js +13 -0
- package/dist/esm/environment/Environmental.js.map +6 -0
- package/dist/esm/environment/RuntimeService.d.ts +107 -0
- package/dist/esm/environment/RuntimeService.d.ts.map +1 -0
- package/dist/esm/environment/RuntimeService.js +202 -0
- package/dist/esm/environment/RuntimeService.js.map +6 -0
- package/dist/esm/environment/VariableService.d.ts +58 -0
- package/dist/esm/environment/VariableService.d.ts.map +1 -0
- package/dist/esm/environment/VariableService.js +237 -0
- package/dist/esm/environment/VariableService.js.map +6 -0
- package/dist/esm/environment/index.d.ts +10 -0
- package/dist/esm/environment/index.d.ts.map +1 -0
- package/dist/esm/environment/index.js +10 -0
- package/dist/esm/environment/index.js.map +6 -0
- package/dist/esm/index.d.ts +17 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +17 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/log/Diagnostic.d.ts +140 -0
- package/dist/esm/log/Diagnostic.d.ts.map +1 -0
- package/dist/esm/log/Diagnostic.js +277 -0
- package/dist/esm/log/Diagnostic.js.map +6 -0
- package/dist/esm/log/DiagnosticSource.d.ts +16 -0
- package/dist/esm/log/DiagnosticSource.d.ts.map +1 -0
- package/dist/esm/log/DiagnosticSource.js +25 -0
- package/dist/esm/log/DiagnosticSource.js.map +6 -0
- package/dist/esm/log/LogFormat.d.ts +33 -0
- package/dist/esm/log/LogFormat.d.ts.map +1 -0
- package/dist/esm/log/LogFormat.js +483 -0
- package/dist/esm/log/LogFormat.js.map +6 -0
- package/dist/esm/log/LogLevel.d.ts +18 -0
- package/dist/esm/log/LogLevel.d.ts.map +1 -0
- package/dist/esm/log/LogLevel.js +37 -0
- package/dist/esm/log/LogLevel.js.map +6 -0
- package/dist/esm/log/Logger.d.ts +220 -0
- package/dist/esm/log/Logger.d.ts.map +1 -0
- package/dist/esm/log/Logger.js +381 -0
- package/dist/esm/log/Logger.js.map +6 -0
- package/dist/esm/log/index.d.ts +11 -0
- package/dist/esm/log/index.d.ts.map +1 -0
- package/dist/esm/log/index.js +11 -0
- package/dist/esm/log/index.js.map +6 -0
- package/dist/esm/math/ReedSolomon.d.ts +11 -0
- package/dist/esm/math/ReedSolomon.d.ts.map +1 -0
- package/dist/esm/math/ReedSolomon.js +89 -0
- package/dist/esm/math/ReedSolomon.js.map +6 -0
- package/dist/esm/math/Verhoeff.d.ts +17 -0
- package/dist/esm/math/Verhoeff.d.ts.map +1 -0
- package/dist/esm/math/Verhoeff.js +44 -0
- package/dist/esm/math/Verhoeff.js.map +6 -0
- package/dist/esm/math/index.d.ts +8 -0
- package/dist/esm/math/index.d.ts.map +1 -0
- package/dist/esm/math/index.js +8 -0
- package/dist/esm/math/index.js.map +6 -0
- package/dist/esm/net/Channel.d.ts +24 -0
- package/dist/esm/net/Channel.d.ts.map +1 -0
- package/dist/esm/net/Channel.js +15 -0
- package/dist/esm/net/Channel.js.map +6 -0
- package/dist/esm/net/NetInterface.d.ts +24 -0
- package/dist/esm/net/NetInterface.d.ts.map +1 -0
- package/dist/esm/net/NetInterface.js +22 -0
- package/dist/esm/net/NetInterface.js.map +6 -0
- package/dist/esm/net/Network.d.ts +54 -0
- package/dist/esm/net/Network.d.ts.map +1 -0
- package/dist/esm/net/Network.js +30 -0
- package/dist/esm/net/Network.js.map +6 -0
- package/dist/esm/net/ServerAddress.d.ts +17 -0
- package/dist/esm/net/ServerAddress.d.ts.map +1 -0
- package/dist/esm/net/ServerAddress.js +12 -0
- package/dist/esm/net/ServerAddress.js.map +6 -0
- package/dist/esm/net/TransportInterface.d.ts +40 -0
- package/dist/esm/net/TransportInterface.d.ts.map +1 -0
- package/dist/esm/net/TransportInterface.js +35 -0
- package/dist/esm/net/TransportInterface.js.map +6 -0
- package/dist/esm/net/UdpChannel.d.ts +25 -0
- package/dist/esm/net/UdpChannel.d.ts.map +1 -0
- package/dist/esm/net/UdpChannel.js +10 -0
- package/dist/esm/net/UdpChannel.js.map +6 -0
- package/dist/esm/net/UdpInterface.d.ts +35 -0
- package/dist/esm/net/UdpInterface.d.ts.map +1 -0
- package/dist/esm/net/UdpInterface.js +62 -0
- package/dist/esm/net/UdpInterface.js.map +6 -0
- package/dist/esm/net/UdpMulticastServer.d.ts +30 -0
- package/dist/esm/net/UdpMulticastServer.d.ts.map +1 -0
- package/dist/esm/net/UdpMulticastServer.js +113 -0
- package/dist/esm/net/UdpMulticastServer.js.map +6 -0
- package/dist/esm/net/index.d.ts +17 -0
- package/dist/esm/net/index.d.ts.map +1 -0
- package/dist/esm/net/index.js +17 -0
- package/dist/esm/net/index.js.map +6 -0
- package/dist/esm/net/mock/MockNetwork.d.ts +19 -0
- package/dist/esm/net/mock/MockNetwork.d.ts.map +1 -0
- package/dist/esm/net/mock/MockNetwork.js +36 -0
- package/dist/esm/net/mock/MockNetwork.js.map +6 -0
- package/dist/esm/net/mock/MockUdpChannel.d.ts +27 -0
- package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -0
- package/dist/esm/net/mock/MockUdpChannel.js +56 -0
- package/dist/esm/net/mock/MockUdpChannel.js.map +6 -0
- package/dist/esm/net/mock/NetworkSimulator.d.ts +18 -0
- package/dist/esm/net/mock/NetworkSimulator.d.ts.map +1 -0
- package/dist/esm/net/mock/NetworkSimulator.js +53 -0
- package/dist/esm/net/mock/NetworkSimulator.js.map +6 -0
- package/dist/esm/package.json +6 -0
- package/dist/esm/polyfills/disposable.d.ts +7 -0
- package/dist/esm/polyfills/disposable.d.ts.map +1 -0
- package/dist/esm/polyfills/disposable.js +18 -0
- package/dist/esm/polyfills/disposable.js.map +6 -0
- package/dist/esm/polyfills/index.d.ts +7 -0
- package/dist/esm/polyfills/index.d.ts.map +1 -0
- package/dist/esm/polyfills/index.js +7 -0
- package/dist/esm/polyfills/index.js.map +6 -0
- package/dist/esm/storage/Storage.d.ts +54 -0
- package/dist/esm/storage/Storage.d.ts.map +1 -0
- package/dist/esm/storage/Storage.js +18 -0
- package/dist/esm/storage/Storage.js.map +6 -0
- package/dist/esm/storage/StorageBackendMemory.d.ts +27 -0
- package/dist/esm/storage/StorageBackendMemory.d.ts.map +1 -0
- package/dist/esm/storage/StorageBackendMemory.js +111 -0
- package/dist/esm/storage/StorageBackendMemory.js.map +6 -0
- package/dist/esm/storage/StorageContext.d.ts +26 -0
- package/dist/esm/storage/StorageContext.d.ts.map +1 -0
- package/dist/esm/storage/StorageContext.js +97 -0
- package/dist/esm/storage/StorageContext.js.map +6 -0
- package/dist/esm/storage/StorageManager.d.ts +17 -0
- package/dist/esm/storage/StorageManager.d.ts.map +1 -0
- package/dist/esm/storage/StorageManager.js +39 -0
- package/dist/esm/storage/StorageManager.js.map +6 -0
- package/dist/esm/storage/StorageService.d.ts +35 -0
- package/dist/esm/storage/StorageService.d.ts.map +1 -0
- package/dist/esm/storage/StorageService.js +62 -0
- package/dist/esm/storage/StorageService.js.map +6 -0
- package/dist/esm/storage/StringifyTools.d.ts +16 -0
- package/dist/esm/storage/StringifyTools.d.ts.map +1 -0
- package/dist/esm/storage/StringifyTools.js +85 -0
- package/dist/esm/storage/StringifyTools.js.map +6 -0
- package/dist/esm/storage/index.d.ts +12 -0
- package/dist/esm/storage/index.d.ts.map +1 -0
- package/dist/esm/storage/index.js +12 -0
- package/dist/esm/storage/index.js.map +6 -0
- package/dist/esm/time/Time.d.ts +66 -0
- package/dist/esm/time/Time.d.ts.map +1 -0
- package/dist/esm/time/Time.js +117 -0
- package/dist/esm/time/Time.js.map +6 -0
- package/dist/esm/time/index.d.ts +7 -0
- package/dist/esm/time/index.d.ts.map +1 -0
- package/dist/esm/time/index.js +7 -0
- package/dist/esm/time/index.js.map +6 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/util/Array.d.ts +12 -0
- package/dist/esm/util/Array.d.ts.map +1 -0
- package/dist/esm/util/Array.js +8 -0
- package/dist/esm/util/Array.js.map +6 -0
- package/dist/esm/util/Bytes.d.ts +23 -0
- package/dist/esm/util/Bytes.d.ts.map +1 -0
- package/dist/esm/util/Bytes.js +75 -0
- package/dist/esm/util/Bytes.js.map +6 -0
- package/dist/esm/util/Cache.d.ts +33 -0
- package/dist/esm/util/Cache.d.ts.map +1 -0
- package/dist/esm/util/Cache.js +94 -0
- package/dist/esm/util/Cache.js.map +6 -0
- package/dist/esm/util/Construction.d.ts +182 -0
- package/dist/esm/util/Construction.d.ts.map +1 -0
- package/dist/esm/util/Construction.js +397 -0
- package/dist/esm/util/Construction.js.map +6 -0
- package/dist/esm/util/DataReadQueue.d.ts +17 -0
- package/dist/esm/util/DataReadQueue.d.ts.map +1 -0
- package/dist/esm/util/DataReadQueue.js +56 -0
- package/dist/esm/util/DataReadQueue.js.map +6 -0
- package/dist/esm/util/DataReader.d.ts +32 -0
- package/dist/esm/util/DataReader.d.ts.map +1 -0
- package/dist/esm/util/DataReader.js +81 -0
- package/dist/esm/util/DataReader.js.map +6 -0
- package/dist/esm/util/DataWriter.d.ts +26 -0
- package/dist/esm/util/DataWriter.d.ts.map +1 -0
- package/dist/esm/util/DataWriter.js +94 -0
- package/dist/esm/util/DataWriter.js.map +6 -0
- package/dist/esm/util/DeepCopy.d.ts +12 -0
- package/dist/esm/util/DeepCopy.d.ts.map +1 -0
- package/dist/esm/util/DeepCopy.js +38 -0
- package/dist/esm/util/DeepCopy.js.map +6 -0
- package/dist/esm/util/DeepEqual.d.ts +7 -0
- package/dist/esm/util/DeepEqual.d.ts.map +1 -0
- package/dist/esm/util/DeepEqual.js +35 -0
- package/dist/esm/util/DeepEqual.js.map +6 -0
- package/dist/esm/util/Error.d.ts +12 -0
- package/dist/esm/util/Error.d.ts.map +1 -0
- package/dist/esm/util/Error.js +21 -0
- package/dist/esm/util/Error.js.map +6 -0
- package/dist/esm/util/GeneratedClass.d.ts +62 -0
- package/dist/esm/util/GeneratedClass.d.ts.map +1 -0
- package/dist/esm/util/GeneratedClass.js +97 -0
- package/dist/esm/util/GeneratedClass.js.map +6 -0
- package/dist/esm/util/Introspection.d.ts +38 -0
- package/dist/esm/util/Introspection.d.ts.map +1 -0
- package/dist/esm/util/Introspection.js +65 -0
- package/dist/esm/util/Introspection.js.map +6 -0
- package/dist/esm/util/Ip.d.ts +8 -0
- package/dist/esm/util/Ip.d.ts.map +1 -0
- package/dist/esm/util/Ip.js +70 -0
- package/dist/esm/util/Ip.js.map +6 -0
- package/dist/esm/util/Lifecycle.d.ts +97 -0
- package/dist/esm/util/Lifecycle.d.ts.map +1 -0
- package/dist/esm/util/Lifecycle.js +69 -0
- package/dist/esm/util/Lifecycle.js.map +6 -0
- package/dist/esm/util/Multiplex.d.ts +14 -0
- package/dist/esm/util/Multiplex.d.ts.map +1 -0
- package/dist/esm/util/Multiplex.js +6 -0
- package/dist/esm/util/Multiplex.js.map +6 -0
- package/dist/esm/util/Mutex.d.ts +34 -0
- package/dist/esm/util/Mutex.d.ts.map +1 -0
- package/dist/esm/util/Mutex.js +85 -0
- package/dist/esm/util/Mutex.js.map +6 -0
- package/dist/esm/util/NamedHandler.d.ts +21 -0
- package/dist/esm/util/NamedHandler.d.ts.map +1 -0
- package/dist/esm/util/NamedHandler.js +34 -0
- package/dist/esm/util/NamedHandler.js.map +6 -0
- package/dist/esm/util/Number.d.ts +37 -0
- package/dist/esm/util/Number.d.ts.map +1 -0
- package/dist/esm/util/Number.js +77 -0
- package/dist/esm/util/Number.js.map +6 -0
- package/dist/esm/util/Observable.d.ts +197 -0
- package/dist/esm/util/Observable.d.ts.map +1 -0
- package/dist/esm/util/Observable.js +320 -0
- package/dist/esm/util/Observable.js.map +6 -0
- package/dist/esm/util/PromiseQueue.d.ts +25 -0
- package/dist/esm/util/PromiseQueue.d.ts.map +1 -0
- package/dist/esm/util/PromiseQueue.js +87 -0
- package/dist/esm/util/PromiseQueue.js.map +6 -0
- package/dist/esm/util/Promises.d.ts +68 -0
- package/dist/esm/util/Promises.d.ts.map +1 -0
- package/dist/esm/util/Promises.js +179 -0
- package/dist/esm/util/Promises.js.map +6 -0
- package/dist/esm/util/Set.d.ts +60 -0
- package/dist/esm/util/Set.d.ts.map +1 -0
- package/dist/esm/util/Set.js +125 -0
- package/dist/esm/util/Set.js.map +6 -0
- package/dist/esm/util/Singleton.d.ts +7 -0
- package/dist/esm/util/Singleton.d.ts.map +1 -0
- package/dist/esm/util/Singleton.js +16 -0
- package/dist/esm/util/Singleton.js.map +6 -0
- package/dist/esm/util/Stream.d.ts +16 -0
- package/dist/esm/util/Stream.d.ts.map +1 -0
- package/dist/esm/util/Stream.js +18 -0
- package/dist/esm/util/Stream.js.map +6 -0
- package/dist/esm/util/String.d.ts +39 -0
- package/dist/esm/util/String.d.ts.map +1 -0
- package/dist/esm/util/String.js +188 -0
- package/dist/esm/util/String.js.map +6 -0
- package/dist/esm/util/Type.d.ts +84 -0
- package/dist/esm/util/Type.d.ts.map +1 -0
- package/dist/esm/util/Type.js +32 -0
- package/dist/esm/util/Type.js.map +6 -0
- package/dist/esm/util/index.d.ts +30 -0
- package/dist/esm/util/index.d.ts.map +1 -0
- package/dist/esm/util/index.js +30 -0
- package/dist/esm/util/index.js.map +6 -0
- package/package.json +76 -0
- package/src/MatterError.ts +205 -0
- package/src/codec/Base64Codec.ts +137 -0
- package/src/codec/DerCodec.ts +300 -0
- package/src/codec/DerTypes.ts +145 -0
- package/src/codec/DnsCodec.ts +393 -0
- package/src/codec/index.ts +10 -0
- package/src/crypto/Crypto.ts +136 -0
- package/src/crypto/CryptoConstants.ts +19 -0
- package/src/crypto/Key.ts +600 -0
- package/src/crypto/Spake2p.ts +128 -0
- package/src/crypto/index.ts +10 -0
- package/src/environment/Environment.ts +215 -0
- package/src/environment/Environmental.ts +60 -0
- package/src/environment/RuntimeService.ts +301 -0
- package/src/environment/VariableService.ts +308 -0
- package/src/environment/index.ts +10 -0
- package/src/index.ts +17 -0
- package/src/log/Diagnostic.ts +454 -0
- package/src/log/DiagnosticSource.ts +30 -0
- package/src/log/LogFormat.ts +646 -0
- package/src/log/LogLevel.ts +36 -0
- package/src/log/Logger.ts +474 -0
- package/src/log/index.ts +11 -0
- package/src/math/ReedSolomon.ts +100 -0
- package/src/math/Verhoeff.ts +47 -0
- package/src/math/index.ts +8 -0
- package/src/net/Channel.ts +30 -0
- package/src/net/NetInterface.ts +33 -0
- package/src/net/Network.ts +70 -0
- package/src/net/ServerAddress.ts +22 -0
- package/src/net/TransportInterface.ts +56 -0
- package/src/net/UdpChannel.ts +30 -0
- package/src/net/UdpInterface.ts +75 -0
- package/src/net/UdpMulticastServer.ts +138 -0
- package/src/net/index.ts +17 -0
- package/src/net/mock/MockNetwork.ts +42 -0
- package/src/net/mock/MockUdpChannel.ts +69 -0
- package/src/net/mock/NetworkSimulator.ts +63 -0
- package/src/polyfills/disposable.ts +24 -0
- package/src/polyfills/index.ts +7 -0
- package/src/storage/Storage.ts +61 -0
- package/src/storage/StorageBackendMemory.ts +131 -0
- package/src/storage/StorageContext.ts +111 -0
- package/src/storage/StorageManager.ts +39 -0
- package/src/storage/StorageService.ts +73 -0
- package/src/storage/StringifyTools.ts +107 -0
- package/src/storage/index.ts +12 -0
- package/src/time/Time.ts +179 -0
- package/src/time/index.ts +7 -0
- package/src/tsconfig.json +10 -0
- package/src/util/Array.ts +15 -0
- package/src/util/Bytes.ts +73 -0
- package/src/util/Cache.ts +111 -0
- package/src/util/Construction.ts +717 -0
- package/src/util/DataReadQueue.ts +55 -0
- package/src/util/DataReader.ts +100 -0
- package/src/util/DataWriter.ts +109 -0
- package/src/util/DeepCopy.ts +47 -0
- package/src/util/DeepEqual.ts +49 -0
- package/src/util/Error.ts +32 -0
- package/src/util/GeneratedClass.ts +204 -0
- package/src/util/Introspection.ts +93 -0
- package/src/util/Ip.ts +71 -0
- package/src/util/Lifecycle.ts +135 -0
- package/src/util/Multiplex.ts +14 -0
- package/src/util/Mutex.ts +100 -0
- package/src/util/NamedHandler.ts +52 -0
- package/src/util/Number.ts +71 -0
- package/src/util/Observable.ts +550 -0
- package/src/util/PromiseQueue.ts +102 -0
- package/src/util/Promises.ts +278 -0
- package/src/util/Set.ts +189 -0
- package/src/util/Singleton.ts +13 -0
- package/src/util/Stream.ts +19 -0
- package/src/util/String.ts +248 -0
- package/src/util/Type.ts +145 -0
- 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
|
+
}
|
package/src/net/index.ts
ADDED
|
@@ -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,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>;
|