@hashtree/worker 0.2.0 → 0.2.1

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 (259) hide show
  1. package/package.json +7 -3
  2. package/src/app-runtime.ts +393 -0
  3. package/src/capabilities/blossomBandwidthTracker.ts +74 -0
  4. package/src/capabilities/blossomTransport.ts +179 -0
  5. package/src/capabilities/connectivity.ts +54 -0
  6. package/src/capabilities/idbStorage.ts +94 -0
  7. package/src/capabilities/meshRouterStore.ts +426 -0
  8. package/src/capabilities/rootResolver.ts +497 -0
  9. package/src/client-id.ts +137 -0
  10. package/src/client.ts +501 -0
  11. package/{dist/entry.js → src/entry.ts} +1 -1
  12. package/src/htree-path.ts +53 -0
  13. package/src/htree-url.ts +156 -0
  14. package/src/index.ts +76 -0
  15. package/src/mediaStreaming.ts +64 -0
  16. package/src/p2p/boundedQueue.ts +168 -0
  17. package/src/p2p/errorMessage.ts +6 -0
  18. package/src/p2p/index.ts +48 -0
  19. package/src/p2p/lruCache.ts +78 -0
  20. package/src/p2p/meshQueryRouter.ts +361 -0
  21. package/src/p2p/protocol.ts +11 -0
  22. package/src/p2p/queryForwardingMachine.ts +197 -0
  23. package/src/p2p/signaling.ts +284 -0
  24. package/src/p2p/uploadRateLimiter.ts +85 -0
  25. package/src/p2p/webrtcController.ts +1168 -0
  26. package/src/p2p/webrtcProxy.ts +519 -0
  27. package/src/privacyGuards.ts +31 -0
  28. package/src/protocol.ts +124 -0
  29. package/src/relay/identity.ts +86 -0
  30. package/src/relay/mediaHandler.ts +1633 -0
  31. package/src/relay/ndk.ts +590 -0
  32. package/{dist/relay/nostr-wasm.js → src/relay/nostr-wasm.ts} +4 -1
  33. package/src/relay/nostr.ts +249 -0
  34. package/src/relay/protocol.ts +361 -0
  35. package/src/relay/publicAssetUrl.ts +25 -0
  36. package/src/relay/rootPathResolver.ts +50 -0
  37. package/src/relay/shims.d.ts +17 -0
  38. package/src/relay/signing.ts +332 -0
  39. package/src/relay/treeRootCache.ts +354 -0
  40. package/src/relay/treeRootSubscription.ts +577 -0
  41. package/src/relay/utils/constants.ts +139 -0
  42. package/src/relay/utils/errorMessage.ts +7 -0
  43. package/src/relay/utils/lruCache.ts +79 -0
  44. package/src/relay/webrtc.ts +5 -0
  45. package/src/relay/webrtcSignaling.ts +108 -0
  46. package/src/relay/worker.ts +1787 -0
  47. package/src/relay-client.ts +265 -0
  48. package/src/relay-entry.ts +1 -0
  49. package/src/runtime-network.ts +134 -0
  50. package/src/runtime.ts +153 -0
  51. package/{dist/transferableBytes.js → src/transferableBytes.ts} +2 -3
  52. package/src/tree-root.ts +851 -0
  53. package/src/types.ts +8 -0
  54. package/src/worker.ts +975 -0
  55. package/dist/app-runtime.d.ts +0 -60
  56. package/dist/app-runtime.d.ts.map +0 -1
  57. package/dist/app-runtime.js +0 -271
  58. package/dist/app-runtime.js.map +0 -1
  59. package/dist/capabilities/blossomBandwidthTracker.d.ts +0 -26
  60. package/dist/capabilities/blossomBandwidthTracker.d.ts.map +0 -1
  61. package/dist/capabilities/blossomBandwidthTracker.js +0 -53
  62. package/dist/capabilities/blossomBandwidthTracker.js.map +0 -1
  63. package/dist/capabilities/blossomTransport.d.ts +0 -22
  64. package/dist/capabilities/blossomTransport.d.ts.map +0 -1
  65. package/dist/capabilities/blossomTransport.js +0 -139
  66. package/dist/capabilities/blossomTransport.js.map +0 -1
  67. package/dist/capabilities/connectivity.d.ts +0 -3
  68. package/dist/capabilities/connectivity.d.ts.map +0 -1
  69. package/dist/capabilities/connectivity.js +0 -49
  70. package/dist/capabilities/connectivity.js.map +0 -1
  71. package/dist/capabilities/idbStorage.d.ts +0 -25
  72. package/dist/capabilities/idbStorage.d.ts.map +0 -1
  73. package/dist/capabilities/idbStorage.js +0 -73
  74. package/dist/capabilities/idbStorage.js.map +0 -1
  75. package/dist/capabilities/meshRouterStore.d.ts +0 -71
  76. package/dist/capabilities/meshRouterStore.d.ts.map +0 -1
  77. package/dist/capabilities/meshRouterStore.js +0 -316
  78. package/dist/capabilities/meshRouterStore.js.map +0 -1
  79. package/dist/capabilities/rootResolver.d.ts +0 -10
  80. package/dist/capabilities/rootResolver.d.ts.map +0 -1
  81. package/dist/capabilities/rootResolver.js +0 -392
  82. package/dist/capabilities/rootResolver.js.map +0 -1
  83. package/dist/client-id.d.ts +0 -18
  84. package/dist/client-id.d.ts.map +0 -1
  85. package/dist/client-id.js +0 -98
  86. package/dist/client-id.js.map +0 -1
  87. package/dist/client.d.ts +0 -61
  88. package/dist/client.d.ts.map +0 -1
  89. package/dist/client.js +0 -417
  90. package/dist/client.js.map +0 -1
  91. package/dist/entry.d.ts +0 -2
  92. package/dist/entry.d.ts.map +0 -1
  93. package/dist/entry.js.map +0 -1
  94. package/dist/htree-path.d.ts +0 -13
  95. package/dist/htree-path.d.ts.map +0 -1
  96. package/dist/htree-path.js +0 -38
  97. package/dist/htree-path.js.map +0 -1
  98. package/dist/htree-url.d.ts +0 -22
  99. package/dist/htree-url.d.ts.map +0 -1
  100. package/dist/htree-url.js +0 -118
  101. package/dist/htree-url.js.map +0 -1
  102. package/dist/index.d.ts +0 -17
  103. package/dist/index.d.ts.map +0 -1
  104. package/dist/index.js +0 -8
  105. package/dist/index.js.map +0 -1
  106. package/dist/mediaStreaming.d.ts +0 -7
  107. package/dist/mediaStreaming.d.ts.map +0 -1
  108. package/dist/mediaStreaming.js +0 -48
  109. package/dist/mediaStreaming.js.map +0 -1
  110. package/dist/p2p/boundedQueue.d.ts +0 -79
  111. package/dist/p2p/boundedQueue.d.ts.map +0 -1
  112. package/dist/p2p/boundedQueue.js +0 -134
  113. package/dist/p2p/boundedQueue.js.map +0 -1
  114. package/dist/p2p/errorMessage.d.ts +0 -5
  115. package/dist/p2p/errorMessage.d.ts.map +0 -1
  116. package/dist/p2p/errorMessage.js +0 -7
  117. package/dist/p2p/errorMessage.js.map +0 -1
  118. package/dist/p2p/index.d.ts +0 -8
  119. package/dist/p2p/index.d.ts.map +0 -1
  120. package/dist/p2p/index.js +0 -6
  121. package/dist/p2p/index.js.map +0 -1
  122. package/dist/p2p/lruCache.d.ts +0 -26
  123. package/dist/p2p/lruCache.d.ts.map +0 -1
  124. package/dist/p2p/lruCache.js +0 -65
  125. package/dist/p2p/lruCache.js.map +0 -1
  126. package/dist/p2p/meshQueryRouter.d.ts +0 -57
  127. package/dist/p2p/meshQueryRouter.d.ts.map +0 -1
  128. package/dist/p2p/meshQueryRouter.js +0 -264
  129. package/dist/p2p/meshQueryRouter.js.map +0 -1
  130. package/dist/p2p/protocol.d.ts +0 -10
  131. package/dist/p2p/protocol.d.ts.map +0 -1
  132. package/dist/p2p/protocol.js +0 -2
  133. package/dist/p2p/protocol.js.map +0 -1
  134. package/dist/p2p/queryForwardingMachine.d.ts +0 -46
  135. package/dist/p2p/queryForwardingMachine.d.ts.map +0 -1
  136. package/dist/p2p/queryForwardingMachine.js +0 -144
  137. package/dist/p2p/queryForwardingMachine.js.map +0 -1
  138. package/dist/p2p/signaling.d.ts +0 -63
  139. package/dist/p2p/signaling.d.ts.map +0 -1
  140. package/dist/p2p/signaling.js +0 -185
  141. package/dist/p2p/signaling.js.map +0 -1
  142. package/dist/p2p/uploadRateLimiter.d.ts +0 -21
  143. package/dist/p2p/uploadRateLimiter.d.ts.map +0 -1
  144. package/dist/p2p/uploadRateLimiter.js +0 -62
  145. package/dist/p2p/uploadRateLimiter.js.map +0 -1
  146. package/dist/p2p/webrtcController.d.ts +0 -176
  147. package/dist/p2p/webrtcController.d.ts.map +0 -1
  148. package/dist/p2p/webrtcController.js +0 -938
  149. package/dist/p2p/webrtcController.js.map +0 -1
  150. package/dist/p2p/webrtcProxy.d.ts +0 -62
  151. package/dist/p2p/webrtcProxy.d.ts.map +0 -1
  152. package/dist/p2p/webrtcProxy.js +0 -447
  153. package/dist/p2p/webrtcProxy.js.map +0 -1
  154. package/dist/privacyGuards.d.ts +0 -14
  155. package/dist/privacyGuards.d.ts.map +0 -1
  156. package/dist/privacyGuards.js +0 -27
  157. package/dist/privacyGuards.js.map +0 -1
  158. package/dist/protocol.d.ts +0 -225
  159. package/dist/protocol.d.ts.map +0 -1
  160. package/dist/protocol.js +0 -2
  161. package/dist/protocol.js.map +0 -1
  162. package/dist/relay/identity.d.ts +0 -36
  163. package/dist/relay/identity.d.ts.map +0 -1
  164. package/dist/relay/identity.js +0 -78
  165. package/dist/relay/identity.js.map +0 -1
  166. package/dist/relay/mediaHandler.d.ts +0 -64
  167. package/dist/relay/mediaHandler.d.ts.map +0 -1
  168. package/dist/relay/mediaHandler.js +0 -1285
  169. package/dist/relay/mediaHandler.js.map +0 -1
  170. package/dist/relay/ndk.d.ts +0 -96
  171. package/dist/relay/ndk.d.ts.map +0 -1
  172. package/dist/relay/ndk.js +0 -502
  173. package/dist/relay/ndk.js.map +0 -1
  174. package/dist/relay/nostr-wasm.d.ts +0 -14
  175. package/dist/relay/nostr-wasm.d.ts.map +0 -1
  176. package/dist/relay/nostr-wasm.js.map +0 -1
  177. package/dist/relay/nostr.d.ts +0 -60
  178. package/dist/relay/nostr.d.ts.map +0 -1
  179. package/dist/relay/nostr.js +0 -207
  180. package/dist/relay/nostr.js.map +0 -1
  181. package/dist/relay/protocol.d.ts +0 -592
  182. package/dist/relay/protocol.d.ts.map +0 -1
  183. package/dist/relay/protocol.js +0 -16
  184. package/dist/relay/protocol.js.map +0 -1
  185. package/dist/relay/publicAssetUrl.d.ts +0 -6
  186. package/dist/relay/publicAssetUrl.d.ts.map +0 -1
  187. package/dist/relay/publicAssetUrl.js +0 -14
  188. package/dist/relay/publicAssetUrl.js.map +0 -1
  189. package/dist/relay/rootPathResolver.d.ts +0 -9
  190. package/dist/relay/rootPathResolver.d.ts.map +0 -1
  191. package/dist/relay/rootPathResolver.js +0 -32
  192. package/dist/relay/rootPathResolver.js.map +0 -1
  193. package/dist/relay/signing.d.ts +0 -50
  194. package/dist/relay/signing.d.ts.map +0 -1
  195. package/dist/relay/signing.js +0 -299
  196. package/dist/relay/signing.js.map +0 -1
  197. package/dist/relay/treeRootCache.d.ts +0 -86
  198. package/dist/relay/treeRootCache.d.ts.map +0 -1
  199. package/dist/relay/treeRootCache.js +0 -269
  200. package/dist/relay/treeRootCache.js.map +0 -1
  201. package/dist/relay/treeRootSubscription.d.ts +0 -55
  202. package/dist/relay/treeRootSubscription.d.ts.map +0 -1
  203. package/dist/relay/treeRootSubscription.js +0 -478
  204. package/dist/relay/treeRootSubscription.js.map +0 -1
  205. package/dist/relay/utils/constants.d.ts +0 -76
  206. package/dist/relay/utils/constants.d.ts.map +0 -1
  207. package/dist/relay/utils/constants.js +0 -113
  208. package/dist/relay/utils/constants.js.map +0 -1
  209. package/dist/relay/utils/errorMessage.d.ts +0 -5
  210. package/dist/relay/utils/errorMessage.d.ts.map +0 -1
  211. package/dist/relay/utils/errorMessage.js +0 -8
  212. package/dist/relay/utils/errorMessage.js.map +0 -1
  213. package/dist/relay/utils/lruCache.d.ts +0 -26
  214. package/dist/relay/utils/lruCache.d.ts.map +0 -1
  215. package/dist/relay/utils/lruCache.js +0 -66
  216. package/dist/relay/utils/lruCache.js.map +0 -1
  217. package/dist/relay/webrtc.d.ts +0 -2
  218. package/dist/relay/webrtc.d.ts.map +0 -1
  219. package/dist/relay/webrtc.js +0 -3
  220. package/dist/relay/webrtc.js.map +0 -1
  221. package/dist/relay/webrtcSignaling.d.ts +0 -37
  222. package/dist/relay/webrtcSignaling.d.ts.map +0 -1
  223. package/dist/relay/webrtcSignaling.js +0 -86
  224. package/dist/relay/webrtcSignaling.js.map +0 -1
  225. package/dist/relay/worker.d.ts +0 -12
  226. package/dist/relay/worker.d.ts.map +0 -1
  227. package/dist/relay/worker.js +0 -1540
  228. package/dist/relay/worker.js.map +0 -1
  229. package/dist/relay-client.d.ts +0 -31
  230. package/dist/relay-client.d.ts.map +0 -1
  231. package/dist/relay-client.js +0 -197
  232. package/dist/relay-client.js.map +0 -1
  233. package/dist/relay-entry.d.ts +0 -2
  234. package/dist/relay-entry.d.ts.map +0 -1
  235. package/dist/relay-entry.js +0 -2
  236. package/dist/relay-entry.js.map +0 -1
  237. package/dist/runtime-network.d.ts +0 -23
  238. package/dist/runtime-network.d.ts.map +0 -1
  239. package/dist/runtime-network.js +0 -105
  240. package/dist/runtime-network.js.map +0 -1
  241. package/dist/runtime.d.ts +0 -24
  242. package/dist/runtime.d.ts.map +0 -1
  243. package/dist/runtime.js +0 -126
  244. package/dist/runtime.js.map +0 -1
  245. package/dist/transferableBytes.d.ts +0 -2
  246. package/dist/transferableBytes.d.ts.map +0 -1
  247. package/dist/transferableBytes.js.map +0 -1
  248. package/dist/tree-root.d.ts +0 -201
  249. package/dist/tree-root.d.ts.map +0 -1
  250. package/dist/tree-root.js +0 -632
  251. package/dist/tree-root.js.map +0 -1
  252. package/dist/types.d.ts +0 -2
  253. package/dist/types.d.ts.map +0 -1
  254. package/dist/types.js +0 -2
  255. package/dist/types.js.map +0 -1
  256. package/dist/worker.d.ts +0 -9
  257. package/dist/worker.d.ts.map +0 -1
  258. package/dist/worker.js +0 -792
  259. package/dist/worker.js.map +0 -1
