@hashtree/core 0.1.1 → 0.1.4

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 (88) hide show
  1. package/README.md +45 -0
  2. package/dist/builder.d.ts.map +1 -1
  3. package/dist/builder.js +2 -1
  4. package/dist/builder.js.map +1 -1
  5. package/dist/compare.d.ts +2 -0
  6. package/dist/compare.d.ts.map +1 -0
  7. package/dist/compare.js +8 -0
  8. package/dist/compare.js.map +1 -0
  9. package/dist/encrypted.d.ts +5 -1
  10. package/dist/encrypted.d.ts.map +1 -1
  11. package/dist/encrypted.js +59 -32
  12. package/dist/encrypted.js.map +1 -1
  13. package/dist/hashtree.d.ts +9 -1
  14. package/dist/hashtree.d.ts.map +1 -1
  15. package/dist/hashtree.js +13 -7
  16. package/dist/hashtree.js.map +1 -1
  17. package/dist/index.d.ts +3 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/nhash.d.ts.map +1 -1
  22. package/dist/nhash.js +20 -39
  23. package/dist/nhash.js.map +1 -1
  24. package/dist/store/blossom.d.ts.map +1 -1
  25. package/dist/store/blossom.js +52 -22
  26. package/dist/store/blossom.js.map +1 -1
  27. package/dist/store/fallback.d.ts +3 -1
  28. package/dist/store/fallback.d.ts.map +1 -1
  29. package/dist/store/fallback.js +60 -15
  30. package/dist/store/fallback.js.map +1 -1
  31. package/dist/tree/create.d.ts.map +1 -1
  32. package/dist/tree/create.js +2 -1
  33. package/dist/tree/create.js.map +1 -1
  34. package/dist/tree/read.d.ts +5 -1
  35. package/dist/tree/read.d.ts.map +1 -1
  36. package/dist/tree/read.js +29 -11
  37. package/dist/tree/read.js.map +1 -1
  38. package/dist/types.d.ts +14 -2
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/upload.d.ts +27 -0
  41. package/dist/upload.d.ts.map +1 -0
  42. package/dist/upload.js +107 -0
  43. package/dist/upload.js.map +1 -0
  44. package/dist/worker/protocol.d.ts +18 -1
  45. package/dist/worker/protocol.d.ts.map +1 -1
  46. package/dist/worker/protocol.js +1 -1
  47. package/dist/worker/protocol.js.map +1 -1
  48. package/package.json +6 -3
  49. package/dist/resolver/index.d.ts +0 -5
  50. package/dist/resolver/index.d.ts.map +0 -1
  51. package/dist/resolver/index.js +0 -5
  52. package/dist/resolver/index.js.map +0 -1
  53. package/dist/resolver/nostr.d.ts +0 -82
  54. package/dist/resolver/nostr.d.ts.map +0 -1
  55. package/dist/resolver/nostr.js +0 -868
  56. package/dist/resolver/nostr.js.map +0 -1
  57. package/dist/store/dexie.d.ts +0 -44
  58. package/dist/store/dexie.d.ts.map +0 -1
  59. package/dist/store/dexie.js +0 -196
  60. package/dist/store/dexie.js.map +0 -1
  61. package/dist/store/opfs.d.ts +0 -56
  62. package/dist/store/opfs.d.ts.map +0 -1
  63. package/dist/store/opfs.js +0 -200
  64. package/dist/store/opfs.js.map +0 -1
  65. package/dist/webrtc/index.d.ts +0 -4
  66. package/dist/webrtc/index.d.ts.map +0 -1
  67. package/dist/webrtc/index.js +0 -4
  68. package/dist/webrtc/index.js.map +0 -1
  69. package/dist/webrtc/lruCache.d.ts +0 -20
  70. package/dist/webrtc/lruCache.d.ts.map +0 -1
  71. package/dist/webrtc/lruCache.js +0 -59
  72. package/dist/webrtc/lruCache.js.map +0 -1
  73. package/dist/webrtc/peer.d.ts +0 -122
  74. package/dist/webrtc/peer.d.ts.map +0 -1
  75. package/dist/webrtc/peer.js +0 -583
  76. package/dist/webrtc/peer.js.map +0 -1
  77. package/dist/webrtc/protocol.d.ts +0 -76
  78. package/dist/webrtc/protocol.d.ts.map +0 -1
  79. package/dist/webrtc/protocol.js +0 -167
  80. package/dist/webrtc/protocol.js.map +0 -1
  81. package/dist/webrtc/store.d.ts +0 -190
  82. package/dist/webrtc/store.d.ts.map +0 -1
  83. package/dist/webrtc/store.js +0 -1043
  84. package/dist/webrtc/store.js.map +0 -1
  85. package/dist/webrtc/types.d.ts +0 -196
  86. package/dist/webrtc/types.d.ts.map +0 -1
  87. package/dist/webrtc/types.js +0 -46
  88. package/dist/webrtc/types.js.map +0 -1
