@welshman/app 0.0.33 → 0.0.35

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 (162) hide show
  1. package/README.md +70 -0
  2. package/build/src/collection.d.ts +3 -4
  3. package/build/src/{collection.mjs → collection.js} +5 -5
  4. package/build/src/collection.js.map +1 -0
  5. package/build/src/commands.d.ts +12 -13
  6. package/build/src/{commands.mjs → commands.js} +7 -7
  7. package/build/src/commands.js.map +1 -0
  8. package/build/src/context.d.ts +1 -1
  9. package/build/src/{context.mjs → context.js} +6 -6
  10. package/build/src/context.js.map +1 -0
  11. package/build/src/core.d.ts +0 -1
  12. package/build/src/{core.mjs → core.js} +6 -6
  13. package/build/src/core.js.map +1 -0
  14. package/build/src/feeds.d.ts +3 -3
  15. package/build/src/{feeds.mjs → feeds.js} +26 -22
  16. package/build/src/feeds.js.map +1 -0
  17. package/build/src/follows.d.ts +1 -2
  18. package/build/src/{follows.mjs → follows.js} +7 -7
  19. package/build/src/follows.js.map +1 -0
  20. package/build/src/{freshness.mjs → freshness.js} +4 -4
  21. package/build/src/freshness.js.map +1 -0
  22. package/build/src/handles.d.ts +0 -1
  23. package/build/src/{handles.mjs → handles.js} +14 -11
  24. package/build/src/handles.js.map +1 -0
  25. package/build/src/index.d.ts +34 -26
  26. package/build/src/index.js +27 -0
  27. package/build/src/index.js.map +1 -0
  28. package/build/src/mutes.d.ts +1 -2
  29. package/build/src/{mutes.mjs → mutes.js} +8 -8
  30. package/build/src/mutes.js.map +1 -0
  31. package/build/src/plaintext.d.ts +1 -1
  32. package/build/src/{plaintext.mjs → plaintext.js} +5 -5
  33. package/build/src/plaintext.js.map +1 -0
  34. package/build/src/profiles.d.ts +0 -1
  35. package/build/src/{profiles.mjs → profiles.js} +9 -11
  36. package/build/src/profiles.js.map +1 -0
  37. package/build/src/relaySelections.d.ts +1 -2
  38. package/build/src/{relaySelections.mjs → relaySelections.js} +7 -7
  39. package/build/src/relaySelections.js.map +1 -0
  40. package/build/src/relays.d.ts +1 -2
  41. package/build/src/{relays.mjs → relays.js} +67 -37
  42. package/build/src/relays.js.map +1 -0
  43. package/build/src/router.d.ts +30 -30
  44. package/build/src/router.js +244 -0
  45. package/build/src/router.js.map +1 -0
  46. package/build/src/search.d.ts +3 -4
  47. package/build/src/{search.mjs → search.js} +15 -18
  48. package/build/src/search.js.map +1 -0
  49. package/build/src/session.d.ts +9 -9
  50. package/build/src/{session.mjs → session.js} +3 -3
  51. package/build/src/session.js.map +1 -0
  52. package/build/src/storage.d.ts +7 -38
  53. package/build/src/{storage.mjs → storage.js} +17 -15
  54. package/build/src/storage.js.map +1 -0
  55. package/build/src/{subscribe.mjs → subscribe.js} +2 -2
  56. package/build/src/subscribe.js.map +1 -0
  57. package/build/src/sync.d.ts +1 -1
  58. package/build/src/{sync.mjs → sync.js} +8 -9
  59. package/build/src/sync.js.map +1 -0
  60. package/build/src/tags.d.ts +1 -1
  61. package/build/src/{tags.mjs → tags.js} +5 -5
  62. package/build/src/tags.js.map +1 -0
  63. package/build/src/thunk.d.ts +4 -5
  64. package/build/src/{thunk.mjs → thunk.js} +11 -11
  65. package/build/src/thunk.js.map +1 -0
  66. package/build/src/{topics.mjs → topics.js} +4 -4
  67. package/build/src/topics.js.map +1 -0
  68. package/build/src/user.d.ts +0 -1
  69. package/build/src/{user.mjs → user.js} +8 -8
  70. package/build/src/user.js.map +1 -0
  71. package/build/src/{util.mjs → util.js} +1 -1
  72. package/build/src/util.js.map +1 -0
  73. package/build/src/{wot.mjs → wot.js} +8 -8
  74. package/build/src/wot.js.map +1 -0
  75. package/build/src/zappers.d.ts +1 -2
  76. package/build/src/{zappers.mjs → zappers.js} +7 -7
  77. package/build/src/zappers.js.map +1 -0
  78. package/build/tsconfig.tsbuildinfo +1 -0
  79. package/package.json +11 -16
  80. package/build/src/collection.cjs +0 -56
  81. package/build/src/collection.cjs.map +0 -1
  82. package/build/src/collection.mjs.map +0 -1
  83. package/build/src/commands.cjs +0 -34
  84. package/build/src/commands.cjs.map +0 -1
  85. package/build/src/commands.mjs.map +0 -1
  86. package/build/src/context.cjs +0 -43
  87. package/build/src/context.cjs.map +0 -1
  88. package/build/src/context.mjs.map +0 -1
  89. package/build/src/core.cjs +0 -36
  90. package/build/src/core.cjs.map +0 -1
  91. package/build/src/core.mjs.map +0 -1
  92. package/build/src/feeds.cjs +0 -93
  93. package/build/src/feeds.cjs.map +0 -1
  94. package/build/src/feeds.mjs.map +0 -1
  95. package/build/src/follows.cjs +0 -25
  96. package/build/src/follows.cjs.map +0 -1
  97. package/build/src/follows.mjs.map +0 -1
  98. package/build/src/freshness.cjs +0 -20
  99. package/build/src/freshness.cjs.map +0 -1
  100. package/build/src/freshness.mjs.map +0 -1
  101. package/build/src/handles.cjs +0 -84
  102. package/build/src/handles.cjs.map +0 -1
  103. package/build/src/handles.mjs.map +0 -1
  104. package/build/src/index.cjs +0 -43
  105. package/build/src/index.cjs.map +0 -1
  106. package/build/src/index.mjs +0 -27
  107. package/build/src/index.mjs.map +0 -1
  108. package/build/src/mutes.cjs +0 -28
  109. package/build/src/mutes.cjs.map +0 -1
  110. package/build/src/mutes.mjs.map +0 -1
  111. package/build/src/plaintext.cjs +0 -38
  112. package/build/src/plaintext.cjs.map +0 -1
  113. package/build/src/plaintext.mjs.map +0 -1
  114. package/build/src/profiles.cjs +0 -45
  115. package/build/src/profiles.cjs.map +0 -1
  116. package/build/src/profiles.mjs.map +0 -1
  117. package/build/src/relaySelections.cjs +0 -43
  118. package/build/src/relaySelections.cjs.map +0 -1
  119. package/build/src/relaySelections.mjs.map +0 -1
  120. package/build/src/relays.cjs +0 -178
  121. package/build/src/relays.cjs.map +0 -1
  122. package/build/src/relays.mjs.map +0 -1
  123. package/build/src/router.cjs +0 -259
  124. package/build/src/router.cjs.map +0 -1
  125. package/build/src/router.mjs +0 -241
  126. package/build/src/router.mjs.map +0 -1
  127. package/build/src/search.cjs +0 -84
  128. package/build/src/search.cjs.map +0 -1
  129. package/build/src/search.mjs.map +0 -1
  130. package/build/src/session.cjs +0 -61
  131. package/build/src/session.cjs.map +0 -1
  132. package/build/src/session.mjs.map +0 -1
  133. package/build/src/storage.cjs +0 -177
  134. package/build/src/storage.cjs.map +0 -1
  135. package/build/src/storage.mjs.map +0 -1
  136. package/build/src/subscribe.cjs +0 -47
  137. package/build/src/subscribe.cjs.map +0 -1
  138. package/build/src/subscribe.mjs.map +0 -1
  139. package/build/src/sync.cjs +0 -45
  140. package/build/src/sync.cjs.map +0 -1
  141. package/build/src/sync.mjs.map +0 -1
  142. package/build/src/tags.cjs +0 -94
  143. package/build/src/tags.cjs.map +0 -1
  144. package/build/src/tags.mjs.map +0 -1
  145. package/build/src/thunk.cjs +0 -153
  146. package/build/src/thunk.cjs.map +0 -1
  147. package/build/src/thunk.mjs.map +0 -1
  148. package/build/src/topics.cjs +0 -23
  149. package/build/src/topics.cjs.map +0 -1
  150. package/build/src/topics.mjs.map +0 -1
  151. package/build/src/user.cjs +0 -45
  152. package/build/src/user.cjs.map +0 -1
  153. package/build/src/user.mjs.map +0 -1
  154. package/build/src/util.cjs +0 -56
  155. package/build/src/util.cjs.map +0 -1
  156. package/build/src/util.mjs.map +0 -1
  157. package/build/src/wot.cjs +0 -79
  158. package/build/src/wot.cjs.map +0 -1
  159. package/build/src/wot.mjs.map +0 -1
  160. package/build/src/zappers.cjs +0 -63
  161. package/build/src/zappers.cjs.map +0 -1
  162. package/build/src/zappers.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutes.mjs","sourceRoot":"","sources":["../../src/mutes.ts"],"names":[],"mappings":"OAAO,EAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAC,MAAM,gBAAgB;OAGzD,EAAC,kBAAkB,EAAC,MAAM,iBAAiB;OAC3C,EAAC,UAAU,EAAC;OACZ,EAAC,IAAI,EAAC;OACN,EAAC,UAAU,EAAC;OACZ,EAAC,eAAe,EAAC;OACjB,EAAC,mBAAmB,EAAC;AAE5B,MAAM,CAAC,MAAM,KAAK,GAAG,kBAAkB,CAAgB,UAAU,EAAE;IACjE,OAAO,EAAE,CAAC,EAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAC,CAAC;IAC3B,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;IAC/B,WAAW,EAAE,KAAK,EAAE,KAAmB,EAAE,EAAE,CACzC,QAAQ,CACN,gBAAgB,CAAC,KAAK,EAAE;QACtB,OAAO,EAAE,MAAM,eAAe,CAAC,KAAK,CAAC;KACtC,CAAC,CACH;CACJ,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,EACX,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,WAAW,EACvB,QAAQ,EAAE,SAAS,GACpB,GAAG,UAAU,CAAC;IACb,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;IACjC,IAAI,EAAE,KAAK,EAAE,MAAc,EAAE,UAAiD,EAAE,EAAE,EAAE;QAClF,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC1C,MAAM,IAAI,CAAC,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,EAAC,CAAC,CAAA;IAC1E,CAAC;CACF,CAAC,CAAA"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensurePlaintext = exports.setPlaintext = exports.getPlaintext = exports.plaintext = void 0;
