@welshman/signer 0.0.16 → 0.0.18

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 (50) hide show
  1. package/README.md +92 -2
  2. package/build/src/index.d.ts +6 -6
  3. package/build/src/index.js +7 -0
  4. package/build/src/index.js.map +1 -0
  5. package/build/src/nip59.d.ts +3 -3
  6. package/build/src/{nip59.mjs → nip59.js} +11 -9
  7. package/build/src/nip59.js.map +1 -0
  8. package/build/src/signers/nip01.d.ts +2 -2
  9. package/build/src/signers/nip01.js +22 -0
  10. package/build/src/signers/nip01.js.map +1 -0
  11. package/build/src/signers/nip07.d.ts +2 -2
  12. package/build/src/signers/nip07.js +30 -0
  13. package/build/src/signers/nip07.js.map +1 -0
  14. package/build/src/signers/nip46.d.ts +5 -11
  15. package/build/src/signers/nip46.js +317 -0
  16. package/build/src/signers/nip46.js.map +1 -0
  17. package/build/src/signers/nip55.d.ts +2 -2
  18. package/build/src/signers/nip55.js +134 -0
  19. package/build/src/signers/nip55.js.map +1 -0
  20. package/build/src/util.d.ts +4 -4
  21. package/build/src/{util.mjs → util.js} +7 -5
  22. package/build/src/util.js.map +1 -0
  23. package/build/tsconfig.tsbuildinfo +1 -0
  24. package/package.json +12 -12
  25. package/build/src/index.cjs +0 -23
  26. package/build/src/index.cjs.map +0 -1
  27. package/build/src/index.mjs +0 -7
  28. package/build/src/index.mjs.map +0 -1
  29. package/build/src/nip59.cjs +0 -76
  30. package/build/src/nip59.cjs.map +0 -1
  31. package/build/src/nip59.mjs.map +0 -1
  32. package/build/src/signers/nip01.cjs +0 -38
  33. package/build/src/signers/nip01.cjs.map +0 -1
  34. package/build/src/signers/nip01.mjs +0 -34
  35. package/build/src/signers/nip01.mjs.map +0 -1
  36. package/build/src/signers/nip07.cjs +0 -50
  37. package/build/src/signers/nip07.cjs.map +0 -1
  38. package/build/src/signers/nip07.mjs +0 -45
  39. package/build/src/signers/nip07.mjs.map +0 -1
  40. package/build/src/signers/nip46.cjs +0 -314
  41. package/build/src/signers/nip46.cjs.map +0 -1
  42. package/build/src/signers/nip46.mjs +0 -306
  43. package/build/src/signers/nip46.mjs.map +0 -1
  44. package/build/src/signers/nip55.cjs +0 -151
  45. package/build/src/signers/nip55.cjs.map +0 -1
  46. package/build/src/signers/nip55.mjs +0 -146
  47. package/build/src/signers/nip55.mjs.map +0 -1
  48. package/build/src/util.cjs +0 -42
  49. package/build/src/util.cjs.map +0 -1
  50. 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,314 +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 throttle_debounce_1 = require("throttle-debounce");
