@seriousme/opifex 2.0.3 → 2.1.0

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.
Files changed (219) hide show
  1. package/client/ConnectionState.ts +1 -1
  2. package/client/client.ts +40 -9
  3. package/client/context.ts +11 -13
  4. package/client/deps.ts +8 -5
  5. package/client/handlers/handleConnack.ts +2 -2
  6. package/client/mod.ts +13 -2
  7. package/client/store/memoryStore.ts +11 -10
  8. package/client/store/store.ts +1 -1
  9. package/deno/tcpClient.ts +21 -8
  10. package/deno/tcpServer.ts +21 -4
  11. package/deno/tlsServer.ts +20 -4
  12. package/deno/wsServer.ts +23 -0
  13. package/dist/client/ConnectionState.d.ts +1 -1
  14. package/dist/client/ConnectionState.d.ts.map +1 -1
  15. package/dist/client/client.d.ts +38 -9
  16. package/dist/client/client.d.ts.map +1 -1
  17. package/dist/client/client.js +23 -0
  18. package/dist/client/client.js.map +1 -1
  19. package/dist/client/context.d.ts +8 -8
  20. package/dist/client/context.d.ts.map +1 -1
  21. package/dist/client/context.js.map +1 -1
  22. package/dist/client/deps.d.ts +3 -3
  23. package/dist/client/deps.d.ts.map +1 -1
  24. package/dist/client/deps.js.map +1 -1
  25. package/dist/client/handlers/handleConnack.d.ts.map +1 -1
  26. package/dist/client/handlers/handleConnack.js.map +1 -1
  27. package/dist/client/mod.d.ts +3 -2
  28. package/dist/client/mod.d.ts.map +1 -1
  29. package/dist/client/mod.js +1 -1
  30. package/dist/client/mod.js.map +1 -1
  31. package/dist/client/store/memoryStore.d.ts +3 -3
  32. package/dist/client/store/memoryStore.d.ts.map +1 -1
  33. package/dist/client/store/memoryStore.js +2 -2
  34. package/dist/client/store/memoryStore.js.map +1 -1
  35. package/dist/client/store/store.d.ts +1 -1
  36. package/dist/client/store/store.d.ts.map +1 -1
  37. package/dist/examples/authHandler.test.js +3 -3
  38. package/dist/examples/authHandler.test.js.map +1 -1
  39. package/dist/mqttConn/mqttConn.d.ts +2 -17
  40. package/dist/mqttConn/mqttConn.d.ts.map +1 -1
  41. package/dist/mqttConn/mqttConn.js +1 -1
  42. package/dist/mqttConn/mqttConn.js.map +1 -1
  43. package/dist/mqttPacket/AuthenticationResult.d.ts +4 -0
  44. package/dist/mqttPacket/AuthenticationResult.d.ts.map +1 -1
  45. package/dist/mqttPacket/AuthenticationResult.js.map +1 -1
  46. package/dist/mqttPacket/PacketType.d.ts +4 -0
  47. package/dist/mqttPacket/PacketType.d.ts.map +1 -1
  48. package/dist/mqttPacket/Properties.d.ts +2 -2
  49. package/dist/mqttPacket/Properties.d.ts.map +1 -1
  50. package/dist/mqttPacket/ReasonCode.d.ts +3 -5
  51. package/dist/mqttPacket/ReasonCode.d.ts.map +1 -1
  52. package/dist/mqttPacket/ReasonCode.js.map +1 -1
  53. package/dist/mqttPacket/RetainHandling.d.ts +4 -0
  54. package/dist/mqttPacket/RetainHandling.d.ts.map +1 -1
  55. package/dist/mqttPacket/auth.d.ts +6 -5
  56. package/dist/mqttPacket/auth.d.ts.map +1 -1
  57. package/dist/mqttPacket/auth.js +2 -2
  58. package/dist/mqttPacket/auth.js.map +1 -1
  59. package/dist/mqttPacket/codec.d.ts.map +1 -1
  60. package/dist/mqttPacket/codec.js.map +1 -1
  61. package/dist/mqttPacket/connack.d.ts +9 -7
  62. package/dist/mqttPacket/connack.d.ts.map +1 -1
  63. package/dist/mqttPacket/connack.js +2 -2
  64. package/dist/mqttPacket/connack.js.map +1 -1
  65. package/dist/mqttPacket/connect.d.ts +5 -4
  66. package/dist/mqttPacket/connect.d.ts.map +1 -1
  67. package/dist/mqttPacket/connect.js.map +1 -1
  68. package/dist/mqttPacket/decoder.d.ts +6 -4
  69. package/dist/mqttPacket/decoder.d.ts.map +1 -1
  70. package/dist/mqttPacket/decoder.js +1 -1
  71. package/dist/mqttPacket/decoder.js.map +1 -1
  72. package/dist/mqttPacket/disconnect.d.ts +7 -5
  73. package/dist/mqttPacket/disconnect.d.ts.map +1 -1
  74. package/dist/mqttPacket/disconnect.js +2 -2
  75. package/dist/mqttPacket/disconnect.js.map +1 -1
  76. package/dist/mqttPacket/encoder.d.ts +7 -5
  77. package/dist/mqttPacket/encoder.d.ts.map +1 -1
  78. package/dist/mqttPacket/encoder.js +1 -1
  79. package/dist/mqttPacket/encoder.js.map +1 -1
  80. package/dist/mqttPacket/mod.d.ts +1 -1
  81. package/dist/mqttPacket/mod.d.ts.map +1 -1
  82. package/dist/mqttPacket/pingreq.d.ts +4 -3
  83. package/dist/mqttPacket/pingreq.d.ts.map +1 -1
  84. package/dist/mqttPacket/pingreq.js.map +1 -1
  85. package/dist/mqttPacket/pingres.d.ts +4 -3
  86. package/dist/mqttPacket/pingres.d.ts.map +1 -1
  87. package/dist/mqttPacket/pingres.js.map +1 -1
  88. package/dist/mqttPacket/pubblishAcks.d.ts +7 -7
  89. package/dist/mqttPacket/pubblishAcks.d.ts.map +1 -1
  90. package/dist/mqttPacket/pubblishAcks.js +2 -2
  91. package/dist/mqttPacket/pubblishAcks.js.map +1 -1
  92. package/dist/mqttPacket/publish.d.ts +5 -4
  93. package/dist/mqttPacket/publish.d.ts.map +1 -1
  94. package/dist/mqttPacket/publish.js.map +1 -1
  95. package/dist/mqttPacket/suback.d.ts +7 -5
  96. package/dist/mqttPacket/suback.d.ts.map +1 -1
  97. package/dist/mqttPacket/suback.js +2 -2
  98. package/dist/mqttPacket/suback.js.map +1 -1
  99. package/dist/mqttPacket/subscribe.d.ts +7 -5
  100. package/dist/mqttPacket/subscribe.d.ts.map +1 -1
  101. package/dist/mqttPacket/subscribe.js.map +1 -1
  102. package/dist/mqttPacket/types.d.ts +1 -21
  103. package/dist/mqttPacket/types.d.ts.map +1 -1
  104. package/dist/mqttPacket/unsuback.d.ts +7 -5
  105. package/dist/mqttPacket/unsuback.d.ts.map +1 -1
  106. package/dist/mqttPacket/unsuback.js +1 -1
  107. package/dist/mqttPacket/unsuback.js.map +1 -1
  108. package/dist/mqttPacket/unsubscribe.d.ts +5 -4
  109. package/dist/mqttPacket/unsubscribe.d.ts.map +1 -1
  110. package/dist/mqttPacket/unsubscribe.js.map +1 -1
  111. package/dist/node/tcpClient.d.ts +21 -1
  112. package/dist/node/tcpClient.d.ts.map +1 -1
  113. package/dist/node/tcpClient.js +18 -4
  114. package/dist/node/tcpClient.js.map +1 -1
  115. package/dist/node/tcpServer.d.ts +18 -0
  116. package/dist/node/tcpServer.d.ts.map +1 -1
  117. package/dist/node/tcpServer.js +17 -2
  118. package/dist/node/tcpServer.js.map +1 -1
  119. package/dist/node/tlsServer.d.ts +18 -0
  120. package/dist/node/tlsServer.d.ts.map +1 -1
  121. package/dist/node/tlsServer.js +17 -2
  122. package/dist/node/tlsServer.js.map +1 -1
  123. package/dist/persistence/basicPersistence.d.ts +4 -4
  124. package/dist/persistence/basicPersistence.d.ts.map +1 -1
  125. package/dist/persistence/basicPersistence.js.map +1 -1
  126. package/dist/persistence/deps.d.ts +1 -1
  127. package/dist/persistence/deps.d.ts.map +1 -1
  128. package/dist/persistence/memory/memoryStorage.d.ts +3 -3
  129. package/dist/persistence/memory/memoryStorage.d.ts.map +1 -1
  130. package/dist/persistence/mod.d.ts +1 -1
  131. package/dist/persistence/mod.d.ts.map +1 -1
  132. package/dist/persistence/persistence.d.ts +3 -3
  133. package/dist/persistence/persistence.d.ts.map +1 -1
  134. package/dist/persistence/sqlite/sqliteStorage.d.ts +2 -2
  135. package/dist/persistence/sqlite/sqliteStorage.d.ts.map +1 -1
  136. package/dist/persistence/storage.d.ts +1 -1
  137. package/dist/persistence/storage.d.ts.map +1 -1
  138. package/dist/server/context.d.ts +4 -4
  139. package/dist/server/context.d.ts.map +1 -1
  140. package/dist/server/context.js.map +1 -1
  141. package/dist/server/deps.d.ts +2 -2
  142. package/dist/server/deps.d.ts.map +1 -1
  143. package/dist/server/deps.js.map +1 -1
  144. package/dist/server/handlers/completeConnect.d.ts +3 -2
  145. package/dist/server/handlers/completeConnect.d.ts.map +1 -1
  146. package/dist/server/handlers/completeConnect.js.map +1 -1
  147. package/dist/server/handlers/handlePublish.d.ts.map +1 -1
  148. package/dist/server/handlers/handlePublish.js.map +1 -1
  149. package/dist/server/handlers/handleSubscribe.d.ts.map +1 -1
  150. package/dist/server/handlers/handleSubscribe.js.map +1 -1
  151. package/dist/server/handlers/handleUnsubscribe.d.ts.map +1 -1
  152. package/dist/server/handlers/handleUnsubscribe.js.map +1 -1
  153. package/dist/server/mod.d.ts +1 -1
  154. package/dist/server/mod.d.ts.map +1 -1
  155. package/dist/server/server.d.ts +3 -3
  156. package/dist/server/server.d.ts.map +1 -1
  157. package/dist/server/server.js.map +1 -1
  158. package/dist/socket/socket.d.ts +4 -0
  159. package/dist/socket/socket.d.ts.map +1 -1
  160. package/dist/socket/socket.js.map +1 -1
  161. package/dist/utils/logger.d.ts +3 -3
  162. package/dist/utils/logger.d.ts.map +1 -1
  163. package/dist/utils/logger.js +1 -1
  164. package/dist/utils/logger.js.map +1 -1
  165. package/dist/web/wsClient.d.ts +7 -0
  166. package/dist/web/wsClient.d.ts.map +1 -1
  167. package/dist/web/wsClient.js +12 -1
  168. package/dist/web/wsClient.js.map +1 -1
  169. package/examples/authHandler.test.ts +3 -3
  170. package/mqttConn/mqttConn.ts +2 -18
  171. package/mqttPacket/AuthenticationResult.ts +6 -0
  172. package/mqttPacket/PacketType.ts +5 -0
  173. package/mqttPacket/Properties.ts +2 -2
  174. package/mqttPacket/ReasonCode.ts +6 -8
  175. package/mqttPacket/RetainHandling.ts +5 -0
  176. package/mqttPacket/auth.ts +7 -7
  177. package/mqttPacket/codec.ts +3 -2
  178. package/mqttPacket/connack.ts +11 -10
  179. package/mqttPacket/connect.ts +4 -11
  180. package/mqttPacket/decoder.ts +9 -11
  181. package/mqttPacket/disconnect.ts +7 -7
  182. package/mqttPacket/encoder.test.ts +2 -2
  183. package/mqttPacket/encoder.ts +9 -7
  184. package/mqttPacket/mod.ts +0 -4
  185. package/mqttPacket/pingreq.ts +3 -3
  186. package/mqttPacket/pingres.ts +3 -3
  187. package/mqttPacket/pubblishAcks.ts +9 -9
  188. package/mqttPacket/publish.ts +4 -11
  189. package/mqttPacket/publishAcks.test.ts +3 -3
  190. package/mqttPacket/suback.ts +8 -13
  191. package/mqttPacket/subscribe.ts +6 -12
  192. package/mqttPacket/types.ts +1 -26
  193. package/mqttPacket/unsuback.ts +8 -7
  194. package/mqttPacket/unsubscribe.ts +4 -10
  195. package/node/tcpClient.ts +21 -6
  196. package/node/tcpServer.ts +23 -6
  197. package/node/tlsServer.ts +23 -7
  198. package/package.json +1 -1
  199. package/persistence/basicPersistence.ts +5 -5
  200. package/persistence/deps.ts +1 -1
  201. package/persistence/memory/memoryStorage.ts +3 -3
  202. package/persistence/mod.ts +1 -1
  203. package/persistence/persistence.testing.ts +4 -4
  204. package/persistence/persistence.ts +3 -3
  205. package/persistence/sqlite/sqliteStorage.ts +2 -2
  206. package/persistence/storage.ts +1 -1
  207. package/server/context.ts +5 -5
  208. package/server/deps.ts +1 -2
  209. package/server/handlers/completeConnect.ts +2 -2
  210. package/server/handlers/handlePublish.ts +3 -4
  211. package/server/handlers/handleSubscribe.ts +3 -4
  212. package/server/handlers/handleUnsubscribe.ts +2 -2
  213. package/server/mod.ts +1 -1
  214. package/server/server.ts +3 -3
  215. package/socket/socket.ts +4 -0
  216. package/tools/benchmarks/receiver.ts +2 -2
  217. package/tools/benchmarks/sender.ts +2 -2
  218. package/utils/logger.ts +3 -3
  219. package/web/wsClient.ts +13 -1
