@bounded-sh/client 0.0.60 → 0.0.61

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 (49) hide show
  1. package/dist/{email-auth-provider-B5yIZe1l.js → email-auth-provider-9BwSziWj.js} +2 -2
  2. package/dist/{email-auth-provider-B5yIZe1l.js.map → email-auth-provider-9BwSziWj.js.map} +1 -1
  3. package/dist/{email-auth-provider-nBv7mW9q.mjs → email-auth-provider-B3XaJw-G.mjs} +2 -2
  4. package/dist/{email-auth-provider-BF-vvbAt.mjs.map → email-auth-provider-B3XaJw-G.mjs.map} +1 -1
  5. package/dist/{email-auth-provider-BCEdcnRu.js → email-auth-provider-BttT2sZK.js} +2 -2
  6. package/dist/{email-auth-provider-BCEdcnRu.js.map → email-auth-provider-BttT2sZK.js.map} +1 -1
  7. package/dist/{email-auth-provider-BF-vvbAt.mjs → email-auth-provider-Cb4VKA1E.mjs} +2 -2
  8. package/dist/{email-auth-provider-nBv7mW9q.mjs.map → email-auth-provider-Cb4VKA1E.mjs.map} +1 -1
  9. package/dist/{guest-auth-provider-DFNAHmtY.mjs → guest-auth-provider-BBPpydtM.mjs} +2 -2
  10. package/dist/{guest-auth-provider-DFNAHmtY.mjs.map → guest-auth-provider-BBPpydtM.mjs.map} +1 -1
  11. package/dist/{guest-auth-provider-DGvQgIwm.mjs → guest-auth-provider-BBSFawAr.mjs} +2 -2
  12. package/dist/{guest-auth-provider-DGvQgIwm.mjs.map → guest-auth-provider-BBSFawAr.mjs.map} +1 -1
  13. package/dist/{guest-auth-provider-CrRreOyf.js → guest-auth-provider-BcR-MQ0g.js} +2 -2
  14. package/dist/{guest-auth-provider-CrRreOyf.js.map → guest-auth-provider-BcR-MQ0g.js.map} +1 -1
  15. package/dist/{guest-auth-provider-CZ-CpNhD.js → guest-auth-provider-Di0TRg-z.js} +2 -2
  16. package/dist/{guest-auth-provider-CZ-CpNhD.js.map → guest-auth-provider-Di0TRg-z.js.map} +1 -1
  17. package/dist/{index-iu8vB4ye.js → index-C_L497w1.js} +46 -16
  18. package/dist/index-C_L497w1.js.map +1 -0
  19. package/dist/{index-CQtGkKVd.mjs → index-L2R6C5Vl.mjs} +46 -16
  20. package/dist/index-L2R6C5Vl.mjs.map +1 -0
  21. package/dist/index.js +1 -1
  22. package/dist/index.mjs +1 -1
  23. package/dist/{index.native-Crfn_NOB.mjs → index.native-BIUs8t7F.mjs} +38 -15
  24. package/dist/index.native-BIUs8t7F.mjs.map +1 -0
  25. package/dist/{index.native-CDfx0N6p.js → index.native-BSheiGj2.js} +38 -15
  26. package/dist/index.native-BSheiGj2.js.map +1 -0
  27. package/dist/index.native.js +1 -1
  28. package/dist/index.native.mjs +1 -1
  29. package/dist/{injected-evm-wallet-provider-CGa692L1.js → injected-evm-wallet-provider-7XawIUdJ.js} +2 -2
  30. package/dist/{injected-evm-wallet-provider-CGa692L1.js.map → injected-evm-wallet-provider-7XawIUdJ.js.map} +1 -1
  31. package/dist/{injected-evm-wallet-provider-D8lYGcM2.mjs → injected-evm-wallet-provider-DSFDC8fh.mjs} +2 -2
  32. package/dist/{injected-evm-wallet-provider-D8lYGcM2.mjs.map → injected-evm-wallet-provider-DSFDC8fh.mjs.map} +1 -1
  33. package/dist/{injected-evm-wallet-provider-LTWiACl5.js → injected-evm-wallet-provider-DgWUaVtt.js} +2 -2
  34. package/dist/{injected-evm-wallet-provider-LTWiACl5.js.map → injected-evm-wallet-provider-DgWUaVtt.js.map} +1 -1
  35. package/dist/{injected-evm-wallet-provider-Bi9G3X35.mjs → injected-evm-wallet-provider-DnOrVMDX.mjs} +2 -2
  36. package/dist/{injected-evm-wallet-provider-Bi9G3X35.mjs.map → injected-evm-wallet-provider-DnOrVMDX.mjs.map} +1 -1
  37. package/dist/{injected-wallet-provider-TPx8Wzvq.js → injected-wallet-provider-BMDJntMD.js} +2 -2
  38. package/dist/{injected-wallet-provider-TPx8Wzvq.js.map → injected-wallet-provider-BMDJntMD.js.map} +1 -1
  39. package/dist/{injected-wallet-provider-kx8tcMKM.mjs → injected-wallet-provider-DfJvN3sV.mjs} +2 -2
  40. package/dist/{injected-wallet-provider-kx8tcMKM.mjs.map → injected-wallet-provider-DfJvN3sV.mjs.map} +1 -1
  41. package/dist/{injected-wallet-provider-CcyA5JBS.mjs → injected-wallet-provider-ZkPzVj5W.mjs} +2 -2
  42. package/dist/{injected-wallet-provider-CcyA5JBS.mjs.map → injected-wallet-provider-ZkPzVj5W.mjs.map} +1 -1
  43. package/dist/{injected-wallet-provider-DYZFxIdd.js → injected-wallet-provider-oCRGuls5.js} +2 -2
  44. package/dist/{injected-wallet-provider-DYZFxIdd.js.map → injected-wallet-provider-oCRGuls5.js.map} +1 -1
  45. package/package.json +2 -2
  46. package/dist/index-CQtGkKVd.mjs.map +0 -1
  47. package/dist/index-iu8vB4ye.js.map +0 -1
  48. package/dist/index.native-CDfx0N6p.js.map +0 -1
  49. package/dist/index.native-Crfn_NOB.mjs.map +0 -1
