@waku/core 0.0.20 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/bundle/index.js +256 -302
  3. package/bundle/lib/base_protocol.js +11 -6
  4. package/bundle/lib/message/version_0.js +1 -1
  5. package/bundle/lib/predefined_bootstrap_nodes.js +6 -6
  6. package/bundle/{version_0-9c941081.js → version_0-86411fdf.js} +3 -3
  7. package/dist/index.d.ts +2 -4
  8. package/dist/index.js +2 -4
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/base_protocol.d.ts +9 -5
  11. package/dist/lib/base_protocol.js +11 -6
  12. package/dist/lib/base_protocol.js.map +1 -1
  13. package/dist/lib/connection_manager.d.ts +6 -4
  14. package/dist/lib/connection_manager.js +120 -42
  15. package/dist/lib/connection_manager.js.map +1 -1
  16. package/dist/lib/filter/filter_rpc.js.map +1 -0
  17. package/dist/lib/filter/index.d.ts +2 -0
  18. package/dist/lib/filter/{v2/index.js → index.js} +14 -19
  19. package/dist/lib/filter/index.js.map +1 -0
  20. package/dist/lib/keep_alive_manager.d.ts +2 -2
  21. package/dist/lib/keep_alive_manager.js +1 -1
  22. package/dist/lib/keep_alive_manager.js.map +1 -1
  23. package/dist/lib/light_push/index.d.ts +1 -2
  24. package/dist/lib/light_push/index.js +1 -3
  25. package/dist/lib/light_push/index.js.map +1 -1
  26. package/dist/lib/predefined_bootstrap_nodes.js +6 -6
  27. package/dist/lib/predefined_bootstrap_nodes.js.map +1 -1
  28. package/dist/lib/store/index.d.ts +1 -2
  29. package/dist/lib/store/index.js +1 -3
  30. package/dist/lib/store/index.js.map +1 -1
  31. package/dist/lib/wait_for_remote_peer.js +3 -3
  32. package/dist/lib/wait_for_remote_peer.js.map +1 -1
  33. package/dist/lib/waku.d.ts +3 -4
  34. package/dist/lib/waku.js.map +1 -1
  35. package/package.json +9 -17
  36. package/src/index.ts +2 -5
  37. package/src/lib/base_protocol.ts +23 -9
  38. package/src/lib/connection_manager.ts +165 -65
  39. package/src/lib/filter/{v2/index.ts → index.ts} +19 -26
  40. package/src/lib/keep_alive_manager.ts +3 -3
  41. package/src/lib/light_push/index.ts +3 -3
  42. package/src/lib/predefined_bootstrap_nodes.ts +6 -6
  43. package/src/lib/store/index.ts +3 -3
  44. package/src/lib/wait_for_remote_peer.ts +7 -9
  45. package/src/lib/waku.ts +3 -4
  46. package/dist/lib/filter/v1/filter_rpc.d.ts +0 -23
  47. package/dist/lib/filter/v1/filter_rpc.js +0 -45
  48. package/dist/lib/filter/v1/filter_rpc.js.map +0 -1
  49. package/dist/lib/filter/v1/index.d.ts +0 -6
  50. package/dist/lib/filter/v1/index.js +0 -153
  51. package/dist/lib/filter/v1/index.js.map +0 -1
  52. package/dist/lib/filter/v2/filter_rpc.js.map +0 -1
  53. package/dist/lib/filter/v2/index.d.ts +0 -3
  54. package/dist/lib/filter/v2/index.js.map +0 -1
  55. package/src/lib/filter/v1/filter_rpc.ts +0 -53
  56. package/src/lib/filter/v1/index.ts +0 -248
  57. /package/dist/lib/filter/{v2/filter_rpc.d.ts → filter_rpc.d.ts} +0 -0
  58. /package/dist/lib/filter/{v2/filter_rpc.js → filter_rpc.js} +0 -0
  59. /package/src/lib/filter/{v2/filter_rpc.ts → filter_rpc.ts} +0 -0