@@ -1,59 +0,0 @@
1
- /**
2
- * Simple LRU Cache implementation
3
- */
4
- export class LRUCache {
5
- cache = new Map();
6
- maxSize;
7
- constructor(maxSize = 100) {
8
- this.maxSize = maxSize;
9
- }
10
- get(key) {
11
- const value = this.cache.get(key);
12
- if (value !== undefined) {
13
- // Move to end (most recently used)
14
- this.cache.delete(key);
15
- this.cache.set(key, value);
16
- }
17
- return value;
18
- }
19
- set(key, value) {
20
- // Delete first to reset position if exists
21
- this.cache.delete(key);
22
- // Evict oldest if at capacity
23
- if (this.cache.size >= this.maxSize) {
24
- const oldest = this.cache.keys().next().value;
25
- if (oldest !== undefined) {
26
- this.cache.delete(oldest);
27
- }
28
- }
29
- this.cache.set(key, value);
30
- }
31
- has(key) {
32
- return this.cache.has(key);
33
- }
34
- delete(key) {
35
- return this.cache.delete(key);
36
- }
37
- clear() {
38
- this.cache.clear();
39
- }
40
- get size() {
41
- return this.cache.size;
42
- }
43
- keys() {
44
- return this.cache.keys();
45
- }
46
- values() {
47
- return this.cache.values();
48
- }
49
- *entries() {
50
- yield* this.cache.entries();
51
- }
52
- forEach(callback) {
53
- this.cache.forEach(callback);
54
- }
55
- [Symbol.iterator]() {
56
- return this.entries();
57
- }
58
- }
59
- //# sourceMappingURL=lruCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lruCache.js","sourceRoot":"","sources":["../../src/webrtc/lruCache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAQ;IACX,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAC;IACxB,OAAO,CAAS;IAExB,YAAY,UAAkB,GAAG;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,GAAM;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,mCAAmC;YACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,2CAA2C;QAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEvB,8BAA8B;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,GAAM;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,CAAC,OAAO;QACN,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,QAAoC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -1,122 +0,0 @@
1
- /**
2
- * WebRTC peer connection for hashtree data exchange
3
- */
4
- import type { Store, Hash } from '../types.js';
5
- import type { SignalingMessage, PeerId } from './types.js';
6
- export declare class Peer {
7
- readonly peerId: string;
8
- readonly pubkey: string;
9
- readonly direction: 'inbound' | 'outbound';
10
- private pc;
11
- private dataChannel;
12
- private localStore;
13
- private sendSignaling;
14
- private onClose;
15
- private onConnected?;
16
- private onConnectedFired;
17
- private debug;
18
- private makingOffer;
19
- private ignoreOffer;
20
- private isPolite;
21
- private myPeerId;
22
- private ourRequests;
23
- private theirRequests;
24
- private requestTimeout;
25
- private pendingCandidates;
26
- private candidateBatchTimeout;
27
- private queuedRemoteCandidates;
28
- private onForwardRequest?;
29
- private stats;
30
- private pendingReassemblies;
31
- private reassemblyCleanupInterval?;
32
- private htlConfig;
33
- readonly createdAt: number;
34
- connectedAt?: number;
35
- constructor(options: {
36
- peerId: PeerId;
37
- myPeerId: string;
38
- direction: 'inbound' | 'outbound';
39
- localStore: Store | null;
40
- sendSignaling: (msg: SignalingMessage) => Promise<void>;
41
- onClose: () => void;
42
- onConnected?: () => void;
43
- onForwardRequest?: (hash: Uint8Array, excludePeerId: string, htl: number) => Promise<Uint8Array | null>;
44
- requestTimeout?: number;
45
- debug?: boolean;
46
- });
47
- private log;
48
- get state(): RTCPeerConnectionState;
49
- get isConnected(): boolean;
50
- get pendingTheirRequestsCount(): number;
51
- private scheduleCandidateBatch;
52
- private setupPeerConnection;
53
- private setupDataChannel;
54
- private handleMessage;
55
- private handleRequest;
56
- private sendResponse;
57
- /**
58
- * Handle a fragmented response - buffer and reassemble
59
- * Returns assembled data when complete, null when waiting for more fragments
60
- */
61
- private handleFragmentResponse;
62
- /**
63
- * Assemble fragments in order into a single buffer
64
- */
65
- private assembleFragments;
66
- /**
67
- * Clean up stale reassemblies (stalled or timed out)
68
- */
69
- private cleanupStaleReassemblies;
70
- /**
71
- * Request data by hash from this peer
72
- * @param htl Hops To Live - decremented before sending
73
- */
74
- request(hash: Hash, htl?: number): Promise<Uint8Array | null>;
75
- /**
76
- * Get per-peer statistics
77
- */
78
- getStats(): {
79
- requestsSent: number;
80
- requestsReceived: number;
81
- responsesSent: number;
82
- responsesReceived: number;
83
- receiveErrors: number;
84
- fragmentsSent: number;
85
- fragmentsReceived: number;
86
- fragmentTimeouts: number;
87
- reassembliesCompleted: number;
88
- bytesSent: number;
89
- bytesReceived: number;
90
- bytesForwarded: number;
91
- };
92
- /**
93
- * Send data to this peer for a hash they previously requested
94
- * Returns true if this peer had requested this hash
95
- */
96
- sendData(hash: Uint8Array, data: Uint8Array): boolean;
97
- /**
98
- * Check if this peer has requested a hash
99
- */
100
- hasRequested(hash: Uint8Array): boolean;
101
- /**
102
- * Get count of pending requests from this peer
103
- */
104
- getTheirRequestCount(): number;
105
- /**
106
- * Initiate connection (create offer)
107
- * Uses perfect negotiation pattern - both peers can call this
108
- */
109
- connect(): Promise<void>;
110
- /**
111
- * Handle incoming signaling message
112
- * Implements perfect negotiation pattern for collision handling
113
- */
114
- handleSignaling(msg: SignalingMessage): Promise<void>;
115
- private addRemoteCandidate;
116
- private processQueuedCandidates;
117
- /**
118
- * Close the peer connection
119
- */
120
- close(): void;
121
- }
122
- //# sourceMappingURL=peer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../src/webrtc/peer.ts"],"names":[],"mappings":"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"}