@@ -3686,6 +3686,7 @@ const OIDC_NO_WALLET = 'This login has no embedded wallet. Enable `"auth": { "wa
3686
3686
  'then sign from a user gesture.';
3687
3687
  const PKCE_STORE_KEY = 'bounded.oidc.pkce';
3688
3688
  const STORED_AUTH_METHOD_KEY$1 = 'bounded_last_auth_method';
3689
+ const ISSUER_SESSION_KIND_KEY$1 = 'bounded_issuer_session_kind';
3689
3690
  // Active session store (Web on web, RN on React Native) — selected by config,
3690
3691
  // not by `typeof window` (truthy on RN). OIDC redirect/popup is web-only, but the
3691
3692
  // session it mints is read back through this same selector everywhere.
@@ -4174,6 +4175,13 @@ async function establishInlineSession(data) {
4174
4175
  getPlatform().storage.setItem(STORED_AUTH_METHOD_KEY$1, 'email');
4175
4176
  }
4176
4177
  catch ( /* storage unavailable */_a) { /* storage unavailable */ }
4178
+ // Turnkey-native OTP mints an app session directly. It does not establish a
4179
+ // Better Auth browser cookie on the issuer, so logout must not navigate
4180
+ // through the issuer's cookie-clearing /logout endpoint.
4181
+ try {
4182
+ getPlatform().storage.setItem(ISSUER_SESSION_KIND_KEY$1, 'inline');
4183
+ }
4184
+ catch ( /* storage unavailable */_b) { /* storage unavailable */ }
4177
4185
  setCurrentUser(user);
4178
4186
  setAuthProviderInstance(oidcProviderSingleton);
4179
4187
  return user;
@@ -4220,6 +4228,13 @@ async function exchangeCode(code, verifier, redirectUri) {
4220
4228
  getPlatform().storage.setItem(STORED_AUTH_METHOD_KEY$1, 'email');
4221
4229
  }
4222
4230
  catch ( /* storage unavailable */_b) { /* storage unavailable */ }
4231
+ // OIDC login does establish the issuer's Better Auth browser cookie. Record
4232
+ // that fact separately from the provider name so logout clears the cookie
4233
+ // and returns through the registered app origin.
4234
+ try {
4235
+ getPlatform().storage.setItem(ISSUER_SESSION_KIND_KEY$1, 'hosted');
4236
+ }
4237
+ catch ( /* storage unavailable */_c) { /* storage unavailable */ }
4223
4238
  setCurrentUser(user);
4224
4239
  setAuthProviderInstance(oidcProviderSingleton);
4225
4240
  return user;
@@ -4236,6 +4251,7 @@ const objectIdentityKeys = new WeakMap();
4236
4251
  let nextObjectIdentityKey = 1;
4237
4252
  // --- localStorage helpers: track which auth method created the active session ---
4238
4253
  const STORED_AUTH_METHOD_KEY = 'bounded_last_auth_method';
