@waku/core 0.0.4 → 0.0.6
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 +18 -0
- package/bundle/{index-a67d7136.js → index-925587a4.js} +1696 -113
- package/bundle/index.js +12942 -15253
- package/bundle/lib/predefined_bootstrap_nodes.js +24 -4
- package/bundle/lib/wait_for_remote_peer.js +4 -6
- package/bundle/lib/waku_message/topic_only_message.js +2 -3
- package/bundle/lib/waku_message/version_0.js +17 -4
- package/bundle/{message-049c8b67.js → message-70dbb19b.js} +1419 -753
- package/bundle/{topic_only_message-5ad3a869.js → topic_only_message-a80fe8b2.js} +2 -2
- package/dist/index.d.ts +5 -4
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- 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/to_proto_message.js +1 -0
- package/dist/lib/to_proto_message.js.map +1 -1
- package/dist/lib/wait_for_remote_peer.js +2 -2
- package/dist/lib/wait_for_remote_peer.js.map +1 -1
- package/dist/lib/waku.d.ts +16 -15
- package/dist/lib/waku.js +31 -33
- package/dist/lib/waku.js.map +1 -1
- package/dist/lib/waku_filter/index.d.ts +10 -35
- package/dist/lib/waku_filter/index.js +13 -7
- package/dist/lib/waku_filter/index.js.map +1 -1
- package/dist/lib/waku_light_push/index.d.ts +8 -24
- package/dist/lib/waku_light_push/index.js +12 -6
- package/dist/lib/waku_light_push/index.js.map +1 -1
- package/dist/lib/waku_message/topic_only_message.d.ts +3 -2
- package/dist/lib/waku_message/topic_only_message.js +1 -0
- package/dist/lib/waku_message/topic_only_message.js.map +1 -1
- package/dist/lib/waku_message/version_0.d.ts +5 -2
- package/dist/lib/waku_message/version_0.js +9 -2
- package/dist/lib/waku_message/version_0.js.map +1 -1
- package/dist/lib/waku_relay/index.d.ts +3 -45
- package/dist/lib/waku_relay/index.js +6 -3
- package/dist/lib/waku_relay/index.js.map +1 -1
- package/dist/lib/waku_store/index.d.ts +11 -71
- package/dist/lib/waku_store/index.js +34 -10
- package/dist/lib/waku_store/index.js.map +1 -1
- package/dist/proto/filter.d.ts +1 -0
- package/dist/proto/filter.js +7 -0
- package/dist/proto/filter.js.map +1 -1
- package/dist/proto/light_push.d.ts +1 -0
- package/dist/proto/light_push.js +7 -0
- package/dist/proto/light_push.js.map +1 -1
- package/dist/proto/message.d.ts +1 -0
- package/dist/proto/message.js +7 -0
- package/dist/proto/message.js.map +1 -1
- package/dist/proto/store.d.ts +1 -0
- package/dist/proto/store.js +7 -0
- package/dist/proto/store.js.map +1 -1
- package/package.json +11 -13
- package/src/index.ts +10 -4
- package/src/lib/predefined_bootstrap_nodes.ts +1 -5
- package/src/lib/to_proto_message.ts +1 -0
- package/src/lib/wait_for_remote_peer.ts +2 -2
- package/src/lib/waku.ts +51 -47
- package/src/lib/waku_filter/index.ts +28 -7
- package/src/lib/waku_light_push/index.ts +26 -6
- package/src/lib/waku_message/topic_only_message.ts +4 -2
- package/src/lib/waku_message/version_0.ts +8 -2
- package/src/lib/waku_relay/index.ts +13 -3
- package/src/lib/waku_store/index.ts +63 -12
- package/src/proto/filter.ts +9 -0
- package/src/proto/light_push.ts +9 -0
- package/src/proto/message.ts +9 -0
- package/src/proto/store.ts +9 -0
- 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/lib/peer_discovery_static_list.js +0 -89
- package/bundle/random_subset-75d1c511.js +0 -26
- 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/src/lib/peer_discovery_static_list.ts +0 -118
@@ -1,5 +1,4 @@
|
|
1
|
-
import { d as debug } from './
|
2
|
-
import { m as message, j as encodeMessage, k as decodeMessage } from './message-049c8b67.js';
|
1
|
+
import { m as message, k as encodeMessage, l as decodeMessage, d as debug } from './message-70dbb19b.js';
|
3
2
|
|
4
3
|
/* eslint-disable import/export */
|
5
4
|
var TopicOnlyMessage$1;
|
@@ -72,6 +71,7 @@ class TopicOnlyDecoder {
|
|
72
71
|
rateLimitProof: undefined,
|
73
72
|
timestamp: undefined,
|
74
73
|
version: undefined,
|
74
|
+
ephemeral: undefined,
|
75
75
|
});
|
76
76
|
}
|
77
77
|
async fromProtoObj(proto) {
|
package/dist/index.d.ts
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
export { DefaultPubSubTopic } from "./lib/constants";
|
2
|
+
export { DefaultUserAgent } from "./lib/waku";
|
2
3
|
export * as proto_message from "./proto/message";
|
3
4
|
export * as proto_topic_only_message from "./proto/topic_only_message";
|
4
5
|
export * as waku from "./lib/waku";
|
5
6
|
export { WakuNode } from "./lib/waku";
|
6
7
|
export * as waku_filter from "./lib/waku_filter";
|
7
|
-
export {
|
8
|
+
export { wakuFilter } from "./lib/waku_filter";
|
8
9
|
export * as waku_light_push from "./lib/waku_light_push";
|
9
|
-
export {
|
10
|
+
export { wakuLightPush, LightPushCodec, PushResponse, } from "./lib/waku_light_push";
|
10
11
|
export * as waku_relay from "./lib/waku_relay";
|
11
|
-
export {
|
12
|
+
export { wakuRelay } from "./lib/waku_relay";
|
12
13
|
export * as waku_store from "./lib/waku_store";
|
13
|
-
export { PageDirection,
|
14
|
+
export { PageDirection, wakuStore, StoreCodec, createCursor, } from "./lib/waku_store";
|
package/dist/index.js
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
export { DefaultPubSubTopic } from "./lib/constants.js";
|
2
|
+
export { DefaultUserAgent } from "./lib/waku.js";
|
2
3
|
export * as proto_message from "./proto/message.js";
|
3
4
|
export * as proto_topic_only_message from "./proto/topic_only_message.js";
|
4
5
|
export * as waku from "./lib/waku.js";
|
5
6
|
export { WakuNode } from "./lib/waku.js";
|
6
7
|
export * as waku_filter from "./lib/waku_filter/index.js";
|
7
|
-
export {
|
8
|
+
export { wakuFilter } from "./lib/waku_filter/index.js";
|
8
9
|
export * as waku_light_push from "./lib/waku_light_push/index.js";
|
9
|
-
export {
|
10
|
+
export { wakuLightPush, LightPushCodec, PushResponse, } from "./lib/waku_light_push/index.js";
|
10
11
|
export * as waku_relay from "./lib/waku_relay/index.js";
|
11
|
-
export {
|
12
|
+
export { wakuRelay } from "./lib/waku_relay/index.js";
|
12
13
|
export * as waku_store from "./lib/waku_store/index.js";
|
13
|
-
export { PageDirection,
|
14
|
+
export { PageDirection, wakuStore, StoreCodec, createCursor, } from "./lib/waku_store/index.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,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,wBAAwB,MAAM,4BAA4B,CAAC;AAEvE,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,aAAa,EACb,SAAS,EACT,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC"}
|
@@ -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,iBAAiB,CAAC;AAExD,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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"to_proto_message.js","sourceRoot":"","sources":["../../src/lib/to_proto_message.ts"],"names":[],"mappings":"AAIA,MAAM,YAAY,GAAiB;IACjC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,cAAc,EAAE,SAAS;
|
1
|
+
{"version":3,"file":"to_proto_message.js","sourceRoot":"","sources":["../../src/lib/to_proto_message.ts"],"names":[],"mappings":"AAIA,MAAM,YAAY,GAAiB;IACjC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,cAAc,EAAE,SAAS;IACzB,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;AACtC,CAAC"}
|
@@ -70,13 +70,13 @@ async function waitForConnectedPeer(waku, codecs) {
|
|
70
70
|
for (const codec of codecs) {
|
71
71
|
if (evt.detail.protocols.includes(codec)) {
|
72
72
|
log("Resolving for", codec, evt.detail.protocols);
|
73
|
-
waku.
|
73
|
+
waku.peerStore.removeEventListener("change:protocols", cb);
|
74
74
|
resolve();
|
75
75
|
break;
|
76
76
|
}
|
77
77
|
}
|
78
78
|
};
|
79
|
-
waku.
|
79
|
+
waku.peerStore.addEventListener("change:protocols", cb);
|
80
80
|
});
|
81
81
|
}
|
82
82
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"wait_for_remote_peer.js","sourceRoot":"","sources":["../../src/lib/wait_for_remote_peer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,GAAG,GAAG,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAU,EACV,SAAuB,EACvB,SAAkB;IAElB,SAAS,GAAG,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,EAAE,CAAC;IAEpB,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK;YACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACvD;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK;YACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC/D;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;QAC3C,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KACvE;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM;YACd,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACjE;IAED,IAAI,SAAS,EAAE;QACb,MAAM,eAAe,CACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EACrB,SAAS,EACT,sCAAsC,CACvC,CAAC;KACH;SAAM;QACL,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC7B;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CACjC,IAA0B,EAC1B,MAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAEjC,IAAI,KAAK,CAAC,MAAM,EAAE;QAChB,GAAG,CAAC,GAAG,MAAM,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtD,OAAO;KACR;IAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,EAAE,GAAG,CAAC,GAAyC,EAAQ,EAAE;YAC7D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBACxC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAClD,IAAI,CAAC,
|
1
|
+
{"version":3,"file":"wait_for_remote_peer.js","sourceRoot":"","sources":["../../src/lib/wait_for_remote_peer.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/waku.d.ts
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
import type { Stream } from "@libp2p/interface-connection";
|
2
2
|
import type { PeerId } from "@libp2p/interface-peer-id";
|
3
3
|
import type { Multiaddr } from "@multiformats/multiaddr";
|
4
|
-
import type { Waku } from "@waku/interfaces";
|
4
|
+
import type { Filter, LightPush, Relay, Store, Waku } from "@waku/interfaces";
|
5
5
|
import { Protocols } from "@waku/interfaces";
|
6
6
|
import type { Libp2p } from "libp2p";
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import { WakuStore } from "./waku_store";
|
7
|
+
import { FilterComponents } from "./waku_filter";
|
8
|
+
import { LightPushComponents } from "./waku_light_push";
|
9
|
+
import { StoreComponents } from "./waku_store";
|
11
10
|
export declare const DefaultPingKeepAliveValueSecs = 0;
|
12
11
|
export declare const DefaultRelayKeepAliveValueSecs: number;
|
12
|
+
export declare const DefaultUserAgent = "js-waku";
|
13
13
|
export interface WakuOptions {
|
14
14
|
/**
|
15
15
|
* Set keep alive frequency in seconds: Waku will send a `/ipfs/ping/1.0.0`
|
@@ -25,27 +25,28 @@ export interface WakuOptions {
|
|
25
25
|
* @default {@link DefaultRelayKeepAliveValueSecs}
|
26
26
|
*/
|
27
27
|
relayKeepAlive?: number;
|
28
|
+
/**
|
29
|
+
* Set the user agent string to be used in identification of the node.
|
30
|
+
* @default {@link DefaultUserAgent}
|
31
|
+
*/
|
32
|
+
userAgent?: string;
|
28
33
|
}
|
29
34
|
export declare class WakuNode implements Waku {
|
30
35
|
libp2p: Libp2p;
|
31
|
-
relay?:
|
32
|
-
store?:
|
33
|
-
filter?:
|
34
|
-
lightPush?:
|
36
|
+
relay?: Relay;
|
37
|
+
store?: Store;
|
38
|
+
filter?: Filter;
|
39
|
+
lightPush?: LightPush;
|
35
40
|
private pingKeepAliveTimers;
|
36
41
|
private relayKeepAliveTimers;
|
37
|
-
constructor(options: WakuOptions, libp2p: Libp2p, store?:
|
42
|
+
constructor(options: WakuOptions, libp2p: Libp2p, store?: (components: StoreComponents) => Store, lightPush?: (components: LightPushComponents) => LightPush, filter?: (components: FilterComponents) => Filter);
|
38
43
|
/**
|
39
44
|
* Dials to the provided peer.
|
40
45
|
*
|
41
46
|
* @param peer The peer to dial
|
42
|
-
* @param protocols Waku protocols we expect from the peer;
|
47
|
+
* @param protocols Waku protocols we expect from the peer; Defaults to mounted protocols
|
43
48
|
*/
|
44
49
|
dial(peer: PeerId | Multiaddr, protocols?: Protocols[]): Promise<Stream>;
|
45
|
-
/**
|
46
|
-
* Add peer to address book, it will be auto-dialed in the background.
|
47
|
-
*/
|
48
|
-
addPeerToAddressBook(peerId: PeerId | string, multiaddrs: Multiaddr[] | string[]): Promise<void>;
|
49
50
|
start(): Promise<void>;
|
50
51
|
stop(): Promise<void>;
|
51
52
|
isStarted(): boolean;
|
package/dist/lib/waku.js
CHANGED
@@ -1,23 +1,30 @@
|
|
1
|
-
import { peerIdFromString } from "@libp2p/peer-id";
|
2
|
-
import { multiaddr } from "@multiformats/multiaddr";
|
3
1
|
import { Protocols } from "@waku/interfaces";
|
4
2
|
import debug from "debug";
|
5
3
|
import { FilterCodec } from "./waku_filter/index.js";
|
6
4
|
import { LightPushCodec } from "./waku_light_push/index.js";
|
7
5
|
import { EncoderV0 } from "./waku_message/version_0.js";
|
8
|
-
import { RelayCodecs, RelayPingContentTopic } from "./waku_relay/constants.js";
|
9
6
|
import * as relayConstants from "./waku_relay/constants.js";
|
7
|
+
import { RelayCodecs, RelayPingContentTopic } from "./waku_relay/constants.js";
|
10
8
|
import { StoreCodec } from "./waku_store/index.js";
|
11
9
|
export const DefaultPingKeepAliveValueSecs = 0;
|
12
10
|
export const DefaultRelayKeepAliveValueSecs = 5 * 60;
|
11
|
+
export const DefaultUserAgent = "js-waku";
|
13
12
|
const log = debug("waku:waku");
|
14
13
|
export class WakuNode {
|
15
14
|
constructor(options, libp2p, store, lightPush, filter) {
|
16
15
|
this.libp2p = libp2p;
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
const { peerStore, connectionManager, registrar } = libp2p;
|
17
|
+
const components = { peerStore, connectionManager, registrar };
|
18
|
+
if (store) {
|
19
|
+
this.store = store(components);
|
20
|
+
}
|
21
|
+
if (filter) {
|
22
|
+
this.filter = filter(components);
|
23
|
+
}
|
24
|
+
if (lightPush) {
|
25
|
+
this.lightPush = lightPush(components);
|
26
|
+
}
|
27
|
+
if (isRelay(libp2p.pubsub)) {
|
21
28
|
this.relay = libp2p.pubsub;
|
22
29
|
}
|
23
30
|
log("Waku node created", this.libp2p.peerId.toString(), `relay: ${!!this.relay}, store: ${!!this.store}, light push: ${!!this
|
@@ -45,15 +52,29 @@ export class WakuNode {
|
|
45
52
|
libp2p.connectionManager.addEventListener("peer:disconnect", (evt) => {
|
46
53
|
this.stopKeepAlive(evt.detail.remotePeer);
|
47
54
|
});
|
55
|
+
// Trivial handling of discovered peers, to be refined.
|
56
|
+
libp2p.addEventListener("peer:discovery", (evt) => {
|
57
|
+
const peerId = evt.detail.id;
|
58
|
+
log(`Found peer ${peerId.toString()}, dialing.`);
|
59
|
+
libp2p.dial(peerId).catch((err) => {
|
60
|
+
log(`Fail to dial ${peerId}`, err);
|
61
|
+
});
|
62
|
+
});
|
48
63
|
}
|
49
64
|
/**
|
50
65
|
* Dials to the provided peer.
|
51
66
|
*
|
52
67
|
* @param peer The peer to dial
|
53
|
-
* @param protocols Waku protocols we expect from the peer;
|
68
|
+
* @param protocols Waku protocols we expect from the peer; Defaults to mounted protocols
|
54
69
|
*/
|
55
70
|
async dial(peer, protocols) {
|
56
|
-
const _protocols = protocols ?? [
|
71
|
+
const _protocols = protocols ?? [];
|
72
|
+
if (typeof protocols === "undefined") {
|
73
|
+
this.relay && _protocols.push(Protocols.Relay);
|
74
|
+
this.store && _protocols.push(Protocols.Store);
|
75
|
+
this.filter && _protocols.push(Protocols.Filter);
|
76
|
+
this.lightPush && _protocols.push(Protocols.LightPush);
|
77
|
+
}
|
57
78
|
const codecs = [];
|
58
79
|
if (_protocols.includes(Protocols.Relay)) {
|
59
80
|
RelayCodecs.forEach((codec) => codecs.push(codec));
|
@@ -67,31 +88,8 @@ export class WakuNode {
|
|
67
88
|
if (_protocols.includes(Protocols.Filter)) {
|
68
89
|
codecs.push(FilterCodec);
|
69
90
|
}
|
70
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
71
|
-
// @ts-ignore: new Multiaddr is not backward compatible
|
72
91
|
return this.libp2p.dialProtocol(peer, codecs);
|
73
92
|
}
|
74
|
-
/**
|
75
|
-
* Add peer to address book, it will be auto-dialed in the background.
|
76
|
-
*/
|
77
|
-
async addPeerToAddressBook(peerId, multiaddrs) {
|
78
|
-
let peer;
|
79
|
-
if (typeof peerId === "string") {
|
80
|
-
peer = peerIdFromString(peerId);
|
81
|
-
}
|
82
|
-
else {
|
83
|
-
peer = peerId;
|
84
|
-
}
|
85
|
-
const addresses = multiaddrs.map((addr) => {
|
86
|
-
if (typeof addr === "string") {
|
87
|
-
return multiaddr(addr);
|
88
|
-
}
|
89
|
-
else {
|
90
|
-
return addr;
|
91
|
-
}
|
92
|
-
});
|
93
|
-
await this.libp2p.peerStore.addressBook.set(peer, addresses);
|
94
|
-
}
|
95
93
|
async start() {
|
96
94
|
await this.libp2p.start();
|
97
95
|
}
|
@@ -160,7 +158,7 @@ export class WakuNode {
|
|
160
158
|
this.relayKeepAliveTimers = {};
|
161
159
|
}
|
162
160
|
}
|
163
|
-
function
|
161
|
+
function isRelay(pubsub) {
|
164
162
|
if (pubsub) {
|
165
163
|
try {
|
166
164
|
return pubsub.multicodecs.includes(relayConstants.RelayCodecs[relayConstants.RelayCodecs.length - 1]);
|
package/dist/lib/waku.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"waku.js","sourceRoot":"","sources":["../../src/lib/waku.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"waku.js","sourceRoot":"","sources":["../../src/lib/waku.ts"],"names":[],"mappings":"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"}
|
@@ -1,9 +1,15 @@
|
|
1
|
-
import type {
|
2
|
-
import type {
|
3
|
-
import type {
|
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 { Filter } from "@waku/interfaces";
|
4
5
|
import { ContentFilter } from "./filter_rpc";
|
5
6
|
export { ContentFilter };
|
6
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
|
+
}
|
7
13
|
export interface CreateOptions {
|
8
14
|
/**
|
9
15
|
* The PubSub Topic to use. Defaults to {@link DefaultPubSubTopic}.
|
@@ -16,35 +22,4 @@ export interface CreateOptions {
|
|
16
22
|
pubSubTopic?: string;
|
17
23
|
}
|
18
24
|
export declare type UnsubscribeFunction = () => Promise<void>;
|
19
|
-
|
20
|
-
* Implements client side of the [Waku v2 Filter protocol](https://rfc.vac.dev/spec/12/).
|
21
|
-
*
|
22
|
-
* Note this currently only works in NodeJS when the Waku node is listening on a port, see:
|
23
|
-
* - https://github.com/status-im/go-waku/issues/245
|
24
|
-
* - https://github.com/status-im/nwaku/issues/948
|
25
|
-
*/
|
26
|
-
export declare class WakuFilter implements Filter {
|
27
|
-
libp2p: Libp2p;
|
28
|
-
pubSubTopic: string;
|
29
|
-
private subscriptions;
|
30
|
-
private decoders;
|
31
|
-
constructor(libp2p: Libp2p, options?: CreateOptions);
|
32
|
-
/**
|
33
|
-
* @param decoders Array of Decoders to use to decode messages, it also specifies the content topics.
|
34
|
-
* @param callback A function that will be called on each message returned by the filter.
|
35
|
-
* @param opts The FilterSubscriptionOpts used to narrow which messages are returned, and which peer to connect to.
|
36
|
-
* @returns Unsubscribe function that can be used to end the subscription.
|
37
|
-
*/
|
38
|
-
subscribe<T extends DecodedMessage>(decoders: Decoder<T>[], callback: Callback<T>, opts?: ProtocolOptions): Promise<UnsubscribeFunction>;
|
39
|
-
private onRequest;
|
40
|
-
private pushMessages;
|
41
|
-
private addCallback;
|
42
|
-
private deleteCallback;
|
43
|
-
private addDecoders;
|
44
|
-
private deleteDecoders;
|
45
|
-
private unsubscribe;
|
46
|
-
private newStream;
|
47
|
-
private getPeer;
|
48
|
-
peers(): Promise<Peer[]>;
|
49
|
-
randomPeer(): Promise<Peer | undefined>;
|
50
|
-
}
|
25
|
+
export declare function wakuFilter(init?: Partial<CreateOptions>): (components: FilterComponents) => Filter;
|
@@ -17,13 +17,13 @@ const log = debug("waku:filter");
|
|
17
17
|
* - https://github.com/status-im/go-waku/issues/245
|
18
18
|
* - https://github.com/status-im/nwaku/issues/948
|
19
19
|
*/
|
20
|
-
|
21
|
-
constructor(
|
22
|
-
this.
|
20
|
+
class WakuFilter {
|
21
|
+
constructor(components, options) {
|
22
|
+
this.components = components;
|
23
23
|
this.subscriptions = new Map();
|
24
24
|
this.decoders = new Map();
|
25
25
|
this.pubSubTopic = options?.pubSubTopic ?? DefaultPubSubTopic;
|
26
|
-
this.
|
26
|
+
this.components.registrar
|
27
27
|
.handle(FilterCodec, this.onRequest.bind(this))
|
28
28
|
.catch((e) => log("Failed to register filter protocol", e));
|
29
29
|
}
|
@@ -62,6 +62,9 @@ export class WakuFilter {
|
|
62
62
|
this.deleteCallback(requestId);
|
63
63
|
};
|
64
64
|
}
|
65
|
+
get peerStore() {
|
66
|
+
return this.components.peerStore;
|
67
|
+
}
|
65
68
|
onRequest(streamData) {
|
66
69
|
log("Receiving message push");
|
67
70
|
try {
|
@@ -157,7 +160,7 @@ export class WakuFilter {
|
|
157
160
|
}
|
158
161
|
}
|
159
162
|
async newStream(peer) {
|
160
|
-
const connections = this.
|
163
|
+
const connections = this.components.connectionManager.getConnections(peer.id);
|
161
164
|
const connection = selectConnection(connections);
|
162
165
|
if (!connection) {
|
163
166
|
throw new Error("Failed to get a connection to the peer");
|
@@ -165,17 +168,20 @@ export class WakuFilter {
|
|
165
168
|
return connection.newStream(FilterCodec);
|
166
169
|
}
|
167
170
|
async getPeer(peerId) {
|
168
|
-
const res = await selectPeerForProtocol(this.
|
171
|
+
const res = await selectPeerForProtocol(this.components.peerStore, [FilterCodec], peerId);
|
169
172
|
if (!res) {
|
170
173
|
throw new Error(`Failed to select peer for ${FilterCodec}`);
|
171
174
|
}
|
172
175
|
return res.peer;
|
173
176
|
}
|
174
177
|
async peers() {
|
175
|
-
return getPeersForProtocol(this.
|
178
|
+
return getPeersForProtocol(this.components.peerStore, [FilterCodec]);
|
176
179
|
}
|
177
180
|
async randomPeer() {
|
178
181
|
return selectRandomPeer(await this.peers());
|
179
182
|
}
|
180
183
|
}
|
184
|
+
export function wakuFilter(init = {}) {
|
185
|
+
return (components) => new WakuFilter(components, init);
|
186
|
+
}
|
181
187
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/waku_filter/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/waku_filter/index.ts"],"names":[],"mappings":"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"}
|
@@ -1,9 +1,13 @@
|
|
1
|
-
import
|
2
|
-
import type {
|
3
|
-
import {
|
1
|
+
import { ConnectionManager } from "@libp2p/interface-connection-manager";
|
2
|
+
import type { PeerStore } from "@libp2p/interface-peer-store";
|
3
|
+
import type { LightPush } from "@waku/interfaces";
|
4
4
|
import { PushResponse } from "../../proto/light_push";
|
5
5
|
export declare const LightPushCodec = "/vac/waku/lightpush/2.0.0-beta1";
|
6
6
|
export { PushResponse };
|
7
|
+
export interface LightPushComponents {
|
8
|
+
peerStore: PeerStore;
|
9
|
+
connectionManager: ConnectionManager;
|
10
|
+
}
|
7
11
|
export interface CreateOptions {
|
8
12
|
/**
|
9
13
|
* The PubSub Topic to use. Defaults to {@link DefaultPubSubTopic}.
|
@@ -15,24 +19,4 @@ export interface CreateOptions {
|
|
15
19
|
*/
|
16
20
|
pubSubTopic?: string;
|
17
21
|
}
|
18
|
-
|
19
|
-
* Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
|
20
|
-
*/
|
21
|
-
export declare class WakuLightPush {
|
22
|
-
libp2p: Libp2p;
|
23
|
-
pubSubTopic: string;
|
24
|
-
constructor(libp2p: Libp2p, options?: CreateOptions);
|
25
|
-
push(encoder: Encoder, message: Partial<Message>, opts?: ProtocolOptions): Promise<SendResult>;
|
26
|
-
/**
|
27
|
-
* Returns known peers from the address book (`libp2p.peerStore`) that support
|
28
|
-
* light push protocol. Waku may or may not be currently connected to these
|
29
|
-
* peers.
|
30
|
-
*/
|
31
|
-
peers(): Promise<Peer[]>;
|
32
|
-
/**
|
33
|
-
* Returns a random peer that supports light push protocol from the address
|
34
|
-
* book (`libp2p.peerStore`). Waku may or may not be currently connected to
|
35
|
-
* this peer.
|
36
|
-
*/
|
37
|
-
randomPeer(): Promise<Peer | undefined>;
|
38
|
-
}
|
22
|
+
export declare function wakuLightPush(init?: Partial<CreateOptions>): (components: LightPushComponents) => LightPush;
|
@@ -14,19 +14,19 @@ export { PushResponse };
|
|
14
14
|
/**
|
15
15
|
* Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
|
16
16
|
*/
|
17
|
-
|
18
|
-
constructor(
|
19
|
-
this.
|
17
|
+
class WakuLightPush {
|
18
|
+
constructor(components, options) {
|
19
|
+
this.components = components;
|
20
20
|
this.pubSubTopic = options?.pubSubTopic ?? DefaultPubSubTopic;
|
21
21
|
}
|
22
22
|
async push(encoder, message, opts) {
|
23
23
|
const pubSubTopic = opts?.pubSubTopic ? opts.pubSubTopic : this.pubSubTopic;
|
24
|
-
const res = await selectPeerForProtocol(this.
|
24
|
+
const res = await selectPeerForProtocol(this.components.peerStore, [LightPushCodec], opts?.peerId);
|
25
25
|
if (!res) {
|
26
26
|
throw new Error("Failed to get a peer");
|
27
27
|
}
|
28
28
|
const { peer } = res;
|
29
|
-
const connections = this.
|
29
|
+
const connections = this.components.connectionManager.getConnections(peer.id);
|
30
30
|
const connection = selectConnection(connections);
|
31
31
|
if (!connection)
|
32
32
|
throw "Failed to get a connection to the peer";
|
@@ -69,7 +69,7 @@ export class WakuLightPush {
|
|
69
69
|
* peers.
|
70
70
|
*/
|
71
71
|
async peers() {
|
72
|
-
return getPeersForProtocol(this.
|
72
|
+
return getPeersForProtocol(this.components.peerStore, [LightPushCodec]);
|
73
73
|
}
|
74
74
|
/**
|
75
75
|
* Returns a random peer that supports light push protocol from the address
|
@@ -79,5 +79,11 @@ export class WakuLightPush {
|
|
79
79
|
async randomPeer() {
|
80
80
|
return selectRandomPeer(await this.peers());
|
81
81
|
}
|
82
|
+
get peerStore() {
|
83
|
+
return this.components.peerStore;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
export function wakuLightPush(init = {}) {
|
87
|
+
return (components) => new WakuLightPush(components, init);
|
82
88
|
}
|
83
89
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/waku_light_push/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/waku_light_push/index.ts"],"names":[],"mappings":"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"}
|
@@ -1,10 +1,11 @@
|
|
1
|
-
import type {
|
1
|
+
import type { DecodedMessage, Decoder, ProtoMessage } from "@waku/interfaces";
|
2
2
|
import * as proto from "../../proto/topic_only_message";
|
3
|
-
export declare class TopicOnlyMessage implements
|
3
|
+
export declare class TopicOnlyMessage implements DecodedMessage {
|
4
4
|
private proto;
|
5
5
|
payload: undefined;
|
6
6
|
rateLimitProof: undefined;
|
7
7
|
timestamp: undefined;
|
8
|
+
ephemeral: undefined;
|
8
9
|
constructor(proto: proto.TopicOnlyMessage);
|
9
10
|
get contentTopic(): string;
|
10
11
|
}
|