@welshman/app 0.11.2 → 0.12.0
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/command.d.ts +5 -5
- package/dist/app/src/command.d.ts.map +1 -1
- package/dist/app/src/command.js +3 -3
- package/dist/app/src/command.js.map +1 -1
- package/dist/app/src/index.d.ts +1 -1
- package/dist/app/src/index.d.ts.map +1 -1
- package/dist/app/src/index.js +1 -1
- package/dist/app/src/index.js.map +1 -1
- package/dist/app/src/plugins/publisher.d.ts +122 -0
- package/dist/app/src/plugins/publisher.d.ts.map +1 -0
- package/dist/app/src/plugins/publisher.js +368 -0
- package/dist/app/src/plugins/publisher.js.map +1 -0
- package/dist/app/src/plugins/wraps.d.ts +4 -4
- package/dist/app/src/plugins/wraps.d.ts.map +1 -1
- package/dist/app/src/plugins/wraps.js +5 -3
- package/dist/app/src/plugins/wraps.js.map +1 -1
- package/dist/domain/src/kinds/CalendarRsvp.d.ts +2 -2
- package/dist/domain/src/kinds/CalendarRsvp.d.ts.map +1 -1
- package/dist/domain/src/kinds/CalendarRsvp.js +13 -10
- package/dist/domain/src/kinds/CalendarRsvp.js.map +1 -1
- package/dist/domain/src/kinds/MuteList.d.ts +4 -0
- package/dist/domain/src/kinds/MuteList.d.ts.map +1 -1
- package/dist/domain/src/kinds/MuteList.js +13 -1
- package/dist/domain/src/kinds/MuteList.js.map +1 -1
- package/dist/domain/src/kinds/RelayMembers.d.ts +4 -1
- package/dist/domain/src/kinds/RelayMembers.d.ts.map +1 -1
- package/dist/domain/src/kinds/RelayMembers.js +24 -6
- package/dist/domain/src/kinds/RelayMembers.js.map +1 -1
- package/dist/domain/src/kinds/RoomAdmins.d.ts +4 -1
- package/dist/domain/src/kinds/RoomAdmins.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomAdmins.js +21 -6
- package/dist/domain/src/kinds/RoomAdmins.js.map +1 -1
- package/dist/store/src/misc.d.ts +3 -2
- package/dist/store/src/misc.d.ts.map +1 -1
- package/dist/store/src/misc.js +2 -3
- package/dist/store/src/misc.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +15 -15
- package/dist/app/src/plugins/thunk.d.ts +0 -76
- package/dist/app/src/plugins/thunk.d.ts.map +0 -1
- package/dist/app/src/plugins/thunk.js +0 -341
- package/dist/app/src/plugins/thunk.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TaskQueue, uniq, now } from "@welshman/lib";
|
|
2
2
|
import { hexTags, tagValues, prep } from "@welshman/util";
|
|
3
3
|
import { Nip59 } from "@welshman/signer";
|
|
4
|
-
import {
|
|
4
|
+
import { PublicationGroup, Publisher } from "./publisher.js";
|
|
5
5
|
import { User } from "../user.js";
|
|
6
6
|
import { MessagingRelayLists } from "./messagingRelayLists.js";
|
|
7
7
|
export const MAX_UNWRAP_ATTEMPTS = 3;
|
|
@@ -89,9 +89,11 @@ export class Wraps {
|
|
|
89
89
|
const user = User.require(this.app);
|
|
90
90
|
// Stabilize the event id across the different wraps
|
|
91
91
|
const stableEvent = prep(event, user.pubkey, now());
|
|
92
|
-
return new
|
|
92
|
+
return new PublicationGroup(await Promise.all(uniq(recipients).map(async (recipient) => {
|
|
93
93
|
const relays = (await this.app.use(MessagingRelayLists).load(recipient))?.urls() ?? [];
|
|
94
|
-
return this.app
|
|
94
|
+
return this.app
|
|
95
|
+
.use(Publisher)
|
|
96
|
+
.publish({ event: stableEvent, relays, recipient, ...options });
|
|
95
97
|
})));
|
|
96
98
|
};
|
|
97
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wraps.js","sourceRoot":"","sources":["../../../../src/plugins/wraps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAC,MAAM,eAAe,CAAA;AAClD,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAC,MAAM,gBAAgB,CAAA;AAEvD,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"wraps.js","sourceRoot":"","sources":["../../../../src/plugins/wraps.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,8 @@ export declare class CalendarRsvpReader extends EventReader {
|
|
|
12
12
|
freebusy(): RsvpFreebusy | undefined;
|
|
13
13
|
}
|
|
14
14
|
export declare class CalendarRsvpWriter extends EventWriter<CalendarRsvpReader> {
|
|
15
|
-
setCalendarEvent(address: string): this;
|
|
16
|
-
setCalendarEventFromEvent(event: TrustedEvent): this;
|
|
15
|
+
setCalendarEvent(address: string, relay?: string): this;
|
|
16
|
+
setCalendarEventFromEvent(event: TrustedEvent, relay?: string): this;
|
|
17
17
|
setStatus(status: RsvpStatus): this;
|
|
18
18
|
setFreebusy(freebusy: RsvpFreebusy): this;
|
|
19
19
|
clearFreebusy(): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarRsvp.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/CalendarRsvp.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAE3C,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAA;AAE9D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAA;AAI1C,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,aAAa;IAKb,eAAe;IAIf,MAAM,IACmD,UAAU,GAAG,SAAS;IAK/E,QAAQ,IAC6C,YAAY,GAAG,SAAS;CAE9E;AAED,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,kBAAkB,CAAC;IAErE,gBAAgB,CAAC,OAAO,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"CalendarRsvp.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/CalendarRsvp.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAE3C,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAA;AAE9D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAA;AAI1C,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,aAAa;IAKb,eAAe;IAIf,MAAM,IACmD,UAAU,GAAG,SAAS;IAK/E,QAAQ,IAC6C,YAAY,GAAG,SAAS;CAE9E;AAED,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,kBAAkB,CAAC;IAErE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAOhD,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM;IAiB7D,SAAS,CAAC,MAAM,EAAE,UAAU;IAW5B,WAAW,CAAC,QAAQ,EAAE,YAAY;IAIlC,aAAa;IAIb,QAAQ;CAeT;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IAE/C,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAIhC,SAAS,CAAC,YAAY;CAWvB;AAED,eAAO,MAAM,YAAY,wEAKvB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { spec } from "@welshman/lib";
|
|
1
|
+
import { removeUndefined, spec } from "@welshman/lib";
|
|
2
2
|
import { Address, EVENT_RSVP, addressTags, getAddress, hexTags, inbox, outbox, tagSpec, tagValue, } from "@welshman/util";
|
|
3
3
|
import { EventReader } from "../core/EventReader.js";
|
|
4
4
|
import { EventWriter } from "../core/EventWriter.js";
|
|
@@ -25,19 +25,22 @@ export class CalendarRsvpReader extends EventReader {
|
|
|
25
25
|
}
|
|
26
26
|
export class CalendarRsvpWriter extends EventWriter {
|
|
27
27
|
// An rsvp answers exactly one calendar event, so replace any existing one.
|
|
28
|
-
setCalendarEvent(address) {
|
|
29
|
-
return this.dropTags(spec(["a"])).addTags(["a", address]);
|
|
28
|
+
setCalendarEvent(address, relay) {
|
|
29
|
+
return this.dropTags(spec(["a"])).addTags(removeUndefined(["a", address, relay]));
|
|
30
30
|
}
|
|
31
31
|
// Pins the rsvp to this revision of the event and credits its organizer, so the
|
|
32
|
-
// rsvp reaches their inbox.
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
// rsvp reaches their inbox. Pass `relay` when the event lives on a known relay
|
|
33
|
+
// (e.g. a NIP-29 space); otherwise the organizer's outbox fills in the `e` hint.
|
|
34
|
+
setCalendarEventFromEvent(event, relay) {
|
|
35
|
+
this.setCalendarEvent(getAddress(event), relay);
|
|
35
36
|
this.addMention(event.pubkey);
|
|
36
|
-
const tag = ["e", event.id, ""];
|
|
37
|
+
const tag = ["e", event.id, relay ?? ""];
|
|
37
38
|
this.dropTags(spec(["e"])).addTags(tag);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
if (!relay) {
|
|
40
|
+
this.hint(outbox(event.pubkey)).then(url => {
|
|
41
|
+
tag[2] = url;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
41
44
|
return this;
|
|
42
45
|
}
|
|
43
46
|
setStatus(status) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarRsvp.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/CalendarRsvp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"CalendarRsvp.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/CalendarRsvp.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,10 @@ import { EventQuery } from "../core/EventQuery.js";
|
|
|
4
4
|
import { KindFactory } from "../core/Kind.js";
|
|
5
5
|
export declare class MuteListReader extends ListReader {
|
|
6
6
|
pubkeys(): string[];
|
|
7
|
+
words(): string[];
|
|
8
|
+
topics(): string[];
|
|
9
|
+
ids(): string[];
|
|
10
|
+
addresses(): string[];
|
|
7
11
|
includes(pubkey: string): boolean;
|
|
8
12
|
}
|
|
9
13
|
export declare class MuteListWriter extends ListWriter<MuteListReader> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MuteList.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/MuteList.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MuteList.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/MuteList.ts"],"names":[],"mappings":"AAUA,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAG3C,qBAAa,cAAe,SAAQ,UAAU;IAC5C,OAAO;IAIP,KAAK;IAIL,MAAM;IAIN,GAAG;IAIH,SAAS;IAIT,QAAQ,CAAC,MAAM,EAAE,MAAM;CAGxB;AAED,qBAAa,cAAe,SAAQ,UAAU,CAAC,cAAc,CAAC;cAC5C,YAAY;IAI5B,YAAY,CAAC,MAAM,EAAE,MAAM;IAI3B,aAAa,CAAC,MAAM,EAAE,MAAM;IAI5B,MAAM,CAAC,MAAM,EAAE,MAAM;CAGtB;AAED,qBAAa,aAAc,SAAQ,UAAU;IAC3C,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,QAAQ,4DAKnB,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { uniq, spec } from "@welshman/lib";
|
|
2
|
-
import { MUTES, hexTags, tagValues, userOutbox } from "@welshman/util";
|
|
2
|
+
import { MUTES, addressTags, hexTags, tagSpec, tagValues, topicTags, userOutbox, } from "@welshman/util";
|
|
3
3
|
import { ListReader } from "../core/ListReader.js";
|
|
4
4
|
import { ListWriter } from "../core/ListWriter.js";
|
|
5
5
|
import { EventQuery } from "../core/EventQuery.js";
|
|
@@ -9,6 +9,18 @@ export class MuteListReader extends ListReader {
|
|
|
9
9
|
pubkeys() {
|
|
10
10
|
return uniq(tagValues(hexTags("p"), this.tags()));
|
|
11
11
|
}
|
|
12
|
+
words() {
|
|
13
|
+
return uniq(tagValues(tagSpec("word"), this.tags()));
|
|
14
|
+
}
|
|
15
|
+
topics() {
|
|
16
|
+
return uniq(tagValues(topicTags("t"), this.tags()));
|
|
17
|
+
}
|
|
18
|
+
ids() {
|
|
19
|
+
return uniq(tagValues(hexTags("e"), this.tags()));
|
|
20
|
+
}
|
|
21
|
+
addresses() {
|
|
22
|
+
return uniq(tagValues(addressTags("a"), this.tags()));
|
|
23
|
+
}
|
|
12
24
|
includes(pubkey) {
|
|
13
25
|
return this.pubkeys().includes(pubkey);
|
|
14
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MuteList.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/MuteList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"MuteList.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/MuteList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EACL,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAE3C,+BAA+B;AAC/B,MAAM,OAAO,cAAe,SAAQ,UAAU;IAC5C,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,UAA0B;IAClD,KAAK,CAAC,YAAY;QAC1B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACvB,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,UAAU;IACjC,YAAY;QACpB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC;IACtC,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,aAAa;CACrB,CAAC,CAAA"}
|
|
@@ -6,13 +6,16 @@ import type { KindContext } from "../core/Kind.js";
|
|
|
6
6
|
export declare class RelayMembersReader extends EventReader {
|
|
7
7
|
pubkeys(): string[];
|
|
8
8
|
isMember(pubkey: string): boolean;
|
|
9
|
+
rolesByPubkey(): Map<string, string[]>;
|
|
10
|
+
rolesFor(pubkey: string): string[];
|
|
9
11
|
}
|
|
10
12
|
export declare class RelayMembersWriter extends EventWriter<RelayMembersReader> {
|
|
11
13
|
readonly requiresRelays = true;
|
|
12
14
|
constructor(kind: number, context: KindContext, reader?: RelayMembersReader);
|
|
13
|
-
addPubkey(pubkey: string,
|
|
15
|
+
addPubkey(pubkey: string, roles?: string[]): this;
|
|
14
16
|
removePubkey(pubkey: string): this;
|
|
15
17
|
setPubkeys(pubkeys: string[]): this;
|
|
18
|
+
private rolesFor;
|
|
16
19
|
}
|
|
17
20
|
export declare class RelayMembersQuery extends EventQuery {
|
|
18
21
|
protected renderRoutes(): never[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelayMembers.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/RelayMembers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"RelayMembers.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/RelayMembers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAKhD,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,OAAO;IAIP,QAAQ,CAAC,MAAM,EAAE,MAAM;IAIvB,aAAa;IAeb,QAAQ,CAAC,MAAM,EAAE,MAAM;CAGxB;AAED,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,kBAAkB,CAAC;IACrE,QAAQ,CAAC,cAAc,QAAO;gBAElB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAQ3E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,WAAwB;IAIvD,YAAY,CAAC,MAAM,EAAE,MAAM;IAI3B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE;IAM5B,OAAO,CAAC,QAAQ;CAGjB;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,YAAY,wEAKvB,CAAA"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { uniq, spec
|
|
2
|
-
import { RELAY_MEMBERS, tagSpec, tagValues } from "@welshman/util";
|
|
1
|
+
import { uniq, spec } from "@welshman/lib";
|
|
2
|
+
import { RELAY_MEMBERS, matchTags, tagSpec, tagValues } from "@welshman/util";
|
|
3
3
|
import { EventReader } from "../core/EventReader.js";
|
|
4
4
|
import { EventWriter } from "../core/EventWriter.js";
|
|
5
5
|
import { EventQuery } from "../core/EventQuery.js";
|
|
6
6
|
import { KindFactory } from "../core/Kind.js";
|
|
7
7
|
// Flotilla kind-13534 relay/space member-list snapshot. Members are carried in
|
|
8
|
-
// NIP-43 `member` tags, and the event is NIP-70
|
|
8
|
+
// NIP-43 `member` tags, `["member", pubkey, ...roleIds]`, and the event is NIP-70
|
|
9
|
+
// protected (`-`).
|
|
9
10
|
export class RelayMembersReader extends EventReader {
|
|
10
11
|
pubkeys() {
|
|
11
12
|
return uniq(tagValues(tagSpec("member"), this.event.tags));
|
|
@@ -13,6 +14,18 @@ export class RelayMembersReader extends EventReader {
|
|
|
13
14
|
isMember(pubkey) {
|
|
14
15
|
return this.pubkeys().includes(pubkey);
|
|
15
16
|
}
|
|
17
|
+
rolesByPubkey() {
|
|
18
|
+
const rolesByPubkey = new Map();
|
|
19
|
+
for (const [, pubkey, ...roles] of matchTags(tagSpec("member"), this.event.tags)) {
|
|
20
|
+
if (pubkey) {
|
|
21
|
+
rolesByPubkey.set(pubkey, uniq([...(rolesByPubkey.get(pubkey) ?? []), ...roles.filter(Boolean)]));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return rolesByPubkey;
|
|
25
|
+
}
|
|
26
|
+
rolesFor(pubkey) {
|
|
27
|
+
return this.rolesByPubkey().get(pubkey) ?? [];
|
|
28
|
+
}
|
|
16
29
|
}
|
|
17
30
|
export class RelayMembersWriter extends EventWriter {
|
|
18
31
|
requiresRelays = true;
|
|
@@ -21,14 +34,19 @@ export class RelayMembersWriter extends EventWriter {
|
|
|
21
34
|
// NIP-43 requires kind-13534 member lists to be NIP-70 protected.
|
|
22
35
|
this.setProtected(true);
|
|
23
36
|
}
|
|
24
|
-
|
|
25
|
-
|
|
37
|
+
// Omitting `roles` keeps whatever roles the member already has.
|
|
38
|
+
addPubkey(pubkey, roles = this.rolesFor(pubkey)) {
|
|
39
|
+
return this.dropTags(spec(["member", pubkey])).addTags(["member", pubkey, ...roles]);
|
|
26
40
|
}
|
|
27
41
|
removePubkey(pubkey) {
|
|
28
42
|
return this.dropTags(spec(["member", pubkey]));
|
|
29
43
|
}
|
|
30
44
|
setPubkeys(pubkeys) {
|
|
31
|
-
|
|
45
|
+
const tags = uniq(pubkeys).map(pk => ["member", pk, ...this.rolesFor(pk)]);
|
|
46
|
+
return this.dropTags(spec(["member"])).addTags(...tags);
|
|
47
|
+
}
|
|
48
|
+
rolesFor(pubkey) {
|
|
49
|
+
return this.extraTags.find(spec(["member", pubkey]))?.slice(2) ?? [];
|
|
32
50
|
}
|
|
33
51
|
}
|
|
34
52
|
export class RelayMembersQuery extends EventQuery {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelayMembers.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/RelayMembers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"RelayMembers.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/RelayMembers.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,15 @@ import { EventQuery } from "../core/EventQuery.js";
|
|
|
4
4
|
import { KindFactory } from "../core/Kind.js";
|
|
5
5
|
export declare class RoomAdminsReader extends EventReader {
|
|
6
6
|
pubkeys(): string[];
|
|
7
|
+
rolesByPubkey(): Map<string, string[]>;
|
|
8
|
+
rolesFor(pubkey: string): string[];
|
|
7
9
|
}
|
|
8
10
|
export declare class RoomAdminsWriter extends EventWriter<RoomAdminsReader> {
|
|
9
11
|
readonly requiresRelays = true;
|
|
10
|
-
addPubkey(pubkey: string): this;
|
|
12
|
+
addPubkey(pubkey: string, roles?: string[]): this;
|
|
11
13
|
removePubkey(pubkey: string): this;
|
|
12
14
|
setPubkeys(pubkeys: string[]): this;
|
|
15
|
+
private rolesFor;
|
|
13
16
|
}
|
|
14
17
|
export declare class RoomAdminsQuery extends EventQuery {
|
|
15
18
|
protected renderRoutes(): never[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomAdmins.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/RoomAdmins.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAG3C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO;
|
|
1
|
+
{"version":3,"file":"RoomAdmins.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/RoomAdmins.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAG3C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO;IAIP,aAAa;IAab,QAAQ,CAAC,MAAM,EAAE,MAAM;CAGxB;AAED,qBAAa,gBAAiB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;IACjE,QAAQ,CAAC,cAAc,QAAO;IAG9B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,WAAwB;IAIvD,YAAY,CAAC,MAAM,EAAE,MAAM;IAI3B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE;IAM5B,OAAO,CAAC,QAAQ;CAGjB;AAED,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,UAAU,kEAKrB,CAAA"}
|
|
@@ -1,25 +1,40 @@
|
|
|
1
|
-
import { uniq, spec
|
|
2
|
-
import { ROOM_ADMINS, hexTags, tagValues } from "@welshman/util";
|
|
1
|
+
import { uniq, spec } from "@welshman/lib";
|
|
2
|
+
import { ROOM_ADMINS, hexTags, matchTags, tagValues } from "@welshman/util";
|
|
3
3
|
import { EventReader } from "../core/EventReader.js";
|
|
4
4
|
import { EventWriter } from "../core/EventWriter.js";
|
|
5
5
|
import { EventQuery } from "../core/EventQuery.js";
|
|
6
6
|
import { KindFactory } from "../core/Kind.js";
|
|
7
|
-
// NIP-29 kind-39001 room admins list.
|
|
7
|
+
// NIP-29 kind-39001 room admins list. Each admin is a `["p", pubkey, ...roles]` tag.
|
|
8
8
|
export class RoomAdminsReader extends EventReader {
|
|
9
9
|
pubkeys() {
|
|
10
10
|
return uniq(tagValues(hexTags("p"), this.event.tags));
|
|
11
11
|
}
|
|
12
|
+
rolesByPubkey() {
|
|
13
|
+
const rolesByPubkey = new Map();
|
|
14
|
+
for (const [, pubkey, ...roles] of matchTags(hexTags("p"), this.event.tags)) {
|
|
15
|
+
rolesByPubkey.set(pubkey, uniq([...(rolesByPubkey.get(pubkey) ?? []), ...roles.filter(Boolean)]));
|
|
16
|
+
}
|
|
17
|
+
return rolesByPubkey;
|
|
18
|
+
}
|
|
19
|
+
rolesFor(pubkey) {
|
|
20
|
+
return this.rolesByPubkey().get(pubkey) ?? [];
|
|
21
|
+
}
|
|
12
22
|
}
|
|
13
23
|
export class RoomAdminsWriter extends EventWriter {
|
|
14
24
|
requiresRelays = true;
|
|
15
|
-
|
|
16
|
-
|
|
25
|
+
// Omitting `roles` keeps whatever roles the admin already has.
|
|
26
|
+
addPubkey(pubkey, roles = this.rolesFor(pubkey)) {
|
|
27
|
+
return this.dropTags(spec(["p", pubkey])).addTags(["p", pubkey, ...roles]);
|
|
17
28
|
}
|
|
18
29
|
removePubkey(pubkey) {
|
|
19
30
|
return this.dropTags(spec(["p", pubkey]));
|
|
20
31
|
}
|
|
21
32
|
setPubkeys(pubkeys) {
|
|
22
|
-
|
|
33
|
+
const tags = uniq(pubkeys).map(pk => ["p", pk, ...this.rolesFor(pk)]);
|
|
34
|
+
return this.dropTags(spec(["p"])).addTags(...tags);
|
|
35
|
+
}
|
|
36
|
+
rolesFor(pubkey) {
|
|
37
|
+
return this.extraTags.find(spec(["p", pubkey]))?.slice(2) ?? [];
|
|
23
38
|
}
|
|
24
39
|
}
|
|
25
40
|
export class RoomAdminsQuery extends EventQuery {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomAdmins.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/RoomAdmins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"RoomAdmins.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/RoomAdmins.ts"],"names":[],"mappings":"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"}
|
package/dist/store/src/misc.d.ts
CHANGED
|
@@ -14,8 +14,9 @@ export type WritableWithGetter<T> = Writable<T> & {
|
|
|
14
14
|
export type ReadableWithGetter<T> = Readable<T> & {
|
|
15
15
|
get: () => T;
|
|
16
16
|
};
|
|
17
|
-
export declare
|
|
18
|
-
|
|
17
|
+
export declare const withGetter: <S extends Readable<any>>(store: S) => S & {
|
|
18
|
+
get: () => StoresValues<S>;
|
|
19
|
+
};
|
|
19
20
|
export declare const memoized: <T>(store: Readable<T>) => {
|
|
20
21
|
subscribe: (f: Subscriber<T>) => Unsubscriber;
|
|
21
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../../store/src/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,cAAc,CAAA;AAIvF,KAAK,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7F,KAAK,YAAY,CAAC,CAAC,IACjB,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG;KAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAC,CAAA;AAKhG,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CACf,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,sBAAwB,aAAa,CAAC,CAAC,CAAM,YA0C1F,CAAA;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,EAAE,MAAM,CAAC,CAAA;CAAC,CAAA;AAChE,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,EAAE,MAAM,CAAC,CAAA;CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../../store/src/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,cAAc,CAAA;AAIvF,KAAK,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7F,KAAK,YAAY,CAAC,CAAC,IACjB,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG;KAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAC,CAAA;AAKhG,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CACf,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,sBAAwB,aAAa,CAAC,CAAC,CAAM,YA0C1F,CAAA;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,EAAE,MAAM,CAAC,CAAA;CAAC,CAAA;AAChE,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,EAAE,MAAM,CAAC,CAAA;CAAC,CAAA;AAGhE,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,KACL,CAAC,GAAG;IAAC,GAAG,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;CAAC,CAAA;AAEvF,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC;mBAGX,UAAU,CAAC,CAAC,CAAC;CAC/C,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,MAQ1E,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EACpD,QAAQ,CAAC,EACT,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KACvC,QAAQ,CAAC,CAAC,CAWZ,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAC3D,QAAQ,CAAC,EACT,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KACvC,QAAQ,CAAC,CAAC,CAWZ,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,EAAE,QAAQ,CAAC,oHAA8B,CAAA"}
|
package/dist/store/src/misc.js
CHANGED
|
@@ -37,9 +37,8 @@ export const getter = (store, { threshold = 10, read } = {}) => {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
40
|
+
// Keeps whatever else the store carries (e.g. `synced`'s `ready`) alongside `get`.
|
|
41
|
+
export const withGetter = (store) => ({ ...store, get: getter(store) });
|
|
43
42
|
export const memoized = (store) => {
|
|
44
43
|
const { subscribe } = store;
|
|
45
44
|
return { ...store, subscribe: (f) => subscribe(memoize(f)) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../store/src/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,OAAO,EAA+C,MAAM,cAAc,CAAA;AACvF,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAA;AAiBjE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,KAAkB,EAAE,EAAC,SAAS,GAAG,EAAE,EAAE,IAAI,KAAsB,EAAE,EAAE,EAAE;IAC7F,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,WAAqC,CAAA;IACzC,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,KAAQ,CAAA;IAEZ,OAAO,GAAG,EAAE;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAA;QAEzB,qEAAqE;QACrE,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;YACvD,MAAM,EAAE,CAAA;QACV,CAAC;QAED,mEAAmE;QACnE,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YACjB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YACvB,MAAM,GAAG,CAAC,CAAA;QACZ,CAAC;QAED,wBAAwB;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEf,0EAA0E;QAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,QAAW,EAAE,EAAE;oBAC5C,KAAK,GAAG,QAAQ,CAAA;gBAClB,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;aAAM,CAAC;YACN,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,EAAE,CAAA;gBACb,WAAW,GAAG,SAAS,CAAA;YACzB,CAAC;YAED,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../store/src/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,OAAO,EAA+C,MAAM,cAAc,CAAA;AACvF,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAA;AAiBjE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,KAAkB,EAAE,EAAC,SAAS,GAAG,EAAE,EAAE,IAAI,KAAsB,EAAE,EAAE,EAAE;IAC7F,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,WAAqC,CAAA;IACzC,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,KAAQ,CAAA;IAEZ,OAAO,GAAG,EAAE;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAA;QAEzB,qEAAqE;QACrE,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;YACvD,MAAM,EAAE,CAAA;QACV,CAAC;QAED,mEAAmE;QACnE,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YACjB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YACvB,MAAM,GAAG,CAAC,CAAA;QACZ,CAAC;QAED,wBAAwB;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEf,0EAA0E;QAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,QAAW,EAAE,EAAE;oBAC5C,KAAK,GAAG,QAAQ,CAAA;gBAClB,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;aAAM,CAAC;YACN,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,EAAE,CAAA;gBACb,WAAW,GAAG,SAAS,CAAA;YACzB,CAAC;YAED,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AAKD,mFAAmF;AACnF,MAAM,CAAC,MAAM,UAAU,GAAG,CAA0B,KAAQ,EAAE,EAAE,CAC9D,CAAC,EAAC,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,CAAkB,KAAK,CAAC,EAAC,CAAqC,CAAA;AAEvF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,KAAkB,EAAE,EAAE;IAChD,MAAM,EAAC,SAAS,EAAC,GAAG,KAAK,CAAA;IAEzB,OAAO,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAA;AAC3E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAA2B,KAAa,EAAE,KAAQ,EAAE,EAAE;IAC7E,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,EAAC,SAAS,EAAC,GAAG,KAAK,CAAA;QAEzB,KAAK,GAAG,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,CAAA;IACpF,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAS,EACT,GAAwC,EAC3B,EAAE;IACf,IAAI,IAAO,CAAA;IAEX,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,CAAA;QAE/B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,GAAG,MAAM,CAAA;YACb,GAAG,CAAC,MAAM,CAAC,CAAA;QACb,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,MAAS,EACT,GAAwC,EAC3B,EAAE;IACf,IAAI,IAAO,CAAA;IAEX,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,CAAA;QAE/B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1B,IAAI,GAAG,MAAM,CAAA;YACb,GAAG,CAAC,MAAM,CAAC,CAAA;QACb,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAmB,MAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/app.ts","../src/command.ts","../src/createapp.ts","../src/index.ts","../src/policy.ts","../src/session.ts","../src/user.ts","../src/plugins/base.ts","../src/plugins/blockedrelaylists.ts","../src/plugins/blossomserverlists.ts","../src/plugins/deletes.ts","../src/plugins/domain.ts","../src/plugins/events.ts","../src/plugins/feedlists.ts","../src/plugins/feeds.ts","../src/plugins/followlists.ts","../src/plugins/handles.ts","../src/plugins/logger.ts","../src/plugins/messagingrelaylists.ts","../src/plugins/mutelists.ts","../src/plugins/network.ts","../src/plugins/pinboards.ts","../src/plugins/pins.ts","../src/plugins/plaintext.ts","../src/plugins/profiles.ts","../src/plugins/reactions.ts","../src/plugins/relaylists.ts","../src/plugins/relaymanagement.ts","../src/plugins/relaymembers.ts","../src/plugins/relayroles.ts","../src/plugins/relaystats.ts","../src/plugins/relays.ts","../src/plugins/roomlists.ts","../src/plugins/roompins.ts","../src/plugins/rooms.ts","../src/plugins/router.ts","../src/plugins/searchrelaylists.ts","../src/plugins/sync.ts","../src/plugins/
|
|
1
|
+
{"root":["../src/app.ts","../src/command.ts","../src/createapp.ts","../src/index.ts","../src/policy.ts","../src/session.ts","../src/user.ts","../src/plugins/base.ts","../src/plugins/blockedrelaylists.ts","../src/plugins/blossomserverlists.ts","../src/plugins/deletes.ts","../src/plugins/domain.ts","../src/plugins/events.ts","../src/plugins/feedlists.ts","../src/plugins/feeds.ts","../src/plugins/followlists.ts","../src/plugins/handles.ts","../src/plugins/logger.ts","../src/plugins/messagingrelaylists.ts","../src/plugins/mutelists.ts","../src/plugins/network.ts","../src/plugins/pinboards.ts","../src/plugins/pins.ts","../src/plugins/plaintext.ts","../src/plugins/profiles.ts","../src/plugins/publisher.ts","../src/plugins/reactions.ts","../src/plugins/relaylists.ts","../src/plugins/relaymanagement.ts","../src/plugins/relaymembers.ts","../src/plugins/relayroles.ts","../src/plugins/relaystats.ts","../src/plugins/relays.ts","../src/plugins/roomlists.ts","../src/plugins/roompins.ts","../src/plugins/rooms.ts","../src/plugins/router.ts","../src/plugins/searchrelaylists.ts","../src/plugins/sync.ts","../src/plugins/topics.ts","../src/plugins/wot.ts","../src/plugins/wraps.ts","../src/plugins/zapgoals.ts","../src/plugins/zappers.ts"],"version":"5.8.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@welshman/app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"author": "hodlbod",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "An instance-based, composable client for building nostr applications",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"@pomade/core": "^0.3.3",
|
|
23
23
|
"svelte": "^4.0.0 || ^5.0.0",
|
|
24
|
-
"@welshman/
|
|
25
|
-
"@welshman/lib": "0.
|
|
26
|
-
"@welshman/
|
|
27
|
-
"@welshman/
|
|
28
|
-
"@welshman/
|
|
29
|
-
"@welshman/util": "0.
|
|
30
|
-
"@welshman/
|
|
24
|
+
"@welshman/domain": "0.12.0",
|
|
25
|
+
"@welshman/lib": "0.12.0",
|
|
26
|
+
"@welshman/feeds": "0.12.0",
|
|
27
|
+
"@welshman/net": "0.12.0",
|
|
28
|
+
"@welshman/signer": "0.12.0",
|
|
29
|
+
"@welshman/util": "0.12.0",
|
|
30
|
+
"@welshman/store": "0.12.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"rimraf": "~6.0.0",
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
"@pomade/core": "^0.3.3",
|
|
36
36
|
"@types/throttle-debounce": "^5.0.2",
|
|
37
37
|
"svelte": "5.55.9",
|
|
38
|
-
"@welshman/
|
|
39
|
-
"@welshman/
|
|
40
|
-
"@welshman/
|
|
41
|
-
"@welshman/signer": "0.
|
|
42
|
-
"@welshman/
|
|
43
|
-
"@welshman/
|
|
44
|
-
"@welshman/
|
|
38
|
+
"@welshman/lib": "0.12.0",
|
|
39
|
+
"@welshman/net": "0.12.0",
|
|
40
|
+
"@welshman/feeds": "0.12.0",
|
|
41
|
+
"@welshman/signer": "0.12.0",
|
|
42
|
+
"@welshman/domain": "0.12.0",
|
|
43
|
+
"@welshman/util": "0.12.0",
|
|
44
|
+
"@welshman/store": "0.12.0"
|
|
45
45
|
},
|
|
46
46
|
"scripts": {
|
|
47
47
|
"build": "pnpm run clean && pnpm run compile --force",
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import type { Subscriber } from "svelte/store";
|
|
2
|
-
import type { Override } from "@welshman/lib";
|
|
3
|
-
import { TaskQueue } from "@welshman/lib";
|
|
4
|
-
import { HashedEvent, EventTemplate, SignedEvent } from "@welshman/util";
|
|
5
|
-
import { PublishStatus, PublishResult, PublishOptions, PublishResultsByRelay } from "@welshman/net";
|
|
6
|
-
import type { IApp } from "../app.js";
|
|
7
|
-
import { User } from "../user.js";
|
|
8
|
-
export type ThunkOptions = Override<PublishOptions, {
|
|
9
|
-
app: IApp;
|
|
10
|
-
event: EventTemplate;
|
|
11
|
-
recipient?: string;
|
|
12
|
-
delay?: number;
|
|
13
|
-
pow?: number;
|
|
14
|
-
}>;
|
|
15
|
-
/**
|
|
16
|
-
* Shared base for `Thunk` and `MergedThunk`: a subscribable bag of per-relay
|
|
17
|
-
* publish `results`.
|
|
18
|
-
*/
|
|
19
|
-
export declare abstract class BaseThunk {
|
|
20
|
-
_subs: Subscriber<any>[];
|
|
21
|
-
results: PublishResultsByRelay;
|
|
22
|
-
abstract abort(): void;
|
|
23
|
-
_notify(): void;
|
|
24
|
-
subscribe(subscriber: Subscriber<this>): () => void;
|
|
25
|
-
getUrlsWithStatus(statuses: PublishStatus | PublishStatus[]): string[];
|
|
26
|
-
getCompleteUrls(): string[];
|
|
27
|
-
getIncompleteUrls(): string[];
|
|
28
|
-
getFailedUrls(): string[];
|
|
29
|
-
hasStatus(statuses: PublishStatus | PublishStatus[]): boolean;
|
|
30
|
-
isComplete(): boolean;
|
|
31
|
-
getError(): string | undefined;
|
|
32
|
-
waitForError(): Promise<string>;
|
|
33
|
-
waitForCompletion(): Promise<void>;
|
|
34
|
-
}
|
|
35
|
-
export declare class Thunk extends BaseThunk {
|
|
36
|
-
readonly options: Override<ThunkOptions, {
|
|
37
|
-
event: HashedEvent;
|
|
38
|
-
}>;
|
|
39
|
-
complete: import("@welshman/lib").Deferred<void, void>;
|
|
40
|
-
controller: AbortController;
|
|
41
|
-
wrap?: SignedEvent;
|
|
42
|
-
initialId: string;
|
|
43
|
-
constructor(options: ThunkOptions);
|
|
44
|
-
get user(): User;
|
|
45
|
-
_fail(detail: string): void;
|
|
46
|
-
_setPending: (result: PublishResult) => void;
|
|
47
|
-
_setTimeout: (result: PublishResult) => void;
|
|
48
|
-
_setAborted: (result: PublishResult) => void;
|
|
49
|
-
_publish(event: SignedEvent): Promise<void>;
|
|
50
|
-
publish(): Promise<void>;
|
|
51
|
-
abort(): void;
|
|
52
|
-
}
|
|
53
|
-
export declare class MergedThunk extends BaseThunk {
|
|
54
|
-
readonly thunks: Thunk[];
|
|
55
|
-
constructor(thunks: Thunk[]);
|
|
56
|
-
abort(): void;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Per-app thunk manager — the publish-side counterpart of `Network`. Owns
|
|
60
|
-
* the app's optimistic-publish `history` store and the `queue` that paces
|
|
61
|
-
* publishing. Reach it via `app.use(Thunks)`; `publish` fills in the app
|
|
62
|
-
* (the acting user is derived from it), enqueues the thunk (optimistically
|
|
63
|
-
* writing it to the repository), and returns it.
|
|
64
|
-
*/
|
|
65
|
-
export declare class Thunks {
|
|
66
|
-
readonly app: IApp;
|
|
67
|
-
history: import("svelte/store").Writable<Thunk[]>;
|
|
68
|
-
queue: TaskQueue<Thunk>;
|
|
69
|
-
constructor(app: IApp);
|
|
70
|
-
enqueue(thunk: Thunk): void;
|
|
71
|
-
publish: (options: Omit<ThunkOptions, "app">) => Thunk;
|
|
72
|
-
retry: (thunk: BaseThunk) => Thunk | MergedThunk;
|
|
73
|
-
merge(thunks: BaseThunk[]): MergedThunk;
|
|
74
|
-
flatten(thunks: BaseThunk[]): Iterable<Thunk>;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=thunk.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"thunk.d.ts","sourceRoot":"","sources":["../../../../src/plugins/thunk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAE5C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAS,SAAS,EAAmD,MAAM,eAAe,CAAA;AACjG,OAAO,EACL,WAAW,EACX,aAAa,EACb,WAAW,EAKZ,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAC,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAC,MAAM,eAAe,CAAA;AAEjG,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AAE/B,MAAM,MAAM,YAAY,GAAG,QAAQ,CACjC,cAAc,EACd;IACE,GAAG,EAAE,IAAI,CAAA;IACT,KAAK,EAAE,aAAa,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CACF,CAAA;AAED;;;GAGG;AACH,8BAAsB,SAAS;IAC7B,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAK;IAC7B,OAAO,EAAE,qBAAqB,CAAK;IAEnC,QAAQ,CAAC,KAAK,IAAI,IAAI;IAEtB,OAAO;IAMP,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC;IAUtC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,EAAE,GAKvC,MAAM,EAAE;IAG5B,eAAe;IAMf,iBAAiB;IAIjB,aAAa;IAIb,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,EAAE;IAInD,UAAU;IAIV,QAAQ;IAYR,YAAY;IAYZ,iBAAiB;CASlB;AAED,qBAAa,KAAM,SAAQ,SAAS;IAClC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,EAAE;QAAC,KAAK,EAAE,WAAW,CAAA;KAAC,CAAC,CAAA;IAC9D,QAAQ,+CAAgB;IACxB,UAAU,kBAAwB;IAClC,IAAI,CAAC,EAAE,WAAW,CAAA;IAGlB,SAAS,EAAE,MAAM,CAAA;gBAEL,OAAO,EAAE,YAAY;IA6BjC,IAAI,IAAI,SAEP;IAED,KAAK,CAAC,MAAM,EAAE,MAAM;IAYpB,WAAW,GAAI,QAAQ,aAAa,UAInC;IAED,WAAW,GAAI,QAAQ,aAAa,UAInC;IAED,WAAW,GAAI,QAAQ,aAAa,UAInC;IAEK,QAAQ,CAAC,KAAK,EAAE,WAAW;IA0C3B,OAAO;IA8Eb,KAAK;CAGN;AAED,qBAAa,WAAY,SAAQ,SAAS;IAC5B,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;gBAAf,MAAM,EAAE,KAAK,EAAE;IA6BpC,KAAK;CAGN;AAED;;;;;;GAMG;AACH,qBAAa,MAAM;IAWL,QAAQ,CAAC,GAAG,EAAE,IAAI;IAV9B,OAAO,2CAAwB;IAE/B,KAAK,mBAMH;gBAEmB,GAAG,EAAE,IAAI;IAe9B,OAAO,CAAC,KAAK,EAAE,KAAK;IAsBpB,OAAO,GAAI,SAAS,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,WAM5C;IAED,KAAK,GAAI,OAAO,SAAS,yBAMxB;IAED,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE;IAIxB,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;CAS/C"}
|