UNPKG

5.74 kBTypeScriptView Raw
1import EventEmitter = NodeJS.EventEmitter
2import WritableStream = NodeJS.WritableStream
3
4export declare type QoS = 0 | 1 | 2
5
6export declare type PacketCmd = 'auth' |
7 'connack' |
8 'connect' |
9 'disconnect' |
10 'pingreq' |
11 'pingresp' |
12 'puback' |
13 'pubcomp' |
14 'publish' |
15 'pubrel' |
16 'pubrec' |
17 'suback' |
18 'subscribe' |
19 'unsuback' |
20 'unsubscribe'
21
22export declare type UserProperties = {[index: string]: string | string[]}
23
24export interface IPacket {
25 cmd: PacketCmd
26 messageId?: number
27 length?: number
28}
29
30export interface IAuthPacket extends IPacket {
31 cmd: 'auth'
32 reasonCode: number,
33 properties?: {
34 authenticationMethod?: string,
35 authenticationData?: Buffer,
36 reasonString?: string,
37 userProperties?: UserProperties,
38 }
39}
40
41export interface IConnectPacket extends IPacket {
42 cmd: 'connect'
43 clientId: string
44 protocolVersion?: 4 | 5 | 3
45 protocolId?: 'MQTT' | 'MQIsdp'
46 clean?: boolean
47 keepalive?: number
48 username?: string
49 password?: Buffer
50 will?: {
51 topic: string
52 payload: Buffer
53 qos?: QoS
54 retain?: boolean
55 properties?: {
56 willDelayInterval?: number,
57 payloadFormatIndicator?: boolean,
58 messageExpiryInterval?: number,
59 contentType?: string,
60 responseTopic?: string,
61 correlationData?: Buffer,
62 userProperties?: UserProperties
63 }
64 }
65 properties?: {
66 sessionExpiryInterval?: number,
67 receiveMaximum?: number,
68 maximumPacketSize?: number,
69 topicAliasMaximum?: number,
70 requestResponseInformation?: boolean,
71 requestProblemInformation?: boolean,
72 userProperties?: UserProperties,
73 authenticationMethod?: string,
74 authenticationData?: Buffer
75 }
76}
77
78export interface IPublishPacket extends IPacket {
79 cmd: 'publish'
80 qos: QoS
81 dup: boolean
82 retain: boolean
83 topic: string
84 payload: string | Buffer
85 properties?: {
86 payloadFormatIndicator?: boolean,
87 messageExpiryInterval?: number,
88 topicAlias?: number,
89 responseTopic?: string,
90 correlationData?: Buffer,
91 userProperties?: UserProperties,
92 subscriptionIdentifier?: number | number[],
93 contentType?: string
94 }
95}
96
97export interface IConnackPacket extends IPacket {
98 cmd: 'connack'
99 returnCode?: number,
100 reasonCode?: number,
101 sessionPresent: boolean
102 properties?: {
103 sessionExpiryInterval?: number,
104 receiveMaximum?: number,
105 maximumQoS?: number,
106 retainAvailable?: boolean,
107 maximumPacketSize?: number,
108 assignedClientIdentifier?: string,
109 topicAliasMaximum?: number,
110 reasonString?: string,
111 userProperties?: UserProperties,
112 wildcardSubscriptionAvailable?: boolean,
113 subscriptionIdentifiersAvailable?: boolean,
114 sharedSubscriptionAvailable?: boolean,
115 serverKeepAlive?: number,
116 responseInformation?: string,
117 serverReference?: string,
118 authenticationMethod?: string,
119 authenticationData?: Buffer
120 }
121}
122
123export interface ISubscription {
124 topic: string
125 qos: QoS,
126 nl?: boolean,
127 rap?: boolean,
128 rh?: number
129}
130
131export interface ISubscribePacket extends IPacket {
132 cmd: 'subscribe'
133 subscriptions: ISubscription[],
134 properties?: {
135 reasonString?: string,
136 subscriptionIdentifier?: number,
137 userProperties?: UserProperties
138 }
139}
140
141export interface ISubackPacket extends IPacket {
142 cmd: 'suback',
143 reasonCode?: number,
144 properties?: {
145 reasonString?: string,
146 userProperties?: UserProperties
147 },
148 granted: number[] | Object[]
149}
150
151export interface IUnsubscribePacket extends IPacket {
152 cmd: 'unsubscribe',
153 properties?: {
154 reasonString?: string,
155 userProperties?: UserProperties
156 },
157 unsubscriptions: string[]
158}
159
160export interface IUnsubackPacket extends IPacket {
161 cmd: 'unsuback',
162 reasonCode?: number,
163 properties?: {
164 reasonString?: string,
165 userProperties?: UserProperties
166 }
167}
168
169export interface IPubackPacket extends IPacket {
170 cmd: 'puback',
171 reasonCode?: number,
172 properties?: {
173 reasonString?: string,
174 userProperties?: UserProperties
175 }
176}
177
178export interface IPubcompPacket extends IPacket {
179 cmd: 'pubcomp',
180 reasonCode?: number,
181 properties?: {
182 reasonString?: string,
183 userProperties?: UserProperties
184 }
185}
186
187export interface IPubrelPacket extends IPacket {
188 cmd: 'pubrel',
189 reasonCode?: number,
190 properties?: {
191 reasonString?: string,
192 userProperties?: UserProperties
193 }
194}
195
196export interface IPubrecPacket extends IPacket {
197 cmd: 'pubrec',
198 reasonCode?: number,
199 properties?: {
200 reasonString?: string,
201 userProperties?: UserProperties
202 }
203}
204
205export interface IPingreqPacket extends IPacket {
206 cmd: 'pingreq'
207}
208
209export interface IPingrespPacket extends IPacket {
210 cmd: 'pingresp'
211}
212
213export interface IDisconnectPacket extends IPacket {
214 cmd: 'disconnect',
215 reasonCode?: number,
216 properties?: {
217 sessionExpiryInterval?: number,
218 reasonString?: string,
219 userProperties?: UserProperties,
220 serverReference?: string
221 }
222}
223
224export declare type Packet = IConnectPacket |
225 IPublishPacket |
226 IConnackPacket |
227 ISubscribePacket |
228 ISubackPacket |
229 IUnsubscribePacket |
230 IUnsubackPacket |
231 IPubackPacket |
232 IPubcompPacket |
233 IPubrelPacket |
234 IPingreqPacket |
235 IPingrespPacket |
236 IDisconnectPacket |
237 IPubrecPacket |
238 IAuthPacket
239
240export interface Parser extends EventEmitter {
241 on(event: 'packet', callback: (packet: Packet) => void): this
242
243 on(event: 'error', callback: (error: any) => void): this
244
245 parse(buffer: Buffer, opts?: Object): number
246}
247
248export declare function parser(opts?: Object): Parser
249
250export declare function generate(packet: Packet, opts?: Object): Buffer
251
252export declare function writeToStream(object: Packet, stream: WritableStream, opts?: Object): boolean
253
254export declare namespace writeToStream {
255 let cacheNumbers: boolean
256}
257
\No newline at end of file