@welshman/app 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/build/src/collection.cjs +24 -11
  2. package/build/src/collection.cjs.map +1 -1
  3. package/build/src/collection.mjs +24 -11
  4. package/build/src/collection.mjs.map +1 -1
  5. package/build/src/context.cjs +38 -0
  6. package/build/src/context.cjs.map +1 -0
  7. package/build/src/context.d.ts +30 -0
  8. package/build/src/context.mjs +33 -0
  9. package/build/src/context.mjs.map +1 -0
  10. package/build/src/core.cjs +30 -8
  11. package/build/src/core.cjs.map +1 -1
  12. package/build/src/core.d.ts +7 -9
  13. package/build/src/core.mjs +31 -8
  14. package/build/src/core.mjs.map +1 -1
  15. package/build/src/follows.cjs +3 -7
  16. package/build/src/follows.cjs.map +1 -1
  17. package/build/src/follows.d.ts +1 -1
  18. package/build/src/follows.mjs +4 -8
  19. package/build/src/follows.mjs.map +1 -1
  20. package/build/src/handles.cjs +56 -14
  21. package/build/src/handles.cjs.map +1 -1
  22. package/build/src/handles.d.ts +10 -2
  23. package/build/src/handles.mjs +55 -15
  24. package/build/src/handles.mjs.map +1 -1
  25. package/build/src/index.cjs +2 -8
  26. package/build/src/index.cjs.map +1 -1
  27. package/build/src/index.d.ts +2 -0
  28. package/build/src/index.mjs +2 -8
  29. package/build/src/index.mjs.map +1 -1
  30. package/build/src/mutes.cjs +3 -7
  31. package/build/src/mutes.cjs.map +1 -1
  32. package/build/src/mutes.d.ts +1 -1
  33. package/build/src/mutes.mjs +4 -8
  34. package/build/src/mutes.mjs.map +1 -1
  35. package/build/src/profiles.cjs +11 -11
  36. package/build/src/profiles.cjs.map +1 -1
  37. package/build/src/profiles.d.ts +5 -6
  38. package/build/src/profiles.mjs +14 -14
  39. package/build/src/profiles.mjs.map +1 -1
  40. package/build/src/relaySelections.cjs +14 -8
  41. package/build/src/relaySelections.cjs.map +1 -1
  42. package/build/src/relaySelections.d.ts +10 -4
  43. package/build/src/relaySelections.mjs +13 -8
  44. package/build/src/relaySelections.mjs.map +1 -1
  45. package/build/src/relays.cjs +22 -28
  46. package/build/src/relays.cjs.map +1 -1
  47. package/build/src/relays.d.ts +1 -1
  48. package/build/src/relays.mjs +23 -29
  49. package/build/src/relays.mjs.map +1 -1
  50. package/build/src/router.cjs +375 -0
  51. package/build/src/router.cjs.map +1 -0
  52. package/build/src/router.d.ts +197 -0
  53. package/build/src/router.mjs +355 -0
  54. package/build/src/router.mjs.map +1 -0
  55. package/build/src/session.cjs +3 -4
  56. package/build/src/session.cjs.map +1 -1
  57. package/build/src/session.mjs +4 -5
  58. package/build/src/session.mjs.map +1 -1
  59. package/build/src/storage.cjs +23 -13
  60. package/build/src/storage.cjs.map +1 -1
  61. package/build/src/storage.d.ts +26 -2
  62. package/build/src/storage.mjs +24 -14
  63. package/build/src/storage.mjs.map +1 -1
  64. package/build/src/zappers.cjs +37 -16
  65. package/build/src/zappers.cjs.map +1 -1
  66. package/build/src/zappers.d.ts +4 -3
  67. package/build/src/zappers.mjs +37 -17
  68. package/build/src/zappers.mjs.map +1 -1
  69. package/package.json +6 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.cjs","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,197 @@
