@hashtree/nostr 0.1.13 → 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.
- package/README.md +11 -33
- package/dist/eventCollection.d.ts +1 -1
- package/dist/eventCollection.d.ts.map +1 -1
- package/dist/eventCollection.js +2 -7
- package/dist/eventCollection.js.map +1 -1
- package/dist/eventKeys.d.ts +1 -0
- package/dist/eventKeys.d.ts.map +1 -1
- package/dist/eventKeys.js +7 -1
- package/dist/eventKeys.js.map +1 -1
- package/dist/events.d.ts +2 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +41 -61
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/dist/resolver/nostr.d.ts.map +1 -1
- package/dist/resolver/nostr.js +17 -12
- package/dist/resolver/nostr.js.map +1 -1
- package/dist/snapshot.d.ts +5 -0
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +9 -2
- package/dist/snapshot.js.map +1 -1
- package/dist/treeEventSnapshots.d.ts.map +1 -1
- package/dist/treeEventSnapshots.js +6 -11
- package/dist/treeEventSnapshots.js.map +1 -1
- package/package.json +18 -14
- package/src/eventCollection.ts +189 -0
- package/src/eventKeys.ts +155 -0
- package/src/eventValidation.ts +71 -0
- package/src/events.ts +900 -0
- package/src/index.ts +122 -0
- package/src/replaceablePublish.ts +204 -0
- package/src/resolver/index.ts +14 -0
- package/src/resolver/nostr.ts +1210 -0
- package/src/snapshot.ts +213 -0
- package/src/treeEventSnapshotPermalinks.ts +150 -0
- package/src/treeEventSnapshots.ts +280 -0
- package/dist/webrtc/index.d.ts +0 -6
- package/dist/webrtc/index.d.ts.map +0 -1
- package/dist/webrtc/index.js +0 -7
- package/dist/webrtc/index.js.map +0 -1
- package/dist/webrtc/lruCache.d.ts +0 -20
- package/dist/webrtc/lruCache.d.ts.map +0 -1
- package/dist/webrtc/lruCache.js +0 -59
- package/dist/webrtc/lruCache.js.map +0 -1
- package/dist/webrtc/peer.d.ts +0 -133
- package/dist/webrtc/peer.d.ts.map +0 -1
- package/dist/webrtc/peer.js +0 -617
- package/dist/webrtc/peer.js.map +0 -1
- package/dist/webrtc/peerSelector.d.ts +0 -2
- package/dist/webrtc/peerSelector.d.ts.map +0 -1
- package/dist/webrtc/peerSelector.js +0 -2
- package/dist/webrtc/peerSelector.js.map +0 -1
- package/dist/webrtc/protocol.d.ts +0 -3
- package/dist/webrtc/protocol.d.ts.map +0 -1
- package/dist/webrtc/protocol.js +0 -2
- package/dist/webrtc/protocol.js.map +0 -1
- package/dist/webrtc/store.d.ts +0 -217
- package/dist/webrtc/store.d.ts.map +0 -1
- package/dist/webrtc/store.js +0 -1320
- package/dist/webrtc/store.js.map +0 -1
- package/dist/webrtc/types.d.ts +0 -101
- package/dist/webrtc/types.d.ts.map +0 -1
- package/dist/webrtc/types.js +0 -5
- package/dist/webrtc/types.js.map +0 -1
package/dist/webrtc/protocol.js
DELETED
|
@@ -1,2 +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
|
-
//# sourceMappingURL=protocol.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","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"}
|
package/dist/webrtc/store.d.ts
DELETED
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import type { Store, Hash } from '@hashtree/core';
|
|
2
|
-
import { type WebRTCStoreConfig, type PeerStatus, type WebRTCStoreEventHandler, type PeerPool, type PeerClassifier, type PoolConfig, type MeshStats } from './types.js';
|
|
3
|
-
import { Peer } from './peer.js';
|
|
4
|
-
export declare const DEFAULT_RELAYS: string[];
|
|
5
|
-
export declare class WebRTCStore implements Store {
|
|
6
|
-
private config;
|
|
7
|
-
private routing;
|
|
8
|
-
private readonly peerSelector;
|
|
9
|
-
private pools;
|
|
10
|
-
private peerClassifier;
|
|
11
|
-
private getFollowedPubkeys;
|
|
12
|
-
private isPeerBlocked;
|
|
13
|
-
private signer;
|
|
14
|
-
private encrypt;
|
|
15
|
-
private decrypt;
|
|
16
|
-
private giftWrap;
|
|
17
|
-
private giftUnwrap;
|
|
18
|
-
private myPeerId;
|
|
19
|
-
private pool;
|
|
20
|
-
private subscriptions;
|
|
21
|
-
private helloSubscription;
|
|
22
|
-
private peers;
|
|
23
|
-
private pendingOtherPubkeys;
|
|
24
|
-
private helloInterval;
|
|
25
|
-
private cleanupInterval;
|
|
26
|
-
private eventHandlers;
|
|
27
|
-
private running;
|
|
28
|
-
private pendingReqs;
|
|
29
|
-
private pendingGets;
|
|
30
|
-
private blossomFetches;
|
|
31
|
-
private currentHelloAuthors;
|
|
32
|
-
private seenFrameIds;
|
|
33
|
-
private seenEventIds;
|
|
34
|
-
private meshReceived;
|
|
35
|
-
private meshForwarded;
|
|
36
|
-
private meshDroppedDuplicate;
|
|
37
|
-
constructor(config: WebRTCStoreConfig);
|
|
38
|
-
private log;
|
|
39
|
-
/**
|
|
40
|
-
* Get pool counts
|
|
41
|
-
*/
|
|
42
|
-
private getPoolCounts;
|
|
43
|
-
/**
|
|
44
|
-
* Check if we can accept a peer in a given pool
|
|
45
|
-
*/
|
|
46
|
-
private canAcceptPeer;
|
|
47
|
-
/**
|
|
48
|
-
* Check if a pool is satisfied
|
|
49
|
-
*/
|
|
50
|
-
private isPoolSatisfied;
|
|
51
|
-
/**
|
|
52
|
-
* Check if we already have a connection from a pubkey in the 'other' pool.
|
|
53
|
-
* In the 'other' pool, we only allow 1 instance per pubkey.
|
|
54
|
-
* Also checks pendingOtherPubkeys to prevent race conditions.
|
|
55
|
-
*/
|
|
56
|
-
private hasOtherPoolPubkey;
|
|
57
|
-
/**
|
|
58
|
-
* Start the WebRTC store - connect to relays and begin peer discovery
|
|
59
|
-
*/
|
|
60
|
-
start(): void;
|
|
61
|
-
/**
|
|
62
|
-
* Stop the WebRTC store
|
|
63
|
-
*/
|
|
64
|
-
stop(): void;
|
|
65
|
-
/**
|
|
66
|
-
* Set relays and reconnect. Useful for runtime relay configuration changes.
|
|
67
|
-
* Closes existing subscriptions and starts new ones with the updated relays.
|
|
68
|
-
*/
|
|
69
|
-
setRelays(relays: string[]): void;
|
|
70
|
-
/**
|
|
71
|
-
* Add event listener
|
|
72
|
-
*/
|
|
73
|
-
on(handler: WebRTCStoreEventHandler): () => void;
|
|
74
|
-
private emit;
|
|
75
|
-
private startSubscription;
|
|
76
|
-
/**
|
|
77
|
-
* Setup hello subscription based on pool configuration
|
|
78
|
-
* - If both pools are 0: don't subscribe to hellos
|
|
79
|
-
* - If other pool is disabled but follows is enabled: subscribe to followed pubkeys only
|
|
80
|
-
* - If other pool is enabled: subscribe to all hellos
|
|
81
|
-
*/
|
|
82
|
-
private setupHelloSubscription;
|
|
83
|
-
/**
|
|
84
|
-
* Update hello subscription when follows list changes
|
|
85
|
-
* Call this after social graph updates
|
|
86
|
-
*/
|
|
87
|
-
updateHelloSubscription(): void;
|
|
88
|
-
private handleSignalingEvent;
|
|
89
|
-
private handleSignalingMessage;
|
|
90
|
-
private handleHello;
|
|
91
|
-
private handleOffer;
|
|
92
|
-
private connectToPeer;
|
|
93
|
-
private handlePeerClose;
|
|
94
|
-
private orderedConnectedPeers;
|
|
95
|
-
private createInFlightPeerRequest;
|
|
96
|
-
private waitForNextPeerResult;
|
|
97
|
-
private queryPeersWithDispatch;
|
|
98
|
-
/**
|
|
99
|
-
* Forward a request to other peers (excluding the requester)
|
|
100
|
-
* Called by Peer when it receives a request it can't fulfill locally
|
|
101
|
-
* Uses selector ordering + staged hedged dispatch
|
|
102
|
-
* @param htl - Hops To Live (already decremented by calling peer)
|
|
103
|
-
*/
|
|
104
|
-
private forwardRequest;
|
|
105
|
-
/**
|
|
106
|
-
* Send data to all peers who have requested this hash
|
|
107
|
-
* Called when we receive data that peers may be waiting for
|
|
108
|
-
*/
|
|
109
|
-
sendToInterestedPeers(hash: Uint8Array, data: Uint8Array): number;
|
|
110
|
-
private pruneSeenSet;
|
|
111
|
-
private markSeenFrameId;
|
|
112
|
-
private markSeenEventId;
|
|
113
|
-
private forwardMeshFrame;
|
|
114
|
-
private handleMeshFrame;
|
|
115
|
-
private dispatchSignaling;
|
|
116
|
-
private sendSignaling;
|
|
117
|
-
/**
|
|
118
|
-
* Force send a hello message (useful for testing after pool config changes)
|
|
119
|
-
*/
|
|
120
|
-
sendHello(): void;
|
|
121
|
-
private maybeSendHello;
|
|
122
|
-
private cleanupConnections;
|
|
123
|
-
/**
|
|
124
|
-
* Get number of connected peers
|
|
125
|
-
*/
|
|
126
|
-
getConnectedCount(): number;
|
|
127
|
-
/**
|
|
128
|
-
* Get all peer statuses
|
|
129
|
-
*/
|
|
130
|
-
getPeers(): PeerStatus[];
|
|
131
|
-
/**
|
|
132
|
-
* Disconnect all peers with a given pubkey
|
|
133
|
-
* Used when blocking a peer to immediately disconnect them
|
|
134
|
-
*/
|
|
135
|
-
disconnectPeerByPubkey(pubkey: string): void;
|
|
136
|
-
/**
|
|
137
|
-
* Get my endpoint ID
|
|
138
|
-
*/
|
|
139
|
-
getMyPeerId(): string;
|
|
140
|
-
/**
|
|
141
|
-
* Check if store is satisfied (has enough connections in all pools)
|
|
142
|
-
*/
|
|
143
|
-
isSatisfied(): boolean;
|
|
144
|
-
/**
|
|
145
|
-
* Update peer classifier (e.g., when social graph updates)
|
|
146
|
-
*/
|
|
147
|
-
setPeerClassifier(classifier: PeerClassifier): void;
|
|
148
|
-
/**
|
|
149
|
-
* Update pool configuration (e.g., from settings)
|
|
150
|
-
*/
|
|
151
|
-
setPoolConfig(pools: {
|
|
152
|
-
follows: PoolConfig;
|
|
153
|
-
other: PoolConfig;
|
|
154
|
-
}): void;
|
|
155
|
-
/**
|
|
156
|
-
* Get current pool configuration
|
|
157
|
-
*/
|
|
158
|
-
getPoolConfig(): {
|
|
159
|
-
follows: PoolConfig;
|
|
160
|
-
other: PoolConfig;
|
|
161
|
-
};
|
|
162
|
-
private peerMetadataPointerHash;
|
|
163
|
-
/**
|
|
164
|
-
* Persist selector metadata snapshot to local store.
|
|
165
|
-
* Returns the snapshot hash, or null when local storage is unavailable.
|
|
166
|
-
*/
|
|
167
|
-
persistPeerMetadata(): Promise<Uint8Array | null>;
|
|
168
|
-
/**
|
|
169
|
-
* Load selector metadata snapshot from local store, if available.
|
|
170
|
-
*/
|
|
171
|
-
loadPeerMetadata(): Promise<boolean>;
|
|
172
|
-
/**
|
|
173
|
-
* Get fallback stores count
|
|
174
|
-
*/
|
|
175
|
-
getFallbackStoresCount(): number;
|
|
176
|
-
/**
|
|
177
|
-
* Get WebRTC stats (aggregate and per-peer)
|
|
178
|
-
*/
|
|
179
|
-
getStats(): {
|
|
180
|
-
aggregate: MeshStats;
|
|
181
|
-
perPeer: Map<string, {
|
|
182
|
-
pubkey: string;
|
|
183
|
-
pool: PeerPool;
|
|
184
|
-
stats: ReturnType<Peer['getStats']>;
|
|
185
|
-
}>;
|
|
186
|
-
};
|
|
187
|
-
put(hash: Hash, data: Uint8Array): Promise<boolean>;
|
|
188
|
-
get(hash: Hash): Promise<Uint8Array | null>;
|
|
189
|
-
/**
|
|
190
|
-
* Internal method to fetch data from peers (separated for deduplication)
|
|
191
|
-
*/
|
|
192
|
-
private fetchFromPeers;
|
|
193
|
-
/**
|
|
194
|
-
* Helper to create a delay promise
|
|
195
|
-
*/
|
|
196
|
-
private delay;
|
|
197
|
-
/**
|
|
198
|
-
* Add hash to pending requests list and wait for it to be resolved by peers
|
|
199
|
-
* Also immediately tries any connected peers that weren't tried yet
|
|
200
|
-
*/
|
|
201
|
-
private waitForHash;
|
|
202
|
-
/**
|
|
203
|
-
* Try all currently connected peers for a specific hash in the pending requests
|
|
204
|
-
*/
|
|
205
|
-
private tryConnectedPeersForHash;
|
|
206
|
-
/**
|
|
207
|
-
* Remove a pending request from the list
|
|
208
|
-
*/
|
|
209
|
-
private removePendingReq;
|
|
210
|
-
/**
|
|
211
|
-
* Try pending requests with a newly connected peer
|
|
212
|
-
*/
|
|
213
|
-
private tryPendingReqs;
|
|
214
|
-
has(hash: Hash): Promise<boolean>;
|
|
215
|
-
delete(hash: Hash): Promise<boolean>;
|
|
216
|
-
}
|
|
217
|
-
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/webrtc/store.ts"],"names":[],"mappings":"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"}
|