@enbox/browser 0.3.49 → 0.3.51

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 (33) hide show
  1. package/dist/browser.mjs +39 -14
  2. package/dist/browser.mjs.map +3 -3
  3. package/dist/esm/dweb-connect-client.js +64 -9
  4. package/dist/esm/dweb-connect-client.js.map +1 -1
  5. package/dist/esm/dweb-connect-messages.js +7 -1
  6. package/dist/esm/dweb-connect-messages.js.map +1 -1
  7. package/dist/esm/dweb-connect-wallet.js +48 -2
  8. package/dist/esm/dweb-connect-wallet.js.map +1 -1
  9. package/dist/esm/index.js +1 -1
  10. package/dist/esm/index.js.map +1 -1
  11. package/dist/esm/relay-connect-runner.js +35 -2
  12. package/dist/esm/relay-connect-runner.js.map +1 -1
  13. package/dist/esm/ui/connect-modal.js +171 -51
  14. package/dist/esm/ui/connect-modal.js.map +1 -1
  15. package/dist/types/dweb-connect-client.d.ts +9 -0
  16. package/dist/types/dweb-connect-client.d.ts.map +1 -1
  17. package/dist/types/dweb-connect-messages.d.ts +14 -1
  18. package/dist/types/dweb-connect-messages.d.ts.map +1 -1
  19. package/dist/types/dweb-connect-wallet.d.ts +23 -1
  20. package/dist/types/dweb-connect-wallet.d.ts.map +1 -1
  21. package/dist/types/index.d.ts +2 -2
  22. package/dist/types/index.d.ts.map +1 -1
  23. package/dist/types/relay-connect-runner.d.ts +11 -1
  24. package/dist/types/relay-connect-runner.d.ts.map +1 -1
  25. package/dist/types/ui/connect-modal.d.ts +8 -7
  26. package/dist/types/ui/connect-modal.d.ts.map +1 -1
  27. package/package.json +6 -6
  28. package/src/dweb-connect-client.ts +61 -7
  29. package/src/dweb-connect-messages.ts +16 -1
  30. package/src/dweb-connect-wallet.ts +50 -1
  31. package/src/index.ts +2 -0
  32. package/src/relay-connect-runner.ts +42 -2
  33. package/src/ui/connect-modal.ts +196 -61
@@ -29,15 +29,43 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
29
29
  });
30
30
  };
31
31
  import { assertX25519PublicJwk, CONNECT_DENIED_TOKEN, ConnectClient } from '@enbox/connect';
32
- import { DWEB_CONNECT_LOADED_MESSAGE_TYPE, DWEB_CONNECT_PATH, DWEB_CONNECT_REQUEST_MESSAGE_TYPE, DWEB_CONNECT_RESPONSE_MESSAGE_TYPE, getTrustedMessage, } from './dweb-connect-messages.js';
32
+ import { DWEB_CONNECT_ACK_MESSAGE_TYPE, DWEB_CONNECT_LOADED_MESSAGE_TYPE, DWEB_CONNECT_PATH, DWEB_CONNECT_REQUEST_MESSAGE_TYPE, DWEB_CONNECT_RESPONSE_MESSAGE_TYPE, getTrustedMessage, } from './dweb-connect-messages.js';
33
33
  /** Default budget for the whole popup handshake (beacon + user consent + response). */
34
34
  const DEFAULT_TIMEOUT_MS = 300000;
35
35
  /** Interval at which the transport checks whether the user closed the popup. */
36
36
  const CLOSED_POLL_INTERVAL_MS = 500;
37
+ /**
38
+ * Grace period after the popup is seen closed for an already-posted response
39
+ * to finish delivery before the close is treated as a denial.
40
+ */
41
+ const CLOSED_RESPONSE_GRACE_MS = 1500;
37
42
  /** Window name given to the wallet popup. */
38
43
  const POPUP_WINDOW_NAME = 'enbox-dweb-connect';
