@hashtree/worker 0.2.0 → 0.2.2
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/package.json +7 -3
- package/src/app-runtime.ts +393 -0
- package/src/capabilities/blossomBandwidthTracker.ts +74 -0
- package/src/capabilities/blossomTransport.ts +179 -0
- package/src/capabilities/connectivity.ts +54 -0
- package/src/capabilities/idbStorage.ts +94 -0
- package/src/capabilities/meshRouterStore.ts +426 -0
- package/src/capabilities/rootResolver.ts +497 -0
- package/src/client-id.ts +137 -0
- package/src/client.ts +501 -0
- package/src/entry.ts +3 -0
- package/src/htree-path.ts +53 -0
- package/src/htree-url.ts +156 -0
- package/src/index.ts +76 -0
- package/src/mediaStreaming.ts +64 -0
- package/src/p2p/boundedQueue.ts +168 -0
- package/src/p2p/errorMessage.ts +6 -0
- package/src/p2p/index.ts +48 -0
- package/src/p2p/lruCache.ts +78 -0
- package/src/p2p/meshQueryRouter.ts +361 -0
- package/src/p2p/protocol.ts +11 -0
- package/src/p2p/queryForwardingMachine.ts +197 -0
- package/src/p2p/signaling.ts +284 -0
- package/src/p2p/uploadRateLimiter.ts +85 -0
- package/src/p2p/webrtcController.ts +1168 -0
- package/src/p2p/webrtcProxy.ts +519 -0
- package/src/privacyGuards.ts +31 -0
- package/src/protocol.ts +124 -0
- package/src/relay/identity.ts +86 -0
- package/src/relay/mediaHandler.ts +1633 -0
- package/src/relay/ndk.ts +590 -0
- package/src/relay/nostr-wasm.ts +249 -0
- package/src/relay/nostr.ts +249 -0
- package/src/relay/protocol.ts +361 -0
- package/src/relay/publicAssetUrl.ts +25 -0
- package/src/relay/rootPathResolver.ts +50 -0
- package/src/relay/shims.d.ts +17 -0
- package/src/relay/signing.ts +332 -0
- package/src/relay/treeRootCache.ts +354 -0
- package/src/relay/treeRootSubscription.ts +577 -0
- package/src/relay/utils/constants.ts +139 -0
- package/src/relay/utils/errorMessage.ts +7 -0
- package/src/relay/utils/lruCache.ts +79 -0
- package/src/relay/webrtc.ts +5 -0
- package/src/relay/webrtcSignaling.ts +108 -0
- package/src/relay/worker.ts +1787 -0
- package/src/relay-client.ts +265 -0
- package/src/relay-entry.ts +1 -0
- package/src/runtime-network.ts +134 -0
- package/src/runtime.ts +153 -0
- package/src/transferableBytes.ts +5 -0
- package/src/tree-root.ts +851 -0
- package/src/types.ts +8 -0
- package/src/worker.ts +975 -0
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
|
|
10
|
+
import { generateSecretKey, getPublicKey } from 'nostr-tools';
|
|
11
|
+
|
|
12
|
+
// User identity (set via init or setIdentity)
|
|
13
|
+
let userPubkey: string | null = null;
|
|
14
|
+
let userSecretKey: Uint8Array | null = null;
|
|
15
|
+
|
|
16
|
+
// Fallback ephemeral identity (used before user logs in)
|
|
17
|
+
let ephemeralSecretKey: Uint8Array | null = null;
|
|
18
|
+
let ephemeralPubkey: string | null = null;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Initialize identity from config
|
|
22
|
+
*/
|
|
23
|
+
export function initIdentity(pubkey: string, nsecHex?: string): void {
|
|
24
|
+
userPubkey = pubkey;
|
|
25
|
+
if (nsecHex) {
|
|
26
|
+
userSecretKey = new Uint8Array(nsecHex.match(/.{2}/g)!.map(b => parseInt(b, 16)));
|
|
27
|
+
} else {
|
|
28
|
+
userSecretKey = null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Generate fallback ephemeral identity
|
|
32
|
+
if (!ephemeralSecretKey) {
|
|
33
|
+
ephemeralSecretKey = generateSecretKey();
|
|
34
|
+
ephemeralPubkey = getPublicKey(ephemeralSecretKey);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Update identity (account switch)
|
|
40
|
+
*/
|
|
41
|
+
export function setIdentity(pubkey: string, nsecHex?: string): void {
|
|
42
|
+
userPubkey = pubkey;
|
|
43
|
+
if (nsecHex) {
|
|
44
|
+
userSecretKey = new Uint8Array(nsecHex.match(/.{2}/g)!.map(b => parseInt(b, 16)));
|
|
45
|
+
} else {
|
|
46
|
+
userSecretKey = null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Clear identity on close
|
|
52
|
+
*/
|
|
53
|
+
export function clearIdentity(): void {
|
|
54
|
+
userPubkey = null;
|
|
55
|
+
userSecretKey = null;
|
|
56
|
+
ephemeralSecretKey = null;
|
|
57
|
+
ephemeralPubkey = null;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Get user's pubkey (or ephemeral fallback)
|
|
62
|
+
*/
|
|
63
|
+
export function getPubkey(): string | null {
|
|
64
|
+
return userPubkey || ephemeralPubkey;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Get user's secret key (null for extension login)
|
|
69
|
+
*/
|
|
70
|
+
export function getSecretKey(): Uint8Array | null {
|
|
71
|
+
return userSecretKey;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Get ephemeral secret key (fallback for sync signing)
|
|
76
|
+
*/
|
|
77
|
+
export function getEphemeralSecretKey(): Uint8Array | null {
|
|
78
|
+
return ephemeralSecretKey;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Check if we have a secret key for direct signing
|
|
83
|
+
*/
|
|
84
|
+
export function hasSecretKey(): boolean {
|
|
85
|
+
return userSecretKey !== null;
|
|
86
|
+
}
|