@welshman/app 0.12.0 → 0.12.2

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 (121) hide show
  1. package/dist/app/src/plugins/feeds.d.ts +1 -1
  2. package/dist/app/src/plugins/feeds.js +1 -1
  3. package/dist/app/src/plugins/plaintext.d.ts +3 -0
  4. package/dist/app/src/plugins/plaintext.d.ts.map +1 -1
  5. package/dist/app/src/plugins/plaintext.js +18 -2
  6. package/dist/app/src/plugins/plaintext.js.map +1 -1
  7. package/dist/app/src/plugins/publisher.d.ts +1 -0
  8. package/dist/app/src/plugins/publisher.d.ts.map +1 -1
  9. package/dist/app/src/plugins/publisher.js.map +1 -1
  10. package/dist/app/src/plugins/zappers.d.ts +1 -3
  11. package/dist/app/src/plugins/zappers.d.ts.map +1 -1
  12. package/dist/app/src/plugins/zappers.js +1 -3
  13. package/dist/app/src/plugins/zappers.js.map +1 -1
  14. package/dist/domain/src/core/ListWriter.d.ts.map +1 -1
  15. package/dist/domain/src/core/ListWriter.js +1 -0
  16. package/dist/domain/src/core/ListWriter.js.map +1 -1
  17. package/dist/domain/src/index.d.ts +3 -0
  18. package/dist/domain/src/index.d.ts.map +1 -1
  19. package/dist/domain/src/index.js +3 -0
  20. package/dist/domain/src/index.js.map +1 -1
  21. package/dist/domain/src/kinds/Bolt12Offer.d.ts +19 -0
  22. package/dist/domain/src/kinds/Bolt12Offer.d.ts.map +1 -0
  23. package/dist/domain/src/kinds/Bolt12Offer.js +54 -0
  24. package/dist/domain/src/kinds/Bolt12Offer.js.map +1 -0
  25. package/dist/domain/src/kinds/Bolt12Zap.d.ts +81 -0
  26. package/dist/domain/src/kinds/Bolt12Zap.d.ts.map +1 -0
  27. package/dist/domain/src/kinds/Bolt12Zap.js +261 -0
  28. package/dist/domain/src/kinds/Bolt12Zap.js.map +1 -0
  29. package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts +32 -0
  30. package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts.map +1 -0
  31. package/dist/domain/src/kinds/Bolt12ZapIntent.js +105 -0
  32. package/dist/domain/src/kinds/Bolt12ZapIntent.js.map +1 -0
  33. package/dist/domain/src/kinds/Feed.js +1 -1
  34. package/dist/domain/src/kinds/Feed.js.map +1 -1
  35. package/dist/domain/src/kinds/Label.d.ts +5 -0
  36. package/dist/domain/src/kinds/Label.d.ts.map +1 -1
  37. package/dist/domain/src/kinds/Label.js +19 -3
  38. package/dist/domain/src/kinds/Label.js.map +1 -1
  39. package/dist/domain/src/kinds/Profile.d.ts +1 -1
  40. package/dist/domain/src/kinds/Profile.d.ts.map +1 -1
  41. package/dist/domain/src/kinds/Profile.js +2 -4
  42. package/dist/domain/src/kinds/Profile.js.map +1 -1
  43. package/dist/domain/src/kinds/Repost.d.ts +1 -2
  44. package/dist/domain/src/kinds/Repost.d.ts.map +1 -1
  45. package/dist/domain/src/kinds/Repost.js +36 -4
  46. package/dist/domain/src/kinds/Repost.js.map +1 -1
  47. package/dist/domain/src/kinds/RoomList.d.ts +2 -0
  48. package/dist/domain/src/kinds/RoomList.d.ts.map +1 -1
  49. package/dist/domain/src/kinds/RoomList.js +20 -10
  50. package/dist/domain/src/kinds/RoomList.js.map +1 -1
  51. package/dist/domain/src/kinds/RoomPins.d.ts +2 -2
  52. package/dist/domain/src/kinds/RoomPins.d.ts.map +1 -1
  53. package/dist/domain/src/kinds/RoomPins.js +1 -0
  54. package/dist/domain/src/kinds/RoomPins.js.map +1 -1
  55. package/dist/domain/src/kinds/RoomUpdatePins.d.ts +3 -9
  56. package/dist/domain/src/kinds/RoomUpdatePins.d.ts.map +1 -1
  57. package/dist/domain/src/kinds/RoomUpdatePins.js +4 -21
  58. package/dist/domain/src/kinds/RoomUpdatePins.js.map +1 -1
  59. package/dist/domain/src/kinds/ZapGoal.js +3 -3
  60. package/dist/domain/src/kinds/ZapGoal.js.map +1 -1
  61. package/dist/domain/src/kinds/ZapRequest.d.ts.map +1 -1
  62. package/dist/domain/src/kinds/ZapRequest.js +9 -5
  63. package/dist/domain/src/kinds/ZapRequest.js.map +1 -1
  64. package/dist/domain/src/other/Zapper.js +3 -3
  65. package/dist/domain/src/other/Zapper.js.map +1 -1
  66. package/dist/feeds/src/router.d.ts.map +1 -1
  67. package/dist/feeds/src/router.js +1 -3
  68. package/dist/feeds/src/router.js.map +1 -1
  69. package/dist/lib/src/Tools.d.ts +6 -2
  70. package/dist/lib/src/Tools.d.ts.map +1 -1
  71. package/dist/lib/src/Tools.js +10 -6
  72. package/dist/lib/src/Tools.js.map +1 -1
  73. package/dist/net/src/policy.d.ts.map +1 -1
  74. package/dist/net/src/policy.js +6 -0
  75. package/dist/net/src/policy.js.map +1 -1
  76. package/dist/net/src/repository.d.ts +4 -2
  77. package/dist/net/src/repository.d.ts.map +1 -1
  78. package/dist/net/src/repository.js +86 -82
  79. package/dist/net/src/repository.js.map +1 -1
  80. package/dist/net/src/request.d.ts +0 -2
  81. package/dist/net/src/request.d.ts.map +1 -1
  82. package/dist/net/src/request.js +0 -4
  83. package/dist/net/src/request.js.map +1 -1
  84. package/dist/net/src/tracker.d.ts +1 -1
  85. package/dist/net/src/tracker.d.ts.map +1 -1
  86. package/dist/net/src/tracker.js +14 -6
  87. package/dist/net/src/tracker.js.map +1 -1
  88. package/dist/net/src/wrapManager.d.ts +0 -1
  89. package/dist/net/src/wrapManager.d.ts.map +1 -1
  90. package/dist/net/src/wrapManager.js +7 -7
  91. package/dist/net/src/wrapManager.js.map +1 -1
  92. package/dist/signer/src/signers/nip46.d.ts.map +1 -1
  93. package/dist/signer/src/signers/nip46.js +4 -1
  94. package/dist/signer/src/signers/nip46.js.map +1 -1
  95. package/dist/util/src/Blossom.d.ts +11 -3
  96. package/dist/util/src/Blossom.d.ts.map +1 -1
  97. package/dist/util/src/Blossom.js +18 -6
  98. package/dist/util/src/Blossom.js.map +1 -1
  99. package/dist/util/src/Bolt12.d.ts +29 -0
  100. package/dist/util/src/Bolt12.d.ts.map +1 -0
  101. package/dist/util/src/Bolt12.js +242 -0
  102. package/dist/util/src/Bolt12.js.map +1 -0
  103. package/dist/util/src/Kinds.d.ts +3 -0
  104. package/dist/util/src/Kinds.d.ts.map +1 -1
  105. package/dist/util/src/Kinds.js +3 -0
  106. package/dist/util/src/Kinds.js.map +1 -1
  107. package/dist/util/src/Lightning.d.ts +6 -0
  108. package/dist/util/src/Lightning.d.ts.map +1 -1
  109. package/dist/util/src/Lightning.js +11 -1
  110. package/dist/util/src/Lightning.js.map +1 -1
  111. package/dist/util/src/RelaySelection.d.ts.map +1 -1
  112. package/dist/util/src/RelaySelection.js.map +1 -1
  113. package/dist/util/src/Tags.d.ts +2 -0
  114. package/dist/util/src/Tags.d.ts.map +1 -1
  115. package/dist/util/src/Tags.js +15 -1
  116. package/dist/util/src/Tags.js.map +1 -1
  117. package/dist/util/src/index.d.ts +1 -0
  118. package/dist/util/src/index.d.ts.map +1 -1
  119. package/dist/util/src/index.js +1 -0
  120. package/dist/util/src/index.js.map +1 -1
  121. package/package.json +15 -15
