@hashtree/nostr 0.1.14 → 0.2.6

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 (69) hide show
  1. package/README.md +106 -176
  2. package/dist/eventCollection.d.ts +1 -1
  3. package/dist/eventCollection.d.ts.map +1 -1
  4. package/dist/eventCollection.js +2 -7
  5. package/dist/eventCollection.js.map +1 -1
  6. package/dist/eventKeys.d.ts +1 -0
  7. package/dist/eventKeys.d.ts.map +1 -1
  8. package/dist/eventKeys.js +7 -1
  9. package/dist/eventKeys.js.map +1 -1
  10. package/dist/events.d.ts +4 -0
  11. package/dist/events.d.ts.map +1 -1
  12. package/dist/events.js +76 -70
  13. package/dist/events.js.map +1 -1
  14. package/dist/index.d.ts +4 -3
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +10 -6
  17. package/dist/index.js.map +1 -1
  18. package/dist/resolver/nostr.d.ts.map +1 -1
  19. package/dist/resolver/nostr.js +37 -25
  20. package/dist/resolver/nostr.js.map +1 -1
  21. package/dist/snapshot.d.ts +5 -0
  22. package/dist/snapshot.d.ts.map +1 -1
  23. package/dist/snapshot.js +11 -3
  24. package/dist/snapshot.js.map +1 -1
  25. package/dist/treeEventSnapshotPermalinks.js +2 -2
  26. package/dist/treeEventSnapshotPermalinks.js.map +1 -1
  27. package/dist/treeEventSnapshots.d.ts.map +1 -1
  28. package/dist/treeEventSnapshots.js +11 -12
  29. package/dist/treeEventSnapshots.js.map +1 -1
  30. package/package.json +18 -14
  31. package/src/eventCollection.ts +189 -0
  32. package/src/eventKeys.ts +155 -0
  33. package/src/eventValidation.ts +71 -0
  34. package/src/events.ts +929 -0
  35. package/src/index.ts +122 -0
  36. package/src/replaceablePublish.ts +204 -0
  37. package/src/resolver/index.ts +14 -0
  38. package/src/resolver/nostr.ts +1212 -0
  39. package/src/snapshot.ts +214 -0
  40. package/src/treeEventSnapshotPermalinks.ts +150 -0
  41. package/src/treeEventSnapshots.ts +283 -0
  42. package/dist/webrtc/index.d.ts +0 -6
  43. package/dist/webrtc/index.d.ts.map +0 -1
  44. package/dist/webrtc/index.js +0 -7
  45. package/dist/webrtc/index.js.map +0 -1
  46. package/dist/webrtc/lruCache.d.ts +0 -20
  47. package/dist/webrtc/lruCache.d.ts.map +0 -1
  48. package/dist/webrtc/lruCache.js +0 -59
  49. package/dist/webrtc/lruCache.js.map +0 -1
  50. package/dist/webrtc/peer.d.ts +0 -133
  51. package/dist/webrtc/peer.d.ts.map +0 -1
  52. package/dist/webrtc/peer.js +0 -617
  53. package/dist/webrtc/peer.js.map +0 -1
  54. package/dist/webrtc/peerSelector.d.ts +0 -2
  55. package/dist/webrtc/peerSelector.d.ts.map +0 -1
  56. package/dist/webrtc/peerSelector.js +0 -2
  57. package/dist/webrtc/peerSelector.js.map +0 -1
  58. package/dist/webrtc/protocol.d.ts +0 -3
  59. package/dist/webrtc/protocol.d.ts.map +0 -1
  60. package/dist/webrtc/protocol.js +0 -2
  61. package/dist/webrtc/protocol.js.map +0 -1
  62. package/dist/webrtc/store.d.ts +0 -217
  63. package/dist/webrtc/store.d.ts.map +0 -1
  64. package/dist/webrtc/store.js +0 -1320
  65. package/dist/webrtc/store.js.map +0 -1
  66. package/dist/webrtc/types.d.ts +0 -101
  67. package/dist/webrtc/types.d.ts.map +0 -1
  68. package/dist/webrtc/types.js +0 -5
  69. package/dist/webrtc/types.js.map +0 -1
