@hashtree/worker 0.2.1 → 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 (212) hide show
  1. package/LICENSE +21 -0
  2. package/dist/app-runtime.d.ts +60 -0
  3. package/dist/app-runtime.d.ts.map +1 -0
  4. package/dist/app-runtime.js +271 -0
  5. package/dist/app-runtime.js.map +1 -0
  6. package/dist/capabilities/blossomBandwidthTracker.d.ts +26 -0
  7. package/dist/capabilities/blossomBandwidthTracker.d.ts.map +1 -0
  8. package/dist/capabilities/blossomBandwidthTracker.js +53 -0
  9. package/dist/capabilities/blossomBandwidthTracker.js.map +1 -0
  10. package/dist/capabilities/blossomTransport.d.ts +22 -0
  11. package/dist/capabilities/blossomTransport.d.ts.map +1 -0
  12. package/dist/capabilities/blossomTransport.js +139 -0
  13. package/dist/capabilities/blossomTransport.js.map +1 -0
  14. package/dist/capabilities/connectivity.d.ts +3 -0
  15. package/dist/capabilities/connectivity.d.ts.map +1 -0
  16. package/dist/capabilities/connectivity.js +49 -0
  17. package/dist/capabilities/connectivity.js.map +1 -0
  18. package/dist/capabilities/idbStorage.d.ts +25 -0
  19. package/dist/capabilities/idbStorage.d.ts.map +1 -0
  20. package/dist/capabilities/idbStorage.js +73 -0
  21. package/dist/capabilities/idbStorage.js.map +1 -0
  22. package/dist/capabilities/meshRouterStore.d.ts +71 -0
  23. package/dist/capabilities/meshRouterStore.d.ts.map +1 -0
  24. package/dist/capabilities/meshRouterStore.js +316 -0
  25. package/dist/capabilities/meshRouterStore.js.map +1 -0
  26. package/dist/capabilities/rootResolver.d.ts +10 -0
  27. package/dist/capabilities/rootResolver.d.ts.map +1 -0
  28. package/dist/capabilities/rootResolver.js +392 -0
  29. package/dist/capabilities/rootResolver.js.map +1 -0
  30. package/dist/client-id.d.ts +18 -0
  31. package/dist/client-id.d.ts.map +1 -0
  32. package/dist/client-id.js +98 -0
  33. package/dist/client-id.js.map +1 -0
  34. package/dist/client.d.ts +61 -0
  35. package/dist/client.d.ts.map +1 -0
  36. package/dist/client.js +417 -0
  37. package/dist/client.js.map +1 -0
  38. package/dist/entry.d.ts +2 -0
  39. package/dist/entry.d.ts.map +1 -0
  40. package/dist/entry.js +3 -0
  41. package/dist/entry.js.map +1 -0
  42. package/dist/htree-path.d.ts +13 -0
  43. package/dist/htree-path.d.ts.map +1 -0
  44. package/dist/htree-path.js +38 -0
  45. package/dist/htree-path.js.map +1 -0
  46. package/dist/htree-url.d.ts +22 -0
  47. package/dist/htree-url.d.ts.map +1 -0
  48. package/dist/htree-url.js +118 -0
  49. package/dist/htree-url.js.map +1 -0
  50. package/dist/index.d.ts +17 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +8 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/mediaStreaming.d.ts +7 -0
  55. package/dist/mediaStreaming.d.ts.map +1 -0
  56. package/dist/mediaStreaming.js +48 -0
  57. package/dist/mediaStreaming.js.map +1 -0
  58. package/dist/p2p/boundedQueue.d.ts +79 -0
  59. package/dist/p2p/boundedQueue.d.ts.map +1 -0
  60. package/dist/p2p/boundedQueue.js +134 -0
  61. package/dist/p2p/boundedQueue.js.map +1 -0
  62. package/dist/p2p/errorMessage.d.ts +5 -0
  63. package/dist/p2p/errorMessage.d.ts.map +1 -0
  64. package/dist/p2p/errorMessage.js +7 -0
  65. package/dist/p2p/errorMessage.js.map +1 -0
  66. package/dist/p2p/index.d.ts +8 -0
  67. package/dist/p2p/index.d.ts.map +1 -0
  68. package/dist/p2p/index.js +6 -0
  69. package/dist/p2p/index.js.map +1 -0
  70. package/dist/p2p/lruCache.d.ts +26 -0
  71. package/dist/p2p/lruCache.d.ts.map +1 -0
  72. package/dist/p2p/lruCache.js +65 -0
  73. package/dist/p2p/lruCache.js.map +1 -0
  74. package/dist/p2p/meshQueryRouter.d.ts +57 -0
  75. package/dist/p2p/meshQueryRouter.d.ts.map +1 -0
  76. package/dist/p2p/meshQueryRouter.js +264 -0
  77. package/dist/p2p/meshQueryRouter.js.map +1 -0
  78. package/dist/p2p/protocol.d.ts +10 -0
  79. package/dist/p2p/protocol.d.ts.map +1 -0
  80. package/dist/p2p/protocol.js +2 -0
  81. package/dist/p2p/protocol.js.map +1 -0
  82. package/dist/p2p/queryForwardingMachine.d.ts +46 -0
  83. package/dist/p2p/queryForwardingMachine.d.ts.map +1 -0
  84. package/dist/p2p/queryForwardingMachine.js +144 -0
  85. package/dist/p2p/queryForwardingMachine.js.map +1 -0
  86. package/dist/p2p/signaling.d.ts +63 -0
  87. package/dist/p2p/signaling.d.ts.map +1 -0
  88. package/dist/p2p/signaling.js +185 -0
  89. package/dist/p2p/signaling.js.map +1 -0
  90. package/dist/p2p/uploadRateLimiter.d.ts +21 -0
  91. package/dist/p2p/uploadRateLimiter.d.ts.map +1 -0
  92. package/dist/p2p/uploadRateLimiter.js +62 -0
  93. package/dist/p2p/uploadRateLimiter.js.map +1 -0
  94. package/dist/p2p/webrtcController.d.ts +176 -0
  95. package/dist/p2p/webrtcController.d.ts.map +1 -0
  96. package/dist/p2p/webrtcController.js +938 -0
  97. package/dist/p2p/webrtcController.js.map +1 -0
  98. package/dist/p2p/webrtcProxy.d.ts +62 -0
  99. package/dist/p2p/webrtcProxy.d.ts.map +1 -0
  100. package/dist/p2p/webrtcProxy.js +447 -0
  101. package/dist/p2p/webrtcProxy.js.map +1 -0
  102. package/dist/privacyGuards.d.ts +14 -0
  103. package/dist/privacyGuards.d.ts.map +1 -0
  104. package/dist/privacyGuards.js +27 -0
  105. package/dist/privacyGuards.js.map +1 -0
  106. package/dist/protocol.d.ts +225 -0
  107. package/dist/protocol.d.ts.map +1 -0
  108. package/dist/protocol.js +2 -0
  109. package/dist/protocol.js.map +1 -0
  110. package/dist/relay/identity.d.ts +36 -0
  111. package/dist/relay/identity.d.ts.map +1 -0
  112. package/dist/relay/identity.js +78 -0
  113. package/dist/relay/identity.js.map +1 -0
  114. package/dist/relay/mediaHandler.d.ts +64 -0
  115. package/dist/relay/mediaHandler.d.ts.map +1 -0
  116. package/dist/relay/mediaHandler.js +1285 -0
  117. package/dist/relay/mediaHandler.js.map +1 -0
  118. package/dist/relay/ndk.d.ts +96 -0
  119. package/dist/relay/ndk.d.ts.map +1 -0
  120. package/dist/relay/ndk.js +502 -0
  121. package/dist/relay/ndk.js.map +1 -0
  122. package/dist/relay/nostr-wasm.d.ts +14 -0
  123. package/dist/relay/nostr-wasm.d.ts.map +1 -0
  124. package/dist/relay/nostr-wasm.js +246 -0
  125. package/dist/relay/nostr-wasm.js.map +1 -0
  126. package/dist/relay/nostr.d.ts +60 -0
  127. package/dist/relay/nostr.d.ts.map +1 -0
  128. package/dist/relay/nostr.js +207 -0
  129. package/dist/relay/nostr.js.map +1 -0
  130. package/dist/relay/protocol.d.ts +592 -0
  131. package/dist/relay/protocol.d.ts.map +1 -0
  132. package/dist/relay/protocol.js +16 -0
  133. package/dist/relay/protocol.js.map +1 -0
  134. package/dist/relay/publicAssetUrl.d.ts +6 -0
  135. package/dist/relay/publicAssetUrl.d.ts.map +1 -0
  136. package/dist/relay/publicAssetUrl.js +14 -0
  137. package/dist/relay/publicAssetUrl.js.map +1 -0
  138. package/dist/relay/rootPathResolver.d.ts +9 -0
  139. package/dist/relay/rootPathResolver.d.ts.map +1 -0
  140. package/dist/relay/rootPathResolver.js +32 -0
  141. package/dist/relay/rootPathResolver.js.map +1 -0
  142. package/dist/relay/signing.d.ts +50 -0
  143. package/dist/relay/signing.d.ts.map +1 -0
  144. package/dist/relay/signing.js +299 -0
  145. package/dist/relay/signing.js.map +1 -0
  146. package/dist/relay/treeRootCache.d.ts +86 -0
  147. package/dist/relay/treeRootCache.d.ts.map +1 -0
  148. package/dist/relay/treeRootCache.js +269 -0
  149. package/dist/relay/treeRootCache.js.map +1 -0
  150. package/dist/relay/treeRootSubscription.d.ts +55 -0
  151. package/dist/relay/treeRootSubscription.d.ts.map +1 -0
  152. package/dist/relay/treeRootSubscription.js +478 -0
  153. package/dist/relay/treeRootSubscription.js.map +1 -0
  154. package/dist/relay/utils/constants.d.ts +76 -0
  155. package/dist/relay/utils/constants.d.ts.map +1 -0
  156. package/dist/relay/utils/constants.js +113 -0
  157. package/dist/relay/utils/constants.js.map +1 -0
  158. package/dist/relay/utils/errorMessage.d.ts +5 -0
  159. package/dist/relay/utils/errorMessage.d.ts.map +1 -0
  160. package/dist/relay/utils/errorMessage.js +8 -0
  161. package/dist/relay/utils/errorMessage.js.map +1 -0
  162. package/dist/relay/utils/lruCache.d.ts +26 -0
  163. package/dist/relay/utils/lruCache.d.ts.map +1 -0
  164. package/dist/relay/utils/lruCache.js +66 -0
  165. package/dist/relay/utils/lruCache.js.map +1 -0
  166. package/dist/relay/webrtc.d.ts +2 -0
  167. package/dist/relay/webrtc.d.ts.map +1 -0
  168. package/dist/relay/webrtc.js +3 -0
  169. package/dist/relay/webrtc.js.map +1 -0
  170. package/dist/relay/webrtcSignaling.d.ts +37 -0
  171. package/dist/relay/webrtcSignaling.d.ts.map +1 -0
  172. package/dist/relay/webrtcSignaling.js +86 -0
  173. package/dist/relay/webrtcSignaling.js.map +1 -0
  174. package/dist/relay/worker.d.ts +12 -0
  175. package/dist/relay/worker.d.ts.map +1 -0
  176. package/dist/relay/worker.js +1540 -0
  177. package/dist/relay/worker.js.map +1 -0
  178. package/dist/relay-client.d.ts +31 -0
  179. package/dist/relay-client.d.ts.map +1 -0
  180. package/dist/relay-client.js +197 -0
  181. package/dist/relay-client.js.map +1 -0
  182. package/dist/relay-entry.d.ts +2 -0
  183. package/dist/relay-entry.d.ts.map +1 -0
  184. package/dist/relay-entry.js +2 -0
  185. package/dist/relay-entry.js.map +1 -0
  186. package/dist/runtime-network.d.ts +23 -0
  187. package/dist/runtime-network.d.ts.map +1 -0
  188. package/dist/runtime-network.js +105 -0
  189. package/dist/runtime-network.js.map +1 -0
  190. package/dist/runtime.d.ts +24 -0
  191. package/dist/runtime.d.ts.map +1 -0
  192. package/dist/runtime.js +126 -0
  193. package/dist/runtime.js.map +1 -0
  194. package/dist/transferableBytes.d.ts +2 -0
  195. package/dist/transferableBytes.d.ts.map +1 -0
  196. package/dist/transferableBytes.js +6 -0
  197. package/dist/transferableBytes.js.map +1 -0
  198. package/dist/tree-root.d.ts +201 -0
  199. package/dist/tree-root.d.ts.map +1 -0
  200. package/dist/tree-root.js +632 -0
  201. package/dist/tree-root.js.map +1 -0
  202. package/dist/types.d.ts +2 -0
  203. package/dist/types.d.ts.map +1 -0
  204. package/dist/types.js +2 -0
  205. package/dist/types.js.map +1 -0
  206. package/dist/worker.d.ts +9 -0
  207. package/dist/worker.d.ts.map +1 -0
  208. package/dist/worker.js +793 -0
  209. package/dist/worker.js.map +1 -0
  210. package/package.json +14 -14
  211. package/src/capabilities/blossomTransport.ts +1 -1
  212. package/src/worker.ts +2 -1
