@bounded-sh/client 0.0.110 → 0.0.111

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 (51) hide show
  1. package/README.md +1 -1
  2. package/dist/auth/solana-rpc.d.ts +9 -0
  3. package/dist/{email-auth-provider-BPeQo6xL.mjs → email-auth-provider-BfBvF_4M.mjs} +2 -2
  4. package/dist/{email-auth-provider-D9SQu9c1.mjs.map → email-auth-provider-BfBvF_4M.mjs.map} +1 -1
  5. package/dist/{email-auth-provider-D9SQu9c1.mjs → email-auth-provider-CVp6hSCo.mjs} +2 -2
  6. package/dist/{email-auth-provider-BPeQo6xL.mjs.map → email-auth-provider-CVp6hSCo.mjs.map} +1 -1
  7. package/dist/{email-auth-provider-Czo-xM6n.js → email-auth-provider-CiqhQ1c2.js} +2 -2
  8. package/dist/{email-auth-provider-Czo-xM6n.js.map → email-auth-provider-CiqhQ1c2.js.map} +1 -1
  9. package/dist/{email-auth-provider-T-Go_9h9.js → email-auth-provider-DxS2WYxM.js} +2 -2
  10. package/dist/{email-auth-provider-T-Go_9h9.js.map → email-auth-provider-DxS2WYxM.js.map} +1 -1
  11. package/dist/{guest-auth-provider-BIohNOHi.mjs → guest-auth-provider-Bm_yqQF6.mjs} +2 -2
  12. package/dist/{guest-auth-provider-DsFTB844.mjs.map → guest-auth-provider-Bm_yqQF6.mjs.map} +1 -1
  13. package/dist/{guest-auth-provider-DsFTB844.mjs → guest-auth-provider-Cc8y4Qd1.mjs} +2 -2
  14. package/dist/{guest-auth-provider-BIohNOHi.mjs.map → guest-auth-provider-Cc8y4Qd1.mjs.map} +1 -1
  15. package/dist/{guest-auth-provider-DJ5nCGjq.js → guest-auth-provider-D9FGNuP9.js} +2 -2
  16. package/dist/{guest-auth-provider-DJ5nCGjq.js.map → guest-auth-provider-D9FGNuP9.js.map} +1 -1
  17. package/dist/{guest-auth-provider-BDhwvzem.js → guest-auth-provider-DDBXeHoo.js} +2 -2
  18. package/dist/{guest-auth-provider-BDhwvzem.js.map → guest-auth-provider-DDBXeHoo.js.map} +1 -1
  19. package/dist/{index-DbXoOlIa.mjs → index-B9__gwTi.mjs} +52 -16
  20. package/dist/index-B9__gwTi.mjs.map +1 -0
  21. package/dist/{index-Cs5nPIzA.js → index-BghQ8jX0.js} +52 -16
  22. package/dist/index-BghQ8jX0.js.map +1 -0
  23. package/dist/index.js +1 -1
  24. package/dist/index.mjs +1 -1
  25. package/dist/{index.native-BSOqaKIz.mjs → index.native-BHjpXkKQ.mjs} +53 -15
  26. package/dist/index.native-BHjpXkKQ.mjs.map +1 -0
  27. package/dist/{index.native-BpcNwWQX.js → index.native-B_AFa0GD.js} +53 -15
  28. package/dist/index.native-B_AFa0GD.js.map +1 -0
  29. package/dist/index.native.js +1 -1
  30. package/dist/index.native.mjs +1 -1
  31. package/dist/{injected-evm-wallet-provider-Xb2G-ZGI.mjs → injected-evm-wallet-provider-BUjqxQxp.mjs} +2 -2
  32. package/dist/{injected-evm-wallet-provider-Xb2G-ZGI.mjs.map → injected-evm-wallet-provider-BUjqxQxp.mjs.map} +1 -1
  33. package/dist/{injected-evm-wallet-provider-BjqqLfPD.mjs → injected-evm-wallet-provider-CIeCSOPL.mjs} +2 -2
  34. package/dist/{injected-evm-wallet-provider-BjqqLfPD.mjs.map → injected-evm-wallet-provider-CIeCSOPL.mjs.map} +1 -1
  35. package/dist/{injected-evm-wallet-provider-CMl0Fyxk.js → injected-evm-wallet-provider-Ckb85p6a.js} +2 -2
  36. package/dist/{injected-evm-wallet-provider-CMl0Fyxk.js.map → injected-evm-wallet-provider-Ckb85p6a.js.map} +1 -1
  37. package/dist/{injected-evm-wallet-provider-_UNpc_hM.js → injected-evm-wallet-provider-DeLUwvGs.js} +2 -2
  38. package/dist/{injected-evm-wallet-provider-_UNpc_hM.js.map → injected-evm-wallet-provider-DeLUwvGs.js.map} +1 -1
  39. package/dist/{injected-wallet-provider-DZOwvKgd.mjs → injected-wallet-provider-BEuj4sM3.mjs} +2 -2
  40. package/dist/{injected-wallet-provider-DZOwvKgd.mjs.map → injected-wallet-provider-BEuj4sM3.mjs.map} +1 -1
  41. package/dist/{injected-wallet-provider-D-Pq9QVK.mjs → injected-wallet-provider-BlzA0J_V.mjs} +2 -2
  42. package/dist/{injected-wallet-provider-D-Pq9QVK.mjs.map → injected-wallet-provider-BlzA0J_V.mjs.map} +1 -1
  43. package/dist/{injected-wallet-provider-C7Q0haGY.js → injected-wallet-provider-CUKdAuFu.js} +2 -2
  44. package/dist/{injected-wallet-provider-C7Q0haGY.js.map → injected-wallet-provider-CUKdAuFu.js.map} +1 -1
  45. package/dist/{injected-wallet-provider-CgHOrtmj.js → injected-wallet-provider-Cfb4ayCP.js} +2 -2
  46. package/dist/{injected-wallet-provider-CgHOrtmj.js.map → injected-wallet-provider-Cfb4ayCP.js.map} +1 -1
  47. package/package.json +2 -2
  48. package/dist/index-Cs5nPIzA.js.map +0 -1
  49. package/dist/index-DbXoOlIa.mjs.map +0 -1
  50. package/dist/index.native-BSOqaKIz.mjs.map +0 -1
  51. package/dist/index.native-BpcNwWQX.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Cs5nPIzA.js');
