divine-signer 0.4.0 → 0.4.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bunker-signer.d.ts","sourceRoot":"","sources":["../src/bunker-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,oCAAoC;IACpC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,OAAO;IAKP,wDAAwD;WAC3C,aAAa,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,kBAAkB,EAC3B,YAAY,CAAC,EAAE,UAAU,EACzB,cAAc,SAAS,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAgB7B;;;;;OAKG;WACU,SAAS,CACpB,eAAe,EAAE,UAAU,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,cAAc,SAAS,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAoB7B;;;;;OAKG;WACU,mBAAmB,CAC9B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,UAAU,EAC3B,MAAM,CAAC,EAAE,kBAAkB,EAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW,GACpC,OAAO,CAAC,kBAAkB,CAAC;IA2F9B;;;;;;;OAOG;WACU,gBAAgB,CAC3B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,UAAU,EAC3B,MAAM,CAAC,EAAE,kBAAkB,EAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW,GACpC,OAAO,CAAC,iBAAiB,CAAC;IAUvB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAW/B,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAIvD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvE,YAAY,IAAI,MAAM;IAIhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
1
+ {"version":3,"file":"bunker-signer.d.ts","sourceRoot":"","sources":["../src/bunker-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,oCAAoC;IACpC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,OAAO;IAKP,wDAAwD;WAC3C,aAAa,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,kBAAkB,EAC3B,YAAY,CAAC,EAAE,UAAU,EACzB,cAAc,SAAS,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAgB7B;;;;;OAKG;WACU,SAAS,CACpB,eAAe,EAAE,UAAU,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,cAAc,SAAS,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAoB7B;;;;;OAKG;WACU,mBAAmB,CAC9B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,UAAU,EAC3B,MAAM,CAAC,EAAE,kBAAkB,EAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW,GACpC,OAAO,CAAC,kBAAkB,CAAC;IAqG9B;;;;;;;OAOG;WACU,gBAAgB,CAC3B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,UAAU,EAC3B,MAAM,CAAC,EAAE,kBAAkB,EAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW,GACpC,OAAO,CAAC,iBAAiB,CAAC;IAUvB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAW/B,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAIvD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvE,YAAY,IAAI,MAAM;IAIhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
package/dist/index.js CHANGED
@@ -146,7 +146,20 @@ var BunkerNIP44Signer = class _BunkerNIP44Signer {
146
146
  const ac = new AbortController();
147
147
  const effectiveAbort = abort ?? ac.signal;
148
148
  const pool = new SimplePool();
149
- await Promise.all(relays.map((r) => pool.ensureRelay(r)));
149
+ const RELAY_CONNECT_TIMEOUT = 5e3;
150
+ const results = await Promise.allSettled(
151
+ relays.map(
152
+ (r) => Promise.race([
153
+ pool.ensureRelay(r),
154
+ new Promise(
155
+ (_, rej) => setTimeout(() => rej(new Error(`Relay ${r} connect timeout`)), RELAY_CONNECT_TIMEOUT)
156
+ )
157
+ ])
158
+ )
159
+ );
160
+ if (results.every((r) => r.status === "rejected")) {
161
+ throw new Error("Failed to connect to any relay");
162
+ }
150
163
  let settled = false;
151
164
  const signerPromise = new Promise((resolve, reject) => {
152
165
  if (effectiveAbort.aborted) {
@@ -155,7 +168,7 @@ var BunkerNIP44Signer = class _BunkerNIP44Signer {
155
168
  }
156
169
  const sub = pool.subscribe(
157
170
  relays,
158
- { kinds: [24133], "#p": [clientPubkey], limit: 0 },
171
+ { kinds: [24133], "#p": [clientPubkey] },
159
172
  {
160
173
  onevent: async (event) => {
161
174
  try {
@@ -170,15 +183,10 @@ var BunkerNIP44Signer = class _BunkerNIP44Signer {
170
183
  } catch {
171
184
  }
172
185
  },
173
- onclose: () => {
174
- if (!settled) {
175
- reject(
176
- new Error(
177
- "Subscription closed before connection was established"
178
- )
179
- );
180
- }
181
- },
186
+ // Don't reject on relay-level close — a single relay closing
187
+ // (e.g. Primal not supporting kind 24133 queries) must not
188
+ // kill the whole flow. The abort/timeout handler covers the
189
+ // case where no relay delivers the ack.
182
190
  abort: effectiveAbort
183
191
  }
184
192
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "divine-signer",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",