@welshman/app 0.12.6 → 0.13.1

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 (111) hide show
  1. package/dist/app/src/plugins/base.d.ts +17 -23
  2. package/dist/app/src/plugins/base.d.ts.map +1 -1
  3. package/dist/app/src/plugins/base.js +23 -34
  4. package/dist/app/src/plugins/base.js.map +1 -1
  5. package/dist/app/src/plugins/plaintext.d.ts +6 -2
  6. package/dist/app/src/plugins/plaintext.d.ts.map +1 -1
  7. package/dist/app/src/plugins/plaintext.js +34 -14
  8. package/dist/app/src/plugins/plaintext.js.map +1 -1
  9. package/dist/app/src/plugins/publisher.d.ts +11 -6
  10. package/dist/app/src/plugins/publisher.d.ts.map +1 -1
  11. package/dist/app/src/plugins/publisher.js +111 -76
  12. package/dist/app/src/plugins/publisher.js.map +1 -1
  13. package/dist/app/src/plugins/wraps.d.ts +5 -1
  14. package/dist/app/src/plugins/wraps.d.ts.map +1 -1
  15. package/dist/app/src/plugins/wraps.js +6 -10
  16. package/dist/app/src/plugins/wraps.js.map +1 -1
  17. package/dist/app/src/policy.d.ts.map +1 -1
  18. package/dist/app/src/policy.js +4 -1
  19. package/dist/app/src/policy.js.map +1 -1
  20. package/dist/app/src/user.d.ts +2 -2
  21. package/dist/app/src/user.d.ts.map +1 -1
  22. package/dist/app/src/user.js.map +1 -1
  23. package/dist/domain/src/core/ListWriter.d.ts +6 -6
  24. package/dist/domain/src/index.d.ts +1 -0
  25. package/dist/domain/src/index.d.ts.map +1 -1
  26. package/dist/domain/src/index.js +1 -0
  27. package/dist/domain/src/index.js.map +1 -1
  28. package/dist/domain/src/kinds/Bolt12Offer.d.ts.map +1 -1
  29. package/dist/domain/src/kinds/Bolt12Offer.js +10 -9
  30. package/dist/domain/src/kinds/Bolt12Offer.js.map +1 -1
  31. package/dist/domain/src/kinds/Bolt12Zap.d.ts +6 -11
  32. package/dist/domain/src/kinds/Bolt12Zap.d.ts.map +1 -1
  33. package/dist/domain/src/kinds/Bolt12Zap.js +77 -105
  34. package/dist/domain/src/kinds/Bolt12Zap.js.map +1 -1
  35. package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts +2 -0
  36. package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts.map +1 -1
  37. package/dist/domain/src/kinds/Bolt12ZapIntent.js +31 -20
  38. package/dist/domain/src/kinds/Bolt12ZapIntent.js.map +1 -1
  39. package/dist/domain/src/kinds/RoomCreateInvite.d.ts +17 -0
  40. package/dist/domain/src/kinds/RoomCreateInvite.d.ts.map +1 -0
  41. package/dist/domain/src/kinds/RoomCreateInvite.js +36 -0
  42. package/dist/domain/src/kinds/RoomCreateInvite.js.map +1 -0
  43. package/dist/feeds/src/request.d.ts.map +1 -1
  44. package/dist/feeds/src/request.js +14 -5
  45. package/dist/feeds/src/request.js.map +1 -1
  46. package/dist/lib/src/TaskQueue.d.ts.map +1 -1
  47. package/dist/lib/src/TaskQueue.js +8 -2
  48. package/dist/lib/src/TaskQueue.js.map +1 -1
  49. package/dist/net/src/policy.d.ts.map +1 -1
  50. package/dist/net/src/policy.js +11 -3
  51. package/dist/net/src/policy.js.map +1 -1
  52. package/dist/net/src/repository.d.ts +18 -15
  53. package/dist/net/src/repository.d.ts.map +1 -1
  54. package/dist/net/src/repository.js +69 -78
  55. package/dist/net/src/repository.js.map +1 -1
  56. package/dist/net/src/wrapManager.d.ts +0 -2
  57. package/dist/net/src/wrapManager.d.ts.map +1 -1
  58. package/dist/net/src/wrapManager.js +8 -23
  59. package/dist/net/src/wrapManager.js.map +1 -1
  60. package/dist/signer/src/index.d.ts +1 -0
  61. package/dist/signer/src/index.d.ts.map +1 -1
  62. package/dist/signer/src/index.js +1 -0
  63. package/dist/signer/src/index.js.map +1 -1
  64. package/dist/signer/src/nip59.d.ts +13 -6
  65. package/dist/signer/src/nip59.d.ts.map +1 -1
  66. package/dist/signer/src/nip59.js +38 -19
  67. package/dist/signer/src/nip59.js.map +1 -1
  68. package/dist/signer/src/queue.d.ts +21 -0
  69. package/dist/signer/src/queue.d.ts.map +1 -0
  70. package/dist/signer/src/queue.js +40 -0
  71. package/dist/signer/src/queue.js.map +1 -0
  72. package/dist/signer/src/signers/nip01.d.ts +14 -2
  73. package/dist/signer/src/signers/nip01.d.ts.map +1 -1
  74. package/dist/signer/src/signers/nip01.js +6 -2
  75. package/dist/signer/src/signers/nip01.js.map +1 -1
  76. package/dist/signer/src/signers/nip07.d.ts +9 -9
  77. package/dist/signer/src/signers/nip07.d.ts.map +1 -1
  78. package/dist/signer/src/signers/nip07.js +15 -27
  79. package/dist/signer/src/signers/nip07.js.map +1 -1
  80. package/dist/signer/src/signers/nip46.d.ts +7 -3
  81. package/dist/signer/src/signers/nip46.d.ts.map +1 -1
  82. package/dist/signer/src/signers/nip46.js +12 -8
  83. package/dist/signer/src/signers/nip46.js.map +1 -1
  84. package/dist/signer/src/signers/nip55.d.ts +7 -7
  85. package/dist/signer/src/signers/nip55.d.ts.map +1 -1
  86. package/dist/signer/src/signers/nip55.js +33 -40
  87. package/dist/signer/src/signers/nip55.js.map +1 -1
  88. package/dist/signer/src/util.d.ts +27 -15
  89. package/dist/signer/src/util.d.ts.map +1 -1
  90. package/dist/signer/src/util.js +47 -14
  91. package/dist/signer/src/util.js.map +1 -1
  92. package/dist/store/src/repository.d.ts +5 -0
  93. package/dist/store/src/repository.d.ts.map +1 -1
  94. package/dist/store/src/repository.js +115 -96
  95. package/dist/store/src/repository.js.map +1 -1
  96. package/dist/util/src/Bolt12.d.ts.map +1 -1
  97. package/dist/util/src/Bolt12.js +11 -8
  98. package/dist/util/src/Bolt12.js.map +1 -1
  99. package/dist/util/src/Events.d.ts +1 -0
  100. package/dist/util/src/Events.d.ts.map +1 -1
  101. package/dist/util/src/Events.js +10 -1
  102. package/dist/util/src/Events.js.map +1 -1
  103. package/dist/util/src/Kinds.d.ts +1 -0
  104. package/dist/util/src/Kinds.d.ts.map +1 -1
  105. package/dist/util/src/Kinds.js +1 -0
  106. package/dist/util/src/Kinds.js.map +1 -1
  107. package/dist/util/src/Lightning.d.ts +1 -0
  108. package/dist/util/src/Lightning.d.ts.map +1 -1
  109. package/dist/util/src/Lightning.js +1 -0
  110. package/dist/util/src/Lightning.js.map +1 -1
  111. package/package.json +15 -15
