@seriousme/opifex 2.1.0 → 2.3.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.
- package/README.md +7 -6
- package/bin/mqtt.ts +1 -1
- package/client/client.ts +58 -7
- package/client/context.ts +2 -2
- package/client/deps.ts +3 -3
- package/client/mod.ts +2 -2
- package/connNext/connNext.ts +44 -0
- package/deno/README.md +1 -1
- package/deno/denoConnToNext.ts +104 -0
- package/deno/mod.ts +7 -0
- package/deno/tcpClient.ts +8 -24
- package/deno/tcpServer.test.ts +14 -103
- package/deno/tcpServer.ts +14 -6
- package/deno/tlsServer.test.ts +14 -58
- package/deno/tlsServer.ts +14 -6
- package/deno/wsServer.test.ts +15 -61
- package/deno/wsServer.ts +77 -35
- package/dev_utils/asyncStreamPair.ts +114 -0
- package/dev_utils/asyncStreamToNext.ts +171 -0
- package/dev_utils/connNextPair.test.ts +179 -0
- package/dev_utils/mockConn.ts +115 -29
- package/dev_utils/mockServer.ts +3 -4
- package/dev_utils/mod.ts +1 -2
- package/dev_utils/testClient.ts +64 -0
- package/dev_utils/webStreamToNext.ts +187 -0
- package/dist/bin/mqtt.js +1 -1
- package/dist/bin/mqtt.js.map +1 -1
- package/dist/client/client.d.ts +21 -3
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +43 -5
- package/dist/client/client.js.map +1 -1
- package/dist/client/context.d.ts +2 -2
- package/dist/client/context.d.ts.map +1 -1
- package/dist/client/deps.d.ts +1 -1
- package/dist/client/deps.d.ts.map +1 -1
- package/dist/client/mod.d.ts +1 -1
- package/dist/client/mod.d.ts.map +1 -1
- package/dist/connNext/connNext.d.ts +43 -0
- package/dist/connNext/connNext.d.ts.map +1 -0
- package/dist/connNext/connNext.js +2 -0
- package/dist/connNext/connNext.js.map +1 -0
- package/dist/examples/authHandler.test.js +2 -2
- package/dist/examples/authHandler.test.js.map +1 -1
- package/dist/examples/mqtt+mqtts.test.d.ts +2 -0
- package/dist/examples/mqtt+mqtts.test.d.ts.map +1 -0
- package/dist/examples/mqtt+mqtts.test.js +104 -0
- package/dist/examples/mqtt+mqtts.test.js.map +1 -0
- package/dist/examples/mqtt.test.js +2 -2
- package/dist/examples/mqtt.test.js.map +1 -1
- package/dist/examples/mqtts.test.js +2 -2
- package/dist/examples/mqtts.test.js.map +1 -1
- package/dist/mqttConn/mqttConn.d.ts +5 -6
- package/dist/mqttConn/mqttConn.d.ts.map +1 -1
- package/dist/mqttConn/mqttConn.js +2 -3
- package/dist/mqttConn/mqttConn.js.map +1 -1
- package/dist/mqttPacket/protocolLevels.d.ts +2 -0
- package/dist/mqttPacket/protocolLevels.d.ts.map +1 -1
- package/dist/node/nodeSocketToNext.d.ts +20 -0
- package/dist/node/nodeSocketToNext.d.ts.map +1 -0
- package/dist/node/nodeSocketToNext.js +161 -0
- package/dist/node/nodeSocketToNext.js.map +1 -0
- package/dist/node/tcpClient.d.ts +4 -6
- package/dist/node/tcpClient.d.ts.map +1 -1
- package/dist/node/tcpClient.js +6 -21
- package/dist/node/tcpClient.js.map +1 -1
- package/dist/node/tcpServer.d.ts +8 -4
- package/dist/node/tcpServer.d.ts.map +1 -1
- package/dist/node/tcpServer.js +14 -6
- package/dist/node/tcpServer.js.map +1 -1
- package/dist/node/tlsServer.d.ts +7 -3
- package/dist/node/tlsServer.d.ts.map +1 -1
- package/dist/node/tlsServer.js +13 -5
- package/dist/node/tlsServer.js.map +1 -1
- package/dist/server/context.d.ts +5 -5
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js +4 -1
- package/dist/server/context.js.map +1 -1
- package/dist/server/deps.d.ts +1 -1
- package/dist/server/deps.d.ts.map +1 -1
- package/dist/server/mod.d.ts +1 -1
- package/dist/server/mod.d.ts.map +1 -1
- package/dist/server/server.d.ts +3 -3
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +3 -3
- package/dist/utils/utils.d.ts +1 -2
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +3 -2
- package/dist/utils/utils.js.map +1 -1
- package/dist/web/webSocketToNext.d.ts +3 -0
- package/dist/web/webSocketToNext.d.ts.map +1 -0
- package/dist/web/webSocketToNext.js +160 -0
- package/dist/web/webSocketToNext.js.map +1 -0
- package/dist/web/wsClient.d.ts +8 -3
- package/dist/web/wsClient.d.ts.map +1 -1
- package/dist/web/wsClient.js +20 -6
- package/dist/web/wsClient.js.map +1 -1
- package/dist/web/wsClient.test.js +15 -0
- package/dist/web/wsClient.test.js.map +1 -1
- package/examples/README.md +21 -0
- package/examples/authHandler.test.ts +2 -2
- package/examples/mqtt+mqtts.test.ts +122 -0
- package/examples/mqtt.test.ts +2 -2
- package/examples/mqtts.test.ts +2 -2
- package/examples/webSocket.test.ts +10 -64
- package/examples/webSocketServer.ts +98 -0
- package/mqttConn/mqttConn.test.ts +6 -6
- package/mqttConn/mqttConn.ts +8 -9
- package/mqttPacket/protocolLevels.ts +2 -0
- package/node/README.md +1 -1
- package/node/mod.ts +7 -0
- package/node/{socket-node-stream.ts → nodeSocketToNext.ts} +78 -65
- package/node/tcpClient.ts +13 -27
- package/node/tcpServer.test.ts +12 -58
- package/node/tcpServer.ts +18 -8
- package/node/tlsServer.test.ts +11 -58
- package/node/tlsServer.ts +17 -7
- package/package.json +8 -2
- package/server/context.ts +9 -6
- package/server/deps.ts +1 -1
- package/server/mod.ts +1 -1
- package/server/server.ts +6 -6
- package/utils/utils.ts +3 -2
- package/web/webSocketToNext.ts +183 -0
- package/web/wsClient.test.ts +22 -0
- package/web/wsClient.ts +22 -9
- package/dist/node/wrapNodeSocket.d.ts +0 -12
- package/dist/node/wrapNodeSocket.d.ts.map +0 -1
- package/dist/node/wrapNodeSocket.js +0 -36
- package/dist/node/wrapNodeSocket.js.map +0 -1
- package/dist/socket/socket.d.ts +0 -40
- package/dist/socket/socket.d.ts.map +0 -1
- package/dist/socket/socket.js +0 -94
- package/dist/socket/socket.js.map +0 -1
- package/dist/web/webSocketStream.d.ts +0 -29
- package/dist/web/webSocketStream.d.ts.map +0 -1
- package/dist/web/webSocketStream.js +0 -69
- package/dist/web/webSocketStream.js.map +0 -1
- package/dist/web/wrapWebSocket.d.ts +0 -12
- package/dist/web/wrapWebSocket.d.ts.map +0 -1
- package/dist/web/wrapWebSocket.js +0 -41
- package/dist/web/wrapWebSocket.js.map +0 -1
- package/node/socket-node-stream.test.ts +0 -322
- package/node/wrapNodeSocket.ts +0 -44
- package/socket/socket.test.ts +0 -91
- package/socket/socket.ts +0 -124
- package/web/webSocketStream.ts +0 -97
- package/web/wrapWebSocket.ts +0 -52
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mqttConn.js","sourceRoot":"","sources":["../../mqttConn/mqttConn.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EACL,aAAa,EACb,MAAM,EACN,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mqttConn.js","sourceRoot":"","sources":["../../mqttConn/mqttConn.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ export declare const MQTTLevel: {
|
|
|
12
12
|
readonly v4: 4;
|
|
13
13
|
readonly v5: 5;
|
|
14
14
|
};
|
|
15
|
+
/** the MQTT protocol level: 3, 4, 5 or undefined */
|
|
15
16
|
export type ProtocolLevel = (typeof MQTTLevel)[keyof typeof MQTTLevel];
|
|
17
|
+
/** all MQTT protocol levels except 5 */
|
|
16
18
|
export type ProtocolLevelNoV5 = Exclude<ProtocolLevel, 5>;
|
|
17
19
|
//# sourceMappingURL=protocolLevels.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocolLevels.d.ts","sourceRoot":"","sources":["../../mqttPacket/protocolLevels.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,SAAS;aACpB,OAAO;aACP,EAAE,EAAE,CAAC;aACL,EAAE,EAAE,CAAC;aACL,EAAE,EAAE,CAAC;CACG,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"protocolLevels.d.ts","sourceRoot":"","sources":["../../mqttPacket/protocolLevels.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,SAAS;aACpB,OAAO;aACP,EAAE,EAAE,CAAC;aACL,EAAE,EAAE,CAAC;aACL,EAAE,EAAE,CAAC;CACG,CAAC;AAEX,oDAAoD;AACpD,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AACvE,wCAAwC;AACxC,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Socket } from "node:net";
|
|
2
|
+
import type { ConnAddr, ConnNext } from "../connNext/connNext.ts";
|
|
3
|
+
/** wrapper class */
|
|
4
|
+
export declare class NodeSocketConnNextWrapper {
|
|
5
|
+
private endPoint;
|
|
6
|
+
private closed;
|
|
7
|
+
private leftover;
|
|
8
|
+
private onClose;
|
|
9
|
+
private onError;
|
|
10
|
+
/** Create a new ConnNext object from a Webstream */
|
|
11
|
+
constructor(endPoint: Socket);
|
|
12
|
+
read(length?: number): Promise<Uint8Array | null>;
|
|
13
|
+
write(data: Uint8Array): Promise<void>;
|
|
14
|
+
close(): void;
|
|
15
|
+
[Symbol.asyncIterator](): AsyncGenerator<Uint8Array<ArrayBufferLike>, void, unknown>;
|
|
16
|
+
get localAddr(): ConnAddr | undefined;
|
|
17
|
+
get remoteAddr(): ConnAddr | undefined;
|
|
18
|
+
}
|
|
19
|
+
export declare function nodeSocketToNext(socket: Socket): ConnNext;
|
|
20
|
+
//# sourceMappingURL=nodeSocketToNext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeSocketToNext.d.ts","sourceRoot":"","sources":["../../node/nodeSocketToNext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAElE,oBAAoB;AACpB,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,QAAQ,CAAiC;IAGjD,OAAO,CAAC,OAAO,CAEb;IACF,OAAO,CAAC,OAAO,CAEb;IAEF,oDAAoD;IACpD,YAAY,QAAQ,EAAE,MAAM,EAI3B;IAEK,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA8EtD;IAED,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBrC;IAED,KAAK,SAiBJ;IAEM,CAAC,MAAM,CAAC,aAAa,CAAC,+DAQ5B;IAGD,IAAI,SAAS,IAAI,QAAQ,GAAG,SAAS,CASpC;IAED,IAAI,UAAU,IAAI,QAAQ,GAAG,SAAS,CASrC;CACF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAGzD"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/** wrapper class */
|
|
2
|
+
export class NodeSocketConnNextWrapper {
|
|
3
|
+
endPoint;
|
|
4
|
+
closed;
|
|
5
|
+
leftover = new Uint8Array(0);
|
|
6
|
+
// Store bound event listeners so we can cleanly remove them later
|
|
7
|
+
onClose = () => {
|
|
8
|
+
this.closed = true;
|
|
9
|
+
};
|
|
10
|
+
onError = () => {
|
|
11
|
+
this.closed = true;
|
|
12
|
+
};
|
|
13
|
+
/** Create a new ConnNext object from a Webstream */
|
|
14
|
+
constructor(endPoint) {
|
|
15
|
+
this.endPoint = endPoint;
|
|
16
|
+
this.closed = false;
|
|
17
|
+
this.endPoint;
|
|
18
|
+
}
|
|
19
|
+
async read(length) {
|
|
20
|
+
if (this.closed || (length ?? 0) < 0) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
// If no specific byte length is requested, read whatever is available
|
|
24
|
+
if (length === undefined) {
|
|
25
|
+
const chunk = this.endPoint.read();
|
|
26
|
+
return chunk
|
|
27
|
+
? Promise.resolve(new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength))
|
|
28
|
+
: Promise.resolve(null);
|
|
29
|
+
}
|
|
30
|
+
if (length === 0) {
|
|
31
|
+
return new Uint8Array(0);
|
|
32
|
+
}
|
|
33
|
+
const result = new Uint8Array(length);
|
|
34
|
+
let bytesAccumulated = 0;
|
|
35
|
+
// 1. Process leftover data from the previous read operation
|
|
36
|
+
if (this.leftover.byteLength > 0) {
|
|
37
|
+
const take = Math.min(this.leftover.byteLength, length);
|
|
38
|
+
result.set(this.leftover.subarray(0, take), bytesAccumulated);
|
|
39
|
+
bytesAccumulated += take;
|
|
40
|
+
this.leftover = this.leftover.subarray(take);
|
|
41
|
+
}
|
|
42
|
+
// 2. Loop until the requested number of bytes is accumulated
|
|
43
|
+
while (bytesAccumulated < length) {
|
|
44
|
+
if (this.closed || !this.endPoint.readable) {
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
const chunk = this.endPoint.read();
|
|
48
|
+
if (chunk === null) {
|
|
49
|
+
await new Promise((resolve) => {
|
|
50
|
+
const cleanup = () => {
|
|
51
|
+
this.endPoint.off("readable", onEvent);
|
|
52
|
+
this.endPoint.off("end", onEvent);
|
|
53
|
+
this.endPoint.off("error", onEvent);
|
|
54
|
+
this.endPoint.off("close", onEvent);
|
|
55
|
+
};
|
|
56
|
+
const onEvent = () => {
|
|
57
|
+
cleanup();
|
|
58
|
+
resolve();
|
|
59
|
+
};
|
|
60
|
+
this.endPoint.on("readable", onEvent);
|
|
61
|
+
this.endPoint.on("end", onEvent);
|
|
62
|
+
this.endPoint.on("error", onEvent);
|
|
63
|
+
this.endPoint.on("close", onEvent);
|
|
64
|
+
});
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// 3. Process the retrieved chunk
|
|
68
|
+
const chunkLength = chunk.byteLength;
|
|
69
|
+
const needed = length - bytesAccumulated;
|
|
70
|
+
if (chunkLength <= needed) {
|
|
71
|
+
result.set(chunk, bytesAccumulated);
|
|
72
|
+
bytesAccumulated += chunkLength;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
result.set(chunk.subarray(0, needed), bytesAccumulated);
|
|
76
|
+
bytesAccumulated += needed;
|
|
77
|
+
this.leftover = chunk.subarray(needed);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (bytesAccumulated < length) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
write(data) {
|
|
86
|
+
if (this.closed || !this.endPoint.writable) {
|
|
87
|
+
return Promise.reject(new Error("Stream is closed or not writable"));
|
|
88
|
+
}
|
|
89
|
+
return new Promise((resolve, reject) => {
|
|
90
|
+
// 1. Fire the write command and catch any immediate/async errors via the callback
|
|
91
|
+
const canWriteMore = this.endPoint.write(data, (err) => {
|
|
92
|
+
if (err) {
|
|
93
|
+
reject(err);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// 2. Determine when to resolve based on the return value of write()
|
|
97
|
+
if (canWriteMore) {
|
|
98
|
+
// If the buffer is not full, we can resolve immediately
|
|
99
|
+
resolve();
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// If backpressure is triggered, we must wait for the 'drain' event
|
|
103
|
+
this.endPoint.once("drain", () => {
|
|
104
|
+
resolve();
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
close() {
|
|
110
|
+
if (!this.closed) {
|
|
111
|
+
this.closed = true;
|
|
112
|
+
// Clean up permanent event listeners to prevent memory leaks
|
|
113
|
+
this.endPoint.off("close", this.onClose);
|
|
114
|
+
this.endPoint.off("error", this.onError);
|
|
115
|
+
// Safely destroy the stream first, then trigger the closer callback
|
|
116
|
+
try {
|
|
117
|
+
this.endPoint.destroy();
|
|
118
|
+
// deno-coverage-ignore
|
|
119
|
+
}
|
|
120
|
+
catch (_) {
|
|
121
|
+
// Suppress stream destruction errors
|
|
122
|
+
// deno-coverage-ignore
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async *[Symbol.asyncIterator]() {
|
|
127
|
+
while (true) {
|
|
128
|
+
const chunk = await this.read();
|
|
129
|
+
if (chunk === null) {
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
yield chunk;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Convert addresses to custom ConnAddr format
|
|
136
|
+
get localAddr() {
|
|
137
|
+
if (this.endPoint.localAddress) {
|
|
138
|
+
return {
|
|
139
|
+
transport: "tcp",
|
|
140
|
+
hostname: this.endPoint.localAddress,
|
|
141
|
+
port: this.endPoint.localPort ?? 0,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
get remoteAddr() {
|
|
147
|
+
if (this.endPoint.remoteAddress) {
|
|
148
|
+
return {
|
|
149
|
+
transport: "tcp",
|
|
150
|
+
hostname: this.endPoint.remoteAddress,
|
|
151
|
+
port: this.endPoint.remotePort ?? 0,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export function nodeSocketToNext(socket) {
|
|
158
|
+
const connNext = new NodeSocketConnNextWrapper(socket);
|
|
159
|
+
return connNext;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=nodeSocketToNext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeSocketToNext.js","sourceRoot":"","sources":["../../node/nodeSocketToNext.ts"],"names":[],"mappings":"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"}
|
package/dist/node/tcpClient.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Client } from "../client/client.ts";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ConnNext } from "../client/mod.ts";
|
|
3
3
|
/**
|
|
4
4
|
* Fetches data from a file and returns it as a string
|
|
5
5
|
*
|
|
@@ -21,7 +21,7 @@ export declare class TcpClient extends Client {
|
|
|
21
21
|
* @param hostname the name of the host to connect to
|
|
22
22
|
* @param port the port number
|
|
23
23
|
*/
|
|
24
|
-
protected connectMQTT(hostname: string, port?: number): Promise<
|
|
24
|
+
protected connectMQTT(hostname: string, port?: number): Promise<ConnNext>;
|
|
25
25
|
/**
|
|
26
26
|
* Connect using MQTT over TLS
|
|
27
27
|
* @param hostname the name of the host to connect to
|
|
@@ -29,10 +29,8 @@ export declare class TcpClient extends Client {
|
|
|
29
29
|
* @param caCerts the CA certificates to trust
|
|
30
30
|
* @param cert the clients certificate
|
|
31
31
|
* @param key the clients private key
|
|
32
|
-
* @returns a
|
|
32
|
+
* @returns a ConnNext object
|
|
33
33
|
*/
|
|
34
|
-
protected connectMQTTS(hostname: string, port?: number, ca?: string[], cert?: string, key?: string): Promise<
|
|
35
|
-
/** createConn is used by the base client class */
|
|
36
|
-
protected createConn(): Promise<SockConn>;
|
|
34
|
+
protected connectMQTTS(hostname: string, port?: number, ca?: string[], cert?: string, key?: string): Promise<ConnNext>;
|
|
37
35
|
}
|
|
38
36
|
//# sourceMappingURL=tcpClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcpClient.d.ts","sourceRoot":"","sources":["../../node/tcpClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAK7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tcpClient.d.ts","sourceRoot":"","sources":["../../node/tcpClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAK7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS7B;AAED;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,MAAM;IACnC;;;OAGG;IACH,UAAmB,WAAW,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,SAAO,GACV,OAAO,CAAC,QAAQ,CAAC,CAenB;IAED;;;;;;;;OAQG;IACH,UAAmB,YAAY,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,SAAO,EACX,EAAE,CAAC,EAAE,MAAM,EAAE,EACb,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,CAoBnB;CACF"}
|
package/dist/node/tcpClient.js
CHANGED
|
@@ -7,8 +7,8 @@ import { Client } from "../client/client.js";
|
|
|
7
7
|
import { logger } from "../client/deps.js";
|
|
8
8
|
import { readFile } from "node:fs/promises";
|
|
9
9
|
import { createConnection } from "node:net";
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
10
|
+
import { connect } from "node:tls";
|
|
11
|
+
import { nodeSocketToNext } from "./nodeSocketToNext.js";
|
|
12
12
|
/**
|
|
13
13
|
* Fetches data from a file and returns it as a string
|
|
14
14
|
*
|
|
@@ -44,7 +44,7 @@ export class TcpClient extends Client {
|
|
|
44
44
|
return new Promise((resolve, reject) => {
|
|
45
45
|
const socket = createConnection({ port, host: hostname }, () => {
|
|
46
46
|
logger.debug("Connected to server");
|
|
47
|
-
resolve(
|
|
47
|
+
resolve(nodeSocketToNext(socket));
|
|
48
48
|
});
|
|
49
49
|
socket.once("error", (err) => {
|
|
50
50
|
logger.debug("Connection failed: ", err);
|
|
@@ -59,7 +59,7 @@ export class TcpClient extends Client {
|
|
|
59
59
|
* @param caCerts the CA certificates to trust
|
|
60
60
|
* @param cert the clients certificate
|
|
61
61
|
* @param key the clients private key
|
|
62
|
-
* @returns a
|
|
62
|
+
* @returns a ConnNext object
|
|
63
63
|
*/
|
|
64
64
|
connectMQTTS(hostname, port = 8883, ca, cert, key) {
|
|
65
65
|
const opts = {
|
|
@@ -72,9 +72,9 @@ export class TcpClient extends Client {
|
|
|
72
72
|
};
|
|
73
73
|
logger.debug({ hostname, port, ca, cert });
|
|
74
74
|
return new Promise((resolve, reject) => {
|
|
75
|
-
const socket =
|
|
75
|
+
const socket = connect(opts, () => {
|
|
76
76
|
logger.debug("Connected to server");
|
|
77
|
-
resolve(
|
|
77
|
+
resolve(nodeSocketToNext(socket));
|
|
78
78
|
});
|
|
79
79
|
socket.once("error", (err) => {
|
|
80
80
|
logger.debug("Connection failed", err);
|
|
@@ -82,20 +82,5 @@ export class TcpClient extends Client {
|
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
|
-
/** createConn is used by the base client class */
|
|
86
|
-
createConn() {
|
|
87
|
-
const { protocol, hostname, port: portStr } = this.connectUrl;
|
|
88
|
-
const port = Number(portStr);
|
|
89
|
-
const caCerts = this.caCerts;
|
|
90
|
-
const cert = this.cert;
|
|
91
|
-
const key = this.key;
|
|
92
|
-
if (protocol === "mqtts:") {
|
|
93
|
-
return this.connectMQTTS(hostname, port, caCerts, cert, key);
|
|
94
|
-
}
|
|
95
|
-
if (protocol === "mqtt:") {
|
|
96
|
-
return this.connectMQTT(hostname, port);
|
|
97
|
-
}
|
|
98
|
-
throw new Error(`Unsupported protocol: ${protocol}`);
|
|
99
|
-
}
|
|
100
85
|
}
|
|
101
86
|
//# sourceMappingURL=tcpClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcpClient.js","sourceRoot":"","sources":["../../node/tcpClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"tcpClient.js","sourceRoot":"","sources":["../../node/tcpClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAA4B;IAE5B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7D,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,MAAM;IACnC;;;OAGG;IACgB,WAAW,CAC5B,QAAgB,EAChB,IAAI,GAAG,IAAI;QAEX,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,gBAAgB,CAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EACxB,GAAG,EAAE;gBACH,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACpC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,CAAC,CACF,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC3B,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;gBACzC,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACgB,YAAY,CAC7B,QAAgB,EAChB,IAAI,GAAG,IAAI,EACX,EAAa,EACb,IAAa,EACb,GAAY;QAEZ,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,QAAQ;YACd,IAAI;YACJ,EAAE;YACF,GAAG;YACH,IAAI;YACJ,UAAU,EAAE,SAAkB;SAC/B,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE;gBAChC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACpC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC3B,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/node/tcpServer.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MqttServerOptions } from "../server/mod.ts";
|
|
2
|
+
import { MqttServer } from "../server/mod.ts";
|
|
2
3
|
type ServerOptions = {
|
|
3
4
|
hostname?: string;
|
|
4
5
|
port?: number;
|
|
@@ -7,21 +8,24 @@ type ServerOptions = {
|
|
|
7
8
|
* TCP server that wraps a MqttServer, see the /examples folder
|
|
8
9
|
*/
|
|
9
10
|
export declare class TcpServer {
|
|
10
|
-
|
|
11
|
+
/** the MqttServer instance used by the server */
|
|
12
|
+
readonly mqttServer: MqttServer;
|
|
11
13
|
private server?;
|
|
12
14
|
private serverOptions;
|
|
13
15
|
/**
|
|
14
16
|
* Create a new TCP server
|
|
15
17
|
*/
|
|
16
|
-
constructor(serverOptions: ServerOptions, mqttOptions: MqttServerOptions);
|
|
18
|
+
constructor(serverOptions: ServerOptions, mqttOptions: MqttServerOptions | MqttServer);
|
|
17
19
|
/**
|
|
18
20
|
* Start listening
|
|
19
21
|
*/
|
|
20
22
|
start(): Promise<void>;
|
|
21
23
|
/**
|
|
22
|
-
* Stop listening
|
|
24
|
+
* Stop listening, pass {closeMqtt:false} if you do not want the mqttServer to close
|
|
23
25
|
*/
|
|
24
|
-
stop(
|
|
26
|
+
stop(opts?: {
|
|
27
|
+
closeMqtt: boolean;
|
|
28
|
+
}): Promise<void>;
|
|
25
29
|
/**
|
|
26
30
|
* The port number the server is listening on
|
|
27
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcpServer.d.ts","sourceRoot":"","sources":["../../node/tcpServer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tcpServer.d.ts","sourceRoot":"","sources":["../../node/tcpServer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,KAAK,aAAa,GAAG;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IACpB,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,aAAa,CAAC;IAEtB;;OAEG;IACH,YACE,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,iBAAiB,GAAG,UAAU,EAQ5C;IAED;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAY3B;IAED;;OAEG;IACG,IAAI,CAAC,IAAI;QAAK,SAAS;KAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpD;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAQ7B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAehC;CAEF"}
|
package/dist/node/tcpServer.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createServer } from "node:net";
|
|
2
2
|
import { MqttServer } from "../server/mod.js";
|
|
3
|
-
import {
|
|
3
|
+
import { nodeSocketToNext } from "./nodeSocketToNext.js";
|
|
4
4
|
/**
|
|
5
5
|
* TCP server that wraps a MqttServer, see the /examples folder
|
|
6
6
|
*/
|
|
7
7
|
export class TcpServer {
|
|
8
|
+
/** the MqttServer instance used by the server */
|
|
8
9
|
mqttServer;
|
|
9
10
|
server;
|
|
10
11
|
serverOptions;
|
|
@@ -12,14 +13,19 @@ export class TcpServer {
|
|
|
12
13
|
* Create a new TCP server
|
|
13
14
|
*/
|
|
14
15
|
constructor(serverOptions, mqttOptions) {
|
|
15
|
-
this.mqttServer = new MqttServer(mqttOptions);
|
|
16
16
|
this.serverOptions = serverOptions;
|
|
17
|
+
if (mqttOptions instanceof MqttServer) {
|
|
18
|
+
this.mqttServer = mqttOptions;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.mqttServer = new MqttServer(mqttOptions);
|
|
22
|
+
}
|
|
17
23
|
}
|
|
18
24
|
/**
|
|
19
25
|
* Start listening
|
|
20
26
|
*/
|
|
21
27
|
async start() {
|
|
22
|
-
this.server = createServer((sock) => this.mqttServer.serve(
|
|
28
|
+
this.server = createServer((sock) => this.mqttServer.serve(nodeSocketToNext(sock)));
|
|
23
29
|
const isListening = new Promise((resolve) => {
|
|
24
30
|
this.server?.on("listening", () => {
|
|
25
31
|
resolve(true);
|
|
@@ -30,10 +36,12 @@ export class TcpServer {
|
|
|
30
36
|
return;
|
|
31
37
|
}
|
|
32
38
|
/**
|
|
33
|
-
* Stop listening
|
|
39
|
+
* Stop listening, pass {closeMqtt:false} if you do not want the mqttServer to close
|
|
34
40
|
*/
|
|
35
|
-
stop() {
|
|
36
|
-
|
|
41
|
+
async stop(opts = { closeMqtt: true }) {
|
|
42
|
+
if (opts.closeMqtt) {
|
|
43
|
+
await this.mqttServer.close();
|
|
44
|
+
}
|
|
37
45
|
this.server?.close();
|
|
38
46
|
}
|
|
39
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcpServer.js","sourceRoot":"","sources":["../../node/tcpServer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tcpServer.js","sourceRoot":"","sources":["../../node/tcpServer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOzD;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB,iDAAiD;IACxC,UAAU,CAAa;IACxB,MAAM,CAAU;IAChB,aAAa,CAAC;IAEtB;;OAEG;IACH,YACE,aAA4B,EAC5B,WAA2C;QAE3C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,WAAW,YAAY,UAAU,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAClC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;gBAChC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,WAAW,CAAC;QAClB,OAAO;IACT,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;QACnC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACvC,6BAA6B;QAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,OAAO,EAAE,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;QAChC,4BAA4B;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7C,6BAA6B;QAC7B,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,CAAC;YAEvC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,IAAI,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,OAAO,GAAG,CAAC;YACxB,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;CAEF"}
|
package/dist/node/tlsServer.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MqttServerOptions } from "../server/mod.ts";
|
|
2
|
+
import { MqttServer } from "../server/mod.ts";
|
|
2
3
|
type ServerOptions = {
|
|
3
4
|
hostname?: string;
|
|
4
5
|
port?: number;
|
|
@@ -9,13 +10,14 @@ type ServerOptions = {
|
|
|
9
10
|
* TLS server that wraps a MqttServer, see the /examples folder
|
|
10
11
|
*/
|
|
11
12
|
export declare class TlsServer {
|
|
12
|
-
|
|
13
|
+
/** the MqttServer instance used by the server */
|
|
14
|
+
readonly mqttServer: MqttServer;
|
|
13
15
|
private server?;
|
|
14
16
|
private serverOptions;
|
|
15
17
|
/**
|
|
16
18
|
* Create a new TLS server
|
|
17
19
|
*/
|
|
18
|
-
constructor(serverOptions: ServerOptions, mqttOptions: MqttServerOptions);
|
|
20
|
+
constructor(serverOptions: ServerOptions, mqttOptions: MqttServerOptions | MqttServer);
|
|
19
21
|
/**
|
|
20
22
|
* Start listening
|
|
21
23
|
*/
|
|
@@ -23,7 +25,9 @@ export declare class TlsServer {
|
|
|
23
25
|
/**
|
|
24
26
|
* Stop listening
|
|
25
27
|
*/
|
|
26
|
-
stop(
|
|
28
|
+
stop(opts?: {
|
|
29
|
+
closeMqtt: boolean;
|
|
30
|
+
}): Promise<void>;
|
|
27
31
|
/**
|
|
28
32
|
* The port number the server is listening on
|
|
29
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tlsServer.d.ts","sourceRoot":"","sources":["../../node/tlsServer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tlsServer.d.ts","sourceRoot":"","sources":["../../node/tlsServer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,KAAK,aAAa,GAAG;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IACpB,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,aAAa,CAAC;IAEtB;;OAEG;IACH,YACE,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,iBAAiB,GAAG,UAAU,EAQ5C;IAED;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB3B;IAED;;OAEG;IACG,IAAI,CAAC,IAAI;QAAK,SAAS;KAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpD;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAM7B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAchC;CAEF"}
|
package/dist/node/tlsServer.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createServer } from "node:tls";
|
|
2
2
|
import { MqttServer } from "../server/mod.js";
|
|
3
|
-
import {
|
|
3
|
+
import { nodeSocketToNext } from "./nodeSocketToNext.js";
|
|
4
4
|
/**
|
|
5
5
|
* TLS server that wraps a MqttServer, see the /examples folder
|
|
6
6
|
*/
|
|
7
7
|
export class TlsServer {
|
|
8
|
+
/** the MqttServer instance used by the server */
|
|
8
9
|
mqttServer;
|
|
9
10
|
server;
|
|
10
11
|
serverOptions;
|
|
@@ -12,8 +13,13 @@ export class TlsServer {
|
|
|
12
13
|
* Create a new TLS server
|
|
13
14
|
*/
|
|
14
15
|
constructor(serverOptions, mqttOptions) {
|
|
15
|
-
this.mqttServer = new MqttServer(mqttOptions);
|
|
16
16
|
this.serverOptions = serverOptions;
|
|
17
|
+
if (mqttOptions instanceof MqttServer) {
|
|
18
|
+
this.mqttServer = mqttOptions;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.mqttServer = new MqttServer(mqttOptions);
|
|
22
|
+
}
|
|
17
23
|
}
|
|
18
24
|
/**
|
|
19
25
|
* Start listening
|
|
@@ -24,7 +30,7 @@ export class TlsServer {
|
|
|
24
30
|
key: this.serverOptions.key,
|
|
25
31
|
cert: this.serverOptions.cert,
|
|
26
32
|
};
|
|
27
|
-
this.server = createServer(tlsOptions, (sock) => this.mqttServer.serve(
|
|
33
|
+
this.server = createServer(tlsOptions, (sock) => this.mqttServer.serve(nodeSocketToNext(sock)));
|
|
28
34
|
const isListening = new Promise((resolve) => {
|
|
29
35
|
this.server?.on("listening", () => {
|
|
30
36
|
resolve(true);
|
|
@@ -37,8 +43,10 @@ export class TlsServer {
|
|
|
37
43
|
/**
|
|
38
44
|
* Stop listening
|
|
39
45
|
*/
|
|
40
|
-
stop() {
|
|
41
|
-
|
|
46
|
+
async stop(opts = { closeMqtt: true }) {
|
|
47
|
+
if (opts.closeMqtt) {
|
|
48
|
+
await this.mqttServer.close();
|
|
49
|
+
}
|
|
42
50
|
this.server?.close();
|
|
43
51
|
}
|
|
44
52
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tlsServer.js","sourceRoot":"","sources":["../../node/tlsServer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tlsServer.js","sourceRoot":"","sources":["../../node/tlsServer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AASzD;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB,iDAAiD;IACxC,UAAU,CAAa;IACxB,MAAM,CAAU;IAChB,aAAa,CAAC;IAEtB;;OAEG;IACH,YACE,aAA4B,EAC5B,WAA2C;QAE3C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,WAAW,YAAY,UAAU,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,UAAU,GAAG;YACjB,UAAU,EAAE,SAAkB;YAC9B,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG;YAC3B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;SAC9B,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,YAAY,CACxB,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACxD,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;gBAChC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,WAAW,CAAC;QAClB,OAAO;IACT,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;QACnC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,OAAO,EAAE,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7C,6BAA6B;QAC7B,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,CAAC;YACvC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,IAAI,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,OAAO,GAAG,CAAC;YACxB,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;CAEF"}
|
package/dist/server/context.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MqttConn, OutboundTopicAliasManager, Timer } from "./deps.ts";
|
|
2
|
-
import type { AnyPacket, ConnectPacket, ExtPublishPacket, PacketId, Persistence, ProtocolLevel, ReasonCode, ShareName,
|
|
2
|
+
import type { AnyPacket, ConnectPacket, ConnNext, ExtPublishPacket, PacketId, Persistence, ProtocolLevel, ReasonCode, ShareName, Topic } from "./deps.ts";
|
|
3
3
|
import type { Configuration } from "./config.ts";
|
|
4
4
|
/** Unique identifier for an MQTT client. */
|
|
5
5
|
export type ClientId = string;
|
|
@@ -34,10 +34,10 @@ export type SessionState = typeof SessionState[keyof typeof SessionState];
|
|
|
34
34
|
export type Handlers = {
|
|
35
35
|
/**
|
|
36
36
|
* Default preconnect handler that unconditionally permits all connections.
|
|
37
|
-
* @param
|
|
37
|
+
* @param conn - The connection context.
|
|
38
38
|
* @returns {boolean} false will close the connection
|
|
39
39
|
*/
|
|
40
|
-
preconnect?(conn:
|
|
40
|
+
preconnect?(conn: ConnNext): boolean | Promise<boolean>;
|
|
41
41
|
/**
|
|
42
42
|
* Hook to authenticate a client connection attempt.
|
|
43
43
|
* @param {Context} ctx - The connection context.
|
|
@@ -101,7 +101,7 @@ export declare class Context {
|
|
|
101
101
|
/** The MQTT protocol level version determined during the connection handshake. */
|
|
102
102
|
protocolLevel: ProtocolLevel;
|
|
103
103
|
/** The underlying raw socket connection. */
|
|
104
|
-
conn:
|
|
104
|
+
conn: ConnNext;
|
|
105
105
|
/** The wrapped MQTT connection wrapper handling frame reading and writing. */
|
|
106
106
|
mqttConn: MqttConn;
|
|
107
107
|
/** The persistence layer instance used by the server. */
|
|
@@ -154,7 +154,7 @@ export declare class Context {
|
|
|
154
154
|
*/
|
|
155
155
|
constructor(configuration: Configuration, // all settings
|
|
156
156
|
persistence: Persistence, // The server persistence layer implementation.
|
|
157
|
-
conn:
|
|
157
|
+
conn: ConnNext, // The underlying socket connection.
|
|
158
158
|
handlers: Handlers);
|
|
159
159
|
/**
|
|
160
160
|
* Configures and starts the preconnect timer to enforce connection deadlines.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../server/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAER,yBAAyB,EAGzB,KAAK,EACN,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,aAAa,EAGb,UAAU,EACV,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../server/context.ts"],"names":[],"mappings":"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"}
|
package/dist/server/context.js
CHANGED
|
@@ -419,7 +419,10 @@ export class Context {
|
|
|
419
419
|
// delayed deregistration, start the timer
|
|
420
420
|
this.sessionEndsTimer.reset();
|
|
421
421
|
}
|
|
422
|
-
|
|
422
|
+
const reason = (!this.mqttConn.reason || executewill)
|
|
423
|
+
? "normal disconnect"
|
|
424
|
+
: this.mqttConn.reason;
|
|
425
|
+
logger.info(`closing connection from ${this.clientId || this.mqttConn.remoteAddress} because of "${reason}"`);
|
|
423
426
|
if (!this.mqttConn.isClosed) {
|
|
424
427
|
this.mqttConn.close();
|
|
425
428
|
}
|