4254
+ const ISSUER_SESSION_KIND_KEY = 'bounded_issuer_session_kind';
4239
4255
  function getStoredAuthMethod() {
4240
4256
  try {
4241
4257
  return getPlatform().storage.getItem(STORED_AUTH_METHOD_KEY);
@@ -4252,11 +4268,25 @@ function setStoredAuthMethod(method) {
4252
4268
  else {
4253
4269
  getPlatform().storage.removeItem(STORED_AUTH_METHOD_KEY);
4254
4270
  }
4271
+ // Non-email providers cannot own a Better Auth browser session. Clear
4272
+ // any prior hosted/inline classification when the active provider is
4273
+ // replaced or the session is removed.
4274
+ if (method !== 'email') {
4275
+ getPlatform().storage.removeItem(ISSUER_SESSION_KIND_KEY);
4276
+ }
4255
4277
  }
4256
4278
  catch (_a) {
4257
4279
  // storage might not be available
4258
4280
  }
4259
4281
  }
4282
+ function getIssuerSessionKind() {
4283
+ try {
4284
+ return getPlatform().storage.getItem(ISSUER_SESSION_KIND_KEY);
4285
+ }
4286
+ catch (_a) {
4287
+ return null;
4288
+ }
4289
+ }
4260
4290
  function getStoredIdToken() {
4261
4291
  try {
4262
4292
  return getActiveSessionManager().getIdToken();
@@ -4515,7 +4545,7 @@ async function getAuthProvider(config) {
4515
4545
  // manager as legacy email sessions. Human login should be started
4516
4546
  // with loginWithRedirect(); this provider is kept as the restore and
4517
4547
  // logout surface for those sessions.
4518
- currentAuthProvider = new (await import('./email-auth-provider-nBv7mW9q.mjs')).EmailAuthProvider();
4548
+ currentAuthProvider = new (await import('./email-auth-provider-B3XaJw-G.mjs')).EmailAuthProvider();
4519
4549
  break;
4520
4550
  case "wallet":
4521
4551
  case "phantom": {
@@ -4534,7 +4564,7 @@ async function getAuthProvider(config) {
4534
4564
  if (!isWalletLoginEnabled(config)) {
4535
4565
  throw walletLoginNotEnabledError(authMethod);
4536
4566
  }
4537
- const { InjectedWalletProvider } = await import('./injected-wallet-provider-kx8tcMKM.mjs');
4567
+ const { InjectedWalletProvider } = await import('./injected-wallet-provider-DfJvN3sV.mjs');
4538
4568
  currentAuthProvider = new InjectedWalletProvider(resolveInjectedWalletConfig(config), rpcUrl, configuredNetwork);
4539
4569
  break;
4540
4570
  }
@@ -4547,7 +4577,7 @@ async function getAuthProvider(config) {
4547
4577
  // Selecting authMethod:'evm-wallet' IS the opt-in — pass evmWalletConfig
4548
4578
  // to point at a specific wallet or set chainId/domain.
4549
4579
  const evmWalletConfig = ((_a = config.evmWalletConfig) !== null && _a !== void 0 ? _a : {});
4550
- const { InjectedEvmWalletProvider } = await import('./injected-evm-wallet-provider-D8lYGcM2.mjs');
4580
+ const { InjectedEvmWalletProvider } = await import('./injected-evm-wallet-provider-DSFDC8fh.mjs');
4551
4581
  currentAuthProvider = new InjectedEvmWalletProvider(evmWalletConfig);
4552
4582
  break;
4553
4583
  }
@@ -4575,7 +4605,7 @@ async function getAuthProvider(config) {
4575
4605
  break;
4576
4606
  case "guest":
4577
4607
  // Anonymous auth: a device-local ed25519 keypair signs the challenge.
4578
- currentAuthProvider = new (await import('./guest-auth-provider-DGvQgIwm.mjs')).GuestAuthProvider();
4608
+ currentAuthProvider = new (await import('./guest-auth-provider-BBSFawAr.mjs')).GuestAuthProvider();
4579
4609
  break;
4580
4610
  }
4581
4611
  if (!currentAuthProvider) {
@@ -4631,7 +4661,7 @@ async function signInAnonymously() {
4631
4661
  // Lazy-load the guest provider so its ed25519/web3 dependencies stay out of
4632
4662
  // the main bundle for data-only apps. Specifier is a static string literal
4633
4663
  // so bundle-splitting can see it.
4634
- const provider = new (await import('./guest-auth-provider-DGvQgIwm.mjs')).GuestAuthProvider();
4664
+ const provider = new (await import('./guest-auth-provider-BBSFawAr.mjs')).GuestAuthProvider();
4635
4665
  setAuthLoading(true); // reflect "signing in…" while the guest keypair session is minted
4636
4666
  const commit = (user) => {
4637
4667
  // No await/interleaving inside this block: provider/method/config/marker
@@ -4782,7 +4812,7 @@ async function loginWithWallet(options) {
4782
4812
  ? Object.assign(Object.assign({}, base), { getProvider: options.getProvider }) : base;
4783
4813
  const rpcUrl = normalizeSolanaRpcUrl(cfg.rpcUrl);
4784
4814
  const network = getConfiguredSolanaNetwork(cfg);
4785
- const { InjectedWalletProvider } = await import('./injected-wallet-provider-kx8tcMKM.mjs');
4815
+ const { InjectedWalletProvider } = await import('./injected-wallet-provider-DfJvN3sV.mjs');
4786
4816
  let provider = new InjectedWalletProvider(injectedConfig, rpcUrl, network);
4787
4817
  if (coreConfig.chain === 'offchain')
4788
4818
  provider = new OffchainAuthProvider(provider);
@@ -4927,15 +4957,15 @@ async function logout$1(options) {
4927
4957
  const idTokenHint = idTokenHintOrNull(sm);
4928
4958
  if (refreshToken)
4929
4959
  await revokeSession(refreshToken, sessionIssuer !== null && sessionIssuer !== void 0 ? sessionIssuer : undefined);
4930
- // Hosted sessions ('email' covers the whole hosted surface: email OTP +
4931
- // social + the OIDC redirect/popup flows) are the ones with an issuer
4932
- // cookie; wallet and guest sessions have nothing hosted to end.
4933
- // Check the STORED marker as well as the in-memory method: the hosted
4934
- // OIDC flows (loginWithPopup / completeLoginFromRedirect) write the
4935
- // 'email' marker via exchangeCode() but never touch currentAuthMethod,
4936
- // which stays 'guest'/explicit even after a hosted upgrade. Worst case of
4937
- // a false positive is a harmless idempotent issuer bounce.
4938
- const wasHosted = currentAuthMethod === 'email' || getStoredAuthMethod() === 'email';
4960
+ // Only OIDC-hosted sessions own an issuer browser cookie. Turnkey-native
4961
+ // email OTP is also an email auth method, but it mints the app session
4962
+ // inline and has no issuer cookie to clear. Use the explicit session-kind
4963
+ // marker when present. The auth-method fallback preserves correct logout
4964
+ // behavior for hosted sessions created by older SDK versions.
4965
+ const issuerSessionKind = getIssuerSessionKind();
4966
+ const wasHosted = issuerSessionKind === 'hosted'
4967
+ || (issuerSessionKind === null
4968
+ && (currentAuthMethod === 'email' || getStoredAuthMethod() === 'email'));
4939
4969
  await currentAuthProvider.logout();
4940
4970
  setStoredAuthMethod(null);
4941
4971
  currentAuthProvider = null;
@@ -8034,4 +8064,4 @@ function defaultInjectedEvmProvider() {
8034
8064
  }
8035
8065
 
8036
8066
  export { FAILURE_REASONS as $, completeLoginFromRedirect as A, loginWithPopup as B, completeLoginInPopup as C, openBoundedWidget as D, EMBEDDED_WALLET_UNSUPPORTED as E, useAuth as F, useQuery as G, useBuildRun as H, apps as I, deserializeTransaction as J, signSolanaMessageViaTurnkey as K, getOrCreateTurnkeyWallet as L, startTurnkeyEmailLogin as M, getIdToken as N, onramp as O, onrampQuote as P, onrampStatus as Q, setPlatform as R, OffchainAuthProvider as S, PrivyExpoProvider as T, requestEip6963Providers as U, builds as V, BuildsApiError as W, NON_TERMINAL_STATES as X, TERMINAL_STATES as Y, RUN_STATES as Z, PARK_REASONS as _, hasEmbeddedEvmWallet as a, BUILD_REVIEW_CAPABILITY_SCHEMA as a0, BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA as a1, BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA as a2, embeddedSignAndSubmit as b, setAuthLoading as c, defaultInjectedProvider as d, embeddedRunEvmTransaction as e, bufferExports as f, getPlatform as g, hasEmbeddedWallet as h, bs58 as i, confirmAndCheckTransaction as j, defaultInjectedEvmProvider as k, init as l, getCurrentUser as m, normalizeSolanaRpcUrl as n, onAuthStateChanged as o, onAuthLoadingChanged as p, getAuthLoading as q, resolveSolanaRpcUrl as r, setCurrentUser as s, login as t, logout as u, getAuthProvider as v, signInAnonymously as w, loginWithPrivy as x, loginWithWallet as y, loginWithRedirect as z };
8037
- //# sourceMappingURL=index-CQtGkKVd.mjs.map
8067
+ //# sourceMappingURL=index-L2R6C5Vl.mjs.map