3
+ var index = require('./index-BghQ8jX0.js');
4
4
  var core = require('@bounded-sh/core');
5
5
  require('react');
6
6
 
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { ag as BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA, af as BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA, ae as BUILD_REVIEW_CAPABILITY_SCHEMA, a7 as BuildsApiError, ad as FAILURE_REASONS, a9 as NON_TERMINAL_STATES, a1 as OffchainAuthProvider, ac as PARK_REASONS, a2 as PrivyExpoProvider, ab as RUN_STATES, aa as TERMINAL_STATES, W as WalletConfigError, Q as apps, a6 as builds, I as completeLoginFromRedirect, a4 as connectBroadcast, a5 as connectServiceSession, o as defaultInjectedEvmProvider, f as defaultInjectedProvider, F as ensureSharedWalletLoginReady, M as ensureSignedIn, E as ensureWalletLoginReady, w as getAuthLoading, A as getAuthProvider, q as getCurrentUser, Y as getIdToken, J as getLoginReturnError, S as getOrCreateTurnkeyWallet, g as getPlatform, V as getTurnkeyWalletRecoveryUrl, U as getTurnkeyWalletSessionState, p as init, y as login, K as loginWithPopup, C as loginWithPrivy, H as loginWithRedirect, D as loginWithWallet, z as logout, a8 as mediaAgentTools, v as onAuthLoadingChanged, u as onAuthStateChanged, Z as onramp, _ as onrampQuote, $ as onrampStatus, L as openBoundedWidget, T as openTurnkeyKeyExport, G as preloadWalletLogin, a3 as requestEip6963Providers, a0 as setPlatform, B as signInAnonymously, R as signSolanaMessageViaTurnkey, X as startTurnkeyEmailLogin, N as useAuth, P as useBuildRun, O as useQuery, x as waitForAuthReady } from './index-DbXoOlIa.mjs';
1
+ export { ag as BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA, af as BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA, ae as BUILD_REVIEW_CAPABILITY_SCHEMA, a7 as BuildsApiError, ad as FAILURE_REASONS, a9 as NON_TERMINAL_STATES, a1 as OffchainAuthProvider, ac as PARK_REASONS, a2 as PrivyExpoProvider, ab as RUN_STATES, aa as TERMINAL_STATES, W as WalletConfigError, Q as apps, a6 as builds, I as completeLoginFromRedirect, a4 as connectBroadcast, a5 as connectServiceSession, o as defaultInjectedEvmProvider, f as defaultInjectedProvider, F as ensureSharedWalletLoginReady, M as ensureSignedIn, E as ensureWalletLoginReady, w as getAuthLoading, A as getAuthProvider, q as getCurrentUser, Y as getIdToken, J as getLoginReturnError, S as getOrCreateTurnkeyWallet, g as getPlatform, V as getTurnkeyWalletRecoveryUrl, U as getTurnkeyWalletSessionState, p as init, y as login, K as loginWithPopup, C as loginWithPrivy, H as loginWithRedirect, D as loginWithWallet, z as logout, a8 as mediaAgentTools, v as onAuthLoadingChanged, u as onAuthStateChanged, Z as onramp, _ as onrampQuote, $ as onrampStatus, L as openBoundedWidget, T as openTurnkeyKeyExport, G as preloadWalletLogin, a3 as requestEip6963Providers, a0 as setPlatform, B as signInAnonymously, R as signSolanaMessageViaTurnkey, X as startTurnkeyEmailLogin, N as useAuth, P as useBuildRun, O as useQuery, x as waitForAuthReady } from './index-B9__gwTi.mjs';
2
2
  export * from '@bounded-sh/core';
