@seriousme/opifex 1.11.2 → 2.0.3
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.txt +1 -1
- package/README.md +102 -43
- package/bin/conformanceServer.ts +45 -13
- package/bin/demoServer.ts +38 -13
- package/bin/mqtt.ts +52 -30
- package/client/ConnectionState.ts +2 -0
- package/client/client.ts +57 -47
- package/client/context.ts +75 -21
- package/client/deps.ts +5 -0
- package/client/handlers/handleAuth.test.ts +193 -0
- package/client/handlers/handleAuth.ts +89 -0
- package/client/handlers/handleConnack.test.ts +173 -0
- package/client/handlers/handleConnack.ts +16 -6
- package/client/handlers/handleDisconnect.test.ts +22 -0
- package/client/handlers/handleDisconnect.ts +17 -0
- package/client/handlers/handlePacket.test.ts +242 -0
- package/client/handlers/handlePacket.ts +19 -5
- package/client/handlers/handlePuback.test.ts +99 -0
- package/client/handlers/handlePuback.ts +6 -0
- package/client/handlers/handlePubcomp.test.ts +112 -0
- package/client/handlers/handlePubcomp.ts +5 -0
- package/client/handlers/handlePublish.test.ts +188 -0
- package/client/handlers/handlePubrec.test.ts +119 -0
- package/client/handlers/handlePubrec.ts +5 -1
- package/client/handlers/handlePubrel.test.ts +136 -0
- package/client/handlers/handleSuback.test.ts +122 -0
- package/client/handlers/handleSuback.ts +3 -0
- package/client/handlers/handleUnsuback.test.ts +101 -0
- package/client/mod.ts +2 -2
- package/client/store/memoryStore.ts +2 -2
- package/client/store/store.ts +3 -1
- package/deno/README.md +1 -2
- package/deno/tcpClient.test.ts +75 -0
- package/deno/tcpClient.ts +16 -11
- package/deno/tcpServer.test.ts +22 -21
- package/deno/tcpServer.ts +5 -0
- package/deno/tlsServer.test.ts +97 -0
- package/deno/tlsServer.ts +42 -0
- package/deno/wsServer.test.ts +93 -0
- package/deno/wsServer.ts +73 -0
- package/dev_utils/generateCert.ts +95 -0
- package/dev_utils/mockConn.ts +36 -0
- package/dev_utils/mockServer.ts +28 -0
- package/dev_utils/mod.ts +30 -2
- package/dev_utils/packetHelpers.ts +404 -0
- package/dev_utils/test-handlers.ts +98 -0
- package/dev_utils/timers.ts +14 -0
- package/dev_utils/webStreamPair.test.ts +171 -0
- package/dev_utils/webStreamPair.ts +143 -0
- package/dist/bin/conformanceServer.js +17 -12
- package/dist/bin/conformanceServer.js.map +1 -1
- package/dist/bin/demoServer.js +16 -12
- package/dist/bin/demoServer.js.map +1 -1
- package/dist/bin/mqtt.js +19 -16
- package/dist/bin/mqtt.js.map +1 -1
- package/dist/client/ConnectionState.d.ts +2 -0
- package/dist/client/ConnectionState.d.ts.map +1 -1
- package/dist/client/ConnectionState.js +2 -0
- package/dist/client/ConnectionState.js.map +1 -1
- package/dist/client/client.d.ts +19 -22
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +34 -20
- package/dist/client/client.js.map +1 -1
- package/dist/client/context.d.ts +11 -3
- package/dist/client/context.d.ts.map +1 -1
- package/dist/client/context.js +44 -12
- package/dist/client/context.js.map +1 -1
- package/dist/client/deps.d.ts +3 -2
- package/dist/client/deps.d.ts.map +1 -1
- package/dist/client/deps.js +1 -1
- package/dist/client/deps.js.map +1 -1
- package/dist/client/handlers/handleAuth.d.ts +9 -0
- package/dist/client/handlers/handleAuth.d.ts.map +1 -0
- package/dist/client/handlers/handleAuth.js +66 -0
- package/dist/client/handlers/handleAuth.js.map +1 -0
- package/dist/client/handlers/handleConnack.d.ts +2 -2
- package/dist/client/handlers/handleConnack.d.ts.map +1 -1
- package/dist/client/handlers/handleConnack.js +16 -6
- package/dist/client/handlers/handleConnack.js.map +1 -1
- package/dist/client/handlers/handleDisconnect.d.ts +11 -0
- package/dist/client/handlers/handleDisconnect.d.ts.map +1 -0
- package/dist/client/handlers/handleDisconnect.js +15 -0
- package/dist/client/handlers/handleDisconnect.js.map +1 -0
- package/dist/client/handlers/handlePacket.d.ts.map +1 -1
- package/dist/client/handlers/handlePacket.js +14 -3
- package/dist/client/handlers/handlePacket.js.map +1 -1
- package/dist/client/handlers/handlePuback.d.ts.map +1 -1
- package/dist/client/handlers/handlePuback.js +5 -0
- package/dist/client/handlers/handlePuback.js.map +1 -1
- package/dist/client/handlers/handlePubcomp.d.ts.map +1 -1
- package/dist/client/handlers/handlePubcomp.js +5 -0
- package/dist/client/handlers/handlePubcomp.js.map +1 -1
- package/dist/client/handlers/handlePubrec.d.ts.map +1 -1
- package/dist/client/handlers/handlePubrec.js +5 -1
- package/dist/client/handlers/handlePubrec.js.map +1 -1
- package/dist/client/handlers/handleSuback.d.ts +1 -0
- package/dist/client/handlers/handleSuback.d.ts.map +1 -1
- package/dist/client/handlers/handleSuback.js +3 -0
- package/dist/client/handlers/handleSuback.js.map +1 -1
- package/dist/client/mod.d.ts +2 -2
- package/dist/client/mod.d.ts.map +1 -1
- package/dist/client/mod.js +1 -1
- package/dist/client/mod.js.map +1 -1
- package/dist/client/store/memoryStore.d.ts.map +1 -1
- package/dist/client/store/memoryStore.js +2 -2
- package/dist/client/store/memoryStore.js.map +1 -1
- package/dist/client/store/store.d.ts +2 -1
- package/dist/client/store/store.d.ts.map +1 -1
- package/dist/client/store/store.js +1 -1
- package/dist/client/store/store.js.map +1 -1
- package/dist/dev_utils/generateCert.d.ts +11 -0
- package/dist/dev_utils/generateCert.d.ts.map +1 -0
- package/dist/dev_utils/generateCert.js +76 -0
- package/dist/dev_utils/generateCert.js.map +1 -0
- package/dist/examples/authHandler.test.d.ts +2 -0
- package/dist/examples/authHandler.test.d.ts.map +1 -0
- package/dist/examples/authHandler.test.js +123 -0
- package/dist/examples/authHandler.test.js.map +1 -0
- package/dist/examples/mqtt.test.d.ts +2 -0
- package/dist/examples/mqtt.test.d.ts.map +1 -0
- package/dist/examples/mqtt.test.js +70 -0
- package/dist/examples/mqtt.test.js.map +1 -0
- package/dist/examples/mqtts.test.d.ts +2 -0
- package/dist/examples/mqtts.test.d.ts.map +1 -0
- package/dist/examples/mqtts.test.js +81 -0
- package/dist/examples/mqtts.test.js.map +1 -0
- package/dist/mqttConn/mqttConn.d.ts +25 -16
- package/dist/mqttConn/mqttConn.d.ts.map +1 -1
- package/dist/mqttConn/mqttConn.js +69 -40
- package/dist/mqttConn/mqttConn.js.map +1 -1
- package/dist/mqttPacket/AuthenticationResult.d.ts.map +1 -1
- package/dist/mqttPacket/BitMask.d.ts +12 -11
- package/dist/mqttPacket/BitMask.d.ts.map +1 -1
- package/dist/mqttPacket/BitMask.js +10 -18
- package/dist/mqttPacket/BitMask.js.map +1 -1
- package/dist/mqttPacket/PacketType.d.ts.map +1 -1
- package/dist/mqttPacket/Properties.d.ts +2 -2
- package/dist/mqttPacket/Properties.d.ts.map +1 -1
- package/dist/mqttPacket/Properties.js.map +1 -1
- package/dist/mqttPacket/ReasonCode.d.ts +1 -0
- package/dist/mqttPacket/ReasonCode.d.ts.map +1 -1
- package/dist/mqttPacket/ReasonCode.js +1 -0
- package/dist/mqttPacket/ReasonCode.js.map +1 -1
- package/dist/mqttPacket/RetainHandling.d.ts.map +1 -1
- package/dist/mqttPacket/auth.d.ts +3 -5
- package/dist/mqttPacket/auth.d.ts.map +1 -1
- package/dist/mqttPacket/auth.js +31 -30
- package/dist/mqttPacket/auth.js.map +1 -1
- package/dist/mqttPacket/codec.d.ts +48 -0
- package/dist/mqttPacket/codec.d.ts.map +1 -0
- package/dist/mqttPacket/codec.js +93 -0
- package/dist/mqttPacket/codec.js.map +1 -0
- package/dist/mqttPacket/connack.d.ts +4 -5
- package/dist/mqttPacket/connack.d.ts.map +1 -1
- package/dist/mqttPacket/connack.js +43 -45
- package/dist/mqttPacket/connack.js.map +1 -1
- package/dist/mqttPacket/connect.d.ts +26 -27
- package/dist/mqttPacket/connect.d.ts.map +1 -1
- package/dist/mqttPacket/connect.js +156 -157
- package/dist/mqttPacket/connect.js.map +1 -1
- package/dist/mqttPacket/decoder.d.ts +1 -13
- package/dist/mqttPacket/decoder.d.ts.map +1 -1
- package/dist/mqttPacket/decoder.js +7 -28
- package/dist/mqttPacket/decoder.js.map +1 -1
- package/dist/mqttPacket/disconnect.d.ts +4 -5
- package/dist/mqttPacket/disconnect.d.ts.map +1 -1
- package/dist/mqttPacket/disconnect.js +41 -43
- package/dist/mqttPacket/disconnect.js.map +1 -1
- package/dist/mqttPacket/encoder.d.ts +1 -15
- package/dist/mqttPacket/encoder.d.ts.map +1 -1
- package/dist/mqttPacket/encoder.js +4 -27
- package/dist/mqttPacket/encoder.js.map +1 -1
- package/dist/mqttPacket/length.js +1 -1
- package/dist/mqttPacket/length.js.map +1 -1
- package/dist/mqttPacket/mod.d.ts +21 -103
- package/dist/mqttPacket/mod.d.ts.map +1 -1
- package/dist/mqttPacket/mod.js +5 -94
- package/dist/mqttPacket/mod.js.map +1 -1
- package/dist/mqttPacket/pingreq.d.ts +4 -5
- package/dist/mqttPacket/pingreq.d.ts.map +1 -1
- package/dist/mqttPacket/pingreq.js +11 -13
- package/dist/mqttPacket/pingreq.js.map +1 -1
- package/dist/mqttPacket/pingres.d.ts +4 -5
- package/dist/mqttPacket/pingres.d.ts.map +1 -1
- package/dist/mqttPacket/pingres.js +11 -13
- package/dist/mqttPacket/pingres.js.map +1 -1
- package/dist/mqttPacket/protocolLevels.d.ts +11 -6
- package/dist/mqttPacket/protocolLevels.d.ts.map +1 -1
- package/dist/mqttPacket/protocolLevels.js +5 -1
- package/dist/mqttPacket/protocolLevels.js.map +1 -1
- package/dist/mqttPacket/pubblishAcks.d.ts +9 -10
- package/dist/mqttPacket/pubblishAcks.d.ts.map +1 -1
- package/dist/mqttPacket/pubblishAcks.js +43 -45
- package/dist/mqttPacket/pubblishAcks.js.map +1 -1
- package/dist/mqttPacket/publish.d.ts +14 -14
- package/dist/mqttPacket/publish.d.ts.map +1 -1
- package/dist/mqttPacket/publish.js +53 -55
- package/dist/mqttPacket/publish.js.map +1 -1
- package/dist/mqttPacket/suback.d.ts +4 -5
- package/dist/mqttPacket/suback.d.ts.map +1 -1
- package/dist/mqttPacket/suback.js +38 -40
- package/dist/mqttPacket/suback.js.map +1 -1
- package/dist/mqttPacket/subscribe.d.ts +36 -7
- package/dist/mqttPacket/subscribe.d.ts.map +1 -1
- package/dist/mqttPacket/subscribe.js +90 -89
- package/dist/mqttPacket/subscribe.js.map +1 -1
- package/dist/mqttPacket/types.d.ts +1 -8
- package/dist/mqttPacket/types.d.ts.map +1 -1
- package/dist/mqttPacket/unsuback.d.ts +4 -5
- package/dist/mqttPacket/unsuback.d.ts.map +1 -1
- package/dist/mqttPacket/unsuback.js +32 -34
- package/dist/mqttPacket/unsuback.js.map +1 -1
- package/dist/mqttPacket/unsubscribe.d.ts +23 -6
- package/dist/mqttPacket/unsubscribe.d.ts.map +1 -1
- package/dist/mqttPacket/unsubscribe.js +45 -44
- package/dist/mqttPacket/unsubscribe.js.map +1 -1
- package/dist/mqttPacket/validators.d.ts +4 -16
- package/dist/mqttPacket/validators.d.ts.map +1 -1
- package/dist/mqttPacket/validators.js +5 -26
- package/dist/mqttPacket/validators.js.map +1 -1
- package/dist/node/tcpClient.d.ts +1 -1
- package/dist/node/tcpClient.d.ts.map +1 -1
- package/dist/node/tcpClient.js +12 -7
- package/dist/node/tcpClient.js.map +1 -1
- package/dist/node/tcpServer.d.ts.map +1 -1
- package/dist/node/tcpServer.js +4 -0
- package/dist/node/tcpServer.js.map +1 -1
- package/dist/node/tlsServer.d.ts +19 -0
- package/dist/node/tlsServer.d.ts.map +1 -0
- package/dist/node/tlsServer.js +58 -0
- package/dist/node/tlsServer.js.map +1 -0
- package/dist/node/wrapNodeSocket.d.ts.map +1 -1
- package/dist/node/wrapNodeSocket.js +6 -28
- package/dist/node/wrapNodeSocket.js.map +1 -1
- package/dist/persistence/basicPersistence.d.ts +36 -0
- package/dist/persistence/basicPersistence.d.ts.map +1 -0
- package/dist/persistence/basicPersistence.js +306 -0
- package/dist/persistence/basicPersistence.js.map +1 -0
- package/dist/persistence/deps.d.ts +3 -2
- package/dist/persistence/deps.d.ts.map +1 -1
- package/dist/persistence/deps.js +2 -1
- package/dist/persistence/deps.js.map +1 -1
- package/dist/persistence/memory/memoryPersistence.d.ts +6 -23
- package/dist/persistence/memory/memoryPersistence.d.ts.map +1 -1
- package/dist/persistence/memory/memoryPersistence.js +12 -115
- package/dist/persistence/memory/memoryPersistence.js.map +1 -1
- package/dist/persistence/memory/memoryStorage.d.ts +45 -0
- package/dist/persistence/memory/memoryStorage.d.ts.map +1 -0
- package/dist/persistence/memory/memoryStorage.js +143 -0
- package/dist/persistence/memory/memoryStorage.js.map +1 -0
- package/dist/persistence/mod.d.ts +3 -3
- package/dist/persistence/mod.d.ts.map +1 -1
- package/dist/persistence/mod.js +6 -1
- package/dist/persistence/mod.js.map +1 -1
- package/dist/persistence/persistence.d.ts +44 -69
- package/dist/persistence/persistence.d.ts.map +1 -1
- package/dist/persistence/persistence.js +1 -2
- package/dist/persistence/persistence.js.map +1 -1
- package/dist/persistence/sqlite/sqliteDatabase.d.ts +46 -0
- package/dist/persistence/sqlite/sqliteDatabase.d.ts.map +1 -0
- package/dist/persistence/sqlite/sqliteDatabase.js +215 -0
- package/dist/persistence/sqlite/sqliteDatabase.js.map +1 -0
- package/dist/persistence/sqlite/sqlitePersistence.d.ts +16 -0
- package/dist/persistence/sqlite/sqlitePersistence.d.ts.map +1 -0
- package/dist/persistence/sqlite/sqlitePersistence.js +29 -0
- package/dist/persistence/sqlite/sqlitePersistence.js.map +1 -0
- package/dist/persistence/sqlite/sqliteStorage.d.ts +36 -0
- package/dist/persistence/sqlite/sqliteStorage.d.ts.map +1 -0
- package/dist/persistence/sqlite/sqliteStorage.js +194 -0
- package/dist/persistence/sqlite/sqliteStorage.js.map +1 -0
- package/dist/persistence/storage.d.ts +38 -0
- package/dist/persistence/storage.d.ts.map +1 -0
- package/dist/persistence/storage.js +5 -0
- package/dist/persistence/storage.js.map +1 -0
- package/dist/server/config.d.ts +47 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +41 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/context.d.ts +198 -24
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js +432 -53
- package/dist/server/context.js.map +1 -1
- package/dist/server/deps.d.ts +5 -6
- package/dist/server/deps.d.ts.map +1 -1
- package/dist/server/deps.js +2 -2
- package/dist/server/deps.js.map +1 -1
- package/dist/server/handlers/completeConnect.d.ts +8 -0
- package/dist/server/handlers/completeConnect.d.ts.map +1 -0
- package/dist/server/handlers/completeConnect.js +74 -0
- package/dist/server/handlers/completeConnect.js.map +1 -0
- package/dist/server/handlers/handleAuth.d.ts +9 -0
- package/dist/server/handlers/handleAuth.d.ts.map +1 -0
- package/dist/server/handlers/handleAuth.js +69 -0
- package/dist/server/handlers/handleAuth.js.map +1 -0
- package/dist/server/handlers/handleConnect.d.ts +2 -4
- package/dist/server/handlers/handleConnect.d.ts.map +1 -1
- package/dist/server/handlers/handleConnect.js +140 -67
- package/dist/server/handlers/handleConnect.js.map +1 -1
- package/dist/server/handlers/handleDisconnect.d.ts +1 -1
- package/dist/server/handlers/handleDisconnect.d.ts.map +1 -1
- package/dist/server/handlers/handleDisconnect.js +3 -3
- package/dist/server/handlers/handleDisconnect.js.map +1 -1
- package/dist/server/handlers/handlePacket.d.ts.map +1 -1
- package/dist/server/handlers/handlePacket.js +19 -6
- package/dist/server/handlers/handlePacket.js.map +1 -1
- package/dist/server/handlers/handlePuback.d.ts +1 -3
- package/dist/server/handlers/handlePuback.d.ts.map +1 -1
- package/dist/server/handlers/handlePuback.js +2 -8
- package/dist/server/handlers/handlePuback.js.map +1 -1
- package/dist/server/handlers/handlePubcomp.d.ts +1 -1
- package/dist/server/handlers/handlePubcomp.d.ts.map +1 -1
- package/dist/server/handlers/handlePubcomp.js +2 -4
- package/dist/server/handlers/handlePubcomp.js.map +1 -1
- package/dist/server/handlers/handlePublish.d.ts +1 -1
- package/dist/server/handlers/handlePublish.d.ts.map +1 -1
- package/dist/server/handlers/handlePublish.js +149 -45
- package/dist/server/handlers/handlePublish.js.map +1 -1
- package/dist/server/handlers/handlePubrec.d.ts.map +1 -1
- package/dist/server/handlers/handlePubrec.js +2 -3
- package/dist/server/handlers/handlePubrec.js.map +1 -1
- package/dist/server/handlers/handlePubrel.d.ts.map +1 -1
- package/dist/server/handlers/handlePubrel.js +6 -2
- package/dist/server/handlers/handlePubrel.js.map +1 -1
- package/dist/server/handlers/handleSubscribe.d.ts +1 -6
- package/dist/server/handlers/handleSubscribe.d.ts.map +1 -1
- package/dist/server/handlers/handleSubscribe.js +99 -38
- package/dist/server/handlers/handleSubscribe.js.map +1 -1
- package/dist/server/handlers/handleUnsubscribe.d.ts.map +1 -1
- package/dist/server/handlers/handleUnsubscribe.js +19 -4
- package/dist/server/handlers/handleUnsubscribe.js.map +1 -1
- package/dist/server/mod.d.ts +3 -3
- package/dist/server/mod.d.ts.map +1 -1
- package/dist/server/mod.js +1 -1
- package/dist/server/mod.js.map +1 -1
- package/dist/server/server.d.ts +29 -6
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +84 -15
- package/dist/server/server.js.map +1 -1
- package/dist/socket/socket.d.ts +11 -9
- package/dist/socket/socket.d.ts.map +1 -1
- package/dist/socket/socket.js +67 -15
- package/dist/socket/socket.js.map +1 -1
- package/dist/timer/timer.d.ts +32 -0
- package/dist/timer/timer.d.ts.map +1 -1
- package/dist/timer/timer.js +32 -0
- package/dist/timer/timer.js.map +1 -1
- package/dist/trie/trie.d.ts +10 -5
- package/dist/trie/trie.d.ts.map +1 -1
- package/dist/trie/trie.js +47 -17
- package/dist/trie/trie.js.map +1 -1
- package/dist/utils/assert.d.ts.map +1 -1
- package/dist/utils/{BufferedAsyncIterable.d.ts → bufferedAsyncIterable.d.ts} +1 -1
- package/dist/utils/bufferedAsyncIterable.d.ts.map +1 -0
- package/dist/utils/{BufferedAsyncIterable.js → bufferedAsyncIterable.js} +1 -1
- package/dist/utils/bufferedAsyncIterable.js.map +1 -0
- package/dist/utils/deferred.d.ts.map +1 -1
- package/dist/utils/deferred.js.map +1 -1
- package/dist/utils/getOrInsertPolyFill.d.ts +2 -0
- package/dist/utils/getOrInsertPolyFill.d.ts.map +1 -0
- package/dist/utils/getOrInsertPolyFill.js +12 -0
- package/dist/utils/getOrInsertPolyFill.js.map +1 -0
- package/dist/utils/logger.d.ts +40 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +53 -7
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/mod.d.ts +6 -1
- package/dist/utils/mod.d.ts.map +1 -1
- package/dist/utils/mod.js +5 -1
- package/dist/utils/mod.js.map +1 -1
- package/dist/utils/outboundTopicAliasManager.d.ts +52 -0
- package/dist/utils/outboundTopicAliasManager.d.ts.map +1 -0
- package/dist/utils/outboundTopicAliasManager.js +74 -0
- package/dist/utils/outboundTopicAliasManager.js.map +1 -0
- package/dist/utils/queue.d.ts.map +1 -1
- package/dist/utils/topicFilter.d.ts +32 -0
- package/dist/utils/topicFilter.d.ts.map +1 -0
- package/dist/utils/topicFilter.js +52 -0
- package/dist/utils/topicFilter.js.map +1 -0
- package/dist/utils/utils.d.ts +2 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +2 -0
- package/dist/utils/utils.js.map +1 -1
- package/dist/utils/validators.d.ts +34 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +61 -0
- package/dist/utils/validators.js.map +1 -0
- package/dist/web/webSocketStream.d.ts +29 -0
- package/dist/web/webSocketStream.d.ts.map +1 -0
- package/dist/web/webSocketStream.js +69 -0
- package/dist/web/webSocketStream.js.map +1 -0
- package/dist/web/wrapWebSocket.d.ts +12 -0
- package/dist/web/wrapWebSocket.d.ts.map +1 -0
- package/dist/web/wrapWebSocket.js +41 -0
- package/dist/web/wrapWebSocket.js.map +1 -0
- package/dist/web/wsClient.d.ts +7 -0
- package/dist/web/wsClient.d.ts.map +1 -0
- package/dist/web/wsClient.js +22 -0
- package/dist/web/wsClient.js.map +1 -0
- package/dist/web/wsClient.test.d.ts +2 -0
- package/dist/web/wsClient.test.d.ts.map +1 -0
- package/dist/web/wsClient.test.js +20 -0
- package/dist/web/wsClient.test.js.map +1 -0
- package/examples/authHandler.test.ts +164 -0
- package/examples/mqtt.test.ts +89 -0
- package/examples/mqtts.test.ts +100 -0
- package/examples/webSocket.test.ts +94 -0
- package/mqttConn/mqttConn.test.ts +9 -9
- package/mqttConn/mqttConn.ts +91 -49
- package/mqttPacket/BitMask.ts +11 -19
- package/mqttPacket/Properties.ts +6 -3
- package/mqttPacket/ReasonCode.ts +2 -1
- package/mqttPacket/auth.test.ts +1 -1
- package/mqttPacket/auth.ts +41 -48
- package/mqttPacket/codec.ts +146 -0
- package/mqttPacket/connack.ts +57 -68
- package/mqttPacket/connect.test.ts +2 -2
- package/mqttPacket/connect.ts +197 -204
- package/mqttPacket/decoder.test.ts +0 -39
- package/mqttPacket/decoder.ts +9 -36
- package/mqttPacket/disconnect.ts +57 -68
- package/mqttPacket/encoder.ts +5 -40
- package/mqttPacket/length.ts +1 -1
- package/mqttPacket/mod.ts +48 -200
- package/mqttPacket/pingreq.ts +21 -27
- package/mqttPacket/pingres.ts +21 -27
- package/mqttPacket/protocolLevels.ts +12 -7
- package/mqttPacket/pubblishAcks.ts +68 -77
- package/mqttPacket/publish.ts +76 -83
- package/mqttPacket/suback.ts +48 -58
- package/mqttPacket/subscribe.ts +141 -117
- package/mqttPacket/types.ts +1 -9
- package/mqttPacket/unsuback.ts +46 -58
- package/mqttPacket/unsubscribe.ts +74 -63
- package/mqttPacket/validators.ts +5 -31
- package/node/socket-node-stream.test.ts +322 -0
- package/node/socket-node-stream.ts +174 -0
- package/node/tcpClient.test.ts +70 -0
- package/node/tcpClient.ts +13 -12
- package/node/tcpServer.test.ts +24 -20
- package/node/tcpServer.ts +6 -0
- package/node/tlsServer.test.ts +94 -0
- package/node/tlsServer.ts +81 -0
- package/node/wrapNodeSocket.ts +7 -30
- package/package.json +73 -45
- package/persistence/basicPersistence.ts +495 -0
- package/persistence/deps.ts +11 -1
- package/persistence/memory/memoryPersistence.ts +12 -152
- package/persistence/memory/memoryStorage.ts +232 -0
- package/persistence/mod.ts +4 -4
- package/persistence/persistence.test.ts +24 -0
- package/persistence/persistence.testing.ts +1324 -0
- package/persistence/persistence.ts +111 -67
- package/persistence/sqlite/sqliteDatabase.ts +294 -0
- package/persistence/sqlite/sqlitePersistence.test.ts +48 -0
- package/persistence/sqlite/sqlitePersistence.ts +36 -0
- package/persistence/sqlite/sqliteStorage.ts +324 -0
- package/persistence/storage.ts +84 -0
- package/server/config.ts +65 -0
- package/server/context.ts +658 -74
- package/server/deps.ts +25 -5
- package/server/handlers/completeConnect.ts +93 -0
- package/server/handlers/duplicate.test.ts +196 -0
- package/server/handlers/handleAuth.test.ts +225 -0
- package/server/handlers/handleAuth.ts +88 -0
- package/server/handlers/handleConnect.test.ts +589 -0
- package/server/handlers/handleConnect.ts +201 -86
- package/server/handlers/handleConnect.version.test.ts +108 -0
- package/server/handlers/handleDisconnect.test.ts +56 -0
- package/server/handlers/handleDisconnect.ts +3 -3
- package/server/handlers/handlePacket.test.ts +24 -0
- package/server/handlers/handlePacket.ts +30 -8
- package/server/handlers/handlePingreq.test.ts +29 -0
- package/server/handlers/handlePuback.test.ts +28 -0
- package/server/handlers/handlePuback.ts +5 -8
- package/server/handlers/handlePubcomp.test.ts +28 -0
- package/server/handlers/handlePubcomp.ts +5 -4
- package/server/handlers/handlePublish.test.ts +471 -0
- package/server/handlers/handlePublish.ts +189 -35
- package/server/handlers/handlePubrec.test.ts +28 -0
- package/server/handlers/handlePubrec.ts +2 -3
- package/server/handlers/handlePubrel.test.ts +74 -0
- package/server/handlers/handlePubrel.ts +12 -2
- package/server/handlers/handleSubscribe.test.ts +971 -0
- package/server/handlers/handleSubscribe.ts +158 -39
- package/server/handlers/handleUnsubscribe.test.ts +79 -0
- package/server/handlers/handleUnsubscribe.ts +29 -5
- package/server/handlers/keepalive.test.ts +132 -0
- package/server/handlers/session.persistence.test.ts +194 -0
- package/server/handlers/will.delivery.test.ts +221 -0
- package/server/mod.ts +4 -3
- package/server/preconnect.test.ts +151 -0
- package/server/server.ts +115 -17
- package/socket/socket.test.ts +91 -0
- package/socket/socket.ts +81 -31
- package/timer/timer.test.ts +4 -7
- package/timer/timer.ts +36 -0
- package/tools/benchmarks/receiver.ts +51 -0
- package/tools/benchmarks/sender.ts +48 -0
- package/tools/benchmarks/utils.ts +31 -0
- package/tools/mqtt-compat/README.md +130 -0
- package/tools/mqtt-compat/broker.ts +52 -0
- package/tools/mqtt-compat/paho-mqtt4.test.ts +379 -0
- package/tools/mqtt-compat/paho-mqtt5.tests.ts +887 -0
- package/trie/trie.test.ts +9 -1
- package/trie/trie.ts +57 -22
- package/utils/bufferedAsyncIterable.test.ts +92 -0
- package/utils/{BufferedAsyncIterable.ts → bufferedAsyncIterable.ts} +1 -1
- package/utils/deferred.test.ts +36 -0
- package/utils/deferred.ts +0 -1
- package/utils/getOrInsertPolyFill.ts +12 -0
- package/utils/logger.test.ts +189 -0
- package/utils/logger.ts +62 -7
- package/utils/mod.ts +15 -1
- package/utils/outboundTopicAliasManager.ts +100 -0
- package/utils/queue.test.ts +61 -0
- package/utils/topicFilter.test.ts +63 -0
- package/utils/topicFilter.ts +61 -0
- package/utils/utils.ts +3 -0
- package/utils/validators.ts +67 -0
- package/web/webSocketStream.ts +97 -0
- package/web/wrapWebSocket.ts +52 -0
- package/web/wsClient.test.ts +26 -0
- package/web/wsClient.ts +25 -0
- package/benchmarks/receiver.ts +0 -35
- package/benchmarks/sender.ts +0 -32
- package/benchmarks/utils.ts +0 -9
- package/dev_utils/dummyConn.ts +0 -110
- package/dist/persistence/store.d.ts +0 -13
- package/dist/persistence/store.d.ts.map +0 -1
- package/dist/persistence/store.js +0 -2
- package/dist/persistence/store.js.map +0 -1
- package/dist/utils/BufferedAsyncIterable.d.ts.map +0 -1
- package/dist/utils/BufferedAsyncIterable.js.map +0 -1
- package/examples/tcpServer.test.ts +0 -148
- package/persistence/memory/memoryPersistence.test.ts +0 -156
- package/persistence/store.ts +0 -15
- package/server/test/handleConnect.test.ts +0 -130
- package/server/test/test-handlers.ts +0 -53
package/dist/trie/trie.js
CHANGED
|
@@ -36,7 +36,7 @@ export class Trie {
|
|
|
36
36
|
*/
|
|
37
37
|
match(key) {
|
|
38
38
|
const parts = key.split(this.separator);
|
|
39
|
-
if (parts.length > 0 && parts[0]
|
|
39
|
+
if (parts.length > 0 && parts[0]?.charAt(0) === this.reservedPrefix) {
|
|
40
40
|
return this._matchPrefix(parts);
|
|
41
41
|
}
|
|
42
42
|
return this._match(parts);
|
|
@@ -47,10 +47,10 @@ export class Trie {
|
|
|
47
47
|
* @returns Array of matched values
|
|
48
48
|
*/
|
|
49
49
|
_matchPrefix(parts) {
|
|
50
|
-
if (parts.length === 0) {
|
|
51
|
-
return this.#value ? this.#value : [];
|
|
52
|
-
}
|
|
53
50
|
const [first, ...rest] = parts;
|
|
51
|
+
if (first === undefined)
|
|
52
|
+
return [];
|
|
53
|
+
// Direct lookup on the reserved topic node without evaluating top-level + or #
|
|
54
54
|
return this.matchChild(first, rest);
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
@@ -59,15 +59,26 @@ export class Trie {
|
|
|
59
59
|
* @returns Array of matched values
|
|
60
60
|
*/
|
|
61
61
|
_match(parts) {
|
|
62
|
+
let results = [];
|
|
63
|
+
// 1. Check if there is a multi-level wildcard ('#') at this level.
|
|
64
|
+
// In MQTT, 'a/#' matches 'a', 'a/b', 'a/b/c', etc.
|
|
65
|
+
const subtreeNode = this.#children.get(this.wildcardSubtree);
|
|
66
|
+
if (subtreeNode) {
|
|
67
|
+
results = results.concat(subtreeNode.#value);
|
|
68
|
+
}
|
|
69
|
+
// 2. Base case: we reached the end of the topic parts.
|
|
62
70
|
if (parts.length === 0) {
|
|
63
|
-
return this.#value
|
|
71
|
+
return results.concat(this.#value);
|
|
64
72
|
}
|
|
65
73
|
const [first, ...rest] = parts;
|
|
74
|
+
// deno-coverage-ignore
|
|
75
|
+
if (first === undefined)
|
|
76
|
+
return [];
|
|
77
|
+
// 3. Exact matching child node
|
|
66
78
|
const exact = this.matchChild(first, rest);
|
|
79
|
+
// 4. Single-level wildcard ('+') matching child node
|
|
67
80
|
const single = this.matchChild(this.wildcardOne, rest);
|
|
68
|
-
|
|
69
|
-
const results = exact.concat(single, subtree);
|
|
70
|
-
return results;
|
|
81
|
+
return results.concat(exact, single);
|
|
71
82
|
}
|
|
72
83
|
/**
|
|
73
84
|
* Adds a value to the trie at the specified key
|
|
@@ -88,6 +99,9 @@ export class Trie {
|
|
|
88
99
|
return;
|
|
89
100
|
}
|
|
90
101
|
const [first, ...rest] = parts;
|
|
102
|
+
// deno-coverage-ignore
|
|
103
|
+
if (first === undefined)
|
|
104
|
+
return;
|
|
91
105
|
const child = this.#children.get(first);
|
|
92
106
|
if (child instanceof Trie) {
|
|
93
107
|
child._add(rest, value);
|
|
@@ -97,13 +111,17 @@ export class Trie {
|
|
|
97
111
|
this.#children.set(first, node);
|
|
98
112
|
node._add(rest, value);
|
|
99
113
|
}
|
|
100
|
-
return;
|
|
101
114
|
}
|
|
102
115
|
/**
|
|
103
116
|
* Removes a value from the trie at the specified key
|
|
104
117
|
* @param key The key to remove the value from
|
|
105
118
|
* @param value The value to remove
|
|
106
119
|
*/
|
|
120
|
+
/**
|
|
121
|
+
* Removes a value from the trie at the specified key
|
|
122
|
+
* @param key The key to remove the value from
|
|
123
|
+
* @param value The value (or partial object) to remove
|
|
124
|
+
*/
|
|
107
125
|
remove(key, value) {
|
|
108
126
|
return this._remove(key.split(this.separator), value);
|
|
109
127
|
}
|
|
@@ -114,35 +132,47 @@ export class Trie {
|
|
|
114
132
|
*/
|
|
115
133
|
_remove(parts, value) {
|
|
116
134
|
if (parts.length === 0) {
|
|
117
|
-
const arr = this.#value
|
|
135
|
+
const arr = this.#value;
|
|
118
136
|
this.#value = arr.filter(this.filter(value));
|
|
119
137
|
return;
|
|
120
138
|
}
|
|
121
139
|
const [first, ...rest] = parts;
|
|
140
|
+
// deno-coverage-ignore
|
|
141
|
+
if (first === undefined)
|
|
142
|
+
return;
|
|
122
143
|
const node = this.#children.get(first);
|
|
123
144
|
if (node) {
|
|
124
145
|
node._remove(rest, value);
|
|
125
|
-
if (node.#value.length === 0 &&
|
|
146
|
+
if (node.#value.length === 0 && node.#children.size === 0) {
|
|
126
147
|
this.#children.delete(first);
|
|
127
148
|
}
|
|
128
149
|
}
|
|
129
150
|
}
|
|
130
151
|
/**
|
|
131
152
|
* Creates a filter function for removing values
|
|
132
|
-
*
|
|
133
|
-
* @
|
|
153
|
+
* Supports partial object matching when looseCompare is enabled or when matching objects.
|
|
154
|
+
* @param value The value (or partial value) to filter against
|
|
155
|
+
* @returns Filter function (returns true to KEEP the item, false to REMOVE it)
|
|
134
156
|
*/
|
|
135
157
|
filter(value) {
|
|
136
|
-
if (
|
|
158
|
+
if (typeof value === "object" && value !== null) {
|
|
137
159
|
return (item) => {
|
|
160
|
+
if (typeof item !== "object" || item === null) {
|
|
161
|
+
return true; // Keep if the stored item isn't an object but we are filtering by one
|
|
162
|
+
}
|
|
163
|
+
// Check if every key-value pair in our filter object matches the stored item
|
|
138
164
|
for (const key in value) {
|
|
139
|
-
if (value
|
|
140
|
-
|
|
165
|
+
if (Object.prototype.hasOwnProperty.call(value, key)) {
|
|
166
|
+
// If the stored item has a different value (or doesn't have the key), it's not a match
|
|
167
|
+
if (item[key] !== value[key]) {
|
|
168
|
+
return true; // Keep the item (no match)
|
|
169
|
+
}
|
|
141
170
|
}
|
|
142
171
|
}
|
|
143
|
-
return false;
|
|
172
|
+
return false; // Remove the item (it matches all criteria in the partial object)
|
|
144
173
|
};
|
|
145
174
|
}
|
|
175
|
+
// Fallback for primitives
|
|
146
176
|
return (item) => item !== value;
|
|
147
177
|
}
|
|
148
178
|
}
|
package/dist/trie/trie.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trie.js","sourceRoot":"","sources":["../../trie/trie.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,OAAO,IAAI;IACf,MAAM,CAAW;IACjB,SAAS,CAAuB;IACxB,SAAS,GAAG,GAAG,CAAC;IAChB,WAAW,GAAG,GAAG,CAAC;IAClB,eAAe,GAAG,GAAG,CAAC;IACtB,cAAc,GAAG,GAAG,CAAC;IACrB,YAAY,CAAU;IAE9B;;;OAGG;IACH,YAAY,YAAY,GAAG,KAAK;QAC9B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,KAAa,EAAE,KAAY;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAW;QACf,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"trie.js","sourceRoot":"","sources":["../../trie/trie.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../utils/assert.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;IACvC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../utils/assert.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;IACvC,iCAAiC;IACjC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,gEAAgE;AAChE,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,SAAK,GAAG,OAAO,CAAC,IAAI,CAI5D"}
|
|
@@ -23,4 +23,4 @@ export declare class BufferedAsyncIterable<T> implements AsyncIterable<T> {
|
|
|
23
23
|
readonly push: (item: T) => void | Promise<void>;
|
|
24
24
|
get isDone(): boolean;
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=
|
|
26
|
+
//# sourceMappingURL=bufferedAsyncIterable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bufferedAsyncIterable.d.ts","sourceRoot":"","sources":["../../utils/bufferedAsyncIterable.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,qBAAa,qBAAqB,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;;IAC/D,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,IAAI,CAAS;IAIrB,YAAY,UAAU,GAAE,MAAa,EAGpC;IAEM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAIzE;IAED,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUrB;IAED,KAAK,CAAC,MAAM,SAAW,GAAG,IAAI,CAK7B;IAED,QAAQ,CAAC,IAAI,SAAU,CAAC,KAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB7C;IAEF,IAAI,MAAM,IAAI,OAAO,CAEpB;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bufferedAsyncIterable.js","sourceRoot":"","sources":["../../utils/bufferedAsyncIterable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,qBAAqB;IACxB,MAAM,CAAgB;IACtB,UAAU,CAAS;IAEnB,IAAI,GAAG,KAAK,CAAC;IAErB,KAAK,CAA2B;IAEhC,YAAY,UAAU,GAAW,IAAI;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI;QACF,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAG,CAAC;QAChC,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,EAAK,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,GAAG,QAAQ;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEQ,IAAI,GAAG,CAAC,IAAO,EAAwB,EAAE;QAChD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,8EAA8E;YAC9E,6EAA6E;YAC7E,6EAA6E;YAC7E,2EAA2E;YAC3E,+EAA+E;YAC/E,oCAAoC;YACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../utils/deferred.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../utils/deferred.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAG,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,MAAM,EAAG,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAE9B,cAKC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferred.js","sourceRoot":"","sources":["../../utils/deferred.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"deferred.js","sourceRoot":"","sources":["../../utils/deferred.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAQ;IACnB,OAAO,CAAa;IACpB,OAAO,CAAoB;IAC3B,MAAM,CAAwB;IAE9B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrInsertPolyFill.d.ts","sourceRoot":"","sources":["../../utils/getOrInsertPolyFill.ts"],"names":[],"mappings":"AAKA,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAM5E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Node 26 has getOrInsert by default.
|
|
3
|
+
This is a polyfill for older versions
|
|
4
|
+
*/
|
|
5
|
+
export function getOrInsert(map, key, defaultValue) {
|
|
6
|
+
if (map.has(key)) {
|
|
7
|
+
return map.get(key);
|
|
8
|
+
}
|
|
9
|
+
map.set(key, defaultValue);
|
|
10
|
+
return defaultValue;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=getOrInsertPolyFill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrInsertPolyFill.js","sourceRoot":"","sources":["../../utils/getOrInsertPolyFill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,WAAW,CAAO,GAAc,EAAE,GAAM,EAAE,YAAe;IACvE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACvB,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC3B,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The available log levels
|
|
2
|
+
* The available log levels used to filter messages.
|
|
3
3
|
*/
|
|
4
4
|
export declare const LogLevel: {
|
|
5
|
+
/** Crucial application errors or failures. */
|
|
5
6
|
readonly error: 0;
|
|
7
|
+
/** Non-fatal warnings that indicate unexpected behavior. */
|
|
6
8
|
readonly warn: 1;
|
|
9
|
+
/** Informational statements highlighting general operational flow. */
|
|
7
10
|
readonly info: 2;
|
|
11
|
+
/** Detailed tracing and comprehensive runtime statements. */
|
|
8
12
|
readonly verbose: 3;
|
|
13
|
+
/** High-density internal troubleshooting logs. */
|
|
9
14
|
readonly debug: 4;
|
|
10
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Union type representing the permitted numeric log level indices.
|
|
18
|
+
*/
|
|
11
19
|
export type TLogLevel = typeof LogLevel[keyof typeof LogLevel];
|
|
12
20
|
/**
|
|
13
|
-
* Simple logger class
|
|
21
|
+
* Simple logger class providing level-configurable output routing.
|
|
22
|
+
* @class Logger
|
|
23
|
+
*
|
|
14
24
|
* @example
|
|
15
25
|
* ```ts
|
|
16
26
|
* const logger = new Logger();
|
|
@@ -23,21 +33,48 @@ export type TLogLevel = typeof LogLevel[keyof typeof LogLevel];
|
|
|
23
33
|
* ```
|
|
24
34
|
*/
|
|
25
35
|
export declare class Logger {
|
|
36
|
+
/** Native console reference used to output critical errors. */
|
|
26
37
|
private defaultError;
|
|
38
|
+
/** Native console reference used to output warning flags. */
|
|
27
39
|
private defaultWarn;
|
|
40
|
+
/** Native console reference used to output standard runtime indicators. */
|
|
28
41
|
private defaultInfo;
|
|
42
|
+
/** Native console reference used to track granular metrics and details. */
|
|
29
43
|
private defaultVerbose;
|
|
44
|
+
/** Native console reference used to step through highly specific operations. */
|
|
30
45
|
private defaultDebug;
|
|
46
|
+
/** Flag indicating if error messages should be logged. */
|
|
47
|
+
isError: boolean;
|
|
48
|
+
/** Flag indicating if warning messages should be logged. */
|
|
49
|
+
isWarn: boolean;
|
|
50
|
+
/** Flag indicating if informational messages should be logged. */
|
|
51
|
+
isInfo: boolean;
|
|
52
|
+
/** Flag indicating if verbose messages should be logged. */
|
|
53
|
+
isVerbose: boolean;
|
|
54
|
+
/** Flag indicating if debug messages should be logged. */
|
|
55
|
+
isDebug: boolean;
|
|
56
|
+
/** Log an error message to the standard error stream. */
|
|
31
57
|
error: typeof console.log;
|
|
58
|
+
/** Log a warning message if the active log level permits. */
|
|
32
59
|
warn: typeof console.log;
|
|
60
|
+
/** Log an informational status update if the active log level permits. */
|
|
33
61
|
info: typeof console.log;
|
|
62
|
+
/** Log extended telemetry notes if the active log level permits. */
|
|
34
63
|
verbose: typeof console.log;
|
|
64
|
+
/** Log debug parameters and objects if the active log level permits. */
|
|
35
65
|
debug: typeof console.log;
|
|
66
|
+
/** Creates a wrapper function that evaluates lazy log arguments before invoking the target logging function. */
|
|
67
|
+
private createLogFn;
|
|
68
|
+
/** Create a new Logger instance. */
|
|
36
69
|
constructor();
|
|
70
|
+
/**
|
|
71
|
+
* Adjusts the current verbosity threshold, enabling or masking specific log outputs.
|
|
72
|
+
* @param {TLogLevel} logLevel - The minimum numeric severity level threshold to output.
|
|
73
|
+
*/
|
|
37
74
|
level(logLevel: TLogLevel): void;
|
|
38
75
|
}
|
|
39
76
|
/**
|
|
40
|
-
*
|
|
77
|
+
* Provides a single pre-configured global logger instance.
|
|
41
78
|
* @example
|
|
42
79
|
* ```ts
|
|
43
80
|
* import { logger } from "./utils/logger.ts";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../utils/logger.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../utils/logger.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB,8CAA8C;aAC9C,KAAK,EAAE,CAAC;IACR,4DAA4D;aAC5D,IAAI,EAAE,CAAC;IACP,sEAAsE;aACtE,IAAI,EAAE,CAAC;IACP,6DAA6D;aAC7D,OAAO,EAAE,CAAC;IACV,kDAAkD;aAClD,KAAK,EAAE,CAAC;CACA,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAI/D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,MAAM;IACjB,+DAA+D;IAC/D,OAAO,CAAC,YAAY,CAAiB;IACrC,6DAA6D;IAC7D,OAAO,CAAC,WAAW,CAAgB;IACnC,2EAA2E;IAC3E,OAAO,CAAC,WAAW,CAAgB;IACnC,2EAA2E;IAC3E,OAAO,CAAC,cAAc,CAAe;IACrC,gFAAgF;IAChF,OAAO,CAAC,YAAY,CAAe;IAEnC,0DAA0D;IAC1D,OAAO,UAAQ;IACf,4DAA4D;IAC5D,MAAM,UAAQ;IACd,kEAAkE;IAClE,MAAM,UAAQ;IACd,4DAA4D;IAC5D,SAAS,UAAS;IAClB,0DAA0D;IAC1D,OAAO,UAAS;IAEhB,yDAAyD;IACzD,KAAK,EAAE,OAAO,OAAO,CAAC,GAAG,CAAqB;IAC9C,6DAA6D;IAC7D,IAAI,EAAE,OAAO,OAAO,CAAC,GAAG,CAAoB;IAC5C,0EAA0E;IAC1E,IAAI,EAAE,OAAO,OAAO,CAAC,GAAG,CAAoB;IAC5C,oEAAoE;IACpE,OAAO,EAAE,OAAO,OAAO,CAAC,GAAG,CAAQ;IACnC,wEAAwE;IACxE,KAAK,EAAE,OAAO,OAAO,CAAC,GAAG,CAAQ;IAEjC,gHAAgH;IAEhH,OAAO,CAAC,WAAW;IASnB,oCAAoC;IACpC,cAAgB;IAEhB;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,SAAS,QAWxB;CACF;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM,EAAE,MAAqB,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import { noop } from "./utils.js";
|
|
2
2
|
/**
|
|
3
|
-
* The available log levels
|
|
3
|
+
* The available log levels used to filter messages.
|
|
4
4
|
*/
|
|
5
5
|
export const LogLevel = {
|
|
6
|
+
/** Crucial application errors or failures. */
|
|
6
7
|
error: 0,
|
|
8
|
+
/** Non-fatal warnings that indicate unexpected behavior. */
|
|
7
9
|
warn: 1,
|
|
10
|
+
/** Informational statements highlighting general operational flow. */
|
|
8
11
|
info: 2,
|
|
12
|
+
/** Detailed tracing and comprehensive runtime statements. */
|
|
9
13
|
verbose: 3,
|
|
14
|
+
/** High-density internal troubleshooting logs. */
|
|
10
15
|
debug: 4,
|
|
11
16
|
};
|
|
12
17
|
/**
|
|
13
|
-
* Simple logger class
|
|
18
|
+
* Simple logger class providing level-configurable output routing.
|
|
19
|
+
* @class Logger
|
|
20
|
+
*
|
|
14
21
|
* @example
|
|
15
22
|
* ```ts
|
|
16
23
|
* const logger = new Logger();
|
|
@@ -23,26 +30,65 @@ export const LogLevel = {
|
|
|
23
30
|
* ```
|
|
24
31
|
*/
|
|
25
32
|
export class Logger {
|
|
33
|
+
/** Native console reference used to output critical errors. */
|
|
26
34
|
defaultError = console.error;
|
|
35
|
+
/** Native console reference used to output warning flags. */
|
|
27
36
|
defaultWarn = console.warn;
|
|
37
|
+
/** Native console reference used to output standard runtime indicators. */
|
|
28
38
|
defaultInfo = console.info;
|
|
39
|
+
/** Native console reference used to track granular metrics and details. */
|
|
29
40
|
defaultVerbose = console.log;
|
|
41
|
+
/** Native console reference used to step through highly specific operations. */
|
|
30
42
|
defaultDebug = console.log;
|
|
43
|
+
/** Flag indicating if error messages should be logged. */
|
|
44
|
+
isError = true;
|
|
45
|
+
/** Flag indicating if warning messages should be logged. */
|
|
46
|
+
isWarn = true;
|
|
47
|
+
/** Flag indicating if informational messages should be logged. */
|
|
48
|
+
isInfo = true;
|
|
49
|
+
/** Flag indicating if verbose messages should be logged. */
|
|
50
|
+
isVerbose = false;
|
|
51
|
+
/** Flag indicating if debug messages should be logged. */
|
|
52
|
+
isDebug = false;
|
|
53
|
+
/** Log an error message to the standard error stream. */
|
|
31
54
|
error = this.defaultError;
|
|
55
|
+
/** Log a warning message if the active log level permits. */
|
|
32
56
|
warn = this.defaultWarn;
|
|
57
|
+
/** Log an informational status update if the active log level permits. */
|
|
33
58
|
info = this.defaultInfo;
|
|
59
|
+
/** Log extended telemetry notes if the active log level permits. */
|
|
34
60
|
verbose = noop;
|
|
61
|
+
/** Log debug parameters and objects if the active log level permits. */
|
|
35
62
|
debug = noop;
|
|
63
|
+
/** Creates a wrapper function that evaluates lazy log arguments before invoking the target logging function. */
|
|
64
|
+
// deno-lint-ignore no-explicit-any
|
|
65
|
+
createLogFn(targetFn) {
|
|
66
|
+
return (...args) => {
|
|
67
|
+
const evaluated = args.map((arg) => (typeof arg === "function" ? arg() : arg));
|
|
68
|
+
targetFn(...evaluated);
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** Create a new Logger instance. */
|
|
36
72
|
constructor() { }
|
|
73
|
+
/**
|
|
74
|
+
* Adjusts the current verbosity threshold, enabling or masking specific log outputs.
|
|
75
|
+
* @param {TLogLevel} logLevel - The minimum numeric severity level threshold to output.
|
|
76
|
+
*/
|
|
37
77
|
level(logLevel) {
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
41
|
-
this.
|
|
78
|
+
this.isWarn = logLevel >= LogLevel.warn;
|
|
79
|
+
this.isInfo = logLevel >= LogLevel.info;
|
|
80
|
+
this.isVerbose = logLevel >= LogLevel.verbose;
|
|
81
|
+
this.isDebug = logLevel >= LogLevel.debug;
|
|
82
|
+
this.warn = this.isWarn ? this.createLogFn(this.defaultWarn) : noop;
|
|
83
|
+
this.info = this.isInfo ? this.createLogFn(this.defaultInfo) : noop;
|
|
84
|
+
this.verbose = this.isVerbose
|
|
85
|
+
? this.createLogFn(this.defaultVerbose)
|
|
86
|
+
: noop;
|
|
87
|
+
this.debug = this.isDebug ? this.createLogFn(this.defaultDebug) : noop;
|
|
42
88
|
}
|
|
43
89
|
}
|
|
44
90
|
/**
|
|
45
|
-
*
|
|
91
|
+
* Provides a single pre-configured global logger instance.
|
|
46
92
|
* @example
|
|
47
93
|
* ```ts
|
|
48
94
|
* import { logger } from "./utils/logger.ts";
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;CACA,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../utils/logger.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/mod.d.ts
CHANGED
|
@@ -5,5 +5,10 @@
|
|
|
5
5
|
export { assert } from "./assert.ts";
|
|
6
6
|
export { Deferred } from "./deferred.ts";
|
|
7
7
|
export { Logger, logger, LogLevel } from "./logger.ts";
|
|
8
|
-
export { BufferedAsyncIterable } from "./
|
|
8
|
+
export { BufferedAsyncIterable } from "./bufferedAsyncIterable.ts";
|
|
9
|
+
export { joinTopicFilter, parseTopicFilter, topicFilterToRegExp, } from "./topicFilter.ts";
|
|
10
|
+
export { OutboundTopicAliasManager } from "./outboundTopicAliasManager.ts";
|
|
11
|
+
export type { OutboundTopicAlias } from "./outboundTopicAliasManager.ts";
|
|
12
|
+
export { hasWildcards, invalidmaxTopicLevels, invalidTopic, invalidTopicFilter, } from "./validators.ts";
|
|
13
|
+
export { delay, noop } from "./utils.ts";
|
|
9
14
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/utils/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../utils/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../utils/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/utils/mod.js
CHANGED
|
@@ -5,5 +5,9 @@
|
|
|
5
5
|
export { assert } from "./assert.js";
|
|
6
6
|
export { Deferred } from "./deferred.js";
|
|
7
7
|
export { Logger, logger, LogLevel } from "./logger.js";
|
|
8
|
-
export { BufferedAsyncIterable } from "./
|
|
8
|
+
export { BufferedAsyncIterable } from "./bufferedAsyncIterable.js";
|
|
9
|
+
export { joinTopicFilter, parseTopicFilter, topicFilterToRegExp, } from "./topicFilter.js";
|
|
10
|
+
export { OutboundTopicAliasManager } from "./outboundTopicAliasManager.js";
|
|
11
|
+
export { hasWildcards, invalidmaxTopicLevels, invalidTopic, invalidTopicFilter, } from "./validators.js";
|
|
12
|
+
export { delay, noop } from "./utils.js";
|
|
9
13
|
//# sourceMappingURL=mod.js.map
|
package/dist/utils/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../utils/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../utils/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the result of processing an outbound topic name,
|
|
3
|
+
* containing either the original topic name, a topic alias integer, or both.
|
|
4
|
+
*/
|
|
5
|
+
export interface OutboundTopicAlias {
|
|
6
|
+
/**
|
|
7
|
+
* The topic name.
|
|
8
|
+
* Will be empty (`""`) when a valid alias mapping has already been established.
|
|
9
|
+
*/
|
|
10
|
+
topicName: string;
|
|
11
|
+
/**
|
|
12
|
+
* The numeric alias assigned to the topic, if aliases are enabled.
|
|
13
|
+
*/
|
|
14
|
+
topicAlias?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Manages outbound MQTT topic aliases using a Least Recently Used (LRU) caching strategy.
|
|
18
|
+
*/
|
|
19
|
+
export declare class OutboundTopicAliasManager {
|
|
20
|
+
/**
|
|
21
|
+
* The maximum number of topic aliases supported by the broker/client.
|
|
22
|
+
*/
|
|
23
|
+
private readonly maxAliases;
|
|
24
|
+
/**
|
|
25
|
+
* Internal mapping from topic names to assigned aliases.
|
|
26
|
+
* Leverages JavaScript's Map insertion-order behavior to act as an LRU cache.
|
|
27
|
+
*/
|
|
28
|
+
private readonly topicToAlias;
|
|
29
|
+
/**
|
|
30
|
+
* Creates an instance of `OutboundTopicAliasManager`.
|
|
31
|
+
*
|
|
32
|
+
* @param clientTopicAliasMaximum - The maximum number of topic aliases allowed (defaults to `0`, meaning disabled).
|
|
33
|
+
*/
|
|
34
|
+
constructor(clientTopicAliasMaximum?: number);
|
|
35
|
+
/**
|
|
36
|
+
* Processes an outbound topic name and returns the appropriate payload metadata
|
|
37
|
+
* (`OutboundTopcAlias`) based on alias availability and caching state.
|
|
38
|
+
*
|
|
39
|
+
* - If aliases are disabled (`maxAliases === 0`), returns only the original `topicName`.
|
|
40
|
+
* - If the topic is already cached (cache hit), refreshes its LRU position and returns the `topicAlias` with an empty `topicName`.
|
|
41
|
+
* - If the topic is not cached (cache miss), assigns a new alias or evicts the least recently used topic alias mapping.
|
|
42
|
+
*
|
|
43
|
+
* @param topic - The outbound MQTT topic name to process.
|
|
44
|
+
* @returns An object containing the formatted `topicName` and optional `topicAlias`.
|
|
45
|
+
*/
|
|
46
|
+
processTopic(topic: string): OutboundTopicAlias;
|
|
47
|
+
/**
|
|
48
|
+
* Clears all internal topic alias mappings and releases cached resources.
|
|
49
|
+
*/
|
|
50
|
+
destroy(): void;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=outboundTopicAliasManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outboundTopicAliasManager.d.ts","sourceRoot":"","sources":["../../utils/outboundTopicAliasManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,yBAAyB;IACpC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IAEnD;;;;OAIG;IACH,YAAY,uBAAuB,GAAE,MAAU,EAG9C;IAED;;;;;;;;;;OAUG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAsCrD;IAED;;OAEG;IACI,OAAO,IAAI,IAAI,CAErB;CACF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manages outbound MQTT topic aliases using a Least Recently Used (LRU) caching strategy.
|
|
3
|
+
*/
|
|
4
|
+
export class OutboundTopicAliasManager {
|
|
5
|
+
/**
|
|
6
|
+
* The maximum number of topic aliases supported by the broker/client.
|
|
7
|
+
*/
|
|
8
|
+
maxAliases;
|
|
9
|
+
/**
|
|
10
|
+
* Internal mapping from topic names to assigned aliases.
|
|
11
|
+
* Leverages JavaScript's Map insertion-order behavior to act as an LRU cache.
|
|
12
|
+
*/
|
|
13
|
+
topicToAlias;
|
|
14
|
+
/**
|
|
15
|
+
* Creates an instance of `OutboundTopicAliasManager`.
|
|
16
|
+
*
|
|
17
|
+
* @param clientTopicAliasMaximum - The maximum number of topic aliases allowed (defaults to `0`, meaning disabled).
|
|
18
|
+
*/
|
|
19
|
+
constructor(clientTopicAliasMaximum = 0) {
|
|
20
|
+
this.maxAliases = clientTopicAliasMaximum;
|
|
21
|
+
this.topicToAlias = new Map();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Processes an outbound topic name and returns the appropriate payload metadata
|
|
25
|
+
* (`OutboundTopcAlias`) based on alias availability and caching state.
|
|
26
|
+
*
|
|
27
|
+
* - If aliases are disabled (`maxAliases === 0`), returns only the original `topicName`.
|
|
28
|
+
* - If the topic is already cached (cache hit), refreshes its LRU position and returns the `topicAlias` with an empty `topicName`.
|
|
29
|
+
* - If the topic is not cached (cache miss), assigns a new alias or evicts the least recently used topic alias mapping.
|
|
30
|
+
*
|
|
31
|
+
* @param topic - The outbound MQTT topic name to process.
|
|
32
|
+
* @returns An object containing the formatted `topicName` and optional `topicAlias`.
|
|
33
|
+
*/
|
|
34
|
+
processTopic(topic) {
|
|
35
|
+
if (this.maxAliases === 0) {
|
|
36
|
+
return { topicName: topic };
|
|
37
|
+
}
|
|
38
|
+
// Cache Hit -> Refresh LRU-position in Map
|
|
39
|
+
if (this.topicToAlias.has(topic)) {
|
|
40
|
+
const alias = this.topicToAlias.get(topic);
|
|
41
|
+
this.topicToAlias.delete(topic);
|
|
42
|
+
this.topicToAlias.set(topic, alias);
|
|
43
|
+
return {
|
|
44
|
+
topicName: "",
|
|
45
|
+
topicAlias: alias,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Cache Miss
|
|
49
|
+
let assignedAlias;
|
|
50
|
+
if (this.topicToAlias.size < this.maxAliases) {
|
|
51
|
+
// While there is space, simply assign the next alias (1, 2, 3...)
|
|
52
|
+
assignedAlias = this.topicToAlias.size + 1;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Cache full: reuse the alias of the least used topic (first key in the Map)
|
|
56
|
+
const lruTopic = this.topicToAlias.keys().next().value;
|
|
57
|
+
assignedAlias = this.topicToAlias.get(lruTopic);
|
|
58
|
+
this.topicToAlias.delete(lruTopic);
|
|
59
|
+
}
|
|
60
|
+
// Store the new topic
|
|
61
|
+
this.topicToAlias.set(topic, assignedAlias);
|
|
62
|
+
return {
|
|
63
|
+
topicName: topic,
|
|
64
|
+
topicAlias: assignedAlias,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Clears all internal topic alias mappings and releases cached resources.
|
|
69
|
+
*/
|
|
70
|
+
destroy() {
|
|
71
|
+
this.topicToAlias.clear();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=outboundTopicAliasManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outboundTopicAliasManager.js","sourceRoot":"","sources":["../../utils/outboundTopicAliasManager.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACpC;;OAEG;IACc,UAAU,CAAS;IAEpC;;;OAGG;IACc,YAAY,CAAsB;IAEnD;;;;OAIG;IACH,YAAY,uBAAuB,GAAW,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;IAChC,CAAC;IAED;;;;;;;;;;OAUG;IACI,YAAY,CAAC,KAAa;QAC/B,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,2CAA2C;QAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEpC,OAAO;gBACL,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,KAAK;aAClB,CAAC;QACJ,CAAC;QAED,aAAa;QACb,IAAI,aAAqB,CAAC;QAE1B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,kEAAkE;YAClE,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,6EAA6E;YAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACvD,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAS,CAAE,CAAC;YAElD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC;QACtC,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAE5C,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,aAAa;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../utils/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,SAAS,CAAa;IAE9B;;;OAGG;IACI,IAAI,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../utils/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,SAAS,CAAa;IAE9B;;;OAGG;IACI,IAAI,IAAI,MAAM,CAEpB;IACD;;;OAGG;IACI,OAAO,IAAI,OAAO,CAExB;IACD;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAE5B;IACD;;;;OAIG;IACI,OAAO,IAAI,CAAC,GAAG,SAAS,CAgB9B;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts an MQTT topic filter into a regular expression according to the MQTT specification.
|
|
3
|
+
*
|
|
4
|
+
* This utility escapes standard regex characters to prevent injection or unexpected behavior,
|
|
5
|
+
* and then converts the native MQTT wildcards into their regex equivalents:
|
|
6
|
+
* - `+` (single-level wildcard) becomes `[^/]+` (matches one or more characters except a forward slash)
|
|
7
|
+
* - `#` (multi-level wildcard) becomes an optional matching group `(?:/.*)?` to correctly handle parent levels.
|
|
8
|
+
*
|
|
9
|
+
* @param topicFilter - The MQTT topic filter string to convert (e.g., "home/+/temperature" or "clients/#").
|
|
10
|
+
* @returns A `RegExp` object configured to match topics corresponding to the filter.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const regex = topicFilterToRegExp("home/+/temperature");
|
|
15
|
+
* regex.test("home/livingroom/temperature"); // true
|
|
16
|
+
* regex.test("home/kitchen/lights"); // false
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function topicFilterToRegExp(topicFilter: string): RegExp;
|
|
20
|
+
/**
|
|
21
|
+
* Parses a Topic filter for a "shared subscription" into the share name and the regular Topic Filter
|
|
22
|
+
*
|
|
23
|
+
* @param topicFilter - The MQTT topic filter string to parse (e.g. "$share/sharename/rest/of/topic/filter")).
|
|
24
|
+
* @returns an object that contains the regular topicFilter and he share name (if present)
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseTopicFilter(topicFilter: string): {
|
|
27
|
+
topicFilter: string;
|
|
28
|
+
shareName: string;
|
|
29
|
+
};
|
|
30
|
+
/** the inverse of parseTopicFilter */
|
|
31
|
+
export declare function joinTopicFilter(topicFilter: string, shareName: string): string;
|
|
32
|
+
//# sourceMappingURL=topicFilter.d.ts.map
|