5
- const lib_1 = require("@welshman/lib");
6
- const util_1 = require("@welshman/util");
7
- const net_1 = require("@welshman/net");
8
- const util_2 = require("../util.cjs");
9
- const nip01_1 = require("./nip01.cjs");
10
- var Nip46Event;
11
- (function (Nip46Event) {
12
- Nip46Event["Send"] = "send";
13
- Nip46Event["Receive"] = "receive";
14
- })(Nip46Event || (exports.Nip46Event = Nip46Event = {}));
15
- let singleton;
16
- const popupManager = (() => {
17
- let pendingUrl = "";
18
- let pendingSince = 0;
19
- let currentWindow;
20
- const openPending = (0, throttle_debounce_1.throttle)(1000, () => {
21
- // If it's been a while since they asked for it, drop the request
22
- if (Date.now() - pendingSince > 10000)
23
- return;
24
- // If we have an active, open window, continue to wait
25
- if (currentWindow && !currentWindow.closed) {
26
- setTimeout(() => openPending(), 100);
27
- }
28
- else {
29
- // Attempt to open the window
30
- const w = window.open(pendingUrl, "", "width=600,height=800,popup=yes");
31
- // If open was successful, keep track of our window
32
- if (w) {
33
- currentWindow = w;
34
- }
35
- // In any case, this url has been handled
36
- pendingUrl = "";
37
- pendingSince = 0;
38
- }
39
- });
40
- return {
41
- open: (url) => {
42
- pendingUrl = url;
43
- pendingSince = Date.now();
44
- openPending();
45
- },
46
- };
47
- })();
48
- class Nip46Receiver extends lib_1.Emitter {
49
- constructor(signer, params) {
50
- super();
51
- this.signer = signer;
52
- this.params = params;
53
- this.start = async () => {
54
- if (this.sub)
55
- return;
56
- const userPubkey = await this.signer.getPubkey();
57
- const filters = [{ kinds: [util_1.NOSTR_CONNECT], "#p": [userPubkey] }];
58
- this.sub = (0, net_1.subscribe)({ relays: this.params.relays, filters });
59
- return new Promise(resolve => {
60
- this.sub.emitter.on(net_1.SubscriptionEvent.Send, resolve);
61
- this.sub.emitter.on(net_1.SubscriptionEvent.Event, async (url, event) => {
62
- const json = await (0, util_2.decrypt)(this.signer, event.pubkey, event.content);
63
- const response = (0, lib_1.tryCatch)(() => JSON.parse(json)) || {};
64
- // Delay errors in case there's a zombie signer out there clogging things up
65
- if (response.error) {
66
- await (0, lib_1.sleep)(3000);
67
- }
68
- if (response.id) {
69
- this.emit(Nip46Event.Receive, { ...response, url, event });
70
- }
71
- });
72
- this.sub.emitter.on(net_1.SubscriptionEvent.Complete, () => {
73
- this.sub = undefined;
74
- });
75
- });
76
- };
77
- this.stop = () => {
78
- var _a;
79
- (_a = this.sub) === null || _a === void 0 ? void 0 : _a.close();
80
- this.removeAllListeners();
81
- };
82
- }
83
- }
84
- exports.Nip46Receiver = Nip46Receiver;
85
- class Nip46Sender extends lib_1.Emitter {
86
- constructor(signer, params) {
87
- super();
88
- this.signer = signer;
89
- this.params = params;
90
- this.processing = false;
91
- this.queue = [];
92
- this.send = async (request) => {
93
- const { id, method, params } = request;
94
- const { relays, signerPubkey, algorithm = "nip44" } = this.params;
95
- if (!signerPubkey) {
96
- throw new Error("Unable to send nip46 request without a signer pubkey");
97
- }
98
- const payload = JSON.stringify({ id, method, params });
99
- const content = await this.signer[algorithm].encrypt(signerPubkey, payload);
100
- const template = (0, util_1.createEvent)(util_1.NOSTR_CONNECT, { content, tags: [["p", signerPubkey]] });
101
- const event = await this.signer.sign(template);
102
- const pub = (0, net_1.publish)({ relays, event });
103
- this.emit(Nip46Event.Send, { ...request, pub });
104
- };
105
- this.process = async () => {
106
- if (this.processing) {
107
- return;
108
- }
109
- this.processing = true;
110
- try {
111
- while (this.queue.length > 0) {
112
- const [request] = this.queue.splice(0, 1);
113
- try {
114
- await this.send(request);
115
- }
116
- catch (error) {
117
- console.error(`nip46 error:`, error, request);
118
- }
119
- }
120
- }
121
- finally {
122
- this.processing = false;
123
- }
124
- };
125
- this.enqueue = (request) => {
126
- this.queue.push(request);
127
- this.process();
128
- };
129
- this.stop = () => {
130
- this.removeAllListeners();
131
- };
132
- }
133
- }
134
- exports.Nip46Sender = Nip46Sender;
135
- class Nip46Request {
136
- constructor(method, params) {
137
- this.method = method;
138
- this.params = params;
139
- this.id = (0, lib_1.randomId)();
140
- this.promise = (0, lib_1.defer)();
141
- this.listen = async (receiver) => {
142
- await receiver.start();
143
- const onReceive = (response) => {
144
- if (response.id !== this.id) {
145
- return;
146
- }
147
- if (response.result === "auth_url") {
148
- popupManager.open(response.error);
149
- }
150
- else {
151
- if (response.error) {
152
- this.promise.reject(response);
153
- }
154
- else {
155
- this.promise.resolve(response);
156
- }
157
- receiver.off(Nip46Event.Receive, onReceive);
158
- }
159
- };
160
- receiver.on(Nip46Event.Receive, onReceive);
161
- };
162
- this.send = async (sender) => {
163
- sender.enqueue(this);
164
- };
165
- }
166
- }
167
- exports.Nip46Request = Nip46Request;
168
- class Nip46Broker extends lib_1.Emitter {
169
- constructor(params) {
170
- super();
171
- this.params = params;
172
- // Getters for helper objects
173
- this.makeSigner = () => new nip01_1.Nip01Signer(this.params.clientSecret);
174
- this.makeSender = () => {
175
- const sender = new Nip46Sender(this.signer, this.params);
176
- sender.on(Nip46Event.Send, (data) => {
177
- console.log('nip46 send:', data);
178
- });
179
- return sender;
180
- };
181
- this.makeReceiver = () => {
182
- const receiver = new Nip46Receiver(this.signer, this.params);
183
- receiver.on(Nip46Event.Receive, (data) => {
184
- console.log('nip46 receive:', data);
185
- });
186
- return receiver;
187
- };
188
- // Lifecycle methods
189
- this.setParams = (params) => {
190
- this.params = { ...this.params, ...params };
191
- // Stop everything that's stateful
192
- this.teardown();
193
- // Set it back up again
194
- this.sender = this.makeSender();
195
- this.receiver = this.makeReceiver();
196
- };
197
- this.teardown = () => {
198
- this.sender.stop();
199
- this.receiver.stop();
200
- };
201
- // General purpose utility methods
202
- this.enqueue = async (method, params) => {
203
- const request = new Nip46Request(method, params);
204
- await request.listen(this.receiver);
205
- await request.send(this.sender);
206
- return request;
207
- };
208
- this.send = async (method, params) => {
209
- const request = await this.enqueue(method, params);
210
- const response = await request.promise;
211
- return response.result;
212
- };
213
- // Methods for initiating a connection
214
- this.parseBunkerUrl = (url) => {
215
- let connectSecret = "";
216
- let signerPubkey = "";
217
- let relays = [];
218
- try {
219
- const _url = new URL(url);
220
- relays = _url.searchParams.getAll("relay") || [];
221
- signerPubkey = _url.hostname || _url.pathname.replace(/\//g, '');
222
- connectSecret = _url.searchParams.get("secret") || "";
223
- }
224
- catch (_a) {
225
- // pass
226
- }
227
- return { signerPubkey, connectSecret, relays: relays.map(util_1.normalizeRelayUrl) };
228
- };
229
- this.makeNostrconnectUrl = async (meta = {}) => {
230
- const clientPubkey = await this.signer.getPubkey();
231
- const secret = Math.random().toString(36).substring(7);
232
- const params = new URLSearchParams({ ...meta, secret });
233
- for (const relay of this.params.relays) {
234
- params.append('relay', relay);
235
- }
236
- return `nostrconnect://${clientPubkey}?${params.toString()}`;
237
- };
238
- this.waitForNostrconnect = (url, abort) => {
239
- const secret = new URL(url).searchParams.get('secret');
240
- return (0, lib_1.makePromise)((resolve, reject) => {
241
- const onReceive = (response) => {
242
- if (["ack", secret].includes(response.result)) {
243
- this.setParams({ signerPubkey: response.event.pubkey });
244
- if (response.result === 'ack') {
245
- console.warn("Bunker responded to nostrconnect with 'ack', which can lead to session hijacking");
246
- }
247
- resolve(response);
248
- }
249
- else {
250
- reject(response);
251
- }
252
- cleanup();
253
- };
254
- const cleanup = () => {
255
- this.receiver.off(Nip46Event.Receive, onReceive);
256
- };
257
- this.receiver.on(Nip46Event.Receive, onReceive);
258
- this.receiver.start();
259
- abort === null || abort === void 0 ? void 0 : abort.signal.addEventListener('abort', () => {
260
- reject(undefined);
261
- cleanup();
262
- });
263
- });
264
- };
265
- // Normal NIP 46 methods
266
- this.ping = () => this.send("ping", []);
267
- this.getPublicKey = () => this.send("get_public_key", []);
268
- this.createAccount = (username, domain, perms = "") => this.send("create_account", [username, domain, "", perms]);
269
- this.connect = async (signerPubkey, connectSecret = "", perms = "") => this.send("connect", [signerPubkey, connectSecret, perms]);
270
- this.signEvent = async (event) => JSON.parse(await this.send("sign_event", [JSON.stringify(event)]));
271
- this.nip04Encrypt = (pk, message) => this.send("nip04_encrypt", [pk, message]);
272
- this.nip04Decrypt = (pk, message) => this.send("nip04_decrypt", [pk, message]);
273
- this.nip44Encrypt = (pk, message) => this.send("nip44_encrypt", [pk, message]);
274
- this.nip44Decrypt = (pk, message) => this.send("nip44_decrypt", [pk, message]);
275
- this.signer = this.makeSigner();
276
- this.sender = this.makeSender();
277
- this.receiver = this.makeReceiver();
278
- }
279
- // Use a static getter to avoid duplicate connections
280
- static get(params) {
281
- if (!(singleton === null || singleton === void 0 ? void 0 : singleton.hasParams(params))) {
282
- singleton === null || singleton === void 0 ? void 0 : singleton.teardown();
283
- singleton = new Nip46Broker(params);
284
- }
285
- return singleton;
286
- }
287
- // Expose params without exposing params
288
- hasParams(params) {
289
- return (0, lib_1.equals)(this.params, params);
290
- }
291
- }
292
- exports.Nip46Broker = Nip46Broker;
293
- class Nip46Signer {
294
- constructor(broker) {
295
- this.broker = broker;
296
- this.getPubkey = async () => {
297
- if (!this.pubkey) {
298
- this.pubkey = await this.broker.getPublicKey();
299
- }
300
- return this.pubkey;
301
- };
302
- this.sign = async (template) => this.broker.signEvent((0, util_2.hash)((0, util_2.own)(template, await this.getPubkey())));
303
- this.nip04 = {
304
- encrypt: this.broker.nip04Encrypt,
305
- decrypt: this.broker.nip04Decrypt,
306
- };
307
- this.nip44 = {
308
- encrypt: this.broker.nip44Encrypt,
309
- decrypt: this.broker.nip44Decrypt,
310
- };
311
- }
312
- }
313
- exports.Nip46Signer = Nip46Signer;
314
- //# 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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"}