@hashtree/worker 0.1.1

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 (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/capabilities/blossomBandwidthTracker.d.ts +26 -0
  4. package/dist/capabilities/blossomBandwidthTracker.d.ts.map +1 -0
  5. package/dist/capabilities/blossomBandwidthTracker.js +53 -0
  6. package/dist/capabilities/blossomBandwidthTracker.js.map +1 -0
  7. package/dist/capabilities/blossomTransport.d.ts +22 -0
  8. package/dist/capabilities/blossomTransport.d.ts.map +1 -0
  9. package/dist/capabilities/blossomTransport.js +124 -0
  10. package/dist/capabilities/blossomTransport.js.map +1 -0
  11. package/dist/capabilities/connectivity.d.ts +3 -0
  12. package/dist/capabilities/connectivity.d.ts.map +1 -0
  13. package/dist/capabilities/connectivity.js +49 -0
  14. package/dist/capabilities/connectivity.js.map +1 -0
  15. package/dist/capabilities/idbStorage.d.ts +25 -0
  16. package/dist/capabilities/idbStorage.d.ts.map +1 -0
  17. package/dist/capabilities/idbStorage.js +73 -0
  18. package/dist/capabilities/idbStorage.js.map +1 -0
  19. package/dist/client.d.ts +54 -0
  20. package/dist/client.d.ts.map +1 -0
  21. package/dist/client.js +336 -0
  22. package/dist/client.js.map +1 -0
  23. package/dist/entry.d.ts +2 -0
  24. package/dist/entry.d.ts.map +1 -0
  25. package/dist/entry.js +2 -0
  26. package/dist/entry.js.map +1 -0
  27. package/dist/index.d.ts +6 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +3 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/iris/identity.d.ts +36 -0
  32. package/dist/iris/identity.d.ts.map +1 -0
  33. package/dist/iris/identity.js +78 -0
  34. package/dist/iris/identity.js.map +1 -0
  35. package/dist/iris/mediaHandler.d.ts +16 -0
  36. package/dist/iris/mediaHandler.d.ts.map +1 -0
  37. package/dist/iris/mediaHandler.js +529 -0
  38. package/dist/iris/mediaHandler.js.map +1 -0
  39. package/dist/iris/ndk.d.ts +95 -0
  40. package/dist/iris/ndk.d.ts.map +1 -0
  41. package/dist/iris/ndk.js +496 -0
  42. package/dist/iris/ndk.js.map +1 -0
  43. package/dist/iris/nostr-wasm.d.ts +14 -0
  44. package/dist/iris/nostr-wasm.d.ts.map +1 -0
  45. package/dist/iris/nostr-wasm.js +246 -0
  46. package/dist/iris/nostr-wasm.js.map +1 -0
  47. package/dist/iris/nostr.d.ts +60 -0
  48. package/dist/iris/nostr.d.ts.map +1 -0
  49. package/dist/iris/nostr.js +207 -0
  50. package/dist/iris/nostr.js.map +1 -0
  51. package/dist/iris/protocol.d.ts +574 -0
  52. package/dist/iris/protocol.d.ts.map +1 -0
  53. package/dist/iris/protocol.js +16 -0
  54. package/dist/iris/protocol.js.map +1 -0
  55. package/dist/iris/signing.d.ts +50 -0
  56. package/dist/iris/signing.d.ts.map +1 -0
  57. package/dist/iris/signing.js +299 -0
  58. package/dist/iris/signing.js.map +1 -0
  59. package/dist/iris/treeRootCache.d.ts +73 -0
  60. package/dist/iris/treeRootCache.d.ts.map +1 -0
  61. package/dist/iris/treeRootCache.js +191 -0
  62. package/dist/iris/treeRootCache.js.map +1 -0
  63. package/dist/iris/treeRootSubscription.d.ts +49 -0
  64. package/dist/iris/treeRootSubscription.d.ts.map +1 -0
  65. package/dist/iris/treeRootSubscription.js +185 -0
  66. package/dist/iris/treeRootSubscription.js.map +1 -0
  67. package/dist/iris/utils/constants.d.ts +76 -0
  68. package/dist/iris/utils/constants.d.ts.map +1 -0
  69. package/dist/iris/utils/constants.js +113 -0
  70. package/dist/iris/utils/constants.js.map +1 -0
  71. package/dist/iris/utils/errorMessage.d.ts +5 -0
  72. package/dist/iris/utils/errorMessage.d.ts.map +1 -0
  73. package/dist/iris/utils/errorMessage.js +8 -0
  74. package/dist/iris/utils/errorMessage.js.map +1 -0
  75. package/dist/iris/utils/lruCache.d.ts +26 -0
  76. package/dist/iris/utils/lruCache.d.ts.map +1 -0
  77. package/dist/iris/utils/lruCache.js +66 -0
  78. package/dist/iris/utils/lruCache.js.map +1 -0
  79. package/dist/iris/webrtc.d.ts +2 -0
  80. package/dist/iris/webrtc.d.ts.map +1 -0
  81. package/dist/iris/webrtc.js +3 -0
  82. package/dist/iris/webrtc.js.map +1 -0
  83. package/dist/iris/webrtcSignaling.d.ts +37 -0
  84. package/dist/iris/webrtcSignaling.d.ts.map +1 -0
  85. package/dist/iris/webrtcSignaling.js +86 -0
  86. package/dist/iris/webrtcSignaling.js.map +1 -0
  87. package/dist/iris/worker.d.ts +12 -0
  88. package/dist/iris/worker.d.ts.map +1 -0
  89. package/dist/iris/worker.js +1582 -0
  90. package/dist/iris/worker.js.map +1 -0
  91. package/dist/iris-entry.d.ts +2 -0
  92. package/dist/iris-entry.d.ts.map +1 -0
  93. package/dist/iris-entry.js +2 -0
  94. package/dist/iris-entry.js.map +1 -0
  95. package/dist/mediaStreaming.d.ts +7 -0
  96. package/dist/mediaStreaming.d.ts.map +1 -0
  97. package/dist/mediaStreaming.js +48 -0
  98. package/dist/mediaStreaming.js.map +1 -0
  99. package/dist/p2p/boundedQueue.d.ts +74 -0
  100. package/dist/p2p/boundedQueue.d.ts.map +1 -0
  101. package/dist/p2p/boundedQueue.js +112 -0
  102. package/dist/p2p/boundedQueue.js.map +1 -0
  103. package/dist/p2p/errorMessage.d.ts +5 -0
  104. package/dist/p2p/errorMessage.d.ts.map +1 -0
  105. package/dist/p2p/errorMessage.js +7 -0
  106. package/dist/p2p/errorMessage.js.map +1 -0
  107. package/dist/p2p/index.d.ts +7 -0
  108. package/dist/p2p/index.d.ts.map +1 -0
  109. package/dist/p2p/index.js +5 -0
  110. package/dist/p2p/index.js.map +1 -0
  111. package/dist/p2p/lruCache.d.ts +26 -0
  112. package/dist/p2p/lruCache.d.ts.map +1 -0
  113. package/dist/p2p/lruCache.js +65 -0
  114. package/dist/p2p/lruCache.js.map +1 -0
  115. package/dist/p2p/protocol.d.ts +10 -0
  116. package/dist/p2p/protocol.d.ts.map +1 -0
  117. package/dist/p2p/protocol.js +2 -0
  118. package/dist/p2p/protocol.js.map +1 -0
  119. package/dist/p2p/queryForwardingMachine.d.ts +46 -0
  120. package/dist/p2p/queryForwardingMachine.d.ts.map +1 -0
  121. package/dist/p2p/queryForwardingMachine.js +144 -0
  122. package/dist/p2p/queryForwardingMachine.js.map +1 -0
  123. package/dist/p2p/signaling.d.ts +63 -0
  124. package/dist/p2p/signaling.d.ts.map +1 -0
  125. package/dist/p2p/signaling.js +165 -0
  126. package/dist/p2p/signaling.js.map +1 -0
  127. package/dist/p2p/webrtcController.d.ts +152 -0
  128. package/dist/p2p/webrtcController.d.ts.map +1 -0
  129. package/dist/p2p/webrtcController.js +813 -0
  130. package/dist/p2p/webrtcController.js.map +1 -0
  131. package/dist/p2p/webrtcProxy.d.ts +55 -0
  132. package/dist/p2p/webrtcProxy.d.ts.map +1 -0
  133. package/dist/p2p/webrtcProxy.js +386 -0
  134. package/dist/p2p/webrtcProxy.js.map +1 -0
  135. package/dist/privacyGuards.d.ts +14 -0
  136. package/dist/privacyGuards.d.ts.map +1 -0
  137. package/dist/privacyGuards.js +27 -0
  138. package/dist/privacyGuards.js.map +1 -0
  139. package/dist/protocol.d.ts +171 -0
  140. package/dist/protocol.d.ts.map +1 -0
  141. package/dist/protocol.js +2 -0
  142. package/dist/protocol.js.map +1 -0
  143. package/dist/types.d.ts +2 -0
  144. package/dist/types.d.ts.map +1 -0
  145. package/dist/types.js +2 -0
  146. package/dist/types.js.map +1 -0
  147. package/dist/worker.d.ts +2 -0
  148. package/dist/worker.d.ts.map +1 -0
  149. package/dist/worker.js +616 -0
  150. package/dist/worker.js.map +1 -0
  151. package/package.json +64 -0
@@ -0,0 +1,185 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Tree Root Subscription Handler
4
+ *
5
+ * Worker subscribes directly to tree root events (kind 30078 with #l=hashtree).
6
+ * Updates local cache and notifies main thread of changes.
7
+ */
8
+ import { subscribe as ndkSubscribe, unsubscribe as ndkUnsubscribe } from './ndk';
9
+ import { setCachedRoot } from './treeRootCache';
10
+ import { nip19 } from 'nostr-tools';
11
+ // Active subscriptions by pubkey
12
+ const activeSubscriptions = new Map(); // pubkeyHex -> subId
13
+ // Callback to notify main thread
14
+ let notifyCallback = null;
15
+ function parseLegacyContent(event) {
16
+ const content = event.content?.trim();
17
+ if (!content)
18
+ return null;
19
+ try {
20
+ const parsed = JSON.parse(content);
21
+ if (parsed && typeof parsed === 'object') {
22
+ const payload = parsed;
23
+ return {
24
+ hash: typeof payload.hash === 'string' ? payload.hash : undefined,
25
+ key: typeof payload.key === 'string' ? payload.key : undefined,
26
+ visibility: typeof payload.visibility === 'string' ? payload.visibility : undefined,
27
+ encryptedKey: typeof payload.encryptedKey === 'string' ? payload.encryptedKey : undefined,
28
+ keyId: typeof payload.keyId === 'string' ? payload.keyId : undefined,
29
+ selfEncryptedKey: typeof payload.selfEncryptedKey === 'string' ? payload.selfEncryptedKey : undefined,
30
+ selfEncryptedLinkKey: typeof payload.selfEncryptedLinkKey === 'string' ? payload.selfEncryptedLinkKey : undefined,
31
+ };
32
+ }
33
+ }
34
+ catch {
35
+ // Ignore JSON parse errors.
36
+ }
37
+ if (/^[0-9a-fA-F]{64}$/.test(content)) {
38
+ return { hash: content };
39
+ }
40
+ return null;
41
+ }
42
+ export function parseTreeRootEvent(event) {
43
+ const hashTag = event.tags.find(t => t[0] === 'hash')?.[1];
44
+ const legacyContent = hashTag ? null : parseLegacyContent(event);
45
+ const hash = hashTag ?? legacyContent?.hash;
46
+ if (!hash)
47
+ return null;
48
+ const keyTag = event.tags.find(t => t[0] === 'key')?.[1];
49
+ const encryptedKeyTag = event.tags.find(t => t[0] === 'encryptedKey')?.[1];
50
+ const keyIdTag = event.tags.find(t => t[0] === 'keyId')?.[1];
51
+ const selfEncryptedKeyTag = event.tags.find(t => t[0] === 'selfEncryptedKey')?.[1];
52
+ const selfEncryptedLinkKeyTag = event.tags.find(t => t[0] === 'selfEncryptedLinkKey')?.[1];
53
+ const key = keyTag ?? legacyContent?.key;
54
+ const encryptedKey = encryptedKeyTag ?? legacyContent?.encryptedKey;
55
+ const keyId = keyIdTag ?? legacyContent?.keyId;
56
+ const selfEncryptedKey = selfEncryptedKeyTag ?? legacyContent?.selfEncryptedKey;
57
+ const selfEncryptedLinkKey = selfEncryptedLinkKeyTag ?? legacyContent?.selfEncryptedLinkKey;
58
+ let visibility;
59
+ if (encryptedKey) {
60
+ visibility = 'link-visible';
61
+ }
62
+ else if (selfEncryptedKey) {
63
+ visibility = 'private';
64
+ }
65
+ else {
66
+ visibility = legacyContent?.visibility ?? 'public';
67
+ }
68
+ return {
69
+ hash,
70
+ key,
71
+ visibility,
72
+ encryptedKey,
73
+ keyId,
74
+ selfEncryptedKey,
75
+ selfEncryptedLinkKey,
76
+ };
77
+ }
78
+ /**
79
+ * Set callback to notify main thread of tree root updates
80
+ */
81
+ export function setNotifyCallback(callback) {
82
+ notifyCallback = callback;
83
+ }
84
+ /**
85
+ * Subscribe to tree roots for a specific pubkey
86
+ */
87
+ export function subscribeToTreeRoots(pubkeyHex) {
88
+ // Already subscribed?
89
+ if (activeSubscriptions.has(pubkeyHex)) {
90
+ return () => unsubscribeFromTreeRoots(pubkeyHex);
91
+ }
92
+ const subId = `tree-${pubkeyHex.slice(0, 8)}`;
93
+ activeSubscriptions.set(pubkeyHex, subId);
94
+ ndkSubscribe(subId, [{
95
+ kinds: [30078],
96
+ authors: [pubkeyHex],
97
+ }]);
98
+ return () => unsubscribeFromTreeRoots(pubkeyHex);
99
+ }
100
+ /**
101
+ * Unsubscribe from tree roots for a specific pubkey
102
+ */
103
+ export function unsubscribeFromTreeRoots(pubkeyHex) {
104
+ const subId = activeSubscriptions.get(pubkeyHex);
105
+ if (subId) {
106
+ ndkUnsubscribe(subId);
107
+ activeSubscriptions.delete(pubkeyHex);
108
+ }
109
+ }
110
+ /**
111
+ * Handle incoming tree root event (kind 30078 with #l=hashtree)
112
+ * Called from worker.ts event router
113
+ */
114
+ function hasLabel(event, label) {
115
+ return event.tags.some(tag => tag[0] === 'l' && tag[1] === label);
116
+ }
117
+ function hasAnyLabel(event) {
118
+ return event.tags.some(tag => tag[0] === 'l');
119
+ }
120
+ export async function handleTreeRootEvent(event) {
121
+ // Extract tree name from #d tag
122
+ const dTag = event.tags.find(t => t[0] === 'd');
123
+ if (!dTag || !dTag[1])
124
+ return;
125
+ const treeName = dTag[1];
126
+ // Accept unlabeled legacy events, ignore other labeled apps.
127
+ if (hasAnyLabel(event) && !hasLabel(event, 'hashtree'))
128
+ return;
129
+ const parsed = parseTreeRootEvent(event);
130
+ if (!parsed)
131
+ return;
132
+ // Convert pubkey to npub
133
+ const npub = nip19.npubEncode(event.pubkey);
134
+ // Parse hash and optional key
135
+ const hash = hexToBytes(parsed.hash);
136
+ const key = parsed.key ? hexToBytes(parsed.key) : undefined;
137
+ const visibility = parsed.visibility || 'public';
138
+ // Build record
139
+ const record = {
140
+ hash,
141
+ key,
142
+ visibility,
143
+ updatedAt: event.created_at,
144
+ encryptedKey: parsed.encryptedKey,
145
+ keyId: parsed.keyId,
146
+ selfEncryptedKey: parsed.selfEncryptedKey,
147
+ selfEncryptedLinkKey: parsed.selfEncryptedLinkKey,
148
+ };
149
+ // Update cache
150
+ await setCachedRoot(npub, treeName, { hash, key }, visibility, {
151
+ encryptedKey: parsed.encryptedKey,
152
+ keyId: parsed.keyId,
153
+ selfEncryptedKey: parsed.selfEncryptedKey,
154
+ selfEncryptedLinkKey: parsed.selfEncryptedLinkKey,
155
+ });
156
+ // Notify main thread
157
+ if (notifyCallback) {
158
+ notifyCallback(npub, treeName, record);
159
+ }
160
+ }
161
+ /**
162
+ * Check if an event is a tree root event
163
+ */
164
+ export function isTreeRootEvent(event) {
165
+ if (event.kind !== 30078)
166
+ return false;
167
+ if (hasLabel(event, 'hashtree'))
168
+ return true;
169
+ return !hasAnyLabel(event);
170
+ }
171
+ /**
172
+ * Get all active subscription pubkeys
173
+ */
174
+ export function getActiveSubscriptions() {
175
+ return Array.from(activeSubscriptions.keys());
176
+ }
177
+ // Helper: hex string to Uint8Array
178
+ function hexToBytes(hex) {
179
+ const bytes = new Uint8Array(hex.length / 2);
180
+ for (let i = 0; i < bytes.length; i++) {
181
+ bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
182
+ }
183
+ return bytes;
184
+ }
185
+ //# sourceMappingURL=treeRootSubscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeRootSubscription.js","sourceRoot":"","sources":["../../src/iris/treeRootSubscription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ export declare const DEFAULT_BOOTSTRAP_PUBKEY: string;
2
+ export declare const DEFAULT_VIDEO_FEED_PUBKEYS: string[];
3
+ export declare const KIND_METADATA = 0;
4
+ export declare const KIND_TEXT_NOTE = 1;
5
+ export declare const KIND_CONTACTS = 3;
6
+ export declare const KIND_REPOST = 6;
7
+ export declare const KIND_REACTION = 7;
8
+ export declare const KIND_EPHEMERAL = 20000;
9
+ export declare const KIND_CHAT_MESSAGE = 14;
10
+ export declare const KIND_CHANNEL_CREATE = 40;
11
+ export declare const KIND_CHANNEL_MESSAGE = 42;
12
+ export declare const KIND_ZAP_RECEIPT = 9735;
13
+ export declare const KIND_MUTE_LIST = 10000;
14
+ export declare const KIND_FLAG_LIST = 16463;
15
+ export declare const KIND_APP_DATA = 30078;
16
+ export declare const KIND_LONG_FORM_CONTENT = 30023;
17
+ export declare const KIND_HTTP_AUTH = 27235;
18
+ export declare const KIND_BLOSSOM_AUTH = 24242;
19
+ export declare const KIND_DEBUG_DATA = 30000;
20
+ export declare const KIND_CLASSIFIED = 30402;
21
+ export declare const KIND_HIGHLIGHT = 9802;
22
+ export declare const KIND_PICTURE_FIRST = 20;
23
+ export declare const KIND_WALLET_CONNECT = 6927;
24
+ export declare const KIND_REPO_ANNOUNCEMENT = 30617;
25
+ export declare const KIND_REPO_STATE = 30618;
26
+ export declare const KIND_PATCH = 1617;
27
+ export declare const KIND_PULL_REQUEST = 1618;
28
+ export declare const KIND_PR_UPDATE = 1619;
29
+ export declare const KIND_ISSUE = 1621;
30
+ export declare const KIND_STATUS_OPEN = 1630;
31
+ export declare const KIND_STATUS_APPLIED = 1631;
32
+ export declare const KIND_STATUS_CLOSED = 1632;
33
+ export declare const KIND_STATUS_DRAFT = 1633;
34
+ export declare const DEBUG_NAMESPACES: {
35
+ readonly NDK_RELAY: "ndk:relay";
36
+ readonly NDK_RELAY_CONN: "ndk:relay:conn";
37
+ readonly NDK_RELAY_ERROR: "ndk:relay:error";
38
+ readonly NDK_RELAY_WARN: "ndk:relay:warn";
39
+ readonly NDK_SUBSCRIPTION: "ndk:subscription";
40
+ readonly NDK_SUBSCRIPTION_ERROR: "ndk:subscription:error";
41
+ readonly NDK_SUBSCRIPTION_WARN: "ndk:subscription:warn";
42
+ readonly NDK_CACHE: "ndk:cache";
43
+ readonly NDK_CACHE_ERROR: "ndk:cache:error";
44
+ readonly NDK_CACHE_WARN: "ndk:cache:warn";
45
+ readonly NDK_POOL: "ndk:pool";
46
+ readonly NDK_POOL_ERROR: "ndk:pool:error";
47
+ readonly NDK_POOL_WARN: "ndk:pool:warn";
48
+ readonly NDK_WORKER: "ndk:worker";
49
+ readonly NDK_WORKER_ERROR: "ndk:worker:error";
50
+ readonly NDK_WORKER_WARN: "ndk:worker:warn";
51
+ readonly NDK_TRANSPORT: "ndk:transport";
52
+ readonly WEBRTC_PEER: "webrtc:peer";
53
+ readonly WEBRTC_PEER_LIFECYCLE: "webrtc:peer:lifecycle";
54
+ readonly WEBRTC_PEER_MESSAGES: "webrtc:peer:messages";
55
+ readonly WEBRTC_PEER_DATA: "webrtc:peer:data";
56
+ readonly WEBRTC_SIGNALING: "webrtc:signaling";
57
+ readonly CASHU_WALLET: "cashu:wallet";
58
+ readonly CASHU_WALLET_ERROR: "cashu:wallet:error";
59
+ readonly CASHU_WALLET_WARN: "cashu:wallet:warn";
60
+ readonly CASHU_MINT: "cashu:mint";
61
+ readonly CASHU_MINT_ERROR: "cashu:mint:error";
62
+ readonly CASHU_MINT_WARN: "cashu:mint:warn";
63
+ readonly UI_FEED: "ui:feed";
64
+ readonly UI_FEED_ERROR: "ui:feed:error";
65
+ readonly UI_FEED_WARN: "ui:feed:warn";
66
+ readonly UI_CHAT: "ui:chat";
67
+ readonly UI_CHAT_ERROR: "ui:chat:error";
68
+ readonly UI_CHAT_WARN: "ui:chat:warn";
69
+ readonly HOOKS: "hooks";
70
+ readonly HOOKS_ERROR: "hooks:error";
71
+ readonly HOOKS_WARN: "hooks:warn";
72
+ readonly UTILS: "utils";
73
+ readonly UTILS_ERROR: "utils:error";
74
+ readonly UTILS_WARN: "utils:warn";
75
+ };
76
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/iris/utils/constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,wBAAwB,QAGmC,CAAC;AAGzE,eAAO,MAAM,0BAA0B,UAEtC,CAAC;AAGF,eAAO,MAAM,aAAa,IAAI,CAAA;AAC9B,eAAO,MAAM,cAAc,IAAI,CAAA;AAC/B,eAAO,MAAM,aAAa,IAAI,CAAA;AAG9B,eAAO,MAAM,WAAW,IAAI,CAAA;AAG5B,eAAO,MAAM,aAAa,IAAI,CAAA;AAG9B,eAAO,MAAM,cAAc,QAAQ,CAAA;AAGnC,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAGnC,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAGtC,eAAO,MAAM,gBAAgB,OAAO,CAAA;AAGpC,eAAO,MAAM,cAAc,QAAQ,CAAA;AACnC,eAAO,MAAM,cAAc,QAAQ,CAAA;AAGnC,eAAO,MAAM,aAAa,QAAQ,CAAA;AAGlC,eAAO,MAAM,sBAAsB,QAAQ,CAAA;AAG3C,eAAO,MAAM,cAAc,QAAQ,CAAA;AAGnC,eAAO,MAAM,iBAAiB,QAAQ,CAAA;AAGtC,eAAO,MAAM,eAAe,QAAQ,CAAA;AAGpC,eAAO,MAAM,eAAe,QAAQ,CAAA;AAGpC,eAAO,MAAM,cAAc,OAAO,CAAA;AAGlC,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAGpC,eAAO,MAAM,mBAAmB,OAAO,CAAA;AAGvC,eAAO,MAAM,sBAAsB,QAAQ,CAAA;AAC3C,eAAO,MAAM,eAAe,QAAQ,CAAA;AACpC,eAAO,MAAM,UAAU,OAAO,CAAA;AAC9B,eAAO,MAAM,iBAAiB,OAAO,CAAA;AACrC,eAAO,MAAM,cAAc,OAAO,CAAA;AAClC,eAAO,MAAM,UAAU,OAAO,CAAA;AAE9B,eAAO,MAAM,gBAAgB,OAAO,CAAA;AACpC,eAAO,MAAM,mBAAmB,OAAO,CAAA;AACvC,eAAO,MAAM,kBAAkB,OAAO,CAAA;AACtC,eAAO,MAAM,iBAAiB,OAAO,CAAA;AAGrC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDnB,CAAA"}
@@ -0,0 +1,113 @@
1
+ // @ts-nocheck
2
+ // Nostr Event Kinds Constants
3
+ // Based on NIPs (Nostr Implementation Possibilities)
4
+ // Only includes constants that are actually used in the codebase
5
+ const TEST_BOOTSTRAP_PUBKEY = import.meta.env.VITE_TEST_BOOTSTRAP_PUBKEY;
6
+ // Default content/social graph bootstrap pubkey (sirius)
7
+ export const DEFAULT_BOOTSTRAP_PUBKEY = import.meta.env.VITE_TEST_MODE && TEST_BOOTSTRAP_PUBKEY
8
+ ? TEST_BOOTSTRAP_PUBKEY
9
+ : '4523be58d395b1b196a9b8c82b038b6895cb02b683d0c253a955068dba1facd0';
10
+ // Seed pubkeys to populate the video feed when follows are empty.
11
+ export const DEFAULT_VIDEO_FEED_PUBKEYS = [
12
+ 'feb535ca427f7ab7551adfc5fcc39132b10cbc11ce5841f05588680e94f4e71a',
13
+ ];
14
+ // NIP-01: Basic protocol
15
+ export const KIND_METADATA = 0; // User profile metadata
16
+ export const KIND_TEXT_NOTE = 1; // Text note
17
+ export const KIND_CONTACTS = 3; // Contact list (follows)
18
+ // NIP-18: Reposts
19
+ export const KIND_REPOST = 6;
20
+ // NIP-25: Reactions
21
+ export const KIND_REACTION = 7;
22
+ // NIP-16: Event Treatment
23
+ export const KIND_EPHEMERAL = 20000; // Ephemeral events
24
+ // NIP-04: Encrypted Direct Messages
25
+ export const KIND_CHAT_MESSAGE = 14; // Encrypted direct message (double-ratchet)
26
+ // NIP-28: Public chat
27
+ export const KIND_CHANNEL_CREATE = 40; // Channel creation
28
+ export const KIND_CHANNEL_MESSAGE = 42; // Channel message
29
+ // NIP-57: Lightning zaps
30
+ export const KIND_ZAP_RECEIPT = 9735;
31
+ // NIP-51: Lists
32
+ export const KIND_MUTE_LIST = 10000; // Mute list (deprecated, use 30000)
33
+ export const KIND_FLAG_LIST = 16463; // Flagged/reported users list
34
+ // NIP-78: App-specific data
35
+ export const KIND_APP_DATA = 30078;
36
+ // Long-form content
37
+ export const KIND_LONG_FORM_CONTENT = 30023;
38
+ // HTTP authentication
39
+ export const KIND_HTTP_AUTH = 27235;
40
+ // Blossom authorization
41
+ export const KIND_BLOSSOM_AUTH = 24242;
42
+ // Debug/development
43
+ export const KIND_DEBUG_DATA = 30000; // Used for encrypted debug key-value storage
44
+ // Classified listings
45
+ export const KIND_CLASSIFIED = 30402;
46
+ // Highlights
47
+ export const KIND_HIGHLIGHT = 9802;
48
+ // NIP-68: Picture-first feeds
49
+ export const KIND_PICTURE_FIRST = 20;
50
+ // Additional kinds found in codebase
51
+ export const KIND_WALLET_CONNECT = 6927;
52
+ // NIP-34: Git Repositories
53
+ export const KIND_REPO_ANNOUNCEMENT = 30617; // Repository announcement
54
+ export const KIND_REPO_STATE = 30618; // Repository state (branch/tag tracking)
55
+ export const KIND_PATCH = 1617; // Patch (code changes under 60kb)
56
+ export const KIND_PULL_REQUEST = 1618; // Pull request
57
+ export const KIND_PR_UPDATE = 1619; // PR update (revision)
58
+ export const KIND_ISSUE = 1621; // Issue (bug report, feature request)
59
+ // Status events (1630-1633)
60
+ export const KIND_STATUS_OPEN = 1630; // Open/default
61
+ export const KIND_STATUS_APPLIED = 1631; // Applied/Merged/Resolved
62
+ export const KIND_STATUS_CLOSED = 1632; // Closed
63
+ export const KIND_STATUS_DRAFT = 1633; // Draft
64
+ // Debug namespaces for debug pkg
65
+ export const DEBUG_NAMESPACES = {
66
+ // NDK
67
+ NDK_RELAY: "ndk:relay",
68
+ NDK_RELAY_CONN: "ndk:relay:conn",
69
+ NDK_RELAY_ERROR: "ndk:relay:error",
70
+ NDK_RELAY_WARN: "ndk:relay:warn",
71
+ NDK_SUBSCRIPTION: "ndk:subscription",
72
+ NDK_SUBSCRIPTION_ERROR: "ndk:subscription:error",
73
+ NDK_SUBSCRIPTION_WARN: "ndk:subscription:warn",
74
+ NDK_CACHE: "ndk:cache",
75
+ NDK_CACHE_ERROR: "ndk:cache:error",
76
+ NDK_CACHE_WARN: "ndk:cache:warn",
77
+ NDK_POOL: "ndk:pool",
78
+ NDK_POOL_ERROR: "ndk:pool:error",
79
+ NDK_POOL_WARN: "ndk:pool:warn",
80
+ NDK_WORKER: "ndk:worker",
81
+ NDK_WORKER_ERROR: "ndk:worker:error",
82
+ NDK_WORKER_WARN: "ndk:worker:warn",
83
+ NDK_TRANSPORT: "ndk:transport",
84
+ // WebRTC
85
+ WEBRTC_PEER: "webrtc:peer",
86
+ WEBRTC_PEER_LIFECYCLE: "webrtc:peer:lifecycle", // connect/disconnect/state changes
87
+ WEBRTC_PEER_MESSAGES: "webrtc:peer:messages", // offer/answer/ICE candidates
88
+ WEBRTC_PEER_DATA: "webrtc:peer:data", // data channel events
89
+ WEBRTC_SIGNALING: "webrtc:signaling",
90
+ // Cashu
91
+ CASHU_WALLET: "cashu:wallet",
92
+ CASHU_WALLET_ERROR: "cashu:wallet:error",
93
+ CASHU_WALLET_WARN: "cashu:wallet:warn",
94
+ CASHU_MINT: "cashu:mint",
95
+ CASHU_MINT_ERROR: "cashu:mint:error",
96
+ CASHU_MINT_WARN: "cashu:mint:warn",
97
+ // UI
98
+ UI_FEED: "ui:feed",
99
+ UI_FEED_ERROR: "ui:feed:error",
100
+ UI_FEED_WARN: "ui:feed:warn",
101
+ UI_CHAT: "ui:chat",
102
+ UI_CHAT_ERROR: "ui:chat:error",
103
+ UI_CHAT_WARN: "ui:chat:warn",
104
+ // Hooks
105
+ HOOKS: "hooks",
106
+ HOOKS_ERROR: "hooks:error",
107
+ HOOKS_WARN: "hooks:warn",
108
+ // Utils
109
+ UTILS: "utils",
110
+ UTILS_ERROR: "utils:error",
111
+ UTILS_WARN: "utils:warn",
112
+ };
113
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/iris/utils/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Extract error message from unknown error type
3
+ */
4
+ export declare function getErrorMessage(err: unknown): string;
5
+ //# sourceMappingURL=errorMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorMessage.d.ts","sourceRoot":"","sources":["../../../src/iris/utils/errorMessage.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,8 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Extract error message from unknown error type
4
+ */
5
+ export function getErrorMessage(err) {
6
+ return err instanceof Error ? err.message : String(err);
7
+ }
8
+ //# sourceMappingURL=errorMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorMessage.js","sourceRoot":"","sources":["../../../src/iris/utils/errorMessage.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Simple LRU Cache implementation
3
+ */
4
+ export declare class LRUCache<K, V> {
5
+ private cache;
6
+ private maxSize;
7
+ constructor(maxSize?: number);
8
+ get(key: K): V | undefined;
9
+ set(key: K, value: V): void;
10
+ has(key: K): boolean;
11
+ delete(key: K): boolean;
12
+ clear(): void;
13
+ get size(): number;
14
+ keys(): IterableIterator<K>;
15
+ values(): IterableIterator<V>;
16
+ /**
17
+ * Iterate over all entries (note: does not update LRU order)
18
+ */
19
+ entries(): IterableIterator<[K, V]>;
20
+ forEach(callback: (value: V, key: K) => void): void;
21
+ /**
22
+ * Make the cache iterable
23
+ */
24
+ [Symbol.iterator](): IterableIterator<[K, V]>;
25
+ }
26
+ //# sourceMappingURL=lruCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lruCache.d.ts","sourceRoot":"","sources":["../../../src/iris/utils/lruCache.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAY;IAIjC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAU1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAe3B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAI3B,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAI7B;;OAEG;IACF,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAIpC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAInD;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAG9C"}
@@ -0,0 +1,66 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Simple LRU Cache implementation
4
+ */
5
+ export class LRUCache {
6
+ cache = new Map();
7
+ maxSize;
8
+ constructor(maxSize = 100) {
9
+ this.maxSize = maxSize;
10
+ }
11
+ get(key) {
12
+ const value = this.cache.get(key);
13
+ if (value !== undefined) {
14
+ // Move to end (most recently used)
15
+ this.cache.delete(key);
16
+ this.cache.set(key, value);
17
+ }
18
+ return value;
19
+ }
20
+ set(key, value) {
21
+ // Delete first to reset position if exists
22
+ this.cache.delete(key);
23
+ // Evict oldest if at capacity
24
+ if (this.cache.size >= this.maxSize) {
25
+ const oldest = this.cache.keys().next().value;
26
+ if (oldest !== undefined) {
27
+ this.cache.delete(oldest);
28
+ }
29
+ }
30
+ this.cache.set(key, value);
31
+ }
32
+ has(key) {
33
+ return this.cache.has(key);
34
+ }
35
+ delete(key) {
36
+ return this.cache.delete(key);
37
+ }
38
+ clear() {
39
+ this.cache.clear();
40
+ }
41
+ get size() {
42
+ return this.cache.size;
43
+ }
44
+ keys() {
45
+ return this.cache.keys();
46
+ }
47
+ values() {
48
+ return this.cache.values();
49
+ }
50
+ /**
51
+ * Iterate over all entries (note: does not update LRU order)
52
+ */
53
+ *entries() {
54
+ yield* this.cache.entries();
55
+ }
56
+ forEach(callback) {
57
+ this.cache.forEach(callback);
58
+ }
59
+ /**
60
+ * Make the cache iterable
61
+ */
62
+ [Symbol.iterator]() {
63
+ return this.entries();
64
+ }
65
+ }
66
+ //# sourceMappingURL=lruCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lruCache.js","sourceRoot":"","sources":["../../../src/iris/utils/lruCache.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;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;;OAEG;IACH,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;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { WebRTCController, type WebRTCControllerConfig, } from '../p2p/index.js';
2
+ //# sourceMappingURL=webrtc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../../src/iris/webrtc.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // @ts-nocheck
2
+ export { WebRTCController, } from '../p2p/index.js';
3
+ //# sourceMappingURL=webrtc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtc.js","sourceRoot":"","sources":["../../src/iris/webrtc.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EACL,gBAAgB,GAEjB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * WebRTC Signaling Handler for Hashtree Worker
3
+ *
4
+ * Handles WebRTC signaling via Nostr (kind 25050).
5
+ * - Hello messages: broadcast with #l tag for peer discovery
6
+ * - Directed messages (offer/answer/candidates): gift-wrapped for privacy
7
+ */
8
+ import type { SignedEvent } from './protocol';
9
+ import type { SignalingMessage } from '@hashtree/nostr';
10
+ import type { WebRTCController } from './webrtc';
11
+ /**
12
+ * Initialize the WebRTC signaling handler
13
+ */
14
+ export declare function initWebRTCSignaling(controller: WebRTCController): void;
15
+ /**
16
+ * Send WebRTC signaling message via Nostr (kind 25050)
17
+ * - Hello messages: broadcast with #l tag
18
+ * - Directed messages (offer/answer/candidates): gift-wrapped
19
+ */
20
+ export declare function sendWebRTCSignaling(msg: SignalingMessage, recipientPubkey?: string): Promise<void>;
21
+ /**
22
+ * Subscribe to WebRTC signaling events.
23
+ * NOTE: The caller must set up the event handler via setOnEvent
24
+ * and route webrtc-* subscriptions to handleWebRTCSignalingEvent.
25
+ */
26
+ export declare function setupWebRTCSignalingSubscription(myPubkey: string): void;
27
+ /**
28
+ * Re-subscribe to WebRTC signaling after relay change.
29
+ * Call this after setRelays to ensure subscriptions work on new relays.
30
+ */
31
+ export declare function resubscribeWebRTCSignaling(): void;
32
+ /**
33
+ * Handle incoming WebRTC signaling event.
34
+ * Call this from the unified NostrManager event handler for webrtc-* subscriptions.
35
+ */
36
+ export declare function handleWebRTCSignalingEvent(event: SignedEvent): Promise<void>;
37
+ //# sourceMappingURL=webrtcSignaling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtcSignaling.d.ts","sourceRoot":"","sources":["../../src/iris/webrtcSignaling.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAYjD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAEtE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,gBAAgB,EACrB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAevE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAQjD;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAelF"}