@welshman/signer 0.0.15 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,93 @@
1
- # @welshman/store [![version](https://badgen.net/npm/v/@welshman/store)](https://npmjs.com/package/@welshman/store)
1
+ # @welshman/signer [![version](https://badgen.net/npm/v/@welshman/signer)](https://npmjs.com/package/@welshman/signer)
2
2
 
3
- Utilities for dealing with svelte stores when using welshman.
3
+ Implementations of signer utilities and classes.
4
+
5
+ ## Nips supported
6
+
7
+ - NIP 01 (private key login)
8
+ - NIP 07
9
+ - NIP 46
10
+ - NIP 55
11
+ - NIP 59 (gift wrapping, works with any signer that supports encryption)
12
+
13
+ ## Examples
14
+
15
+ ### NIP 01
16
+
17
+ ```typescript
18
+ import {makeSecret, Nip01Signer} from '@welshman/signer'
19
+
20
+ const signer = Nip01Signer.fromSecret(makeSecret())
21
+ ```
22
+
23
+ ### NIP 07
24
+
25
+ ```typescript
26
+ import {getNip07, Nip07Signer} from '@welshman/signer'
27
+
28
+ if (getNip07()) {
29
+ const signer = new Nip07Signer()
30
+ }
31
+ ```
32
+
33
+ ### NIP 55
34
+
35
+ ```typescript
36
+ import {getNip07, Nip07Signer} from '@welshman/signer'
37
+
38
+ if (getNip07()) {
39
+ const signer = new Nip07Signer()
40
+ }
41
+ ```
42
+
43
+ ### NIP 46
44
+
45
+ ```typescript
46
+ import {createEvent, NOTE} from '@welshman/util'
47
+ import {makeSecret, Nip46Broker, Nip46Signer} from '@welshman/signer'
48
+
49
+ const clientSecret = makeSecret()
50
+ const relays = ['wss://relay.signer.example/']
51
+ const broker = Nip46Broker.get({relays, clientSecret})
52
+ const signer = new Nip46Signer(broker)
53
+ const ncUrl = broker.makeNostrconnectUrl({name: "My app"})
54
+ const abortController = new AbortController()
55
+
56
+ let response
57
+ try {
58
+ response = await broker.waitForNostrconnect(url, abortController)
59
+ } catch (e: any) {
60
+ if (e?.error) {
61
+ showWarning(`Received error from signer: ${e.error}`)
62
+ } else if (e) {
63
+ console.error(e)
64
+ }
65
+ }
66
+
67
+ if (response) {
68
+ // Now we know the bunker's pubkey and can do stuff with the signer
69
+ const signerPubkey = response.event.pubkey
70
+
71
+ // Next time we want to use our signer, we can instantiate it like so:
72
+ const newBroker = Nip46Broker.get({relays, clientSecret, signerPubkey})
73
+ const newSigner = new Nip46Signer(newBroker)
74
+ }
75
+ ```
76
+
77
+ ### Using signers
78
+
79
+ ```typescript
80
+ import {createEvent, NOTE, DIRECT_MESSAGE} from '@welshman/util'
81
+
82
+ const signer = // Create your signer...
83
+ const nip59 = Nip59.fromSigner(signer)
84
+
85
+ // Sign an event
86
+ const event = await signer.sign(createEvent(NOTE, {content: "hi"}))
87
+
88
+ // Wrap a NIP 17 DM
89
+ const rumor = await nip59.wrap(recipientPubkey, createEvent(DIRECT_MESSAGE, {content: "hi"}))
90
+
91
+ // Note that it returns a rumor; be sure to publish the `wrap`
92
+ const wrap = rumor.wrap
93
+ ```
@@ -1,234 +1,300 @@
1
1
  "use strict";
