@welshman/signer 0.0.17 → 0.0.19

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 (49) hide show
  1. package/build/src/index.d.ts +6 -6
  2. package/build/src/index.js +7 -0
  3. package/build/src/index.js.map +1 -0
  4. package/build/src/nip59.d.ts +3 -3
  5. package/build/src/{nip59.mjs → nip59.js} +11 -9
  6. package/build/src/nip59.js.map +1 -0
  7. package/build/src/signers/nip01.d.ts +2 -2
  8. package/build/src/signers/nip01.js +22 -0
  9. package/build/src/signers/nip01.js.map +1 -0
  10. package/build/src/signers/nip07.d.ts +2 -2
  11. package/build/src/signers/nip07.js +30 -0
  12. package/build/src/signers/nip07.js.map +1 -0
  13. package/build/src/signers/nip46.d.ts +5 -11
  14. package/build/src/signers/nip46.js +317 -0
  15. package/build/src/signers/nip46.js.map +1 -0
  16. package/build/src/signers/nip55.d.ts +2 -2
  17. package/build/src/signers/nip55.js +134 -0
  18. package/build/src/signers/nip55.js.map +1 -0
  19. package/build/src/util.d.ts +4 -4
  20. package/build/src/{util.mjs → util.js} +8 -6
  21. package/build/src/util.js.map +1 -0
  22. package/build/tsconfig.tsbuildinfo +1 -0
  23. package/package.json +12 -12
  24. package/build/src/index.cjs +0 -23
  25. package/build/src/index.cjs.map +0 -1
  26. package/build/src/index.mjs +0 -7
  27. package/build/src/index.mjs.map +0 -1
  28. package/build/src/nip59.cjs +0 -76
  29. package/build/src/nip59.cjs.map +0 -1
  30. package/build/src/nip59.mjs.map +0 -1
  31. package/build/src/signers/nip01.cjs +0 -38
  32. package/build/src/signers/nip01.cjs.map +0 -1
  33. package/build/src/signers/nip01.mjs +0 -34
  34. package/build/src/signers/nip01.mjs.map +0 -1
  35. package/build/src/signers/nip07.cjs +0 -50
  36. package/build/src/signers/nip07.cjs.map +0 -1
  37. package/build/src/signers/nip07.mjs +0 -45
  38. package/build/src/signers/nip07.mjs.map +0 -1
  39. package/build/src/signers/nip46.cjs +0 -311
  40. package/build/src/signers/nip46.cjs.map +0 -1
  41. package/build/src/signers/nip46.mjs +0 -303
  42. package/build/src/signers/nip46.mjs.map +0 -1
  43. package/build/src/signers/nip55.cjs +0 -151
  44. package/build/src/signers/nip55.cjs.map +0 -1
  45. package/build/src/signers/nip55.mjs +0 -146
  46. package/build/src/signers/nip55.mjs.map +0 -1
  47. package/build/src/util.cjs +0 -42
  48. package/build/src/util.cjs.map +0 -1
  49. package/build/src/util.mjs.map +0 -1