package/README.md CHANGED
@@ -1,206 +1,136 @@
1
1
  # @hashtree/nostr
2
2
 
3
- WebRTC P2P storage and Nostr ref resolver for hashtree.
4
-
5
- For app-builder guidance and common pitfalls, see [../../GETTING_STARTED.md](../../GETTING_STARTED.md).
6
-
7
- ## Install
3
+ Publish and follow mutable roots, store indexed Nostr events, and capture signed
4
+ root snapshots. Blob storage/transport is separate; Nostr carries the pointer.
8
5
 
9
6
  ```bash
10
- npm install @hashtree/nostr
11
- ```
12
-
13
- ## Nostr Event Collections
14
-
15
- Use `NostrEventStore` when your app wants a hashtree-native Nostr event collection instead of inventing its own query API.
16
-
17
- ```typescript
18
- import { MemoryStore } from '@hashtree/core';
19
- import { NostrEventStore } from '@hashtree/nostr';
20
-
21
- const store = new MemoryStore();
22
- const events = new NostrEventStore(store);
23
-
24
- const profileNotes = await events.query(rootCid, {
25
- authors: pubkey,
26
- kinds: [1],
27
- }, { limit: 50 });
28
-
29
- for await (const event of events.streamQuery(rootCid, {
30
- authors: pubkey,
31
- tags: { t: 'hashtree' },
32
- })) {
33
- console.log(event.id, event.content);
34
- }
7
+ npm install @hashtree/core @hashtree/nostr nostr-tools
35
8
  ```
36
9
 
