UNPKG

declarations

Version:

[![npm version](https://badge.fury.io/js/declarations.svg)](https://www.npmjs.com/package/declarations)

449 lines (402 loc) 14.2 kB
// Type definitions for MQTT // Project: https://github.com/mqttjs/MQTT.js // Definitions by: Pekka Leppänen <https://github.com/PekkaPLeppanen> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// <reference path="../node/node.d.ts" /> declare module 'mqtt' { namespace mqtt { import ReadableStream = NodeJS.ReadableStream; import EventEmitter = NodeJS.EventEmitter; interface Packet { messageId: string; [key: string]: any; } interface Granted { /** * is a subscribed to topic */ topic: string; /** * is the granted qos level on it */ qos: number; } interface Topic { /** * object which has topic names as object keys and as value the QoS, like {'test1': 0, 'test2': 1}. */ [topic: string]: number; } /** * MQTT CLIENT */ interface ClientOptions extends SecureClientOptions { /** * 10 seconds, set to 0 to disable */ keepalive?: number; /** * 'mqttjs_' + Math.random().toString(16).substr(2, 8) */ clientId?: string; /** * 'MQTT' */ protocolId?: string; /** * 4 */ protocolVersion?: number; /** * true, set to false to receive QoS 1 and 2 messages while offline */ clean?: boolean; /** * 1000 milliseconds, interval between two reconnections */ reconnectPeriod?: number; /** * 30 * 1000 milliseconds, time to wait before a CONNACK is received */ connectTimeout?: number; /** * the username required by your broker, if any */ username?: string; /** * the password required by your broker, if any */ password?: string; /** * a Store for the incoming packets */ incomingStore?: Store; /** * a Store for the outgoing packets */ outgoingStore?: Store; /** * a message that will sent by the broker automatically when the client disconnect badly. */ will?: { /** * the topic to publish */ topic: string; /** * the message to publish */ payload: string; /** * the QoS */ qos: number; /** * the retain flag */ retain: boolean; }; } interface SecureClientOptions { /** * path to private key */ keyPath?: string; /** * path to corresponding public cert */ certPath?: string; rejectUnauthorized?: boolean; } interface ClientPublishOptions { /** * the QoS */ qos?: number; /** * the retain flag */ retain?: boolean; } interface ClientSubscribeOptions { /** * the QoS */ qos?: number; } interface ClientSubscribeCallback { (err: any, granted: Granted): void; } /** * @deprecated use connect() instead * Create a new IClient (see: IClient) * * @param port - broker port (default: 1883) * @param host - broker host (default: localhost) * @param options - connect options */ function createClient(port?: number, host?: string, options?: ClientOptions): Client; /** * @deprecated use connect() instead * Create a new secure IClient * * @param port * @param host * @param options - connection options, must include keys. */ function createSecureClient(port?: number, host?: string, options?: SecureClientOptions): Client; /** * Create a new MqttClient (see: IClient) * * The brokerUrl supports normal connections using mqtt:// or tcp:// and secure connections using mqtts:// or ssl://. * * Passing the clientId is also supported, for example mqtt://user@localhost?clientId=123abc. * * @param brokerUrl * @param options */ function connect(brokerUrl: string, options?: ClientOptions): Client; /** * The Client class wraps a client connection to an MQTT broker over an arbitrary transport method (TCP, TLS, WebSocket, ecc). * * Client automatically handles the following: * - Regular server pings * - QoS flow * - Automatic reconnections * - Start publishing before being connected * */ interface Client extends EventEmitter { (streamBuilder: any, options: ClientOptions): Client; /** * Publish a message to a topic * * @param topic * @param message * @param options * @param callback */ publish(topic: string, message: Buffer, options?: ClientPublishOptions, callback?: Function): Client; publish(topic: string, message: string, options?: ClientPublishOptions, callback?: Function): Client; /** * Subscribe to a topic or topics * @param topic to subscribe to or an Array of topics to subscribe to. It can also be an object. * @param the options to subscribe with * @param callback fired on suback */ subscribe(topic: string, options?: ClientSubscribeOptions, callback?: ClientSubscribeCallback): Client; subscribe(topic: string[], options?: ClientSubscribeOptions, callback?: ClientSubscribeCallback): Client; subscribe(topic: Topic, options?: ClientSubscribeOptions, callback?: ClientSubscribeCallback): Client; /** * Unsubscribe from a topic or topics * * @param topic is a String topic or an array of topics to unsubscribe from * @param options * @param callback fired on unsuback */ unsubscribe(topic: string, options?: ClientSubscribeOptions, callback?: ClientSubscribeCallback): Client; unsubscribe(topic: string[], options?: ClientSubscribeOptions, callback?: ClientSubscribeCallback): Client; /** * end - close connection * * @param force passing it to true will close the client right away, without waiting for the in-flight messages to be acked. * This parameter is optional. * @param callback */ end(force?: boolean, callback?: Function): Client; /** * Handle messages with backpressure support, one at a time. Override at will, but always call callback, or the client will * hang. * * @param packet * @param callback */ handleMessage(packet: Packet, callback: Function): Client; } /** * STORE */ /** * In-memory implementation of the message store. * * Another implementaion is mqtt-level-store which uses Level-browserify to store the inflight data, * making it usable both in Node and the Browser. */ interface Store { /** * Adds a packet to the store, a packet is anything that has a messageId property. The callback is called when the packet has * been stored. * @param packet * @param callback */ put(packet: Packet, callback: Function): Store; /** * get a packet from the store * * @param packet * @param callback */ get(packet: Packet, callback: Function): Store; /** * Creates a stream with all the packets in the store. */ createStream(): ReadableStream; /** * Removes a packet from the store, a packet is anything that has a messageId property. The callback is called when the packet * has been removed. * @param packet * @param callback */ del(packet: Packet, callback: Function): Store; /** * Closes the Store. * @param callback */ close(callback: Function): void; } /** * CONNECTION */ /** * @deprecated use mqtt-connect instead * Create a new MqttConnection (see: MqttConnection) * * @param port - broker port (default: 1883) * @param host - broker host (default: localhost) * @param callback - fired on underlying stream connect */ function createConnection(port?: number, host?: string, callback?: Function): Connection; interface ConnectOptions { /** * Protocol ID, usually MQIsdp. */ protocolId?: string; /** * Protocol version, usually 3. */ protocolVersion?: number; /** * keepalive period in seconds. */ keepalive?: number; /** * client ID. */ clientId?: string; /** * the client's will message options */ will?: { /** * the topic to publish */ topic: string; /** * the message to publish */ payload: string; /** * the QoS */ qos: number; /** * the retain flag */ retain: boolean; }; /** * the 'clean start' flag. */ clean?: boolean; /** * username for protocol v3.1. */ username?: string; /** * password for protocol v3.1. */ password?: string; } interface ConnectionPublishOptions { /** * the message ID of the packet, required if qos > 0. */ messageId?: number; /** * the topic to publish */ topic?: string; /** * the message to publish */ payload?: string; /** * the QoS */ qos?: number; /** * the retain flag */ retain?: boolean; } /** * The MqttConnection class represents a raw MQTT connection, both on the server and on the client side. For client side * operations, it is strongly recommended that MqttClient is used, as MqttConnection requires a great deal of additional * boilerplate such as setting up error handling and ping request/responses. * * If such fine grained control is required, MqttConnection can be instantiated using the mqtt.createConnection method. * * MqttServerClient is an unaltered subclass of MqttConnection and can be used in exactly the same way. * * @link https://github.com/mqttjs/MQTT.js/wiki/connection * */ interface Connection extends EventEmitter { /** * Send an MQTT connect packet. * @param options */ connect(options?: ConnectOptions): Connection; /** * Send an MQTT connack packet. * @param options */ connack(options?: { returnCode: number; }): Connection; /** * Send an MQTT publish packet. * @param options */ publish(options?: ConnectionPublishOptions): Connection; } /** * SERVER */ /** * @deprecated use connect instead * Create a new MqttServer (see : IServer) * * @param listener - callback called on server client event */ function createServer(listener?: Function): Server; /** * @deprecated use connect instead * Create a new MqttSecureServer * @param keyPath - path to private key file * @param certPath - path to corresponding public cert * @param listener - callback called on server client event */ function createSecureServer(keyPath: string, certPath: string, listener?: Function): Server; /** * The primary methods of instantiating mqtt.js server classes are through the mqtt.createServer and mqtt.createSecureServer * methods. The former returns an instance of MqttServer and and the latter returns an instance of MqttSecureServer. * * While it is possible to instantiate these classes through new MqttServer(), it is strongly recommended to use the factory * methods * * @link https://github.com/mqttjs/MQTT.js/wiki/server */ interface Server extends EventEmitter { } } export = mqtt; }