@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,4 +1,4 @@
1
- import { Emitter, remove, omit } from "@welshman/lib";
1
+ import { Emitter, remove, omit, pushToMapKey } from "@welshman/lib";
2
2
  export class WrapManager extends Emitter {
3
3
  options;
4
4
  _wrapIndex = new Map();
@@ -63,31 +63,16 @@ export class WrapManager extends Emitter {
63
63
  // Utils
64
64
  _add = (wrapItem) => {
65
65
  this._wrapIndex.set(wrapItem.id, wrapItem);
66
- this._addReference(this._rumorIndex, wrapItem.rumorId, wrapItem.id);
67
- };
68
- _addReference = (index, key, wrapId) => {
69
- const reference = index.get(key);
70
- if (reference) {
71
- reference.push(wrapId);
72
- }
73
- else {
74
- index.set(key, [wrapId]);
75
- }
66
+ pushToMapKey(this._rumorIndex, wrapItem.rumorId, wrapItem.id);
76
67
  };
77
68
  _remove = (wrapItem) => {
69
+ const wrapIds = remove(wrapItem.id, this._rumorIndex.get(wrapItem.rumorId) || []);
78
70
  this._wrapIndex.delete(wrapItem.id);
79
- this._removeReference(this._rumorIndex, wrapItem.rumorId, wrapItem.id);
80
- };
81
- _removeReference = (index, key, wrapId) => {
82
- const reference = index.get(key);
83
- if (reference) {
84
- const wraps = remove(wrapId, reference);
85
- if (wraps.length > 0) {
86
- index.set(key, wraps);
87
- }
88
- else {
89
- index.delete(key);
90
- }
71
+ if (wrapIds.length > 0) {
72
+ this._rumorIndex.set(wrapItem.rumorId, wrapIds);
73
+ }
74
+ else {
75
+ this._rumorIndex.delete(wrapItem.rumorId);
91
76
  }
92
77
  };
93
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wrapManager.js","sourceRoot":"","sources":["../../../../net/src/wrapManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrapManager.js","sourceRoot":"","sources":["../../../../net/src/wrapManager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from "./util.js";
2
+ export * from "./queue.js";
2
3
  export * from "./nip59.js";
3
4
  export * from "./signers/nip01.js";
4
5
  export * from "./signers/nip07.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../signer/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../signer/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from "./util.js";
2
+ export * from "./queue.js";
2
3
  export * from "./nip59.js";
3
4
  export * from "./signers/nip01.js";
4
5
  export * from "./signers/nip07.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../signer/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../signer/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
@@ -1,10 +1,17 @@
1
1
  import { SignedEvent, HashedEvent, StampedEvent } from "@welshman/util";
2
- import { ISigner } from "./util.js";
2
+ import { ISigner, SignerOptions } from "./util.js";
3
3
  export declare const now: (drift?: number) => number;
4
- export declare const getSeal: (signer: ISigner, pubkey: string, rumor: HashedEvent) => Promise<SignedEvent>;
4
+ export declare const getSeal: (signer: ISigner, pubkey: string, rumor: HashedEvent, options?: SignerOptions) => Promise<SignedEvent>;
5
5
  export declare const getWrap: (wrapper: ISigner, pubkey: string, seal: SignedEvent, tags: string[][]) => Promise<SignedEvent>;
6
- export declare const wrap: (signer: ISigner, wrapper: ISigner, pubkey: string, template: StampedEvent, tags?: string[][]) => Promise<SignedEvent>;
7
- export declare const unwrap: (signer: ISigner, wrap: SignedEvent) => Promise<HashedEvent>;
6
+ export declare const wrap: (signer: ISigner, wrapper: ISigner, pubkey: string, template: StampedEvent, tags?: string[][], options?: SignerOptions) => Promise<SignedEvent>;
7
+ /**
8
+ * A decision about the wrap itself rather than a failure to reach the signer. The wrap will
9
+ * read the same way every time it is tried, so a caller is free to remember the verdict;
10
+ * anything the signer throws is about the signer and may answer next time.
11
+ */
12
+ export declare class InvalidWrapError extends Error {
13
+ }
14
+ export declare const unwrap: (signer: ISigner, wrap: SignedEvent, options?: SignerOptions) => Promise<HashedEvent>;
8
15
  export declare class Nip59 {
9
16
  private signer;
10
17
  private wrapper?;
@@ -13,7 +20,7 @@ export declare class Nip59 {
13
20
  static fromSigner: (signer: ISigner) => Nip59;
14
21
  static fromSecret: (secret: string) => Nip59;
15
22
  withWrapper: (wrapper: ISigner) => Nip59;
16
- wrap: (pubkey: string, template: StampedEvent, tags?: string[][]) => Promise<SignedEvent>;
17
- unwrap: (event: SignedEvent) => Promise<HashedEvent>;
23
+ wrap: (pubkey: string, template: StampedEvent, tags?: string[][], options?: SignerOptions) => Promise<SignedEvent>;
24
+ unwrap: (event: SignedEvent, options?: SignerOptions) => Promise<HashedEvent>;
18
25
  }
19
26
  //# sourceMappingURL=nip59.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nip59.d.ts","sourceRoot":"","sources":["../../../../signer/src/nip59.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,WAAW,EACX,YAAY,EAKb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAU,OAAO,EAAC,MAAM,WAAW,CAAA;AAG1C,eAAO,MAAM,GAAG,GAAI,cAAS,WACwC,CAAA;AAErE,eAAO,MAAM,OAAO,GAAU,QAAQ,OAAO,EAAE,QAAQ,MAAM,EAAE,OAAO,WAAW,yBAS9E,CAAA;AAEH,eAAO,MAAM,OAAO,GAClB,SAAS,OAAO,EAChB,QAAQ,MAAM,EACd,MAAM,WAAW,EACjB,MAAM,MAAM,EAAE,EAAE,yBAUf,CAAA;AAEH,eAAO,MAAM,IAAI,GACf,QAAQ,OAAO,EACf,SAAS,OAAO,EAChB,QAAQ,MAAM,EACd,UAAU,YAAY,EACtB,OAAM,MAAM,EAAE,EAAO,yBAQtB,CAAA;AAED,eAAO,MAAM,MAAM,GAAU,QAAQ,OAAO,EAAE,MAAM,WAAW,KAAG,OAAO,CAAC,WAAW,CAQpF,CAAA;AAED,qBAAa,KAAK;IAId,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,KAAK,CAAyC;gBAG5C,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,OAAO,YAAA;IAG3B,MAAM,CAAC,UAAU,GAAI,QAAQ,OAAO,WAAsB;IAE1D,MAAM,CAAC,UAAU,GAAI,QAAQ,MAAM,WAAuC;IAE1E,WAAW,GAAI,SAAS,OAAO,WAAoC;IAEnE,IAAI,GAAI,QAAQ,MAAM,EAAE,UAAU,YAAY,EAAE,OAAM,MAAM,EAAE,EAAO,0BACe;IAEpF,MAAM,GAAU,OAAO,WAAW,KAAG,OAAO,CAAC,WAAW,CAAC,CAsBxD;CACF"}
1
+ {"version":3,"file":"nip59.d.ts","sourceRoot":"","sources":["../../../../signer/src/nip59.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,WAAW,EACX,YAAY,EAKb,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAU,OAAO,EAAE,aAAa,EAAC,MAAM,WAAW,CAAA;AAGzD,eAAO,MAAM,GAAG,GAAI,cAAS,WACwC,CAAA;AAErE,eAAO,MAAM,OAAO,GAClB,QAAQ,OAAO,EACf,QAAQ,MAAM,EACd,OAAO,WAAW,EAClB,UAAU,aAAa,yBAWtB,CAAA;AAEH,eAAO,MAAM,OAAO,GAClB,SAAS,OAAO,EAChB,QAAQ,MAAM,EACd,MAAM,WAAW,EACjB,MAAM,MAAM,EAAE,EAAE,yBAUf,CAAA;AAEH,eAAO,MAAM,IAAI,GACf,QAAQ,OAAO,EACf,SAAS,OAAO,EAChB,QAAQ,MAAM,EACd,UAAU,YAAY,EACtB,OAAM,MAAM,EAAE,EAAO,EACrB,UAAU,aAAa,yBAQxB,CAAA;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AAa9C,eAAO,MAAM,MAAM,GACjB,QAAQ,OAAO,EACf,MAAM,WAAW,EACjB,UAAU,aAAa,KACtB,OAAO,CAAC,WAAW,CAWrB,CAAA;AAED,qBAAa,KAAK;IAId,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,KAAK,CAAoD;gBAGvD,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,OAAO,YAAA;IAG3B,MAAM,CAAC,UAAU,GAAI,QAAQ,OAAO,WAAsB;IAE1D,MAAM,CAAC,UAAU,GAAI,QAAQ,MAAM,WAAuC;IAE1E,WAAW,GAAI,SAAS,OAAO,WAAoC;IAEnE,IAAI,GAAI,QAAQ,MAAM,EAAE,UAAU,YAAY,EAAE,OAAM,MAAM,EAAE,EAAO,EAAE,UAAU,aAAa,0BACD;IAE7F,MAAM,GAAU,OAAO,WAAW,EAAE,UAAU,aAAa,KAAG,OAAO,CAAC,WAAW,CAAC,CAwBjF;CACF"}
@@ -1,14 +1,15 @@
1
- import { isHashedEvent, WRAP, SEAL, prep, hash, } from "@welshman/util";
1
+ import { isHashedEvent, isSignedEvent, WRAP, SEAL, prep, hash, } from "@welshman/util";
2
+ import { isPojo, tryCatch } from "@welshman/lib";
2
3
  import { decrypt } from "./util.js";
3
4
  import { Nip01Signer } from "./signers/nip01.js";
4
5
  export const now = (drift = 0) => Math.round(Date.now() / 1000 - Math.random() * Math.pow(10, drift));
5
- export const getSeal = async (signer, pubkey, rumor) => signer.sign(hash({
6
+ export const getSeal = async (signer, pubkey, rumor, options) => signer.sign(hash({
6
7
  kind: SEAL,
7
- pubkey: await signer.getPubkey(),
8
- content: await signer.nip44.encrypt(pubkey, JSON.stringify(rumor)),
8
+ pubkey: await signer.getPubkey(options),
9
+ content: await signer.nip44.encrypt(pubkey, JSON.stringify(rumor), options),
9
10
  created_at: now(5),
10
11
  tags: [],
11
- }));
12
+ }), options);
12
13
  export const getWrap = async (wrapper, pubkey, seal, tags) => wrapper.sign(hash({
13
14
  kind: WRAP,
14
15
  pubkey: await wrapper.getPubkey(),
@@ -16,20 +17,36 @@ export const getWrap = async (wrapper, pubkey, seal, tags) => wrapper.sign(hash(
16
17
  created_at: now(5),
17
18
  tags: [...tags, ["p", pubkey]],
18
19
  }));
19
- export const wrap = async (signer, wrapper, pubkey, template, tags = []) => {
20
- const author = await signer.getPubkey();
20
+ export const wrap = async (signer, wrapper, pubkey, template, tags = [], options) => {
21
+ const author = await signer.getPubkey(options);
21
22
  const rumor = await prep(template, author);
22
- const seal = await getSeal(signer, pubkey, rumor);
23
+ const seal = await getSeal(signer, pubkey, rumor, options);
23
24
  const wrap = await getWrap(wrapper, pubkey, seal, tags);
24
25
  return wrap;
25
26
  };
26
- export const unwrap = async (signer, wrap) => {
27
- const seal = JSON.parse(await decrypt(signer, wrap.pubkey, wrap.content));
28
- const rumor = JSON.parse(await decrypt(signer, seal.pubkey, seal.content));
29
- if (seal.pubkey !== rumor.pubkey)
30
- throw new Error("Seal pubkey does not match rumor pubkey");
31
- if (!isHashedEvent(rumor))
32
- throw new Error("Unwrapped object was not a hashed event");
27
+ /**
28
+ * A decision about the wrap itself rather than a failure to reach the signer. The wrap will
29
+ * read the same way every time it is tried, so a caller is free to remember the verdict;
30
+ * anything the signer throws is about the signer and may answer next time.
31
+ */
32
+ export class InvalidWrapError extends Error {
33
+ }
34
+ // Each layer must decrypt to the event that layer carries, or the wrap is malformed
35
+ const parseLayer = (json, isLayer, layer) => {
36
+ const value = tryCatch(() => JSON.parse(json));
37
+ if (!isPojo(value) || !isLayer(value)) {
38
+ throw new InvalidWrapError(`Decrypted ${layer} was not a valid event`);
39
+ }
40
+ return value;
41
+ };
42
+ export const unwrap = async (signer, wrap, options) => {
43
+ const sealJson = await decrypt(signer, wrap.pubkey, wrap.content, options);
44
+ const seal = parseLayer(sealJson, isSignedEvent, "seal");
45
+ const rumorJson = await decrypt(signer, seal.pubkey, seal.content, options);
46
+ const rumor = parseLayer(rumorJson, isHashedEvent, "rumor");
47
+ if (seal.pubkey !== rumor.pubkey) {
48
+ throw new InvalidWrapError("Seal pubkey does not match rumor pubkey");
49
+ }
33
50
  return rumor;
34
51
  };
35
52
  export class Nip59 {
@@ -43,8 +60,8 @@ export class Nip59 {
43
60
  static fromSigner = (signer) => new Nip59(signer);
44
61
  static fromSecret = (secret) => new Nip59(new Nip01Signer(secret));
45
62
  withWrapper = (wrapper) => new Nip59(this.signer, wrapper);
46
- wrap = (pubkey, template, tags = []) => wrap(this.signer, this.wrapper || Nip01Signer.ephemeral(), pubkey, template, tags);
47
- unwrap = async (event) => {
63
+ wrap = (pubkey, template, tags = [], options) => wrap(this.signer, this.wrapper || Nip01Signer.ephemeral(), pubkey, template, tags, options);
64
+ unwrap = async (event, options) => {
48
65
  const cached = this.cache.get(event.id);
49
66
  if (cached) {
50
67
  if (cached instanceof Error) {
@@ -53,12 +70,14 @@ export class Nip59 {
53
70
  return cached;
54
71
  }
55
72
  try {
56
- const rumor = await unwrap(this.signer, event);
73
+ const rumor = await unwrap(this.signer, event, options);
57
74
  this.cache.set(event.id, rumor);
58
75
  return rumor;
59
76
  }
60
77
  catch (error) {
61
- this.cache.set(event.id, error);
78
+ if (error instanceof InvalidWrapError) {
79
+ this.cache.set(event.id, error);
80
+ }
62
81
  throw error;
63
82
  }
64
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"nip59.js","sourceRoot":"","sources":["../../../../signer/src/nip59.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nip59.js","sourceRoot":"","sources":["../../../../signer/src/nip59.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { TaskQueue } from "@welshman/lib";
2
+ import type { SignerOptions } from "./util.js";
3
+ export type SignerRequest = {
4
+ priority: number;
5
+ run: () => Promise<void>;
6
+ };
7
+ /**
8
+ * The lane every request to one signer goes down. A browser extension and a native signer
9
+ * app each answer one request at a time, so a caller is already queueing; making the queue
10
+ * explicit is what lets a signature the user is waiting on overtake a backlog of
11
+ * decryptions, and what keeps one request that never answers from blocking the rest.
12
+ *
13
+ * `batchSize` is 1, since a batch is fixed once it starts and a request arriving mid-batch
14
+ * would otherwise wait out the whole of it however urgent it is. A `batchDelay` of 0 then
15
+ * costs no timer per request, since `TaskQueue` drains a zero delay in a microtask.
16
+ */
17
+ export declare class SignerQueue {
18
+ queue: TaskQueue<SignerRequest>;
19
+ push: <T>(thunk: () => Promise<T>, options?: SignerOptions) => Promise<T>;
20
+ }
21
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../signer/src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAc,MAAM,eAAe,CAAA;AAEpD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAA;AAE5C,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB,CAAA;AAED;;;;;;;;;GASG;AACH,qBAAa,WAAW;IACtB,KAAK,2BAKH;IAEF,IAAI,GAAI,CAAC,EAAE,OAAO,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,UAAS,aAAkB,KAAG,OAAO,CAAC,CAAC,CAAC,CAsB3E;CACF"}
@@ -0,0 +1,40 @@
1
+ import { TaskQueue, defer, noop } from "@welshman/lib";
2
+ import { signerCall } from "./util.js";
3
+ /**
4
+ * The lane every request to one signer goes down. A browser extension and a native signer
5
+ * app each answer one request at a time, so a caller is already queueing; making the queue
6
+ * explicit is what lets a signature the user is waiting on overtake a backlog of
7
+ * decryptions, and what keeps one request that never answers from blocking the rest.
8
+ *
9
+ * `batchSize` is 1, since a batch is fixed once it starts and a request arriving mid-batch
10
+ * would otherwise wait out the whole of it however urgent it is. A `batchDelay` of 0 then
11
+ * costs no timer per request, since `TaskQueue` drains a zero delay in a microtask.
12
+ */
13
+ export class SignerQueue {
14
+ queue = new TaskQueue({
15
+ batchSize: 1,
16
+ batchDelay: 0,
17
+ getPriority: (request) => request.priority,
18
+ processItem: (request) => request.run(),
19
+ });
20
+ push = (thunk, options = {}) => {
21
+ const result = defer();
22
+ const settled = result.then(noop, noop);
23
+ const abort = () => result.reject(new Error("Signer request was aborted"));
24
+ // A signal that is already aborted never fires "abort", so refuse the request here.
25
+ if (options.signal?.aborted)
26
+ abort();
27
+ options.signal?.addEventListener("abort", abort);
28
+ settled.then(() => options.signal?.removeEventListener("abort", abort));
29
+ this.queue.push({
30
+ priority: options.priority ?? 0,
31
+ run: () => {
32
+ signerCall(thunk, options).then(result.resolve, result.reject);
33
+ // The lane is given back when welshman stops waiting, not always when the signer answered
34
+ return settled;
35
+ },
36
+ });
37
+ return result;
38
+ };
39
+ }
40
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../../signer/src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,WAAW,CAAA;AAQpC;;;;;;;;;GASG;AACH,MAAM,OAAO,WAAW;IACtB,KAAK,GAAG,IAAI,SAAS,CAAgB;QACnC,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ;QACzD,WAAW,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;KACvD,CAAC,CAAA;IAEF,IAAI,GAAG,CAAI,KAAuB,EAAE,UAAyB,EAAE,EAAc,EAAE;QAC7E,MAAM,MAAM,GAAG,KAAK,EAAY,CAAA;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAA;QAE1E,oFAAoF;QACpF,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,KAAK,EAAE,CAAA;QAEpC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QAEvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;YAC/B,GAAG,EAAE,GAAG,EAAE;gBACR,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;gBAE9D,0FAA0F;gBAC1F,OAAO,OAAO,CAAA;YAChB,CAAC;SACF,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;CACF"}
@@ -1,5 +1,9 @@
1
1
  import { StampedEvent } from "@welshman/util";
2
- import { ISigner, SignOptions } from "../util.js";
2
+ import { ISigner } from "../util.js";
3
+ /**
4
+ * A local key, so every request is answered synchronously. Nothing here can hang or be
5
+ * worth reordering, which is why it takes no `SignerOptions`.
6
+ */
3
7
  export declare class Nip01Signer implements ISigner {
4
8
  #private;
5
9
  private secret;
@@ -7,7 +11,15 @@ export declare class Nip01Signer implements ISigner {
7
11
  static fromSecret: (secret: string) => Nip01Signer;
8
12
  static ephemeral: () => Nip01Signer;
9
13
  getPubkey: () => Promise<string>;
10
- sign: (event: StampedEvent, options?: SignOptions) => Promise<import("@welshman/util").SignedEvent>;
14
+ sign: (event: StampedEvent) => Promise<{
15
+ sig: string;
16
+ tags: string[][];
17
+ content: string;
18
+ kind: number;
19
+ created_at: number;
20
+ pubkey: string;
21
+ id: string;
22
+ }>;
11
23
  nip04: {
12
24
  encrypt: (pubkey: string, message: string) => Promise<string>;
13
25
  decrypt: (pubkey: string, message: string) => Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"nip01.d.ts","sourceRoot":"","sources":["../../../../../signer/src/signers/nip01.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAyC,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAe,OAAO,EAAE,WAAW,EAAkB,MAAM,YAAY,CAAA;AAE9E,qBAAa,WAAY,YAAW,OAAO;;IAG7B,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAIlC,MAAM,CAAC,UAAU,GAAI,QAAQ,MAAM,iBAA4B;IAE/D,MAAM,CAAC,SAAS,oBAAsC;IAEtD,SAAS,wBAA2B;IAEpC,IAAI,GAAI,OAAO,YAAY,EAAE,UAAS,WAAgB,mDACuB;IAE7E,KAAK;0BACqB,MAAM,WAAW,MAAM;0BACvB,MAAM,WAAW,MAAM;MAChD;IAED,KAAK;0BACqB,MAAM,WAAW,MAAM;0BACvB,MAAM,WAAW,MAAM;MAChD;CACF"}
1
+ {"version":3,"file":"nip01.d.ts","sourceRoot":"","sources":["../../../../../signer/src/signers/nip01.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAyC,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAe,OAAO,EAAC,MAAM,YAAY,CAAA;AAEhD;;;GAGG;AACH,qBAAa,WAAY,YAAW,OAAO;;IAG7B,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAIlC,MAAM,CAAC,UAAU,GAAI,QAAQ,MAAM,iBAA4B;IAE/D,MAAM,CAAC,SAAS,oBAAsC;IAEtD,SAAS,wBAA2B;IAEpC,IAAI,GAAU,OAAO,YAAY;;;;;;;;OAAsD;IAEvF,KAAK;0BACqB,MAAM,WAAW,MAAM;0BACvB,MAAM,WAAW,MAAM;MAChD;IAED,KAAK;0BACqB,MAAM,WAAW,MAAM;0BACvB,MAAM,WAAW,MAAM;MAChD;CACF"}
@@ -1,5 +1,9 @@
1
1
  import { own, hash, sign, getPubkey, makeSecret } from "@welshman/util";
2
- import { nip04, nip44, signWithOptions } from "../util.js";
2
+ import { nip04, nip44 } from "../util.js";
3
+ /**
4
+ * A local key, so every request is answered synchronously. Nothing here can hang or be
5
+ * worth reordering, which is why it takes no `SignerOptions`.
6
+ */
3
7
  export class Nip01Signer {
4
8
  secret;
5
9
  #pubkey;
@@ -10,7 +14,7 @@ export class Nip01Signer {
10
14
  static fromSecret = (secret) => new Nip01Signer(secret);
11
15
  static ephemeral = () => new Nip01Signer(makeSecret());
12
16
  getPubkey = async () => this.#pubkey;
13
- sign = (event, options = {}) => signWithOptions(sign(hash(own(event, this.#pubkey)), this.secret), options);
17
+ sign = async (event) => sign(hash(own(event, this.#pubkey)), this.secret);
14
18
  nip04 = {
15
19
  encrypt: async (pubkey, message) => nip04.encrypt(pubkey, this.secret, message),
16
20
  decrypt: async (pubkey, message) => nip04.decrypt(pubkey, this.secret, message),
@@ -1 +1 @@
1
- {"version":3,"file":"nip01.js","sourceRoot":"","sources":["../../../../../signer/src/signers/nip01.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAC,KAAK,EAAE,KAAK,EAAwB,eAAe,EAAC,MAAM,YAAY,CAAA;AAE9E,MAAM,OAAO,WAAW;IAGF;IAFpB,OAAO,CAAQ;IAEf,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAChC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;IAE/D,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC,CAAA;IAEtD,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAA;IAEpC,IAAI,GAAG,CAAC,KAAmB,EAAE,UAAuB,EAAE,EAAE,EAAE,CACxD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;IAE7E,KAAK,GAAG;QACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QAC/F,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;KAChG,CAAA;IAED,KAAK,GAAG;QACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QAC/F,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;KAChG,CAAA"}
1
+ {"version":3,"file":"nip01.js","sourceRoot":"","sources":["../../../../../signer/src/signers/nip01.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAC,KAAK,EAAE,KAAK,EAAU,MAAM,YAAY,CAAA;AAEhD;;;GAGG;AACH,MAAM,OAAO,WAAW;IAGF;IAFpB,OAAO,CAAQ;IAEf,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAChC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;IAE/D,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC,CAAA;IAEtD,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAA;IAEpC,IAAI,GAAG,KAAK,EAAE,KAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAEvF,KAAK,GAAG;QACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QAC/F,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;KAChG,CAAA;IAED,KAAK,GAAG;QACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QAC/F,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;KAChG,CAAA"}
@@ -1,7 +1,7 @@
1
- import { StampedEvent } from "@welshman/util";
2
- import { SignOptions, Sign, ISigner, EncryptionImplementation } from "../util.js";
1
+ import { SignedEvent, StampedEvent } from "@welshman/util";
2
+ import { SignerOptions, ISigner, EncryptionImplementation } from "../util.js";
3
3
  export type Nip07 = {
4
- signEvent: Sign;
4
+ signEvent: (event: StampedEvent) => Promise<SignedEvent>;
5
5
  nip04: EncryptionImplementation;
6
6
  nip44: EncryptionImplementation;
7
7
  getPublicKey: () => string | undefined;
@@ -9,15 +9,15 @@ export type Nip07 = {
9
9
  export declare const getNip07: () => Nip07 | undefined;
10
10
  export declare class Nip07Signer implements ISigner {
11
11
  #private;
12
- getPubkey: () => Promise<string>;
13
- sign: (template: StampedEvent, options?: SignOptions) => Promise<import("@welshman/util").SignedEvent>;
12
+ getPubkey: (options?: SignerOptions) => Promise<string>;
13
+ sign: (template: StampedEvent, options?: SignerOptions) => Promise<SignedEvent>;
14
14
  nip04: {
15
- encrypt: (pubkey: string, message: string) => Promise<string>;
16
- decrypt: (pubkey: string, message: string) => Promise<string>;
15
+ encrypt: (pubkey: string, message: string, options?: SignerOptions) => Promise<string>;
16
+ decrypt: (pubkey: string, message: string, options?: SignerOptions) => Promise<string>;
17
17
  };
18
18
  nip44: {
19
- encrypt: (pubkey: string, message: string) => Promise<string>;
20
- decrypt: (pubkey: string, message: string) => Promise<string>;
19
+ encrypt: (pubkey: string, message: string, options?: SignerOptions) => Promise<string>;
20
+ decrypt: (pubkey: string, message: string, options?: SignerOptions) => Promise<string>;
21
21
  };
22
22
  }
23
23
  //# sourceMappingURL=nip07.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nip07.d.ts","sourceRoot":"","sources":["../../../../../signer/src/signers/nip07.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAkB,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,wBAAwB,EAAC,MAAM,YAAY,CAAA;AAEhG,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,EAAE,IAAI,CAAA;IACf,KAAK,EAAE,wBAAwB,CAAA;IAC/B,KAAK,EAAE,wBAAwB,CAAA;IAC/B,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,QAAQ,yBAA0C,CAAA;AAY/D,qBAAa,WAAY,YAAW,OAAO;;IAkBzC,SAAS,wBASR;IAED,IAAI,GAAI,UAAU,YAAY,EAAE,UAAS,WAAgB,mDAItD;IAEH,KAAK;0BACe,MAAM,WAAW,MAAM;0BAEvB,MAAM,WAAW,MAAM;MAE1C;IAED,KAAK;0BACe,MAAM,WAAW,MAAM;0BAEvB,MAAM,WAAW,MAAM;MAE1C;CACF"}
1
+ {"version":3,"file":"nip07.d.ts","sourceRoot":"","sources":["../../../../../signer/src/signers/nip07.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAExD,OAAO,EAAC,aAAa,EAAE,OAAO,EAAE,wBAAwB,EAAC,MAAM,YAAY,CAAA;AAE3E,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;IACxD,KAAK,EAAE,wBAAwB,CAAA;IAC/B,KAAK,EAAE,wBAAwB,CAAA;IAC/B,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,QAAQ,yBAA0C,CAAA;AAE/D,qBAAa,WAAY,YAAW,OAAO;;IAazC,SAAS,GAAI,UAAS,aAAkB,qBASvC;IAED,IAAI,GAAI,UAAU,YAAY,EAAE,UAAS,aAAkB,0BACN;IAErD,KAAK;0BACe,MAAM,WAAW,MAAM,YAAW,aAAa;0BAE/C,MAAM,WAAW,MAAM,YAAW,aAAa;MAElE;IAED,KAAK;0BACe,MAAM,WAAW,MAAM,YAAW,aAAa;0BAE/C,MAAM,WAAW,MAAM,YAAW,aAAa;MAElE;CACF"}
@@ -1,43 +1,31 @@
1
- import { noop } from "@welshman/lib";
2
- import { signWithOptions } from "../util.js";
1
+ import { SignerQueue } from "../queue.js";
3
2
  export const getNip07 = () => window.nostr;
4
- const release = (promise) => new Promise(resolve => {
5
- const timeout = setTimeout(resolve, 30_000);
6
- promise.catch(noop).then(() => {
7
- clearTimeout(timeout);
8
- resolve();
9
- });
10
- });
11
3
  export class Nip07Signer {
12
- #lock = Promise.resolve();
4
+ #queue = new SignerQueue();
13
5
  #pubkey;
14
- #then = async (f) => {
15
- const promise = this.#lock.then(() => {
16
- const ext = getNip07();
17
- if (!ext)
18
- throw new Error("Nip07 is not enabled");
19
- return f(ext);
20
- });
21
- this.#lock = release(promise);
22
- return promise;
23
- };
24
- getPubkey = () => {
6
+ #then = (f, options) => this.#queue.push(async () => {
7
+ const ext = getNip07();
8
+ if (!ext)
9
+ throw new Error("Nip07 is not enabled");
10
+ return f(ext);
11
+ }, options);
12
+ getPubkey = (options = {}) => {
25
13
  if (!this.#pubkey) {
26
- this.#pubkey = this.#then(ext => ext.getPublicKey());
14
+ this.#pubkey = this.#then(ext => ext.getPublicKey(), options);
27
15
  this.#pubkey.catch(() => {
28
16
  this.#pubkey = undefined;
29
17
  });
30
18
  }
31
19
  return this.#pubkey;
32
20
  };
33
- sign = (template, options = {}) => signWithOptions(this.#then(ext => ext.signEvent(template)), options);
21
+ sign = (template, options = {}) => this.#then(ext => ext.signEvent(template), options);
34
22
  nip04 = {
35
- encrypt: (pubkey, message) => this.#then(ext => ext.nip04.encrypt(pubkey, message)),
36
- decrypt: (pubkey, message) => this.#then(ext => ext.nip04.decrypt(pubkey, message)),
23
+ encrypt: (pubkey, message, options = {}) => this.#then(ext => ext.nip04.encrypt(pubkey, message), options),
24
+ decrypt: (pubkey, message, options = {}) => this.#then(ext => ext.nip04.decrypt(pubkey, message), options),
37
25
  };
38
26
  nip44 = {
39
- encrypt: (pubkey, message) => this.#then(ext => ext.nip44.encrypt(pubkey, message)),
40
- decrypt: (pubkey, message) => this.#then(ext => ext.nip44.decrypt(pubkey, message)),
27
+ encrypt: (pubkey, message, options = {}) => this.#then(ext => ext.nip44.encrypt(pubkey, message), options),
28
+ decrypt: (pubkey, message, options = {}) => this.#then(ext => ext.nip44.decrypt(pubkey, message), options),
41
29
  };
42
30
  }
43
31
  //# sourceMappingURL=nip07.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nip07.js","sourceRoot":"","sources":["../../../../../signer/src/signers/nip07.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAElC,OAAO,EAAC,eAAe,EAAuD,MAAM,YAAY,CAAA;AAShG,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAE,MAA0B,CAAC,KAAK,CAAA;AAE/D,MAAM,OAAO,GAAG,CAAC,OAAyB,EAAE,EAAE,CAC5C,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAE3C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAC5B,YAAY,CAAC,OAAO,CAAC,CAAA;QACrB,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEJ,MAAM,OAAO,WAAW;IACtB,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;IACzB,OAAO,CAAkB;IAEzB,KAAK,GAAG,KAAK,EAAK,CAAiC,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACnC,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAA;YAEtB,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YAEjD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAE7B,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAED,SAAS,GAAG,GAAG,EAAE;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAS,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,EAAY,CAAC,CAAA;YACtE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;YAC1B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,QAAsB,EAAE,UAAuB,EAAE,EAAE,EAAE,CAC3D,eAAe,CACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC1C,OAAO,CACR,CAAA;IAEH,KAAK,GAAG;QACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACxD,CAAA;IAED,KAAK,GAAG;QACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACxD,CAAA;CACF"}
1
+ {"version":3,"file":"nip07.js","sourceRoot":"","sources":["../../../../../signer/src/signers/nip07.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAA;AAUvC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAE,MAA0B,CAAC,KAAK,CAAA;AAE/D,MAAM,OAAO,WAAW;IACtB,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;IAC1B,OAAO,CAAkB;IAEzB,KAAK,GAAG,CAAI,CAAiC,EAAE,OAAsB,EAAE,EAAE,CACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QAC1B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAA;QAEtB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAEjD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;IACf,CAAC,EAAE,OAAO,CAAC,CAAA;IAEb,SAAS,GAAG,CAAC,UAAyB,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAS,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,EAAY,EAAE,OAAO,CAAC,CAAA;YAC/E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;YAC1B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,QAAsB,EAAE,UAAyB,EAAE,EAAE,EAAE,CAC7D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;IAErD,KAAK,GAAG;QACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,UAAyB,EAAE,EAAE,EAAE,CACxE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAChE,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,UAAyB,EAAE,EAAE,EAAE,CACxE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;KACjE,CAAA;IAED,KAAK,GAAG;QACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,UAAyB,EAAE,EAAE,EAAE,CACxE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAChE,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,UAAyB,EAAE,EAAE,EAAE,CACxE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;KACjE,CAAA;CACF"}
@@ -1,7 +1,7 @@
1
1
  import { Emitter, MaybeAsync } from "@welshman/lib";
2
2
  import { HashedEvent, StampedEvent, TrustedEvent } from "@welshman/util";
3
3
  import { AdapterContext } from "@welshman/net";
4
- import { ISigner, EncryptionImplementation, SignOptions } from "../util.js";
4
+ import { ISigner, EncryptionImplementation, SignerOptions } from "../util.js";
5
5
  import { Nip01Signer } from "./nip01.js";
6
6
  export type Nip46Context = {
7
7
  debug: boolean;
@@ -116,14 +116,18 @@ export declare class Nip46Broker extends Emitter {
116
116
  nip44Decrypt: (pk: string, message: string) => Promise<string>;
117
117
  switchRelays: () => Promise<string[]>;
118
118
  }
119
+ /**
120
+ * A bunker answers over relays rather than one at a time, so requests here are not queued
121
+ * and a priority would order nothing. Each one still carries its own deadline.
122
+ */
119
123
  export declare class Nip46Signer implements ISigner {
120
124
  broker: Nip46Broker;
121
125
  pubkey?: string;
122
126
  nip04: EncryptionImplementation;
123
127
  nip44: EncryptionImplementation;
124
128
  constructor(broker: Nip46Broker);
125
- getPubkey: () => Promise<string>;
126
- sign: (template: StampedEvent, options?: SignOptions) => Promise<import("@welshman/util").SignedEvent>;
129
+ getPubkey: (options?: SignerOptions) => Promise<string>;
130
+ sign: (template: StampedEvent, options?: SignerOptions) => Promise<any>;
127
131
  cleanup: () => Promise<void>;
128
132
  }
129
133
  //# sourceMappingURL=nip46.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nip46.d.ts","sourceRoot":"","sources":["../../../../../signer/src/signers/nip46.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nip46.d.ts","sourceRoot":"","sources":["../../../../../signer/src/signers/nip46.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Emitter, throttle, makePromise, defer, memoize, sleep, tryCatch, randomId, parseJson, isHex32, } from "@welshman/lib";
2
2
  import { makeEvent, makeSecret, normalizeRelayUrl, NOSTR_CONNECT, prep, } from "@welshman/util";
3
3
  import { publish, request, Pool, socketPolicyConnectOnSend, socketPolicyLifecycle, } from "@welshman/net";
4
- import { signWithOptions, decrypt } from "../util.js";
4
+ import { signerCall, decrypt } from "../util.js";
5
5
  import { Nip01Signer } from "./nip01.js";
6
6
  export const nip46Context = {
7
7
  debug: false,
@@ -370,6 +370,10 @@ export class Nip46Broker extends Emitter {
370
370
  return this.params.relays;
371
371
  };
372
372
  }
373
+ /**
374
+ * A bunker answers over relays rather than one at a time, so requests here are not queued
375
+ * and a priority would order nothing. Each one still carries its own deadline.
376
+ */
373
377
  export class Nip46Signer {
374
378
  broker;
375
379
  pubkey;
@@ -378,21 +382,21 @@ export class Nip46Signer {
378
382
  constructor(broker) {
379
383
  this.broker = broker;
380
384
  this.nip04 = {
381
- encrypt: this.broker.nip04Encrypt,
382
- decrypt: this.broker.nip04Decrypt,
385
+ encrypt: (pubkey, message, options) => signerCall(() => this.broker.nip04Encrypt(pubkey, message), options),
386
+ decrypt: (pubkey, message, options) => signerCall(() => this.broker.nip04Decrypt(pubkey, message), options),
383
387
  };
384
388
  this.nip44 = {
385
- encrypt: this.broker.nip44Encrypt,
386
- decrypt: this.broker.nip44Decrypt,
389
+ encrypt: (pubkey, message, options) => signerCall(() => this.broker.nip44Encrypt(pubkey, message), options),
390
+ decrypt: (pubkey, message, options) => signerCall(() => this.broker.nip44Decrypt(pubkey, message), options),
387
391
  };
388
392
  }
389
- getPubkey = async () => {
393
+ getPubkey = async (options) => {
390
394
  if (!this.pubkey) {
391
- this.pubkey = await this.broker.getPublicKey();
395
+ this.pubkey = await signerCall(() => this.broker.getPublicKey(), options);
392
396
  }
393
397
  return this.pubkey;
394
398
  };
395
- sign = (template, options = {}) => signWithOptions(this.getPubkey().then(pubkey => this.broker.signEvent(prep(template, pubkey))), options);
399
+ sign = (template, options = {}) => signerCall(() => this.getPubkey(options).then(pubkey => this.broker.signEvent(prep(template, pubkey))), options);
396
400
  cleanup = async () => this.broker.cleanup();
397
401
  }
398
402
  //# sourceMappingURL=nip46.js.map