@welshman/app 0.14.0-pre3 → 0.14.0-pre5

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/app.d.ts +10 -17
  2. package/dist/app/src/app.d.ts.map +1 -1
  3. package/dist/app/src/app.js +20 -24
  4. package/dist/app/src/app.js.map +1 -1
  5. package/dist/app/src/index.d.ts +1 -0
  6. package/dist/app/src/index.d.ts.map +1 -1
  7. package/dist/app/src/index.js +1 -0
  8. package/dist/app/src/index.js.map +1 -1
  9. package/dist/app/src/plugins/base.d.ts +5 -29
  10. package/dist/app/src/plugins/base.d.ts.map +1 -1
  11. package/dist/app/src/plugins/base.js +6 -30
  12. package/dist/app/src/plugins/base.js.map +1 -1
  13. package/dist/app/src/plugins/commandLists.d.ts +19 -0
  14. package/dist/app/src/plugins/commandLists.d.ts.map +1 -0
  15. package/dist/app/src/plugins/commandLists.js +28 -0
  16. package/dist/app/src/plugins/commandLists.js.map +1 -0
  17. package/dist/app/src/plugins/deletes.js +1 -1
  18. package/dist/app/src/plugins/deletes.js.map +1 -1
  19. package/dist/app/src/plugins/events.d.ts +11 -21
  20. package/dist/app/src/plugins/events.d.ts.map +1 -1
  21. package/dist/app/src/plugins/events.js +10 -26
  22. package/dist/app/src/plugins/events.js.map +1 -1
  23. package/dist/app/src/plugins/feeds.d.ts +1 -1
  24. package/dist/app/src/plugins/feeds.d.ts.map +1 -1
  25. package/dist/app/src/plugins/feeds.js +1 -1
  26. package/dist/app/src/plugins/feeds.js.map +1 -1
  27. package/dist/app/src/plugins/handles.d.ts +1 -1
  28. package/dist/app/src/plugins/handles.d.ts.map +1 -1
  29. package/dist/app/src/plugins/handles.js.map +1 -1
  30. package/dist/app/src/plugins/logger.d.ts +1 -1
  31. package/dist/app/src/plugins/logger.d.ts.map +1 -1
  32. package/dist/app/src/plugins/logger.js +1 -2
  33. package/dist/app/src/plugins/logger.js.map +1 -1
  34. package/dist/app/src/plugins/pinboards.d.ts +1 -1
  35. package/dist/app/src/plugins/pinboards.d.ts.map +1 -1
  36. package/dist/app/src/plugins/pinboards.js +1 -1
  37. package/dist/app/src/plugins/pinboards.js.map +1 -1
  38. package/dist/app/src/plugins/profiles.d.ts +1 -2
  39. package/dist/app/src/plugins/profiles.d.ts.map +1 -1
  40. package/dist/app/src/plugins/profiles.js +1 -2
  41. package/dist/app/src/plugins/profiles.js.map +1 -1
  42. package/dist/app/src/plugins/publisher.d.ts +2 -2
  43. package/dist/app/src/plugins/publisher.d.ts.map +1 -1
  44. package/dist/app/src/plugins/publisher.js +8 -6
  45. package/dist/app/src/plugins/publisher.js.map +1 -1
  46. package/dist/app/src/plugins/reactions.js +1 -1
  47. package/dist/app/src/plugins/reactions.js.map +1 -1
  48. package/dist/app/src/plugins/relayMembers.d.ts +1 -1
  49. package/dist/app/src/plugins/relayMembers.d.ts.map +1 -1
  50. package/dist/app/src/plugins/relayRoles.d.ts +2 -2
  51. package/dist/app/src/plugins/relayRoles.d.ts.map +1 -1
  52. package/dist/app/src/plugins/relayRoles.js +1 -1
  53. package/dist/app/src/plugins/relayRoles.js.map +1 -1
  54. package/dist/app/src/plugins/relays.d.ts +1 -2
  55. package/dist/app/src/plugins/relays.d.ts.map +1 -1
  56. package/dist/app/src/plugins/relays.js +1 -1
  57. package/dist/app/src/plugins/relays.js.map +1 -1
  58. package/dist/app/src/plugins/roomLists.d.ts +1 -1
  59. package/dist/app/src/plugins/roomLists.d.ts.map +1 -1
  60. package/dist/app/src/plugins/roomLists.js +1 -1
  61. package/dist/app/src/plugins/roomLists.js.map +1 -1
  62. package/dist/app/src/plugins/roomPins.d.ts +2 -2
  63. package/dist/app/src/plugins/roomPins.d.ts.map +1 -1
  64. package/dist/app/src/plugins/roomPins.js +1 -1
  65. package/dist/app/src/plugins/roomPins.js.map +1 -1
  66. package/dist/app/src/plugins/rooms.d.ts +1 -2
  67. package/dist/app/src/plugins/rooms.d.ts.map +1 -1
  68. package/dist/app/src/plugins/rooms.js +13 -13
  69. package/dist/app/src/plugins/rooms.js.map +1 -1
  70. package/dist/app/src/plugins/router.d.ts +2 -1
  71. package/dist/app/src/plugins/router.d.ts.map +1 -1
  72. package/dist/app/src/plugins/router.js +23 -13
  73. package/dist/app/src/plugins/router.js.map +1 -1
  74. package/dist/app/src/plugins/sync.d.ts +2 -2
  75. package/dist/app/src/plugins/sync.d.ts.map +1 -1
  76. package/dist/app/src/plugins/sync.js +6 -3
  77. package/dist/app/src/plugins/sync.js.map +1 -1
  78. package/dist/app/src/plugins/topics.d.ts +2 -6
  79. package/dist/app/src/plugins/topics.d.ts.map +1 -1
  80. package/dist/app/src/plugins/topics.js +48 -34
  81. package/dist/app/src/plugins/topics.js.map +1 -1
  82. package/dist/app/src/plugins/wot.d.ts +5 -0
  83. package/dist/app/src/plugins/wot.d.ts.map +1 -1
  84. package/dist/app/src/plugins/wot.js +59 -24
  85. package/dist/app/src/plugins/wot.js.map +1 -1
  86. package/dist/app/src/plugins/wraps.d.ts.map +1 -1
  87. package/dist/app/src/plugins/wraps.js +11 -9
  88. package/dist/app/src/plugins/wraps.js.map +1 -1
  89. package/dist/app/src/plugins/zapGoals.d.ts +3 -9
  90. package/dist/app/src/plugins/zapGoals.d.ts.map +1 -1
  91. package/dist/app/src/plugins/zapGoals.js +6 -10
  92. package/dist/app/src/plugins/zapGoals.js.map +1 -1
  93. package/dist/app/src/plugins/zappers.d.ts +1 -1
  94. package/dist/app/src/plugins/zappers.d.ts.map +1 -1
  95. package/dist/app/src/plugins/zappers.js +1 -1
  96. package/dist/app/src/plugins/zappers.js.map +1 -1
  97. package/dist/app/src/policy.d.ts +1 -1
  98. package/dist/app/src/policy.d.ts.map +1 -1
  99. package/dist/app/src/policy.js +4 -10
  100. package/dist/app/src/policy.js.map +1 -1
  101. package/dist/domain/src/behaviors/Expiration.d.ts +1 -8
  102. package/dist/domain/src/behaviors/Expiration.d.ts.map +1 -1
  103. package/dist/domain/src/behaviors/Expiration.js +1 -9
  104. package/dist/domain/src/behaviors/Expiration.js.map +1 -1
  105. package/dist/domain/src/index.d.ts +1 -0
  106. package/dist/domain/src/index.d.ts.map +1 -1
  107. package/dist/domain/src/index.js +1 -0
  108. package/dist/domain/src/index.js.map +1 -1
  109. package/dist/domain/src/kinds/CommandList.d.ts +18 -0
  110. package/dist/domain/src/kinds/CommandList.d.ts.map +1 -0
  111. package/dist/domain/src/kinds/CommandList.js +38 -0
  112. package/dist/domain/src/kinds/CommandList.js.map +1 -0
  113. package/dist/feeds/src/controller.d.ts +1 -1
  114. package/dist/feeds/src/controller.d.ts.map +1 -1
  115. package/dist/feeds/src/request.d.ts +2 -1
  116. package/dist/feeds/src/request.d.ts.map +1 -1
  117. package/dist/feeds/src/request.js +2 -1
  118. package/dist/feeds/src/request.js.map +1 -1
  119. package/dist/net/src/adapter.d.ts +3 -2
  120. package/dist/net/src/adapter.d.ts.map +1 -1
  121. package/dist/net/src/adapter.js +29 -16
  122. package/dist/net/src/adapter.js.map +1 -1
  123. package/dist/net/src/context.d.ts +1 -1
  124. package/dist/net/src/context.d.ts.map +1 -1
  125. package/dist/net/src/index.d.ts +0 -2
  126. package/dist/net/src/index.d.ts.map +1 -1
  127. package/dist/net/src/index.js +0 -2
  128. package/dist/net/src/index.js.map +1 -1
  129. package/dist/net/src/message.d.ts +10 -0
  130. package/dist/net/src/message.d.ts.map +1 -1
  131. package/dist/net/src/message.js +22 -0
  132. package/dist/net/src/message.js.map +1 -1
  133. package/dist/net/src/multiplex.d.ts +2 -1
  134. package/dist/net/src/multiplex.d.ts.map +1 -1
  135. package/dist/net/src/multiplex.js +24 -15
  136. package/dist/net/src/multiplex.js.map +1 -1
  137. package/dist/net/src/policy.d.ts.map +1 -1
  138. package/dist/net/src/policy.js +3 -3
  139. package/dist/net/src/policy.js.map +1 -1
  140. package/dist/net/src/request.d.ts +2 -1
  141. package/dist/net/src/request.d.ts.map +1 -1
  142. package/dist/net/src/request.js +23 -9
  143. package/dist/net/src/request.js.map +1 -1
  144. package/dist/net/src/wrapManager.d.ts +3 -4
  145. package/dist/net/src/wrapManager.d.ts.map +1 -1
  146. package/dist/net/src/wrapManager.js +8 -6
  147. package/dist/net/src/wrapManager.js.map +1 -1
  148. package/dist/store/src/{repository.d.ts → derive.d.ts} +33 -41
  149. package/dist/store/src/derive.d.ts.map +1 -0
  150. package/dist/store/src/derive.js +706 -0
  151. package/dist/store/src/derive.js.map +1 -0
  152. package/dist/store/src/index.d.ts +9 -1
  153. package/dist/store/src/index.d.ts.map +1 -1
  154. package/dist/store/src/index.js +9 -1
  155. package/dist/store/src/index.js.map +1 -1
  156. package/dist/store/src/misc.d.ts +2 -7
  157. package/dist/store/src/misc.d.ts.map +1 -1
  158. package/dist/store/src/misc.js +1 -1
  159. package/dist/store/src/misc.js.map +1 -1
  160. package/dist/{net/src/repository.d.ts → store/src/repository/adapters/memory.d.ts} +22 -30
  161. package/dist/store/src/repository/adapters/memory.d.ts.map +1 -0
  162. package/dist/{net/src/repository.js → store/src/repository/adapters/memory.js} +96 -106
  163. package/dist/store/src/repository/adapters/memory.js.map +1 -0
  164. package/dist/store/src/repository/adapters/sqlite/engine.d.ts +65 -0
  165. package/dist/store/src/repository/adapters/sqlite/engine.d.ts.map +1 -0
  166. package/dist/store/src/repository/adapters/sqlite/engine.js +420 -0
  167. package/dist/store/src/repository/adapters/sqlite/engine.js.map +1 -0
  168. package/dist/store/src/repository/adapters/sqlite/leader.d.ts +8 -0
  169. package/dist/store/src/repository/adapters/sqlite/leader.d.ts.map +1 -0
  170. package/dist/store/src/repository/adapters/sqlite/leader.js +222 -0
  171. package/dist/store/src/repository/adapters/sqlite/leader.js.map +1 -0
  172. package/dist/store/src/repository/adapters/sqlite/protocol.d.ts +52 -0
  173. package/dist/store/src/repository/adapters/sqlite/protocol.d.ts.map +1 -0
  174. package/dist/store/src/repository/adapters/sqlite/protocol.js +52 -0
  175. package/dist/store/src/repository/adapters/sqlite/protocol.js.map +1 -0
  176. package/dist/store/src/repository/adapters/sqlite/repository.d.ts +54 -0
  177. package/dist/store/src/repository/adapters/sqlite/repository.d.ts.map +1 -0
  178. package/dist/store/src/repository/adapters/sqlite/repository.js +238 -0
  179. package/dist/store/src/repository/adapters/sqlite/repository.js.map +1 -0
  180. package/dist/store/src/repository/core.d.ts +68 -0
  181. package/dist/store/src/repository/core.d.ts.map +1 -0
  182. package/dist/store/src/repository/core.js +123 -0
  183. package/dist/store/src/repository/core.js.map +1 -0
  184. package/dist/store/src/svelte.d.ts +22 -0
  185. package/dist/store/src/svelte.d.ts.map +1 -0
  186. package/dist/store/src/svelte.js +100 -0
  187. package/dist/store/src/svelte.js.map +1 -0
  188. package/dist/store/src/synced.d.ts +1 -1
  189. package/dist/store/src/synced.d.ts.map +1 -1
  190. package/dist/store/src/synced.js +1 -1
  191. package/dist/store/src/synced.js.map +1 -1
  192. package/dist/{net → store}/src/tracker.d.ts +2 -0
  193. package/dist/store/src/tracker.d.ts.map +1 -0
  194. package/dist/{net → store}/src/tracker.js +8 -4
  195. package/dist/store/src/tracker.js.map +1 -0
  196. package/dist/tsconfig.build.tsbuildinfo +1 -1
  197. package/dist/util/src/Command.d.ts +1 -1
  198. package/dist/util/src/Command.d.ts.map +1 -1
  199. package/dist/util/src/Command.js +12 -5
  200. package/dist/util/src/Command.js.map +1 -1
  201. package/dist/util/src/Events.d.ts +3 -2
  202. package/dist/util/src/Events.d.ts.map +1 -1
  203. package/dist/util/src/Events.js.map +1 -1
  204. package/dist/util/src/Kinds.d.ts +1 -0
  205. package/dist/util/src/Kinds.d.ts.map +1 -1
  206. package/dist/util/src/Kinds.js +1 -0
  207. package/dist/util/src/Kinds.js.map +1 -1
  208. package/dist/util/src/RelaySelection.d.ts +5 -0
  209. package/dist/util/src/RelaySelection.d.ts.map +1 -1
  210. package/dist/util/src/RelaySelection.js.map +1 -1
  211. package/dist/util/src/Tags.d.ts +5 -0
  212. package/dist/util/src/Tags.d.ts.map +1 -1
  213. package/dist/util/src/Tags.js +3 -0
  214. package/dist/util/src/Tags.js.map +1 -1
  215. package/dist/util/src/index.d.ts +1 -0
  216. package/dist/util/src/index.d.ts.map +1 -1
  217. package/dist/util/src/index.js +1 -0
  218. package/dist/util/src/index.js.map +1 -1
  219. package/package.json +15 -17
  220. package/dist/net/src/repository.d.ts.map +0 -1
  221. package/dist/net/src/repository.js.map +0 -1
  222. package/dist/net/src/tracker.d.ts.map +0 -1
  223. package/dist/net/src/tracker.js.map +0 -1
  224. package/dist/store/src/repository.d.ts.map +0 -1
  225. package/dist/store/src/repository.js +0 -580
  226. package/dist/store/src/repository.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import type { Unsubscriber } from "svelte/store";
