@waku/core 0.0.22 → 0.0.23
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 +27 -0
- package/bundle/base_protocol-84d9b670.js +1198 -0
- package/bundle/index.js +1132 -1251
- package/bundle/lib/base_protocol.js +2 -116
- package/bundle/lib/message/version_0.js +1 -1
- package/bundle/lib/predefined_bootstrap_nodes.js +6 -6
- package/bundle/{version_0-86411fdf.js → version_0-74b4b9db.js} +875 -794
- package/dist/.tsbuildinfo +1 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/base_protocol.d.ts +18 -5
- package/dist/lib/base_protocol.js +25 -8
- package/dist/lib/base_protocol.js.map +1 -1
- package/dist/lib/connection_manager.js +10 -10
- package/dist/lib/connection_manager.js.map +1 -1
- package/dist/lib/filter/filter_rpc.js +4 -4
- package/dist/lib/filter/index.d.ts +4 -0
- package/dist/lib/filter/index.js +15 -11
- package/dist/lib/filter/index.js.map +1 -1
- package/dist/lib/filterPeers.d.ts +10 -0
- package/dist/lib/filterPeers.js +31 -0
- package/dist/lib/filterPeers.js.map +1 -0
- package/dist/lib/keep_alive_manager.d.ts +3 -2
- package/dist/lib/keep_alive_manager.js +27 -8
- package/dist/lib/keep_alive_manager.js.map +1 -1
- package/dist/lib/light_push/index.js +62 -33
- package/dist/lib/light_push/index.js.map +1 -1
- package/dist/lib/light_push/push_rpc.js +2 -2
- package/dist/lib/message/version_0.d.ts +1 -1
- package/dist/lib/message/version_0.js +3 -3
- package/dist/lib/message/version_0.js.map +1 -1
- package/dist/lib/predefined_bootstrap_nodes.js +6 -6
- package/dist/lib/store/history_rpc.js +3 -3
- package/dist/lib/store/index.d.ts +0 -5
- package/dist/lib/store/index.js +54 -37
- package/dist/lib/store/index.js.map +1 -1
- package/dist/lib/stream_manager.d.ts +15 -0
- package/dist/lib/stream_manager.js +53 -0
- package/dist/lib/stream_manager.js.map +1 -0
- package/dist/lib/to_proto_message.js +1 -1
- package/dist/lib/waku.d.ts +2 -2
- package/dist/lib/waku.js +1 -1
- package/package.json +15 -21
- package/src/index.ts +6 -9
- package/src/lib/base_protocol.ts +49 -18
- package/src/lib/connection_manager.ts +17 -13
- package/src/lib/filter/filter_rpc.ts +4 -4
- package/src/lib/filter/index.ts +21 -22
- package/src/lib/filterPeers.ts +43 -0
- package/src/lib/keep_alive_manager.ts +33 -9
- package/src/lib/light_push/index.ts +103 -47
- package/src/lib/light_push/push_rpc.ts +2 -2
- package/src/lib/message/version_0.ts +8 -5
- package/src/lib/predefined_bootstrap_nodes.ts +7 -7
- package/src/lib/store/history_rpc.ts +4 -4
- package/src/lib/store/index.ts +70 -51
- package/src/lib/stream_manager.ts +69 -0
- package/src/lib/to_proto_message.ts +1 -1
- package/src/lib/wait_for_remote_peer.ts +1 -1
- package/src/lib/waku.ts +3 -3
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/filter/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/filter/index.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { Peer } from "@libp2p/interface/peer-store";
|
2
|
+
/**
|
3
|
+
* Retrieves a list of peers based on the specified criteria.
|
4
|
+
*
|
5
|
+
* @param peers - The list of peers to filter from.
|
6
|
+
* @param numPeers - The total number of peers to retrieve. If 0, all peers are returned.
|
7
|
+
* @param maxBootstrapPeers - The maximum number of bootstrap peers to retrieve.
|
8
|
+
* @returns A Promise that resolves to an array of peers based on the specified criteria.
|
9
|
+
*/
|
10
|
+
export declare function filterPeers(peers: Peer[], numPeers: number, maxBootstrapPeers: number): Promise<Peer[]>;
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { Tags } from "@waku/interfaces";
|
2
|
+
/**
|
3
|
+
* Retrieves a list of peers based on the specified criteria.
|
4
|
+
*
|
5
|
+
* @param peers - The list of peers to filter from.
|
6
|
+
* @param numPeers - The total number of peers to retrieve. If 0, all peers are returned.
|
7
|
+
* @param maxBootstrapPeers - The maximum number of bootstrap peers to retrieve.
|
8
|
+
* @returns A Promise that resolves to an array of peers based on the specified criteria.
|
9
|
+
*/
|
10
|
+
export async function filterPeers(peers, numPeers, maxBootstrapPeers) {
|
11
|
+
// Collect the bootstrap peers up to the specified maximum
|
12
|
+
const bootstrapPeers = peers
|
13
|
+
.filter((peer) => peer.tags.has(Tags.BOOTSTRAP))
|
14
|
+
.slice(0, maxBootstrapPeers);
|
15
|
+
// Collect non-bootstrap peers
|
16
|
+
const nonBootstrapPeers = peers.filter((peer) => !peer.tags.has(Tags.BOOTSTRAP));
|
17
|
+
// If numPeers is 0, return all peers
|
18
|
+
if (numPeers === 0) {
|
19
|
+
return [...bootstrapPeers, ...nonBootstrapPeers];
|
20
|
+
}
|
21
|
+
// Initialize the list of selected peers with the bootstrap peers
|
22
|
+
const selectedPeers = [...bootstrapPeers];
|
23
|
+
// Fill up to numPeers with remaining random peers if needed
|
24
|
+
while (selectedPeers.length < numPeers && nonBootstrapPeers.length > 0) {
|
25
|
+
const randomIndex = Math.floor(Math.random() * nonBootstrapPeers.length);
|
26
|
+
const randomPeer = nonBootstrapPeers.splice(randomIndex, 1)[0];
|
27
|
+
selectedPeers.push(randomPeer);
|
28
|
+
}
|
29
|
+
return selectedPeers;
|
30
|
+
}
|
31
|
+
//# sourceMappingURL=filterPeers.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"filterPeers.js","sourceRoot":"","sources":["../../src/lib/filterPeers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,QAAgB,EAChB,iBAAyB;IAEzB,0DAA0D;IAC1D,MAAM,cAAc,GAAG,KAAK;SACzB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/C,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAE/B,8BAA8B;IAC9B,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CACzC,CAAC;IAEF,qCAAqC;IACrC,IAAI,QAAQ,KAAK,CAAC,EAAE;QAClB,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,iBAAiB,CAAC,CAAC;KAClD;IAED,iEAAiE;IACjE,MAAM,aAAa,GAAW,CAAC,GAAG,cAAc,CAAC,CAAC;IAElD,4DAA4D;IAC5D,OAAO,aAAa,CAAC,MAAM,GAAG,QAAQ,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;QACtE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAChC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
@@ -1,4 +1,5 @@
|
|
1
|
-
import type { PeerId } from "@libp2p/interface
|
1
|
+
import type { PeerId } from "@libp2p/interface/peer-id";
|
2
|
+
import type { PeerStore } from "@libp2p/interface/peer-store";
|
2
3
|
import type { IRelay } from "@waku/interfaces";
|
3
4
|
import type { KeepAliveOptions } from "@waku/interfaces";
|
4
5
|
import type { PingService } from "libp2p/ping";
|
@@ -9,7 +10,7 @@ export declare class KeepAliveManager {
|
|
9
10
|
private options;
|
10
11
|
private relay?;
|
11
12
|
constructor(options: KeepAliveOptions, relay?: IRelay);
|
12
|
-
start(peerId: PeerId, libp2pPing: PingService): void;
|
13
|
+
start(peerId: PeerId, libp2pPing: PingService, peerStore: PeerStore): void;
|
13
14
|
stop(peerId: PeerId): void;
|
14
15
|
stopAll(): void;
|
15
16
|
}
|
@@ -1,5 +1,6 @@
|
|
1
|
+
import { utf8ToBytes } from "@waku/utils/bytes";
|
1
2
|
import debug from "debug";
|
2
|
-
import { createEncoder } from "
|
3
|
+
import { createEncoder } from "./message/version_0.js";
|
3
4
|
export const RelayPingContentTopic = "/relay-ping/1/ping/null";
|
4
5
|
const log = debug("waku:keep-alive");
|
5
6
|
export class KeepAliveManager {
|
@@ -13,16 +14,34 @@ export class KeepAliveManager {
|
|
13
14
|
this.options = options;
|
14
15
|
this.relay = relay;
|
15
16
|
}
|
16
|
-
start(peerId, libp2pPing) {
|
17
|
-
// Just in case a timer already
|
17
|
+
start(peerId, libp2pPing, peerStore) {
|
18
|
+
// Just in case a timer already exists for this peer
|
18
19
|
this.stop(peerId);
|
19
20
|
const { pingKeepAlive: pingPeriodSecs, relayKeepAlive: relayPeriodSecs } = this.options;
|
20
21
|
const peerIdStr = peerId.toString();
|
21
22
|
if (pingPeriodSecs !== 0) {
|
22
23
|
const interval = setInterval(() => {
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
void (async () => {
|
25
|
+
try {
|
26
|
+
// ping the peer for keep alive
|
27
|
+
// also update the peer store with the latency
|
28
|
+
const ping = await libp2pPing.ping(peerId);
|
29
|
+
log(`Ping succeeded (${peerIdStr})`, ping);
|
30
|
+
try {
|
31
|
+
await peerStore.patch(peerId, {
|
32
|
+
metadata: {
|
33
|
+
ping: utf8ToBytes(ping.toString())
|
34
|
+
}
|
35
|
+
});
|
36
|
+
}
|
37
|
+
catch (e) {
|
38
|
+
log("Failed to update ping", e);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
catch (e) {
|
42
|
+
log(`Ping failed (${peerIdStr})`, e);
|
43
|
+
}
|
44
|
+
})();
|
26
45
|
}, pingPeriodSecs * 1000);
|
27
46
|
this.pingKeepAliveTimers.set(peerIdStr, interval);
|
28
47
|
}
|
@@ -30,7 +49,7 @@ export class KeepAliveManager {
|
|
30
49
|
if (relay && relayPeriodSecs !== 0) {
|
31
50
|
const encoder = createEncoder({
|
32
51
|
contentTopic: RelayPingContentTopic,
|
33
|
-
ephemeral: true
|
52
|
+
ephemeral: true
|
34
53
|
});
|
35
54
|
const interval = setInterval(() => {
|
36
55
|
log("Sending Waku Relay ping message");
|
@@ -55,7 +74,7 @@ export class KeepAliveManager {
|
|
55
74
|
stopAll() {
|
56
75
|
for (const timer of [
|
57
76
|
...Object.values(this.pingKeepAliveTimers),
|
58
|
-
...Object.values(this.relayKeepAliveTimers)
|
77
|
+
...Object.values(this.relayKeepAliveTimers)
|
59
78
|
]) {
|
60
79
|
clearInterval(timer);
|
61
80
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keep_alive_manager.js","sourceRoot":"","sources":["../../src/lib/keep_alive_manager.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"keep_alive_manager.js","sourceRoot":"","sources":["../../src/lib/keep_alive_manager.ts"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { SendError
|
1
|
+
import { SendError } from "@waku/interfaces";
|
2
2
|
import { PushResponse } from "@waku/proto";
|
3
3
|
import { isSizeValid } from "@waku/utils";
|
4
4
|
import debug from "debug";
|
@@ -17,60 +17,89 @@ export { PushResponse };
|
|
17
17
|
*/
|
18
18
|
class LightPush extends BaseProtocol {
|
19
19
|
options;
|
20
|
+
NUM_PEERS_PROTOCOL = 1;
|
20
21
|
constructor(libp2p, options) {
|
21
22
|
super(LightPushCodec, libp2p.components);
|
22
23
|
this.options = options || {};
|
23
24
|
}
|
24
|
-
async
|
25
|
-
const { pubSubTopic = DefaultPubSubTopic } = this.options;
|
26
|
-
const peer = await this.getPeer(opts?.peerId);
|
27
|
-
const stream = await this.newStream(peer);
|
28
|
-
const recipients = [];
|
29
|
-
let error = undefined;
|
25
|
+
async preparePushMessage(encoder, message, pubSubTopic) {
|
30
26
|
try {
|
31
27
|
if (!isSizeValid(message.payload)) {
|
32
|
-
log("Failed to send waku light push: message is bigger
|
33
|
-
return {
|
34
|
-
recipients,
|
35
|
-
error: SendError.SIZE_TOO_BIG,
|
36
|
-
};
|
28
|
+
log("Failed to send waku light push: message is bigger than 1MB");
|
29
|
+
return { query: null, error: SendError.SIZE_TOO_BIG };
|
37
30
|
}
|
38
31
|
const protoMessage = await encoder.toProtoObj(message);
|
39
32
|
if (!protoMessage) {
|
40
33
|
log("Failed to encode to protoMessage, aborting push");
|
41
34
|
return {
|
42
|
-
|
43
|
-
error: SendError.ENCODE_FAILED
|
35
|
+
query: null,
|
36
|
+
error: SendError.ENCODE_FAILED
|
44
37
|
};
|
45
38
|
}
|
46
39
|
const query = PushRpc.createRequest(protoMessage, pubSubTopic);
|
47
|
-
|
40
|
+
return { query, error: null };
|
41
|
+
}
|
42
|
+
catch (error) {
|
43
|
+
log("Failed to prepare push message", error);
|
44
|
+
return {
|
45
|
+
query: null,
|
46
|
+
error: SendError.GENERIC_FAIL
|
47
|
+
};
|
48
|
+
}
|
49
|
+
}
|
50
|
+
async send(encoder, message) {
|
51
|
+
const { pubSubTopic = DefaultPubSubTopic } = this.options;
|
52
|
+
const recipients = [];
|
53
|
+
const { query, error: preparationError } = await this.preparePushMessage(encoder, message, pubSubTopic);
|
54
|
+
if (preparationError || !query) {
|
55
|
+
return {
|
56
|
+
recipients,
|
57
|
+
errors: [preparationError]
|
58
|
+
};
|
59
|
+
}
|
60
|
+
const peers = await this.getPeers({
|
61
|
+
maxBootstrapPeers: 1,
|
62
|
+
numPeers: this.NUM_PEERS_PROTOCOL
|
63
|
+
});
|
64
|
+
const promises = peers.map(async (peer) => {
|
65
|
+
let error;
|
66
|
+
const stream = await this.getStream(peer);
|
48
67
|
try {
|
49
|
-
const
|
50
|
-
|
51
|
-
bytes
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
68
|
+
const res = await pipe([query.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
|
69
|
+
try {
|
70
|
+
const bytes = new Uint8ArrayList();
|
71
|
+
res.forEach((chunk) => {
|
72
|
+
bytes.append(chunk);
|
73
|
+
});
|
74
|
+
const response = PushRpc.decode(bytes).response;
|
75
|
+
if (response?.isSuccess) {
|
76
|
+
recipients.some((recipient) => recipient.equals(peer.id)) ||
|
77
|
+
recipients.push(peer.id);
|
78
|
+
}
|
79
|
+
else {
|
80
|
+
log("No response in PushRPC");
|
81
|
+
error = SendError.NO_RPC_RESPONSE;
|
82
|
+
}
|
56
83
|
}
|
57
|
-
|
58
|
-
log("
|
59
|
-
error = SendError.
|
84
|
+
catch (err) {
|
85
|
+
log("Failed to decode push reply", err);
|
86
|
+
error = SendError.DECODE_FAILED;
|
60
87
|
}
|
61
88
|
}
|
62
89
|
catch (err) {
|
63
|
-
log("Failed to
|
64
|
-
error = SendError.
|
90
|
+
log("Failed to send waku light push request", err);
|
91
|
+
error = SendError.GENERIC_FAIL;
|
65
92
|
}
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
93
|
+
return { recipients, error };
|
94
|
+
});
|
95
|
+
const results = await Promise.allSettled(promises);
|
96
|
+
const errors = results
|
97
|
+
.filter((result) => result.status === "fulfilled")
|
98
|
+
.map((result) => result.value.error)
|
99
|
+
.filter((error) => error !== undefined);
|
71
100
|
return {
|
72
|
-
error,
|
73
101
|
recipients,
|
102
|
+
errors
|
74
103
|
};
|
75
104
|
}
|
76
105
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/light_push/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/light_push/index.ts"],"names":[],"mappings":"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"}
|
@@ -32,7 +32,7 @@ export declare class Encoder implements IEncoder {
|
|
32
32
|
* { @link @waku/interfaces.Relay.send } to automatically encode outgoing
|
33
33
|
* messages.
|
34
34
|
*/
|
35
|
-
export declare function createEncoder({ contentTopic, ephemeral, metaSetter
|
35
|
+
export declare function createEncoder({ contentTopic, ephemeral, metaSetter }: EncoderOptions): Encoder;
|
36
36
|
export declare class Decoder implements IDecoder<DecodedMessage> {
|
37
37
|
contentTopic: string;
|
38
38
|
constructor(contentTopic: string);
|
@@ -74,7 +74,7 @@ export class Encoder {
|
|
74
74
|
timestamp: BigInt(timestamp.valueOf()) * OneMillion,
|
75
75
|
meta: undefined,
|
76
76
|
rateLimitProof: message.rateLimitProof,
|
77
|
-
ephemeral: this.ephemeral
|
77
|
+
ephemeral: this.ephemeral
|
78
78
|
};
|
79
79
|
if (this.metaSetter) {
|
80
80
|
const meta = this.metaSetter(protoMessage);
|
@@ -92,7 +92,7 @@ export class Encoder {
|
|
92
92
|
* { @link @waku/interfaces.Relay.send } to automatically encode outgoing
|
93
93
|
* messages.
|
94
94
|
*/
|
95
|
-
export function createEncoder({ contentTopic, ephemeral, metaSetter
|
95
|
+
export function createEncoder({ contentTopic, ephemeral, metaSetter }) {
|
96
96
|
return new Encoder(contentTopic, ephemeral, metaSetter);
|
97
97
|
}
|
98
98
|
export class Decoder {
|
@@ -113,7 +113,7 @@ export class Decoder {
|
|
113
113
|
timestamp: protoMessage.timestamp ?? undefined,
|
114
114
|
meta: protoMessage.meta ?? undefined,
|
115
115
|
rateLimitProof: protoMessage.rateLimitProof ?? undefined,
|
116
|
-
ephemeral: protoMessage.ephemeral ?? false
|
116
|
+
ephemeral: protoMessage.ephemeral ?? false
|
117
117
|
});
|
118
118
|
}
|
119
119
|
async fromProtoObj(pubSubTopic, proto) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version_0.js","sourceRoot":"","sources":["../../../src/lib/message/version_0.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAS,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,OAAO,cAAc;
|
1
|
+
{"version":3,"file":"version_0.js","sourceRoot":"","sources":["../../../src/lib/message/version_0.ts"],"names":[],"mappings":"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"}
|
@@ -39,16 +39,16 @@ export const fleets = {
|
|
39
39
|
"waku-websocket": {
|
40
40
|
"node-01.ac-cn-hongkong-c.wakuv2.prod": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.prod.statusim.net/tcp/8000/wss/p2p/16Uiu2HAm4v86W3bmT1BiH6oSPzcsSr24iDQpSN5Qa992BCjjwgrD",
|
41
41
|
"node-01.do-ams3.wakuv2.prod": "/dns4/node-01.do-ams3.wakuv2.prod.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmL5okWopX7NqZWBUKVqW8iUxCEmd5GMHLVPwCgzYzQv3e",
|
42
|
-
"node-01.gc-us-central1-a.wakuv2.prod": "/dns4/node-01.gc-us-central1-a.wakuv2.prod.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmVkKntsECaYfefR1V2yCR79CegLATuTPE6B9TxgxBiiiA"
|
43
|
-
}
|
42
|
+
"node-01.gc-us-central1-a.wakuv2.prod": "/dns4/node-01.gc-us-central1-a.wakuv2.prod.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmVkKntsECaYfefR1V2yCR79CegLATuTPE6B9TxgxBiiiA"
|
43
|
+
}
|
44
44
|
},
|
45
45
|
"wakuv2.test": {
|
46
46
|
"waku-websocket": {
|
47
47
|
"node-01.ac-cn-hongkong-c.wakuv2.test": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm",
|
48
48
|
"node-01.do-ams3.wakuv2.test": "/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ",
|
49
|
-
"node-01.gc-us-central1-a.wakuv2.test": "/dns4/node-01.gc-us-central1-a.wakuv2.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmJb2e28qLXxT5kZxVUUoJt72EMzNGXB47Rxx5hw3q4YjS"
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
49
|
+
"node-01.gc-us-central1-a.wakuv2.test": "/dns4/node-01.gc-us-central1-a.wakuv2.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmJb2e28qLXxT5kZxVUUoJt72EMzNGXB47Rxx5hw3q4YjS"
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
53
|
};
|
54
54
|
//# sourceMappingURL=predefined_bootstrap_nodes.js.map
|
@@ -28,7 +28,7 @@ export class HistoryRpc {
|
|
28
28
|
const pagingInfo = {
|
29
29
|
pageSize: BigInt(params.pageSize),
|
30
30
|
cursor: params.cursor,
|
31
|
-
direction
|
31
|
+
direction
|
32
32
|
};
|
33
33
|
let startTime, endTime;
|
34
34
|
if (params.startTime) {
|
@@ -46,9 +46,9 @@ export class HistoryRpc {
|
|
46
46
|
contentFilters,
|
47
47
|
pagingInfo,
|
48
48
|
startTime,
|
49
|
-
endTime
|
49
|
+
endTime
|
50
50
|
},
|
51
|
-
response: undefined
|
51
|
+
response: undefined
|
52
52
|
});
|
53
53
|
}
|
54
54
|
decode(bytes) {
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import type { PeerId } from "@libp2p/interface-peer-id";
|
2
1
|
import { Cursor, IDecodedMessage, IStore, Libp2p, ProtocolCreateOptions } from "@waku/interfaces";
|
3
2
|
import { PageDirection } from "./history_rpc.js";
|
4
3
|
export declare const StoreCodec = "/vac/waku/store/2.0.0-beta4";
|
@@ -9,10 +8,6 @@ export interface TimeFilter {
|
|
9
8
|
endTime: Date;
|
10
9
|
}
|
11
10
|
export interface QueryOptions {
|
12
|
-
/**
|
13
|
-
* The peer to query. If undefined, a pseudo-random peer is selected from the connected Waku Store peers.
|
14
|
-
*/
|
15
|
-
peerId?: PeerId;
|
16
11
|
/**
|
17
12
|
* The direction in which pages are retrieved:
|
18
13
|
* - { @link PageDirection.BACKWARD }: Most recent page first.
|
package/dist/lib/store/index.js
CHANGED
@@ -23,10 +23,45 @@ export { PageDirection };
|
|
23
23
|
*/
|
24
24
|
class Store extends BaseProtocol {
|
25
25
|
options;
|
26
|
+
NUM_PEERS_PROTOCOL = 1;
|
26
27
|
constructor(libp2p, options) {
|
27
28
|
super(StoreCodec, libp2p.components);
|
28
29
|
this.options = options ?? {};
|
29
30
|
}
|
31
|
+
/**
|
32
|
+
* Processes messages based on the provided callback and options.
|
33
|
+
* @private
|
34
|
+
*/
|
35
|
+
async processMessages(messages, callback, options) {
|
36
|
+
let abort = false;
|
37
|
+
const messagesOrUndef = await Promise.all(messages);
|
38
|
+
let processedMessages = messagesOrUndef.filter(isDefined);
|
39
|
+
if (this.shouldReverseOrder(options)) {
|
40
|
+
processedMessages = processedMessages.reverse();
|
41
|
+
}
|
42
|
+
await Promise.all(processedMessages.map(async (msg) => {
|
43
|
+
if (msg && !abort) {
|
44
|
+
abort = Boolean(await callback(msg));
|
45
|
+
}
|
46
|
+
}));
|
47
|
+
return abort;
|
48
|
+
}
|
49
|
+
/**
|
50
|
+
* Determines whether to reverse the order of messages based on the provided options.
|
51
|
+
*
|
52
|
+
* Messages in pages are ordered from oldest (first) to most recent (last).
|
53
|
+
* https://github.com/vacp2p/rfc/issues/533
|
54
|
+
*
|
55
|
+
* @private
|
56
|
+
*/
|
57
|
+
shouldReverseOrder(options) {
|
58
|
+
return (typeof options?.pageDirection === "undefined" ||
|
59
|
+
options?.pageDirection === PageDirection.BACKWARD);
|
60
|
+
}
|
61
|
+
/**
|
62
|
+
* @deprecated Use `queryWithOrderedCallback` instead
|
63
|
+
**/
|
64
|
+
queryOrderedCallback = this.queryWithOrderedCallback;
|
30
65
|
/**
|
31
66
|
* Do a query to a Waku Store to retrieve historical/missed messages.
|
32
67
|
*
|
@@ -44,31 +79,16 @@ class Store extends BaseProtocol {
|
|
44
79
|
* or if an error is encountered when processing the reply,
|
45
80
|
* or if two decoders with the same content topic are passed.
|
46
81
|
*/
|
47
|
-
async
|
48
|
-
let abort = false;
|
82
|
+
async queryWithOrderedCallback(decoders, callback, options) {
|
49
83
|
for await (const promises of this.queryGenerator(decoders, options)) {
|
50
|
-
if (
|
84
|
+
if (await this.processMessages(promises, callback, options))
|
51
85
|
break;
|
52
|
-
const messagesOrUndef = await Promise.all(promises);
|
53
|
-
let messages = messagesOrUndef.filter(isDefined);
|
54
|
-
// Messages in pages are ordered from oldest (first) to most recent (last).
|
55
|
-
// https://github.com/vacp2p/rfc/issues/533
|
56
|
-
if (typeof options?.pageDirection === "undefined" ||
|
57
|
-
options?.pageDirection === PageDirection.BACKWARD) {
|
58
|
-
messages = messages.reverse();
|
59
|
-
}
|
60
|
-
await Promise.all(messages.map(async (msg) => {
|
61
|
-
if (msg && !abort) {
|
62
|
-
abort = Boolean(await callback(msg));
|
63
|
-
}
|
64
|
-
}));
|
65
86
|
}
|
66
87
|
}
|
67
88
|
/**
|
68
89
|
* Do a query to a Waku Store to retrieve historical/missed messages.
|
69
|
-
*
|
70
90
|
* The callback function takes a `Promise<WakuMessage>` in input,
|
71
|
-
* useful if messages
|
91
|
+
* useful if messages need to be decrypted and performance matters.
|
72
92
|
*
|
73
93
|
* The order of the messages passed to the callback is as follows:
|
74
94
|
* - within a page, messages are expected to be ordered from oldest to most recent
|
@@ -82,18 +102,18 @@ class Store extends BaseProtocol {
|
|
82
102
|
* or if an error is encountered when processing the reply,
|
83
103
|
* or if two decoders with the same content topic are passed.
|
84
104
|
*/
|
85
|
-
async
|
105
|
+
async queryWithPromiseCallback(decoders, callback, options) {
|
86
106
|
let abort = false;
|
87
|
-
let promises = [];
|
88
107
|
for await (const page of this.queryGenerator(decoders, options)) {
|
89
|
-
const _promises = page.map(async (
|
90
|
-
if (
|
91
|
-
|
92
|
-
|
108
|
+
const _promises = page.map(async (msgPromise) => {
|
109
|
+
if (abort)
|
110
|
+
return;
|
111
|
+
abort = Boolean(await callback(msgPromise));
|
93
112
|
});
|
94
|
-
|
113
|
+
await Promise.all(_promises);
|
114
|
+
if (abort)
|
115
|
+
break;
|
95
116
|
}
|
96
|
-
await Promise.all(promises);
|
97
117
|
}
|
98
118
|
/**
|
99
119
|
* Do a query to a Waku Store to retrieve historical/missed messages.
|
@@ -105,9 +125,6 @@ class Store extends BaseProtocol {
|
|
105
125
|
* as follows:
|
106
126
|
* - within a page, messages SHOULD be ordered from oldest to most recent
|
107
127
|
* - pages direction depends on { @link QueryOptions.pageDirection }
|
108
|
-
*
|
109
|
-
* However, there is no way to guarantee the behavior of the remote node.
|
110
|
-
*
|
111
128
|
* @throws If not able to reach a Waku Store peer to query,
|
112
129
|
* or if an error is encountered when processing the reply,
|
113
130
|
* or if two decoders with the same content topic are passed.
|
@@ -130,14 +147,14 @@ class Store extends BaseProtocol {
|
|
130
147
|
const queryOpts = Object.assign({
|
131
148
|
pubSubTopic: pubSubTopic,
|
132
149
|
pageDirection: PageDirection.BACKWARD,
|
133
|
-
pageSize: DefaultPageSize
|
150
|
+
pageSize: DefaultPageSize
|
134
151
|
}, options, { contentTopics, startTime, endTime });
|
135
|
-
log("Querying history with the following options",
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
for await (const messages of paginate(this.
|
152
|
+
log("Querying history with the following options", options);
|
153
|
+
const peer = (await this.getPeers({
|
154
|
+
numPeers: this.NUM_PEERS_PROTOCOL,
|
155
|
+
maxBootstrapPeers: 1
|
156
|
+
}))[0];
|
157
|
+
for await (const messages of paginate(this.getStream.bind(this, peer), queryOpts, decodersAsMap, options?.cursor)) {
|
141
158
|
yield messages;
|
142
159
|
}
|
143
160
|
}
|
@@ -215,7 +232,7 @@ export async function createCursor(message, pubsubTopic = DefaultPubSubTopic) {
|
|
215
232
|
digest,
|
216
233
|
pubsubTopic,
|
217
234
|
senderTime: messageTime,
|
218
|
-
receiverTime: messageTime
|
235
|
+
receiverTime: messageTime
|
219
236
|
};
|
220
237
|
}
|
221
238
|
export function wakuStore(init = {}) {
|