@bwalletx/connect 0.5.3 → 0.5.6

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/CHANGELOG.md +35 -0
  2. package/README.md +80 -8
  3. package/dist/bwalletx-connect.global.js +92 -25
  4. package/dist/bwalletx-connect.global.js.map +1 -1
  5. package/dist/{wallets-VOKIKBbO.d.ts → choice-DCh-tgpT.d.cts} +113 -5
  6. package/dist/{wallets-VOKIKBbO.d.cts → choice-DCh-tgpT.d.ts} +113 -5
  7. package/dist/chunk-34DKBQNN.js +222 -0
  8. package/dist/chunk-34DKBQNN.js.map +1 -0
  9. package/dist/{chunk-QRXFL66W.js → chunk-A2WLGS25.js} +6 -4
  10. package/dist/chunk-A2WLGS25.js.map +1 -0
  11. package/dist/chunk-IFGOAROM.js +255 -0
  12. package/dist/chunk-IFGOAROM.js.map +1 -0
  13. package/dist/chunk-LS6AYEBO.js +1886 -0
  14. package/dist/chunk-LS6AYEBO.js.map +1 -0
  15. package/dist/element-D9Zl-x12.d.cts +46 -0
  16. package/dist/element-D9Zl-x12.d.ts +46 -0
  17. package/dist/element.cjs +1221 -67
  18. package/dist/element.cjs.map +1 -1
  19. package/dist/element.d.cts +23 -28
  20. package/dist/element.d.ts +23 -28
  21. package/dist/element.js +29 -2
  22. package/dist/element.js.map +1 -1
  23. package/dist/index.cjs +1539 -449
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +185 -12
  26. package/dist/index.d.ts +185 -12
  27. package/dist/index.js +106 -12
  28. package/dist/index.js.map +1 -1
  29. package/dist/next.cjs +5 -3
  30. package/dist/next.cjs.map +1 -1
  31. package/dist/next.js +1 -1
  32. package/dist/react.cjs +1073 -194
  33. package/dist/react.cjs.map +1 -1
  34. package/dist/react.d.cts +75 -8
  35. package/dist/react.d.ts +75 -8
  36. package/dist/react.js +121 -40
  37. package/dist/react.js.map +1 -1
  38. package/dist/server.cjs +5 -3
  39. package/dist/server.cjs.map +1 -1
  40. package/dist/server.d.cts +8 -3
  41. package/dist/server.d.ts +8 -3
  42. package/dist/server.js +1 -1
  43. package/dist/shell-react.cjs.map +1 -1
  44. package/dist/shell-react.js.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/chunk-IUDD7YTQ.js +0 -839
  47. package/dist/chunk-IUDD7YTQ.js.map +0 -1
  48. package/dist/chunk-PI42H3XY.js +0 -459
  49. package/dist/chunk-PI42H3XY.js.map +0 -1
  50. package/dist/chunk-QRXFL66W.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,50 +1,98 @@