@@ -1,45 +0,0 @@
1
- import { proto_filter as proto } from "@waku/proto";
2
- import { v4 as uuid } from "uuid";
3
- /**
4
- * FilterRPC represents a message conforming to the Waku Filter protocol
5
- */
6
- export class FilterRpc {
7
- proto;
8
- constructor(proto) {
9
- this.proto = proto;
10
- }
11
- static createRequest(topic, contentFilters, requestId, subscribe = true) {
12
- return new FilterRpc({
13
- requestId: requestId || uuid(),
14
- request: {
15
- subscribe,
16
- topic,
17
- contentFilters,
18
- },
19
- push: undefined,
20
- });
21
- }
22
- /**
23
- *
24
- * @param bytes Uint8Array of bytes from a FilterRPC message
25
- * @returns FilterRpc
26
- */
27
- static decode(bytes) {
28
- const res = proto.FilterRpc.decode(bytes);
29
- return new FilterRpc(res);
30
- }
31
- /**
32
- * Encode the current FilterRPC request to bytes
33
- * @returns Uint8Array
34
- */
35
- encode() {
36
- return proto.FilterRpc.encode(this.proto);
37
- }
38
- get push() {
39
- return this.proto.push;
40
- }
41
- get requestId() {
42
- return this.proto.requestId;
43
- }
44
- }
45
- //# sourceMappingURL=filter_rpc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filter_rpc.js","sourceRoot":"","sources":["../../../../src/lib/filter/v1/filter_rpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,SAAS;IACM;IAA1B,YAA0B,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;IAAG,CAAC;IAEpD,MAAM,CAAC,aAAa,CAClB,KAAa,EACb,cAA+B,EAC/B,SAAkB,EAClB,SAAS,GAAG,IAAI;QAEhB,OAAO,IAAI,SAAS,CAAC;YACnB,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE;YAC9B,OAAO,EAAE;gBACP,SAAS;gBACT,KAAK;gBACL,cAAc;aACf;YACD,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,KAAiB;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAC9B,CAAC;CACF"}
@@ -1,6 +0,0 @@
1
- import type { Libp2p } from "@libp2p/interface-libp2p";
2
- import type { IFilter, ProtocolCreateOptions } from "@waku/interfaces";
3
- export declare const FilterCodec = "/vac/waku/filter/2.0.0-beta1";
4
- export type UnsubscribeFunction = () => Promise<void>;
5
- export type RequestID = string;
6
- export declare function wakuFilter(init?: Partial<ProtocolCreateOptions>): (libp2p: Libp2p) => IFilter;
@@ -1,153 +0,0 @@
1
- import { groupByContentTopic } from "@waku/utils";
2
- import { toAsyncIterator } from "@waku/utils";
3
- import debug from "debug";
4
- import all from "it-all";
5
- import * as lp from "it-length-prefixed";
6
- import { pipe } from "it-pipe";
7
- import { BaseProtocol } from "../../base_protocol.js";
8
- import { DefaultPubSubTopic } from "../../constants.js";
9
- import { toProtoMessage } from "../../to_proto_message.js";
10
- import { FilterRpc } from "./filter_rpc.js";
11
- export const FilterCodec = "/vac/waku/filter/2.0.0-beta1";
12
- const log = debug("waku:filter");
13
- /**
14
- * Implements client side of the [Waku v2 Filter protocol](https://rfc.vac.dev/spec/12/).
15
- *
16
- * Note this currently only works in NodeJS when the Waku node is listening on a port, see:
17
- * - https://github.com/status-im/go-waku/issues/245
18
- * - https://github.com/status-im/nwaku/issues/948
19
- */
20
- class Filter extends BaseProtocol {
21
- libp2p;
22
- options;
23
- subscriptions;
24
- constructor(libp2p, options) {
25
- super(FilterCodec, libp2p.peerStore, libp2p.getConnections.bind(libp2p));
26
- this.libp2p = libp2p;
27
- this.options = options ?? {};
28
- this.subscriptions = new Map();
29
- this.libp2p
30
- .handle(this.multicodec, this.onRequest.bind(this))
31
- .catch((e) => log("Failed to register filter protocol", e));
32
- }
33
- /**
34
- * @param decoders Decoder or array of Decoders to use to decode messages, it also specifies the content topics.
35
- * @param callback A function that will be called on each message returned by the filter.
36
- * @param opts The FilterSubscriptionOpts used to narrow which messages are returned, and which peer to connect to.
37
- * @returns Unsubscribe function that can be used to end the subscription.
38
- */
39
- async subscribe(decoders, callback, opts) {
40
- const decodersArray = Array.isArray(decoders) ? decoders : [decoders];
41
- const { pubSubTopic = DefaultPubSubTopic } = this.options;
42
- const contentTopics = Array.from(groupByContentTopic(decodersArray).keys());
43
- const contentFilters = contentTopics.map((contentTopic) => ({
44
- contentTopic,
45
- }));
46
- const request = FilterRpc.createRequest(pubSubTopic, contentFilters, undefined, true);
47
- const requestId = request.requestId;
48
- const peer = await this.getPeer(opts?.peerId);
49
- const stream = await this.newStream(peer);
50
- try {
51
- const res = await pipe([request.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
52
- log("response", res);
53
- }
54
- catch (e) {
55
- log("Error subscribing to peer ", peer.id.toString(), "for content topics", contentTopics, ": ", e);
56
- throw e;
57
- }
58
- const subscription = {
59
- callback,
60
- decoders: decodersArray,
61
- pubSubTopic,
62
- };
63
- this.subscriptions.set(requestId, subscription);
64
- return async () => {
65
- await this.unsubscribe(pubSubTopic, contentFilters, requestId, peer);
66
- this.subscriptions.delete(requestId);
67
- };
68
- }
69
- toSubscriptionIterator(decoders, opts) {
70
- return toAsyncIterator(this, decoders, opts);
71
- }
72
- getActiveSubscriptions() {
73
- const map = new Map();
74
- const subscriptions = this.subscriptions;
75
- for (const item of subscriptions.values()) {
76
- const values = map.get(item.pubSubTopic) || [];
77
- const nextValues = item.decoders.map((decoder) => decoder.contentTopic);
78
- map.set(item.pubSubTopic, [...values, ...nextValues]);
79
- }
80
- return map;
81
- }
82
- onRequest(streamData) {
83
- log("Receiving message push");
84
- try {
85
- pipe(streamData.stream, lp.decode, async (source) => {
86
- for await (const bytes of source) {
87
- const res = FilterRpc.decode(bytes.slice());
88
- if (res.requestId && res.push?.messages?.length) {
89
- await this.pushMessages(res.requestId, res.push.messages);
90
- }
91
- }
92
- }).then(() => {
93
- log("Receiving pipe closed.");
94
- }, (e) => {
95
- log("Error with receiving pipe", e);
96
- });
97
- }
98
- catch (e) {
99
- log("Error decoding message", e);
100
- }
101
- }
102
- async pushMessages(requestId, messages) {
103
- const subscription = this.subscriptions.get(requestId);
104
- if (!subscription) {
105
- log(`No subscription locally registered for request ID ${requestId}`);
106
- return;
107
- }
108
- const { decoders, callback, pubSubTopic } = subscription;
109
- if (!decoders || !decoders.length) {
110
- log(`No decoder registered for request ID ${requestId}`);
111
- return;
112
- }
113
- for (const protoMessage of messages) {
114
- const contentTopic = protoMessage.contentTopic;
115
- if (!contentTopic) {
116
- log("Message has no content topic, skipping");
117
- return;
118
- }
119
- let didDecodeMsg = false;
120
- // We don't want to wait for decoding failure, just attempt to decode
121
- // all messages and do the call back on the one that works
122
- // noinspection ES6MissingAwait
123
- decoders.forEach(async (dec) => {
124
- if (didDecodeMsg)
125
- return;
126
- const decoded = await dec.fromProtoObj(pubSubTopic, toProtoMessage(protoMessage));
127
- if (!decoded) {
128
- log("Not able to decode message");
129
- return;
130
- }
131
- // This is just to prevent more decoding attempt
132
- // TODO: Could be better if we were to abort promises
133
- didDecodeMsg = Boolean(decoded);
134
- await callback(decoded);
135
- });
136
- }
137
- }
138
- async unsubscribe(topic, contentFilters, requestId, peer) {
139
- const unsubscribeRequest = FilterRpc.createRequest(topic, contentFilters, requestId, false);
140
- const stream = await this.newStream(peer);
141
- try {
142
- await pipe([unsubscribeRequest.encode()], lp.encode, stream.sink);
143
- }
144
- catch (e) {
145
- log("Error unsubscribing", e);
146
- throw e;
147
- }
148
- }
149
- }
150
- export function wakuFilter(init = {}) {
151
- return (libp2p) => new Filter(libp2p, init);
152
- }
153
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/filter/v1/index.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"filter_rpc.js","sourceRoot":"","sources":["../../../../src/lib/filter/v2/filter_rpc.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Libp2p } from "@libp2p/interface-libp2p";
2
- import type { IFilterV2, ProtocolCreateOptions } from "@waku/interfaces";
3
- export declare function wakuFilterV2(init?: Partial<ProtocolCreateOptions>): (libp2p: Libp2p) => IFilterV2;
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/filter/v2/index.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAOpC,MAAM,cAAc,GAAG;IACrB,SAAS,EAAE,wCAAwC;IACnD,IAAI,EAAE,mCAAmC;CAC1C,CAAC;AAEF,MAAM,YAAY;IACC,IAAI,CAAO;IACX,WAAW,CAAc;IAClC,SAAS,CAAkC;IAE3C,qBAAqB,CAG3B;IAEF,YACE,WAAwB,EACxB,UAAgB,EAChB,SAA0C;QAE1C,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CACb,QAAqC,EACrC,QAAqB;QAErB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,sBAAsB,CACvD,IAAI,CAAC,WAAW,EAChB,aAAa,CACd,CAAC;QAEF,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CACpB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAClB,EAAE,CAAC,MAAM,EACT,MAAM,EACN,EAAE,CAAC,MAAM,EACT,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CACpC,CAAC;YAEF,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GACzC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAEjD,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE;gBACzC,MAAM,IAAI,KAAK,CACb,4BAA4B,SAAS,4BAA4B,UAAU,KAAK,UAAU,EAAE,CAC7F,CAAC;aACH;YAED,GAAG,CACD,qBAAqB,EACrB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EACvB,oBAAoB,EACpB,aAAa,CACd,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CACb,6BAA6B;gBAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;gBACvB,uBAAuB;gBACvB,aAAa;gBACb,IAAI;gBACJ,CAAC,CACJ,CAAC;SACH;QAED,wDAAwD;QACxD,4FAA4F;QAC5F,qCAAqC;QACrC,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE;YACrD,qEAAqE;YACrE,wEAAwE;YACxE,MAAM,oBAAoB,GAAG;gBAC3B,QAAQ;gBACR,QAAQ;aAC2C,CAAC;YAEtD,oEAAoE;YACpE,uEAAuE;YACvE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAA6B;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,wBAAwB,CACpE,IAAI,CAAC,WAAW,EAChB,aAAa,CACd,CAAC;QAEF,IAAI;YACF,MAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;SACnE;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,CAAC;SAChD;QAED,aAAa,CAAC,OAAO,CAAC,CAAC,YAAoB,EAAE,EAAE;YAC7C,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,2BAA2B,EAAE,CAAC;QAEjE,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CACpB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAClB,EAAE,CAAC,MAAM,EACT,MAAM,EACN,EAAE,CAAC,MAAM,EACT,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CACpC,CAAC;YAEF,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GACzC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAEjD,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE;gBACzC,MAAM,IAAI,KAAK,CACb,uBAAuB,SAAS,4BAA4B,UAAU,KAAK,UAAU,EAAE,CACxF,CAAC;aACH;YAED,GAAG,CAAC,iBAAiB,CAAC,CAAC;SACxB;QAAC,OAAO,KAAK,EAAE;YACd,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC;SAC5C;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,2BAA2B,CAC5D,IAAI,CAAC,WAAW,CACjB,CAAC;QAEF,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CACpB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAClB,EAAE,CAAC,MAAM,EACT,MAAM,EACN,EAAE,CAAC,MAAM,EACT,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CACpC,CAAC;YAEF,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GACzC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAEjD,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE;gBACzC,MAAM,IAAI,KAAK,CACb,kCAAkC,SAAS,4BAA4B,UAAU,KAAK,UAAU,EAAE,CACnG,CAAC;aACH;YAED,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;YACnC,GAAG,CAAC,sCAAsC,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,KAAK,CAAC,CAAC;SAC1E;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAoB;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,CAAC,oBAAoB,EAAE;YACzB,GAAG,CAAC,yCAAyC,EAAE,YAAY,CAAC,CAAC;YAC7D,OAAO;SACR;QACD,MAAM,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;CACF;AAED,MAAM,QAAS,SAAQ,YAAY;IAoBd;IAnBF,OAAO,CAAwB;IACxC,mBAAmB,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEtD,qBAAqB,CAC3B,WAAwB,EACxB,SAAoB;QAEpB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;IACrE,CAAC;IAEO,qBAAqB,CAC3B,WAAwB,EACxB,SAAoB,EACpB,YAA0B;QAE1B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;QAC1E,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,YAAmB,MAAc,EAAE,OAA+B;QAChE,KAAK,CACH,cAAc,CAAC,SAAS,EACxB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CACnC,CAAC;QALe,WAAM,GAAN,MAAM,CAAQ;QAO/B,IAAI,CAAC,MAAM;aACR,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,GAAG,CAAC,qBAAqB,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;QAErC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,WAAoB,EACpB,MAAe;QAEf,MAAM,YAAY,GAChB,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAC;QAEhE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAExC,MAAM,YAAY,GAChB,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC5D,IAAI,CAAC,qBAAqB,CACxB,YAAY,EACZ,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAClB,IAAI,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CACtE,CAAC;QAEJ,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,sBAAsB,CAC3B,QAAqC,EACrC,IAAkC;QAElC,OAAO,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,SAAS,CACb,QAAqC,EACrC,QAAqB,EACrB,IAAsB;QAEtB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5E,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3C,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9B,mBAAmB,CACjB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAChD,CAAC,IAAI,EAAE,CACT,CAAC;QAEF,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,UAA8B;QAC9C,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC9B,IAAI;YACF,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAClD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;oBAChC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;oBAErD,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;oBAE9C,IAAI,CAAC,WAAW,EAAE;wBAChB,GAAG,CAAC,wBAAwB,CAAC,CAAC;wBAC9B,OAAO;qBACR;oBAED,IAAI,CAAC,WAAW,EAAE;wBAChB,GAAG,CAAC,wCAAwC,CAAC,CAAC;wBAC9C,OAAO;qBACR;oBAED,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAC7C,WAAW,EACX,SAAS,CACV,CAAC;oBAEF,IAAI,CAAC,YAAY,EAAE;wBACjB,GAAG,CAAC,gDAAgD,WAAW,EAAE,CAAC,CAAC;wBACnE,OAAO;qBACR;oBAED,MAAM,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;iBAChD;YACH,CAAC,CAAC,CAAC,IAAI,CACL,GAAG,EAAE;gBACH,GAAG,CAAC,wBAAwB,CAAC,CAAC;YAChC,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;gBACJ,GAAG,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC,CACF,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;SAClC;IACH,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,OAAuC,EAAE;IAEzC,OAAO,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,oBAA6C,EAC7C,WAAwB,EACxB,OAAoB;IAEpB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC;IAEpD,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACjC,IAAI,CAAC,YAAY,EAAE;QACjB,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAC9C,OAAO;KACR;IAED,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,qEAAqE;IACrE,0DAA0D;IAC1D,+BAA+B;IAC/B,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAgB,EAAE,EAAE;QAC1C,IAAI,YAAY;YAAE,OAAO;QACzB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,YAAY,CACpC,WAAW,EACX,OAAwB,CACzB,CAAC;QACF,gEAAgE;QAChE,IAAI,CAAC,OAAO,EAAE;YACZ,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAClC,OAAO;SACR;QACD,gDAAgD;QAChD,qDAAqD;QACrD,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,53 +0,0 @@
1
- import { ContentFilter } from "@waku/interfaces";
2
- import { proto_filter as proto } from "@waku/proto";
3
- import { v4 as uuid } from "uuid";
4
-
5
- /**
6
- * FilterRPC represents a message conforming to the Waku Filter protocol
7
- */
8
- export class FilterRpc {
9
- public constructor(public proto: proto.FilterRpc) {}
10
-
11
- static createRequest(
12
- topic: string,
13
- contentFilters: ContentFilter[],
14
- requestId?: string,
15
- subscribe = true
16
- ): FilterRpc {
17
- return new FilterRpc({
18
- requestId: requestId || uuid(),
19
- request: {
20
- subscribe,
21
- topic,
22
- contentFilters,
23
- },
24
- push: undefined,
25
- });
26
- }
27
-
28
- /**
29
- *
30
- * @param bytes Uint8Array of bytes from a FilterRPC message
31
- * @returns FilterRpc
32
- */
33
- static decode(bytes: Uint8Array): FilterRpc {
34
- const res = proto.FilterRpc.decode(bytes);
35
- return new FilterRpc(res);
36
- }
37
-
38
- /**
39
- * Encode the current FilterRPC request to bytes
40
- * @returns Uint8Array
41
- */
42
- encode(): Uint8Array {
43
- return proto.FilterRpc.encode(this.proto);
44
- }
45
-
46
- get push(): proto.MessagePush | undefined {
47
- return this.proto.push;
48
- }
49
-
50
- get requestId(): string {
51
- return this.proto.requestId;
52
- }
53
- }
@@ -1,248 +0,0 @@
1
- import type { Libp2p } from "@libp2p/interface-libp2p";
2
- import type { Peer } from "@libp2p/interface-peer-store";
3
- import type { IncomingStreamData } from "@libp2p/interface-registrar";
4
- import type {
5
- ActiveSubscriptions,
6
- Callback,
7
- ContentFilter,
8
- IAsyncIterator,
9
- IDecodedMessage,
10
- IDecoder,
11
- IFilter,
12
- ProtocolCreateOptions,
13
- ProtocolOptions,
14
- } from "@waku/interfaces";
15
- import { WakuMessage as WakuMessageProto } from "@waku/proto";
16
- import { groupByContentTopic } from "@waku/utils";
17
- import { toAsyncIterator } from "@waku/utils";
18
- import debug from "debug";
19
- import all from "it-all";
20
- import * as lp from "it-length-prefixed";
21
- import { pipe } from "it-pipe";
22
-
23
- import { BaseProtocol } from "../../base_protocol.js";
24
- import { DefaultPubSubTopic } from "../../constants.js";
25
- import { toProtoMessage } from "../../to_proto_message.js";
26
-
27
- import { FilterRpc } from "./filter_rpc.js";
28
-
29
- export const FilterCodec = "/vac/waku/filter/2.0.0-beta1";
30
-
31
- const log = debug("waku:filter");
32
-
33
- export type UnsubscribeFunction = () => Promise<void>;
34
- export type RequestID = string;
35
-
36
- type Subscription<T extends IDecodedMessage> = {
37
- decoders: IDecoder<T>[];
38
- callback: Callback<T>;
39
- pubSubTopic: string;
40
- };
41
-
42
- /**
43
- * Implements client side of the [Waku v2 Filter protocol](https://rfc.vac.dev/spec/12/).
44
- *
45
- * Note this currently only works in NodeJS when the Waku node is listening on a port, see:
46
- * - https://github.com/status-im/go-waku/issues/245
47
- * - https://github.com/status-im/nwaku/issues/948
48
- */
49
- class Filter extends BaseProtocol implements IFilter {
50
- options: ProtocolCreateOptions;
51
- private subscriptions: Map<RequestID, unknown>;
52
-
53
- constructor(public libp2p: Libp2p, options?: ProtocolCreateOptions) {
54
- super(FilterCodec, libp2p.peerStore, libp2p.getConnections.bind(libp2p));
55
- this.options = options ?? {};
56
- this.subscriptions = new Map();
57
- this.libp2p
58
- .handle(this.multicodec, this.onRequest.bind(this))
59
- .catch((e) => log("Failed to register filter protocol", e));
60
- }
61
-
62
- /**
63
- * @param decoders Decoder or array of Decoders to use to decode messages, it also specifies the content topics.
64
- * @param callback A function that will be called on each message returned by the filter.
65
- * @param opts The FilterSubscriptionOpts used to narrow which messages are returned, and which peer to connect to.
66
- * @returns Unsubscribe function that can be used to end the subscription.
67
- */
68
- async subscribe<T extends IDecodedMessage>(
69
- decoders: IDecoder<T> | IDecoder<T>[],
70
- callback: Callback<T>,
71
- opts?: ProtocolOptions
72
- ): Promise<UnsubscribeFunction> {
73
- const decodersArray = Array.isArray(decoders) ? decoders : [decoders];
74
- const { pubSubTopic = DefaultPubSubTopic } = this.options;
75
-
76
- const contentTopics = Array.from(groupByContentTopic(decodersArray).keys());
77
-
78
- const contentFilters = contentTopics.map((contentTopic) => ({
79
- contentTopic,
80
- }));
81
- const request = FilterRpc.createRequest(
82
- pubSubTopic,
83
- contentFilters,
84
- undefined,
85
- true
86
- );
87
-
88
- const requestId = request.requestId;
89
-
90
- const peer = await this.getPeer(opts?.peerId);
91
- const stream = await this.newStream(peer);
92
-
93
- try {
94
- const res = await pipe(
95
- [request.encode()],
96
- lp.encode,
97
- stream,
98
- lp.decode,
99
- async (source) => await all(source)
100
- );
101
-
102
- log("response", res);
103
- } catch (e) {
104
- log(
105
- "Error subscribing to peer ",
106
- peer.id.toString(),
107
- "for content topics",
108
- contentTopics,
109
- ": ",
110
- e
111
- );
112
- throw e;
113
- }
114
-
115
- const subscription: Subscription<T> = {
116
- callback,
117
- decoders: decodersArray,
118
- pubSubTopic,
119
- };
120
- this.subscriptions.set(requestId, subscription);
121
-
122
- return async () => {
123
- await this.unsubscribe(pubSubTopic, contentFilters, requestId, peer);
124
- this.subscriptions.delete(requestId);
125
- };
126
- }
127
-
128
- public toSubscriptionIterator<T extends IDecodedMessage>(
129
- decoders: IDecoder<T> | IDecoder<T>[],
130
- opts?: ProtocolOptions | undefined
131
- ): Promise<IAsyncIterator<T>> {
132
- return toAsyncIterator(this, decoders, opts);
133
- }
134
-
135
- public getActiveSubscriptions(): ActiveSubscriptions {
136
- const map: ActiveSubscriptions = new Map();
137
- const subscriptions = this.subscriptions as Map<
138
- RequestID,
139
- Subscription<IDecodedMessage>
140
- >;
141
-
142
- for (const item of subscriptions.values()) {
143
- const values = map.get(item.pubSubTopic) || [];
144
- const nextValues = item.decoders.map((decoder) => decoder.contentTopic);
145
- map.set(item.pubSubTopic, [...values, ...nextValues]);
146
- }
147
-
148
- return map;
149
- }
150
-
151
- private onRequest(streamData: IncomingStreamData): void {
152
- log("Receiving message push");
153
- try {
154
- pipe(streamData.stream, lp.decode, async (source) => {
155
- for await (const bytes of source) {
156
- const res = FilterRpc.decode(bytes.slice());
157
- if (res.requestId && res.push?.messages?.length) {
158
- await this.pushMessages(res.requestId, res.push.messages);
159
- }
160
- }
161
- }).then(
162
- () => {
163
- log("Receiving pipe closed.");
164
- },
165
- (e) => {
166
- log("Error with receiving pipe", e);
167
- }
168
- );
169
- } catch (e) {
170
- log("Error decoding message", e);
171
- }
172
- }
173
-
174
- private async pushMessages<T extends IDecodedMessage>(
175
- requestId: string,
176
- messages: WakuMessageProto[]
177
- ): Promise<void> {
178
- const subscription = this.subscriptions.get(requestId) as
179
- | Subscription<T>
180
- | undefined;
181
- if (!subscription) {
182
- log(`No subscription locally registered for request ID ${requestId}`);
183
- return;
184
- }
185
- const { decoders, callback, pubSubTopic } = subscription;
186
-
187
- if (!decoders || !decoders.length) {
188
- log(`No decoder registered for request ID ${requestId}`);
189
- return;
190
- }
191
-
192
- for (const protoMessage of messages) {
193
- const contentTopic = protoMessage.contentTopic;
194
- if (!contentTopic) {
195
- log("Message has no content topic, skipping");
196
- return;
197
- }
198
-
199
- let didDecodeMsg = false;
200
- // We don't want to wait for decoding failure, just attempt to decode
201
- // all messages and do the call back on the one that works
202
- // noinspection ES6MissingAwait
203
- decoders.forEach(async (dec: IDecoder<T>) => {
204
- if (didDecodeMsg) return;
205
- const decoded = await dec.fromProtoObj(
206
- pubSubTopic,
207
- toProtoMessage(protoMessage)
208
- );
209
- if (!decoded) {
210
- log("Not able to decode message");
211
- return;
212
- }
213
- // This is just to prevent more decoding attempt
214
- // TODO: Could be better if we were to abort promises
215
- didDecodeMsg = Boolean(decoded);
216
- await callback(decoded);
217
- });
218
- }
219
- }
220
-
221
- private async unsubscribe(
222
- topic: string,
223
- contentFilters: ContentFilter[],
224
- requestId: string,
225
- peer: Peer
226
- ): Promise<void> {
227
- const unsubscribeRequest = FilterRpc.createRequest(
228
- topic,
229
- contentFilters,
230
- requestId,
231
- false
232
- );
233
-
234
- const stream = await this.newStream(peer);
235
- try {
236
- await pipe([unsubscribeRequest.encode()], lp.encode, stream.sink);
237
- } catch (e) {
238
- log("Error unsubscribing", e);
239
- throw e;
240
- }
241
- }
242
- }
243
-
244
- export function wakuFilter(
245
- init: Partial<ProtocolCreateOptions> = {}
246
- ): (libp2p: Libp2p) => IFilter {
247
- return (libp2p: Libp2p) => new Filter(libp2p, init);
248
- }