@waku/core 0.0.33-f599932.0 → 0.0.34-09108d9.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 (93) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/bundle/base_protocol-Bp5a9PNG.js +152 -0
  3. package/bundle/{index-BVysxsMu.js → index-G1eRBjeI.js} +136 -215
  4. package/bundle/index.js +1963 -621
  5. package/bundle/lib/base_protocol.js +2 -2
  6. package/bundle/lib/message/version_0.js +2 -2
  7. package/bundle/{version_0-C5ObpJ_0.js → version_0-DJZG2fB2.js} +285 -41
  8. package/dist/.tsbuildinfo +1 -1
  9. package/dist/index.d.ts +2 -5
  10. package/dist/index.js +2 -5
  11. package/dist/index.js.map +1 -1
  12. package/dist/lib/base_protocol.d.ts +3 -23
  13. package/dist/lib/base_protocol.js +3 -51
  14. package/dist/lib/base_protocol.js.map +1 -1
  15. package/dist/lib/connection_manager/connection_manager.d.ts +118 -0
  16. package/dist/lib/{connection_manager.js → connection_manager/connection_manager.js} +136 -36
  17. package/dist/lib/connection_manager/connection_manager.js.map +1 -0
  18. package/dist/lib/connection_manager/index.d.ts +1 -0
  19. package/dist/lib/connection_manager/index.js +2 -0
  20. package/dist/lib/connection_manager/index.js.map +1 -0
  21. package/dist/lib/{keep_alive_manager.d.ts → connection_manager/keep_alive_manager.d.ts} +4 -2
  22. package/dist/lib/{keep_alive_manager.js → connection_manager/keep_alive_manager.js} +2 -2
  23. package/dist/lib/connection_manager/keep_alive_manager.js.map +1 -0
  24. package/dist/lib/connection_manager/utils.d.ts +7 -0
  25. package/dist/lib/connection_manager/utils.js +22 -0
  26. package/dist/lib/connection_manager/utils.js.map +1 -0
  27. package/dist/lib/filter/filter.d.ts +18 -0
  28. package/dist/lib/filter/filter.js +209 -0
  29. package/dist/lib/filter/filter.js.map +1 -0
  30. package/dist/lib/filter/index.d.ts +1 -19
  31. package/dist/lib/filter/index.js +1 -211
  32. package/dist/lib/filter/index.js.map +1 -1
  33. package/dist/lib/light_push/index.d.ts +1 -15
  34. package/dist/lib/light_push/index.js +1 -143
  35. package/dist/lib/light_push/index.js.map +1 -1
  36. package/dist/lib/light_push/light_push.d.ts +15 -0
  37. package/dist/lib/light_push/light_push.js +144 -0
  38. package/dist/lib/light_push/light_push.js.map +1 -0
  39. package/dist/lib/light_push/utils.d.ts +0 -2
  40. package/dist/lib/light_push/utils.js +8 -16
  41. package/dist/lib/light_push/utils.js.map +1 -1
  42. package/dist/lib/metadata/index.d.ts +1 -3
  43. package/dist/lib/metadata/index.js +1 -118
  44. package/dist/lib/metadata/index.js.map +1 -1
  45. package/dist/lib/metadata/metadata.d.ts +3 -0
  46. package/dist/lib/metadata/metadata.js +119 -0
  47. package/dist/lib/metadata/metadata.js.map +1 -0
  48. package/dist/lib/store/index.d.ts +1 -9
  49. package/dist/lib/store/index.js +1 -82
  50. package/dist/lib/store/index.js.map +1 -1
  51. package/dist/lib/store/store.d.ts +9 -0
  52. package/dist/lib/store/store.js +83 -0
  53. package/dist/lib/store/store.js.map +1 -0
  54. package/dist/lib/stream_manager/stream_manager.d.ts +13 -10
  55. package/dist/lib/stream_manager/stream_manager.js +88 -58
  56. package/dist/lib/stream_manager/stream_manager.js.map +1 -1
  57. package/dist/lib/stream_manager/utils.d.ts +1 -1
  58. package/dist/lib/stream_manager/utils.js +5 -17
  59. package/dist/lib/stream_manager/utils.js.map +1 -1
  60. package/package.json +1 -1
  61. package/src/index.ts +2 -7
  62. package/src/lib/base_protocol.ts +3 -82
  63. package/src/lib/{connection_manager.ts → connection_manager/connection_manager.ts} +168 -63
  64. package/src/lib/connection_manager/index.ts +1 -0
  65. package/src/lib/{keep_alive_manager.ts → connection_manager/keep_alive_manager.ts} +7 -3
  66. package/src/lib/connection_manager/utils.ts +25 -0
  67. package/src/lib/filter/filter.ts +315 -0
  68. package/src/lib/filter/index.ts +1 -323
  69. package/src/lib/light_push/index.ts +1 -188
  70. package/src/lib/light_push/light_push.ts +188 -0
  71. package/src/lib/light_push/utils.ts +12 -20
  72. package/src/lib/metadata/index.ts +1 -182
  73. package/src/lib/metadata/metadata.ts +182 -0
  74. package/src/lib/store/index.ts +1 -136
  75. package/src/lib/store/store.ts +136 -0
  76. package/src/lib/stream_manager/stream_manager.ts +125 -69
  77. package/src/lib/stream_manager/utils.ts +5 -17
  78. package/bundle/base_protocol-CS0EDeEY.js +0 -260
  79. package/dist/lib/connection_manager.d.ts +0 -62
  80. package/dist/lib/connection_manager.js.map +0 -1
  81. package/dist/lib/filterPeers.d.ts +0 -13
  82. package/dist/lib/filterPeers.js +0 -38
  83. package/dist/lib/filterPeers.js.map +0 -1
  84. package/dist/lib/health_manager.d.ts +0 -14
  85. package/dist/lib/health_manager.js +0 -70
  86. package/dist/lib/health_manager.js.map +0 -1
  87. package/dist/lib/keep_alive_manager.js.map +0 -1
  88. package/dist/lib/wait_for_remote_peer.d.ts +0 -22
  89. package/dist/lib/wait_for_remote_peer.js +0 -142
  90. package/dist/lib/wait_for_remote_peer.js.map +0 -1
  91. package/src/lib/filterPeers.ts +0 -51
  92. package/src/lib/health_manager.ts +0 -90
  93. package/src/lib/wait_for_remote_peer.ts +0 -200