4
- const store_1 = require("svelte/store");
5
- const lib_1 = require("@welshman/lib");
6
- const store_2 = require("@welshman/store");
7
- const signer_1 = require("@welshman/signer");
8
- const session_1 = require("./session.cjs");
9
- exports.plaintext = (0, store_2.withGetter)((0, store_1.writable)({}));
10
- const getPlaintext = (e) => exports.plaintext.get()[e.id];
11
- exports.getPlaintext = getPlaintext;
12
- const setPlaintext = (e, content) => exports.plaintext.update((0, lib_1.assoc)(e.id, content));
13
- exports.setPlaintext = setPlaintext;
14
- const ensurePlaintext = async (e) => {
15
- if (e.content && !(0, exports.getPlaintext)(e)) {
16
- const $session = (0, session_1.getSession)(e.pubkey);
17
- if (!$session)
18
- return;
19
- const $signer = (0, session_1.getSigner)($session);
20
- if (!$signer)
21
- return;
22
- let result;
23
- try {
24
- result = await (0, signer_1.decrypt)($signer, e.pubkey, e.content);
25
- }
26
- catch (e) {
27
- if (!String(e).match(/invalid base64/)) {
28
- throw e;
29
- }
30
- }
31
- if (result) {
32
- (0, exports.setPlaintext)(e, result);
33
- }
34
- }
35
- return (0, exports.getPlaintext)(e);
36
- };
37
- exports.ensurePlaintext = ensurePlaintext;
38
- //# sourceMappingURL=plaintext.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plaintext.cjs","sourceRoot":"","sources":["../../src/plaintext.ts"],"names":[],"mappings":";;;AAAA,wCAAqC;AACrC,uCAAmC;AAEnC,2CAA0C;AAC1C,6CAAwC;AACxC,2CAA+C;AAElC,QAAA,SAAS,GAAG,IAAA,kBAAU,EAAC,IAAA,gBAAQ,EAAyB,EAAE,CAAC,CAAC,CAAA;AAElE,MAAM,YAAY,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC,iBAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAAzD,QAAA,YAAY,gBAA6C;AAE/D,MAAM,YAAY,GAAG,CAAC,CAAe,EAAE,OAAe,EAAE,EAAE,CAC/D,iBAAS,CAAC,MAAM,CAAC,IAAA,WAAK,EAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;AAD3B,QAAA,YAAY,gBACe;AAEjC,MAAM,eAAe,GAAG,KAAK,EAAE,CAAe,EAAE,EAAE;IACvD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,IAAA,oBAAY,EAAC,CAAC,CAAC,EAAE;QACjC,MAAM,QAAQ,GAAG,IAAA,oBAAU,EAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAErC,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,MAAM,OAAO,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAA;QAEnC,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,IAAI,MAAM,CAAA;QAEV,IAAI;YACF,MAAM,GAAG,MAAM,IAAA,gBAAO,EAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;SACrD;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;gBACtC,MAAM,CAAC,CAAA;aACR;SACF;QAED,IAAI,MAAM,EAAE;YACV,IAAA,oBAAY,EAAC,CAAC,EAAE,MAAM,CAAC,CAAA;SACxB;KACF;IAED,OAAO,IAAA,oBAAY,EAAC,CAAC,CAAC,CAAA;AACxB,CAAC,CAAA;AA1BY,QAAA,eAAe,mBA0B3B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plaintext.mjs","sourceRoot":"","sources":["../../src/plaintext.ts"],"names":[],"mappings":"OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc;OAC9B,EAAC,KAAK,EAAC,MAAM,eAAe;OAE5B,EAAC,UAAU,EAAC,MAAM,iBAAiB;OACnC,EAAC,OAAO,EAAC,MAAM,kBAAkB;OACjC,EAAC,SAAS,EAAE,UAAU,EAAC;AAE9B,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAyB,EAAE,CAAC,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAEtE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAe,EAAE,OAAe,EAAE,EAAE,CAC/D,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,CAAe,EAAE,EAAE;IACvD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;QACjC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAErC,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;QAEnC,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,IAAI,MAAM,CAAA;QAEV,IAAI;YACF,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;SACrD;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;gBACtC,MAAM,CAAC,CAAA;aACR;SACF;QAED,IAAI,MAAM,EAAE;YACV,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;SACxB;KACF;IAED,OAAO,YAAY,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC,CAAA"}
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.deriveProfileDisplay = exports.displayProfileByPubkey = exports.loadProfile = exports.deriveProfile = exports.profilesByPubkey = exports.profiles = void 0;
5
- const store_1 = require("svelte/store");
6
- const util_1 = require("@welshman/util");
7
- const store_2 = require("@welshman/store");
8
- const core_1 = require("./core.cjs");
9
- const subscribe_1 = require("./subscribe.cjs");
10
- const collection_1 = require("./collection.cjs");
11
- const relaySelections_1 = require("./relaySelections.cjs");
12
- exports.profiles = (0, store_2.withGetter)((0, store_2.deriveEventsMapped)(core_1.repository, {
13
- filters: [{ kinds: [util_1.PROFILE] }],
14
- eventToItem: util_1.readProfile,
15
- itemToEvent: item => item.event,
16
- }));
17
- _a = (0, collection_1.collection)({
18
- name: "profiles",
19
- store: exports.profiles,
20
- getKey: profile => profile.event.pubkey,
21
- load: async (pubkey, request = {}) => {
22
- const filters = [{ kinds: [util_1.PROFILE], authors: [pubkey] }];
23
- // Attempt to load the user profile right away, regardless of whether we have relays,
24
- // since profiles are crucial to UX
25
- (0, subscribe_1.load)({ ...request, filters });
26
- // Load relay selections as quickly as possible, moving on to retrying profiles with
27
- // better selections the moment we have a result, even if it's outdated
28
- await new Promise(resolve => {
29
- (0, relaySelections_1.loadRelaySelections)(pubkey, {
30
- onEvent: () => resolve(),
31
- onComplete: () => resolve(),
32
- });
33
- });
34
- await (0, subscribe_1.load)({ ...request, filters });
35
- },
36
- }), exports.profilesByPubkey = _a.indexStore, exports.deriveProfile = _a.deriveItem, exports.loadProfile = _a.loadItem;
37
- const displayProfileByPubkey = (pubkey) => pubkey
38
- ? (0, util_1.displayProfile)(exports.profilesByPubkey.get().get(pubkey), (0, util_1.displayPubkey)(pubkey))
39
- : "";
40
- exports.displayProfileByPubkey = displayProfileByPubkey;
41
- const deriveProfileDisplay = (pubkey) => pubkey
42
- ? (0, store_1.derived)((0, exports.deriveProfile)(pubkey), $profile => (0, util_1.displayProfile)($profile, (0, util_1.displayPubkey)(pubkey)))
43
- : (0, store_1.readable)("");
44
- exports.deriveProfileDisplay = deriveProfileDisplay;
45
- //# sourceMappingURL=profiles.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.cjs","sourceRoot":"","sources":["../../src/profiles.ts"],"names":[],"mappings":";;;;AAAA,wCAA8C;AAC9C,yCAAkF;AAGlF,2CAA8D;AAC9D,qCAAiC;AACjC,+CAAgC;AAChC,iDAAuC;AACvC,2DAAqD;AAExC,QAAA,QAAQ,GAAG,IAAA,kBAAU,EAChC,IAAA,0BAAkB,EAAmB,iBAAU,EAAE;IAC/C,OAAO,EAAE,CAAC,EAAC,KAAK,EAAE,CAAC,cAAO,CAAC,EAAC,CAAC;IAC7B,WAAW,EAAE,kBAAW;IACxB,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;CAChC,CAAC,CACH,CAAA;AAEY,KAIT,IAAA,uBAAU,EAAC;IACb,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,gBAAQ;IACf,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;IACvC,IAAI,EAAE,KAAK,EAAE,MAAc,EAAE,UAAiD,EAAE,EAAE,EAAE;QAClF,MAAM,OAAO,GAAG,CAAC,EAAC,KAAK,EAAE,CAAC,cAAO,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CAAA;QAEvD,qFAAqF;QACrF,mCAAmC;QACnC,IAAA,gBAAI,EAAC,EAAC,GAAG,OAAO,EAAE,OAAO,EAAC,CAAC,CAAA;QAE3B,oFAAoF;QACpF,uEAAuE;QACvE,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAChC,IAAA,qCAAmB,EAAC,MAAM,EAAE;gBAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;gBACxB,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;aAC5B,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,IAAA,gBAAI,EAAC,EAAC,GAAG,OAAO,EAAE,OAAO,EAAC,CAAC,CAAA;IACnC,CAAC;CACF,CAAC,EAzBY,wBAAgB,kBAChB,qBAAa,kBACf,mBAAW,eAuBrB;AAEK,MAAM,sBAAsB,GAAG,CAAC,MAA0B,EAAE,EAAE,CACnE,MAAM;IACJ,CAAC,CAAC,IAAA,qBAAc,EAAC,wBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAA,oBAAa,EAAC,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC,EAAE,CAAA;AAHK,QAAA,sBAAsB,0BAG3B;AAED,MAAM,oBAAoB,GAAG,CAAC,MAA0B,EAAE,EAAE,CACjE,MAAM;IACJ,CAAC,CAAC,IAAA,eAAO,EAAC,IAAA,qBAAa,EAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAA,qBAAc,EAAC,QAAQ,EAAE,IAAA,oBAAa,EAAC,MAAM,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAA;AAHL,QAAA,oBAAoB,wBAGf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.mjs","sourceRoot":"","sources":["../../src/profiles.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,cAAc;OACvC,EAAC,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAC,MAAM,gBAAgB;OAG3E,EAAC,kBAAkB,EAAE,UAAU,EAAC,MAAM,iBAAiB;OACvD,EAAC,UAAU,EAAC;OACZ,EAAC,IAAI,EAAC;OACN,EAAC,UAAU,EAAC;OACZ,EAAC,mBAAmB,EAAC;AAE5B,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAChC,kBAAkB,CAAmB,UAAU,EAAE;IAC/C,OAAO,EAAE,CAAC,EAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAC,CAAC;IAC7B,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;CAChC,CAAC,CACH,CAAA;AAED,MAAM,CAAC,MAAM,EACX,UAAU,EAAE,gBAAgB,EAC5B,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,WAAW,GACtB,GAAG,UAAU,CAAC;IACb,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;IACvC,IAAI,EAAE,KAAK,EAAE,MAAc,EAAE,UAAiD,EAAE,EAAE,EAAE;QAClF,MAAM,OAAO,GAAG,CAAC,EAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CAAA;QAEvD,qFAAqF;QACrF,mCAAmC;QACnC,IAAI,CAAC,EAAC,GAAG,OAAO,EAAE,OAAO,EAAC,CAAC,CAAA;QAE3B,oFAAoF;QACpF,uEAAuE;QACvE,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAChC,mBAAmB,CAAC,MAAM,EAAE;gBAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;gBACxB,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;aAC5B,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,EAAC,GAAG,OAAO,EAAE,OAAO,EAAC,CAAC,CAAA;IACnC,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAA0B,EAAE,EAAE,CACnE,MAAM;IACJ,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC,EAAE,CAAA;AAER,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAA0B,EAAE,EAAE,CACjE,MAAM;IACJ,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA"}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var _a, _b;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.loadInboxRelaySelections = exports.deriveInboxRelaySelections = exports.inboxRelaySelectionsByPubkey = exports.inboxRelaySelections = exports.loadRelaySelections = exports.deriveRelaySelections = exports.relaySelectionsByPubkey = exports.relaySelections = exports.getWriteRelayUrls = exports.getReadRelayUrls = exports.getRelayUrls = void 0;
5
- const lib_1 = require("@welshman/lib");
6
- const util_1 = require("@welshman/util");
7
- const store_1 = require("@welshman/store");
8
- const core_1 = require("./core.cjs");
9
- const subscribe_1 = require("./subscribe.cjs");
10
- const collection_1 = require("./collection.cjs");
11
- const getRelayUrls = (list) => (0, lib_1.uniq)((0, util_1.getRelayTagValues)((0, util_1.getListTags)(list)).map(util_1.normalizeRelayUrl));
12
- exports.getRelayUrls = getRelayUrls;
13
- const getReadRelayUrls = (list) => (0, lib_1.uniq)((0, util_1.getRelayTags)((0, util_1.getListTags)(list))
14
- .filter((t) => !t[2] || t[2] === "read")
15
- .map((t) => (0, util_1.normalizeRelayUrl)(t[1])));
16
- exports.getReadRelayUrls = getReadRelayUrls;
17
- const getWriteRelayUrls = (list) => (0, lib_1.uniq)((0, util_1.getRelayTags)((0, util_1.getListTags)(list))
18
- .filter((t) => !t[2] || t[2] === "write")
19
- .map((t) => (0, util_1.normalizeRelayUrl)(t[1])));
20
- exports.getWriteRelayUrls = getWriteRelayUrls;
21
- exports.relaySelections = (0, store_1.deriveEventsMapped)(core_1.repository, {
22
- filters: [{ kinds: [util_1.RELAYS] }],
23
- itemToEvent: item => item.event,
24
- eventToItem: (event) => (0, util_1.readList)((0, util_1.asDecryptedEvent)(event)),
25
- });
26
- _a = (0, collection_1.collection)({
27
- name: "relaySelections",
28
- store: exports.relaySelections,
29
- getKey: relaySelections => relaySelections.event.pubkey,
30
- load: (pubkey, request = {}) => (0, subscribe_1.load)({ ...request, filters: [{ kinds: [util_1.RELAYS], authors: [pubkey] }] }),
31
- }), exports.relaySelectionsByPubkey = _a.indexStore, exports.deriveRelaySelections = _a.deriveItem, exports.loadRelaySelections = _a.loadItem;
32
- exports.inboxRelaySelections = (0, store_1.deriveEventsMapped)(core_1.repository, {
33
- filters: [{ kinds: [util_1.INBOX_RELAYS] }],
34
- itemToEvent: item => item.event,
35
- eventToItem: (event) => (0, util_1.readList)((0, util_1.asDecryptedEvent)(event)),
36
- });
37
- _b = (0, collection_1.collection)({
38
- name: "inboxRelaySelections",
39
- store: exports.inboxRelaySelections,
40
- getKey: inboxRelaySelections => inboxRelaySelections.event.pubkey,
41
- load: (pubkey, request = {}) => (0, subscribe_1.load)({ ...request, filters: [{ kinds: [util_1.INBOX_RELAYS], authors: [pubkey] }] }),
42
- }), exports.inboxRelaySelectionsByPubkey = _b.indexStore, exports.deriveInboxRelaySelections = _b.deriveItem, exports.loadInboxRelaySelections = _b.loadItem;
43
- //# sourceMappingURL=relaySelections.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relaySelections.cjs","sourceRoot":"","sources":["../../src/relaySelections.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"relaySelections.mjs","sourceRoot":"","sources":["../../src/relaySelections.ts"],"names":[],"mappings":"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"}
@@ -1,178 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.trackRelayStats = exports.deriveRelayDisplay = exports.displayRelayByPubkey = exports.loadRelay = exports.deriveRelay = exports.relaysByUrl = exports.fetchRelayProfiles = exports.relaysByPubkey = exports.relays = exports.makeRelayStats = void 0;
5
- const store_1 = require("svelte/store");
6
- const store_2 = require("@welshman/store");
7
- const lib_1 = require("@welshman/lib");
8
- const util_1 = require("@welshman/util");
9
- const net_1 = require("@welshman/net");
10
- const collection_1 = require("./collection.cjs");
11
- const makeRelayStats = () => ({
12
- first_seen: (0, lib_1.now)(),
13
- recent_errors: [],
14
- open_count: 0,
15
- close_count: 0,
16
- publish_count: 0,
17
- request_count: 0,
18
- event_count: 0,
19
- last_open: 0,
20
- last_close: 0,
21
- last_error: 0,
22
- last_publish: 0,
23
- last_request: 0,
24
- last_event: 0,
25
- last_auth: 0,
26
- publish_timer: 0,
27
- publish_success_count: 0,
28
- publish_failure_count: 0,
29
- eose_count: 0,
30
- eose_timer: 0,
31
- notice_count: 0,
32
- });
33
- exports.makeRelayStats = makeRelayStats;
34
- exports.relays = (0, store_2.withGetter)((0, store_1.writable)([]));
35
- exports.relaysByPubkey = (0, store_1.derived)(exports.relays, $relays => (0, lib_1.groupBy)($relay => { var _a; return (_a = $relay.profile) === null || _a === void 0 ? void 0 : _a.pubkey; }, $relays.filter($relay => { var _a; return (_a = $relay.profile) === null || _a === void 0 ? void 0 : _a.pubkey; })));
36
- const fetchRelayProfiles = async (urls) => {
37
- const base = lib_1.ctx.app.dufflepudUrl;
38
- if (!base) {
39
- throw new Error("ctx.app.dufflepudUrl is required to fetch relay metadata");
40
- }
41
- const res = await (0, lib_1.postJson)(`${base}/relay/info`, { urls });
42
- const profilesByUrl = new Map();
43
- for (const { url, info } of (res === null || res === void 0 ? void 0 : res.data) || []) {
44
- profilesByUrl.set(url, info);
45
- }
46
- return profilesByUrl;
47
- };
48
- exports.fetchRelayProfiles = fetchRelayProfiles;
49
- _a = (0, collection_1.collection)({
50
- name: "relays",
51
- store: exports.relays,
52
- getKey: (relay) => relay.url,
53
- load: (0, lib_1.batcher)(800, async (rawUrls) => {
54
- const urls = rawUrls.map(util_1.normalizeRelayUrl);
55
- const fresh = await (0, exports.fetchRelayProfiles)((0, lib_1.uniq)(urls));
56
- const stale = exports.relaysByUrl.get();
57
- for (const url of urls) {
58
- const relay = stale.get(url);
59
- const profile = fresh.get(url);
60
- if (profile) {
61
- stale.set(url, { ...relay, profile, url });
62
- }
63
- }
64
- exports.relays.set(Array.from(stale.values()));
65
- return urls;
66
- }),
67
- }), exports.relaysByUrl = _a.indexStore, exports.deriveRelay = _a.deriveItem, exports.loadRelay = _a.loadItem;
68
- const displayRelayByPubkey = (url) => { var _a; return (0, util_1.displayRelayProfile)((_a = exports.relaysByUrl.get().get(url)) === null || _a === void 0 ? void 0 : _a.profile, (0, util_1.displayRelayUrl)(url)); };
69
- exports.displayRelayByPubkey = displayRelayByPubkey;
70
- const deriveRelayDisplay = (url) => (0, store_1.derived)((0, exports.deriveRelay)(url), $relay => (0, util_1.displayRelayProfile)($relay === null || $relay === void 0 ? void 0 : $relay.profile, (0, util_1.displayRelayUrl)(url)));
71
- exports.deriveRelayDisplay = deriveRelayDisplay;
72
- const updateRelayStats = (0, lib_1.batch)(500, (updates) => {
73
- exports.relays.update($relays => {
74
- const $relaysByUrl = (0, lib_1.indexBy)(r => r.url, $relays);
75
- const $itemsByUrl = (0, lib_1.groupBy)(([url]) => url, updates);
76
- for (const [url, items] of $itemsByUrl.entries()) {
77
- const $relay = $relaysByUrl.get(url) || { url };
78
- if (!$relay.stats) {
79
- $relay.stats = (0, exports.makeRelayStats)();
80
- }
81
- else if ($relay.stats.notice_count === undefined) {
82
- // Migrate from old stats
83
- $relay.stats = { ...(0, exports.makeRelayStats)(), ...$relay.stats };
84
- }
85
- for (const [_, update] of items) {
86
- update($relay.stats);
87
- }
88
- // Copy so the database gets updated, since we're mutating in updates
89
- $relaysByUrl.set(url, { ...$relay });
90
- }
91
- return Array.from($relaysByUrl.values());
92
- });
93
- });
94
- const onConnectionOpen = ({ url }) => updateRelayStats([url, stats => {
95
- stats.last_open = (0, lib_1.now)();
96
- stats.open_count++;
97
- }]);
98
- const onConnectionClose = ({ url }) => updateRelayStats([url, stats => {
99
- stats.last_close = (0, lib_1.now)();
100
- stats.close_count++;
101
- }]);
102
- const onConnectionSend = ({ url }, [verb]) => {
103
- if (verb === 'REQ') {
104
- updateRelayStats([url, stats => {
105
- stats.request_count++;
106
- stats.last_request = (0, lib_1.now)();
107
- }]);
108
- }
109
- else if (verb === 'EVENT') {
110
- updateRelayStats([url, stats => {
111
- stats.publish_count++;
112
- stats.last_publish = (0, lib_1.now)();
113
- }]);
114
- }
115
- };
116
- const onConnectionReceive = ({ url, state }, [verb, ...extra]) => {
117
- if (verb === 'OK') {
118
- const [eventId, ok] = extra;
119
- const pub = state.pendingPublishes.get(eventId);
120
- updateRelayStats([url, stats => {
121
- if (pub) {
122
- stats.publish_timer += (0, lib_1.ago)(pub.sent);
123
- }
124
- if (ok) {
125
- stats.publish_success_count++;
126
- }
127
- else {
128
- stats.publish_failure_count++;
129
- }
130
- }]);
131
- }
132
- else if (verb === 'AUTH') {
133
- updateRelayStats([url, stats => {
134
- stats.last_auth = (0, lib_1.now)();
135
- }]);
136
- }
137
- else if (verb === 'EVENT') {
138
- updateRelayStats([url, stats => {
139
- stats.event_count++;
140
- stats.last_event = (0, lib_1.now)();
141
- }]);
142
- }
143
- else if (verb === 'EOSE') {
144
- const request = state.pendingRequests.get(extra[0]);
145
- // Only count the first eose
146
- if (request && !request.eose) {
147
- updateRelayStats([url, stats => {
148
- stats.eose_count++;
149
- stats.eose_timer += (0, lib_1.now)() - request.sent;
150
- }]);
151
- }
152
- }
153
- else if (verb === 'NOTICE') {
154
- updateRelayStats([url, stats => {
155
- stats.notice_count++;
156
- }]);
157
- }
158
- };
159
- const onConnectionError = ({ url }) => updateRelayStats([url, stats => {
160
- stats.last_error = (0, lib_1.now)();
161
- stats.recent_errors = (0, lib_1.uniq)(stats.recent_errors.concat((0, lib_1.now)())).slice(-10);
162
- }]);
163
- const trackRelayStats = (connection) => {
164
- connection.on(net_1.ConnectionEvent.Open, onConnectionOpen);
165
- connection.on(net_1.ConnectionEvent.Close, onConnectionClose);
166
- connection.on(net_1.ConnectionEvent.Send, onConnectionSend);
167
- connection.on(net_1.ConnectionEvent.Receive, onConnectionReceive);
168
- connection.on(net_1.ConnectionEvent.Error, onConnectionError);
169
- return () => {
170
- connection.off(net_1.ConnectionEvent.Open, onConnectionOpen);
171
- connection.off(net_1.ConnectionEvent.Close, onConnectionClose);
172
- connection.off(net_1.ConnectionEvent.Send, onConnectionSend);
173
- connection.off(net_1.ConnectionEvent.Receive, onConnectionReceive);
174
- connection.off(net_1.ConnectionEvent.Error, onConnectionError);
175
- };
176
- };
177
- exports.trackRelayStats = trackRelayStats;
178
- //# sourceMappingURL=relays.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relays.cjs","sourceRoot":"","sources":["../../src/relays.ts"],"names":[],"mappings":";;;;AAAA,wCAA8C;AAC9C,2CAA0C;AAC1C,uCAA6F;AAE7F,yCAAsF;AACtF,uCAA6C;AAE7C,iDAAuC;AAyBhC,MAAM,cAAc,GAAG,GAAe,EAAE,CAAC,CAAC;IAC/C,UAAU,EAAE,IAAA,SAAG,GAAE;IACjB,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;IACZ,aAAa,EAAE,CAAC;IAChB,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,CAAC;IACxB,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;CAChB,CAAC,CAAA;AArBW,QAAA,cAAc,kBAqBzB;AAQW,QAAA,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAA,gBAAQ,EAAU,EAAE,CAAC,CAAC,CAAA;AAE1C,QAAA,cAAc,GAAG,IAAA,eAAO,EAAC,cAAM,EAAE,OAAO,CAAC,EAAE,CACtD,IAAA,aAAO,EACL,MAAM,CAAC,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAA,EAAA,EAChC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAA,EAAA,CAAC,CACjD,CACF,CAAA;AAEM,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAc,EAAE,EAAE;IACzD,MAAM,IAAI,GAAG,SAAG,CAAC,GAAG,CAAC,YAAa,CAAA;IAElC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;KAC5E;IAED,MAAM,GAAG,GAAQ,MAAM,IAAA,cAAQ,EAAC,GAAG,IAAI,aAAa,EAAE,EAAC,IAAI,EAAC,CAAC,CAAA;IAC7D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAA;IAErD,KAAK,MAAM,EAAC,GAAG,EAAE,IAAI,EAAC,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,KAAI,EAAE,EAAE;QACzC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;KAC7B;IAED,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AAfY,QAAA,kBAAkB,sBAe9B;AAEY,KAIT,IAAA,uBAAU,EAAC;IACb,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,cAAM;IACb,MAAM,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG;IACnC,IAAI,EAAE,IAAA,aAAO,EAAC,GAAG,EAAE,KAAK,EAAE,OAAiB,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAiB,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,MAAM,IAAA,0BAAkB,EAAC,IAAA,UAAI,EAAC,IAAI,CAAC,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,mBAAW,CAAC,GAAG,EAAE,CAAA;QAE/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAE9B,IAAI,OAAO,EAAE;gBACX,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,EAAC,CAAC,CAAA;aACzC;SACF;QAED,cAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAEtC,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;CACH,CAAC,EAzBY,mBAAW,kBACX,mBAAW,kBACb,iBAAS,eAuBnB;AAEK,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE,WAClD,OAAA,IAAA,0BAAmB,EAAC,MAAA,mBAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,OAAO,EAAE,IAAA,sBAAe,EAAC,GAAG,CAAC,CAAC,CAAA,EAAA,CAAA;AADnE,QAAA,oBAAoB,wBAC+C;AAEzE,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAChD,IAAA,eAAO,EAAC,IAAA,mBAAW,EAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,IAAA,0BAAmB,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,IAAA,sBAAe,EAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AADpF,QAAA,kBAAkB,sBACkE;AAMjG,MAAM,gBAAgB,GAAG,IAAA,WAAK,EAAC,GAAG,EAAE,CAAC,OAA2B,EAAE,EAAE;IAClE,cAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACtB,MAAM,YAAY,GAAG,IAAA,aAAO,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACjD,MAAM,WAAW,GAAG,IAAA,aAAO,EAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAEpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE;YAChD,MAAM,MAAM,GAAU,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAC,GAAG,EAAC,CAAA;YAEpD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,MAAM,CAAC,KAAK,GAAG,IAAA,sBAAc,GAAE,CAAA;aAChC;iBAAM,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;gBAClD,yBAAyB;gBACzB,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,IAAA,sBAAc,GAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAC,CAAA;aACtD;YAED,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE;gBAC/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;aACrB;YAED,qEAAqE;YACrE,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAC,GAAG,MAAM,EAAC,CAAC,CAAA;SACnC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAAG,CAAC,EAAC,GAAG,EAAa,EAAE,EAAE,CAC7C,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;QAC7B,KAAK,CAAC,SAAS,GAAG,IAAA,SAAG,GAAE,CAAA;QACvB,KAAK,CAAC,UAAU,EAAE,CAAA;IACpB,CAAC,CAAC,CAAC,CAAA;AAEL,MAAM,iBAAiB,GAAG,CAAC,EAAC,GAAG,EAAa,EAAE,EAAE,CAC9C,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;QAC7B,KAAK,CAAC,UAAU,GAAG,IAAA,SAAG,GAAE,CAAA;QACxB,KAAK,CAAC,WAAW,EAAE,CAAA;IACrB,CAAC,CAAC,CAAC,CAAA;AAEL,MAAM,gBAAgB,GAAG,CAAC,EAAC,GAAG,EAAa,EAAE,CAAC,IAAI,CAAU,EAAE,EAAE;IAC9D,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,aAAa,EAAE,CAAA;gBACrB,KAAK,CAAC,YAAY,GAAG,IAAA,SAAG,GAAE,CAAA;YAC5B,CAAC,CAAC,CAAC,CAAA;KACJ;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE;QAC3B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,aAAa,EAAE,CAAA;gBACrB,KAAK,CAAC,YAAY,GAAG,IAAA,SAAG,GAAE,CAAA;YAC5B,CAAC,CAAC,CAAC,CAAA;KACJ;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,EAAC,GAAG,EAAE,KAAK,EAAa,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAU,EAAE,EAAE;IAClF,IAAI,IAAI,KAAK,IAAI,EAAE;QACjB,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,KAAK,CAAA;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE/C,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,IAAI,GAAG,EAAE;oBACP,KAAK,CAAC,aAAa,IAAI,IAAA,SAAG,EAAC,GAAG,CAAC,IAAI,CAAC,CAAA;iBACrC;gBAED,IAAI,EAAE,EAAE;oBACN,KAAK,CAAC,qBAAqB,EAAE,CAAA;iBAC9B;qBAAM;oBACL,KAAK,CAAC,qBAAqB,EAAE,CAAA;iBAC9B;YACH,CAAC,CAAC,CAAC,CAAA;KACJ;SAAM,IAAI,IAAI,KAAK,MAAM,EAAE;QAC1B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,SAAS,GAAG,IAAA,SAAG,GAAE,CAAA;YACzB,CAAC,CAAC,CAAC,CAAA;KACJ;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE;QAC3B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,WAAW,EAAE,CAAA;gBACnB,KAAK,CAAC,UAAU,GAAG,IAAA,SAAG,GAAE,CAAA;YAC1B,CAAC,CAAC,CAAC,CAAA;KACJ;SAAM,IAAI,IAAI,KAAK,MAAM,EAAE;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAEnD,4BAA4B;QAC5B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;oBAC7B,KAAK,CAAC,UAAU,EAAE,CAAA;oBAClB,KAAK,CAAC,UAAU,IAAI,IAAA,SAAG,GAAE,GAAG,OAAO,CAAC,IAAI,CAAA;gBAC1C,CAAC,CAAC,CAAC,CAAA;SACJ;KACF;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;QAC5B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,YAAY,EAAE,CAAA;YACtB,CAAC,CAAC,CAAC,CAAA;KACJ;AACH,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,EAAC,GAAG,EAAa,EAAE,EAAE,CAC9C,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;QAC7B,KAAK,CAAC,UAAU,GAAG,IAAA,SAAG,GAAE,CAAA;QACxB,KAAK,CAAC,aAAa,GAAG,IAAA,UAAI,EAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAA,SAAG,GAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAC,CAAA;AAEE,MAAM,eAAe,GAAG,CAAC,UAAsB,EAAE,EAAE;IACxD,UAAU,CAAC,EAAE,CAAC,qBAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACrD,UAAU,CAAC,EAAE,CAAC,qBAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IACvD,UAAU,CAAC,EAAE,CAAC,qBAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACrD,UAAU,CAAC,EAAE,CAAC,qBAAe,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;IAC3D,UAAU,CAAC,EAAE,CAAC,qBAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,GAAG,CAAC,qBAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;QACtD,UAAU,CAAC,GAAG,CAAC,qBAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;QACxD,UAAU,CAAC,GAAG,CAAC,qBAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;QACtD,UAAU,CAAC,GAAG,CAAC,qBAAe,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;QAC5D,UAAU,CAAC,GAAG,CAAC,qBAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAC1D,CAAC,CAAA;AACH,CAAC,CAAA;AAdY,QAAA,eAAe,mBAc3B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"relays.mjs","sourceRoot":"","sources":["../../src/relays.ts"],"names":[],"mappings":"OAAO,EAAC,QAAQ,EAAE,OAAO,EAAC,MAAM,cAAc;OACvC,EAAC,UAAU,EAAC,MAAM,iBAAiB;OACnC,EAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,eAAe;OAEtF,EAAC,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAC,MAAM,gBAAgB;OAC/E,EAAC,eAAe,EAAC,MAAM,eAAe;OAEtC,EAAC,UAAU,EAAC;AAyBnB,MAAM,CAAC,MAAM,cAAc,GAAG,GAAe,EAAE,CAAC,CAAC;IAC/C,UAAU,EAAE,GAAG,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;IACZ,aAAa,EAAE,CAAC;IAChB,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,CAAC;IACxB,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;CAChB,CAAC,CAAA;AAQF,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAU,EAAE,CAAC,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CACtD,OAAO,CACL,MAAM,CAAC,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAA,EAAA,EAChC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAA,EAAA,CAAC,CACjD,CACF,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAc,EAAE,EAAE;IACzD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,YAAa,CAAA;IAElC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;KAC5E;IAED,MAAM,GAAG,GAAQ,MAAM,QAAQ,CAAC,GAAG,IAAI,aAAa,EAAE,EAAC,IAAI,EAAC,CAAC,CAAA;IAC7D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAA;IAErD,KAAK,MAAM,EAAC,GAAG,EAAE,IAAI,EAAC,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,KAAI,EAAE,EAAE;QACzC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;KAC7B;IAED,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,EACX,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,WAAW,EACvB,QAAQ,EAAE,SAAS,GACpB,GAAG,UAAU,CAAC;IACb,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAiB,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAE/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAE9B,IAAI,OAAO,EAAE;gBACX,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,EAAC,CAAC,CAAA;aACzC;SACF;QAED,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAEtC,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE,WAClD,OAAA,mBAAmB,CAAC,MAAA,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAA,EAAA,CAAA;AAEhF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAChD,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAMjG,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAA2B,EAAE,EAAE;IAClE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACtB,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACjD,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAEpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE;YAChD,MAAM,MAAM,GAAU,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAC,GAAG,EAAC,CAAA;YAEpD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,CAAA;aAChC;iBAAM,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;gBAClD,yBAAyB;gBACzB,MAAM,CAAC,KAAK,GAAG,EAAC,GAAG,cAAc,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAC,CAAA;aACtD;YAED,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE;gBAC/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;aACrB;YAED,qEAAqE;YACrE,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAC,GAAG,MAAM,EAAC,CAAC,CAAA;SACnC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAAG,CAAC,EAAC,GAAG,EAAa,EAAE,EAAE,CAC7C,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;QAC7B,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAA;QACvB,KAAK,CAAC,UAAU,EAAE,CAAA;IACpB,CAAC,CAAC,CAAC,CAAA;AAEL,MAAM,iBAAiB,GAAG,CAAC,EAAC,GAAG,EAAa,EAAE,EAAE,CAC9C,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;QAC7B,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAA;QACxB,KAAK,CAAC,WAAW,EAAE,CAAA;IACrB,CAAC,CAAC,CAAC,CAAA;AAEL,MAAM,gBAAgB,GAAG,CAAC,EAAC,GAAG,EAAa,EAAE,CAAC,IAAI,CAAU,EAAE,EAAE;IAC9D,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,aAAa,EAAE,CAAA;gBACrB,KAAK,CAAC,YAAY,GAAG,GAAG,EAAE,CAAA;YAC5B,CAAC,CAAC,CAAC,CAAA;KACJ;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE;QAC3B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,aAAa,EAAE,CAAA;gBACrB,KAAK,CAAC,YAAY,GAAG,GAAG,EAAE,CAAA;YAC5B,CAAC,CAAC,CAAC,CAAA;KACJ;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,EAAC,GAAG,EAAE,KAAK,EAAa,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAU,EAAE,EAAE;IAClF,IAAI,IAAI,KAAK,IAAI,EAAE;QACjB,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,KAAK,CAAA;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE/C,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,IAAI,GAAG,EAAE;oBACP,KAAK,CAAC,aAAa,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;iBACrC;gBAED,IAAI,EAAE,EAAE;oBACN,KAAK,CAAC,qBAAqB,EAAE,CAAA;iBAC9B;qBAAM;oBACL,KAAK,CAAC,qBAAqB,EAAE,CAAA;iBAC9B;YACH,CAAC,CAAC,CAAC,CAAA;KACJ;SAAM,IAAI,IAAI,KAAK,MAAM,EAAE;QAC1B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAA;YACzB,CAAC,CAAC,CAAC,CAAA;KACJ;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE;QAC3B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,WAAW,EAAE,CAAA;gBACnB,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAA;YAC1B,CAAC,CAAC,CAAC,CAAA;KACJ;SAAM,IAAI,IAAI,KAAK,MAAM,EAAE;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAEnD,4BAA4B;QAC5B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;oBAC7B,KAAK,CAAC,UAAU,EAAE,CAAA;oBAClB,KAAK,CAAC,UAAU,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAA;gBAC1C,CAAC,CAAC,CAAC,CAAA;SACJ;KACF;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;QAC5B,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBAC7B,KAAK,CAAC,YAAY,EAAE,CAAA;YACtB,CAAC,CAAC,CAAC,CAAA;KACJ;AACH,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,EAAC,GAAG,EAAa,EAAE,EAAE,CAC9C,gBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;QAC7B,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAA;QACxB,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAC,CAAA;AAEL,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAAsB,EAAE,EAAE;IACxD,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACrD,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IACvD,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACrD,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;IAC3D,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAEvD,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;QACtD,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;QACxD,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;QACtD,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;QAC5D,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAC1D,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -1,259 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFilterSelections = exports.defaultFilterSelectionRules = exports.getFilterSelectionsForUser = exports.getFilterSelectionsForAuthors = exports.getFilterSelectionsForIndexedKinds = exports.getFilterSelectionsForWraps = exports.getFilterSelectionsForSearch = exports.makeRouter = exports.getSearchRelays = exports.getFallbackRelays = exports.getIndexerRelays = exports.getPubkeyRelays = exports.getRelayQuality = exports.RouterScenario = exports.Router = exports.addMaximalFallbacks = exports.addMinimalFallbacks = exports.addNoFallbacks = exports.RelayMode = exports.INDEXED_KINDS = void 0;
4
- const lib_1 = require("@welshman/lib");
5
- const util_1 = require("@welshman/util");
6
- const session_1 = require("./session.cjs");
7
- const relaySelections_1 = require("./relaySelections.cjs");
8
- const relays_1 = require("./relays.cjs");
9
- exports.INDEXED_KINDS = [util_1.PROFILE, util_1.RELAYS, util_1.INBOX_RELAYS, util_1.FOLLOWS];
10
- var RelayMode;
11
- (function (RelayMode) {
12
- RelayMode["Read"] = "read";
13
- RelayMode["Write"] = "write";
14
- RelayMode["Inbox"] = "inbox";
15
- })(RelayMode || (exports.RelayMode = RelayMode = {}));
16
- const makeSelection = (relays, weight = 1) => ({ relays: relays.map(util_1.normalizeRelayUrl), weight });
17
- const addNoFallbacks = (count, limit) => 0;
18
- exports.addNoFallbacks = addNoFallbacks;
19
- const addMinimalFallbacks = (count, limit) => count > 0 ? 0 : 1;
20
- exports.addMinimalFallbacks = addMinimalFallbacks;
21
- const addMaximalFallbacks = (count, limit) => limit - count;
22
- exports.addMaximalFallbacks = addMaximalFallbacks;
23
- class Router {
24
- constructor(options) {
25
- this.options = options;
26
- // Utilities derived from options
27
- this.getRelaysForPubkey = (pubkey, mode) => { var _a, _b; return ((_b = (_a = this.options).getPubkeyRelays) === null || _b === void 0 ? void 0 : _b.call(_a, pubkey, mode)) || []; };
28
- this.getRelaysForPubkeys = (pubkeys, mode) => pubkeys.map(pubkey => this.getRelaysForPubkey(pubkey, mode));
29
- this.getRelaysForUser = (mode) => {
30
- var _a, _b;
31
- const pubkey = (_b = (_a = this.options).getUserPubkey) === null || _b === void 0 ? void 0 : _b.call(_a);
32
- return pubkey ? this.getRelaysForPubkey(pubkey, mode) : [];
33
- };
34
- // Utilities for creating scenarios
35
- this.scenario = (selections) => new RouterScenario(this, selections);
36
- this.merge = (scenarios) => this.scenario(scenarios.flatMap((scenario) => scenario.selections));
37
- // Routing scenarios
38
- this.FromRelays = (relays) => this.scenario([makeSelection(relays)]);
39
- this.ForUser = () => this.FromRelays(this.getRelaysForUser(RelayMode.Read));
40
- this.FromUser = () => this.FromRelays(this.getRelaysForUser(RelayMode.Write));
41
- this.UserInbox = () => this.FromRelays(this.getRelaysForUser(RelayMode.Inbox)).policy(exports.addNoFallbacks);
42
- this.ForPubkey = (pubkey) => this.FromRelays(this.getRelaysForPubkey(pubkey, RelayMode.Read));
43
- this.FromPubkey = (pubkey) => this.FromRelays(this.getRelaysForPubkey(pubkey, RelayMode.Write));
44
- this.PubkeyInbox = (pubkey) => this.FromRelays(this.getRelaysForPubkey(pubkey, RelayMode.Inbox)).policy(exports.addNoFallbacks);
45
- this.ForPubkeys = (pubkeys) => this.merge(pubkeys.map(pubkey => this.ForPubkey(pubkey)));
46
- this.FromPubkeys = (pubkeys) => this.merge(pubkeys.map(pubkey => this.FromPubkey(pubkey)));
47
- this.PubkeyInboxes = (pubkeys) => this.merge(pubkeys.map(pubkey => this.PubkeyInbox(pubkey)));
48
- this.Event = (event) => this.FromRelays(this.getRelaysForPubkey(event.pubkey, RelayMode.Write));
49
- this.Replies = (event) => this.FromRelays(this.getRelaysForPubkey(event.pubkey, RelayMode.Read));
50
- this.Quote = (event, value, relays = []) => {
51
- var _a;
52
- const tag = event.tags.find(t => t[1] === value);
53
- const scenarios = [
54
- this.ForPubkey(event.pubkey),
55
- this.FromPubkey(event.pubkey),
56
- ];
57
- if ((tag === null || tag === void 0 ? void 0 : tag[2]) && (0, util_1.isShareableRelayUrl)(tag[2])) {
58
- scenarios.push(this.FromRelays([tag[2]]));
59
- }
60
- if (((_a = tag === null || tag === void 0 ? void 0 : tag[3]) === null || _a === void 0 ? void 0 : _a.length) === 64) {
61
- scenarios.push(this.FromPubkeys([tag[3]]));
62
- }
63
- return this.merge(scenarios);
64
- };
65
- this.EventAncestors = (event, type) => {
66
- return this.scenario((0, util_1.getAncestorTags)(event.tags)[type].flatMap(([_, value, relay, pubkey]) => {
67
- const selections = [makeSelection(this.ForUser().getUrls(), 0.5)];
68
- if (pubkey) {
69
- selections.push(makeSelection(this.FromPubkey(pubkey).getUrls()));
70
- }
71
- if (relay) {
72
- selections.push(makeSelection([relay], 0.9));
73
- }
74
- return selections;
75
- }));
76
- };
77
- this.EventMentions = (event) => this.EventAncestors(event, "mentions");
78
- this.EventParents = (event) => this.EventAncestors(event, "replies");
79
- this.EventRoots = (event) => this.EventAncestors(event, "roots");
80
- this.PublishEvent = (event) => {
81
- const pubkeys = (0, util_1.getPubkeyTagValues)(event.tags);
82
- return this.merge([
83
- this.FromPubkey(event.pubkey),
84
- ...pubkeys.map(pubkey => this.ForPubkey(pubkey).weight(0.5)),
85
- ]);
86
- };
87
- }
88
- }
89
- exports.Router = Router;
90
- class RouterScenario {
91
- constructor(router, selections, options = {}) {
92
- this.router = router;
93
- this.selections = selections;
94
- this.options = options;
95
- this.clone = (options) => new RouterScenario(this.router, this.selections, { ...this.options, ...options });
96
- this.filter = (f) => new RouterScenario(this.router, this.selections.filter(selection => f(selection)), this.options);
97
- this.update = (f) => new RouterScenario(this.router, this.selections.map(selection => f(selection)), this.options);
98
- this.policy = (policy) => this.clone({ policy });
99
- this.limit = (limit) => this.clone({ limit });
100
- this.weight = (scale) => this.update(selection => ({ ...selection, weight: selection.weight * scale }));
101
- this.getPolicy = () => this.options.policy || exports.addMaximalFallbacks;
102
- this.getLimit = () => { var _a, _b; return this.options.limit || ((_b = (_a = this.router.options).getLimit) === null || _b === void 0 ? void 0 : _b.call(_a)) || 3; };
103
- this.getUrls = () => {
104
- const limit = this.getLimit();
105
- const fallbackPolicy = this.getPolicy();
106
- const relayWeights = new Map();
107
- for (const { weight, relays } of this.selections) {
108
- for (const relay of relays) {
109
- if (!(0, util_1.isShareableRelayUrl)(relay)) {
110
- continue;
111
- }
112
- relayWeights.set(relay, (0, lib_1.add)(weight, relayWeights.get(relay)));
113
- }
114
- }
115
- const scoreRelay = (relay) => {
116
- const { getRelayQuality = (0, lib_1.always)(1) } = this.router.options;
117
- const quality = getRelayQuality(relay);
118
- const weight = relayWeights.get(relay);
119
- // Log the weight, since it's a straight count which ends up over-weighting hubs.
120
- // Also add some random noise so that we'll occasionally pick lower quality/less
121
- // popular relays.
122
- return -(quality * (0, lib_1.inc)(Math.log(weight)) * Math.random());
123
- };
124
- const relays = (0, lib_1.take)(limit, (0, lib_1.sortBy)(scoreRelay, Array.from(relayWeights.keys())
125
- .filter(scoreRelay)));
126
- const fallbacksNeeded = fallbackPolicy(relays.length, limit);
127
- const allFallbackRelays = this.router.options.getFallbackRelays();
128
- const fallbackRelays = (0, lib_1.shuffle)(allFallbackRelays).slice(0, fallbacksNeeded);
129
- for (const fallbackRelay of fallbackRelays) {
130
- relays.push(fallbackRelay);
131
- }
132
- return relays;
133
- };
134
- this.getUrl = () => (0, lib_1.first)(this.getUrls());
135
- }
136
- }
137
- exports.RouterScenario = RouterScenario;
138
- // Default router options
139
- const getRelayQuality = (url) => {
140
- const relay = relays_1.relaysByUrl.get().get(url);
141
- if (relay === null || relay === void 0 ? void 0 : relay.stats) {
142
- if (relay.stats.recent_errors.filter(n => n > (0, lib_1.ago)(5)).length > 0)
143
- return 0;
144
- if (relay.stats.recent_errors.filter(n => n > (0, lib_1.ago)(lib_1.MINUTE)).length > 1)
145
- return 0;
146
- if (relay.stats.recent_errors.filter(n => n > (0, lib_1.ago)(lib_1.HOUR)).length > 5)
147
- return 0;
148
- if (relay.stats.recent_errors.filter(n => n > (0, lib_1.ago)(lib_1.DAY)).length > 20)
149
- return 0;
150
- if (relay.stats.recent_errors.filter(n => n > (0, lib_1.ago)(lib_1.WEEK)).length > 100)
151
- return 0;
152
- }
153
- return 1;
154
- };
155
- exports.getRelayQuality = getRelayQuality;
156
- const getPubkeyRelays = (pubkey, mode) => {
157
- const $relaySelections = relaySelections_1.relaySelectionsByPubkey.get();
158
- const $inboxSelections = relaySelections_1.inboxRelaySelectionsByPubkey.get();
159
- switch (mode) {
160
- case RelayMode.Read:
161
- return (0, relaySelections_1.getReadRelayUrls)($relaySelections.get(pubkey));
162
- case RelayMode.Write:
163
- return (0, relaySelections_1.getWriteRelayUrls)($relaySelections.get(pubkey));
164
- case RelayMode.Inbox:
165
- return (0, relaySelections_1.getRelayUrls)($inboxSelections.get(pubkey));
166
- default:
167
- return (0, relaySelections_1.getRelayUrls)($relaySelections.get(pubkey));
168
- }
169
- };
170
- exports.getPubkeyRelays = getPubkeyRelays;
171
- const getIndexerRelays = () => lib_1.ctx.app.indexerRelays || (0, exports.getFallbackRelays)();
172
- exports.getIndexerRelays = getIndexerRelays;
173
- exports.getFallbackRelays = (0, lib_1.throttleWithValue)(300, () => (0, lib_1.sortBy)(r => -(0, exports.getRelayQuality)(r.url), relays_1.relays.get())
174
- .slice(0, 30)
175
- .map(r => r.url));
176
- exports.getSearchRelays = (0, lib_1.throttleWithValue)(300, () => (0, lib_1.sortBy)(r => -(0, exports.getRelayQuality)(r.url), relays_1.relays.get())
177
- .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); })
178
- .slice(0, 30)
179
- .map(r => r.url));
180
- const makeRouter = (options = {}) => new Router({
181
- getPubkeyRelays: exports.getPubkeyRelays,
182
- getIndexerRelays: exports.getIndexerRelays,
183
- getFallbackRelays: exports.getFallbackRelays,
184
- getSearchRelays: exports.getSearchRelays,
185
- getRelayQuality: exports.getRelayQuality,
186
- getUserPubkey: () => session_1.pubkey.get(),
187
- getLimit: () => 3,
188
- ...options,
189
- });
190
- exports.makeRouter = makeRouter;
191
- const getFilterSelectionsForSearch = (filter) => {
192
- var _a, _b;
193
- if (!filter.search)
194
- return [];
195
- const relays = ((_b = (_a = lib_1.ctx.app.router.options).getSearchRelays) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
196
- return [{ filter, scenario: lib_1.ctx.app.router.FromRelays(relays).weight(10) }];
197
- };
198
- exports.getFilterSelectionsForSearch = getFilterSelectionsForSearch;
199
- const getFilterSelectionsForWraps = (filter) => {
200
- var _a;
201
- if (!((_a = filter.kinds) === null || _a === void 0 ? void 0 : _a.includes(util_1.WRAP)) || filter.authors)
202
- return [];
203
- return [{
204
- filter: { ...filter, kinds: [util_1.WRAP] },
205
- scenario: lib_1.ctx.app.router.UserInbox(),
206
- }];
207
- };
208
- exports.getFilterSelectionsForWraps = getFilterSelectionsForWraps;
209
- const getFilterSelectionsForIndexedKinds = (filter) => {
210
- var _a, _b;
211
- const kinds = (0, lib_1.intersection)(exports.INDEXED_KINDS, filter.kinds || []);
212
- if (kinds.length === 0)
213
- return [];
214
- const relays = ((_b = (_a = lib_1.ctx.app.router.options).getIndexerRelays) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
215
- return [{
216
- filter: { ...filter, kinds },
217
- scenario: lib_1.ctx.app.router.FromRelays(relays),
218
- }];
219
- };
220
- exports.getFilterSelectionsForIndexedKinds = getFilterSelectionsForIndexedKinds;
221
- const getFilterSelectionsForAuthors = (filter) => {
222
- if (!filter.authors)
223
- return [];
224
- const chunkCount = (0, lib_1.clamp)([1, 30], Math.round(filter.authors.length / 30));
225
- return (0, lib_1.chunks)(chunkCount, filter.authors)
226
- .map(authors => ({
227
- filter: { ...filter, authors },
228
- scenario: lib_1.ctx.app.router.FromPubkeys(authors),
229
- }));
230
- };
231
- exports.getFilterSelectionsForAuthors = getFilterSelectionsForAuthors;
232
- const getFilterSelectionsForUser = (filter) => [{ filter, scenario: lib_1.ctx.app.router.ForUser().weight(0.2) }];
233
- exports.getFilterSelectionsForUser = getFilterSelectionsForUser;
234
- exports.defaultFilterSelectionRules = [
235
- exports.getFilterSelectionsForSearch,
236
- exports.getFilterSelectionsForWraps,
237
- exports.getFilterSelectionsForIndexedKinds,
238
- exports.getFilterSelectionsForAuthors,
239
- exports.getFilterSelectionsForUser,
240
- ];
241
- const getFilterSelections = (filters, rules = exports.defaultFilterSelectionRules) => {
242
- const filtersById = new Map();
243
- const scenariosById = new Map();
244
- for (const filter of filters) {
245
- for (const filterScenario of rules.flatMap(rule => rule(filter))) {
246
- const id = (0, util_1.getFilterId)(filterScenario.filter);
247
- filtersById.set(id, filterScenario.filter);
248
- (0, lib_1.pushToMapKey)(scenariosById, id, filterScenario.scenario);
249
- }
250
- }
251
- const result = [];
252
- for (const [id, filter] of filtersById.entries()) {
253
- const scenario = lib_1.ctx.app.router.merge(scenariosById.get(id) || []);
254
- result.push({ filters: [filter], relays: scenario.getUrls() });
255
- }
256
- return result;
257
- };
258
- exports.getFilterSelections = getFilterSelections;
259
- //# sourceMappingURL=router.cjs.map