@@ -1,34 +0,0 @@
1
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
- if (kind === "m") throw new TypeError("Private method is not writable");
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
- };
7
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
- };
12
- var _Nip01Signer_pubkey;
13
- import { nip04, nip44, own, hash, sign, getPubkey, makeSecret } from "../util.mjs";
14
- export class Nip01Signer {
15
- constructor(secret) {
16
- this.secret = secret;
17
- _Nip01Signer_pubkey.set(this, void 0);
18
- this.getPubkey = async () => __classPrivateFieldGet(this, _Nip01Signer_pubkey, "f");
19
- this.sign = async (event) => sign(hash(own(event, __classPrivateFieldGet(this, _Nip01Signer_pubkey, "f"))), this.secret);
20
- this.nip04 = {
21
- encrypt: async (pubkey, message) => nip04.encrypt(pubkey, this.secret, message),
22
- decrypt: async (pubkey, message) => nip04.decrypt(pubkey, this.secret, message),
23
- };
24
- this.nip44 = {
25
- encrypt: async (pubkey, message) => nip44.encrypt(pubkey, this.secret, message),
26
- decrypt: async (pubkey, message) => nip44.decrypt(pubkey, this.secret, message),
27
- };
28
- __classPrivateFieldSet(this, _Nip01Signer_pubkey, getPubkey(this.secret), "f");
29
- }
30
- }
31
- _Nip01Signer_pubkey = new WeakMap();
32
- Nip01Signer.fromSecret = (secret) => new Nip01Signer(secret);
33
- Nip01Signer.ephemeral = () => new Nip01Signer(makeSecret());
34
- //# sourceMappingURL=nip01.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nip01.mjs","sourceRoot":"","sources":["../../../src/signers/nip01.ts"],"names":[],"mappings":";;;;;;;;;;;;OACO,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAW,UAAU,EAAC;AAEtE,MAAM,OAAO,WAAW;IAGtB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAFlC,sCAAe;QAUf,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,uBAAA,IAAI,2BAAQ,CAAA;QAEpC,SAAI,GAAG,KAAK,EAAE,KAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,uBAAA,IAAI,2BAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvF,UAAK,GAAG;YACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;SAC9C,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;SAC9C,CAAA;QAvBC,uBAAA,IAAI,uBAAW,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAA,CAAA;IACvC,CAAC;;;AAEM,sBAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,AAA9C,CAA8C;AAExD,qBAAS,GAAG,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC,AAAtC,CAAsC"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
- if (kind === "m") throw new TypeError("Private method is not writable");
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
- };
13
- var _Nip07Signer_lock, _Nip07Signer_then;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.Nip07Signer = exports.getNip07 = void 0;
16
- const util_1 = require("../util.cjs");
17
- const getNip07 = () => window.nostr;
18
- exports.getNip07 = getNip07;
19
- class Nip07Signer {
20
- constructor() {
21
- _Nip07Signer_lock.set(this, Promise.resolve());
22
- _Nip07Signer_then.set(this, async (f) => {
23
- const promise = __classPrivateFieldGet(this, _Nip07Signer_lock, "f").then(() => {
24
- const ext = (0, exports.getNip07)();
25
- if (!ext)
26
- throw new Error("Nip07 is not enabled");
27
- return f(ext);
28
- });
29
- // Recover from errors
30
- __classPrivateFieldSet(this, _Nip07Signer_lock, promise.then(() => undefined, () => undefined), "f");
31
- return promise;
32
- });
33
- this.getPubkey = async () => (0, exports.getNip07)().getPublicKey();
34
- this.sign = async (template) => {
35
- const event = (0, util_1.hash)((0, util_1.own)(template, await this.getPubkey()));
36
- return __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.signEvent(event));
37
- };
38
- this.nip04 = {
39
- encrypt: (pubkey, message) => __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.nip04.encrypt(pubkey, message)),
40
- decrypt: (pubkey, message) => __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.nip04.decrypt(pubkey, message)),
41
- };
42
- this.nip44 = {
43
- encrypt: (pubkey, message) => __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.nip44.encrypt(pubkey, message)),
44
- decrypt: (pubkey, message) => __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.nip44.decrypt(pubkey, message)),
45
- };
46
- }
47
- }
48
- exports.Nip07Signer = Nip07Signer;
49
- _Nip07Signer_lock = new WeakMap(), _Nip07Signer_then = new WeakMap();
50
- //# sourceMappingURL=nip07.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nip07.cjs","sourceRoot":"","sources":["../../../src/signers/nip07.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,sCAA0E;AASnE,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAE,MAA0B,CAAC,KAAK,CAAA;AAAlD,QAAA,QAAQ,YAA0C;AAE/D,MAAa,WAAW;IAAxB;QACE,4BAAQ,OAAO,CAAC,OAAO,EAAE,EAAA;QAEzB,4BAAQ,KAAK,EAAK,CAAiC,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,uBAAA,IAAI,yBAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,MAAM,GAAG,GAAG,IAAA,gBAAQ,GAAE,CAAA;gBAEtB,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;gBAEjD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,sBAAsB;YACtB,uBAAA,IAAI,qBAAS,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAA,CAAA;YAE3D,OAAO,OAAO,CAAA;QAChB,CAAC,EAAA;QAED,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,IAAA,gBAAQ,GAAG,CAAC,YAAY,EAAG,CAAA;QAEnD,SAAI,GAAG,KAAK,EAAE,QAAsB,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,IAAA,WAAI,EAAC,IAAA,UAAG,EAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YAEzD,OAAO,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAChD,CAAC,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;IACH,CAAC;CAAA;AAvCD,kCAuCC"}
@@ -1,45 +0,0 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
7
- if (kind === "m") throw new TypeError("Private method is not writable");
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
- };
12
- var _Nip07Signer_lock, _Nip07Signer_then;
13
- import { hash, own } from "../util.mjs";
14
- export const getNip07 = () => window.nostr;
15
- export class Nip07Signer {
16
- constructor() {
17
- _Nip07Signer_lock.set(this, Promise.resolve());
18
- _Nip07Signer_then.set(this, async (f) => {
19
- const promise = __classPrivateFieldGet(this, _Nip07Signer_lock, "f").then(() => {
20
- const ext = getNip07();
21
- if (!ext)
22
- throw new Error("Nip07 is not enabled");
23
- return f(ext);
24
- });
25
- // Recover from errors
26
- __classPrivateFieldSet(this, _Nip07Signer_lock, promise.then(() => undefined, () => undefined), "f");
27
- return promise;
28
- });
29
- this.getPubkey = async () => getNip07().getPublicKey();
30
- this.sign = async (template) => {
31
- const event = hash(own(template, await this.getPubkey()));
32
- return __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.signEvent(event));
33
- };
34
- this.nip04 = {
35
- encrypt: (pubkey, message) => __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.nip04.encrypt(pubkey, message)),
36
- decrypt: (pubkey, message) => __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.nip04.decrypt(pubkey, message)),
37
- };
38
- this.nip44 = {
39
- encrypt: (pubkey, message) => __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.nip44.encrypt(pubkey, message)),
40
- decrypt: (pubkey, message) => __classPrivateFieldGet(this, _Nip07Signer_then, "f").call(this, ext => ext.nip44.decrypt(pubkey, message)),
41
- };
42
- }
43
- }
44
- _Nip07Signer_lock = new WeakMap(), _Nip07Signer_then = new WeakMap();
45
- //# sourceMappingURL=nip07.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nip07.mjs","sourceRoot":"","sources":["../../../src/signers/nip07.ts"],"names":[],"mappings":";;;;;;;;;;;;OACO,EAAC,IAAI,EAAE,GAAG,EAA0C;AAS3D,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAE,MAA0B,CAAC,KAAK,CAAA;AAE/D,MAAM,OAAO,WAAW;IAAxB;QACE,4BAAQ,OAAO,CAAC,OAAO,EAAE,EAAA;QAEzB,4BAAQ,KAAK,EAAK,CAAiC,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,uBAAA,IAAI,yBAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAA;gBAEtB,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;gBAEjD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,sBAAsB;YACtB,uBAAA,IAAI,qBAAS,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAA,CAAA;YAE3D,OAAO,OAAO,CAAA;QAChB,CAAC,EAAA;QAED,cAAS,GAAG,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAG,CAAC,YAAY,EAAG,CAAA;QAEnD,SAAI,GAAG,KAAK,EAAE,QAAsB,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YAEzD,OAAO,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAChD,CAAC,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,yBAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;IACH,CAAC;CAAA"}
@@ -1,311 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Nip46Signer = exports.Nip46Broker = exports.Nip46Request = exports.Nip46Sender = exports.Nip46Receiver = exports.Nip46Event = void 0;
4
- const lib_1 = require("@welshman/lib");
5
- const util_1 = require("@welshman/util");
6
- const net_1 = require("@welshman/net");
7
- const util_2 = require("../util.cjs");
8
- const nip01_1 = require("./nip01.cjs");
9
- var Nip46Event;
10
- (function (Nip46Event) {
11
- Nip46Event["Send"] = "send";
12
- Nip46Event["Receive"] = "receive";
13
- })(Nip46Event || (exports.Nip46Event = Nip46Event = {}));
14
- let singleton;
15
- const popupManager = (() => {
16
- let pendingUrl = "";
17
- let pendingSince = 0;
18
- let currentWindow;
19
- const openPending = (0, lib_1.throttle)(1000, () => {
20
- // If it's been a while since they asked for it, drop the request
21
- if (Date.now() - pendingSince > 10000)
22
- return;
23
- // If we have an active, open window, continue to wait
24
- if (currentWindow && !currentWindow.closed) {
25
- setTimeout(() => openPending(), 100);
26
- }
27
- else {
28
- // Attempt to open the window
29
- const w = window.open(pendingUrl, "", "width=600,height=800,popup=yes");
30
- // If open was successful, keep track of our window
31
- if (w) {
32
- currentWindow = w;
33
- }
34
- // In any case, this url has been handled
35
- pendingUrl = "";
36
- pendingSince = 0;
37
- }
38
- });
39
- return {
40
- open: (url) => {
41
- pendingUrl = url;
42
- pendingSince = Date.now();
43
- openPending();
44
- },
45
- };
46
- })();
47
- class Nip46Receiver extends lib_1.Emitter {
48
- constructor(signer, params) {
49
- super();
50
- this.signer = signer;
51
- this.params = params;
52
- this.start = async () => {
53
- if (this.sub)
54
- return;
55
- const userPubkey = await this.signer.getPubkey();
56
- const filters = [{ kinds: [util_1.NOSTR_CONNECT], "#p": [userPubkey] }];
57
- this.sub = (0, net_1.subscribe)({ relays: this.params.relays, filters });
58
- return new Promise(resolve => {
59
- this.sub.emitter.on(net_1.SubscriptionEvent.Send, resolve);
60
- this.sub.emitter.on(net_1.SubscriptionEvent.Event, async (url, event) => {
61
- const json = await (0, util_2.decrypt)(this.signer, event.pubkey, event.content);
62
- const response = (0, lib_1.tryCatch)(() => JSON.parse(json)) || {};
63
- // Delay errors in case there's a zombie signer out there clogging things up
64
- if (response.error) {
65
- await (0, lib_1.sleep)(3000);
66
- }
67
- this.emit(Nip46Event.Receive, { ...response, url, event });
68
- });
69
- this.sub.emitter.on(net_1.SubscriptionEvent.Complete, () => {
70
- this.sub = undefined;
71
- });
72
- });
73
- };
74
- this.stop = () => {
75
- var _a;
76
- (_a = this.sub) === null || _a === void 0 ? void 0 : _a.close();
77
- this.removeAllListeners();
78
- };
79
- }
80
- }
81
- exports.Nip46Receiver = Nip46Receiver;
82
- class Nip46Sender extends lib_1.Emitter {
83
- constructor(signer, params) {
84
- super();
85
- this.signer = signer;
86
- this.params = params;
87
- this.processing = false;
88
- this.queue = [];
89
- this.send = async (request) => {
90
- const { id, method, params } = request;
91
- const { relays, signerPubkey, algorithm = "nip44" } = this.params;
92
- if (!signerPubkey) {
93
- throw new Error("Unable to send nip46 request without a signer pubkey");
94
- }
95
- const payload = JSON.stringify({ id, method, params });
96
- const content = await this.signer[algorithm].encrypt(signerPubkey, payload);
97
- const template = (0, util_1.createEvent)(util_1.NOSTR_CONNECT, { content, tags: [["p", signerPubkey]] });
98
- const event = await this.signer.sign(template);
99
- const pub = (0, net_1.publish)({ relays, event });
100
- this.emit(Nip46Event.Send, { ...request, pub });
101
- };
102
- this.process = async () => {
103
- if (this.processing) {
104
- return;
105
- }
106
- this.processing = true;
107
- try {
108
- while (this.queue.length > 0) {
109
- const [request] = this.queue.splice(0, 1);
110
- try {
111
- await this.send(request);
112
- }
113
- catch (error) {
114
- console.error(`nip46 error:`, error, request);
115
- }
116
- }
117
- }
118
- finally {
119
- this.processing = false;
120
- }
121
- };
122
- this.enqueue = (request) => {
123
- this.queue.push(request);
124
- this.process();
125
- };
126
- this.stop = () => {
127
- this.removeAllListeners();
128
- };
129
- }
130
- }
131
- exports.Nip46Sender = Nip46Sender;
132
- class Nip46Request {
133
- constructor(method, params) {
134
- this.method = method;
135
- this.params = params;
136
- this.id = (0, lib_1.randomId)();
137
- this.promise = (0, lib_1.defer)();
138
- this.listen = async (receiver) => {
139
- await receiver.start();
140
- const onReceive = (response) => {
141
- if (response.id !== this.id) {
142
- return;
143
- }
144
- if (response.result === "auth_url") {
145
- popupManager.open(response.error);
146
- }
147
- else {
148
- if (response.error) {
149
- this.promise.reject(response);
150
- }
151
- else {
152
- this.promise.resolve(response);
153
- }
154
- receiver.off(Nip46Event.Receive, onReceive);
155
- }
156
- };
157
- receiver.on(Nip46Event.Receive, onReceive);
158
- };
159
- this.send = async (sender) => {
160
- sender.enqueue(this);
161
- };
162
- }
163
- }
164
- exports.Nip46Request = Nip46Request;
165
- class Nip46Broker extends lib_1.Emitter {
166
- constructor(params) {
167
- super();
168
- this.params = params;
169
- // Getters for helper objects
170
- this.makeSigner = () => new nip01_1.Nip01Signer(this.params.clientSecret);
171
- this.makeSender = () => {
172
- const sender = new Nip46Sender(this.signer, this.params);
173
- sender.on(Nip46Event.Send, (data) => {
174
- console.log('nip46 send:', data);
175
- });
176
- return sender;
177
- };
178
- this.makeReceiver = () => {
179
- const receiver = new Nip46Receiver(this.signer, this.params);
180
- receiver.on(Nip46Event.Receive, (data) => {
181
- console.log('nip46 receive:', data);
182
- });
183
- return receiver;
184
- };
185
- // Lifecycle methods
186
- this.setParams = (params) => {
187
- this.params = { ...this.params, ...params };
188
- // Stop everything that's stateful
189
- this.teardown();
190
- // Set it back up again
191
- this.sender = this.makeSender();
192
- this.receiver = this.makeReceiver();
193
- };
194
- this.teardown = () => {
195
- this.sender.stop();
196
- this.receiver.stop();
197
- };
198
- // General purpose utility methods
199
- this.enqueue = async (method, params) => {
200
- const request = new Nip46Request(method, params);
201
- await request.listen(this.receiver);
202
- await request.send(this.sender);
203
- return request;
204
- };
205
- this.send = async (method, params) => {
206
- const request = await this.enqueue(method, params);
207
- const response = await request.promise;
208
- return response.result;
209
- };
210
- // Methods for initiating a connection
211
- this.parseBunkerUrl = (url) => {
212
- let connectSecret = "";
213
- let signerPubkey = "";
214
- let relays = [];
215
- try {
216
- const _url = new URL(url);
217
- relays = _url.searchParams.getAll("relay") || [];
218
- signerPubkey = _url.hostname || _url.pathname.replace(/\//g, '');
219
- connectSecret = _url.searchParams.get("secret") || "";
220
- }
221
- catch (_a) {
222
- // pass
223
- }
224
- return { signerPubkey, connectSecret, relays: relays.map(util_1.normalizeRelayUrl) };
225
- };
226
- this.makeNostrconnectUrl = async (meta = {}) => {
227
- const clientPubkey = await this.signer.getPubkey();
228
- const secret = Math.random().toString(36).substring(7);
229
- const params = new URLSearchParams({ ...meta, secret });
230
- for (const relay of this.params.relays) {
231
- params.append('relay', relay);
232
- }
233
- return `nostrconnect://${clientPubkey}?${params.toString()}`;
234
- };
235
- this.waitForNostrconnect = (url, abort) => {
236
- const secret = new URL(url).searchParams.get('secret');
237
- return (0, lib_1.makePromise)((resolve, reject) => {
238
- const onReceive = (response) => {
239
- if (["ack", secret].includes(response.result)) {
240
- this.setParams({ signerPubkey: response.event.pubkey });
241
- if (response.result === 'ack') {
242
- console.warn("Bunker responded to nostrconnect with 'ack', which can lead to session hijacking");
243
- }
244
- resolve(response);
245
- }
246
- else {
247
- reject(response);
248
- }
249
- cleanup();
250
- };
251
- const cleanup = () => {
252
- this.receiver.off(Nip46Event.Receive, onReceive);
253
- };
254
- this.receiver.on(Nip46Event.Receive, onReceive);
255
- this.receiver.start();
256
- abort === null || abort === void 0 ? void 0 : abort.signal.addEventListener('abort', () => {
257
- reject(undefined);
258
- cleanup();
259
- });
260
- });
261
- };
262
- // Normal NIP 46 methods
263
- this.ping = () => this.send("ping", []);
264
- this.getPublicKey = () => this.send("get_public_key", []);
265
- this.createAccount = (username, domain, perms = "") => this.send("create_account", [username, domain, "", perms]);
266
- this.connect = async (signerPubkey, connectSecret = "", perms = "") => this.send("connect", [signerPubkey, connectSecret, perms]);
267
- this.signEvent = async (event) => JSON.parse(await this.send("sign_event", [JSON.stringify(event)]));
268
- this.nip04Encrypt = (pk, message) => this.send("nip04_encrypt", [pk, message]);
269
- this.nip04Decrypt = (pk, message) => this.send("nip04_decrypt", [pk, message]);
270
- this.nip44Encrypt = (pk, message) => this.send("nip44_encrypt", [pk, message]);
271
- this.nip44Decrypt = (pk, message) => this.send("nip44_decrypt", [pk, message]);
272
- this.signer = this.makeSigner();
273
- this.sender = this.makeSender();
274
- this.receiver = this.makeReceiver();
275
- }
276
- // Use a static getter to avoid duplicate connections
277
- static get(params) {
278
- if (!(singleton === null || singleton === void 0 ? void 0 : singleton.hasParams(params))) {
279
- singleton === null || singleton === void 0 ? void 0 : singleton.teardown();
280
- singleton = new Nip46Broker(params);
281
- }
282
- return singleton;
283
- }
284
- // Expose params without exposing params
285
- hasParams(params) {
286
- return (0, lib_1.equals)(this.params, params);
287
- }
288
- }
289
- exports.Nip46Broker = Nip46Broker;
290
- class Nip46Signer {
291
- constructor(broker) {
292
- this.broker = broker;
293
- this.getPubkey = async () => {
294
- if (!this.pubkey) {
295
- this.pubkey = await this.broker.getPublicKey();
296
- }
297
- return this.pubkey;
298
- };
299
- this.sign = async (template) => this.broker.signEvent((0, util_2.hash)((0, util_2.own)(template, await this.getPubkey())));
300
- this.nip04 = {
301
- encrypt: this.broker.nip04Encrypt,
302
- decrypt: this.broker.nip04Decrypt,
303
- };
304
- this.nip44 = {
305
- encrypt: this.broker.nip44Encrypt,
306
- decrypt: this.broker.nip44Decrypt,
307
- };
308
- }
309
- }
310
- exports.Nip46Signer = Nip46Signer;
311
- //# sourceMappingURL=nip46.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nip46.cjs","sourceRoot":"","sources":["../../../src/signers/nip46.ts"],"names":[],"mappings":"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"}