@welshman/app 0.1.2 → 0.2.1

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 (226) hide show
  1. package/dist/app/src/blossom.d.ts +4 -0
  2. package/dist/app/src/blossom.d.ts.map +1 -0
  3. package/dist/app/src/blossom.js +16 -0
  4. package/dist/app/src/blossom.js.map +1 -0
  5. package/dist/app/src/commands.d.ts +13 -42
  6. package/dist/app/src/commands.d.ts.map +1 -1
  7. package/dist/app/src/commands.js +13 -3
  8. package/dist/app/src/commands.js.map +1 -1
  9. package/dist/app/src/core.d.ts +0 -3
  10. package/dist/app/src/core.d.ts.map +1 -1
  11. package/dist/app/src/core.js +13 -31
  12. package/dist/app/src/core.js.map +1 -1
  13. package/dist/app/src/feeds.d.ts +3 -5
  14. package/dist/app/src/feeds.d.ts.map +1 -1
  15. package/dist/app/src/feeds.js +4 -55
  16. package/dist/app/src/feeds.js.map +1 -1
  17. package/dist/app/src/follows.d.ts.map +1 -1
  18. package/dist/app/src/follows.js +3 -4
  19. package/dist/app/src/follows.js.map +1 -1
  20. package/dist/app/src/handles.d.ts.map +1 -1
  21. package/dist/app/src/handles.js +4 -2
  22. package/dist/app/src/handles.js.map +1 -1
  23. package/dist/app/src/index.d.ts +2 -5
  24. package/dist/app/src/index.d.ts.map +1 -1
  25. package/dist/app/src/index.js +40 -5
  26. package/dist/app/src/index.js.map +1 -1
  27. package/dist/app/src/mutes.d.ts.map +1 -1
  28. package/dist/app/src/mutes.js +3 -4
  29. package/dist/app/src/mutes.js.map +1 -1
  30. package/dist/app/src/pins.d.ts.map +1 -1
  31. package/dist/app/src/pins.js +3 -4
  32. package/dist/app/src/pins.js.map +1 -1
  33. package/dist/app/src/profiles.d.ts +1 -1
  34. package/dist/app/src/profiles.d.ts.map +1 -1
  35. package/dist/app/src/profiles.js +5 -6
  36. package/dist/app/src/profiles.js.map +1 -1
  37. package/dist/app/src/relaySelections.d.ts +10 -5
  38. package/dist/app/src/relaySelections.d.ts.map +1 -1
  39. package/dist/app/src/relaySelections.js +31 -41
  40. package/dist/app/src/relaySelections.js.map +1 -1
  41. package/dist/app/src/relays.d.ts +1 -0
  42. package/dist/app/src/relays.d.ts.map +1 -1
  43. package/dist/app/src/relays.js +31 -4
  44. package/dist/app/src/relays.js.map +1 -1
  45. package/dist/app/src/search.d.ts.map +1 -1
  46. package/dist/app/src/search.js +1 -1
  47. package/dist/app/src/search.js.map +1 -1
  48. package/dist/app/src/session.d.ts +25 -7
  49. package/dist/app/src/session.d.ts.map +1 -1
  50. package/dist/app/src/session.js +50 -3
  51. package/dist/app/src/session.js.map +1 -1
  52. package/dist/app/src/storage.d.ts +1 -0
  53. package/dist/app/src/storage.d.ts.map +1 -1
  54. package/dist/app/src/storage.js +6 -1
  55. package/dist/app/src/storage.js.map +1 -1
  56. package/dist/app/src/storageAdapters.d.ts +88 -0
  57. package/dist/app/src/storageAdapters.d.ts.map +1 -0
  58. package/dist/app/src/storageAdapters.js +181 -0
  59. package/dist/app/src/storageAdapters.js.map +1 -0
  60. package/dist/app/src/sync.d.ts.map +1 -1
  61. package/dist/app/src/sync.js +7 -9
  62. package/dist/app/src/sync.js.map +1 -1
  63. package/dist/app/src/tags.js +1 -1
  64. package/dist/app/src/tags.js.map +1 -1
  65. package/dist/app/src/thunk.d.ts +38 -53
  66. package/dist/app/src/thunk.d.ts.map +1 -1
  67. package/dist/app/src/thunk.js +182 -132
  68. package/dist/app/src/thunk.js.map +1 -1
  69. package/dist/app/src/user.d.ts +13 -7
  70. package/dist/app/src/user.d.ts.map +1 -1
  71. package/dist/app/src/user.js +28 -28
  72. package/dist/app/src/user.js.map +1 -1
  73. package/dist/app/src/zappers.js +1 -1
  74. package/dist/dvm/src/handler.d.ts.map +1 -1
  75. package/dist/dvm/src/handler.js +9 -7
  76. package/dist/dvm/src/handler.js.map +1 -1
  77. package/dist/dvm/src/request.d.ts +6 -15
  78. package/dist/dvm/src/request.d.ts.map +1 -1
  79. package/dist/dvm/src/request.js +23 -23
  80. package/dist/dvm/src/request.js.map +1 -1
  81. package/dist/feeds/src/compiler.d.ts +15 -4
  82. package/dist/feeds/src/compiler.d.ts.map +1 -1
  83. package/dist/feeds/src/compiler.js +11 -6
  84. package/dist/feeds/src/compiler.js.map +1 -1
  85. package/dist/feeds/src/controller.d.ts +16 -9
  86. package/dist/feeds/src/controller.d.ts.map +1 -1
  87. package/dist/feeds/src/controller.js +36 -36
  88. package/dist/feeds/src/controller.js.map +1 -1
  89. package/dist/feeds/src/core.d.ts +1 -23
  90. package/dist/feeds/src/core.d.ts.map +1 -1
  91. package/dist/feeds/src/display.d.ts +21 -0
  92. package/dist/feeds/src/display.d.ts.map +1 -0
  93. package/dist/feeds/src/display.js +144 -0
  94. package/dist/feeds/src/display.js.map +1 -0
  95. package/dist/feeds/src/index.d.ts +2 -0
  96. package/dist/feeds/src/index.d.ts.map +1 -1
  97. package/dist/feeds/src/index.js +2 -0
  98. package/dist/feeds/src/index.js.map +1 -1
  99. package/dist/feeds/src/request.d.ts +22 -0
  100. package/dist/feeds/src/request.d.ts.map +1 -0
  101. package/dist/feeds/src/request.js +61 -0
  102. package/dist/feeds/src/request.js.map +1 -0
  103. package/dist/feeds/src/utils.d.ts +2 -1
  104. package/dist/feeds/src/utils.d.ts.map +1 -1
  105. package/dist/feeds/src/utils.js +50 -1
  106. package/dist/feeds/src/utils.js.map +1 -1
  107. package/dist/feeds/src/validate.d.ts +24 -0
  108. package/dist/feeds/src/validate.d.ts.map +1 -0
  109. package/dist/feeds/src/validate.js +137 -0
  110. package/dist/feeds/src/validate.js.map +1 -0
  111. package/dist/lib/src/TaskQueue.d.ts +2 -0
  112. package/dist/lib/src/TaskQueue.d.ts.map +1 -1
  113. package/dist/lib/src/TaskQueue.js +10 -0
  114. package/dist/lib/src/TaskQueue.js.map +1 -1
  115. package/dist/lib/src/Tools.d.ts +100 -3
  116. package/dist/lib/src/Tools.d.ts.map +1 -1
  117. package/dist/lib/src/Tools.js +169 -3
  118. package/dist/lib/src/Tools.js.map +1 -1
  119. package/dist/net/src/auth.d.ts +2 -1
  120. package/dist/net/src/auth.d.ts.map +1 -1
  121. package/dist/net/src/auth.js +16 -2
  122. package/dist/net/src/auth.js.map +1 -1
  123. package/dist/net/src/context.d.ts.map +1 -1
  124. package/dist/net/src/context.js +3 -3
  125. package/dist/net/src/context.js.map +1 -1
  126. package/dist/net/src/diff.d.ts.map +1 -1
  127. package/dist/net/src/diff.js +11 -12
  128. package/dist/net/src/diff.js.map +1 -1
  129. package/dist/net/src/policy.js +3 -3
  130. package/dist/net/src/policy.js.map +1 -1
  131. package/dist/net/src/pool.d.ts +1 -1
  132. package/dist/net/src/pool.d.ts.map +1 -1
  133. package/dist/net/src/pool.js +1 -1
  134. package/dist/net/src/pool.js.map +1 -1
  135. package/dist/net/src/publish.d.ts +29 -30
  136. package/dist/net/src/publish.d.ts.map +1 -1
  137. package/dist/net/src/publish.js +79 -108
  138. package/dist/net/src/publish.js.map +1 -1
  139. package/dist/net/src/request.d.ts +26 -60
  140. package/dist/net/src/request.d.ts.map +1 -1
  141. package/dist/net/src/request.js +170 -158
  142. package/dist/net/src/request.js.map +1 -1
  143. package/dist/net/src/tracker.d.ts.map +1 -1
  144. package/dist/net/src/tracker.js +4 -4
  145. package/dist/net/src/tracker.js.map +1 -1
  146. package/dist/relay/src/repository.d.ts +1 -1
  147. package/dist/relay/src/repository.d.ts.map +1 -1
  148. package/dist/relay/src/repository.js +1 -1
  149. package/dist/relay/src/repository.js.map +1 -1
  150. package/dist/signer/src/signers/nip46.d.ts +3 -3
  151. package/dist/signer/src/signers/nip46.d.ts.map +1 -1
  152. package/dist/signer/src/signers/nip46.js +26 -20
  153. package/dist/signer/src/signers/nip46.js.map +1 -1
  154. package/dist/store/src/collection.d.ts +32 -0
  155. package/dist/store/src/collection.d.ts.map +1 -0
  156. package/dist/{app → store}/src/collection.js +20 -8
  157. package/dist/store/src/collection.js.map +1 -0
  158. package/dist/store/src/custom.d.ts +10 -0
  159. package/dist/store/src/custom.d.ts.map +1 -0
  160. package/dist/store/src/custom.js +41 -0
  161. package/dist/store/src/custom.js.map +1 -0
  162. package/dist/store/src/getter.d.ts +11 -0
  163. package/dist/store/src/getter.d.ts.map +1 -0
  164. package/dist/store/src/getter.js +11 -0
  165. package/dist/store/src/getter.js.map +1 -0
  166. package/dist/store/src/index.d.ts +6 -34
  167. package/dist/store/src/index.d.ts.map +1 -1
  168. package/dist/store/src/index.js +6 -163
  169. package/dist/store/src/index.js.map +1 -1
  170. package/dist/store/src/repository.d.ts +16 -0
  171. package/dist/store/src/repository.d.ts.map +1 -0
  172. package/dist/store/src/repository.js +100 -0
  173. package/dist/store/src/repository.js.map +1 -0
  174. package/dist/store/src/synced.d.ts +2 -0
  175. package/dist/store/src/synced.d.ts.map +1 -0
  176. package/dist/store/src/synced.js +9 -0
  177. package/dist/store/src/synced.js.map +1 -0
  178. package/dist/store/src/throttle.d.ts +3 -0
  179. package/dist/store/src/throttle.d.ts.map +1 -0
  180. package/dist/store/src/throttle.js +9 -0
  181. package/dist/store/src/throttle.js.map +1 -0
  182. package/dist/tsconfig.build.tsbuildinfo +1 -1
  183. package/dist/util/src/Events.d.ts +1 -1
  184. package/dist/util/src/Events.d.ts.map +1 -1
  185. package/dist/util/src/Events.js +6 -5
  186. package/dist/util/src/Events.js.map +1 -1
  187. package/dist/util/src/Kinds.d.ts +3 -0
  188. package/dist/util/src/Kinds.d.ts.map +1 -1
  189. package/dist/util/src/Kinds.js +3 -0
  190. package/dist/util/src/Kinds.js.map +1 -1
  191. package/dist/util/src/List.d.ts +2 -0
  192. package/dist/util/src/List.d.ts.map +1 -1
  193. package/dist/util/src/List.js +10 -3
  194. package/dist/util/src/List.js.map +1 -1
  195. package/dist/util/src/Profile.d.ts +3 -10
  196. package/dist/util/src/Profile.d.ts.map +1 -1
  197. package/dist/util/src/Profile.js +1 -0
  198. package/dist/util/src/Profile.js.map +1 -1
  199. package/dist/util/src/Relay.d.ts +6 -0
  200. package/dist/util/src/Relay.d.ts.map +1 -1
  201. package/dist/util/src/Relay.js +9 -2
  202. package/dist/util/src/Relay.js.map +1 -1
  203. package/dist/util/src/Tags.d.ts +1 -0
  204. package/dist/util/src/Tags.d.ts.map +1 -1
  205. package/dist/util/src/Tags.js +2 -1
  206. package/dist/util/src/Tags.js.map +1 -1
  207. package/package.json +10 -9
  208. package/dist/app/src/adapters.d.ts +0 -33
  209. package/dist/app/src/adapters.d.ts.map +0 -1
  210. package/dist/app/src/adapters.js +0 -84
  211. package/dist/app/src/adapters.js.map +0 -1
  212. package/dist/app/src/collection.d.ts +0 -13
  213. package/dist/app/src/collection.d.ts.map +0 -1
  214. package/dist/app/src/collection.js.map +0 -1
  215. package/dist/app/src/freshness.d.ts +0 -11
  216. package/dist/app/src/freshness.d.ts.map +0 -1
  217. package/dist/app/src/freshness.js +0 -14
  218. package/dist/app/src/freshness.js.map +0 -1
  219. package/dist/app/src/router.d.ts +0 -199
  220. package/dist/app/src/router.d.ts.map +0 -1
  221. package/dist/app/src/router.js +0 -273
  222. package/dist/app/src/router.js.map +0 -1
  223. package/dist/app/src/util.d.ts +0 -13
  224. package/dist/app/src/util.d.ts.map +0 -1
  225. package/dist/app/src/util.js +0 -46
  226. package/dist/app/src/util.js.map +0 -1