@@ -0,0 +1,209 @@
1
+ import { ProtocolError } from "@waku/interfaces";
2
+ import { Logger } from "@waku/utils";
3
+ import all from "it-all";
4
+ import * as lp from "it-length-prefixed";
5
+ import { pipe } from "it-pipe";
6
+ import { BaseProtocol } from "../base_protocol.js";
7
+ import { FilterPushRpc, FilterSubscribeResponse, FilterSubscribeRpc } from "./filter_rpc.js";
8
+ const log = new Logger("filter:v2");
9
+ export const FilterCodecs = {
10
+ SUBSCRIBE: "/vac/waku/filter-subscribe/2.0.0-beta1",
11
+ PUSH: "/vac/waku/filter-push/2.0.0-beta1"
12
+ };
13
+ export class FilterCore extends BaseProtocol {
14
+ handleIncomingMessage;
15
+ pubsubTopics;
16
+ constructor(handleIncomingMessage, pubsubTopics, libp2p) {
17
+ super(FilterCodecs.SUBSCRIBE, libp2p.components, pubsubTopics);
18
+ this.handleIncomingMessage = handleIncomingMessage;
19
+ this.pubsubTopics = pubsubTopics;
20
+ libp2p
21
+ .handle(FilterCodecs.PUSH, this.onRequest.bind(this), {
22
+ maxInboundStreams: 100
23
+ })
24
+ .catch((e) => {
25
+ log.error("Failed to register ", FilterCodecs.PUSH, e);
26
+ });
27
+ }
28
+ async subscribe(pubsubTopic, peerId, contentTopics) {
29
+ const stream = await this.getStream(peerId);
30
+ const request = FilterSubscribeRpc.createSubscribeRequest(pubsubTopic, contentTopics);
31
+ let res;
32
+ try {
33
+ res = await pipe([request.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
34
+ }
35
+ catch (error) {
36
+ log.error("Failed to send subscribe request", error);
37
+ return {
38
+ success: null,
39
+ failure: {
40
+ error: ProtocolError.GENERIC_FAIL,
41
+ peerId: peerId
42
+ }
43
+ };
44
+ }
45
+ const { statusCode, requestId, statusDesc } = FilterSubscribeResponse.decode(res[0].slice());
46
+ if (statusCode < 200 || statusCode >= 300) {
47
+ log.error(`Filter subscribe request ${requestId} failed with status code ${statusCode}: ${statusDesc}`);
48
+ return {
49
+ failure: {
50
+ error: ProtocolError.REMOTE_PEER_REJECTED,
51
+ peerId: peerId
52
+ },
53
+ success: null
54
+ };
55
+ }
56
+ return {
57
+ failure: null,
58
+ success: peerId
59
+ };
60
+ }
61
+ async unsubscribe(pubsubTopic, peerId, contentTopics) {
62
+ let stream;
63
+ try {
64
+ stream = await this.getStream(peerId);
65
+ }
66
+ catch (error) {
67
+ log.error(`Failed to get a stream for remote peer${peerId.toString()}`, error);
68
+ return {
69
+ success: null,
70
+ failure: {
71
+ error: ProtocolError.NO_STREAM_AVAILABLE,
72
+ peerId: peerId
73
+ }
74
+ };
75
+ }
76
+ const unsubscribeRequest = FilterSubscribeRpc.createUnsubscribeRequest(pubsubTopic, contentTopics);
77
+ try {
78
+ await pipe([unsubscribeRequest.encode()], lp.encode, stream.sink);
79
+ }
80
+ catch (error) {
81
+ log.error("Failed to send unsubscribe request", error);
82
+ return {
83
+ success: null,
84
+ failure: {
85
+ error: ProtocolError.GENERIC_FAIL,
86
+ peerId: peerId
87
+ }
88
+ };
89
+ }
90
+ return {
91
+ success: peerId,
92
+ failure: null
93
+ };
94
+ }
95
+ async unsubscribeAll(pubsubTopic, peerId) {
96
+ const stream = await this.getStream(peerId);
97
+ const request = FilterSubscribeRpc.createUnsubscribeAllRequest(pubsubTopic);
98
+ const res = await pipe([request.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
99
+ if (!res || !res.length) {
100
+ return {
101
+ failure: {
102
+ error: ProtocolError.NO_RESPONSE,
103
+ peerId: peerId
104
+ },
105
+ success: null
106
+ };
107
+ }
108
+ const { statusCode, requestId, statusDesc } = FilterSubscribeResponse.decode(res[0].slice());
109
+ if (statusCode < 200 || statusCode >= 300) {
110
+ log.error(`Filter unsubscribe all request ${requestId} failed with status code ${statusCode}: ${statusDesc}`);
111
+ return {
112
+ failure: {
113
+ error: ProtocolError.REMOTE_PEER_REJECTED,
114
+ peerId: peerId
115
+ },
116
+ success: null
117
+ };
118
+ }
119
+ return {
120
+ failure: null,
121
+ success: peerId
122
+ };
123
+ }
124
+ async ping(peerId) {
125
+ let stream;
126
+ try {
127
+ stream = await this.getStream(peerId);
128
+ }
129
+ catch (error) {
130
+ log.error(`Failed to get a stream for remote peer${peerId.toString()}`, error);
131
+ return {
132
+ success: null,
133
+ failure: {
134
+ error: ProtocolError.NO_STREAM_AVAILABLE,
135
+ peerId: peerId
136
+ }
137
+ };
138
+ }
139
+ const request = FilterSubscribeRpc.createSubscriberPingRequest();
140
+ let res;
141
+ try {
142
+ res = await pipe([request.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
143
+ }
144
+ catch (error) {
145
+ log.error("Failed to send ping request", error);
146
+ return {
147
+ success: null,
148
+ failure: {
149
+ error: ProtocolError.GENERIC_FAIL,
150
+ peerId: peerId
151
+ }
152
+ };
153
+ }
154
+ if (!res || !res.length) {
155
+ return {
156
+ success: null,
157
+ failure: {
158
+ error: ProtocolError.NO_RESPONSE,
159
+ peerId: peerId
160
+ }
161
+ };
162
+ }
163
+ const { statusCode, requestId, statusDesc } = FilterSubscribeResponse.decode(res[0].slice());
164
+ if (statusCode < 200 || statusCode >= 300) {
165
+ log.error(`Filter ping request ${requestId} failed with status code ${statusCode}: ${statusDesc}`);
166
+ return {
167
+ success: null,
168
+ failure: {
169
+ error: ProtocolError.REMOTE_PEER_REJECTED,
170
+ peerId: peerId
171
+ }
172
+ };
173
+ }
174
+ return {
175
+ success: peerId,
176
+ failure: null
177
+ };
178
+ }
179
+ onRequest(streamData) {
180
+ const { connection, stream } = streamData;
181
+ const { remotePeer } = connection;
182
+ log.info(`Received message from ${remotePeer.toString()}`);
183
+ try {
184
+ pipe(stream, lp.decode, async (source) => {
185
+ for await (const bytes of source) {
186
+ const response = FilterPushRpc.decode(bytes.slice());
187
+ const { pubsubTopic, wakuMessage } = response;
188
+ if (!wakuMessage) {
189
+ log.error("Received empty message");
190
+ return;
191
+ }
192
+ if (!pubsubTopic) {
193
+ log.error("Pubsub topic missing from push message");
194
+ return;
195
+ }
196
+ await this.handleIncomingMessage(pubsubTopic, wakuMessage, connection.remotePeer.toString());
197
+ }
198
+ }).then(() => {
199
+ log.info("Receiving pipe closed.");
200
+ }, async (e) => {
201
+ log.error(`Error with receiving pipe on peer:${connection.remotePeer.toString()} -- stream:${stream.id} -- protocol:${stream.protocol}: `, e);
202
+ });
203
+ }
204
+ catch (e) {
205
+ log.error("Error decoding message", e);
206
+ }
207
+ }
208
+ }
209
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/lib/filter/filter.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1 @@
1
- import type { Peer } from "@libp2p/interface";
2
- import { type ContentTopic, type CoreProtocolResult, type IBaseProtocolCore, type Libp2p, type PubsubTopic } from "@waku/interfaces";
3
- import { WakuMessage } from "@waku/proto";
4
- import { BaseProtocol } from "../base_protocol.js";
5
- export declare const FilterCodecs: {
6
- SUBSCRIBE: string;
7
- PUSH: string;
8
- };
9
- export declare class FilterCore extends BaseProtocol implements IBaseProtocolCore {
10
- private handleIncomingMessage;
11
- private handleError;
12
- readonly pubsubTopics: PubsubTopic[];
13
- constructor(handleIncomingMessage: (pubsubTopic: PubsubTopic, wakuMessage: WakuMessage, peerIdStr: string) => Promise<void>, handleError: (error: Error) => Promise<void>, pubsubTopics: PubsubTopic[], libp2p: Libp2p);
14
- subscribe(pubsubTopic: PubsubTopic, peer: Peer, contentTopics: ContentTopic[]): Promise<CoreProtocolResult>;
15
- unsubscribe(pubsubTopic: PubsubTopic, peer: Peer, contentTopics: ContentTopic[]): Promise<CoreProtocolResult>;
16
- unsubscribeAll(pubsubTopic: PubsubTopic, peer: Peer): Promise<CoreProtocolResult>;
17
- ping(peer: Peer): Promise<CoreProtocolResult>;
18
- private onRequest;
19
- }
1
+ export { FilterCodecs, FilterCore } from "./filter.js";
@@ -1,212 +1,2 @@
1
- import { ProtocolError } from "@waku/interfaces";
2
- import { Logger } from "@waku/utils";
3
- import all from "it-all";
4
- import * as lp from "it-length-prefixed";
5
- import { pipe } from "it-pipe";
6
- import { BaseProtocol } from "../base_protocol.js";
7
- import { FilterPushRpc, FilterSubscribeResponse, FilterSubscribeRpc } from "./filter_rpc.js";
8
- const log = new Logger("filter:v2");
9
- export const FilterCodecs = {
10
- SUBSCRIBE: "/vac/waku/filter-subscribe/2.0.0-beta1",
11
- PUSH: "/vac/waku/filter-push/2.0.0-beta1"
12
- };
13
- export class FilterCore extends BaseProtocol {
14
- handleIncomingMessage;
15
- handleError;
16
- pubsubTopics;
17
- constructor(handleIncomingMessage, handleError, pubsubTopics, libp2p) {
18
- super(FilterCodecs.SUBSCRIBE, libp2p.components, log, pubsubTopics);
19
- this.handleIncomingMessage = handleIncomingMessage;
20
- this.handleError = handleError;
21
- this.pubsubTopics = pubsubTopics;
22
- libp2p
23
- .handle(FilterCodecs.PUSH, this.onRequest.bind(this), {
24
- maxInboundStreams: 100
25
- })
26
- .catch((e) => {
27
- log.error("Failed to register ", FilterCodecs.PUSH, e);
28
- });
29
- }
30
- async subscribe(pubsubTopic, peer, contentTopics) {
31
- const stream = await this.getStream(peer);
32
- const request = FilterSubscribeRpc.createSubscribeRequest(pubsubTopic, contentTopics);
33
- let res;
34
- try {
35
- res = await pipe([request.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
36
- }
37
- catch (error) {
38
- log.error("Failed to send subscribe request", error);
39
- return {
40
- success: null,
41
- failure: {
42
- error: ProtocolError.GENERIC_FAIL,
43
- peerId: peer.id
44
- }
45
- };
46
- }
47
- const { statusCode, requestId, statusDesc } = FilterSubscribeResponse.decode(res[0].slice());
48
- if (statusCode < 200 || statusCode >= 300) {
49
- log.error(`Filter subscribe request ${requestId} failed with status code ${statusCode}: ${statusDesc}`);
50
- return {
51
- failure: {
52
- error: ProtocolError.REMOTE_PEER_REJECTED,
53
- peerId: peer.id
54
- },
55
- success: null
56
- };
57
- }
58
- return {
59
- failure: null,
60
- success: peer.id
61
- };
62
- }
63
- async unsubscribe(pubsubTopic, peer, contentTopics) {
64
- let stream;
65
- try {
66
- stream = await this.getStream(peer);
67
- }
68
- catch (error) {
69
- log.error(`Failed to get a stream for remote peer${peer.id.toString()}`, error);
70
- return {
71
- success: null,
72
- failure: {
73
- error: ProtocolError.NO_STREAM_AVAILABLE,
74
- peerId: peer.id
75
- }
76
- };
77
- }
78
- const unsubscribeRequest = FilterSubscribeRpc.createUnsubscribeRequest(pubsubTopic, contentTopics);
79
- try {
80
- await pipe([unsubscribeRequest.encode()], lp.encode, stream.sink);
81
- }
82
- catch (error) {
83
- log.error("Failed to send unsubscribe request", error);
84
- return {
85
- success: null,
86
- failure: {
87
- error: ProtocolError.GENERIC_FAIL,
88
- peerId: peer.id
89
- }
90
- };
91
- }
92
- return {
93
- success: peer.id,
94
- failure: null
95
- };
96
- }
97
- async unsubscribeAll(pubsubTopic, peer) {
98
- const stream = await this.getStream(peer);
99
- const request = FilterSubscribeRpc.createUnsubscribeAllRequest(pubsubTopic);
100
- const res = await pipe([request.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
101
- if (!res || !res.length) {
102
- return {
103
- failure: {
104
- error: ProtocolError.NO_RESPONSE,
105
- peerId: peer.id
106
- },
107
- success: null
108
- };
109
- }
110
- const { statusCode, requestId, statusDesc } = FilterSubscribeResponse.decode(res[0].slice());
111
- if (statusCode < 200 || statusCode >= 300) {
112
- log.error(`Filter unsubscribe all request ${requestId} failed with status code ${statusCode}: ${statusDesc}`);
113
- return {
114
- failure: {
115
- error: ProtocolError.REMOTE_PEER_REJECTED,
116
- peerId: peer.id
117
- },
118
- success: null
119
- };
120
- }
121
- return {
122
- failure: null,
123
- success: peer.id
124
- };
125
- }
126
- async ping(peer) {
127
- let stream;
128
- try {
129
- stream = await this.getStream(peer);
130
- }
131
- catch (error) {
132
- log.error(`Failed to get a stream for remote peer${peer.id.toString()}`, error);
133
- return {
134
- success: null,
135
- failure: {
136
- error: ProtocolError.NO_STREAM_AVAILABLE,
137
- peerId: peer.id
138
- }
139
- };
140
- }
141
- const request = FilterSubscribeRpc.createSubscriberPingRequest();
142
- let res;
143
- try {
144
- res = await pipe([request.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
145
- }
146
- catch (error) {
147
- log.error("Failed to send ping request", error);
148
- return {
149
- success: null,
150
- failure: {
151
- error: ProtocolError.GENERIC_FAIL,
152
- peerId: peer.id
153
- }
154
- };
155
- }
156
- if (!res || !res.length) {
157
- return {
158
- success: null,
159
- failure: {
160
- error: ProtocolError.NO_RESPONSE,
161
- peerId: peer.id
162
- }
163
- };
164
- }
165
- const { statusCode, requestId, statusDesc } = FilterSubscribeResponse.decode(res[0].slice());
166
- if (statusCode < 200 || statusCode >= 300) {
167
- log.error(`Filter ping request ${requestId} failed with status code ${statusCode}: ${statusDesc}`);
168
- return {
169
- success: null,
170
- failure: {
171
- error: ProtocolError.REMOTE_PEER_REJECTED,
172
- peerId: peer.id
173
- }
174
- };
175
- }
176
- return {
177
- success: peer.id,
178
- failure: null
179
- };
180
- }
181
- onRequest(streamData) {
182
- const { connection, stream } = streamData;
183
- const { remotePeer } = connection;
184
- log.info(`Received message from ${remotePeer.toString()}`);
185
- try {
186
- pipe(stream, lp.decode, async (source) => {
187
- for await (const bytes of source) {
188
- const response = FilterPushRpc.decode(bytes.slice());
189
- const { pubsubTopic, wakuMessage } = response;
190
- if (!wakuMessage) {
191
- log.error("Received empty message");
192
- return;
193
- }
194
- if (!pubsubTopic) {
195
- log.error("Pubsub topic missing from push message");
196
- return;
197
- }
198
- await this.handleIncomingMessage(pubsubTopic, wakuMessage, connection.remotePeer.toString());
199
- }
200
- }).then(() => {
201
- log.info("Receiving pipe closed.");
202
- }, async (e) => {
203
- log.error("Error with receiving pipe", e, " -- ", "on peer ", connection.remotePeer.toString(), " -- ", "stream ", stream);
204
- await this.handleError(e);
205
- });
206
- }
207
- catch (e) {
208
- log.error("Error decoding message", e);
209
- }
210
- }
211
- }
1
+ export { FilterCodecs, FilterCore } from "./filter.js";
212
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/filter/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/filter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -1,15 +1 @@
1
- import type { Peer } from "@libp2p/interface";
2
- import { type CoreProtocolResult, type IBaseProtocolCore, type IEncoder, type IMessage, type Libp2p, PubsubTopic } from "@waku/interfaces";
3
- import { PushResponse } from "@waku/proto";
4
- import { BaseProtocol } from "../base_protocol.js";
5
- export declare const LightPushCodec = "/vac/waku/lightpush/2.0.0-beta1";
6
- export { PushResponse };
7
- /**
8
- * Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
9
- */
10
- export declare class LightPushCore extends BaseProtocol implements IBaseProtocolCore {
11
- readonly pubsubTopics: PubsubTopic[];
12
- constructor(pubsubTopics: PubsubTopic[], libp2p: Libp2p);
13
- private preparePushMessage;
14
- send(encoder: IEncoder, message: IMessage, peer: Peer): Promise<CoreProtocolResult>;
15
- }
1
+ export { LightPushCore, LightPushCodec, PushResponse } from "./light_push.js";
@@ -1,144 +1,2 @@
1
- import { ProtocolError } from "@waku/interfaces";
2
- import { PushResponse } from "@waku/proto";
3
- import { isMessageSizeUnderCap } from "@waku/utils";
4
- import { Logger } from "@waku/utils";
5
- import all from "it-all";
6
- import * as lp from "it-length-prefixed";
7
- import { pipe } from "it-pipe";
8
- import { Uint8ArrayList } from "uint8arraylist";
9
- import { BaseProtocol } from "../base_protocol.js";
10
- import { PushRpc } from "./push_rpc.js";
11
- import { isRLNResponseError, matchRLNErrorMessage } from "./utils.js";
12
- const log = new Logger("light-push");
13
- export const LightPushCodec = "/vac/waku/lightpush/2.0.0-beta1";
14
- export { PushResponse };
15
- /**
16
- * Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
17
- */
18
- export class LightPushCore extends BaseProtocol {
19
- pubsubTopics;
20
- constructor(pubsubTopics, libp2p) {
21
- super(LightPushCodec, libp2p.components, log, pubsubTopics);
22
- this.pubsubTopics = pubsubTopics;
23
- }
24
- async preparePushMessage(encoder, message) {
25
- try {
26
- if (!message.payload || message.payload.length === 0) {
27
- log.error("Failed to send waku light push: payload is empty");
28
- return { query: null, error: ProtocolError.EMPTY_PAYLOAD };
29
- }
30
- if (!(await isMessageSizeUnderCap(encoder, message))) {
31
- log.error("Failed to send waku light push: message is bigger than 1MB");
32
- return { query: null, error: ProtocolError.SIZE_TOO_BIG };
33
- }
34
- const protoMessage = await encoder.toProtoObj(message);
35
- if (!protoMessage) {
36
- log.error("Failed to encode to protoMessage, aborting push");
37
- return {
38
- query: null,
39
- error: ProtocolError.ENCODE_FAILED
40
- };
41
- }
42
- const query = PushRpc.createRequest(protoMessage, encoder.pubsubTopic);
43
- return { query, error: null };
44
- }
45
- catch (error) {
46
- log.error("Failed to prepare push message", error);
47
- return {
48
- query: null,
49
- error: ProtocolError.GENERIC_FAIL
50
- };
51
- }
52
- }
53
- async send(encoder, message, peer) {
54
- const { query, error: preparationError } = await this.preparePushMessage(encoder, message);
55
- if (preparationError || !query) {
56
- return {
57
- success: null,
58
- failure: {
59
- error: preparationError,
60
- peerId: peer.id
61
- }
62
- };
63
- }
64
- let stream;
65
- try {
66
- stream = await this.getStream(peer);
67
- }
68
- catch (error) {
69
- log.error("Failed to get stream", error);
70
- return {
71
- success: null,
72
- failure: {
73
- error: ProtocolError.NO_STREAM_AVAILABLE,
74
- peerId: peer.id
75
- }
76
- };
77
- }
78
- let res;
79
- try {
80
- res = await pipe([query.encode()], lp.encode, stream, lp.decode, async (source) => await all(source));
81
- }
82
- catch (err) {
83
- log.error("Failed to send waku light push request", err);
84
- return {
85
- success: null,
86
- failure: {
87
- error: ProtocolError.GENERIC_FAIL,
88
- peerId: peer.id
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 {
103
- success: null,
104
- failure: {
105
- error: ProtocolError.DECODE_FAILED,
106
- peerId: peer.id
107
- }
108
- };
109
- }
110
- if (!response) {
111
- log.error("Remote peer fault: No response in PushRPC");
112
- return {
113
- success: null,
114
- failure: {
115
- error: ProtocolError.NO_RESPONSE,
116
- peerId: peer.id
117
- }
118
- };
119
- }
120
- if (isRLNResponseError(response.info)) {
121
- const rlnErrorCase = matchRLNErrorMessage(response.info);
122
- log.error("Remote peer rejected the message: ", rlnErrorCase);
123
- return {
124
- success: null,
125
- failure: {
126
- error: rlnErrorCase,
127
- peerId: peer.id
128
- }
129
- };
130
- }
131
- if (!response.isSuccess) {
132
- log.error("Remote peer rejected the message: ", response.info);
133
- return {
134
- success: null,
135
- failure: {
136
- error: ProtocolError.REMOTE_PEER_REJECTED,
137
- peerId: peer.id
138
- }
139
- };
140
- }
141
- return { success: peer.id, failure: null };
142
- }
143
- }
1
+ export { LightPushCore, LightPushCodec, PushResponse } from "./light_push.js";
144
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/light_push/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/light_push/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { PeerId } from "@libp2p/interface";
2
+ import { type CoreProtocolResult, type IBaseProtocolCore, type IEncoder, type IMessage, type Libp2p, PubsubTopic } from "@waku/interfaces";
3
+ import { PushResponse } from "@waku/proto";
4
+ import { BaseProtocol } from "../base_protocol.js";
5
+ export declare const LightPushCodec = "/vac/waku/lightpush/2.0.0-beta1";
6
+ export { PushResponse };
7
+ /**
8
+ * Implements the [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
9
+ */
10
+ export declare class LightPushCore extends BaseProtocol implements IBaseProtocolCore {
11
+ readonly pubsubTopics: PubsubTopic[];
12
+ constructor(pubsubTopics: PubsubTopic[], libp2p: Libp2p);
13
+ private preparePushMessage;
14
+ send(encoder: IEncoder, message: IMessage, peerId: PeerId): Promise<CoreProtocolResult>;
15
+ }