@waku/core 0.0.36-f911bf8.0 → 0.0.36
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 +39 -0
- package/bundle/index.js +1143 -610
- package/bundle/lib/message/version_0.js +1 -2
- package/bundle/{version_0-CiYGrPc2.js → version_0-9DPFjcJG.js} +1586 -10
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/connection_manager/connection_manager.d.ts +2 -1
- package/dist/lib/connection_manager/connection_manager.js +16 -8
- package/dist/lib/connection_manager/connection_manager.js.map +1 -1
- package/dist/lib/filter/filter.d.ts +8 -5
- package/dist/lib/filter/filter.js +30 -10
- package/dist/lib/filter/filter.js.map +1 -1
- package/dist/lib/light_push/light_push.d.ts +4 -3
- package/dist/lib/light_push/light_push.js +6 -4
- package/dist/lib/light_push/light_push.js.map +1 -1
- package/dist/lib/message/version_0.d.ts +3 -4
- package/dist/lib/message/version_0.js +1 -4
- package/dist/lib/message/version_0.js.map +1 -1
- package/dist/lib/message_hash/index.d.ts +1 -0
- package/dist/lib/message_hash/index.js +2 -0
- package/dist/lib/message_hash/index.js.map +1 -0
- package/dist/lib/message_hash/message_hash.d.ts +52 -0
- package/dist/lib/message_hash/message_hash.js +84 -0
- package/dist/lib/message_hash/message_hash.js.map +1 -0
- package/dist/lib/metadata/metadata.js +6 -4
- package/dist/lib/metadata/metadata.js.map +1 -1
- package/dist/lib/store/rpc.js +16 -10
- package/dist/lib/store/rpc.js.map +1 -1
- package/dist/lib/store/store.d.ts +4 -3
- package/dist/lib/store/store.js +18 -6
- package/dist/lib/store/store.js.map +1 -1
- package/dist/lib/stream_manager/stream_manager.d.ts +3 -4
- package/dist/lib/stream_manager/stream_manager.js +6 -8
- package/dist/lib/stream_manager/stream_manager.js.map +1 -1
- package/package.json +125 -1
- package/src/index.ts +2 -0
- package/src/lib/connection_manager/connection_manager.ts +24 -16
- package/src/lib/filter/filter.ts +46 -14
- package/src/lib/light_push/light_push.ts +8 -5
- package/src/lib/message/version_0.ts +3 -7
- package/src/lib/message_hash/index.ts +1 -0
- package/src/lib/message_hash/message_hash.ts +106 -0
- package/src/lib/metadata/metadata.ts +8 -5
- package/src/lib/store/rpc.ts +23 -19
- package/src/lib/store/store.ts +21 -6
- package/src/lib/stream_manager/stream_manager.ts +8 -6
- package/bundle/base_protocol-DvQrudwy.js +0 -152
- package/bundle/index-CTo1my9M.js +0 -1543
- package/bundle/lib/base_protocol.js +0 -2
- package/dist/lib/base_protocol.d.ts +0 -18
- package/dist/lib/base_protocol.js +0 -25
- package/dist/lib/base_protocol.js.map +0 -1
- package/src/lib/base_protocol.ts +0 -44
@@ -3,20 +3,40 @@ import { Logger } from "@waku/utils";
|
|
3
3
|
import all from "it-all";
|
4
4
|
import * as lp from "it-length-prefixed";
|
5
5
|
import { pipe } from "it-pipe";
|
6
|
-
import {
|
6
|
+
import { StreamManager } from "../stream_manager/index.js";
|
7
7
|
import { FilterPushRpc, FilterSubscribeResponse, FilterSubscribeRpc } from "./filter_rpc.js";
|
8
8
|
const log = new Logger("filter:v2");
|
9
9
|
export const FilterCodecs = {
|
10
10
|
SUBSCRIBE: "/vac/waku/filter-subscribe/2.0.0-beta1",
|
11
11
|
PUSH: "/vac/waku/filter-push/2.0.0-beta1"
|
12
12
|
};
|
13
|
-
export class FilterCore
|
14
|
-
handleIncomingMessage;
|
13
|
+
export class FilterCore {
|
15
14
|
pubsubTopics;
|
15
|
+
streamManager;
|
16
|
+
static handleIncomingMessage;
|
17
|
+
multicodec = FilterCodecs.SUBSCRIBE;
|
16
18
|
constructor(handleIncomingMessage, pubsubTopics, libp2p) {
|
17
|
-
super(FilterCodecs.SUBSCRIBE, libp2p.components, pubsubTopics);
|
18
|
-
this.handleIncomingMessage = handleIncomingMessage;
|
19
19
|
this.pubsubTopics = pubsubTopics;
|
20
|
+
this.streamManager = new StreamManager(FilterCodecs.SUBSCRIBE, libp2p.components);
|
21
|
+
// TODO(weboko): remove when @waku/sdk 0.0.33 is released
|
22
|
+
const prevHandler = FilterCore.handleIncomingMessage;
|
23
|
+
FilterCore.handleIncomingMessage = !prevHandler
|
24
|
+
? handleIncomingMessage
|
25
|
+
: async (pubsubTopic, message, peerIdStr) => {
|
26
|
+
try {
|
27
|
+
await prevHandler(pubsubTopic, message, peerIdStr);
|
28
|
+
}
|
29
|
+
catch (e) {
|
30
|
+
log.error("Previous FilterCore incoming message handler failed ", e);
|
31
|
+
}
|
32
|
+
try {
|
33
|
+
await handleIncomingMessage(pubsubTopic, message, peerIdStr);
|
34
|
+
}
|
35
|
+
catch (e) {
|
36
|
+
log.error("Present FilterCore incoming message handler failed ", e);
|
37
|
+
}
|
38
|
+
return;
|
39
|
+
};
|
20
40
|
libp2p
|
21
41
|
.handle(FilterCodecs.PUSH, this.onRequest.bind(this), {
|
22
42
|
maxInboundStreams: 100
|
@@ -26,7 +46,7 @@ export class FilterCore extends BaseProtocol {
|
|
26
46
|
});
|
27
47
|
}
|
28
48
|
async subscribe(pubsubTopic, peerId, contentTopics) {
|
29
|
-
const stream = await this.getStream(peerId);
|
49
|
+
const stream = await this.streamManager.getStream(peerId);
|
30
50
|
const request = FilterSubscribeRpc.createSubscribeRequest(pubsubTopic, contentTopics);
|
31
51
|
let res;
|
32
52
|
try {
|
@@ -61,7 +81,7 @@ export class FilterCore extends BaseProtocol {
|
|
61
81
|
async unsubscribe(pubsubTopic, peerId, contentTopics) {
|
62
82
|
let stream;
|
63
83
|
try {
|
64
|
-
stream = await this.getStream(peerId);
|
84
|
+
stream = await this.streamManager.getStream(peerId);
|
65
85
|
}
|
66
86
|
catch (error) {
|
67
87
|
log.error(`Failed to get a stream for remote peer${peerId.toString()}`, error);
|
@@ -93,7 +113,7 @@ export class FilterCore extends BaseProtocol {
|
|
93
113
|
};
|
94
114
|
}
|
95
115
|
async unsubscribeAll(pubsubTopic, peerId) {
|
96
|
-
const stream = await this.getStream(peerId);
|
116
|
+
const stream = await this.streamManager.getStream(peerId);
|
97
117
|
const request = FilterSubscribeRpc.createUnsubscribeAllRequest(pubsubTopic);
|
98
118
|
const res = await pipe([request.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
|
99
119
|
if (!res || !res.length) {
|
@@ -124,7 +144,7 @@ export class FilterCore extends BaseProtocol {
|
|
124
144
|
async ping(peerId) {
|
125
145
|
let stream;
|
126
146
|
try {
|
127
|
-
stream = await this.getStream(peerId);
|
147
|
+
stream = await this.streamManager.getStream(peerId);
|
128
148
|
}
|
129
149
|
catch (error) {
|
130
150
|
log.error(`Failed to get a stream for remote peer${peerId.toString()}`, error);
|
@@ -193,7 +213,7 @@ export class FilterCore extends BaseProtocol {
|
|
193
213
|
log.error("Pubsub topic missing from push message");
|
194
214
|
return;
|
195
215
|
}
|
196
|
-
await
|
216
|
+
await FilterCore.handleIncomingMessage?.(pubsubTopic, wakuMessage, connection.remotePeer.toString());
|
197
217
|
}
|
198
218
|
}).then(() => {
|
199
219
|
log.info("Receiving pipe closed.");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/lib/filter/filter.ts"],"names":[],"mappings":"AAEA,OAAO,
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/lib/filter/filter.ts"],"names":[],"mappings":"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"}
|
@@ -1,14 +1,15 @@
|
|
1
1
|
import type { PeerId } from "@libp2p/interface";
|
2
|
-
import { type CoreProtocolResult, type
|
2
|
+
import { type CoreProtocolResult, type IEncoder, type IMessage, type Libp2p, PubsubTopic } from "@waku/interfaces";
|
3
3
|
import { PushResponse } from "@waku/proto";
|
4
|
-
import { BaseProtocol } from "../base_protocol.js";
|
5
4
|
export declare const LightPushCodec = "/vac/waku/lightpush/2.0.0-beta1";
|
6
5
|
export { PushResponse };
|
7
6
|
/**
|
8
7
|
* Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
|
9
8
|
*/
|
10
|
-
export declare class LightPushCore
|
9
|
+
export declare class LightPushCore {
|
11
10
|
readonly pubsubTopics: PubsubTopic[];
|
11
|
+
private readonly streamManager;
|
12
|
+
readonly multicodec = "/vac/waku/lightpush/2.0.0-beta1";
|
12
13
|
constructor(pubsubTopics: PubsubTopic[], libp2p: Libp2p);
|
13
14
|
private preparePushMessage;
|
14
15
|
send(encoder: IEncoder, message: IMessage, peerId: PeerId): Promise<CoreProtocolResult>;
|
@@ -6,7 +6,7 @@ import all from "it-all";
|
|
6
6
|
import * as lp from "it-length-prefixed";
|
7
7
|
import { pipe } from "it-pipe";
|
8
8
|
import { Uint8ArrayList } from "uint8arraylist";
|
9
|
-
import {
|
9
|
+
import { StreamManager } from "../stream_manager/index.js";
|
10
10
|
import { PushRpc } from "./push_rpc.js";
|
11
11
|
import { isRLNResponseError } from "./utils.js";
|
12
12
|
const log = new Logger("light-push");
|
@@ -15,11 +15,13 @@ export { PushResponse };
|
|
15
15
|
/**
|
16
16
|
* Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
|
17
17
|
*/
|
18
|
-
export class LightPushCore
|
18
|
+
export class LightPushCore {
|
19
19
|
pubsubTopics;
|
20
|
+
streamManager;
|
21
|
+
multicodec = LightPushCodec;
|
20
22
|
constructor(pubsubTopics, libp2p) {
|
21
|
-
super(LightPushCodec, libp2p.components, pubsubTopics);
|
22
23
|
this.pubsubTopics = pubsubTopics;
|
24
|
+
this.streamManager = new StreamManager(LightPushCodec, libp2p.components);
|
23
25
|
}
|
24
26
|
async preparePushMessage(encoder, message) {
|
25
27
|
try {
|
@@ -63,7 +65,7 @@ export class LightPushCore extends BaseProtocol {
|
|
63
65
|
}
|
64
66
|
let stream;
|
65
67
|
try {
|
66
|
-
stream = await this.getStream(peerId);
|
68
|
+
stream = await this.streamManager.getStream(peerId);
|
67
69
|
}
|
68
70
|
catch (error) {
|
69
71
|
log.error("Failed to get stream", error);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"light_push.js","sourceRoot":"","sources":["../../../src/lib/light_push/light_push.ts"],"names":[],"mappings":"AACA,OAAO,
|
1
|
+
{"version":3,"file":"light_push.js","sourceRoot":"","sources":["../../../src/lib/light_push/light_push.ts"],"names":[],"mappings":"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"}
|
@@ -4,12 +4,11 @@ export declare const Version = 0;
|
|
4
4
|
export { proto };
|
5
5
|
export declare class DecodedMessage implements IDecodedMessage {
|
6
6
|
pubsubTopic: string;
|
7
|
-
|
7
|
+
private proto;
|
8
8
|
constructor(pubsubTopic: string, proto: proto.WakuMessage);
|
9
9
|
get ephemeral(): boolean;
|
10
10
|
get payload(): Uint8Array;
|
11
11
|
get contentTopic(): string;
|
12
|
-
get _rawTimestamp(): bigint | undefined;
|
13
12
|
get timestamp(): Date | undefined;
|
14
13
|
get meta(): Uint8Array | undefined;
|
15
14
|
get version(): number;
|
@@ -20,7 +19,7 @@ export declare class Encoder implements IEncoder {
|
|
20
19
|
ephemeral: boolean;
|
21
20
|
pubsubTopic: PubsubTopic;
|
22
21
|
metaSetter?: IMetaSetter | undefined;
|
23
|
-
constructor(contentTopic: string, ephemeral: boolean, pubsubTopic: PubsubTopic, metaSetter?: IMetaSetter | undefined);
|
22
|
+
constructor(contentTopic: string, ephemeral: boolean | undefined, pubsubTopic: PubsubTopic, metaSetter?: IMetaSetter | undefined);
|
24
23
|
toWire(message: IMessage): Promise<Uint8Array>;
|
25
24
|
toProtoObj(message: IMessage): Promise<IProtoMessage>;
|
26
25
|
}
|
@@ -38,7 +37,7 @@ export declare class Decoder implements IDecoder<IDecodedMessage> {
|
|
38
37
|
contentTopic: string;
|
39
38
|
constructor(pubsubTopic: PubsubTopic, contentTopic: string);
|
40
39
|
fromWireToProtoObj(bytes: Uint8Array): Promise<IProtoMessage | undefined>;
|
41
|
-
fromProtoObj(pubsubTopic: string, proto: IProtoMessage): Promise<
|
40
|
+
fromProtoObj(pubsubTopic: string, proto: IProtoMessage): Promise<IDecodedMessage | undefined>;
|
42
41
|
}
|
43
42
|
/**
|
44
43
|
* Creates a decoder that decode messages without Waku level encryption.
|
@@ -20,9 +20,6 @@ export class DecodedMessage {
|
|
20
20
|
get contentTopic() {
|
21
21
|
return this.proto.contentTopic;
|
22
22
|
}
|
23
|
-
get _rawTimestamp() {
|
24
|
-
return this.proto.timestamp;
|
25
|
-
}
|
26
23
|
get timestamp() {
|
27
24
|
// In the case we receive a value that is bigger than JS's max number,
|
28
25
|
// we catch the error and return undefined.
|
@@ -44,7 +41,7 @@ export class DecodedMessage {
|
|
44
41
|
get version() {
|
45
42
|
// https://rfc.vac.dev/spec/14/
|
46
43
|
// > If omitted, the value SHOULD be interpreted as version 0.
|
47
|
-
return this.proto.version ??
|
44
|
+
return this.proto.version ?? Version;
|
48
45
|
}
|
49
46
|
get rateLimitProof() {
|
50
47
|
return this.proto.rateLimitProof;
|
@@ -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,SAAS,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,OAAO,cAAc;IAEhB;
|
1
|
+
{"version":3,"file":"version_0.js","sourceRoot":"","sources":["../../../src/lib/message/version_0.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { messageHash, messageHashStr } from "./message_hash.js";
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/message_hash/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import type { IDecodedMessage, IProtoMessage } from "@waku/interfaces";
|
2
|
+
/**
|
3
|
+
* Deterministic Message Hashing as defined in
|
4
|
+
* [14/WAKU2-MESSAGE](https://rfc.vac.dev/spec/14/#deterministic-message-hashing)
|
5
|
+
*
|
6
|
+
* Computes a SHA-256 hash of the concatenation of pubsub topic, payload, content topic, meta, and timestamp.
|
7
|
+
*
|
8
|
+
* @param pubsubTopic - The pubsub topic string
|
9
|
+
* @param message - The message to be hashed
|
10
|
+
* @returns A Uint8Array containing the SHA-256 hash
|
11
|
+
*
|
12
|
+
* @example
|
13
|
+
* ```typescript
|
14
|
+
* import { messageHash } from "@waku/core";
|
15
|
+
*
|
16
|
+
* const pubsubTopic = "/waku/2/default-waku/proto";
|
17
|
+
* const message = {
|
18
|
+
* payload: new Uint8Array([1, 2, 3, 4]),
|
19
|
+
* contentTopic: "/waku/2/default-content/proto",
|
20
|
+
* meta: new Uint8Array([5, 6, 7, 8]),
|
21
|
+
* timestamp: new Date()
|
22
|
+
* };
|
23
|
+
*
|
24
|
+
* const hash = messageHash(pubsubTopic, message);
|
25
|
+
* ```
|
26
|
+
*/
|
27
|
+
export declare function messageHash(pubsubTopic: string, message: IProtoMessage | IDecodedMessage): Uint8Array;
|
28
|
+
/**
|
29
|
+
* Computes a deterministic message hash and returns it as a hexadecimal string.
|
30
|
+
* This is a convenience wrapper around messageHash that converts the result to a hex string.
|
31
|
+
*
|
32
|
+
* @param pubsubTopic - The pubsub topic string
|
33
|
+
* @param message - The message to be hashed
|
34
|
+
* @returns A string containing the hex representation of the SHA-256 hash
|
35
|
+
*
|
36
|
+
* @example
|
37
|
+
* ```typescript
|
38
|
+
* import { messageHashStr } from "@waku/core";
|
39
|
+
*
|
40
|
+
* const pubsubTopic = "/waku/2/default-waku/proto";
|
41
|
+
* const message = {
|
42
|
+
* payload: new Uint8Array([1, 2, 3, 4]),
|
43
|
+
* contentTopic: "/waku/2/default-content/proto",
|
44
|
+
* meta: new Uint8Array([5, 6, 7, 8]),
|
45
|
+
* timestamp: new Date()
|
46
|
+
* };
|
47
|
+
*
|
48
|
+
* const hashString = messageHashStr(pubsubTopic, message);
|
49
|
+
* console.log(hashString); // e.g. "a1b2c3d4..."
|
50
|
+
* ```
|
51
|
+
*/
|
52
|
+
export declare function messageHashStr(pubsubTopic: string, message: IProtoMessage | IDecodedMessage): string;
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import { sha256 } from "@noble/hashes/sha256";
|
2
|
+
import { isDefined } from "@waku/utils";
|
3
|
+
import { bytesToHex, concat, numberToBytes, utf8ToBytes } from "@waku/utils/bytes";
|
4
|
+
/**
|
5
|
+
* Deterministic Message Hashing as defined in
|
6
|
+
* [14/WAKU2-MESSAGE](https://rfc.vac.dev/spec/14/#deterministic-message-hashing)
|
7
|
+
*
|
8
|
+
* Computes a SHA-256 hash of the concatenation of pubsub topic, payload, content topic, meta, and timestamp.
|
9
|
+
*
|
10
|
+
* @param pubsubTopic - The pubsub topic string
|
11
|
+
* @param message - The message to be hashed
|
12
|
+
* @returns A Uint8Array containing the SHA-256 hash
|
13
|
+
*
|
14
|
+
* @example
|
15
|
+
* ```typescript
|
16
|
+
* import { messageHash } from "@waku/core";
|
17
|
+
*
|
18
|
+
* const pubsubTopic = "/waku/2/default-waku/proto";
|
19
|
+
* const message = {
|
20
|
+
* payload: new Uint8Array([1, 2, 3, 4]),
|
21
|
+
* contentTopic: "/waku/2/default-content/proto",
|
22
|
+
* meta: new Uint8Array([5, 6, 7, 8]),
|
23
|
+
* timestamp: new Date()
|
24
|
+
* };
|
25
|
+
*
|
26
|
+
* const hash = messageHash(pubsubTopic, message);
|
27
|
+
* ```
|
28
|
+
*/
|
29
|
+
export function messageHash(pubsubTopic, message) {
|
30
|
+
const pubsubTopicBytes = utf8ToBytes(pubsubTopic);
|
31
|
+
const contentTopicBytes = utf8ToBytes(message.contentTopic);
|
32
|
+
const timestampBytes = tryConvertTimestampToBytes(message.timestamp);
|
33
|
+
const bytes = concat([
|
34
|
+
pubsubTopicBytes,
|
35
|
+
message.payload,
|
36
|
+
contentTopicBytes,
|
37
|
+
message.meta,
|
38
|
+
timestampBytes
|
39
|
+
].filter(isDefined));
|
40
|
+
return sha256(bytes);
|
41
|
+
}
|
42
|
+
function tryConvertTimestampToBytes(timestamp) {
|
43
|
+
if (!timestamp) {
|
44
|
+
return;
|
45
|
+
}
|
46
|
+
let bigIntTimestamp;
|
47
|
+
if (typeof timestamp === "bigint") {
|
48
|
+
bigIntTimestamp = timestamp;
|
49
|
+
}
|
50
|
+
else {
|
51
|
+
bigIntTimestamp = BigInt(timestamp.valueOf()) * 1000000n;
|
52
|
+
}
|
53
|
+
return numberToBytes(bigIntTimestamp);
|
54
|
+
}
|
55
|
+
/**
|
56
|
+
* Computes a deterministic message hash and returns it as a hexadecimal string.
|
57
|
+
* This is a convenience wrapper around messageHash that converts the result to a hex string.
|
58
|
+
*
|
59
|
+
* @param pubsubTopic - The pubsub topic string
|
60
|
+
* @param message - The message to be hashed
|
61
|
+
* @returns A string containing the hex representation of the SHA-256 hash
|
62
|
+
*
|
63
|
+
* @example
|
64
|
+
* ```typescript
|
65
|
+
* import { messageHashStr } from "@waku/core";
|
66
|
+
*
|
67
|
+
* const pubsubTopic = "/waku/2/default-waku/proto";
|
68
|
+
* const message = {
|
69
|
+
* payload: new Uint8Array([1, 2, 3, 4]),
|
70
|
+
* contentTopic: "/waku/2/default-content/proto",
|
71
|
+
* meta: new Uint8Array([5, 6, 7, 8]),
|
72
|
+
* timestamp: new Date()
|
73
|
+
* };
|
74
|
+
*
|
75
|
+
* const hashString = messageHashStr(pubsubTopic, message);
|
76
|
+
* console.log(hashString); // e.g. "a1b2c3d4..."
|
77
|
+
* ```
|
78
|
+
*/
|
79
|
+
export function messageHashStr(pubsubTopic, message) {
|
80
|
+
const hash = messageHash(pubsubTopic, message);
|
81
|
+
const hashStr = bytesToHex(hash);
|
82
|
+
return hashStr;
|
83
|
+
}
|
84
|
+
//# sourceMappingURL=message_hash.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"message_hash.js","sourceRoot":"","sources":["../../../src/lib/message_hash/message_hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,UAAU,EACV,MAAM,EACN,aAAa,EACb,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,WAAW,CACzB,WAAmB,EACnB,OAAwC;IAExC,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,0BAA0B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,MAAM,CAClB;QACE,gBAAgB;QAChB,OAAO,CAAC,OAAO;QACf,iBAAiB;QACjB,OAAO,CAAC,IAAI;QACZ,cAAc;KACf,CAAC,MAAM,CAAC,SAAS,CAAC,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,0BAA0B,CACjC,SAA6C;IAE7C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,IAAI,eAAuB,CAAC;IAE5B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,eAAe,GAAG,SAAS,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;IAC3D,CAAC;IAED,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAmB,EACnB,OAAwC;IAExC,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
@@ -5,16 +5,18 @@ import all from "it-all";
|
|
5
5
|
import * as lp from "it-length-prefixed";
|
6
6
|
import { pipe } from "it-pipe";
|
7
7
|
import { Uint8ArrayList } from "uint8arraylist";
|
8
|
-
import {
|
8
|
+
import { StreamManager } from "../stream_manager/index.js";
|
9
9
|
const log = new Logger("metadata");
|
10
10
|
export const MetadataCodec = "/vac/waku/metadata/1.0.0";
|
11
|
-
class Metadata
|
11
|
+
class Metadata {
|
12
12
|
pubsubTopics;
|
13
|
+
streamManager;
|
13
14
|
libp2pComponents;
|
14
15
|
handshakesConfirmed = new Map();
|
16
|
+
multicodec = MetadataCodec;
|
15
17
|
constructor(pubsubTopics, libp2p) {
|
16
|
-
super(MetadataCodec, libp2p.components, pubsubTopics);
|
17
18
|
this.pubsubTopics = pubsubTopics;
|
19
|
+
this.streamManager = new StreamManager(MetadataCodec, libp2p);
|
18
20
|
this.libp2pComponents = libp2p;
|
19
21
|
void libp2p.registrar.handle(MetadataCodec, (streamData) => {
|
20
22
|
void this.onRequest(streamData);
|
@@ -34,7 +36,7 @@ class Metadata extends BaseProtocol {
|
|
34
36
|
}
|
35
37
|
let stream;
|
36
38
|
try {
|
37
|
-
stream = await this.getStream(peerId);
|
39
|
+
stream = await this.streamManager.getStream(peerId);
|
38
40
|
}
|
39
41
|
catch (error) {
|
40
42
|
log.error("Failed to get stream", error);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/lib/metadata/metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,aAAa,EAGd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/lib/metadata/metadata.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/store/rpc.js
CHANGED
@@ -12,6 +12,7 @@ export class StoreQueryRequest {
|
|
12
12
|
static create(params) {
|
13
13
|
const request = new StoreQueryRequest({
|
14
14
|
...params,
|
15
|
+
contentTopics: params.contentTopics || [],
|
15
16
|
requestId: uuid(),
|
16
17
|
timeStart: params.timeStart
|
17
18
|
? BigInt(params.timeStart.getTime() * ONE_MILLION)
|
@@ -24,17 +25,22 @@ export class StoreQueryRequest {
|
|
24
25
|
? BigInt(params.paginationLimit)
|
25
26
|
: undefined
|
26
27
|
});
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
const isHashQuery = params.messageHashes && params.messageHashes.length > 0;
|
29
|
+
const hasContentTopics = params.contentTopics && params.contentTopics.length > 0;
|
30
|
+
const hasTimeFilter = params.timeStart || params.timeEnd;
|
31
|
+
if (isHashQuery) {
|
32
|
+
if (hasContentTopics || hasTimeFilter) {
|
33
|
+
throw new Error("Message hash lookup queries cannot include content filter criteria (contentTopics, timeStart, or timeEnd)");
|
34
|
+
}
|
31
35
|
}
|
32
|
-
|
33
|
-
(params.pubsubTopic
|
34
|
-
params.contentTopics ||
|
35
|
-
params.
|
36
|
-
|
37
|
-
|
36
|
+
else {
|
37
|
+
if ((params.pubsubTopic &&
|
38
|
+
(!params.contentTopics || params.contentTopics.length === 0)) ||
|
39
|
+
(!params.pubsubTopic &&
|
40
|
+
params.contentTopics &&
|
41
|
+
params.contentTopics.length > 0)) {
|
42
|
+
throw new Error("Both pubsubTopic and contentTopics must be set together for content-filtered queries");
|
43
|
+
}
|
38
44
|
}
|
39
45
|
return request;
|
40
46
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/lib/store/rpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,iHAAiH;AACjH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAE7B,MAAM,OAAO,iBAAiB;IACF;IAA1B,YAA0B,KAA8B;QAA9B,UAAK,GAAL,KAAK,CAAyB;IAAG,CAAC;IAErD,MAAM,CAAC,MAAM,CAAC,MAA0B;QAC7C,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC;YACpC,GAAG,MAAM;YACT,SAAS,EAAE,IAAI,EAAE;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBACzB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC;gBAClD,CAAC,CAAC,SAAS;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;gBACrB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC;gBAChD,CAAC,CAAC,SAAS;YACb,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;YACzC,eAAe,EAAE,MAAM,CAAC,eAAe;gBACrC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;gBAChC,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;QAEH,
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/lib/store/rpc.ts"],"names":[],"mappings":"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"}
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import type { PeerId } from "@libp2p/interface";
|
2
|
-
import { IDecodedMessage, IDecoder,
|
3
|
-
import { BaseProtocol } from "../base_protocol.js";
|
2
|
+
import { IDecodedMessage, IDecoder, Libp2p, PubsubTopic, QueryRequestParams } from "@waku/interfaces";
|
4
3
|
export declare const StoreCodec = "/vac/waku/store-query/3.0.0";
|
5
|
-
export declare class StoreCore
|
4
|
+
export declare class StoreCore {
|
6
5
|
readonly pubsubTopics: PubsubTopic[];
|
6
|
+
private readonly streamManager;
|
7
|
+
readonly multicodec = "/vac/waku/store-query/3.0.0";
|
7
8
|
constructor(pubsubTopics: PubsubTopic[], libp2p: Libp2p);
|
8
9
|
queryPerPage<T extends IDecodedMessage>(queryOpts: QueryRequestParams, decoders: Map<string, IDecoder<T>>, peerId: PeerId): AsyncGenerator<Promise<T | undefined>[]>;
|
9
10
|
}
|
package/dist/lib/store/store.js
CHANGED
@@ -3,20 +3,26 @@ import all from "it-all";
|
|
3
3
|
import * as lp from "it-length-prefixed";
|
4
4
|
import { pipe } from "it-pipe";
|
5
5
|
import { Uint8ArrayList } from "uint8arraylist";
|
6
|
-
import {
|
6
|
+
import { StreamManager } from "../stream_manager/index.js";
|
7
7
|
import { toProtoMessage } from "../to_proto_message.js";
|
8
8
|
import { DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, StoreQueryRequest, StoreQueryResponse } from "./rpc.js";
|
9
9
|
const log = new Logger("store");
|
10
10
|
export const StoreCodec = "/vac/waku/store-query/3.0.0";
|
11
|
-
export class StoreCore
|
11
|
+
export class StoreCore {
|
12
12
|
pubsubTopics;
|
13
|
+
streamManager;
|
14
|
+
multicodec = StoreCodec;
|
13
15
|
constructor(pubsubTopics, libp2p) {
|
14
|
-
super(StoreCodec, libp2p.components, pubsubTopics);
|
15
16
|
this.pubsubTopics = pubsubTopics;
|
17
|
+
this.streamManager = new StreamManager(StoreCodec, libp2p.components);
|
16
18
|
}
|
17
19
|
async *queryPerPage(queryOpts, decoders, peerId) {
|
18
|
-
|
19
|
-
|
20
|
+
// Only validate decoder content topics for content-filtered queries
|
21
|
+
const isHashQuery = queryOpts.messageHashes && queryOpts.messageHashes.length > 0;
|
22
|
+
if (!isHashQuery &&
|
23
|
+
queryOpts.contentTopics &&
|
24
|
+
queryOpts.contentTopics.toString() !==
|
25
|
+
Array.from(decoders.keys()).toString()) {
|
20
26
|
throw new Error("Internal error, the decoders should match the query's content topics");
|
21
27
|
}
|
22
28
|
let currentCursor = queryOpts.paginationCursor;
|
@@ -25,9 +31,15 @@ export class StoreCore extends BaseProtocol {
|
|
25
31
|
...queryOpts,
|
26
32
|
paginationCursor: currentCursor
|
27
33
|
});
|
34
|
+
log.info("Sending store query request:", {
|
35
|
+
hasMessageHashes: !!queryOpts.messageHashes?.length,
|
36
|
+
messageHashCount: queryOpts.messageHashes?.length,
|
37
|
+
pubsubTopic: queryOpts.pubsubTopic,
|
38
|
+
contentTopics: queryOpts.contentTopics
|
39
|
+
});
|
28
40
|
let stream;
|
29
41
|
try {
|
30
|
-
stream = await this.getStream(peerId);
|
42
|
+
stream = await this.streamManager.getStream(peerId);
|
31
43
|
}
|
32
44
|
catch (e) {
|
33
45
|
log.error("Failed to get stream", e);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/lib/store/store.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/lib/store/store.ts"],"names":[],"mappings":"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"}
|