39
- /** Window features given to the wallet popup. */
40
- const POPUP_WINDOW_FEATURES = 'width=500,height=700,menubar=no,toolbar=no,location=no,status=no';
44
+ /** Outer size of the wallet popup window. */
45
+ const POPUP_WIDTH = 500;
46
+ const POPUP_HEIGHT = 700;
47
+ /**
48
+ * Builds the wallet popup's window features, centring it over the opener
49
+ * window — without `left`/`top` browsers park the popup wherever they like
50
+ * (usually offset into a corner). Falls back to centring on the screen when
51
+ * the opener's metrics are unavailable, and lets the browser clamp
52
+ * off-screen coordinates. Mobile browsers ignore the features entirely and
53
+ * open a tab.
54
+ */
55
+ function popupWindowFeatures() {
56
+ var _a, _b, _c, _d, _e, _f;
57
+ const base = `width=${POPUP_WIDTH},height=${POPUP_HEIGHT},menubar=no,toolbar=no,location=no,status=no`;
58
+ // `screenX`/`outerWidth` describe the opener window; `screen.avail*`
59
+ // describe its monitor — so the popup lands on the same display.
60
+ const openerWidth = window.outerWidth > 0 ? window.outerWidth : ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.availWidth) !== null && _b !== void 0 ? _b : 0);
61
+ const openerHeight = window.outerHeight > 0 ? window.outerHeight : ((_d = (_c = window.screen) === null || _c === void 0 ? void 0 : _c.availHeight) !== null && _d !== void 0 ? _d : 0);
62
+ if (openerWidth === 0 || openerHeight === 0) {
63
+ return base;
64
+ }
65
+ const left = Math.max(0, Math.round(((_e = window.screenX) !== null && _e !== void 0 ? _e : 0) + (openerWidth - POPUP_WIDTH) / 2));
66
+ const top = Math.max(0, Math.round(((_f = window.screenY) !== null && _f !== void 0 ? _f : 0) + (openerHeight - POPUP_HEIGHT) / 2));
67
+ return `${base},left=${left},top=${top}`;
68
+ }
41
69
  /** Guards against calling browser-only entry points outside a browser. */
