@welshman/app 0.12.6 → 0.13.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/plugins/base.d.ts +17 -23
- package/dist/app/src/plugins/base.d.ts.map +1 -1
- package/dist/app/src/plugins/base.js +23 -34
- package/dist/app/src/plugins/base.js.map +1 -1
- package/dist/app/src/plugins/plaintext.d.ts +6 -2
- package/dist/app/src/plugins/plaintext.d.ts.map +1 -1
- package/dist/app/src/plugins/plaintext.js +34 -14
- package/dist/app/src/plugins/plaintext.js.map +1 -1
- package/dist/app/src/plugins/publisher.d.ts +9 -5
- package/dist/app/src/plugins/publisher.d.ts.map +1 -1
- package/dist/app/src/plugins/publisher.js +108 -75
- package/dist/app/src/plugins/publisher.js.map +1 -1
- package/dist/app/src/plugins/wraps.d.ts +5 -1
- package/dist/app/src/plugins/wraps.d.ts.map +1 -1
- package/dist/app/src/plugins/wraps.js +6 -10
- package/dist/app/src/plugins/wraps.js.map +1 -1
- package/dist/app/src/policy.d.ts.map +1 -1
- package/dist/app/src/policy.js +4 -1
- package/dist/app/src/policy.js.map +1 -1
- package/dist/app/src/user.d.ts +2 -2
- package/dist/app/src/user.d.ts.map +1 -1
- package/dist/app/src/user.js.map +1 -1
- package/dist/domain/src/core/ListWriter.d.ts +6 -6
- package/dist/domain/src/kinds/Bolt12Offer.d.ts.map +1 -1
- package/dist/domain/src/kinds/Bolt12Offer.js +10 -9
- package/dist/domain/src/kinds/Bolt12Offer.js.map +1 -1
- package/dist/domain/src/kinds/Bolt12Zap.d.ts +6 -11
- package/dist/domain/src/kinds/Bolt12Zap.d.ts.map +1 -1
- package/dist/domain/src/kinds/Bolt12Zap.js +77 -105
- package/dist/domain/src/kinds/Bolt12Zap.js.map +1 -1
- package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts +2 -0
- package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts.map +1 -1
- package/dist/domain/src/kinds/Bolt12ZapIntent.js +31 -20
- package/dist/domain/src/kinds/Bolt12ZapIntent.js.map +1 -1
- package/dist/feeds/src/request.d.ts.map +1 -1
- package/dist/feeds/src/request.js +14 -5
- package/dist/feeds/src/request.js.map +1 -1
- package/dist/lib/src/TaskQueue.d.ts.map +1 -1
- package/dist/lib/src/TaskQueue.js +8 -2
- package/dist/lib/src/TaskQueue.js.map +1 -1
- package/dist/net/src/policy.d.ts.map +1 -1
- package/dist/net/src/policy.js +11 -3
- package/dist/net/src/policy.js.map +1 -1
- package/dist/net/src/repository.d.ts +18 -15
- package/dist/net/src/repository.d.ts.map +1 -1
- package/dist/net/src/repository.js +69 -78
- package/dist/net/src/repository.js.map +1 -1
- package/dist/net/src/wrapManager.d.ts +0 -2
- package/dist/net/src/wrapManager.d.ts.map +1 -1
- package/dist/net/src/wrapManager.js +8 -23
- package/dist/net/src/wrapManager.js.map +1 -1
- package/dist/signer/src/index.d.ts +1 -0
- package/dist/signer/src/index.d.ts.map +1 -1
- package/dist/signer/src/index.js +1 -0
- package/dist/signer/src/index.js.map +1 -1
- package/dist/signer/src/nip59.d.ts +13 -6
- package/dist/signer/src/nip59.d.ts.map +1 -1
- package/dist/signer/src/nip59.js +38 -19
- package/dist/signer/src/nip59.js.map +1 -1
- package/dist/signer/src/queue.d.ts +21 -0
- package/dist/signer/src/queue.d.ts.map +1 -0
- package/dist/signer/src/queue.js +40 -0
- package/dist/signer/src/queue.js.map +1 -0
- package/dist/signer/src/signers/nip01.d.ts +14 -2
- package/dist/signer/src/signers/nip01.d.ts.map +1 -1
- package/dist/signer/src/signers/nip01.js +6 -2
- package/dist/signer/src/signers/nip01.js.map +1 -1
- package/dist/signer/src/signers/nip07.d.ts +9 -9
- package/dist/signer/src/signers/nip07.d.ts.map +1 -1
- package/dist/signer/src/signers/nip07.js +15 -27
- package/dist/signer/src/signers/nip07.js.map +1 -1
- package/dist/signer/src/signers/nip46.d.ts +7 -3
- package/dist/signer/src/signers/nip46.d.ts.map +1 -1
- package/dist/signer/src/signers/nip46.js +12 -8
- package/dist/signer/src/signers/nip46.js.map +1 -1
- package/dist/signer/src/signers/nip55.d.ts +7 -7
- package/dist/signer/src/signers/nip55.d.ts.map +1 -1
- package/dist/signer/src/signers/nip55.js +33 -40
- package/dist/signer/src/signers/nip55.js.map +1 -1
- package/dist/signer/src/util.d.ts +27 -15
- package/dist/signer/src/util.d.ts.map +1 -1
- package/dist/signer/src/util.js +47 -14
- package/dist/signer/src/util.js.map +1 -1
- package/dist/store/src/repository.d.ts +5 -0
- package/dist/store/src/repository.d.ts.map +1 -1
- package/dist/store/src/repository.js +115 -96
- package/dist/store/src/repository.js.map +1 -1
- package/dist/util/src/Bolt12.d.ts.map +1 -1
- package/dist/util/src/Bolt12.js +11 -8
- package/dist/util/src/Bolt12.js.map +1 -1
- package/dist/util/src/Events.d.ts +1 -0
- package/dist/util/src/Events.d.ts.map +1 -1
- package/dist/util/src/Events.js +10 -1
- package/dist/util/src/Events.js.map +1 -1
- package/dist/util/src/Lightning.d.ts +1 -0
- package/dist/util/src/Lightning.d.ts.map +1 -1
- package/dist/util/src/Lightning.js +1 -0
- package/dist/util/src/Lightning.js.map +1 -1
- package/package.json +15 -15
|
@@ -44,21 +44,16 @@ export declare class Bolt12ZapReader extends EventReader {
|
|
|
44
44
|
targetKind(): number | undefined;
|
|
45
45
|
target(): string | undefined;
|
|
46
46
|
targetsProfile(): boolean;
|
|
47
|
-
intent():
|
|
48
|
-
offer():
|
|
47
|
+
intent(): SignedEvent | undefined;
|
|
48
|
+
offer(): SignedEvent | undefined;
|
|
49
49
|
offers(): string[];
|
|
50
50
|
/**
|
|
51
|
-
* Runs NIP-B1 validation
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* `getBolt12ZapPaymentHash` is the lightning half, and it reads the claim this returns.
|
|
51
|
+
* Runs NIP-B1's nostr-side validation, including that the payer signed both the zap and
|
|
52
|
+
* its intent, and returns undefined on failure. `getBolt12ZapPaymentHash` is the lightning
|
|
53
|
+
* half, and it reads the claim this returns.
|
|
55
54
|
*/
|
|
56
55
|
validate(): Bolt12ZapClaim | undefined;
|
|
57
|
-
private
|
|
58
|
-
private payerIsAuthor;
|
|
59
|
-
private intentIsWellFormed;
|
|
60
|
-
private matchesIntent;
|
|
61
|
-
private offerIsAuthorized;
|
|
56
|
+
private isSignedByPayer;
|
|
62
57
|
}
|
|
63
58
|
export declare class Bolt12ZapWriter extends EventWriter<Bolt12ZapReader> {
|
|
64
59
|
setIntent(intent: SignedEvent): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bolt12Zap.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12Zap.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Bolt12Zap.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12Zap.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAe,WAAW,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3E,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;AAQ3C;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAgED;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC,uBAUzE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,cAAc,EAAE,EACxB,cAAa,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,GAAG,SAAmC,WAerF,CAAA;AAGD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,SAAS;IAKT,KAAK;IAKL,MAAM;IAIN,KAAK;IAIL,OAAO;IAIP,aAAa;IAIb,UAAU;IAKV,MAAM;IAKN,cAAc;IAKd,MAAM;IAKN,KAAK;IAKL,MAAM;IAMN;;;;OAIG;IACH,QAAQ,IAAI,cAAc,GAAG,SAAS;IAiBtC,OAAO,CAAC,eAAe;CAOxB;AAED,qBAAa,eAAgB,SAAQ,WAAW,CAAC,eAAe,CAAC;IAE/D,SAAS,CAAC,MAAM,EAAE,WAAW;IAS7B,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKtB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,UAAU;IAIV;;;OAGG;cACa,YAAY;IAQ5B,QAAQ;CAeT;AAED,qBAAa,cAAe,SAAQ,UAAU;IAE5C,QAAQ,CAAC,KAAK,EAAE,YAAY;IAO5B,UAAU,CAAC,MAAM,EAAE,MAAM;IAIzB,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,SAAS,+DAKpB,CAAA"}
|
|
@@ -1,31 +1,70 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BOLT12_OFFER, BOLT12_ZAP, BOLT12_ZAP_INTENT, addressTags, asSignedEvent, bolt12ProofPaysOffer, decodeBolt12PayerProof, getAddress, hexTags, inboxes, isBolt12PayerProof, isReplaceable, kindTags, makeBolt12PayerNote,
|
|
1
|
+
import { equals, 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, matchTags, msatsTags, tagMatcher, tagSpec, tagValue, tagValues, parseVerifiedEvent, } 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
|
import { Bolt12OfferReader } from "./Bolt12Offer.js";
|
|
8
|
-
import {
|
|
8
|
+
import { getBolt12ZapIntentError } from "./Bolt12ZapIntent.js";
|
|
9
9
|
// The tags NIP-B1 requires the zap event to repeat from the intent it embeds.
|
|
10
10
|
const intentKeys = ["p", "amount", "offer_event", "e", "a", "k"];
|
|
11
11
|
const countTags = (key, tags) => tags.filter(spec([key])).length;
|
|
12
12
|
// The zap and its intent agree on presence and values, so every value for a key has to match.
|
|
13
13
|
const agreesOn = (key, a, b) => {
|
|
14
14
|
const values = (tags) => tagValues(tagSpec(key), tags).sort();
|
|
15
|
-
|
|
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;
|
|
15
|
+
return equals(values(a), values(b));
|
|
27
16
|
};
|
|
28
17
|
const readOffer = (context, offer) => new Bolt12OfferReader(BOLT12_OFFER, context, offer);
|
|
18
|
+
// The first NIP-B1 rule a zap breaks whoever signs it, or the parts of its claim
|
|
19
|
+
const checkBolt12Zap = (context, { content, tags }) => {
|
|
20
|
+
const intent = parseVerifiedEvent(tagValue(tagSpec("description"), tags), BOLT12_ZAP_INTENT);
|
|
21
|
+
const offer = parseVerifiedEvent(tagValue(tagSpec("offer_event"), tags), BOLT12_OFFER);
|
|
22
|
+
const offerReader = offer && readOffer(context, offer);
|
|
23
|
+
const amount = tagValue(msatsTags("amount"), tags);
|
|
24
|
+
const proof = tagValue(tagSpec("proof"), tags);
|
|
25
|
+
const recipient = tagValue(hexTags("p"), tags);
|
|
26
|
+
const intentError = intent && getBolt12ZapIntentError(intent.tags);
|
|
27
|
+
const fail = (error) => ({ ok: false, error });
|
|
28
|
+
let check;
|
|
29
|
+
if (!intent || countTags("description", tags) !== 1) {
|
|
30
|
+
check = fail("Bolt12Zap requires the zap intent it was paid for");
|
|
31
|
+
}
|
|
32
|
+
else if (!recipient || countTags("p", tags) !== 1) {
|
|
33
|
+
check = fail("Bolt12Zap requires a recipient");
|
|
34
|
+
}
|
|
35
|
+
else if (!offerReader || countTags("offer_event", tags) !== 1) {
|
|
36
|
+
check = fail("Bolt12Zap requires the recipient's offer announcement");
|
|
37
|
+
}
|
|
38
|
+
else if (amount === undefined || amount <= 0) {
|
|
39
|
+
check = fail("Bolt12Zap requires a positive whole number of millisats");
|
|
40
|
+
}
|
|
41
|
+
else if (!proof || !isBolt12PayerProof(proof)) {
|
|
42
|
+
check = fail("Bolt12Zap requires a settled lnp payer proof");
|
|
43
|
+
}
|
|
44
|
+
else if (countTags("e", tags) + countTags("a", tags) > 1) {
|
|
45
|
+
check = fail("Bolt12Zap names at most one event");
|
|
46
|
+
}
|
|
47
|
+
else if (intentError) {
|
|
48
|
+
check = fail(`Bolt12Zap embeds an invalid intent: ${intentError}`);
|
|
49
|
+
}
|
|
50
|
+
else if (content !== intent.content || !intentKeys.every(k => agreesOn(k, tags, intent.tags))) {
|
|
51
|
+
check = fail("Bolt12Zap has to repeat the content and tags of the intent it was paid for");
|
|
52
|
+
}
|
|
53
|
+
else if (!offerReader.offersAreCanonical()) {
|
|
54
|
+
check = fail("Bolt12Zap requires an announcement whose offers are canonical");
|
|
55
|
+
}
|
|
56
|
+
else if (offerReader.event.pubkey !== recipient ||
|
|
57
|
+
offerReader.event.created_at > intent.created_at) {
|
|
58
|
+
check = fail("Bolt12Zap requires the recipient's announcement from before the intent");
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
check = {
|
|
62
|
+
ok: true,
|
|
63
|
+
parts: { intent, offer: offerReader.event, offers: offerReader.offers(), amount, proof },
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return check;
|
|
67
|
+
};
|
|
29
68
|
/**
|
|
30
69
|
* The lightning half of NIP-B1 validation, which `Bolt12ZapReader.validate` leaves alone and
|
|
31
70
|
* `Bolt12ZapWriter.validate` runs before publishing:
|
|
@@ -94,11 +133,11 @@ export class Bolt12ZapReader extends EventReader {
|
|
|
94
133
|
}
|
|
95
134
|
// The intent the payer signed before paying. Verified here, since it arrives as JSON.
|
|
96
135
|
intent() {
|
|
97
|
-
return
|
|
136
|
+
return parseVerifiedEvent(tagValue(tagSpec("description"), this.tags()), BOLT12_ZAP_INTENT);
|
|
98
137
|
}
|
|
99
138
|
// The recipient's announcement of the offer that was paid, verified.
|
|
100
139
|
offer() {
|
|
101
|
-
return
|
|
140
|
+
return parseVerifiedEvent(tagValue(tagSpec("offer_event"), this.tags()), BOLT12_OFFER);
|
|
102
141
|
}
|
|
103
142
|
// The canonical raw offers the payer proof may have paid.
|
|
104
143
|
offers() {
|
|
@@ -106,83 +145,34 @@ export class Bolt12ZapReader extends EventReader {
|
|
|
106
145
|
return offer ? readOffer(this.context, offer).offers() : [];
|
|
107
146
|
}
|
|
108
147
|
/**
|
|
109
|
-
* Runs NIP-B1 validation
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* `getBolt12ZapPaymentHash` is the lightning half, and it reads the claim this returns.
|
|
148
|
+
* Runs NIP-B1's nostr-side validation, including that the payer signed both the zap and
|
|
149
|
+
* its intent, and returns undefined on failure. `getBolt12ZapPaymentHash` is the lightning
|
|
150
|
+
* half, and it reads the claim this returns.
|
|
113
151
|
*/
|
|
114
152
|
validate() {
|
|
115
|
-
const
|
|
116
|
-
const offer = this.offer();
|
|
117
|
-
const amount = this.amount();
|
|
118
|
-
const proof = this.proof();
|
|
153
|
+
const check = checkBolt12Zap(this.context, { content: this.event.content, tags: this.tags() });
|
|
119
154
|
let claim;
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
}
|
|
155
|
+
if (check.ok && this.isSignedByPayer(check.parts.intent)) {
|
|
156
|
+
claim = {
|
|
157
|
+
...check.parts,
|
|
158
|
+
event: this.event,
|
|
159
|
+
target: this.target(),
|
|
160
|
+
payerNote: makeBolt12PayerNote(check.parts.intent.id),
|
|
161
|
+
};
|
|
142
162
|
}
|
|
143
163
|
return claim;
|
|
144
164
|
}
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
-
return (
|
|
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;
|
|
165
|
+
// Reads `P` raw, since `payer` would pass a malformed one off as an anonymous zap
|
|
166
|
+
isSignedByPayer(intent) {
|
|
167
|
+
const { pubkey } = this.event;
|
|
168
|
+
return (intent.pubkey === pubkey && matchTags(tagSpec("P"), this.tags()).every(t => t[1] === pubkey));
|
|
178
169
|
}
|
|
179
170
|
}
|
|
180
171
|
export class Bolt12ZapWriter extends EventWriter {
|
|
181
172
|
// Copies the tags NIP-B1 requires the zap and its intent to agree on.
|
|
182
173
|
setIntent(intent) {
|
|
183
174
|
const copied = matchTags(tagSpec(intentKeys), intent.tags);
|
|
184
|
-
return this.dropTags(
|
|
185
|
-
.dropTags(tag => intentKeys.includes(tag[0]))
|
|
175
|
+
return this.dropTags(tagMatcher(tagSpec(["description", ...intentKeys])))
|
|
186
176
|
.addTags(["description", JSON.stringify(asSignedEvent(intent))], ...copied)
|
|
187
177
|
.setContent(intent.content);
|
|
188
178
|
}
|
|
@@ -209,30 +199,12 @@ export class Bolt12ZapWriter extends EventWriter {
|
|
|
209
199
|
}
|
|
210
200
|
validate() {
|
|
211
201
|
super.validate();
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
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");
|
|
202
|
+
const check = checkBolt12Zap(this.context, { content: this.content, tags: this.extraTags });
|
|
203
|
+
if (!check.ok) {
|
|
204
|
+
throw new Error(check.error);
|
|
227
205
|
}
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
proof,
|
|
231
|
-
amount,
|
|
232
|
-
payerNote: makeBolt12PayerNote(intent.id),
|
|
233
|
-
offers: readOffer(this.context, offer).offers(),
|
|
234
|
-
});
|
|
235
|
-
if (!settles) {
|
|
206
|
+
const { intent, ...parts } = check.parts;
|
|
207
|
+
if (!getBolt12ZapPaymentHash({ ...parts, payerNote: makeBolt12PayerNote(intent.id) })) {
|
|
236
208
|
throw new Error("Bolt12Zap requires a settled lnp payer proof");
|
|
237
209
|
}
|
|
238
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bolt12Zap.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12Zap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"Bolt12Zap.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12Zap.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ import { EventWriter } from "../core/EventWriter.js";
|
|
|
4
4
|
import { EventQuery } from "../core/EventQuery.js";
|
|
5
5
|
import { KindFactory } from "../core/Kind.js";
|
|
6
6
|
import type { KindContext } from "../core/Kind.js";
|
|
7
|
+
/** The first NIP-B1 rule a zap intent's tags break, or undefined if they keep them all. */
|
|
8
|
+
export declare const getBolt12ZapIntentError: (tags: string[][]) => string | undefined;
|
|
7
9
|
export declare class Bolt12ZapIntentReader extends EventReader {
|
|
8
10
|
recipient(): string | undefined;
|
|
9
11
|
amount(): number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bolt12ZapIntent.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12ZapIntent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Bolt12ZapIntent.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12ZapIntent.ts"],"names":[],"mappings":"AAmBA,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;AAIhD,2FAA2F;AAC3F,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,EAAE,EAAE,uBAoBvD,CAAA;AAGD,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;IAM5B,UAAU;IAIV,QAAQ;CAST;AAED,qBAAa,oBAAqB,SAAQ,UAAU;IAElD,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,eAAe,iFAK1B,CAAA"}
|
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
import { spec } from "@welshman/lib";
|
|
2
|
-
import { BOLT12_ZAP_INTENT, addressTags, asSignedEvent, getAddress, hexTags, isBolt12ZapId,
|
|
2
|
+
import { BOLT12_OFFER, BOLT12_ZAP_INTENT, addressTags, asSignedEvent, getAddress, hexTags, isBolt12ZapId, isReplaceable, kindTags, makeBolt12PayerNote, makeBolt12ZapId, msatsTags, parseVerifiedEvent, tagMatcher, tagSpec, tagValue, } 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
|
-
const
|
|
7
|
+
const isTargetTag = tagMatcher(tagSpec(["e", "a", "k"]));
|
|
8
|
+
/** The first NIP-B1 rule a zap intent's tags break, or undefined if they keep them all. */
|
|
9
|
+
export const getBolt12ZapIntentError = (tags) => {
|
|
10
|
+
const count = (key) => tags.filter(spec([key])).length;
|
|
11
|
+
const amount = tagValue(msatsTags("amount"), tags);
|
|
12
|
+
const offer = parseVerifiedEvent(tagValue(tagSpec("offer_event"), tags), BOLT12_OFFER);
|
|
13
|
+
const zapId = tagValue(tagSpec("zap_id"), tags);
|
|
14
|
+
let error;
|
|
15
|
+
if (!tagValue(hexTags("p"), tags) || count("p") !== 1) {
|
|
16
|
+
error = "Bolt12ZapIntent requires a recipient";
|
|
17
|
+
}
|
|
18
|
+
else if (amount === undefined || amount <= 0) {
|
|
19
|
+
error = "Bolt12ZapIntent requires a positive whole number of millisats";
|
|
20
|
+
}
|
|
21
|
+
else if (!offer || count("offer_event") !== 1) {
|
|
22
|
+
error = "Bolt12ZapIntent requires the recipient's offer announcement";
|
|
23
|
+
}
|
|
24
|
+
else if (!zapId || !isBolt12ZapId(zapId)) {
|
|
25
|
+
error = "Bolt12ZapIntent requires a zap id of at least 128 bits of lowercase hex";
|
|
26
|
+
}
|
|
27
|
+
else if (count("e") + count("a") > 1) {
|
|
28
|
+
error = "Bolt12ZapIntent names at most one event";
|
|
29
|
+
}
|
|
30
|
+
return error;
|
|
31
|
+
};
|
|
8
32
|
// NIP-B1 kind-9737 zap intent, signed before payment and embedded in the kind-9736 zap.
|
|
9
33
|
export class Bolt12ZapIntentReader extends EventReader {
|
|
10
34
|
recipient() {
|
|
@@ -64,29 +88,16 @@ export class Bolt12ZapIntentWriter extends EventWriter {
|
|
|
64
88
|
// A regular event is tagged e, a replaceable one a, and NIP-B1 forbids both.
|
|
65
89
|
setEvent(event) {
|
|
66
90
|
const target = isReplaceable(event) ? ["a", getAddress(event)] : ["e", event.id];
|
|
67
|
-
return this.dropTags(
|
|
68
|
-
"k",
|
|
69
|
-
String(event.kind),
|
|
70
|
-
]);
|
|
91
|
+
return this.dropTags(isTargetTag).addTags(target, ["k", String(event.kind)]);
|
|
71
92
|
}
|
|
72
93
|
clearEvent() {
|
|
73
|
-
return this.dropTags(
|
|
94
|
+
return this.dropTags(isTargetTag);
|
|
74
95
|
}
|
|
75
96
|
validate() {
|
|
76
97
|
super.validate();
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
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");
|
|
98
|
+
const error = getBolt12ZapIntentError(this.extraTags);
|
|
99
|
+
if (error) {
|
|
100
|
+
throw new Error(error);
|
|
90
101
|
}
|
|
91
102
|
}
|
|
92
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bolt12ZapIntent.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12ZapIntent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAClC,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"Bolt12ZapIntent.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12ZapIntent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAClC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,aAAa,EACb,aAAa,EACb,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,OAAO,EACP,QAAQ,GACT,MAAM,gBAAgB,CAAA;AAEvB,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,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAExD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1D,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAA;IACtF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAC/C,IAAI,KAAyB,CAAA;IAE7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,KAAK,GAAG,sCAAsC,CAAA;IAChD,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,GAAG,+DAA+D,CAAA;IACzE,CAAC;SAAM,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,KAAK,GAAG,6DAA6D,CAAA;IACvE,CAAC;SAAM,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,KAAK,GAAG,yEAAyE,CAAA;IACnF,CAAC;SAAM,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,GAAG,yCAAyC,CAAA;IACnD,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,wFAAwF;AACxF,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD,SAAS;QACP,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED,kFAAkF;IAClF,MAAM;QACJ,OAAO,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,6EAA6E;IAC7E,UAAU;QACR,OAAO,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,KAAK;QACH,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,OAAO;QACL,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED,aAAa;QACX,OAAO,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,UAAU;QACR,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,mDAAmD;IACnD,SAAS;QACP,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAkC;IAC3E,YAAY,IAAY,EAAE,OAAoB,EAAE,MAA8B;QAC5E,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAE5B,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;IAED,YAAY,CAAC,SAAiB;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,QAAQ,CAAC,KAAK,GAAG,eAAe,EAAE;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,2EAA2E;IAC3E,aAAa,CAAC,KAAkB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAClD,aAAa;YACb,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACrC,CAAC,CAAA;IACJ,CAAC;IAED,6EAA6E;IAC7E,QAAQ,CAAC,KAAmB;QAC1B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;QAEhF,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAA;QAEhB,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAErD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,UAAU;IAClD,kFAAkF;IACxE,YAAY;QACpB,OAAO,EAAE,CAAA;IACX,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC;IAC7C,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE,oBAAoB;CAC5B,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../../feeds/src/request.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../../feeds/src/request.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EAKN,YAAY,EAMb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAc,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,UAAU,EAAsB,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAkB,OAAO,EAAE,cAAc,EAA0B,MAAM,eAAe,CAAA;AAE/F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,UAAU,CAAA;IAClB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,WAAW,GAAU,4EAS/B,kBAAkB,wCAqEpB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,UAAU,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAU,+CAM7B,gBAAgB,gCAWlB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;CACxC,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,uEAQ9B,iBAAiB,6EAuCnB,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { partition, now, nthEq, race, max, removeUndefined } from "@welshman/lib";
|
|
2
|
-
import { makeEvent, hexTags, relayTags, tagValues, RELAYS, indexers, relays, searchRelays, addMinimalFallbacks, } from "@welshman/util";
|
|
1
|
+
import { partition, now, nthEq, race, max, removeUndefined, pushToMapKey } from "@welshman/lib";
|
|
2
|
+
import { makeEvent, unionFilters, hexTags, relayTags, tagValues, RELAYS, indexers, relays, searchRelays, addMinimalFallbacks, } from "@welshman/util";
|
|
3
3
|
import { Nip01Signer } from "@welshman/signer";
|
|
4
4
|
import { getFilterSelections } from "./router.js";
|
|
5
5
|
import { LOCAL_RELAY_URL, Tracker, count, request, publish } from "@welshman/net";
|
|
@@ -23,13 +23,22 @@ export const requestPage = async ({ filters, router, onEvent, relays = [], track
|
|
|
23
23
|
}));
|
|
24
24
|
}
|
|
25
25
|
if (withoutSearch.length > 0) {
|
|
26
|
-
|
|
26
|
+
const filtersByRelay = new Map();
|
|
27
|
+
// A hub relay wins a slot in most author chunks, so what it is sent differs only in authors
|
|
28
|
+
for (const selection of await getFilterSelections(filters, router)) {
|
|
29
|
+
for (const relay of selection.relays) {
|
|
30
|
+
for (const filter of selection.filters) {
|
|
31
|
+
pushToMapKey(filtersByRelay, relay, filter);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
promises.push(...Array.from(filtersByRelay).map(([relay, relayFilters]) => request({
|
|
27
36
|
tracker,
|
|
28
37
|
signal,
|
|
29
38
|
context,
|
|
30
39
|
onEvent,
|
|
31
|
-
relays,
|
|
32
|
-
filters,
|
|
40
|
+
relays: [relay],
|
|
41
|
+
filters: unionFilters(relayFilters),
|
|
33
42
|
threshold: 0.5,
|
|
34
43
|
autoClose,
|
|
35
44
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../feeds/src/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,EAAC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../feeds/src/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskQueue.d.ts","sourceRoot":"","sources":["../../../../lib/src/TaskQueue.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,CAAC,IAAI,IAAI;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAA;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAA;CACrC,CAAA;AAED,qBAAa,SAAS,CAAC,IAAI;IAMb,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;IALpD,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAK;IACpC,KAAK,EAAE,IAAI,EAAE,CAAK;IAClB,QAAQ,UAAQ;IAChB,YAAY,UAAQ;gBAEC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAEpD,IAAI,CAAC,IAAI,EAAE,IAAI;IA+Bf,MAAM,CAAC,IAAI,EAAE,IAAI;IAIjB,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI;IAQ1C,OAAO;
|
|
1
|
+
{"version":3,"file":"TaskQueue.d.ts","sourceRoot":"","sources":["../../../../lib/src/TaskQueue.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,CAAC,IAAI,IAAI;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAA;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAA;CACrC,CAAA;AAED,qBAAa,SAAS,CAAC,IAAI;IAMb,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;IALpD,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAK;IACpC,KAAK,EAAE,IAAI,EAAE,CAAK;IAClB,QAAQ,UAAQ;IAChB,YAAY,UAAQ;gBAEC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAEpD,IAAI,CAAC,IAAI,EAAE,IAAI;IA+Bf,MAAM,CAAC,IAAI,EAAE,IAAI;IAIjB,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI;IAQ1C,OAAO;IAsCP,IAAI;IAIJ,KAAK;IAKL,KAAK;CAGN"}
|
|
@@ -48,7 +48,7 @@ export class TaskQueue {
|
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
50
|
this.isProcessing = true;
|
|
51
|
-
|
|
51
|
+
const drain = async () => {
|
|
52
52
|
if (this.isPaused) {
|
|
53
53
|
this.isProcessing = false;
|
|
54
54
|
}
|
|
@@ -69,7 +69,13 @@ export class TaskQueue {
|
|
|
69
69
|
this.process();
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
}
|
|
72
|
+
};
|
|
73
|
+
if (this.options.batchDelay > 0) {
|
|
74
|
+
setTimeout(drain, this.options.batchDelay);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
queueMicrotask(drain);
|
|
78
|
+
}
|
|
73
79
|
}
|
|
74
80
|
stop() {
|
|
75
81
|
this.isPaused = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskQueue.js","sourceRoot":"","sources":["../../../../lib/src/TaskQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAA;AASjC,MAAM,OAAO,SAAS;IAMC;IALrB,KAAK,GAA6B,EAAE,CAAA;IACpC,KAAK,GAAW,EAAE,CAAA;IAClB,QAAQ,GAAG,KAAK,CAAA;IAChB,YAAY,GAAG,KAAK,CAAA;IAEpB,YAAqB,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;IAAG,CAAC;IAExD,IAAI,CAAC,IAAU;QACb,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,OAAO,CAAA;QAElC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;YAElC,qFAAqF;YACrF,0FAA0F;YAC1F,wEAAwE;YACxE,IAAI,EAAE,GAAG,CAAC,CAAA;YACV,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;YAE1B,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;gBAE1B,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;oBAC5C,EAAE,GAAG,GAAG,CAAA;gBACV,CAAC;qBAAM,CAAC;oBACN,EAAE,GAAG,GAAG,GAAG,CAAC,CAAA;gBACd,CAAC;YACH,CAAC;YAED,6EAA6E;YAC7E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,IAAU;QACf,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC;IAED,SAAS,CAAC,UAAgC;QACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAE3B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7C,CAAC,CAAA;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAM;QACR,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAExB,
|
|
1
|
+
{"version":3,"file":"TaskQueue.js","sourceRoot":"","sources":["../../../../lib/src/TaskQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../net/src/policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,YAAY,EAAE,WAAW,EAAsB,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../net/src/policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,YAAY,EAAE,WAAW,EAAsB,MAAM,gBAAgB,CAAA;AAuBzF,OAAO,EAAC,MAAM,EAA6B,YAAY,EAAC,MAAM,aAAa,CAAA;AAI3E;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,eAqHpD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,eA0BtD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,QAAQ,MAAM,eAqBvD,CAAA;AAmBD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,eAuInD,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;IACnD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAA;CACzC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,uBAAuB,MAAM,QAAQ,MAAM,eAcxF,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAK/C,CAAA"}
|
package/dist/net/src/policy.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { on, ms, always, call, randomId, ago, now } from "@welshman/lib";
|
|
2
2
|
import { RELAY_JOIN, neverFilter } from "@welshman/util";
|
|
3
|
-
import { isClientAuth, isClientClose, isClientEvent, isClientReq, isClientCount, isClientNegOpen, isClientNegClose, ClientMessageType, copyPriority, isRelayOk, isRelayEose, isRelayClosed, isRelayNegErr, isRelayCount, matchReason, RelayReasonPrefix, } from "./message.js";
|
|
3
|
+
import { isClientAuth, isClientClose, isClientEvent, isClientReq, isClientCount, isClientNegOpen, isClientNegClose, ClientMessageType, copyPriority, isRelayOk, isRelayEose, isRelayEvent, isRelayNegMsg, isRelayClosed, isRelayNegErr, isRelayCount, matchReason, RelayReasonPrefix, } from "./message.js";
|
|
4
4
|
import { SocketStatus, SocketEvent } from "./socket.js";
|
|
5
5
|
import { AuthStatus, AuthStateEvent } from "./auth.js";
|
|
6
6
|
import { catchUpFilter } from "./util.js";
|
|
@@ -173,6 +173,12 @@ const PROBE_IDLE = 30;
|
|
|
173
173
|
const PROBE_TIMEOUT = 10;
|
|
174
174
|
// The longest a socket with work outstanding waits between attempts to reach its relay
|
|
175
175
|
const RECONNECT_MAX_DELAY = 300;
|
|
176
|
+
// The relay doing work for us, as opposed to greeting us, refusing us or complaining
|
|
177
|
+
const isAnswer = (message) => isRelayEvent(message) ||
|
|
178
|
+
isRelayEose(message) ||
|
|
179
|
+
isRelayOk(message) ||
|
|
180
|
+
isRelayCount(message) ||
|
|
181
|
+
isRelayNegMsg(message);
|
|
176
182
|
/**
|
|
177
183
|
* Owns a socket's lifecycle: closes it once nothing needs it, checks the relay is still there
|
|
178
184
|
* when something does, reopens it, and catches up on what it missed.
|
|
@@ -250,8 +256,10 @@ export const socketPolicyLifecycle = (socket) => {
|
|
|
250
256
|
on(socket, SocketEvent.Receive, (message) => {
|
|
251
257
|
lastActivity = now();
|
|
252
258
|
lastReceive = now();
|
|
253
|
-
//
|
|
254
|
-
|
|
259
|
+
// A relay that only greets us and drops us is not reachable, whatever it said
|
|
260
|
+
if (isAnswer(message)) {
|
|
261
|
+
attempts = 0;
|
|
262
|
+
}
|
|
255
263
|
// Any traffic at all proves the relay is there, so retire the probe
|
|
256
264
|
if (probeId) {
|
|
257
265
|
socket.send([ClientMessageType.Close, probeId]);
|