@@ -1,264 +0,0 @@
1
- import { MAX_HTL, createRequest, decrementHTL, encodeRequest, hashToKey, shouldForward, verifyHash, } from '@hashtree/nostr';
2
- class SlidingWindowRateLimiter {
3
- maxEvents;
4
- windowMs;
5
- eventsByPeer = new Map();
6
- constructor(maxEvents, windowMs) {
7
- this.maxEvents = maxEvents;
8
- this.windowMs = windowMs;
9
- }
10
- allow(peerId) {
11
- const now = Date.now();
12
- const events = this.eventsByPeer.get(peerId) ?? [];
13
- let firstActiveIndex = 0;
14
- while (firstActiveIndex < events.length && now - events[firstActiveIndex] >= this.windowMs) {
15
- firstActiveIndex += 1;
16
- }
17
- if (firstActiveIndex > 0) {
18
- events.splice(0, firstActiveIndex);
19
- }
20
- if (events.length >= this.maxEvents) {
21
- this.eventsByPeer.set(peerId, events);
22
- return false;
23
- }
24
- events.push(now);
25
- this.eventsByPeer.set(peerId, events);
26
- return true;
27
- }
28
- resetPeer(peerId) {
29
- this.eventsByPeer.delete(peerId);
30
- }
31
- clear() {
32
- this.eventsByPeer.clear();
33
- }
34
- }
35
- export class MeshQueryRouter {
36
- localStore;
37
- requestTimeoutMs;
38
- rateLimiter;
39
- peers = new Map();
40
- hashesByRequester = new Map();
41
- inFlightByHash = new Map();
42
- pendingUpstreamFetches = new Map();
43
- upstreamFetch;
44
- queryPeers;
45
- constructor(config) {
46
- this.localStore = config.localStore;
47
- this.requestTimeoutMs = config.requestTimeoutMs;
48
- this.upstreamFetch = config.upstreamFetch;
49
- this.queryPeers = config.queryPeers;
50
- this.rateLimiter = this.createRateLimiter({
51
- maxForwardsPerPeerWindow: config.maxForwardsPerPeerWindow,
52
- windowMs: config.forwardRateLimitWindowMs,
53
- });
54
- }
55
- registerPeer(peer) {
56
- this.peers.set(peer.peerId, peer);
57
- }
58
- removePeer(peerId) {
59
- const hashes = this.hashesByRequester.get(peerId);
60
- if (hashes) {
61
- for (const hashKey of Array.from(hashes)) {
62
- const inFlight = this.inFlightByHash.get(hashKey);
63
- if (!inFlight)
64
- continue;
65
- inFlight.requesterIds.delete(peerId);
66
- if (inFlight.requesterIds.size === 0) {
67
- this.clearQuery(hashKey);
68
- }
69
- }
70
- }
71
- this.hashesByRequester.delete(peerId);
72
- this.peers.delete(peerId);
73
- this.rateLimiter.resetPeer(peerId);
74
- }
75
- setUpstreamFetch(upstreamFetch) {
76
- this.upstreamFetch = upstreamFetch;
77
- }
78
- setForwardRateLimit(config) {
79
- this.rateLimiter = this.createRateLimiter(config);
80
- }
81
- hasInFlight(hashKey) {
82
- return this.inFlightByHash.has(hashKey);
83
- }
84
- stop() {
85
- for (const hashKey of Array.from(this.inFlightByHash.keys())) {
86
- this.clearQuery(hashKey);
87
- }
88
- this.hashesByRequester.clear();
89
- this.pendingUpstreamFetches.clear();
90
- this.rateLimiter.clear();
91
- }
92
- createRateLimiter(config) {
93
- return new SlidingWindowRateLimiter(config?.maxForwardsPerPeerWindow ?? 64, config?.windowMs ?? 1000);
94
- }
95
- async handleRequest(requesterId, req) {
96
- const hashKey = hashToKey(req.h);
97
- const requester = this.peers.get(requesterId);
98
- if (!requester) {
99
- return;
100
- }
101
- const local = await this.localStore.get(req.h);
102
- if (local) {
103
- await requester.sendResponse(req.h, local);
104
- return;
105
- }
106
- const begin = this.beginQuery(hashKey, requesterId);
107
- if (begin === 'suppressed') {
108
- requester.onForwardedSuppressed?.();
109
- return;
110
- }
111
- if (begin === 'rate_limited') {
112
- return;
113
- }
114
- const peerQueryActive = this.startPeerQuery(hashKey, req.h, requesterId, req.htl ?? MAX_HTL);
115
- const upstreamActive = this.startUpstreamFetch(hashKey, req.h);
116
- const forwarded = peerQueryActive ? 1 : this.forwardRequest(requesterId, req.h, req.htl ?? MAX_HTL);
117
- if (forwarded > 0 || upstreamActive) {
118
- requester.onForwardedRequest?.();
119
- return;
120
- }
121
- if (!upstreamActive) {
122
- this.clearQuery(hashKey);
123
- }
124
- }
125
- async resolve(hash, data) {
126
- const hashKey = hashToKey(hash);
127
- const requesterIds = this.clearQuery(hashKey);
128
- if (requesterIds.length === 0) {
129
- return;
130
- }
131
- await this.localStore.put(hash, data).catch(() => false);
132
- for (const requesterId of requesterIds) {
133
- const requester = this.peers.get(requesterId);
134
- if (!requester) {
135
- continue;
136
- }
137
- requester.onForwardedResolved?.();
138
- await requester.sendResponse(hash, data);
139
- }
140
- }
141
- beginQuery(hashKey, requesterId) {
142
- const existing = this.inFlightByHash.get(hashKey);
143
- if (existing) {
144
- this.trackRequester(hashKey, existing.requesterIds, requesterId);
145
- return 'suppressed';
146
- }
147
- if (!this.rateLimiter.allow(requesterId)) {
148
- return 'rate_limited';
149
- }
150
- const requesterIds = new Set();
151
- this.trackRequester(hashKey, requesterIds, requesterId);
152
- const timeoutId = setTimeout(() => {
153
- this.clearQuery(hashKey);
154
- }, this.requestTimeoutMs);
155
- this.inFlightByHash.set(hashKey, { requesterIds, timeoutId });
156
- return 'new';
157
- }
158
- clearQuery(hashKey) {
159
- const inFlight = this.inFlightByHash.get(hashKey);
160
- if (!inFlight) {
161
- return [];
162
- }
163
- clearTimeout(inFlight.timeoutId);
164
- this.inFlightByHash.delete(hashKey);
165
- const requesterIds = Array.from(inFlight.requesterIds);
166
- for (const requesterId of requesterIds) {
167
- const hashes = this.hashesByRequester.get(requesterId);
168
- if (!hashes)
169
- continue;
170
- hashes.delete(hashKey);
171
- if (hashes.size === 0) {
172
- this.hashesByRequester.delete(requesterId);
173
- }
174
- }
175
- return requesterIds;
176
- }
177
- trackRequester(hashKey, requesterIds, requesterId) {
178
- requesterIds.add(requesterId);
179
- let hashes = this.hashesByRequester.get(requesterId);
180
- if (!hashes) {
181
- hashes = new Set();
182
- this.hashesByRequester.set(requesterId, hashes);
183
- }
184
- hashes.add(hashKey);
185
- }
186
- forwardRequest(requesterId, hash, htl) {
187
- if (!shouldForward(htl)) {
188
- return 0;
189
- }
190
- const requester = this.peers.get(requesterId);
191
- if (!requester) {
192
- return 0;
193
- }
194
- const nextHtl = decrementHTL(htl, requester.getHtlConfig());
195
- let forwarded = 0;
196
- for (const peer of this.peers.values()) {
197
- if (peer.peerId === requesterId || !peer.canSend()) {
198
- continue;
199
- }
200
- if (peer.sendRequest(hash, nextHtl)) {
201
- forwarded += 1;
202
- }
203
- }
204
- return forwarded;
205
- }
206
- startPeerQuery(hashKey, hash, requesterId, htl) {
207
- if (!this.queryPeers || !shouldForward(htl)) {
208
- return false;
209
- }
210
- const requester = this.peers.get(requesterId);
211
- if (!requester) {
212
- return false;
213
- }
214
- const nextHtl = decrementHTL(htl, requester.getHtlConfig());
215
- void this.queryPeers(hash, {
216
- excludePeerId: requesterId,
217
- htl: nextHtl,
218
- }).then(async (data) => {
219
- if (!data || !this.inFlightByHash.has(hashKey)) {
220
- return;
221
- }
222
- const valid = await verifyHash(data, hash);
223
- if (!valid) {
224
- return;
225
- }
226
- await this.resolve(hash, data);
227
- }).catch(() => undefined);
228
- return true;
229
- }
230
- startUpstreamFetch(hashKey, hash) {
231
- if (!this.upstreamFetch) {
232
- return false;
233
- }
234
- const existing = this.pendingUpstreamFetches.get(hashKey);
235
- if (existing) {
236
- return true;
237
- }
238
- let pending;
239
- pending = this.upstreamFetch(hash)
240
- .then(async (data) => {
241
- if (!data) {
242
- return null;
243
- }
244
- const valid = await verifyHash(data, hash);
245
- if (!valid) {
246
- return null;
247
- }
248
- await this.resolve(hash, data);
249
- return data;
250
- })
251
- .catch(() => null)
252
- .finally(() => {
253
- if (this.pendingUpstreamFetches.get(hashKey) === pending) {
254
- this.pendingUpstreamFetches.delete(hashKey);
255
- }
256
- });
257
- this.pendingUpstreamFetches.set(hashKey, pending);
258
- return true;
259
- }
260
- }
261
- export function encodeForwardRequest(hash, htl) {
262
- return new Uint8Array(encodeRequest(createRequest(hash, htl)));
263
- }
264
- //# sourceMappingURL=meshQueryRouter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meshQueryRouter.js","sourceRoot":"","sources":["../../src/p2p/meshQueryRouter.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { WebRTCCommand as CoreWebRTCCommand, WebRTCEvent as CoreWebRTCEvent } from '@hashtree/core';
2
- export type WebRTCCommand = CoreWebRTCCommand;
3
- export type WebRTCEvent = CoreWebRTCEvent | {
4
- type: 'rtc:bufferHigh';
5
- peerId: string;
6
- } | {
7
- type: 'rtc:bufferLow';
8
- peerId: string;
9
- };
10
- //# sourceMappingURL=protocol.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/p2p/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,IAAI,iBAAiB,EAClC,WAAW,IAAI,eAAe,EAC/B,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAE9C,MAAM,MAAM,WAAW,GACnB,eAAe,GACf;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=protocol.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/p2p/protocol.ts"],"names":[],"mappings":""}
@@ -1,46 +0,0 @@
1
- type TimeoutHandle = ReturnType<typeof setTimeout>;
2
- export interface ForwardTimeoutEvent {
3
- hashKey: string;
4
- requesterIds: string[];
5
- }
6
- export type ForwardDecision = {
7
- kind: 'forward';
8
- targets: string[];
9
- } | {
10
- kind: 'suppressed';
11
- } | {
12
- kind: 'rate_limited';
13
- } | {
14
- kind: 'no_targets';
15
- };
16
- export interface QueryForwardingMachineConfig {
17
- requestTimeoutMs: number;
18
- maxForwardsPerPeerWindow?: number;
19
- forwardRateLimitWindowMs?: number;
20
- now?: () => number;
21
- scheduleTimeout?: (callback: () => void, delayMs: number) => TimeoutHandle;
22
- clearScheduledTimeout?: (timeoutId: TimeoutHandle) => void;
23
- onForwardTimeout?: (event: ForwardTimeoutEvent) => void;
24
- }
25
- export declare class QueryForwardingMachine {
26
- private readonly requestTimeoutMs;
27
- private readonly scheduleTimeout;
28
- private readonly clearScheduledTimeout;
29
- private readonly onForwardTimeout?;
30
- private readonly hashesByRequester;
31
- private readonly inFlightByHash;
32
- private readonly rateLimiter;
33
- constructor(config: QueryForwardingMachineConfig);
34
- beginForward(hashKey: string, requesterId: string, candidateTargets: string[]): ForwardDecision;
35
- resolveForward(hashKey: string): string[];
36
- cancelForward(hashKey: string): string[];
37
- removePeer(peerId: string): void;
38
- stop(): void;
39
- isInFlight(hashKey: string): boolean;
40
- getInFlightCount(): number;
41
- private handleForwardTimeout;
42
- private clearForward;
43
- private trackRequester;
44
- }
45
- export {};
46
- //# sourceMappingURL=queryForwardingMachine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queryForwardingMachine.d.ts","sourceRoot":"","sources":["../../src/p2p/queryForwardingMachine.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3B,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC;IAC3E,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3D,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACzD;AAiDD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2D;IAC3F,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqC;IAC3E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAuC;IACzE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsC;IACrE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;gBAE3C,MAAM,EAAE,4BAA4B;IAYhD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,eAAe;IA0B/F,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAIzC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAIxC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAkBhC,IAAI,IAAI,IAAI;IAQZ,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpC,gBAAgB,IAAI,MAAM;IAI1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,cAAc;CASvB"}
@@ -1,144 +0,0 @@
1
- class SlidingWindowRateLimiter {
2
- maxEvents;
3
- windowMs;
4
- now;
5
- eventsByPeer = new Map();
6
- constructor(maxEvents, windowMs, now) {
7
- this.maxEvents = maxEvents;
8
- this.windowMs = windowMs;
9
- this.now = now;
10
- }
11
- allow(peerId) {
12
- const now = this.now();
13
- const events = this.eventsByPeer.get(peerId) ?? [];
14
- let firstActiveIndex = 0;
15
- while (firstActiveIndex < events.length && now - events[firstActiveIndex] >= this.windowMs) {
16
- firstActiveIndex++;
17
- }
18
- if (firstActiveIndex > 0) {
19
- events.splice(0, firstActiveIndex);
20
- }
21
- if (events.length >= this.maxEvents) {
22
- this.eventsByPeer.set(peerId, events);
23
- return false;
24
- }
25
- events.push(now);
26
- this.eventsByPeer.set(peerId, events);
27
- return true;
28
- }
29
- resetPeer(peerId) {
30
- this.eventsByPeer.delete(peerId);
31
- }
32
- clear() {
33
- this.eventsByPeer.clear();
34
- }
35
- }
36
- export class QueryForwardingMachine {
37
- requestTimeoutMs;
38
- scheduleTimeout;
39
- clearScheduledTimeout;
40
- onForwardTimeout;
41
- hashesByRequester = new Map();
42
- inFlightByHash = new Map();
43
- rateLimiter;
44
- constructor(config) {
45
- this.requestTimeoutMs = config.requestTimeoutMs;
46
- this.scheduleTimeout = config.scheduleTimeout ?? ((callback, delayMs) => setTimeout(callback, delayMs));
47
- this.clearScheduledTimeout = config.clearScheduledTimeout ?? ((timeoutId) => clearTimeout(timeoutId));
48
- this.onForwardTimeout = config.onForwardTimeout;
49
- const now = config.now ?? (() => Date.now());
50
- const maxForwardsPerPeerWindow = config.maxForwardsPerPeerWindow ?? 64;
51
- const forwardRateLimitWindowMs = config.forwardRateLimitWindowMs ?? 1000;
52
- this.rateLimiter = new SlidingWindowRateLimiter(maxForwardsPerPeerWindow, forwardRateLimitWindowMs, now);
53
- }
54
- beginForward(hashKey, requesterId, candidateTargets) {
55
- const targets = candidateTargets.filter(target => target !== requesterId);
56
- if (targets.length === 0) {
57
- return { kind: 'no_targets' };
58
- }
59
- const existing = this.inFlightByHash.get(hashKey);
60
- if (existing) {
61
- this.trackRequester(hashKey, existing.requesters, requesterId);
62
- return { kind: 'suppressed' };
63
- }
64
- if (!this.rateLimiter.allow(requesterId)) {
65
- return { kind: 'rate_limited' };
66
- }
67
- const requesters = new Set();
68
- this.trackRequester(hashKey, requesters, requesterId);
69
- const timeoutId = this.scheduleTimeout(() => {
70
- this.handleForwardTimeout(hashKey);
71
- }, this.requestTimeoutMs);
72
- this.inFlightByHash.set(hashKey, { requesters, timeoutId });
73
- return { kind: 'forward', targets };
74
- }
75
- resolveForward(hashKey) {
76
- return this.clearForward(hashKey, false);
77
- }
78
- cancelForward(hashKey) {
79
- return this.clearForward(hashKey, false);
80
- }
81
- removePeer(peerId) {
82
- const hashes = this.hashesByRequester.get(peerId);
83
- if (hashes) {
84
- for (const hashKey of Array.from(hashes)) {
85
- const inFlight = this.inFlightByHash.get(hashKey);
86
- if (!inFlight)
87
- continue;
88
- inFlight.requesters.delete(peerId);
89
- if (inFlight.requesters.size === 0) {
90
- this.clearForward(hashKey, false);
91
- }
92
- }
93
- }
94
- this.hashesByRequester.delete(peerId);
95
- this.rateLimiter.resetPeer(peerId);
96
- }
97
- stop() {
98
- for (const hashKey of Array.from(this.inFlightByHash.keys())) {
99
- this.clearForward(hashKey, false);
100
- }
101
- this.hashesByRequester.clear();
102
- this.rateLimiter.clear();
103
- }
104
- isInFlight(hashKey) {
105
- return this.inFlightByHash.has(hashKey);
106
- }
107
- getInFlightCount() {
108
- return this.inFlightByHash.size;
109
- }
110
- handleForwardTimeout(hashKey) {
111
- this.clearForward(hashKey, true);
112
- }
113
- clearForward(hashKey, notifyTimeout) {
114
- const inFlight = this.inFlightByHash.get(hashKey);
115
- if (!inFlight)
116
- return [];
117
- this.clearScheduledTimeout(inFlight.timeoutId);
118
- this.inFlightByHash.delete(hashKey);
119
- const requesterIds = Array.from(inFlight.requesters);
120
- for (const requesterId of requesterIds) {
121
- const hashes = this.hashesByRequester.get(requesterId);
122
- if (!hashes)
123
- continue;
124
- hashes.delete(hashKey);
125
- if (hashes.size === 0) {
126
- this.hashesByRequester.delete(requesterId);
127
- }
128
- }
129
- if (notifyTimeout && this.onForwardTimeout) {
130
- this.onForwardTimeout({ hashKey, requesterIds });
131
- }
132
- return requesterIds;
133
- }
134
- trackRequester(hashKey, requesters, requesterId) {
135
- requesters.add(requesterId);
136
- let hashes = this.hashesByRequester.get(requesterId);
137
- if (!hashes) {
138
- hashes = new Set();
139
- this.hashesByRequester.set(requesterId, hashes);
140
- }
141
- hashes.add(hashKey);
142
- }
143
- }
144
- //# sourceMappingURL=queryForwardingMachine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queryForwardingMachine.js","sourceRoot":"","sources":["../../src/p2p/queryForwardingMachine.ts"],"names":[],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- import type { SignalingMessage } from '@hashtree/nostr';
2
- export declare const SIGNALING_KIND = 25050;
3
- export declare const HELLO_TAG = "hello";
4
- export declare const MAX_EVENT_AGE_SEC = 30;
5
- export interface SignalingEventLike {
6
- pubkey: string;
7
- created_at?: number;
8
- tags: string[][];
9
- content: string;
10
- }
11
- export interface GiftSeal {
12
- pubkey: string;
13
- kind: number;
14
- content: string;
15
- tags: string[][];
16
- }
17
- export interface SignalingTemplate {
18
- kind: number;
19
- created_at: number;
20
- tags: string[][];
21
- content: string;
22
- }
23
- export interface SignalingInnerEvent {
24
- kind: number;
25
- content: string;
26
- tags: string[][];
27
- }
28
- export interface SignalingFilters {
29
- since: number;
30
- helloFilter: {
31
- kinds: number[];
32
- '#l': string[];
33
- since: number;
34
- };
35
- directedFilter: {
36
- kinds: number[];
37
- '#p': string[];
38
- since: number;
39
- };
40
- }
41
- interface SendSignalingMessageOptions<TEvent extends SignalingEventLike> {
42
- msg: SignalingMessage;
43
- recipientPubkey?: string;
44
- signEvent: (template: SignalingTemplate) => Promise<TEvent>;
45
- giftWrap: (innerEvent: SignalingInnerEvent, recipientPubkey: string) => Promise<TEvent>;
46
- publish: (event: TEvent) => Promise<void>;
47
- nowMs?: () => number;
48
- }
49
- interface DecodeSignalingEventOptions<TEvent extends SignalingEventLike> {
50
- event: TEvent;
51
- giftUnwrap: (event: TEvent) => Promise<GiftSeal | null>;
52
- nowMs?: () => number;
53
- maxEventAgeSec?: number;
54
- }
55
- export interface DecodedSignalingEvent {
56
- senderPubkey: string;
57
- message: SignalingMessage;
58
- }
59
- export declare function createSignalingFilters(myPubkey: string, nowMs?: number, maxEventAgeSec?: number): SignalingFilters;
60
- export declare function sendSignalingMessage<TEvent extends SignalingEventLike>({ msg, recipientPubkey, signEvent, giftWrap, publish, nowMs, }: SendSignalingMessageOptions<TEvent>): Promise<void>;
61
- export declare function decodeSignalingEvent<TEvent extends SignalingEventLike>({ event, giftUnwrap, nowMs, maxEventAgeSec, }: DecodeSignalingEventOptions<TEvent>): Promise<DecodedSignalingEvent | null>;
62
- export {};
63
- //# sourceMappingURL=signaling.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signaling.d.ts","sourceRoot":"","sources":["../../src/p2p/signaling.ts"],"names":[],"mappings":"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"}