@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,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utils for promises.
|
|
3
|
+
*
|
|
4
|
+
* @license
|
|
5
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
6
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { InternalError, MatterError } from "../MatterError.js";
|
|
10
|
+
import { Time } from "../time/Time.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Obtain a promise with functions to resolve and reject.
|
|
14
|
+
*/
|
|
15
|
+
export function createPromise<T>(): {
|
|
16
|
+
promise: Promise<T>;
|
|
17
|
+
resolver: (value: T) => void;
|
|
18
|
+
rejecter: (reason?: any) => void;
|
|
19
|
+
} {
|
|
20
|
+
let resolver, rejecter;
|
|
21
|
+
const promise = new Promise<T>((resolve, reject) => {
|
|
22
|
+
resolver = resolve;
|
|
23
|
+
rejecter = reject;
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
if (!resolver || !rejecter) {
|
|
27
|
+
// This doesn't happen but asserts that resolver and rejecter are defined.
|
|
28
|
+
throw new InternalError("Failed to extract resolve/reject from Promise context");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
promise,
|
|
33
|
+
resolver,
|
|
34
|
+
rejecter,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Use all promises or promise returning methods and return the first resolved promise or reject when all promises
|
|
40
|
+
* rejected
|
|
41
|
+
*/
|
|
42
|
+
export function anyPromise<T>(promises: ((() => Promise<T>) | Promise<T>)[]): Promise<T> {
|
|
43
|
+
return new Promise((resolve, reject) => {
|
|
44
|
+
let numberRejected = 0;
|
|
45
|
+
let wasResolved = false;
|
|
46
|
+
for (const entry of promises) {
|
|
47
|
+
const promise = typeof entry === "function" ? entry() : entry;
|
|
48
|
+
promise
|
|
49
|
+
.then(value => {
|
|
50
|
+
if (!wasResolved) {
|
|
51
|
+
wasResolved = true;
|
|
52
|
+
resolve(value);
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
.catch(reason => {
|
|
56
|
+
numberRejected++;
|
|
57
|
+
if (!wasResolved && numberRejected === promises.length) {
|
|
58
|
+
reject(reason);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Thrown when a timed promise times out.
|
|
67
|
+
*/
|
|
68
|
+
export class PromiseTimeoutError extends MatterError {
|
|
69
|
+
constructor(message = "Operation timed out") {
|
|
70
|
+
super(message);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Create a promise with a timeout.
|
|
76
|
+
*
|
|
77
|
+
* By default rejects with {@link PromiseTimeoutError} on timeout but you can override by supplying {@link cancel}.
|
|
78
|
+
*
|
|
79
|
+
* @param timeoutMs the timeout in milliseconds
|
|
80
|
+
* @param promise a promise that resolves or rejects when the timed task completes
|
|
81
|
+
* @param cancel invoked on timeout (default implementation throws {@link PromiseTimeoutError})
|
|
82
|
+
*/
|
|
83
|
+
export async function withTimeout<T>(
|
|
84
|
+
timeoutMs: number,
|
|
85
|
+
promise: Promise<T>,
|
|
86
|
+
cancel?: AbortController | (() => void),
|
|
87
|
+
): Promise<T> {
|
|
88
|
+
let cancelFn;
|
|
89
|
+
if (typeof cancel === "function") {
|
|
90
|
+
cancelFn = cancel;
|
|
91
|
+
} else if (typeof cancel?.abort === "function") {
|
|
92
|
+
cancelFn = () => cancel.abort();
|
|
93
|
+
} else {
|
|
94
|
+
cancelFn = () => {
|
|
95
|
+
throw new PromiseTimeoutError();
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
let cancelTimer: undefined | (() => void);
|
|
100
|
+
|
|
101
|
+
// Sub-promise 1, the timer
|
|
102
|
+
const timeout = new Promise<void>((resolve, reject) => {
|
|
103
|
+
const timer = Time.getTimer("promise-timeout", timeoutMs, () => reject(cancelFn));
|
|
104
|
+
|
|
105
|
+
cancelTimer = () => {
|
|
106
|
+
timer.stop();
|
|
107
|
+
resolve();
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
timer.start();
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
let result: undefined | T;
|
|
114
|
+
|
|
115
|
+
// Sub-promise 2, captures result and cancels timer
|
|
116
|
+
const producer = promise.then(
|
|
117
|
+
r => {
|
|
118
|
+
cancelTimer?.();
|
|
119
|
+
result = r;
|
|
120
|
+
},
|
|
121
|
+
e => {
|
|
122
|
+
cancelTimer?.();
|
|
123
|
+
throw e;
|
|
124
|
+
},
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
// Output promise, resolves like input promise unless timed out
|
|
128
|
+
await Promise.all([timeout, producer]);
|
|
129
|
+
|
|
130
|
+
return result as T;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Return type for functions that are optionally asynchronous.
|
|
135
|
+
*
|
|
136
|
+
* TODO - as currently defined MaybePromise of a Promise incorrectly wraps as a Promise of a Promise
|
|
137
|
+
*/
|
|
138
|
+
export type MaybePromise<T = void> = T | PromiseLike<T>;
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Promise-like version of above.
|
|
142
|
+
*/
|
|
143
|
+
export type MaybePromiseLike<T = void> = T | PromiseLike<T>;
|
|
144
|
+
|
|
145
|
+
export const MaybePromise = {
|
|
146
|
+
/**
|
|
147
|
+
* Determine whether a {@link MaybePromiseLike} is a {@link Promise}.
|
|
148
|
+
*/
|
|
149
|
+
is<T>(value: MaybePromise<T>): value is PromiseLike<T> {
|
|
150
|
+
// We cannot use isObject because this could collide with valid values here
|
|
151
|
+
return typeof value === "object" && value !== null && typeof (value as { then?: unknown }).then === "function";
|
|
152
|
+
},
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Chained MaybePromise. Invokes the resolve function immediately if the {@link MaybePromise} is not a
|
|
156
|
+
* {@link Promise}, otherwise the same as a normal {@link Promise.then}.
|
|
157
|
+
*/
|
|
158
|
+
then<I, O1 = never, O2 = never>(
|
|
159
|
+
producer: MaybePromise<I> | (() => MaybePromise<I>),
|
|
160
|
+
resolve?: ((input: I) => MaybePromise<O1>) | null,
|
|
161
|
+
reject?: ((error: any) => MaybePromise<O2>) | null,
|
|
162
|
+
): MaybePromise<O1 | O2> {
|
|
163
|
+
let rejected = false;
|
|
164
|
+
|
|
165
|
+
try {
|
|
166
|
+
let value;
|
|
167
|
+
if (producer instanceof Function) {
|
|
168
|
+
value = producer();
|
|
169
|
+
} else {
|
|
170
|
+
value = producer;
|
|
171
|
+
}
|
|
172
|
+
if (MaybePromise.is(value)) {
|
|
173
|
+
return value.then(
|
|
174
|
+
resolve,
|
|
175
|
+
reject
|
|
176
|
+
? error => {
|
|
177
|
+
// If reject() is not async then we will catch rejection errors below but should not
|
|
178
|
+
// reject again
|
|
179
|
+
rejected = true;
|
|
180
|
+
|
|
181
|
+
return reject?.(error);
|
|
182
|
+
}
|
|
183
|
+
: undefined,
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
if (resolve) {
|
|
187
|
+
return resolve(value);
|
|
188
|
+
}
|
|
189
|
+
} catch (e) {
|
|
190
|
+
if (reject && !rejected) {
|
|
191
|
+
return reject(e);
|
|
192
|
+
}
|
|
193
|
+
throw e;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Make TypeScript happy
|
|
197
|
+
return undefined as MaybePromise<O1 | O2>;
|
|
198
|
+
},
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Equivalent of {@link Promise.catch}.
|
|
202
|
+
*/
|
|
203
|
+
catch<T, TResult = never>(
|
|
204
|
+
producer: MaybePromise<T> | (() => MaybePromise<T>),
|
|
205
|
+
onrejected?: ((reason: any) => MaybePromise<TResult>) | undefined | null,
|
|
206
|
+
) {
|
|
207
|
+
return this.then(producer, undefined, onrejected);
|
|
208
|
+
},
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Equivalent of {@link Promise.finally}.
|
|
212
|
+
*/
|
|
213
|
+
finally<T>(
|
|
214
|
+
producer: MaybePromise<T> | (() => MaybePromise<T>),
|
|
215
|
+
onfinally?: (() => MaybePromise<void>) | undefined | null,
|
|
216
|
+
): MaybePromise<T> {
|
|
217
|
+
let result: MaybePromise<T> | undefined;
|
|
218
|
+
try {
|
|
219
|
+
if (typeof producer === "function") {
|
|
220
|
+
result = (producer as () => MaybePromise<T>)();
|
|
221
|
+
} else {
|
|
222
|
+
result = producer;
|
|
223
|
+
}
|
|
224
|
+
} finally {
|
|
225
|
+
if (MaybePromise.is(result)) {
|
|
226
|
+
// Use native finally or fake via then
|
|
227
|
+
if (typeof (result as Promise<any>).finally === "function") {
|
|
228
|
+
// TypeScript's types are wrong for finally, they specify the callback as () => void rather than
|
|
229
|
+
// accepting a promise return. TS itself somehow doesn't mind this because a function returning
|
|
230
|
+
// something can be assigned to a promise returning void.
|
|
231
|
+
//
|
|
232
|
+
// The TS folks rationalize this here:
|
|
233
|
+
//
|
|
234
|
+
// https://github.com/microsoft/TypeScript/issues/44980
|
|
235
|
+
//
|
|
236
|
+
// Eslint used to work around this sometimes (was never sure when or whether it was intentional) but
|
|
237
|
+
// something broke when we updated typescript-eslint to 7.1.1.
|
|
238
|
+
//
|
|
239
|
+
// The eslint folks blow this off here. Includes a comment referencing a TS playground that
|
|
240
|
+
// demonstrates eslint behavior is incorrect:
|
|
241
|
+
//
|
|
242
|
+
// https://github.com/typescript-eslint/typescript-eslint/issues/7276
|
|
243
|
+
//
|
|
244
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
245
|
+
result = (result as Promise<T>).finally(onfinally);
|
|
246
|
+
} else {
|
|
247
|
+
result = result.then(
|
|
248
|
+
value =>
|
|
249
|
+
MaybePromise.then(
|
|
250
|
+
() => onfinally?.(),
|
|
251
|
+
() => value,
|
|
252
|
+
),
|
|
253
|
+
error =>
|
|
254
|
+
MaybePromise.then(
|
|
255
|
+
() => onfinally?.(),
|
|
256
|
+
() => {
|
|
257
|
+
throw error;
|
|
258
|
+
},
|
|
259
|
+
),
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
} else {
|
|
263
|
+
// The only return value from onfinally that should affect results is a rejected promise, so if we
|
|
264
|
+
// receive a return value chain such that it either throws or we return the actual result
|
|
265
|
+
const finallyResult = onfinally?.();
|
|
266
|
+
if (MaybePromise.is(finallyResult)) {
|
|
267
|
+
const actualResult = result as T;
|
|
268
|
+
result = finallyResult.then(() => actualResult);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return result;
|
|
273
|
+
},
|
|
274
|
+
|
|
275
|
+
[Symbol.toStringTag]: "MaybePromise",
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
MaybePromise.toString = () => "MaybePromise";
|
package/src/util/Set.ts
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Observable } from "./Observable.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A read-only set.
|
|
11
|
+
*/
|
|
12
|
+
export interface ImmutableSet<T> {
|
|
13
|
+
[Symbol.iterator]: () => Iterator<T, undefined>;
|
|
14
|
+
has(item: T): boolean;
|
|
15
|
+
get size(): number;
|
|
16
|
+
find(predicate: (item: T) => boolean | undefined): T | undefined;
|
|
17
|
+
filter(predicate: (item: T) => boolean | undefined): T[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A write-only set.
|
|
22
|
+
*/
|
|
23
|
+
export interface MutableSet<T, AddT = T> {
|
|
24
|
+
add(definition: AddT): void;
|
|
25
|
+
delete(definition: T): boolean;
|
|
26
|
+
clear(): void;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Set change events.
|
|
31
|
+
*/
|
|
32
|
+
export interface ObservableSet<T> {
|
|
33
|
+
get added(): Observable<[T]>;
|
|
34
|
+
get deleted(): Observable<[T]>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* An interface for index set lookup.
|
|
39
|
+
*/
|
|
40
|
+
export interface IndexedSet<T> {
|
|
41
|
+
get<F extends keyof T>(field: F, value: T[F]): T | undefined;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* A generic set implementation supporting all interfaces in this module.
|
|
46
|
+
*
|
|
47
|
+
* Unused features have minimal performance impact.
|
|
48
|
+
*/
|
|
49
|
+
export class BasicSet<T, AddT = T> implements ImmutableSet<T>, MutableSet<T, AddT>, ObservableSet<T>, IndexedSet<T> {
|
|
50
|
+
#entries = new Set<T>();
|
|
51
|
+
#added?: Observable<[T]>;
|
|
52
|
+
#deleted?: Observable<[T]>;
|
|
53
|
+
#indices?: {
|
|
54
|
+
[field in keyof T]?: Map<any, T>;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
constructor(...initialItems: AddT[]) {
|
|
58
|
+
for (const item of initialItems) {
|
|
59
|
+
this.add(item);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[Symbol.iterator]() {
|
|
64
|
+
return this.#entries[Symbol.iterator]();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
get size() {
|
|
68
|
+
return this.#entries.size;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
map<R>(mapper: (item: T) => R) {
|
|
72
|
+
return [...this].map(mapper);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
find(predicate: (item: T) => boolean | undefined) {
|
|
76
|
+
for (const item of this) {
|
|
77
|
+
if (predicate(item)) {
|
|
78
|
+
return item;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
filter(predicate: (item: T) => boolean | undefined) {
|
|
84
|
+
const result = new Array<T>();
|
|
85
|
+
for (const item of this) {
|
|
86
|
+
if (predicate(item)) {
|
|
87
|
+
result.push(item);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
has(item: T) {
|
|
94
|
+
return this.#entries.has(item);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
add(item: AddT) {
|
|
98
|
+
const created = this.create(item);
|
|
99
|
+
|
|
100
|
+
if (this.#entries.has(item as any)) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
this.#entries.add(item as any);
|
|
105
|
+
|
|
106
|
+
if (this.#indices) {
|
|
107
|
+
for (const field in this.#indices) {
|
|
108
|
+
const value = created[field];
|
|
109
|
+
if (value === undefined) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const index = this.#indices[field];
|
|
114
|
+
if (index === undefined || index.has(value)) {
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
index.set(value, created);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
this.#added?.emit(created);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
get<F extends keyof T>(field: F, value: T[F]) {
|
|
126
|
+
if (!this.#indices) {
|
|
127
|
+
this.#indices = {};
|
|
128
|
+
}
|
|
129
|
+
let index = this.#indices[field];
|
|
130
|
+
if (index === undefined) {
|
|
131
|
+
index = new Map<any, T>();
|
|
132
|
+
for (const item of this) {
|
|
133
|
+
const value = item[field];
|
|
134
|
+
if (value === undefined || index.has(value)) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
index.set(value, item);
|
|
138
|
+
}
|
|
139
|
+
this.#indices[field] = index;
|
|
140
|
+
}
|
|
141
|
+
return index?.get(value);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
delete(item: T) {
|
|
145
|
+
if (!this.#entries.delete(item)) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (this.#indices) {
|
|
150
|
+
for (const field in this.#indices) {
|
|
151
|
+
const value = item[field];
|
|
152
|
+
if (value === undefined) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const index = this.#indices[field];
|
|
157
|
+
if (index !== undefined && index.get(value) === item) {
|
|
158
|
+
index.delete(value);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
this.#deleted?.emit(item);
|
|
164
|
+
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
clear() {
|
|
169
|
+
this.#entries.clear();
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
get added() {
|
|
173
|
+
if (this.#added === undefined) {
|
|
174
|
+
this.#added = Observable();
|
|
175
|
+
}
|
|
176
|
+
return this.#added;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
get deleted() {
|
|
180
|
+
if (this.#deleted === undefined) {
|
|
181
|
+
this.#deleted = Observable();
|
|
182
|
+
}
|
|
183
|
+
return this.#deleted;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
protected create(definition: AddT) {
|
|
187
|
+
return definition as unknown as T;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export function singleton<T>(create: () => T) {
|
|
8
|
+
let instance: T | undefined;
|
|
9
|
+
return () => {
|
|
10
|
+
if (instance === undefined) instance = create();
|
|
11
|
+
return instance;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
|
|
8
|
+
export class EndOfStreamError extends MatterError {
|
|
9
|
+
constructor(message = "Unexpected end of stream") {
|
|
10
|
+
super(message);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class NoResponseTimeoutError extends MatterError {}
|
|
15
|
+
|
|
16
|
+
export interface Stream<T> {
|
|
17
|
+
read(): Promise<T>;
|
|
18
|
+
write(data: T): Promise<void>;
|
|
19
|
+
}
|