37
- `query()` and `streamQuery()` choose the best published index they can (`by-author`, `by-author-kind`, `by-kind`, `by-tag`, or recent) so app code does not need to hand-roll index selection.
10
+ [Quickstart](https://github.com/mmalmi/hashtree/blob/master/ts/GETTING_STARTED.md) · [API reference](https://github.com/mmalmi/hashtree/blob/master/ts/API.md)
38
11
 
39
- ## WebRTC Store
12
+ ## Publish and follow a root
40
13
 
41
- P2P data fetching via WebRTC with Nostr signaling:
14
+ This integration function uses `nostr-tools`' `SimplePool`. Supply your relay
15
+ URLs, tree name, signer's hex pubkey, signing callback, an already-uploaded root,
16
+ and a UI update callback. The signer may be a wallet; NDK is optional.
42
17
 
43
18
  ```typescript
44
- import { WebRTCStore } from '@hashtree/nostr';
45
-
46
- const store = new WebRTCStore({
47
- signer, // NIP-07 compatible
48
- pubkey,
49
- encrypt, // NIP-44
50
- decrypt,
51
- localStore,
52
- relays: ['wss://relay.example.com'],
53
- requestSelectionStrategy: 'weighted',
54
- requestFairnessEnabled: true,
55
- requestDispatch: {
56
- initialFanout: 2,
57
- hedgeFanout: 1,
58
- maxFanout: 8,
59
- hedgeIntervalMs: 120,
60
- },
61
- });
62
-
63
- await store.start();
64
- await store.loadPeerMetadata(); // optional warm start
65
- const data = await store.get(hash);
66
- await store.persistPeerMetadata(); // optional shutdown/save step
67
- ```
68
-
69
- ## Nostr Ref Resolver
70
-
71
- Resolve `npub/treename` references to merkle root hashes via Nostr events.
72
-
73
- ### Event Format
74
-
75
- Trees are published as **kind 30078** (parameterized replaceable with label):
76
-
77
- ```
78
- npub1abc.../treename/path/to/file.ext
79
- │ │ │
80
- │ │ └── Path within merkle tree (client-side traversal)
81
- │ └── d-tag value (tree identifier)
82
- └── Author pubkey (bech32 → hex for event)
19
+ import { type CID } from '@hashtree/core';
20
+ import { createNostrRefResolver } from '@hashtree/nostr';
21
+ import { SimplePool, nip19, type Event, type EventTemplate } from 'nostr-tools';
22
+
23
+ export async function publishAndFollowRoot(
24
+ relays: string[],
25
+ treeName: string,
26
+ pubkey: string,
27
+ signEvent: (template: EventTemplate) => Promise<Event>,
28
+ root: CID,
29
+ onRoot: (root: CID | null) => void,
30
+ ): Promise<() => void> {
31
+ const pool = new SimplePool({ enableReconnect: true });
32
+ const resolver = createNostrRefResolver({
33
+ nip19,
34
+ getPubkey: () => pubkey,
35
+ subscribe: (filter, onEvent) => {
36
+ const subscription = pool.subscribeMany(relays, { ...filter }, { onevent: onEvent });
37
+ return () => subscription.close();
38
+ },
39
+ publish: async (template) => {
40
+ const signed = await signEvent({
41
+ ...template,
42
+ created_at: template.created_at ?? Math.floor(Date.now() / 1000),
43
+ });
44
+ await Promise.any(pool.publish(relays, signed)); // At least one relay accepted it.
45
+ return true;
46
+ },
47
+ });
48
+ const key = `${nip19.npubEncode(pubkey)}/${treeName}`;
49
+ const unsubscribe = resolver.subscribe(key, onRoot);
50
+ const close = () => { unsubscribe(); resolver.stop?.(); pool.destroy(); };
51
+ try {
52
+ const result = await resolver.publish!(key, root, { visibility: 'public' });
53
+ if (!result.success) throw new Error('Root publication failed');
54
+ return close; // Call when the view/app no longer follows this tree.
55
+ } catch (error) {
56
+ close();
57
+ throw error;
58
+ }
59
+ }
83
60
  ```
84
61
 
85
- **Tags:**
86
- | Tag | Purpose |
87
- |-----|---------|
88
- | `d` | Tree name (replaceable event key) |
89
- | `l` | `"hashtree"` label for discovery |
90
- | `hash` | Merkle root SHA256 (64 hex chars) |
91
- | `key` | Decryption key (public trees) |
92
- | `encryptedKey` | XOR'd key (link-visible trees) |
93
- | `selfEncryptedKey` | NIP-44 encrypted (private/link-visible) |
62
+ For a read-only view, create the same resolver and call `subscribe()` with the
63
+ publisher's `npub/treeName`; omit the publish call. `getPubkey` may return `null`
64
+ and `publish` may be `async () => false` when your adapter cannot write. Keep
65
+ subscriptions open after EOSE and during quiet periods; absence of an event is
66
+ not a missing tree. Handle fetch failures in async UI callbacks yourself.
67
+ `resolve(key)` is a one-shot lookup that can wait indefinitely; use a subscription
68
+ with explicit cleanup for cancellable/live views.
94
69
 
95
- **Visibility:**
96
- - **Public**: plaintext `key` tag
97
- - **Link-visible**: `encryptedKey` + link key in share URL
98
- - **Private**: only `selfEncryptedKey` (owner access)
70
+ Upload **all blocks first**, then publish the root. The resolver updates its local
71
+ cache optimistically; an `onRoot` callback is not proof of relay acceptance.
72
+ Catch rejected signing/publishing requests and check `result.success`.
73
+ Relay acceptance is also not evidence that the root's blobs are available.
99
74
 
100
- ### Usage
75
+ ## Names and visibility
101
76
 
102
- ```typescript
103
- import { createNostrRefResolver } from '@hashtree/nostr';
77
+ The resolver key is `npub/treeName`; everything after the first slash belongs to
78
+ the tree name. To read a file, first resolve that exact root name and then call
79
+ `HashTree.resolvePath(root, 'path/to/file')` with the separate file path.
104
80
 
105
- const resolver = createNostrRefResolver({
106
- subscribe: (filters, onEvent) => { /* your relay client subscribe callback */ },
107
- publish: (event) => { /* your relay client publish callback */ },
108
- });
81
+ New roots use kind **30064**, tags `d` (tree name), `l=hashtree`, and `hash`.
82
+ Readers also accept legacy kind **30078**. Visibility controls key disclosure:
109
83
 
110
- const root = await resolver.resolve('npub1.../myfiles');
111
- ```
84
+ | Visibility | Key handling |
85
+ | --- | --- |
86
+ | `public` (default) | Publishes the content key in a `key` tag; anyone can decrypt retrieved blocks |
87
+ | `link-visible` | Publishes `encryptedKey` / `keyId`; keep the returned `result.linkKey` in the secret share URL |
88
+ | `private` | Requires `visibility.encrypt` / `decrypt` callbacks for NIP-44 self-encryption |
112
89
 
113
- The resolver does not require NDK. Any raw relay client is fine as long as it can subscribe and publish signed events.
90
+ For link-visible readers, supply `visibility.getLinkKey`; supply NIP-44 callbacks
91
+ to let the owner recover keys too. Visibility options need an encrypted root
92
+ CID. Changing visibility cannot revoke keys or old roots already shared.
93
+ For direct signed replaceable-event publishing, `createReplaceablePublishQueue()`
94
+ coalesces bursts per coordinate; see its API before building your own queue.
114
95
 
115
- ### Coalescing Replaceable Publishes
96
+ ## Store and query events
116
97
 
117
- When app code signs replaceable events directly, publishing several updates inside one second can leave relays choosing by event id instead of the last UI state. `createReplaceablePublishQueue()` avoids app-side future timestamps by serializing publishes per replaceable coordinate and only sending the latest queued update in a one-second window.
98
+ This standalone example creates a temporary signing identity for local demo data.
99
+ Apps should use their existing signer and validate incoming event signatures.
118
100
 
119
101
  ```typescript
120
- import {
121
- createReplaceablePublishQueue,
122
- replaceableEventCoordinateFromTemplate,
123
- } from '@hashtree/nostr';
124
-
125
- const publishQueue = createReplaceablePublishQueue();
126
-
127
- await publishQueue.publish({
128
- coordinate: replaceableEventCoordinateFromTemplate(pubkey, {
129
- kind: 30078,
130
- tags: [['d', treeName]],
131
- }),
132
- publish: async (createdAt) => {
133
- const signed = await signEvent({
134
- kind: 30078,
135
- created_at: createdAt,
136
- tags: [['d', treeName], ['hash', rootHash]],
137
- content: '',
138
- });
139
- return publishSignedEvent(signed);
140
- },
141
- });
102
+ import { MemoryStore } from '@hashtree/core';
103
+ import { NostrEventStore } from '@hashtree/nostr';
104
+ import { generateSecretKey, finalizeEvent } from 'nostr-tools';
105
+
106
+ const event = finalizeEvent({
107
+ kind: 1, created_at: 1, tags: [['t', 'hashtree']], content: 'Hello from Nostr',
108
+ }, generateSecretKey());
109
+ const events = new NostrEventStore(new MemoryStore());
110
+ const root = await events.add(null, event);
111
+ const found = await events.query(root, { authors: event.pubkey, kinds: [1] }, { limit: 50 });
112
+ console.log(found[0]?.content); // Hello from Nostr
113
+ for await (const note of events.streamQuery(root, { tags: { t: 'hashtree' } })) {
114
+ console.log(note.content); // Hello from Nostr
115
+ }
142
116
  ```
143
117
 
144
- ## Signed Tree Snapshots
145
-
146
- For immutable permalinks, store a copy of the signed kind `30078` root event as a plain hashtree blob. The snapshot gives you one signed root even when relays do not answer, and you can still watch for newer events later.
147
-
148
- For live mutable app data, prefer resolving the current root from relays first. Snapshots are for permalinks, offline reuse, and signed historical captures, not for replacing a live source lookup.
149
-
150
- ```typescript
151
- import {
152
- storeTreeEventSnapshot,
153
- readTreeEventSnapshot,
154
- fetchLatestTreeEventSnapshot,
155
- watchLatestTreeEventSnapshot,
156
- } from '@hashtree/nostr';
157
- import { HashTree } from '@hashtree/core';
158
-
159
- const hashTree = new HashTree({ store });
160
-
161
- const snapshot = await storeTreeEventSnapshot(hashTree, nip19, signedRootEvent);
162
- const sameSnapshot = snapshot
163
- ? await readTreeEventSnapshot(hashTree, nip19, snapshot.snapshotCid)
164
- : null;
165
-
166
- const latest = await fetchLatestTreeEventSnapshot(
167
- { snapshotTarget: hashTree, nip19, fetchEvents },
168
- 'npub1...owner',
169
- 'videos/demo',
170
- );
171
-
172
- const stop = watchLatestTreeEventSnapshot(
173
- { snapshotTarget: hashTree, nip19, fetchEvents, subscribeEvents },
174
- 'npub1...owner',
175
- 'videos/demo',
176
- (nextSnapshot) => {
177
- console.log(nextSnapshot.snapshotNhash, nextSnapshot.rootCid);
178
- },
179
- );
180
-
181
- // later
182
- stop();
183
- ```
118
+ Retain the root returned by `add()` / `build()`. `query()` and `streamQuery()`
119
+ select the available author/kind/tag/time index. Pass `{ strict: true }` to reject
120
+ missing/unreadable selected event blobs instead of skipping them.
184
121
 
185
- The library does not keep a global snapshot cache for you. It provides stateless helpers plus a live watcher; route caching and reuse policy stay with the app. Pass a `HashTree` when you already have one controlling write policy, or a raw `Store` when the default wrapper is enough.
122
+ ## Signed snapshots
186
123
 
187
- Snapshot routes use the signed snapshot blob `nhash` plus a path and optional link key:
124
+ `storeTreeEventSnapshot(tree, nip19, signedRootEvent)` stores an immutable signed
125
+ root event and returns its `snapshotCid`, `snapshotNhash`, and `rootCid` (or `null`
126
+ for an unsuitable event). `readTreeEventSnapshot()` restores it;
127
+ `buildTreeEventSnapshotPermalink({ snapshotNhash, path, linkKey })` makes a route.
128
+ The snapshot does not copy the root's file blocks. Preserve/upload those too.
188
129
 
189
- ```typescript
190
- import {
191
- buildTreeEventSnapshotPermalink,
192
- parseTreeEventSnapshotPermalink,
193
- } from '@hashtree/nostr';
194
-
195
- const href = buildTreeEventSnapshotPermalink({
196
- snapshotNhash: snapshot.snapshotNhash,
197
- path: ['index.html'],
198
- linkKey: 'abcd...optional 64-hex link key',
199
- });
200
- // nhash1.../index.html?snapshot=1&k=...
201
-
202
- const parsed = parseTreeEventSnapshotPermalink(`htree://${href}`);
203
- ```
130
+ Use snapshots for permalinks, history, or offline reuse. For live state, keep a
131
+ root subscription open. `watchLatestTreeEventSnapshot()` combines relay discovery
132
+ with snapshot storage and returns a cleanup function; the app owns cache policy.
133
+ Peer blob fetching uses [FIPS transport](https://github.com/mmalmi/hashtree/blob/master/ts/packages/hashtree-fips-transport/README.md).
204
134
 
205
135
  ## License
206
136
 
@@ -6,7 +6,7 @@ export declare const NOSTR_EVENT_ITEM_FORMAT = "nostr/event@1";
6
6
  export declare const NOSTR_EVENT_PROJECTION_FORMAT = "hashtree/nostr-event-index@1";
7
7
  export { COLLECTION_MANIFEST_METADATA_FILE };
8
8
  export declare function createNostrEventCollectionDefinition(sourceId?: string): CollectionDefinition<StoredNostrEvent>;
9
- export declare function nostrEventManifestToCollectionManifest(manifest: NostrEventManifest, sourceId?: string, itemCount?: number): CollectionManifest;
9
+ export declare function nostrEventManifestToCollectionManifest(manifest: NostrEventManifest, sourceId?: string): CollectionManifest;
10
10
  export declare function collectionManifestToNostrEventManifest(manifest: CollectionManifest): NostrEventManifest;
11
11
  export declare function createNostrEventCollectionSource(store: Store, manifest: NostrEventManifest, sourceId?: string): Promise<CollectionSource>;
12
12
  export declare function createNostrEventCollectionWriter(store: Store, manifest: NostrEventManifest, sourceId?: string): CollectionWriter<StoredNostrEvent>;
@@ -1 +1 @@
1
- {"version":3,"file":"eventCollection.d.ts","sourceRoot":"","sources":["../src/eventCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,gBAAgB,EAChB,gBAAgB,EAIhB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAGxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAwB5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,eAAO,MAAM,wCAAwC,iBAAiB,CAAC;AACvE,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,CAAC;AAO7C,wBAAgB,oCAAoC,CAClD,QAAQ,GAAE,MAAiD,GAC1D,oBAAoB,CAAC,gBAAgB,CAAC,CAsDxC;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAiD,EAC3D,SAAS,SAAI,GACZ,kBAAkB,CAyBpB;AAED,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,kBAAkB,GAAG,kBAAkB,CAqBvG;AAED,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAiD,GAC1D,OAAO,CAAC,gBAAgB,CAAC,CAO3B;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAiD,GAC1D,gBAAgB,CAAC,gBAAgB,CAAC,CAMpC;AAED,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAiD,oEAK5D;AAED,eAAO,MAAM,gCAAgC,6CAAuC,CAAC"}
1
+ {"version":3,"file":"eventCollection.d.ts","sourceRoot":"","sources":["../src/eventCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,gBAAgB,EAChB,gBAAgB,EAIhB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAGxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAwB5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,eAAO,MAAM,wCAAwC,iBAAiB,CAAC;AACvE,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,CAAC;AAO7C,wBAAgB,oCAAoC,CAClD,QAAQ,GAAE,MAAiD,GAC1D,oBAAoB,CAAC,gBAAgB,CAAC,CAsDxC;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAiD,GAC1D,kBAAkB,CAwBpB;AAED,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,kBAAkB,GAAG,kBAAkB,CAqBvG;AAED,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAiD,GAC1D,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAiD,GAC1D,gBAAgB,CAAC,gBAAgB,CAAC,CAMpC;AAED,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAiD,oEAK5D;AAED,eAAO,MAAM,gCAAgC,6CAAuC,CAAC"}
@@ -60,7 +60,7 @@ export function createNostrEventCollectionDefinition(sourceId = DEFAULT_NOSTR_EV
60
60
  ],
61
61
  };
62
62
  }
63
- export function nostrEventManifestToCollectionManifest(manifest, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID, itemCount = 0) {
63
+ export function nostrEventManifestToCollectionManifest(manifest, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID) {
64
64
  const indexes = {
65
65
  [MANIFEST_BY_AUTHOR_TIME]: { kind: 'key', root: serializeCid(manifest.byAuthorTime) },
66
66
  [MANIFEST_BY_AUTHOR_KIND_TIME]: { kind: 'key', root: serializeCid(manifest.byAuthorKindTime) },
@@ -79,7 +79,6 @@ export function nostrEventManifestToCollectionManifest(manifest, sourceId = DEFA
79
79
  sourceId,
80
80
  schemaVersion: 1,
81
81
  updatedAt: 0,
82
- itemCount,
83
82
  byIdRoot: serializeCid(manifest.byId),
84
83
  indexes,
85
84
  publishedSchema: NOSTR_EVENT_PUBLISHED_SCHEMA,
@@ -108,11 +107,7 @@ export function collectionManifestToNostrEventManifest(manifest) {
108
107
  }
109
108
  export async function createNostrEventCollectionSource(store, manifest, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID) {
110
109
  const collectionManifest = nostrEventManifestToCollectionManifest(manifest, sourceId);
111
- const source = new CollectionSource(store, collectionManifest);
112
- return new CollectionSource(store, {
113
- ...collectionManifest,
114
- itemCount: await source.count(),
115
- });
110
+ return new CollectionSource(store, collectionManifest);
116
111
  }
117
112
  export function createNostrEventCollectionWriter(store, manifest, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID) {
118
113
  return new CollectionWriter(store, createNostrEventCollectionDefinition(sourceId), nostrEventManifestToCollectionManifest(manifest, sourceId));
@@ -1 +1 @@
1
- {"version":3,"file":"eventCollection.js","sourceRoot":"","sources":["../src/eventCollection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eventCollection.js","sourceRoot":"","sources":["../src/eventCollection.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export declare function isReplaceableKind(kind: number): boolean;
14
14
  export declare function isParameterizedReplaceableKind(kind: number): boolean;
15
15
  export declare function getDTag(event: Pick<StoredNostrEvent, 'tags'>): string | null;
16
16
  export declare function compareEvents(a: StoredNostrEvent, b: StoredNostrEvent): number;
17
+ export declare function compareReplaceableEvents(a: StoredNostrEvent, b: StoredNostrEvent): number;
17
18
  export declare function authorTimeKey(event: StoredNostrEvent): string;
18
19
  export declare function authorKindTimeKey(event: StoredNostrEvent): string;
19
20
  export declare function kindTimeKey(event: StoredNostrEvent): string;
@@ -1 +1 @@
1
- {"version":3,"file":"eventKeys.d.ts","sourceRoot":"","sources":["../src/eventKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AACxD,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAClE,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAClE,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,kCAAkC,8BAA8B,CAAC;AAE9E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAQ5E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAM9E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAE7D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAEjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAEjE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAczD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAWzD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAwB5F"}
1
+ {"version":3,"file":"eventKeys.d.ts","sourceRoot":"","sources":["../src/eventKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AACxD,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAClE,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAClE,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,kCAAkC,8BAA8B,CAAC;AAE9E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAQ5E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAM9E;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAMzF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAE7D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAEjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAEjE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAczD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAWzD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAwB5F"}
package/dist/eventKeys.js CHANGED
@@ -34,6 +34,12 @@ export function compareEvents(a, b) {
34
34
  }
35
35
  return a.id.localeCompare(b.id);
36
36
  }
37
+ export function compareReplaceableEvents(a, b) {
38
+ if (a.created_at !== b.created_at) {
39
+ return a.created_at - b.created_at;
40
+ }
41
+ return b.id.localeCompare(a.id);
42
+ }
37
43
  export function authorTimeKey(event) {
38
44
  return `${event.pubkey}:${reverseTimestamp(event.created_at)}:${event.id}`;
39
45
  }
@@ -108,7 +114,7 @@ export function retainLatestReplaceableEvents(events) {
108
114
  continue;
109
115
  }
110
116
  const existing = retained.get(slot);
111
- if (!existing || compareEvents(event, existing) > 0) {
117
+ if (!existing || compareReplaceableEvents(event, existing) > 0) {
112
118
  retained.set(slot, event);
113
119
  }
114
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"eventKeys.js","sourceRoot":"","sources":["../src/eventKeys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eventKeys.js","sourceRoot":"","sources":["../src/eventKeys.ts"],"names":[],"mappings":"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"}
package/dist/events.d.ts CHANGED
@@ -25,6 +25,8 @@ export interface ListEventsOptions {
25
25
  limit?: number;
26
26
  since?: number;
27
27
  until?: number;
28
+ /** Throw when a selected event blob is missing or unreadable instead of skipping it. */
29
+ strict?: boolean;
28
30
  }
29
31
  export type NostrEventQueryValue<T> = T | readonly T[];
30
32
  export interface NostrEventQuery {
@@ -44,6 +46,8 @@ export declare class NostrEventStore {
44
46
  add(root: CID | null, event: StoredNostrEvent): Promise<CID>;
45
47
  build(root: CID | null, events: StoredNostrEvent[]): Promise<CID | null>;
46
48
  getById(root: CID | null, eventId: string): Promise<StoredNostrEvent | null>;
49
+ /** Remove an event from every index without deleting blocks used by older roots. */
50
+ delete(root: CID | null, eventId: string): Promise<CID | null>;
47
51
  listByAuthor(root: CID | null, pubkey: string, options?: ListEventsOptions): Promise<StoredNostrEvent[]>;
48
52
  listByAuthorAndKind(root: CID | null, pubkey: string, kind: number, options?: ListEventsOptions): Promise<StoredNostrEvent[]>;
49
53
  streamByAuthor(root: CID | null, pubkey: string, options?: ListEventsOptions): AsyncGenerator<StoredNostrEvent>;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}