@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
|
@@ -1,39 +1,68 @@
|
|
|
1
|
-
import type { CodecOpts, PacketId,
|
|
1
|
+
import type { CodecOpts, PacketId, QoS, TopicFilter, TPacketType, TRetainHandling } from "./types.ts";
|
|
2
|
+
import type { ProtocolLevelNoV5 } from "./protocolLevels.ts";
|
|
2
3
|
import type { SubscribeProperties } from "./Properties.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Represents an MQTT SUBSCRIBE packet conforming to MQTT version 3.1.1 (Protocol Level 4) or lower.
|
|
6
|
+
*/
|
|
3
7
|
export type SubscribePacketV4 = {
|
|
8
|
+
/** The type of the MQTT control packet. */
|
|
4
9
|
type: TPacketType;
|
|
10
|
+
/** The protocol version level, restricted to non-v5 variants. */
|
|
5
11
|
protocolLevel: ProtocolLevelNoV5;
|
|
12
|
+
/** The unique 16-bit packet identifier. */
|
|
6
13
|
id: PacketId;
|
|
14
|
+
/** The list of topic subscriptions associated with this packet. */
|
|
7
15
|
subscriptions: Array<SubscriptionV4>;
|
|
8
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Represents an MQTT SUBSCRIBE packet conforming to MQTT version 5.0.
|
|
19
|
+
*/
|
|
9
20
|
export type SubscribePacketV5 = {
|
|
21
|
+
/** The type of the MQTT control packet. */
|
|
10
22
|
type: TPacketType;
|
|
23
|
+
/** The protocol version level, strictly set to 5. */
|
|
11
24
|
protocolLevel: 5;
|
|
25
|
+
/** The unique 16-bit packet identifier. */
|
|
12
26
|
id: PacketId;
|
|
27
|
+
/** Optional user and protocol properties introduced in MQTT v5. */
|
|
13
28
|
properties?: SubscribeProperties;
|
|
29
|
+
/** The list of topic subscriptions including v5 option flags. */
|
|
14
30
|
subscriptions: Array<SubscriptionV5>;
|
|
15
31
|
};
|
|
16
32
|
/**
|
|
17
|
-
*
|
|
33
|
+
* Represents a union of available MQTT SUBSCRIBE packets (v4 or v5) sent from client to server.
|
|
18
34
|
*/
|
|
19
35
|
export type SubscribePacket = SubscribePacketV4 | SubscribePacketV5;
|
|
20
36
|
/**
|
|
21
|
-
*
|
|
37
|
+
* Describes a topic subscription requirement for MQTT version 3.1.1.
|
|
22
38
|
*/
|
|
23
39
|
export type SubscriptionV4 = {
|
|
40
|
+
/** The topic filter expression the client intends to subscribe to. */
|
|
24
41
|
topicFilter: TopicFilter;
|
|
42
|
+
/** The maximum Quality of Service level authorized for this topic filter. */
|
|
25
43
|
qos: QoS;
|
|
26
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Describes a topic subscription requirement for MQTT version 5.0, including extended flags.
|
|
47
|
+
*/
|
|
27
48
|
export type SubscriptionV5 = {
|
|
49
|
+
/** The topic filter expression the client intends to subscribe to. */
|
|
28
50
|
topicFilter: TopicFilter;
|
|
51
|
+
/** The maximum Quality of Service level authorized for this topic filter. */
|
|
29
52
|
qos: QoS;
|
|
53
|
+
/** Optional flag indicating whether messages should not be forwarded back to the client that published them. */
|
|
30
54
|
noLocal?: boolean;
|
|
55
|
+
/** Optional flag indicating whether messages forwarded under this subscription keep their original retain flag. */
|
|
31
56
|
retainAsPublished?: boolean;
|
|
57
|
+
/** Optional setting declaring how retained messages are handled when the subscription is created. */
|
|
32
58
|
retainHandling?: TRetainHandling;
|
|
33
59
|
};
|
|
60
|
+
/** * Represents a generic union of MQTT subscription configurations (v4 or v5).
|
|
61
|
+
*/
|
|
34
62
|
export type Subscription = SubscriptionV4 | SubscriptionV5;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Codec utility object responsible for encoding and decoding MQTT SUBSCRIBE control packets.
|
|
65
|
+
*/
|
|
66
|
+
export declare function encode(packet: SubscribePacket, codecOpts: CodecOpts): Uint8Array;
|
|
67
|
+
export declare function decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): SubscribePacket;
|
|
39
68
|
//# sourceMappingURL=subscribe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../mqttPacket/subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../mqttPacket/subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,GAAG,EACH,WAAW,EACX,WAAW,EACX,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM3D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2CAA2C;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,iEAAiE;IACjE,aAAa,EAAE,iBAAiB,CAAC;IACjC,2CAA2C;IAC3C,EAAE,EAAE,QAAQ,CAAC;IACb,mEAAmE;IACnE,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2CAA2C;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,qDAAqD;IACrD,aAAa,EAAE,CAAC,CAAC;IACjB,2CAA2C;IAC3C,EAAE,EAAE,QAAQ,CAAC;IACb,mEAAmE;IACnE,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,iEAAiE;IACjE,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,sEAAsE;IACtE,WAAW,EAAE,WAAW,CAAC;IACzB,6EAA6E;IAC7E,GAAG,EAAE,GAAG,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,sEAAsE;IACtE,WAAW,EAAE,WAAW,CAAC;IACzB,6EAA6E;IAC7E,GAAG,EAAE,GAAG,CAAC;IACT,gHAAgH;IAChH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mHAAmH;IACnH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qGAAqG;IACrG,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF;GACG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,cAAc,CAAC;AAE3D;;GAEG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,SAAS,GACnB,UAAU,CAoCZ;AAED,wBAAgB,MAAM,CACpB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,GACtB,eAAe,CA2EjB"}
|
|
@@ -2,108 +2,109 @@ import { PacketType } from "./PacketType.js";
|
|
|
2
2
|
import { BitMask } from "./BitMask.js";
|
|
3
3
|
import { Encoder } from "./encoder.js";
|
|
4
4
|
import { booleanFlag, Decoder, DecoderError } from "./decoder.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Codec utility object responsible for encoding and decoding MQTT SUBSCRIBE control packets.
|
|
7
|
+
*/
|
|
8
|
+
export function encode(packet, codecOpts) {
|
|
9
|
+
// Bits 3,2,1 and 0 of the fixed header of the SUBSCRIBE Control Packet are reserved and
|
|
10
|
+
// MUST be set to 0,0,1 and 0 respectively. The Server MUST treat any other value as
|
|
11
|
+
// malformed and close the Network Connection [MQTT-3.8.1-1].
|
|
12
|
+
const flags = 0b0010;
|
|
13
|
+
const encoder = new Encoder(packet.type);
|
|
14
|
+
encoder.setInt16(packet.id);
|
|
15
|
+
if (packet.protocolLevel === 5) {
|
|
16
|
+
encoder.setProperties(packet.properties || {}, packet.type, codecOpts.maxOutgoingPacketSize);
|
|
17
|
+
}
|
|
18
|
+
for (const sub of packet.subscriptions) {
|
|
19
|
+
encoder.setUtf8String(sub.topicFilter);
|
|
13
20
|
if (packet.protocolLevel === 5) {
|
|
14
|
-
|
|
21
|
+
const { qos, noLocal = false, retainAsPublished = false, retainHandling = 0, } = sub;
|
|
22
|
+
const option = (qos & 1 ? BitMask.bit0 : 0) +
|
|
23
|
+
(qos & 2 ? BitMask.bit1 : 0) +
|
|
24
|
+
(noLocal ? BitMask.bit2 : 0) +
|
|
25
|
+
(retainAsPublished ? BitMask.bit3 : 0) +
|
|
26
|
+
(retainHandling & 1 ? BitMask.bit4 : 0) +
|
|
27
|
+
(retainHandling & 2 ? BitMask.bit5 : 0);
|
|
28
|
+
encoder.setByte(option);
|
|
15
29
|
}
|
|
16
|
-
|
|
17
|
-
encoder.
|
|
18
|
-
if (packet.protocolLevel === 5) {
|
|
19
|
-
const { qos, noLocal = false, retainAsPublished = false, retainHandling = 0, } = sub;
|
|
20
|
-
const option = (qos & 1 ? BitMask.bit0 : 0) +
|
|
21
|
-
(qos & 2 ? BitMask.bit1 : 0) +
|
|
22
|
-
(noLocal ? BitMask.bit2 : 0) +
|
|
23
|
-
(retainAsPublished ? BitMask.bit3 : 0) +
|
|
24
|
-
(retainHandling & 1 ? BitMask.bit4 : 0) +
|
|
25
|
-
(retainHandling & 2 ? BitMask.bit5 : 0);
|
|
26
|
-
encoder.setByte(option);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
encoder.setByte(sub.qos);
|
|
30
|
-
}
|
|
30
|
+
else {
|
|
31
|
+
encoder.setByte(sub.qos);
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
}
|
|
34
|
+
return encoder.done(flags);
|
|
35
|
+
}
|
|
36
|
+
export function decode(buffer, flags, codecOpts, packetType) {
|
|
37
|
+
// Bits 3,2,1 and 0 of the fixed header of the SUBSCRIBE Control Packet are reserved and
|
|
38
|
+
// MUST be set to 0,0,1 and 0 respectively. The Server MUST treat any other value as
|
|
39
|
+
// malformed and close the Network Connection [MQTT-3.8.1-1].
|
|
40
|
+
if (flags !== 0b0010) {
|
|
41
|
+
throw new DecoderError("Invalid header");
|
|
42
|
+
}
|
|
43
|
+
const decoder = new Decoder(packetType, buffer);
|
|
44
|
+
const id = decoder.getInt16();
|
|
45
|
+
let properties = {};
|
|
46
|
+
if (codecOpts.protocolLevel === 5) {
|
|
47
|
+
properties = decoder.getProperties(PacketType.subscribe);
|
|
48
|
+
}
|
|
49
|
+
const subscriptions = [];
|
|
50
|
+
// The payload of a SUBSCRIBE packet MUST contain at least one Topic Filter / Option pair.
|
|
51
|
+
// A SUBSCRIBE packet with no payload is a protocol violation [MQTT-3.8.3-3].
|
|
52
|
+
do {
|
|
53
|
+
const topicFilter = decoder.getUTF8String();
|
|
54
|
+
const option = decoder.getByte();
|
|
55
|
+
const qos = option & 0b11;
|
|
56
|
+
if (qos !== 0 && qos !== 1 && qos !== 2) {
|
|
57
|
+
throw new DecoderError("Invalid qos");
|
|
40
58
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
let properties = {};
|
|
44
|
-
if (codecOpts.protocolLevel === 5) {
|
|
45
|
-
properties = decoder.getProperties(PacketType.subscribe);
|
|
59
|
+
if (qos > 0 && id === 0) {
|
|
60
|
+
throw new DecoderError("Invalid packet identifier");
|
|
46
61
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// A SUBSCRIBE packet with no payload is a protocol violation [MQTT-3.8.3-3].
|
|
50
|
-
do {
|
|
51
|
-
const topicFilter = decoder.getTopicFilter();
|
|
52
|
-
const option = decoder.getByte();
|
|
53
|
-
const qos = option & 0b11;
|
|
54
|
-
if (qos !== 0 && qos !== 1 && qos !== 2) {
|
|
62
|
+
if (codecOpts.protocolLevel !== 5) {
|
|
63
|
+
if (option !== qos) {
|
|
55
64
|
throw new DecoderError("Invalid qos");
|
|
56
65
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
subscriptions.push({
|
|
67
|
+
topicFilter: topicFilter,
|
|
68
|
+
qos,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// Bits 6 and 7 of the Subscription Options byte are reserved for future use.
|
|
73
|
+
// The Server MUST treat a SUBSCRIBE packet as malformed if any of
|
|
74
|
+
// Reserved bits in the Payload are non-zero [MQTT-3.8.3-5].
|
|
75
|
+
if (option > 0b111111) {
|
|
76
|
+
throw new DecoderError("Invalid subscription options");
|
|
68
77
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
throw new DecoderError("Invalid subscription options");
|
|
75
|
-
}
|
|
76
|
-
const noLocal = booleanFlag(option, BitMask.bit2);
|
|
77
|
-
const retainAsPublished = booleanFlag(option, BitMask.bit3);
|
|
78
|
-
const retainHandling = (option & 0b110000) >> 4;
|
|
79
|
-
if (retainHandling !== 0 && retainHandling !== 1 && retainHandling !== 2) {
|
|
80
|
-
throw new DecoderError("Invalid retain handling");
|
|
81
|
-
}
|
|
82
|
-
subscriptions.push({
|
|
83
|
-
topicFilter: topicFilter,
|
|
84
|
-
qos,
|
|
85
|
-
noLocal,
|
|
86
|
-
retainAsPublished,
|
|
87
|
-
retainHandling,
|
|
88
|
-
});
|
|
78
|
+
const noLocal = booleanFlag(option, BitMask.bit2);
|
|
79
|
+
const retainAsPublished = booleanFlag(option, BitMask.bit3);
|
|
80
|
+
const retainHandling = (option & 0b110000) >> 4;
|
|
81
|
+
if (retainHandling !== 0 && retainHandling !== 1 && retainHandling !== 2) {
|
|
82
|
+
throw new DecoderError("Invalid retain handling");
|
|
89
83
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
subscriptions: subscriptions,
|
|
98
|
-
};
|
|
84
|
+
subscriptions.push({
|
|
85
|
+
topicFilter: topicFilter,
|
|
86
|
+
qos,
|
|
87
|
+
noLocal,
|
|
88
|
+
retainAsPublished,
|
|
89
|
+
retainHandling,
|
|
90
|
+
});
|
|
99
91
|
}
|
|
92
|
+
} while (!decoder.atEnd());
|
|
93
|
+
decoder.done();
|
|
94
|
+
if (codecOpts.protocolLevel !== 5) {
|
|
100
95
|
return {
|
|
101
96
|
type: PacketType.subscribe,
|
|
102
|
-
protocolLevel:
|
|
97
|
+
protocolLevel: codecOpts.protocolLevel,
|
|
103
98
|
id,
|
|
104
|
-
properties,
|
|
105
99
|
subscriptions: subscriptions,
|
|
106
100
|
};
|
|
107
|
-
}
|
|
108
|
-
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
type: PacketType.subscribe,
|
|
104
|
+
protocolLevel: 5,
|
|
105
|
+
id,
|
|
106
|
+
properties,
|
|
107
|
+
subscriptions: subscriptions,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
109
110
|
//# sourceMappingURL=subscribe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../mqttPacket/subscribe.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../mqttPacket/subscribe.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import type { PacketType } from "./PacketType.ts";
|
|
|
3
3
|
import type { RetainHandling } from "./RetainHandling.ts";
|
|
4
4
|
import type { AuthenticationResult } from "./AuthenticationResult.ts";
|
|
5
5
|
import type { ReasonCode } from "./ReasonCode.ts";
|
|
6
|
+
import type { ProtocolLevel } from "./protocolLevels.ts";
|
|
6
7
|
/**
|
|
7
8
|
* Type to limit bit mask to valid values
|
|
8
9
|
*/
|
|
@@ -19,14 +20,6 @@ export type TAuthenticationResult = typeof AuthenticationResult[keyof typeof Aut
|
|
|
19
20
|
* Type to limit reason code to valid values
|
|
20
21
|
*/
|
|
21
22
|
export type TReasonCode = typeof ReasonCode[keyof typeof ReasonCode];
|
|
22
|
-
/**
|
|
23
|
-
* Protocol version
|
|
24
|
-
* 3.1 = 3
|
|
25
|
-
* 3.1.1 = 4
|
|
26
|
-
* 5.0 = 5
|
|
27
|
-
*/
|
|
28
|
-
export type ProtocolLevel = 3 | 4 | 5 | undefined;
|
|
29
|
-
export type ProtocolLevelNoV5 = Exclude<ProtocolLevel, 5>;
|
|
30
23
|
/**
|
|
31
24
|
* Quality of Service level
|
|
32
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../mqttPacket/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../mqttPacket/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAC5D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC/B,OAAO,oBAAoB,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,eAAe,GACzB,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI;KAC1D,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;CAC1B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { CodecOpts, PacketId,
|
|
1
|
+
import type { CodecOpts, PacketId, TPacketType, TReasonCode } from "./types.ts";
|
|
2
|
+
import type { ProtocolLevelNoV5 } from "./protocolLevels.ts";
|
|
2
3
|
import type { UnsubackProperties } from "./Properties.ts";
|
|
3
4
|
export type UnsubackPacketV4 = {
|
|
4
5
|
type: TPacketType;
|
|
@@ -17,8 +18,6 @@ export type UnsubackPacketV5 = {
|
|
|
17
18
|
* of an UnsubscribePacket.
|
|
18
19
|
*/
|
|
19
20
|
export type UnsubackPacket = UnsubackPacketV4 | UnsubackPacketV5;
|
|
20
|
-
export declare
|
|
21
|
-
|
|
22
|
-
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): UnsubackPacket;
|
|
23
|
-
};
|
|
21
|
+
export declare function encode(packet: UnsubackPacket, codecOpts: CodecOpts): Uint8Array;
|
|
22
|
+
export declare function decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): UnsubackPacket;
|
|
24
23
|
//# sourceMappingURL=unsuback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsuback.d.ts","sourceRoot":"","sources":["../../mqttPacket/unsuback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"unsuback.d.ts","sourceRoot":"","sources":["../../mqttPacket/unsuback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAK1D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,iBAAiB,CAAC;IACjC,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,CAAC,CAAC;IACjB,EAAE,EAAE,QAAQ,CAAC;IACb,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEjE,wBAAgB,MAAM,CACpB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,GACnB,UAAU,CAeZ;AAED,wBAAgB,MAAM,CACpB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,GACtB,cAAc,CAyBhB"}
|
|
@@ -1,44 +1,42 @@
|
|
|
1
1
|
import { PacketType } from "./PacketType.js";
|
|
2
2
|
import { Decoder, hasEmptyFlags } from "./decoder.js";
|
|
3
3
|
import { Encoder } from "./encoder.js";
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
encoder.setByte(reasonCode);
|
|
13
|
-
}
|
|
4
|
+
export function encode(packet, codecOpts) {
|
|
5
|
+
const flags = 0;
|
|
6
|
+
const encoder = new Encoder(packet.type);
|
|
7
|
+
encoder.setInt16(packet.id);
|
|
8
|
+
if (packet.protocolLevel === 5) {
|
|
9
|
+
encoder.setProperties(packet.properties || {}, PacketType.unsuback, codecOpts.maxOutgoingPacketSize);
|
|
10
|
+
for (const reasonCode of packet.reasonCodes) {
|
|
11
|
+
encoder.setByte(reasonCode);
|
|
14
12
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return {
|
|
29
|
-
type: PacketType.unsuback,
|
|
30
|
-
protocolLevel: 5,
|
|
31
|
-
id,
|
|
32
|
-
properties,
|
|
33
|
-
reasonCodes: reasonCodes,
|
|
34
|
-
};
|
|
13
|
+
}
|
|
14
|
+
return encoder.done(flags);
|
|
15
|
+
}
|
|
16
|
+
export function decode(buffer, flags, codecOpts, packetType) {
|
|
17
|
+
hasEmptyFlags(flags);
|
|
18
|
+
const decoder = new Decoder(packetType, buffer);
|
|
19
|
+
const id = decoder.getInt16();
|
|
20
|
+
if (codecOpts.protocolLevel === 5) {
|
|
21
|
+
const properties = decoder.getProperties(PacketType.unsuback);
|
|
22
|
+
const reasonCodes = [];
|
|
23
|
+
while (!decoder.atEnd()) {
|
|
24
|
+
const reasonCode = decoder.getReasonCode();
|
|
25
|
+
reasonCodes.push(reasonCode);
|
|
35
26
|
}
|
|
36
|
-
decoder.done();
|
|
37
27
|
return {
|
|
38
28
|
type: PacketType.unsuback,
|
|
39
|
-
protocolLevel:
|
|
29
|
+
protocolLevel: 5,
|
|
40
30
|
id,
|
|
31
|
+
properties,
|
|
32
|
+
reasonCodes: reasonCodes,
|
|
41
33
|
};
|
|
42
|
-
}
|
|
43
|
-
|
|
34
|
+
}
|
|
35
|
+
decoder.done();
|
|
36
|
+
return {
|
|
37
|
+
type: PacketType.unsuback,
|
|
38
|
+
protocolLevel: codecOpts.protocolLevel,
|
|
39
|
+
id,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
44
42
|
//# sourceMappingURL=unsuback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsuback.js","sourceRoot":"","sources":["../../mqttPacket/unsuback.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unsuback.js","sourceRoot":"","sources":["../../mqttPacket/unsuback.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAsBvC,MAAM,UAAU,MAAM,CACpB,MAAsB,EACtB,SAAoB;IAEpB,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,aAAa,CACnB,MAAM,CAAC,UAAU,IAAI,EAAE,EACvB,UAAU,CAAC,QAAQ,EACnB,SAAS,CAAC,qBAAqB,CAChC,CAAC;QACF,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,MAAkB,EAClB,KAAa,EACb,SAAoB,EACpB,UAAuB;IAEvB,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC9B,IAAI,SAAS,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3C,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,QAAQ;YACzB,aAAa,EAAE,CAAC;YAChB,EAAE;YACF,UAAU;YACV,WAAW,EAAE,WAAiC;SAC/C,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,EAAE;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,24 +1,41 @@
|
|
|
1
|
-
import type { CodecOpts, PacketId,
|
|
1
|
+
import type { CodecOpts, PacketId, TopicFilter, TPacketType } from "./types.ts";
|
|
2
|
+
import type { ProtocolLevelNoV5 } from "./protocolLevels.ts";
|
|
2
3
|
import type { UnsubscribeProperties } from "./Properties.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Represents an MQTT UNSUBSCRIBE packet conforming to MQTT version 3.1.1 (Protocol Level 4) or lower.
|
|
6
|
+
*/
|
|
3
7
|
export type UnsubscribePacketV4 = {
|
|
8
|
+
/** The type of the MQTT control packet. */
|
|
4
9
|
type: TPacketType;
|
|
10
|
+
/** The protocol version level, restricted to non-v5 variants. */
|
|
5
11
|
protocolLevel: ProtocolLevelNoV5;
|
|
12
|
+
/** The unique 16-bit packet identifier. */
|
|
6
13
|
id: PacketId;
|
|
14
|
+
/** The list of topic filters from which the client intends to unsubscribe. */
|
|
7
15
|
topicFilters: TopicFilter[];
|
|
8
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Represents an MQTT UNSUBSCRIBE packet conforming to MQTT version 5.0.
|
|
19
|
+
*/
|
|
9
20
|
export type UnsubscribePacketV5 = {
|
|
21
|
+
/** The type of the MQTT control packet. */
|
|
10
22
|
type: TPacketType;
|
|
23
|
+
/** The protocol version level, strictly set to 5. */
|
|
11
24
|
protocolLevel: 5;
|
|
25
|
+
/** The unique 16-bit packet identifier. */
|
|
12
26
|
id: PacketId;
|
|
27
|
+
/** Optional user and protocol properties introduced in MQTT v5. */
|
|
13
28
|
properties?: UnsubscribeProperties;
|
|
29
|
+
/** The list of topic filters from which the client intends to unsubscribe. */
|
|
14
30
|
topicFilters: TopicFilter[];
|
|
15
31
|
};
|
|
16
32
|
/**
|
|
17
|
-
*
|
|
33
|
+
* Represents a union of available MQTT UNSUBSCRIBE packets (v4 or v5) sent from client to server.
|
|
18
34
|
*/
|
|
19
35
|
export type UnsubscribePacket = UnsubscribePacketV4 | UnsubscribePacketV5;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Codec utility object responsible for encoding and decoding MQTT UNSUBSCRIBE control packets.
|
|
38
|
+
*/
|
|
39
|
+
export declare function encode(packet: UnsubscribePacket, codecOpts: CodecOpts): Uint8Array;
|
|
40
|
+
export declare function decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): UnsubscribePacket;
|
|
24
41
|
//# sourceMappingURL=unsubscribe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsubscribe.d.ts","sourceRoot":"","sources":["../../mqttPacket/unsubscribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,
|
|
1
|
+
{"version":3,"file":"unsubscribe.d.ts","sourceRoot":"","sources":["../../mqttPacket/unsubscribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EAER,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAK7D;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,2CAA2C;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,iEAAiE;IACjE,aAAa,EAAE,iBAAiB,CAAC;IACjC,2CAA2C;IAC3C,EAAE,EAAE,QAAQ,CAAC;IACb,8EAA8E;IAC9E,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,2CAA2C;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,qDAAqD;IACrD,aAAa,EAAE,CAAC,CAAC;IACjB,2CAA2C;IAC3C,EAAE,EAAE,QAAQ,CAAC;IACb,mEAAmE;IACnE,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,8EAA8E;IAC9E,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAE1E;;GAEG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,SAAS,GACnB,UAAU,CAmBZ;AAED,wBAAgB,MAAM,CACpB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,GACtB,iBAAiB,CA+BnB"}
|
|
@@ -1,53 +1,54 @@
|
|
|
1
1
|
import { PacketType } from "./PacketType.js";
|
|
2
2
|
import { Encoder } from "./encoder.js";
|
|
3
3
|
import { Decoder, DecoderError } from "./decoder.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
protocolLevel: codecOpts.protocolLevel,
|
|
40
|
-
id,
|
|
41
|
-
topicFilters,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
4
|
+
/**
|
|
5
|
+
* Codec utility object responsible for encoding and decoding MQTT UNSUBSCRIBE control packets.
|
|
6
|
+
*/
|
|
7
|
+
export function encode(packet, codecOpts) {
|
|
8
|
+
// Bits 3,2,1 and 0 of the fixed header of the UNSUBSCRIBE Control Packet are reserved and
|
|
9
|
+
// MUST be set to 0,0,1 and 0 respectively. The Server MUST treat any other value as
|
|
10
|
+
// malformed and close the Network Connection [MQTT-3.10.1-1].
|
|
11
|
+
const flags = 0b0010;
|
|
12
|
+
const encoder = new Encoder(packet.type);
|
|
13
|
+
encoder.setInt16(packet.id);
|
|
14
|
+
if (packet.protocolLevel === 5) {
|
|
15
|
+
encoder.setProperties(packet.properties || {}, PacketType.unsubscribe, codecOpts.maxOutgoingPacketSize);
|
|
16
|
+
}
|
|
17
|
+
for (const topicFilter of packet.topicFilters) {
|
|
18
|
+
encoder.setUtf8String(topicFilter);
|
|
19
|
+
}
|
|
20
|
+
return encoder.done(flags);
|
|
21
|
+
}
|
|
22
|
+
export function decode(buffer, flags, codecOpts, packetType) {
|
|
23
|
+
if (flags !== 0b0010) {
|
|
24
|
+
throw new DecoderError("Invalid header");
|
|
25
|
+
}
|
|
26
|
+
const decoder = new Decoder(packetType, buffer);
|
|
27
|
+
const id = decoder.getInt16();
|
|
28
|
+
let properties = {};
|
|
29
|
+
if (codecOpts.protocolLevel === 5) {
|
|
30
|
+
properties = decoder.getProperties(PacketType.unsubscribe);
|
|
31
|
+
}
|
|
32
|
+
const topicFilters = [];
|
|
33
|
+
do {
|
|
34
|
+
const topicFilter = decoder.getUTF8String();
|
|
35
|
+
topicFilters.push(topicFilter);
|
|
36
|
+
} while (!decoder.atEnd());
|
|
37
|
+
decoder.done();
|
|
38
|
+
if (codecOpts.protocolLevel !== 5) {
|
|
44
39
|
return {
|
|
45
40
|
type: PacketType.unsubscribe,
|
|
46
|
-
protocolLevel:
|
|
41
|
+
protocolLevel: codecOpts.protocolLevel,
|
|
47
42
|
id,
|
|
48
|
-
properties,
|
|
49
43
|
topicFilters,
|
|
50
44
|
};
|
|
51
|
-
}
|
|
52
|
-
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
type: PacketType.unsubscribe,
|
|
48
|
+
protocolLevel: 5,
|
|
49
|
+
id,
|
|
50
|
+
properties,
|
|
51
|
+
topicFilters,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
53
54
|
//# sourceMappingURL=unsubscribe.js.map
|