2
- import type { TrustedEvent } from "@welshman/util";
3
- import { Pool, Tracker, Repository, WrapManager } from "@welshman/net";
1
+ import type { TrustedEvent, RouteOverrides } from "@welshman/util";
2
+ import type { Unsubscriber, Repository } from "@welshman/store";
3
+ import { Pool, WrapManager } from "@welshman/net";
4
4
  import type { NetContext, AdapterFactory } from "@welshman/net";
5
5
  import type { User } from "./user.js";
6
6
  import type { AppPolicy } from "./policy.js";
@@ -9,12 +9,15 @@ export type AppConfig = {
9
9
  getDefaultRelays?: () => string[];
10
10
  getIndexerRelays?: () => string[];
11
11
  getSearchRelays?: () => string[];
12
+ routes?: RouteOverrides;
12
13
  };
13
14
  export type AppOptions = {
14
15
  user?: User;
15
16
  config?: AppConfig;
16
17
  getAdapter?: AdapterFactory;
17
18
  policies?: AppPolicy[];
19
+ repository?: Repository;
20
+ wrapManager?: WrapManager;
18
21
  };
19
22
  export type Plugin<T = unknown> = new (app: IApp) => T;
20
23
  export interface IApp {
@@ -24,34 +27,24 @@ export interface IApp {
24
27
  onCleanup: (unsubscriber: Unsubscriber) => void;
25
28
  netContext: NetContext;
26
29
  pool: Pool;
27
- tracker: Tracker;
28
30
  repository: Repository;
29
31
  wrapManager: WrapManager;
30
- ingestEvent: (event: TrustedEvent, url: string) => void;
32
+ ingestEvent: (event: TrustedEvent, url: string) => Promise<void>;
31
33
  }
32
- /**
33
- * The core of an application instance. Owns the primitives a single identity
34
- * needs (so data never bleeds across sessions) — a private repository, a socket
35
- * pool, a tracker, a wrap manager — and a `use` registry that resolves data
36
- * modules (including net/store helpers) on demand.
37
- */
34
+ /** One identity's repository, socket pool and wrap manager, with a `use` registry of plugins. */
38
35
  export declare class App implements IApp {
39
36
  user?: User;
40
37
  config: AppConfig;
41
38
  netContext: NetContext;
42
39
  pool: Pool;
43
- tracker: Tracker;
44
40
  repository: Repository;
45
41
  wrapManager: WrapManager;
46
42
  private singletons;
47
43
  private unsubscribers;
48
44
  constructor(options?: AppOptions);
49
45
  use: <T>(Ctor: Plugin<T>) => T;
50
- /**
51
- * Records an event a relay sent in the tracker and repository, unless it is a DVM or ephemeral
52
- * kind. An ingest policy calls it once it has decided the event is valid.
53
- */
54
- ingestEvent: (event: TrustedEvent, url: string) => void;
46
+ /** Stores and tracks a relay's event unless it's a DVM or ephemeral kind, logging any failure. */
47
+ ingestEvent: (event: TrustedEvent, url: string) => Promise<void>;
55
48
  onCleanup: (unsubscriber: Unsubscriber) => void;
56
49
  cleanup(): void;
57
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAA;AAG9C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,eAAe,CAAA;AACpE,OAAO,KAAK,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAE1C,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAA;IACjC,gBAAgB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,MAAM,EAAE,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,CAAC,CAAA;AAEtD,MAAM,WAAW,IAAI;IACnB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,EAAE,SAAS,CAAA;IACjB,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAC9B,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAA;IAC/C,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACxD;AAED;;;;;GAKG;AACH,qBAAa,GAAI,YAAW,IAAI;IAC9B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,EAAE,SAAS,CAAA;IACjB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IAExB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,aAAa,CAAqB;gBAE9B,OAAO,GAAE,UAAe;IAqBpC,GAAG,GAAI,CAAC,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC,KAAG,CAAC,CAQ5B;IAED;;;OAGG;IACH,WAAW,GAAI,OAAO,YAAY,EAAE,KAAK,MAAM,UAK9C;IAED,SAAS,GAAI,cAAc,YAAY,UAEtC;IAED,OAAO;CASR"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAA;AAEhE,OAAO,KAAK,EAAC,YAAY,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAC,IAAI,EAAE,WAAW,EAAC,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAE1C,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAA;IACjC,gBAAgB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAA;IACjC,eAAe,CAAC,EAAE,MAAM,MAAM,EAAE,CAAA;IAEhC,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;IAEtB,UAAU,CAAC,EAAE,UAAU,CAAA;IAEvB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,CAAC,CAAA;AAEtD,MAAM,WAAW,IAAI;IACnB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,EAAE,SAAS,CAAA;IACjB,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAC9B,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAA;IAC/C,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACjE;AAMD,iGAAiG;AACjG,qBAAa,GAAI,YAAW,IAAI;IAC9B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,EAAE,SAAS,CAAA;IACjB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IAExB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,aAAa,CAAqB;gBAE9B,OAAO,GAAE,UAAe;IA4BpC,GAAG,GAAI,CAAC,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC,KAAG,CAAC,CAQ5B;IAED,kGAAkG;IAClG,WAAW,GAAU,OAAO,YAAY,EAAE,KAAK,MAAM,mBAKpD;IAED,SAAS,GAAI,cAAc,YAAY,UAEtC;IAED,OAAO;CAMR"}
@@ -1,18 +1,15 @@
1
1
  import { call } from "@welshman/lib";
2
2
  import { isDVMKind, isEphemeralKind } from "@welshman/util";
3
- import { Pool, Tracker, Repository, WrapManager } from "@welshman/net";
4
- /**
5
- * The core of an application instance. Owns the primitives a single identity
6
- * needs (so data never bleeds across sessions) — a private repository, a socket
7
- * pool, a tracker, a wrap manager — and a `use` registry that resolves data
8
- * modules (including net/store helpers) on demand.
9
- */
3
+ import { MemoryRepository } from "@welshman/store";
4
+ import { Pool, WrapManager } from "@welshman/net";
5
+ const onIngestError = (error) => console.error("Failed to store an event", error);
6
+ const onClearError = (error) => console.error("Failed to clear the repository", error);
7
+ /** One identity's repository, socket pool and wrap manager, with a `use` registry of plugins. */
10
8
  export class App {
11
9
  user;
12
10
  config;
13
11
  netContext;
14
12
  pool;
15
- tracker;
16
13
  repository;
17
14
  wrapManager;
18
15
  singletons = new Map();
@@ -21,17 +18,22 @@ export class App {
21
18
  this.user = options.user;
22
19
  this.config = options.config ?? {};
23
20
  this.pool = new Pool();
24
- this.tracker = new Tracker();
25
- this.repository = new Repository();
26
- this.wrapManager = new WrapManager({
27
- tracker: this.tracker,
28
- repository: this.repository,
29
- });
21
+ this.repository = options.repository ?? new MemoryRepository();
22
+ this.wrapManager = options.wrapManager ?? new WrapManager({ repository: this.repository });
30
23
  this.netContext = {
31
24
  pool: this.pool,
32
25
  repository: this.repository,
33
26
  getAdapter: options.getAdapter,
34
27
  };
28
+ // What the app made for itself goes with it; what was passed in belongs to the caller
29
+ if (!options.repository) {
30
+ this.onCleanup(() => {
31
+ this.repository.clear().catch(onClearError);
32
+ });
33
+ }
34
+ if (!options.wrapManager) {
35
+ this.onCleanup(() => this.wrapManager.clear());
36
+ }
35
37
  for (const policy of options.policies ?? []) {
36
38
  this.onCleanup(policy(this));
37
39
  }
@@ -43,14 +45,11 @@ export class App {
43
45
  }
44
46
  return instance;
45
47
  };
46
- /**
47
- * Records an event a relay sent in the tracker and repository, unless it is a DVM or ephemeral
48
- * kind. An ingest policy calls it once it has decided the event is valid.
49
- */
50
- ingestEvent = (event, url) => {
48
+ /** Stores and tracks a relay's event unless it's a DVM or ephemeral kind, logging any failure. */
49
+ ingestEvent = async (event, url) => {
51
50
  if (!isDVMKind(event.kind) && !isEphemeralKind(event.kind)) {
52
- this.tracker.track(event.id, url);
53
- this.repository.publish(event);
51
+ this.repository.tracker.track(event.id, url);
52
+ await this.repository.publish(event).catch(onIngestError);
54
53
  }
55
54
  };
56
55
  onCleanup = (unsubscriber) => {
@@ -60,9 +59,6 @@ export class App {
60
59
  // Unwind in reverse, since some teardowns only compose LIFO
61
60
  this.unsubscribers.slice().reverse().forEach(call);
62
61
  this.pool.clear();
63
- this.tracker.clear();
64
- this.repository.clear();
65
- this.wrapManager.clear();
66
62
  }
67
63
  }
68
64
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAClC,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAA;AAEzD,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,eAAe,CAAA;AAkCpE;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACd,IAAI,CAAO;IACX,MAAM,CAAW;IACjB,UAAU,CAAY;IACtB,IAAI,CAAM;IACV,OAAO,CAAS;IAChB,UAAU,CAAY;IACtB,WAAW,CAAa;IAEhB,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAA;IACvC,aAAa,GAAmB,EAAE,CAAA;IAE1C,YAAY,UAAsB,EAAE;QAClC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAA;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,GAAG,GAAG,CAAI,IAAe,EAAK,EAAE;QAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAkB,CAAA;QAEzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxD,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;IAED;;;OAGG;IACH,WAAW,GAAG,CAAC,KAAmB,EAAE,GAAW,EAAE,EAAE;QACjD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAChC,CAAC;IACH,CAAC,CAAA;IAED,SAAS,GAAG,CAAC,YAA0B,EAAE,EAAE;QACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACvC,CAAC,CAAA;IAED,OAAO;QACL,4DAA4D;QAC5D,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAElD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QACvB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ export * from "./plugins/wot.js";
36
36
  export * from "./plugins/events.js";
37
37
  export * from "./plugins/feeds.js";
38
38
  export * from "./plugins/feedLists.js";
39
+ export * from "./plugins/commandLists.js";
39
40
  export * from "./plugins/sync.js";
40
41
  export * from "./plugins/wraps.js";
41
42
  export * from "./plugins/roomPins.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA"}
@@ -36,6 +36,7 @@ export * from "./plugins/wot.js";
36
36
  export * from "./plugins/events.js";
37
37
  export * from "./plugins/feeds.js";
38
38
  export * from "./plugins/feedLists.js";
39
+ export * from "./plugins/commandLists.js";
39
40
  export * from "./plugins/sync.js";
40
41
  export * from "./plugins/wraps.js";
41
42
  export * from "./plugins/roomPins.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,wBAAwB,CAAA"}
@@ -1,8 +1,7 @@
1
1
  import type { IFuseOptions, FuseResult } from "fuse.js";
2
- import type { Readable, Unsubscriber } from "svelte/store";
3
2
  import type { Maybe } from "@welshman/lib";
4
3
  import type { Filter } from "@welshman/util";
5
- import type { EventToItem, ItemCollection, ItemsByKey, MakeLoadItemOptions, Projection } from "@welshman/store";
4
+ import type { Readable, Unsubscriber, EventToItem, ItemCollection, ItemsByKey, MakeLoadItemOptions, Projection } from "@welshman/store";
6
5
  import type { IApp } from "../app.js";
7
6
  export type SearchOptions<V, T> = {
8
7
  getValue: (item: T) => V;
@@ -23,18 +22,10 @@ export type Search<V, T> = {
23
22
  * their collection. Blends fuse scoring with an optional `sortFn`.
24
23
  */
25
24
  export declare const createSearch: <V, T>(options: T[], opts: SearchOptions<V, T>) => Search<V, T>;
26
- /**
27
- * Base class for a reactive, keyed collection of "local" (non-event) data —
28
- * things like relay stats or NIP-11 profiles that aren't backed by the
29
- * repository. The collection owns its own map.
30
- *
31
- * `index` (map) and `all` (values) are `Projection`s — subscribe via `.$`,
32
- * snapshot via `.get()`. Per-key access is `one(key)`, a plain on-demand store
33
- * (snapshot with svelte's `get(...)`, or read `get(key)` directly).
34
- */
25
+ /** A keyed collection of data not backed by the repository, such as relay stats or NIP-11 info. */
35
26
  export declare class MapPlugin<T> {
36
27
  protected readonly app: IApp;
37
- protected store: import("svelte/store").Writable<Map<string, T>>;
28
+ protected store: import("@welshman/store").Writable<Map<string, T>>;
38
29
  index: Projection<ItemsByKey<T>>;
39
30
  all: Projection<T[]>;
40
31
  one: (key?: string, ...args: any[]) => Readable<Maybe<T>>;
@@ -59,15 +50,7 @@ export declare abstract class LoadableMapPlugin<T> extends MapPlugin<T> {
59
50
  abstract fetch(key: string, ...args: any[]): Promise<unknown>;
60
51
  constructor(app: IApp, options?: MakeLoadItemOptions);
61
52
  }
62
- /**
63
- * Base class for a reactive, keyed collection of data derived from nostr events.
64
- * The repository is the single source of truth — the collection is a live view
65
- * over it, never a duplicated map. Subclasses supply the `index` and implement
66
- * `fetch` (how to load an item by key from the network).
67
- *
68
- * `index` (map) and `all` (values) are `Projection`s — subscribe via `.$`,
69
- * snapshot via `.get()`. Per-key access is `one(key)`, a plain on-demand store.
70
- */
53
+ /** A keyed collection derived from events, whose index stays subscribed for the life of the app. */
71
54
  export declare abstract class CollectionPlugin<T> {
72
55
  protected readonly app: IApp;
73
56
  readonly index: ItemCollection<T>;
@@ -97,14 +80,7 @@ export type RelayScopedDerivedPluginOptions<T> = {
97
80
  loadOptions?: MakeLoadItemOptions;
98
81
  revalidateOn?: Readable<unknown>;
99
82
  };
100
- /**
101
- * A `CollectionPlugin` for relay-dependent data: each item is keyed by
102
- * `getKey(item, url)` once per relay it was seen on (via the tracker), so the
103
- * same addressable coordinate on two relays stays two distinct entries. Use it
104
- * for collections that only make sense relative to a relay — NIP-29 rooms
105
- * (`${url}'${room}`), relay roles (`${url}|${d}`), per-relay replaceables
106
- * (`${url}`). Subclasses implement `fetch` (loading from the relevant relay).
107
- */
83
+ /** A `CollectionPlugin` keying each item once per relay it was seen on, via `getKey(item, url)`. */
108
84
  export declare abstract class RelayScopedDerivedPlugin<T> extends CollectionPlugin<T> {
109
85
  constructor(app: IApp, options: RelayScopedDerivedPluginOptions<T>);
110
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/plugins/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/plugins/base.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import Fuse from "fuse.js";
2
- import { writable, derived } from "svelte/store";
3
- import { sortBy } from "@welshman/lib";
4
- import { deriveArray, deriveItemsByKey, deriveItemsByKeyByUrl, makeDeriveItem, makeLoadItem, makeForceLoadItem, projection, } from "@welshman/store";
2
+ import { noop, sortBy } from "@welshman/lib";
3
+ import { writable, derived, deriveArray, deriveItemsByKey, deriveItemsByKeyByUrl, makeDeriveItem, makeLoadItem, makeForceLoadItem, projection, } from "@welshman/store";
5
4
  /**
6
5
  * A reusable fuzzy-search primitive over a fixed list of `options`. Plugins that
7
6
  * expose a search (profiles, topics, relays) build one of these reactively from
@@ -26,15 +25,7 @@ export const createSearch = (options, opts) => {
26
25
  searchValues: (term) => search(term).map(opts.getValue),
27
26
  };
28
27
  };
29
- /**
30
- * Base class for a reactive, keyed collection of "local" (non-event) data —
31
- * things like relay stats or NIP-11 profiles that aren't backed by the
32
- * repository. The collection owns its own map.
33
- *
34
- * `index` (map) and `all` (values) are `Projection`s — subscribe via `.$`,
35
- * snapshot via `.get()`. Per-key access is `one(key)`, a plain on-demand store
36
- * (snapshot with svelte's `get(...)`, or read `get(key)` directly).
37
- */
28
+ /** A keyed collection of data not backed by the repository, such as relay stats or NIP-11 info. */
38
29
  export class MapPlugin {
39
30
  app;
40
31
  store = writable(new Map());
@@ -105,15 +96,7 @@ export class LoadableMapPlugin extends MapPlugin {
105
96
  this.one = makeDeriveItem(this.store, this.load);
106
97
  }
107
98
  }
108
- /**
109
- * Base class for a reactive, keyed collection of data derived from nostr events.
110
- * The repository is the single source of truth — the collection is a live view
111
- * over it, never a duplicated map. Subclasses supply the `index` and implement
112
- * `fetch` (how to load an item by key from the network).
113
- *
114
- * `index` (map) and `all` (values) are `Projection`s — subscribe via `.$`,
115
- * snapshot via `.get()`. Per-key access is `one(key)`, a plain on-demand store.
116
- */
99
+ /** A keyed collection derived from events, whose index stays subscribed for the life of the app. */
117
100
  export class CollectionPlugin {
118
101
  app;
119
102
  index;
@@ -125,6 +108,7 @@ export class CollectionPlugin {
125
108
  this.app = app;
126
109
  this.index = index;
127
110
  this.all = deriveArray(index);
111
+ app.onCleanup(index.subscribe(noop));
128
112
  const fetch = (key, ...args) => this.fetch(key, ...args);
129
113
  this.load = makeLoadItem(fetch, index.read, loadOptions);
130
114
  this.forceLoad = makeForceLoadItem(fetch, index.read);
@@ -144,14 +128,7 @@ export class DerivedPlugin extends CollectionPlugin {
144
128
  }), options.loadOptions);
145
129
  }
146
130
  }
147
- /**
148
- * A `CollectionPlugin` for relay-dependent data: each item is keyed by
149
- * `getKey(item, url)` once per relay it was seen on (via the tracker), so the
150
- * same addressable coordinate on two relays stays two distinct entries. Use it
151
- * for collections that only make sense relative to a relay — NIP-29 rooms
152
- * (`${url}'${room}`), relay roles (`${url}|${d}`), per-relay replaceables
153
- * (`${url}`). Subclasses implement `fetch` (loading from the relevant relay).
154
- */
131
+ /** A `CollectionPlugin` keying each item once per relay it was seen on, via `getKey(item, url)`. */
155
132
  export class RelayScopedDerivedPlugin extends CollectionPlugin {
156
133
  constructor(app, options) {
157
134
  super(app, deriveItemsByKeyByUrl({
@@ -159,7 +136,6 @@ export class RelayScopedDerivedPlugin extends CollectionPlugin {
159
136
  eventToItem: options.eventToItem,
160
137
  getKey: options.getKey,
161
138
  revalidateOn: options.revalidateOn,
162
- tracker: app.tracker,
163
139
  repository: app.repository,
164
140
  }), options.loadOptions);
165
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/plugins/base.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAC,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAA;AAGpC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,UAAU,GACX,MAAM,iBAAiB,CAAA;AAyBxB;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAO,OAAY,EAAE,IAAyB,EAAgB,EAAE;IAC1F,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,EAAC,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAA;IACzE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAE3E,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;QAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAA;QAErB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAC,IAAI,EAAC,CAAkB,CAAC,CAAA;QAEvF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACxC,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC,CAAA;IAED,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,CAAC,KAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACvC,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;KAChE,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,SAAS;IAOW;IANrB,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAa,CAAC,CAAA;IAChD,KAAK,CAA2B;IAChC,GAAG,CAAiB;IACpB,GAAG,CAAsD;IACzD,IAAI,GAA+C,EAAE,CAAA;IAErD,YAA+B,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;QACtC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC;IAED,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEhD,OAAO,GAAG,CAAI,GAAW,EAAE,IAA2B,EAAiB,EAAE,CACvE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAErE,GAAG,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,EAAE;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAEtB,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC3B,CAAC,CAAA;IAED,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAElB,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,KAAK,GAAG,GAAG,EAAE;QACX,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QAEhD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;QAEzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,CAAA;IAED,MAAM,GAAG,CAAC,UAAkD,EAAgB,EAAE;QAC5E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAE1B,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAEvC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,CAAC,CAAA;IACH,CAAC,CAAA;IAES,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAe,EAAE,EAAE;QACpD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACxB,CAAC;IACH,CAAC,CAAA;CACF;AAED;;;;GAIG;AACH,MAAM,OAAgB,iBAAqB,SAAQ,SAAY;IAC7D,IAAI,CAAoD;IACxD,SAAS,CAAoD;IAI7D,YAAY,GAAS,EAAE,UAA+B,EAAE;QACtD,KAAK,CAAC,GAAG,CAAC,CAAA;QAEV,yEAAyE;QACzE,6EAA6E;QAC7E,8EAA8E;QAC9E,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;QACvE,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEvD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC/C,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAgB,gBAAgB;IASf;IACV;IATX,GAAG,CAAiB;IACpB,GAAG,CAAsD;IACzD,IAAI,CAAoD;IACxD,SAAS,CAAoD;IAI7D,YACqB,GAAS,EACnB,KAAwB,EACjC,WAAiC;QAFd,QAAG,GAAH,GAAG,CAAM;QACnB,UAAK,GAAL,KAAK,CAAmB;QAGjC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QAE7B,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;QAEvE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QACxD,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACrD,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEhD,OAAO,GAAG,CAAI,GAAW,EAAE,IAA2B,EAAiB,EAAE,CACvE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;CACtE;AASD,wFAAwF;AACxF,MAAM,OAAgB,aAAiB,SAAQ,gBAAmB;IAChE,YAAY,GAAS,EAAE,OAAgC;QACrD,KAAK,CACH,GAAG,EACH,gBAAgB,CAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC,EACF,OAAO,CAAC,WAAW,CACpB,CAAA;IACH,CAAC;CACF;AAaD;;;;;;;GAOG;AACH,MAAM,OAAgB,wBAA4B,SAAQ,gBAAmB;IAC3E,YAAY,GAAS,EAAE,OAA2C;QAChE,KAAK,CACH,GAAG,EACH,qBAAqB,CAAI;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC,EACF,OAAO,CAAC,WAAW,CACpB,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/plugins/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { CommandListReader, CommandListWriter } from "@welshman/domain";
2
+ import { DerivedPlugin } from "./base.js";
3
+ import type { Projection } from "@welshman/store";
4
+ import type { IApp } from "../app.js";
5
+ /**
6
+ * NIP-CD installed slash command lists (kind 10992), keyed by pubkey. Loaded via
7
+ * the outbox model (the author's write relays), so it depends on the relay-list
8
+ * collection. The addresses point at kind-31992 definitions.
9
+ */
10
+ export declare class CommandLists extends DerivedPlugin<CommandListReader> {
11
+ constructor(app: IApp);
12
+ fetch(pubkey: string, relayHints?: string[]): Promise<import("@welshman/util").TrustedEvent | undefined>;
13
+ addresses: (pubkey: string) => Projection<string[]>;
14
+ update: (fn: (writer: CommandListWriter) => void) => Promise<import("../command.js").Command>;
15
+ addCommand: (address: string, relayHint?: string) => Promise<import("../command.js").Command>;
16
+ addCommandPrivately: (address: string, relayHint?: string) => Promise<import("../command.js").Command>;
17
+ removeCommand: (address: string) => Promise<import("../command.js").Command>;
18
+ }
19
+ //# sourceMappingURL=commandLists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandLists.d.ts","sourceRoot":"","sources":["../../../../src/plugins/commandLists.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,iBAAiB,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAA;AAClF,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAG/C,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAEnC;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,aAAa,CAAC,iBAAiB,CAAC;gBACpD,GAAG,EAAE,IAAI;IAQrB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,EAAO;IAI/C,SAAS,GAAI,QAAQ,MAAM,KAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CACK;IAEvD,MAAM,GAAI,IAAI,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,8CACa;IAE9D,UAAU,GAAI,SAAS,MAAM,EAAE,YAAY,MAAM,8CACa;IAE9D,mBAAmB,GAAI,SAAS,MAAM,EAAE,YAAY,MAAM,8CACa;IAEvE,aAAa,GAAI,SAAS,MAAM,8CAAyD;CAC1F"}
@@ -0,0 +1,28 @@
1
+ import { COMMANDS } from "@welshman/util";
2
+ import { CommandList } from "@welshman/domain";
3
+ import { DerivedPlugin } from "./base.js";
4
+ import { Network } from "./network.js";
5
+ import { Domain } from "./domain.js";
6
+ /**
7
+ * NIP-CD installed slash command lists (kind 10992), keyed by pubkey. Loaded via
8
+ * the outbox model (the author's write relays), so it depends on the relay-list
9
+ * collection. The addresses point at kind-31992 definitions.
10
+ */
11
+ export class CommandLists extends DerivedPlugin {
12
+ constructor(app) {
13
+ super(app, {
14
+ filters: [{ kinds: [COMMANDS] }],
15
+ eventToItem: app.use(Domain).reader(CommandList),
16
+ getKey: list => list.author(),
17
+ });
18
+ }
19
+ fetch(pubkey, relayHints = []) {
20
+ return this.app.use(Network).loadUsingOutbox(pubkey, { kinds: [COMMANDS] }, relayHints);
21
+ }
22
+ addresses = (pubkey) => this.project(pubkey, list => list?.addresses() ?? []);
23
+ update = (fn) => this.app.use(Domain).update(CommandList, this.forceLoad, fn);
24
+ addCommand = (address, relayHint) => this.update(writer => writer.addCommand(address, relayHint));
25
+ addCommandPrivately = (address, relayHint) => this.update(writer => writer.addCommandPrivately(address, relayHint));
26
+ removeCommand = (address) => this.update(writer => writer.removeCommand(address));
27
+ }
28
+ //# sourceMappingURL=commandLists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandLists.js","sourceRoot":"","sources":["../../../../src/plugins/commandLists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAC,WAAW,EAAuC,MAAM,kBAAkB,CAAA;AAClF,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAA;AAEvC,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AACpC,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAGlC;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,aAAgC;IAChE,YAAY,GAAS;QACnB,KAAK,CAAC,GAAG,EAAE;YACT,OAAO,EAAE,CAAC,EAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAC,CAAC;YAC9B,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;YAChD,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;SAC9B,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,aAAuB,EAAE;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAC,EAAE,UAAU,CAAC,CAAA;IACvF,CAAC;IAED,SAAS,GAAG,CAAC,MAAc,EAAwB,EAAE,CACnD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvD,MAAM,GAAG,CAAC,EAAuC,EAAE,EAAE,CACnD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IAE9D,UAAU,GAAG,CAAC,OAAe,EAAE,SAAkB,EAAE,EAAE,CACnD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IAE9D,mBAAmB,GAAG,CAAC,OAAe,EAAE,SAAkB,EAAE,EAAE,CAC5D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IAEvE,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;CAC1F"}
@@ -10,7 +10,7 @@ export class Deletes {
10
10
  this.app = app;
11
11
  }
12
12
  deleteEvent = async (event, fn) => {
13
- const [url] = this.app.tracker.getRelays(event.id);
13
+ const [url] = this.app.repository.tracker.getRelays(event.id);
14
14
  const writer = this.app.use(Domain).writer(Delete).addEvent(event, url);
15
15
  fn?.(writer);
16
16
  return this.app.use(Domain).command(writer);
@@ -1 +1 @@
1
- {"version":3,"file":"deletes.js","sourceRoot":"","sources":["../../../../src/plugins/deletes.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAe,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAIlC;;;GAGG;AACH,MAAM,OAAO,OAAO;IACG;IAArB,YAAqB,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;IAAG,CAAC;IAElC,WAAW,GAAG,KAAK,EACjB,KAAmB,EACnB,EAAmC,EACjB,EAAE;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAEvE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;QAEZ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC,CAAA;CACF"}
1
+ {"version":3,"file":"deletes.js","sourceRoot":"","sources":["../../../../src/plugins/deletes.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAe,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAIlC;;;GAGG;AACH,MAAM,OAAO,OAAO;IACG;IAArB,YAAqB,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;IAAG,CAAC;IAElC,WAAW,GAAG,KAAK,EACjB,KAAmB,EACnB,EAAmC,EACjB,EAAE;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAEvE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;QAEZ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC,CAAA;CACF"}
@@ -1,30 +1,20 @@
1
1
  import type { Maybe } from "@welshman/lib";
2
2
  import type { Filter, TrustedEvent } from "@welshman/util";
3
- import type { EventsById, EventsByIdByUrl, Projection } from "@welshman/store";
3
+ import type { AsyncProjection, EventsById, EventsByIdByUrl, Projection } from "@welshman/store";
4
4
  import type { IApp } from "../app.js";
5
- /**
6
- * Reactive views over the app's repository. Every method binds this app's
7
- * repository and tracker and hands back a `Projection` — read it synchronously
8
- * with `.get()`, or subscribe to `.$` — so callers never build one from the
9
- * other, and never construct `{repository, tracker}` by hand.
10
- *
11
- * Each view reads through a direct repository/tracker query rather than through
12
- * its derived store. Those queries are index-backed; standing a derived store up
13
- * and tearing it down just to read a value is not. `@welshman/store` pairs the
14
- * two, so a view over a single store passes neither half.
15
- */
5
+ /** Views over the app's repository, each holding its last value until a read answers. */
16
6
  export declare class Events {
17
7
  readonly app: IApp;
18
8
  constructor(app: IApp);
19
- byId: (filters?: Filter[]) => Projection<EventsById>;
20
- all: (filters?: Filter[]) => Projection<TrustedEvent[]>;
21
- asc: (filters?: Filter[]) => Projection<TrustedEvent[]>;
22
- desc: (filters?: Filter[]) => Projection<TrustedEvent[]>;
23
- one: (idOrAddress: string, relays?: string[]) => Projection<Maybe<TrustedEvent>>;
9
+ byId: (filters?: Filter[]) => AsyncProjection<EventsById>;
10
+ all: (filters?: Filter[]) => AsyncProjection<TrustedEvent[]>;
11
+ asc: (filters?: Filter[]) => AsyncProjection<TrustedEvent[]>;
12
+ desc: (filters?: Filter[]) => AsyncProjection<TrustedEvent[]>;
13
+ one: (idOrAddress: string, relays?: string[]) => AsyncProjection<Maybe<TrustedEvent>>;
24
14
  isDeleted: (event: TrustedEvent) => Projection<boolean>;
25
- byIdForUrl: (url: string, filters?: Filter[]) => Projection<EventsById>;
26
- forUrl: (url: string, filters?: Filter[]) => Projection<TrustedEvent[]>;
27
- byIdByUrl: (filters?: Filter[]) => Projection<EventsByIdByUrl>;
28
- relaySignedForUrl: (url: string, filters?: Filter[]) => Projection<TrustedEvent[]>;
15
+ byIdForUrl: (url: string, filters?: Filter[]) => AsyncProjection<EventsById>;
16
+ forUrl: (url: string, filters?: Filter[]) => AsyncProjection<TrustedEvent[]>;
17
+ byIdByUrl: (filters?: Filter[]) => AsyncProjection<EventsByIdByUrl>;
18
+ relaySignedForUrl: (url: string, filters?: Filter[]) => AsyncProjection<TrustedEvent[]>;
29
19
  }
30
20
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/plugins/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAaxD,OAAO,KAAK,EAAC,UAAU,EAAE,eAAe,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAK5E,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAEnC;;;;;;;;;;GAUG;AACH,qBAAa,MAAM;IACL,QAAQ,CAAC,GAAG,EAAE,IAAI;gBAAT,GAAG,EAAE,IAAI;IAE9B,IAAI,GAAI,UAAS,MAAM,EAAS,KAAG,UAAU,CAAC,UAAU,CAAC,CACK;IAE9D,GAAG,GAAI,UAAS,MAAM,EAAS,KAAG,UAAU,CAAC,YAAY,EAAE,CAAC,CACF;IAE1D,GAAG,GAAI,UAAS,MAAM,EAAS,KAAG,UAAU,CAAC,YAAY,EAAE,CAAC,CACvB;IAErC,IAAI,GAAI,UAAS,MAAM,EAAS,KAAG,UAAU,CAAC,YAAY,EAAE,CAAC,CACvB;IAEtC,GAAG,GAAI,aAAa,MAAM,EAAE,SAAQ,MAAM,EAAO,KAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAM1D;IAEzB,SAAS,GAAI,OAAO,YAAY,KAAG,UAAU,CAAC,OAAO,CAAC,CACT;IAI7C,UAAU,GAAI,KAAK,MAAM,EAAE,UAAS,MAAM,EAAS,KAAG,UAAU,CAAC,UAAU,CAAC,CAMxE;IAEJ,MAAM,GAAI,KAAK,MAAM,EAAE,UAAS,MAAM,EAAS,KAAG,UAAU,CAAC,YAAY,EAAE,CAAC,CAChC;IAE5C,SAAS,GAAI,UAAS,MAAM,EAAS,KAAG,UAAU,CAAC,eAAe,CAAC,CAK/D;IAEJ,iBAAiB,GAAI,KAAK,MAAM,EAAE,UAAS,MAAM,EAAS,KAAG,UAAU,CAAC,YAAY,EAAE,CAAC,CAWtF;CACF"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/plugins/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAcxD,OAAO,KAAK,EAAC,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAI7F,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAEnC,yFAAyF;AACzF,qBAAa,MAAM;IACL,QAAQ,CAAC,GAAG,EAAE,IAAI;gBAAT,GAAG,EAAE,IAAI;IAE9B,IAAI,GAAI,UAAS,MAAM,EAAS,KAAG,eAAe,CAAC,UAAU,CAAC,CACA;IAE9D,GAAG,GAAI,UAAS,MAAM,EAAS,KAAG,eAAe,CAAC,YAAY,EAAE,CAAC,CACP;IAE1D,GAAG,GAAI,UAAS,MAAM,EAAS,KAAG,eAAe,CAAC,YAAY,EAAE,CAAC,CAC5B;IAErC,IAAI,GAAI,UAAS,MAAM,EAAS,KAAG,eAAe,CAAC,YAAY,EAAE,CAAC,CAC5B;IAEtC,GAAG,GAAI,aAAa,MAAM,EAAE,SAAQ,MAAM,EAAO,KAAG,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAM/D;IAEzB,SAAS,GAAI,OAAO,YAAY,KAAG,UAAU,CAAC,OAAO,CAAC,CACT;IAI7C,UAAU,GAAI,KAAK,MAAM,EAAE,UAAS,MAAM,EAAS,KAAG,eAAe,CAAC,UAAU,CAAC,CACR;IAEzE,MAAM,GAAI,KAAK,MAAM,EAAE,UAAS,MAAM,EAAS,KAAG,eAAe,CAAC,YAAY,EAAE,CAAC,CAC/B;IAElD,SAAS,GAAI,UAAS,MAAM,EAAS,KAAG,eAAe,CAAC,eAAe,CAAC,CACL;IAEnE,iBAAiB,GAAI,KAAK,MAAM,EAAE,UAAS,MAAM,EAAS,KAAG,eAAe,CAAC,YAAY,EAAE,CAAC,CAgB3F;CACF"}
@@ -1,19 +1,8 @@
1
1
  import { filter, spec } from "@welshman/lib";
2
- import { deriveArray, deriveEvents, deriveEventsAsc, deriveEventsByIdByUrl, deriveEventsByIdForUrl, deriveEventsById, deriveEventsDesc, deriveIsDeleted, makeDeriveEvent, projection, } from "@welshman/store";
3
- import { derived } from "svelte/store";
2
+ import { deriveEvents, deriveEventsArray, deriveEventsAsc, deriveEventsByIdByUrl, deriveEventsByIdForUrl, deriveEventsById, deriveEventsDesc, deriveIsDeleted, makeDeriveEvent, projection, derived, } from "@welshman/store";
4
3
  import { Network } from "./network.js";
5
4
  import { Relays } from "./relays.js";
6
- /**
7
- * Reactive views over the app's repository. Every method binds this app's
8
- * repository and tracker and hands back a `Projection` — read it synchronously
9
- * with `.get()`, or subscribe to `.$` — so callers never build one from the
10
- * other, and never construct `{repository, tracker}` by hand.
11
- *
12
- * Each view reads through a direct repository/tracker query rather than through
13
- * its derived store. Those queries are index-backed; standing a derived store up
14
- * and tearing it down just to read a value is not. `@welshman/store` pairs the
15
- * two, so a view over a single store passes neither half.
16
- */
5
+ /** Views over the app's repository, each holding its last value until a read answers. */
17
6
  export class Events {
18
7
  app;
19
8
  constructor(app) {
@@ -30,21 +19,16 @@ export class Events {
30
19
  })(idOrAddress, relays);
31
20
  isDeleted = (event) => deriveIsDeleted(this.app.repository, event);
32
21
  // Scoped to one relay, via the tracker
33
- byIdForUrl = (url, filters = [{}]) => deriveEventsByIdForUrl({
34
- url,
35
- filters,
36
- tracker: this.app.tracker,
37
- repository: this.app.repository,
38
- });
39
- forUrl = (url, filters = [{}]) => deriveArray(this.byIdForUrl(url, filters));
40
- byIdByUrl = (filters = [{}]) => deriveEventsByIdByUrl({
41
- filters,
42
- tracker: this.app.tracker,
43
- repository: this.app.repository,
44
- });
22
+ byIdForUrl = (url, filters = [{}]) => deriveEventsByIdForUrl({ url, filters, repository: this.app.repository });
23
+ forUrl = (url, filters = [{}]) => deriveEventsArray(this.byIdForUrl(url, filters));
24
+ byIdByUrl = (filters = [{}]) => deriveEventsByIdByUrl({ filters, repository: this.app.repository });
45
25
  relaySignedForUrl = (url, filters = [{}]) => {
46
26
  const forUrl = this.forUrl(url, filters);
47
- return projection(derived([this.app.use(Relays).one(url), forUrl.$], ([$relay, $events]) => filter(spec({ pubkey: $relay?.self }), $events)), () => filter(spec({ pubkey: this.app.use(Relays).get(url)?.self }), forUrl.get()));
27
+ const relaySigned = (events) => filter(spec({ pubkey: this.app.use(Relays).get(url)?.self }), events);
28
+ return {
29
+ ...projection(derived([this.app.use(Relays).one(url), forUrl.$], ([$relay, $events]) => filter(spec({ pubkey: $relay?.self }), $events)), () => relaySigned(forUrl.get())),
30
+ load: async () => relaySigned(await forUrl.load()),
31
+ };
48
32
  };
49
33
  }
50
34
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/plugins/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/plugins/events.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { Scope, FeedController } from "@welshman/feeds";
2
2
  import type { FeedControllerOptions, Feed as FeedDefinition } from "@welshman/feeds";
3
+ import type { Projection } from "@welshman/store";
3
4
  import { FeedReader, FeedWriter } from "@welshman/domain";
4
5
  import { DerivedPlugin } from "./base.js";
5
- import type { Projection } from "@welshman/store";
6
6
  import type { IApp } from "../app.js";
7
7
  export type MakeFeedControllerOptions = Partial<Omit<FeedControllerOptions, "feed">> & {
8
8
  feed: FeedDefinition;