@welshman/util 0.0.2 → 0.0.5

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 +40 -8
  12. package/build/Filters.cjs.map +1 -1
  13. package/build/Filters.d.ts +7 -6
  14. package/build/Filters.mjs +37 -6
  15. package/build/Filters.mjs.map +1 -1
  16. package/build/Kinds.cjs +111 -46
  17. package/build/Kinds.cjs.map +1 -1
  18. package/build/Kinds.d.ts +108 -44
  19. package/build/Kinds.mjs +108 -44
  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 +59 -131
  26. package/build/Relay.cjs.map +1 -1
  27. package/build/Relay.d.ts +16 -18
  28. package/build/Relay.mjs +58 -132
  29. package/build/Relay.mjs.map +1 -1
  30. package/build/Repository.cjs +205 -0
  31. package/build/Repository.cjs.map +1 -0
  32. package/build/Repository.d.ts +44 -0
  33. package/build/Repository.mjs +201 -0
  34. package/build/Repository.mjs.map +1 -0
  35. package/build/Router.cjs +24 -24
  36. package/build/Router.cjs.map +1 -1
  37. package/build/Router.d.ts +68 -28
  38. package/build/Router.mjs +24 -24
  39. package/build/Router.mjs.map +1 -1
  40. package/build/Tags.cjs +17 -19
  41. package/build/Tags.cjs.map +1 -1
  42. package/build/Tags.d.ts +2 -9
  43. package/build/Tags.mjs +18 -20
  44. package/build/Tags.mjs.map +1 -1
  45. package/build/index.cjs +1 -1
  46. package/build/index.cjs.map +1 -1
  47. package/build/index.d.ts +1 -1
  48. package/build/index.mjs +1 -1
  49. package/package.json +2 -3
  50. package/build/Relays.cjs +0 -36
  51. package/build/Relays.cjs.map +0 -1
  52. package/build/Relays.d.ts +0 -6
  53. package/build/Relays.mjs +0 -31
  54. package/build/Relays.mjs.map +0 -1
