9b2c3b795500d40d65c8fa1540cd58d5db9980eb375be46f7efe90f0e70da979630c34ad9c513af0e30f4193349d323e95e662dc4abd229539d45ffa3a6732 5.6 KB

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