2
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
- if (kind === "m") throw new TypeError("Private method is not writable");
4
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
- 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");
6
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
- };
8
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
- 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");
11
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
- };
13
- var _Nip46Broker_signer, _Nip46Broker_handler, _Nip46Broker_algorithm, _Nip46Broker_closed, _Nip46Broker_processing, _Nip46Broker_connectResponse, _Nip46Broker_queue, _Nip46Broker_window, _Nip46Broker_sub, _Nip46Broker_subscribe, _Nip46Broker_processQueue, _Nip46Broker_getResult, _Nip46Signer_pubkey;
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.Nip46Signer = exports.Nip46Broker = void 0;
3
+ exports.Nip46Signer = exports.Nip46Broker = exports.Nip46Request = exports.Nip46Sender = exports.Nip46Receiver = exports.Nip46Event = void 0;
16
4
  const lib_1 = require("@welshman/lib");
17
5
  const util_1 = require("@welshman/util");
18
6
  const net_1 = require("@welshman/net");
19
7
  const util_2 = require("../util.cjs");
20
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 = {}));
21
14
  let singleton;
22
- class Nip46Broker extends lib_1.Emitter {
23
- static initiate({ url, name, image, perms, relays, abortController }) {
24
- const secret = Math.random().toString(36).substring(7);
25
- const clientSecret = (0, util_2.makeSecret)();
26
- const clientPubkey = (0, util_2.getPubkey)(clientSecret);
27
- const clientSigner = new nip01_1.Nip01Signer(clientSecret);
28
- const params = new URLSearchParams({ secret, url, name, image, perms });
29
- for (const relay of relays) {
30
- params.append('relay', relay);
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);
31
26
  }
32
- const nostrconnect = `nostrconnect://${clientPubkey}?${params.toString()}`;
33
- const result = new Promise(resolve => {
34
- const complete = (pubkey) => {
35
- sub.close();
36
- resolve(pubkey);
37
- };
38
- const sub = (0, net_1.subscribe)({
39
- relays,
40
- filters: [{ kinds: [util_1.NOSTR_CONNECT], "#p": [clientPubkey] }],
41
- onEvent: async ({ pubkey, content }) => {
42
- const response = await (0, lib_1.tryCatch)(async () => JSON.parse(await (0, util_2.decrypt)(clientSigner, pubkey, content)));
43
- if ((response === null || response === void 0 ? void 0 : response.result) === secret) {
44
- complete(pubkey);
45
- }
46
- if ((response === null || response === void 0 ? void 0 : response.result) === 'ack') {
47
- console.warn("Bunker responded to nostrconnect with 'ack', which can lead to session hijacking");
48
- complete(pubkey);
49
- }
50
- },
51
- });
52
- abortController === null || abortController === void 0 ? void 0 : abortController.signal.addEventListener('abort', () => complete());
53
- });
54
- return { result, params, nostrconnect, clientSecret, clientPubkey };
55
- }
56
- static parseBunkerLink(link) {
57
- let token = "";
58
- let pubkey = "";
59
- let relays = [];
60
- try {
61
- const url = new URL(link);
62
- pubkey = url.hostname || url.pathname.replace(/\//g, '');
63
- relays = url.searchParams.getAll("relay") || [];
64
- token = url.searchParams.get("secret") || "";
65
- }
66
- catch (_a) {
67
- // pass
68
- }
69
- return { token, pubkey, relays };
70
- }
71
- static get(params) {
72
- if (!(singleton === null || singleton === void 0 ? void 0 : singleton.hasParams(params))) {
73
- singleton === null || singleton === void 0 ? void 0 : singleton.teardown();
74
- singleton = new Nip46Broker(params);
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;
75
37
  }
76
- return singleton;
77
- }
78
- constructor(params) {
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) {
79
49
  super();
50
+ this.signer = signer;
80
51
  this.params = params;
81
- _Nip46Broker_signer.set(this, void 0);
82
- _Nip46Broker_handler.set(this, void 0);
83
- _Nip46Broker_algorithm.set(this, void 0);
84
- _Nip46Broker_closed.set(this, false);
85
- _Nip46Broker_processing.set(this, false);
86
- _Nip46Broker_connectResponse.set(this, void 0);
87
- _Nip46Broker_queue.set(this, []);
88
- _Nip46Broker_window.set(this, void 0);
89
- _Nip46Broker_sub.set(this, void 0);
90
- _Nip46Broker_subscribe.set(this, async () => {
91
- const pubkey = await __classPrivateFieldGet(this, _Nip46Broker_signer, "f").getPubkey();
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 });
92
58
  return new Promise(resolve => {
93
- if (__classPrivateFieldGet(this, _Nip46Broker_sub, "f")) {
94
- __classPrivateFieldGet(this, _Nip46Broker_sub, "f").close();
95
- }
96
- __classPrivateFieldSet(this, _Nip46Broker_sub, (0, net_1.subscribe)({
97
- relays: __classPrivateFieldGet(this, _Nip46Broker_handler, "f").relays,
98
- filters: [{ kinds: [util_1.NOSTR_CONNECT], "#p": [pubkey] }],
99
- }), "f");
100
- __classPrivateFieldGet(this, _Nip46Broker_sub, "f").emitter.on(net_1.SubscriptionEvent.Send, resolve);
101
- __classPrivateFieldGet(this, _Nip46Broker_sub, "f").emitter.on(net_1.SubscriptionEvent.Event, async (url, event) => {
102
- const json = await (0, util_2.decrypt)(__classPrivateFieldGet(this, _Nip46Broker_signer, "f"), event.pubkey, event.content);
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);
103
62
  const response = (0, lib_1.tryCatch)(() => JSON.parse(json)) || {};
104
- if (!response.id) {
105
- console.error(`Invalid nostr-connect response: ${json}`);
106
- }
107
63
  // Delay errors in case there's a zombie signer out there clogging things up
108
64
  if (response.error) {
109
65
  await (0, lib_1.sleep)(3000);
110
66
  }
111
- if (response.result === "auth_url") {
112
- this.emit(`auth-${response.id}`, response);
113
- }
114
- else {
115
- this.emit(`res-${response.id}`, response);
116
- }
67
+ this.emit(Nip46Event.Receive, { ...response, url, event });
117
68
  });
118
- __classPrivateFieldGet(this, _Nip46Broker_sub, "f").emitter.on("complete", () => {
119
- __classPrivateFieldSet(this, _Nip46Broker_sub, undefined, "f");
69
+ this.sub.emitter.on(net_1.SubscriptionEvent.Complete, () => {
70
+ this.sub = undefined;
120
71
  });
121
72
  });
122
- });
123
- _Nip46Broker_processQueue.set(this, async () => {
124
- if (__classPrivateFieldGet(this, _Nip46Broker_processing, "f")) {
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) {
125
104
  return;
126
105
  }
127
- __classPrivateFieldSet(this, _Nip46Broker_processing, true, "f");
106
+ this.processing = true;
128
107
  try {
129
- while (__classPrivateFieldGet(this, _Nip46Broker_queue, "f").length > 0) {
130
- const [{ method, params, resolve }] = __classPrivateFieldGet(this, _Nip46Broker_queue, "f").splice(0, 1);
108
+ while (this.queue.length > 0) {
109
+ const [request] = this.queue.splice(0, 1);
131
110
  try {
132
- const response = await this.request(method, params);
133
- console.log('nip46 response:', { method, params, ...response });
134
- resolve(response);
111
+ await this.send(request);
135
112
  }
136
113
  catch (error) {
137
- console.error(`nip46 error:`, { method, params, ...error });
114
+ console.error(`nip46 error:`, error, request);
138
115
  }
139
116
  }
140
117
  }
141
118
  finally {
142
- __classPrivateFieldSet(this, _Nip46Broker_processing, false, "f");
143
- }
144
- });
145
- _Nip46Broker_getResult.set(this, async (promise) => {
146
- const { result } = await promise;
147
- return result;
148
- });
149
- this.request = async (method, params) => {
150
- if (__classPrivateFieldGet(this, _Nip46Broker_closed, "f")) {
151
- throw new Error("Attempted to make a nip46 request with a closed broker");
152
- }
153
- if (!__classPrivateFieldGet(this, _Nip46Broker_sub, "f")) {
154
- await __classPrivateFieldGet(this, _Nip46Broker_subscribe, "f").call(this);
119
+ this.processing = false;
155
120
  }
156
- const id = (0, lib_1.randomId)();
157
- const recipient = __classPrivateFieldGet(this, _Nip46Broker_handler, "f").pubkey;
158
- const payload = JSON.stringify({ id, method, params });
159
- const content = await __classPrivateFieldGet(this, _Nip46Broker_signer, "f")[__classPrivateFieldGet(this, _Nip46Broker_algorithm, "f")].encrypt(recipient, payload);
160
- const template = (0, util_1.createEvent)(util_1.NOSTR_CONNECT, { content, tags: [["p", recipient]] });
161
- console.log('nip46 request:', { id, method, params });
162
- (0, net_1.publish)({
163
- relays: __classPrivateFieldGet(this, _Nip46Broker_handler, "f").relays,
164
- event: await __classPrivateFieldGet(this, _Nip46Broker_signer, "f").sign(template),
165
- });
166
- this.once(`auth-${id}`, response => {
167
- if (!__classPrivateFieldGet(this, _Nip46Broker_window, "f") || __classPrivateFieldGet(this, _Nip46Broker_window, "f").closed) {
168
- const w = window.open(response.error, "", "width=600,height=800,popup=yes");
169
- if (w) {
170
- __classPrivateFieldSet(this, _Nip46Broker_window, w, "f");
171
- }
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;
172
143
  }
173
- });
174
- return new Promise((resolve, reject) => {
175
- this.once(`res-${id}`, (response) => {
144
+ if (response.result === "auth_url") {
145
+ popupManager.open(response.error);
146
+ }
147
+ else {
176
148
  if (response.error) {
177
- reject(response);
149
+ this.promise.reject(response);
178
150
  }
179
151
  else {
180
- resolve(response);
152
+ this.promise.resolve(response);
181
153
  }
182
- });
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);
183
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();
184
197
  };
185
- this.enqueue = (method, params) => new Promise(resolve => {
186
- __classPrivateFieldGet(this, _Nip46Broker_queue, "f").push({ method, params, resolve });
187
- __classPrivateFieldGet(this, _Nip46Broker_processQueue, "f").call(this);
188
- });
189
- this.createAccount = (username, perms = "") => {
190
- if (!__classPrivateFieldGet(this, _Nip46Broker_handler, "f").domain) {
191
- throw new Error("Unable to create an account without a handler domain");
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") || "";
192
220
  }
193
- return __classPrivateFieldGet(this, _Nip46Broker_getResult, "f").call(this, this.enqueue("create_account", [username, __classPrivateFieldGet(this, _Nip46Broker_handler, "f").domain, "", perms]));
221
+ catch (_a) {
222
+ // pass
223
+ }
224
+ return { signerPubkey, connectSecret, relays: relays.map(util_1.normalizeRelayUrl) };
194
225
  };
195
- this.connect = async (token = "", perms = "", secret = "") => {
196
- if (!__classPrivateFieldGet(this, _Nip46Broker_connectResponse, "f")) {
197
- const params = ["", token, perms];
198
- __classPrivateFieldSet(this, _Nip46Broker_connectResponse, await this.enqueue("connect", params), "f");
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);
199
232
  }
200
- return __classPrivateFieldGet(this, _Nip46Broker_connectResponse, "f").result === 'ack';
201
- };
202
- this.getPublicKey = () => __classPrivateFieldGet(this, _Nip46Broker_getResult, "f").call(this, this.enqueue("get_public_key", []));
203
- this.signEvent = async (event) => JSON.parse(await __classPrivateFieldGet(this, _Nip46Broker_getResult, "f").call(this, this.enqueue("sign_event", [JSON.stringify(event)])));
204
- this.nip04Encrypt = (pk, message) => __classPrivateFieldGet(this, _Nip46Broker_getResult, "f").call(this, this.enqueue("nip04_encrypt", [pk, message]));
205
- this.nip04Decrypt = (pk, message) => __classPrivateFieldGet(this, _Nip46Broker_getResult, "f").call(this, this.enqueue("nip04_decrypt", [pk, message]));
206
- this.nip44Encrypt = (pk, message) => __classPrivateFieldGet(this, _Nip46Broker_getResult, "f").call(this, this.enqueue("nip44_encrypt", [pk, message]));
207
- this.nip44Decrypt = (pk, message) => __classPrivateFieldGet(this, _Nip46Broker_getResult, "f").call(this, this.enqueue("nip44_decrypt", [pk, message]));
208
- this.teardown = () => {
209
- var _a;
210
- __classPrivateFieldSet(this, _Nip46Broker_closed, true, "f");
211
- (_a = __classPrivateFieldGet(this, _Nip46Broker_sub, "f")) === null || _a === void 0 ? void 0 : _a.close();
233
+ return `nostrconnect://${clientPubkey}?${params.toString()}`;
212
234
  };
213
- __classPrivateFieldSet(this, _Nip46Broker_handler, params.handler, "f");
214
- __classPrivateFieldSet(this, _Nip46Broker_algorithm, params.algorithm || 'nip44', "f");
215
- __classPrivateFieldSet(this, _Nip46Broker_signer, new nip01_1.Nip01Signer(params.secret), "f");
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;
216
283
  }
284
+ // Expose params without exposing params
217
285
  hasParams(params) {
218
286
  return (0, lib_1.equals)(this.params, params);
219
287
  }
220
288
  }
221
289
  exports.Nip46Broker = Nip46Broker;
222
- _Nip46Broker_signer = new WeakMap(), _Nip46Broker_handler = new WeakMap(), _Nip46Broker_algorithm = new WeakMap(), _Nip46Broker_closed = new WeakMap(), _Nip46Broker_processing = new WeakMap(), _Nip46Broker_connectResponse = new WeakMap(), _Nip46Broker_queue = new WeakMap(), _Nip46Broker_window = new WeakMap(), _Nip46Broker_sub = new WeakMap(), _Nip46Broker_subscribe = new WeakMap(), _Nip46Broker_processQueue = new WeakMap(), _Nip46Broker_getResult = new WeakMap();
223
290
  class Nip46Signer {
224
291
  constructor(broker) {
225
292
  this.broker = broker;
226
- _Nip46Signer_pubkey.set(this, void 0);
227
293
  this.getPubkey = async () => {
228
- if (!__classPrivateFieldGet(this, _Nip46Signer_pubkey, "f")) {
229
- __classPrivateFieldSet(this, _Nip46Signer_pubkey, await this.broker.getPublicKey(), "f");
294
+ if (!this.pubkey) {
295
+ this.pubkey = await this.broker.getPublicKey();
230
296
  }
231
- return __classPrivateFieldGet(this, _Nip46Signer_pubkey, "f");
297
+ return this.pubkey;
232
298
  };
233
299
  this.sign = async (template) => this.broker.signEvent((0, util_2.hash)((0, util_2.own)(template, await this.getPubkey())));
234
300
  this.nip04 = {
@@ -242,5 +308,4 @@ class Nip46Signer {
242
308
  }
243
309
  }
244
310
  exports.Nip46Signer = Nip46Signer;
245
- _Nip46Signer_pubkey = new WeakMap();
246
311
  //# sourceMappingURL=nip46.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"nip46.cjs","sourceRoot":"","sources":["../../../src/signers/nip46.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nip46.cjs","sourceRoot":"","sources":["../../../src/signers/nip46.ts"],"names":[],"mappings":"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"}