@welshman/util 0.0.4 → 0.0.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 (54) hide show
  1. package/build/Address.cjs +40 -32
  2. package/build/Address.cjs.map +1 -1
  3. package/build/Address.d.ts +20 -18
  4. package/build/Address.mjs +38 -26
  5. package/build/Address.mjs.map +1 -1
  6. package/build/Events.cjs +29 -14
  7. package/build/Events.cjs.map +1 -1
  8. package/build/Events.d.ts +42 -15
  9. package/build/Events.mjs +15 -7
  10. package/build/Events.mjs.map +1 -1
  11. package/build/Filters.cjs +5 -5
  12. package/build/Filters.cjs.map +1 -1
  13. package/build/Filters.d.ts +4 -4
  14. package/build/Filters.mjs +5 -5
  15. package/build/Filters.mjs.map +1 -1
  16. package/build/Kinds.cjs +140 -78
  17. package/build/Kinds.cjs.map +1 -1
  18. package/build/Kinds.d.ts +137 -76
  19. package/build/Kinds.mjs +137 -77
  20. package/build/Kinds.mjs.map +1 -1
  21. package/build/Links.cjs +1 -1
  22. package/build/Links.cjs.map +1 -1
  23. package/build/Links.mjs +1 -1
  24. package/build/Links.mjs.map +1 -1
  25. package/build/Relay.cjs +51 -20
  26. package/build/Relay.cjs.map +1 -1
  27. package/build/Relay.d.ts +13 -5
  28. package/build/Relay.mjs +49 -20
  29. package/build/Relay.mjs.map +1 -1
  30. package/build/Repository.cjs +103 -94
  31. package/build/Repository.cjs.map +1 -1
  32. package/build/Repository.d.ts +33 -23
  33. package/build/Repository.mjs +107 -98
  34. package/build/Repository.mjs.map +1 -1
  35. package/build/Router.cjs +8 -9
  36. package/build/Router.cjs.map +1 -1
  37. package/build/Router.d.ts +12 -18
  38. package/build/Router.mjs +8 -9
  39. package/build/Router.mjs.map +1 -1
  40. package/build/Tags.cjs +6 -8
  41. package/build/Tags.cjs.map +1 -1
  42. package/build/Tags.d.ts +1 -3
  43. package/build/Tags.mjs +6 -8
  44. package/build/Tags.mjs.map +1 -1
  45. package/build/index.cjs +0 -1
  46. package/build/index.cjs.map +1 -1
  47. package/build/index.d.ts +0 -1
  48. package/build/index.mjs +0 -1
  49. package/package.json +2 -2
  50. package/build/Relays.cjs +0 -38
  51. package/build/Relays.cjs.map +0 -1
  52. package/build/Relays.d.ts +0 -8
  53. package/build/Relays.mjs +0 -33
  54. package/build/Relays.mjs.map +0 -1
@@ -5,10 +5,11 @@ const throttle_debounce_1 = require("throttle-debounce");
5
5
  const lib_1 = require("@welshman/lib");
6
6
  const Kinds_1 = require("./Kinds.cjs");
7
7
  const Filters_1 = require("./Filters.cjs");
8
- const Address_1 = require("./Address.cjs");
9
8
  const Events_1 = require("./Events.cjs");
9
+ const Address_1 = require("./Address.cjs");
10
10
  exports.DAY = 86400;
11
11
  const getDay = (ts) => Math.floor(ts / exports.DAY);
