@waku/core 0.0.30 → 0.0.31-04bd518.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.
Files changed (55) hide show
  1. package/bundle/{base_protocol-C6HnrRx8.js → base_protocol-BM6GbS_d.js} +19 -18
  2. package/bundle/index.js +81 -83
  3. package/bundle/lib/base_protocol.js +1 -1
  4. package/bundle/lib/message/version_0.js +1 -1
  5. package/bundle/{version_0-DQ9xsSLk.js → version_0-WhJLc79v.js} +1 -1
  6. package/dist/.tsbuildinfo +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/base_protocol.d.ts +2 -2
  11. package/dist/lib/base_protocol.js +1 -1
  12. package/dist/lib/base_protocol.js.map +1 -1
  13. package/dist/lib/connection_manager.d.ts +1 -1
  14. package/dist/lib/connection_manager.js +21 -23
  15. package/dist/lib/connection_manager.js.map +1 -1
  16. package/dist/lib/filter/filter_rpc.js.map +1 -1
  17. package/dist/lib/filter/index.d.ts +2 -2
  18. package/dist/lib/filter/index.js +29 -29
  19. package/dist/lib/filter/index.js.map +1 -1
  20. package/dist/lib/keep_alive_manager.d.ts +13 -7
  21. package/dist/lib/keep_alive_manager.js +9 -9
  22. package/dist/lib/keep_alive_manager.js.map +1 -1
  23. package/dist/lib/light_push/index.js.map +1 -1
  24. package/dist/lib/light_push/push_rpc.js.map +1 -1
  25. package/dist/lib/message/version_0.js.map +1 -1
  26. package/dist/lib/metadata/index.js +18 -18
  27. package/dist/lib/metadata/index.js.map +1 -1
  28. package/dist/lib/store/history_rpc.js.map +1 -1
  29. package/dist/lib/store/index.js.map +1 -1
  30. package/dist/lib/stream_manager/index.d.ts +1 -0
  31. package/dist/lib/stream_manager/index.js +2 -0
  32. package/dist/lib/stream_manager/index.js.map +1 -0
  33. package/dist/lib/{stream_manager.js → stream_manager/stream_manager.js} +1 -1
  34. package/dist/lib/stream_manager/stream_manager.js.map +1 -0
  35. package/dist/lib/stream_manager/utils.d.ts +2 -0
  36. package/dist/lib/stream_manager/utils.js +19 -0
  37. package/dist/lib/stream_manager/utils.js.map +1 -0
  38. package/package.json +1 -130
  39. package/src/index.ts +1 -1
  40. package/src/lib/base_protocol.ts +4 -3
  41. package/src/lib/connection_manager.ts +28 -29
  42. package/src/lib/filter/filter_rpc.ts +21 -19
  43. package/src/lib/filter/index.ts +47 -42
  44. package/src/lib/keep_alive_manager.ts +27 -18
  45. package/src/lib/light_push/index.ts +2 -2
  46. package/src/lib/light_push/push_rpc.ts +5 -5
  47. package/src/lib/message/version_0.ts +17 -15
  48. package/src/lib/metadata/index.ts +33 -33
  49. package/src/lib/store/history_rpc.ts +5 -5
  50. package/src/lib/store/index.ts +2 -2
  51. package/src/lib/stream_manager/index.ts +1 -0
  52. package/src/lib/{stream_manager.ts → stream_manager/stream_manager.ts} +3 -2
  53. package/src/lib/stream_manager/utils.ts +22 -0
  54. package/dist/lib/stream_manager.js.map +0 -1
  55. /package/dist/lib/{stream_manager.d.ts → stream_manager/stream_manager.d.ts} +0 -0
@@ -23,9 +23,9 @@ export const MetadataCodec = "/vac/waku/metadata/1.0.0";
23
23
 
