@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,474 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { ImplementationError, NotImplementedError } from "../MatterError.js";
|
|
8
|
+
import { Time } from "../time/Time.js";
|
|
9
|
+
import { Bytes } from "../util/Bytes.js";
|
|
10
|
+
import { Diagnostic } from "./Diagnostic.js";
|
|
11
|
+
import { LogFormat } from "./LogFormat.js";
|
|
12
|
+
import { LogLevel } from "./LogLevel.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Log messages to the console. This is the default logging mechanism.
|
|
16
|
+
*/
|
|
17
|
+
export function consoleLogger(level: LogLevel, formattedLog: string) {
|
|
18
|
+
const console = (<any>consoleLogger).console;
|
|
19
|
+
switch (level) {
|
|
20
|
+
case LogLevel.DEBUG:
|
|
21
|
+
console.debug(formattedLog);
|
|
22
|
+
break;
|
|
23
|
+
case LogLevel.INFO:
|
|
24
|
+
console.info(formattedLog);
|
|
25
|
+
break;
|
|
26
|
+
case LogLevel.NOTICE:
|
|
27
|
+
console.info(formattedLog);
|
|
28
|
+
break;
|
|
29
|
+
case LogLevel.WARN:
|
|
30
|
+
console.warn(formattedLog);
|
|
31
|
+
break;
|
|
32
|
+
case LogLevel.ERROR:
|
|
33
|
+
console.error(formattedLog);
|
|
34
|
+
break;
|
|
35
|
+
case LogLevel.FATAL:
|
|
36
|
+
console.error(formattedLog);
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const globalConsole = console;
|
|
42
|
+
export namespace consoleLogger {
|
|
43
|
+
/**
|
|
44
|
+
* The target for consoleLogger.
|
|
45
|
+
*/
|
|
46
|
+
// eslint-disable-next-line prefer-const
|
|
47
|
+
export let console = globalConsole;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Create a log formatter for a given format.
|
|
52
|
+
*/
|
|
53
|
+
function logFormatterFor(formatName: string): LoggerDefinition["logFormatter"] {
|
|
54
|
+
const format = LogFormat(formatName);
|
|
55
|
+
|
|
56
|
+
return (now, level, facility, prefix, ...values) =>
|
|
57
|
+
format(Diagnostic.message({ now, level, facility, prefix, values }));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Definition of one registered Logger.
|
|
62
|
+
*/
|
|
63
|
+
type LoggerDefinition = {
|
|
64
|
+
logIdentifier: string;
|
|
65
|
+
logFormatter: (now: Date, level: LogLevel, facility: string, prefix: string, ...values: any[]) => string;
|
|
66
|
+
log: (level: LogLevel, formattedLog: string) => void;
|
|
67
|
+
defaultLogLevel: LogLevel;
|
|
68
|
+
logLevels: { [facility: string]: LogLevel };
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Logger that can be used to emit traces.
|
|
73
|
+
*
|
|
74
|
+
* The class supports adding multiple loggers for different targets. A default logger (identifier "default") is added on
|
|
75
|
+
* startup which logs to "console".
|
|
76
|
+
*
|
|
77
|
+
* Usage:
|
|
78
|
+
*
|
|
79
|
+
* const facility = Logger.get("loggerName");
|
|
80
|
+
* facility.debug("My debug message", "my extra value to log");
|
|
81
|
+
*
|
|
82
|
+
* The configuration of the default logger can be adjusted by using the static properties of the Logger class:
|
|
83
|
+
*
|
|
84
|
+
* - Logger.defaultLogLevel sets the default log level for all the facility
|
|
85
|
+
* - Logger.logLevels = { loggerName: Level.DEBUG } can set the level for the specific loggers
|
|
86
|
+
* - Logger.format = Format.ANSI enables colorization via ANSI escape sequences in default formatter
|
|
87
|
+
*
|
|
88
|
+
* For additional loggers, use Logger.addLogger() to add a new logger with a specific identifier. Afterwards the
|
|
89
|
+
* configuration of these can be adjusted using static methods with the identifier as first parameter:
|
|
90
|
+
*
|
|
91
|
+
* - Logger.setFormatForLogger("loggerName", Format.ANSI)
|
|
92
|
+
* - Logger.setLogLevelsForLogger("loggerName", { loggerName: Level.DEBUG })
|
|
93
|
+
* - Logger.setDefaultLoglevelForLogger("loggerName", Level.DEBUG)
|
|
94
|
+
*/
|
|
95
|
+
export class Logger {
|
|
96
|
+
static logger = new Array<LoggerDefinition>({
|
|
97
|
+
logIdentifier: "default",
|
|
98
|
+
logFormatter: LogFormat.plain,
|
|
99
|
+
log: consoleLogger,
|
|
100
|
+
defaultLogLevel: LogLevel.DEBUG,
|
|
101
|
+
logLevels: {},
|
|
102
|
+
});
|
|
103
|
+
static nestingLevel = 0;
|
|
104
|
+
|
|
105
|
+
/** Add additional logger to the list of loggers including the default configuration. */
|
|
106
|
+
public static addLogger(
|
|
107
|
+
identifier: string,
|
|
108
|
+
logger: (level: LogLevel, formattedLog: string) => void,
|
|
109
|
+
options?: {
|
|
110
|
+
defaultLogLevel?: LogLevel;
|
|
111
|
+
logLevels?: { [facility: string]: LogLevel };
|
|
112
|
+
logFormat?: string;
|
|
113
|
+
},
|
|
114
|
+
) {
|
|
115
|
+
if (Logger.logger.some(logger => logger.logIdentifier === identifier)) {
|
|
116
|
+
throw new NotImplementedError(`Logger "${identifier}" already exists`);
|
|
117
|
+
}
|
|
118
|
+
Logger.logger.push({
|
|
119
|
+
logIdentifier: identifier,
|
|
120
|
+
logFormatter: logFormatterFor(options?.logFormat ?? LogFormat.PLAIN),
|
|
121
|
+
log: logger,
|
|
122
|
+
defaultLogLevel: options?.defaultLogLevel ?? LogLevel.DEBUG,
|
|
123
|
+
logLevels: options?.logLevels ?? {},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
public static removeLogger(identifier: string) {
|
|
128
|
+
const index = Logger.logger.findIndex(logger => logger.logIdentifier === identifier);
|
|
129
|
+
if (index === -1) {
|
|
130
|
+
throw new NotImplementedError(`Logger "${identifier}" does not exist`);
|
|
131
|
+
}
|
|
132
|
+
Logger.logger.splice(index, 1);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Get the logger with the matching identifier.
|
|
137
|
+
* @param identifier The identifier of the logger
|
|
138
|
+
*/
|
|
139
|
+
public static getLoggerforIdentifier(identifier: string) {
|
|
140
|
+
const logger = Logger.logger.find(logger => logger.logIdentifier === identifier);
|
|
141
|
+
if (logger === undefined) {
|
|
142
|
+
throw new NotImplementedError(`Unknown logger "${identifier}"`);
|
|
143
|
+
}
|
|
144
|
+
return logger;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Set log level using configuration-style level name for the default logger.
|
|
149
|
+
*/
|
|
150
|
+
static set level(level: number | string) {
|
|
151
|
+
if (level === undefined) {
|
|
152
|
+
level = LogLevel.DEBUG;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
let levelNum;
|
|
156
|
+
if (typeof level === "string") {
|
|
157
|
+
if (level.match(/^[0-9]+$/)) {
|
|
158
|
+
levelNum = Number.parseInt(level);
|
|
159
|
+
} else {
|
|
160
|
+
levelNum = (LogLevel as unknown as Record<string, number | undefined>)[level.toUpperCase()];
|
|
161
|
+
if (levelNum === undefined) {
|
|
162
|
+
throw new ImplementationError(`Unsupported log level "${level}"`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
} else {
|
|
166
|
+
levelNum = level;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (LogLevel[levelNum] === undefined) {
|
|
170
|
+
throw new ImplementationError(`Unsupported log level "${level}"`);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
Logger.defaultLogLevel = levelNum;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Set logFormatter using configuration-style format name.
|
|
178
|
+
*
|
|
179
|
+
* @param format the name of the formatter (see Format enum)
|
|
180
|
+
*/
|
|
181
|
+
static set format(format: string) {
|
|
182
|
+
Logger.setLogFormatterForLogger("default", logFormatterFor(format));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Set facility loglevels for the default logger.
|
|
187
|
+
* @param levels The levels to set
|
|
188
|
+
*/
|
|
189
|
+
public static set logLevels(levels: { [facility: string]: LogLevel }) {
|
|
190
|
+
Logger.setLogLevelsForLogger("default", levels);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Get facility loglevels for the default logger.
|
|
195
|
+
*/
|
|
196
|
+
public static get logLevels() {
|
|
197
|
+
return Logger.getLoggerforIdentifier("default").logLevels;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Set default loglevel for the default logger.
|
|
202
|
+
*
|
|
203
|
+
* @param level The level to set
|
|
204
|
+
*/
|
|
205
|
+
public static set defaultLogLevel(level: LogLevel) {
|
|
206
|
+
Logger.setDefaultLoglevelForLogger("default", level);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Get default loglevel for the default logger.
|
|
211
|
+
*/
|
|
212
|
+
public static get defaultLogLevel() {
|
|
213
|
+
return Logger.getLoggerforIdentifier("default").defaultLogLevel;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Set the log function for the default logger.
|
|
218
|
+
*
|
|
219
|
+
* @param log The log function to set
|
|
220
|
+
*/
|
|
221
|
+
public static set log(log: (level: LogLevel, formattedLog: string) => void) {
|
|
222
|
+
Logger.setLogger("default", log);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Get the log function for the default logger.
|
|
227
|
+
*/
|
|
228
|
+
public static get log() {
|
|
229
|
+
return Logger.getLoggerforIdentifier("default").log;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Set the log formatter for the default logger.
|
|
234
|
+
*
|
|
235
|
+
* @param logFormatter
|
|
236
|
+
*/
|
|
237
|
+
public static set logFormatter(
|
|
238
|
+
logFormatter: (now: Date, level: LogLevel, facility: string, nestingPrefix: string, values: any[]) => string,
|
|
239
|
+
) {
|
|
240
|
+
Logger.setLogFormatterForLogger("default", logFormatter);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Get the log formatter for the default logger.
|
|
245
|
+
*/
|
|
246
|
+
public static get logFormatter() {
|
|
247
|
+
return Logger.getLoggerforIdentifier("default").logFormatter;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Set logFormatter using configuration-style format name for the logger with the matching identifier.
|
|
252
|
+
*
|
|
253
|
+
* @param identifier The identifier of the logger
|
|
254
|
+
* @param format the name of the formatter (see Format enum)
|
|
255
|
+
*/
|
|
256
|
+
public static setFormatForLogger(identifier: string, format: string) {
|
|
257
|
+
const logger = Logger.logger.find(logger => logger.logIdentifier === identifier);
|
|
258
|
+
if (logger) {
|
|
259
|
+
logger.logFormatter = logFormatterFor(format);
|
|
260
|
+
} else {
|
|
261
|
+
throw new NotImplementedError(`Unknown logger "${identifier}"`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Set default loglevel for the logger with the matching identifier.
|
|
267
|
+
*
|
|
268
|
+
* @param identifier The identifier of the logger
|
|
269
|
+
* @param level The level to set
|
|
270
|
+
*/
|
|
271
|
+
public static setDefaultLoglevelForLogger(identifier: string, level: LogLevel) {
|
|
272
|
+
const logger = Logger.logger.find(logger => logger.logIdentifier === identifier);
|
|
273
|
+
if (logger) {
|
|
274
|
+
logger.defaultLogLevel = level;
|
|
275
|
+
} else {
|
|
276
|
+
throw new NotImplementedError(`Unknown logger "${identifier}"`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Set facility loglevels for the logger with the matching identifier.
|
|
282
|
+
*
|
|
283
|
+
* @param identifier The identifier of the logger
|
|
284
|
+
* @param levels The levels to set
|
|
285
|
+
*/
|
|
286
|
+
public static setLogLevelsForLogger(identifier: string, levels: { [facility: string]: LogLevel }) {
|
|
287
|
+
const logger = Logger.logger.find(logger => logger.logIdentifier === identifier);
|
|
288
|
+
if (logger) {
|
|
289
|
+
logger.logLevels = levels;
|
|
290
|
+
} else {
|
|
291
|
+
throw new NotImplementedError(`Unknown logger "${identifier}"`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Set the log function for the logger with the matching identifier.
|
|
297
|
+
*
|
|
298
|
+
* @param identifier The identifier of the logger
|
|
299
|
+
* @param log The log function to set
|
|
300
|
+
*/
|
|
301
|
+
public static setLogger(identifier: string, log: (level: LogLevel, formattedLog: string) => void) {
|
|
302
|
+
const logger = Logger.logger.find(logger => logger.logIdentifier === identifier);
|
|
303
|
+
if (logger) {
|
|
304
|
+
logger.log = log;
|
|
305
|
+
} else {
|
|
306
|
+
throw new NotImplementedError(`Unknown logger "${identifier}"`);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Set the log formatter for the logger with the matching identifier.
|
|
312
|
+
*
|
|
313
|
+
* @param identifier The identifier of the logger
|
|
314
|
+
* @param logFormatter The log formatter to set
|
|
315
|
+
*/
|
|
316
|
+
static setLogFormatterForLogger(
|
|
317
|
+
identifier: string,
|
|
318
|
+
logFormatter: (now: Date, level: LogLevel, facility: string, nestingPrefix: string, values: any[]) => string,
|
|
319
|
+
) {
|
|
320
|
+
const logger = Logger.logger.find(logger => logger.logIdentifier === identifier);
|
|
321
|
+
if (logger) {
|
|
322
|
+
logger.logFormatter = logFormatter;
|
|
323
|
+
} else {
|
|
324
|
+
throw new NotImplementedError(`Unknown logger "${identifier}"`);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Create a new facility.
|
|
330
|
+
*
|
|
331
|
+
* @param name the name of the facility
|
|
332
|
+
* @returns a new facility
|
|
333
|
+
*/
|
|
334
|
+
static get(name: string) {
|
|
335
|
+
return new Logger(name);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Stringify a value (BigInt aware) as JSON.
|
|
340
|
+
*
|
|
341
|
+
* @param data the value to stringify
|
|
342
|
+
* @returns the stringified value
|
|
343
|
+
*/
|
|
344
|
+
static toJSON(data: any) {
|
|
345
|
+
return JSON.stringify(data, (_, value) => {
|
|
346
|
+
if (typeof value === "bigint") {
|
|
347
|
+
return value.toString();
|
|
348
|
+
}
|
|
349
|
+
if (value instanceof Uint8Array) {
|
|
350
|
+
return Bytes.toHex(value);
|
|
351
|
+
}
|
|
352
|
+
if (value === undefined) {
|
|
353
|
+
return "undefined";
|
|
354
|
+
}
|
|
355
|
+
return value;
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Mask a string with a given character. If unmaskedLength is provided then these number of characters will be
|
|
361
|
+
* shown unmasked.
|
|
362
|
+
*
|
|
363
|
+
* @param str String to mask
|
|
364
|
+
* @param maskChar character to mask with
|
|
365
|
+
* @param unmaskedLength number of characters to show unmasked in the beginning
|
|
366
|
+
*/
|
|
367
|
+
static maskString(str: string, maskChar = "*", unmaskedLength?: number) {
|
|
368
|
+
return str.substring(0, unmaskedLength ?? 0) + str.substring(unmaskedLength ?? 0).replace(/./g, maskChar);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Perform operations in a nested logging context. Messages will be
|
|
373
|
+
* indented while the context executes.
|
|
374
|
+
*/
|
|
375
|
+
static nest<T>(context: () => T): T {
|
|
376
|
+
this.nestingLevel++;
|
|
377
|
+
try {
|
|
378
|
+
return context();
|
|
379
|
+
} finally {
|
|
380
|
+
this.nestingLevel--;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Async version of nest().
|
|
386
|
+
*/
|
|
387
|
+
static async nestAsync(context: () => Promise<any>) {
|
|
388
|
+
this.nestingLevel++;
|
|
389
|
+
try {
|
|
390
|
+
return await context();
|
|
391
|
+
} finally {
|
|
392
|
+
this.nestingLevel--;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Unhandled error reporter.
|
|
398
|
+
*
|
|
399
|
+
* Some environments do not report full error details such as {@link Error#cause} and {@link AggregateError#errors}.
|
|
400
|
+
*
|
|
401
|
+
* To ensure these details are always recorded somewhere, unhandled errors may be reported here.
|
|
402
|
+
*
|
|
403
|
+
* To disable this behavior replace this function.
|
|
404
|
+
*/
|
|
405
|
+
static reportUnhandledError(error: Error) {
|
|
406
|
+
try {
|
|
407
|
+
Logger.get("Logger").fatal("Unhandled error detected:", error);
|
|
408
|
+
} catch (e) {
|
|
409
|
+
// We do not want to cause yet another error so if logging fails for any reason it goes unreported
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* Invoke logic and return any log messages produced.
|
|
415
|
+
*/
|
|
416
|
+
static capture(fn: () => void, fromLogger = "default") {
|
|
417
|
+
if (!Logger) {
|
|
418
|
+
throw new Error("No logger loaded, cannot capture logs");
|
|
419
|
+
}
|
|
420
|
+
const logger = Logger.getLoggerforIdentifier(fromLogger);
|
|
421
|
+
const actualLogSettings = {
|
|
422
|
+
logFormatter: logger.logFormatter,
|
|
423
|
+
log: logger.log,
|
|
424
|
+
defaultLogLevel: logger.defaultLogLevel,
|
|
425
|
+
logLevels: { ...logger.logLevels },
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
try {
|
|
429
|
+
Logger.setFormatForLogger(fromLogger, LogFormat.PLAIN);
|
|
430
|
+
const captured = new Array<{ level: LogLevel; message: string }>();
|
|
431
|
+
Logger.setLogger(fromLogger, (level, message) =>
|
|
432
|
+
captured.push({
|
|
433
|
+
level,
|
|
434
|
+
message: message.replace(/\d{4}-\d\d-\d\d \d\d:\d\d:\d\d\.\d\d\d/, "xxxx-xx-xx xx:xx:xx.xxx"),
|
|
435
|
+
}),
|
|
436
|
+
);
|
|
437
|
+
fn();
|
|
438
|
+
return captured;
|
|
439
|
+
} finally {
|
|
440
|
+
Logger.setLogFormatterForLogger(fromLogger, actualLogSettings.logFormatter);
|
|
441
|
+
Logger.setDefaultLoglevelForLogger(fromLogger, actualLogSettings.defaultLogLevel);
|
|
442
|
+
Logger.setLogLevelsForLogger(fromLogger, actualLogSettings.logLevels);
|
|
443
|
+
Logger.setLogger(fromLogger, actualLogSettings.log);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
constructor(private readonly name: string) {}
|
|
448
|
+
|
|
449
|
+
debug = (...values: any[]) => this.log(LogLevel.DEBUG, values);
|
|
450
|
+
info = (...values: any[]) => this.log(LogLevel.INFO, values);
|
|
451
|
+
notice = (...values: any[]) => this.log(LogLevel.NOTICE, values);
|
|
452
|
+
warn = (...values: any[]) => this.log(LogLevel.WARN, values);
|
|
453
|
+
error = (...values: any[]) => this.log(LogLevel.ERROR, values);
|
|
454
|
+
fatal = (...values: any[]) => this.log(LogLevel.FATAL, values);
|
|
455
|
+
|
|
456
|
+
private log(level: LogLevel, values: any[]) {
|
|
457
|
+
Logger.logger.forEach(logger => {
|
|
458
|
+
if (level < (logger.logLevels[this.name] ?? logger.defaultLogLevel)) return;
|
|
459
|
+
logger.log(level, logger.logFormatter(Time.now(), level, this.name, nestingPrefix(), values));
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
// Hook for testing frameworks
|
|
465
|
+
if (typeof MatterHooks !== "undefined") {
|
|
466
|
+
MatterHooks.loggerSetup?.(Logger);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
function nestingPrefix() {
|
|
470
|
+
if (Logger.nestingLevel) {
|
|
471
|
+
return "⎸".padEnd(Logger.nestingLevel * 2);
|
|
472
|
+
}
|
|
473
|
+
return "";
|
|
474
|
+
}
|
package/src/log/index.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export * from "./Diagnostic.js";
|
|
8
|
+
export * from "./DiagnosticSource.js";
|
|
9
|
+
export * from "./LogFormat.js";
|
|
10
|
+
export * from "./Logger.js";
|
|
11
|
+
export * from "./LogLevel.js";
|
|
@@ -0,0 +1,100 @@
|
|
|
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
|
+
|
|
9
|
+
class GaloisField {
|
|
10
|
+
private readonly exp = new Array<number>();
|
|
11
|
+
private readonly log = new Array<number>();
|
|
12
|
+
readonly size: number;
|
|
13
|
+
|
|
14
|
+
constructor(
|
|
15
|
+
private readonly prime = 0x11d,
|
|
16
|
+
generator = 2,
|
|
17
|
+
c_exp = 8,
|
|
18
|
+
) {
|
|
19
|
+
this.size = Math.floor(Math.pow(2, c_exp) - 1);
|
|
20
|
+
let x = 1;
|
|
21
|
+
for (let i = 0; i < this.size; i++) {
|
|
22
|
+
this.exp[i] = x;
|
|
23
|
+
this.log[x] = i;
|
|
24
|
+
x = this.multiplyNoLut(x, generator);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
for (let i = this.size; i < this.size * 2; i++) {
|
|
28
|
+
this.exp[i] = this.exp[i - this.size];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public multiply(x: number, y: number) {
|
|
33
|
+
if (x === 0 || y === 0) return 0;
|
|
34
|
+
return this.exp[(this.log[x] + this.log[y]) % this.size];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public multiplyPolynom(p: number[], q: number[]) {
|
|
38
|
+
const result = new Array<number>();
|
|
39
|
+
const logP = new Array<number>();
|
|
40
|
+
for (let i = 0; i < p.length; i++) {
|
|
41
|
+
logP[i] = this.log[p[i]];
|
|
42
|
+
}
|
|
43
|
+
for (let j = 0; j < q.length; j++) {
|
|
44
|
+
if (q[j] === 0) continue;
|
|
45
|
+
const lq = this.log[q[j]];
|
|
46
|
+
for (let i = 0; i < p.length; i++) {
|
|
47
|
+
if (p[i] === 0) continue;
|
|
48
|
+
result[i + j] ^= this.exp[logP[i] + lq];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public power(x: number, power: number) {
|
|
55
|
+
return this.exp[(this.log[x] * power) % this.size];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private multiplyNoLut(x: number, y: number) {
|
|
59
|
+
let result = 0;
|
|
60
|
+
while (y > 0) {
|
|
61
|
+
if ((y & 1) !== 0) result = result ^ x;
|
|
62
|
+
y = y >> 1;
|
|
63
|
+
x = x << 1;
|
|
64
|
+
if (x > this.size) {
|
|
65
|
+
x = x ^ this.prime;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export class ReedSolomon {
|
|
73
|
+
private readonly galoisField = new GaloisField();
|
|
74
|
+
|
|
75
|
+
computeErrorCorrection(data: Uint8Array, ecLength: number) {
|
|
76
|
+
const { length } = data;
|
|
77
|
+
if (length + ecLength > this.galoisField.size) throw new UnexpectedDataError("Message is too long");
|
|
78
|
+
|
|
79
|
+
const generator = this.generatePolynom(ecLength);
|
|
80
|
+
const { length: generatorLength } = generator;
|
|
81
|
+
const buffer = new Uint8Array(length + generatorLength - 1);
|
|
82
|
+
buffer.set(data, 0);
|
|
83
|
+
for (let i = 0; i < length; i++) {
|
|
84
|
+
const coef = buffer[i];
|
|
85
|
+
if (coef === 0) continue;
|
|
86
|
+
for (let j = 0; j < generatorLength; j++) {
|
|
87
|
+
buffer[i + j] ^= this.galoisField.multiply(generator[j], coef);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return buffer.slice(length);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
private generatePolynom(ecLength: number) {
|
|
94
|
+
let result = [1];
|
|
95
|
+
for (let i = 0; i < ecLength; i++) {
|
|
96
|
+
result = this.galoisField.multiplyPolynom(result, [1, this.galoisField.power(2, i)]);
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Verhoeff algorithm to compute a checksum.
|
|
9
|
+
*
|
|
10
|
+
* @see {@link https://en.wikipedia.org/wiki/Verhoeff_algorithm}
|
|
11
|
+
*/
|
|
12
|
+
export class Verhoeff {
|
|
13
|
+
// This is rarely used so no need to keep those constants in memory
|
|
14
|
+
private readonly multiply = [
|
|
15
|
+
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
|
16
|
+
[1, 2, 3, 4, 0, 6, 7, 8, 9, 5],
|
|
17
|
+
[2, 3, 4, 0, 1, 7, 8, 9, 5, 6],
|
|
18
|
+
[3, 4, 0, 1, 2, 8, 9, 5, 6, 7],
|
|
19
|
+
[4, 0, 1, 2, 3, 9, 5, 6, 7, 8],
|
|
20
|
+
[5, 9, 8, 7, 6, 0, 4, 3, 2, 1],
|
|
21
|
+
[6, 5, 9, 8, 7, 1, 0, 4, 3, 2],
|
|
22
|
+
[7, 6, 5, 9, 8, 2, 1, 0, 4, 3],
|
|
23
|
+
[8, 7, 6, 5, 9, 3, 2, 1, 0, 4],
|
|
24
|
+
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0],
|
|
25
|
+
];
|
|
26
|
+
private readonly inverse = [0, 4, 3, 2, 1, 5, 6, 7, 8, 9];
|
|
27
|
+
private readonly permute = [
|
|
28
|
+
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
|
29
|
+
[1, 5, 7, 6, 2, 8, 3, 0, 9, 4],
|
|
30
|
+
[5, 8, 0, 3, 7, 9, 6, 1, 4, 2],
|
|
31
|
+
[8, 9, 1, 6, 0, 4, 3, 5, 2, 7],
|
|
32
|
+
[9, 4, 5, 3, 1, 2, 6, 8, 7, 0],
|
|
33
|
+
[4, 2, 8, 6, 5, 7, 3, 9, 0, 1],
|
|
34
|
+
[2, 7, 9, 3, 8, 0, 6, 4, 1, 5],
|
|
35
|
+
[7, 0, 4, 6, 9, 1, 3, 2, 5, 8],
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
computeChecksum(digits: string) {
|
|
39
|
+
const { length } = digits;
|
|
40
|
+
let checksum = 0;
|
|
41
|
+
for (let i = 1; i <= length; i++) {
|
|
42
|
+
const digit = Number.parseInt(digits[length - i]);
|
|
43
|
+
checksum = this.multiply[checksum][this.permute[i % 8][digit]];
|
|
44
|
+
}
|
|
45
|
+
return this.inverse[checksum];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export enum ChannelType {
|
|
8
|
+
UDP = "udp",
|
|
9
|
+
BLE = "ble",
|
|
10
|
+
TCP = "tcp",
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface Channel<T> {
|
|
14
|
+
/** Maximum Payload size for this channel */
|
|
15
|
+
maxPayloadSize: number;
|
|
16
|
+
|
|
17
|
+
/** Is the transport Reliable? UDP is not, TCP and BTP are. */
|
|
18
|
+
isReliable: boolean;
|
|
19
|
+
|
|
20
|
+
/** Channel name */
|
|
21
|
+
name: string;
|
|
22
|
+
|
|
23
|
+
type: ChannelType;
|
|
24
|
+
|
|
25
|
+
/** Method to send data to the remote endpoint */
|
|
26
|
+
send(data: T): Promise<void>;
|
|
27
|
+
|
|
28
|
+
/** Method to close the channel */
|
|
29
|
+
close(): Promise<void>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Environment } from "#environment/Environment.js";
|
|
8
|
+
import { Environmental } from "#environment/Environmental.js";
|
|
9
|
+
import { Channel } from "./Channel.js";
|
|
10
|
+
import { ServerAddress } from "./ServerAddress.js";
|
|
11
|
+
import { TransportInterface, TransportInterfaceSet } from "./TransportInterface.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A Network interface enhances a TransportInterface with the ability to open a channel to a remote server.
|
|
15
|
+
*/
|
|
16
|
+
export interface NetInterface extends TransportInterface {
|
|
17
|
+
openChannel(address: ServerAddress): Promise<Channel<Uint8Array>>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function isNetworkInterface(obj: TransportInterface | NetInterface): obj is NetInterface {
|
|
21
|
+
return "openChannel" in obj;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A collection of {@link NetInterfaces} managed as a unit.
|
|
26
|
+
*/
|
|
27
|
+
export class NetInterfaceSet extends TransportInterfaceSet<NetInterface> {
|
|
28
|
+
[Environmental.create](env: Environment) {
|
|
29
|
+
const instance = new NetInterfaceSet();
|
|
30
|
+
env.set(NetInterfaceSet, this);
|
|
31
|
+
return instance;
|
|
32
|
+
}
|
|
33
|
+
}
|