@waku/core 0.0.5 → 0.0.7
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/CHANGELOG.md +51 -3
- package/bundle/index.js +31146 -26342
- package/bundle/lib/message/topic_only_message.js +33 -0
- package/bundle/lib/message/version_0.js +133 -0
- package/bundle/lib/predefined_bootstrap_nodes.js +24 -4
- package/bundle/{message-049c8b67.js → peer_exchange-53df2b11.js} +3579 -1007
- package/dist/index.d.ts +14 -13
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/{waku_filter → filter}/filter_rpc.d.ts +1 -1
- package/dist/lib/{waku_filter → filter}/filter_rpc.js +1 -1
- package/dist/lib/filter/filter_rpc.js.map +1 -0
- package/dist/lib/filter/index.d.ts +25 -0
- package/dist/lib/{waku_filter → filter}/index.js +14 -9
- package/dist/lib/filter/index.js.map +1 -0
- package/dist/lib/light_push/index.d.ts +22 -0
- package/dist/lib/{waku_light_push → light_push}/index.js +14 -9
- package/dist/lib/light_push/index.js.map +1 -0
- package/dist/lib/{waku_light_push → light_push}/push_rpc.d.ts +1 -1
- package/dist/lib/{waku_light_push → light_push}/push_rpc.js +1 -1
- package/dist/lib/light_push/push_rpc.js.map +1 -0
- package/dist/lib/message/topic_only_message.d.ts +16 -0
- package/dist/lib/{waku_message → message}/topic_only_message.js +2 -1
- package/dist/lib/message/topic_only_message.js.map +1 -0
- package/dist/lib/message/version_0.d.ts +54 -0
- package/dist/lib/{waku_message → message}/version_0.js +41 -6
- package/dist/lib/message/version_0.js.map +1 -0
- package/dist/lib/predefined_bootstrap_nodes.d.ts +1 -2
- package/dist/lib/predefined_bootstrap_nodes.js +0 -2
- package/dist/lib/predefined_bootstrap_nodes.js.map +1 -1
- package/dist/lib/{waku_relay → relay}/constants.d.ts +0 -0
- package/dist/lib/{waku_relay → relay}/constants.js +0 -0
- package/dist/lib/relay/constants.js.map +1 -0
- package/dist/lib/relay/index.d.ts +24 -0
- package/dist/lib/{waku_relay → relay}/index.js +9 -6
- package/dist/lib/relay/index.js.map +1 -0
- package/dist/lib/{waku_store → store}/history_rpc.d.ts +1 -1
- package/dist/lib/{waku_store → store}/history_rpc.js +1 -1
- package/dist/lib/store/history_rpc.js.map +1 -0
- package/dist/lib/store/index.d.ts +68 -0
- package/dist/lib/{waku_store → store}/index.js +41 -16
- package/dist/lib/store/index.js.map +1 -0
- package/dist/lib/to_proto_message.d.ts +3 -3
- package/dist/lib/to_proto_message.js +1 -0
- package/dist/lib/to_proto_message.js.map +1 -1
- package/dist/lib/wait_for_remote_peer.js +14 -5
- package/dist/lib/wait_for_remote_peer.js.map +1 -1
- package/dist/lib/waku.d.ts +17 -15
- package/dist/lib/waku.js +49 -41
- package/dist/lib/waku.js.map +1 -1
- package/package.json +28 -31
- package/src/index.ts +25 -14
- package/src/lib/{waku_filter → filter}/filter_rpc.ts +1 -2
- package/src/lib/{waku_filter → filter}/index.ts +51 -30
- package/src/lib/{waku_light_push → light_push}/index.ts +38 -19
- package/src/lib/{waku_light_push → light_push}/push_rpc.ts +1 -2
- package/src/lib/{waku_message → message}/topic_only_message.ts +12 -7
- package/src/lib/{waku_message → message}/version_0.ts +59 -18
- package/src/lib/predefined_bootstrap_nodes.ts +2 -6
- package/src/lib/{waku_relay → relay}/constants.ts +0 -0
- package/src/lib/{waku_relay → relay}/index.ts +30 -26
- package/src/lib/{waku_store → store}/history_rpc.ts +1 -2
- package/src/lib/{waku_store → store}/index.ts +93 -28
- package/src/lib/to_proto_message.ts +5 -5
- package/src/lib/wait_for_remote_peer.ts +19 -7
- package/src/lib/waku.ts +78 -51
- package/bundle/browser-1e1a2f27.js +0 -722
- package/bundle/events-158407bb.js +0 -1929
- package/bundle/index-64ce43f0.js +0 -69
- package/bundle/index-8710041d.js +0 -2962
- package/bundle/index-a67d7136.js +0 -4059
- package/bundle/lib/peer_discovery_static_list.js +0 -89
- package/bundle/lib/wait_for_remote_peer.js +0 -326
- package/bundle/lib/waku_message/topic_only_message.js +0 -3
- package/bundle/lib/waku_message/version_0.js +0 -317
- package/bundle/random_subset-75d1c511.js +0 -26
- package/bundle/topic_only_message-5ad3a869.js +0 -82
- package/dist/lib/multiaddr_to_peer_info.d.ts +0 -3
- package/dist/lib/multiaddr_to_peer_info.js +0 -15
- package/dist/lib/multiaddr_to_peer_info.js.map +0 -1
- package/dist/lib/peer_discovery_static_list.d.ts +0 -44
- package/dist/lib/peer_discovery_static_list.js +0 -72
- package/dist/lib/peer_discovery_static_list.js.map +0 -1
- package/dist/lib/select_connection.d.ts +0 -2
- package/dist/lib/select_connection.js +0 -19
- package/dist/lib/select_connection.js.map +0 -1
- package/dist/lib/select_peer.d.ts +0 -15
- package/dist/lib/select_peer.js +0 -59
- package/dist/lib/select_peer.js.map +0 -1
- package/dist/lib/waku_filter/filter_rpc.js.map +0 -1
- package/dist/lib/waku_filter/index.d.ts +0 -50
- package/dist/lib/waku_filter/index.js.map +0 -1
- package/dist/lib/waku_light_push/index.d.ts +0 -38
- package/dist/lib/waku_light_push/index.js.map +0 -1
- package/dist/lib/waku_light_push/push_rpc.js.map +0 -1
- package/dist/lib/waku_message/topic_only_message.d.ts +0 -15
- package/dist/lib/waku_message/topic_only_message.js.map +0 -1
- package/dist/lib/waku_message/version_0.d.ts +0 -27
- package/dist/lib/waku_message/version_0.js.map +0 -1
- package/dist/lib/waku_relay/constants.js.map +0 -1
- package/dist/lib/waku_relay/index.d.ts +0 -66
- package/dist/lib/waku_relay/index.js.map +0 -1
- package/dist/lib/waku_store/history_rpc.js.map +0 -1
- package/dist/lib/waku_store/index.d.ts +0 -126
- package/dist/lib/waku_store/index.js.map +0 -1
- package/dist/proto/filter.d.ts +0 -65
- package/dist/proto/filter.js +0 -425
- package/dist/proto/filter.js.map +0 -1
- package/dist/proto/light_push.d.ts +0 -57
- package/dist/proto/light_push.js +0 -369
- package/dist/proto/light_push.js.map +0 -1
- package/dist/proto/message.d.ts +0 -29
- package/dist/proto/message.js +0 -215
- package/dist/proto/message.js.map +0 -1
- package/dist/proto/store.d.ts +0 -104
- package/dist/proto/store.js +0 -602
- package/dist/proto/store.js.map +0 -1
- package/dist/proto/topic_only_message.d.ts +0 -10
- package/dist/proto/topic_only_message.js +0 -46
- package/dist/proto/topic_only_message.js.map +0 -1
- package/src/lib/multiaddr_to_peer_info.ts +0 -17
- package/src/lib/peer_discovery_static_list.ts +0 -118
- package/src/lib/select_connection.ts +0 -24
- package/src/lib/select_peer.ts +0 -77
- package/src/proto/filter.ts +0 -602
- package/src/proto/light_push.ts +0 -526
- package/src/proto/message.ts +0 -304
- package/src/proto/store.ts +0 -844
- package/src/proto/topic_only_message.ts +0 -67
package/dist/index.d.ts
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
export { DefaultPubSubTopic } from "./lib/constants";
|
2
|
-
export
|
3
|
-
export
|
4
|
-
export * as waku from "./lib/waku";
|
5
|
-
export { WakuNode } from "./lib/waku";
|
6
|
-
export * as waku_filter from "./lib/
|
7
|
-
export {
|
8
|
-
export * as waku_light_push from "./lib/
|
9
|
-
export {
|
10
|
-
export * as waku_relay from "./lib/
|
11
|
-
export {
|
12
|
-
export * as waku_store from "./lib/
|
13
|
-
export { PageDirection,
|
1
|
+
export { DefaultPubSubTopic } from "./lib/constants.js";
|
2
|
+
export { DefaultUserAgent } from "./lib/waku.js";
|
3
|
+
export { createEncoder, createDecoder, DecodedMessage, } from "./lib/message/version_0.js";
|
4
|
+
export * as waku from "./lib/waku.js";
|
5
|
+
export { WakuNode } from "./lib/waku.js";
|
6
|
+
export * as waku_filter from "./lib/filter/index.js";
|
7
|
+
export { wakuFilter } from "./lib/filter/index.js";
|
8
|
+
export * as waku_light_push from "./lib/light_push/index.js";
|
9
|
+
export { wakuLightPush, LightPushCodec, PushResponse, } from "./lib/light_push/index.js";
|
10
|
+
export * as waku_relay from "./lib/relay/index.js";
|
11
|
+
export { wakuRelay } from "./lib/relay/index.js";
|
12
|
+
export * as waku_store from "./lib/store/index.js";
|
13
|
+
export { PageDirection, wakuStore, StoreCodec, createCursor, } from "./lib/store/index.js";
|
14
|
+
export { waitForRemotePeer } from "./lib/wait_for_remote_peer.js";
|
package/dist/index.js
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
export { DefaultPubSubTopic } from "./lib/constants.js";
|
2
|
-
export
|
3
|
-
export
|
2
|
+
export { DefaultUserAgent } from "./lib/waku.js";
|
3
|
+
export { createEncoder, createDecoder, DecodedMessage, } from "./lib/message/version_0.js";
|
4
4
|
export * as waku from "./lib/waku.js";
|
5
5
|
export { WakuNode } from "./lib/waku.js";
|
6
|
-
export * as waku_filter from "./lib/
|
7
|
-
export {
|
8
|
-
export * as waku_light_push from "./lib/
|
9
|
-
export {
|
10
|
-
export * as waku_relay from "./lib/
|
11
|
-
export {
|
12
|
-
export * as waku_store from "./lib/
|
13
|
-
export { PageDirection,
|
6
|
+
export * as waku_filter from "./lib/filter/index.js";
|
7
|
+
export { wakuFilter } from "./lib/filter/index.js";
|
8
|
+
export * as waku_light_push from "./lib/light_push/index.js";
|
9
|
+
export { wakuLightPush, LightPushCodec, PushResponse, } from "./lib/light_push/index.js";
|
10
|
+
export * as waku_relay from "./lib/relay/index.js";
|
11
|
+
export { wakuRelay } from "./lib/relay/index.js";
|
12
|
+
export * as waku_store from "./lib/store/index.js";
|
13
|
+
export { PageDirection, wakuStore, StoreCodec, createCursor, } from "./lib/store/index.js";
|
14
|
+
export { waitForRemotePeer } from "./lib/wait_for_remote_peer.js";
|
14
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AACnD,OAAO,EACL,aAAa,EACb,SAAS,EACT,UAAU,EACV,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"filter_rpc.js","sourceRoot":"","sources":["../../../src/lib/filter/filter_rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAMlC;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB,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"}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import type { ConnectionManager } from "@libp2p/interface-connection-manager";
|
2
|
+
import type { PeerStore } from "@libp2p/interface-peer-store";
|
3
|
+
import type { Registrar } from "@libp2p/interface-registrar";
|
4
|
+
import type { IFilter } from "@waku/interfaces";
|
5
|
+
import { ContentFilter } from "./filter_rpc.js";
|
6
|
+
export { ContentFilter };
|
7
|
+
export declare const FilterCodec = "/vac/waku/filter/2.0.0-beta1";
|
8
|
+
export interface FilterComponents {
|
9
|
+
peerStore: PeerStore;
|
10
|
+
registrar: Registrar;
|
11
|
+
connectionManager: ConnectionManager;
|
12
|
+
}
|
13
|
+
export interface CreateOptions {
|
14
|
+
/**
|
15
|
+
* The PubSub Topic to use. Defaults to {@link DefaultPubSubTopic}.
|
16
|
+
*
|
17
|
+
* The usage of the default pubsub topic is recommended.
|
18
|
+
* See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/) for details.
|
19
|
+
*
|
20
|
+
* @default {@link DefaultPubSubTopic}
|
21
|
+
*/
|
22
|
+
pubSubTopic?: string;
|
23
|
+
}
|
24
|
+
export declare type UnsubscribeFunction = () => Promise<void>;
|
25
|
+
export declare function wakuFilter(init?: Partial<CreateOptions>): (components: FilterComponents) => IFilter;
|
@@ -1,11 +1,10 @@
|
|
1
|
+
import { getPeersForProtocol, selectConnection, selectPeerForProtocol, selectRandomPeer, } from "@waku/libp2p-utils";
|
1
2
|
import debug from "debug";
|
2
3
|
import all from "it-all";
|
3
4
|
import * as lp from "it-length-prefixed";
|
4
5
|
import { pipe } from "it-pipe";
|
5
6
|
import { DefaultPubSubTopic } from "../constants.js";
|
6
7
|
import { groupByContentTopic } from "../group_by.js";
|
7
|
-
import { selectConnection } from "../select_connection.js";
|
8
|
-
import { getPeersForProtocol, selectPeerForProtocol, selectRandomPeer, } from "../select_peer.js";
|
9
8
|
import { toProtoMessage } from "../to_proto_message.js";
|
10
9
|
import { FilterRPC } from "./filter_rpc.js";
|
11
10
|
export const FilterCodec = "/vac/waku/filter/2.0.0-beta1";
|
@@ -17,13 +16,13 @@ const log = debug("waku:filter");
|
|
17
16
|
* - https://github.com/status-im/go-waku/issues/245
|
18
17
|
* - https://github.com/status-im/nwaku/issues/948
|
19
18
|
*/
|
20
|
-
|
21
|
-
constructor(
|
22
|
-
this.
|
19
|
+
class Filter {
|
20
|
+
constructor(components, options) {
|
21
|
+
this.components = components;
|
23
22
|
this.subscriptions = new Map();
|
24
23
|
this.decoders = new Map();
|
25
24
|
this.pubSubTopic = options?.pubSubTopic ?? DefaultPubSubTopic;
|
26
|
-
this.
|
25
|
+
this.components.registrar
|
27
26
|
.handle(FilterCodec, this.onRequest.bind(this))
|
28
27
|
.catch((e) => log("Failed to register filter protocol", e));
|
29
28
|
}
|
@@ -62,6 +61,9 @@ export class WakuFilter {
|
|
62
61
|
this.deleteCallback(requestId);
|
63
62
|
};
|
64
63
|
}
|
64
|
+
get peerStore() {
|
65
|
+
return this.components.peerStore;
|
66
|
+
}
|
65
67
|
onRequest(streamData) {
|
66
68
|
log("Receiving message push");
|
67
69
|
try {
|
@@ -157,7 +159,7 @@ export class WakuFilter {
|
|
157
159
|
}
|
158
160
|
}
|
159
161
|
async newStream(peer) {
|
160
|
-
const connections = this.
|
162
|
+
const connections = this.components.connectionManager.getConnections(peer.id);
|
161
163
|
const connection = selectConnection(connections);
|
162
164
|
if (!connection) {
|
163
165
|
throw new Error("Failed to get a connection to the peer");
|
@@ -165,17 +167,20 @@ export class WakuFilter {
|
|
165
167
|
return connection.newStream(FilterCodec);
|
166
168
|
}
|
167
169
|
async getPeer(peerId) {
|
168
|
-
const res = await selectPeerForProtocol(this.
|
170
|
+
const res = await selectPeerForProtocol(this.components.peerStore, [FilterCodec], peerId);
|
169
171
|
if (!res) {
|
170
172
|
throw new Error(`Failed to select peer for ${FilterCodec}`);
|
171
173
|
}
|
172
174
|
return res.peer;
|
173
175
|
}
|
174
176
|
async peers() {
|
175
|
-
return getPeersForProtocol(this.
|
177
|
+
return getPeersForProtocol(this.components.peerStore, [FilterCodec]);
|
176
178
|
}
|
177
179
|
async randomPeer() {
|
178
180
|
return selectRandomPeer(await this.peers());
|
179
181
|
}
|
180
182
|
}
|
183
|
+
export function wakuFilter(init = {}) {
|
184
|
+
return (components) => new Filter(components, init);
|
185
|
+
}
|
181
186
|
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/filter/index.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { ConnectionManager } from "@libp2p/interface-connection-manager";
|
2
|
+
import type { PeerStore } from "@libp2p/interface-peer-store";
|
3
|
+
import type { ILightPush } from "@waku/interfaces";
|
4
|
+
import { PushResponse } from "@waku/proto";
|
5
|
+
export declare const LightPushCodec = "/vac/waku/lightpush/2.0.0-beta1";
|
6
|
+
export { PushResponse };
|
7
|
+
export interface LightPushComponents {
|
8
|
+
peerStore: PeerStore;
|
9
|
+
connectionManager: ConnectionManager;
|
10
|
+
}
|
11
|
+
export interface CreateOptions {
|
12
|
+
/**
|
13
|
+
* The PubSub Topic to use. Defaults to {@link DefaultPubSubTopic}.
|
14
|
+
*
|
15
|
+
* The usage of the default pubsub topic is recommended.
|
16
|
+
* See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/) for details.
|
17
|
+
*
|
18
|
+
* @default {@link DefaultPubSubTopic}
|
19
|
+
*/
|
20
|
+
pubSubTopic?: string;
|
21
|
+
}
|
22
|
+
export declare function wakuLightPush(init?: Partial<CreateOptions>): (components: LightPushComponents) => ILightPush;
|
@@ -1,12 +1,11 @@
|
|
1
|
+
import { getPeersForProtocol, selectConnection, selectPeerForProtocol, selectRandomPeer, } from "@waku/libp2p-utils";
|
2
|
+
import { PushResponse } from "@waku/proto";
|
1
3
|
import debug from "debug";
|
2
4
|
import all from "it-all";
|
3
5
|
import * as lp from "it-length-prefixed";
|
4
6
|
import { pipe } from "it-pipe";
|
5
7
|
import { Uint8ArrayList } from "uint8arraylist";
|
6
|
-
import { PushResponse } from "../../proto/light_push.js";
|
7
8
|
import { DefaultPubSubTopic } from "../constants.js";
|
8
|
-
import { selectConnection } from "../select_connection.js";
|
9
|
-
import { getPeersForProtocol, selectPeerForProtocol, selectRandomPeer, } from "../select_peer.js";
|
10
9
|
import { PushRPC } from "./push_rpc.js";
|
11
10
|
const log = debug("waku:light-push");
|
12
11
|
export const LightPushCodec = "/vac/waku/lightpush/2.0.0-beta1";
|
@@ -14,19 +13,19 @@ export { PushResponse };
|
|
14
13
|
/**
|
15
14
|
* Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
|
16
15
|
*/
|
17
|
-
|
18
|
-
constructor(
|
19
|
-
this.
|
16
|
+
class LightPush {
|
17
|
+
constructor(components, options) {
|
18
|
+
this.components = components;
|
20
19
|
this.pubSubTopic = options?.pubSubTopic ?? DefaultPubSubTopic;
|
21
20
|
}
|
22
21
|
async push(encoder, message, opts) {
|
23
22
|
const pubSubTopic = opts?.pubSubTopic ? opts.pubSubTopic : this.pubSubTopic;
|
24
|
-
const res = await selectPeerForProtocol(this.
|
23
|
+
const res = await selectPeerForProtocol(this.components.peerStore, [LightPushCodec], opts?.peerId);
|
25
24
|
if (!res) {
|
26
25
|
throw new Error("Failed to get a peer");
|
27
26
|
}
|
28
27
|
const { peer } = res;
|
29
|
-
const connections = this.
|
28
|
+
const connections = this.components.connectionManager.getConnections(peer.id);
|
30
29
|
const connection = selectConnection(connections);
|
31
30
|
if (!connection)
|
32
31
|
throw "Failed to get a connection to the peer";
|
@@ -69,7 +68,7 @@ export class WakuLightPush {
|
|
69
68
|
* peers.
|
70
69
|
*/
|
71
70
|
async peers() {
|
72
|
-
return getPeersForProtocol(this.
|
71
|
+
return getPeersForProtocol(this.components.peerStore, [LightPushCodec]);
|
73
72
|
}
|
74
73
|
/**
|
75
74
|
* Returns a random peer that supports light push protocol from the address
|
@@ -79,5 +78,11 @@ export class WakuLightPush {
|
|
79
78
|
async randomPeer() {
|
80
79
|
return selectRandomPeer(await this.peers());
|
81
80
|
}
|
81
|
+
get peerStore() {
|
82
|
+
return this.components.peerStore;
|
83
|
+
}
|
84
|
+
}
|
85
|
+
export function wakuLightPush(init = {}) {
|
86
|
+
return (components) => new LightPush(components, init);
|
82
87
|
}
|
83
88
|
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/light_push/index.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"push_rpc.js","sourceRoot":"","sources":["../../../src/lib/light_push/push_rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,MAAM,OAAO,OAAO;IAClB,YAA0B,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAElD,MAAM,CAAC,aAAa,CAClB,OAA0B,EAC1B,WAAmB;QAEnB,OAAO,IAAI,OAAO,CAAC;YACjB,SAAS,EAAE,IAAI,EAAE;YACjB,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,WAAW;aACzB;YACD,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAqB;QACjC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import type { IDecodedMessage, IDecoder, IProtoMessage } from "@waku/interfaces";
|
2
|
+
import { proto_topic_only_message as proto } from "@waku/proto";
|
3
|
+
export declare class TopicOnlyMessage implements IDecodedMessage {
|
4
|
+
private proto;
|
5
|
+
payload: undefined;
|
6
|
+
rateLimitProof: undefined;
|
7
|
+
timestamp: undefined;
|
8
|
+
ephemeral: undefined;
|
9
|
+
constructor(proto: proto.TopicOnlyMessage);
|
10
|
+
get contentTopic(): string;
|
11
|
+
}
|
12
|
+
export declare class TopicOnlyDecoder implements IDecoder<TopicOnlyMessage> {
|
13
|
+
contentTopic: string;
|
14
|
+
fromWireToProtoObj(bytes: Uint8Array): Promise<IProtoMessage | undefined>;
|
15
|
+
fromProtoObj(proto: IProtoMessage): Promise<TopicOnlyMessage | undefined>;
|
16
|
+
}
|
@@ -1,5 +1,5 @@
|
|
1
|
+
import { proto_topic_only_message as proto } from "@waku/proto";
|
1
2
|
import debug from "debug";
|
2
|
-
import * as proto from "../../proto/topic_only_message.js";
|
3
3
|
const log = debug("waku:message:topic-only");
|
4
4
|
export class TopicOnlyMessage {
|
5
5
|
constructor(proto) {
|
@@ -22,6 +22,7 @@ export class TopicOnlyDecoder {
|
|
22
22
|
rateLimitProof: undefined,
|
23
23
|
timestamp: undefined,
|
24
24
|
version: undefined,
|
25
|
+
ephemeral: undefined,
|
25
26
|
});
|
26
27
|
}
|
27
28
|
async fromProtoObj(proto) {
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"topic_only_message.js","sourceRoot":"","sources":["../../../src/lib/message/topic_only_message.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,wBAAwB,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAE7C,MAAM,OAAO,gBAAgB;IAM3B,YAAoB,KAA6B;QAA7B,UAAK,GAAL,KAAK,CAAwB;IAAG,CAAC;IAErD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,gBAAgB;IAA7B;QACS,iBAAY,GAAG,EAAE,CAAC;IAoB3B,CAAC;IAlBC,kBAAkB,CAAC,KAAiB;QAClC,MAAM,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,YAAY,EAAE,YAAY,CAAC,YAAY;YACvC,OAAO,EAAE,SAAS;YAClB,cAAc,EAAE,SAAS;YACzB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAoB;QAEpB,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;CACF"}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import type { IDecodedMessage, IDecoder, IEncoder, IMessage, IProtoMessage, IRateLimitProof } from "@waku/interfaces";
|
2
|
+
import { proto_message as proto } from "@waku/proto";
|
3
|
+
export declare const Version = 0;
|
4
|
+
export { proto };
|
5
|
+
export declare class DecodedMessage implements IDecodedMessage {
|
6
|
+
protected proto: proto.WakuMessage;
|
7
|
+
constructor(proto: proto.WakuMessage);
|
8
|
+
get _rawPayload(): Uint8Array | undefined;
|
9
|
+
get ephemeral(): boolean;
|
10
|
+
get payload(): Uint8Array | undefined;
|
11
|
+
get contentTopic(): string | undefined;
|
12
|
+
get _rawTimestamp(): bigint | undefined;
|
13
|
+
get timestamp(): Date | undefined;
|
14
|
+
get version(): number;
|
15
|
+
get rateLimitProof(): IRateLimitProof | undefined;
|
16
|
+
}
|
17
|
+
export declare class Encoder implements IEncoder {
|
18
|
+
contentTopic: string;
|
19
|
+
ephemeral: boolean;
|
20
|
+
constructor(contentTopic: string, ephemeral?: boolean);
|
21
|
+
toWire(message: IMessage): Promise<Uint8Array>;
|
22
|
+
toProtoObj(message: IMessage): Promise<IProtoMessage>;
|
23
|
+
}
|
24
|
+
/**
|
25
|
+
* Creates an encoder that encode messages without Waku level encryption or signature.
|
26
|
+
*
|
27
|
+
* An encoder is used to encode messages in the [`14/WAKU2-MESSAGE](https://rfc.vac.dev/spec/14/)
|
28
|
+
* format to be sent over the Waku network. The resulting encoder can then be
|
29
|
+
* pass to { @link @waku/interfaces.LightPush.push } or
|
30
|
+
* { @link @waku/interfaces.Relay.send } to automatically encode outgoing
|
31
|
+
* messages.
|
32
|
+
*
|
33
|
+
* @param contentTopic The content topic to set on outgoing messages.
|
34
|
+
* @param ephemeral An optional flag to mark message as ephemeral, ie, not to be stored by Waku Store nodes.
|
35
|
+
*/
|
36
|
+
export declare function createEncoder(contentTopic: string, ephemeral?: boolean): Encoder;
|
37
|
+
export declare class Decoder implements IDecoder<DecodedMessage> {
|
38
|
+
contentTopic: string;
|
39
|
+
constructor(contentTopic: string);
|
40
|
+
fromWireToProtoObj(bytes: Uint8Array): Promise<IProtoMessage | undefined>;
|
41
|
+
fromProtoObj(proto: IProtoMessage): Promise<DecodedMessage | undefined>;
|
42
|
+
}
|
43
|
+
/**
|
44
|
+
* Creates an decoder that decode messages without Waku level encryption.
|
45
|
+
*
|
46
|
+
* A decoder is used to decode messages from the [14/WAKU2-MESSAGE](https://rfc.vac.dev/spec/14/)
|
47
|
+
* format when received from the Waku network. The resulting decoder can then be
|
48
|
+
* pass to { @link @waku/interfaces.Filter.subscribe } or
|
49
|
+
* { @link @waku/interfaces.Relay.subscribe } to automatically decode incoming
|
50
|
+
* messages.
|
51
|
+
*
|
52
|
+
* @param contentTopic The resulting decoder will only decode messages with this content topic.
|
53
|
+
*/
|
54
|
+
export declare function createDecoder(contentTopic: string): Decoder;
|
@@ -1,10 +1,10 @@
|
|
1
|
+
import { proto_message as proto } from "@waku/proto";
|
1
2
|
import debug from "debug";
|
2
|
-
import * as proto from "../../proto/message.js";
|
3
3
|
const log = debug("waku:message:version-0");
|
4
4
|
const OneMillion = BigInt(1000000);
|
5
5
|
export const Version = 0;
|
6
6
|
export { proto };
|
7
|
-
export class
|
7
|
+
export class DecodedMessage {
|
8
8
|
constructor(proto) {
|
9
9
|
this.proto = proto;
|
10
10
|
}
|
@@ -14,6 +14,9 @@ export class MessageV0 {
|
|
14
14
|
}
|
15
15
|
return;
|
16
16
|
}
|
17
|
+
get ephemeral() {
|
18
|
+
return Boolean(this.proto.ephemeral);
|
19
|
+
}
|
17
20
|
get payload() {
|
18
21
|
return this._rawPayload;
|
19
22
|
}
|
@@ -49,9 +52,10 @@ export class MessageV0 {
|
|
49
52
|
return this.proto.rateLimitProof;
|
50
53
|
}
|
51
54
|
}
|
52
|
-
export class
|
53
|
-
constructor(contentTopic) {
|
55
|
+
export class Encoder {
|
56
|
+
constructor(contentTopic, ephemeral = false) {
|
54
57
|
this.contentTopic = contentTopic;
|
58
|
+
this.ephemeral = ephemeral;
|
55
59
|
}
|
56
60
|
async toWire(message) {
|
57
61
|
return proto.WakuMessage.encode(await this.toProtoObj(message));
|
@@ -64,10 +68,26 @@ export class EncoderV0 {
|
|
64
68
|
contentTopic: this.contentTopic,
|
65
69
|
timestamp: BigInt(timestamp.valueOf()) * OneMillion,
|
66
70
|
rateLimitProof: message.rateLimitProof,
|
71
|
+
ephemeral: this.ephemeral,
|
67
72
|
};
|
68
73
|
}
|
69
74
|
}
|
70
|
-
|
75
|
+
/**
|
76
|
+
* Creates an encoder that encode messages without Waku level encryption or signature.
|
77
|
+
*
|
78
|
+
* An encoder is used to encode messages in the [`14/WAKU2-MESSAGE](https://rfc.vac.dev/spec/14/)
|
79
|
+
* format to be sent over the Waku network. The resulting encoder can then be
|
80
|
+
* pass to { @link @waku/interfaces.LightPush.push } or
|
81
|
+
* { @link @waku/interfaces.Relay.send } to automatically encode outgoing
|
82
|
+
* messages.
|
83
|
+
*
|
84
|
+
* @param contentTopic The content topic to set on outgoing messages.
|
85
|
+
* @param ephemeral An optional flag to mark message as ephemeral, ie, not to be stored by Waku Store nodes.
|
86
|
+
*/
|
87
|
+
export function createEncoder(contentTopic, ephemeral = false) {
|
88
|
+
return new Encoder(contentTopic, ephemeral);
|
89
|
+
}
|
90
|
+
export class Decoder {
|
71
91
|
constructor(contentTopic) {
|
72
92
|
this.contentTopic = contentTopic;
|
73
93
|
}
|
@@ -80,6 +100,7 @@ export class DecoderV0 {
|
|
80
100
|
version: protoMessage.version ?? undefined,
|
81
101
|
timestamp: protoMessage.timestamp ?? undefined,
|
82
102
|
rateLimitProof: protoMessage.rateLimitProof ?? undefined,
|
103
|
+
ephemeral: protoMessage.ephemeral ?? false,
|
83
104
|
});
|
84
105
|
}
|
85
106
|
async fromProtoObj(proto) {
|
@@ -91,7 +112,21 @@ export class DecoderV0 {
|
|
91
112
|
log("Failed to decode due to incorrect version, expected:", Version, ", actual:", proto.version);
|
92
113
|
return Promise.resolve(undefined);
|
93
114
|
}
|
94
|
-
return new
|
115
|
+
return new DecodedMessage(proto);
|
95
116
|
}
|
96
117
|
}
|
118
|
+
/**
|
119
|
+
* Creates an decoder that decode messages without Waku level encryption.
|
120
|
+
*
|
121
|
+
* A decoder is used to decode messages from the [14/WAKU2-MESSAGE](https://rfc.vac.dev/spec/14/)
|
122
|
+
* format when received from the Waku network. The resulting decoder can then be
|
123
|
+
* pass to { @link @waku/interfaces.Filter.subscribe } or
|
124
|
+
* { @link @waku/interfaces.Relay.subscribe } to automatically decode incoming
|
125
|
+
* messages.
|
126
|
+
*
|
127
|
+
* @param contentTopic The resulting decoder will only decode messages with this content topic.
|
128
|
+
*/
|
129
|
+
export function createDecoder(contentTopic) {
|
130
|
+
return new Decoder(contentTopic);
|
131
|
+
}
|
97
132
|
//# sourceMappingURL=version_0.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"version_0.js","sourceRoot":"","sources":["../../../src/lib/message/version_0.ts"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import type { Multiaddr } from "@multiformats/multiaddr";
|
2
1
|
export declare const DefaultWantedNumber = 1;
|
3
2
|
export declare enum Fleet {
|
4
3
|
Prod = "prod",
|
@@ -14,7 +13,7 @@ export declare enum Fleet {
|
|
14
13
|
*
|
15
14
|
* @returns An array of multiaddresses.
|
16
15
|
*/
|
17
|
-
export declare function getPredefinedBootstrapNodes(fleet?: Fleet, wantedNumber?: number):
|
16
|
+
export declare function getPredefinedBootstrapNodes(fleet?: Fleet, wantedNumber?: number): string[];
|
18
17
|
export declare const fleets: {
|
19
18
|
fleets: {
|
20
19
|
"wakuv2.prod": {
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { multiaddr } from "@multiformats/multiaddr";
|
2
1
|
import { getPseudoRandomSubset } from "./random_subset.js";
|
3
2
|
export const DefaultWantedNumber = 1;
|
4
3
|
export var Fleet;
|
@@ -32,7 +31,6 @@ export function getPredefinedBootstrapNodes(fleet = Fleet.Prod, wantedNumber = D
|
|
32
31
|
nodes = fleets.fleets["wakuv2.prod"]["waku-websocket"];
|
33
32
|
}
|
34
33
|
nodes = Object.values(nodes);
|
35
|
-
nodes = nodes.map((node) => multiaddr(node));
|
36
34
|
return getPseudoRandomSubset(nodes, wantedNumber);
|
37
35
|
}
|
38
36
|
export const fleets = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"predefined_bootstrap_nodes.js","sourceRoot":"","sources":["../../src/lib/predefined_bootstrap_nodes.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"predefined_bootstrap_nodes.js","sourceRoot":"","sources":["../../src/lib/predefined_bootstrap_nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,CAAN,IAAY,KAGX;AAHD,WAAY,KAAK;IACf,sBAAa,CAAA;IACb,sBAAa,CAAA;AACf,CAAC,EAHW,KAAK,KAAL,KAAK,QAGhB;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAe,KAAK,CAAC,IAAI,EACzB,eAAuB,mBAAmB;IAE1C,IAAI,YAAY,IAAI,CAAC,EAAE;QACrB,OAAO,EAAE,CAAC;KACX;IAED,IAAI,KAAK,CAAC;IACV,QAAQ,KAAK,EAAE;QACb,KAAK,KAAK,CAAC,IAAI;YACb,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACvD,MAAM;QACR,KAAK,KAAK,CAAC,IAAI;YACb,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACvD,MAAM;QACR;YACE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC;KAC1D;IAED,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAa,CAAC;IAEzC,OAAO,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE;QACN,aAAa,EAAE;YACb,gBAAgB,EAAE;gBAChB,sCAAsC,EACpC,+HAA+H;gBACjI,6BAA6B,EAC3B,sHAAsH;gBACxH,sCAAsC,EACpC,+HAA+H;aAClI;SACF;QACD,aAAa,EAAE;YACb,gBAAgB,EAAE;gBAChB,sCAAsC,EACpC,+HAA+H;gBACjI,6BAA6B,EAC3B,sHAAsH;gBACxH,sCAAsC,EACpC,+HAA+H;aAClI;SACF;KACF;CACF,CAAC"}
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/relay/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,6BAA6B;IAC7B,uBAAuB;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC"}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { GossipSubComponents, GossipsubOpts } from "@chainsafe/libp2p-gossipsub";
|
2
|
+
import type { Callback, IDecoder, IRelay } from "@waku/interfaces";
|
3
|
+
import { IDecodedMessage } from "@waku/interfaces";
|
4
|
+
export declare type Observer<T extends IDecodedMessage> = {
|
5
|
+
decoder: IDecoder<T>;
|
6
|
+
callback: Callback<T>;
|
7
|
+
};
|
8
|
+
export declare type CreateOptions = {
|
9
|
+
/**
|
10
|
+
* The PubSub Topic to use. Defaults to {@link DefaultPubSubTopic}.
|
11
|
+
*
|
12
|
+
* One and only one pubsub topic is used by Waku. This is used by:
|
13
|
+
* - WakuRelay to receive, route and send messages,
|
14
|
+
* - WakuLightPush to send messages,
|
15
|
+
* - WakuStore to retrieve messages.
|
16
|
+
*
|
17
|
+
* The usage of the default pubsub topic is recommended.
|
18
|
+
* See [Waku v2 Topic Usage Recommendations](https://rfc.vac.dev/spec/23/) for details.
|
19
|
+
*
|
20
|
+
* @default {@link DefaultPubSubTopic}
|
21
|
+
*/
|
22
|
+
pubSubTopic?: string;
|
23
|
+
} & GossipsubOpts;
|
24
|
+
export declare function wakuRelay(init?: Partial<CreateOptions>): (components: GossipSubComponents) => IRelay;
|
@@ -2,8 +2,8 @@ import { GossipSub, } from "@chainsafe/libp2p-gossipsub";
|
|
2
2
|
import { SignaturePolicy } from "@chainsafe/libp2p-gossipsub/types";
|
3
3
|
import debug from "debug";
|
4
4
|
import { DefaultPubSubTopic } from "../constants.js";
|
5
|
+
import { TopicOnlyDecoder } from "../message/topic_only_message.js";
|
5
6
|
import { pushOrInitMapSet } from "../push_or_init_map.js";
|
6
|
-
import { TopicOnlyDecoder } from "../waku_message/topic_only_message.js";
|
7
7
|
import * as constants from "./constants.js";
|
8
8
|
const log = debug("waku:relay");
|
9
9
|
/**
|
@@ -12,14 +12,14 @@ const log = debug("waku:relay");
|
|
12
12
|
*
|
13
13
|
* @implements {require('libp2p-interfaces/src/pubsub')}
|
14
14
|
*/
|
15
|
-
|
16
|
-
constructor(options) {
|
15
|
+
class Relay extends GossipSub {
|
16
|
+
constructor(components, options) {
|
17
17
|
options = Object.assign(options ?? {}, {
|
18
18
|
// Ensure that no signature is included nor expected in the messages.
|
19
19
|
globalSignaturePolicy: SignaturePolicy.StrictNoSign,
|
20
20
|
fallbackToFloodsub: false,
|
21
21
|
});
|
22
|
-
super(options);
|
22
|
+
super(components, options);
|
23
23
|
this.multicodecs = constants.RelayCodecs;
|
24
24
|
this.observers = new Map();
|
25
25
|
this.pubSubTopic = options?.pubSubTopic ?? DefaultPubSubTopic;
|
@@ -106,6 +106,9 @@ export class WakuRelay extends GossipSub {
|
|
106
106
|
return super.getMeshPeers(topic ?? this.pubSubTopic);
|
107
107
|
}
|
108
108
|
}
|
109
|
-
|
110
|
-
|
109
|
+
Relay.multicodec = constants.RelayCodecs[0];
|
110
|
+
Relay.multicodec = constants.RelayCodecs[constants.RelayCodecs.length - 1];
|
111
|
+
export function wakuRelay(init = {}) {
|
112
|
+
return (components) => new Relay(components, init);
|
113
|
+
}
|
111
114
|
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/relay/index.ts"],"names":[],"mappings":"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"}
|