@@ -1,20 +1,22 @@
1
1
  import { uniq, spec } from "@welshman/lib";
2
- import { BOLT12_OFFER, canonicalBolt12, indexers, isBolt12Offer, matchTags, tagSpec, tagValueMatcher, tagValues, } from "@welshman/util";
2
+ import { BOLT12_OFFER, canonicalBolt12, indexers, isBolt12Offer, isCanonicalBolt12Offer, tagSpec, tagValueMatcher, 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
  const offerSpec = tagSpec("offer", isBolt12Offer, canonicalBolt12);
8
- const isCanonicalBolt12Offer = (offer = "") => isBolt12Offer(offer) && offer === canonicalBolt12(offer);
8
+ // NIP-B1 requires every offer tag to be canonical, and `offers` drops the ones that are not
9
+ const offersAreCanonical = (tags) => {
10
+ const offerTags = tags.filter(spec(["offer"]));
11
+ return offerTags.length > 0 && offerTags.every(tag => isCanonicalBolt12Offer(tag[1]));
12
+ };
9
13
  // NIP-B1 kind-10058 BOLT12 offer announcement.
10
14
  export class Bolt12OfferReader extends EventReader {
11
15
  offers() {
12
16
  return uniq(tagValues(offerSpec, this.tags()));
13
17
  }
14
- // NIP-B1 asks every offer tag to be canonical, where `offers` drops the ones that are not.
15
18
  offersAreCanonical() {
16
- const tags = this.tags().filter(spec(["offer"]));
17
- return tags.length > 0 && tags.every(tag => isCanonicalBolt12Offer(tag[1]));
19
+ return offersAreCanonical(this.tags());
18
20
  }
19
21
  }
20
22
  export class Bolt12OfferWriter extends EventWriter {
@@ -30,12 +32,11 @@ export class Bolt12OfferWriter extends EventWriter {
30
32
  }
31
33
  validate() {
32
34
  super.validate();
33
- const tags = this.extraTags.filter(spec(["offer"]));
34
- if (tags.length === 0) {
35
+ if (!this.extraTags.some(spec(["offer"]))) {
35
36
  throw new Error("Bolt12Offer requires at least one offer");
36
37
  }
37
- if (tags.length > matchTags(offerSpec, this.extraTags).length) {
38
- throw new Error("Bolt12Offer refuses an offer that is not a BOLT12 offer");
38
+ if (!offersAreCanonical(this.extraTags)) {
39
+ throw new Error("Bolt12Offer refuses an offer that is not a BOLT12 offer in canonical form");
39
40
  }
40
41
  }
41
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Bolt12Offer.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12Offer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Bolt12Offer.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/Bolt12Offer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,aAAa,EACb,sBAAsB,EACtB,OAAO,EACP,eAAe,EACf,SAAS,GACV,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,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAA;AAElE,4FAA4F;AAC5F,MAAM,kBAAkB,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAE9C,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACvF,CAAC,CAAA;AAED,+CAA+C;AAC/C,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,kBAAkB;QAChB,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,WAA8B;IACnE,QAAQ,CAAC,KAAa;QACpB,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;QAExC,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IAC3F,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,SAAS,CAAC,MAAgB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAC3C,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1D,CAAA;IACH,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAA;QAEhB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,8FAA8F;IACpF,YAAY;QACpB,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC7C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;IACzC,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,gBAAgB;CACxB,CAAC,CAAA"}
@@ -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(): TrustedEvent | undefined;
48
- offer(): TrustedEvent | undefined;
47
+ intent(): SignedEvent | undefined;
48
+ offer(): SignedEvent | undefined;
49
49
  offers(): string[];
50
50
  /**
51
- * Runs NIP-B1 validation as far as nostr reaches: both embedded signatures, the structure
52
- * of the zap and its intent, that the zap repeats what the payer signed, and that the
53
- * recipient authored the announcement. Returns undefined when any of that fails.
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 isWellFormed;
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,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;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;AA4BD;;;;;;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;;;;;OAKG;IACH,QAAQ,IAAI,cAAc,GAAG,SAAS;IAsCtC,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;CAG1B;AAED,qBAAa,eAAgB,SAAQ,WAAW,CAAC,eAAe,CAAC;IAE/D,SAAS,CAAC,MAAM,EAAE,WAAW;IAU7B,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKtB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,UAAU;IAIV;;;OAGG;cACa,YAAY;IAQ5B,QAAQ;CAwCT;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
+ {"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 { 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";
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 { Bolt12ZapIntentReader } from "./Bolt12ZapIntent.js";
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
- 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;
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 parseEmbedded(tagValue(tagSpec("description"), this.tags()), BOLT12_ZAP_INTENT);
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 parseEmbedded(tagValue(tagSpec("offer_event"), this.tags()), BOLT12_OFFER);
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 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.
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 intent = this.intent();
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 (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
- }
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
- // 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;
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(spec(["description"]))
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 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");
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 settles = proof &&
229
- getBolt12ZapPaymentHash({
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":"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"}
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":"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"}
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, isMsats, isReplaceable, kindTags, makeBolt12PayerNote, makeBolt12ZapId, msatsTags, tagSpec, tagValue, } from "@welshman/util";
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 targetKeys = ["e", "a", "k"];
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(tag => targetKeys.includes(tag[0])).addTags(target, [
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(tag => targetKeys.includes(tag[0]));
94
+ return this.dropTags(isTargetTag);
74
95
  }
75
96
  validate() {
76
97
  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");
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":"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"}
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"}
@@ -0,0 +1,17 @@
1
+ import { EventReader } from "../core/EventReader.js";
2
+ import { EventWriter } from "../core/EventWriter.js";
3
+ import { EventQuery } from "../core/EventQuery.js";
4
+ import { KindFactory } from "../core/Kind.js";
5
+ export declare class RoomCreateInviteReader extends EventReader {
6
+ code(): string | undefined;
7
+ }
8
+ export declare class RoomCreateInviteWriter extends EventWriter<RoomCreateInviteReader> {
9
+ readonly requiresRelays = true;
10
+ setCode(code: string): this;
11
+ validate(): void;
12
+ }
13
+ export declare class RoomCreateInviteQuery extends EventQuery {
14
+ protected renderRoutes(): never[];
15
+ }
16
+ export declare const RoomCreateInvite: KindFactory<RoomCreateInviteReader, RoomCreateInviteWriter, RoomCreateInviteQuery>;
17
+ //# sourceMappingURL=RoomCreateInvite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoomCreateInvite.d.ts","sourceRoot":"","sources":["../../../../../domain/src/kinds/RoomCreateInvite.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,sBAAuB,SAAQ,WAAW;IACrD,IAAI;CAGL;AAED,qBAAa,sBAAuB,SAAQ,WAAW,CAAC,sBAAsB,CAAC;IAC7E,QAAQ,CAAC,cAAc,QAAO;IAE9B,OAAO,CAAC,IAAI,EAAE,MAAM;IAIpB,QAAQ;CAOT;AAED,qBAAa,qBAAsB,SAAQ,UAAU;IACnD,SAAS,CAAC,YAAY;CAGvB;AAED,eAAO,MAAM,gBAAgB,oFAK3B,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { spec } from "@welshman/lib";
2
+ import { ROOM_CREATE_INVITE, 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
+ // NIP-29 kind-9009 create-invite op. A join request carrying the "code" as its claim is let in.
8
+ export class RoomCreateInviteReader extends EventReader {
9
+ code() {
10
+ return tagValue(tagSpec("code"), this.event.tags);
11
+ }
12
+ }
13
+ export class RoomCreateInviteWriter extends EventWriter {
14
+ requiresRelays = true;
15
+ setCode(code) {
16
+ return this.dropTags(spec(["code"])).addTags(["code", code]);
17
+ }
18
+ validate() {
19
+ super.validate();
20
+ if (!this.roomTag) {
21
+ throw new Error("RoomCreateInvite requires a room");
22
+ }
23
+ }
24
+ }
25
+ export class RoomCreateInviteQuery extends EventQuery {
26
+ renderRoutes() {
27
+ return [];
28
+ }
29
+ }
30
+ export const RoomCreateInvite = new KindFactory({
31
+ kind: ROOM_CREATE_INVITE,
32
+ reader: RoomCreateInviteReader,
33
+ writer: RoomCreateInviteWriter,
34
+ query: RoomCreateInviteQuery,
35
+ });
36
+ //# sourceMappingURL=RoomCreateInvite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoomCreateInvite.js","sourceRoot":"","sources":["../../../../../domain/src/kinds/RoomCreateInvite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAClC,OAAO,EAAC,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AACpE,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,gGAAgG;AAChG,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACrD,IAAI;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACnD,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,WAAmC;IACpE,cAAc,GAAG,IAAI,CAAA;IAE9B,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAA;QAEhB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IACzC,YAAY;QACpB,OAAO,EAAE,CAAA;IACX,CAAC;CACF;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,WAAW,CAAC;IAC9C,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,sBAAsB;IAC9B,KAAK,EAAE,qBAAqB;CAC7B,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../../feeds/src/request.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EAIN,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,wCA0DpB,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
+ {"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
- promises.push(...(await getFilterSelections(filters, router)).flatMap(({ relays, filters }) => request({
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
  })));