@@ -0,0 +1,201 @@
1
+ import { throttle } from 'throttle-debounce';
2
+ import { Derived, Emitter, sortBy, customStore, inc, first, chunk, sleep, uniq, omit, now, range, identity } from '@welshman/lib';
3
+ import { DELETE } from "./Kinds.mjs";
4
+ import { EPOCH, matchFilter, getIdFilters, matchFilters } from "./Filters.mjs";
5
+ import { isReplaceable, isTrustedEvent } from "./Events.mjs";
6
+ import { getAddress } from "./Address.mjs";
7
+ export const DAY = 86400;
8
+ const getDay = (ts) => Math.floor(ts / DAY);
9
+ const maybeThrottle = (t, f) => t ? throttle(t, f) : f;
10
+ export class Repository extends Emitter {
11
+ constructor(options) {
12
+ super();
13
+ this.options = options;
14
+ this.eventsById = new Map();
15
+ this.eventsByAddress = new Map();
16
+ this.eventsByTag = new Map();
17
+ this.eventsByDay = new Map();
18
+ this.eventsByAuthor = new Map();
19
+ this.deletes = new Map();
20
+ this.subs = [];
21
+ this.notifyUpdate = maybeThrottle(this.options.throttle, () => {
22
+ const events = this.get();
23
+ for (const sub of this.subs) {
24
+ sub(events);
25
+ }
26
+ this.emit('update');
27
+ });
28
+ this.notifyEvent = (event) => {
29
+ this.emit('event', event);
30
+ };
31
+ this.notifyDelete = (event) => {
32
+ this.emit('delete', event);
33
+ };
34
+ }
35
+ // Methods for implementing store interface
36
+ get() {
37
+ return Array.from(this.eventsById.values());
38
+ }
39
+ async set(events, chunkSize = 1000) {
40
+ for (const eventsChunk of chunk(chunkSize, events)) {
41
+ for (const event of eventsChunk) {
42
+ this.publish(event);
43
+ }
44
+ if (eventsChunk.length === chunkSize) {
45
+ await sleep(1);
46
+ }
47
+ }
48
+ }
49
+ subscribe(f, invalidate) {
50
+ this.subs.push(f);
51
+ return () => {
52
+ this.subs = this.subs.filter(sub => sub !== f);
53
+ };
54
+ }
55
+ derived(f) {
56
+ return new Derived(this, f);
57
+ }
58
+ throttle(t) {
59
+ return new Derived(this, identity, t);
60
+ }
61
+ filter(filters, { includeDeleted = false } = {}) {
62
+ const getValue = () => Array.from(this.query(filters, { includeDeleted }));
63
+ return customStore({
64
+ get: getValue,
65
+ start: setValue => {
66
+ const onEvent = (event) => {
67
+ if (matchFilters(filters, event)) {
68
+ setValue(getValue());
69
+ }
70
+ };
71
+ const onRefresh = () => {
72
+ setValue(getValue());
73
+ };
74
+ this.on('event', onEvent);
75
+ this.on('delete', onRefresh);
76
+ return () => {
77
+ this.off('event', onEvent);
78
+ this.off('delete', onRefresh);
79
+ };
80
+ },
81
+ });
82
+ }
83
+ // API
84
+ getEvent(idOrAddress) {
85
+ return idOrAddress.includes(':')
86
+ ? this.eventsByAddress.get(idOrAddress)
87
+ : this.eventsById.get(idOrAddress);
88
+ }
89
+ hasEvent(event) {
90
+ const duplicate = (this.eventsById.get(event.id) ||
91
+ this.eventsByAddress.get(getAddress(event)));
92
+ return duplicate && duplicate.created_at >= event.created_at;
93
+ }
94
+ watchEvent(idOrAddress) {
95
+ return this.filter(getIdFilters([idOrAddress]), { includeDeleted: true }).derived(first);
96
+ }
97
+ *query(filters, { includeDeleted = false } = {}) {
98
+ for (let filter of filters) {
99
+ let events = Array.from(this.eventsById.values());
100
+ if (filter.ids) {
101
+ events = filter.ids.map(id => this.eventsById.get(id)).filter(identity);
102
+ filter = omit(['ids'], filter);
103
+ }
104
+ else if (filter.authors) {
105
+ events = uniq(filter.authors.flatMap(pubkey => this.eventsByAuthor.get(pubkey) || []));
106
+ filter = omit(['authors'], filter);
107
+ }
108
+ else if (filter.since || filter.until) {
109
+ const sinceDay = getDay(filter.since || EPOCH);
110
+ const untilDay = getDay(filter.until || now());
111
+ events = uniq(Array.from(range(sinceDay, inc(untilDay)))
112
+ .flatMap((day) => this.eventsByDay.get(day) || []));
113
+ }
114
+ else {
115
+ for (const [k, values] of Object.entries(filter)) {
116
+ if (!k.startsWith('#') || k.length !== 2) {
117
+ continue;
118
+ }
119
+ filter = omit([k], filter);
120
+ events = uniq(values.flatMap(v => this.eventsByTag.get(`${k[1]}:${v}`) || []));
121
+ break;
122
+ }
123
+ }
124
+ let i = 0;
125
+ for (const event of sortBy((e) => -e.created_at, events)) {
126
+ if (filter.limit && i > filter.limit) {
127
+ break;
128
+ }
129
+ if (!includeDeleted && this.isDeleted(event)) {
130
+ continue;
131
+ }
132
+ if (matchFilter(filter, event)) {
133
+ yield event;
134
+ i += 1;
135
+ }
136
+ }
137
+ }
138
+ }
139
+ publish(event) {
140
+ if (!isTrustedEvent(event)) {
141
+ throw new Error("Invalid event published to Repository", event);
142
+ }
143
+ const address = getAddress(event);
144
+ const duplicate = (this.eventsById.get(event.id) ||
145
+ this.eventsByAddress.get(address));
146
+ // If our duplicate is newer than the event we're adding, we're done
147
+ if (duplicate && duplicate.created_at >= event.created_at) {
148
+ return;
149
+ }
150
+ // Delete our duplicate first
151
+ if (duplicate) {
152
+ this.eventsById.delete(duplicate.id);
153
+ if (isReplaceable(duplicate)) {
154
+ this.eventsByAddress.delete(address);
155
+ }
156
+ }
157
+ // Now add our new event
158
+ this.eventsById.set(event.id, event);
159
+ if (isReplaceable(event)) {
160
+ this.eventsByAddress.set(address, event);
161
+ }
162
+ // Update our timestamp and author indexes
163
+ this._updateIndex(this.eventsByDay, getDay(event.created_at), event, duplicate);
164
+ this._updateIndex(this.eventsByAuthor, event.pubkey, event, duplicate);
165
+ // Update our tag indexes
166
+ for (const tag of event.tags) {
167
+ if (tag[0].length === 1) {
168
+ this._updateIndex(this.eventsByTag, tag.slice(0, 2).join(':'), event, duplicate);
169
+ // If this is a delete event, the tag value is an id or address. Track when it was
170
+ // deleted so that replaceables can be restored.
171
+ if (event.kind === DELETE) {
172
+ this.deletes.set(tag[1], Math.max(event.created_at, this.deletes.get(tag[1]) || 0));
173
+ }
174
+ }
175
+ }
176
+ if (!this.isDeleted(event)) {
177
+ this.notifyUpdate();
178
+ this.notifyEvent(event);
179
+ // Deletes are tricky, re-evaluate all subscriptions if that's what we're dealing with
180
+ if (event.kind === DELETE) {
181
+ this.notifyDelete(event);
182
+ }
183
+ }
184
+ }
185
+ isDeleted(event) {
186
+ const deletedAt = (this.deletes.get(event.id) ||
187
+ this.deletes.get(getAddress(event)) ||
188
+ 0);
189
+ return deletedAt > event.created_at;
190
+ }
191
+ // Utilities
192
+ _updateIndex(m, k, e, duplicate) {
193
+ let a = m.get(k) || [];
194
+ if (duplicate) {
195
+ a = a.filter((x) => x !== duplicate);
196
+ }
197
+ a.push(e);
198
+ m.set(k, a);
199
+ }
200
+ }
201
+ //# sourceMappingURL=Repository.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Repository.mjs","sourceRoot":"","sources":["../Repository.ts"],"names":[],"mappings":"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"}
package/build/Router.cjs CHANGED
@@ -4,7 +4,7 @@ exports.RouterScenario = exports.Router = exports.RelayMode = void 0;
4
4
  const lib_1 = require("@welshman/lib");
