@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,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import "../polyfills/disposable.js";
|
|
7
|
+
import { MaybePromise } from "./Promises.js";
|
|
8
|
+
/**
|
|
9
|
+
* A callback function for observables.
|
|
10
|
+
*
|
|
11
|
+
* The observer return value effects how an {@link Observable} emits:
|
|
12
|
+
*
|
|
13
|
+
* - If an observer returns undefined the {@link Observable} invokes the next observer immediately.
|
|
14
|
+
*
|
|
15
|
+
* - If an observer returns a {@link Promise}, the {@link Observable} awaits the return value then continues as
|
|
16
|
+
* described here. The emitter must then await the {@link Promise} returned by {@link Observable.emit}.
|
|
17
|
+
*
|
|
18
|
+
* - Any other return value is returned by {@link Observable.emit} and subsequent observers do not see emission.
|
|
19
|
+
*
|
|
20
|
+
* @param payload a list of arguments to be emitted
|
|
21
|
+
*/
|
|
22
|
+
export interface Observer<T extends any[] = any[], R = void> {
|
|
23
|
+
(...payload: T): MaybePromise<R | undefined>;
|
|
24
|
+
[observant]?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A discrete event that may be monitored via callback. Could call it "event" but that could be confused with Matter
|
|
28
|
+
* cluster events and/or DOM events.
|
|
29
|
+
*
|
|
30
|
+
* @param T arguments, should be a named tuple
|
|
31
|
+
*/
|
|
32
|
+
export interface Observable<T extends any[] = any[], R = void> extends AsyncIterable<T>, PromiseLike<T> {
|
|
33
|
+
/**
|
|
34
|
+
* Notify observers.
|
|
35
|
+
*/
|
|
36
|
+
emit(...args: T): R | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Add an observer.
|
|
39
|
+
*/
|
|
40
|
+
on(observer: Observer<T, R>): void;
|
|
41
|
+
/**
|
|
42
|
+
* Remove an observer.
|
|
43
|
+
*/
|
|
44
|
+
off(observer: Observer<T, R>): void;
|
|
45
|
+
/**
|
|
46
|
+
* Add an observer that emits once then is unregistered.
|
|
47
|
+
*/
|
|
48
|
+
once(observer: Observer<T, R>): void;
|
|
49
|
+
/**
|
|
50
|
+
* True if there is at least one observer registered.
|
|
51
|
+
*/
|
|
52
|
+
isObserved: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Determine whether an observer is registered.
|
|
55
|
+
*/
|
|
56
|
+
isObservedBy(observer: Observer<T, R>): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* This flag indicates whether the observable is asynchronous. Any observable that accepts promise returns may
|
|
59
|
+
* be asynchronous but this information is not available at runtime unless you specify here, typically via
|
|
60
|
+
* {@link AsyncObservable}.
|
|
61
|
+
*/
|
|
62
|
+
isAsync?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Observable supports standard "for await (const value of observable").
|
|
65
|
+
*
|
|
66
|
+
* Using an observer in this manner limits your listener to the first parameter normally emitted and your observer
|
|
67
|
+
* cannot return a value.
|
|
68
|
+
*/
|
|
69
|
+
[Symbol.asyncIterator](): AsyncIterator<T[0]>;
|
|
70
|
+
/**
|
|
71
|
+
* Release resources associated with the observable.
|
|
72
|
+
*/
|
|
73
|
+
[Symbol.dispose](): void;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* An observer may designate itself as "not observant" for the purposes of {@link Observable.isObserved} by returning
|
|
77
|
+
* false from this field.
|
|
78
|
+
*/
|
|
79
|
+
export declare const observant: unique symbol;
|
|
80
|
+
/**
|
|
81
|
+
* An {@link Observable} that explicitly supports asynchronous observers.
|
|
82
|
+
*/
|
|
83
|
+
export interface AsyncObservable<T extends any[] = any[], R = void> extends Observable<T, MaybePromise<R>> {
|
|
84
|
+
isAsync: true;
|
|
85
|
+
}
|
|
86
|
+
export type ObserverErrorHandler = (error: Error, observer: Observer<any[], any>) => void;
|
|
87
|
+
/**
|
|
88
|
+
* A concrete {@link Observable} implementation.
|
|
89
|
+
*/
|
|
90
|
+
export declare class BasicObservable<T extends any[] = any[], R = void> implements Observable<T, R> {
|
|
91
|
+
#private;
|
|
92
|
+
constructor(errorHandler?: ObserverErrorHandler, isAsync?: boolean);
|
|
93
|
+
[Symbol.dispose](): void;
|
|
94
|
+
get isAsync(): boolean | undefined;
|
|
95
|
+
set isAsync(isAsync: boolean | undefined);
|
|
96
|
+
get isObserved(): boolean;
|
|
97
|
+
isObservedBy(observer: Observer<T, R>): boolean;
|
|
98
|
+
emit(...payload: T): R | undefined;
|
|
99
|
+
on(observer: Observer<T, R>): void;
|
|
100
|
+
off(observer: Observer<T, R>): void;
|
|
101
|
+
once(observer: Observer<T, R>): void;
|
|
102
|
+
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): PromiseLike<TResult1 | TResult2>;
|
|
103
|
+
[Symbol.asyncIterator](): AsyncIterator<T[0]>;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Create an {@link Observable}.
|
|
107
|
+
*/
|
|
108
|
+
export declare const Observable: {
|
|
109
|
+
new <T extends any[], R = void>(errorHandler?: ObserverErrorHandler): Observable<T, R>;
|
|
110
|
+
<T extends any[], R = void>(errorHandler?: ObserverErrorHandler): Observable<T, R>;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Create an {@link AsyncObservable} that explicitly supports asynchronous results
|
|
114
|
+
*/
|
|
115
|
+
export declare const AsyncObservable: {
|
|
116
|
+
new <T extends any[], R = void>(errorHandler?: ObserverErrorHandler): AsyncObservable<T, R>;
|
|
117
|
+
<T extends any[], R = void>(errorHandler?: ObserverErrorHandler): AsyncObservable<T, R>;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* A set of observables. You can bind events using individual observables or the methods emulating a subset Node's
|
|
121
|
+
* EventEmitter.
|
|
122
|
+
*
|
|
123
|
+
* To maintain type safety, implementers define events as observable child properties.
|
|
124
|
+
*/
|
|
125
|
+
export declare class EventEmitter {
|
|
126
|
+
emit<This, N extends EventEmitter.NamesOf<This>>(this: This, name: N, ...payload: EventEmitter.PayloadOf<This, N>): void;
|
|
127
|
+
addListener<This, N extends EventEmitter.NamesOf<This>>(this: This, name: N, handler: EventEmitter.ObserverOf<This, N>): void;
|
|
128
|
+
removeListener<This, N extends EventEmitter.NamesOf<This>>(this: This, name: N, handler: EventEmitter.ObserverOf<This, N>): void;
|
|
129
|
+
get eventNames(): string[];
|
|
130
|
+
[Symbol.dispose](): void;
|
|
131
|
+
}
|
|
132
|
+
export declare namespace EventEmitter {
|
|
133
|
+
/**
|
|
134
|
+
* Legal event names. If there are no events defined, assume this is an
|
|
135
|
+
* untyped instance and allow any argument.
|
|
136
|
+
*/
|
|
137
|
+
type NamesOf<This> = [EventNames<This>] extends [never] ? string : EventNames<This>;
|
|
138
|
+
type EventNames<This> = string & keyof {
|
|
139
|
+
[K in keyof This as This[K] extends Observable ? K : never]: true;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Arguments for an event. If there are no events defined, assume this is
|
|
143
|
+
* an untyped emitter and allow any argument.
|
|
144
|
+
*/
|
|
145
|
+
type PayloadOf<This, E extends string> = [EventPayload<This, E>] extends [never] ? any[] : EventPayload<This, E>;
|
|
146
|
+
type EventPayload<This, E extends string> = This extends {
|
|
147
|
+
[K in E]: Observable<infer T extends any[]>;
|
|
148
|
+
} ? T : never;
|
|
149
|
+
type ObserverOf<This, E extends string> = Observable<PayloadOf<This, E>>;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* An {@link Observable} that proxies to another {@link Observable}.
|
|
153
|
+
*
|
|
154
|
+
* Emits emitted here instead emit on the target {@link Observable}. Events emitted on the target emit locally via
|
|
155
|
+
* a listener installed by the proxy.
|
|
156
|
+
*
|
|
157
|
+
* This is useful for managing a subset of {@link Observer}s for an {@link Observable}.
|
|
158
|
+
*
|
|
159
|
+
* Note that this "proxy" acts as a proxy but is not a JS {@link Proxy}.
|
|
160
|
+
*/
|
|
161
|
+
export declare class ObservableProxy extends BasicObservable {
|
|
162
|
+
#private;
|
|
163
|
+
constructor(target: Observable);
|
|
164
|
+
[Symbol.dispose](): void;
|
|
165
|
+
get isAsync(): boolean | undefined;
|
|
166
|
+
get isObserved(): boolean;
|
|
167
|
+
emit: (...payload: any) => any | undefined;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* A collection of observers managed as a unit. This makes it convenient to deregister multiple observers when an
|
|
171
|
+
* object closes.
|
|
172
|
+
*/
|
|
173
|
+
export declare class ObserverGroup {
|
|
174
|
+
#private;
|
|
175
|
+
constructor(target?: {});
|
|
176
|
+
/**
|
|
177
|
+
* Add an observer.
|
|
178
|
+
*
|
|
179
|
+
* @param observable the observable to observe
|
|
180
|
+
* @param observer the observer function
|
|
181
|
+
* @param target optional "this" to bind the observer
|
|
182
|
+
*/
|
|
183
|
+
on<T extends any[]>(observable: Observable<T> | AsyncObservable<T>, observer: Observer<NoInfer<T>>, target?: {} | undefined): void;
|
|
184
|
+
/**
|
|
185
|
+
* Remove a single observer.
|
|
186
|
+
*
|
|
187
|
+
* @param observable the observable to observe
|
|
188
|
+
* @param observer the observer function
|
|
189
|
+
* @param target if the observer was bound in {@link on} this must match the bound target
|
|
190
|
+
*/
|
|
191
|
+
off<T extends any[]>(observable: Observable<T> | AsyncObservable<T>, observer: Observer<NoInfer<T>>, target?: {} | undefined): void;
|
|
192
|
+
/**
|
|
193
|
+
* Remove all observers.
|
|
194
|
+
*/
|
|
195
|
+
close(): void;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=Observable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../src/util/Observable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ImplementationError } from "../MatterError.js";
|
|
7
|
+
import { Logger } from "../log/Logger.js";
|
|
8
|
+
import "../polyfills/disposable.js";
|
|
9
|
+
import { MaybePromise } from "./Promises.js";
|
|
10
|
+
const logger = Logger.get("Observable");
|
|
11
|
+
const observant = Symbol("consider-observed");
|
|
12
|
+
function defaultErrorHandler(error) {
|
|
13
|
+
throw error;
|
|
14
|
+
}
|
|
15
|
+
class BasicObservable {
|
|
16
|
+
#errorHandler;
|
|
17
|
+
#observers;
|
|
18
|
+
#once;
|
|
19
|
+
#isAsync;
|
|
20
|
+
#joinIteration;
|
|
21
|
+
#removeIterator;
|
|
22
|
+
#stopIteration;
|
|
23
|
+
constructor(errorHandler, isAsync) {
|
|
24
|
+
this.#errorHandler = errorHandler ?? defaultErrorHandler;
|
|
25
|
+
this.#isAsync = isAsync;
|
|
26
|
+
}
|
|
27
|
+
[Symbol.dispose]() {
|
|
28
|
+
this.#observers = this.#once = void 0;
|
|
29
|
+
this.#stopIteration?.();
|
|
30
|
+
}
|
|
31
|
+
get isAsync() {
|
|
32
|
+
return this.#isAsync;
|
|
33
|
+
}
|
|
34
|
+
set isAsync(isAsync) {
|
|
35
|
+
this.#isAsync = isAsync;
|
|
36
|
+
}
|
|
37
|
+
get isObserved() {
|
|
38
|
+
if (this.#observers) {
|
|
39
|
+
for (const observer of this.#observers) {
|
|
40
|
+
if (observer[observant] !== false) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (this.#once) {
|
|
46
|
+
for (const observer of this.#once) {
|
|
47
|
+
if (observer[observant] !== false) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
isObservedBy(observer) {
|
|
55
|
+
return !!this.#observers?.has(observer);
|
|
56
|
+
}
|
|
57
|
+
emit(...payload) {
|
|
58
|
+
if (!this.#observers) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const iterator = [...this.#observers][Symbol.iterator]();
|
|
62
|
+
const emitNext = (previousEmitResult) => {
|
|
63
|
+
if (previousEmitResult !== void 0) {
|
|
64
|
+
return previousEmitResult;
|
|
65
|
+
}
|
|
66
|
+
for (let iteration = iterator.next(); !iteration.done; iteration = iterator.next()) {
|
|
67
|
+
let result;
|
|
68
|
+
const observer = iteration.value;
|
|
69
|
+
try {
|
|
70
|
+
result = observer(...payload);
|
|
71
|
+
} catch (e) {
|
|
72
|
+
if (e instanceof Error) {
|
|
73
|
+
this.#errorHandler(e, observer);
|
|
74
|
+
} else {
|
|
75
|
+
this.#errorHandler(new Error(`${e}`), observer);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (this.#once?.has(observer)) {
|
|
79
|
+
this.#once.delete(observer);
|
|
80
|
+
this.#observers?.delete(observer);
|
|
81
|
+
}
|
|
82
|
+
if (result === void 0) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (MaybePromise.is(result)) {
|
|
86
|
+
if (!this.isAsync) {
|
|
87
|
+
let identity;
|
|
88
|
+
if (observer.name) {
|
|
89
|
+
identity = ` "${observer.name}"`;
|
|
90
|
+
} else {
|
|
91
|
+
identity = "";
|
|
92
|
+
}
|
|
93
|
+
result.then(
|
|
94
|
+
void 0,
|
|
95
|
+
(error) => logger.error(`Unhandled error in async observer${identity}:`, error)
|
|
96
|
+
);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
return result.then((result2) => {
|
|
100
|
+
if (result2 === void 0) {
|
|
101
|
+
return emitNext();
|
|
102
|
+
}
|
|
103
|
+
return result2;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
return emitNext();
|
|
110
|
+
}
|
|
111
|
+
on(observer) {
|
|
112
|
+
if (!this.#observers) {
|
|
113
|
+
this.#observers = /* @__PURE__ */ new Set();
|
|
114
|
+
}
|
|
115
|
+
this.#observers.add(observer);
|
|
116
|
+
}
|
|
117
|
+
off(observer) {
|
|
118
|
+
this.#observers?.delete(observer);
|
|
119
|
+
}
|
|
120
|
+
once(observer) {
|
|
121
|
+
this.on(observer);
|
|
122
|
+
if (!this.#once) {
|
|
123
|
+
this.#once = /* @__PURE__ */ new Set();
|
|
124
|
+
}
|
|
125
|
+
this.#once.add(observer);
|
|
126
|
+
}
|
|
127
|
+
then(onfulfilled, onrejected) {
|
|
128
|
+
return new Promise((resolve) => {
|
|
129
|
+
this.once((...payload) => {
|
|
130
|
+
resolve(payload);
|
|
131
|
+
});
|
|
132
|
+
}).then(onfulfilled, onrejected);
|
|
133
|
+
}
|
|
134
|
+
async *[Symbol.asyncIterator]() {
|
|
135
|
+
let promise = this.#addIterator();
|
|
136
|
+
try {
|
|
137
|
+
while (promise) {
|
|
138
|
+
const next = await promise;
|
|
139
|
+
if (next) {
|
|
140
|
+
promise = next.promise;
|
|
141
|
+
yield next.value;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
} finally {
|
|
145
|
+
this.#removeIterator?.();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
#addIterator() {
|
|
149
|
+
if (this.#joinIteration) {
|
|
150
|
+
return this.#joinIteration();
|
|
151
|
+
}
|
|
152
|
+
let resolve;
|
|
153
|
+
let iteratorCount = 1;
|
|
154
|
+
function newPromise() {
|
|
155
|
+
return new Promise((r) => resolve = r);
|
|
156
|
+
}
|
|
157
|
+
let promise = newPromise();
|
|
158
|
+
function observer(...args) {
|
|
159
|
+
const oldResolve = resolve;
|
|
160
|
+
promise = newPromise();
|
|
161
|
+
oldResolve({ value: args[0], promise });
|
|
162
|
+
}
|
|
163
|
+
this.on(observer);
|
|
164
|
+
this.#joinIteration = () => {
|
|
165
|
+
iteratorCount++;
|
|
166
|
+
return promise;
|
|
167
|
+
};
|
|
168
|
+
this.#removeIterator = () => {
|
|
169
|
+
if (!iteratorCount--) {
|
|
170
|
+
this.#stopIteration?.();
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
this.#stopIteration = () => {
|
|
174
|
+
this.off(observer);
|
|
175
|
+
resolve(void 0);
|
|
176
|
+
this.#stopIteration = void 0;
|
|
177
|
+
this.#removeIterator = void 0;
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function constructObservable(errorHandler) {
|
|
182
|
+
return new BasicObservable(errorHandler);
|
|
183
|
+
}
|
|
184
|
+
const Observable = constructObservable;
|
|
185
|
+
function constructAsyncObservable(errorHandler) {
|
|
186
|
+
return new BasicObservable(errorHandler, true);
|
|
187
|
+
}
|
|
188
|
+
const AsyncObservable = constructAsyncObservable;
|
|
189
|
+
function event(emitter, name) {
|
|
190
|
+
const observer = emitter[name];
|
|
191
|
+
if (typeof !observer?.on !== "function") {
|
|
192
|
+
throw new ImplementationError(`Invalid event name ${name}`);
|
|
193
|
+
}
|
|
194
|
+
return observer;
|
|
195
|
+
}
|
|
196
|
+
class EventEmitter {
|
|
197
|
+
emit(name, ...payload) {
|
|
198
|
+
event(this, name).emit(...payload);
|
|
199
|
+
}
|
|
200
|
+
addListener(name, handler) {
|
|
201
|
+
event(this, name).on(handler);
|
|
202
|
+
}
|
|
203
|
+
removeListener(name, handler) {
|
|
204
|
+
event(this, name).off(handler);
|
|
205
|
+
}
|
|
206
|
+
get eventNames() {
|
|
207
|
+
return Object.keys(this).filter((k) => typeof this[k]?.on === "function");
|
|
208
|
+
}
|
|
209
|
+
[Symbol.dispose]() {
|
|
210
|
+
for (const name of this.eventNames) {
|
|
211
|
+
this[name][Symbol.dispose]?.();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
class ObservableProxy extends BasicObservable {
|
|
216
|
+
#target;
|
|
217
|
+
#emitter = super.emit.bind(this);
|
|
218
|
+
constructor(target) {
|
|
219
|
+
super();
|
|
220
|
+
Object.defineProperty(this.#emitter, observant, {
|
|
221
|
+
get() {
|
|
222
|
+
return this.isObserved;
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
this.#target = target;
|
|
226
|
+
this.#target.on(this.#emitter);
|
|
227
|
+
this.emit = this.#target.emit.bind(this.#target);
|
|
228
|
+
}
|
|
229
|
+
[Symbol.dispose]() {
|
|
230
|
+
this.#target.off(this.#emitter);
|
|
231
|
+
super[Symbol.dispose]();
|
|
232
|
+
}
|
|
233
|
+
get isAsync() {
|
|
234
|
+
return this.#target.isAsync;
|
|
235
|
+
}
|
|
236
|
+
get isObserved() {
|
|
237
|
+
return this.#target.isObserved;
|
|
238
|
+
}
|
|
239
|
+
emit;
|
|
240
|
+
}
|
|
241
|
+
class ObserverGroup {
|
|
242
|
+
#defaultTarget;
|
|
243
|
+
#observers = /* @__PURE__ */ new Map();
|
|
244
|
+
#boundObservers = /* @__PURE__ */ new Map();
|
|
245
|
+
constructor(target) {
|
|
246
|
+
this.#defaultTarget = target;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Add an observer.
|
|
250
|
+
*
|
|
251
|
+
* @param observable the observable to observe
|
|
252
|
+
* @param observer the observer function
|
|
253
|
+
* @param target optional "this" to bind the observer
|
|
254
|
+
*/
|
|
255
|
+
on(observable, observer, target = this.#defaultTarget) {
|
|
256
|
+
if (target !== void 0) {
|
|
257
|
+
observer = observer.bind(target);
|
|
258
|
+
}
|
|
259
|
+
observable.on(observer);
|
|
260
|
+
const observers = this.#observers.get(observable);
|
|
261
|
+
if (observers === void 0) {
|
|
262
|
+
this.#observers.set(observable, [observer]);
|
|
263
|
+
} else {
|
|
264
|
+
observers.push(observer);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Remove a single observer.
|
|
269
|
+
*
|
|
270
|
+
* @param observable the observable to observe
|
|
271
|
+
* @param observer the observer function
|
|
272
|
+
* @param target if the observer was bound in {@link on} this must match the bound target
|
|
273
|
+
*/
|
|
274
|
+
off(observable, observer, target = this.#defaultTarget) {
|
|
275
|
+
if (target) {
|
|
276
|
+
const observers2 = this.#boundObservers.get(observer);
|
|
277
|
+
if (observers2 === void 0) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const bound = observers2.get(target);
|
|
281
|
+
if (bound === void 0) {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
observers2.delete(target);
|
|
285
|
+
if (observers2.size === 0) {
|
|
286
|
+
this.#boundObservers.delete(observer);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
const observers = this.#observers.get(observable);
|
|
290
|
+
if (observers) {
|
|
291
|
+
const index = observers.indexOf(observer);
|
|
292
|
+
if (index !== -1) {
|
|
293
|
+
observers?.splice(index, 1);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
observable.off(observer);
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Remove all observers.
|
|
300
|
+
*/
|
|
301
|
+
close() {
|
|
302
|
+
for (const [observable, observers] of this.#observers.entries()) {
|
|
303
|
+
for (const observer of observers) {
|
|
304
|
+
observable.off(observer);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
this.#observers.clear();
|
|
308
|
+
this.#boundObservers.clear();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
export {
|
|
312
|
+
AsyncObservable,
|
|
313
|
+
BasicObservable,
|
|
314
|
+
EventEmitter,
|
|
315
|
+
Observable,
|
|
316
|
+
ObservableProxy,
|
|
317
|
+
ObserverGroup,
|
|
318
|
+
observant
|
|
319
|
+
};
|
|
320
|
+
//# sourceMappingURL=Observable.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/Observable.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["result", "observers"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* A queue that processes promises with a given concurrency and delays after each promise if desired.
|
|
8
|
+
*/
|
|
9
|
+
export declare class PromiseQueue {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(concurrency?: number, delay?: number);
|
|
12
|
+
/**
|
|
13
|
+
* Add a promise to the queue. It returns a promise that can be awaited.
|
|
14
|
+
*/
|
|
15
|
+
add<T>(executor: () => Promise<T>): Promise<T>;
|
|
16
|
+
/**
|
|
17
|
+
* Clear the queue.
|
|
18
|
+
*/
|
|
19
|
+
clear(reject: boolean): void;
|
|
20
|
+
/**
|
|
21
|
+
* Close the queue and remove all outstanding promises (but do not reject them).
|
|
22
|
+
*/
|
|
23
|
+
close(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=PromiseQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromiseQueue.d.ts","sourceRoot":"","sources":["../../../src/util/PromiseQueue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,qBAAa,YAAY;;gBAMT,WAAW,SAAI,EAAE,KAAK,SAAI;IAKtC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAsD9C;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAS5B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Time } from "#time/Time.js";
|
|
7
|
+
import { Logger } from "../log/Logger.js";
|
|
8
|
+
import { createPromise } from "./Promises.js";
|
|
9
|
+
const logger = Logger.get("PromiseQueue");
|
|
10
|
+
class PromiseQueue {
|
|
11
|
+
#delay;
|
|
12
|
+
#queue = new Array();
|
|
13
|
+
#concurrency;
|
|
14
|
+
#runningCount = 0;
|
|
15
|
+
constructor(concurrency = 1, delay = 0) {
|
|
16
|
+
this.#concurrency = concurrency;
|
|
17
|
+
this.#delay = delay;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Add a promise to the queue. It returns a promise that can be awaited.
|
|
21
|
+
*/
|
|
22
|
+
add(executor) {
|
|
23
|
+
const { promise, resolver, rejecter } = createPromise();
|
|
24
|
+
logger.debug("Add promise to queue on place", this.#queue.length + 1);
|
|
25
|
+
this.#queue.push({
|
|
26
|
+
func: () => executor().then(resolver).catch(rejecter),
|
|
27
|
+
rejecter
|
|
28
|
+
});
|
|
29
|
+
this.#run();
|
|
30
|
+
return promise;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Run the next promise in the queue.
|
|
34
|
+
*/
|
|
35
|
+
#run() {
|
|
36
|
+
if (this.#runningCount >= this.#concurrency || this.#queue.length === 0) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
logger.debug(
|
|
40
|
+
"Processing promise from queue ... Current queue length:",
|
|
41
|
+
this.#queue.length,
|
|
42
|
+
"Already running:",
|
|
43
|
+
this.#runningCount
|
|
44
|
+
);
|
|
45
|
+
const { func } = this.#queue.shift() ?? {};
|
|
46
|
+
if (func !== void 0) {
|
|
47
|
+
this.#runningCount++;
|
|
48
|
+
func().catch((error) => {
|
|
49
|
+
throw error;
|
|
50
|
+
}).finally(() => {
|
|
51
|
+
logger.debug("Promise processed ... Still running:", this.#runningCount - 1);
|
|
52
|
+
if (this.#delay > 0) {
|
|
53
|
+
Time.sleep("Queue delay", this.#delay).then(() => this.#runNext()).catch((error) => {
|
|
54
|
+
throw error;
|
|
55
|
+
});
|
|
56
|
+
} else {
|
|
57
|
+
this.#runNext();
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
#runNext() {
|
|
63
|
+
this.#runningCount--;
|
|
64
|
+
this.#run();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Clear the queue.
|
|
68
|
+
*/
|
|
69
|
+
clear(reject) {
|
|
70
|
+
if (reject) {
|
|
71
|
+
for (const { rejecter } of this.#queue) {
|
|
72
|
+
rejecter();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
this.#queue.length = 0;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Close the queue and remove all outstanding promises (but do not reject them).
|
|
79
|
+
*/
|
|
80
|
+
close() {
|
|
81
|
+
this.clear(false);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export {
|
|
85
|
+
PromiseQueue
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=PromiseQueue.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/PromiseQueue.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAE9B,MAAM,SAAS,OAAO,IAAI,cAAc;AAKjC,MAAM,aAAa;AAAA,EACb;AAAA,EACA,SAAS,IAAI,MAAsE;AAAA,EACnF;AAAA,EACT,gBAAgB;AAAA,EAEhB,YAAY,cAAc,GAAG,QAAQ,GAAG;AACpC,SAAK,eAAe;AACpB,SAAK,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAO,UAAwC;AAC3C,UAAM,EAAE,SAAS,UAAU,SAAS,IAAI,cAAiB;AAEzD,WAAO,MAAM,iCAAiC,KAAK,OAAO,SAAS,CAAC;AACpE,SAAK,OAAO,KAAK;AAAA,MACb,MAAM,MAAM,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ;AAAA,MACpD;AAAA,IACJ,CAAC;AACD,SAAK,KAAK;AACV,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,OAAa;AACT,QAAI,KAAK,iBAAiB,KAAK,gBAAgB,KAAK,OAAO,WAAW,GAAG;AACrE;AAAA,IACJ;AAEA,WAAO;AAAA,MACH;AAAA,MACA,KAAK,OAAO;AAAA,MACZ;AAAA,MACA,KAAK;AAAA,IACT;AACA,UAAM,EAAE,KAAK,IAAI,KAAK,OAAO,MAAM,KAAK,CAAC;AACzC,QAAI,SAAS,QAAW;AACpB,WAAK;AACL,WAAK,EACA,MAAM,WAAS;AACZ,cAAM;AAAA,MACV,CAAC,EACA,QAAQ,MAAM;AACX,eAAO,MAAM,wCAAwC,KAAK,gBAAgB,CAAC;AAC3E,YAAI,KAAK,SAAS,GAAG;AAEjB,eAAK,MAAM,eAAe,KAAK,MAAM,EAChC,KAAK,MAAM,KAAK,SAAS,CAAC,EAC1B,MAAM,WAAS;AACZ,kBAAM;AAAA,UACV,CAAC;AAAA,QACT,OAAO;AACH,eAAK,SAAS;AAAA,QAClB;AAAA,MACJ,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,WAAiB;AACb,SAAK;AACL,SAAK,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AACzB,QAAI,QAAQ;AACR,iBAAW,EAAE,SAAS,KAAK,KAAK,QAAQ;AACpC,iBAAS;AAAA,MACb;AAAA,IACJ;AACA,SAAK,OAAO,SAAS;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACV,SAAK,MAAM,KAAK;AAAA,EACpB;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|