@@ -1,273 +0,0 @@
1
- import { intersection, mergeLeft, first, clamp, sortBy, shuffle, pushToMapKey, inc, add, ago, take, chunks, MINUTE, HOUR, DAY, } from "@welshman/lib";
2
- import { getFilterId, isRelayUrl, isOnionUrl, isLocalUrl, isIPAddress, isShareableRelayUrl, COMMENT, PROFILE, RELAYS, INBOX_RELAYS, FOLLOWS, WRAP, getReplyTags, getCommentTags, getPubkeyTagValues, normalizeRelayUrl, } from "@welshman/util";
3
- import { Pool } from "@welshman/net";
4
- import { pubkey } from "./session.js";
5
- import { relaySelectionsByPubkey, inboxRelaySelectionsByPubkey, getReadRelayUrls, getWriteRelayUrls, getRelayUrls, } from "./relaySelections.js";
6
- import { relaysByUrl } from "./relays.js";
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
- const makeSelection = (relays, weight = 1) => ({
15
- relays: relays.filter(isRelayUrl).map(normalizeRelayUrl),
16
- weight,
17
- });
18
- export const addNoFallbacks = (count, limit) => 0;
19
- export const addMinimalFallbacks = (count, limit) => (count > 0 ? 0 : 1);
20
- export const addMaximalFallbacks = (count, limit) => limit - count;
21
- // Default router options
22
- export const getRelayQuality = (url) => {
23
- const relay = relaysByUrl.get().get(url);
24
- // Skip non-relays entirely
25
- if (!isRelayUrl(url))
26
- return 0;
27
- // If we have recent errors, skip it
28
- if (relay?.stats) {
29
- if (relay.stats.recent_errors.filter(n => n > ago(MINUTE)).length > 0)
30
- return 0;
31
- if (relay.stats.recent_errors.filter(n => n > ago(HOUR)).length > 3)
32
- return 0;
33
- if (relay.stats.recent_errors.filter(n => n > ago(DAY)).length > 10)
34
- return 0;
35
- }
36
- // Prefer stuff we're connected to
37
- if (Pool.getSingleton().has(url))
38
- return 1;
39
- // Prefer stuff we've connected to in the past
40
- if (relay?.stats)
41
- return 0.9;
42
- // If it's not weird url give it an ok score
43
- if (!isIPAddress(url) && !isLocalUrl(url) && !isOnionUrl(url) && !url.startsWith("ws://")) {
44
- return 0.8;
45
- }
46
- // Default to a "meh" score
47
- return 0.7;
48
- };
49
- export const getPubkeyRelays = (pubkey, mode) => {
50
- const $relaySelections = relaySelectionsByPubkey.get();
51
- const $inboxSelections = inboxRelaySelectionsByPubkey.get();
52
- switch (mode) {
53
- case RelayMode.Read:
54
- return getReadRelayUrls($relaySelections.get(pubkey));
55
- case RelayMode.Write:
56
- return getWriteRelayUrls($relaySelections.get(pubkey));
57
- case RelayMode.Inbox:
58
- return getRelayUrls($inboxSelections.get(pubkey));
59
- default:
60
- return getRelayUrls($relaySelections.get(pubkey));
61
- }
62
- };
63
- export const routerContext = {
64
- getRelayQuality,
65
- getPubkeyRelays,
66
- getDefaultRelays: () => ["wss://relay.damus.io/", "wss://nos.lol/"],
67
- getIndexerRelays: () => ["wss://purplepag.es/", "wss://relay.nostr.band/"],
68
- getSearchRelays: () => ["wss://relay.nostr.band/", "wss://nostr.wine/"],
69
- getUserPubkey: () => pubkey.get(),
70
- getLimit: () => 3,
71
- };
72
- // Router class
73
- export class Router {
74
- options;
75
- static configure(options) {
76
- Object.assign(routerContext, options);
77
- }
78
- static get() {
79
- return new Router(routerContext);
80
- }
81
- constructor(options) {
82
- this.options = mergeLeft(options, routerContext);
83
- }
84
- // Utilities derived from options
85
- getRelaysForPubkey = (pubkey, mode) => this.options.getPubkeyRelays?.(pubkey, mode) || [];
86
- getRelaysForPubkeys = (pubkeys, mode) => pubkeys.map(pubkey => this.getRelaysForPubkey(pubkey, mode));
87
- getRelaysForUser = (mode) => {
88
- const pubkey = this.options.getUserPubkey?.();
89
- return pubkey ? this.getRelaysForPubkey(pubkey, mode) : [];
90
- };
91
- // Utilities for creating scenarios
92
- scenario = (selections) => new RouterScenario(this, selections);
93
- merge = (scenarios) => this.scenario(scenarios.flatMap((scenario) => scenario.selections));
94
- // Routing scenarios
95
- FromRelays = (relays) => this.scenario([makeSelection(relays)]);
96
- Search = () => this.FromRelays(this.options.getSearchRelays?.() || []);
97
- Index = () => this.FromRelays(this.options.getIndexerRelays?.() || []);
98
- Default = () => this.FromRelays(this.options.getDefaultRelays?.() || []);
99
- ForUser = () => this.FromRelays(this.getRelaysForUser(RelayMode.Read));
100
- FromUser = () => this.FromRelays(this.getRelaysForUser(RelayMode.Write));
101
- UserInbox = () => this.FromRelays(this.getRelaysForUser(RelayMode.Inbox));
102
- ForPubkey = (pubkey) => this.FromRelays(this.getRelaysForPubkey(pubkey, RelayMode.Read));
103
- FromPubkey = (pubkey) => this.FromRelays(this.getRelaysForPubkey(pubkey, RelayMode.Write));
104
- PubkeyInbox = (pubkey) => this.FromRelays(this.getRelaysForPubkey(pubkey, RelayMode.Inbox));
105
- ForPubkeys = (pubkeys) => this.merge(pubkeys.map(pubkey => this.ForPubkey(pubkey)));
106
- FromPubkeys = (pubkeys) => this.merge(pubkeys.map(pubkey => this.FromPubkey(pubkey)));
107
- PubkeyInboxes = (pubkeys) => this.merge(pubkeys.map(pubkey => this.PubkeyInbox(pubkey)));
108
- Event = (event) => this.FromRelays(this.getRelaysForPubkey(event.pubkey, RelayMode.Write));
109
- Replies = (event) => this.FromRelays(this.getRelaysForPubkey(event.pubkey, RelayMode.Read));
110
- Quote = (event, value, relays = []) => {
111
- const tag = event.tags.find(t => t[1] === value);
112
- const scenarios = [
113
- this.FromRelays(relays),
114
- this.ForPubkey(event.pubkey),
115
- this.FromPubkey(event.pubkey),
116
- ];
117
- if (tag?.[2] && isShareableRelayUrl(tag[2])) {
118
- scenarios.push(this.FromRelays([tag[2]]));
119
- }
120
- if (tag?.[3]?.length === 64) {
121
- scenarios.push(this.FromPubkeys([tag[3]]));
122
- }
123
- return this.merge(scenarios);
124
- };
125
- EventAncestors = (event, type) => {
126
- const ancestorTags = event.kind === COMMENT ? getCommentTags(event.tags) : getReplyTags(event.tags);
127
- const tags = ancestorTags[type] || [];
128
- return this.scenario(tags.flatMap(([_, value, relay, pubkey]) => {
129
- const selections = [makeSelection(this.ForUser().getUrls(), 0.5)];
130
- if (pubkey) {
131
- selections.push(makeSelection(this.FromPubkey(pubkey).getUrls()));
132
- }
133
- if (relay) {
134
- selections.push(makeSelection([relay], 0.9));
135
- }
136
- return selections;
137
- }));
138
- };
139
- EventMentions = (event) => this.EventAncestors(event, "mentions");
140
- EventParents = (event) => this.EventAncestors(event, "replies");
141
- EventRoots = (event) => this.EventAncestors(event, "roots");
142
- PublishEvent = (event) => {
143
- const pubkeys = getPubkeyTagValues(event.tags);
144
- return this.merge([
145
- this.FromPubkey(event.pubkey),
146
- ...pubkeys.map(pubkey => this.ForPubkey(pubkey).weight(0.5)),
147
- ]);
148
- };
149
- }
150
- export class RouterScenario {
151
- router;
152
- selections;
153
- options;
154
- constructor(router, selections, options = {}) {
155
- this.router = router;
156
- this.selections = selections;
157
- this.options = options;
158
- }
159
- clone = (options) => new RouterScenario(this.router, this.selections, { ...this.options, ...options });
160
- filter = (f) => new RouterScenario(this.router, this.selections.filter(selection => f(selection)), this.options);
161
- update = (f) => new RouterScenario(this.router, this.selections.map(selection => f(selection)), this.options);
162
- policy = (policy) => this.clone({ policy });
163
- limit = (limit) => this.clone({ limit });
164
- allowLocal = (allowLocal) => this.clone({ allowLocal });
165
- allowOnion = (allowOnion) => this.clone({ allowOnion });
166
- allowInsecure = (allowInsecure) => this.clone({ allowInsecure });
167
- weight = (scale) => this.update(selection => ({ ...selection, weight: selection.weight * scale }));
168
- getPolicy = () => this.options.policy || addNoFallbacks;
169
- getLimit = () => this.options.limit || this.router.options.getLimit?.() || 3;
170
- getUrls = () => {
171
- const limit = this.getLimit();
172
- const fallbackPolicy = this.getPolicy();
173
- const relayWeights = new Map();
174
- const { allowOnion, allowLocal, allowInsecure } = this.options;
175
- for (const { weight, relays } of this.selections) {
176
- for (const relay of relays) {
177
- if (!isRelayUrl(relay))
178
- continue;
179
- if (!allowOnion && isOnionUrl(relay))
180
- continue;
181
- if (!allowLocal && isLocalUrl(relay))
182
- continue;
183
- if (!allowInsecure && relay.startsWith("ws://") && !isOnionUrl(relay))
184
- continue;
185
- relayWeights.set(relay, add(weight, relayWeights.get(relay)));
186
- }
187
- }
188
- const scoreRelay = (relay) => {
189
- const quality = this.router.options.getRelayQuality?.(relay);
190
- const weight = relayWeights.get(relay);
191
- // Log the weight, since it's a straight count which ends up over-weighting hubs.
192
- // Also add some random noise so that we'll occasionally pick lower quality/less
193
- // popular relays.
194
- return quality ? -(quality * inc(Math.log(weight)) * Math.random()) : 0;
195
- };
196
- const relays = take(limit, sortBy(scoreRelay, Array.from(relayWeights.keys()).filter(scoreRelay)));
197
- const fallbacksNeeded = fallbackPolicy(relays.length, limit);
198
- const allFallbackRelays = this.router.options.getDefaultRelays?.() || [];
199
- const fallbackRelays = shuffle(allFallbackRelays).slice(0, fallbacksNeeded);
200
- for (const fallbackRelay of fallbackRelays) {
201
- relays.push(fallbackRelay);
202
- }
203
- return relays;
204
- };
205
- getUrl = () => first(this.getUrls());
206
- }
207
- export const getFilterSelectionsForSearch = (filter) => {
208
- if (!filter.search)
209
- return [];
210
- const relays = routerContext.getSearchRelays?.() || [];
211
- return [{ filter, scenario: Router.get().FromRelays(relays).weight(10) }];
212
- };
213
- export const getFilterSelectionsForWraps = (filter) => {
214
- if (!filter.kinds?.includes(WRAP) || filter.authors)
215
- return [];
216
- return [
217
- {
218
- filter: { ...filter, kinds: [WRAP] },
219
- scenario: Router.get().UserInbox(),
220
- },
221
- ];
222
- };
223
- export const getFilterSelectionsForIndexedKinds = (filter) => {
224
- const kinds = intersection(INDEXED_KINDS, filter.kinds || []);
225
- if (kinds.length === 0)
226
- return [];
227
- const relays = routerContext.getIndexerRelays?.() || [];
228
- return [
229
- {
230
- filter: { ...filter, kinds },
231
- scenario: Router.get().FromRelays(relays),
232
- },
233
- ];
234
- };
235
- export const getFilterSelectionsForAuthors = (filter) => {
236
- if (!filter.authors)
237
- return [];
238
- const chunkCount = clamp([1, 30], Math.round(filter.authors.length / 30));
239
- return chunks(chunkCount, filter.authors).map(authors => ({
240
- filter: { ...filter, authors },
241
- scenario: Router.get().FromPubkeys(authors),
242
- }));
243
- };
244
- export const getFilterSelectionsForUser = (filter) => [
245
- { filter, scenario: Router.get().ForUser().weight(0.2) },
246
- ];
247
- export const defaultFilterSelectionRules = [
248
- getFilterSelectionsForSearch,
249
- getFilterSelectionsForWraps,
250
- getFilterSelectionsForIndexedKinds,
251
- getFilterSelectionsForAuthors,
252
- getFilterSelectionsForUser,
253
- ];
254
- export const getFilterSelections = (filters, rules = defaultFilterSelectionRules) => {
255
- const filtersById = new Map();
256
- const scenariosById = new Map();
257
- for (const filter of filters) {
258
- for (const filterScenario of rules.flatMap(rule => rule(filter))) {
259
- const id = getFilterId(filterScenario.filter);
260
- filtersById.set(id, filterScenario.filter);
261
- pushToMapKey(scenariosById, id, filterScenario.scenario);
262
- }
263
- }
264
- const result = [];
265
- for (const [id, filter] of filtersById.entries()) {
266
- const scenario = Router.get()
267
- .merge(scenariosById.get(id) || [])
268
- .policy(addMinimalFallbacks);
269
- result.push({ filters: [filter], relays: scenario.getUrls() });
270
- }
271
- return result;
272
- };
273
- //# sourceMappingURL=router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,KAAK,EACL,KAAK,EACL,MAAM,EACN,OAAO,EACP,YAAY,EACZ,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EACN,IAAI,EACJ,GAAG,GACJ,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,MAAM,EACN,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAGlB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAClC,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AACnC,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,GACb,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;AAOrE,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,4BAAe,CAAA;IACf,4BAAe,CAAA;AACjB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAuDD,MAAM,aAAa,GAAG,CAAC,MAAgB,EAAE,MAAM,GAAG,CAAC,EAAa,EAAE,CAAC,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACxD,MAAM;CACP,CAAC,CAAA;AAMF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC,CAAA;AAEjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAExF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAA;AAElF,yBAAyB;AAEzB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAExC,2BAA2B;IAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IAE9B,oCAAoC;IACpC,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;QACjB,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAA;QAC/E,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAA;QAC7E,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,CAAC,CAAA;IAC/E,CAAC;IAED,kCAAkC;IAClC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IAE1C,8CAA8C;IAC9C,IAAI,KAAK,EAAE,KAAK;QAAE,OAAO,GAAG,CAAA;IAE5B,4CAA4C;IAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1F,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,2BAA2B;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,IAAa,EAAE,EAAE;IAC/D,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,GAAG,EAAE,CAAA;IACtD,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,GAAG,EAAE,CAAA;IAE3D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS,CAAC,IAAI;YACjB,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACvD,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACxD,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnD;YACE,OAAO,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACrD,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,eAAe;IACf,eAAe;IACf,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;IACnE,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;IAC1E,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,yBAAyB,EAAE,mBAAmB,CAAC;IACvE,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;IACjC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;CAClB,CAAA;AAED,eAAe;AAEf,MAAM,OAAO,MAAM;IACR,OAAO,CAAe;IAE/B,MAAM,CAAC,SAAS,CAAC,OAAsB;QACrC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,CAAA;IAClC,CAAC;IAED,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAClD,CAAC;IAED,iCAAiC;IAEjC,kBAAkB,GAAG,CAAC,MAAc,EAAE,IAAgB,EAAE,EAAE,CACxD,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;IAEpD,mBAAmB,GAAG,CAAC,OAAiB,EAAE,IAAgB,EAAE,EAAE,CAC5D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAE9D,gBAAgB,GAAG,CAAC,IAAgB,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAA;QAE7C,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5D,CAAC,CAAA;IAED,mCAAmC;IAEnC,QAAQ,GAAG,CAAC,UAAuB,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAE5E,KAAK,GAAG,CAAC,SAA2B,EAAE,EAAE,CACtC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAwB,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;IAErF,oBAAoB;IAEpB,UAAU,GAAG,CAAC,MAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAEzE,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAEtE,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAEtE,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAExE,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;IAEtE,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IAExE,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IAEzE,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;IAEhG,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IAElG,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE,CAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IAEnE,UAAU,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAE7F,WAAW,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAE/F,aAAa,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAElG,KAAK,GAAG,CAAC,KAAmB,EAAE,EAAE,CAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IAEzE,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE,CAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;IAExE,KAAK,GAAG,CAAC,KAAmB,EAAE,KAAa,EAAE,SAAmB,EAAE,EAAE,EAAE;QACpE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG;YAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;SAC9B,CAAA;QAED,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3C,CAAC;QAED,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC,CAAA;IAED,cAAc,GAAG,CAAC,KAAmB,EAAE,IAAsC,EAAE,EAAE;QAC/E,MAAM,YAAY,GAChB,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEhF,MAAM,IAAI,GAAgB,YAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QAE1D,OAAO,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;YAEjE,IAAI,MAAM,EAAE,CAAC;gBACX,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YACnE,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;YAC9C,CAAC;YAED,OAAO,UAAU,CAAA;QACnB,CAAC,CAAC,CACH,CAAA;IACH,CAAC,CAAA;IAED,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IAE/E,YAAY,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAE7E,UAAU,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAEzE,YAAY,GAAG,CAAC,KAAmB,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAE9C,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;YAC7B,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC7D,CAAC,CAAA;IACJ,CAAC,CAAA;CACF;AAYD,MAAM,OAAO,cAAc;IAEd;IACA;IACA;IAHX,YACW,MAAc,EACd,UAAuB,EACvB,UAAiC,EAAE;QAFnC,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAa;QACvB,YAAO,GAAP,OAAO,CAA4B;IAC3C,CAAC;IAEJ,KAAK,GAAG,CAAC,OAA8B,EAAE,EAAE,CACzC,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAC,CAAC,CAAA;IAEjF,MAAM,GAAG,CAAC,CAAoC,EAAE,EAAE,CAChD,IAAI,cAAc,CAChB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EACjD,IAAI,CAAC,OAAO,CACb,CAAA;IAEH,MAAM,GAAG,CAAC,CAAsC,EAAE,EAAE,CAClD,IAAI,cAAc,CAChB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAC9C,IAAI,CAAC,OAAO,CACb,CAAA;IAEH,MAAM,GAAG,CAAC,MAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,CAAA;IAEzD,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,CAAA;IAE9C,UAAU,GAAG,CAAC,UAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,CAAA;IAE9D,UAAU,GAAG,CAAC,UAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,CAAA;IAE9D,aAAa,GAAG,CAAC,aAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,CAAA;IAEvE,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAC,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,KAAK,EAAC,CAAC,CAAC,CAAA;IAE9E,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,CAAA;IAEvD,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;IAE5E,OAAO,GAAG,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAA;QAC9C,MAAM,EAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAC,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5D,KAAK,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;oBAAE,SAAQ;gBAChC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC;oBAAE,SAAQ;gBAC9C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC;oBAAE,SAAQ;gBAC9C,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;oBAAE,SAAQ;gBAE/E,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC/D,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAA;YAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;YAEvC,iFAAiF;YACjF,gFAAgF;YAChF,kBAAkB;YAClB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzE,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,IAAI,CACjB,KAAK,EACL,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CACvE,CAAA;QAED,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC5D,MAAM,iBAAiB,GAAa,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAA;QAClF,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAA;QAE3E,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC5B,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;CACrC;AAQD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAAc,EAAE,EAAE;IAC7D,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAE7B,MAAM,MAAM,GAAG,aAAa,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAA;IAEtD,OAAO,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAC,CAAC,CAAA;AACzE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAE,EAAE;IAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IAE9D,OAAO;QACL;YACE,MAAM,EAAE,EAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAC;YAClC,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE;SACnC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,MAAc,EAAE,EAAE;IACnE,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IAE7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEjC,MAAM,MAAM,GAAG,aAAa,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAA;IAEvD,OAAO;QACL;YACE,MAAM,EAAE,EAAC,GAAG,MAAM,EAAE,KAAK,EAAC;YAC1B,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;SAC1C;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAAc,EAAE,EAAE;IAC9D,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IAE9B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAA;IAEzE,OAAO,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,EAAC,GAAG,MAAM,EAAE,OAAO,EAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5C,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC;IAC5D,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,4BAA4B;IAC5B,2BAA2B;IAC3B,kCAAkC;IAClC,6BAA6B;IAC7B,0BAA0B;CAC3B,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAiB,EACjB,QAA+B,2BAA2B,EACtC,EAAE;IACtB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC7C,MAAM,aAAa,GAAG,IAAI,GAAG,EAA4B,CAAA;IAEzD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjE,MAAM,EAAE,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;YAE7C,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;YAC1C,YAAY,CAAC,aAAa,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAA;IAEjB,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE;aAC1B,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;aAClC,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAE9B,MAAM,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -1,13 +0,0 @@
1
- export declare const LOCALE: string;
2
- export declare const TIMEZONE: string;
3
- export declare const secondsToDate: (ts: number) => Date;
4
- export declare const dateToSeconds: (date: Date) => number;
5
- export declare const createLocalDate: (dateString: any) => Date;
6
- export declare const timestampFormatter: Intl.DateTimeFormat;
7
- export declare const formatTimestamp: (ts: number) => string;
8
- export declare const dateFormatter: Intl.DateTimeFormat;
9
- export declare const formatTimestampAsDate: (ts: number) => string;
10
- export declare const timeFormatter: Intl.DateTimeFormat;
11
- export declare const formatTimestampAsTime: (ts: number) => string;
12
- export declare const formatTimestampRelative: (ts: number) => string;
13
- //# sourceMappingURL=util.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,QAAqD,CAAA;AAExE,eAAO,MAAM,QAAQ,QAA+C,CAAA;AAEpE,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,SAAwB,CAAA;AAEhE,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,WAAsC,CAAA;AAE9E,eAAO,MAAM,eAAe,GAAI,YAAY,GAAG,SAA0C,CAAA;AAEzF,eAAO,MAAM,kBAAkB,qBAG7B,CAAA;AAEF,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM,WAAiD,CAAA;AAE3F,eAAO,MAAM,aAAa,qBAIxB,CAAA;AAEF,eAAO,MAAM,qBAAqB,GAAI,IAAI,MAAM,WAA4C,CAAA;AAE5F,eAAO,MAAM,aAAa,qBAExB,CAAA;AAEF,eAAO,MAAM,qBAAqB,GAAI,IAAI,MAAM,WAA4C,CAAA;AAE5F,eAAO,MAAM,uBAAuB,GAAI,IAAI,MAAM,WAsBjD,CAAA"}
@@ -1,46 +0,0 @@
1
- import { now, int, DAY, HOUR, MINUTE } from "@welshman/lib";
2
- export const LOCALE = new Intl.DateTimeFormat().resolvedOptions().locale;
3
- export const TIMEZONE = new Date().toString().match(/GMT[^\s]+/)[0];
4
- export const secondsToDate = (ts) => new Date(ts * 1000);
5
- export const dateToSeconds = (date) => Math.round(date.valueOf() / 1000);
6
- export const createLocalDate = (dateString) => new Date(`${dateString} ${TIMEZONE}`);
7
- export const timestampFormatter = new Intl.DateTimeFormat(LOCALE, {
8
- dateStyle: "short",
9
- timeStyle: "short",
10
- });
11
- export const formatTimestamp = (ts) => timestampFormatter.format(secondsToDate(ts));
12
- export const dateFormatter = new Intl.DateTimeFormat(LOCALE, {
13
- year: "numeric",
14
- month: "long",
15
- day: "numeric",
16
- });
17
- export const formatTimestampAsDate = (ts) => dateFormatter.format(secondsToDate(ts));
18
- export const timeFormatter = new Intl.DateTimeFormat(LOCALE, {
19
- timeStyle: "short",
20
- });
21
- export const formatTimestampAsTime = (ts) => timeFormatter.format(secondsToDate(ts));
22
- export const formatTimestampRelative = (ts) => {
23
- let unit;
24
- let delta = now() - ts;
25
- if (delta < int(MINUTE)) {
26
- unit = "second";
27
- }
28
- else if (delta < int(HOUR)) {
29
- unit = "minute";
30
- delta = Math.round(delta / int(MINUTE));
31
- }
32
- else if (delta < int(DAY, 2)) {
33
- unit = "hour";
34
- delta = Math.round(delta / int(HOUR));
35
- }
36
- else {
37
- unit = "day";
38
- delta = Math.round(delta / int(DAY));
39
- }
40
- const locale = new Intl.RelativeTimeFormat().resolvedOptions().locale;
41
- const formatter = new Intl.RelativeTimeFormat(locale, {
42
- numeric: "auto",
43
- });
44
- return formatter.format(-delta, unit);
45
- };
46
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"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"}