@seriousme/opifex 1.8.2 → 1.9.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/dist/node/wrapNodeSocket.d.ts.map +1 -1
- package/dist/node/wrapNodeSocket.js +1 -0
- package/dist/node/wrapNodeSocket.js.map +1 -1
- package/dist/persistence/memory/memoryPersistence.d.ts +1 -3
- package/dist/persistence/memory/memoryPersistence.d.ts.map +1 -1
- package/dist/persistence/memory/memoryPersistence.js +3 -3
- package/dist/persistence/memory/memoryPersistence.js.map +1 -1
- package/dist/persistence/mod.d.ts +9 -0
- package/dist/persistence/mod.d.ts.map +1 -0
- package/dist/persistence/mod.js +2 -0
- package/dist/persistence/mod.js.map +1 -0
- package/dist/persistence/persistence.d.ts +5 -0
- package/dist/persistence/persistence.d.ts.map +1 -1
- package/dist/persistence/persistence.js +5 -1
- package/dist/persistence/persistence.js.map +1 -1
- package/dist/socket/socket.d.ts +7 -2
- package/dist/socket/socket.d.ts.map +1 -1
- package/dist/socket/socket.js.map +1 -1
- package/dist/trie/trie.d.ts +58 -0
- package/dist/trie/trie.d.ts.map +1 -1
- package/dist/trie/trie.js +54 -1
- package/dist/trie/trie.js.map +1 -1
- package/node/wrapNodeSocket.ts +3 -2
- package/package.json +5 -3
- package/persistence/memory/memoryPersistence.ts +15 -16
- package/persistence/mod.ts +20 -0
- package/persistence/persistence.ts +5 -0
- package/socket/socket.ts +8 -2
- package/trie/trie.ts +61 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapNodeSocket.d.ts","sourceRoot":"","sources":["../../node/wrapNodeSocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"wrapNodeSocket.d.ts","sourceRoot":"","sources":["../../node/wrapNodeSocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAW7D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CA4CvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapNodeSocket.js","sourceRoot":"","sources":["../../node/wrapNodeSocket.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;GAGG;AACH,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,QAAQ,GAAG,IAAI,cAAc,CACjC;QACE,IAAI,EAAE,OAAO;QACb,KAAK,CAAC,UAAU;YACd,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAqB,EAAE,EAAE;gBAC1C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;gBAChD,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;oBACrB,2CAA2C;oBAC3C,oDAAoD;oBACpD,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACpB,uBAAuB;gBACvB,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,wCAAwC;gBACxC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;KACF,CACF,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"wrapNodeSocket.js","sourceRoot":"","sources":["../../node/wrapNodeSocket.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;GAGG;AACH,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,QAAQ,GAAG,IAAI,cAAc,CACjC;QACE,IAAI,EAAE,OAAO;QACb,KAAK,CAAC,UAAU;YACd,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAqB,EAAE,EAAE;gBAC1C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;gBAChD,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;oBACrB,2CAA2C;oBAC3C,oDAAoD;oBACpD,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACpB,uBAAuB;gBACvB,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,wCAAwC;gBACxC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;KACF,CACF,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,GAAY;QAC1B,QAAQ,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;QACpC,IAAI,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;QAC5B,SAAS,EAAE,KAAK;KACjB,CAAC;IAEF,MAAM,IAAI,GAAa;QACrB,QAAQ,EAAE,QAAsC;QAChD,QAAQ,EAAE,QAAsC;QAChD,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,UAAU;KACX,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { Client, Handler, IPersistence, RetainStore } from "../persistence.ts";
|
|
3
|
-
import type { IStore, PacketStore, SubscriptionStore } from "../store.ts";
|
|
1
|
+
import type { Client, ClientId, Handler, IPersistence, IStore, PacketId, PacketStore, PublishPacket, QoS, RetainStore, SubscriptionStore, Topic, TopicFilter } from "../mod.ts";
|
|
4
2
|
export declare class MemoryStore implements IStore {
|
|
5
3
|
existingSession: boolean;
|
|
6
4
|
clientId: ClientId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryPersistence.d.ts","sourceRoot":"","sources":["../../../persistence/memory/memoryPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"memoryPersistence.d.ts","sourceRoot":"","sources":["../../../persistence/memory/memoryPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,aAAa,EACb,GAAG,EACH,WAAW,EACX,iBAAiB,EACjB,KAAK,EACL,WAAW,EACZ,MAAM,WAAW,CAAC;AAYnB,qBAAa,WAAY,YAAW,MAAM;IACxC,eAAe,EAAE,OAAO,CAAS;IACjC,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,QAAQ,CAAW;IAC3B,eAAe,EAAE,WAAW,CAAC;IAC7B,eAAe,EAAE,WAAW,CAAC;IAC7B,kBAAkB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,aAAa,EAAE,iBAAiB,CAAC;gBAErB,QAAQ,EAAE,QAAQ;IAS9B,MAAM,IAAI,QAAQ;CAenB;AAED,qBAAa,iBAAkB,YAAW,YAAY;IACpD,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,IAAI,CAA2B;;IAQvC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM;IAS5E,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQ1C,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAQlE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI;IAS1D,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IA4BlD,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAezC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { maxPacketId } from "../mod.js";
|
|
2
|
+
import { Trie } from "../deps.js";
|
|
2
3
|
import { assert } from "../../utils/mod.js";
|
|
3
|
-
const maxPacketId = 0xffff;
|
|
4
4
|
export class MemoryStore {
|
|
5
5
|
existingSession = false;
|
|
6
6
|
clientId;
|
|
@@ -65,7 +65,7 @@ export class MemoryPersistence {
|
|
|
65
65
|
unsubscribe(store, topicFilter) {
|
|
66
66
|
const clientId = store.clientId;
|
|
67
67
|
const qos = store.subscriptions.get(topicFilter);
|
|
68
|
-
if (qos) {
|
|
68
|
+
if (qos !== undefined) {
|
|
69
69
|
store.subscriptions.delete(topicFilter);
|
|
70
70
|
this.trie.remove(topicFilter, { clientId, qos });
|
|
71
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryPersistence.js","sourceRoot":"","sources":["../../../persistence/memory/memoryPersistence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memoryPersistence.js","sourceRoot":"","sources":["../../../persistence/memory/memoryPersistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module persistence
|
|
3
|
+
* @description Module for handling MQTT message persistence and client management
|
|
4
|
+
*/
|
|
5
|
+
export type { IStore, PacketStore, SubscriptionStore } from "./store.ts";
|
|
6
|
+
export type { ClientId, PacketId, PublishPacket, QoS, Topic, TopicFilter, } from "./deps.ts";
|
|
7
|
+
export type { Client, Handler, IPersistence, RetainStore, } from "./persistence.ts";
|
|
8
|
+
export { maxPacketId } from "./persistence.ts";
|
|
9
|
+
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../persistence/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACzE,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,GAAG,EACH,KAAK,EACL,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,MAAM,EACN,OAAO,EACP,YAAY,EACZ,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../persistence/mod.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { ClientId, PublishPacket, QoS, Topic } from "./deps.ts";
|
|
6
6
|
import type { IStore } from "./store.ts";
|
|
7
|
+
/**
|
|
8
|
+
* Maximum packet ID value for MQTT messages (0xffff/65535)
|
|
9
|
+
* @constant {number}
|
|
10
|
+
*/
|
|
11
|
+
export declare const maxPacketId = 65535;
|
|
7
12
|
/**
|
|
8
13
|
* Handler function type for processing publish packets
|
|
9
14
|
* @callback Handler
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../persistence/persistence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAElC;;;OAGG;IACH,QAAQ,EAAE,WAAW,CAAC;IAEtB;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAE7E;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE3C;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAEnD;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAEvD;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAE/C;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC1C"}
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../persistence/persistence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAS,CAAC;AAClC;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAElC;;;OAGG;IACH,QAAQ,EAAE,WAAW,CAAC;IAEtB;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAE7E;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE3C;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAEnD;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAEvD;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAE/C;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../persistence/persistence.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../persistence/persistence.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC"}
|
package/dist/socket/socket.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export type SockAddr = NetAddr | UnixAddr |
|
|
1
|
+
export type SockAddr = NetAddr | UnixAddr | VsockAddr;
|
|
2
2
|
export interface NetAddr {
|
|
3
|
-
transport
|
|
3
|
+
transport: "tcp" | "udp";
|
|
4
4
|
hostname: string;
|
|
5
5
|
port: number;
|
|
6
6
|
}
|
|
@@ -8,6 +8,11 @@ export interface UnixAddr {
|
|
|
8
8
|
transport: "unix" | "unixpacket";
|
|
9
9
|
path: string;
|
|
10
10
|
}
|
|
11
|
+
export interface VsockAddr {
|
|
12
|
+
transport: "vsock";
|
|
13
|
+
cid: number;
|
|
14
|
+
port: number;
|
|
15
|
+
}
|
|
11
16
|
export type SockConn = {
|
|
12
17
|
readable: ReadableStream<Uint8Array>;
|
|
13
18
|
writable: WritableStream<Uint8Array>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../socket/socket.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AACtD,MAAM,WAAW,OAAO;IACtB,SAAS,
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../socket/socket.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AACtD,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACrC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,UAAU,CAAC,EAAE,QAAQ,CAAC;CACvB,CAAC;AAEF,qBAAa,IAAI;IACf,MAAM,EAAE,wBAAwB,CAAC;IACjC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE,MAAM,IAAI,CAAC;gBAEP,QAAQ,EAAE,QAAQ;IASxB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASpD,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxC,KAAK;CAMN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../socket/socket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../socket/socket.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAO,IAAI;IACf,MAAM,CAA2B;IACjC,MAAM,CAA0C;IAChD,MAAM,CAAU;IAChB,UAAU,CAAuB;IACjC,MAAM,CAAa;IAEnB,YAAY,QAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC5C,qDAAqD;QACrD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAgB;QACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,EAAE,UAAU,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAgB;QACpB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
|
package/dist/trie/trie.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Trie data structure implementation that supports wildcard matching
|
|
3
|
+
* @template T The type of values stored in the trie
|
|
4
|
+
*/
|
|
1
5
|
type Parts = string[];
|
|
6
|
+
/**
|
|
7
|
+
* Trie class for storing and matching hierarchical key-value pairs with wildcard support
|
|
8
|
+
* @template T The type of values stored in the trie
|
|
9
|
+
*/
|
|
2
10
|
export declare class Trie<T> {
|
|
3
11
|
#private;
|
|
4
12
|
private separator;
|
|
@@ -6,15 +14,65 @@ export declare class Trie<T> {
|
|
|
6
14
|
private wildcardSubtree;
|
|
7
15
|
private reservedPrefix;
|
|
8
16
|
private looseCompare;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new Trie instance
|
|
19
|
+
* @param looseCompare Whether to use loose comparison for object values
|
|
20
|
+
*/
|
|
9
21
|
constructor(looseCompare?: boolean);
|
|
22
|
+
/**
|
|
23
|
+
* Matches a child node with the given key parts
|
|
24
|
+
* @param child The child node key to match
|
|
25
|
+
* @param parts Remaining parts of the key to match
|
|
26
|
+
* @returns Array of matched values
|
|
27
|
+
*/
|
|
10
28
|
matchChild(child: string, parts: Parts): Array<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Matches a key against the trie
|
|
31
|
+
* @param key The key to match
|
|
32
|
+
* @returns Array of matched values
|
|
33
|
+
*/
|
|
11
34
|
match(key: string): T[];
|
|
35
|
+
/**
|
|
36
|
+
* Internal method to match reserved prefix keys
|
|
37
|
+
* @param parts Parts of the key to match
|
|
38
|
+
* @returns Array of matched values
|
|
39
|
+
*/
|
|
12
40
|
private _matchPrefix;
|
|
41
|
+
/**
|
|
42
|
+
* Internal method to match keys with wildcard support
|
|
43
|
+
* @param parts Parts of the key to match
|
|
44
|
+
* @returns Array of matched values
|
|
45
|
+
*/
|
|
13
46
|
private _match;
|
|
47
|
+
/**
|
|
48
|
+
* Adds a value to the trie at the specified key
|
|
49
|
+
* @param key The key to add the value at
|
|
50
|
+
* @param value The value to add
|
|
51
|
+
*/
|
|
14
52
|
add(key: string, value: T): void;
|
|
53
|
+
/**
|
|
54
|
+
* Internal method to recursively add a value
|
|
55
|
+
* @param parts Parts of the key to add at
|
|
56
|
+
* @param value The value to add
|
|
57
|
+
*/
|
|
15
58
|
private _add;
|
|
59
|
+
/**
|
|
60
|
+
* Removes a value from the trie at the specified key
|
|
61
|
+
* @param key The key to remove the value from
|
|
62
|
+
* @param value The value to remove
|
|
63
|
+
*/
|
|
16
64
|
remove(key: string, value: T): void;
|
|
65
|
+
/**
|
|
66
|
+
* Internal method to recursively remove a value
|
|
67
|
+
* @param parts Parts of the key to remove from
|
|
68
|
+
* @param value The value to remove
|
|
69
|
+
*/
|
|
17
70
|
private _remove;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a filter function for removing values
|
|
73
|
+
* @param value The value to filter against
|
|
74
|
+
* @returns Filter function
|
|
75
|
+
*/
|
|
18
76
|
private filter;
|
|
19
77
|
}
|
|
20
78
|
export {};
|
package/dist/trie/trie.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trie.d.ts","sourceRoot":"","sources":["../../trie/trie.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,MAAM,EAAE,CAAC;AAEtB,qBAAa,IAAI,CAAC,CAAC;;IAGjB,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,WAAW,CAAO;IAC1B,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,cAAc,CAAO;IAC7B,OAAO,CAAC,YAAY,CAAU;
|
|
1
|
+
{"version":3,"file":"trie.d.ts","sourceRoot":"","sources":["../../trie/trie.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,KAAK,KAAK,GAAG,MAAM,EAAE,CAAC;AAEtB;;;GAGG;AACH,qBAAa,IAAI,CAAC,CAAC;;IAGjB,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,WAAW,CAAO;IAC1B,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,cAAc,CAAO;IAC7B,OAAO,CAAC,YAAY,CAAU;IAE9B;;;OAGG;gBACS,YAAY,UAAQ;IAMhC;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAKjD;;;;OAIG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;IAQvB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAYd;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIhC;;;;OAIG;IACH,OAAO,CAAC,IAAI;IAiBZ;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAInC;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAgBf;;;;OAIG;IACH,OAAO,CAAC,MAAM;CAaf"}
|
package/dist/trie/trie.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trie class for storing and matching hierarchical key-value pairs with wildcard support
|
|
3
|
+
* @template T The type of values stored in the trie
|
|
4
|
+
*/
|
|
1
5
|
export class Trie {
|
|
2
6
|
#value;
|
|
3
7
|
#children;
|
|
@@ -6,23 +10,42 @@ export class Trie {
|
|
|
6
10
|
wildcardSubtree = "#";
|
|
7
11
|
reservedPrefix = "$";
|
|
8
12
|
looseCompare;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new Trie instance
|
|
15
|
+
* @param looseCompare Whether to use loose comparison for object values
|
|
16
|
+
*/
|
|
9
17
|
constructor(looseCompare = false) {
|
|
10
18
|
this.#value = [];
|
|
11
19
|
this.#children = new Map();
|
|
12
20
|
this.looseCompare = looseCompare;
|
|
13
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Matches a child node with the given key parts
|
|
24
|
+
* @param child The child node key to match
|
|
25
|
+
* @param parts Remaining parts of the key to match
|
|
26
|
+
* @returns Array of matched values
|
|
27
|
+
*/
|
|
14
28
|
matchChild(child, parts) {
|
|
15
29
|
const childNode = this.#children.get(child);
|
|
16
30
|
return childNode ? childNode._match(parts) : [];
|
|
17
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Matches a key against the trie
|
|
34
|
+
* @param key The key to match
|
|
35
|
+
* @returns Array of matched values
|
|
36
|
+
*/
|
|
18
37
|
match(key) {
|
|
19
38
|
const parts = key.split(this.separator);
|
|
20
|
-
// toplevel wildcards are not allowed to match toplevel reserved topics
|
|
21
39
|
if (parts.length > 0 && parts[0].charAt(0) === this.reservedPrefix) {
|
|
22
40
|
return this._matchPrefix(parts);
|
|
23
41
|
}
|
|
24
42
|
return this._match(parts);
|
|
25
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Internal method to match reserved prefix keys
|
|
46
|
+
* @param parts Parts of the key to match
|
|
47
|
+
* @returns Array of matched values
|
|
48
|
+
*/
|
|
26
49
|
_matchPrefix(parts) {
|
|
27
50
|
if (parts.length === 0) {
|
|
28
51
|
return this.#value ? this.#value : [];
|
|
@@ -30,6 +53,11 @@ export class Trie {
|
|
|
30
53
|
const [first, ...rest] = parts;
|
|
31
54
|
return this.matchChild(first, rest);
|
|
32
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Internal method to match keys with wildcard support
|
|
58
|
+
* @param parts Parts of the key to match
|
|
59
|
+
* @returns Array of matched values
|
|
60
|
+
*/
|
|
33
61
|
_match(parts) {
|
|
34
62
|
if (parts.length === 0) {
|
|
35
63
|
return this.#value ? this.#value : [];
|
|
@@ -41,9 +69,19 @@ export class Trie {
|
|
|
41
69
|
const results = exact.concat(single, subtree);
|
|
42
70
|
return results;
|
|
43
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Adds a value to the trie at the specified key
|
|
74
|
+
* @param key The key to add the value at
|
|
75
|
+
* @param value The value to add
|
|
76
|
+
*/
|
|
44
77
|
add(key, value) {
|
|
45
78
|
return this._add(key.split(this.separator), value);
|
|
46
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Internal method to recursively add a value
|
|
82
|
+
* @param parts Parts of the key to add at
|
|
83
|
+
* @param value The value to add
|
|
84
|
+
*/
|
|
47
85
|
_add(parts, value) {
|
|
48
86
|
if (parts.length === 0) {
|
|
49
87
|
this.#value = this.#value.concat(value);
|
|
@@ -61,9 +99,19 @@ export class Trie {
|
|
|
61
99
|
}
|
|
62
100
|
return;
|
|
63
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Removes a value from the trie at the specified key
|
|
104
|
+
* @param key The key to remove the value from
|
|
105
|
+
* @param value The value to remove
|
|
106
|
+
*/
|
|
64
107
|
remove(key, value) {
|
|
65
108
|
return this._remove(key.split(this.separator), value);
|
|
66
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Internal method to recursively remove a value
|
|
112
|
+
* @param parts Parts of the key to remove from
|
|
113
|
+
* @param value The value to remove
|
|
114
|
+
*/
|
|
67
115
|
_remove(parts, value) {
|
|
68
116
|
if (parts.length === 0) {
|
|
69
117
|
const arr = this.#value || [];
|
|
@@ -79,6 +127,11 @@ export class Trie {
|
|
|
79
127
|
}
|
|
80
128
|
}
|
|
81
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Creates a filter function for removing values
|
|
132
|
+
* @param value The value to filter against
|
|
133
|
+
* @returns Filter function
|
|
134
|
+
*/
|
|
82
135
|
filter(value) {
|
|
83
136
|
if (this.looseCompare && typeof value === "object") {
|
|
84
137
|
return (item) => {
|
package/dist/trie/trie.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trie.js","sourceRoot":"","sources":["../../trie/trie.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trie.js","sourceRoot":"","sources":["../../trie/trie.ts"],"names":[],"mappings":"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"}
|
package/node/wrapNodeSocket.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Socket } from "node:net";
|
|
5
5
|
import { Writable } from "node:stream";
|
|
6
|
-
import type { SockConn } from "../socket/socket.ts";
|
|
6
|
+
import type { NetAddr, SockConn } from "../socket/socket.ts";
|
|
7
7
|
/**
|
|
8
8
|
* Closes a Node.js socket if it is not already closed
|
|
9
9
|
* @param sock - The Node.js socket to close
|
|
@@ -50,9 +50,10 @@ export function wrapNodeSocket(socket: Socket): SockConn {
|
|
|
50
50
|
},
|
|
51
51
|
);
|
|
52
52
|
const writable = Writable.toWeb(socket);
|
|
53
|
-
const remoteAddr = {
|
|
53
|
+
const remoteAddr: NetAddr = {
|
|
54
54
|
hostname: socket.remoteAddress || "",
|
|
55
55
|
port: socket.remotePort || 0,
|
|
56
|
+
transport: "tcp",
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
const conn: SockConn = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seriousme/opifex",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.2",
|
|
4
4
|
"description": "MQTT client & server for Deno & NodeJS",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
"./tcpServer": "./dist/node/tcpServer.js",
|
|
37
37
|
"./server": "./dist/server/mod.js",
|
|
38
38
|
"./client": "./dist/client/mod.js",
|
|
39
|
-
"./
|
|
39
|
+
"./trie": "./dist/trie/trie.js",
|
|
40
|
+
"./persistence": "./dist/persistence/mod.js",
|
|
40
41
|
"./mqttConn": "./dist/mqttConn/mqttConn.js",
|
|
41
42
|
"./mqttPacket": "./dist/mqttPacket/mod.js",
|
|
42
43
|
"./utils": "./dist/utils/mod.js"
|
|
@@ -47,7 +48,8 @@
|
|
|
47
48
|
"./tcpServer": "./deno/tcpServer.ts",
|
|
48
49
|
"./server": "./server/mod.ts",
|
|
49
50
|
"./client": "./client/mod.ts",
|
|
50
|
-
"./
|
|
51
|
+
"./trie": "./trie/trie.ts",
|
|
52
|
+
"./persistence": "./persistence/mod.ts",
|
|
51
53
|
"./mqttConn": "./mqttConn/mqttConn.ts",
|
|
52
54
|
"./mqttPacket": "./mqttPacket/mod.ts",
|
|
53
55
|
"./utils": "./utils/mod.ts"
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type ClientId,
|
|
3
|
-
type PacketId,
|
|
4
|
-
type PublishPacket,
|
|
5
|
-
type QoS,
|
|
6
|
-
type Topic,
|
|
7
|
-
type TopicFilter,
|
|
8
|
-
Trie,
|
|
9
|
-
} from "../deps.ts";
|
|
10
|
-
|
|
11
1
|
import type {
|
|
12
2
|
Client,
|
|
3
|
+
ClientId,
|
|
13
4
|
Handler,
|
|
14
5
|
IPersistence,
|
|
6
|
+
IStore,
|
|
7
|
+
PacketId,
|
|
8
|
+
PacketStore,
|
|
9
|
+
PublishPacket,
|
|
10
|
+
QoS,
|
|
15
11
|
RetainStore,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
SubscriptionStore,
|
|
13
|
+
Topic,
|
|
14
|
+
TopicFilter,
|
|
15
|
+
} from "../mod.ts";
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
import { maxPacketId } from "../mod.ts";
|
|
18
|
+
|
|
19
|
+
import { Trie } from "../deps.ts";
|
|
20
|
+
import { assert } from "../../utils/mod.ts";
|
|
22
21
|
|
|
23
22
|
type ClientSubscription = {
|
|
24
23
|
clientId: ClientId;
|
|
@@ -99,7 +98,7 @@ export class MemoryPersistence implements IPersistence {
|
|
|
99
98
|
unsubscribe(store: IStore, topicFilter: TopicFilter): void {
|
|
100
99
|
const clientId = store.clientId;
|
|
101
100
|
const qos = store.subscriptions.get(topicFilter);
|
|
102
|
-
if (qos) {
|
|
101
|
+
if (qos !== undefined) {
|
|
103
102
|
store.subscriptions.delete(topicFilter);
|
|
104
103
|
this.trie.remove(topicFilter, { clientId, qos });
|
|
105
104
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module persistence
|
|
3
|
+
* @description Module for handling MQTT message persistence and client management
|
|
4
|
+
*/
|
|
5
|
+
export type { IStore, PacketStore, SubscriptionStore } from "./store.ts";
|
|
6
|
+
export type {
|
|
7
|
+
ClientId,
|
|
8
|
+
PacketId,
|
|
9
|
+
PublishPacket,
|
|
10
|
+
QoS,
|
|
11
|
+
Topic,
|
|
12
|
+
TopicFilter,
|
|
13
|
+
} from "./deps.ts";
|
|
14
|
+
export type {
|
|
15
|
+
Client,
|
|
16
|
+
Handler,
|
|
17
|
+
IPersistence,
|
|
18
|
+
RetainStore,
|
|
19
|
+
} from "./persistence.ts";
|
|
20
|
+
export { maxPacketId } from "./persistence.ts";
|
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
import type { ClientId, PublishPacket, QoS, Topic } from "./deps.ts";
|
|
6
6
|
import type { IStore } from "./store.ts";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Maximum packet ID value for MQTT messages (0xffff/65535)
|
|
10
|
+
* @constant {number}
|
|
11
|
+
*/
|
|
12
|
+
export const maxPacketId = 0xffff;
|
|
8
13
|
/**
|
|
9
14
|
* Handler function type for processing publish packets
|
|
10
15
|
* @callback Handler
|
package/socket/socket.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export type SockAddr = NetAddr | UnixAddr |
|
|
1
|
+
export type SockAddr = NetAddr | UnixAddr | VsockAddr;
|
|
2
2
|
export interface NetAddr {
|
|
3
|
-
transport
|
|
3
|
+
transport: "tcp" | "udp";
|
|
4
4
|
hostname: string;
|
|
5
5
|
port: number;
|
|
6
6
|
}
|
|
@@ -10,6 +10,12 @@ export interface UnixAddr {
|
|
|
10
10
|
path: string;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
export interface VsockAddr {
|
|
14
|
+
transport: "vsock";
|
|
15
|
+
cid: number;
|
|
16
|
+
port: number;
|
|
17
|
+
}
|
|
18
|
+
|
|
13
19
|
export type SockConn = {
|
|
14
20
|
readable: ReadableStream<Uint8Array>;
|
|
15
21
|
writable: WritableStream<Uint8Array>;
|
package/trie/trie.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Trie data structure implementation that supports wildcard matching
|
|
3
|
+
* @template T The type of values stored in the trie
|
|
4
|
+
*/
|
|
1
5
|
type Parts = string[];
|
|
2
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Trie class for storing and matching hierarchical key-value pairs with wildcard support
|
|
9
|
+
* @template T The type of values stored in the trie
|
|
10
|
+
*/
|
|
3
11
|
export class Trie<T> {
|
|
4
12
|
#value: Array<T>;
|
|
5
13
|
#children: Map<string, Trie<T>>;
|
|
@@ -9,26 +17,45 @@ export class Trie<T> {
|
|
|
9
17
|
private reservedPrefix = "$";
|
|
10
18
|
private looseCompare: boolean;
|
|
11
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Creates a new Trie instance
|
|
22
|
+
* @param looseCompare Whether to use loose comparison for object values
|
|
23
|
+
*/
|
|
12
24
|
constructor(looseCompare = false) {
|
|
13
25
|
this.#value = [];
|
|
14
26
|
this.#children = new Map();
|
|
15
27
|
this.looseCompare = looseCompare;
|
|
16
28
|
}
|
|
17
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Matches a child node with the given key parts
|
|
32
|
+
* @param child The child node key to match
|
|
33
|
+
* @param parts Remaining parts of the key to match
|
|
34
|
+
* @returns Array of matched values
|
|
35
|
+
*/
|
|
18
36
|
matchChild(child: string, parts: Parts): Array<T> {
|
|
19
37
|
const childNode = this.#children.get(child);
|
|
20
38
|
return childNode ? childNode._match(parts) : [];
|
|
21
39
|
}
|
|
22
40
|
|
|
23
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Matches a key against the trie
|
|
43
|
+
* @param key The key to match
|
|
44
|
+
* @returns Array of matched values
|
|
45
|
+
*/
|
|
46
|
+
match(key: string): T[] {
|
|
24
47
|
const parts = key.split(this.separator);
|
|
25
|
-
// toplevel wildcards are not allowed to match toplevel reserved topics
|
|
26
48
|
if (parts.length > 0 && parts[0].charAt(0) === this.reservedPrefix) {
|
|
27
49
|
return this._matchPrefix(parts);
|
|
28
50
|
}
|
|
29
51
|
return this._match(parts);
|
|
30
52
|
}
|
|
31
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Internal method to match reserved prefix keys
|
|
56
|
+
* @param parts Parts of the key to match
|
|
57
|
+
* @returns Array of matched values
|
|
58
|
+
*/
|
|
32
59
|
private _matchPrefix(parts: Parts): Array<T> {
|
|
33
60
|
if (parts.length === 0) {
|
|
34
61
|
return this.#value ? this.#value : [];
|
|
@@ -37,6 +64,11 @@ export class Trie<T> {
|
|
|
37
64
|
return this.matchChild(first, rest);
|
|
38
65
|
}
|
|
39
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Internal method to match keys with wildcard support
|
|
69
|
+
* @param parts Parts of the key to match
|
|
70
|
+
* @returns Array of matched values
|
|
71
|
+
*/
|
|
40
72
|
private _match(parts: Parts): Array<T> {
|
|
41
73
|
if (parts.length === 0) {
|
|
42
74
|
return this.#value ? this.#value : [];
|
|
@@ -49,10 +81,20 @@ export class Trie<T> {
|
|
|
49
81
|
return results;
|
|
50
82
|
}
|
|
51
83
|
|
|
52
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Adds a value to the trie at the specified key
|
|
86
|
+
* @param key The key to add the value at
|
|
87
|
+
* @param value The value to add
|
|
88
|
+
*/
|
|
89
|
+
add(key: string, value: T): void {
|
|
53
90
|
return this._add(key.split(this.separator), value);
|
|
54
91
|
}
|
|
55
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Internal method to recursively add a value
|
|
95
|
+
* @param parts Parts of the key to add at
|
|
96
|
+
* @param value The value to add
|
|
97
|
+
*/
|
|
56
98
|
private _add(parts: Parts, value: T) {
|
|
57
99
|
if (parts.length === 0) {
|
|
58
100
|
this.#value = this.#value.concat(value);
|
|
@@ -70,10 +112,20 @@ export class Trie<T> {
|
|
|
70
112
|
return;
|
|
71
113
|
}
|
|
72
114
|
|
|
73
|
-
|
|
115
|
+
/**
|
|
116
|
+
* Removes a value from the trie at the specified key
|
|
117
|
+
* @param key The key to remove the value from
|
|
118
|
+
* @param value The value to remove
|
|
119
|
+
*/
|
|
120
|
+
remove(key: string, value: T): void {
|
|
74
121
|
return this._remove(key.split(this.separator), value);
|
|
75
122
|
}
|
|
76
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Internal method to recursively remove a value
|
|
126
|
+
* @param parts Parts of the key to remove from
|
|
127
|
+
* @param value The value to remove
|
|
128
|
+
*/
|
|
77
129
|
private _remove(parts: Parts, value: T): void {
|
|
78
130
|
if (parts.length === 0) {
|
|
79
131
|
const arr = this.#value || [];
|
|
@@ -90,6 +142,11 @@ export class Trie<T> {
|
|
|
90
142
|
}
|
|
91
143
|
}
|
|
92
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Creates a filter function for removing values
|
|
147
|
+
* @param value The value to filter against
|
|
148
|
+
* @returns Filter function
|
|
149
|
+
*/
|
|
93
150
|
private filter(value: T): (value: T, index: number, array: T[]) => boolean {
|
|
94
151
|
if (this.looseCompare && typeof value === "object") {
|
|
95
152
|
return (item) => {
|