@hashtree/nostr 0.1.6 → 0.1.7
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/dist/eventCollection.d.ts +15 -0
- package/dist/eventCollection.d.ts.map +1 -0
- package/dist/eventCollection.js +118 -0
- package/dist/eventCollection.js.map +1 -0
- package/dist/eventKeys.d.ts +28 -0
- package/dist/eventKeys.d.ts.map +1 -0
- package/dist/eventKeys.js +113 -0
- package/dist/eventKeys.js.map +1 -0
- package/dist/eventValidation.d.ts +11 -0
- package/dist/eventValidation.d.ts.map +1 -0
- package/dist/eventValidation.js +56 -0
- package/dist/eventValidation.js.map +1 -0
- package/dist/events.d.ts +8 -18
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +141 -229
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { COLLECTION_MANIFEST_METADATA_FILE, CollectionSource, CollectionWriter, type CollectionDefinition, type CollectionManifest } from '@hashtree/collection';
|
|
2
|
+
import type { Store } from '@hashtree/core';
|
|
3
|
+
import type { NostrEventManifest, StoredNostrEvent } from './events.js';
|
|
4
|
+
export declare const DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID = "nostr-events";
|
|
5
|
+
export declare const NOSTR_EVENT_ITEM_FORMAT = "nostr/event@1";
|
|
6
|
+
export declare const NOSTR_EVENT_PROJECTION_FORMAT = "hashtree/nostr-event-index@1";
|
|
7
|
+
export { COLLECTION_MANIFEST_METADATA_FILE };
|
|
8
|
+
export declare function createNostrEventCollectionDefinition(sourceId?: string): CollectionDefinition<StoredNostrEvent>;
|
|
9
|
+
export declare function nostrEventManifestToCollectionManifest(manifest: NostrEventManifest, sourceId?: string, itemCount?: number): CollectionManifest;
|
|
10
|
+
export declare function collectionManifestToNostrEventManifest(manifest: CollectionManifest): NostrEventManifest;
|
|
11
|
+
export declare function createNostrEventCollectionSource(store: Store, manifest: NostrEventManifest, sourceId?: string): Promise<CollectionSource>;
|
|
12
|
+
export declare function createNostrEventCollectionWriter(store: Store, manifest: NostrEventManifest, sourceId?: string): CollectionWriter<StoredNostrEvent>;
|
|
13
|
+
export declare function nostrEventCollectionManifestMetadata(manifest: NostrEventManifest, sourceId?: string): import("@hashtree/collection").CollectionManifestMetadata | null;
|
|
14
|
+
export declare const nostrEventCollectionRootMetadata: typeof nostrEventCollectionManifestMetadata;
|
|
15
|
+
//# sourceMappingURL=eventCollection.d.ts.map
|
|
@@ -0,0 +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;AAsB5C,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,CAkDxC;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAiD,EAC3D,SAAS,SAAI,GACZ,kBAAkB,CAwBpB;AAED,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,kBAAkB,GAAG,kBAAkB,CAoBvG;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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { COLLECTION_MANIFEST_METADATA_FILE, CollectionSource, CollectionWriter, collectionManifestMetadataFromManifest, deserializeCid, serializeCid, } from '@hashtree/collection';
|
|
2
|
+
import { authorKindTimeKey, authorTimeKey, getDTag, isParameterizedReplaceableKind, isReplaceableKind, kindTimeKey, MANIFEST_BY_AUTHOR_KIND_TIME, MANIFEST_BY_AUTHOR_TIME, MANIFEST_BY_KIND_TIME, MANIFEST_BY_TAG, MANIFEST_BY_TIME, MANIFEST_PARAMETERIZED_REPLACEABLE, MANIFEST_REPLACEABLE, parameterizedReplaceableKey, replaceableKey, tagKeys, timeKey, } from './eventKeys.js';
|
|
3
|
+
import { validateEventShape } from './eventValidation.js';
|
|
4
|
+
export const DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID = 'nostr-events';
|
|
5
|
+
export const NOSTR_EVENT_ITEM_FORMAT = 'nostr/event@1';
|
|
6
|
+
export const NOSTR_EVENT_PROJECTION_FORMAT = 'hashtree/nostr-event-index@1';
|
|
7
|
+
export { COLLECTION_MANIFEST_METADATA_FILE };
|
|
8
|
+
const NOSTR_EVENT_PUBLISHED_SCHEMA = {
|
|
9
|
+
itemFormat: NOSTR_EVENT_ITEM_FORMAT,
|
|
10
|
+
projectionFormat: NOSTR_EVENT_PROJECTION_FORMAT,
|
|
11
|
+
};
|
|
12
|
+
export function createNostrEventCollectionDefinition(sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID) {
|
|
13
|
+
return {
|
|
14
|
+
sourceId,
|
|
15
|
+
schema: {
|
|
16
|
+
version: 1,
|
|
17
|
+
validate: (event) => {
|
|
18
|
+
validateEventShape(event);
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
publishedSchema: NOSTR_EVENT_PUBLISHED_SCHEMA,
|
|
22
|
+
getId: (event) => event.id,
|
|
23
|
+
keyIndexes: [
|
|
24
|
+
{
|
|
25
|
+
name: MANIFEST_BY_AUTHOR_TIME,
|
|
26
|
+
keys: (event) => [authorTimeKey(event)],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: MANIFEST_BY_AUTHOR_KIND_TIME,
|
|
30
|
+
keys: (event) => [authorKindTimeKey(event)],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: MANIFEST_BY_KIND_TIME,
|
|
34
|
+
keys: (event) => [kindTimeKey(event)],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: MANIFEST_BY_TIME,
|
|
38
|
+
keys: (event) => [timeKey(event)],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: MANIFEST_BY_TAG,
|
|
42
|
+
keys: (event) => tagKeys(event),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: MANIFEST_REPLACEABLE,
|
|
46
|
+
keys: (event) => (isReplaceableKind(event.kind)
|
|
47
|
+
? [replaceableKey(event.pubkey, event.kind)]
|
|
48
|
+
: []),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: MANIFEST_PARAMETERIZED_REPLACEABLE,
|
|
52
|
+
keys: (event) => (isParameterizedReplaceableKind(event.kind)
|
|
53
|
+
? [parameterizedReplaceableKey(event.pubkey, event.kind, getDTag(event) ?? '')]
|
|
54
|
+
: []),
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function nostrEventManifestToCollectionManifest(manifest, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID, itemCount = 0) {
|
|
60
|
+
const indexes = {
|
|
61
|
+
[MANIFEST_BY_AUTHOR_TIME]: { kind: 'key', root: serializeCid(manifest.byAuthorTime) },
|
|
62
|
+
[MANIFEST_BY_AUTHOR_KIND_TIME]: { kind: 'key', root: serializeCid(manifest.byAuthorKindTime) },
|
|
63
|
+
[MANIFEST_BY_KIND_TIME]: { kind: 'key', root: serializeCid(manifest.byKindTime) },
|
|
64
|
+
[MANIFEST_BY_TIME]: { kind: 'key', root: serializeCid(manifest.byTime) },
|
|
65
|
+
[MANIFEST_BY_TAG]: { kind: 'key', root: serializeCid(manifest.byTag) },
|
|
66
|
+
[MANIFEST_REPLACEABLE]: { kind: 'key', root: serializeCid(manifest.replaceable) },
|
|
67
|
+
[MANIFEST_PARAMETERIZED_REPLACEABLE]: {
|
|
68
|
+
kind: 'key',
|
|
69
|
+
root: serializeCid(manifest.parameterizedReplaceable),
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
version: 1,
|
|
74
|
+
sourceId,
|
|
75
|
+
schemaVersion: 1,
|
|
76
|
+
updatedAt: 0,
|
|
77
|
+
itemCount,
|
|
78
|
+
byIdRoot: serializeCid(manifest.byId),
|
|
79
|
+
indexes,
|
|
80
|
+
publishedSchema: NOSTR_EVENT_PUBLISHED_SCHEMA,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function collectionManifestToNostrEventManifest(manifest) {
|
|
84
|
+
const byId = deserializeCid(manifest.byIdRoot);
|
|
85
|
+
const keyIndexCid = (name) => {
|
|
86
|
+
const index = manifest.indexes[name];
|
|
87
|
+
if (!index?.root) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return deserializeCid(index.root);
|
|
91
|
+
};
|
|
92
|
+
return {
|
|
93
|
+
byId,
|
|
94
|
+
byAuthorTime: keyIndexCid(MANIFEST_BY_AUTHOR_TIME),
|
|
95
|
+
byAuthorKindTime: keyIndexCid(MANIFEST_BY_AUTHOR_KIND_TIME),
|
|
96
|
+
byKindTime: keyIndexCid(MANIFEST_BY_KIND_TIME),
|
|
97
|
+
byTime: keyIndexCid(MANIFEST_BY_TIME),
|
|
98
|
+
byTag: keyIndexCid(MANIFEST_BY_TAG),
|
|
99
|
+
replaceable: keyIndexCid(MANIFEST_REPLACEABLE),
|
|
100
|
+
parameterizedReplaceable: keyIndexCid(MANIFEST_PARAMETERIZED_REPLACEABLE),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export async function createNostrEventCollectionSource(store, manifest, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID) {
|
|
104
|
+
const collectionManifest = nostrEventManifestToCollectionManifest(manifest, sourceId);
|
|
105
|
+
const source = new CollectionSource(store, collectionManifest);
|
|
106
|
+
return new CollectionSource(store, {
|
|
107
|
+
...collectionManifest,
|
|
108
|
+
itemCount: await source.count(),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
export function createNostrEventCollectionWriter(store, manifest, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID) {
|
|
112
|
+
return new CollectionWriter(store, createNostrEventCollectionDefinition(sourceId), nostrEventManifestToCollectionManifest(manifest, sourceId));
|
|
113
|
+
}
|
|
114
|
+
export function nostrEventCollectionManifestMetadata(manifest, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID) {
|
|
115
|
+
return collectionManifestMetadataFromManifest(nostrEventManifestToCollectionManifest(manifest, sourceId));
|
|
116
|
+
}
|
|
117
|
+
export const nostrEventCollectionRootMetadata = nostrEventCollectionManifestMetadata;
|
|
118
|
+
//# sourceMappingURL=eventCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventCollection.js","sourceRoot":"","sources":["../src/eventCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { StoredNostrEvent } from './events.js';
|
|
2
|
+
export declare const MANIFEST_BY_ID = "by-id";
|
|
3
|
+
export declare const MANIFEST_BY_AUTHOR_TIME = "by-author-time";
|
|
4
|
+
export declare const MANIFEST_BY_AUTHOR_KIND_TIME = "by-author-kind-time";
|
|
5
|
+
export declare const MANIFEST_BY_KIND_TIME = "by-kind-time";
|
|
6
|
+
export declare const MANIFEST_BY_TIME = "by-time";
|
|
7
|
+
export declare const MANIFEST_BY_TAG = "by-tag";
|
|
8
|
+
export declare const MANIFEST_REPLACEABLE = "replaceable";
|
|
9
|
+
export declare const MANIFEST_PARAMETERIZED_REPLACEABLE = "parameterized-replaceable";
|
|
10
|
+
export declare function padKind(kind: number): string;
|
|
11
|
+
export declare function reverseTimestamp(createdAt: number): string;
|
|
12
|
+
export declare function isReplaceableKind(kind: number): boolean;
|
|
13
|
+
export declare function isParameterizedReplaceableKind(kind: number): boolean;
|
|
14
|
+
export declare function getDTag(event: Pick<StoredNostrEvent, 'tags'>): string | null;
|
|
15
|
+
export declare function compareEvents(a: StoredNostrEvent, b: StoredNostrEvent): number;
|
|
16
|
+
export declare function authorTimeKey(event: StoredNostrEvent): string;
|
|
17
|
+
export declare function authorKindTimeKey(event: StoredNostrEvent): string;
|
|
18
|
+
export declare function kindTimeKey(event: StoredNostrEvent): string;
|
|
19
|
+
export declare function timeKey(event: StoredNostrEvent): string;
|
|
20
|
+
export declare function createdAtFromIndexKey(key: string): number;
|
|
21
|
+
export declare function normalizeTagName(tagName: string): string;
|
|
22
|
+
export declare function normalizeTagValue(tagName: string, tagValue: string): string;
|
|
23
|
+
export declare function tagKeys(event: StoredNostrEvent): string[];
|
|
24
|
+
export declare function tagPrefix(tagName: string, tagValue: string): string;
|
|
25
|
+
export declare function replaceableKey(pubkey: string, kind: number): string;
|
|
26
|
+
export declare function parameterizedReplaceableKey(pubkey: string, kind: number, dTag: string): string;
|
|
27
|
+
export declare function retainLatestReplaceableEvents(events: StoredNostrEvent[]): StoredNostrEvent[];
|
|
28
|
+
//# sourceMappingURL=eventKeys.d.ts.map
|
|
@@ -0,0 +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,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,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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
const MAX_U64 = (1n << 64n) - 1n;
|
|
2
|
+
export const MANIFEST_BY_ID = 'by-id';
|
|
3
|
+
export const MANIFEST_BY_AUTHOR_TIME = 'by-author-time';
|
|
4
|
+
export const MANIFEST_BY_AUTHOR_KIND_TIME = 'by-author-kind-time';
|
|
5
|
+
export const MANIFEST_BY_KIND_TIME = 'by-kind-time';
|
|
6
|
+
export const MANIFEST_BY_TIME = 'by-time';
|
|
7
|
+
export const MANIFEST_BY_TAG = 'by-tag';
|
|
8
|
+
export const MANIFEST_REPLACEABLE = 'replaceable';
|
|
9
|
+
export const MANIFEST_PARAMETERIZED_REPLACEABLE = 'parameterized-replaceable';
|
|
10
|
+
export function padKind(kind) {
|
|
11
|
+
return kind.toString(16).padStart(8, '0');
|
|
12
|
+
}
|
|
13
|
+
export function reverseTimestamp(createdAt) {
|
|
14
|
+
return (MAX_U64 - BigInt(createdAt)).toString(16).padStart(16, '0');
|
|
15
|
+
}
|
|
16
|
+
export function isReplaceableKind(kind) {
|
|
17
|
+
return kind === 0 || kind === 3 || (kind >= 10_000 && kind < 20_000);
|
|
18
|
+
}
|
|
19
|
+
export function isParameterizedReplaceableKind(kind) {
|
|
20
|
+
return kind >= 30_000 && kind < 40_000;
|
|
21
|
+
}
|
|
22
|
+
export function getDTag(event) {
|
|
23
|
+
for (const tag of event.tags) {
|
|
24
|
+
if (tag[0] === 'd' && typeof tag[1] === 'string' && tag[1].length > 0) {
|
|
25
|
+
return tag[1];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
export function compareEvents(a, b) {
|
|
31
|
+
if (a.created_at !== b.created_at) {
|
|
32
|
+
return a.created_at - b.created_at;
|
|
33
|
+
}
|
|
34
|
+
return a.id.localeCompare(b.id);
|
|
35
|
+
}
|
|
36
|
+
export function authorTimeKey(event) {
|
|
37
|
+
return `${event.pubkey}:${reverseTimestamp(event.created_at)}:${event.id}`;
|
|
38
|
+
}
|
|
39
|
+
export function authorKindTimeKey(event) {
|
|
40
|
+
return `${event.pubkey}:${padKind(event.kind)}:${reverseTimestamp(event.created_at)}:${event.id}`;
|
|
41
|
+
}
|
|
42
|
+
export function kindTimeKey(event) {
|
|
43
|
+
return `${padKind(event.kind)}:${reverseTimestamp(event.created_at)}:${event.id}`;
|
|
44
|
+
}
|
|
45
|
+
export function timeKey(event) {
|
|
46
|
+
return `${reverseTimestamp(event.created_at)}:${event.id}`;
|
|
47
|
+
}
|
|
48
|
+
export function createdAtFromIndexKey(key) {
|
|
49
|
+
const parts = key.split(':');
|
|
50
|
+
if (parts.length < 2) {
|
|
51
|
+
throw new Error(`Invalid Nostr index key: ${key}`);
|
|
52
|
+
}
|
|
53
|
+
const reversed = parts[parts.length - 2];
|
|
54
|
+
const reversedTimestamp = BigInt(`0x${reversed}`);
|
|
55
|
+
const createdAt = MAX_U64 - reversedTimestamp;
|
|
56
|
+
if (createdAt > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
57
|
+
throw new Error(`Created_at exceeds safe integer range in Nostr index key: ${key}`);
|
|
58
|
+
}
|
|
59
|
+
return Number(createdAt);
|
|
60
|
+
}
|
|
61
|
+
export function normalizeTagName(tagName) {
|
|
62
|
+
if (tagName.length === 0) {
|
|
63
|
+
throw new Error('tag name must be non-empty');
|
|
64
|
+
}
|
|
65
|
+
return tagName.toLowerCase();
|
|
66
|
+
}
|
|
67
|
+
export function normalizeTagValue(tagName, tagValue) {
|
|
68
|
+
return tagName === 't' ? tagValue.toLowerCase() : tagValue;
|
|
69
|
+
}
|
|
70
|
+
export function tagKeys(event) {
|
|
71
|
+
return event.tags.flatMap((tag) => {
|
|
72
|
+
const [name, value] = tag;
|
|
73
|
+
if (!name || !value) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const normalizedName = name.toLowerCase();
|
|
77
|
+
const normalizedValue = normalizeTagValue(normalizedName, value);
|
|
78
|
+
return [`${normalizedName}:${normalizedValue}:${reverseTimestamp(event.created_at)}:${event.id}`];
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
export function tagPrefix(tagName, tagValue) {
|
|
82
|
+
const normalizedName = normalizeTagName(tagName);
|
|
83
|
+
return `${normalizedName}:${normalizeTagValue(normalizedName, tagValue)}:`;
|
|
84
|
+
}
|
|
85
|
+
export function replaceableKey(pubkey, kind) {
|
|
86
|
+
return `${pubkey}:${padKind(kind)}`;
|
|
87
|
+
}
|
|
88
|
+
export function parameterizedReplaceableKey(pubkey, kind, dTag) {
|
|
89
|
+
return `${pubkey}:${padKind(kind)}:${dTag}`;
|
|
90
|
+
}
|
|
91
|
+
export function retainLatestReplaceableEvents(events) {
|
|
92
|
+
const retained = new Map();
|
|
93
|
+
const passthrough = [];
|
|
94
|
+
for (const event of events) {
|
|
95
|
+
let slot = null;
|
|
96
|
+
if (isReplaceableKind(event.kind)) {
|
|
97
|
+
slot = `replaceable:${replaceableKey(event.pubkey, event.kind)}`;
|
|
98
|
+
}
|
|
99
|
+
else if (isParameterizedReplaceableKind(event.kind)) {
|
|
100
|
+
slot = `parameterized:${parameterizedReplaceableKey(event.pubkey, event.kind, getDTag(event) ?? '')}`;
|
|
101
|
+
}
|
|
102
|
+
if (!slot) {
|
|
103
|
+
passthrough.push(event);
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const existing = retained.get(slot);
|
|
107
|
+
if (!existing || compareEvents(event, existing) > 0) {
|
|
108
|
+
retained.set(slot, event);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return [...passthrough, ...retained.values()];
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=eventKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventKeys.js","sourceRoot":"","sources":["../src/eventKeys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { StoredNostrEvent } from './events.js';
|
|
2
|
+
export declare const HEX_64: RegExp;
|
|
3
|
+
export declare const HEX_128: RegExp;
|
|
4
|
+
export declare function assertStringArray(tags: unknown): asserts tags is string[][];
|
|
5
|
+
export declare function validateHex64(value: string, label: string): string;
|
|
6
|
+
export declare function validateHex128(value: string, label: string): string;
|
|
7
|
+
export declare function validateCreatedAt(value: number): number;
|
|
8
|
+
export declare function validateKind(value: number): number;
|
|
9
|
+
export declare function validateContent(value: string): string;
|
|
10
|
+
export declare function validateEventShape(event: StoredNostrEvent): StoredNostrEvent;
|
|
11
|
+
//# sourceMappingURL=eventValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventValidation.d.ts","sourceRoot":"","sources":["../src/eventValidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,MAAM,QAAmB,CAAC;AACvC,eAAO,MAAM,OAAO,QAAoB,CAAC;AAEzC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAU3E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAa5E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export const HEX_64 = /^[0-9a-f]{64}$/;
|
|
2
|
+
export const HEX_128 = /^[0-9a-f]{128}$/;
|
|
3
|
+
export function assertStringArray(tags) {
|
|
4
|
+
if (!Array.isArray(tags)) {
|
|
5
|
+
throw new Error('Nostr event tags must be an array');
|
|
6
|
+
}
|
|
7
|
+
for (const tag of tags) {
|
|
8
|
+
if (!Array.isArray(tag) || tag.some((value) => typeof value !== 'string')) {
|
|
9
|
+
throw new Error('Nostr event tags must be an array of string arrays');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function validateHex64(value, label) {
|
|
14
|
+
if (!HEX_64.test(value)) {
|
|
15
|
+
throw new Error(`${label} must be a lowercase 64-character hex string`);
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
export function validateHex128(value, label) {
|
|
20
|
+
if (!HEX_128.test(value)) {
|
|
21
|
+
throw new Error(`${label} must be a lowercase 128-character hex string`);
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
export function validateCreatedAt(value) {
|
|
26
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
27
|
+
throw new Error('created_at must be a non-negative integer');
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
export function validateKind(value) {
|
|
32
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
33
|
+
throw new Error('kind must be a non-negative integer');
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
export function validateContent(value) {
|
|
38
|
+
if (typeof value !== 'string') {
|
|
39
|
+
throw new Error('content must be a string');
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
export function validateEventShape(event) {
|
|
44
|
+
const normalized = {
|
|
45
|
+
id: validateHex64(event.id, 'event id'),
|
|
46
|
+
pubkey: validateHex64(event.pubkey, 'pubkey'),
|
|
47
|
+
created_at: validateCreatedAt(event.created_at),
|
|
48
|
+
kind: validateKind(event.kind),
|
|
49
|
+
tags: event.tags,
|
|
50
|
+
content: validateContent(event.content),
|
|
51
|
+
sig: validateHex128(event.sig, 'signature'),
|
|
52
|
+
};
|
|
53
|
+
assertStringArray(normalized.tags);
|
|
54
|
+
return normalized;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=eventValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventValidation.js","sourceRoot":"","sources":["../src/eventValidation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC;AACvC,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAC;AAEzC,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,KAAa;IACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8CAA8C,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAa;IACzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+CAA+C,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAuB;IACxD,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC;QACvC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC7C,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC;QAC/C,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC;QACvC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC;KAC5C,CAAC;IAEF,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/events.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CollectionSource, type CollectionManifest } from '@hashtree/collection';
|
|
1
2
|
import { type CID, type Store } from '@hashtree/core';
|
|
2
3
|
export interface StoredNostrEvent {
|
|
3
4
|
id: string;
|
|
@@ -24,8 +25,8 @@ export interface ListEventsOptions {
|
|
|
24
25
|
until?: number;
|
|
25
26
|
}
|
|
26
27
|
export declare class NostrEventStore {
|
|
28
|
+
private readonly store;
|
|
27
29
|
private readonly tree;
|
|
28
|
-
private readonly index;
|
|
29
30
|
constructor(store: Store);
|
|
30
31
|
encodeEvent(event: StoredNostrEvent): Uint8Array;
|
|
31
32
|
decodeEvent(data: Uint8Array): StoredNostrEvent;
|
|
@@ -39,28 +40,17 @@ export declare class NostrEventStore {
|
|
|
39
40
|
listByTag(root: CID | null, tagName: string, tagValue: string, options?: ListEventsOptions): Promise<StoredNostrEvent[]>;
|
|
40
41
|
getParameterizedReplaceable(root: CID | null, pubkey: string, kind: number, dTag: string): Promise<StoredNostrEvent | null>;
|
|
41
42
|
getManifest(root: CID | null): Promise<NostrEventManifest>;
|
|
43
|
+
getCollectionManifest(root: CID | null, sourceId?: string): Promise<CollectionManifest>;
|
|
44
|
+
getCollectionSource(root: CID | null, sourceId?: string): Promise<CollectionSource>;
|
|
42
45
|
listByKind(root: CID | null, kind: number, options?: ListEventsOptions): Promise<StoredNostrEvent[]>;
|
|
43
46
|
private collectEvents;
|
|
44
47
|
private readStoredEvent;
|
|
45
|
-
private
|
|
48
|
+
private emptyManifest;
|
|
49
|
+
private collectionSourceFromManifest;
|
|
50
|
+
private collectionWriterFromManifest;
|
|
51
|
+
private resolveReplaceableDecision;
|
|
46
52
|
private writeManifest;
|
|
47
|
-
private authorTimeKey;
|
|
48
|
-
private authorKindTimeKey;
|
|
49
|
-
private kindTimeKey;
|
|
50
|
-
private timeKey;
|
|
51
|
-
private createdAtFromIndexKey;
|
|
52
|
-
private tagKeys;
|
|
53
|
-
private tagPrefix;
|
|
54
|
-
private normalizeTagName;
|
|
55
|
-
private normalizeTagValue;
|
|
56
|
-
private replaceableKey;
|
|
57
|
-
private parameterizedReplaceableKey;
|
|
58
53
|
private validateEventShape;
|
|
59
54
|
private validateEvent;
|
|
60
|
-
private validateHex64;
|
|
61
|
-
private validateHex128;
|
|
62
|
-
private validateCreatedAt;
|
|
63
|
-
private validateKind;
|
|
64
|
-
private validateContent;
|
|
65
55
|
}
|
|
66
56
|
//# sourceMappingURL=events.d.ts.map
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,GAAG,EAAE,KAAK,KAAK,EAAiB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/events.js
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { decode, encode } from '@msgpack/msgpack';
|
|
2
|
+
import { CollectionSource, serializeCollectionManifestMetadata, } from '@hashtree/collection';
|
|
2
3
|
import { HashTree, LinkType, toHex, sha256 } from '@hashtree/core';
|
|
3
|
-
import {
|
|
4
|
+
import { COLLECTION_MANIFEST_METADATA_FILE, collectionManifestToNostrEventManifest, createNostrEventCollectionWriter, DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID, nostrEventCollectionManifestMetadata, nostrEventManifestToCollectionManifest, } from './eventCollection.js';
|
|
5
|
+
import { compareEvents, createdAtFromIndexKey, getDTag, isParameterizedReplaceableKind, isReplaceableKind, MANIFEST_BY_AUTHOR_KIND_TIME, MANIFEST_BY_AUTHOR_TIME, MANIFEST_BY_ID, MANIFEST_BY_KIND_TIME, MANIFEST_BY_TAG, MANIFEST_BY_TIME, MANIFEST_PARAMETERIZED_REPLACEABLE, MANIFEST_REPLACEABLE, parameterizedReplaceableKey, replaceableKey, retainLatestReplaceableEvents, tagPrefix, } from './eventKeys.js';
|
|
6
|
+
import { assertStringArray, validateEventShape, validateHex64, validateKind } from './eventValidation.js';
|
|
4
7
|
const EVENT_ENVELOPE_VERSION = 1;
|
|
5
|
-
const MAX_U64 = (1n << 64n) - 1n;
|
|
6
|
-
const HEX_64 = /^[0-9a-f]{64}$/;
|
|
7
|
-
const HEX_128 = /^[0-9a-f]{128}$/;
|
|
8
|
-
const MANIFEST_BY_ID = 'by-id';
|
|
9
|
-
const MANIFEST_BY_AUTHOR_TIME = 'by-author-time';
|
|
10
|
-
const MANIFEST_BY_AUTHOR_KIND_TIME = 'by-author-kind-time';
|
|
11
|
-
const MANIFEST_BY_KIND_TIME = 'by-kind-time';
|
|
12
|
-
const MANIFEST_BY_TIME = 'by-time';
|
|
13
|
-
const MANIFEST_BY_TAG = 'by-tag';
|
|
14
|
-
const MANIFEST_REPLACEABLE = 'replaceable';
|
|
15
|
-
const MANIFEST_PARAMETERIZED_REPLACEABLE = 'parameterized-replaceable';
|
|
16
8
|
function canonicalEventIdPayload(event) {
|
|
17
9
|
return JSON.stringify([0, event.pubkey, event.created_at, event.kind, event.tags, event.content]);
|
|
18
10
|
}
|
|
@@ -20,48 +12,12 @@ async function computeCanonicalEventId(event) {
|
|
|
20
12
|
const payload = canonicalEventIdPayload(event);
|
|
21
13
|
return toHex(await sha256(new TextEncoder().encode(payload)));
|
|
22
14
|
}
|
|
23
|
-
function padKind(kind) {
|
|
24
|
-
return kind.toString(16).padStart(8, '0');
|
|
25
|
-
}
|
|
26
|
-
function reverseTimestamp(createdAt) {
|
|
27
|
-
return (MAX_U64 - BigInt(createdAt)).toString(16).padStart(16, '0');
|
|
28
|
-
}
|
|
29
|
-
function isReplaceableKind(kind) {
|
|
30
|
-
return kind === 0 || kind === 3 || (kind >= 10_000 && kind < 20_000);
|
|
31
|
-
}
|
|
32
|
-
function isParameterizedReplaceableKind(kind) {
|
|
33
|
-
return kind >= 30_000 && kind < 40_000;
|
|
34
|
-
}
|
|
35
|
-
function getDTag(event) {
|
|
36
|
-
for (const tag of event.tags) {
|
|
37
|
-
if (tag[0] === 'd' && typeof tag[1] === 'string' && tag[1].length > 0) {
|
|
38
|
-
return tag[1];
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
function compareEvents(a, b) {
|
|
44
|
-
if (a.created_at !== b.created_at) {
|
|
45
|
-
return a.created_at - b.created_at;
|
|
46
|
-
}
|
|
47
|
-
return a.id.localeCompare(b.id);
|
|
48
|
-
}
|
|
49
|
-
function assertStringArray(tags) {
|
|
50
|
-
if (!Array.isArray(tags)) {
|
|
51
|
-
throw new Error('Nostr event tags must be an array');
|
|
52
|
-
}
|
|
53
|
-
for (const tag of tags) {
|
|
54
|
-
if (!Array.isArray(tag) || tag.some(value => typeof value !== 'string')) {
|
|
55
|
-
throw new Error('Nostr event tags must be an array of string arrays');
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
15
|
export class NostrEventStore {
|
|
16
|
+
store;
|
|
60
17
|
tree;
|
|
61
|
-
index;
|
|
62
18
|
constructor(store) {
|
|
19
|
+
this.store = store;
|
|
63
20
|
this.tree = new HashTree({ store });
|
|
64
|
-
this.index = new BTree(store);
|
|
65
21
|
}
|
|
66
22
|
encodeEvent(event) {
|
|
67
23
|
const normalized = this.validateEventShape(event);
|
|
@@ -108,104 +64,80 @@ export class NostrEventStore {
|
|
|
108
64
|
async add(root, event) {
|
|
109
65
|
const normalized = await this.validateEvent(event);
|
|
110
66
|
const manifest = await this.getManifest(root);
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
byAuthorTime: await this.index.insertLink(manifest.byAuthorTime, this.authorTimeKey(normalized), eventCid),
|
|
116
|
-
byAuthorKindTime: await this.index.insertLink(manifest.byAuthorKindTime, this.authorKindTimeKey(normalized), eventCid),
|
|
117
|
-
byKindTime: await this.index.insertLink(manifest.byKindTime, this.kindTimeKey(normalized), eventCid),
|
|
118
|
-
byTime: await this.index.insertLink(manifest.byTime, this.timeKey(normalized), eventCid),
|
|
119
|
-
byTag: manifest.byTag,
|
|
120
|
-
replaceable: manifest.replaceable,
|
|
121
|
-
parameterizedReplaceable: manifest.parameterizedReplaceable,
|
|
122
|
-
};
|
|
123
|
-
for (const tagKey of this.tagKeys(normalized)) {
|
|
124
|
-
nextManifest.byTag = await this.index.insertLink(nextManifest.byTag, tagKey, eventCid);
|
|
125
|
-
}
|
|
126
|
-
if (isReplaceableKind(normalized.kind)) {
|
|
127
|
-
nextManifest.replaceable = await this.upsertWinner(manifest.replaceable, this.replaceableKey(normalized.pubkey, normalized.kind), normalized, eventCid);
|
|
128
|
-
}
|
|
129
|
-
if (isParameterizedReplaceableKind(normalized.kind)) {
|
|
130
|
-
const dTag = getDTag(normalized);
|
|
131
|
-
if (dTag) {
|
|
132
|
-
nextManifest.parameterizedReplaceable = await this.upsertWinner(manifest.parameterizedReplaceable, this.parameterizedReplaceableKey(normalized.pubkey, normalized.kind, dTag), normalized, eventCid);
|
|
67
|
+
const decision = await this.resolveReplaceableDecision(manifest, normalized);
|
|
68
|
+
if (!decision.accept) {
|
|
69
|
+
if (!root) {
|
|
70
|
+
throw new Error('Rejecting replaceable event without an existing manifest root');
|
|
133
71
|
}
|
|
72
|
+
return root;
|
|
134
73
|
}
|
|
74
|
+
const eventBytes = this.encodeEvent(normalized);
|
|
75
|
+
const { cid: eventCid } = await this.tree.putFile(eventBytes);
|
|
76
|
+
const writer = this.collectionWriterFromManifest(manifest);
|
|
77
|
+
await writer.put(normalized, eventCid, {
|
|
78
|
+
previous: decision.replaced?.event,
|
|
79
|
+
});
|
|
80
|
+
const nextManifest = collectionManifestToNostrEventManifest(writer.manifest());
|
|
135
81
|
const manifestRoot = await this.writeManifest(nextManifest);
|
|
136
82
|
if (!manifestRoot) {
|
|
137
83
|
throw new Error('Failed to create Nostr event manifest');
|
|
138
84
|
}
|
|
85
|
+
if (decision.replaced) {
|
|
86
|
+
await this.store.delete(decision.replaced.cid.hash);
|
|
87
|
+
}
|
|
139
88
|
return manifestRoot;
|
|
140
89
|
}
|
|
141
90
|
async build(root, events) {
|
|
142
|
-
const normalized = await Promise.all(events.map(event => this.validateEvent(event)));
|
|
91
|
+
const normalized = retainLatestReplaceableEvents(await Promise.all(events.map((event) => this.validateEvent(event))));
|
|
143
92
|
normalized.sort(compareEvents);
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
current = await this.add(current, event);
|
|
93
|
+
if (normalized.length === 0) {
|
|
94
|
+
return root;
|
|
147
95
|
}
|
|
148
|
-
|
|
96
|
+
if (root) {
|
|
97
|
+
let current = root;
|
|
98
|
+
for (const event of normalized) {
|
|
99
|
+
current = await this.add(current, event);
|
|
100
|
+
}
|
|
101
|
+
return current;
|
|
102
|
+
}
|
|
103
|
+
const writer = this.collectionWriterFromManifest(this.emptyManifest());
|
|
104
|
+
await writer.rebuild(await Promise.all(normalized.map(async (event) => {
|
|
105
|
+
const { cid } = await this.tree.putFile(this.encodeEvent(event));
|
|
106
|
+
return { item: event, cid };
|
|
107
|
+
})));
|
|
108
|
+
return await this.writeManifest(collectionManifestToNostrEventManifest(writer.manifest()));
|
|
149
109
|
}
|
|
150
110
|
async getById(root, eventId) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
const manifest = await this.getManifest(root);
|
|
155
|
-
if (!manifest.byId) {
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
const eventCid = await this.index.getLink(manifest.byId, eventId);
|
|
111
|
+
const source = this.collectionSourceFromManifest(await this.getManifest(root));
|
|
112
|
+
const eventCid = await source.get(validateHex64(eventId, 'event id'));
|
|
159
113
|
if (!eventCid) {
|
|
160
114
|
return null;
|
|
161
115
|
}
|
|
162
116
|
return this.readStoredEvent(eventCid);
|
|
163
117
|
}
|
|
164
118
|
async listByAuthor(root, pubkey, options = {}) {
|
|
165
|
-
|
|
166
|
-
if (!manifest.byAuthorTime) {
|
|
167
|
-
return [];
|
|
168
|
-
}
|
|
169
|
-
return this.collectEvents(manifest.byAuthorTime, `${this.validateHex64(pubkey, 'pubkey')}:`, options);
|
|
119
|
+
return this.collectEvents(this.collectionSourceFromManifest(await this.getManifest(root)), MANIFEST_BY_AUTHOR_TIME, `${validateHex64(pubkey, 'pubkey')}:`, options);
|
|
170
120
|
}
|
|
171
121
|
async listByAuthorAndKind(root, pubkey, kind, options = {}) {
|
|
172
|
-
|
|
173
|
-
if (!manifest.byAuthorKindTime) {
|
|
174
|
-
return [];
|
|
175
|
-
}
|
|
176
|
-
return this.collectEvents(manifest.byAuthorKindTime, `${this.validateHex64(pubkey, 'pubkey')}:${padKind(this.validateKind(kind))}:`, options);
|
|
122
|
+
return this.collectEvents(this.collectionSourceFromManifest(await this.getManifest(root)), MANIFEST_BY_AUTHOR_KIND_TIME, `${validateHex64(pubkey, 'pubkey')}:${validateKind(kind).toString(16).padStart(8, '0')}:`, options);
|
|
177
123
|
}
|
|
178
124
|
async getReplaceable(root, pubkey, kind) {
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
return null;
|
|
182
|
-
}
|
|
183
|
-
const eventCid = await this.index.getLink(manifest.replaceable, this.replaceableKey(this.validateHex64(pubkey, 'pubkey'), this.validateKind(kind)));
|
|
125
|
+
const source = this.collectionSourceFromManifest(await this.getManifest(root));
|
|
126
|
+
const eventCid = await source.getIndexLink(MANIFEST_REPLACEABLE, replaceableKey(validateHex64(pubkey, 'pubkey'), validateKind(kind)));
|
|
184
127
|
return eventCid ? this.readStoredEvent(eventCid) : null;
|
|
185
128
|
}
|
|
186
129
|
async listRecent(root, options = {}) {
|
|
187
|
-
|
|
188
|
-
if (!manifest.byTime) {
|
|
189
|
-
return [];
|
|
190
|
-
}
|
|
191
|
-
return this.collectEvents(manifest.byTime, '', options);
|
|
130
|
+
return this.collectEvents(this.collectionSourceFromManifest(await this.getManifest(root)), MANIFEST_BY_TIME, '', options);
|
|
192
131
|
}
|
|
193
132
|
async listByTag(root, tagName, tagValue, options = {}) {
|
|
194
|
-
|
|
195
|
-
if (!manifest.byTag) {
|
|
196
|
-
return [];
|
|
197
|
-
}
|
|
198
|
-
return this.collectEvents(manifest.byTag, this.tagPrefix(tagName, tagValue), options);
|
|
133
|
+
return this.collectEvents(this.collectionSourceFromManifest(await this.getManifest(root)), MANIFEST_BY_TAG, tagPrefix(tagName, tagValue), options);
|
|
199
134
|
}
|
|
200
135
|
async getParameterizedReplaceable(root, pubkey, kind, dTag) {
|
|
201
|
-
const manifest = await this.getManifest(root);
|
|
202
|
-
if (!manifest.parameterizedReplaceable) {
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
136
|
if (dTag.length === 0) {
|
|
206
137
|
throw new Error('Parameterized replaceable events require a non-empty d tag');
|
|
207
138
|
}
|
|
208
|
-
const
|
|
139
|
+
const source = this.collectionSourceFromManifest(await this.getManifest(root));
|
|
140
|
+
const eventCid = await source.getIndexLink(MANIFEST_PARAMETERIZED_REPLACEABLE, parameterizedReplaceableKey(validateHex64(pubkey, 'pubkey'), validateKind(kind), dTag));
|
|
209
141
|
return eventCid ? this.readStoredEvent(eventCid) : null;
|
|
210
142
|
}
|
|
211
143
|
async getManifest(root) {
|
|
@@ -234,20 +166,37 @@ export class NostrEventStore {
|
|
|
234
166
|
parameterizedReplaceable: getCid(MANIFEST_PARAMETERIZED_REPLACEABLE),
|
|
235
167
|
};
|
|
236
168
|
}
|
|
169
|
+
async getCollectionManifest(root, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID) {
|
|
170
|
+
const manifest = nostrEventManifestToCollectionManifest(await this.getManifest(root), sourceId);
|
|
171
|
+
const source = new CollectionSource(this.store, manifest);
|
|
172
|
+
return {
|
|
173
|
+
...manifest,
|
|
174
|
+
itemCount: await source.count(),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async getCollectionSource(root, sourceId = DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID) {
|
|
178
|
+
return new CollectionSource(this.store, await this.getCollectionManifest(root, sourceId));
|
|
179
|
+
}
|
|
237
180
|
async listByKind(root, kind, options = {}) {
|
|
238
|
-
|
|
239
|
-
if (!manifest.byKindTime) {
|
|
240
|
-
return [];
|
|
241
|
-
}
|
|
242
|
-
return this.collectEvents(manifest.byKindTime, `${padKind(this.validateKind(kind))}:`, options);
|
|
181
|
+
return this.collectEvents(this.collectionSourceFromManifest(await this.getManifest(root)), MANIFEST_BY_KIND_TIME, `${validateKind(kind).toString(16).padStart(8, '0')}:`, options);
|
|
243
182
|
}
|
|
244
|
-
async collectEvents(
|
|
183
|
+
async collectEvents(source, indexName, prefix, options = {}) {
|
|
245
184
|
const events = [];
|
|
246
|
-
const entries =
|
|
247
|
-
?
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
185
|
+
const entries = indexName === MANIFEST_BY_ID
|
|
186
|
+
? await source.queryById({
|
|
187
|
+
prefix,
|
|
188
|
+
limit: options.limit !== undefined && options.since === undefined && options.until === undefined
|
|
189
|
+
? options.limit
|
|
190
|
+
: undefined,
|
|
191
|
+
})
|
|
192
|
+
: await source.queryIndex(indexName, {
|
|
193
|
+
prefix,
|
|
194
|
+
limit: options.limit !== undefined && options.since === undefined && options.until === undefined
|
|
195
|
+
? options.limit
|
|
196
|
+
: undefined,
|
|
197
|
+
});
|
|
198
|
+
for (const { key, cid: eventCid } of entries) {
|
|
199
|
+
const createdAt = createdAtFromIndexKey(key);
|
|
251
200
|
if (options.until !== undefined && createdAt > options.until) {
|
|
252
201
|
continue;
|
|
253
202
|
}
|
|
@@ -268,19 +217,67 @@ export class NostrEventStore {
|
|
|
268
217
|
}
|
|
269
218
|
return this.decodeEvent(data);
|
|
270
219
|
}
|
|
271
|
-
|
|
272
|
-
|
|
220
|
+
emptyManifest() {
|
|
221
|
+
return {
|
|
222
|
+
byId: null,
|
|
223
|
+
byAuthorTime: null,
|
|
224
|
+
byAuthorKindTime: null,
|
|
225
|
+
byKindTime: null,
|
|
226
|
+
byTime: null,
|
|
227
|
+
byTag: null,
|
|
228
|
+
replaceable: null,
|
|
229
|
+
parameterizedReplaceable: null,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
collectionSourceFromManifest(manifest) {
|
|
233
|
+
return new CollectionSource(this.store, nostrEventManifestToCollectionManifest(manifest));
|
|
234
|
+
}
|
|
235
|
+
collectionWriterFromManifest(manifest) {
|
|
236
|
+
return createNostrEventCollectionWriter(this.store, manifest);
|
|
237
|
+
}
|
|
238
|
+
async resolveReplaceableDecision(manifest, event) {
|
|
239
|
+
const slot = isReplaceableKind(event.kind)
|
|
240
|
+
? {
|
|
241
|
+
indexName: MANIFEST_REPLACEABLE,
|
|
242
|
+
key: replaceableKey(event.pubkey, event.kind),
|
|
243
|
+
}
|
|
244
|
+
: isParameterizedReplaceableKind(event.kind)
|
|
245
|
+
? {
|
|
246
|
+
indexName: MANIFEST_PARAMETERIZED_REPLACEABLE,
|
|
247
|
+
key: parameterizedReplaceableKey(event.pubkey, event.kind, getDTag(event) ?? ''),
|
|
248
|
+
}
|
|
249
|
+
: null;
|
|
250
|
+
if (!slot) {
|
|
251
|
+
return { accept: true };
|
|
252
|
+
}
|
|
253
|
+
const source = this.collectionSourceFromManifest(manifest);
|
|
254
|
+
const existingCid = await source.getIndexLink(slot.indexName, slot.key);
|
|
273
255
|
if (!existingCid) {
|
|
274
|
-
return
|
|
256
|
+
return { accept: true };
|
|
257
|
+
}
|
|
258
|
+
try {
|
|
259
|
+
const existingEvent = await this.readStoredEvent(existingCid);
|
|
260
|
+
if (compareEvents(event, existingEvent) > 0) {
|
|
261
|
+
return {
|
|
262
|
+
accept: true,
|
|
263
|
+
replaced: {
|
|
264
|
+
event: existingEvent,
|
|
265
|
+
cid: existingCid,
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
return { accept: false };
|
|
275
270
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
271
|
+
catch (error) {
|
|
272
|
+
if (error instanceof Error && error.message === 'Stored Nostr event blob is missing') {
|
|
273
|
+
return { accept: true };
|
|
274
|
+
}
|
|
275
|
+
throw error;
|
|
279
276
|
}
|
|
280
|
-
return root;
|
|
281
277
|
}
|
|
282
278
|
async writeManifest(manifest) {
|
|
283
279
|
const entries = [];
|
|
280
|
+
const rootMetadata = nostrEventCollectionManifestMetadata(manifest);
|
|
284
281
|
if (manifest.byId) {
|
|
285
282
|
entries.push({ name: MANIFEST_BY_ID, cid: manifest.byId, size: 0, type: LinkType.Dir });
|
|
286
283
|
}
|
|
@@ -310,79 +307,24 @@ export class NostrEventStore {
|
|
|
310
307
|
type: LinkType.Dir,
|
|
311
308
|
});
|
|
312
309
|
}
|
|
310
|
+
if (rootMetadata) {
|
|
311
|
+
const metadataBytes = serializeCollectionManifestMetadata(rootMetadata);
|
|
312
|
+
const { cid, size } = await this.tree.putFile(metadataBytes);
|
|
313
|
+
entries.push({
|
|
314
|
+
name: COLLECTION_MANIFEST_METADATA_FILE,
|
|
315
|
+
cid,
|
|
316
|
+
size,
|
|
317
|
+
type: LinkType.File,
|
|
318
|
+
});
|
|
319
|
+
}
|
|
313
320
|
if (entries.length === 0) {
|
|
314
321
|
return null;
|
|
315
322
|
}
|
|
316
323
|
const { cid } = await this.tree.putDirectory(entries);
|
|
317
324
|
return cid;
|
|
318
325
|
}
|
|
319
|
-
authorTimeKey(event) {
|
|
320
|
-
return `${event.pubkey}:${reverseTimestamp(event.created_at)}:${event.id}`;
|
|
321
|
-
}
|
|
322
|
-
authorKindTimeKey(event) {
|
|
323
|
-
return `${event.pubkey}:${padKind(event.kind)}:${reverseTimestamp(event.created_at)}:${event.id}`;
|
|
324
|
-
}
|
|
325
|
-
kindTimeKey(event) {
|
|
326
|
-
return `${padKind(event.kind)}:${reverseTimestamp(event.created_at)}:${event.id}`;
|
|
327
|
-
}
|
|
328
|
-
timeKey(event) {
|
|
329
|
-
return `${reverseTimestamp(event.created_at)}:${event.id}`;
|
|
330
|
-
}
|
|
331
|
-
createdAtFromIndexKey(key) {
|
|
332
|
-
const parts = key.split(':');
|
|
333
|
-
if (parts.length < 2) {
|
|
334
|
-
throw new Error(`Invalid Nostr index key: ${key}`);
|
|
335
|
-
}
|
|
336
|
-
const reversed = parts[parts.length - 2];
|
|
337
|
-
const reversedTimestamp = BigInt(`0x${reversed}`);
|
|
338
|
-
const createdAt = MAX_U64 - reversedTimestamp;
|
|
339
|
-
if (createdAt > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
340
|
-
throw new Error(`Created_at exceeds safe integer range in Nostr index key: ${key}`);
|
|
341
|
-
}
|
|
342
|
-
return Number(createdAt);
|
|
343
|
-
}
|
|
344
|
-
tagKeys(event) {
|
|
345
|
-
return event.tags.flatMap((tag) => {
|
|
346
|
-
const [name, value] = tag;
|
|
347
|
-
if (!name || !value) {
|
|
348
|
-
return [];
|
|
349
|
-
}
|
|
350
|
-
const normalizedName = name.toLowerCase();
|
|
351
|
-
const normalizedValue = this.normalizeTagValue(normalizedName, value);
|
|
352
|
-
return [`${normalizedName}:${normalizedValue}:${reverseTimestamp(event.created_at)}:${event.id}`];
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
tagPrefix(tagName, tagValue) {
|
|
356
|
-
const normalizedName = this.normalizeTagName(tagName);
|
|
357
|
-
return `${normalizedName}:${this.normalizeTagValue(normalizedName, tagValue)}:`;
|
|
358
|
-
}
|
|
359
|
-
normalizeTagName(tagName) {
|
|
360
|
-
if (tagName.length === 0) {
|
|
361
|
-
throw new Error('tag name must be non-empty');
|
|
362
|
-
}
|
|
363
|
-
return tagName.toLowerCase();
|
|
364
|
-
}
|
|
365
|
-
normalizeTagValue(tagName, tagValue) {
|
|
366
|
-
return tagName === 't' ? tagValue.toLowerCase() : tagValue;
|
|
367
|
-
}
|
|
368
|
-
replaceableKey(pubkey, kind) {
|
|
369
|
-
return `${pubkey}:${padKind(kind)}`;
|
|
370
|
-
}
|
|
371
|
-
parameterizedReplaceableKey(pubkey, kind, dTag) {
|
|
372
|
-
return `${pubkey}:${padKind(kind)}:${dTag}`;
|
|
373
|
-
}
|
|
374
326
|
validateEventShape(event) {
|
|
375
|
-
|
|
376
|
-
id: this.validateHex64(event.id, 'event id'),
|
|
377
|
-
pubkey: this.validateHex64(event.pubkey, 'pubkey'),
|
|
378
|
-
created_at: this.validateCreatedAt(event.created_at),
|
|
379
|
-
kind: this.validateKind(event.kind),
|
|
380
|
-
tags: event.tags,
|
|
381
|
-
content: this.validateContent(event.content),
|
|
382
|
-
sig: this.validateHex128(event.sig, 'signature'),
|
|
383
|
-
};
|
|
384
|
-
assertStringArray(normalized.tags);
|
|
385
|
-
return normalized;
|
|
327
|
+
return validateEventShape(event);
|
|
386
328
|
}
|
|
387
329
|
async validateEvent(event) {
|
|
388
330
|
const normalized = this.validateEventShape(event);
|
|
@@ -392,35 +334,5 @@ export class NostrEventStore {
|
|
|
392
334
|
}
|
|
393
335
|
return normalized;
|
|
394
336
|
}
|
|
395
|
-
validateHex64(value, label) {
|
|
396
|
-
if (!HEX_64.test(value)) {
|
|
397
|
-
throw new Error(`${label} must be a lowercase 64-character hex string`);
|
|
398
|
-
}
|
|
399
|
-
return value;
|
|
400
|
-
}
|
|
401
|
-
validateHex128(value, label) {
|
|
402
|
-
if (!HEX_128.test(value)) {
|
|
403
|
-
throw new Error(`${label} must be a lowercase 128-character hex string`);
|
|
404
|
-
}
|
|
405
|
-
return value;
|
|
406
|
-
}
|
|
407
|
-
validateCreatedAt(value) {
|
|
408
|
-
if (!Number.isInteger(value) || value < 0) {
|
|
409
|
-
throw new Error('created_at must be a non-negative integer');
|
|
410
|
-
}
|
|
411
|
-
return value;
|
|
412
|
-
}
|
|
413
|
-
validateKind(value) {
|
|
414
|
-
if (!Number.isInteger(value) || value < 0) {
|
|
415
|
-
throw new Error('kind must be a non-negative integer');
|
|
416
|
-
}
|
|
417
|
-
return value;
|
|
418
|
-
}
|
|
419
|
-
validateContent(value) {
|
|
420
|
-
if (typeof value !== 'string') {
|
|
421
|
-
throw new Error('content must be a string');
|
|
422
|
-
}
|
|
423
|
-
return value;
|
|
424
|
-
}
|
|
425
337
|
}
|
|
426
338
|
//# sourceMappingURL=events.js.map
|
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
export { WebRTCStore, DEFAULT_RELAYS, Peer, PeerSelector, PeerId, generateUuid, MAX_HTL, MSG_TYPE_REQUEST, MSG_TYPE_RESPONSE, FRAGMENT_SIZE, encodeRequest, encodeResponse, parseMessage, createRequest, createResponse, createFragmentResponse, hashToKey, verifyHash, generatePeerHTLConfig, decrementHTLWithPolicy, decrementHTL, shouldForwardHTL, peerPrincipal, normalizeDispatchConfig, buildHedgedWavePlan, syncSelectorPeers, shouldForward, type SignalingMessage, type WebRTCStoreConfig, type PeerStatus, type WebRTCStoreEvent, type WebRTCStoreEventHandler, type EventSigner, type EventEncrypter, type EventDecrypter, type GiftWrapper, type GiftUnwrapper, type SignedEvent, type PeerPool, type PeerClassifier, type PoolConfig, type SelectionStrategy, type RequestDispatchConfig, type PersistedPeerMetadata, type PeerMetadataSnapshot, type MeshStats, type WebRTCStats, type BandwidthSample, type DataRequest, type DataResponse, type PeerHTLConfig, type PendingRequest, } from './webrtc/index.js';
|
|
7
7
|
export { createNostrRefResolver, createNostrRefResolver as createNostrRootResolver, type NostrRefResolverConfig, type NostrRefResolverConfig as NostrRootResolverConfig, type NostrEvent, type NostrFilter, type Nip19Like, type VisibilityCallbacks, type ParsedTreeVisibility, } from './resolver/index.js';
|
|
8
8
|
export { NostrEventStore, type StoredNostrEvent, type NostrEventManifest, type ListEventsOptions, } from './events.js';
|
|
9
|
+
export { COLLECTION_MANIFEST_METADATA_FILE, DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID, NOSTR_EVENT_ITEM_FORMAT, NOSTR_EVENT_PROJECTION_FORMAT, collectionManifestToNostrEventManifest, createNostrEventCollectionDefinition, createNostrEventCollectionSource, createNostrEventCollectionWriter, nostrEventCollectionManifestMetadata, nostrEventCollectionRootMetadata, nostrEventManifestToCollectionManifest, } from './eventCollection.js';
|
|
10
|
+
export { MANIFEST_BY_AUTHOR_KIND_TIME, MANIFEST_BY_AUTHOR_TIME, MANIFEST_BY_ID, MANIFEST_BY_KIND_TIME, MANIFEST_BY_TAG, MANIFEST_BY_TIME, MANIFEST_PARAMETERIZED_REPLACEABLE, MANIFEST_REPLACEABLE, parameterizedReplaceableKey, replaceableKey, tagPrefix, } from './eventKeys.js';
|
|
9
11
|
export { encodeSignedNostrEventJson, decodeSignedNostrEventJson, storeSignedNostrEventSnapshot, readSignedNostrEventSnapshot, parseHashtreeRootEvent, type ParsedHashtreeRootEvent, type SnapshotTreeLike, type SnapshotTarget, } from './snapshot.js';
|
|
10
12
|
export { storeTreeEventSnapshot, readTreeEventSnapshot, fetchLatestTreeEventSnapshot, watchLatestTreeEventSnapshot, compareTreeEventSnapshots, isNewerTreeEventSnapshot, snapshotMatchesRootCid, resolveSnapshotRootCid, type TreeEventSnapshotInfo, type TreeEventSnapshotQuery, type FetchLatestTreeEventSnapshotConfig, type WatchTreeEventSnapshotsConfig, } from './treeEventSnapshots.js';
|
|
11
13
|
export { buildTreeEventSnapshotPermalink, parseTreeEventSnapshotPermalink, normalizeTreeEventSnapshotLinkKey, type TreeEventSnapshotPermalink, type BuildTreeEventSnapshotPermalinkOptions, } from './treeEventSnapshotPermalinks.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,WAAW,EACX,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EAEb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EAEtB,sBAAsB,IAAI,uBAAuB,EACjD,KAAK,sBAAsB,EAE3B,KAAK,sBAAsB,IAAI,uBAAuB,EACtD,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,GACnC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,EACjC,KAAK,0BAA0B,EAC/B,KAAK,sCAAsC,GAC5C,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,WAAW,EACX,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EAEb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EAEtB,sBAAsB,IAAI,uBAAuB,EACjD,KAAK,sBAAsB,EAE3B,KAAK,sBAAsB,IAAI,uBAAuB,EACtD,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iCAAiC,EACjC,wCAAwC,EACxC,uBAAuB,EACvB,6BAA6B,EAC7B,sCAAsC,EACtC,oCAAoC,EACpC,gCAAgC,EAChC,gCAAgC,EAChC,oCAAoC,EACpC,gCAAgC,EAChC,sCAAsC,GACvC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,kCAAkC,EAClC,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,GACnC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,EACjC,KAAK,0BAA0B,EAC/B,KAAK,sCAAsC,GAC5C,MAAM,kCAAkC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,8 @@ export { createNostrRefResolver,
|
|
|
13
13
|
createNostrRefResolver as createNostrRootResolver, } from './resolver/index.js';
|
|
14
14
|
// Event storage and indexing
|
|
15
15
|
export { NostrEventStore, } from './events.js';
|
|
16
|
+
export { COLLECTION_MANIFEST_METADATA_FILE, DEFAULT_NOSTR_EVENT_COLLECTION_SOURCE_ID, NOSTR_EVENT_ITEM_FORMAT, NOSTR_EVENT_PROJECTION_FORMAT, collectionManifestToNostrEventManifest, createNostrEventCollectionDefinition, createNostrEventCollectionSource, createNostrEventCollectionWriter, nostrEventCollectionManifestMetadata, nostrEventCollectionRootMetadata, nostrEventManifestToCollectionManifest, } from './eventCollection.js';
|
|
17
|
+
export { MANIFEST_BY_AUTHOR_KIND_TIME, MANIFEST_BY_AUTHOR_TIME, MANIFEST_BY_ID, MANIFEST_BY_KIND_TIME, MANIFEST_BY_TAG, MANIFEST_BY_TIME, MANIFEST_PARAMETERIZED_REPLACEABLE, MANIFEST_REPLACEABLE, parameterizedReplaceableKey, replaceableKey, tagPrefix, } from './eventKeys.js';
|
|
16
18
|
export { encodeSignedNostrEventJson, decodeSignedNostrEventJson, storeSignedNostrEventSnapshot, readSignedNostrEventSnapshot, parseHashtreeRootEvent, } from './snapshot.js';
|
|
17
19
|
export { storeTreeEventSnapshot, readTreeEventSnapshot, fetchLatestTreeEventSnapshot, watchLatestTreeEventSnapshot, compareTreeEventSnapshots, isNewerTreeEventSnapshot, snapshotMatchesRootCid, resolveSnapshotRootCid, } from './treeEventSnapshots.js';
|
|
18
20
|
export { buildTreeEventSnapshotPermalink, parseTreeEventSnapshotPermalink, normalizeTreeEventSnapshotLinkKey, } from './treeEventSnapshotPermalinks.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,aAAa;AACb,qBAAqB;AACrB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,GA0Bd,MAAM,mBAAmB,CAAC;AAE3B,gBAAgB;AAChB,OAAO,EACL,sBAAsB;AACtB,eAAe;AACf,sBAAsB,IAAI,uBAAuB,GASlD,MAAM,qBAAqB,CAAC;AAE7B,6BAA6B;AAC7B,OAAO,EACL,eAAe,GAIhB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,GAIvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,GAKvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,GAGlC,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,aAAa;AACb,qBAAqB;AACrB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,GA0Bd,MAAM,mBAAmB,CAAC;AAE3B,gBAAgB;AAChB,OAAO,EACL,sBAAsB;AACtB,eAAe;AACf,sBAAsB,IAAI,uBAAuB,GASlD,MAAM,qBAAqB,CAAC;AAE7B,6BAA6B;AAC7B,OAAO,EACL,eAAe,GAIhB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iCAAiC,EACjC,wCAAwC,EACxC,uBAAuB,EACvB,6BAA6B,EAC7B,sCAAsC,EACtC,oCAAoC,EACpC,gCAAgC,EAChC,gCAAgC,EAChC,oCAAoC,EACpC,gCAAgC,EAChC,sCAAsC,GACvC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,kCAAkC,EAClC,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,GAIvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,GAKvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,GAGlC,MAAM,kCAAkC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hashtree/nostr",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Nostr integration for hashtree - WebRTC P2P store and ref resolver",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"@msgpack/msgpack": "^3.1.2",
|
|
36
36
|
"nostr-tools": "^2.18.2",
|
|
37
37
|
"@hashtree/core": "0.1.3",
|
|
38
|
-
"@hashtree/index": "0.1.3"
|
|
38
|
+
"@hashtree/index": "0.1.3",
|
|
39
|
+
"@hashtree/collection": "0.1.1"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
42
|
"@nostr-dev-kit/ndk": "^2.18.1",
|