@seriousme/opifex 1.11.3 → 2.1.0
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/README.md +99 -40
- package/bin/conformanceServer.ts +45 -13
- package/bin/demoServer.ts +38 -13
- package/bin/mqtt.ts +2 -2
- package/client/ConnectionState.ts +3 -1
- package/client/client.ts +88 -47
- package/client/context.ts +79 -27
- package/client/deps.ts +10 -3
- 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 +18 -8
- 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 +13 -2
- package/client/store/memoryStore.ts +12 -11
- package/client/store/store.ts +4 -2
- package/deno/README.md +1 -2
- package/deno/tcpClient.test.ts +75 -0
- package/deno/tcpClient.ts +36 -18
- package/deno/tcpServer.test.ts +22 -21
- package/deno/tcpServer.ts +26 -4
- package/deno/tlsServer.test.ts +97 -0
- package/deno/tlsServer.ts +58 -0
- package/deno/wsServer.test.ts +93 -0
- package/deno/wsServer.ts +96 -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 -3
- 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 +2 -2
- package/dist/bin/mqtt.js.map +1 -1
- package/dist/client/ConnectionState.d.ts +3 -1
- 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 +47 -21
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +57 -20
- package/dist/client/client.js.map +1 -1
- package/dist/client/context.d.ts +15 -7
- 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 +4 -3
- 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 +3 -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 +3 -3
- package/dist/client/store/memoryStore.d.ts.map +1 -1
- package/dist/client/store/memoryStore.js +3 -3
- package/dist/client/store/memoryStore.js.map +1 -1
- package/dist/client/store/store.d.ts +3 -2
- 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 +24 -31
- package/dist/mqttConn/mqttConn.d.ts.map +1 -1
- package/dist/mqttConn/mqttConn.js +57 -36
- package/dist/mqttConn/mqttConn.js.map +1 -1
- package/dist/mqttPacket/AuthenticationResult.d.ts +4 -0
- package/dist/mqttPacket/AuthenticationResult.d.ts.map +1 -1
- package/dist/mqttPacket/AuthenticationResult.js.map +1 -1
- package/dist/mqttPacket/BitMask.d.ts.map +1 -1
- package/dist/mqttPacket/PacketType.d.ts +4 -0
- package/dist/mqttPacket/PacketType.d.ts.map +1 -1
- package/dist/mqttPacket/Properties.d.ts +4 -4
- package/dist/mqttPacket/Properties.d.ts.map +1 -1
- package/dist/mqttPacket/Properties.js.map +1 -1
- package/dist/mqttPacket/ReasonCode.d.ts +4 -5
- 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 +4 -0
- package/dist/mqttPacket/RetainHandling.d.ts.map +1 -1
- package/dist/mqttPacket/auth.d.ts +7 -8
- 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 +11 -10
- 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 +7 -7
- 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 +6 -16
- 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 +9 -8
- 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 +7 -19
- package/dist/mqttPacket/encoder.d.ts.map +1 -1
- package/dist/mqttPacket/encoder.js +5 -28
- package/dist/mqttPacket/encoder.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 +6 -6
- 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 +6 -6
- 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 +8 -7
- 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 +9 -8
- 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 +41 -10
- 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 +2 -29
- package/dist/mqttPacket/types.d.ts.map +1 -1
- package/dist/mqttPacket/unsuback.d.ts +9 -8
- 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 +26 -8
- 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 +22 -2
- package/dist/node/tcpClient.d.ts.map +1 -1
- package/dist/node/tcpClient.js +29 -10
- package/dist/node/tcpClient.js.map +1 -1
- package/dist/node/tcpServer.d.ts +18 -0
- package/dist/node/tcpServer.d.ts.map +1 -1
- package/dist/node/tcpServer.js +21 -2
- package/dist/node/tcpServer.js.map +1 -1
- package/dist/node/tlsServer.d.ts +37 -0
- package/dist/node/tlsServer.d.ts.map +1 -0
- package/dist/node/tlsServer.js +73 -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 +45 -70
- 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 +199 -25
- 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 +9 -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 +32 -9
- 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 +15 -9
- package/dist/socket/socket.d.ts.map +1 -1
- package/dist/socket/socket.js +66 -18
- 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 +61 -41
- 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 +42 -5
- 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 +14 -0
- package/dist/web/wsClient.d.ts.map +1 -0
- package/dist/web/wsClient.js +33 -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 +76 -60
- package/mqttPacket/AuthenticationResult.ts +6 -0
- package/mqttPacket/PacketType.ts +5 -0
- package/mqttPacket/Properties.ts +8 -5
- package/mqttPacket/ReasonCode.ts +8 -9
- package/mqttPacket/RetainHandling.ts +5 -0
- package/mqttPacket/auth.test.ts +1 -1
- package/mqttPacket/auth.ts +44 -51
- package/mqttPacket/codec.ts +147 -0
- package/mqttPacket/connack.ts +63 -73
- package/mqttPacket/connect.test.ts +2 -2
- package/mqttPacket/connect.ts +178 -192
- package/mqttPacket/decoder.test.ts +0 -39
- package/mqttPacket/decoder.ts +17 -46
- package/mqttPacket/disconnect.ts +60 -71
- package/mqttPacket/encoder.test.ts +2 -2
- package/mqttPacket/encoder.ts +13 -46
- package/mqttPacket/mod.ts +48 -204
- package/mqttPacket/pingreq.ts +22 -28
- package/mqttPacket/pingres.ts +22 -28
- package/mqttPacket/protocolLevels.ts +12 -7
- package/mqttPacket/pubblishAcks.ts +61 -75
- package/mqttPacket/publish.ts +70 -84
- package/mqttPacket/publishAcks.test.ts +3 -3
- package/mqttPacket/suback.ts +53 -68
- package/mqttPacket/subscribe.ts +146 -128
- package/mqttPacket/types.ts +2 -35
- package/mqttPacket/unsuback.ts +50 -61
- package/mqttPacket/unsubscribe.ts +77 -72
- 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 +33 -17
- package/node/tcpServer.test.ts +24 -20
- package/node/tcpServer.ts +29 -6
- package/node/tlsServer.test.ts +94 -0
- package/node/tlsServer.ts +97 -0
- package/node/wrapNodeSocket.ts +7 -30
- package/package.json +72 -44
- package/persistence/basicPersistence.ts +495 -0
- package/persistence/deps.ts +11 -1
- package/persistence/memory/memoryPersistence.ts +12 -153
- package/persistence/memory/memoryStorage.ts +232 -0
- package/persistence/mod.ts +5 -10
- package/persistence/persistence.test.ts +24 -0
- package/persistence/persistence.testing.ts +1324 -0
- package/persistence/persistence.ts +112 -68
- 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 +660 -76
- package/server/deps.ts +24 -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 +188 -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 +157 -39
- package/server/handlers/handleUnsubscribe.test.ts +79 -0
- package/server/handlers/handleUnsubscribe.ts +28 -4
- 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 +5 -4
- package/server/preconnect.test.ts +151 -0
- package/server/server.ts +117 -19
- package/socket/socket.test.ts +91 -0
- package/socket/socket.ts +85 -34
- 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 +70 -45
- package/utils/bufferedAsyncIterable.test.ts +92 -0
- 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 +64 -9
- 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 +37 -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/dev_utils/socketPair.ts +0 -85
- package/dist/persistence/store.d.ts +0 -14
- 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 -16
- package/server/test/handleConnect.test.ts +0 -122
- package/server/test/test-handlers.ts +0 -53
- /package/utils/{BufferedAsyncIterable.ts → bufferedAsyncIterable.ts} +0 -0
package/dist/client/client.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Deferred, logger, MemoryStore, MQTTLevel, PacketType, } from "./deps.js";
|
|
2
|
-
import { noop } from "../utils/
|
|
1
|
+
import { Deferred, logger, MemoryStore, MQTTLevel, PacketType, ReasonCode, } from "./deps.js";
|
|
2
|
+
import { noop } from "../utils/mod.js";
|
|
3
3
|
import { Context } from "./context.js";
|
|
4
|
-
import { assert } from "../utils/assert.js";
|
|
5
4
|
import { BufferedAsyncIterable } from "./deps.js";
|
|
6
5
|
/**
|
|
7
6
|
* Generates a random client ID with the given prefix
|
|
@@ -35,6 +34,17 @@ export const DEFAULT_PROTOCOLLEVEL = MQTTLevel.v4;
|
|
|
35
34
|
export const DEFAULT_KEEPALIVE = 60; // 60 seconds
|
|
36
35
|
const DEFAULT_RETRIES = 3; // on first connect
|
|
37
36
|
const CLIENTID_PREFIX = "opifex"; // on first connect
|
|
37
|
+
// convert an ErrorEvent into an Error
|
|
38
|
+
// NodeJS does not know ErrorEvent
|
|
39
|
+
function normalizeError(err) {
|
|
40
|
+
if (typeof ErrorEvent !== "undefined" && err instanceof ErrorEvent) {
|
|
41
|
+
return new Error(err.message);
|
|
42
|
+
}
|
|
43
|
+
if (err instanceof Error) {
|
|
44
|
+
return err;
|
|
45
|
+
}
|
|
46
|
+
throw err;
|
|
47
|
+
}
|
|
38
48
|
/**
|
|
39
49
|
* The Client class provides an MQTT Client that can be used to connect to
|
|
40
50
|
* a MQTT broker and publish/subscribe messages.
|
|
@@ -45,48 +55,75 @@ const CLIENTID_PREFIX = "opifex"; // on first connect
|
|
|
45
55
|
* connection type that is supported by the subclass.
|
|
46
56
|
*/
|
|
47
57
|
export class Client {
|
|
58
|
+
onAuth = () => {
|
|
59
|
+
return {
|
|
60
|
+
reasonCode: ReasonCode.badAuthenticationMethod,
|
|
61
|
+
reasonString: "No authentication method configured",
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
/** callback for errors */
|
|
48
65
|
onError = noop;
|
|
66
|
+
/** callback for publish packets */
|
|
49
67
|
onPacket = noop;
|
|
68
|
+
/** callback once connected */
|
|
50
69
|
onConnected = noop;
|
|
70
|
+
/** callback once disconnected */
|
|
51
71
|
onDisconnected = noop;
|
|
72
|
+
/** callback when reconnecting */
|
|
52
73
|
onReconnecting = noop;
|
|
74
|
+
/** clientId prefix used when automatically generating a client Id */
|
|
53
75
|
clientIdPrefix = CLIENTID_PREFIX;
|
|
76
|
+
/** number of times to retry connect */
|
|
54
77
|
numberOfRetries = DEFAULT_RETRIES;
|
|
55
|
-
|
|
78
|
+
/** the URL to connect to */
|
|
79
|
+
connectUrl = new URL(DEFAULT_URL);
|
|
80
|
+
/** the keepAlive value in number of seconds */
|
|
56
81
|
keepAlive = DEFAULT_KEEPALIVE;
|
|
82
|
+
/** the requested protocol level */
|
|
57
83
|
protocolLevel = DEFAULT_PROTOCOLLEVEL;
|
|
84
|
+
/** try auto reconnect if connection is lost */
|
|
58
85
|
autoReconnect = true;
|
|
86
|
+
/** any CA Certs to trust */
|
|
59
87
|
caCerts;
|
|
88
|
+
/** the clients certificate */
|
|
60
89
|
cert;
|
|
90
|
+
/** the clients private key*/
|
|
61
91
|
key;
|
|
92
|
+
/** the MQTT clientId */
|
|
62
93
|
clientId;
|
|
63
94
|
ctx;
|
|
64
95
|
connectPacket;
|
|
65
96
|
/**
|
|
66
97
|
* Creates a new MQTT client instance
|
|
67
98
|
*/
|
|
68
|
-
constructor() {
|
|
69
|
-
|
|
99
|
+
constructor(store) {
|
|
100
|
+
const cStore = store ? store : new MemoryStore();
|
|
101
|
+
this.ctx = new Context(cStore, this);
|
|
70
102
|
this.clientId = generateClientId(this.clientIdPrefix);
|
|
71
103
|
this.numberOfRetries = DEFAULT_RETRIES;
|
|
72
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Current connection state
|
|
107
|
+
* @returns connectionState as ConnectionState
|
|
108
|
+
*/
|
|
73
109
|
get connectionState() {
|
|
74
110
|
return this.ctx.connectionState;
|
|
75
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Current configured connection URL
|
|
114
|
+
* @returns URL object
|
|
115
|
+
*/
|
|
116
|
+
get url() {
|
|
117
|
+
return this.connectUrl;
|
|
118
|
+
}
|
|
76
119
|
/**
|
|
77
120
|
* Creates a new connection to the MQTT broker
|
|
78
|
-
* @param protocol - The protocol to use (mqtt, mqtts, etc)
|
|
79
|
-
* @param _hostname - The hostname to connect to
|
|
80
|
-
* @param _port - The port to connect to
|
|
81
|
-
* @param _caCerts - Optional CA certificates
|
|
82
|
-
* @param _cert - Optional client certificate
|
|
83
|
-
* @param _key - Optional client key
|
|
84
121
|
* @returns Promise resolving to a SockConn connection
|
|
85
122
|
*/
|
|
86
|
-
createConn(
|
|
123
|
+
createConn() {
|
|
87
124
|
// if you need to support alternative connection types just
|
|
88
125
|
// overload this method in your subclass
|
|
89
|
-
throw new Error(`Unsupported protocol: ${protocol}`);
|
|
126
|
+
throw new Error(`Unsupported protocol: ${this.url.protocol}`);
|
|
90
127
|
}
|
|
91
128
|
/**
|
|
92
129
|
* Handles the connection process including retries and reconnection
|
|
@@ -101,9 +138,9 @@ export class Client {
|
|
|
101
138
|
let lastMessage = new Error();
|
|
102
139
|
let tryConnect = true;
|
|
103
140
|
while (tryConnect) {
|
|
104
|
-
logger.debug(
|
|
141
|
+
logger.debug(isReconnect ? "reconnecting, attempt" : "connecting, attempt", attempt);
|
|
105
142
|
try {
|
|
106
|
-
const conn = await this.createConn(
|
|
143
|
+
const conn = await this.createConn();
|
|
107
144
|
// if we get this far we have a connection
|
|
108
145
|
tryConnect =
|
|
109
146
|
(await this.ctx.handleConnection(conn, this.connectPacket)) &&
|
|
@@ -114,9 +151,9 @@ export class Client {
|
|
|
114
151
|
this.ctx.close();
|
|
115
152
|
}
|
|
116
153
|
catch (err) {
|
|
117
|
-
|
|
118
|
-
queueMicrotask(() => this.onError(
|
|
119
|
-
lastMessage =
|
|
154
|
+
const normalizedErr = normalizeError(err);
|
|
155
|
+
queueMicrotask(() => this.onError(normalizedErr));
|
|
156
|
+
lastMessage = normalizedErr;
|
|
120
157
|
logger.debug({ lastMessage });
|
|
121
158
|
}
|
|
122
159
|
if (tryConnect && (isReconnect || attempt < this.numberOfRetries)) {
|
|
@@ -140,7 +177,7 @@ export class Client {
|
|
|
140
177
|
* @returns Promise resolving to authentication result
|
|
141
178
|
*/
|
|
142
179
|
connect(params = {}) {
|
|
143
|
-
this.
|
|
180
|
+
this.connectUrl = params?.url || this.connectUrl;
|
|
144
181
|
this.numberOfRetries = params.numberOfRetries || this.numberOfRetries;
|
|
145
182
|
this.caCerts = params?.caCerts;
|
|
146
183
|
this.cert = params?.cert;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,UAAU,GACX,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client/context.d.ts
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import { Deferred, MqttConn, Timer } from "./deps.ts";
|
|
2
|
-
import type { AnyPacket,
|
|
3
|
-
import
|
|
2
|
+
import type { AnyPacket, AuthenticationResult, ConnectPacket, PacketId, ProtocolLevel, PublishPacket, ReasonCode, ReturnCodes, SockConn, Store, SubscribePacket, UnsubscribePacket } from "./deps.ts";
|
|
3
|
+
import { ConnectionState } from "./ConnectionState.ts";
|
|
4
4
|
import type { Client } from "./client.ts";
|
|
5
|
+
/** Possible results from authHandler */
|
|
6
|
+
export type AuthenticatedResult = {
|
|
7
|
+
reasonCode: ReasonCode;
|
|
8
|
+
reasonString?: string;
|
|
9
|
+
authData?: Uint8Array;
|
|
10
|
+
};
|
|
5
11
|
export declare class Context {
|
|
6
12
|
#private;
|
|
7
13
|
mqttConn?: MqttConn;
|
|
8
14
|
protocolLevel: ProtocolLevel;
|
|
9
15
|
pingTimer?: Timer;
|
|
10
|
-
unresolvedConnect?: Deferred<
|
|
16
|
+
unresolvedConnect?: Deferred<AuthenticationResult>;
|
|
11
17
|
unresolvedPublish: Map<PacketId, Deferred<void>>;
|
|
12
18
|
unresolvedSubscribe: Map<PacketId, Deferred<ReturnCodes>>;
|
|
13
19
|
unresolvedUnSubscribe: Map<PacketId, Deferred<void>>;
|
|
14
|
-
store:
|
|
15
|
-
constructor(store:
|
|
16
|
-
get connectionState():
|
|
17
|
-
set connectionState(state:
|
|
20
|
+
store: Store;
|
|
21
|
+
constructor(store: Store, client: Client);
|
|
22
|
+
get connectionState(): ConnectionState;
|
|
23
|
+
set connectionState(state: ConnectionState);
|
|
24
|
+
authHandler(_ctx: Context, authMethod: string, authData: Uint8Array): AuthenticatedResult | Promise<AuthenticatedResult>;
|
|
25
|
+
setPingTimer(interval: number): void;
|
|
18
26
|
connect(packet: ConnectPacket): Promise<void>;
|
|
19
27
|
disconnect(): Promise<void>;
|
|
20
28
|
send(packet: AnyPacket): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../client/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,QAAQ,EAGR,KAAK,EACN,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../client/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,QAAQ,EAGR,KAAK,EACN,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,QAAQ,EACR,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,QAAQ,EACR,KAAK,EACL,eAAe,EACf,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAc1C,wCAAwC;AACxC,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,qBAAa,OAAO;;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,iBAAiB,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACnD,iBAAiB,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,qBAAqB,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,KAAK,EAAE,KAAK,CAAC;IAGb,YAAY,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAQvC;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,eAAe,EAUzC;IAED,WAAW,CACT,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,UAAU,GACnB,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEpD;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,QAS5B;IAEK,OAAO,CAAC,MAAM,EAAE,aAAa,iBAWlC;IAEK,UAAU,kBAgBf;IAEK,IAAI,CAAC,MAAM,EAAE,SAAS,iBA2B3B;IAED,QAAQ,SAKP;IAEK,gBAAgB,CACpB,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,OAAO,CAAC,CA0BlB;IAED,KAAK,SAIJ;IAEK,cAAc,CAAC,MAAM,EAAE,aAAa,iBAEzC;IAEK,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAalD;IAEK,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAO7D;IAEK,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1D;IAED,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CASnC;IAGD,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAEpC;IAED,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAS7D;IAED,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CASrC;CACF"}
|
package/dist/client/context.js
CHANGED
|
@@ -2,6 +2,14 @@ import { Deferred, logger, MqttConn, MQTTLevel, PacketType, Timer, } from "./dep
|
|
|
2
2
|
import { handlePacket } from "./handlers/handlePacket.js";
|
|
3
3
|
import { ConnectionState } from "./ConnectionState.js";
|
|
4
4
|
import { assert } from "../utils/assert.js";
|
|
5
|
+
/**
|
|
6
|
+
* packets not allowed during authentication
|
|
7
|
+
*/
|
|
8
|
+
function blockedDuringAuthentication(pktType) {
|
|
9
|
+
return (pktType === PacketType.publish ||
|
|
10
|
+
pktType === PacketType.subscribe ||
|
|
11
|
+
pktType === PacketType.unsubscribe);
|
|
12
|
+
}
|
|
5
13
|
export class Context {
|
|
6
14
|
mqttConn;
|
|
7
15
|
#connectionState;
|
|
@@ -36,6 +44,15 @@ export class Context {
|
|
|
36
44
|
break;
|
|
37
45
|
}
|
|
38
46
|
}
|
|
47
|
+
authHandler(_ctx, authMethod, authData) {
|
|
48
|
+
return this.#client.onAuth(authMethod, authData);
|
|
49
|
+
}
|
|
50
|
+
setPingTimer(interval) {
|
|
51
|
+
if (this.pingTimer) {
|
|
52
|
+
this.pingTimer.clear();
|
|
53
|
+
}
|
|
54
|
+
this.pingTimer = new Timer(this.sendPing.bind(this), interval * 1000, true);
|
|
55
|
+
}
|
|
39
56
|
async connect(packet) {
|
|
40
57
|
this.connectionState = ConnectionState.connecting;
|
|
41
58
|
if (packet.protocolLevel === MQTTLevel.unknown) {
|
|
@@ -45,11 +62,12 @@ export class Context {
|
|
|
45
62
|
await this.mqttConn?.send(packet);
|
|
46
63
|
const keepAlive = packet.keepAlive || 0;
|
|
47
64
|
if (keepAlive > 0) {
|
|
48
|
-
this.
|
|
65
|
+
this.setPingTimer(keepAlive);
|
|
49
66
|
}
|
|
50
67
|
}
|
|
51
68
|
async disconnect() {
|
|
52
|
-
if (this.connectionState !== ConnectionState.connected
|
|
69
|
+
if (this.connectionState !== ConnectionState.connected &&
|
|
70
|
+
this.connectionState !== ConnectionState.authenticating) {
|
|
53
71
|
throw "Not connected";
|
|
54
72
|
}
|
|
55
73
|
if (this.mqttConn) {
|
|
@@ -63,12 +81,25 @@ export class Context {
|
|
|
63
81
|
}
|
|
64
82
|
}
|
|
65
83
|
async send(packet) {
|
|
66
|
-
logger.debug({
|
|
67
|
-
if (this.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
84
|
+
logger.debug("client.ctx.send", this.#connectionState, { packet });
|
|
85
|
+
if (!this.mqttConn?.isClosed) {
|
|
86
|
+
if (this.connectionState === ConnectionState.connected) {
|
|
87
|
+
await this.mqttConn?.send(packet);
|
|
88
|
+
this.pingTimer?.reset();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (this.connectionState === ConnectionState.connecting &&
|
|
92
|
+
packet.type === PacketType.auth) {
|
|
93
|
+
await this.mqttConn?.send(packet);
|
|
94
|
+
this.pingTimer?.reset();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (this.connectionState === ConnectionState.authenticating &&
|
|
98
|
+
!blockedDuringAuthentication(packet.type)) {
|
|
99
|
+
await this.mqttConn?.send(packet);
|
|
100
|
+
this.pingTimer?.reset();
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
72
103
|
}
|
|
73
104
|
logger.debug("not connected");
|
|
74
105
|
this.pingTimer?.clear();
|
|
@@ -81,6 +112,7 @@ export class Context {
|
|
|
81
112
|
}
|
|
82
113
|
async handleConnection(conn, connectPacket) {
|
|
83
114
|
this.mqttConn = new MqttConn({ conn });
|
|
115
|
+
this.mqttConn.codecOpts.protocolLevel = connectPacket.protocolLevel;
|
|
84
116
|
try {
|
|
85
117
|
logger.debug("Send connect packet", connectPacket);
|
|
86
118
|
await this.connect(connectPacket);
|
|
@@ -93,7 +125,7 @@ export class Context {
|
|
|
93
125
|
catch (err) {
|
|
94
126
|
assert(err instanceof Error, `Caught something that is not an instance of Error: ${err}`);
|
|
95
127
|
queueMicrotask(() => this.#client.onError(err));
|
|
96
|
-
logger.debug(
|
|
128
|
+
logger.debug("error", err);
|
|
97
129
|
if (!this.mqttConn.isClosed) {
|
|
98
130
|
this.mqttConn.close();
|
|
99
131
|
}
|
|
@@ -118,7 +150,7 @@ export class Context {
|
|
|
118
150
|
await this.send(packet);
|
|
119
151
|
return;
|
|
120
152
|
}
|
|
121
|
-
packet.id = this.store.nextId();
|
|
153
|
+
packet.id = await this.store.nextId();
|
|
122
154
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
123
155
|
const deferred = new Deferred();
|
|
124
156
|
this.unresolvedPublish.set(packet.id, deferred);
|
|
@@ -126,7 +158,7 @@ export class Context {
|
|
|
126
158
|
return deferred.promise;
|
|
127
159
|
}
|
|
128
160
|
async subscribe(packet) {
|
|
129
|
-
packet.id = this.store.nextId();
|
|
161
|
+
packet.id = await this.store.nextId();
|
|
130
162
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
131
163
|
const deferred = new Deferred();
|
|
132
164
|
this.unresolvedSubscribe.set(packet.id, deferred);
|
|
@@ -134,7 +166,7 @@ export class Context {
|
|
|
134
166
|
return deferred.promise;
|
|
135
167
|
}
|
|
136
168
|
async unsubscribe(packet) {
|
|
137
|
-
packet.id = this.store.nextId();
|
|
169
|
+
packet.id = await this.store.nextId();
|
|
138
170
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
139
171
|
const deferred = new Deferred();
|
|
140
172
|
this.unresolvedUnSubscribe.set(packet.id, deferred);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../client/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,KAAK,GACN,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../client/context.ts"],"names":[],"mappings":"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"}
|
package/dist/client/deps.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export type { AnyPacket, ConnackPacket, ConnectPacket, DisconnectPacket, Dup, PacketId, Payload, ProtocolLevel, PubackPacket, PubcompPacket, PublishPacket, PubrecPacket, PubrelPacket, QoS, ReturnCodes, SubackPacket, SubscribePacket,
|
|
2
|
-
export { AuthenticationResult, AuthenticationResultByNumber, decodePayload, encode, MQTTLevel, PacketNameByType, PacketType, ReasonCodeByNumber, } from "../mqttPacket/mod.ts";
|
|
1
|
+
export type { AnyPacket, AuthPacket, ConnackPacket, ConnectPacket, DisconnectPacket, Dup, PacketId, Payload, ProtocolLevel, PubackPacket, PubcompPacket, PublishPacket, PubrecPacket, PubrelPacket, QoS, ReturnCodes, SubackPacket, SubscribePacket, Topic, UnsubackPacket, UnsubscribePacket, } from "../mqttPacket/mod.ts";
|
|
2
|
+
export { AuthenticationResult, AuthenticationResultByNumber, decodePayload, encode, MQTTLevel, PacketNameByType, PacketType, ReasonCode, ReasonCodeByNumber, } from "../mqttPacket/mod.ts";
|
|
3
3
|
export { MqttConn } from "../mqttConn/mqttConn.ts";
|
|
4
|
-
export type { SockConn } from "../socket/socket.ts";
|
|
4
|
+
export type { NetAddr, SockAddr, SockConn, UnixAddr, VsockAddr, } from "../socket/socket.ts";
|
|
5
5
|
export { Timer } from "../timer/timer.ts";
|
|
6
6
|
export { BufferedAsyncIterable, Deferred, logger } from "../utils/mod.ts";
|
|
7
7
|
export { MemoryStore } from "./store/memoryStore.ts";
|
|
8
|
+
export type { Store } from "./store/store.ts";
|
|
8
9
|
//# sourceMappingURL=deps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../client/deps.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,GAAG,EACH,WAAW,EACX,YAAY,EACZ,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../client/deps.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,GAAG,EACH,WAAW,EACX,YAAY,EACZ,eAAe,EACf,KAAK,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,aAAa,EACb,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,YAAY,EACV,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/client/deps.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AuthenticationResult, AuthenticationResultByNumber, decodePayload, encode, MQTTLevel, PacketNameByType, PacketType, ReasonCodeByNumber, } from "../mqttPacket/mod.js";
|
|
1
|
+
export { AuthenticationResult, AuthenticationResultByNumber, decodePayload, encode, MQTTLevel, PacketNameByType, PacketType, ReasonCode, ReasonCodeByNumber, } from "../mqttPacket/mod.js";
|
|
2
2
|
export { MqttConn } from "../mqttConn/mqttConn.js";
|
|
3
3
|
export { Timer } from "../timer/timer.js";
|
|
4
4
|
export { BufferedAsyncIterable, Deferred, logger } from "../utils/mod.js";
|
package/dist/client/deps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../client/deps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../client/deps.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,aAAa,EACb,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAQnD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Context } from "../context.ts";
|
|
2
|
+
import type { AuthPacket } from "../deps.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Handles v5 Auth packet
|
|
5
|
+
* @param ctx - The connection context containing send method
|
|
6
|
+
* @returns Promise that resolves
|
|
7
|
+
*/
|
|
8
|
+
export declare function handleAuth(ctx: Context, authPacket: AuthPacket): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=handleAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleAuth.d.ts","sourceRoot":"","sources":["../../../client/handlers/handleAuth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,OAAO,EAAE,MAAM,eAAe,CAAC;AAGlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA0C7C;;;;GAIG;AAEH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAkCf"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ConnectionState } from "../ConnectionState.js";
|
|
2
|
+
import { PacketType, ReasonCode, ReasonCodeByNumber } from "../deps.js";
|
|
3
|
+
/**
|
|
4
|
+
* Handle error
|
|
5
|
+
*/
|
|
6
|
+
function handleError(ctx, errMsg) {
|
|
7
|
+
if (ctx.connectionState === ConnectionState.connecting) {
|
|
8
|
+
const err = new Error(`Connect failed: ${errMsg}`);
|
|
9
|
+
ctx.connectionState = ConnectionState.disconnecting;
|
|
10
|
+
ctx.pingTimer?.clear();
|
|
11
|
+
ctx.unresolvedConnect?.reject(err);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
throw new Error(errMsg);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Handle success
|
|
18
|
+
*/
|
|
19
|
+
async function handleResult(ctx, authMethod, result) {
|
|
20
|
+
await ctx.send({
|
|
21
|
+
type: PacketType.auth,
|
|
22
|
+
protocolLevel: 5,
|
|
23
|
+
reasonCode: result.reasonCode,
|
|
24
|
+
properties: result.authData
|
|
25
|
+
? {
|
|
26
|
+
authenticationMethod: authMethod,
|
|
27
|
+
authenticationData: result.authData,
|
|
28
|
+
reasonString: result.reasonString,
|
|
29
|
+
}
|
|
30
|
+
: {},
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Handles v5 Auth packet
|
|
35
|
+
* @param ctx - The connection context containing send method
|
|
36
|
+
* @returns Promise that resolves
|
|
37
|
+
*/
|
|
38
|
+
export async function handleAuth(ctx, authPacket) {
|
|
39
|
+
const reasonCode = authPacket.reasonCode;
|
|
40
|
+
if (reasonCode === ReasonCode.success) {
|
|
41
|
+
// we are connected again
|
|
42
|
+
ctx.connectionState = ConnectionState.connected;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (reasonCode !== ReasonCode.continueAuthentication) {
|
|
46
|
+
// something went wrong
|
|
47
|
+
handleError(ctx, ReasonCodeByNumber[reasonCode]);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// we need to send something back
|
|
51
|
+
if (ctx.connectionState === ConnectionState.connected) {
|
|
52
|
+
// pauze auther activities
|
|
53
|
+
ctx.connectionState = ConnectionState.authenticating;
|
|
54
|
+
}
|
|
55
|
+
const authMethod = authPacket.properties?.authenticationMethod;
|
|
56
|
+
const authData = authPacket.properties?.authenticationData;
|
|
57
|
+
if (!(authMethod && authData)) {
|
|
58
|
+
throw new Error("Auth method and/or Auth data missing");
|
|
59
|
+
}
|
|
60
|
+
const result = await ctx.authHandler(ctx, authMethod, authData);
|
|
61
|
+
if (result.reasonCode === ReasonCode.continueAuthentication) {
|
|
62
|
+
return handleResult(ctx, authMethod, result);
|
|
63
|
+
}
|
|
64
|
+
return handleError(ctx, result.reasonString || "Error during authentication");
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=handleAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleAuth.js","sourceRoot":"","sources":["../../../client/handlers/handleAuth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGxE;;GAEG;AAEH,SAAS,WAAW,CAAC,GAAY,EAAE,MAAc;IAC/C,IAAI,GAAG,CAAC,eAAe,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,mBAAmB,MAAM,EAAE,CAC5B,CAAC;QACF,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC,aAAa,CAAC;QACpD,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QACvB,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AAEH,KAAK,UAAU,YAAY,CACzB,GAAY,EACZ,UAAkB,EAClB,MAA2B;IAE3B,MAAM,GAAG,CAAC,IAAI,CAAC;QACb,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,QAAQ;YACzB,CAAC,CAAC;gBACA,oBAAoB,EAAE,UAAU;gBAChC,kBAAkB,EAAE,MAAM,CAAC,QAAQ;gBACnC,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC;YACD,CAAC,CAAC,EAAE;KACP,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AAEH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAY,EACZ,UAAsB;IAEtB,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,IAAI,UAAU,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;QACtC,yBAAyB;QACzB,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC;QAChD,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,UAAU,CAAC,sBAAsB,EAAE,CAAC;QACrD,uBAAuB;QACvB,WAAW,CAAC,GAAG,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,iCAAiC;IACjC,IAAI,GAAG,CAAC,eAAe,KAAK,eAAe,CAAC,SAAS,EAAE,CAAC;QACtD,0BAA0B;QAC1B,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC,cAAc,CAAC;IACvD,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAC3D,IAAI,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,CAClC,GAAG,EACH,UAAU,EACV,QAAQ,CACT,CAAC;IACF,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,sBAAsB,EAAE,CAAC;QAC5D,OAAO,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,YAAY,IAAI,6BAA6B,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -2,9 +2,9 @@ import type { Context } from "../context.ts";
|
|
|
2
2
|
import type { ConnackPacket } from "../deps.ts";
|
|
3
3
|
/**
|
|
4
4
|
* Handles the CONNACK packet received from the MQTT broker
|
|
5
|
-
* @param packet - The CONNACK packet containing the connection acknowledgment
|
|
6
5
|
* @param ctx - The connection context
|
|
6
|
+
* @param packet - The CONNACK packet containing the connection acknowledgment
|
|
7
7
|
* @returns Promise that resolves when handling is complete
|
|
8
8
|
*/
|
|
9
|
-
export declare function handleConnack(
|
|
9
|
+
export declare function handleConnack(ctx: Context, packet: ConnackPacket): Promise<void>;
|
|
10
10
|
//# sourceMappingURL=handleConnack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleConnack.d.ts","sourceRoot":"","sources":["../../../client/handlers/handleConnack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"handleConnack.d.ts","sourceRoot":"","sources":["../../../client/handlers/handleConnack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAE5D;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,iBAsCtE"}
|
|
@@ -2,20 +2,30 @@ import { ConnectionState } from "../ConnectionState.js";
|
|
|
2
2
|
import { AuthenticationResultByNumber, ReasonCodeByNumber } from "../deps.js";
|
|
3
3
|
/**
|
|
4
4
|
* Handles the CONNACK packet received from the MQTT broker
|
|
5
|
-
* @param packet - The CONNACK packet containing the connection acknowledgment
|
|
6
5
|
* @param ctx - The connection context
|
|
6
|
+
* @param packet - The CONNACK packet containing the connection acknowledgment
|
|
7
7
|
* @returns Promise that resolves when handling is complete
|
|
8
8
|
*/
|
|
9
|
-
export async function handleConnack(
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
: packet.returnCode;
|
|
9
|
+
export async function handleConnack(ctx, packet) {
|
|
10
|
+
const isVersion5 = packet.protocolLevel === 5;
|
|
11
|
+
const result = isVersion5 ? packet.reasonCode : packet.returnCode;
|
|
13
12
|
if (result === 0) {
|
|
14
13
|
ctx.connectionState = ConnectionState.connected;
|
|
15
14
|
if (ctx.mqttConn) {
|
|
16
15
|
ctx.mqttConn.codecOpts.protocolLevel = ctx.protocolLevel;
|
|
17
16
|
}
|
|
18
|
-
|
|
17
|
+
const serverKeepAlive = isVersion5
|
|
18
|
+
? packet.properties?.serverKeepAlive
|
|
19
|
+
: undefined;
|
|
20
|
+
if (serverKeepAlive === 0) {
|
|
21
|
+
ctx.pingTimer?.clear(); // Server disabled keepalive
|
|
22
|
+
}
|
|
23
|
+
else if (serverKeepAlive !== undefined) {
|
|
24
|
+
ctx.setPingTimer(serverKeepAlive); // Server set a new interval
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
ctx.pingTimer?.reset(); // Default fallback for V4 or V5 without override
|
|
28
|
+
}
|
|
19
29
|
ctx.unresolvedConnect?.resolve(result);
|
|
20
30
|
// start transmitting packets that were queued before
|
|
21
31
|
for await (const packet of ctx.store.pendingOutgoingPackets()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleConnack.js","sourceRoot":"","sources":["../../../client/handlers/handleConnack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAG9E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"handleConnack.js","sourceRoot":"","sources":["../../../client/handlers/handleConnack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAG9E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAY,EAAE,MAAqB;IACrE,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;IAClE,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC;QAChD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QAC3D,CAAC;QAED,MAAM,eAAe,GAAG,UAAU;YAChC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe;YACpC,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,4BAA4B;QACtD,CAAC;aAAM,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YACzC,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,4BAA4B;QACjE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,iDAAiD;QAC3E,CAAC;QACD,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,qDAAqD;QACrD,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAC9D,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,KAAK,CAAC;QACvC,CAAC,CAAC,kBAAkB,CAAC,MAAoB,CAAC;QAC1C,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,mBAAmB,MAAM,EAAE,CAC5B,CAAC;IACF,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC,aAAa,CAAC;IACpD,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;IACvB,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Context } from "../context.ts";
|
|
2
|
+
import type { DisconnectPacket } from "../deps.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Handles Disconnect Packet sent by the broker (V5 only)
|
|
5
|
+
* @param ctx - The MQTT client context
|
|
6
|
+
* @param packet - The PUBACK packet received from the broker
|
|
7
|
+
* @description
|
|
8
|
+
* - throw error
|
|
9
|
+
*/
|
|
10
|
+
export declare function handleDisconnect(ctx: Context, packet: DisconnectPacket): void;
|
|
11
|
+
//# sourceMappingURL=handleDisconnect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleDisconnect.d.ts","sourceRoot":"","sources":["../../../client/handlers/handleDisconnect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAK7E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReasonCodeByNumber } from "../deps.js";
|
|
2
|
+
/**
|
|
3
|
+
* Handles Disconnect Packet sent by the broker (V5 only)
|
|
4
|
+
* @param ctx - The MQTT client context
|
|
5
|
+
* @param packet - The PUBACK packet received from the broker
|
|
6
|
+
* @description
|
|
7
|
+
* - throw error
|
|
8
|
+
*/
|
|
9
|
+
export function handleDisconnect(ctx, packet) {
|
|
10
|
+
if (packet.protocolLevel === 5 && ((packet.reasonCode ?? 0) !== 0)) {
|
|
11
|
+
throw new Error(ReasonCodeByNumber[packet.reasonCode]);
|
|
12
|
+
}
|
|
13
|
+
ctx.close();
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=handleDisconnect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleDisconnect.js","sourceRoot":"","sources":["../../../client/handlers/handleDisconnect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY,EAAE,MAAwB;IACrE,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAW,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,GAAG,CAAC,KAAK,EAAE,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlePacket.d.ts","sourceRoot":"","sources":["../../../client/handlers/handlePacket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"handlePacket.d.ts","sourceRoot":"","sources":["../../../client/handlers/handlePacket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAa7C,OAAO,KAAK,EACV,SAAS,EAWV,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|