@@ -0,0 +1,261 @@
1
+ import { parseJson, spec, sum } from "@welshman/lib";
2
+ import { BOLT12_OFFER, BOLT12_ZAP, BOLT12_ZAP_INTENT, addressTags, asSignedEvent, bolt12ProofPaysOffer, decodeBolt12PayerProof, getAddress, hexTags, inboxes, isBolt12PayerProof, isReplaceable, kindTags, makeBolt12PayerNote, isBolt12ZapId, matchTags, msatsTags, tagSpec, tagValue, tagValues, verifyEvent, } from "@welshman/util";
3
+ import { EventReader } from "../core/EventReader.js";
4
+ import { EventWriter } from "../core/EventWriter.js";
5
+ import { EventQuery } from "../core/EventQuery.js";
6
+ import { KindFactory } from "../core/Kind.js";
7
+ import { Bolt12OfferReader } from "./Bolt12Offer.js";
8
+ import { Bolt12ZapIntentReader } from "./Bolt12ZapIntent.js";
9
+ // The tags NIP-B1 requires the zap event to repeat from the intent it embeds.
10
+ const intentKeys = ["p", "amount", "offer_event", "e", "a", "k"];
11
+ const countTags = (key, tags) => tags.filter(spec([key])).length;
12
+ // The zap and its intent agree on presence and values, so every value for a key has to match.
13
+ const agreesOn = (key, a, b) => {
14
+ const values = (tags) => tagValues(tagSpec(key), tags).sort();
15
+ const mine = values(a);
16
+ const theirs = values(b);
17
+ return mine.length === theirs.length && mine.every((value, i) => value === theirs[i]);
18
+ };
19
+ // An embedded event arrives as JSON rather than from a relay, so nothing else verifies it.
20
+ const parseEmbedded = (json, kind) => {
21
+ const event = parseJson(json);
22
+ let result;
23
+ if (event?.kind === kind && verifyEvent(event)) {
24
+ result = event;
25
+ }
26
+ return result;
27
+ };
28
+ const readOffer = (context, offer) => new Bolt12OfferReader(BOLT12_OFFER, context, offer);
29
+ /**
30
+ * The lightning half of NIP-B1 validation, which `Bolt12ZapReader.validate` leaves alone and
31
+ * `Bolt12ZapWriter.validate` runs before publishing:
32
+ * the payer proof settles, it pays one of the offers the recipient announced, and it carries
33
+ * the payer note and amount this claim says it does. Returns the proof's
34
+ * `invoice_payment_hash`, which is how two claims of one payment are told apart.
35
+ */
36
+ export const getBolt12ZapPaymentHash = (claim) => {
37
+ const proof = decodeBolt12PayerProof(claim.proof);
38
+ return proof &&
39
+ proof.payerNote === claim.payerNote &&
40
+ proof.amount === claim.amount &&
41
+ claim.offers.some(offer => bolt12ProofPaysOffer(proof, offer))
42
+ ? proof.paymentHash
43
+ : undefined;
44
+ };
45
+ /**
46
+ * Sums a target's zaps in millisats, counting each lightning payment once. Two claims
47
+ * sharing a target and a payment hash count as the lower of their amounts. A profile total
48
+ * is the claims whose `target` is undefined, since a `#p` query answers with zaps of that
49
+ * pubkey's events too.
50
+ */
51
+ export const sumBolt12Zaps = (claims, paymentHash = getBolt12ZapPaymentHash) => {
52
+ const amounts = new Map();
53
+ for (const claim of claims) {
54
+ const hash = paymentHash(claim);
55
+ if (hash) {
56
+ const key = `${claim.target ?? ""}:${hash}`;
57
+ amounts.set(key, Math.min(amounts.get(key) ?? Infinity, claim.amount));
58
+ }
59
+ }
60
+ return sum(Array.from(amounts.values()));
61
+ };
62
+ // NIP-B1 kind-9736 BOLT12 zap, the payer's own proof of paying the recipient's offer.
63
+ export class Bolt12ZapReader extends EventReader {
64
+ recipient() {
65
+ return tagValue(hexTags("p"), this.tags());
66
+ }
67
+ // Present on an attributed zap, absent on an anonymous one.
68
+ payer() {
69
+ return tagValue(hexTags("P"), this.tags());
70
+ }
71
+ // Amount in millisats, or undefined when the tag is absent or not a whole number.
72
+ amount() {
73
+ return tagValue(msatsTags("amount"), this.tags());
74
+ }
75
+ proof() {
76
+ return tagValue(tagSpec("proof"), this.tags());
77
+ }
78
+ eventId() {
79
+ return tagValue(hexTags("e"), this.tags());
80
+ }
81
+ targetAddress() {
82
+ return tagValue(addressTags("a"), this.tags());
83
+ }
84
+ targetKind() {
85
+ return tagValue(kindTags("k"), this.tags());
86
+ }
87
+ // The event id or address the zap names, or nothing for a zap of the recipient themselves.
88
+ target() {
89
+ return tagValue(tagSpec(["e", "a"]), this.tags());
90
+ }
91
+ // A zap of the recipient rather than of anything they wrote.
92
+ targetsProfile() {
93
+ return countTags("e", this.tags()) === 0 && countTags("a", this.tags()) === 0;
94
+ }
95
+ // The intent the payer signed before paying. Verified here, since it arrives as JSON.
96
+ intent() {
97
+ return parseEmbedded(tagValue(tagSpec("description"), this.tags()), BOLT12_ZAP_INTENT);
98
+ }
99
+ // The recipient's announcement of the offer that was paid, verified.
100
+ offer() {
101
+ return parseEmbedded(tagValue(tagSpec("offer_event"), this.tags()), BOLT12_OFFER);
102
+ }
103
+ // The canonical raw offers the payer proof may have paid.
104
+ offers() {
105
+ const offer = this.offer();
106
+ return offer ? readOffer(this.context, offer).offers() : [];
107
+ }
108
+ /**
109
+ * Runs NIP-B1 validation as far as nostr reaches: both embedded signatures, the structure
110
+ * of the zap and its intent, that the zap repeats what the payer signed, and that the
111
+ * recipient authored the announcement. Returns undefined when any of that fails.
112
+ * `getBolt12ZapPaymentHash` is the lightning half, and it reads the claim this returns.
113
+ */
114
+ validate() {
115
+ const intent = this.intent();
116
+ const offer = this.offer();
117
+ const amount = this.amount();
118
+ const proof = this.proof();
119
+ let claim;
120
+ if (intent && offer && proof && amount !== undefined) {
121
+ const offerReader = readOffer(this.context, offer);
122
+ const offers = offerReader.offers();
123
+ const valid = amount > 0 &&
124
+ isBolt12PayerProof(proof) &&
125
+ offerReader.offersAreCanonical() &&
126
+ this.isWellFormed() &&
127
+ this.intentIsWellFormed(intent) &&
128
+ this.matchesIntent(intent) &&
129
+ this.offerIsAuthorized(offer, intent);
130
+ if (valid) {
131
+ claim = {
132
+ event: this.event,
133
+ intent,
134
+ offer,
135
+ offers,
136
+ target: this.target(),
137
+ amount,
138
+ proof,
139
+ payerNote: makeBolt12PayerNote(intent.id),
140
+ };
141
+ }
142
+ }
143
+ return claim;
144
+ }
145
+ // One description, one recipient, one announcement, at most one target, author as payer.
146
+ isWellFormed() {
147
+ const tags = this.tags();
148
+ return (countTags("description", tags) === 1 &&
149
+ countTags("p", tags) === 1 &&
150
+ countTags("offer_event", tags) === 1 &&
151
+ countTags("e", tags) + countTags("a", tags) <= 1 &&
152
+ this.payerIsAuthor());
153
+ }
154
+ // Reading `P` through `payer` would pass a malformed one off as an anonymous zap.
155
+ payerIsAuthor() {
156
+ return matchTags(tagSpec("P"), this.tags()).every(tag => tag[1] === this.event.pubkey);
157
+ }
158
+ intentIsWellFormed(intent) {
159
+ const reader = new Bolt12ZapIntentReader(BOLT12_ZAP_INTENT, this.context, intent);
160
+ const amount = reader.amount();
161
+ const zapId = reader.zapId();
162
+ return (intent.pubkey === this.event.pubkey &&
163
+ countTags("p", intent.tags) === 1 &&
164
+ countTags("offer_event", intent.tags) === 1 &&
165
+ countTags("e", intent.tags) + countTags("a", intent.tags) <= 1 &&
166
+ amount !== undefined &&
167
+ amount > 0 &&
168
+ zapId !== undefined &&
169
+ isBolt12ZapId(zapId));
170
+ }
171
+ matchesIntent(intent) {
172
+ const agrees = (key) => agreesOn(key, this.tags(), intent.tags);
173
+ return this.event.content === intent.content && intentKeys.every(agrees);
174
+ }
175
+ // The announcement is the recipient's own, and predates the intent that embedded it.
176
+ offerIsAuthorized(offer, intent) {
177
+ return offer.pubkey === this.recipient() && offer.created_at <= intent.created_at;
178
+ }
179
+ }
180
+ export class Bolt12ZapWriter extends EventWriter {
181
+ // Copies the tags NIP-B1 requires the zap and its intent to agree on.
182
+ setIntent(intent) {
183
+ const copied = matchTags(tagSpec(intentKeys), intent.tags);
184
+ return this.dropTags(spec(["description"]))
185
+ .dropTags(tag => intentKeys.includes(tag[0]))
186
+ .addTags(["description", JSON.stringify(asSignedEvent(intent))], ...copied)
187
+ .setContent(intent.content);
188
+ }
189
+ // Bech32 is case-insensitive, and lowercase is its canonical form.
190
+ setProof(proof) {
191
+ return this.dropTags(spec(["proof"])).addTags(["proof", proof.toLowerCase()]);
192
+ }
193
+ // An anonymous zap omits this and signs with an ephemeral key.
194
+ setPayer(payer) {
195
+ return this.dropTags(spec(["P"])).addTags(["P", payer]);
196
+ }
197
+ clearPayer() {
198
+ return this.dropTags(spec(["P"]));
199
+ }
200
+ /**
201
+ * An anonymous zap goes to the recipient's inboxes alone. The default adds the user's own
202
+ * outbox relays, which would link the ephemeral key it is signed with back to them.
203
+ */
204
+ async renderRoutes() {
205
+ const isAttributed = this.extraTags.some(spec(["P"]));
206
+ return isAttributed
207
+ ? super.renderRoutes()
208
+ : inboxes(tagValues(hexTags("p"), await this.renderTags()), 0.5);
209
+ }
210
+ validate() {
211
+ super.validate();
212
+ const intent = parseEmbedded(tagValue(tagSpec("description"), this.extraTags), BOLT12_ZAP_INTENT);
213
+ const offer = parseEmbedded(tagValue(tagSpec("offer_event"), this.extraTags), BOLT12_OFFER);
214
+ const amount = tagValue(msatsTags("amount"), this.extraTags);
215
+ const proof = tagValue(tagSpec("proof"), this.extraTags);
216
+ if (!intent) {
217
+ throw new Error("Bolt12Zap requires the zap intent it was paid for");
218
+ }
219
+ if (!this.extraTags.some(spec(["p"]))) {
220
+ throw new Error("Bolt12Zap requires a recipient");
221
+ }
222
+ if (!offer) {
223
+ throw new Error("Bolt12Zap requires the recipient's offer announcement");
224
+ }
225
+ if (amount === undefined || amount <= 0) {
226
+ throw new Error("Bolt12Zap requires a positive whole number of millisats");
227
+ }
228
+ const settles = proof &&
229
+ getBolt12ZapPaymentHash({
230
+ proof,
231
+ amount,
232
+ payerNote: makeBolt12PayerNote(intent.id),
233
+ offers: readOffer(this.context, offer).offers(),
234
+ });
235
+ if (!settles) {
236
+ throw new Error("Bolt12Zap requires a settled lnp payer proof");
237
+ }
238
+ }
239
+ }
240
+ export class Bolt12ZapQuery extends EventQuery {
241
+ // Zaps of a regular event are tagged e, of a replaceable one a.
242
+ forEvent(event) {
243
+ return isReplaceable(event)
244
+ ? this.setTag("a", [getAddress(event)])
245
+ : this.setTag("e", [event.id]);
246
+ }
247
+ // Also matches zaps of that pubkey's events, which `targetsProfile` tells apart.
248
+ forProfile(pubkey) {
249
+ return this.setTag("p", [pubkey]);
250
+ }
251
+ renderRoutes() {
252
+ return [...this.authorRoutes(), ...this.mentionRoutes()];
253
+ }
254
+ }
255
+ export const Bolt12Zap = new KindFactory({
256
+ kind: BOLT12_ZAP,
257
+ reader: Bolt12ZapReader,
258
+ writer: Bolt12ZapWriter,
259
+ query: Bolt12ZapQuery,
260
+ });
261
+ //# sourceMappingURL=Bolt12Zap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bolt12Zap.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12Zap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { SignedEvent, TrustedEvent } from "@welshman/util";
2
+ import { EventReader } from "../core/EventReader.js";
3
+ import { EventWriter } from "../core/EventWriter.js";
4
+ import { EventQuery } from "../core/EventQuery.js";
5
+ import { KindFactory } from "../core/Kind.js";
6
+ import type { KindContext } from "../core/Kind.js";
7
+ export declare class Bolt12ZapIntentReader extends EventReader {
8
+ recipient(): string | undefined;
9
+ amount(): number | undefined;
10
+ offerEvent(): string | undefined;
11
+ zapId(): string | undefined;
12
+ eventId(): string | undefined;
13
+ targetAddress(): string | undefined;
14
+ targetKind(): number | undefined;
15
+ payerNote(): string;
16
+ }
17
+ export declare class Bolt12ZapIntentWriter extends EventWriter<Bolt12ZapIntentReader> {
18
+ constructor(kind: number, context: KindContext, reader?: Bolt12ZapIntentReader);
19
+ private ensureZapId;
20
+ setRecipient(recipient: string): this;
21
+ setAmount(amount: number): this;
22
+ setZapId(zapId?: string): this;
23
+ setOfferEvent(offer: SignedEvent): this;
24
+ setEvent(event: TrustedEvent): this;
25
+ clearEvent(): this;
26
+ validate(): void;
27
+ }
28
+ export declare class Bolt12ZapIntentQuery extends EventQuery {
29
+ protected renderRoutes(): never[];
30
+ }
31
+ export declare const Bolt12ZapIntent: KindFactory<Bolt12ZapIntentReader, Bolt12ZapIntentWriter, Bolt12ZapIntentQuery>;
32
+ //# sourceMappingURL=Bolt12ZapIntent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bolt12ZapIntent.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12ZapIntent.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC7D,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,qBAAsB,SAAQ,WAAW;IACpD,SAAS;IAKT,MAAM;IAKN,UAAU;IAIV,KAAK;IAIL,OAAO;IAIP,aAAa;IAIb,UAAU;IAKV,SAAS;CAGV;AAED,qBAAa,qBAAsB,SAAQ,WAAW,CAAC,qBAAqB,CAAC;gBAC/D,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,qBAAqB;IAM9E,OAAO,CAAC,WAAW;IAMnB,YAAY,CAAC,SAAS,EAAE,MAAM;IAI9B,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,QAAQ,CAAC,KAAK,SAAoB;IAKlC,aAAa,CAAC,KAAK,EAAE,WAAW;IAQhC,QAAQ,CAAC,KAAK,EAAE,YAAY;IAS5B,UAAU;IAIV,QAAQ;CAsBT;AAED,qBAAa,oBAAqB,SAAQ,UAAU;IAElD,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,eAAe,iFAK1B,CAAA"}
@@ -0,0 +1,105 @@
1
+ import { spec } from "@welshman/lib";
2
+ import { BOLT12_ZAP_INTENT, addressTags, asSignedEvent, getAddress, hexTags, isBolt12ZapId, isMsats, isReplaceable, kindTags, makeBolt12PayerNote, makeBolt12ZapId, msatsTags, tagSpec, tagValue, } from "@welshman/util";
3
+ import { EventReader } from "../core/EventReader.js";
4
+ import { EventWriter } from "../core/EventWriter.js";
5
+ import { EventQuery } from "../core/EventQuery.js";
6
+ import { KindFactory } from "../core/Kind.js";
7
+ const targetKeys = ["e", "a", "k"];
8
+ // NIP-B1 kind-9737 zap intent, signed before payment and embedded in the kind-9736 zap.
9
+ export class Bolt12ZapIntentReader extends EventReader {
10
+ recipient() {
11
+ return tagValue(hexTags("p"), this.tags());
12
+ }
13
+ // Amount in millisats, or undefined when the tag is absent or not a whole number.
14
+ amount() {
15
+ return tagValue(msatsTags("amount"), this.tags());
16
+ }
17
+ // The recipient's serialized kind-10058 announcement, as the tag carries it.
18
+ offerEvent() {
19
+ return tagValue(tagSpec("offer_event"), this.tags());
20
+ }
21
+ zapId() {
22
+ return tagValue(tagSpec("zap_id"), this.tags());
23
+ }
24
+ eventId() {
25
+ return tagValue(hexTags("e"), this.tags());
26
+ }
27
+ targetAddress() {
28
+ return tagValue(addressTags("a"), this.tags());
29
+ }
30
+ targetKind() {
31
+ return tagValue(kindTags("k"), this.tags());
32
+ }
33
+ // What the payment's invreq_payer_note has to say.
34
+ payerNote() {
35
+ return makeBolt12PayerNote(this.id());
36
+ }
37
+ }
38
+ export class Bolt12ZapIntentWriter extends EventWriter {
39
+ constructor(kind, context, reader) {
40
+ super(kind, context, reader);
41
+ this.ensureZapId();
42
+ }
43
+ ensureZapId() {
44
+ if (!this.extraTags.some(spec(["zap_id"]))) {
45
+ this.setZapId();
46
+ }
47
+ }
48
+ setRecipient(recipient) {
49
+ return this.dropTags(spec(["p"])).addTags(["p", recipient]);
50
+ }
51
+ setAmount(amount) {
52
+ return this.dropTags(spec(["amount"])).addTags(["amount", String(amount)]);
53
+ }
54
+ setZapId(zapId = makeBolt12ZapId()) {
55
+ return this.dropTags(spec(["zap_id"])).addTags(["zap_id", zapId]);
56
+ }
57
+ // The complete signed announcement binds the offer to the recipient's key.
58
+ setOfferEvent(offer) {
59
+ return this.dropTags(spec(["offer_event"])).addTags([
60
+ "offer_event",
61
+ JSON.stringify(asSignedEvent(offer)),
62
+ ]);
63
+ }
64
+ // A regular event is tagged e, a replaceable one a, and NIP-B1 forbids both.
65
+ setEvent(event) {
66
+ const target = isReplaceable(event) ? ["a", getAddress(event)] : ["e", event.id];
67
+ return this.dropTags(tag => targetKeys.includes(tag[0])).addTags(target, [
68
+ "k",
69
+ String(event.kind),
70
+ ]);
71
+ }
72
+ clearEvent() {
73
+ return this.dropTags(tag => targetKeys.includes(tag[0]));
74
+ }
75
+ validate() {
76
+ super.validate();
77
+ const amount = tagValue(tagSpec("amount"), this.extraTags);
78
+ const zapId = tagValue(tagSpec("zap_id"), this.extraTags);
79
+ if (!this.extraTags.some(spec(["p"]))) {
80
+ throw new Error("Bolt12ZapIntent requires a recipient");
81
+ }
82
+ if (!amount || !isMsats(amount) || Number(amount) <= 0) {
83
+ throw new Error("Bolt12ZapIntent requires a positive whole number of millisats");
84
+ }
85
+ if (!this.extraTags.some(spec(["offer_event"]))) {
86
+ throw new Error("Bolt12ZapIntent requires the recipient's offer announcement");
87
+ }
88
+ if (!zapId || !isBolt12ZapId(zapId)) {
89
+ throw new Error("Bolt12ZapIntent requires a zap id of at least 128 bits of lowercase hex");
90
+ }
91
+ }
92
+ }
93
+ export class Bolt12ZapIntentQuery extends EventQuery {
94
+ // A zap intent is embedded in its zap rather than published, so no relay has one.
95
+ renderRoutes() {
96
+ return [];
97
+ }
98
+ }
99
+ export const Bolt12ZapIntent = new KindFactory({
100
+ kind: BOLT12_ZAP_INTENT,
101
+ reader: Bolt12ZapIntentReader,
102
+ writer: Bolt12ZapIntentWriter,
103
+ query: Bolt12ZapIntentQuery,
104
+ });
105
+ //# sourceMappingURL=Bolt12ZapIntent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bolt12ZapIntent.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12ZapIntent.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ 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-51 kind-31890 saved-feed definition.
7
+ // Kind-31890 saved-feed definition: a `@welshman/feeds` feed, JSON-encoded in a `feed` tag.
8
8
  export class FeedReader extends EventReader {
9
9
  title() {
10
10
  return tagValue(tagSpec("title"), this.event.tags) || "";
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Feed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAGtD,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,2CAA2C;AAC3C,MAAM,OAAO,UAAW,SAAQ,WAAW;IACzC,KAAK;QACH,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC1D,CAAC;IAED,WAAW;QACT,OAAO,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAChE,CAAC;IAED,UAAU;QACR,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,WAAuB;IACrD,QAAQ,CAAC,KAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IACjE,CAAC;IAED,cAAc,CAAC,WAAmB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;IACnF,CAAC;IAED,aAAa,CAAC,IAAoB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC9E,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,UAAU;IAC7B,YAAY;QACpB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC;IAClC,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,SAAS;CACjB,CAAC,CAAA"}
1
+ {"version":3,"file":"Feed.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Feed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAGtD,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,4FAA4F;AAC5F,MAAM,OAAO,UAAW,SAAQ,WAAW;IACzC,KAAK;QACH,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC1D,CAAC;IAED,WAAW;QACT,OAAO,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAChE,CAAC;IAED,UAAU;QACR,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,WAAuB;IACrD,QAAQ,CAAC,KAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IACjE,CAAC;IAED,cAAc,CAAC,WAAmB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;IACnF,CAAC;IAED,aAAa,CAAC,IAAoB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC9E,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,UAAU;IAC7B,YAAY;QACpB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC;IAClC,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,SAAS;CACjB,CAAC,CAAA"}
@@ -20,6 +20,11 @@ export declare class LabelWriter extends EventWriter<LabelReader> {
20
20
  addAddress(address: string): this;
21
21
  addTopic(topic: string): this;
22
22
  addUrl(url: string): this;
23
+ removeEventId(id: string): this;
24
+ removePubkey(pubkey: string): this;
25
+ removeAddress(address: string): this;
26
+ removeTopic(topic: string): this;
27
+ removeUrl(url: string): this;
23
28
  validate(): void;
24
29
  }
25
30
  export declare class LabelQuery extends EventQuery {
@@ -1 +1 @@
1
- {"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Label.ts"],"names":[],"mappings":"AAYA,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;AAK3C,qBAAa,WAAY,SAAQ,WAAW;IAC1C,UAAU;IAKV,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM;IAMzB,QAAQ;IAIR,OAAO;IAIP,SAAS;IAIT,MAAM;IAIN,IAAI;CAGL;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,WAAW,CAAC;cAGvC,YAAY;IAK5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAcxC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAU3C,UAAU,CAAC,EAAE,EAAE,MAAM;IAIrB,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,UAAU,CAAC,OAAO,EAAE,MAAM;IAI1B,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,QAAQ;CAOT;AAED,qBAAa,UAAW,SAAQ,UAAU;IACxC,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,KAAK,mDAKhB,CAAA"}
1
+ {"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Label.ts"],"names":[],"mappings":"AAYA,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;AAM3C,qBAAa,WAAY,SAAQ,WAAW;IAC1C,UAAU;IAKV,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM;IAMzB,QAAQ;IAIR,OAAO;IAIP,SAAS;IAIT,MAAM;IAIN,IAAI;CAGL;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,WAAW,CAAC;cAGvC,YAAY;IAK5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAcxC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAU3C,UAAU,CAAC,EAAE,EAAE,MAAM;IAIrB,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,UAAU,CAAC,OAAO,EAAE,MAAM;IAI1B,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,aAAa,CAAC,EAAE,EAAE,MAAM;IAIxB,YAAY,CAAC,MAAM,EAAE,MAAM;IAI3B,aAAa,CAAC,OAAO,EAAE,MAAM;IAI7B,WAAW,CAAC,KAAK,EAAE,MAAM;IAIzB,SAAS,CAAC,GAAG,EAAE,MAAM;IAIrB,QAAQ;CAOT;AAED,qBAAa,UAAW,SAAQ,UAAU;IACxC,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,KAAK,mDAKhB,CAAA"}
@@ -1,12 +1,13 @@
1
1
  import { nth, spec } from "@welshman/lib";
2
- import { LABEL, addressTags, hexTags, matchTags, relayTags, tagSpec, tagValues, topicTags, userOutbox, } from "@welshman/util";
2
+ import { LABEL, addressTags, hexTags, matchTags, tagSpec, tagValues, topicTags, urlTags, userOutbox, } 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
  // NIP-32 label. `L` declares a namespace and `l` carries the labels within it,
8
8
  // while the labeled subjects are referenced with ordinary `e`/`p`/`a`/`r`/`t`
9
- // tags. One event may label several subjects across several namespaces.
9
+ // tags. One event may label several subjects across several namespaces. An `r`
10
+ // subject is any url, not only a relay.
10
11
  export class LabelReader extends EventReader {
11
12
  namespaces() {
12
13
  return tagValues(tagSpec("L"), this.event.tags);
@@ -30,7 +31,7 @@ export class LabelReader extends EventReader {
30
31
  return tagValues(topicTags("t"), this.event.tags);
31
32
  }
32
33
  urls() {
33
- return tagValues(relayTags("r"), this.event.tags);
34
+ return tagValues(urlTags("r"), this.event.tags);
34
35
  }
35
36
  }
36
37
  export class LabelWriter extends EventWriter {
@@ -74,6 +75,21 @@ export class LabelWriter extends EventWriter {
74
75
  addUrl(url) {
75
76
  return this.addTags(["r", url]);
76
77
  }
78
+ removeEventId(id) {
79
+ return this.dropTags(spec(["e", id]));
80
+ }
81
+ removePubkey(pubkey) {
82
+ return this.dropTags(spec(["p", pubkey]));
83
+ }
84
+ removeAddress(address) {
85
+ return this.dropTags(spec(["a", address]));
86
+ }
87
+ removeTopic(topic) {
88
+ return this.dropTags(spec(["t", topic]));
89
+ }
90
+ removeUrl(url) {
91
+ return this.dropTags(spec(["r", url]));
92
+ }
77
93
  validate() {
78
94
  super.validate();
79
95
  if (!this.extraTags.some(spec(["l"]))) {
@@ -1 +1 @@
1
- {"version":3,"file":"Label.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Label.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Label.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AACvC,OAAO,EACL,KAAK,EACL,WAAW,EACX,OAAO,EACP,SAAS,EACT,OAAO,EACP,SAAS,EACT,SAAS,EACT,OAAO,EACP,UAAU,GACX,MAAM,gBAAgB,CAAA;AACvB,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,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,wCAAwC;AACxC,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,UAAU;QACR,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjD,CAAC;IAED,0DAA0D;IAC1D,MAAM,CAAC,SAAkB;QACvB,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;aAC7C,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;IAED,QAAQ;QACN,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjD,CAAC;IAED,OAAO;QACL,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjD,CAAC;IAED,SAAS;QACP,OAAO,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACrD,CAAC;IAED,MAAM;QACJ,OAAO,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACnD,CAAC;IAED,IAAI;QACF,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjD,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,WAAwB;IACvD,6EAA6E;IAC7E,gFAAgF;IACtE,KAAK,CAAC,YAAY;QAC1B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACvB,CAAC;IAED,yEAAyE;IACzE,QAAQ,CAAC,IAAY,EAAE,SAAiB;QACtC,KAAK,MAAM,GAAG,IAAI;YAChB,CAAC,GAAG,EAAE,SAAS,CAAC;YAChB,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC;SACvB,EAAE,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,wEAAwE;IACxE,WAAW,CAAC,IAAY,EAAE,SAAiB;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;QAE3C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IACrC,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;IACnC,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,aAAa,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAA;QAEhB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,UAAU;IAC9B,YAAY;QACpB,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAA;IAC1D,CAAC;CACF;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;IACnC,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;CAClB,CAAC,CAAA"}
@@ -16,7 +16,7 @@ export declare class ProfileReader extends EventReader {
16
16
  banner(): Maybe<string>;
17
17
  picture(): Maybe<string>;
18
18
  website(): Maybe<string>;
19
- display(fallback?: string): string;
19
+ display(): string;
20
20
  }
21
21
  export declare class ProfileWriter extends EventWriter<ProfileReader> {
22
22
  values: Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Profile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AAExC,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;AAEhD,eAAO,MAAM,UAAU,GAAI,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,KAAG,KAAK,CAAC,MAAM,CAUzE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,WAI3C,CAAA;AAGD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAK;IAEzC,KAAK;IAUL,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;IAIrB,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAItB,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAItB,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAItB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAIvB,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAIxB,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAIxB,OAAO,CAAC,QAAQ,SAAK;CAOtB;AAED,qBAAa,aAAc,SAAQ,WAAW,CAAC,aAAa,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAK;gBAEpB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa;IAMtE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMlC,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAMtB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAMtB,SAAS,CAAC,MAAM,EAAE,MAAM;IAMxB,UAAU,CAAC,OAAO,EAAE,MAAM;IAM1B,UAAU,CAAC,OAAO,EAAE,MAAM;IAM1B,aAAa;CAGd;AAED,qBAAa,YAAa,SAAQ,UAAU;IAC1C,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,OAAO,yDAKlB,CAAA"}
1
+ {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Profile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AAExC,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;AAEhD,eAAO,MAAM,UAAU,GAAI,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,KAAG,KAAK,CAAC,MAAM,CAUzE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,WAI3C,CAAA;AAGD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAK;IAEzC,KAAK;IAUL,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;IAIrB,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAItB,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAItB,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAItB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAIvB,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAIxB,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAIxB,OAAO;CAKR;AAED,qBAAa,aAAc,SAAQ,WAAW,CAAC,aAAa,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAK;gBAEpB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa;IAMtE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMlC,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAMtB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAMtB,SAAS,CAAC,MAAM,EAAE,MAAM;IAMxB,UAAU,CAAC,OAAO,EAAE,MAAM;IAM1B,UAAU,CAAC,OAAO,EAAE,MAAM;IAM1B,aAAa;CAGd;AAED,qBAAa,YAAa,SAAQ,UAAU;IAC1C,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,OAAO,yDAKlB,CAAA"}
@@ -50,11 +50,9 @@ export class ProfileReader extends EventReader {
50
50
  website() {
51
51
  return this.values.website;
52
52
  }
53
- display(fallback = "") {
53
+ display() {
54
54
  const name = this.name();
55
- if (name)
56
- return ellipsize(name, 60).trim();
57
- return displayPubkey(this.event.pubkey).trim() || fallback.trim();
55
+ return name ? ellipsize(name, 60).trim() : displayPubkey(this.event.pubkey);
58
56
  }
59
57
  }
60
58
  export class ProfileWriter extends EventWriter {
@@ -1 +1 @@
1
- {"version":3,"file":"Profile.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Profile.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Profile.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { Maybe } from "@welshman/lib";
2
1
  import type { TrustedEvent } from "@welshman/util";
3
2
  import { EventReader } from "../core/EventReader.js";
4
3
  import { EventWriter } from "../core/EventWriter.js";
@@ -9,7 +8,7 @@ export declare class RepostReader extends EventReader {
9
8
  eventAddress(): string | undefined;
10
9
  pubkey(): string | undefined;
11
10
  eventKind(): number | undefined;
12
- repostedEvent(): Maybe<TrustedEvent>;
11
+ repostedEvent(): TrustedEvent | undefined;
13
12
  }
14
13
  export declare class RepostWriter extends EventWriter<RepostReader> {
15
14
  setEvent(event: TrustedEvent): this;
@@ -1 +1 @@
1
- {"version":3,"file":"Repost.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Repost.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AAaxC,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;AAO3C,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO;IAIP,YAAY;IAIZ,MAAM;IAKN,SAAS;IAKT,aAAa,IAC6B,KAAK,CAAC,YAAY,CAAC;CAE9D;AAED,qBAAa,YAAa,SAAQ,WAAW,CAAC,YAAY,CAAC;IAEzD,QAAQ,CAAC,KAAK,EAAE,YAAY;IA+B5B,QAAQ;CAOT;AAED,qBAAa,WAAY,SAAQ,UAAU;IACzC,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,MAAM,sDAKjB,CAAA;AAEF,eAAO,MAAM,aAAa,sDAKxB,CAAA"}
1
+ {"version":3,"file":"Repost.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Repost.ts"],"names":[],"mappings":"AAgBA,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;AAc3C,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO;IAIP,YAAY;IAIZ,MAAM;IAKN,SAAS;IAMT,aAAa;CAMd;AAED,qBAAa,YAAa,SAAQ,WAAW,CAAC,YAAY,CAAC;IAEzD,QAAQ,CAAC,KAAK,EAAE,YAAY;IA+B5B,QAAQ;CAyCT;AAED,qBAAa,WAAY,SAAQ,UAAU;IACzC,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,MAAM,sDAKjB,CAAA;AAEF,eAAO,MAAM,aAAa,sDAKxB,CAAA"}