5
5
  const util_1 = require("@welshman/util");
6
6
  const Events_1 = require("./Events.cjs");
7
- const Relays_1 = require("./Relays.cjs");
7
+ const Relay_1 = require("./Relay.cjs");
8
8
  const Address_1 = require("./Address.cjs");
9
9
  var RelayMode;
10
10
  (function (RelayMode) {
@@ -15,13 +15,13 @@ class Router {
15
15
  constructor(options) {
16
16
  this.options = options;
17
17
  // Utilities derived from options
18
- this.getPubkeySelection = (pubkey, mode) => this.selection(pubkey, this.options.getPubkeyRelays(pubkey, mode));
18
+ this.getPubkeySelection = (pubkey, mode) => { var _a, _b; return this.selection(pubkey, ((_b = (_a = this.options).getPubkeyRelays) === null || _b === void 0 ? void 0 : _b.call(_a, pubkey, mode)) || []); };
19
19
  this.getPubkeySelections = (pubkeys, mode) => pubkeys.map(pubkey => this.getPubkeySelection(pubkey, mode));
20
- this.getUserSelections = (mode) => this.getPubkeySelections([this.options.getUserPubkey()].filter(lib_1.identity), mode);
20
+ this.getUserSelections = (mode) => { var _a, _b; return this.getPubkeySelections([(_b = (_a = this.options).getUserPubkey) === null || _b === void 0 ? void 0 : _b.call(_a)].filter(lib_1.identity), mode); };
21
21
  this.getContextSelections = (tags) => {
22
22
  return [
23
- ...tags.communities().mapTo(t => this.selection(t.value(), this.options.getCommunityRelays(t.value()))).valueOf(),
24
- ...tags.groups().mapTo(t => this.selection(t.value(), this.options.getGroupRelays(t.value()))).valueOf(),
23
+ ...tags.communities().mapTo(t => { var _a, _b; return this.selection(t.value(), ((_b = (_a = this.options).getCommunityRelays) === null || _b === void 0 ? void 0 : _b.call(_a, t.value())) || []); }).valueOf(),
24
+ ...tags.groups().mapTo(t => { var _a, _b; return this.selection(t.value(), ((_b = (_a = this.options).getGroupRelays) === null || _b === void 0 ? void 0 : _b.call(_a, t.value())) || []); }).valueOf(),
25
25
  ];
26
26
  };
27
27
  // Utilities for creating ValueRelays
@@ -31,10 +31,10 @@ class Router {
31
31
  // Utilities for processing hints
32
32
  this.relaySelectionsFromMap = (valuesByRelay) => (0, lib_1.sortBy)(({ values }) => -values.length, Array.from(valuesByRelay)
33
33
  .map(([relay, values]) => ({ relay, values: (0, lib_1.uniq)(values) })));
34
- this.scoreRelaySelection = ({ values, relay }) => values.length * this.options.getRelayQuality(relay);
34
+ this.scoreRelaySelection = ({ values, relay }) => { var _a, _b; return values.length * (((_b = (_a = this.options).getRelayQuality) === null || _b === void 0 ? void 0 : _b.call(_a, relay)) || 1); };
35
35
  this.sortRelaySelections = (relaySelections) => {
36
36
  const scores = new Map();
37
- const getScore = (relayValues) => scores.get(relayValues.relay) || 0;
37
+ const getScore = (relayValues) => -(scores.get(relayValues.relay) || 0);
38
38
  for (const relayValues of relaySelections) {
39
39
  scores.set(relayValues.relay, this.scoreRelaySelection(relayValues));
40
40
  }
@@ -66,16 +66,17 @@ class Router {
66
66
  ...this.getContextSelections(util_1.Tags.fromEvent(event).context()),
67
67
  ]));
68
68
  this.EventAncestors = (event, type) => {
69
+ var _a, _b;
69
70
  const tags = util_1.Tags.fromEvent(event);
70
71
  const ancestors = tags.ancestors()[type];
71
72
  const pubkeys = tags.whereKey("p").values().valueOf();
72
73
  const communities = tags.communities().values().valueOf();
73
74
  const groups = tags.groups().values().valueOf();
74
75
  const relays = (0, lib_1.uniq)([
75
- ...this.options.getPubkeyRelays(event.pubkey, RelayMode.Read),
76
- ...pubkeys.flatMap((k) => this.options.getPubkeyRelays(k, RelayMode.Write)),
77
- ...communities.flatMap((a) => this.options.getCommunityRelays(a)),
78
- ...groups.flatMap((a) => this.options.getGroupRelays(a)),
76
+ ...((_b = (_a = this.options).getPubkeyRelays) === null || _b === void 0 ? void 0 : _b.call(_a, event.pubkey, RelayMode.Read)) || [],
77
+ ...pubkeys.flatMap((k) => { var _a, _b; return ((_b = (_a = this.options).getPubkeyRelays) === null || _b === void 0 ? void 0 : _b.call(_a, k, RelayMode.Write)) || []; }),
78
+ ...communities.flatMap((a) => { var _a, _b; return ((_b = (_a = this.options).getCommunityRelays) === null || _b === void 0 ? void 0 : _b.call(_a, a)) || []; }),
79
+ ...groups.flatMap((a) => { var _a, _b; return ((_b = (_a = this.options).getGroupRelays) === null || _b === void 0 ? void 0 : _b.call(_a, a)) || []; }),
79
80
  ...ancestors.relays().valueOf(),
80
81
  ]);
81
82
  return this.product(ancestors.values().valueOf(), relays);
@@ -105,25 +106,25 @@ class Router {
105
106
  .policy(this.addNoFallbacks);
106
107
  this.WithinCommunity = (address) => this.scenario(this.getContextSelections(util_1.Tags.wrap([["a", address]])));
107
108
  this.WithinContext = (address) => {
108
- if ((0, Address_1.isGroupAddress)((0, Address_1.decodeAddress)(address))) {
109
+ if ((0, Address_1.isGroupAddress)(address)) {
109
110
  return this.WithinGroup(address);
110
111
  }
111
- if ((0, Address_1.isCommunityAddress)((0, Address_1.decodeAddress)(address))) {
112
+ if ((0, Address_1.isCommunityAddress)(address)) {
112
113
  return this.WithinCommunity(address);
113
114
  }
114
115
  throw new Error(`Unknown context ${address}`);
115
116
  };
116
117
  this.WithinMultipleContexts = (addresses) => this.merge(addresses.map(this.WithinContext));
117
- this.Search = (term, relays = []) => this.product([term], (0, lib_1.uniq)(this.options.getSearchRelays().concat(relays)));
118
- this.Indexers = (relays = []) => this.fromRelays((0, lib_1.uniq)(this.options.getIndexerRelays().concat(relays)));
118
+ this.Search = (term, relays = []) => { var _a, _b; return this.product([term], (0, lib_1.uniq)(relays.concat(((_b = (_a = this.options).getSearchRelays) === null || _b === void 0 ? void 0 : _b.call(_a)) || []))); };
119
+ this.Indexers = (relays = []) => { var _a, _b; return this.fromRelays((0, lib_1.uniq)(relays.concat(((_b = (_a = this.options).getIndexerRelays) === null || _b === void 0 ? void 0 : _b.call(_a)) || []))); };
119
120
  // Fallback policies
120
- this.addNoFallbacks = (count, redundancy) => count;
121
- this.addMinimalFallbacks = (count, redundancy) => Math.max(count, 1);
121
+ this.addNoFallbacks = (count, redundancy) => 0;
122
+ this.addMinimalFallbacks = (count, redundancy) => count > 0 ? 0 : 1;
122
123
  this.addMaximalFallbacks = (count, redundancy) => redundancy - count;
123
124
  // Higher level utils that use hints
124
125
  this.tagPubkey = (pubkey) => util_1.Tag.from(["p", pubkey, this.FromPubkeys([pubkey]).getUrl()]);
125
126
  this.tagEventId = (event, mark = "") => util_1.Tag.from(["e", event.id, this.Event(event).getUrl(), mark, event.pubkey]);
126
- this.tagEventAddress = (event, mark = "") => util_1.Tag.from(["a", (0, Events_1.getAddress)(event), this.Event(event).getUrl(), mark, event.pubkey]);
127
+ this.tagEventAddress = (event, mark = "") => util_1.Tag.from(["a", (0, Address_1.getAddress)(event), this.Event(event).getUrl(), mark, event.pubkey]);
127
128
  this.tagEvent = (event, mark = "") => {
128
129
  const tags = [this.tagEventId(event, mark)];
129
130
  if ((0, Events_1.isReplaceable)(event)) {
@@ -131,7 +132,6 @@ class Router {
131
132
  }
132
133
  return new util_1.Tags(tags);
133
134
  };
134
- this.address = (event) => (0, Address_1.addressFromEvent)(event, this.Event(event).redundancy(3).getUrls());
135
135
  }
136
136
  }
137
137
  exports.Router = Router;
@@ -145,16 +145,16 @@ class RouterScenario {
145
145
  this.redundancy = (redundancy) => this.clone({ redundancy });
146
146
  this.policy = (policy) => this.clone({ policy });
147
147
  this.limit = (limit) => this.clone({ limit });
148
- this.getRedundancy = () => this.options.redundancy || this.router.options.getRedundancy();
148
+ this.getRedundancy = () => { var _a, _b; return this.options.redundancy || ((_b = (_a = this.router.options).getRedundancy) === null || _b === void 0 ? void 0 : _b.call(_a)) || 3; };
149
149
  this.getPolicy = () => this.options.policy || this.router.addMaximalFallbacks;
150
- this.getLimit = () => this.options.limit || this.router.options.getLimit();
150
+ this.getLimit = () => { var _a, _b; return this.options.limit || ((_b = (_a = this.router.options).getLimit) === null || _b === void 0 ? void 0 : _b.call(_a)) || 10; };
151
151
  this.getSelections = () => {
152
152
  const allValues = new Set();
153
153
  const valuesByRelay = new Map();
154
154
  for (const { value, relays } of this.selections) {
155
155
  allValues.add(value);
156
156
  for (const relay of relays) {
157
- if ((0, Relays_1.isShareableRelayUrl)(relay)) {
157
+ if ((0, Relay_1.isShareableRelayUrl)(relay)) {
158
158
  (0, lib_1.pushToMapKey)(valuesByRelay, relay, value);
159
159
  }
160
160
  }
@@ -169,7 +169,7 @@ class RouterScenario {
169
169
  const relaySelections = this.router.relaySelectionsFromMap(valuesByRelay);
170
170
  for (const { relay } of this.router.sortRelaySelections(relaySelections)) {
171
171
  const values = new Set();
172
- for (const value of valuesByRelay.get(relay) || []) {
172
+ for (const value of (0, lib_1.uniq)(valuesByRelay.get(relay) || [])) {
173
173
  const timesSeen = seen.get(value) || 0;
174
174
  if (timesSeen < adjustedRedundancy) {
175
175
  seen.set(value, timesSeen + 1);
@@ -180,7 +180,7 @@ class RouterScenario {
180
180
  result.set(relay, Array.from(values));
181
181
  }
182
182
  }
183
- const fallbacks = (0, lib_1.shuffle)(this.router.options.getStaticRelays());
183
+ const fallbacks = (0, lib_1.shuffle)(this.router.options.getFallbackRelays());
184
184
  const fallbackPolicy = this.getPolicy();
185
185
  for (const { value } of this.selections) {
186
186
  const timesSeen = seen.get(value) || 0;
@@ -1 +1 @@
1
- {"version":3,"file":"Router.cjs","sourceRoot":"","sources":["../Router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Router.cjs","sourceRoot":"","sources":["../Router.ts"],"names":[],"mappings":"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"}
package/build/Router.d.ts CHANGED
@@ -1,20 +1,66 @@
1
1
  import { Tags, Tag } from '@welshman/util';
2
- import type { Rumor } from './Events';
2
+ import type { TrustedEvent } from './Events';
3
3
  export declare enum RelayMode {
4
4
  Read = "read",
5
5
  Write = "write"
6
6
  }
7
7
  export type RouterOptions = {
8
- getUserPubkey: () => string | null;
9
- getGroupRelays: (address: string) => string[];
10
- getCommunityRelays: (address: string) => string[];
11
- getPubkeyRelays: (pubkey: string, mode?: RelayMode) => string[];
12
- getStaticRelays: () => string[];
13
- getIndexerRelays: () => string[];
14
- getSearchRelays: () => string[];
15
- getRelayQuality: (url: string) => number;
16
- getRedundancy: () => number;
17
- getLimit: () => number;
8
+ /**
9
+ * Retrieves the user's public key.
10
+ * @returns The user's public key as a string, or null if not available.
11
+ */
12
+ getUserPubkey?: () => string | null;
13
+ /**
14
+ * Retrieves group relays for the specified community.
15
+ * @param address - The address to retrieve group relays for.
16
+ * @returns An array of group relay URLs as strings.
17
+ */
18
+ getGroupRelays?: (address: string) => string[];
19
+ /**
20
+ * Retrieves relays for the specified community.
21
+ * @param address - The address to retrieve community relays for.
22
+ * @returns An array of community relay URLs as strings.
23
+ */
24
+ getCommunityRelays?: (address: string) => string[];
25
+ /**
26
+ * Retrieves relays for the specified public key and mode.
27
+ * @param pubkey - The public key to retrieve relays for.
28
+ * @param mode - The relay mode (optional).
29
+ * @returns An array of relay URLs as strings.
30
+ */
31
+ getPubkeyRelays?: (pubkey: string, mode?: RelayMode) => string[];
32
+ /**
33
+ * Retrieves fallback relays, for use when no other relays can be selected.
34
+ * @returns An array of relay URLs as strings.
35
+ */
36
+ getFallbackRelays: () => string[];
37
+ /**
38
+ * Retrieves relays likely to return results for kind 0, 3, and 10002.
39
+ * @returns An array of relay URLs as strings.
40
+ */
41
+ getIndexerRelays?: () => string[];
42
+ /**
43
+ * Retrieves relays likely to support NIP-50 search.
44
+ * @returns An array of relay URLs as strings.
45
+ */
46
+ getSearchRelays?: () => string[];
47
+ /**
48
+ * Retrieves the quality of the specified relay.
49
+ * @param url - The URL of the relay to retrieve quality for.
50
+ * @returns The quality of the relay as a number between 0 and 1 inclusive.
51
+ */
52
+ getRelayQuality?: (url: string) => number;
53
+ /**
54
+ * Retrieves the redundancy setting, which is how many relays to use per selection value.
55
+ * @returns The redundancy setting as a number.
56
+ */
57
+ getRedundancy?: () => number;
58
+ /**
59
+ * Retrieves the limit setting, which is the maximum number of relays that should be
60
+ * returned from getUrls and getSelections.
61
+ * @returns The limit setting as a number.
62
+ */
63
+ getLimit?: () => number;
18
64
  };
19
65
  export type ValuesByRelay = Map<string, string[]>;
20
66
  export type RelayValues = {
@@ -72,13 +118,13 @@ export declare class Router {
72
118
  WriteRelays: () => RouterScenario;
73
119
  Messages: (pubkeys: string[]) => RouterScenario;
74
120
  PublishMessage: (pubkey: string) => RouterScenario;
75
- Event: (event: Rumor) => RouterScenario;
76
- EventChildren: (event: Rumor) => RouterScenario;
77
- EventAncestors: (event: Rumor, type: "mentions" | "replies" | "roots") => RouterScenario;
78
- EventMentions: (event: Rumor) => RouterScenario;
79
- EventParents: (event: Rumor) => RouterScenario;
80
- EventRoots: (event: Rumor) => RouterScenario;
81
- PublishEvent: (event: Rumor) => RouterScenario;
121
+ Event: (event: TrustedEvent) => RouterScenario;
122
+ EventChildren: (event: TrustedEvent) => RouterScenario;
123
+ EventAncestors: (event: TrustedEvent, type: "mentions" | "replies" | "roots") => RouterScenario;
124
+ EventMentions: (event: TrustedEvent) => RouterScenario;
125
+ EventParents: (event: TrustedEvent) => RouterScenario;
126
+ EventRoots: (event: TrustedEvent) => RouterScenario;
127
+ PublishEvent: (event: TrustedEvent) => RouterScenario;
82
128
  FromPubkeys: (pubkeys: string[]) => RouterScenario;
83
129
  ForPubkeys: (pubkeys: string[]) => RouterScenario;
84
130
  WithinGroup: (address: string, relays?: string) => RouterScenario;
@@ -88,18 +134,12 @@ export declare class Router {
88
134
  Search: (term: string, relays?: string[]) => RouterScenario;
89
135
  Indexers: (relays?: string[]) => RouterScenario;
90
136
  addNoFallbacks: (count: number, redundancy: number) => number;
91
- addMinimalFallbacks: (count: number, redundancy: number) => number;
137
+ addMinimalFallbacks: (count: number, redundancy: number) => 0 | 1;
92
138
  addMaximalFallbacks: (count: number, redundancy: number) => number;
93
139
  tagPubkey: (pubkey: string) => Tag;
94
- tagEventId: (event: Rumor, mark?: string) => Tag;
95
- tagEventAddress: (event: Rumor, mark?: string) => Tag;
96
- tagEvent: (event: Rumor, mark?: string) => Tags;
97
- address: (event: Rumor) => {
98
- kind: number;
99
- pubkey: string;
100
- identifier: string;
101
- relays: string[];
102
- };
140
+ tagEventId: (event: TrustedEvent, mark?: string) => Tag;
141
+ tagEventAddress: (event: TrustedEvent, mark?: string) => Tag;
142
+ tagEvent: (event: TrustedEvent, mark?: string) => Tags;
103
143
  }
104
144
  export type RouterScenarioOptions = {
105
145
  redundancy?: number;