@seriousme/opifex 1.11.0 → 1.11.2
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 +5 -5
- package/benchmarks/receiver.ts +35 -0
- package/benchmarks/sender.ts +32 -0
- package/benchmarks/utils.ts +9 -0
- package/client/client.ts +6 -10
- package/client/context.ts +3 -9
- package/client/deps.ts +1 -2
- package/client/handlers/handlePublish.ts +2 -2
- package/client/handlers/handlePubrel.ts +1 -1
- package/deno/tcpServer.test.ts +0 -1
- package/dev_utils/dummyConn.ts +5 -5
- package/dev_utils/mod.ts +1 -0
- package/dev_utils/timers.ts +51 -0
- package/dist/client/client.d.ts +2 -6
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +6 -9
- package/dist/client/client.js.map +1 -1
- package/dist/client/context.d.ts +2 -3
- package/dist/client/context.d.ts.map +1 -1
- package/dist/client/context.js +4 -8
- package/dist/client/context.js.map +1 -1
- package/dist/client/deps.d.ts +1 -2
- package/dist/client/deps.d.ts.map +1 -1
- package/dist/client/deps.js +1 -2
- package/dist/client/deps.js.map +1 -1
- package/dist/client/handlers/handlePublish.js +2 -2
- package/dist/client/handlers/handlePublish.js.map +1 -1
- package/dist/client/handlers/handlePubrel.js +1 -1
- package/dist/client/handlers/handlePubrel.js.map +1 -1
- package/dist/mqttConn/mqttConn.d.ts +2 -7
- package/dist/mqttConn/mqttConn.d.ts.map +1 -1
- package/dist/mqttConn/mqttConn.js +18 -11
- package/dist/mqttConn/mqttConn.js.map +1 -1
- package/dist/server/handlers/handlePublish.d.ts.map +1 -1
- package/dist/server/handlers/handlePublish.js +17 -2
- package/dist/server/handlers/handlePublish.js.map +1 -1
- package/dist/server/handlers/handlePubrel.d.ts.map +1 -1
- package/dist/server/handlers/handlePubrel.js +6 -10
- package/dist/server/handlers/handlePubrel.js.map +1 -1
- package/dist/utils/{asyncQueue.d.ts → BufferedAsyncIterable.d.ts} +8 -8
- package/dist/utils/BufferedAsyncIterable.d.ts.map +1 -0
- package/dist/utils/BufferedAsyncIterable.js +70 -0
- package/dist/utils/BufferedAsyncIterable.js.map +1 -0
- package/dist/utils/mod.d.ts +1 -2
- package/dist/utils/mod.d.ts.map +1 -1
- package/dist/utils/mod.js +1 -2
- package/dist/utils/mod.js.map +1 -1
- package/dist/utils/queue.d.ts +43 -0
- package/dist/utils/queue.d.ts.map +1 -0
- package/dist/utils/queue.js +63 -0
- package/dist/utils/queue.js.map +1 -0
- package/examples/tcpServer.test.ts +0 -1
- package/mqttConn/mqttConn.test.ts +5 -4
- package/mqttConn/mqttConn.ts +19 -15
- package/node/tcpServer.test.ts +0 -1
- package/package.json +1 -1
- package/server/handlers/handlePublish.ts +18 -2
- package/server/handlers/handlePubrel.ts +6 -10
- package/server/test/handleConnect.test.ts +11 -8
- package/utils/BufferedAsyncIterable.ts +76 -0
- package/utils/mod.ts +1 -2
- package/utils/queue.ts +66 -0
- package/dist/utils/asyncQueue.d.ts.map +0 -1
- package/dist/utils/asyncQueue.js +0 -65
- package/dist/utils/asyncQueue.js.map +0 -1
- package/dist/utils/nextTick.d.ts +0 -17
- package/dist/utils/nextTick.d.ts.map +0 -1
- package/dist/utils/nextTick.js +0 -19
- package/dist/utils/nextTick.js.map +0 -1
- package/utils/asyncQueue.ts +0 -71
- package/utils/nextTick.ts +0 -18
package/README.md
CHANGED
|
@@ -20,12 +20,12 @@ The following MQTT versions are supported:
|
|
|
20
20
|
| Server | ❌ | ✅ | ❌ |
|
|
21
21
|
|
|
22
22
|
Client and server currently only have memory based persistence, but one can
|
|
23
|
-
provide its own persistence. (see [
|
|
23
|
+
provide its own persistence. (see [Architecture](#architecture))
|
|
24
24
|
|
|
25
25
|
## Usage
|
|
26
26
|
|
|
27
|
-
The
|
|
28
|
-
|
|
27
|
+
The easiest way to use this project is to just use the demo server (demoServer)
|
|
28
|
+
and/or the demo client (mqtt).
|
|
29
29
|
|
|
30
30
|
- [NodeJS/Bun](node/README.md)
|
|
31
31
|
- [Deno](deno/README.md)
|
|
@@ -35,7 +35,7 @@ can be done with CLI options then the next step is to clone the demo server
|
|
|
35
35
|
and/or the client scripts and modify them to your liking.
|
|
36
36
|
|
|
37
37
|
If you want to port the platform independent client and server libs to other
|
|
38
|
-
types of
|
|
38
|
+
types of transports (e.g. Unix sockets or websocketstream) then it's recommended
|
|
39
39
|
to clone and modify the platform specific code in `/node` or `/deno` as well.
|
|
40
40
|
|
|
41
41
|
If you want to port the platform independent client and server libs to another
|
|
@@ -65,7 +65,7 @@ A more elaborate example including client and server can be found in the
|
|
|
65
65
|
## Architecture
|
|
66
66
|
|
|
67
67
|
1. The basis of Opifex is the MQTT packet module
|
|
68
|
-
([mqttPacket/mod.ts](mqttPacket/mod.ts)) which contains
|
|
68
|
+
([mqttPacket/mod.ts](mqttPacket/mod.ts)) which contains all the logic to
|
|
69
69
|
encode and decode packets.
|
|
70
70
|
|
|
71
71
|
2. On top of mqttPacket sits the MQTT connection module
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { exit } from "node:process";
|
|
2
|
+
import { importClientClass } from "./utils.ts";
|
|
3
|
+
|
|
4
|
+
const { TcpClient } = await importClientClass();
|
|
5
|
+
const client = new TcpClient();
|
|
6
|
+
client.onError = (err) => {
|
|
7
|
+
console.log("client error", err);
|
|
8
|
+
exit(1);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
await client.connect({
|
|
12
|
+
url: new URL("mqtt://localhost:1883"),
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
await client.subscribe({ subscriptions: [{ topicFilter: "test", qos: 0 }] });
|
|
16
|
+
|
|
17
|
+
let counter = 0;
|
|
18
|
+
const interval = 5000;
|
|
19
|
+
|
|
20
|
+
function count() {
|
|
21
|
+
console.log("received/s", (counter / interval) * 1000);
|
|
22
|
+
counter = 0;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
setInterval(count, interval);
|
|
26
|
+
|
|
27
|
+
// // Consume using a callback
|
|
28
|
+
// client.onPacket = async (packet) => {
|
|
29
|
+
// counter++;
|
|
30
|
+
// };
|
|
31
|
+
|
|
32
|
+
// Consume using an AsyncIterator
|
|
33
|
+
for await (const _ of client.messages()) {
|
|
34
|
+
counter++;
|
|
35
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { exit } from "node:process";
|
|
2
|
+
import { runAsap } from "../dev_utils/timers.ts";
|
|
3
|
+
import { importClientClass } from "./utils.ts";
|
|
4
|
+
|
|
5
|
+
const { TcpClient } = await importClientClass();
|
|
6
|
+
const client = new TcpClient();
|
|
7
|
+
client.onError = (err) => {
|
|
8
|
+
console.log("client error", err);
|
|
9
|
+
exit(1);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
await client.connect({
|
|
13
|
+
url: new URL("mqtt://localhost:1883"),
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const payload = new TextEncoder().encode("payload");
|
|
17
|
+
let sent = 0;
|
|
18
|
+
const interval = 5000;
|
|
19
|
+
|
|
20
|
+
const loop = () => {
|
|
21
|
+
sent++;
|
|
22
|
+
client.publish({ topic: "test", payload })
|
|
23
|
+
.then(() => runAsap(loop));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
function count() {
|
|
27
|
+
console.log("sent/s", (sent / interval) * 1000);
|
|
28
|
+
sent = 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
setInterval(count, interval);
|
|
32
|
+
loop();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export async function importClientClass() {
|
|
2
|
+
// @ts-ignore: the Deno global variable is not defined in @types/node,
|
|
3
|
+
// therefore we need to ignore this error because this file
|
|
4
|
+
// is meant to be used in both environments.
|
|
5
|
+
const isDeno = typeof Deno !== "undefined";
|
|
6
|
+
return isDeno
|
|
7
|
+
? (await import("../deno/tcpClient.ts"))
|
|
8
|
+
: (await import("../node/tcpClient.ts"));
|
|
9
|
+
}
|
package/client/client.ts
CHANGED
|
@@ -19,6 +19,7 @@ import { noop } from "../utils/utils.ts";
|
|
|
19
19
|
import { Context } from "./context.ts";
|
|
20
20
|
import type { TConnectionState } from "./ConnectionState.ts";
|
|
21
21
|
import { assert } from "../utils/assert.ts";
|
|
22
|
+
import { BufferedAsyncIterable } from "./deps.ts";
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* Generates a random client ID with the given prefix
|
|
@@ -94,6 +95,7 @@ const CLIENTID_PREFIX = "opifex"; // on first connect
|
|
|
94
95
|
*/
|
|
95
96
|
export class Client {
|
|
96
97
|
public onError: (err: Error) => void = noop;
|
|
98
|
+
public onPacket: (pkt: PublishPacket) => void | Promise<void> = noop;
|
|
97
99
|
public onConnected: () => void = noop;
|
|
98
100
|
public onDisconnected: () => void = noop;
|
|
99
101
|
public onReconnecting: () => void = noop;
|
|
@@ -275,15 +277,9 @@ export class Client {
|
|
|
275
277
|
* Gets an async iterator for received messages
|
|
276
278
|
* @returns AsyncGenerator yielding received publish packets
|
|
277
279
|
*/
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Closes the message stream
|
|
284
|
-
* @param reason - Optional reason for closing
|
|
285
|
-
*/
|
|
286
|
-
closeMessages(reason?: string) {
|
|
287
|
-
this.ctx.incoming.close(reason);
|
|
280
|
+
messages(): AsyncIterable<PublishPacket> {
|
|
281
|
+
const bufferedIterable = new BufferedAsyncIterable<PublishPacket>();
|
|
282
|
+
this.onPacket = bufferedIterable.push;
|
|
283
|
+
return bufferedIterable;
|
|
288
284
|
}
|
|
289
285
|
}
|
package/client/context.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
AsyncQueue,
|
|
3
2
|
Deferred,
|
|
4
3
|
logger,
|
|
5
4
|
MqttConn,
|
|
6
5
|
MQTTLevel,
|
|
7
|
-
nextTick,
|
|
8
6
|
PacketType,
|
|
9
7
|
Timer,
|
|
10
8
|
} from "./deps.ts";
|
|
@@ -38,7 +36,6 @@ export class Context {
|
|
|
38
36
|
unresolvedSubscribe: Map<PacketId, Deferred<ReturnCodes>>;
|
|
39
37
|
unresolvedUnSubscribe: Map<PacketId, Deferred<void>>;
|
|
40
38
|
store: MemoryStore;
|
|
41
|
-
incoming: AsyncQueue<PublishPacket>;
|
|
42
39
|
#client: Client;
|
|
43
40
|
|
|
44
41
|
constructor(store: MemoryStore, client: Client) {
|
|
@@ -46,7 +43,6 @@ export class Context {
|
|
|
46
43
|
this.store = store;
|
|
47
44
|
this.#connectionState = ConnectionState.offline;
|
|
48
45
|
this.protocolLevel = MQTTLevel.unknown;
|
|
49
|
-
this.incoming = new AsyncQueue();
|
|
50
46
|
this.unresolvedPublish = new Map();
|
|
51
47
|
this.unresolvedSubscribe = new Map();
|
|
52
48
|
this.unresolvedUnSubscribe = new Map();
|
|
@@ -108,7 +104,6 @@ export class Context {
|
|
|
108
104
|
) {
|
|
109
105
|
await this.mqttConn?.send(packet);
|
|
110
106
|
this.pingTimer?.reset();
|
|
111
|
-
await nextTick(); // Yield to allow other tasks to run
|
|
112
107
|
return;
|
|
113
108
|
}
|
|
114
109
|
logger.debug("not connected");
|
|
@@ -158,8 +153,8 @@ export class Context {
|
|
|
158
153
|
this.pingTimer?.clear();
|
|
159
154
|
}
|
|
160
155
|
|
|
161
|
-
receivePublish(packet: PublishPacket) {
|
|
162
|
-
this.
|
|
156
|
+
async receivePublish(packet: PublishPacket) {
|
|
157
|
+
await this.#client.onPacket(packet);
|
|
163
158
|
}
|
|
164
159
|
|
|
165
160
|
async publish(packet: PublishPacket): Promise<void> {
|
|
@@ -167,8 +162,7 @@ export class Context {
|
|
|
167
162
|
if (qos === 0) {
|
|
168
163
|
packet.id = 0;
|
|
169
164
|
await this.send(packet);
|
|
170
|
-
|
|
171
|
-
return Promise.resolve();
|
|
165
|
+
return;
|
|
172
166
|
}
|
|
173
167
|
packet.id = this.store.nextId();
|
|
174
168
|
this.store.pendingOutgoing.set(packet.id, packet);
|
package/client/deps.ts
CHANGED
|
@@ -36,6 +36,5 @@ export {
|
|
|
36
36
|
export { MqttConn } from "../mqttConn/mqttConn.ts";
|
|
37
37
|
export type { SockConn } from "../socket/socket.ts";
|
|
38
38
|
export { Timer } from "../timer/timer.ts";
|
|
39
|
-
export {
|
|
39
|
+
export { BufferedAsyncIterable, Deferred, logger } from "../utils/mod.ts";
|
|
40
40
|
export { MemoryStore } from "./store/memoryStore.ts";
|
|
41
|
-
export { nextTick } from "../utils/mod.ts";
|
|
@@ -11,14 +11,14 @@ import type { PublishPacket } from "../deps.ts";
|
|
|
11
11
|
export async function handlePublish(ctx: Context, packet: PublishPacket) {
|
|
12
12
|
const qos = packet.qos || 0;
|
|
13
13
|
if (qos === 0) {
|
|
14
|
-
ctx.receivePublish(packet);
|
|
14
|
+
await ctx.receivePublish(packet);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
if (packet.id !== undefined) {
|
|
19
19
|
// qos 1
|
|
20
20
|
if (qos === 1) {
|
|
21
|
-
ctx.receivePublish(packet);
|
|
21
|
+
await ctx.receivePublish(packet);
|
|
22
22
|
await ctx.send({
|
|
23
23
|
type: PacketType.puback,
|
|
24
24
|
protocolLevel: ctx.protocolLevel,
|
|
@@ -26,7 +26,7 @@ export async function handlePubrel(
|
|
|
26
26
|
if (ctx.store.pendingIncoming.has(id)) {
|
|
27
27
|
const storedPacket = ctx.store.pendingIncoming.get(id);
|
|
28
28
|
if (storedPacket) {
|
|
29
|
-
ctx.receivePublish(storedPacket);
|
|
29
|
+
await ctx.receivePublish(storedPacket);
|
|
30
30
|
ctx.store.pendingIncoming.delete(id);
|
|
31
31
|
await ctx.send({
|
|
32
32
|
type: PacketType.pubcomp,
|
package/deno/tcpServer.test.ts
CHANGED
package/dev_utils/dummyConn.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BufferedAsyncIterable } from "../utils/mod.ts";
|
|
2
2
|
|
|
3
3
|
class Uint8Writer implements WritableStreamDefaultWriter {
|
|
4
4
|
private buff: Uint8Array;
|
|
@@ -24,7 +24,7 @@ class Uint8Writer implements WritableStreamDefaultWriter {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
class Uint8QueuedWriter implements WritableStreamDefaultWriter {
|
|
27
|
-
private queue:
|
|
27
|
+
private queue: BufferedAsyncIterable<Uint8Array>;
|
|
28
28
|
closed = Promise.resolve(undefined);
|
|
29
29
|
close = () => Promise.resolve();
|
|
30
30
|
abort = () => Promise.resolve();
|
|
@@ -33,7 +33,7 @@ class Uint8QueuedWriter implements WritableStreamDefaultWriter {
|
|
|
33
33
|
desiredSize = 20;
|
|
34
34
|
|
|
35
35
|
constructor(
|
|
36
|
-
queue:
|
|
36
|
+
queue: BufferedAsyncIterable<Uint8Array>,
|
|
37
37
|
) {
|
|
38
38
|
this.queue = queue;
|
|
39
39
|
}
|
|
@@ -96,8 +96,8 @@ export function makeDummySockConn(
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
export function makeDummyQueueSockConn(
|
|
99
|
-
r:
|
|
100
|
-
w:
|
|
99
|
+
r: BufferedAsyncIterable<Uint8Array>,
|
|
100
|
+
w: BufferedAsyncIterable<Uint8Array>,
|
|
101
101
|
close = () => {},
|
|
102
102
|
) {
|
|
103
103
|
const readable = ReadableStreamFrom(r);
|
package/dev_utils/mod.ts
CHANGED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file contains timer functions that support all major JS runtimes
|
|
3
|
+
* (Deno, Bun, Node.js).
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// This will also work on Deno:
|
|
7
|
+
// https://docs.deno.com/api/node/timers/#namespace_setimmediate
|
|
8
|
+
import { setImmediate } from "node:timers";
|
|
9
|
+
|
|
10
|
+
let taskCounter = 0;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* This function runs a function asynchronously but as soon as possible.
|
|
14
|
+
* In most cases, this means as an additional microtask within the same
|
|
15
|
+
* tick of the event loop via `queueMicrotask()`. However, in order not to
|
|
16
|
+
* block the event loop in case of task loops, every 64 invocations we use
|
|
17
|
+
* `setImmediate()` instead of `queueMicrotask()`.
|
|
18
|
+
*
|
|
19
|
+
* For some reason I do not understand, Deno does not tolerate anything more
|
|
20
|
+
* than 64 subsequent invocations of `queueMicrotask()`. Setting this limit to
|
|
21
|
+
* 100, for example, leads to a constant decrease in actual tick/s. Neither
|
|
22
|
+
* Node nor Bun exhibit the same behavior.
|
|
23
|
+
*
|
|
24
|
+
* See https://nodejs.org/en/learn/asynchronous-work/understanding-setimmediate
|
|
25
|
+
* See https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API/Microtask_guide
|
|
26
|
+
*/
|
|
27
|
+
export const runAsap = (fn: () => void): void => {
|
|
28
|
+
if (taskCounter === 64) {
|
|
29
|
+
taskCounter = 0;
|
|
30
|
+
setImmediate(fn);
|
|
31
|
+
} else {
|
|
32
|
+
taskCounter++;
|
|
33
|
+
queueMicrotask(fn);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Returns a promise that resolves asynchronously but as soon as possible.
|
|
39
|
+
* Internally, this function uses `runAsap()` to schedule the resolution.
|
|
40
|
+
* See above for more details on the scheduling strategy.
|
|
41
|
+
*/
|
|
42
|
+
export const resolveAsap = (): Promise<void> => {
|
|
43
|
+
return new Promise((resolve) => runAsap(resolve));
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Returns a promise that resolves in the next tick of the event loop.
|
|
48
|
+
*/
|
|
49
|
+
export const resolveNextTick = (): Promise<void> => {
|
|
50
|
+
return new Promise((resolve) => setImmediate(resolve));
|
|
51
|
+
};
|
package/dist/client/client.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export declare const DEFAULT_KEEPALIVE = 60;
|
|
|
31
31
|
*/
|
|
32
32
|
export declare class Client {
|
|
33
33
|
onError: (err: Error) => void;
|
|
34
|
+
onPacket: (pkt: PublishPacket) => void | Promise<void>;
|
|
34
35
|
onConnected: () => void;
|
|
35
36
|
onDisconnected: () => void;
|
|
36
37
|
onReconnecting: () => void;
|
|
@@ -94,12 +95,7 @@ export declare class Client {
|
|
|
94
95
|
* Gets an async iterator for received messages
|
|
95
96
|
* @returns AsyncGenerator yielding received publish packets
|
|
96
97
|
*/
|
|
97
|
-
messages():
|
|
98
|
-
/**
|
|
99
|
-
* Closes the message stream
|
|
100
|
-
* @param reason - Optional reason for closing
|
|
101
|
-
*/
|
|
102
|
-
closeMessages(reason?: string): void;
|
|
98
|
+
messages(): AsyncIterable<PublishPacket>;
|
|
103
99
|
}
|
|
104
100
|
export {};
|
|
105
101
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,QAAQ,EACR,eAAe,EACf,qBAAqB,EACtB,MAAM,WAAW,CAAC;AAKnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,QAAQ,EACR,eAAe,EACf,qBAAqB,EACtB,MAAM,WAAW,CAAC;AAKnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAa7D,KAAK,cAAc,GAAG,IAAI,CACxB,aAAa,EACb,MAAM,GAAG,cAAc,CACxB,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,aAAa,EACb,MAAM,GAAG,IAAI,GAAG,eAAe,CAChC,CAAC;AACF,6DAA6D;AAC7D,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,eAAe,EACf,MAAM,GAAG,IAAI,GAAG,eAAe,CAChC,CAAC;AAqBF,yCAAyC;AACzC,eAAO,MAAM,WAAW,2BAA2B,CAAC;AACpD,gDAAgD;AAChD,eAAO,MAAM,qBAAqB,mCAAe,CAAC;AAClD,iCAAiC;AACjC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAIpC;;;;;;;;GAQG;AACH,qBAAa,MAAM;IACV,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAQ;IACrC,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAQ;IAC9D,WAAW,EAAE,MAAM,IAAI,CAAQ;IAC/B,cAAc,EAAE,MAAM,IAAI,CAAQ;IAClC,cAAc,EAAE,MAAM,IAAI,CAAQ;IAEzC,SAAS,CAAC,cAAc,SAAmB;IAC3C,SAAS,CAAC,eAAe,SAAmB;IAC5C,SAAS,CAAC,GAAG,EAAE,GAAG,CAAwB;IAC1C,SAAS,CAAC,SAAS,SAAqB;IACxC,SAAS,CAAC,aAAa,oCAAyB;IAChD,SAAS,CAAC,aAAa,UAAQ;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAW;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAS;IACtB,OAAO,CAAC,GAAG,CAAC,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,aAAa,CAAC,CAAgB;IAEtC;;OAEG;;IAOH,IAAI,eAAe,IAAI,gBAAgB,CAEtC;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAMpB;;;OAGG;YACW,SAAS;IAsDvB;;;;OAIG;IACH,OAAO,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwBvE;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D;;;OAGG;IACH,QAAQ,IAAI,aAAa,CAAC,aAAa,CAAC;CAKzC"}
|
package/dist/client/client.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Deferred, logger, MemoryStore, MQTTLevel, PacketType, } from "./deps.js
|
|
|
2
2
|
import { noop } from "../utils/utils.js";
|
|
3
3
|
import { Context } from "./context.js";
|
|
4
4
|
import { assert } from "../utils/assert.js";
|
|
5
|
+
import { BufferedAsyncIterable } from "./deps.js";
|
|
5
6
|
/**
|
|
6
7
|
* Generates a random client ID with the given prefix
|
|
7
8
|
* @param prefix - The prefix to use for the client ID
|
|
@@ -45,6 +46,7 @@ const CLIENTID_PREFIX = "opifex"; // on first connect
|
|
|
45
46
|
*/
|
|
46
47
|
export class Client {
|
|
47
48
|
onError = noop;
|
|
49
|
+
onPacket = noop;
|
|
48
50
|
onConnected = noop;
|
|
49
51
|
onDisconnected = noop;
|
|
50
52
|
onReconnecting = noop;
|
|
@@ -195,15 +197,10 @@ export class Client {
|
|
|
195
197
|
* Gets an async iterator for received messages
|
|
196
198
|
* @returns AsyncGenerator yielding received publish packets
|
|
197
199
|
*/
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
* Closes the message stream
|
|
203
|
-
* @param reason - Optional reason for closing
|
|
204
|
-
*/
|
|
205
|
-
closeMessages(reason) {
|
|
206
|
-
this.ctx.incoming.close(reason);
|
|
200
|
+
messages() {
|
|
201
|
+
const bufferedIterable = new BufferedAsyncIterable();
|
|
202
|
+
this.onPacket = bufferedIterable.push;
|
|
203
|
+
return bufferedIterable;
|
|
207
204
|
}
|
|
208
205
|
}
|
|
209
206
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,UAAU,GACX,MAAM,WAAW,CAAC;AAUnB,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client/context.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Deferred, MqttConn, Timer } from "./deps.ts";
|
|
2
2
|
import type { AnyPacket, ConnectPacket, MemoryStore, PacketId, ProtocolLevel, PublishPacket, ReturnCodes, SockConn, SubscribePacket, TAuthenticationResult, UnsubscribePacket } from "./deps.ts";
|
|
3
3
|
import type { TConnectionState } from "./ConnectionState.ts";
|
|
4
4
|
import type { Client } from "./client.ts";
|
|
@@ -12,7 +12,6 @@ export declare class Context {
|
|
|
12
12
|
unresolvedSubscribe: Map<PacketId, Deferred<ReturnCodes>>;
|
|
13
13
|
unresolvedUnSubscribe: Map<PacketId, Deferred<void>>;
|
|
14
14
|
store: MemoryStore;
|
|
15
|
-
incoming: AsyncQueue<PublishPacket>;
|
|
16
15
|
constructor(store: MemoryStore, client: Client);
|
|
17
16
|
get connectionState(): TConnectionState;
|
|
18
17
|
set connectionState(state: TConnectionState);
|
|
@@ -22,7 +21,7 @@ export declare class Context {
|
|
|
22
21
|
sendPing(): void;
|
|
23
22
|
handleConnection(conn: SockConn, connectPacket: ConnectPacket): Promise<boolean>;
|
|
24
23
|
close(): void;
|
|
25
|
-
receivePublish(packet: PublishPacket): void
|
|
24
|
+
receivePublish(packet: PublishPacket): Promise<void>;
|
|
26
25
|
publish(packet: PublishPacket): Promise<void>;
|
|
27
26
|
subscribe(packet: SubscribePacket): Promise<ReturnCodes>;
|
|
28
27
|
unsubscribe(packet: UnsubscribePacket): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../client/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../client/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,QAAQ,EAGR,KAAK,EACN,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACR,aAAa,EACb,aAAa,EACb,WAAW,EACX,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAGnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,qBAAa,OAAO;;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,iBAAiB,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACpD,iBAAiB,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,qBAAqB,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,KAAK,EAAE,WAAW,CAAC;gBAGP,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;IAU9C,IAAI,eAAe,IAAI,gBAAgB,CAEtC;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAU1C;IAEK,OAAO,CAAC,MAAM,EAAE,aAAa;IAiB7B,UAAU;IAeV,IAAI,CAAC,MAAM,EAAE,SAAS;IAc5B,QAAQ;IAOF,gBAAgB,CACpB,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,OAAO,CAAC;IA2BnB,KAAK;IAMC,cAAc,CAAC,MAAM,EAAE,aAAa;IAIpC,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IASxD,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;IAYpC,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;IAIrC,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO;IAW9D,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;CAUvC"}
|
package/dist/client/context.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Deferred, logger, MqttConn, MQTTLevel, PacketType, Timer, } from "./deps.js";
|
|
2
2
|
import { handlePacket } from "./handlers/handlePacket.js";
|
|
3
3
|
import { ConnectionState } from "./ConnectionState.js";
|
|
4
4
|
import { assert } from "../utils/assert.js";
|
|
@@ -12,14 +12,12 @@ export class Context {
|
|
|
12
12
|
unresolvedSubscribe;
|
|
13
13
|
unresolvedUnSubscribe;
|
|
14
14
|
store;
|
|
15
|
-
incoming;
|
|
16
15
|
#client;
|
|
17
16
|
constructor(store, client) {
|
|
18
17
|
this.#client = client;
|
|
19
18
|
this.store = store;
|
|
20
19
|
this.#connectionState = ConnectionState.offline;
|
|
21
20
|
this.protocolLevel = MQTTLevel.unknown;
|
|
22
|
-
this.incoming = new AsyncQueue();
|
|
23
21
|
this.unresolvedPublish = new Map();
|
|
24
22
|
this.unresolvedSubscribe = new Map();
|
|
25
23
|
this.unresolvedUnSubscribe = new Map();
|
|
@@ -70,7 +68,6 @@ export class Context {
|
|
|
70
68
|
!this.mqttConn?.isClosed) {
|
|
71
69
|
await this.mqttConn?.send(packet);
|
|
72
70
|
this.pingTimer?.reset();
|
|
73
|
-
await nextTick(); // Yield to allow other tasks to run
|
|
74
71
|
return;
|
|
75
72
|
}
|
|
76
73
|
logger.debug("not connected");
|
|
@@ -111,16 +108,15 @@ export class Context {
|
|
|
111
108
|
this.connectionState = ConnectionState.disconnected;
|
|
112
109
|
this.pingTimer?.clear();
|
|
113
110
|
}
|
|
114
|
-
receivePublish(packet) {
|
|
115
|
-
this.
|
|
111
|
+
async receivePublish(packet) {
|
|
112
|
+
await this.#client.onPacket(packet);
|
|
116
113
|
}
|
|
117
114
|
async publish(packet) {
|
|
118
115
|
const qos = packet.qos || 0;
|
|
119
116
|
if (qos === 0) {
|
|
120
117
|
packet.id = 0;
|
|
121
118
|
await this.send(packet);
|
|
122
|
-
|
|
123
|
-
return Promise.resolve();
|
|
119
|
+
return;
|
|
124
120
|
}
|
|
125
121
|
packet.id = this.store.nextId();
|
|
126
122
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../client/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../client/context.ts"],"names":[],"mappings":"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"}
|
package/dist/client/deps.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ export { AuthenticationResult, AuthenticationResultByNumber, decodePayload, enco
|
|
|
3
3
|
export { MqttConn } from "../mqttConn/mqttConn.ts";
|
|
4
4
|
export type { SockConn } from "../socket/socket.ts";
|
|
5
5
|
export { Timer } from "../timer/timer.ts";
|
|
6
|
-
export {
|
|
6
|
+
export { BufferedAsyncIterable, Deferred, logger } from "../utils/mod.ts";
|
|
7
7
|
export { MemoryStore } from "./store/memoryStore.ts";
|
|
8
|
-
export { nextTick } from "../utils/mod.ts";
|
|
9
8
|
//# sourceMappingURL=deps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../client/deps.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,KAAK,EACL,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,aAAa,EACb,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../client/deps.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,KAAK,EACL,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,aAAa,EACb,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/client/deps.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export { AuthenticationResult, AuthenticationResultByNumber, decodePayload, encode, MQTTLevel, PacketNameByType, PacketType, ReasonCodeByNumber, } from "../mqttPacket/mod.js";
|
|
2
2
|
export { MqttConn } from "../mqttConn/mqttConn.js";
|
|
3
3
|
export { Timer } from "../timer/timer.js";
|
|
4
|
-
export {
|
|
4
|
+
export { BufferedAsyncIterable, Deferred, logger } from "../utils/mod.js";
|
|
5
5
|
export { MemoryStore } from "./store/memoryStore.js";
|
|
6
|
-
export { nextTick } from "../utils/mod.js";
|
|
7
6
|
//# sourceMappingURL=deps.js.map
|
package/dist/client/deps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../client/deps.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,aAAa,EACb,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../client/deps.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,aAAa,EACb,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -8,13 +8,13 @@ import { PacketType } from "../deps.js";
|
|
|
8
8
|
export async function handlePublish(ctx, packet) {
|
|
9
9
|
const qos = packet.qos || 0;
|
|
10
10
|
if (qos === 0) {
|
|
11
|
-
ctx.receivePublish(packet);
|
|
11
|
+
await ctx.receivePublish(packet);
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
if (packet.id !== undefined) {
|
|
15
15
|
// qos 1
|
|
16
16
|
if (qos === 1) {
|
|
17
|
-
ctx.receivePublish(packet);
|
|
17
|
+
await ctx.receivePublish(packet);
|
|
18
18
|
await ctx.send({
|
|
19
19
|
type: PacketType.puback,
|
|
20
20
|
protocolLevel: ctx.protocolLevel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlePublish.js","sourceRoot":"","sources":["../../../client/handlers/handlePublish.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAY,EAAE,MAAqB;IACrE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACd,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"handlePublish.js","sourceRoot":"","sources":["../../../client/handlers/handlePublish.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAY,EAAE,MAAqB;IACrE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACd,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ;QACR,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACd,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,GAAG,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,EAAE,EAAE,MAAM,CAAC,EAAE;aACd,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,QAAQ;QACR,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,GAAG,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,EAAE,EAAE,MAAM,CAAC,EAAE;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -20,7 +20,7 @@ export async function handlePubrel(ctx, packet) {
|
|
|
20
20
|
if (ctx.store.pendingIncoming.has(id)) {
|
|
21
21
|
const storedPacket = ctx.store.pendingIncoming.get(id);
|
|
22
22
|
if (storedPacket) {
|
|
23
|
-
ctx.receivePublish(storedPacket);
|
|
23
|
+
await ctx.receivePublish(storedPacket);
|
|
24
24
|
ctx.store.pendingIncoming.delete(id);
|
|
25
25
|
await ctx.send({
|
|
26
26
|
type: PacketType.pubcomp,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlePubrel.js","sourceRoot":"","sources":["../../../client/handlers/handlePubrel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAY,EACZ,MAAoB;IAEpB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"handlePubrel.js","sourceRoot":"","sources":["../../../client/handlers/handlePubrel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAY,EACZ,MAAoB;IAEpB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YACvC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,GAAG,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,UAAU,CAAC,OAAO;gBACxB,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,EAAE;aACH,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
|