@waku/core 0.0.26 → 0.0.28-070b625.0
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 +26 -0
- package/bundle/{base_protocol-pDODy0G6.js → base_protocol-D0Zdzb-v.js} +134 -89
- package/bundle/{browser-mTOOnVZp.js → browser-DoQRY-an.js} +518 -712
- package/bundle/{index-cmONXM-V.js → index-BJwgMx4y.js} +116 -88
- package/bundle/index.js +2967 -21667
- package/bundle/lib/base_protocol.js +3 -3
- package/bundle/lib/message/version_0.js +3 -3
- package/bundle/lib/predefined_bootstrap_nodes.js +17 -17
- package/bundle/version_0-C6o0DvNW.js +4055 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.d.ts +3 -6
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/base_protocol.d.ts +15 -13
- package/dist/lib/base_protocol.js +35 -22
- package/dist/lib/base_protocol.js.map +1 -1
- package/dist/lib/connection_manager.d.ts +2 -2
- package/dist/lib/connection_manager.js +16 -6
- package/dist/lib/connection_manager.js.map +1 -1
- package/dist/lib/filter/index.d.ts +1 -1
- package/dist/lib/filter/index.js +144 -82
- package/dist/lib/filter/index.js.map +1 -1
- package/dist/lib/filterPeers.d.ts +8 -5
- package/dist/lib/filterPeers.js +12 -5
- package/dist/lib/filterPeers.js.map +1 -1
- package/dist/lib/keep_alive_manager.d.ts +2 -3
- package/dist/lib/keep_alive_manager.js.map +1 -1
- package/dist/lib/light_push/index.d.ts +12 -2
- package/dist/lib/light_push/index.js +80 -80
- package/dist/lib/light_push/index.js.map +1 -1
- package/dist/lib/message/version_0.js +1 -1
- package/dist/lib/message/version_0.js.map +1 -1
- package/dist/lib/metadata/index.d.ts +2 -2
- package/dist/lib/metadata/index.js +58 -16
- package/dist/lib/metadata/index.js.map +1 -1
- package/dist/lib/predefined_bootstrap_nodes.d.ts +11 -11
- package/dist/lib/predefined_bootstrap_nodes.js +16 -16
- package/dist/lib/predefined_bootstrap_nodes.js.map +1 -1
- package/dist/lib/store/history_rpc.js +1 -1
- package/dist/lib/store/history_rpc.js.map +1 -1
- package/dist/lib/store/index.d.ts +14 -6
- package/dist/lib/store/index.js +51 -235
- package/dist/lib/store/index.js.map +1 -1
- package/dist/lib/stream_manager.d.ts +2 -2
- package/dist/lib/stream_manager.js.map +1 -1
- package/dist/lib/wait_for_remote_peer.d.ts +1 -1
- package/dist/lib/wait_for_remote_peer.js +42 -10
- package/dist/lib/wait_for_remote_peer.js.map +1 -1
- package/package.json +1 -127
- package/src/index.ts +3 -7
- package/src/lib/base_protocol.ts +57 -37
- package/src/lib/connection_manager.ts +17 -10
- package/src/lib/filter/index.ts +234 -136
- package/src/lib/filterPeers.ts +15 -7
- package/src/lib/keep_alive_manager.ts +2 -3
- package/src/lib/light_push/index.ts +104 -124
- package/src/lib/metadata/index.ts +92 -30
- package/src/lib/predefined_bootstrap_nodes.ts +22 -22
- package/src/lib/store/index.ts +79 -344
- package/src/lib/stream_manager.ts +2 -3
- package/src/lib/wait_for_remote_peer.ts +68 -12
- package/bundle/version_0-LQTFNC7k.js +0 -5008
- package/dist/lib/waku.d.ts +0 -57
- package/dist/lib/waku.js +0 -130
- package/dist/lib/waku.js.map +0 -1
- package/src/lib/waku.ts +0 -214
@@ -1,6 +1,6 @@
|
|
1
|
-
import {
|
1
|
+
import { ProtocolError } from "@waku/interfaces";
|
2
2
|
import { PushResponse } from "@waku/proto";
|
3
|
-
import {
|
3
|
+
import { isMessageSizeUnderCap } from "@waku/utils";
|
4
4
|
import { Logger } from "@waku/utils";
|
5
5
|
import all from "it-all";
|
6
6
|
import * as lp from "it-length-prefixed";
|
@@ -14,117 +14,117 @@ export { PushResponse };
|
|
14
14
|
/**
|
15
15
|
* Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
|
16
16
|
*/
|
17
|
-
class
|
18
|
-
pubsubTopics;
|
19
|
-
NUM_PEERS_PROTOCOL = 1;
|
17
|
+
export class LightPushCore extends BaseProtocol {
|
20
18
|
constructor(libp2p, options) {
|
21
|
-
super(LightPushCodec, libp2p.components);
|
22
|
-
this.pubsubTopics = this.initializePubsubTopic(options);
|
19
|
+
super(LightPushCodec, libp2p.components, log, options.pubsubTopics, options);
|
23
20
|
}
|
24
|
-
async preparePushMessage(encoder, message
|
21
|
+
async preparePushMessage(encoder, message) {
|
25
22
|
try {
|
26
23
|
if (!message.payload || message.payload.length === 0) {
|
27
24
|
log.error("Failed to send waku light push: payload is empty");
|
28
|
-
return { query: null, error:
|
25
|
+
return { query: null, error: ProtocolError.EMPTY_PAYLOAD };
|
29
26
|
}
|
30
27
|
if (!(await isMessageSizeUnderCap(encoder, message))) {
|
31
28
|
log.error("Failed to send waku light push: message is bigger than 1MB");
|
32
|
-
return { query: null, error:
|
29
|
+
return { query: null, error: ProtocolError.SIZE_TOO_BIG };
|
33
30
|
}
|
34
31
|
const protoMessage = await encoder.toProtoObj(message);
|
35
32
|
if (!protoMessage) {
|
36
33
|
log.error("Failed to encode to protoMessage, aborting push");
|
37
34
|
return {
|
38
35
|
query: null,
|
39
|
-
error:
|
36
|
+
error: ProtocolError.ENCODE_FAILED
|
40
37
|
};
|
41
38
|
}
|
42
|
-
const query = PushRpc.createRequest(protoMessage, pubsubTopic);
|
39
|
+
const query = PushRpc.createRequest(protoMessage, encoder.pubsubTopic);
|
43
40
|
return { query, error: null };
|
44
41
|
}
|
45
42
|
catch (error) {
|
46
43
|
log.error("Failed to prepare push message", error);
|
47
44
|
return {
|
48
45
|
query: null,
|
49
|
-
error:
|
46
|
+
error: ProtocolError.GENERIC_FAIL
|
50
47
|
};
|
51
48
|
}
|
52
49
|
}
|
53
|
-
async send(encoder, message) {
|
54
|
-
const {
|
55
|
-
ensurePubsubTopicIsConfigured(pubsubTopic, this.pubsubTopics);
|
56
|
-
const recipients = [];
|
57
|
-
const { query, error: preparationError } = await this.preparePushMessage(encoder, message, pubsubTopic);
|
50
|
+
async send(encoder, message, peer) {
|
51
|
+
const { query, error: preparationError } = await this.preparePushMessage(encoder, message);
|
58
52
|
if (preparationError || !query) {
|
59
53
|
return {
|
60
|
-
|
61
|
-
|
54
|
+
success: null,
|
55
|
+
failure: {
|
56
|
+
error: preparationError,
|
57
|
+
peerId: peer.id
|
58
|
+
}
|
62
59
|
};
|
63
60
|
}
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
61
|
+
let stream;
|
62
|
+
try {
|
63
|
+
stream = await this.getStream(peer);
|
64
|
+
}
|
65
|
+
catch (err) {
|
66
|
+
log.error(`Failed to get a stream for remote peer${peer.id.toString()}`, err);
|
70
67
|
return {
|
71
|
-
|
72
|
-
|
68
|
+
success: null,
|
69
|
+
failure: {
|
70
|
+
error: ProtocolError.REMOTE_PEER_FAULT,
|
71
|
+
peerId: peer.id
|
72
|
+
}
|
73
73
|
};
|
74
74
|
}
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
}
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
const bytes = new Uint8ArrayList();
|
93
|
-
res.forEach((chunk) => {
|
94
|
-
bytes.append(chunk);
|
95
|
-
});
|
96
|
-
let response;
|
97
|
-
try {
|
98
|
-
response = PushRpc.decode(bytes).response;
|
99
|
-
}
|
100
|
-
catch (err) {
|
101
|
-
log.error("Failed to decode push reply", err);
|
102
|
-
return { recipients, error: SendError.DECODE_FAILED };
|
103
|
-
}
|
104
|
-
if (!response) {
|
105
|
-
log.error("Remote peer fault: No response in PushRPC");
|
106
|
-
return { recipients, error: SendError.REMOTE_PEER_FAULT };
|
107
|
-
}
|
108
|
-
if (!response.isSuccess) {
|
109
|
-
log.error("Remote peer rejected the message: ", response.info);
|
110
|
-
return { recipients, error: SendError.REMOTE_PEER_REJECTED };
|
111
|
-
}
|
112
|
-
recipients.some((recipient) => recipient.equals(peer.id)) ||
|
113
|
-
recipients.push(peer.id);
|
114
|
-
return { recipients };
|
75
|
+
let res;
|
76
|
+
try {
|
77
|
+
res = await pipe([query.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
|
78
|
+
}
|
79
|
+
catch (err) {
|
80
|
+
log.error("Failed to send waku light push request", err);
|
81
|
+
return {
|
82
|
+
success: null,
|
83
|
+
failure: {
|
84
|
+
error: ProtocolError.GENERIC_FAIL,
|
85
|
+
peerId: peer.id
|
86
|
+
}
|
87
|
+
};
|
88
|
+
}
|
89
|
+
const bytes = new Uint8ArrayList();
|
90
|
+
res.forEach((chunk) => {
|
91
|
+
bytes.append(chunk);
|
115
92
|
});
|
116
|
-
|
117
|
-
|
118
|
-
.
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
93
|
+
let response;
|
94
|
+
try {
|
95
|
+
response = PushRpc.decode(bytes).response;
|
96
|
+
}
|
97
|
+
catch (err) {
|
98
|
+
log.error("Failed to decode push reply", err);
|
99
|
+
return {
|
100
|
+
success: null,
|
101
|
+
failure: {
|
102
|
+
error: ProtocolError.DECODE_FAILED,
|
103
|
+
peerId: peer.id
|
104
|
+
}
|
105
|
+
};
|
106
|
+
}
|
107
|
+
if (!response) {
|
108
|
+
log.error("Remote peer fault: No response in PushRPC");
|
109
|
+
return {
|
110
|
+
success: null,
|
111
|
+
failure: {
|
112
|
+
error: ProtocolError.REMOTE_PEER_FAULT,
|
113
|
+
peerId: peer.id
|
114
|
+
}
|
115
|
+
};
|
116
|
+
}
|
117
|
+
if (!response.isSuccess) {
|
118
|
+
log.error("Remote peer rejected the message: ", response.info);
|
119
|
+
return {
|
120
|
+
success: null,
|
121
|
+
failure: {
|
122
|
+
error: ProtocolError.REMOTE_PEER_REJECTED,
|
123
|
+
peerId: peer.id
|
124
|
+
}
|
125
|
+
};
|
126
|
+
}
|
127
|
+
return { success: peer.id, failure: null };
|
125
128
|
}
|
126
129
|
}
|
127
|
-
export function wakuLightPush(init = {}) {
|
128
|
-
return (libp2p) => new LightPush(libp2p, init);
|
129
|
-
}
|
130
130
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/light_push/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/light_push/index.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { proto_message as proto } from "@waku/proto";
|
2
2
|
import { determinePubsubTopic, Logger } from "@waku/utils";
|
3
3
|
const log = new Logger("message:version-0");
|
4
|
-
const OneMillion = BigInt(
|
4
|
+
const OneMillion = BigInt(1_000_000);
|
5
5
|
export const Version = 0;
|
6
6
|
export { proto };
|
7
7
|
export class DecodedMessage {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version_0.js","sourceRoot":"","sources":["../../../src/lib/message/version_0.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"version_0.js","sourceRoot":"","sources":["../../../src/lib/message/version_0.ts"],"names":[],"mappings":"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"}
|
@@ -1,3 +1,3 @@
|
|
1
|
-
import type
|
1
|
+
import { type IMetadata, type Libp2pComponents, type ShardInfo } from "@waku/interfaces";
|
2
2
|
export declare const MetadataCodec = "/vac/waku/metadata/1.0.0";
|
3
|
-
export declare function wakuMetadata(shardInfo:
|
3
|
+
export declare function wakuMetadata(shardInfo: ShardInfo): (components: Libp2pComponents) => IMetadata;
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import {
|
1
|
+
import { ProtocolError } from "@waku/interfaces";
|
2
2
|
import { proto_metadata } from "@waku/proto";
|
3
|
-
import { Logger } from "@waku/utils";
|
3
|
+
import { encodeRelayShard, Logger, shardInfoToPubsubTopics } from "@waku/utils";
|
4
4
|
import all from "it-all";
|
5
5
|
import * as lp from "it-length-prefixed";
|
6
6
|
import { pipe } from "it-pipe";
|
@@ -11,10 +11,11 @@ export const MetadataCodec = "/vac/waku/metadata/1.0.0";
|
|
11
11
|
class Metadata extends BaseProtocol {
|
12
12
|
shardInfo;
|
13
13
|
libp2pComponents;
|
14
|
+
handshakesConfirmed = new Map();
|
14
15
|
constructor(shardInfo, libp2p) {
|
15
|
-
super(MetadataCodec, libp2p.components);
|
16
|
-
this.libp2pComponents = libp2p;
|
16
|
+
super(MetadataCodec, libp2p.components, log, shardInfoToPubsubTopics(shardInfo));
|
17
17
|
this.shardInfo = shardInfo;
|
18
|
+
this.libp2pComponents = libp2p;
|
18
19
|
void libp2p.registrar.handle(MetadataCodec, (streamData) => {
|
19
20
|
void this.onRequest(streamData);
|
20
21
|
});
|
@@ -27,13 +28,11 @@ class Metadata extends BaseProtocol {
|
|
27
28
|
const { stream, connection } = streamData;
|
28
29
|
const encodedShardInfo = proto_metadata.WakuMetadataResponse.encode(this.shardInfo);
|
29
30
|
const encodedResponse = await pipe([encodedShardInfo], lp.encode, stream, lp.decode, async (source) => await all(source));
|
30
|
-
const
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
}
|
36
|
-
});
|
31
|
+
const { error, shardInfo } = this.decodeMetadataResponse(encodedResponse);
|
32
|
+
if (error) {
|
33
|
+
return;
|
34
|
+
}
|
35
|
+
await this.savePeerShardInfo(connection.remotePeer, shardInfo);
|
37
36
|
}
|
38
37
|
catch (error) {
|
39
38
|
log.error("Error handling metadata request", error);
|
@@ -44,11 +43,37 @@ class Metadata extends BaseProtocol {
|
|
44
43
|
*/
|
45
44
|
async query(peerId) {
|
46
45
|
const request = proto_metadata.WakuMetadataRequest.encode(this.shardInfo);
|
47
|
-
const peer = await this.
|
46
|
+
const peer = await this.peerStore.get(peerId);
|
47
|
+
if (!peer) {
|
48
|
+
return {
|
49
|
+
shardInfo: null,
|
50
|
+
error: ProtocolError.NO_PEER_AVAILABLE
|
51
|
+
};
|
52
|
+
}
|
48
53
|
const stream = await this.getStream(peer);
|
49
54
|
const encodedResponse = await pipe([request], lp.encode, stream, lp.decode, async (source) => await all(source));
|
50
|
-
const
|
51
|
-
|
55
|
+
const { error, shardInfo } = this.decodeMetadataResponse(encodedResponse);
|
56
|
+
if (error) {
|
57
|
+
return {
|
58
|
+
shardInfo: null,
|
59
|
+
error
|
60
|
+
};
|
61
|
+
}
|
62
|
+
await this.savePeerShardInfo(peerId, shardInfo);
|
63
|
+
return {
|
64
|
+
shardInfo,
|
65
|
+
error: null
|
66
|
+
};
|
67
|
+
}
|
68
|
+
async confirmOrAttemptHandshake(peerId) {
|
69
|
+
const shardInfo = this.handshakesConfirmed.get(peerId.toString());
|
70
|
+
if (shardInfo) {
|
71
|
+
return {
|
72
|
+
shardInfo,
|
73
|
+
error: null
|
74
|
+
};
|
75
|
+
}
|
76
|
+
return await this.query(peerId);
|
52
77
|
}
|
53
78
|
decodeMetadataResponse(encodedResponse) {
|
54
79
|
const bytes = new Uint8ArrayList();
|
@@ -56,9 +81,26 @@ class Metadata extends BaseProtocol {
|
|
56
81
|
bytes.append(chunk);
|
57
82
|
});
|
58
83
|
const response = proto_metadata.WakuMetadataResponse.decode(bytes);
|
59
|
-
if (!response)
|
84
|
+
if (!response) {
|
60
85
|
log.error("Error decoding metadata response");
|
61
|
-
|
86
|
+
return {
|
87
|
+
shardInfo: null,
|
88
|
+
error: ProtocolError.DECODE_FAILED
|
89
|
+
};
|
90
|
+
}
|
91
|
+
return {
|
92
|
+
shardInfo: response,
|
93
|
+
error: null
|
94
|
+
};
|
95
|
+
}
|
96
|
+
async savePeerShardInfo(peerId, shardInfo) {
|
97
|
+
// add or update the shardInfo to peer store
|
98
|
+
await this.libp2pComponents.peerStore.merge(peerId, {
|
99
|
+
metadata: {
|
100
|
+
shardInfo: encodeRelayShard(shardInfo)
|
101
|
+
}
|
102
|
+
});
|
103
|
+
this.handshakesConfirmed.set(peerId.toString(), shardInfo);
|
62
104
|
}
|
63
105
|
}
|
64
106
|
export function wakuMetadata(shardInfo) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/metadata/index.ts"],"names":[],"mappings":"AAEA,OAAO,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/metadata/index.ts"],"names":[],"mappings":"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"}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
export declare const DefaultWantedNumber = 1;
|
2
2
|
export declare enum Fleet {
|
3
|
-
|
3
|
+
Sandbox = "sandbox",
|
4
4
|
Test = "test"
|
5
5
|
}
|
6
6
|
/**
|
7
7
|
* Return list of pre-defined (hardcoded) bootstrap nodes.
|
8
8
|
*
|
9
|
-
* Default behavior is to return nodes of the nwaku Status
|
9
|
+
* Default behavior is to return nodes of the nwaku Status Sandbox fleet.
|
10
10
|
*
|
11
|
-
* @param fleet The fleet to be returned. Defaults to
|
11
|
+
* @param fleet The fleet to be returned. Defaults to sandbox fleet.
|
12
12
|
* @param wantedNumber The number of connections desired. Defaults to {@link DefaultWantedNumber}.
|
13
13
|
*
|
14
14
|
* @returns An array of multiaddresses.
|
@@ -16,18 +16,18 @@ export declare enum Fleet {
|
|
16
16
|
export declare function getPredefinedBootstrapNodes(fleet?: Fleet, wantedNumber?: number): string[];
|
17
17
|
export declare const fleets: {
|
18
18
|
fleets: {
|
19
|
-
"
|
19
|
+
"waku.sandbox": {
|
20
20
|
"waku-websocket": {
|
21
|
-
"node-01.ac-cn-hongkong-c.
|
22
|
-
"node-01.do-ams3.
|
23
|
-
"node-01.gc-us-central1-a.
|
21
|
+
"node-01.ac-cn-hongkong-c.waku.sandbox": string;
|
22
|
+
"node-01.do-ams3.waku.sandbox": string;
|
23
|
+
"node-01.gc-us-central1-a.waku.sandbox": string;
|
24
24
|
};
|
25
25
|
};
|
26
|
-
"
|
26
|
+
"waku.test": {
|
27
27
|
"waku-websocket": {
|
28
|
-
"node-01.ac-cn-hongkong-c.
|
29
|
-
"node-01.do-ams3.
|
30
|
-
"node-01.gc-us-central1-a.
|
28
|
+
"node-01.ac-cn-hongkong-c.waku.test": string;
|
29
|
+
"node-01.do-ams3.waku.test": string;
|
30
|
+
"node-01.gc-us-central1-a.waku.test": string;
|
31
31
|
};
|
32
32
|
};
|
33
33
|
};
|
@@ -2,51 +2,51 @@ import { getPseudoRandomSubset } from "@waku/utils";
|
|
2
2
|
export const DefaultWantedNumber = 1;
|
3
3
|
export var Fleet;
|
4
4
|
(function (Fleet) {
|
5
|
-
Fleet["
|
5
|
+
Fleet["Sandbox"] = "sandbox";
|
6
6
|
Fleet["Test"] = "test";
|
7
7
|
})(Fleet || (Fleet = {}));
|
8
8
|
/**
|
9
9
|
* Return list of pre-defined (hardcoded) bootstrap nodes.
|
10
10
|
*
|
11
|
-
* Default behavior is to return nodes of the nwaku Status
|
11
|
+
* Default behavior is to return nodes of the nwaku Status Sandbox fleet.
|
12
12
|
*
|
13
|
-
* @param fleet The fleet to be returned. Defaults to
|
13
|
+
* @param fleet The fleet to be returned. Defaults to sandbox fleet.
|
14
14
|
* @param wantedNumber The number of connections desired. Defaults to {@link DefaultWantedNumber}.
|
15
15
|
*
|
16
16
|
* @returns An array of multiaddresses.
|
17
17
|
*/
|
18
|
-
export function getPredefinedBootstrapNodes(fleet = Fleet.
|
18
|
+
export function getPredefinedBootstrapNodes(fleet = Fleet.Sandbox, wantedNumber = DefaultWantedNumber) {
|
19
19
|
if (wantedNumber <= 0) {
|
20
20
|
return [];
|
21
21
|
}
|
22
22
|
let nodes;
|
23
23
|
switch (fleet) {
|
24
|
-
case Fleet.
|
25
|
-
nodes = fleets.fleets["
|
24
|
+
case Fleet.Sandbox:
|
25
|
+
nodes = fleets.fleets["waku.sandbox"]["waku-websocket"];
|
26
26
|
break;
|
27
27
|
case Fleet.Test:
|
28
|
-
nodes = fleets.fleets["
|
28
|
+
nodes = fleets.fleets["waku.test"]["waku-websocket"];
|
29
29
|
break;
|
30
30
|
default:
|
31
|
-
nodes = fleets.fleets["
|
31
|
+
nodes = fleets.fleets["waku.sandbox"]["waku-websocket"];
|
32
32
|
}
|
33
33
|
nodes = Object.values(nodes);
|
34
34
|
return getPseudoRandomSubset(nodes, wantedNumber);
|
35
35
|
}
|
36
36
|
export const fleets = {
|
37
37
|
fleets: {
|
38
|
-
"
|
38
|
+
"waku.sandbox": {
|
39
39
|
"waku-websocket": {
|
40
|
-
"node-01.ac-cn-hongkong-c.
|
41
|
-
"node-01.do-ams3.
|
42
|
-
"node-01.gc-us-central1-a.
|
40
|
+
"node-01.ac-cn-hongkong-c.waku.sandbox": "/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/8000/wss/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV",
|
41
|
+
"node-01.do-ams3.waku.sandbox": "/dns4/node-01.do-ams3.waku.sandbox.status.im/tcp/8000/wss/p2p/16Uiu2HAmQSMNExfUYUqfuXWkD5DaNZnMYnigRxFKbk3tcEFQeQeE",
|
42
|
+
"node-01.gc-us-central1-a.waku.sandbox": "/dns4/node-01.gc-us-central1-a.waku.sandbox.status.im/tcp/8000/wss/p2p/16Uiu2HAm6fyqE1jB5MonzvoMdU8v76bWV8ZeNpncDamY1MQXfjdB"
|
43
43
|
}
|
44
44
|
},
|
45
|
-
"
|
45
|
+
"waku.test": {
|
46
46
|
"waku-websocket": {
|
47
|
-
"node-01.ac-cn-hongkong-c.
|
48
|
-
"node-01.do-ams3.
|
49
|
-
"node-01.gc-us-central1-a.
|
47
|
+
"node-01.ac-cn-hongkong-c.waku.test": "/dns4/node-01.ac-cn-hongkong-c.waku.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAkzHaTP5JsUwfR9NR8Rj9HC24puS6ocaU8wze4QrXr9iXp",
|
48
|
+
"node-01.do-ams3.waku.test": "/dns4/node-01.do-ams3.waku.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAkykgaECHswi3YKJ5dMLbq2kPVCo89fcyTd38UcQD6ej5W",
|
49
|
+
"node-01.gc-us-central1-a.waku.test": "/dns4/node-01.gc-us-central1-a.waku.test.statusim.net/tcp/8000/wss/p2p/16Uiu2HAmDCp8XJ9z1ev18zuv8NHekAsjNyezAvmMfFEJkiharitG"
|
50
50
|
}
|
51
51
|
}
|
52
52
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"predefined_bootstrap_nodes.js","sourceRoot":"","sources":["../../src/lib/predefined_bootstrap_nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,CAAN,IAAY,KAGX;AAHD,WAAY,KAAK;IACf,
|
1
|
+
{"version":3,"file":"predefined_bootstrap_nodes.js","sourceRoot":"","sources":["../../src/lib/predefined_bootstrap_nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,CAAN,IAAY,KAGX;AAHD,WAAY,KAAK;IACf,4BAAmB,CAAA;IACnB,sBAAa,CAAA;AACf,CAAC,EAHW,KAAK,KAAL,KAAK,QAGhB;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAe,KAAK,CAAC,OAAO,EAC5B,eAAuB,mBAAmB;IAE1C,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,KAAK,CAAC;IACV,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK,CAAC,OAAO;YAChB,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACxD,MAAM;QACR,KAAK,KAAK,CAAC,IAAI;YACb,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACrD,MAAM;QACR;YACE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,CAAC;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,cAAc,EAAE;YACd,gBAAgB,EAAE;gBAChB,uCAAuC,EACrC,8HAA8H;gBAChI,8BAA8B,EAC5B,qHAAqH;gBACvH,uCAAuC,EACrC,8HAA8H;aACjI;SACF;QACD,WAAW,EAAE;YACX,gBAAgB,EAAE;gBAChB,oCAAoC,EAClC,8HAA8H;gBAChI,2BAA2B,EACzB,qHAAqH;gBACvH,oCAAoC,EAClC,8HAA8H;aACjI;SACF;KACF;CACF,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"history_rpc.js","sourceRoot":"","sources":["../../../src/lib/store/history_rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,MAAM,UAAU,GAAG,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"history_rpc.js","sourceRoot":"","sources":["../../../src/lib/store/history_rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAErC,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAYD,MAAM,OAAO,UAAU;IACe;IAApC,YAAoC,KAAuB;QAAvB,UAAK,GAAL,KAAK,CAAkB;IAAG,CAAC;IAE/D,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAc;QAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;YAC/D,OAAO,EAAE,YAAY,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS;SACU,CAAC;QAEtB,IAAI,SAAS,EAAE,OAAO,CAAC;QACvB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,0CAA0C;YAC1C,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;QAC9D,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,0CAA0C;YAC1C,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,UAAU,CAAC;YACpB,SAAS,EAAE,IAAI,EAAE;YACjB,KAAK,EAAE;gBACL,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,cAAc;gBACd,UAAU;gBACV,SAAS;gBACT,OAAO;aACR;YACD,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAqB;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,SAAS,gBAAgB,CACvB,aAA4B;IAE5B,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,aAAa,CAAC,QAAQ;YACzB,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC7C,KAAK,aAAa,CAAC,OAAO;YACxB,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;QAC5C;YACE,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC/C,CAAC;AACH,CAAC"}
|
@@ -1,8 +1,9 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
1
|
+
import type { Peer } from "@libp2p/interface";
|
2
|
+
import { Cursor, IDecodedMessage, IDecoder, IStoreCore, Libp2p, ProtocolCreateOptions } from "@waku/interfaces";
|
3
|
+
import { BaseProtocol } from "../base_protocol.js";
|
4
|
+
import { PageDirection, Params } from "./history_rpc.js";
|
3
5
|
export declare const StoreCodec = "/vac/waku/store/2.0.0-beta4";
|
4
|
-
export
|
5
|
-
export { PageDirection };
|
6
|
+
export { PageDirection, Params };
|
6
7
|
export interface TimeFilter {
|
7
8
|
startTime: Date;
|
8
9
|
endTime: Date;
|
@@ -36,5 +37,12 @@ export interface QueryOptions {
|
|
36
37
|
*/
|
37
38
|
cursor?: Cursor;
|
38
39
|
}
|
39
|
-
|
40
|
-
|
40
|
+
/**
|
41
|
+
* Implements the [Waku v2 Store protocol](https://rfc.vac.dev/spec/13/).
|
42
|
+
*
|
43
|
+
* The Waku Store protocol can be used to retrieved historical messages.
|
44
|
+
*/
|
45
|
+
export declare class StoreCore extends BaseProtocol implements IStoreCore {
|
46
|
+
constructor(libp2p: Libp2p, options?: ProtocolCreateOptions);
|
47
|
+
queryPerPage<T extends IDecodedMessage>(queryOpts: Params, decoders: Map<string, IDecoder<T>>, peer: Peer): AsyncGenerator<Promise<T | undefined>[]>;
|
48
|
+
}
|