24
24
  class Metadata extends BaseProtocol implements IMetadata {
25
25
  private libp2pComponents: Libp2pComponents;
26
- handshakesConfirmed: Map<PeerIdStr, ShardInfo> = new Map();
26
+ protected handshakesConfirmed: Map<PeerIdStr, ShardInfo> = new Map();
27
27
 
28
- constructor(
28
+ public constructor(
29
29
  public shardInfo: ShardInfo,
30
30
  libp2p: Libp2pComponents
31
31
  ) {
@@ -41,40 +41,10 @@ class Metadata extends BaseProtocol implements IMetadata {
41
41
  });
42
42
  }
43
43
 
44
- /**
45
- * Handle an incoming metadata request
46
- */
47
- private async onRequest(streamData: IncomingStreamData): Promise<void> {
48
- try {
49
- const { stream, connection } = streamData;
50
- const encodedShardInfo = proto_metadata.WakuMetadataResponse.encode(
51
- this.shardInfo
52
- );
53
-
54
- const encodedResponse = await pipe(
55
- [encodedShardInfo],
56
- lp.encode,
57
- stream,
58
- lp.decode,
59
- async (source) => await all(source)
60
- );
61
-
62
- const { error, shardInfo } = this.decodeMetadataResponse(encodedResponse);
63
-
64
- if (error) {
65
- return;
66
- }
67
-
68
- await this.savePeerShardInfo(connection.remotePeer, shardInfo);
69
- } catch (error) {
70
- log.error("Error handling metadata request", error);
71
- }
72
- }
73
-
74
44
  /**
75
45
  * Make a metadata query to a peer
76
46
  */
77
- async query(peerId: PeerId): Promise<MetadataQueryResult> {
47
+ public async query(peerId: PeerId): Promise<MetadataQueryResult> {
78
48
  const request = proto_metadata.WakuMetadataRequest.encode(this.shardInfo);
79
49
 
80
50
  const peer = await this.peerStore.get(peerId);
@@ -135,6 +105,36 @@ class Metadata extends BaseProtocol implements IMetadata {
135
105
  return await this.query(peerId);
136
106
  }
137
107
 
108
+ /**
109
+ * Handle an incoming metadata request
110
+ */
111
+ private async onRequest(streamData: IncomingStreamData): Promise<void> {
112
+ try {
113
+ const { stream, connection } = streamData;
114
+ const encodedShardInfo = proto_metadata.WakuMetadataResponse.encode(
115
+ this.shardInfo
116
+ );
117
+
118
+ const encodedResponse = await pipe(
119
+ [encodedShardInfo],
120
+ lp.encode,
121
+ stream,
122
+ lp.decode,
123
+ async (source) => await all(source)
124
+ );
125
+
126
+ const { error, shardInfo } = this.decodeMetadataResponse(encodedResponse);
127
+
128
+ if (error) {
129
+ return;
130
+ }
131
+
132
+ await this.savePeerShardInfo(connection.remotePeer, shardInfo);
133
+ } catch (error) {
134
+ log.error("Error handling metadata request", error);
135
+ }
136
+ }
137
+
138
138
  private decodeMetadataResponse(
139
139
  encodedResponse: Uint8ArrayList[]
140
140
  ): MetadataQueryResult {
@@ -22,18 +22,18 @@ export interface Params {
22
22
  export class HistoryRpc {
23
23
  private constructor(public readonly proto: proto.HistoryRpc) {}
24
24
 
25
- get query(): proto.HistoryQuery | undefined {
25
+ public get query(): proto.HistoryQuery | undefined {
26
26
  return this.proto.query;
27
27
  }
28
28
 
29
- get response(): proto.HistoryResponse | undefined {
29
+ public get response(): proto.HistoryResponse | undefined {
30
30
  return this.proto.response;
31
31
  }
32
32
 
33
33
  /**
34
34
  * Create History Query.
35
35
  */
36
- static createQuery(params: Params): HistoryRpc {
36
+ public static createQuery(params: Params): HistoryRpc {
37
37
  const contentFilters = params.contentTopics.map((contentTopic) => {
38
38
  return { contentTopic };
39
39
  });
@@ -69,12 +69,12 @@ export class HistoryRpc {
69
69
  });
70
70
  }
71
71
 
72
- decode(bytes: Uint8ArrayList): HistoryRpc {
72
+ public decode(bytes: Uint8ArrayList): HistoryRpc {
73
73
  const res = proto.HistoryRpc.decode(bytes);
74
74
  return new HistoryRpc(res);
75
75
  }
76
76
 
77
- encode(): Uint8Array {
77
+ public encode(): Uint8Array {
78
78
  return proto.HistoryRpc.encode(this.proto);
79
79
  }
80
80
  }
@@ -68,11 +68,11 @@ export interface QueryOptions {
68
68
  * The Waku Store protocol can be used to retrieved historical messages.
69
69
  */
70
70
  export class StoreCore extends BaseProtocol implements IStoreCore {
71
- constructor(libp2p: Libp2p, options?: ProtocolCreateOptions) {
71
+ public constructor(libp2p: Libp2p, options?: ProtocolCreateOptions) {
72
72
  super(StoreCodec, libp2p.components, log, options!.pubsubTopics!, options);
73
73
  }
74
74
 
75
- async *queryPerPage<T extends IDecodedMessage>(
75
+ public async *queryPerPage<T extends IDecodedMessage>(
76
76
  queryOpts: Params,
77
77
  decoders: Map<string, IDecoder<T>>,
78
78
  peer: Peer
@@ -0,0 +1 @@
1
+ export { StreamManager } from "./stream_manager.js";
@@ -2,7 +2,8 @@ import type { PeerUpdate, Stream } from "@libp2p/interface";
2
2
  import type { Peer, PeerId } from "@libp2p/interface";
3
3
  import { Libp2p } from "@waku/interfaces";
4
4
  import { Logger } from "@waku/utils";
5
- import { selectConnection } from "@waku/utils/libp2p";
5
+
6
+ import { selectConnection } from "./utils.js";
6
7
 
7
8
  const CONNECTION_TIMEOUT = 5_000;
8
9
  const RETRY_BACKOFF_BASE = 1_000;
@@ -12,7 +13,7 @@ export class StreamManager {
12
13
  private readonly streamPool: Map<string, Promise<Stream | void>>;
13
14
  private readonly log: Logger;
14
15
 
15
- constructor(
16
+ public constructor(
16
17
  public multicodec: string,
17
18
  public getConnections: Libp2p["getConnections"],
18
19
  public addEventListener: Libp2p["addEventListener"]
@@ -0,0 +1,22 @@
1
+ import type { Connection } from "@libp2p/interface";
2
+
3
+ export function selectConnection(
4
+ connections: Connection[]
5
+ ): Connection | undefined {
6
+ if (!connections.length) return;
7
+ if (connections.length === 1) return connections[0];
8
+
9
+ let latestConnection: Connection | undefined;
10
+
11
+ connections.forEach((connection) => {
12
+ if (connection.status === "open") {
13
+ if (!latestConnection) {
14
+ latestConnection = connection;
15
+ } else if (connection.timeline.open > latestConnection.timeline.open) {
16
+ latestConnection = connection;
17
+ }
18
+ }
19
+ });
20
+
21
+ return latestConnection;
22
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream_manager.js","sourceRoot":"","sources":["../../src/lib/stream_manager.ts"],"names":[],"mappings":"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"}