1
+ import { Tags } from '@welshman/util';
2
+ import type { TrustedEvent, Filter } from '@welshman/util';
3
+ import type { RelaysAndFilters } from '@welshman/net';
4
+ export declare const INDEXED_KINDS: number[];
5
+ export declare enum RelayMode {
6
+ Read = "read",
7
+ Write = "write",
8
+ Inbox = "inbox"
9
+ }
10
+ export type RouterOptions = {
11
+ /**
12
+ * Retrieves the user's public key.
13
+ * @returns The user's public key as a string, or null if not available.
14
+ */
15
+ getUserPubkey?: () => string | null;
16
+ /**
17
+ * Retrieves group relays for the specified community.
18
+ * @param address - The address to retrieve group relays for.
19
+ * @returns An array of group relay URLs as strings.
20
+ */
21
+ getGroupRelays?: (address: string) => string[];
22
+ /**
23
+ * Retrieves relays for the specified community.
24
+ * @param address - The address to retrieve community relays for.
25
+ * @returns An array of community relay URLs as strings.
26
+ */
27
+ getCommunityRelays?: (address: string) => string[];
28
+ /**
29
+ * Retrieves relays for the specified public key and mode.
30
+ * @param pubkey - The public key to retrieve relays for.
31
+ * @param mode - The relay mode (optional). May be "read", "write", or "inbox".
32
+ * @returns An array of relay URLs as strings.
33
+ */
34
+ getPubkeyRelays?: (pubkey: string, mode?: RelayMode) => string[];
35
+ /**
36
+ * Retrieves fallback relays, for use when no other relays can be selected.
37
+ * @returns An array of relay URLs as strings.
38
+ */
39
+ getFallbackRelays: () => string[];
40
+ /**
41
+ * Retrieves relays that index profiles and relay selections.
42
+ * @returns An array of relay URLs as strings.
43
+ */
44
+ getIndexerRelays?: () => string[];
45
+ /**
46
+ * Retrieves relays likely to support NIP-50 search.
47
+ * @returns An array of relay URLs as strings.
48
+ */
49
+ getSearchRelays?: () => string[];
50
+ /**
51
+ * Retrieves the quality of the specified relay.
52
+ * @param url - The URL of the relay to retrieve quality for.
53
+ * @returns The quality of the relay as a number between 0 and 1 inclusive.
54
+ */
55
+ getRelayQuality?: (url: string) => number;
56
+ /**
57
+ * Retrieves the redundancy setting, which is how many relays to use per selection value.
58
+ * @returns The redundancy setting as a number.
59
+ */
60
+ getRedundancy?: () => number;
61
+ /**
62
+ * Retrieves the limit setting, which is the maximum number of relays that should be
63
+ * returned from getUrls and getSelections.
64
+ * @returns The limit setting as a number.
65
+ */
66
+ getLimit?: () => number;
67
+ };
68
+ export type ValuesByRelay = Map<string, string[]>;
69
+ export type RelayValues = {
70
+ relay: string;
71
+ values: string[];
72
+ };
73
+ export type ValueRelays = {
74
+ value: string;
75
+ relays: string[];
76
+ };
77
+ export type FallbackPolicy = (count: number, limit: number) => number;
78
+ export declare const addNoFallbacks: (count: number, redundancy: number) => number;
79
+ export declare const addMinimalFallbacks: (count: number, redundancy: number) => 0 | 1;
80
+ export declare const addMaximalFallbacks: (count: number, redundancy: number) => number;
81
+ export declare class Router {
82
+ readonly options: RouterOptions;
83
+ constructor(options: RouterOptions);
84
+ getPubkeySelection: (pubkey: string, mode?: RelayMode) => {
85
+ value: string;
86
+ relays: string[];
87
+ };
88
+ getPubkeySelections: (pubkeys: string[], mode?: RelayMode) => {
89
+ value: string;
90
+ relays: string[];
91
+ }[];
92
+ getUserSelections: (mode?: RelayMode) => {
93
+ value: string;
94
+ relays: string[];
95
+ }[];
96
+ getContextSelections: (tags: Tags) => {
97
+ value: string;
98
+ relays: string[];
99
+ }[];
100
+ selection: (value: string, relays: Iterable<string>) => {
101
+ value: string;
102
+ relays: string[];
103
+ };
104
+ selections: (values: string[], relays: string[]) => {
105
+ value: string;
106
+ relays: string[];
107
+ }[];
108
+ forceValue: (value: string, selections: ValueRelays[]) => {
109
+ value: string;
110
+ relays: string[];
111
+ }[];
112
+ relaySelectionsFromMap: (valuesByRelay: ValuesByRelay) => {
113
+ relay: string;
114
+ values: string[];
115
+ }[];
116
+ scoreRelaySelection: ({ values, relay }: RelayValues) => number;
117
+ sortRelaySelections: (relaySelections: RelayValues[]) => RelayValues[];
118
+ scenario: (selections: ValueRelays[]) => RouterScenario;
119
+ merge: (scenarios: RouterScenario[]) => RouterScenario;
120
+ product: (values: string[], relays: string[]) => RouterScenario;
121
+ fromRelays: (relays: string[]) => RouterScenario;
122
+ User: () => RouterScenario;
123
+ ReadRelays: () => RouterScenario;
124
+ WriteRelays: () => RouterScenario;
125
+ Messages: (pubkeys: string[]) => RouterScenario;
126
+ PublishMessage: (pubkey: string) => RouterScenario;
127
+ Event: (event: TrustedEvent) => RouterScenario;
128
+ EventChildren: (event: TrustedEvent) => RouterScenario;
129
+ EventAncestors: (event: TrustedEvent, type: "mentions" | "replies" | "roots") => RouterScenario;
130
+ EventMentions: (event: TrustedEvent) => RouterScenario;
131
+ EventParents: (event: TrustedEvent) => RouterScenario;
132
+ EventRoots: (event: TrustedEvent) => RouterScenario;
133
+ PublishEvent: (event: TrustedEvent) => RouterScenario;
134
+ FromPubkeys: (pubkeys: string[]) => RouterScenario;
135
+ ForPubkeys: (pubkeys: string[]) => RouterScenario;
136
+ WithinGroup: (address: string, relays?: string) => RouterScenario;
137
+ WithinCommunity: (address: string) => RouterScenario;
138
+ WithinContext: (address: string) => RouterScenario;
139
+ WithinMultipleContexts: (addresses: string[]) => RouterScenario;
140
+ Search: (term: string, relays?: string[]) => RouterScenario;
141
+ }
142
+ export type RouterScenarioOptions = {
143
+ redundancy?: number;
144
+ policy?: FallbackPolicy;
145
+ limit?: number;
146
+ };
147
+ export declare class RouterScenario {
148
+ readonly router: Router;
149
+ readonly selections: ValueRelays[];
150
+ readonly options: RouterScenarioOptions;
151
+ constructor(router: Router, selections: ValueRelays[], options?: RouterScenarioOptions);
152
+ clone: (options: RouterScenarioOptions) => RouterScenario;
153
+ filter: (f: (selection: ValueRelays) => boolean) => RouterScenario;
154
+ update: (f: (selection: ValueRelays) => ValueRelays) => RouterScenario;
155
+ redundancy: (redundancy: number) => RouterScenario;
156
+ policy: (policy: FallbackPolicy) => RouterScenario;
157
+ limit: (limit: number) => RouterScenario;
158
+ getRedundancy: () => number;
159
+ getPolicy: () => (count: number, redundancy: number) => number;
160
+ getLimit: () => number;
161
+ getSelections: () => {
162
+ relay: string;
163
+ values: string[];
164
+ }[];
165
+ getUrls: () => string[];
166
+ getUrl: () => string;
167
+ }
168
+ export declare const getRelayQuality: (url: string) => number;
169
+ export declare const getPubkeyRelays: (pubkey: string, mode?: string) => string[];
170
+ export declare const getIndexerRelays: () => string[];
171
+ export declare const getFallbackRelays: () => string[];
172
+ export declare const getSearchRelays: () => string[];
173
+ export declare const makeRouter: (options?: Partial<RouterOptions>) => Router;
174
+ export type FilterSelection = {
175
+ id: string;
176
+ filter: Filter;
177
+ scenario: RouterScenario;
178
+ };
179
+ type FilterSelectionRuleState = {
180
+ filter: Filter;
181
+ selections: FilterSelection[];
182
+ };
183
+ type FilterSelectionRule = (state: FilterSelectionRuleState) => boolean;
184
+ export declare const makeFilterSelection: (id: string, filter: Filter, scenario: RouterScenario) => {
185
+ id: string;
186
+ filter: Filter;
187
+ scenario: RouterScenario;
188
+ };
189
+ export declare const getFilterSelectionsForLocalRelay: (state: FilterSelectionRuleState) => boolean;
190
+ export declare const getFilterSelectionsForSearch: (state: FilterSelectionRuleState) => boolean;
191
+ export declare const getFilterSelectionsForContext: (state: FilterSelectionRuleState) => boolean;
192
+ export declare const getFilterSelectionsForIndexedKinds: (state: FilterSelectionRuleState) => boolean;
193
+ export declare const getFilterSelectionsForAuthors: (state: FilterSelectionRuleState) => boolean;
194
+ export declare const getFilterSelectionsForUser: (state: FilterSelectionRuleState) => boolean;
195
+ export declare const defaultFilterSelectionRules: ((state: FilterSelectionRuleState) => boolean)[];
196
+ export declare const getFilterSelections: (filters: Filter[], rules?: FilterSelectionRule[]) => RelaysAndFilters[];
197
+ export {};
@@ -0,0 +1,355 @@
1
+ import { intersection, first, switcher, throttleWithValue, clamp, last, splitAt, identity, sortBy, uniq, shuffle, pushToMapKey, now, assoc, ctx, } from '@welshman/lib';
2
+ import { Tags, getFilterId, unionFilters, isShareableRelayUrl, isCommunityAddress, isGroupAddress, isContextAddress, PROFILE, RELAYS, INBOX_RELAYS, FOLLOWS, LOCAL_RELAY_URL, } from '@welshman/util';
3
+ import { ConnectionStatus } from '@welshman/net';
4
+ import { pubkey } from "./session.mjs";
5
+ import { relaySelectionsByPubkey, getReadRelayUrls, getWriteRelayUrls, getRelayUrls } from "./relaySelections.mjs";
6
+ import { relays, relaysByUrl } from "./relays.mjs";
7
+ export const INDEXED_KINDS = [PROFILE, RELAYS, INBOX_RELAYS, FOLLOWS];
8
+ export var RelayMode;
9
+ (function (RelayMode) {
10
+ RelayMode["Read"] = "read";
11
+ RelayMode["Write"] = "write";
12
+ RelayMode["Inbox"] = "inbox";
13
+ })(RelayMode || (RelayMode = {}));
14
+ export const addNoFallbacks = (count, redundancy) => 0;
15
+ export const addMinimalFallbacks = (count, redundancy) => count > 0 ? 0 : 1;
16
+ export const addMaximalFallbacks = (count, redundancy) => redundancy - count;
17
+ export class Router {
18
+ constructor(options) {
19
+ this.options = options;
20
+ // Utilities derived from options
21
+ 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)) || []); };
22
+ this.getPubkeySelections = (pubkeys, mode) => pubkeys.map(pubkey => this.getPubkeySelection(pubkey, mode));
23
+ this.getUserSelections = (mode) => { var _a, _b; return this.getPubkeySelections([(_b = (_a = this.options).getUserPubkey) === null || _b === void 0 ? void 0 : _b.call(_a)].filter(identity), mode); };
24
+ this.getContextSelections = (tags) => {
25
+ return [
26
+ ...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(),
27
+ ...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(),
28
+ ];
29
+ };
30
+ // Utilities for creating ValueRelays
31
+ this.selection = (value, relays) => ({ value, relays: Array.from(relays) });
32
+ this.selections = (values, relays) => values.map(value => this.selection(value, relays));
33
+ this.forceValue = (value, selections) => selections.map(({ relays }) => this.selection(value, relays));
34
+ // Utilities for processing hints
35
+ this.relaySelectionsFromMap = (valuesByRelay) => sortBy(({ values }) => -values.length, Array.from(valuesByRelay)
36
+ .map(([relay, values]) => ({ relay, values: uniq(values) })));
37
+ 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); };
38
+ this.sortRelaySelections = (relaySelections) => {
39
+ const scores = new Map();
40
+ const getScore = (relayValues) => -(scores.get(relayValues.relay) || 0);
41
+ for (const relayValues of relaySelections) {
42
+ scores.set(relayValues.relay, this.scoreRelaySelection(relayValues));
43
+ }
44
+ return sortBy(getScore, relaySelections.filter(getScore));
45
+ };
46
+ // Utilities for creating scenarios
47
+ this.scenario = (selections) => new RouterScenario(this, selections);
48
+ this.merge = (scenarios) => this.scenario(scenarios.flatMap((scenario) => scenario.selections));
49
+ this.product = (values, relays) => this.scenario(this.selections(values, relays));
50
+ this.fromRelays = (relays) => this.scenario([this.selection("", relays)]);
51
+ // Routing scenarios
52
+ this.User = () => this.scenario(this.getUserSelections());
53
+ this.ReadRelays = () => this.scenario(this.getUserSelections(RelayMode.Read));
54
+ this.WriteRelays = () => this.scenario(this.getUserSelections(RelayMode.Write));
55
+ this.Messages = (pubkeys) => this.scenario([
56
+ ...this.getUserSelections(),
57
+ ...this.getPubkeySelections(pubkeys),
58
+ ]);
59
+ this.PublishMessage = (pubkey) => this.scenario([
60
+ ...this.getUserSelections(RelayMode.Inbox),
61
+ this.getPubkeySelection(pubkey, RelayMode.Inbox),
62
+ ]).policy(addMinimalFallbacks);
63
+ this.Event = (event) => this.scenario(this.forceValue(event.id, [
64
+ this.getPubkeySelection(event.pubkey, RelayMode.Write),
65
+ ...this.getContextSelections(Tags.fromEvent(event).context()),
66
+ ]));
67
+ this.EventChildren = (event) => this.scenario(this.forceValue(event.id, [
68
+ this.getPubkeySelection(event.pubkey, RelayMode.Read),
69
+ ...this.getContextSelections(Tags.fromEvent(event).context()),
70
+ ]));
71
+ this.EventAncestors = (event, type) => {
72
+ var _a, _b;
73
+ const tags = Tags.fromEvent(event);
74
+ const ancestors = tags.ancestors()[type];
75
+ const pubkeys = tags.values("p").valueOf();
76
+ const communities = tags.communities().values().valueOf();
77
+ const groups = tags.groups().values().valueOf();
78
+ const relays = uniq([
79
+ ...((_b = (_a = this.options).getPubkeyRelays) === null || _b === void 0 ? void 0 : _b.call(_a, event.pubkey, RelayMode.Read)) || [],
80
+ ...pubkeys.flatMap((k) => { var _a, _b; return ((_b = (_a = this.options).getPubkeyRelays) === null || _b === void 0 ? void 0 : _b.call(_a, k, RelayMode.Write)) || []; }),
81
+ ...communities.flatMap((a) => { var _a, _b; return ((_b = (_a = this.options).getCommunityRelays) === null || _b === void 0 ? void 0 : _b.call(_a, a)) || []; }),
82
+ ...groups.flatMap((a) => { var _a, _b; return ((_b = (_a = this.options).getGroupRelays) === null || _b === void 0 ? void 0 : _b.call(_a, a)) || []; }),
83
+ ...ancestors.relays().valueOf(),
84
+ ]);
85
+ return this.product(ancestors.values().valueOf(), relays);
86
+ };
87
+ this.EventMentions = (event) => this.EventAncestors(event, "mentions");
88
+ this.EventParents = (event) => this.EventAncestors(event, "replies");
89
+ this.EventRoots = (event) => this.EventAncestors(event, "roots");
90
+ this.PublishEvent = (event) => {
91
+ const tags = Tags.fromEvent(event);
92
+ const mentions = tags.values("p").valueOf();
93
+ // If we're publishing to private groups, only publish to those groups' relays
94
+ if (tags.groups().exists()) {
95
+ return this
96
+ .scenario(this.getContextSelections(tags.groups()))
97
+ .policy(addNoFallbacks);
98
+ }
99
+ return this.scenario(this.forceValue(event.id, [
100
+ this.getPubkeySelection(event.pubkey, RelayMode.Write),
101
+ ...this.getContextSelections(tags.context()),
102
+ ...this.getPubkeySelections(mentions, RelayMode.Read),
103
+ ]));
104
+ };
105
+ this.FromPubkeys = (pubkeys) => this.scenario(this.getPubkeySelections(pubkeys, RelayMode.Write));
106
+ this.ForPubkeys = (pubkeys) => this.scenario(this.getPubkeySelections(pubkeys, RelayMode.Read));
107
+ this.WithinGroup = (address, relays) => this
108
+ .scenario(this.getContextSelections(Tags.wrap([["a", address]])))
109
+ .policy(addNoFallbacks);
110
+ this.WithinCommunity = (address) => this.scenario(this.getContextSelections(Tags.wrap([["a", address]])));
111
+ this.WithinContext = (address) => {
112
+ if (isGroupAddress(address)) {
113
+ return this.WithinGroup(address);
114
+ }
115
+ if (isCommunityAddress(address)) {
116
+ return this.WithinCommunity(address);
117
+ }
118
+ throw new Error(`Unknown context ${address}`);
119
+ };
120
+ this.WithinMultipleContexts = (addresses) => this.merge(addresses.map(this.WithinContext));
121
+ this.Search = (term, relays = []) => { var _a, _b; return this.product([term], uniq(relays.concat(((_b = (_a = this.options).getSearchRelays) === null || _b === void 0 ? void 0 : _b.call(_a)) || []))); };
122
+ }
123
+ }
124
+ export class RouterScenario {
125
+ constructor(router, selections, options = {}) {
126
+ this.router = router;
127
+ this.selections = selections;
128
+ this.options = options;
129
+ this.clone = (options) => new RouterScenario(this.router, this.selections, { ...this.options, ...options });
130
+ this.filter = (f) => new RouterScenario(this.router, this.selections.filter(selection => f(selection)), this.options);
131
+ this.update = (f) => new RouterScenario(this.router, this.selections.map(selection => f(selection)), this.options);
132
+ this.redundancy = (redundancy) => this.clone({ redundancy });
133
+ this.policy = (policy) => this.clone({ policy });
134
+ this.limit = (limit) => this.clone({ limit });
135
+ 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; };
136
+ this.getPolicy = () => this.options.policy || addMaximalFallbacks;
137
+ 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; };
138
+ this.getSelections = () => {
139
+ const allValues = new Set();
140
+ const valuesByRelay = new Map();
141
+ for (const { value, relays } of this.selections) {
142
+ allValues.add(value);
143
+ for (const relay of relays) {
144
+ if (isShareableRelayUrl(relay)) {
145
+ pushToMapKey(valuesByRelay, relay, value);
146
+ }
147
+ }
148
+ }
149
+ // Adjust redundancy by limit, since if we're looking for very specific values odds
150
+ // are we're less tolerant of failure. Add more redundancy to fill our relay limit.
151
+ const limit = this.getLimit();
152
+ const redundancy = this.getRedundancy();
153
+ const adjustedRedundancy = Math.max(redundancy, redundancy * (limit / (allValues.size * redundancy)));
154
+ const seen = new Map();
155
+ const result = new Map();
156
+ const relaySelections = this.router.relaySelectionsFromMap(valuesByRelay);
157
+ for (const { relay } of this.router.sortRelaySelections(relaySelections)) {
158
+ const values = new Set();
159
+ for (const value of uniq(valuesByRelay.get(relay) || [])) {
160
+ const timesSeen = seen.get(value) || 0;
161
+ if (timesSeen < adjustedRedundancy) {
162
+ seen.set(value, timesSeen + 1);
163
+ values.add(value);
164
+ }
165
+ }
166
+ if (values.size > 0) {
167
+ result.set(relay, Array.from(values));
168
+ }
169
+ }
170
+ const fallbacks = shuffle(this.router.options.getFallbackRelays());
171
+ const fallbackPolicy = this.getPolicy();
172
+ for (const { value } of this.selections) {
173
+ const timesSeen = seen.get(value) || 0;
174
+ const fallbacksNeeded = fallbackPolicy(timesSeen, adjustedRedundancy);
175
+ if (fallbacksNeeded > 0) {
176
+ for (const relay of fallbacks.slice(0, fallbacksNeeded)) {
177
+ pushToMapKey(result, relay, value);
178
+ }
179
+ }
180
+ }
181
+ const [keep, discard] = splitAt(limit, this.router.relaySelectionsFromMap(result));
182
+ for (const target of keep.slice(0, redundancy)) {
183
+ target.values = uniq(discard.concat(target).flatMap((selection) => selection.values));
184
+ }
185
+ return keep;
186
+ };
187
+ this.getUrls = () => this.getSelections().map((selection) => selection.relay);
188
+ this.getUrl = () => first(this.getUrls());
189
+ }
190
+ }
191
+ // Default router options
192
+ export const getRelayQuality = (url) => {
193
+ var _a, _b;
194
+ const oneMinute = 60 * 1000;
195
+ const oneHour = 60 * oneMinute;
196
+ const oneDay = 24 * oneHour;
197
+ const oneWeek = 7 * oneDay;
198
+ const relay = relaysByUrl.get().get(url);
199
+ const connect_count = ((_a = relay === null || relay === void 0 ? void 0 : relay.stats) === null || _a === void 0 ? void 0 : _a.connect_count) || 0;
200
+ const recent_errors = ((_b = relay === null || relay === void 0 ? void 0 : relay.stats) === null || _b === void 0 ? void 0 : _b.recent_errors) || [];
201
+ const connection = ctx.net.pool.get(url, { autoConnect: false });
202
+ // If we haven't connected, consult our relay record and see if there has
203
+ // been a recent fault. If there has been, penalize the relay. If there have been several,
204
+ // don't use the relay.
205
+ if (!connection) {
206
+ const lastFault = last(recent_errors) || 0;
207
+ if (recent_errors.filter(n => n > now() - oneHour).length > 10) {
208
+ return 0;
209
+ }
210
+ if (recent_errors.filter(n => n > now() - oneDay).length > 50) {
211
+ return 0;
212
+ }
213
+ if (recent_errors.filter(n => n > now() - oneWeek).length > 100) {
214
+ return 0;
215
+ }
216
+ return Math.max(0, Math.min(0.5, (now() - oneMinute - lastFault) / oneHour));
217
+ }
218
+ return switcher(connection.meta.getStatus(), {
219
+ [ConnectionStatus.Unauthorized]: 0.5,
220
+ [ConnectionStatus.Forbidden]: 0,
221
+ [ConnectionStatus.Error]: 0,
222
+ [ConnectionStatus.Closed]: 0.6,
223
+ [ConnectionStatus.Slow]: 0.5,
224
+ [ConnectionStatus.Ok]: 1,
225
+ default: clamp([0.5, 1], connect_count / 1000),
226
+ });
227
+ };
228
+ export const getPubkeyRelays = (pubkey, mode) => {
229
+ const $relaySelections = relaySelectionsByPubkey.get();
230
+ const $inboxSelections = relaySelectionsByPubkey.get();
231
+ switch (mode) {
232
+ case RelayMode.Read: return getReadRelayUrls($relaySelections.get(pubkey));
233
+ case RelayMode.Write: return getWriteRelayUrls($relaySelections.get(pubkey));
234
+ case RelayMode.Inbox: return getRelayUrls($inboxSelections.get(pubkey));
235
+ default: return getRelayUrls($relaySelections.get(pubkey));
236
+ }
237
+ };
238
+ export const getIndexerRelays = () => ctx.app.indexerRelays || getFallbackRelays();
239
+ export const getFallbackRelays = throttleWithValue(300, () => sortBy(r => -getRelayQuality(r.url), relays.get()).slice(0, 30).map(r => r.url));
240
+ export const getSearchRelays = throttleWithValue(300, () => sortBy(r => -getRelayQuality(r.url), relays.get())
241
+ .filter(r => { var _a, _b; return (_b = (_a = r.profile) === null || _a === void 0 ? void 0 : _a.supported_nips) === null || _b === void 0 ? void 0 : _b.includes(50); })
242
+ .slice(0, 30).map(r => r.url));
243
+ export const makeRouter = (options = {}) => new Router({
244
+ getPubkeyRelays,
245
+ getIndexerRelays,
246
+ getFallbackRelays,
247
+ getSearchRelays,
248
+ getRelayQuality,
249
+ getUserPubkey: () => pubkey.get(),
250
+ getRedundancy: () => 2,
251
+ getLimit: () => 5,
252
+ ...options,
253
+ });
254
+ export const makeFilterSelection = (id, filter, scenario) => ({ id, filter, scenario });
255
+ export const getFilterSelectionsForLocalRelay = (state) => {
256
+ const id = getFilterId(state.filter);
257
+ const scenario = ctx.app.router.product([id], [LOCAL_RELAY_URL]);
258
+ state.selections.push(makeFilterSelection(id, state.filter, scenario));
259
+ return false;
260
+ };
261
+ export const getFilterSelectionsForSearch = (state) => {
262
+ var _a, _b;
263
+ if (!state.filter.search)
264
+ return false;
265
+ const id = getFilterId(state.filter);
266
+ const relays = ((_b = (_a = ctx.app.router.options).getSearchRelays) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
267
+ const scenario = ctx.app.router.product([id], relays);
268
+ state.selections.push(makeFilterSelection(id, state.filter, scenario));
269
+ return true;
270
+ };
271
+ export const getFilterSelectionsForContext = (state) => {
272
+ var _a;
273
+ const contexts = ((_a = state.filter["#a"]) === null || _a === void 0 ? void 0 : _a.filter(isContextAddress)) || [];
274
+ if (contexts.length === 0)
275
+ return false;
276
+ const scenario = ctx.app.router.WithinMultipleContexts(contexts);
277
+ for (const { relay, values } of scenario.getSelections()) {
278
+ const contextFilter = { ...state.filter, "#a": Array.from(values) };
279
+ const id = getFilterId(contextFilter);
280
+ const scenario = ctx.app.router.product([id], [relay]);
281
+ state.selections.push(makeFilterSelection(id, contextFilter, scenario));
282
+ }
283
+ return true;
284
+ };
285
+ export const getFilterSelectionsForIndexedKinds = (state) => {
286
+ var _a, _b;
287
+ const kinds = intersection(INDEXED_KINDS, state.filter.kinds || []);
288
+ if (kinds.length === 0)
289
+ return false;
290
+ const id = getFilterId({ ...state.filter, kinds });
291
+ const relays = ((_b = (_a = ctx.app.router.options).getIndexerRelays) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
292
+ const scenario = ctx.app.router.product([id], relays);
293
+ state.selections.push(makeFilterSelection(id, state.filter, scenario));
294
+ return false;
295
+ };
296
+ export const getFilterSelectionsForAuthors = (state) => {
297
+ // If we have a ton of authors, just use our indexers
298
+ if (!state.filter.authors || state.filter.authors.length > 30)
299
+ return false;
300
+ const id = getFilterId(state.filter);
301
+ const scenario = ctx.app.router.FromPubkeys(state.filter.authors).update(assoc('value', id));
302
+ state.selections.push(makeFilterSelection(id, state.filter, scenario));
303
+ return false;
304
+ };
305
+ export const getFilterSelectionsForUser = (state) => {
306
+ const id = getFilterId(state.filter);
307
+ const relays = ctx.app.router.ReadRelays().getUrls();
308
+ const scenario = ctx.app.router.product([id], relays);
309
+ state.selections.push(makeFilterSelection(id, state.filter, scenario));
310
+ return false;
311
+ };
312
+ export const defaultFilterSelectionRules = [
313
+ getFilterSelectionsForLocalRelay,
314
+ getFilterSelectionsForSearch,
315
+ getFilterSelectionsForContext,
316
+ getFilterSelectionsForIndexedKinds,
317
+ getFilterSelectionsForAuthors,
318
+ getFilterSelectionsForUser,
319
+ ];
320
+ export const getFilterSelections = (filters, rules = defaultFilterSelectionRules) => {
321
+ var _a, _b, _c, _d;
322
+ const scenarios = [];
323
+ const filtersById = new Map();
324
+ for (const filter of filters) {
325
+ const state = { filter, selections: [] };
326
+ for (const rule of rules) {
327
+ const done = rule(state);
328
+ if (done) {
329
+ break;
330
+ }
331
+ }
332
+ for (const { id, filter, scenario } of state.selections) {
333
+ filtersById.set(id, filter);
334
+ scenarios.push(scenario.policy(addNoFallbacks));
335
+ }
336
+ }
337
+ // Use low redundancy because filters will be very low cardinality
338
+ const selections = ctx.app.router
339
+ .merge(scenarios)
340
+ .redundancy(1)
341
+ .getSelections()
342
+ .map(({ values, relay }) => ({
343
+ filters: values.map(id => filtersById.get(id)),
344
+ relays: [relay],
345
+ }));
346
+ // Pubkey-based selections can get really big. Use the most popular relays for the long tail
347
+ const limit = ((_b = (_a = ctx.app.router.options).getLimit) === null || _b === void 0 ? void 0 : _b.call(_a)) || 8;
348
+ const redundancy = ((_d = (_c = ctx.app.router.options).getRedundancy) === null || _d === void 0 ? void 0 : _d.call(_c)) || 3;
349
+ const [keep, discard] = splitAt(limit, selections);
350
+ for (const target of keep.slice(0, redundancy)) {
351
+ target.filters = unionFilters([...discard, target].flatMap(s => s.filters));
352
+ }
353
+ return keep;
354
+ };
355
+ //# sourceMappingURL=router.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.mjs","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"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"}