@@ -0,0 +1,225 @@
1
+ import type { CID } from '@hashtree/core';
2
+ export interface BlossomServerConfig {
3
+ url: string;
4
+ read?: boolean;
5
+ write?: boolean;
6
+ }
7
+ export interface WorkerConfig {
8
+ storeName?: string;
9
+ blossomServers?: BlossomServerConfig[];
10
+ relays?: string[];
11
+ storageMaxBytes?: number;
12
+ connectivityProbeIntervalMs?: number;
13
+ diagnosticsEnabled?: boolean;
14
+ diagnosticsMirrorToConsole?: boolean;
15
+ }
16
+ export type WorkerDiagnosticLevel = 'debug' | 'info' | 'warn' | 'error';
17
+ export type WorkerDiagnosticDataValue = string | number | boolean | null;
18
+ export interface WorkerDiagnosticEvent {
19
+ scope: string;
20
+ code: string;
21
+ level: WorkerDiagnosticLevel;
22
+ message: string;
23
+ timestamp: number;
24
+ data?: Record<string, WorkerDiagnosticDataValue>;
25
+ }
26
+ export interface ConnectivityState {
27
+ online: boolean;
28
+ reachableReadServers: number;
29
+ totalReadServers: number;
30
+ reachableWriteServers: number;
31
+ totalWriteServers: number;
32
+ updatedAt: number;
33
+ }
34
+ export type BlobSource = 'idb' | 'blossom' | 'p2p';
35
+ export interface UploadServerStatus {
36
+ url: string;
37
+ uploaded: number;
38
+ skipped: number;
39
+ failed: number;
40
+ }
41
+ export interface UploadProgressState {
42
+ hashHex: string;
43
+ nhash: string;
44
+ totalServers: number;
45
+ processedServers: number;
46
+ uploadedServers: number;
47
+ skippedServers: number;
48
+ failedServers: number;
49
+ totalChunks?: number;
50
+ processedChunks?: number;
51
+ /** 0..1 normalized progress for chunk upload traversal */
52
+ progressRatio?: number;
53
+ serverStatuses?: UploadServerStatus[];
54
+ complete: boolean;
55
+ error?: string;
56
+ }
57
+ export interface BlossomBandwidthServerStats {
58
+ url: string;
59
+ bytesSent: number;
60
+ bytesReceived: number;
61
+ }
62
+ export interface BlossomBandwidthState {
63
+ totalBytesSent: number;
64
+ totalBytesReceived: number;
65
+ updatedAt: number;
66
+ servers: BlossomBandwidthServerStats[];
67
+ }
68
+ export interface BlobStreamStarted {
69
+ id: string;
70
+ streamId: string;
71
+ }
72
+ export interface RootResolveOptions {
73
+ timeoutMs?: number;
74
+ settleMs?: number;
75
+ }
76
+ export type WorkerRequest = {
77
+ type: 'init';
78
+ id: string;
79
+ config: WorkerConfig;
80
+ } | {
81
+ type: 'close';
82
+ id: string;
83
+ } | {
84
+ type: 'putBlob';
85
+ id: string;
86
+ data: Uint8Array;
87
+ mimeType?: string;
88
+ upload?: boolean;
89
+ } | {
90
+ type: 'beginPutBlobStream';
91
+ id: string;
92
+ mimeType?: string;
93
+ upload?: boolean;
94
+ } | {
95
+ type: 'appendPutBlobStream';
96
+ id: string;
97
+ streamId: string;
98
+ chunk: Uint8Array;
99
+ } | {
100
+ type: 'finishPutBlobStream';
101
+ id: string;
102
+ streamId: string;
103
+ } | {
104
+ type: 'cancelPutBlobStream';
105
+ id: string;
106
+ streamId: string;
107
+ } | {
108
+ type: 'p2pFetchResult';
109
+ id: string;
110
+ requestId: string;
111
+ data?: Uint8Array;
112
+ error?: string;
113
+ } | {
114
+ type: 'getBlob';
115
+ id: string;
116
+ hashHex: string;
117
+ forPeer?: boolean;
118
+ } | {
119
+ type: 'registerMediaPort';
120
+ id: string;
121
+ port: MessagePort;
122
+ } | {
123
+ type: 'setBlossomServers';
124
+ id: string;
125
+ servers: BlossomServerConfig[];
126
+ } | {
127
+ type: 'setStorageMaxBytes';
128
+ id: string;
129
+ maxBytes: number;
130
+ } | {
131
+ type: 'getStorageStats';
132
+ id: string;
133
+ } | {
134
+ type: 'probeConnectivity';
135
+ id: string;
136
+ } | {
137
+ type: 'resolveRoot';
138
+ id: string;
139
+ npub: string;
140
+ path?: string;
141
+ timeoutMs?: number;
142
+ settleMs?: number;
143
+ } | {
144
+ type: 'watchRoot';
145
+ id: string;
146
+ npub: string;
147
+ path?: string;
148
+ timeoutMs?: number;
149
+ settleMs?: number;
150
+ } | {
151
+ type: 'unwatchRoot';
152
+ id: string;
153
+ watchId: string;
154
+ };
155
+ export type WorkerResponse = {
156
+ type: 'ready';
157
+ id: string;
158
+ } | {
159
+ type: 'error';
160
+ id?: string;
161
+ error: string;
162
+ } | {
163
+ type: 'diagnostic';
164
+ event: WorkerDiagnosticEvent;
165
+ } | {
166
+ type: 'p2pFetch';
167
+ requestId: string;
168
+ hashHex: string;
169
+ } | {
170
+ type: 'blobStreamStarted';
171
+ id: string;
172
+ streamId: string;
173
+ } | {
174
+ type: 'blobStored';
175
+ id: string;
176
+ hashHex: string;
177
+ nhash: string;
178
+ } | {
179
+ type: 'blob';
180
+ id: string;
181
+ data?: Uint8Array;
182
+ source?: BlobSource;
183
+ error?: string;
184
+ } | {
185
+ type: 'cid';
186
+ id: string;
187
+ cid?: CID;
188
+ error?: string;
189
+ } | {
190
+ type: 'void';
191
+ id: string;
192
+ error?: string;
193
+ } | {
194
+ type: 'storageStats';
195
+ id: string;
196
+ items: number;
197
+ bytes: number;
198
+ maxBytes: number;
199
+ error?: string;
200
+ } | {
201
+ type: 'connectivity';
202
+ id: string;
203
+ state?: ConnectivityState;
204
+ error?: string;
205
+ } | {
206
+ type: 'rootWatchStarted';
207
+ id: string;
208
+ watchId: string;
209
+ cid?: CID;
210
+ error?: string;
211
+ } | {
212
+ type: 'rootUpdate';
213
+ watchId: string;
214
+ cid?: CID;
215
+ } | {
216
+ type: 'connectivityUpdate';
217
+ state: ConnectivityState;
218
+ } | {
219
+ type: 'blossomBandwidth';
220
+ stats: BlossomBandwidthState;
221
+ } | {
222
+ type: 'uploadProgress';
223
+ progress: UploadProgressState;
224
+ };
225
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACxE,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEzE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,2BAA2B,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACtF;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/E;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5F;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACvG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACrG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACpG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/E;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Worker Identity Management
3
+ *
4
+ * Manages user identity for signing operations.
5
+ * - For nsec login: secret key available, sign directly
6
+ * - For extension login: delegate to main thread via NIP-07
7
+ */
8
+ /**
9
+ * Initialize identity from config
10
+ */
11
+ export declare function initIdentity(pubkey: string, nsecHex?: string): void;
12
+ /**
13
+ * Update identity (account switch)
14
+ */
15
+ export declare function setIdentity(pubkey: string, nsecHex?: string): void;
16
+ /**
17
+ * Clear identity on close
18
+ */
19
+ export declare function clearIdentity(): void;
20
+ /**
21
+ * Get user's pubkey (or ephemeral fallback)
22
+ */
23
+ export declare function getPubkey(): string | null;
24
+ /**
25
+ * Get user's secret key (null for extension login)
26
+ */
27
+ export declare function getSecretKey(): Uint8Array | null;
28
+ /**
29
+ * Get ephemeral secret key (fallback for sync signing)
30
+ */
31
+ export declare function getEphemeralSecretKey(): Uint8Array | null;
32
+ /**
33
+ * Check if we have a secret key for direct signing
34
+ */
35
+ export declare function hasSecretKey(): boolean;
36
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/relay/identity.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAYH;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAanE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAOlE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,UAAU,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,UAAU,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
@@ -0,0 +1,78 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Worker Identity Management
4
+ *
5
+ * Manages user identity for signing operations.
6
+ * - For nsec login: secret key available, sign directly
7
+ * - For extension login: delegate to main thread via NIP-07
8
+ */
9
+ import { generateSecretKey, getPublicKey } from 'nostr-tools';
10
+ // User identity (set via init or setIdentity)
11
+ let userPubkey = null;
12
+ let userSecretKey = null;
13
+ // Fallback ephemeral identity (used before user logs in)
14
+ let ephemeralSecretKey = null;
15
+ let ephemeralPubkey = null;
16
+ /**
17
+ * Initialize identity from config
18
+ */
19
+ export function initIdentity(pubkey, nsecHex) {
20
+ userPubkey = pubkey;
21
+ if (nsecHex) {
22
+ userSecretKey = new Uint8Array(nsecHex.match(/.{2}/g).map(b => parseInt(b, 16)));
23
+ }
24
+ else {
25
+ userSecretKey = null;
26
+ }
27
+ // Generate fallback ephemeral identity
28
+ if (!ephemeralSecretKey) {
29
+ ephemeralSecretKey = generateSecretKey();
30
+ ephemeralPubkey = getPublicKey(ephemeralSecretKey);
31
+ }
32
+ }
33
+ /**
34
+ * Update identity (account switch)
35
+ */
36
+ export function setIdentity(pubkey, nsecHex) {
37
+ userPubkey = pubkey;
38
+ if (nsecHex) {
39
+ userSecretKey = new Uint8Array(nsecHex.match(/.{2}/g).map(b => parseInt(b, 16)));
40
+ }
41
+ else {
42
+ userSecretKey = null;
43
+ }
44
+ }
45
+ /**
46
+ * Clear identity on close
47
+ */
48
+ export function clearIdentity() {
49
+ userPubkey = null;
50
+ userSecretKey = null;
51
+ ephemeralSecretKey = null;
52
+ ephemeralPubkey = null;
53
+ }
54
+ /**
55
+ * Get user's pubkey (or ephemeral fallback)
56
+ */
57
+ export function getPubkey() {
58
+ return userPubkey || ephemeralPubkey;
59
+ }
60
+ /**
61
+ * Get user's secret key (null for extension login)
62
+ */
63
+ export function getSecretKey() {
64
+ return userSecretKey;
65
+ }
66
+ /**
67
+ * Get ephemeral secret key (fallback for sync signing)
68
+ */
69
+ export function getEphemeralSecretKey() {
70
+ return ephemeralSecretKey;
71
+ }
72
+ /**
73
+ * Check if we have a secret key for direct signing
74
+ */
75
+ export function hasSecretKey() {
76
+ return userSecretKey !== null;
77
+ }
78
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/relay/identity.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9D,8CAA8C;AAC9C,IAAI,UAAU,GAAkB,IAAI,CAAC;AACrC,IAAI,aAAa,GAAsB,IAAI,CAAC;AAE5C,yDAAyD;AACzD,IAAI,kBAAkB,GAAsB,IAAI,CAAC;AACjD,IAAI,eAAe,GAAkB,IAAI,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAgB;IAC3D,UAAU,GAAG,MAAM,CAAC;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,aAAa,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;QACzC,eAAe,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,OAAgB;IAC1D,UAAU,GAAG,MAAM,CAAC;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,aAAa,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,UAAU,GAAG,IAAI,CAAC;IAClB,aAAa,GAAG,IAAI,CAAC;IACrB,kBAAkB,GAAG,IAAI,CAAC;IAC1B,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,IAAI,eAAe,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,aAAa,KAAK,IAAI,CAAC;AAChC,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Media Streaming Handler for Hashtree Worker
3
+ *
4
+ * Handles media requests from the service worker via MessagePort.
5
+ * Supports both direct CID-based requests and path-based requests with live streaming.
6
+ */
7
+ import type { HashTree, CID } from '@hashtree/core';
8
+ /**
9
+ * SW FileRequest format (from service worker)
10
+ */
11
+ interface SwFileRequest {
12
+ type: 'hashtree-file';
13
+ requestId: string;
14
+ npub?: string;
15
+ nhash?: string;
16
+ snapshot?: boolean;
17
+ linkKey?: string | null;
18
+ treeName?: string;
19
+ path: string;
20
+ start: number;
21
+ end?: number;
22
+ rangeHeader?: string | null;
23
+ mimeType: string;
24
+ download?: boolean;
25
+ }
26
+ interface ResolvedRootEntry {
27
+ cid: CID;
28
+ size?: number;
29
+ path?: string;
30
+ }
31
+ /**
32
+ * Initialize the media handler with the HashTree instance
33
+ */
34
+ export declare function initMediaHandler(hashTree: HashTree): void;
35
+ /**
36
+ * Register a MessagePort from the service worker for media streaming
37
+ */
38
+ export declare function registerMediaPort(port: MessagePort, debug?: boolean): void;
39
+ /**
40
+ * Handle file request from service worker (hashtree-file format)
41
+ * This is the main entry point for direct SW → Worker communication
42
+ */
43
+ declare function handleSwFileRequest(req: SwFileRequest): Promise<void>;
44
+ declare function waitForCachedRoot(npub: string, treeName: string): Promise<CID | null>;
45
+ declare function resolveMutableTreeEntry(npub: string, treeName: string, path: string, options?: {
46
+ allowSingleSegmentRootFallback?: boolean;
47
+ expectedMimeType?: string;
48
+ }): Promise<ResolvedRootEntry | null>;
49
+ declare function resolveCidWithinRoot(rootCid: CID, path: string, options?: {
50
+ allowSingleSegmentRootFallback?: boolean;
51
+ expectedMimeType?: string;
52
+ }): Promise<CID | null>;
53
+ declare function normalizeAliasPath(rootCid: CID, path: string): Promise<string>;
54
+ declare function canListDirectory(rootCid: CID): Promise<boolean>;
55
+ export declare const __test__: {
56
+ handleSwFileRequest: typeof handleSwFileRequest;
57
+ resolveCidWithinRoot: typeof resolveCidWithinRoot;
58
+ resolveMutableTreeEntry: typeof resolveMutableTreeEntry;
59
+ normalizeAliasPath: typeof normalizeAliasPath;
60
+ canListDirectory: typeof canListDirectory;
61
+ waitForCachedRoot: typeof waitForCachedRoot;
62
+ };
63
+ export {};
64
+ //# sourceMappingURL=mediaHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaHandler.d.ts","sourceRoot":"","sources":["../../src/relay/mediaHandler.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAqDpD;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAeD,UAAU,iBAAiB;IACzB,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAmJD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAGzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CA2B1E;AA+OD;;;GAGG;AACH,iBAAe,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0GpE;AAED,iBAAe,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAoDpF;AAED,iBAAe,uBAAuB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAChF,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA0BnC;AAuFD,iBAAe,oBAAoB,CACjC,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAChF,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAErB;AAoWD,iBAAe,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW7E;AAED,iBAAe,gBAAgB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAW9D;AAED,eAAO,MAAM,QAAQ;;;;;;;CAOpB,CAAC"}