nostr-core 0.7.0 → 0.9.0

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/dist/nip60.js ADDED
@@ -0,0 +1,256 @@
1
+ import { getPublicKey } from './crypto.js';
2
+ import { finalizeEvent } from './event.js';
3
+ import * as nip44 from './nip44.js';
4
+ // ── Event Kinds ────────────────────────────────────────────────────────
5
+ export const WALLET_KIND = 17375;
6
+ export const TOKEN_KIND = 7375;
7
+ export const HISTORY_KIND = 7376;
8
+ export const QUOTE_KIND = 7374;
9
+ // ── Self-encryption helpers ────────────────────────────────────────────
10
+ function selfEncrypt(content, secretKey) {
11
+ const ck = nip44.getConversationKey(secretKey, getPublicKey(secretKey));
12
+ return nip44.encrypt(content, ck);
13
+ }
14
+ function selfDecrypt(content, secretKey) {
15
+ const ck = nip44.getConversationKey(secretKey, getPublicKey(secretKey));
16
+ return nip44.decrypt(content, ck);
17
+ }
18
+ // ── Wallet (kind 17375) ────────────────────────────────────────────────
19
+ /**
20
+ * Create a kind 17375 wallet event template (unsigned).
21
+ *
22
+ * The wallet event is a replaceable event storing the wallet's private key
23
+ * and mint list, NIP-44 encrypted to self.
24
+ */
25
+ export function createWalletEventTemplate(wallet, secretKey) {
26
+ const tags = [
27
+ ['privkey', wallet.privkey],
28
+ ...wallet.mints.map(m => ['mint', m]),
29
+ ];
30
+ return {
31
+ kind: WALLET_KIND,
32
+ created_at: Math.floor(Date.now() / 1000),
33
+ tags: [],
34
+ content: selfEncrypt(JSON.stringify(tags), secretKey),
35
+ };
36
+ }
37
+ /**
38
+ * Create and sign a kind 17375 wallet event.
39
+ */
40
+ export function createWalletEvent(wallet, secretKey) {
41
+ return finalizeEvent(createWalletEventTemplate(wallet, secretKey), secretKey);
42
+ }
43
+ /**
44
+ * Decrypt and parse a kind 17375 wallet event.
45
+ */
46
+ export function parseWalletEvent(event, secretKey) {
47
+ if (event.kind !== WALLET_KIND) {
48
+ throw new Error(`Expected kind ${WALLET_KIND}, got ${event.kind}`);
49
+ }
50
+ const tags = JSON.parse(selfDecrypt(event.content, secretKey));
51
+ let privkey = '';
52
+ const mints = [];
53
+ for (const tag of tags) {
54
+ if (tag[0] === 'privkey')
55
+ privkey = tag[1];
56
+ else if (tag[0] === 'mint')
57
+ mints.push(tag[1]);
58
+ }
59
+ return { privkey, mints };
60
+ }
61
+ // ── Token (kind 7375) ──────────────────────────────────────────────────
62
+ /**
63
+ * Create a kind 7375 token event template (unsigned).
64
+ *
65
+ * Each token event stores unspent Cashu proofs for a single mint,
66
+ * NIP-44 encrypted to self.
67
+ */
68
+ export function createTokenEventTemplate(token, secretKey) {
69
+ const payload = {
70
+ mint: token.mint,
71
+ proofs: token.proofs,
72
+ };
73
+ if (token.unit)
74
+ payload.unit = token.unit;
75
+ if (token.del?.length)
76
+ payload.del = token.del;
77
+ return {
78
+ kind: TOKEN_KIND,
79
+ created_at: Math.floor(Date.now() / 1000),
80
+ tags: [],
81
+ content: selfEncrypt(JSON.stringify(payload), secretKey),
82
+ };
83
+ }
84
+ /**
85
+ * Create and sign a kind 7375 token event.
86
+ */
87
+ export function createTokenEvent(token, secretKey) {
88
+ return finalizeEvent(createTokenEventTemplate(token, secretKey), secretKey);
89
+ }
90
+ /**
91
+ * Decrypt and parse a kind 7375 token event.
92
+ */
93
+ export function parseTokenEvent(event, secretKey) {
94
+ if (event.kind !== TOKEN_KIND) {
95
+ throw new Error(`Expected kind ${TOKEN_KIND}, got ${event.kind}`);
96
+ }
97
+ const data = JSON.parse(selfDecrypt(event.content, secretKey));
98
+ return {
99
+ mint: data.mint,
100
+ proofs: data.proofs,
101
+ unit: data.unit || undefined,
102
+ del: data.del || undefined,
103
+ };
104
+ }
105
+ // ── Spending History (kind 7376) ───────────────────────────────────────
106
+ /**
107
+ * Create a kind 7376 spending history event template (unsigned).
108
+ *
109
+ * Records a wallet transaction. Event references with "redeemed" marker
110
+ * are placed in unencrypted tags; all others are NIP-44 encrypted.
111
+ */
112
+ export function createHistoryEventTemplate(history, secretKey) {
113
+ const encryptedTags = [
114
+ ['direction', history.direction],
115
+ ['amount', history.amount],
116
+ ['unit', history.unit],
117
+ ];
118
+ const plainTags = [];
119
+ for (const ev of history.events) {
120
+ const tag = ['e', ev.id, ev.relay || '', ev.marker];
121
+ if (ev.marker === 'redeemed') {
122
+ plainTags.push(tag);
123
+ }
124
+ else {
125
+ encryptedTags.push(tag);
126
+ }
127
+ }
128
+ return {
129
+ kind: HISTORY_KIND,
130
+ created_at: Math.floor(Date.now() / 1000),
131
+ tags: plainTags,
132
+ content: selfEncrypt(JSON.stringify(encryptedTags), secretKey),
133
+ };
134
+ }
135
+ /**
136
+ * Create and sign a kind 7376 spending history event.
137
+ */
138
+ export function createHistoryEvent(history, secretKey) {
139
+ return finalizeEvent(createHistoryEventTemplate(history, secretKey), secretKey);
140
+ }
141
+ /**
142
+ * Decrypt and parse a kind 7376 spending history event.
143
+ */
144
+ export function parseHistoryEvent(event, secretKey) {
145
+ if (event.kind !== HISTORY_KIND) {
146
+ throw new Error(`Expected kind ${HISTORY_KIND}, got ${event.kind}`);
147
+ }
148
+ const tags = JSON.parse(selfDecrypt(event.content, secretKey));
149
+ let direction = 'in';
150
+ let amount = '0';
151
+ let unit = 'sat';
152
+ const events = [];
153
+ for (const tag of tags) {
154
+ if (tag[0] === 'direction')
155
+ direction = tag[1];
156
+ else if (tag[0] === 'amount')
157
+ amount = tag[1];
158
+ else if (tag[0] === 'unit')
159
+ unit = tag[1];
160
+ else if (tag[0] === 'e')
161
+ events.push({ id: tag[1], relay: tag[2] || undefined, marker: tag[3] });
162
+ }
163
+ // Merge unencrypted tags (redeemed markers)
164
+ for (const tag of event.tags) {
165
+ if (tag[0] === 'e') {
166
+ events.push({ id: tag[1], relay: tag[2] || undefined, marker: tag[3] });
167
+ }
168
+ }
169
+ return { direction, amount, unit, events };
170
+ }
171
+ // ── Quote (kind 7374) ──────────────────────────────────────────────────
172
+ /**
173
+ * Create a kind 7374 quote event template (unsigned).
174
+ *
175
+ * Tracks a pending mint quote while a Lightning payment is in-flight.
176
+ * Uses NIP-40 expiration tag.
177
+ */
178
+ export function createQuoteEventTemplate(quote, secretKey) {
179
+ return {
180
+ kind: QUOTE_KIND,
181
+ created_at: Math.floor(Date.now() / 1000),
182
+ tags: [
183
+ ['expiration', String(quote.expiration)],
184
+ ['mint', quote.mint],
185
+ ],
186
+ content: selfEncrypt(quote.quoteId, secretKey),
187
+ };
188
+ }
189
+ /**
190
+ * Create and sign a kind 7374 quote event.
191
+ */
192
+ export function createQuoteEvent(quote, secretKey) {
193
+ return finalizeEvent(createQuoteEventTemplate(quote, secretKey), secretKey);
194
+ }
195
+ /**
196
+ * Decrypt and parse a kind 7374 quote event.
197
+ */
198
+ export function parseQuoteEvent(event, secretKey) {
199
+ if (event.kind !== QUOTE_KIND) {
200
+ throw new Error(`Expected kind ${QUOTE_KIND}, got ${event.kind}`);
201
+ }
202
+ const mint = event.tags.find(t => t[0] === 'mint')?.[1] || '';
203
+ const expiration = parseInt(event.tags.find(t => t[0] === 'expiration')?.[1] || '0', 10);
204
+ return {
205
+ quoteId: selfDecrypt(event.content, secretKey),
206
+ mint,
207
+ expiration,
208
+ };
209
+ }
210
+ // ── Token Deletion ─────────────────────────────────────────────────────
211
+ /**
212
+ * Create a kind 5 deletion event template for spent token events.
213
+ *
214
+ * Per NIP-60, the deletion MUST include `["k", "7375"]` for filtering.
215
+ */
216
+ export function createTokenDeleteTemplate(tokenEventIds) {
217
+ return {
218
+ kind: 5,
219
+ created_at: Math.floor(Date.now() / 1000),
220
+ tags: [
221
+ ...tokenEventIds.map(id => ['e', id]),
222
+ ['k', String(TOKEN_KIND)],
223
+ ],
224
+ content: '',
225
+ };
226
+ }
227
+ /**
228
+ * Create and sign a kind 5 deletion event for spent token events.
229
+ */
230
+ export function createTokenDeleteEvent(tokenEventIds, secretKey) {
231
+ return finalizeEvent(createTokenDeleteTemplate(tokenEventIds), secretKey);
232
+ }
233
+ // ── Relay Filters ──────────────────────────────────────────────────────
234
+ /**
235
+ * Build filters to fetch a user's wallet and all unspent token events.
236
+ */
237
+ export function getWalletFilters(pubkey) {
238
+ return [
239
+ { kinds: [WALLET_KIND], authors: [pubkey] },
240
+ { kinds: [TOKEN_KIND], authors: [pubkey] },
241
+ ];
242
+ }
243
+ /**
244
+ * Build a filter to fetch a user's spending history.
245
+ */
246
+ export function getHistoryFilter(pubkey) {
247
+ return { kinds: [HISTORY_KIND], authors: [pubkey] };
248
+ }
249
+ // ── Utilities ──────────────────────────────────────────────────────────
250
+ /**
251
+ * Sum the total amount of a set of Cashu proofs.
252
+ */
253
+ export function getProofsBalance(proofs) {
254
+ return proofs.reduce((sum, p) => sum + p.amount, 0);
255
+ }
256
+ //# sourceMappingURL=nip60.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip60.js","sourceRoot":"","sources":["../src/nip60.ts"],"names":[],"mappings":"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"}
package/dist/nwc.d.ts CHANGED
@@ -2,10 +2,10 @@ import type { GetInfoResponse, GetBalanceResponse, GetBudgetResponse, PayRespons
2
2
  type EventHandler = (notification: Nip47Notification) => void;
3
3
  export declare class NWC {
4
4
  private walletPubkey;
5
- private relayUrl;
5
+ private relayUrls;
6
6
  private secretKey;
7
7
  private publicKey;
8
- private relay;
8
+ private pool;
9
9
  private encryptionType;
10
10
  private conversationKey;
11
11
  private _connected;
@@ -13,6 +13,8 @@ export declare class NWC {
13
13
  private notificationSub;
14
14
  replyTimeout: number;
15
15
  publishTimeout: number;
16
+ /** Primary relay URL (first relay in the connection string) */
17
+ get relayUrl(): string;
16
18
  constructor(connectionString: string);
17
19
  static parseConnectionString(connectionString: string): NWCConnectionOptions;
18
20
  get connected(): boolean;
@@ -43,7 +45,6 @@ export declare class NWC {
43
45
  private _decrypt;
44
46
  private _executeRequest;
45
47
  private _startNotificationSub;
46
- private _queryEvents;
47
48
  }
48
49
  export {};
49
50
  //# sourceMappingURL=nwc.d.ts.map
package/dist/nwc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"nwc.d.ts","sourceRoot":"","sources":["../src/nwc.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,kBAAkB,EAElB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EAExB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,YAAY,CAAA;AAqBnB,KAAK,YAAY,GAAG,CAAC,YAAY,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAE7D,qBAAa,GAAG;IACd,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,eAAe,CAAkD;IAGlE,YAAY,SAAQ;IACpB,cAAc,SAAO;gBAEhB,gBAAgB,EAAE,MAAM;IASpC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,oBAAoB;IA2B5E,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBxB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAMlE,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIzC,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAI7D,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAInC,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAIvC,gBAAgB,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIzF,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAIjE,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAI3D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI1D,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMpG,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IASzE,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAY7D,GAAG,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAMxD,sBAAsB,CAC1B,cAAc,EAAE,CAAC,YAAY,EAAE,iBAAiB,KAAK,IAAI,EACzD,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,GAC1C,OAAO,CAAC,MAAM,IAAI,CAAC;IA8DtB,KAAK,IAAI,IAAI;YAUC,iBAAiB;YAsCjB,QAAQ;YAUR,QAAQ;YAcR,eAAe;IAkG7B,OAAO,CAAC,qBAAqB;YAuCf,YAAY;CA4B3B"}
1
+ {"version":3,"file":"nwc.d.ts","sourceRoot":"","sources":["../src/nwc.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,kBAAkB,EAElB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EAExB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,YAAY,CAAA;AAqBnB,KAAK,YAAY,GAAG,CAAC,YAAY,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAE7D,qBAAa,GAAG;IACd,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,eAAe,CAAkD;IAGlE,YAAY,SAAQ;IACpB,cAAc,SAAO;IAE5B,+DAA+D;IAC/D,IAAI,QAAQ,IAAI,MAAM,CAErB;gBAEW,gBAAgB,EAAE,MAAM;IASpC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,oBAAoB;IAgC5E,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BxB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAMlE,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIzC,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAI7D,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAInC,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAIvC,gBAAgB,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIzF,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAIjE,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAI3D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI1D,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMpG,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IASzE,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAY7D,GAAG,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAMxD,sBAAsB,CAC1B,cAAc,EAAE,CAAC,YAAY,EAAE,iBAAiB,KAAK,IAAI,EACzD,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,GAC1C,OAAO,CAAC,MAAM,IAAI,CAAC;IA6DtB,KAAK,IAAI,IAAI;YAUC,iBAAiB;YAuCjB,QAAQ;YAUR,QAAQ;YAcR,eAAe;IAyG7B,OAAO,CAAC,qBAAqB;CAsC9B"}
package/dist/nwc.js CHANGED
@@ -4,7 +4,7 @@ import { finalizeEvent } from './event.js';
4
4
  import * as nip04 from './nip04.js';
5
5
  import * as nip44 from './nip44.js';
6
6
  import { decode as nip19decode } from './nip19.js';
7
- import { Relay } from './relay.js';
7
+ import { RelayPool } from './pool.js';
8
8
  import { NWCError, NWCWalletError, NWCPublishTimeoutError, NWCReplyTimeoutError, NWCPublishError, NWCConnectionError, NWCDecryptionError, } from './types.js';
9
9
  import { fetchInvoice } from './lightning-address.js';
10
10
  import { fiatToSats } from './fiat.js';
@@ -16,10 +16,10 @@ const NWC_NOTIFICATION_NIP04_KIND = 23196;
16
16
  const NWC_NOTIFICATION_NIP44_KIND = 23197;
17
17
  export class NWC {
18
18
  walletPubkey;
19
- relayUrl;
19
+ relayUrls;
20
20
  secretKey;
21
21
  publicKey;
22
- relay;
22
+ pool;
23
23
  encryptionType;
24
24
  conversationKey;
25
25
  _connected = false;
@@ -28,13 +28,17 @@ export class NWC {
28
28
  // Timeout settings (ms)
29
29
  replyTimeout = 60000;
30
30
  publishTimeout = 5000;
31
+ /** Primary relay URL (first relay in the connection string) */
32
+ get relayUrl() {
33
+ return this.relayUrls[0];
34
+ }
31
35
  constructor(connectionString) {
32
36
  const opts = NWC.parseConnectionString(connectionString);
33
37
  this.walletPubkey = opts.walletPubkey;
34
- this.relayUrl = opts.relayUrl;
38
+ this.relayUrls = opts.relayUrls;
35
39
  this.secretKey = hexToBytes(opts.secret);
36
40
  this.publicKey = getPublicKey(this.secretKey);
37
- this.relay = new Relay(this.relayUrl);
41
+ this.pool = new RelayPool();
38
42
  }
39
43
  static parseConnectionString(connectionString) {
40
44
  // Support both nostr+walletconnect:// and nostrwalletconnect:// formats
@@ -45,9 +49,9 @@ export class NWC {
45
49
  .replace('nostr+walletconnect:', 'http://');
46
50
  const url = new URL(normalized);
47
51
  const walletPubkey = url.host || url.pathname.replace('//', '');
48
- const relayUrl = url.searchParams.get('relay');
52
+ const relayUrls = url.searchParams.getAll('relay');
49
53
  let secret = url.searchParams.get('secret');
50
- if (!walletPubkey || !relayUrl || !secret) {
54
+ if (!walletPubkey || relayUrls.length === 0 || !secret) {
51
55
  throw new NWCError('Invalid NWC connection string: missing pubkey, relay, or secret', 'INVALID_CONNECTION_STRING');
52
56
  }
53
57
  // Support nsec-encoded secrets
@@ -57,17 +61,23 @@ export class NWC {
57
61
  throw new NWCError('Invalid nsec in connection string', 'INVALID_CONNECTION_STRING');
58
62
  secret = bytesToHex(decoded.data);
59
63
  }
60
- return { walletPubkey, relayUrl: relayUrl, secret: secret };
64
+ return {
65
+ walletPubkey,
66
+ relayUrl: relayUrls[0],
67
+ relayUrls,
68
+ secret: secret,
69
+ };
61
70
  }
62
71
  get connected() {
63
72
  return this._connected;
64
73
  }
65
74
  async connect() {
66
- try {
67
- await this.relay.connect({ timeout: 5000 });
68
- }
69
- catch (err) {
70
- throw new NWCConnectionError(`Failed to connect to relay ${this.relayUrl}: ${err.message}`);
75
+ // Connect to all relays in parallel; succeed if at least one connects
76
+ const results = await Promise.allSettled(this.relayUrls.map(url => this.pool.ensureRelay(url, { connectionTimeout: 5000 })));
77
+ const anyConnected = results.some(r => r.status === 'fulfilled');
78
+ if (!anyConnected) {
79
+ const firstError = results.find(r => r.status === 'rejected');
80
+ throw new NWCConnectionError(`Failed to connect to relays [${this.relayUrls.join(', ')}]: ${firstError?.reason?.message || 'unknown error'}`);
71
81
  }
72
82
  this._connected = true;
73
83
  // Auto-detect encryption type
@@ -147,13 +157,11 @@ export class NWC {
147
157
  const startSub = () => {
148
158
  if (!subscribed)
149
159
  return;
150
- currentSub = this.relay.subscribe([
151
- {
152
- kinds: [notificationKind],
153
- authors: [this.walletPubkey],
154
- '#p': [this.publicKey],
155
- },
156
- ], {
160
+ currentSub = this.pool.subscribe(this.relayUrls, {
161
+ kinds: [notificationKind],
162
+ authors: [this.walletPubkey],
163
+ '#p': [this.publicKey],
164
+ }, {
157
165
  onevent: async (event) => {
158
166
  try {
159
167
  const decryptedContent = await this._decrypt(event.content);
@@ -187,7 +195,7 @@ export class NWC {
187
195
  close() {
188
196
  this.notificationSub?.close();
189
197
  this.notificationSub = undefined;
190
- this.relay.close();
198
+ this.pool.close();
191
199
  this._connected = false;
192
200
  this.eventHandlers.clear();
193
201
  }
@@ -196,7 +204,7 @@ export class NWC {
196
204
  if (this.encryptionType)
197
205
  return;
198
206
  // Query the wallet service info event (kind 13194)
199
- const events = await this._queryEvents([{ kinds: [NWC_INFO_KIND], authors: [this.walletPubkey], limit: 1 }], 10000);
207
+ const events = await this.pool.querySync(this.relayUrls, { kinds: [NWC_INFO_KIND], authors: [this.walletPubkey], limit: 1 }, { maxWait: 10000 });
200
208
  if (!events.length) {
201
209
  // Default to nip04 if no info event found
202
210
  this.encryptionType = 'nip04';
@@ -270,14 +278,16 @@ export class NWC {
270
278
  sub.close();
271
279
  reject(new NWCReplyTimeoutError(`Reply timeout for ${method}: event ${event.id}`));
272
280
  }, replyTimeoutMs);
273
- const sub = this.relay.subscribe([
274
- {
275
- kinds: [NWC_RESPONSE_KIND],
276
- authors: [this.walletPubkey],
277
- '#e': [event.id],
278
- },
279
- ], {
281
+ let responded = false;
282
+ const sub = this.pool.subscribe(this.relayUrls, {
283
+ kinds: [NWC_RESPONSE_KIND],
284
+ authors: [this.walletPubkey],
285
+ '#e': [event.id],
286
+ }, {
280
287
  onevent: async (responseEvent) => {
288
+ if (responded)
289
+ return; // Deduplicate across relays
290
+ responded = true;
281
291
  clearTimeout(replyTimer);
282
292
  sub.close();
283
293
  try {
@@ -303,15 +313,20 @@ export class NWC {
303
313
  }
304
314
  },
305
315
  });
306
- // Publish the request
316
+ // Publish the request to all relays
307
317
  const publishTimer = setTimeout(() => {
308
318
  sub.close();
309
319
  clearTimeout(replyTimer);
310
320
  reject(new NWCPublishTimeoutError(`Publish timeout for ${method}: event ${event.id}`));
311
321
  }, this.publishTimeout);
312
322
  try {
313
- await this.relay.publish(event);
323
+ const published = await this.pool.publish(this.relayUrls, event);
314
324
  clearTimeout(publishTimer);
325
+ if (published.length === 0) {
326
+ clearTimeout(replyTimer);
327
+ sub.close();
328
+ reject(new NWCPublishError(`Failed to publish ${method}: no relay accepted the event`));
329
+ }
315
330
  }
316
331
  catch (err) {
317
332
  clearTimeout(publishTimer);
@@ -334,13 +349,11 @@ export class NWC {
334
349
  if (!this.encryptionType)
335
350
  return;
336
351
  const notificationKind = this.encryptionType === 'nip04' ? NWC_NOTIFICATION_NIP04_KIND : NWC_NOTIFICATION_NIP44_KIND;
337
- this.notificationSub = this.relay.subscribe([
338
- {
339
- kinds: [notificationKind],
340
- authors: [this.walletPubkey],
341
- '#p': [this.publicKey],
342
- },
343
- ], {
352
+ this.notificationSub = this.pool.subscribe(this.relayUrls, {
353
+ kinds: [notificationKind],
354
+ authors: [this.walletPubkey],
355
+ '#p': [this.publicKey],
356
+ }, {
344
357
  onevent: async (event) => {
345
358
  try {
346
359
  const decryptedContent = await this._decrypt(event.content);
@@ -365,31 +378,5 @@ export class NWC {
365
378
  },
366
379
  });
367
380
  }
368
- async _queryEvents(filters, timeoutMs) {
369
- return new Promise((resolve) => {
370
- const events = [];
371
- let resolved = false;
372
- const timer = setTimeout(() => {
373
- if (!resolved) {
374
- resolved = true;
375
- sub.close();
376
- resolve(events);
377
- }
378
- }, timeoutMs);
379
- const sub = this.relay.subscribe(filters, {
380
- onevent: (event) => {
381
- events.push(event);
382
- },
383
- oneose: () => {
384
- if (!resolved) {
385
- resolved = true;
386
- clearTimeout(timer);
387
- sub.close();
388
- resolve(events);
389
- }
390
- },
391
- });
392
- });
393
- }
394
381
  }
395
382
  //# sourceMappingURL=nwc.js.map
package/dist/nwc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"nwc.js","sourceRoot":"","sources":["../src/nwc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nwc.js","sourceRoot":"","sources":["../src/nwc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAuC,MAAM,YAAY,CAAA;AAE/E,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAqBrC,OAAO,EACL,QAAQ,EACR,cAAc,EAEd,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,qBAAqB;AACrB,MAAM,aAAa,GAAG,KAAK,CAAA;AAC3B,MAAM,gBAAgB,GAAG,KAAK,CAAA;AAC9B,MAAM,iBAAiB,GAAG,KAAK,CAAA;AAC/B,MAAM,2BAA2B,GAAG,KAAK,CAAA;AACzC,MAAM,2BAA2B,GAAG,KAAK,CAAA;AAIzC,MAAM,OAAO,GAAG;IACN,YAAY,CAAQ;IACpB,SAAS,CAAU;IACnB,SAAS,CAAY;IACrB,SAAS,CAAQ;IACjB,IAAI,CAAW;IACf,cAAc,CAA4B;IAC1C,eAAe,CAAwB;IACvC,UAAU,GAAG,KAAK,CAAA;IAClB,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAA;IACpD,eAAe,CAAkD;IAEzE,wBAAwB;IACjB,YAAY,GAAG,KAAK,CAAA;IACpB,cAAc,GAAG,IAAI,CAAA;IAE5B,+DAA+D;IAC/D,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,YAAY,gBAAwB;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAA;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,gBAAwB;QACnD,wEAAwE;QACxE,MAAM,UAAU,GAAG,gBAAgB;aAChC,OAAO,CAAC,uBAAuB,EAAE,SAAS,CAAC;aAC3C,OAAO,CAAC,wBAAwB,EAAE,SAAS,CAAC;aAC5C,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC;aACzC,OAAO,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAA;QAE7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAA;QAC/B,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAClD,IAAI,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE3C,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACvD,MAAM,IAAI,QAAQ,CAAC,iEAAiE,EAAE,2BAA2B,CAAC,CAAA;QACpH,CAAC;QAED,+BAA+B;QAC/B,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;YACnC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;gBAAE,MAAM,IAAI,QAAQ,CAAC,mCAAmC,EAAE,2BAA2B,CAAC,CAAA;YACjH,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAkB,CAAC,CAAA;QACjD,CAAC;QAED,OAAO;YACL,YAAY;YACZ,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YACtB,SAAS;YACT,MAAM,EAAE,MAAgB;SACzB,CAAA;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,sEAAsE;QACtE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CACnF,CAAA;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAA;QAChE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAsC,CAAA;YAClG,MAAM,IAAI,kBAAkB,CAC1B,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,UAAU,EAAE,MAAM,EAAE,OAAO,IAAI,eAAe,EAAE,CAChH,CAAA;QACH,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAEtB,8BAA8B;QAC9B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAE9B,sDAAsD;QACtD,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,6BAA6B;IAE7B,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,MAAe;QAC/C,MAAM,MAAM,GAAsB,EAAE,OAAO,EAAE,CAAA;QAC7C,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QAChD,OAAO,IAAI,CAAC,eAAe,CAAc,aAAa,EAAE,MAAM,CAAC,CAAA;IACjE,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,eAAe,CAAqB,aAAa,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;IAC7F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAA0B;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAc,cAAc,EAAE,MAAM,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,eAAe,CAAkB,UAAU,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;IACvF,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,eAAe,CAAoB,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;IAC3F,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,SAAkC,EAAE;QACzD,OAAO,IAAI,CAAC,eAAe,CAA2B,mBAAmB,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;IAC7G,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA4B;QAC9C,OAAO,IAAI,CAAC,eAAe,CAAc,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACpE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAyB;QACxC,OAAO,IAAI,CAAC,eAAe,CAAc,aAAa,EAAE,MAAM,CAAC,CAAA;IACjE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAsB,cAAc,EAAE,EAAE,OAAO,EAAwB,CAAC,CAAA;IACrG,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAAe,EAAE,UAAkB;QAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAChD,OAAO,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,OAAe,EACf,UAAkB,EAClB,QAAgB;QAEhB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC7D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACrD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAChD,OAAO,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC9C,CAAC;IAED,wBAAwB;IAExB,EAAE,CAAC,KAA4B,EAAE,OAAqB;QACpD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QAC1C,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE3C,0DAA0D;QAC1D,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7C,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,GAAG,CAAC,KAA4B,EAAE,OAAqB;QACrD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,oCAAoC;IAEpC,KAAK,CAAC,sBAAsB,CAC1B,cAAyD,EACzD,iBAA2C;QAE3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,kBAAkB,CAAC,sCAAsC,CAAC,CAAA;QACtE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAChC,CAAC;QAED,MAAM,gBAAgB,GACpB,IAAI,CAAC,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,2BAA2B,CAAA;QAE7F,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,IAAI,UAA4D,CAAA;QAEhE,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,UAAU;gBAAE,OAAM;YAEvB,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAC9B,IAAI,CAAC,SAAS,EACd;gBACE,KAAK,EAAE,CAAC,gBAAgB,CAAC;gBACzB,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC5B,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;aACb,EACX;gBACE,OAAO,EAAE,KAAK,EAAE,KAAiB,EAAE,EAAE;oBACnC,IAAI,CAAC;wBACH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;wBAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAsB,CAAA;wBACtE,IAAI,YAAY,CAAC,iBAAiB,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;4BAChE,IACE,CAAC,iBAAiB;gCAClB,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAC1D,CAAC;gCACD,cAAc,CAAC,YAAY,CAAC,CAAA;4BAC9B,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,mDAAmD;oBACrD,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,GAAG,EAAE;oBACZ,kCAAkC;oBAClC,IAAI,UAAU,EAAE,CAAC;wBACf,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;oBACpC,CAAC;gBACH,CAAC;aACF,CACF,CAAA;QACH,CAAC,CAAA;QAED,QAAQ,EAAE,CAAA;QAEV,OAAO,GAAG,EAAE;YACV,UAAU,GAAG,KAAK,CAAA;YAClB,UAAU,EAAE,KAAK,EAAE,CAAA;QACrB,CAAC,CAAA;IACH,CAAC;IAED,kBAAkB;IAElB,KAAK;QACH,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;QAChC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,0BAA0B;IAElB,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,cAAc;YAAE,OAAM;QAE/B,mDAAmD;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CACtC,IAAI,CAAC,SAAS,EACd,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,EAAY,EAC5E,EAAE,OAAO,EAAE,KAAK,EAAE,CACnB,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,0CAA0C;YAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;YAC7B,OAAM;QACR,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAA;QACrE,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAA;QAEzD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC/C,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;YAC/B,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;QAC/B,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;QACpF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,OAAe;QACpC,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;YACpF,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;QACrD,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAClE,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,OAAe;QACpC,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC1B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;gBACpF,CAAC;gBACD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;YACrD,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,kBAAkB,CAAC,+BAAgC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACvF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,MAAc,EACd,MAAe,EACf,IAAgC;QAEhC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,kBAAkB,CAAC,sCAAsC,CAAC,CAAA;QACtE,CAAC;QAED,OAAO,IAAI,OAAO,CAAI,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC;gBACH,gCAAgC;gBAChC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;gBAClC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;gBAErE,MAAM,aAAa,GAAkB;oBACnC,IAAI,EAAE,gBAAgB;oBACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;oBACzC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAChC,OAAO,EAAE,gBAAgB;iBAC1B,CAAA;gBAED,MAAM,KAAK,GAAG,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;gBAE1D,+CAA+C;gBAC/C,MAAM,cAAc,GAAG,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,YAAY,CAAA;gBAE9D,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;oBACjC,GAAG,CAAC,KAAK,EAAE,CAAA;oBACX,MAAM,CAAC,IAAI,oBAAoB,CAAC,qBAAqB,MAAM,WAAW,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;gBACpF,CAAC,EAAE,cAAc,CAAC,CAAA;gBAElB,IAAI,SAAS,GAAG,KAAK,CAAA;gBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAC7B,IAAI,CAAC,SAAS,EACd;oBACE,KAAK,EAAE,CAAC,iBAAiB,CAAC;oBAC1B,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;oBAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;iBACP,EACX;oBACE,OAAO,EAAE,KAAK,EAAE,aAAyB,EAAE,EAAE;wBAC3C,IAAI,SAAS;4BAAE,OAAM,CAAC,4BAA4B;wBAClD,SAAS,GAAG,IAAI,CAAA;wBAChB,YAAY,CAAC,UAAU,CAAC,CAAA;wBACxB,GAAG,CAAC,KAAK,EAAE,CAAA;wBAEX,IAAI,CAAC;4BACH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;4BACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;4BAE7C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gCACpB,OAAO,CAAC,QAAQ,CAAC,MAAW,CAAC,CAAA;4BAC/B,CAAC;iCAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gCAC1B,MAAM,CACJ,IAAI,cAAc,CAChB,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,sBAAsB,EAChD,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAClC,CACF,CAAA;4BACH,CAAC;iCAAM,CAAC;gCACN,MAAM,CAAC,IAAI,QAAQ,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,CAAA;4BAChE,CAAC;wBACH,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gCAC5B,MAAM,CAAC,GAAG,CAAC,CAAA;4BACb,CAAC;iCAAM,CAAC;gCACN,MAAM,CAAC,IAAI,QAAQ,CAAC,+BAAgC,GAAa,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAA;4BAC3F,CAAC;wBACH,CAAC;oBACH,CAAC;iBACF,CACF,CAAA;gBAED,oCAAoC;gBACpC,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;oBACnC,GAAG,CAAC,KAAK,EAAE,CAAA;oBACX,YAAY,CAAC,UAAU,CAAC,CAAA;oBACxB,MAAM,CAAC,IAAI,sBAAsB,CAAC,uBAAuB,MAAM,WAAW,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;gBACxF,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;gBAEvB,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;oBAChE,YAAY,CAAC,YAAY,CAAC,CAAA;oBAC1B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC3B,YAAY,CAAC,UAAU,CAAC,CAAA;wBACxB,GAAG,CAAC,KAAK,EAAE,CAAA;wBACX,MAAM,CAAC,IAAI,eAAe,CAAC,qBAAqB,MAAM,+BAA+B,CAAC,CAAC,CAAA;oBACzF,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,YAAY,CAAC,YAAY,CAAC,CAAA;oBAC1B,YAAY,CAAC,UAAU,CAAC,CAAA;oBACxB,GAAG,CAAC,KAAK,EAAE,CAAA;oBACX,MAAM,CAAC,IAAI,eAAe,CAAC,qBAAqB,MAAM,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBACvF,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;oBAC5B,MAAM,CAAC,GAAG,CAAC,CAAA;gBACb,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,QAAQ,CAAC,mBAAoB,GAAa,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAA;gBAC/E,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAM;QAEhC,MAAM,gBAAgB,GACpB,IAAI,CAAC,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,2BAA2B,CAAA;QAE7F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CACxC,IAAI,CAAC,SAAS,EACd;YACE,KAAK,EAAE,CAAC,gBAAgB,CAAC;YACzB,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;YAC5B,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;SACb,EACX;YACE,OAAO,EAAE,KAAK,EAAE,KAAiB,EAAE,EAAE;gBACnC,IAAI,CAAC;oBACH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAsB,CAAA;oBACtE,IAAI,YAAY,CAAC,iBAAiB,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;wBAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;wBACvE,IAAI,QAAQ,EAAE,CAAC;4BACb,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gCAC/B,IAAI,CAAC;oCACH,OAAO,CAAC,YAAY,CAAC,CAAA;gCACvB,CAAC;gCAAC,MAAM,CAAC;oCACP,kDAAkD;gCACpD,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,mDAAmD;gBACrD,CAAC;YACH,CAAC;SACF,CACF,CAAA;IACH,CAAC;CAEF"}