@hashtree/nostr 0.1.14 → 0.2.3

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 (67) hide show
  1. package/README.md +11 -33
  2. package/dist/eventCollection.d.ts +1 -1
  3. package/dist/eventCollection.d.ts.map +1 -1
  4. package/dist/eventCollection.js +2 -7
  5. package/dist/eventCollection.js.map +1 -1
  6. package/dist/eventKeys.d.ts +1 -0
  7. package/dist/eventKeys.d.ts.map +1 -1
  8. package/dist/eventKeys.js +7 -1
  9. package/dist/eventKeys.js.map +1 -1
  10. package/dist/events.d.ts +2 -0
  11. package/dist/events.d.ts.map +1 -1
  12. package/dist/events.js +41 -61
  13. package/dist/events.js.map +1 -1
  14. package/dist/index.d.ts +4 -3
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +10 -6
  17. package/dist/index.js.map +1 -1
  18. package/dist/resolver/nostr.d.ts.map +1 -1
  19. package/dist/resolver/nostr.js +17 -12
  20. package/dist/resolver/nostr.js.map +1 -1
  21. package/dist/snapshot.d.ts +5 -0
  22. package/dist/snapshot.d.ts.map +1 -1
  23. package/dist/snapshot.js +9 -2
  24. package/dist/snapshot.js.map +1 -1
  25. package/dist/treeEventSnapshots.d.ts.map +1 -1
  26. package/dist/treeEventSnapshots.js +6 -11
  27. package/dist/treeEventSnapshots.js.map +1 -1
  28. package/package.json +18 -14
  29. package/src/eventCollection.ts +189 -0
  30. package/src/eventKeys.ts +155 -0
  31. package/src/eventValidation.ts +71 -0
  32. package/src/events.ts +900 -0
  33. package/src/index.ts +122 -0
  34. package/src/replaceablePublish.ts +204 -0
  35. package/src/resolver/index.ts +14 -0
  36. package/src/resolver/nostr.ts +1210 -0
  37. package/src/snapshot.ts +213 -0
  38. package/src/treeEventSnapshotPermalinks.ts +150 -0
  39. package/src/treeEventSnapshots.ts +280 -0
  40. package/dist/webrtc/index.d.ts +0 -6
  41. package/dist/webrtc/index.d.ts.map +0 -1
  42. package/dist/webrtc/index.js +0 -7
  43. package/dist/webrtc/index.js.map +0 -1
  44. package/dist/webrtc/lruCache.d.ts +0 -20
  45. package/dist/webrtc/lruCache.d.ts.map +0 -1
  46. package/dist/webrtc/lruCache.js +0 -59
  47. package/dist/webrtc/lruCache.js.map +0 -1
  48. package/dist/webrtc/peer.d.ts +0 -133
  49. package/dist/webrtc/peer.d.ts.map +0 -1
  50. package/dist/webrtc/peer.js +0 -617
  51. package/dist/webrtc/peer.js.map +0 -1
  52. package/dist/webrtc/peerSelector.d.ts +0 -2
  53. package/dist/webrtc/peerSelector.d.ts.map +0 -1
  54. package/dist/webrtc/peerSelector.js +0 -2
  55. package/dist/webrtc/peerSelector.js.map +0 -1
  56. package/dist/webrtc/protocol.d.ts +0 -3
  57. package/dist/webrtc/protocol.d.ts.map +0 -1
  58. package/dist/webrtc/protocol.js +0 -2
  59. package/dist/webrtc/protocol.js.map +0 -1
  60. package/dist/webrtc/store.d.ts +0 -217
  61. package/dist/webrtc/store.d.ts.map +0 -1
  62. package/dist/webrtc/store.js +0 -1320
  63. package/dist/webrtc/store.js.map +0 -1
  64. package/dist/webrtc/types.d.ts +0 -101
  65. package/dist/webrtc/types.d.ts.map +0 -1
  66. package/dist/webrtc/types.js +0 -5
  67. package/dist/webrtc/types.js.map +0 -1