3
3
  export { AppTokenExchangeError, BoundedDeclineError, DECLINE_EVENT_NAME, RATE_LIMIT_EVENT_NAME, ScopedClientReadOnlyError, aggregate, clearAppTokenCache, count, createAppTokenAuthHeaders, createClient, deriveDecline, dispatchDeclineEvent, dispatchRateLimitEvent, docId, exchangeAppToken, get, getConfig, getFiles, getMany, queryAggregate, reconcileSetResult, runExpression, runExpressionMany, runQuery, runQueryMany, search, set, setFile, setMany, signAndSubmitTransaction, signMessage, signTransaction, subscribe, waitForSetResult } from '@bounded-sh/core';
4
4
  import 'react';
@@ -686,6 +686,8 @@ async function clearSessionProviderForLogout() {
686
686
  setStoredAuthMethod(null);
687
687
  }
688
688
 
689
+ const SOLANA_DEVNET_RPC_URL = "https://idelle-8nxsep-fast-devnet.helius-rpc.com";
690
+ const SOLANA_MAINNET_RPC_URL = "https://celestia-cegncv-fast-mainnet.helius-rpc.com";
689
691
  const SUPPORTED_SOLANA_NETWORKS = new Set([
690
692
  "solana_devnet",
691
693
  "solana_mainnet",
@@ -715,15 +717,35 @@ function resolveSolanaWalletStandardChain(network, context) {
715
717
  `Expected one of: solana_devnet, solana_mainnet.`);
716
718
  }
717
719
  }
