UNPKG

aws-crt

Version:

NodeJS/browser bindings to the aws-c-* libraries

1,107 lines (1,106 loc) 43.9 kB
/** * @packageDocumentation * @module mqtt5 */ /** * Data model for MQTT5 user properties. * * A user property is a name-value pair of utf-8 strings that can be added to mqtt5 packets. */ export interface UserProperty { name: string; value: string; } /** * Server return code for connect attempts. * * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901079) encoding values. */ export declare enum ConnectReasonCode { /** * Returned when the connection is accepted. */ Success = 0, /** * Returned when the server has a failure but does not want to specify a reason or none * of the other reason codes apply. */ UnspecifiedError = 128, /** * Returned when data in the CONNECT packet could not be correctly parsed by the server. */ MalformedPacket = 129, /** * Returned when data in the CONNECT packet does not conform to the MQTT5 specification requirements. */ ProtocolError = 130, /** * Returned when the CONNECT packet is valid but was not accepted by the server. */ ImplementationSpecificError = 131, /** * Returned when the server does not support MQTT5 protocol version specified in the connection. */ UnsupportedProtocolVersion = 132, /** * Returned when the client identifier in the CONNECT packet is a valid string but not one that * is allowed on the server. */ ClientIdentifierNotValid = 133, /** * Returned when the server does not accept the username and/or password specified by the client * in the connection packet. */ BadUsernameOrPassword = 134, /** * Returned when the client is not authorized to connect to the server. */ NotAuthorized = 135, /** * Returned when the MQTT5 server is not available. */ ServerUnavailable = 136, /** * Returned when the server is too busy to make a connection. It is recommended that the client try again later. */ ServerBusy = 137, /** * Returned when the client has been banned by the server. */ Banned = 138, /** * Returned when the authentication method used in the connection is either not supported on the server or it does * not match the authentication method currently in use in the CONNECT packet. */ BadAuthenticationMethod = 140, /** * Returned when the Will topic name sent in the connection packet is correctly formed, but is not accepted by * the server. */ TopicNameInvalid = 144, /** * Returned when the connection packet exceeded the maximum permissible size on the server. */ PacketTooLarge = 149, /** * Returned when the quota limits set on the server have been met and/or exceeded. */ QuotaExceeded = 151, /** * Returned when the Will payload in the CONNECT packet does not match the specified payload format indicator. */ PayloadFormatInvalid = 153, /** * Returned when the server does not retain messages but the connection packet on the client had Will retain enabled. */ RetainNotSupported = 154, /** * Returned when the server does not support the QOS setting in the Will QOS in the connection packet. */ QosNotSupported = 155, /** * Returned when the server is telling the client to temporarily use another server instead of the one they * are trying to connect to. */ UseAnotherServer = 156, /** * Returned when the server is telling the client to permanently use another server instead of the one they * are trying to connect to. */ ServerMoved = 157, /** * Returned when the server connection rate limit has been exceeded. */ ConnectionRateExceeded = 159 } /** * Determines if a reason code represents a successful connect operation * * @param reasonCode reason code to check success for */ export declare function isSuccessfulConnectReasonCode(reasonCode: ConnectReasonCode): boolean; /** * Reason code inside DISCONNECT packets. Helps determine why a connection was terminated. * * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901208) encoding values. */ export declare enum DisconnectReasonCode { /** * Returned when the remote endpoint wishes to disconnect normally. Will not trigger the publish of a Will message if a * Will message was configured on the connection. * * May be sent by the client or server. */ NormalDisconnection = 0, /** * Returns that the client wants to disconnect but requires that the server publish the Will message configured * on the connection. * * May only be sent by the client. */ DisconnectWithWillMessage = 4, /** * Returned when the connection was closed but the sender does not want to specify a reason or none * of the other reason codes apply. * * May be sent by the client or the server. */ UnspecifiedError = 128, /** * Indicates the remote endpoint received a packet that does not conform to the MQTT specification. * * May be sent by the client or the server. */ MalformedPacket = 129, /** * Returned when an unexpected or out-of-order packet was received by the remote endpoint. * * May be sent by the client or the server. */ ProtocolError = 130, /** * Returned when a valid packet was received by the remote endpoint, but could not be processed by the current implementation. * * May be sent by the client or the server. */ ImplementationSpecificError = 131, /** * Returned when the remote endpoint received a packet that represented an operation that was not authorized within * the current connection. * * May only be sent by the server. */ NotAuthorized = 135, /** * Returned when the server is busy and cannot continue processing packets from the client. * * May only be sent by the server. */ ServerBusy = 137, /** * Returned when the server is shutting down. * * May only be sent by the server. */ ServerShuttingDown = 139, /** * Returned when the server closes the connection because no packet from the client has been received in * 1.5 times the KeepAlive time set when the connection was established. * * May only be sent by the server. */ KeepAliveTimeout = 141, /** * Returned when the server has established another connection with the same client ID as a client's current * connection, causing the current client to become disconnected. * * May only be sent by the server. */ SessionTakenOver = 142, /** * Returned when the topic filter name is correctly formed but not accepted by the server. * * May only be sent by the server. */ TopicFilterInvalid = 143, /** * Returned when topic name is correctly formed, but is not accepted. * * May be sent by the client or the server. */ TopicNameInvalid = 144, /** * Returned when the remote endpoint reached a state where there were more in-progress QoS1+ publishes then the * limit it established for itself when the connection was opened. * * May be sent by the client or the server. */ ReceiveMaximumExceeded = 147, /** * Returned when the remote endpoint receives a PUBLISH packet that contained a topic alias greater than the * maximum topic alias limit that it established for itself when the connection was opened. * * May be sent by the client or the server. */ TopicAliasInvalid = 148, /** * Returned when the remote endpoint received a packet whose size was greater than the maximum packet size limit * it established for itself when the connection was opened. * * May be sent by the client or the server. */ PacketTooLarge = 149, /** * Returned when the remote endpoint's incoming data rate was too high. * * May be sent by the client or the server. */ MessageRateTooHigh = 150, /** * Returned when an internal quota of the remote endpoint was exceeded. * * May be sent by the client or the server. */ QuotaExceeded = 151, /** * Returned when the connection was closed due to an administrative action. * * May be sent by the client or the server. */ AdministrativeAction = 152, /** * Returned when the remote endpoint received a packet where payload format did not match the format specified * by the payload format indicator. * * May be sent by the client or the server. */ PayloadFormatInvalid = 153, /** * Returned when the server does not support retained messages. * * May only be sent by the server. */ RetainNotSupported = 154, /** * Returned when the client sends a QOS that is greater than the maximum QOS established when the connection was * opened. * * May only be sent by the server. */ QosNotSupported = 155, /** * Returned by the server to tell the client to temporarily use a different server. * * May only be sent by the server. */ UseAnotherServer = 156, /** * Returned by the server to tell the client to permanently use a different server. * * May only be sent by the server. */ ServerMoved = 157, /** * Returned by the server to tell the client that shared subscriptions are not supported on the server. * * May only be sent by the server. */ SharedSubscriptionsNotSupported = 158, /** * Returned when the server disconnects the client due to the connection rate being too high. * * May only be sent by the server. */ ConnectionRateExceeded = 159, /** * Returned by the server when the maximum connection time authorized for the connection was exceeded. * * May only be sent by the server. */ MaximumConnectTime = 160, /** * Returned by the server when it received a SUBSCRIBE packet with a subscription identifier, but the server does * not support subscription identifiers. * * May only be sent by the server. */ SubscriptionIdentifiersNotSupported = 161, /** * Returned by the server when it received a SUBSCRIBE packet with a wildcard topic filter, but the server does * not support wildcard topic filters. * * May only be sent by the server. */ WildcardSubscriptionsNotSupported = 162 } /** * Determines if a reason code represents a successful disconnect operation * * @param reasonCode reason code to check success for */ export declare function isSuccessfulDisconnectReasonCode(reasonCode: DisconnectReasonCode): boolean; /** * Reason codes inside SUBACK packet payloads that specify the results for each subscription in the associated * SUBSCRIBE packet. * * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901178) encoding values. */ export declare enum SubackReasonCode { /** * Returned when the subscription was accepted and the maximum QOS sent will be QOS 0. */ GrantedQoS0 = 0, /** * Returned when the subscription was accepted and the maximum QOS sent will be QOS 1. */ GrantedQoS1 = 1, /** * Returned when the subscription was accepted and the maximum QOS sent will be QOS 2. */ GrantedQoS2 = 2, /** * Returned when the connection was closed but the sender does not want to specify a reason or none * of the other reason codes apply. */ UnspecifiedError = 128, /** * Returned when the subscription was valid but the server did not accept it. */ ImplementationSpecificError = 131, /** * Returned when the client was not authorized to make the subscription on the server. */ NotAuthorized = 135, /** * Returned when the subscription topic filter was correctly formed but not allowed for the client. */ TopicFilterInvalid = 143, /** * Returned when the packet identifier was already in use on the server. */ PacketIdentifierInUse = 145, /** * Returned when a subscribe-related quota set on the server was exceeded. */ QuotaExceeded = 151, /** * Returned when the subscription's topic filter was a shared subscription and the server does not support * shared subscriptions. */ SharedSubscriptionsNotSupported = 158, /** * Returned when the SUBSCRIBE packet contained a subscription identifier and the server does not support * subscription identifiers. */ SubscriptionIdentifiersNotSupported = 161, /** * Returned when the subscription's topic filter contains a wildcard but the server does not support * wildcard subscriptions. */ WildcardSubscriptionsNotSupported = 162 } /** * Determines if a reason code represents a successful subscribe operation * * @param reasonCode reason code to check success for */ export declare function isSuccessfulSubackReasonCode(reasonCode: SubackReasonCode): boolean; /** * Reason codes inside UNSUBACK packet payloads that specify the results for each topic filter in the associated * UNSUBSCRIBE packet. * * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901194) encoding values. */ export declare enum UnsubackReasonCode { /** * Returned when the unsubscribe was successful and the client is no longer subscribed to the topic filter on the server. */ Success = 0, /** * Returned when the topic filter did not match one of the client's existing subscriptions on the server. */ NoSubscriptionExisted = 17, /** * Returned when the unsubscribe of the topic filter was not accepted and the server does not want to specify a * reason or none of the other reason codes apply. */ UnspecifiedError = 128, /** * Returned when the topic filter was valid but the server does not accept an unsubscribe for it. */ ImplementationSpecificError = 131, /** * Returned when the client was not authorized to unsubscribe from that topic filter on the server. */ NotAuthorized = 135, /** * Returned when the topic filter was correctly formed but is not allowed for the client on the server. */ TopicFilterInvalid = 143, /** * Returned when the packet identifier was already in use on the server. */ PacketIdentifierInUse = 145 } /** * Determines if a reason code represents a successful unsubscribe operation * * @param reasonCode reason code to check success for */ export declare function isSuccessfulUnsubackReasonCode(reasonCode: UnsubackReasonCode): boolean; /** * Reason code inside PUBACK packets that indicates the result of the associated PUBLISH request. * * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901124) encoding values. */ export declare enum PubackReasonCode { /** * Returned when the (QoS 1) publish was accepted by the recipient. * * May be sent by the client or the server. */ Success = 0, /** * Returned when the (QoS 1) publish was accepted but there were no matching subscribers. * * May only be sent by the server. */ NoMatchingSubscribers = 16, /** * Returned when the (QoS 1) publish was not accepted and the receiver does not want to specify a reason or none * of the other reason codes apply. * * May be sent by the client or the server. */ UnspecifiedError = 128, /** * Returned when the (QoS 1) publish was valid but the receiver was not willing to accept it. * * May be sent by the client or the server. */ ImplementationSpecificError = 131, /** * Returned when the (QoS 1) publish was not authorized by the receiver. * * May be sent by the client or the server. */ NotAuthorized = 135, /** * Returned when the topic name was valid but the receiver was not willing to accept it. * * May be sent by the client or the server. */ TopicNameInvalid = 144, /** * Returned when the packet identifier used in the associated PUBLISH was already in use. * This can indicate a mismatch in the session state between client and server. * * May be sent by the client or the server. */ PacketIdentifierInUse = 145, /** * Returned when the associated PUBLISH failed because an internal quota on the recipient was exceeded. * * May be sent by the client or the server. */ QuotaExceeded = 151, /** * Returned when the PUBLISH packet's payload format did not match its payload format indicator property. * * May be sent by the client or the server. */ PayloadFormatInvalid = 153 } /** * Determines if a reason code represents a successful QoS 1 publish operation * * @param reasonCode reason code to check success for */ export declare function isSuccessfulPubackReasonCode(reasonCode: PubackReasonCode): boolean; /** * Optional property describing a PUBLISH payload's format. * * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901111) encoding values. */ export declare enum PayloadFormatIndicator { /** * The payload is arbitrary binary data */ Bytes = 0, /** * The payload is a well-formed utf-8 string value. */ Utf8 = 1 } /** * Valid types for a PUBLISH packet's payload * * While the payload as input can be one of several types, the payload as output (via message receipt) * will always be an ArrayBuffer of binary data. */ export type Payload = string | Record<string, unknown> | ArrayBuffer | ArrayBufferView; /** * Valid types for MQTT5 packet binary data fields (other than PUBLISH payload) */ export type BinaryData = ArrayBuffer | ArrayBufferView; /** * MQTT message delivery quality of service. * * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901234) encoding values. */ export declare enum QoS { /** * The message is delivered according to the capabilities of the underlying network. No response is sent by the * receiver and no retry is performed by the sender. The message arrives at the receiver either once or not at all. */ AtMostOnce = 0, /** * A level of service that ensures that the message arrives at the receiver at least once. */ AtLeastOnce = 1, /** * A level of service that ensures that the message arrives at the receiver exactly once. */ ExactlyOnce = 2 } /** * Configures how retained messages should be handled when subscribing with a topic filter that matches topics with * associated retained messages. * * Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169) encoding values. */ export declare enum RetainHandlingType { /** * The server should always send all retained messages on topics that match a subscription's filter. */ SendOnSubscribe = 0, /** * The server should send retained messages on topics that match the subscription's filter, but only for the * first matching subscription, per session. */ SendOnSubscribeIfNew = 1, /** * Subscriptions must not trigger any retained message publishes from the server. */ DontSend = 2 } /** * Packet type indicator that allows for basic polymorphism with user-received packets. Enum values * match the mqtt spec's [packet type encoding](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901022) values. */ export declare enum PacketType { Connect = 1, Connack = 2, Publish = 3, Puback = 4, Pubrec = 5, Pubrel = 6, Pubcomp = 7, Subscribe = 8, Suback = 9, Unsubscribe = 10, Unsuback = 11, Pingreq = 12, Pingresp = 13, Disconnect = 14, Auth = 15 } /** * Common interface for all packet types. */ export interface IPacket { /** * Always set on packets coming from the client to the user. Ignored if set on packets that come from the * user to the client. * * The primary use is to allow users to distinguish between packets in polymorphic situations (for example, * the result of a publish attempt which might be a Puback (QoS 1) or Pubcomp (QoS 2, when we support it). */ type?: PacketType; } /** * Data model of an [MQTT5 PUBLISH](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901100) packet */ export interface PublishPacket extends IPacket { /** * Sent publishes - The topic this message should be published to. * * Received publishes - The topic this message was published to. * * See [MQTT5 Topic Name](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901107) */ topicName: string; /** * The payload of the publish message. * * See [MQTT5 Publish Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901119) */ payload?: Payload; /** * Sent publishes - The MQTT quality of service level this message should be delivered with. * * Received publishes - The MQTT quality of service level this message was delivered at. * * See [MQTT5 QoS](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901103) */ qos: QoS; /** * True if this is a retained message, false otherwise. * * Always set on received publishes; on sent publishes, undefined implies false. * * See [MQTT5 Retain](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901104) */ retain?: boolean; /** * Property specifying the format of the payload data. The mqtt5 client does not enforce or use this * value in a meaningful way. * * See [MQTT5 Payload Format Indicator](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901111) */ payloadFormat?: PayloadFormatIndicator; /** * Sent publishes - indicates the maximum amount of time allowed to elapse for message delivery before the server * should instead delete the message (relative to a recipient). * * Received publishes - indicates the remaining amount of time (from the server's perspective) before the message would * have been deleted relative to the subscribing client. * * If left undefined, indicates no expiration timeout. * * See [MQTT5 Message Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901112) */ messageExpiryIntervalSeconds?: number; /** * Sent publishes - (Node only) topic alias to use, if possible, when encoding this packet. Only used if the * client's outbound topic aliasing mode is set to Manual. * * Received publishes - topic alias used by the server when transmitting the publish to the client. * * See [MQTT5 Topic Alias](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901113) */ topicAlias?: number; /** * Opaque topic string intended to assist with request/response implementations. Not internally meaningful to * MQTT5 or this client. * * See [MQTT5 Response Topic](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901114) */ responseTopic?: string; /** * Opaque binary data used to correlate between publish messages, as a potential method for request-response * implementation. Not internally meaningful to MQTT5. * * See [MQTT5 Correlation Data](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901115) */ correlationData?: BinaryData; /** * Sent publishes - ignored * * Received publishes - the subscription identifiers of all the subscriptions this message matched. * * See [MQTT5 Subscription Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901117) */ subscriptionIdentifiers?: Array<number>; /** * Property specifying the content type of the payload. Not internally meaningful to MQTT5. * * See [MQTT5 Content Type](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901118) */ contentType?: string; /** * Set of MQTT5 user properties included with the packet. * * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901116) */ userProperties?: Array<UserProperty>; } /** * Data model of an [MQTT5 PUBACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901121) packet */ export interface PubackPacket extends IPacket { /** * Success indicator or failure reason for the associated PUBLISH packet. * * See [MQTT5 PUBACK Reason Code](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901124) */ reasonCode: PubackReasonCode; /** * Additional diagnostic information about the result of the PUBLISH attempt. * * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901127) */ reasonString?: string; /** * Set of MQTT5 user properties included with the packet. * * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901128) */ userProperties?: Array<UserProperty>; } /** * Data model of an [MQTT5 CONNECT](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901033) packet. */ export interface ConnectPacket extends IPacket { /** * The maximum time interval, in seconds, that is permitted to elapse between the point at which the client * finishes transmitting one MQTT packet and the point it starts sending the next. The client will use * PINGREQ packets to maintain this property. * * If the responding CONNACK contains a keep alive property value, then that is the negotiated keep alive value. * Otherwise, the keep alive sent by the client is the negotiated value. * * See [MQTT5 Keep Alive](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901045) */ keepAliveIntervalSeconds: number; /** * A unique string identifying the client to the server. Used to restore session state between connections. * * If left empty, the broker will auto-assign a unique client id. When reconnecting, the mqtt5 client will * always use the auto-assigned client id. * * See [MQTT5 Client Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901059) */ clientId?: string; /** * A string value that the server may use for client authentication and authorization. * * See [MQTT5 User Name](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901071) */ username?: string; /** * Opaque binary data that the server may use for client authentication and authorization. * * See [MQTT5 Password](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901072) */ password?: BinaryData; /** * A time interval, in seconds, that the client requests the server to persist this connection's MQTT session state * for. Has no meaning if the client has not been configured to rejoin sessions. Must be non-zero in order to * successfully rejoin a session. * * If the responding CONNACK contains a session expiry property value, then that is the negotiated session expiry * value. Otherwise, the session expiry sent by the client is the negotiated value. * * See [MQTT5 Session Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901048) */ sessionExpiryIntervalSeconds?: number; /** * If set to true, requests that the server send response information in the subsequent CONNACK. This response * information may be used to set up request-response implementations over MQTT, but doing so is outside * the scope of the MQTT5 spec and client. * * See [MQTT5 Request Response Information](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901052) */ requestResponseInformation?: boolean; /** * If set to true, requests that the server send additional diagnostic information (via response string or * user properties) in DISCONNECT or CONNACK packets from the server. * * See [MQTT5 Request Problem Information](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901053) */ requestProblemInformation?: boolean; /** * Notifies the server of the maximum number of in-flight Qos 1 and 2 messages the client is willing to handle. If * omitted, then no limit is requested. * * See [MQTT5 Receive Maximum](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901049) */ receiveMaximum?: number; /** * Notifies the server of the maximum packet size the client is willing to handle. If * omitted, then no limit beyond the natural limits of MQTT packet size is requested. * * See [MQTT5 Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901050) */ maximumPacketSizeBytes?: number; /** * A time interval, in seconds, that the server should wait (for a session reconnection) before sending the * will message associated with the connection's session. If omitted, the server will send the will when the * associated session is destroyed. If the session is destroyed before a will delay interval has elapsed, then * the will must be sent at the time of session destruction. * * See [MQTT5 Will Delay Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901062) */ willDelayIntervalSeconds?: number; /** * The definition of a message to be published when the connection's session is destroyed by the server or when * the will delay interval has elapsed, whichever comes first. If undefined, then nothing will be sent. * * See [MQTT5 Will](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901040) */ will?: PublishPacket; /** * Set of MQTT5 user properties included with the packet. * * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901054) */ userProperties?: Array<UserProperty>; } /** * Data model of an [MQTT5 CONNACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901074) packet. */ export interface ConnackPacket extends IPacket { /** * True if the client rejoined an existing session on the server, false otherwise. * * See [MQTT5 Session Present](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901078) */ sessionPresent: boolean; /** * Indicates either success or the reason for failure for the connection attempt. * * See [MQTT5 Connect Reason Code](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901079) */ reasonCode: ConnectReasonCode; /** * A time interval, in seconds, that the server will persist this connection's MQTT session state * for. If present, this value overrides any session expiry specified in the preceding CONNECT packet. * * See [MQTT5 Session Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901082) */ sessionExpiryInterval?: number; /** * The maximum amount of in-flight QoS 1 or 2 messages that the server is willing to handle at once. If omitted, * the limit is based on the valid MQTT packet id space (65535). * * See [MQTT5 Receive Maximum](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901083) */ receiveMaximum?: number; /** * The maximum message delivery quality of service that the server will allow on this connection. * * See [MQTT5 Maximum QoS](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901084) */ maximumQos?: QoS; /** * Indicates whether the server supports retained messages. If undefined, retained messages are * supported. * * See [MQTT5 Retain Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901085) */ retainAvailable?: boolean; /** * Specifies the maximum packet size, in bytes, that the server is willing to accept. If undefined, there * is no limit beyond what is imposed by the MQTT spec itself. * * See [MQTT5 Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901086) */ maximumPacketSize?: number; /** * Specifies a client identifier assigned to this connection by the server. Only valid when the client id of * the preceding CONNECT packet was left empty. * * See [MQTT5 Assigned Client Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901087) */ assignedClientIdentifier?: string; /** * Specifies the maximum topic alias value that the server will accept from the client. * * See [MQTT5 Topic Alias Maximum](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901088) */ topicAliasMaximum?: number; /** * Additional diagnostic information about the result of the connection attempt. * * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901089) */ reasonString?: string; /** * Indicates whether the server supports wildcard subscriptions. If undefined, wildcard subscriptions * are supported. * * See [MQTT5 Wildcard Subscriptions Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901091) */ wildcardSubscriptionsAvailable?: boolean; /** * Indicates whether the server supports subscription identifiers. If undefined, subscription identifiers * are supported. * * See [MQTT5 Subscription Identifiers Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901092) */ subscriptionIdentifiersAvailable?: boolean; /** * Indicates whether the server supports shared subscription topic filters. If undefined, shared subscriptions * are supported. * * See [MQTT5 Shared Subscriptions Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901093) */ sharedSubscriptionsAvailable?: boolean; /** * Server-requested override of the keep alive interval, in seconds. If undefined, the keep alive value sent * by the client should be used. * * See [MQTT5 Server Keep Alive](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901094) */ serverKeepAlive?: number; /** * A value that can be used in the creation of a response topic associated with this connection. MQTT5-based * request/response is outside the purview of the MQTT5 spec and this client. * * See [MQTT5 Response Information](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901095) */ responseInformation?: string; /** * Property indicating an alternate server that the client may temporarily or permanently attempt * to connect to instead of the configured endpoint. Will only be set if the reason code indicates another * server may be used (ServerMoved, UseAnotherServer). * * See [MQTT5 Server Reference](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901096) */ serverReference?: string; /** * Set of MQTT5 user properties included with the packet. * * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901090) */ userProperties?: Array<UserProperty>; } /** * Data model of an [MQTT5 DISCONNECT](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901205) packet. */ export interface DisconnectPacket extends IPacket { /** * Value indicating the reason that the sender is closing the connection * * See [MQTT5 Disconnect Reason Code](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901208) */ reasonCode: DisconnectReasonCode; /** * Requests a change to the session expiry interval negotiated at connection time as part of the disconnect. Only * valid for DISCONNECT packets sent from client to server. It is not valid to attempt to change session expiry * from zero to a non-zero value. * * See [MQTT5 Session Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901211) */ sessionExpiryIntervalSeconds?: number; /** * Additional diagnostic information about the reason that the sender is closing the connection * * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901212) */ reasonString?: string; /** * Set of MQTT5 user properties included with the packet. * * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901213) */ userProperties?: Array<UserProperty>; /** * Property indicating an alternate server that the client may temporarily or permanently attempt * to connect to instead of the configured endpoint. Will only be set if the reason code indicates another * server may be used (ServerMoved, UseAnotherServer). * * See [MQTT5 Server Reference](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901214) */ serverReference?: string; } /** * Configures a single subscription within a Subscribe operation * * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169) */ export interface Subscription { /** * Topic filter to subscribe to * * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169) */ topicFilter: string; /** * Maximum QoS on which the subscriber will accept publish messages. Negotiated QoS may be different. * * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169) */ qos: QoS; /** * Should the server not send publishes to a client when that client was the one who sent the publish? If * undefined, this is assumed to be false. * * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169) */ noLocal?: boolean; /** * Should messages sent due to this subscription keep the retain flag preserved on the message? If undefined, * this is assumed to be false. * * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169) */ retainAsPublished?: boolean; /** * Should retained messages on matching topics be sent in reaction to this subscription? If undefined, * this is assumed to be RetainHandlingType.SendOnSubscribe. * * See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169) */ retainHandlingType?: RetainHandlingType; } /** * Data model of an [MQTT5 SUBSCRIBE](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901161) packet. */ export interface SubscribePacket extends IPacket { /** * List of topic filter subscriptions that the client wishes to listen to * * See [MQTT5 Subscribe Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901168) */ subscriptions: Array<Subscription>; /** * A positive integer to associate with all subscriptions in this request. Publish packets that match * a subscription in this request should include this identifier in the resulting message. * * See [MQTT5 Subscription Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901166) */ subscriptionIdentifier?: number; /** * Set of MQTT5 user properties included with the packet. * * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901167) */ userProperties?: Array<UserProperty>; } /** * Data model of an [MQTT5 SUBACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901171) packet. */ export interface SubackPacket extends IPacket { /** * A list of reason codes indicating the result of each individual subscription entry in the * associated SUBSCRIBE packet. * * See [MQTT5 Suback Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901178) */ reasonCodes: Array<SubackReasonCode>; /** * Additional diagnostic information about the result of the SUBSCRIBE attempt. * * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901176) */ reasonString?: string; /** * Set of MQTT5 user properties included with the packet. * * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901177) */ userProperties?: Array<UserProperty>; } /** * Data model of an [MQTT5 UNSUBSCRIBE](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901179) packet. */ export interface UnsubscribePacket extends IPacket { /** * List of topic filters that the client wishes to unsubscribe from. * * See [MQTT5 Unsubscribe Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901185) */ topicFilters: Array<string>; /** * Set of MQTT5 user properties included with the packet. * * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901184) */ userProperties?: Array<UserProperty>; } /** * Data model of an [MQTT5 UNSUBACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901187) packet. */ export interface UnsubackPacket extends IPacket { /** * A list of reason codes indicating the result of unsubscribing from each individual topic filter entry in the * associated UNSUBSCRIBE packet. * * See [MQTT5 Unsuback Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901194) */ reasonCodes: Array<UnsubackReasonCode>; /** * Additional diagnostic information about the result of the UNSUBSCRIBE attempt. * * See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901192) */ reasonString?: string; /** * Set of MQTT5 user properties included with the packet. * * See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901193) */ userProperties?: Array<UserProperty>; }