@waku/core 0.0.6 → 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 +34 -4
- package/bundle/index.js +10871 -3756
- package/bundle/lib/message/topic_only_message.js +33 -0
- package/bundle/lib/message/version_0.js +133 -0
- package/bundle/{message-70dbb19b.js → peer_exchange-53df2b11.js} +2175 -269
- package/dist/index.d.ts +14 -14
- package/dist/index.js +10 -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/{waku_filter → filter}/index.d.ts +3 -3
- package/dist/lib/{waku_filter → filter}/index.js +3 -4
- package/dist/lib/filter/index.js.map +1 -0
- package/dist/lib/{waku_light_push → light_push}/index.d.ts +3 -3
- package/dist/lib/{waku_light_push → light_push}/index.js +4 -5
- 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 +1 -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 +35 -7
- package/dist/lib/message/version_0.js.map +1 -0
- 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/{waku_relay → relay}/index.d.ts +5 -5
- package/dist/lib/{waku_relay → relay}/index.js +5 -5
- 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/{waku_store → store}/index.d.ts +7 -5
- package/dist/lib/{waku_store → store}/index.js +9 -8
- 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.map +1 -1
- package/dist/lib/wait_for_remote_peer.js +12 -3
- package/dist/lib/wait_for_remote_peer.js.map +1 -1
- package/dist/lib/waku.d.ts +10 -9
- package/dist/lib/waku.js +19 -9
- package/dist/lib/waku.js.map +1 -1
- package/package.json +18 -19
- package/src/index.ts +19 -14
- package/src/lib/{waku_filter → filter}/filter_rpc.ts +1 -2
- package/src/lib/{waku_filter → filter}/index.ts +26 -26
- package/src/lib/{waku_light_push → light_push}/index.ts +17 -18
- package/src/lib/{waku_light_push → light_push}/push_rpc.ts +1 -2
- package/src/lib/{waku_message → message}/topic_only_message.ts +10 -7
- package/src/lib/{waku_message → message}/version_0.ts +53 -18
- package/src/lib/predefined_bootstrap_nodes.ts +1 -1
- package/src/lib/{waku_relay → relay}/constants.ts +0 -0
- package/src/lib/{waku_relay → relay}/index.ts +20 -26
- package/src/lib/{waku_store → store}/history_rpc.ts +1 -2
- package/src/lib/{waku_store → store}/index.ts +38 -24
- package/src/lib/to_proto_message.ts +4 -5
- package/src/lib/wait_for_remote_peer.ts +17 -5
- package/src/lib/waku.ts +40 -17
- package/bundle/index-925587a4.js +0 -5642
- package/bundle/lib/wait_for_remote_peer.js +0 -324
- package/bundle/lib/waku_message/topic_only_message.js +0 -2
- package/bundle/lib/waku_message/version_0.js +0 -330
- package/bundle/topic_only_message-a80fe8b2.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/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.js.map +0 -1
- 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 -16
- package/dist/lib/waku_message/topic_only_message.js.map +0 -1
- package/dist/lib/waku_message/version_0.d.ts +0 -30
- 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.js.map +0 -1
- package/dist/lib/waku_store/history_rpc.js.map +0 -1
- package/dist/lib/waku_store/index.js.map +0 -1
- package/dist/proto/filter.d.ts +0 -66
- package/dist/proto/filter.js +0 -432
- package/dist/proto/filter.js.map +0 -1
- package/dist/proto/light_push.d.ts +0 -58
- package/dist/proto/light_push.js +0 -376
- package/dist/proto/light_push.js.map +0 -1
- package/dist/proto/message.d.ts +0 -30
- package/dist/proto/message.js +0 -222
- package/dist/proto/message.js.map +0 -1
- package/dist/proto/store.d.ts +0 -105
- package/dist/proto/store.js +0 -609
- 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/select_connection.ts +0 -24
- package/src/lib/select_peer.ts +0 -77
- package/src/proto/filter.ts +0 -611
- package/src/proto/light_push.ts +0 -535
- package/src/proto/message.ts +0 -313
- package/src/proto/store.ts +0 -853
- package/src/proto/topic_only_message.ts +0 -67
@@ -0,0 +1,33 @@
|
|
1
|
+
import { d as debug, T as TopicOnlyMessage$1 } from '../../peer_exchange-53df2b11.js';
|
2
|
+
|
3
|
+
const log = debug("waku:message:topic-only");
|
4
|
+
class TopicOnlyMessage {
|
5
|
+
constructor(proto) {
|
6
|
+
this.proto = proto;
|
7
|
+
}
|
8
|
+
get contentTopic() {
|
9
|
+
return this.proto.contentTopic ?? "";
|
10
|
+
}
|
11
|
+
}
|
12
|
+
class TopicOnlyDecoder {
|
13
|
+
constructor() {
|
14
|
+
this.contentTopic = "";
|
15
|
+
}
|
16
|
+
fromWireToProtoObj(bytes) {
|
17
|
+
const protoMessage = TopicOnlyMessage$1.decode(bytes);
|
18
|
+
log("Message decoded", protoMessage);
|
19
|
+
return Promise.resolve({
|
20
|
+
contentTopic: protoMessage.contentTopic,
|
21
|
+
payload: undefined,
|
22
|
+
rateLimitProof: undefined,
|
23
|
+
timestamp: undefined,
|
24
|
+
version: undefined,
|
25
|
+
ephemeral: undefined,
|
26
|
+
});
|
27
|
+
}
|
28
|
+
async fromProtoObj(proto) {
|
29
|
+
return new TopicOnlyMessage(proto);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
export { TopicOnlyDecoder, TopicOnlyMessage };
|
@@ -0,0 +1,133 @@
|
|
1
|
+
import { d as debug, W as WakuMessage } from '../../peer_exchange-53df2b11.js';
|
2
|
+
export { m as proto } from '../../peer_exchange-53df2b11.js';
|
3
|
+
|
4
|
+
const log = debug("waku:message:version-0");
|
5
|
+
const OneMillion = BigInt(1000000);
|
6
|
+
const Version = 0;
|
7
|
+
class DecodedMessage {
|
8
|
+
constructor(proto) {
|
9
|
+
this.proto = proto;
|
10
|
+
}
|
11
|
+
get _rawPayload() {
|
12
|
+
if (this.proto.payload) {
|
13
|
+
return new Uint8Array(this.proto.payload);
|
14
|
+
}
|
15
|
+
return;
|
16
|
+
}
|
17
|
+
get ephemeral() {
|
18
|
+
return Boolean(this.proto.ephemeral);
|
19
|
+
}
|
20
|
+
get payload() {
|
21
|
+
return this._rawPayload;
|
22
|
+
}
|
23
|
+
get contentTopic() {
|
24
|
+
return this.proto.contentTopic;
|
25
|
+
}
|
26
|
+
get _rawTimestamp() {
|
27
|
+
return this.proto.timestamp;
|
28
|
+
}
|
29
|
+
get timestamp() {
|
30
|
+
// In the case we receive a value that is bigger than JS's max number,
|
31
|
+
// we catch the error and return undefined.
|
32
|
+
try {
|
33
|
+
if (this.proto.timestamp) {
|
34
|
+
// nanoseconds 10^-9 to milliseconds 10^-3
|
35
|
+
const timestamp = this.proto.timestamp / OneMillion;
|
36
|
+
return new Date(Number(timestamp));
|
37
|
+
}
|
38
|
+
if (this.proto.timestampDeprecated) {
|
39
|
+
return new Date(this.proto.timestampDeprecated * 1000);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
catch (e) {
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
return;
|
46
|
+
}
|
47
|
+
get version() {
|
48
|
+
// https://github.com/status-im/js-waku/issues/921
|
49
|
+
return this.proto.version ?? 0;
|
50
|
+
}
|
51
|
+
get rateLimitProof() {
|
52
|
+
return this.proto.rateLimitProof;
|
53
|
+
}
|
54
|
+
}
|
55
|
+
class Encoder {
|
56
|
+
constructor(contentTopic, ephemeral = false) {
|
57
|
+
this.contentTopic = contentTopic;
|
58
|
+
this.ephemeral = ephemeral;
|
59
|
+
}
|
60
|
+
async toWire(message$1) {
|
61
|
+
return WakuMessage.encode(await this.toProtoObj(message$1));
|
62
|
+
}
|
63
|
+
async toProtoObj(message) {
|
64
|
+
const timestamp = message.timestamp ?? new Date();
|
65
|
+
return {
|
66
|
+
payload: message.payload,
|
67
|
+
version: Version,
|
68
|
+
contentTopic: this.contentTopic,
|
69
|
+
timestamp: BigInt(timestamp.valueOf()) * OneMillion,
|
70
|
+
rateLimitProof: message.rateLimitProof,
|
71
|
+
ephemeral: this.ephemeral,
|
72
|
+
};
|
73
|
+
}
|
74
|
+
}
|
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
|
+
function createEncoder(contentTopic, ephemeral = false) {
|
88
|
+
return new Encoder(contentTopic, ephemeral);
|
89
|
+
}
|
90
|
+
class Decoder {
|
91
|
+
constructor(contentTopic) {
|
92
|
+
this.contentTopic = contentTopic;
|
93
|
+
}
|
94
|
+
fromWireToProtoObj(bytes) {
|
95
|
+
const protoMessage = WakuMessage.decode(bytes);
|
96
|
+
log("Message decoded", protoMessage);
|
97
|
+
return Promise.resolve({
|
98
|
+
payload: protoMessage.payload ?? undefined,
|
99
|
+
contentTopic: protoMessage.contentTopic ?? undefined,
|
100
|
+
version: protoMessage.version ?? undefined,
|
101
|
+
timestamp: protoMessage.timestamp ?? undefined,
|
102
|
+
rateLimitProof: protoMessage.rateLimitProof ?? undefined,
|
103
|
+
ephemeral: protoMessage.ephemeral ?? false,
|
104
|
+
});
|
105
|
+
}
|
106
|
+
async fromProtoObj(proto) {
|
107
|
+
// https://github.com/status-im/js-waku/issues/921
|
108
|
+
if (proto.version === undefined) {
|
109
|
+
proto.version = 0;
|
110
|
+
}
|
111
|
+
if (proto.version !== Version) {
|
112
|
+
log("Failed to decode due to incorrect version, expected:", Version, ", actual:", proto.version);
|
113
|
+
return Promise.resolve(undefined);
|
114
|
+
}
|
115
|
+
return new DecodedMessage(proto);
|
116
|
+
}
|
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
|
+
function createDecoder(contentTopic) {
|
130
|
+
return new Decoder(contentTopic);
|
131
|
+
}
|
132
|
+
|
133
|
+
export { DecodedMessage, Decoder, Encoder, Version, createDecoder, createEncoder };
|