720
+ /**
721
+ * The platform RPC endpoint for a supported Solana network, or null when the
722
+ * network is missing or unsupported. Used when the app passes no rpcUrl.
723
+ */
724
+ function defaultSolanaRpcUrl(network) {
725
+ switch (network) {
726
+ case "solana_mainnet":
727
+ return SOLANA_MAINNET_RPC_URL;
728
+ case "solana_devnet":
729
+ return SOLANA_DEVNET_RPC_URL;
730
+ default:
731
+ return null;
732
+ }
733
+ }
734
+ /**
735
+ * An explicit rpcUrl always wins. Otherwise the platform RPC for the configured
736
+ * network is used. With neither, fail closed.
737
+ */
718
738
  function resolveSolanaRpcUrl(explicitRpcUrl, network, context) {
739
+ var _a;
719
740
  if (network != null && network !== "" && !isSupportedSolanaRpcNetwork(network)) {
720
741
  throw new Error(`${context} does not support Solana network "${network}". ` +
721
742
  `Expected one of: solana_devnet, solana_mainnet.`);
722
743
  }
723
- const rpcUrl = normalizeSolanaRpcUrl(explicitRpcUrl);
744
+ const rpcUrl = (_a = normalizeSolanaRpcUrl(explicitRpcUrl)) !== null && _a !== void 0 ? _a : defaultSolanaRpcUrl(network);
724
745
  if (rpcUrl)
725
746
  return rpcUrl;
726
- throw new Error(`${context} requires an explicit Solana RPC URL. Pass config.rpcUrl before signing or submitting onchain transactions.`);
747
+ throw new Error(`${context} requires a Solana network. Set init({ chain: "solana_mainnet" | "solana_devnet" }) ` +
748
+ `or pass config.rpcUrl before signing or submitting onchain transactions.`);
727
749
  }
728
750
 
729
751
  var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