12
+ const maybeThrottle = (t, f) => t ? (0, throttle_debounce_1.throttle)(t, f) : f;
12
13
  class Repository extends lib_1.Emitter {
13
14
  constructor(options) {
14
15
  super();
@@ -20,13 +21,33 @@ class Repository extends lib_1.Emitter {
20
21
  this.eventsByAuthor = new Map();
21
22
  this.deletes = new Map();
22
23
  this.subs = [];
23
- if (options.throttle) {
24
- this.notify = (0, throttle_debounce_1.throttle)(options.throttle, this.notify.bind(this));
25
- }
24
+ this.notifyUpdate = maybeThrottle(this.options.throttle, () => {
25
+ const events = this.get();
26
+ for (const sub of this.subs) {
27
+ sub(events);
28
+ }
29
+ this.emit('update');
30
+ });
31
+ this.notifyEvent = (event) => {
32
+ this.emit('event', event);
33
+ };
34
+ this.notifyDelete = (event) => {
35
+ this.emit('delete', event);
36
+ };
26
37
  }
27
38
  // Methods for implementing store interface
28
39
  get() {
29
- return this;
40
+ return Array.from(this.eventsById.values());
41
+ }
42
+ async set(events, chunkSize = 1000) {
43
+ for (const eventsChunk of (0, lib_1.chunk)(chunkSize, events)) {
44
+ for (const event of eventsChunk) {
45
+ this.publish(event);
46
+ }
47
+ if (eventsChunk.length === chunkSize) {
48
+ await (0, lib_1.sleep)(1);
49
+ }
50
+ }
30
51
  }
31
52
  subscribe(f, invalidate) {
32
53
  this.subs.push(f);
@@ -40,50 +61,27 @@ class Repository extends lib_1.Emitter {
40
61
  throttle(t) {
41
62
  return new lib_1.Derived(this, lib_1.identity, t);
42
63
  }
43
- filter(getFilters) {
44
- const store = (0, lib_1.writable)([]);
45
- const onNotify = (event) => {
46
- const filters = getFilters();
47
- if (!event || (0, Filters_1.matchFilters)(filters, event)) {
48
- store.set(Array.from(this.query(filters)));
49
- }
50
- };
51
- const subscribe = store.subscribe.bind(store);
52
- store.subscribe = (f) => {
53
- if (store.subs.length === 0) {
54
- this.on('notify', onNotify);
55
- onNotify();
56
- }
57
- const unsubscribe = subscribe(f);
58
- return () => {
59
- unsubscribe();
60
- if (store.subs.length === 0) {
61
- this.off('notify', onNotify);
62
- }
63
- };
64
- };
65
- return store;
66
- }
67
- notify(event) {
68
- for (const sub of this.subs) {
69
- sub(this);
70
- }
71
- this.emit('notify', event);
72
- }
73
- // Load/dump
74
- dump() {
75
- return Array.from(this.eventsById.values());
76
- }
77
- async load(events, chunkSize = 1000) {
78
- for (const eventsChunk of (0, lib_1.chunk)(chunkSize, events)) {
79
- for (const event of eventsChunk) {
80
- this._addEvent(event);
81
- }
82
- if (eventsChunk.length === chunkSize) {
83
- await (0, lib_1.sleep)(1);
84
- }
85
- }
86
- this.notify();
64
+ filter(filters, { includeDeleted = false } = {}) {
65
+ const getValue = () => this.query(filters, { includeDeleted });
66
+ return (0, lib_1.customStore)({
67
+ get: getValue,
68
+ start: setValue => {
69
+ const onEvent = (event) => {
70
+ if ((0, Filters_1.matchFilters)(filters, event)) {
71
+ setValue(getValue());
72
+ }
73
+ };
74
+ const onRefresh = () => {
75
+ setValue(getValue());
76
+ };
77
+ this.on('event', onEvent);
78
+ this.on('delete', onRefresh);
79
+ return () => {
80
+ this.off('event', onEvent);
81
+ this.off('delete', onRefresh);
82
+ };
83
+ },
84
+ });
87
85
  }
88
86
  // API
89
87
  getEvent(idOrAddress) {
@@ -91,12 +89,18 @@ class Repository extends lib_1.Emitter {
91
89
  ? this.eventsByAddress.get(idOrAddress)
92
90
  : this.eventsById.get(idOrAddress);
93
91
  }
92
+ hasEvent(event) {
93
+ const duplicate = (this.eventsById.get(event.id) ||
94
+ this.eventsByAddress.get((0, Address_1.getAddress)(event)));
95
+ return duplicate && duplicate.created_at >= event.created_at;
96
+ }
94
97
  watchEvent(idOrAddress) {
95
- return this.filter((0, lib_1.always)((0, Filters_1.getIdFilters)([idOrAddress]))).derived(lib_1.first);
98
+ return this.filter((0, Filters_1.getIdFilters)([idOrAddress]), { includeDeleted: true }).derived(lib_1.first);
96
99
  }
97
- *query(filters) {
100
+ query(filters, { includeDeleted = false } = {}) {
101
+ const result = [];
98
102
  for (let filter of filters) {
99
- let events = this.eventsById.values();
103
+ let events = Array.from(this.eventsById.values());
100
104
  if (filter.ids) {
101
105
  events = filter.ids.map(id => this.eventsById.get(id)).filter(lib_1.identity);
102
106
  filter = (0, lib_1.omit)(['ids'], filter);
@@ -106,10 +110,9 @@ class Repository extends lib_1.Emitter {
106
110
  filter = (0, lib_1.omit)(['authors'], filter);
107
111
  }
108
112
  else if (filter.since || filter.until) {
109
- const sinceDay = getDay(filter.since || 0);
110
- const untilDay = getDay(filter.since || (0, lib_1.now)());
111
- filter = (0, lib_1.omit)(['since', 'until'], filter);
112
- events = (0, lib_1.uniq)(Array.from((0, lib_1.range)(sinceDay, untilDay))
113
+ const sinceDay = getDay(filter.since || Filters_1.EPOCH);
114
+ const untilDay = getDay(filter.until || (0, lib_1.now)());
115
+ events = (0, lib_1.uniq)(Array.from((0, lib_1.range)(sinceDay, (0, lib_1.inc)(untilDay)))
113
116
  .flatMap((day) => this.eventsByDay.get(day) || []));
114
117
  }
115
118
  else {
@@ -122,69 +125,75 @@ class Repository extends lib_1.Emitter {
122
125
  break;
123
126
  }
124
127
  }
125
- for (const event of events) {
126
- if (!this.isDeleted(event) && (0, Filters_1.matchFilter)(filter, event)) {
127
- yield event;
128
+ const chunk = [];
129
+ for (const event of (0, lib_1.sortBy)((e) => -e.created_at, events)) {
130
+ if (filter.limit && chunk.length >= filter.limit) {
131
+ break;
132
+ }
133
+ if (!includeDeleted && this.isDeleted(event)) {
134
+ continue;
135
+ }
136
+ if ((0, Filters_1.matchFilter)(filter, event)) {
137
+ chunk.push(event);
128
138
  }
129
139
  }
140
+ result.push(chunk);
130
141
  }
142
+ return (0, lib_1.uniq)((0, lib_1.flatten)(result));
131
143
  }
132
144
  publish(event) {
133
- const duplicateById = this.eventsById.get(event.id);
134
- if (duplicateById) {
135
- return false;
136
- }
137
- const hasAddress = (0, Events_1.isReplaceable)(event);
138
- const address = (0, Address_1.encodeAddress)((0, Address_1.addressFromEvent)(event));
139
- const duplicateByAddress = hasAddress ? this.eventsByAddress.get(address) : undefined;
140
- if (duplicateByAddress && duplicateByAddress.created_at >= event.created_at) {
141
- return false;
145
+ if (!(0, Events_1.isTrustedEvent)(event)) {
146
+ throw new Error("Invalid event published to Repository", event);
142
147
  }
143
- this._addEvent(event, duplicateByAddress);
144
- return true;
145
- }
146
- isDeleted(event) {
147
- const idDeletedAt = this.deletes.get(event.id) || 0;
148
- if (idDeletedAt > event.created_at) {
149
- return true;
148
+ const address = (0, Address_1.getAddress)(event);
149
+ const duplicate = (this.eventsById.get(event.id) ||
150
+ this.eventsByAddress.get(address));
151
+ // If our duplicate is newer than the event we're adding, we're done
152
+ if (duplicate && duplicate.created_at >= event.created_at) {
153
+ return;
150
154
  }
151
- if ((0, Events_1.isReplaceable)(event)) {
152
- const address = (0, Address_1.encodeAddress)((0, Address_1.addressFromEvent)(event));
153
- const addressDeletedAt = this.deletes.get(address) || 0;
154
- if (addressDeletedAt > event.created_at) {
155
- return true;
155
+ // Delete our duplicate first
156
+ if (duplicate) {
157
+ this.eventsById.delete(duplicate.id);
158
+ if ((0, Events_1.isReplaceable)(duplicate)) {
159
+ this.eventsByAddress.delete(address);
156
160
  }
157
161
  }
158
- return false;
159
- }
160
- // Implementation
161
- _addEvent(event, duplicate) {
162
+ // Now add our new event
162
163
  this.eventsById.set(event.id, event);
163
164
  if ((0, Events_1.isReplaceable)(event)) {
164
- this.eventsByAddress.set((0, Address_1.encodeAddress)((0, Address_1.addressFromEvent)(event)), event);
165
+ this.eventsByAddress.set(address, event);
165
166
  }
167
+ // Update our timestamp and author indexes
166
168
  this._updateIndex(this.eventsByDay, getDay(event.created_at), event, duplicate);
167
169
  this._updateIndex(this.eventsByAuthor, event.pubkey, event, duplicate);
170
+ // Update our tag indexes
168
171
  for (const tag of event.tags) {
169
172
  if (tag[0].length === 1) {
170
173
  this._updateIndex(this.eventsByTag, tag.slice(0, 2).join(':'), event, duplicate);
171
- if (event.kind === Kinds_1.Kind.Delete) {
172
- const id = tag[1];
173
- const ts = Math.max(event.created_at, this.deletes.get(tag[1]) || 0);
174
- this.deletes.set(id, ts);
174
+ // If this is a delete event, the tag value is an id or address. Track when it was
175
+ // deleted so that replaceables can be restored.
176
+ if (event.kind === Kinds_1.DELETE) {
177
+ this.deletes.set(tag[1], Math.max(event.created_at, this.deletes.get(tag[1]) || 0));
175
178
  }
176
179
  }
177
180
  }
178
181
  if (!this.isDeleted(event)) {
182
+ this.notifyUpdate();
183
+ this.notifyEvent(event);
179
184
  // Deletes are tricky, re-evaluate all subscriptions if that's what we're dealing with
180
- if (event.kind === Kinds_1.Kind.Delete) {
181
- this.notify();
182
- }
183
- else {
184
- this.notify(event);
185
+ if (event.kind === Kinds_1.DELETE) {
186
+ this.notifyDelete(event);
185
187
  }
186
188
  }
187
189
  }
190
+ isDeleted(event) {
191
+ const deletedAt = (this.deletes.get(event.id) ||
192
+ this.deletes.get((0, Address_1.getAddress)(event)) ||
193
+ 0);
194
+ return deletedAt > event.created_at;
195
+ }
196
+ // Utilities
188
197
  _updateIndex(m, k, e, duplicate) {
189
198
  let a = m.get(k) || [];
190
199
  if (duplicate) {
@@ -1 +1 @@
1
- {"version":3,"file":"Repository.cjs","sourceRoot":"","sources":["../Repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Repository.cjs","sourceRoot":"","sources":["../Repository.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,44 @@
1
1
  import type { IReadable, Subscriber, Invalidator } from '@welshman/lib';
2
2
  import { Derived, Emitter } from '@welshman/lib';
3
3
  import type { Filter } from './Filters';
4
- import type { Rumor } from './Events';
4
+ import type { TrustedEvent } from './Events';
5
5
  export declare const DAY = 86400;
6
6
  export type RepositoryOptions = {
7
7
  throttle?: number;
8
8
  };
9
- export declare class Repository<E extends Rumor> extends Emitter implements IReadable<Repository<E>> {
9
+ export declare class Repository extends Emitter implements IReadable<TrustedEvent[]> {
10
10
  private options;
11
- eventsById: Map<string, E>;
12
- eventsByAddress: Map<string, E>;
13
- eventsByTag: Map<string, E[]>;
14
- eventsByDay: Map<number, E[]>;
15
- eventsByAuthor: Map<string, E[]>;
11
+ eventsById: Map<string, TrustedEvent>;
12
+ eventsByAddress: Map<string, TrustedEvent>;
13
+ eventsByTag: Map<string, TrustedEvent[]>;
14
+ eventsByDay: Map<number, TrustedEvent[]>;
15
+ eventsByAuthor: Map<string, TrustedEvent[]>;
16
16
  deletes: Map<string, number>;
17
- subs: Subscriber<typeof this>[];
17
+ subs: Subscriber<TrustedEvent[]>[];
18
18
  constructor(options: RepositoryOptions);
19
- get(): this;
20
- subscribe(f: Subscriber<Repository<E>>, invalidate?: Invalidator<Repository<E>>): () => void;
21
- derived<U>(f: (v: Repository<E>) => U): Derived<U>;
22
- throttle(t: number): Derived<Repository<E>>;
23
- filter(getFilters: () => Filter[]): import("@welshman/lib").Writable<E[]>;
24
- notify(event?: E): void;
25
- dump(): E[];
26
- load(events: E[], chunkSize?: number): Promise<void>;
27
- getEvent(idOrAddress: string): E | undefined;
28
- watchEvent(idOrAddress: string): Derived<E>;
29
- query(filters: Filter[]): Generator<E, void, unknown>;
30
- publish(event: E): boolean;
31
- isDeleted(event: E): boolean;
32
- _addEvent(event: E, duplicate?: E): void;
33
- _updateIndex<K>(m: Map<K, E[]>, k: K, e: E, duplicate?: E): void;
19
+ get(): TrustedEvent[];
20
+ set(events: TrustedEvent[], chunkSize?: number): Promise<void>;
21
+ subscribe(f: Subscriber<TrustedEvent[]>, invalidate?: Invalidator<TrustedEvent[]>): () => void;
22
+ derived<U>(f: (v: TrustedEvent[]) => U): Derived<U>;
23
+ throttle(t: number): Derived<TrustedEvent[]>;
24
+ filter(filters: Filter[], { includeDeleted }?: {
25
+ includeDeleted?: boolean | undefined;
26
+ }): {
27
+ derived: <U>(f: (v: TrustedEvent[]) => U) => Derived<U>;
28
+ throttle: (t: number) => Derived<TrustedEvent[]>;
29
+ get: () => TrustedEvent[];
30
+ subscribe(this: void, run: Subscriber<TrustedEvent[]>, invalidate?: Invalidator<TrustedEvent[]> | undefined): () => void;
31
+ };
32
+ notifyUpdate: () => void;
33
+ notifyEvent: (event: TrustedEvent) => void;
34
+ notifyDelete: (event: TrustedEvent) => void;
35
+ getEvent(idOrAddress: string): TrustedEvent | undefined;
36
+ hasEvent(event: TrustedEvent): boolean | undefined;
37
+ watchEvent(idOrAddress: string): Derived<TrustedEvent>;
38
+ query(filters: Filter[], { includeDeleted }?: {
39
+ includeDeleted?: boolean | undefined;
40
+ }): TrustedEvent[];
41
+ publish(event: TrustedEvent): void;
42
+ isDeleted(event: TrustedEvent): boolean;
43
+ _updateIndex<K>(m: Map<K, TrustedEvent[]>, k: K, e: TrustedEvent, duplicate?: TrustedEvent): void;
34
44
  }