42
70
  function assertBrowserEnvironment() {
43
71
  if (typeof window === 'undefined') {
@@ -91,7 +119,7 @@ export class PopupClientTransport {
91
119
  // the stack has yielded to a prior `await`, so opening it here — instead of
92
120
  // inside the awaited `requestProfile()` — is what keeps the flow usable.
93
121
  const popupUrl = new URL(DWEB_CONNECT_PATH, options.walletUrl).toString();
94
- const popup = window.open(popupUrl, POPUP_WINDOW_NAME, POPUP_WINDOW_FEATURES);
122
+ const popup = window.open(popupUrl, POPUP_WINDOW_NAME, popupWindowFeatures());
95
123
  if (!popup) {
96
124
  throw new Error('[@enbox/browser] Popup blocked. Allow popups for this site to connect to a wallet.');
97
125
  }
@@ -162,6 +190,22 @@ export class PopupClientTransport {
162
190
  return yield this._responsePromise;
163
191
  });
164
192
  }
193
+ /**
194
+ * {@inheritDoc ConnectTransport.confirmComplete}
195
+ *
196
+ * Posts the payload-less ack to the wallet popup (pinned `targetOrigin`)
197
+ * so a wallet still holding its "finishing up" screen can flip to a
198
+ * confirmed "connected" state before closing itself. A popup the user
199
+ * already closed is skipped silently.
200
+ */
201
+ confirmComplete() {
202
+ return __awaiter(this, void 0, void 0, function* () {
203
+ if (this._popup.closed === true) {
204
+ return;
205
+ }
206
+ this._popup.postMessage({ type: DWEB_CONNECT_ACK_MESSAGE_TYPE }, this._walletOrigin);
207
+ });
208
+ }
165
209
  onMessage(event) {
166
210
  const message = getTrustedMessage(event, this._walletOrigin, this._popup);
167
211
  if (message === undefined) {
@@ -216,7 +260,6 @@ export class PopupClientTransport {
216
260
  (_b = this._resolveResponse) === null || _b === void 0 ? void 0 : _b.call(this, message.payload);
217
261
  }
218
262
  onClosedPoll() {
219
- var _a;
220
263
  if (this._settled || this._popup.closed !== true) {
221
264
  return;
222
265
  }
@@ -225,10 +268,22 @@ export class PopupClientTransport {
225
268
  this.fail(new PopupWindowClosedError());
226
269
  return;
227
270
  }
228
- // Closed after the handshake was established — treat as a user denial.
229
- this._settled = true;
230
- this.cleanup();
231
- (_a = this._resolveResponse) === null || _a === void 0 ? void 0 : _a.call(this, CONNECT_DENIED_TOKEN);
271
+ // Closed after the handshake was established. A wallet that posts its
272
+ // response and immediately closes itself can lose the race between that
273
+ // final message and this poll — especially when this page was
274
+ // backgrounded (mobile tabs) and both signals arrive together on
275
+ // resume — so give a queued response a grace window before treating the
276
+ // close as a user denial.
277
+ clearInterval(this._closedPollId);
278
+ setTimeout(() => {
279
+ var _a;
280
+ if (this._settled) {
281
+ return;
282
+ }
283
+ this._settled = true;
284
+ this.cleanup();
285
+ (_a = this._resolveResponse) === null || _a === void 0 ? void 0 : _a.call(this, CONNECT_DENIED_TOKEN);
286
+ }, CLOSED_RESPONSE_GRACE_MS);
232
287
  }
233
288
  fail(error) {
234
289
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"dweb-connect-client.js","sourceRoot":"","sources":["../../src/dweb-connect-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dweb-connect-client.js","sourceRoot":"","sources":["../../src/dweb-connect-client.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Wire shapes for the DWeb Connect popup/postMessage channel.
3
3
  *
4
- * The dapp and the wallet exchange exactly three message kinds over
4
+ * The dapp and the wallet exchange exactly four message kinds over
5
5
  * `window.postMessage`:
6
6
  *
7
7
  * 1. `loaded` beacon (wallet → dapp): announces the wallet page is ready and
@@ -11,6 +11,10 @@
11
11
  * bound into the JWE `apv` header.
12
12
  * 3. `response` (wallet → dapp): the sealed connect response JWE, or the
13
13
  * literal deny token — again ciphertext only.
14
+ * 4. `ack` (dapp → wallet): payload-less completion signal — the dapp opened
15
+ * the response successfully, so the wallet can flip to a confirmed
16
+ * "connected" state before closing itself. Optional and observational;
17
+ * wallets unaware of it simply ignore the message.
14
18
  *
15
19
  * Plaintext never crosses the channel, and both sides pin `targetOrigin`
16
20
  * and verify `event.origin` / `event.source` on every message.
@@ -25,6 +29,8 @@ export const DWEB_CONNECT_LOADED_MESSAGE_TYPE = 'enbox-connect-loaded';
25
29
  export const DWEB_CONNECT_REQUEST_MESSAGE_TYPE = 'enbox-connect-request';
26
30
  /** Message type carrying the sealed connect response JWE or deny token (wallet → dapp). */
27
31
  export const DWEB_CONNECT_RESPONSE_MESSAGE_TYPE = 'enbox-connect-response';
32
+ /** Message type of the dapp's completion acknowledgement (dapp → wallet). */
33
+ export const DWEB_CONNECT_ACK_MESSAGE_TYPE = 'enbox-connect-ack';
28
34
  /**
29
35
  * Applies the shared inbound-message trust filter for the popup channel:
30
36
  * pins the message to the expected `event.origin`, pins its `event.source` to
@@ -1 +1 @@
1
- {"version":3,"file":"dweb-connect-messages.js","sourceRoot":"","sources":["../../src/dweb-connect-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,oEAAoE;AACpE,MAAM,CAAC,MAAM,gCAAgC,GAAG,sBAAsB,CAAC;AAEvE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAG,uBAAuB,CAAC;AAEzE,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kCAAkC,GAAG,wBAAwB,CAAC;AAgC3E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAmB,EACnB,cAAsB,EACtB,cAAkC;IAElC,gEAAgE;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;IAE1D,kEAAkE;IAClE,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;IAE1D,MAAM,IAAI,GAAY,KAAK,CAAC,IAAI,CAAC;IACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;IAEpE,OAAO,IAA+B,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"dweb-connect-messages.js","sourceRoot":"","sources":["../../src/dweb-connect-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,oEAAoE;AACpE,MAAM,CAAC,MAAM,gCAAgC,GAAG,sBAAsB,CAAC;AAEvE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAG,uBAAuB,CAAC;AAEzE,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kCAAkC,GAAG,wBAAwB,CAAC;AAE3E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,mBAAmB,CAAC;AAwCjE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAmB,EACnB,cAAsB,EACtB,cAAkC;IAElC,gEAAgE;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;IAE1D,kEAAkE;IAClE,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;IAE1D,MAAM,IAAI,GAAY,KAAK,CAAC,IAAI,CAAC;IACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;IAEpE,OAAO,IAA+B,CAAC;AACzC,CAAC"}
@@ -12,7 +12,9 @@
12
12
  * value-checks the `apv` origin binding against this wallet's origin.
13
13
  * 3. After the consent ceremony, the wallet posts the sealed response JWE via
14
14
  * `sendResponse()` — or the deny token via `deny()` — back to the opener,
15
- * again with a pinned `targetOrigin`.
15
+ * again with a pinned `targetOrigin`. `sendResponseAwaitingAck()` does the
16
+ * same but stays alive briefly for the dapp's completion ack, so the
17
+ * wallet can show a confirmed "connected" state before closing itself.
16
18
  *
17
19
  * The dapp origin is never assumed: it is taken from an explicit option or
18
20
  * derived from `document.referrer`, and `create()` fails when neither is
@@ -31,9 +33,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
31
33
  };
32
34
  import { X25519 } from '@enbox/crypto';
33
35
  import { CONNECT_DENIED_TOKEN, ConnectProvider } from '@enbox/connect';
34
- import { DWEB_CONNECT_LOADED_MESSAGE_TYPE, DWEB_CONNECT_REQUEST_MESSAGE_TYPE, DWEB_CONNECT_RESPONSE_MESSAGE_TYPE, getTrustedMessage, } from './dweb-connect-messages.js';
36
+ import { DWEB_CONNECT_ACK_MESSAGE_TYPE, DWEB_CONNECT_LOADED_MESSAGE_TYPE, DWEB_CONNECT_REQUEST_MESSAGE_TYPE, DWEB_CONNECT_RESPONSE_MESSAGE_TYPE, getTrustedMessage, } from './dweb-connect-messages.js';
35
37
  /** Default budget for awaiting the dapp's sealed request. */
36
38
  const DEFAULT_REQUEST_TIMEOUT_MS = 300000;
39
+ /** Default budget for awaiting the dapp's completion ack after a response. */
40
+ const DEFAULT_ACK_TIMEOUT_MS = 5000;
37
41
  /**
38
42
  * Wallet-side postMessage transport for the DWeb Connect popup flow.
39
43
  *
@@ -133,6 +137,43 @@ export class WalletPostMessageTransport {
133
137
  }, this._dappOrigin);
134
138
  this.close();
135
139
  }
140
+ /**
141
+ * Posts the sealed response JWE back to the dapp like
142
+ * {@link sendResponse}, then keeps the channel open briefly for the dapp's
143
+ * completion ack — the signal that it opened the response successfully —
144
+ * before closing the transport.
145
+ *
146
+ * Lets the wallet's connect page show a confirmed "connected" state (and
147
+ * close itself with confidence) instead of asking the user to dismiss the
148
+ * screen blind. Dapps predating the ack simply never send one, so the
149
+ * wallet should keep a manual dismiss affordance for the `false` case.
150
+ *
151
+ * @param idToken - The sealed response JWE.
152
+ * @param options - The awaiting options.
153
+ * @param options.timeoutMs - Ack budget in milliseconds; defaults to 5 s.
154
+ * @returns Whether the dapp acknowledged completion within the budget.
155
+ */
156
+ sendResponseAwaitingAck(idToken_1) {
157
+ return __awaiter(this, arguments, void 0, function* (idToken, options = {}) {
158
+ var _a;
159
+ const ackPromise = new Promise((resolve) => {
160
+ this._resolveAck = resolve;
161
+ });
162
+ this._dappWindow.postMessage({
163
+ type: DWEB_CONNECT_RESPONSE_MESSAGE_TYPE,
164
+ payload: idToken,
165
+ }, this._dappOrigin);
166
+ const ackTimeoutId = setTimeout(() => {
167
+ var _a;
168
+ (_a = this._resolveAck) === null || _a === void 0 ? void 0 : _a.call(this, false);
169
+ }, (_a = options.timeoutMs) !== null && _a !== void 0 ? _a : DEFAULT_ACK_TIMEOUT_MS);
170
+ const acked = yield ackPromise;
171
+ clearTimeout(ackTimeoutId);
172
+ this._resolveAck = undefined;
173
+ this.close();
174
+ return acked;
175
+ });
176
+ }
136
177
  /** Posts the deny token back to the dapp — the user rejected the request. */
137
178
  deny() {
138
179
  this.sendResponse(CONNECT_DENIED_TOKEN);
@@ -146,10 +187,15 @@ export class WalletPostMessageTransport {
146
187
  }
147
188
  }
148
189
  onMessage(event) {
190
+ var _a;
149
191
  const message = getTrustedMessage(event, this._dappOrigin, this._dappWindow);
150
192
  if (message === undefined) {
151
193
  return;
152
194
  }
195
+ if (message.type === DWEB_CONNECT_ACK_MESSAGE_TYPE) {
196
+ (_a = this._resolveAck) === null || _a === void 0 ? void 0 : _a.call(this, true);
197
+ return;
198
+ }
153
199
  if (message.type !== DWEB_CONNECT_REQUEST_MESSAGE_TYPE || this._requestReceived) {
154
200
  return;
155
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dweb-connect-wallet.js","sourceRoot":"","sources":["../../src/dweb-connect-wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dweb-connect-wallet.js","sourceRoot":"","sources":["../../src/dweb-connect-wallet.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -43,7 +43,7 @@ export * from './web-features.js';
43
43
  export { BrowserConnectHandler, DEFAULT_WALLETS } from './browser-connect-handler.js';
44
44
  export { connectViaPopup, PopupClientTransport, PopupWindowClosedError } from './dweb-connect-client.js';
45
45
  export { WalletPostMessageTransport } from './dweb-connect-wallet.js';
46
- export { DWEB_CONNECT_LOADED_MESSAGE_TYPE, DWEB_CONNECT_PATH, DWEB_CONNECT_REQUEST_MESSAGE_TYPE, DWEB_CONNECT_RESPONSE_MESSAGE_TYPE, } from './dweb-connect-messages.js';
46
+ export { DWEB_CONNECT_ACK_MESSAGE_TYPE, DWEB_CONNECT_LOADED_MESSAGE_TYPE, DWEB_CONNECT_PATH, DWEB_CONNECT_REQUEST_MESSAGE_TYPE, DWEB_CONNECT_RESPONSE_MESSAGE_TYPE, } from './dweb-connect-messages.js';
47
47
  export { fetchWalletWellKnown, probeWalletWellKnown, WALLET_WELL_KNOWN_PATH } from './ui/wallet-well-known.js';
48
48
  export { discoverWalletConnectServerUrl, runConnectModal } from './ui/connect-modal.js';
49
49
  export { MAX_PIN_ATTEMPTS, RelayConnectCancelledError, runRelayConnect } from './relay-connect-runner.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,mEAAmE;AACnE,EAAE;AACF,kEAAkE;AAElE,OAAO,EACL,KAAK,EACL,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC;AAUpB,mEAAmE;AACnE,EAAE;AACF,kEAAkE;AAElE,OAAO,EACL,WAAW,EACX,WAAW,EACX,yBAAyB,EACzB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAuB7B,mEAAmE;AACnE,EAAE;AACF,iEAAiE;AACjE,4DAA4D;AAE5D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGvE,mEAAmE;AACnE,EAAE;AACF,iEAAiE;AAEjE,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEtF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EACL,gCAAgC,EAChC,iBAAiB,EACjB,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAE/G,OAAO,EAAE,8BAA8B,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE1G,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG/C,mEAAmE;AACnE,EAAE;AACF,8DAA8D;AAC9D,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,YAAY;AAEZ,0CAA0C;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,0EAA0E;AAC1E,sBAAsB;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,oEAAoE;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,4EAA4E;AAC5E,mCAAmC;AACnC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,mEAAmE;AACnE,EAAE;AACF,kEAAkE;AAElE,OAAO,EACL,KAAK,EACL,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC;AAUpB,mEAAmE;AACnE,EAAE;AACF,kEAAkE;AAElE,OAAO,EACL,WAAW,EACX,WAAW,EACX,yBAAyB,EACzB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAuB7B,mEAAmE;AACnE,EAAE;AACF,iEAAiE;AACjE,4DAA4D;AAE5D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGvE,mEAAmE;AACnE,EAAE;AACF,iEAAiE;AAEjE,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEtF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EACL,6BAA6B,EAC7B,gCAAgC,EAChC,iBAAiB,EACjB,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAE/G,OAAO,EAAE,8BAA8B,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE1G,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG/C,mEAAmE;AACnE,EAAE;AACF,8DAA8D;AAC9D,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,YAAY;AAEZ,0CAA0C;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,0EAA0E;AAC1E,sBAAsB;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,oEAAoE;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,4EAA4E;AAC5E,mCAAmC;AACnC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
@@ -39,14 +39,43 @@ export class RelayConnectCancelledError extends Error {
39
39
  this.name = 'RelayConnectCancelledError';
40
40
  }
41
41
  }
42
+ /**
43
+ * Sleep used between relay polls that ends early when the page returns to
44
+ * the foreground. Browsers throttle — and mobile browsers freeze — timers in
45
+ * background tabs, so a plain interval sleep can leave the user staring at a
46
+ * stale stage after approving in the wallet tab; cutting the sleep short on
47
+ * `visibilitychange` makes the next poll (and with it the pairing-code
48
+ * prompt) land the moment they switch back. Falls back to a plain sleep
49
+ * outside DOM environments.
50
+ */
51
+ export function visibilityAwareSleep(ms) {
52
+ return new Promise((resolve) => {
53
+ if (typeof document === 'undefined') {
54
+ setTimeout(resolve, ms);
55
+ return;
56
+ }
57
+ const finish = () => {
58
+ clearTimeout(timer);
59
+ document.removeEventListener('visibilitychange', onVisibilityChange);
60
+ resolve();
61
+ };
62
+ const onVisibilityChange = () => {
63
+ if (document.visibilityState === 'visible') {
64
+ finish();
65
+ }
66
+ };
67
+ const timer = setTimeout(finish, ms);
68
+ document.addEventListener('visibilitychange', onVisibilityChange);
69
+ });
70
+ }
42
71
  /**
43
72
  * Runs one relay-mediated connect handshake end-to-end and returns the
44
73
  * delegated credentials, or `undefined` when the user denied in the wallet.
45
74
  */
46
75
  export function runRelayConnect(options) {
47
76
  return __awaiter(this, void 0, void 0, function* () {
48
- var _a;
49
- const createTransport = (_a = options.createTransport) !== null && _a !== void 0 ? _a : ((transportOptions) => new RelayClientTransport(transportOptions));
77
+ var _a, _b;
78
+ const createTransport = (_a = options.createTransport) !== null && _a !== void 0 ? _a : ((transportOptions) => new RelayClientTransport(Object.assign(Object.assign({}, transportOptions), { sleep: visibilityAwareSleep })));
50
79
  const transport = createTransport({
51
80
  connectServerUrl: options.connectServerUrl,
52
81
  walletUri: options.walletUri,
@@ -106,6 +135,10 @@ export function runRelayConnect(options) {
106
135
  if (response.delegatePortableDid === undefined) {
107
136
  throw new Error('Connect: wallet response omitted `delegatePortableDid`.');
108
137
  }
138
+ // Best-effort completion signal so the wallet can flip its pairing
139
+ // screen to a confirmed "connected" state instead of leaving the user
140
+ // to dismiss it blind. Fire-and-forget — mirrors the kernel client.
141
+ void ((_b = transport.confirmComplete) === null || _b === void 0 ? void 0 : _b.call(transport).catch(() => undefined));
109
142
  return {
110
143
  delegatePortableDid: response.delegatePortableDid,
111
144
  delegateGrants: response.delegateGrants,
@@ -1 +1 @@
1
- {"version":3,"file":"relay-connect-runner.js","sourceRoot":"","sources":["../../src/relay-connect-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-connect-runner.js","sourceRoot":"","sources":["../../src/relay-connect-runner.ts"],"names":[],"mappings":"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"}