@welshman/app 0.14.0-pre4 → 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.
- package/dist/app/src/app.d.ts +10 -17
- package/dist/app/src/app.d.ts.map +1 -1
- package/dist/app/src/app.js +20 -24
- package/dist/app/src/app.js.map +1 -1
- package/dist/app/src/index.d.ts +1 -0
- package/dist/app/src/index.d.ts.map +1 -1
- package/dist/app/src/index.js +1 -0
- package/dist/app/src/index.js.map +1 -1
- package/dist/app/src/plugins/base.d.ts +5 -29
- package/dist/app/src/plugins/base.d.ts.map +1 -1
- package/dist/app/src/plugins/base.js +6 -30
- package/dist/app/src/plugins/base.js.map +1 -1
- package/dist/app/src/plugins/commandLists.d.ts +19 -0
- package/dist/app/src/plugins/commandLists.d.ts.map +1 -0
- package/dist/app/src/plugins/commandLists.js +28 -0
- package/dist/app/src/plugins/commandLists.js.map +1 -0
- package/dist/app/src/plugins/deletes.js +1 -1
- package/dist/app/src/plugins/deletes.js.map +1 -1
- package/dist/app/src/plugins/events.d.ts +11 -21
- package/dist/app/src/plugins/events.d.ts.map +1 -1
- package/dist/app/src/plugins/events.js +10 -26
- package/dist/app/src/plugins/events.js.map +1 -1
- package/dist/app/src/plugins/feeds.d.ts +1 -1
- package/dist/app/src/plugins/feeds.d.ts.map +1 -1
- package/dist/app/src/plugins/feeds.js +1 -1
- package/dist/app/src/plugins/feeds.js.map +1 -1
- package/dist/app/src/plugins/handles.d.ts +1 -1
- package/dist/app/src/plugins/handles.d.ts.map +1 -1
- package/dist/app/src/plugins/handles.js.map +1 -1
- package/dist/app/src/plugins/logger.d.ts +1 -1
- package/dist/app/src/plugins/logger.d.ts.map +1 -1
- package/dist/app/src/plugins/logger.js +1 -2
- package/dist/app/src/plugins/logger.js.map +1 -1
- package/dist/app/src/plugins/pinboards.d.ts +1 -1
- package/dist/app/src/plugins/pinboards.d.ts.map +1 -1
- package/dist/app/src/plugins/pinboards.js +1 -1
- package/dist/app/src/plugins/pinboards.js.map +1 -1
- package/dist/app/src/plugins/profiles.d.ts +1 -2
- package/dist/app/src/plugins/profiles.d.ts.map +1 -1
- package/dist/app/src/plugins/profiles.js +1 -2
- package/dist/app/src/plugins/profiles.js.map +1 -1
- package/dist/app/src/plugins/publisher.d.ts +2 -2
- package/dist/app/src/plugins/publisher.d.ts.map +1 -1
- package/dist/app/src/plugins/publisher.js +8 -6
- package/dist/app/src/plugins/publisher.js.map +1 -1
- package/dist/app/src/plugins/reactions.js +1 -1
- package/dist/app/src/plugins/reactions.js.map +1 -1
- package/dist/app/src/plugins/relayMembers.d.ts +1 -1
- package/dist/app/src/plugins/relayMembers.d.ts.map +1 -1
- package/dist/app/src/plugins/relayRoles.d.ts +2 -2
- package/dist/app/src/plugins/relayRoles.d.ts.map +1 -1
- package/dist/app/src/plugins/relayRoles.js +1 -1
- package/dist/app/src/plugins/relayRoles.js.map +1 -1
- package/dist/app/src/plugins/relays.d.ts +1 -2
- package/dist/app/src/plugins/relays.d.ts.map +1 -1
- package/dist/app/src/plugins/relays.js +1 -1
- package/dist/app/src/plugins/relays.js.map +1 -1
- package/dist/app/src/plugins/roomLists.d.ts +1 -1
- package/dist/app/src/plugins/roomLists.d.ts.map +1 -1
- package/dist/app/src/plugins/roomLists.js +1 -1
- package/dist/app/src/plugins/roomLists.js.map +1 -1
- package/dist/app/src/plugins/roomPins.d.ts +2 -2
- package/dist/app/src/plugins/roomPins.d.ts.map +1 -1
- package/dist/app/src/plugins/roomPins.js +1 -1
- package/dist/app/src/plugins/roomPins.js.map +1 -1
- package/dist/app/src/plugins/rooms.d.ts +1 -2
- package/dist/app/src/plugins/rooms.d.ts.map +1 -1
- package/dist/app/src/plugins/rooms.js +13 -13
- package/dist/app/src/plugins/rooms.js.map +1 -1
- package/dist/app/src/plugins/router.d.ts +2 -1
- package/dist/app/src/plugins/router.d.ts.map +1 -1
- package/dist/app/src/plugins/router.js +23 -13
- package/dist/app/src/plugins/router.js.map +1 -1
- package/dist/app/src/plugins/sync.d.ts +2 -2
- package/dist/app/src/plugins/sync.d.ts.map +1 -1
- package/dist/app/src/plugins/sync.js +6 -3
- package/dist/app/src/plugins/sync.js.map +1 -1
- package/dist/app/src/plugins/topics.d.ts +2 -6
- package/dist/app/src/plugins/topics.d.ts.map +1 -1
- package/dist/app/src/plugins/topics.js +48 -34
- package/dist/app/src/plugins/topics.js.map +1 -1
- package/dist/app/src/plugins/wot.d.ts +5 -0
- package/dist/app/src/plugins/wot.d.ts.map +1 -1
- package/dist/app/src/plugins/wot.js +59 -24
- package/dist/app/src/plugins/wot.js.map +1 -1
- package/dist/app/src/plugins/wraps.d.ts.map +1 -1
- package/dist/app/src/plugins/wraps.js +11 -9
- package/dist/app/src/plugins/wraps.js.map +1 -1
- package/dist/app/src/plugins/zapGoals.d.ts +3 -9
- package/dist/app/src/plugins/zapGoals.d.ts.map +1 -1
- package/dist/app/src/plugins/zapGoals.js +6 -10
- package/dist/app/src/plugins/zapGoals.js.map +1 -1
- package/dist/app/src/plugins/zappers.d.ts +1 -1
- package/dist/app/src/plugins/zappers.d.ts.map +1 -1
- package/dist/app/src/plugins/zappers.js +1 -1
- package/dist/app/src/plugins/zappers.js.map +1 -1
- package/dist/app/src/policy.d.ts +1 -1
- package/dist/app/src/policy.d.ts.map +1 -1
- package/dist/app/src/policy.js +4 -10
- package/dist/app/src/policy.js.map +1 -1
- package/dist/domain/src/behaviors/Expiration.d.ts +1 -8
- package/dist/domain/src/behaviors/Expiration.d.ts.map +1 -1
- package/dist/domain/src/behaviors/Expiration.js +1 -9
- package/dist/domain/src/behaviors/Expiration.js.map +1 -1
- package/dist/domain/src/index.d.ts +1 -0
- package/dist/domain/src/index.d.ts.map +1 -1
- package/dist/domain/src/index.js +1 -0
- package/dist/domain/src/index.js.map +1 -1
- package/dist/domain/src/kinds/CommandList.d.ts +18 -0
- package/dist/domain/src/kinds/CommandList.d.ts.map +1 -0
- package/dist/domain/src/kinds/CommandList.js +38 -0
- package/dist/domain/src/kinds/CommandList.js.map +1 -0
- package/dist/feeds/src/controller.d.ts +1 -1
- package/dist/feeds/src/controller.d.ts.map +1 -1
- package/dist/feeds/src/request.d.ts +2 -1
- package/dist/feeds/src/request.d.ts.map +1 -1
- package/dist/feeds/src/request.js +2 -1
- package/dist/feeds/src/request.js.map +1 -1
- package/dist/net/src/adapter.d.ts +3 -2
- package/dist/net/src/adapter.d.ts.map +1 -1
- package/dist/net/src/adapter.js +29 -16
- package/dist/net/src/adapter.js.map +1 -1
- package/dist/net/src/context.d.ts +1 -1
- package/dist/net/src/context.d.ts.map +1 -1
- package/dist/net/src/index.d.ts +0 -2
- package/dist/net/src/index.d.ts.map +1 -1
- package/dist/net/src/index.js +0 -2
- package/dist/net/src/index.js.map +1 -1
- package/dist/net/src/request.d.ts +1 -1
- package/dist/net/src/request.d.ts.map +1 -1
- package/dist/net/src/request.js +1 -1
- package/dist/net/src/request.js.map +1 -1
- package/dist/net/src/wrapManager.d.ts +3 -4
- package/dist/net/src/wrapManager.d.ts.map +1 -1
- package/dist/net/src/wrapManager.js +8 -6
- package/dist/net/src/wrapManager.js.map +1 -1
- package/dist/store/src/{repository.d.ts → derive.d.ts} +33 -41
- package/dist/store/src/derive.d.ts.map +1 -0
- package/dist/store/src/derive.js +706 -0
- package/dist/store/src/derive.js.map +1 -0
- package/dist/store/src/index.d.ts +9 -1
- package/dist/store/src/index.d.ts.map +1 -1
- package/dist/store/src/index.js +9 -1
- package/dist/store/src/index.js.map +1 -1
- package/dist/store/src/misc.d.ts +2 -7
- package/dist/store/src/misc.d.ts.map +1 -1
- package/dist/store/src/misc.js +1 -1
- package/dist/store/src/misc.js.map +1 -1
- package/dist/{net/src/repository.d.ts → store/src/repository/adapters/memory.d.ts} +22 -30
- package/dist/store/src/repository/adapters/memory.d.ts.map +1 -0
- package/dist/{net/src/repository.js → store/src/repository/adapters/memory.js} +96 -106
- package/dist/store/src/repository/adapters/memory.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/engine.d.ts +65 -0
- package/dist/store/src/repository/adapters/sqlite/engine.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/engine.js +420 -0
- package/dist/store/src/repository/adapters/sqlite/engine.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/leader.d.ts +8 -0
- package/dist/store/src/repository/adapters/sqlite/leader.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/leader.js +222 -0
- package/dist/store/src/repository/adapters/sqlite/leader.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/protocol.d.ts +52 -0
- package/dist/store/src/repository/adapters/sqlite/protocol.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/protocol.js +52 -0
- package/dist/store/src/repository/adapters/sqlite/protocol.js.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/repository.d.ts +54 -0
- package/dist/store/src/repository/adapters/sqlite/repository.d.ts.map +1 -0
- package/dist/store/src/repository/adapters/sqlite/repository.js +238 -0
- package/dist/store/src/repository/adapters/sqlite/repository.js.map +1 -0
- package/dist/store/src/repository/core.d.ts +68 -0
- package/dist/store/src/repository/core.d.ts.map +1 -0
- package/dist/store/src/repository/core.js +123 -0
- package/dist/store/src/repository/core.js.map +1 -0
- package/dist/store/src/svelte.d.ts +22 -0
- package/dist/store/src/svelte.d.ts.map +1 -0
- package/dist/store/src/svelte.js +100 -0
- package/dist/store/src/svelte.js.map +1 -0
- package/dist/store/src/synced.d.ts +1 -1
- package/dist/store/src/synced.d.ts.map +1 -1
- package/dist/store/src/synced.js +1 -1
- package/dist/store/src/synced.js.map +1 -1
- package/dist/{net → store}/src/tracker.d.ts +2 -0
- package/dist/store/src/tracker.d.ts.map +1 -0
- package/dist/{net → store}/src/tracker.js +8 -4
- package/dist/store/src/tracker.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/util/src/Command.d.ts +1 -1
- package/dist/util/src/Command.d.ts.map +1 -1
- package/dist/util/src/Command.js +12 -5
- package/dist/util/src/Command.js.map +1 -1
- package/dist/util/src/Events.d.ts +3 -2
- package/dist/util/src/Events.d.ts.map +1 -1
- package/dist/util/src/Events.js.map +1 -1
- package/dist/util/src/Kinds.d.ts +1 -0
- package/dist/util/src/Kinds.d.ts.map +1 -1
- package/dist/util/src/Kinds.js +1 -0
- package/dist/util/src/Kinds.js.map +1 -1
- package/dist/util/src/RelaySelection.d.ts +5 -0
- package/dist/util/src/RelaySelection.d.ts.map +1 -1
- package/dist/util/src/RelaySelection.js.map +1 -1
- package/dist/util/src/Tags.d.ts +5 -0
- package/dist/util/src/Tags.d.ts.map +1 -1
- package/dist/util/src/Tags.js +3 -0
- package/dist/util/src/Tags.js.map +1 -1
- package/dist/util/src/index.d.ts +1 -0
- package/dist/util/src/index.d.ts.map +1 -1
- package/dist/util/src/index.js +1 -0
- package/dist/util/src/index.js.map +1 -1
- package/package.json +15 -17
- package/dist/net/src/repository.d.ts.map +0 -1
- package/dist/net/src/repository.js.map +0 -1
- package/dist/net/src/tracker.d.ts.map +0 -1
- package/dist/net/src/tracker.js.map +0 -1
- package/dist/store/src/repository.d.ts.map +0 -1
- package/dist/store/src/repository.js +0 -580
- package/dist/store/src/repository.js.map +0 -1
package/dist/app/src/app.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import { Pool,
|
|
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
|
-
|
|
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":"
|
|
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"}
|
package/dist/app/src/app.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { call } from "@welshman/lib";
|
|
2
2
|
import { isDVMKind, isEphemeralKind } from "@welshman/util";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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.
|
|
25
|
-
this.
|
|
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
|
-
|
|
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
|
package/dist/app/src/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app/src/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/app/src/index.js
CHANGED
|
@@ -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("
|
|
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":"AACA,OAAO,KAAK,EAAC,YAAY,EAAE,UAAU,EAAC,MAAM,SAAS,CAAA;AAErD,OAAO,KAAK,EAAC,
|
|
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 {
|
|
3
|
-
import {
|
|
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,
|
|
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;
|
|
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[]) =>
|
|
20
|
-
all: (filters?: Filter[]) =>
|
|
21
|
-
asc: (filters?: Filter[]) =>
|
|
22
|
-
desc: (filters?: Filter[]) =>
|
|
23
|
-
one: (idOrAddress: string, relays?: string[]) =>
|
|
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[]) =>
|
|
26
|
-
forUrl: (url: string, filters?: Filter[]) =>
|
|
27
|
-
byIdByUrl: (filters?: Filter[]) =>
|
|
28
|
-
relaySignedForUrl: (url: string, filters?: Filter[]) =>
|
|
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;
|
|
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 {
|
|
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
|
-
|
|
35
|
-
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AAG1C,OAAO,EACL,
|
|
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;
|