@@ -5866,7 +5888,7 @@ async function getAuthProvider(config) {
5866
5888
  // manager as legacy email sessions. Human login should be started
5867
5889
  // with loginWithRedirect(); this provider is kept as the restore and
5868
5890
  // logout surface for those sessions.
5869
- currentAuthProvider = new (await import('./email-auth-provider-D9SQu9c1.mjs')).EmailAuthProvider();
5891
+ currentAuthProvider = new (await import('./email-auth-provider-CVp6hSCo.mjs')).EmailAuthProvider();
5870
5892
  break;
5871
5893
  case "phantom": {
5872
5894
  // First-class Solana WALLET LOGIN (the poof/TaroBase-style "connect
@@ -5908,7 +5930,7 @@ async function getAuthProvider(config) {
5908
5930
  // (bounded-login-widget.ts), so registration never counts as
5909
5931
  // evidence the user has a wallet.
5910
5932
  await ensureSolanaMobileWalletRegistered(config, configuredNetwork);
5911
- const { InjectedWalletProvider } = await import('./injected-wallet-provider-DZOwvKgd.mjs');
5933
+ const { InjectedWalletProvider } = await import('./injected-wallet-provider-BEuj4sM3.mjs');
5912
5934
  currentAuthProvider = new InjectedWalletProvider(resolveInjectedWalletConfig(config), rpcUrl, configuredNetwork);
5913
5935
  break;
5914
5936
  }
@@ -5921,7 +5943,7 @@ async function getAuthProvider(config) {
5921
5943
  // Selecting authMethod:'evm-wallet' IS the opt-in — pass evmWalletConfig
5922
5944
  // to point at a specific wallet or set chainId/domain.
5923
5945
  const evmWalletConfig = ((_a = config.evmWalletConfig) !== null && _a !== void 0 ? _a : {});
5924
- const { InjectedEvmWalletProvider } = await import('./injected-evm-wallet-provider-Xb2G-ZGI.mjs');
5946
+ const { InjectedEvmWalletProvider } = await import('./injected-evm-wallet-provider-BUjqxQxp.mjs');
5925
5947
  currentAuthProvider = new InjectedEvmWalletProvider(evmWalletConfig);
5926
5948
  break;
5927
5949
  }
@@ -5946,7 +5968,7 @@ async function getAuthProvider(config) {
5946
5968
  break;
5947
5969
  case "guest":
5948
5970
  // Anonymous auth: a device-local ed25519 keypair signs the challenge.
5949
- currentAuthProvider = new (await import('./guest-auth-provider-DsFTB844.mjs')).GuestAuthProvider();
5971
+ currentAuthProvider = new (await import('./guest-auth-provider-Cc8y4Qd1.mjs')).GuestAuthProvider();
5950
5972
  break;
5951
5973
  }
5952
5974
  if (!currentAuthProvider) {
@@ -6008,7 +6030,7 @@ async function signInAnonymously() {
6008
6030
  // Lazy-load the guest provider so its ed25519/web3 dependencies stay out of
6009
6031
  // the main bundle for data-only apps. Specifier is a static string literal
6010
6032
  // so bundle-splitting can see it.
6011
- const provider = new (await import('./guest-auth-provider-DsFTB844.mjs')).GuestAuthProvider();
6033
+ const provider = new (await import('./guest-auth-provider-Cc8y4Qd1.mjs')).GuestAuthProvider();
6012
6034
  setAuthLoading(true); // reflect "signing in…" while the guest keypair session is minted
6013
6035
  // adoptSessionProvider awaits only getConfig() (already resolved here) and then
6014
6036
  // runs every write - provider/method/config/marker/user - in one synchronous
@@ -6179,7 +6201,7 @@ function ensureSharedWalletLoginReady() {
6179
6201
  if (!sharedWalletReady) {
6180
6202
  sharedWalletReady = (async () => {
6181
6203
  await getConfig();
6182
- await import('./injected-wallet-provider-DZOwvKgd.mjs');
6204
+ await import('./injected-wallet-provider-BEuj4sM3.mjs');
6183
6205
  })().catch((error) => {
6184
6206
  sharedWalletReady = null;
6185
6207
  throw error;
@@ -6400,6 +6422,17 @@ async function logout$1(options) {
6400
6422
  }
6401
6423
  }
6402
6424
 
6425
+ /**
6426
+ * An explicit rpcUrl wins; otherwise a Solana chain gets the platform RPC so
6427
+ * every onchain path (wallet signing, submission, reconcile) has one.
6428
+ */
6429
+ function withDefaultSolanaRpcUrl(config) {
6430
+ var _a;
6431
+ if (normalizeSolanaRpcUrl(config.rpcUrl))
6432
+ return config;
6433
+ const rpcUrl = defaultSolanaRpcUrl((_a = config.chain) === null || _a === void 0 ? void 0 : _a.trim());
6434
+ return rpcUrl ? Object.assign(Object.assign({}, config), { rpcUrl }) : config;
6435
+ }
6403
6436
  /**
6404
6437
  * Subscribed once per process, not per init(): re-registering on every init would
6405
6438
  * stack duplicate handlers on repeated initialization.
@@ -6468,7 +6501,8 @@ let initializationGeneration = 0;
6468
6501
  function getInitializationGeneration() { return initializationGeneration; }
6469
6502
  // This file acts as a middleware for the global state of the SDK
6470
6503
  // This mostly involves setting up the AuthProvider and managing the current user
6471
- async function initialize(newConfig) {
6504
+ async function initialize(requestedConfig) {
6505
+ const newConfig = withDefaultSolanaRpcUrl(requestedConfig);
6472
6506
  // Mark auth as loading for the ENTIRE init/restore window so consumers render
6473
6507
  // a neutral/loading state instead of the signed-out UI while we rehydrate the
6474
6508
  // session — otherwise getCurrentUser() is null + loading is false during the
@@ -8396,7 +8430,7 @@ class PrivyExpoProvider {
8396
8430
  if (isLegacyTx) {
8397
8431
  const legacyTx = transaction;
8398
8432
  if (!legacyTx.recentBlockhash) {
8399
- const rpcUrl = this.getRpcUrl();
8433
+ const rpcUrl = await this.getRpcUrl();
8400
8434
  const connection = new Connection(rpcUrl, 'confirmed');
8401
8435
  const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');
8402
8436
  legacyTx.recentBlockhash = blockhash;
@@ -8409,7 +8443,7 @@ class PrivyExpoProvider {
8409
8443
  else {
8410
8444
  const versionedTx = transaction;
8411
8445
  if (!versionedTx.message.recentBlockhash) {
8412
- const rpcUrl = this.getRpcUrl();
8446
+ const rpcUrl = await this.getRpcUrl();
8413
8447
  const connection = new Connection(rpcUrl, 'confirmed');
8414
8448
  const { blockhash } = await connection.getLatestBlockhash('confirmed');
8415
8449
  versionedTx.message.recentBlockhash = blockhash;
@@ -8429,7 +8463,7 @@ class PrivyExpoProvider {
8429
8463
  await this.ensureReady();
8430
8464
  const { Connection, PublicKey } = await import('@solana/web3.js');
8431
8465
  const wallet = await this.getWalletOrThrow('submitting this transaction');
8432
- const rpcUrl = this.getRpcUrl();
8466
+ const rpcUrl = await this.getRpcUrl();
8433
8467
  const connection = new Connection(rpcUrl, 'confirmed');
8434
8468
  // Ensure blockhash.
8435
8469
  // DS3-0414: a Solana signature covers the compiled message (recentBlockhash
@@ -8530,8 +8564,12 @@ class PrivyExpoProvider {
8530
8564
  const txInfo = await confirmAndCheckTransaction(connection, signature);
8531
8565
  return { signature, txInfo };
8532
8566
  }
8533
- getRpcUrl(network) {
8534
- return resolveSolanaRpcUrl(this.networkUrl, network, "Privy Expo Solana transaction");
8567
+ // The constructor rpcUrl wins, then init()'s rpcUrl, then the platform RPC
8568
+ // for init()'s chain.
8569
+ async getRpcUrl() {
8570
+ var _a;
8571
+ const config = await getConfig();
8572
+ return resolveSolanaRpcUrl((_a = this.networkUrl) !== null && _a !== void 0 ? _a : config.rpcUrl, isSupportedSolanaRpcNetwork(config.chain) ? config.chain : null, "Privy Expo Solana transaction");
8535
8573
  }
8536
8574
  async ensureReady(timeoutMs = 15000) {
8537
8575
  if (!this.privyMethods) {
@@ -8560,4 +8598,4 @@ class PrivyExpoProvider {
8560
8598
  }
8561
8599
 
8562
8600
  export { BUILD_REVIEW_CAPABILITY_SCHEMA as $, logout as A, getAuthProvider as B, signInAnonymously as C, loginWithPrivy as D, loginWithRedirect as E, completeLoginFromRedirect as F, getLoginReturnError as G, loginWithPopup as H, useAuth as I, useQuery as J, useBuildRun as K, apps as L, getIdToken as M, onramp as N, onrampQuote as O, onrampStatus as P, setPlatform as Q, OffchainAuthProvider as R, PrivyExpoProvider as S, builds as T, BuildsApiError as U, mediaAgentTools as V, NON_TERMINAL_STATES as W, TERMINAL_STATES as X, RUN_STATES as Y, PARK_REASONS as Z, FAILURE_REASONS as _, signMessageWithTurnkey as a, BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA as a0, BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA as a1, signTransactionWithTurnkey as b, signTransactionV1WithTurnkey as c, signAndSubmitTransactionWithTurnkey as d, bs58 as e, getWallets as f, getPlatform as g, hasTurnkeyWallet as h, isSolanaMobileWallet as i, solanaMobileWalletLeavesPage as j, setAuthLoading as k, bufferExports as l, setStoredAuthMethod as m, normalizeSolanaRpcUrl as n, confirmAndCheckTransaction as o, resolveSolanaRpcUrl as p, init as q, resolveSolanaWalletStandardChain as r, setCurrentUser as s, transactionHasSignature as t, getCurrentUser as u, onAuthStateChanged as v, onAuthLoadingChanged as w, getAuthLoading as x, waitForAuthReady as y, login as z };
8563
- //# sourceMappingURL=index.native-BSOqaKIz.mjs.map
8601
+ //# sourceMappingURL=index.native-BHjpXkKQ.mjs.map