@@ -1,617 +0,0 @@
1
- import { BLOB_REQUEST_POLICY, MSG_TYPE_REQUEST, MSG_TYPE_RESPONSE, FRAGMENT_SIZE, FRAGMENT_STALL_TIMEOUT, FRAGMENT_TOTAL_TIMEOUT, MAX_PENDING_REASSEMBLIES, parseMeshNostrFrameText, } from './types.js';
2
- import { LRUCache } from './lruCache.js';
3
- import { encodeRequest, encodeResponse, parseMessage, createRequest, createResponse, createFragmentResponse, isFragmented, clearPendingRequests, generatePeerHTLConfig, decrementHTL, shouldForward, hashToKey, verifyHash, } from './protocol.js';
4
- const ICE_SERVERS = [
5
- { urls: 'stun:stun.iris.to:3478' },
6
- { urls: 'stun:stun.l.google.com:19302' },
7
- { urls: 'stun:stun.cloudflare.com:3478' },
8
- ];
9
- // Batch ICE candidates to reduce signaling messages
10
- const ICE_BATCH_DELAY = 100; // ms to wait before sending batched candidates
11
- // Default LRU cache size
12
- const THEIR_REQUESTS_SIZE = 200;
13
- export class Peer {
14
- peerId;
15
- pubkey;
16
- direction;
17
- pc;
18
- dataChannel = null;
19
- localStore;
20
- sendSignaling;
21
- onClose;
22
- onConnected;
23
- onConnectedFired = false; // Guard against double-firing
24
- debug;
25
- // Perfect negotiation state
26
- makingOffer = false;
27
- ignoreOffer = false;
28
- isPolite; // true if we should rollback on collision
29
- myPeerId; // our peer ID for comparison
30
- // Requests we sent TO this peer (keyed by hash hex)
31
- ourRequests = new Map();
32
- // Requests this peer sent TO US that we couldn't fulfill (keyed by hash hex)
33
- // We track these so we can push data back if we get it later
34
- theirRequests = new LRUCache(THEIR_REQUESTS_SIZE);
35
- requestTimeout;
36
- pendingCandidates = [];
37
- candidateBatchTimeout = null;
38
- queuedRemoteCandidates = [];
39
- // Callback to forward request to other peers when we don't have data locally
40
- // htl parameter is the decremented HTL to use when forwarding
41
- onForwardRequest;
42
- // Callback for relayless mesh signaling frames received over data channel text.
43
- onMeshFrame;
44
- // Per-peer stats tracking
45
- stats = {
46
- requestsSent: 0,
47
- requestsReceived: 0,
48
- responsesSent: 0,
49
- responsesReceived: 0,
50
- receiveErrors: 0,
51
- fragmentsSent: 0,
52
- fragmentsReceived: 0,
53
- fragmentTimeouts: 0,
54
- reassembliesCompleted: 0,
55
- bytesSent: 0,
56
- bytesReceived: 0,
57
- bytesForwarded: 0,
58
- };
59
- // Fragment reassembly tracking
60
- pendingReassemblies = new Map();
61
- reassemblyCleanupInterval;
62
- // Per-peer HTL decrement config (Freenet-style probabilistic)
63
- htlConfig;
64
- createdAt;
65
- connectedAt;
66
- constructor(options) {
67
- this.peerId = options.peerId.toString();
68
- this.pubkey = options.peerId.pubkey;
69
- this.direction = options.direction;
70
- this.localStore = options.localStore;
71
- this.sendSignaling = options.sendSignaling;
72
- this.onClose = options.onClose;
73
- this.onConnected = options.onConnected;
74
- this.onForwardRequest = options.onForwardRequest;
75
- this.onMeshFrame = options.onMeshFrame;
76
- this.requestTimeout = options.requestTimeout ?? 500;
77
- this.debug = options.debug ?? false;
78
- this.createdAt = Date.now();
79
- // Generate random HTL config for this peer (Freenet-style)
80
- this.htlConfig = generatePeerHTLConfig();
81
- // Perfect negotiation: polite peer (smaller ID) rolls back on collision
82
- this.myPeerId = options.myPeerId;
83
- this.isPolite = options.myPeerId < options.peerId.toString();
84
- // Start fragment reassembly cleanup interval
85
- this.reassemblyCleanupInterval = setInterval(() => this.cleanupStaleReassemblies(), 5000);
86
- this.pc = new RTCPeerConnection({ iceServers: ICE_SERVERS });
87
- this.setupPeerConnection();
88
- }
89
- log(...args) {
90
- if (this.debug) {
91
- console.log(`[Peer ${this.peerId.slice(0, 12)}]`, ...args);
92
- }
93
- }
94
- get state() {
95
- return this.pc.connectionState;
96
- }
97
- get isConnected() {
98
- return this.pc.connectionState === 'connected' &&
99
- this.dataChannel?.readyState === 'open';
100
- }
101
- get pendingTheirRequestsCount() {
102
- return this.theirRequests.size;
103
- }
104
- scheduleCandidateBatch() {
105
- if (this.candidateBatchTimeout)
106
- return;
107
- this.candidateBatchTimeout = setTimeout(() => {
108
- this.candidateBatchTimeout = null;
109
- if (this.pendingCandidates.length > 0) {
110
- const candidates = this.pendingCandidates;
111
- this.pendingCandidates = [];
112
- // Send as batch (convert RTCIceCandidateInit to IceCandidate format)
113
- this.sendSignaling({
114
- type: 'candidates',
115
- candidates: candidates.map((c) => ({
116
- candidate: c.candidate,
117
- sdpMLineIndex: c.sdpMLineIndex ?? undefined,
118
- sdpMid: c.sdpMid ?? undefined,
119
- })),
120
- targetPeerId: this.peerId,
121
- peerId: '', // Will be set by caller
122
- }).catch((err) => {
123
- this.log('Failed to send candidates batch:', err);
124
- });
125
- }
126
- }, ICE_BATCH_DELAY);
127
- }
128
- setupPeerConnection() {
129
- this.pc.onicecandidate = (event) => {
130
- if (event.candidate) {
131
- this.pendingCandidates.push(event.candidate.toJSON());
132
- this.scheduleCandidateBatch();
133
- }
134
- };
135
- this.pc.onconnectionstatechange = () => {
136
- if (this.pc.connectionState === 'connected') {
137
- this.connectedAt = Date.now();
138
- // Only trigger onConnected if data channel is also ready
139
- // (it may already be open, or will fire via channel.onopen)
140
- if (this.dataChannel?.readyState === 'open' && !this.onConnectedFired) {
141
- this.onConnectedFired = true;
142
- this.onConnected?.();
143
- }
144
- }
145
- else if (this.pc.connectionState === 'failed' ||
146
- this.pc.connectionState === 'closed' ||
147
- this.pc.connectionState === 'disconnected') {
148
- this.close();
149
- }
150
- };
151
- this.pc.ondatachannel = (event) => {
152
- this.dataChannel = event.channel;
153
- this.setupDataChannel(this.dataChannel);
154
- };
155
- }
156
- setupDataChannel(channel) {
157
- channel.binaryType = 'arraybuffer';
158
- channel.onopen = () => {
159
- // If PC is already connected, fire onConnected now
160
- // (handles case where data channel opens after PC connects)
161
- if (this.pc.connectionState === 'connected' && !this.onConnectedFired) {
162
- this.onConnectedFired = true;
163
- this.onConnected?.();
164
- }
165
- };
166
- channel.onclose = () => {
167
- this.log('Data channel closed');
168
- this.close();
169
- };
170
- channel.onmessage = async (event) => {
171
- if (typeof event.data === 'string') {
172
- const frame = parseMeshNostrFrameText(event.data);
173
- if (frame && this.onMeshFrame) {
174
- await this.onMeshFrame(this.peerId, frame);
175
- }
176
- return;
177
- }
178
- if (event.data instanceof ArrayBuffer) {
179
- await this.handleMessage(event.data);
180
- return;
181
- }
182
- if (typeof Blob !== 'undefined' && event.data instanceof Blob) {
183
- await this.handleMessage(await event.data.arrayBuffer());
184
- }
185
- };
186
- }
187
- async handleMessage(data) {
188
- try {
189
- const msg = parseMessage(data);
190
- if (!msg) {
191
- this.log('Failed to parse message');
192
- this.stats.receiveErrors++;
193
- return;
194
- }
195
- if (msg.type === MSG_TYPE_REQUEST) {
196
- await this.handleRequest(msg.body);
197
- }
198
- else if (msg.type === MSG_TYPE_RESPONSE) {
199
- const res = msg.body;
200
- // Handle fragmented vs unfragmented responses
201
- let finalData;
202
- let hash;
203
- if (isFragmented(res)) {
204
- // Fragmented response - reassemble
205
- const assembled = this.handleFragmentResponse(res);
206
- if (!assembled) {
207
- return; // Incomplete, wait for more fragments
208
- }
209
- finalData = assembled;
210
- hash = res.h;
211
- }
212
- else {
213
- // Unfragmented response - use directly
214
- finalData = res.d;
215
- hash = res.h;
216
- }
217
- // Now handle the complete response (verify hash and resolve pending request)
218
- const hashKey = hashToKey(hash);
219
- const pending = this.ourRequests.get(hashKey);
220
- if (!pending) {
221
- return; // No pending request for this hash
222
- }
223
- clearTimeout(pending.timeout);
224
- this.ourRequests.delete(hashKey);
225
- const isValid = await verifyHash(finalData, hash);
226
- if (isValid) {
227
- pending.resolve(finalData);
228
- this.stats.responsesReceived++;
229
- this.stats.bytesReceived += finalData.length;
230
- }
231
- else {
232
- pending.resolve(null);
233
- this.stats.receiveErrors++;
234
- }
235
- }
236
- }
237
- catch (err) {
238
- this.log('Error handling message:', err);
239
- this.stats.receiveErrors++;
240
- }
241
- }
242
- async handleRequest(req) {
243
- const htl = req.htl ?? BLOB_REQUEST_POLICY.maxHtl;
244
- const hash = req.h;
245
- const hashKey = hashToKey(hash);
246
- this.stats.requestsReceived++;
247
- // Try local store first
248
- if (this.localStore) {
249
- const data = await this.localStore.get(hash);
250
- if (data) {
251
- this.sendResponse(hash, data);
252
- this.stats.responsesSent++;
253
- return;
254
- }
255
- }
256
- // Not found locally - check if we should forward based on HTL
257
- if (this.onForwardRequest && shouldForward(htl)) {
258
- // Track this request so we can push data back later if we get it
259
- this.theirRequests.set(hashKey, {
260
- hash,
261
- requestedAt: Date.now(),
262
- });
263
- // Decrement HTL before forwarding (Freenet-style per-peer decrement)
264
- const forwardHTL = decrementHTL(htl, this.htlConfig);
265
- // Forward to other peers (excluding this one)
266
- const data = await this.onForwardRequest(hash, this.peerId, forwardHTL);
267
- if (data) {
268
- // Got it from another peer, send response (mark as forwarded)
269
- this.theirRequests.delete(hashKey);
270
- this.sendResponse(hash, data, true);
271
- this.stats.responsesSent++;
272
- return;
273
- }
274
- // If not found, keep in theirRequests for later push
275
- }
276
- // Not found anywhere - stay silent, let requester timeout.
277
- }
278
- sendResponse(hash, data, isForwarded = false) {
279
- if (!this.dataChannel || this.dataChannel.readyState !== 'open')
280
- return;
281
- // Track bytes sent
282
- this.stats.bytesSent += data.length;
283
- if (isForwarded) {
284
- this.stats.bytesForwarded += data.length;
285
- }
286
- if (data.length <= FRAGMENT_SIZE) {
287
- // Small enough - send unfragmented (backward compatible)
288
- const res = createResponse(hash, data);
289
- this.dataChannel.send(encodeResponse(res));
290
- }
291
- else {
292
- // Fragment large responses
293
- const totalFragments = Math.ceil(data.length / FRAGMENT_SIZE);
294
- for (let i = 0; i < totalFragments; i++) {
295
- const start = i * FRAGMENT_SIZE;
296
- const end = Math.min(start + FRAGMENT_SIZE, data.length);
297
- const fragment = data.slice(start, end);
298
- const res = createFragmentResponse(hash, fragment, i, totalFragments);
299
- this.dataChannel.send(encodeResponse(res));
300
- this.stats.fragmentsSent++;
301
- }
302
- }
303
- }
304
- /**
305
- * Handle a fragmented response - buffer and reassemble
306
- * Returns assembled data when complete, null when waiting for more fragments
307
- */
308
- handleFragmentResponse(res) {
309
- const hashKey = hashToKey(res.h);
310
- const now = Date.now();
311
- this.stats.fragmentsReceived++;
312
- let pending = this.pendingReassemblies.get(hashKey);
313
- if (!pending) {
314
- pending = {
315
- hash: res.h,
316
- fragments: new Map(),
317
- totalExpected: res.n,
318
- receivedBytes: 0,
319
- firstFragmentAt: now,
320
- lastFragmentAt: now,
321
- };
322
- this.pendingReassemblies.set(hashKey, pending);
323
- }
324
- // Reset request timeout on each fragment received
325
- // This way we timeout if no fragment arrives for FRAGMENT_STALL_TIMEOUT
326
- const pendingReq = this.ourRequests.get(hashKey);
327
- if (pendingReq) {
328
- clearTimeout(pendingReq.timeout);
329
- pendingReq.timeout = setTimeout(() => {
330
- this.ourRequests.delete(hashKey);
331
- this.pendingReassemblies.delete(hashKey);
332
- this.stats.fragmentTimeouts++;
333
- pendingReq.resolve(null);
334
- }, FRAGMENT_STALL_TIMEOUT);
335
- }
336
- // Store fragment if not duplicate
337
- if (!pending.fragments.has(res.i)) {
338
- pending.fragments.set(res.i, res.d);
339
- pending.receivedBytes += res.d.length;
340
- pending.lastFragmentAt = now;
341
- }
342
- // Check if complete
343
- if (pending.fragments.size === pending.totalExpected) {
344
- this.pendingReassemblies.delete(hashKey);
345
- this.stats.reassembliesCompleted++;
346
- return this.assembleFragments(pending);
347
- }
348
- return null; // Not yet complete
349
- }
350
- /**
351
- * Assemble fragments in order into a single buffer
352
- */
353
- assembleFragments(pending) {
354
- const result = new Uint8Array(pending.receivedBytes);
355
- let offset = 0;
356
- for (let i = 0; i < pending.totalExpected; i++) {
357
- const fragment = pending.fragments.get(i);
358
- result.set(fragment, offset);
359
- offset += fragment.length;
360
- }
361
- return result;
362
- }
363
- /**
364
- * Clean up stale reassemblies (stalled or timed out)
365
- */
366
- cleanupStaleReassemblies() {
367
- const now = Date.now();
368
- for (const [key, pending] of this.pendingReassemblies) {
369
- const stallTime = now - pending.lastFragmentAt;
370
- const totalTime = now - pending.firstFragmentAt;
371
- if (stallTime > FRAGMENT_STALL_TIMEOUT || totalTime > FRAGMENT_TOTAL_TIMEOUT) {
372
- this.pendingReassemblies.delete(key);
373
- this.stats.fragmentTimeouts++;
374
- this.log('Fragment reassembly timed out:', key.slice(0, 16), `stall=${stallTime}ms, total=${totalTime}ms, fragments=${pending.fragments.size}/${pending.totalExpected}`);
375
- }
376
- }
377
- // Memory cap enforcement - evict oldest if over limit
378
- if (this.pendingReassemblies.size > MAX_PENDING_REASSEMBLIES) {
379
- const oldest = [...this.pendingReassemblies.entries()]
380
- .sort((a, b) => a[1].firstFragmentAt - b[1].firstFragmentAt)[0];
381
- if (oldest) {
382
- this.pendingReassemblies.delete(oldest[0]);
383
- this.stats.fragmentTimeouts++;
384
- this.log('Fragment reassembly evicted (memory cap):', oldest[0].slice(0, 16));
385
- }
386
- }
387
- }
388
- /**
389
- * Request data by hash from this peer
390
- * @param htl Hops To Live - decremented before sending
391
- */
392
- async request(hash, htl = BLOB_REQUEST_POLICY.maxHtl) {
393
- if (!this.dataChannel || this.dataChannel.readyState !== 'open') {
394
- return null;
395
- }
396
- const hashKey = hashToKey(hash);
397
- // Check if we already have a pending request for this hash
398
- const existing = this.ourRequests.get(hashKey);
399
- if (existing) {
400
- // Return a new promise that resolves when the existing one does
401
- return new Promise((resolve) => {
402
- const originalResolve = existing.resolve;
403
- existing.resolve = (data) => {
404
- originalResolve(data);
405
- resolve(data);
406
- };
407
- });
408
- }
409
- // Decrement HTL before sending (Freenet-style per-peer decrement)
410
- const sendHTL = decrementHTL(htl, this.htlConfig);
411
- this.stats.requestsSent++;
412
- return new Promise((resolve) => {
413
- const timeout = setTimeout(() => {
414
- this.ourRequests.delete(hashKey);
415
- resolve(null);
416
- }, this.requestTimeout);
417
- this.ourRequests.set(hashKey, { hash, resolve, timeout });
418
- const req = createRequest(hash, sendHTL);
419
- this.dataChannel.send(encodeRequest(req));
420
- });
421
- }
422
- /**
423
- * Get per-peer statistics
424
- */
425
- getStats() {
426
- return { ...this.stats };
427
- }
428
- /**
429
- * Get per-peer HTL config used for probabilistic decrements.
430
- */
431
- getHTLConfig() {
432
- return this.htlConfig;
433
- }
434
- /**
435
- * Send a relayless mesh signaling frame over text channel.
436
- */
437
- sendMeshFrameText(frame) {
438
- if (!this.dataChannel || this.dataChannel.readyState !== 'open') {
439
- return false;
440
- }
441
- try {
442
- this.dataChannel.send(JSON.stringify(frame));
443
- return true;
444
- }
445
- catch {
446
- return false;
447
- }
448
- }
449
- /**
450
- * Send data to this peer for a hash they previously requested
451
- * Returns true if this peer had requested this hash
452
- */
453
- sendData(hash, data) {
454
- const hashKey = hashToKey(hash);
455
- const theirReq = this.theirRequests.get(hashKey);
456
- if (!theirReq) {
457
- return false;
458
- }
459
- this.theirRequests.delete(hashKey);
460
- // Send response with data
461
- this.sendResponse(hash, data);
462
- this.stats.responsesSent++;
463
- this.log('Sent data for hash:', hashKey.slice(0, 16));
464
- return true;
465
- }
466
- /**
467
- * Check if this peer has requested a hash
468
- */
469
- hasRequested(hash) {
470
- return this.theirRequests.has(hashToKey(hash));
471
- }
472
- /**
473
- * Get count of pending requests from this peer
474
- */
475
- getTheirRequestCount() {
476
- return this.theirRequests.size;
477
- }
478
- /**
479
- * Initiate connection (create offer)
480
- * Uses perfect negotiation pattern - both peers can call this
481
- */
482
- async connect() {
483
- // Create data channel if we don't have one yet
484
- if (!this.dataChannel) {
485
- // Unordered for better performance - protocol is stateless (each message self-describes)
486
- this.dataChannel = this.pc.createDataChannel('hashtree', { ordered: false });
487
- this.setupDataChannel(this.dataChannel);
488
- }
489
- try {
490
- this.makingOffer = true;
491
- const offer = await this.pc.createOffer();
492
- await this.pc.setLocalDescription(offer);
493
- await this.sendSignaling({
494
- type: 'offer',
495
- sdp: offer.sdp,
496
- targetPeerId: this.peerId,
497
- peerId: this.myPeerId,
498
- });
499
- }
500
- finally {
501
- this.makingOffer = false;
502
- }
503
- }
504
- /**
505
- * Handle incoming signaling message
506
- * Implements perfect negotiation pattern for collision handling
507
- */
508
- async handleSignaling(msg) {
509
- if (msg.type === 'offer') {
510
- // Perfect negotiation: check for offer collision
511
- const offerCollision = this.makingOffer ||
512
- (this.pc.signalingState !== 'stable' && this.pc.signalingState !== 'closed');
513
- this.ignoreOffer = !this.isPolite && offerCollision;
514
- if (this.ignoreOffer) {
515
- this.log('Ignoring offer collision (impolite peer)');
516
- return;
517
- }
518
- // If we're polite and have a collision, we rollback and accept their offer
519
- if (offerCollision) {
520
- this.log('Rolling back local offer (polite peer)');
521
- }
522
- // Construct RTCSessionDescriptionInit from flat sdp field
523
- await this.pc.setRemoteDescription(new RTCSessionDescription({ type: 'offer', sdp: msg.sdp }));
524
- await this.processQueuedCandidates();
525
- const answer = await this.pc.createAnswer();
526
- await this.pc.setLocalDescription(answer);
527
- await this.sendSignaling({
528
- type: 'answer',
529
- sdp: answer.sdp,
530
- targetPeerId: this.peerId,
531
- peerId: this.myPeerId,
532
- });
533
- }
534
- else if (msg.type === 'answer') {
535
- // Ignore answer if we're not expecting one (e.g., after rollback)
536
- if (this.pc.signalingState === 'stable') {
537
- this.log('Ignoring unexpected answer in stable state');
538
- return;
539
- }
540
- // Construct RTCSessionDescriptionInit from flat sdp field
541
- await this.pc.setRemoteDescription(new RTCSessionDescription({ type: 'answer', sdp: msg.sdp }));
542
- await this.processQueuedCandidates();
543
- }
544
- else if (msg.type === 'candidate') {
545
- // Construct RTCIceCandidateInit from flat fields
546
- await this.addRemoteCandidate({
547
- candidate: msg.candidate,
548
- sdpMLineIndex: msg.sdpMLineIndex,
549
- sdpMid: msg.sdpMid,
550
- });
551
- }
552
- else if (msg.type === 'candidates') {
553
- // Handle batched candidates
554
- for (const c of msg.candidates) {
555
- await this.addRemoteCandidate({
556
- candidate: c.candidate,
557
- sdpMLineIndex: c.sdpMLineIndex,
558
- sdpMid: c.sdpMid,
559
- });
560
- }
561
- }
562
- }
563
- async addRemoteCandidate(candidate) {
564
- // Queue candidates if remote description not set yet
565
- if (!this.pc.remoteDescription) {
566
- this.queuedRemoteCandidates.push(candidate);
567
- return;
568
- }
569
- try {
570
- await this.pc.addIceCandidate(new RTCIceCandidate(candidate));
571
- }
572
- catch (err) {
573
- this.log('Failed to add ICE candidate:', err);
574
- }
575
- }
576
- async processQueuedCandidates() {
577
- const candidates = this.queuedRemoteCandidates;
578
- this.queuedRemoteCandidates = [];
579
- for (const candidate of candidates) {
580
- try {
581
- await this.pc.addIceCandidate(new RTCIceCandidate(candidate));
582
- }
583
- catch (err) {
584
- this.log('Failed to add queued ICE candidate:', err);
585
- }
586
- }
587
- }
588
- /**
589
- * Close the peer connection
590
- */
591
- close() {
592
- if (this.candidateBatchTimeout) {
593
- clearTimeout(this.candidateBatchTimeout);
594
- this.candidateBatchTimeout = null;
595
- }
596
- // Clean up fragment reassembly
597
- if (this.reassemblyCleanupInterval) {
598
- clearInterval(this.reassemblyCleanupInterval);
599
- this.reassemblyCleanupInterval = undefined;
600
- }
601
- this.pendingReassemblies.clear();
602
- clearPendingRequests(this.ourRequests);
603
- if (this.dataChannel) {
604
- this.dataChannel.onopen = null;
605
- this.dataChannel.onclose = null;
606
- this.dataChannel.onmessage = null;
607
- this.dataChannel.close();
608
- this.dataChannel = null;
609
- }
610
- this.pc.onicecandidate = null;
611
- this.pc.onconnectionstatechange = null;
612
- this.pc.ondatachannel = null;
613
- this.pc.close();
614
- this.onClose();
615
- }
616
- }
617
- //# sourceMappingURL=peer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peer.js","sourceRoot":"","sources":["../../src/webrtc/peer.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { PeerSelector, peerPrincipal, normalizeDispatchConfig, buildHedgedWavePlan, syncSelectorPeers, blendWeightedScore, } from '@hashtree/mesh';
2
- //# sourceMappingURL=peerSelector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peerSelector.d.ts","sourceRoot":"","sources":["../../src/webrtc/peerSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { PeerSelector, peerPrincipal, normalizeDispatchConfig, buildHedgedWavePlan, syncSelectorPeers, blendWeightedScore, } from '@hashtree/mesh';
2
- //# sourceMappingURL=peerSelector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peerSelector.js","sourceRoot":"","sources":["../../src/webrtc/peerSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
@@ -1,3 +0,0 @@
1
- export { encodeRequest, encodeResponse, encodePubsubInterest, encodePubsubFrame, encodePubsubInventory, encodePubsubWant, parseMessage, verifyHash, generatePeerHTLConfig, decrementHTLWithPolicy, decrementHTL, shouldForwardHTL, shouldForward, createRequest, createResponse, createFragmentResponse, createPubsubInterest, createPubsubFrame, createPubsubInventory, createPubsubWant, isFragmented, hashToKey, handleResponse, clearPendingRequests, } from '@hashtree/mesh';
2
- export type { PendingRequest, PeerHTLConfig, } from '@hashtree/mesh';
3
- //# sourceMappingURL=protocol.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/webrtc/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,cAAc,EACd,aAAa,GACd,MAAM,gBAAgB,CAAC"}