@@ -20,5 +20,5 @@ export const ConnectionState = {
20
20
  /**
21
21
  * @description Type representing the possible values of ConnectionState
22
22
  */
23
- export type TConnectionState =
23
+ export type ConnectionState =
24
24
  (typeof ConnectionState)[keyof typeof ConnectionState];
package/client/client.ts CHANGED
@@ -8,19 +8,20 @@ import {
8
8
  } from "./deps.ts";
9
9
 
10
10
  import type {
11
+ AuthenticationResult,
11
12
  ConnectPacket,
12
- IStore,
13
+ ProtocolLevel,
13
14
  PublishPacket,
14
15
  SockConn,
16
+ Store,
15
17
  SubscribePacket,
16
- TAuthenticationResult,
17
18
  } from "./deps.ts";
18
19
 
19
20
  import { noop } from "../utils/mod.ts";
20
21
 
21
22
  import { Context } from "./context.ts";
22
23
  import type { AuthenticatedResult } from "./context.ts";
23
- import type { TConnectionState } from "./ConnectionState.ts";
24
+ import type { ConnectionState } from "./ConnectionState.ts";
24
25
  import { BufferedAsyncIterable } from "./deps.ts";
25
26
 
26
27
  /**
@@ -32,18 +33,25 @@ function generateClientId(prefix: string): string {
32
33
  return `${prefix}-${Math.random().toString().slice(-10)}`;
33
34
  }
34
35
 
35
- type ConnectOptions = Omit<
36
+ /** All properties of a connect packet, except for type and protocol name */
37
+ export type ConnectOptions = Omit<
36
38
  ConnectPacket,
37
39
  "type" | "protocolName"
38
40
  >;
39
41
 
40
42
  /** ConnectParameters define how to connect */
41
43
  export type ConnectParameters = {
44
+ /** the URL to connect to */
42
45
  url?: URL | undefined;
46
+ /** any CA Certs to trust */
43
47
  caCerts?: string[] | undefined;
48
+ /** the clients certificate */
44
49
  cert?: string | undefined;
50
+ /** the clients private key*/
45
51
  key?: string | undefined;
52
+ /** number of retries before stopping connection attempts */
46
53
  numberOfRetries?: number | undefined;
54
+ /** connect options */
47
55
  options?: ConnectOptions | undefined;
48
56
  };
49
57
 
@@ -80,7 +88,7 @@ function backOffSleep(random: boolean, attempt: number): Promise<void> {
80
88
  /** the default MQTT URL to connect to */
81
89
  export const DEFAULT_URL = "mqtt://localhost:1883/";
82
90
  /** the default protocol level to connect with*/
83
- export const DEFAULT_PROTOCOLLEVEL = MQTTLevel.v4;
91
+ export const DEFAULT_PROTOCOLLEVEL = MQTTLevel.v4 as ProtocolLevel;
84
92
  /** the default keepalive time */
85
93
  export const DEFAULT_KEEPALIVE = 60; // 60 seconds
86
94
  const DEFAULT_RETRIES = 3; // on first connect
@@ -119,21 +127,36 @@ export class Client {
119
127
  reasonString: "No authentication method configured",
120
128
  };
121
129
  };
130
+ /** callback for errors */
122
131
  public onError: (err: Error) => void = noop;
132
+ /** callback for publish packets */
123
133
  public onPacket: (pkt: PublishPacket) => void | Promise<void> = noop;
134
+ /** callback once connected */
124
135
  public onConnected: () => void = noop;
136
+ /** callback once disconnected */
125
137
  public onDisconnected: () => void = noop;
138
+ /** callback when reconnecting */
126
139
  public onReconnecting: () => void = noop;
127
140
 
141
+ /** clientId prefix used when automatically generating a client Id */
128
142
  protected clientIdPrefix = CLIENTID_PREFIX;
143
+ /** number of times to retry connect */
129
144
  protected numberOfRetries = DEFAULT_RETRIES;
145
+ /** the URL to connect to */
130
146
  protected connectUrl: URL = new URL(DEFAULT_URL);
147
+ /** the keepAlive value in number of seconds */
131
148
  protected keepAlive = DEFAULT_KEEPALIVE;
149
+ /** the requested protocol level */
132
150
  protected protocolLevel = DEFAULT_PROTOCOLLEVEL;
151
+ /** try auto reconnect if connection is lost */
133
152
  protected autoReconnect = true;
153
+ /** any CA Certs to trust */
134
154
  protected caCerts?: string[] | undefined;
155
+ /** the clients certificate */
135
156
  protected cert?: string | undefined;
157
+ /** the clients private key*/
136
158
  protected key?: string | undefined;
159
+ /** the MQTT clientId */
137
160
  protected clientId: string;
138
161
  private ctx: Context;
139
162
  private connectPacket?: ConnectPacket;
@@ -141,17 +164,25 @@ export class Client {
141
164
  /**
142
165
  * Creates a new MQTT client instance
143
166
  */
144
- constructor(store?: IStore) {
167
+ constructor(store?: Store) {
145
168
  const cStore = store ? store : new MemoryStore();
146
169
  this.ctx = new Context(cStore, this);
147
170
  this.clientId = generateClientId(this.clientIdPrefix);
148
171
  this.numberOfRetries = DEFAULT_RETRIES;
149
172
  }
150
173
 
151
- public get connectionState(): TConnectionState {
174
+ /**
175
+ * Current connection state
176
+ * @returns connectionState as ConnectionState
177
+ */
178
+ public get connectionState(): ConnectionState {
152
179
  return this.ctx.connectionState;
153
180
  }
154
181
 
182
+ /**
183
+ * Current configured connection URL
184
+ * @returns URL object
185
+ */
155
186
  public get url(): URL {
156
187
  return this.connectUrl;
157
188
  }
@@ -222,7 +253,7 @@ export class Client {
222
253
  * @param params - Connection parameters
223
254
  * @returns Promise resolving to authentication result
224
255
  */
225
- connect(params: ConnectParameters = {}): Promise<TAuthenticationResult> {
256
+ connect(params: ConnectParameters = {}): Promise<AuthenticationResult> {
226
257
  this.connectUrl = params?.url || this.connectUrl;
227
258
  this.numberOfRetries = params.numberOfRetries || this.numberOfRetries;
228
259
  this.caCerts = params?.caCerts;
@@ -240,7 +271,7 @@ export class Client {
240
271
  type: PacketType.connect,
241
272
  ...options,
242
273
  };
243
- const deferred = new Deferred<TAuthenticationResult>();
274
+ const deferred = new Deferred<AuthenticationResult>();
244
275
  this.ctx.unresolvedConnect = deferred;
245
276
  this.doConnect();
246
277
  return deferred.promise;
package/client/context.ts CHANGED
@@ -8,22 +8,20 @@ import {
8
8
  } from "./deps.ts";
9
9
  import type {
10
10
  AnyPacket,
11
+ AuthenticationResult,
11
12
  ConnectPacket,
12
- IStore,
13
13
  PacketId,
14
14
  ProtocolLevel,
15
15
  PublishPacket,
16
+ ReasonCode,
16
17
  ReturnCodes,
17
18
  SockConn,
19
+ Store,
18
20
  SubscribePacket,
19
- TAuthenticationResult,
20
- TPacketType,
21
- TReasonCode,
22
21
  UnsubscribePacket,
23
22
  } from "./deps.ts";
24
23
 
25
24
  import { handlePacket } from "./handlers/handlePacket.ts";
26
- import type { TConnectionState } from "./ConnectionState.ts";
27
25
  import { ConnectionState } from "./ConnectionState.ts";
28
26
  import type { Client } from "./client.ts";
29
27
  import { assert } from "../utils/assert.ts";
@@ -31,7 +29,7 @@ import { assert } from "../utils/assert.ts";
31
29
  /**
32
30
  * packets not allowed during authentication
33
31
  */
34
- function blockedDuringAuthentication(pktType: TPacketType) {
32
+ function blockedDuringAuthentication(pktType: PacketType) {
35
33
  return (
36
34
  pktType === PacketType.publish ||
37
35
  pktType === PacketType.subscribe ||
@@ -41,24 +39,24 @@ function blockedDuringAuthentication(pktType: TPacketType) {
41
39
 
42
40
  /** Possible results from authHandler */
43
41
  export type AuthenticatedResult = {
44
- reasonCode: TReasonCode;
42
+ reasonCode: ReasonCode;
45
43
  reasonString?: string;
46
44
  authData?: Uint8Array;
47
45
  };
48
46
 
49
47
  export class Context {
50
48
  mqttConn?: MqttConn;
51
- #connectionState: TConnectionState;
49
+ #connectionState: ConnectionState;
52
50
  protocolLevel: ProtocolLevel;
53
51
  pingTimer?: Timer;
54
- unresolvedConnect?: Deferred<TAuthenticationResult>;
52
+ unresolvedConnect?: Deferred<AuthenticationResult>;
55
53
  unresolvedPublish: Map<PacketId, Deferred<void>>;
56
54
  unresolvedSubscribe: Map<PacketId, Deferred<ReturnCodes>>;
57
55
  unresolvedUnSubscribe: Map<PacketId, Deferred<void>>;
58
- store: IStore;
56
+ store: Store;
59
57
  #client: Client;
60
58
 
61
- constructor(store: IStore, client: Client) {
59
+ constructor(store: Store, client: Client) {
62
60
  this.#client = client;
63
61
  this.store = store;
64
62
  this.#connectionState = ConnectionState.offline;
@@ -68,11 +66,11 @@ export class Context {
68
66
  this.unresolvedUnSubscribe = new Map();
69
67
  }
70
68
 
71
- get connectionState(): TConnectionState {
69
+ get connectionState(): ConnectionState {
72
70
  return this.#connectionState;
73
71
  }
74
72
 
75
- set connectionState(state: TConnectionState) {
73
+ set connectionState(state: ConnectionState) {
76
74
  this.#connectionState = state;
77
75
  switch (state) {
78
76
  case "connected":
package/client/deps.ts CHANGED
@@ -17,10 +17,7 @@ export type {
17
17
  ReturnCodes,
18
18
  SubackPacket,
19
19
  SubscribePacket,
20
- TAuthenticationResult,
21
20
  Topic,
22
- TPacketType,
23
- TReasonCode,
24
21
  UnsubackPacket,
25
22
  UnsubscribePacket,
26
23
  } from "../mqttPacket/mod.ts";
@@ -38,8 +35,14 @@ export {
38
35
  } from "../mqttPacket/mod.ts";
39
36
 
40
37
  export { MqttConn } from "../mqttConn/mqttConn.ts";
41
- export type { SockConn } from "../socket/socket.ts";
38
+ export type {
39
+ NetAddr,
40
+ SockAddr,
41
+ SockConn,
42
+ UnixAddr,
43
+ VsockAddr,
44
+ } from "../socket/socket.ts";
42
45
  export { Timer } from "../timer/timer.ts";
43
46
  export { BufferedAsyncIterable, Deferred, logger } from "../utils/mod.ts";
44
47
  export { MemoryStore } from "./store/memoryStore.ts";
45
- export type { IStore } from "./store/store.ts";
48
+ export type { Store } from "./store/store.ts";
@@ -1,7 +1,7 @@
1
1
  import type { Context } from "../context.ts";
2
2
  import { ConnectionState } from "../ConnectionState.ts";
3
3
  import { AuthenticationResultByNumber, ReasonCodeByNumber } from "../deps.ts";
4
- import type { ConnackPacket, TReasonCode } from "../deps.ts";
4
+ import type { ConnackPacket, ReasonCode } from "../deps.ts";
5
5
 
6
6
  /**
7
7
  * Handles the CONNACK packet received from the MQTT broker
@@ -38,7 +38,7 @@ export async function handleConnack(ctx: Context, packet: ConnackPacket) {
38
38
  }
39
39
 
40
40
  const errMsg = packet.protocolLevel === 5
41
- ? ReasonCodeByNumber[result as TReasonCode]
41
+ ? ReasonCodeByNumber[result as ReasonCode]
42
42
  : AuthenticationResultByNumber[result];
43
43
 
44
44
  const err = new Error(
package/client/mod.ts CHANGED
@@ -8,10 +8,21 @@ export {
8
8
  DEFAULT_PROTOCOLLEVEL,
9
9
  DEFAULT_URL,
10
10
  } from "./client.ts";
11
- export { MQTTLevel, ReasonCode } from "./deps.ts";
12
- export type { ProtocolLevel, QoS } from "./deps.ts";
11
+ export { logger, MQTTLevel, ReasonCode } from "./deps.ts";
12
+ export type {
13
+ AuthenticationResult,
14
+ NetAddr,
15
+ ProtocolLevel,
16
+ QoS,
17
+ SockAddr,
18
+ SockConn,
19
+ UnixAddr,
20
+ VsockAddr,
21
+ } from "./deps.ts";
13
22
  export type {
14
23
  ConnectParameters,
15
24
  PublishParameters,
16
25
  SubscribeParameters,
17
26
  } from "./client.ts";
27
+
28
+ export type { ConnectionState } from "./ConnectionState.ts";
@@ -5,20 +5,21 @@
5
5
  import { assert } from "./deps.ts";
6
6
  import type { PacketId } from "./deps.ts";
7
7
 
8
- import {
9
- type IStore,
10
- MAX_PACKET_ID,
11
- type PacketStore,
12
- type PendingAckOutgoing,
13
- type pendingIncoming,
14
- type PendingOutgoing,
15
- type PendingOutgoingPackets,
8
+ import { MAX_PACKET_ID } from "./store.ts";
9
+
10
+ import type {
11
+ PacketStore,
12
+ PendingAckOutgoing,
13
+ pendingIncoming,
14
+ PendingOutgoing,
15
+ PendingOutgoingPackets,
16
+ Store,
16
17
  } from "./store.ts";
17
18
 
18
19
  /**
19
- * In-memory implementation of the IStore interface for managing MQTT packet storage
20
+ * In-memory implementation of the Store interface for managing MQTT packet storage
20
21
  */
21
- export class MemoryStore implements IStore {
22
+ export class MemoryStore implements Store {
22
23
  /** Current packet ID counter */
23
24
  private packetId: PacketId;
24
25
 
@@ -46,7 +46,7 @@ export type PendingOutgoingPackets = PendingAckOutgoing | PendingOutgoing;
46
46
  /**
47
47
  * Interface defining the storage requirements for MQTT packet state management
48
48
  */
49
- export interface IStore {
49
+ export interface Store {
50
50
  /** Store for incoming packets pending processing */
51
51
  pendingIncoming: PacketStore<pendingIncoming>;
52
52
 
package/deno/tcpClient.ts CHANGED
@@ -3,16 +3,16 @@
3
3
  * it extends the platform agnostic Client class
4
4
  * @module
5
5
  */
6
- import { Client } from "../client/client.ts";
7
- import { logger } from "../client/deps.ts";
8
- import type { SockConn } from "../client/deps.ts";
6
+
7
+ import { Client, logger } from "../client/mod.ts";
8
+ import type { SockConn } from "../client/mod.ts";
9
9
 
10
10
  /**
11
- * @function getFileData
11
+ * Fetches data from a file and returns it as a string
12
+ *
12
13
  * @param filename
13
14
  * @returns Promise
14
15
  *
15
- * Fetches data from a file and returns it as a string
16
16
  * @example
17
17
  * const data = await getFileData("data.txt");
18
18
  */
@@ -29,12 +29,16 @@ export async function getFileData(
29
29
  return data;
30
30
  }
31
31
 
32
- /*
33
- * TCPclient extends the Client class to provide TCP based clients
32
+ /**
33
+ * TcpClient extends the Client class to provide TCP based clients
34
34
  * it is used by the MQTTclient to connect to the broker
35
35
  * see mqtt.ts in the /bin folder as an example
36
36
  */
37
37
  export class TcpClient extends Client {
38
+ /** Connect using MQTT over TCP
39
+ * @param hostname the name of the host to connect to
40
+ * @param port the port number
41
+ */
38
42
  protected async connectMQTT(
39
43
  hostname: string,
40
44
  port = 1883,
@@ -43,6 +47,15 @@ export class TcpClient extends Client {
43
47
  return await Deno.connect({ hostname, port });
44
48
  }
45
49
 
50
+ /**
51
+ * Connect using MQTT over TLS
52
+ * @param hostname the name of the host to connect to
53
+ * @param port the port number
54
+ * @param caCerts the CA certificates to trust
55
+ * @param cert the clients certificate
56
+ * @param key the clients private key
57
+ * @returns a Deno.TlsConn object
58
+ */
46
59
  protected async connectMQTTS(
47
60
  hostname: string,
48
61
  port = 8883,
@@ -61,7 +74,7 @@ export class TcpClient extends Client {
61
74
  return await Deno.connectTls(connectOpts);
62
75
  }
63
76
 
64
- // overload createConn from the base client class
77
+ /** createConn is used by the base client class */
65
78
  protected override createConn(): Promise<SockConn> {
66
79
  const { protocol, hostname, port: portStr } = this.connectUrl;
67
80
  const port = Number(portStr);
package/deno/tcpServer.ts CHANGED
@@ -7,12 +7,16 @@
7
7
  import { MqttServer } from "../server/mod.ts";
8
8
  import type { MqttServerOptions } from "../server/mod.ts";
9
9
 
10
- /*
11
- * TCP server that wraps a MqttServer, see demoServer.ts in the /bin folder
10
+ /**
11
+ * TCP server that wraps a MqttServer, see the /examples folder
12
12
  */
13
13
  export class TcpServer {
14
14
  private listener: Deno.Listener<Deno.Conn>;
15
15
  private mqttServer: MqttServer;
16
+
17
+ /**
18
+ * Create a new TCP server
19
+ */
16
20
  constructor(
17
21
  serverOptions: Deno.TcpListenOptions,
18
22
  mqttOptions: MqttServerOptions,
@@ -21,16 +25,26 @@ export class TcpServer {
21
25
  this.mqttServer = new MqttServer(mqttOptions);
22
26
  }
23
27
 
24
- async start() {
28
+ /**
29
+ * Start listening
30
+ */
31
+ async start(): Promise<void> {
25
32
  for await (const conn of this.listener) {
26
33
  this.mqttServer.serve(conn);
27
34
  }
28
35
  }
29
- stop() {
36
+
37
+ /**
38
+ * Stop listening
39
+ */
40
+ stop(): void {
30
41
  this.mqttServer.close(true);
31
42
  this.listener.close();
32
43
  }
33
44
 
45
+ /**
46
+ * The port number the server is listening on
47
+ */
34
48
  get port(): number | undefined {
35
49
  // deno-coverage-ignore-start
36
50
  if (this.listener.addr.transport === "tcp") {
@@ -40,6 +54,9 @@ export class TcpServer {
40
54
  // deno-coverage-ignore-stop
41
55
  }
42
56
 
57
+ /**
58
+ * The address the server is listening on
59
+ */
43
60
  get address(): string | undefined {
44
61
  // deno-coverage-ignore-start
45
62
  if (this.listener.addr.transport === "tcp") {
package/deno/tlsServer.ts CHANGED
@@ -7,12 +7,15 @@
7
7
  import { MqttServer } from "../server/mod.ts";
8
8
  import type { MqttServerOptions } from "../server/mod.ts";
9
9
 
10
- /*
11
- * TCP server that wraps a MqttServer, see demoServer.ts in the /bin folder
10
+ /**
11
+ * TLS server that wraps a MqttServer, see the /examples folder
12
12
  */
13
13
  export class TlsServer {
14
14
  private listener: Deno.TlsListener;
15
15
  private mqttServer: MqttServer;
16
+ /**
17
+ * Create a new TLS server
18
+ */
16
19
  constructor(
17
20
  serverOptions: Deno.ListenTlsOptions & Deno.TlsCertifiedKeyPem,
18
21
  mqttOptions: MqttServerOptions,
@@ -21,20 +24,33 @@ export class TlsServer {
21
24
  this.mqttServer = new MqttServer(mqttOptions);
22
25
  }
23
26
 
24
- async start() {
27
+ /**
28
+ * Start listening
29
+ */
30
+ async start(): Promise<void> {
25
31
  for await (const conn of this.listener) {
26
32
  this.mqttServer.serve(conn);
27
33
  }
28
34
  }
29
- stop() {
35
+
36
+ /**
37
+ * Stop listening
38
+ */
39
+ stop(): void {
30
40
  this.mqttServer.close();
31
41
  this.listener.close();
32
42
  }
43
+ /**
44
+ * The port number the server is listening on
45
+ */
33
46
  // deno-coverage-ignore-start
34
47
  get port(): number | undefined {
35
48
  return this.listener.addr.port;
36
49
  }
37
50
 
51
+ /**
52
+ * The address the server is listening on
53
+ */
38
54
  get address(): string | undefined {
39
55
  return this.listener.addr.hostname;
40
56
  }
package/deno/wsServer.ts CHANGED
@@ -1,9 +1,16 @@
1
+ /*
2
+ * this a Deno specific implementation of a WebSocket server
3
+ * @module
4
+ */
1
5
  import { MqttServer } from "../server/mod.ts";
2
6
  import type { MqttServerOptions } from "../server/mod.ts";
3
7
  import { logger } from "../utils/logger.ts";
4
8
  import { wrapWebSocket } from "../web/wrapWebSocket.ts";
5
9
  import type { HostnamePort } from "../web/wrapWebSocket.ts";
6
10
 
11
+ /**
12
+ * WebSocket server that wraps a MqttServer, see the /examples folder
13
+ */
7
14
  export class WsServer {
8
15
  private server?: Deno.HttpServer;
9
16
  private mqttServer: MqttServer;
@@ -12,6 +19,9 @@ export class WsServer {
12
19
  hostname?: string;
13
20
  };
14
21
 
22
+ /**
23
+ * Create a new WebSocket server
24
+ */
15
25
  constructor(
16
26
  serverOptions: Deno.ServeOptions & { port: number; hostname?: string },
17
27
  mqttOptions: MqttServerOptions,
@@ -19,6 +29,7 @@ export class WsServer {
19
29
  this.listenOptions = serverOptions;
20
30
  this.mqttServer = new MqttServer(mqttOptions);
21
31
  }
32
+
22
33
  private async handleWsClient(socket: WebSocket, remoteAddr: HostnamePort) {
23
34
  const conn = await wrapWebSocket(socket, remoteAddr);
24
35
  logger.debug("created conn");
@@ -26,6 +37,9 @@ export class WsServer {
26
37
  logger.debug("serving mqtt");
27
38
  }
28
39
 
40
+ /**
41
+ * Start listening
42
+ */
29
43
  async start(): Promise<void> {
30
44
  this.server = Deno.serve(this.listenOptions, (req, info) => {
31
45
  const { hostname, port } = info.remoteAddr;
@@ -46,6 +60,9 @@ export class WsServer {
46
60
  await this.server.finished;
47
61
  }
48
62
 
63
+ /**
64
+ * Stop listening
65
+ */
49
66
  stop(): void {
50
67
  this.mqttServer.close(true);
51
68
  if (this.server) {
@@ -53,6 +70,9 @@ export class WsServer {
53
70
  }
54
71
  }
55
72
 
73
+ /**
74
+ * The port number the server is listening on
75
+ */
56
76
  get port(): number | undefined {
57
77
  // deno-coverage-ignore-start
58
78
  if (this.server?.addr.transport === "tcp") {
@@ -62,6 +82,9 @@ export class WsServer {
62
82
  // deno-coverage-ignore-stop
63
83
  }
64
84
 
85
+ /**
86
+ * The address the server is listening on
87
+ */
65
88
  get address(): string | undefined {
66
89
  // deno-coverage-ignore-start
67
90
  if (this.server?.addr.transport === "tcp") {
@@ -19,5 +19,5 @@ export declare const ConnectionState: {
19
19
  /**
20
20
  * @description Type representing the possible values of ConnectionState
21
21
  */
22
- export type TConnectionState = (typeof ConnectionState)[keyof typeof ConnectionState];
22
+ export type ConnectionState = (typeof ConnectionState)[keyof typeof ConnectionState];
23
23
  //# sourceMappingURL=ConnectionState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionState.d.ts","sourceRoot":"","sources":["../../client/ConnectionState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,eAAe;IAC1B,sDAAsD;aACtD,OAAO,EAAE,SAAS;IAClB,4DAA4D;aAC5D,UAAU,EAAE,YAAY;IACxB,sCAAsC;aACtC,SAAS,EAAE,WAAW;IACtB,gDAAgD;aAChD,aAAa,EAAE,eAAe;IAC9B,mCAAmC;aACnC,YAAY,EAAE,cAAc;IAC5B,2CAA2C;aAC3C,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"ConnectionState.d.ts","sourceRoot":"","sources":["../../client/ConnectionState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,eAAe;IAC1B,sDAAsD;aACtD,OAAO,EAAE,SAAS;IAClB,4DAA4D;aAC5D,UAAU,EAAE,YAAY;IACxB,sCAAsC;aACtC,SAAS,EAAE,WAAW;IACtB,gDAAgD;aAChD,aAAa,EAAE,eAAe;IAC9B,mCAAmC;aACnC,YAAY,EAAE,cAAc;IAC5B,2CAA2C;aAC3C,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC"}