1
+ import {
2
+ BUTTON_TAG,
3
+ CONNECTED_KEY,
4
+ defineBwalletxButton,
5
+ dropLegacyConnectedKey,
6
+ getUrlFor,
7
+ handleLabel,
8
+ stateFor
9
+ } from "./chunk-34DKBQNN.js";
1
10
  import {
2
11
  BRC29_PROTOCOL,
3
12
  PaymentError,
4
13
  WALLET_THEME_META,
5
14
  amountInSats,
6
- brc100Option,
7
15
  buyToken,
8
16
  declareWalletTheme,
9
- discoverWallets,
10
- handcashAdapter,
11
17
  isIdentityKeyHex,
12
18
  isPaymail,
13
- isTouchDevice,
14
- pairingModal,
15
- pairingOption,
16
19
  pay,
17
- pickWallet,
18
- qrSvg,
19
20
  resolvePaymailP2P,
21
+ runConnect,
20
22
  tip
21
- } from "./chunk-PI42H3XY.js";
23
+ } from "./chunk-IFGOAROM.js";
22
24
  import {
25
+ BAVATAR_URL,
23
26
  BWALLETX_RDNS,
27
+ BWALLETX_TYPE,
28
+ DEFAULT_DISCOVER_MS,
29
+ DESKTOP_OPTION_ID,
24
30
  GET_URL,
31
+ IDENTITY_HINT_KEY,
25
32
  LOGIN_PROTOCOL,
33
+ MENU_CSS,
34
+ PAYMAIL_LOOKUP_URL,
35
+ PENDING_LABEL,
36
+ PENDING_LABEL_OTHER,
37
+ PENDING_NOTE,
26
38
  RDNS_EXTENSION,
27
39
  RDNS_MOBILE,
28
40
  SIGNIN_CSS,
29
41
  SIGNIN_TAG,
30
42
  WEB_WALLET_URL,
43
+ accountLabel,
44
+ attemptFor,
45
+ autoChoice,
46
+ avatarUrlFor,
47
+ bindPrewarm,
48
+ brc100Option,
31
49
  buildAuthorizeUrl,
50
+ challengeWantsIdentityKey,
51
+ chooseWallet,
52
+ chooserOrder,
32
53
  clearPairing,
33
54
  connectBwalletX,
55
+ cwiIsAnnounced,
56
+ decideWallet,
34
57
  defineBwalletxSignin,
58
+ desktopOption,
35
59
  discoverBwalletX,
60
+ discoverWallets,
36
61
  findBwalletX,
62
+ handcashAdapter,
63
+ hasBwalletX,
37
64
  inOrder,
65
+ isFramed,
66
+ isPresentBwalletX,
67
+ isTouchDevice,
68
+ isUserRejection,
69
+ lookupPaymail,
38
70
  markSvg,
71
+ otherDetected,
72
+ outcomeOf,
39
73
  pairBwalletX,
74
+ pairingModal,
75
+ pairingOption,
76
+ pickWallet,
77
+ prewarmBwalletX,
40
78
  proveHoldings,
79
+ qrSvg,
80
+ rememberIdentity,
81
+ rememberedIdentity,
82
+ reportAttempt,
41
83
  requestAccess,
42
84
  restorePairing,
85
+ shortKey,
86
+ signInAndVerify,
87
+ signInErrorText,
43
88
  signInWithBwalletX,
44
89
  signinText,
90
+ substrateOf,
45
91
  throwIfAccessError,
46
- toAccessError
47
- } from "./chunk-IUDD7YTQ.js";
92
+ toAccessError,
93
+ waitIfLocked,
94
+ walletTypeOf
95
+ } from "./chunk-LS6AYEBO.js";
48
96
  import {
49
97
  ACCESS_ERROR_STATUS,
50
98
  ACCESS_PROTOCOL,
@@ -104,11 +152,23 @@ export {
104
152
  ACCESS_PROTOCOL,
105
153
  ACCESS_VERSION,
106
154
  AccessError,
155
+ BAVATAR_URL,
107
156
  BRC29_PROTOCOL,
157
+ BUTTON_TAG,
108
158
  BWALLETX_RDNS,
159
+ BWALLETX_TYPE,
160
+ CONNECTED_KEY,
161
+ DEFAULT_DISCOVER_MS,
162
+ DESKTOP_OPTION_ID,
109
163
  GET_URL,
164
+ IDENTITY_HINT_KEY,
110
165
  LOGIN_PROTOCOL,
111
166
  LOGO_URL,
167
+ MENU_CSS,
168
+ PAYMAIL_LOOKUP_URL,
169
+ PENDING_LABEL,
170
+ PENDING_LABEL_OTHER,
171
+ PENDING_NOTE,
112
172
  PROTOCOL_MEDIA,
113
173
  PaymentError,
114
174
  RDNS_EXTENSION,
@@ -118,40 +178,74 @@ export {
118
178
  WALLET_THEME_META,
119
179
  WEB_WALLET_URL,
120
180
  accessErrorMessage,
181
+ accountLabel,
121
182
  amountInSats,
183
+ attemptFor,
184
+ autoChoice,
185
+ avatarUrlFor,
186
+ bindPrewarm,
122
187
  brc100Option,
123
188
  buildAuthorizeUrl,
124
189
  buyToken,
125
190
  canonicalJson,
191
+ challengeWantsIdentityKey,
192
+ chooseWallet,
193
+ chooserOrder,
126
194
  clearPairing,
127
195
  connectBwalletX,
196
+ cwiIsAnnounced,
197
+ decideWallet,
128
198
  declareWalletTheme,
199
+ defineBwalletxButton,
129
200
  defineBwalletxSignin,
201
+ desktopOption,
130
202
  discoverBwalletX,
131
203
  discoverWallets,
204
+ dropLegacyConnectedKey,
132
205
  findBwalletX,
206
+ getUrlFor,
133
207
  handcashAdapter,
208
+ handleLabel,
209
+ hasBwalletX,
134
210
  inOrder,
211
+ isFramed,
135
212
  isIdentityKeyHex,
136
213
  isPaymail,
214
+ isPresentBwalletX,
137
215
  isTouchDevice,
216
+ isUserRejection,
217
+ lookupPaymail,
138
218
  markSvg,
219
+ otherDetected,
220
+ outcomeOf,
139
221
  pairBwalletX,
140
222
  pairingModal,
141
223
  pairingOption,
142
224
  pay,
143
225
  pickWallet,
226
+ prewarmBwalletX,
144
227
  protocolMediaUrl,
145
228
  proveHoldings,
146
229
  qrSvg,
230
+ rememberIdentity,
231
+ rememberedIdentity,
147
232
  renderButton,
233
+ reportAttempt,
148
234
  requestAccess,
149
235
  resolvePaymailP2P,
150
236
  restorePairing,
237
+ runConnect,
238
+ shortKey,
239
+ signInAndVerify,
240
+ signInErrorText,
151
241
  signInWithBwalletX,
152
242
  signinText,
243
+ stateFor,
244
+ substrateOf,
153
245
  throwIfAccessError,
154
246
  tip,
155
- toAccessError
247
+ toAccessError,
248
+ waitIfLocked,
249
+ walletTypeOf
156
250
  };
157
251
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/button.ts"],"sourcesContent":["const CSS = `\n.bwx-signin{display:inline-flex;align-items:center;gap:12px;min-height:48px;padding:10px 22px 10px 10px;border:0;border-radius:12px;cursor:pointer;background:linear-gradient(180deg,#fcd34d,#f59e0b);color:#000;text-align:left;font:700 16px/1.2 system-ui,-apple-system,\"Segoe UI\",sans-serif;box-shadow:0 8px 24px rgba(245,158,11,.2)}\n.bwx-signin:hover{background:linear-gradient(180deg,#fde68a,#fbbf24)}\n.bwx-signin:focus-visible{outline:2px solid #ffd24d;outline-offset:3px}\n.bwx-signin:disabled{opacity:.6;cursor:wait}\n.bwx-signin .bwx-mark{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#000;flex:none}\n.bwx-signin small{display:block;font-size:11px;font-weight:500;color:rgba(0,0,0,.6)}`;\n\nexport const LOGO_URL = 'https://bwalletx.com/logo.svg';\n\nexport interface ButtonOptions {\n /** Second line under the label. Default \"also works with bWallet\". false hides it. */\n subtitle?: string | false;\n onClick?: (button: HTMLButtonElement) => void;\n}\n\n/** Put the gold \"Sign in with bWalletX\" button into `el` (replacing its contents). */\nexport function renderButton(el: HTMLElement | string, opts: ButtonOptions = {}): HTMLButtonElement {\n const host = typeof el === 'string' ? document.querySelector<HTMLElement>(el) : el;\n if (!host) throw new Error(`renderButton: no element ${String(el)}`);\n if (!document.getElementById('bwx-signin-css')) {\n const style = document.createElement('style');\n style.id = 'bwx-signin-css';\n style.textContent = CSS;\n document.head.appendChild(style);\n }\n const b = document.createElement('button');\n b.type = 'button';\n b.className = 'bwx-signin';\n const mark = document.createElement('span');\n mark.className = 'bwx-mark';\n const img = document.createElement('img');\n img.src = LOGO_URL;\n img.alt = '';\n img.width = 15;\n img.height = 20;\n mark.appendChild(img);\n const label = document.createElement('span');\n label.className = 'bwx-label';\n label.textContent = 'Sign in with bWalletX';\n const sub = opts.subtitle === undefined ? 'also works with bWallet' : opts.subtitle;\n if (sub) {\n const small = document.createElement('small');\n small.textContent = sub;\n label.appendChild(small);\n }\n b.append(mark, label);\n if (opts.onClick) b.addEventListener('click', () => opts.onClick!(b));\n host.replaceChildren(b);\n return b;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQL,IAAM,WAAW;AASjB,SAAS,aAAa,IAA0B,OAAsB,CAAC,GAAsB;AAClG,QAAM,OAAO,OAAO,OAAO,WAAW,SAAS,cAA2B,EAAE,IAAI;AAChF,MAAI,CAAC,KAAM,OAAM,IAAI,MAAM,4BAA4B,OAAO,EAAE,CAAC,EAAE;AACnE,MAAI,CAAC,SAAS,eAAe,gBAAgB,GAAG;AAC9C,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,KAAK;AACX,UAAM,cAAc;AACpB,aAAS,KAAK,YAAY,KAAK;AAAA,EACjC;AACA,QAAM,IAAI,SAAS,cAAc,QAAQ;AACzC,IAAE,OAAO;AACT,IAAE,YAAY;AACd,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,YAAY;AACjB,QAAM,MAAM,SAAS,cAAc,KAAK;AACxC,MAAI,MAAM;AACV,MAAI,MAAM;AACV,MAAI,QAAQ;AACZ,MAAI,SAAS;AACb,OAAK,YAAY,GAAG;AACpB,QAAM,QAAQ,SAAS,cAAc,MAAM;AAC3C,QAAM,YAAY;AAClB,QAAM,cAAc;AACpB,QAAM,MAAM,KAAK,aAAa,SAAY,4BAA4B,KAAK;AAC3E,MAAI,KAAK;AACP,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,cAAc;AACpB,UAAM,YAAY,KAAK;AAAA,EACzB;AACA,IAAE,OAAO,MAAM,KAAK;AACpB,MAAI,KAAK,QAAS,GAAE,iBAAiB,SAAS,MAAM,KAAK,QAAS,CAAC,CAAC;AACpE,OAAK,gBAAgB,CAAC;AACtB,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/button.ts"],"sourcesContent":["const CSS = `\n.bwx-signin{display:inline-flex;align-items:center;gap:12px;min-height:48px;padding:10px 22px 10px 10px;border:0;border-radius:12px;cursor:pointer;background:linear-gradient(180deg,#fcd34d,#f59e0b);color:#000;text-align:left;font:700 16px/1.2 system-ui,-apple-system,\"Segoe UI\",sans-serif;box-shadow:0 8px 24px rgba(245,158,11,.2)}\n.bwx-signin:hover{background:linear-gradient(180deg,#fde68a,#fbbf24)}\n.bwx-signin:focus-visible{outline:2px solid #ffd24d;outline-offset:3px}\n.bwx-signin:disabled{opacity:.6;cursor:wait}\n.bwx-signin .bwx-mark{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#000;flex:none}\n.bwx-signin small{display:block;font-size:11px;font-weight:500;color:rgba(0,0,0,.6)}`;\n\nexport const LOGO_URL = 'https://bwalletx.com/logo.svg';\n\nexport interface ButtonOptions {\n /** Second line under the label. Default \"also works with bWallet\". false hides it. */\n subtitle?: string | false;\n onClick?: (button: HTMLButtonElement) => void;\n}\n\n/** Put the gold \"Sign in with bWalletX\" button into `el` (replacing its contents). */\nexport function renderButton(el: HTMLElement | string, opts: ButtonOptions = {}): HTMLButtonElement {\n const host = typeof el === 'string' ? document.querySelector<HTMLElement>(el) : el;\n if (!host) throw new Error(`renderButton: no element ${String(el)}`);\n if (!document.getElementById('bwx-signin-css')) {\n const style = document.createElement('style');\n style.id = 'bwx-signin-css';\n style.textContent = CSS;\n document.head.appendChild(style);\n }\n const b = document.createElement('button');\n b.type = 'button';\n b.className = 'bwx-signin';\n const mark = document.createElement('span');\n mark.className = 'bwx-mark';\n const img = document.createElement('img');\n img.src = LOGO_URL;\n img.alt = '';\n img.width = 15;\n img.height = 20;\n mark.appendChild(img);\n const label = document.createElement('span');\n label.className = 'bwx-label';\n label.textContent = 'Sign in with bWalletX';\n const sub = opts.subtitle === undefined ? 'also works with bWallet' : opts.subtitle;\n if (sub) {\n const small = document.createElement('small');\n small.textContent = sub;\n label.appendChild(small);\n }\n b.append(mark, label);\n if (opts.onClick) b.addEventListener('click', () => opts.onClick!(b));\n host.replaceChildren(b);\n return b;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQL,IAAM,WAAW;AASjB,SAAS,aAAa,IAA0B,OAAsB,CAAC,GAAsB;AAClG,QAAM,OAAO,OAAO,OAAO,WAAW,SAAS,cAA2B,EAAE,IAAI;AAChF,MAAI,CAAC,KAAM,OAAM,IAAI,MAAM,4BAA4B,OAAO,EAAE,CAAC,EAAE;AACnE,MAAI,CAAC,SAAS,eAAe,gBAAgB,GAAG;AAC9C,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,KAAK;AACX,UAAM,cAAc;AACpB,aAAS,KAAK,YAAY,KAAK;AAAA,EACjC;AACA,QAAM,IAAI,SAAS,cAAc,QAAQ;AACzC,IAAE,OAAO;AACT,IAAE,YAAY;AACd,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,YAAY;AACjB,QAAM,MAAM,SAAS,cAAc,KAAK;AACxC,MAAI,MAAM;AACV,MAAI,MAAM;AACV,MAAI,QAAQ;AACZ,MAAI,SAAS;AACb,OAAK,YAAY,GAAG;AACpB,QAAM,QAAQ,SAAS,cAAc,MAAM;AAC3C,QAAM,YAAY;AAClB,QAAM,cAAc;AACpB,QAAM,MAAM,KAAK,aAAa,SAAY,4BAA4B,KAAK;AAC3E,MAAI,KAAK;AACP,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,cAAc;AACpB,UAAM,YAAY,KAAK;AAAA,EACzB;AACA,IAAE,OAAO,MAAM,KAAK;AACpB,MAAI,KAAK,QAAS,GAAE,iBAAiB,SAAS,MAAM,KAAK,QAAS,CAAC,CAAC;AACpE,OAAK,gBAAgB,CAAC;AACtB,SAAO;AACT;","names":[]}
package/dist/next.cjs CHANGED
@@ -563,12 +563,14 @@ function randomNonce2() {
563
563
  return btoa(s).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
564
564
  }
565
565
  async function createChallenge(opts) {
566
- if (!isIdentityKey(opts.identityKey)) throw new Error("identityKey must be a compressed public key (66 hex chars)");
566
+ const given = opts.identityKey !== void 0 && opts.identityKey !== null && opts.identityKey !== "";
567
+ if (given && !isIdentityKey(opts.identityKey)) throw new Error("identityKey must be a compressed public key (66 hex chars)");
568
+ const boundKey = given ? opts.identityKey.toLowerCase() : "";
567
569
  const origin = normalOrigin2(opts.origin);
568
570
  const nonce = randomNonce2();
569
571
  const expiresAt = Date.now() + CHALLENGE_LIFETIME_MS;
570
572
  const message = loginMessage(origin, nonce, expiresAt);
571
- await storeOrDefault(opts.store).put(nonce, { identityKey: opts.identityKey.toLowerCase(), origin, message, expiresAt });
573
+ await storeOrDefault(opts.store).put(nonce, { identityKey: boundKey, origin, message, expiresAt });
572
574
  return { nonce, message, protocolID: LOGIN_PROTOCOL, keyID: nonce, expiresAt };
573
575
  }
574
576
  async function verifySignIn(opts) {
@@ -584,7 +586,7 @@ async function verifySignIn(opts) {
584
586
  if (c.origin !== origin) return null;
585
587
  if (!isIdentityKey(opts.identityKey)) return null;
586
588
  const identityKey = opts.identityKey.toLowerCase();
587
- if (c.identityKey !== identityKey) return null;
589
+ if (c.identityKey && c.identityKey !== identityKey) return null;
588
590
  const sig = opts.signature;
589
591
  if (!Array.isArray(sig) || sig.length < 8 || sig.length > 80 || !sig.every((b) => Number.isInteger(b) && b >= 0 && b <= 255)) {
590
592
  return null;