@b3dotfun/sdk 0.1.69-alpha.5 → 0.1.69-alpha.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.
@@ -8,6 +8,7 @@ exports.InnerProvider = InnerProvider;
8
8
  const jsx_runtime_1 = require("react/jsx-runtime");
9
9
  const react_query_1 = require("@tanstack/react-query");
10
10
  const react_1 = require("thirdweb/react");
11
+ const react_2 = require("react");
11
12
  const wagmi_1 = require("wagmi");
12
13
  const createWagmiConfig_1 = require("../../utils/createWagmiConfig");
13
14
  const AuthenticationProvider_1 = __importDefault(require("./AuthenticationProvider"));
@@ -25,6 +26,6 @@ function B3Provider({ theme = "light", children, accountOverride, environment, c
25
26
  * Inner provider component for native
26
27
  */
27
28
  function InnerProvider({ children, accountOverride, environment, defaultPermissions, theme = "light", clientType = "socket", partnerId, rpcUrls, }) {
28
- const wagmiConfig = (0, createWagmiConfig_1.createWagmiConfig)({ partnerId, rpcUrls });
29
+ const wagmiConfig = (0, react_2.useMemo)(() => (0, createWagmiConfig_1.createWagmiConfig)({ partnerId, rpcUrls }), [partnerId, rpcUrls]);
29
30
  return ((0, jsx_runtime_1.jsx)(wagmi_1.WagmiProvider, { config: wagmiConfig, children: (0, jsx_runtime_1.jsx)(react_query_1.QueryClientProvider, { client: queryClient, children: (0, jsx_runtime_1.jsx)(B3ConfigProvider_1.B3ConfigProvider, { accountOverride: accountOverride, environment: environment, automaticallySetFirstEoa: false, theme: theme, clientType: clientType, partnerId: partnerId, defaultPermissions: defaultPermissions, children: children }) }) }));
30
31
  }
@@ -44,7 +44,7 @@ function useAuth() {
44
44
  const useAutoConnectLoadingPrevious = (0, react_2.useRef)(false);
45
45
  const referralCode = (0, useSearchParamsSSR_1.useSearchParam)("referralCode");
46
46
  const { partnerId } = (0, react_1.useB3Config)();
47
- const wagmiConfig = (0, createWagmiConfig_1.getCachedWagmiConfig)({ partnerId });
47
+ const wagmiConfig = (0, react_2.useMemo)(() => (0, createWagmiConfig_1.createWagmiConfig)({ partnerId }), [partnerId]);
48
48
  const { connect } = (0, wagmi_1.useConnect)();
49
49
  const activeWagmiAccount = (0, wagmi_1.useAccount)();
50
50
  const { switchAccount } = (0, wagmi_1.useSwitchAccount)();
@@ -126,9 +126,7 @@ function useAuth() {
126
126
  });
127
127
  }
128
128
  syncWagmiFunc();
129
- // wagmi config shouldn't change
130
- // eslint-disable-next-line react-hooks/exhaustive-deps
131
- }, [partnerId, wallets]);
129
+ }, [wagmiConfig, wallets, connect, switchAccount]);
132
130
  (0, react_2.useEffect)(() => {
133
131
  syncWagmi();
134
132
  }, [wallets, syncWagmi]);
@@ -54,7 +54,7 @@ function useAuthentication(partnerId, { skipAutoConnect = false } = {}) {
54
54
  const { authenticate } = (0, useTWAuth_1.useTWAuth)();
55
55
  const { user, setUser } = (0, useUserQuery_1.useUserQuery)();
56
56
  const useAutoConnectLoadingPrevious = (0, react_2.useRef)(false);
57
- const wagmiConfig = (0, createWagmiConfig_1.createWagmiConfig)({ partnerId });
57
+ const wagmiConfig = (0, react_2.useMemo)(() => (0, createWagmiConfig_1.createWagmiConfig)({ partnerId }), [partnerId]);
58
58
  const { connect } = (0, wagmi_1.useConnect)();
59
59
  const activeWagmiAccount = (0, wagmi_1.useAccount)();
60
60
  const { switchAccount } = (0, wagmi_1.useSwitchAccount)();
@@ -105,9 +105,7 @@ function useAuthentication(partnerId, { skipAutoConnect = false } = {}) {
105
105
  });
106
106
  }
107
107
  syncWagmiFunc();
108
- // wagmi config shouldn't change
109
- // eslint-disable-next-line react-hooks/exhaustive-deps
110
- }, [partnerId, wallets]);
108
+ }, [wagmiConfig, wallets, connect, switchAccount]);
111
109
  (0, react_2.useEffect)(() => {
112
110
  syncWagmi();
113
111
  }, [wallets, syncWagmi]);
@@ -25,21 +25,3 @@ export declare function createWagmiConfig(options: CreateWagmiConfigOptions): im
25
25
  }, {
26
26
  "thirdweb:lastChainId": number;
27
27
  }>)[]>;
28
- /**
29
- * Returns a cached wagmi config for the given partnerId.
30
- * Use this instead of calling createWagmiConfig() directly inside React components or hooks
31
- * to avoid registering duplicate EventEmitter listeners on every render.
32
- */
33
- export declare function getCachedWagmiConfig(options: CreateWagmiConfigOptions): import("wagmi").Config<readonly [import("viem").Chain, ...import("viem").Chain[]], {
34
- [k: string]: import("viem").HttpTransport<undefined, false>;
35
- }, (CreateConnectorFn | CreateConnectorFn<import("thirdweb/dist/types/adapters/eip1193").EIP1193Provider | undefined, {
36
- connect<withCapabilities extends boolean = false>(parameters?: import("@thirdweb-dev/wagmi-adapter").ConnectionOptions<withCapabilities> | undefined): Promise<{
37
- accounts: withCapabilities extends true ? readonly {
38
- address: `0x${string}`;
39
- capabilities: Record<string, unknown>;
40
- }[] : readonly `0x${string}`[];
41
- chainId: number;
42
- }>;
43
- }, {
44
- "thirdweb:lastChainId": number;
45
- }>)[]>;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createWagmiConfig = createWagmiConfig;
4
- exports.getCachedWagmiConfig = getCachedWagmiConfig;
5
4
  const constants_1 = require("../../../shared/constants");
6
5
  const supported_1 = require("../../../shared/constants/chains/supported");
7
6
  const thirdweb_1 = require("../../../shared/utils/thirdweb");
@@ -31,19 +30,3 @@ function createWagmiConfig(options) {
31
30
  connectors: finalConnectors,
32
31
  });
33
32
  }
34
- /** Module-level cache — wagmi configs must not be recreated on every render. */
35
- const wagmiConfigCache = new Map();
36
- /**
37
- * Returns a cached wagmi config for the given partnerId.
38
- * Use this instead of calling createWagmiConfig() directly inside React components or hooks
39
- * to avoid registering duplicate EventEmitter listeners on every render.
40
- */
41
- function getCachedWagmiConfig(options) {
42
- const key = options.partnerId;
43
- let config = wagmiConfigCache.get(key);
44
- if (!config) {
45
- config = createWagmiConfig(options);
46
- wagmiConfigCache.set(key, config);
47
- }
48
- return config;
49
- }
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3
3
  import { ThirdwebProvider } from "thirdweb/react";
4
+ import { useMemo } from "react";
4
5
  import { WagmiProvider } from "wagmi";
5
6
  import { createWagmiConfig } from "../../utils/createWagmiConfig.js";
6
7
  import AuthenticationProvider from "./AuthenticationProvider.js";
@@ -18,6 +19,6 @@ export function B3Provider({ theme = "light", children, accountOverride, environ
18
19
  * Inner provider component for native
19
20
  */
20
21
  export function InnerProvider({ children, accountOverride, environment, defaultPermissions, theme = "light", clientType = "socket", partnerId, rpcUrls, }) {
21
- const wagmiConfig = createWagmiConfig({ partnerId, rpcUrls });
22
+ const wagmiConfig = useMemo(() => createWagmiConfig({ partnerId, rpcUrls }), [partnerId, rpcUrls]);
22
23
  return (_jsx(WagmiProvider, { config: wagmiConfig, children: _jsx(QueryClientProvider, { client: queryClient, children: _jsx(B3ConfigProvider, { accountOverride: accountOverride, environment: environment, automaticallySetFirstEoa: false, theme: theme, clientType: clientType, partnerId: partnerId, defaultPermissions: defaultPermissions, children: children }) }) }));
23
24
  }
@@ -5,13 +5,13 @@ import { ecosystemWalletId } from "../../../shared/constants/index.js";
5
5
  import { debugB3React } from "../../../shared/utils/debug.js";
6
6
  import { client } from "../../../shared/utils/thirdweb.js";
7
7
  import { getConnectors } from "@wagmi/core";
8
- import { useCallback, useContext, useEffect, useRef } from "react";
8
+ import { useCallback, useContext, useEffect, useMemo, useRef } from "react";
9
9
  import { useActiveWallet, useAutoConnect, useConnectedWallets, useDisconnect, useSetActiveWallet, } from "thirdweb/react";
10
10
  import { ecosystemWallet } from "thirdweb/wallets";
11
11
  import { preAuthenticate } from "thirdweb/wallets/in-app";
12
12
  import { useAccount, useConnect, useSwitchAccount } from "wagmi";
13
13
  import { LocalSDKContext } from "../components/B3Provider/LocalSDKProvider.js";
14
- import { getCachedWagmiConfig } from "../utils/createWagmiConfig.js";
14
+ import { createWagmiConfig } from "../utils/createWagmiConfig.js";
15
15
  import { useSearchParam } from "./useSearchParamsSSR.js";
16
16
  import { useUserQuery } from "./useUserQuery.js";
17
17
  const debug = debugB3React("useAuth");
@@ -38,7 +38,7 @@ export function useAuth() {
38
38
  const useAutoConnectLoadingPrevious = useRef(false);
39
39
  const referralCode = useSearchParam("referralCode");
40
40
  const { partnerId } = useB3Config();
41
- const wagmiConfig = getCachedWagmiConfig({ partnerId });
41
+ const wagmiConfig = useMemo(() => createWagmiConfig({ partnerId }), [partnerId]);
42
42
  const { connect } = useConnect();
43
43
  const activeWagmiAccount = useAccount();
44
44
  const { switchAccount } = useSwitchAccount();
@@ -120,9 +120,7 @@ export function useAuth() {
120
120
  });
121
121
  }
122
122
  syncWagmiFunc();
123
- // wagmi config shouldn't change
124
- // eslint-disable-next-line react-hooks/exhaustive-deps
125
- }, [partnerId, wallets]);
123
+ }, [wagmiConfig, wallets, connect, switchAccount]);
126
124
  useEffect(() => {
127
125
  syncWagmi();
128
126
  }, [wallets, syncWagmi]);
@@ -5,7 +5,7 @@ import { ecosystemWalletId } from "../../../shared/constants/index.js";
5
5
  import { debugB3React } from "../../../shared/utils/debug.js";
6
6
  import { client } from "../../../shared/utils/thirdweb.js";
7
7
  import { getConnectors } from "@wagmi/core";
8
- import { useCallback, useContext, useEffect, useRef } from "react";
8
+ import { useCallback, useContext, useEffect, useMemo, useRef } from "react";
9
9
  import { useActiveWallet, useAutoConnect, useConnectedWallets, useDisconnect, useSetActiveWallet, } from "thirdweb/react";
10
10
  import { ecosystemWallet } from "thirdweb/wallets";
11
11
  import { preAuthenticate } from "thirdweb/wallets/in-app";
@@ -48,7 +48,7 @@ export function useAuthentication(partnerId, { skipAutoConnect = false } = {}) {
48
48
  const { authenticate } = useTWAuth();
49
49
  const { user, setUser } = useUserQuery();
50
50
  const useAutoConnectLoadingPrevious = useRef(false);
51
- const wagmiConfig = createWagmiConfig({ partnerId });
51
+ const wagmiConfig = useMemo(() => createWagmiConfig({ partnerId }), [partnerId]);
52
52
  const { connect } = useConnect();
53
53
  const activeWagmiAccount = useAccount();
54
54
  const { switchAccount } = useSwitchAccount();
@@ -99,9 +99,7 @@ export function useAuthentication(partnerId, { skipAutoConnect = false } = {}) {
99
99
  });
100
100
  }
101
101
  syncWagmiFunc();
102
- // wagmi config shouldn't change
103
- // eslint-disable-next-line react-hooks/exhaustive-deps
104
- }, [partnerId, wallets]);
102
+ }, [wagmiConfig, wallets, connect, switchAccount]);
105
103
  useEffect(() => {
106
104
  syncWagmi();
107
105
  }, [wallets, syncWagmi]);
@@ -25,21 +25,3 @@ export declare function createWagmiConfig(options: CreateWagmiConfigOptions): im
25
25
  }, {
26
26
  "thirdweb:lastChainId": number;
27
27
  }>)[]>;
28
- /**
29
- * Returns a cached wagmi config for the given partnerId.
30
- * Use this instead of calling createWagmiConfig() directly inside React components or hooks
31
- * to avoid registering duplicate EventEmitter listeners on every render.
32
- */
33
- export declare function getCachedWagmiConfig(options: CreateWagmiConfigOptions): import("wagmi").Config<readonly [import("viem").Chain, ...import("viem").Chain[]], {
34
- [k: string]: import("viem").HttpTransport<undefined, false>;
35
- }, (CreateConnectorFn | CreateConnectorFn<import("thirdweb/dist/types/adapters/eip1193").EIP1193Provider | undefined, {
36
- connect<withCapabilities extends boolean = false>(parameters?: import("@thirdweb-dev/wagmi-adapter").ConnectionOptions<withCapabilities> | undefined): Promise<{
37
- accounts: withCapabilities extends true ? readonly {
38
- address: `0x${string}`;
39
- capabilities: Record<string, unknown>;
40
- }[] : readonly `0x${string}`[];
41
- chainId: number;
42
- }>;
43
- }, {
44
- "thirdweb:lastChainId": number;
45
- }>)[]>;
@@ -27,19 +27,3 @@ export function createWagmiConfig(options) {
27
27
  connectors: finalConnectors,
28
28
  });
29
29
  }
30
- /** Module-level cache — wagmi configs must not be recreated on every render. */
31
- const wagmiConfigCache = new Map();
32
- /**
33
- * Returns a cached wagmi config for the given partnerId.
34
- * Use this instead of calling createWagmiConfig() directly inside React components or hooks
35
- * to avoid registering duplicate EventEmitter listeners on every render.
36
- */
37
- export function getCachedWagmiConfig(options) {
38
- const key = options.partnerId;
39
- let config = wagmiConfigCache.get(key);
40
- if (!config) {
41
- config = createWagmiConfig(options);
42
- wagmiConfigCache.set(key, config);
43
- }
44
- return config;
45
- }
@@ -25,21 +25,3 @@ export declare function createWagmiConfig(options: CreateWagmiConfigOptions): im
25
25
  }, {
26
26
  "thirdweb:lastChainId": number;
27
27
  }>)[]>;
28
- /**
29
- * Returns a cached wagmi config for the given partnerId.
30
- * Use this instead of calling createWagmiConfig() directly inside React components or hooks
31
- * to avoid registering duplicate EventEmitter listeners on every render.
32
- */
33
- export declare function getCachedWagmiConfig(options: CreateWagmiConfigOptions): import("wagmi").Config<readonly [import("viem").Chain, ...import("viem").Chain[]], {
34
- [k: string]: import("viem").HttpTransport<undefined, false>;
35
- }, (CreateConnectorFn | CreateConnectorFn<import("thirdweb/dist/types/adapters/eip1193").EIP1193Provider | undefined, {
36
- connect<withCapabilities extends boolean = false>(parameters?: import("@thirdweb-dev/wagmi-adapter").ConnectionOptions<withCapabilities> | undefined): Promise<{
37
- accounts: withCapabilities extends true ? readonly {
38
- address: `0x${string}`;
39
- capabilities: Record<string, unknown>;
40
- }[] : readonly `0x${string}`[];
41
- chainId: number;
42
- }>;
43
- }, {
44
- "thirdweb:lastChainId": number;
45
- }>)[]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@b3dotfun/sdk",
3
- "version": "0.1.69-alpha.5",
3
+ "version": "0.1.69-alpha.6",
4
4
  "source": "src/index.ts",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "react-native": "./dist/cjs/index.native.js",
@@ -5,6 +5,7 @@ import { Account, Wallet } from "thirdweb/wallets";
5
5
 
6
6
  import { ClientType } from "../../../client-manager";
7
7
 
8
+ import { useMemo } from "react";
8
9
  import { WagmiProvider } from "wagmi";
9
10
  import { createWagmiConfig } from "../../utils/createWagmiConfig";
10
11
  import AuthenticationProvider from "./AuthenticationProvider";
@@ -82,7 +83,7 @@ export function InnerProvider({
82
83
  partnerId: string;
83
84
  rpcUrls?: Record<number, string>;
84
85
  }) {
85
- const wagmiConfig = createWagmiConfig({ partnerId, rpcUrls });
86
+ const wagmiConfig = useMemo(() => createWagmiConfig({ partnerId, rpcUrls }), [partnerId, rpcUrls]);
86
87
 
87
88
  return (
88
89
  <WagmiProvider config={wagmiConfig}>
@@ -6,7 +6,7 @@ import { debugB3React } from "@b3dotfun/sdk/shared/utils/debug";
6
6
  import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
7
7
  import { ConnectionOptions } from "@thirdweb-dev/wagmi-adapter";
8
8
  import { getConnectors } from "@wagmi/core";
9
- import { useCallback, useContext, useEffect, useRef } from "react";
9
+ import { useCallback, useContext, useEffect, useMemo, useRef } from "react";
10
10
  import {
11
11
  useActiveWallet,
12
12
  useAutoConnect,
@@ -18,7 +18,7 @@ import { Wallet, ecosystemWallet } from "thirdweb/wallets";
18
18
  import { preAuthenticate } from "thirdweb/wallets/in-app";
19
19
  import { useAccount, useConnect, useSwitchAccount } from "wagmi";
20
20
  import { LocalSDKContext } from "../components/B3Provider/LocalSDKProvider";
21
- import { getCachedWagmiConfig } from "../utils/createWagmiConfig";
21
+ import { createWagmiConfig } from "../utils/createWagmiConfig";
22
22
  import { useSearchParam } from "./useSearchParamsSSR";
23
23
  import { useUserQuery } from "./useUserQuery";
24
24
 
@@ -47,7 +47,7 @@ export function useAuth() {
47
47
  const useAutoConnectLoadingPrevious = useRef(false);
48
48
  const referralCode = useSearchParam("referralCode");
49
49
  const { partnerId } = useB3Config();
50
- const wagmiConfig = getCachedWagmiConfig({ partnerId });
50
+ const wagmiConfig = useMemo(() => createWagmiConfig({ partnerId }), [partnerId]);
51
51
  const { connect } = useConnect();
52
52
  const activeWagmiAccount = useAccount();
53
53
  const { switchAccount } = useSwitchAccount();
@@ -136,9 +136,7 @@ export function useAuth() {
136
136
  });
137
137
  }
138
138
  syncWagmiFunc();
139
- // wagmi config shouldn't change
140
- // eslint-disable-next-line react-hooks/exhaustive-deps
141
- }, [partnerId, wallets]);
139
+ }, [wagmiConfig, wallets, connect, switchAccount]);
142
140
 
143
141
  useEffect(() => {
144
142
  syncWagmi();
@@ -6,7 +6,7 @@ import { debugB3React } from "@b3dotfun/sdk/shared/utils/debug";
6
6
  import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
7
7
  import { ConnectionOptions } from "@thirdweb-dev/wagmi-adapter";
8
8
  import { getConnectors } from "@wagmi/core";
9
- import { useCallback, useContext, useEffect, useRef } from "react";
9
+ import { useCallback, useContext, useEffect, useMemo, useRef } from "react";
10
10
  import {
11
11
  useActiveWallet,
12
12
  useAutoConnect,
@@ -57,7 +57,7 @@ export function useAuthentication(partnerId: string, { skipAutoConnect = false }
57
57
  const { authenticate } = useTWAuth();
58
58
  const { user, setUser } = useUserQuery();
59
59
  const useAutoConnectLoadingPrevious = useRef(false);
60
- const wagmiConfig = createWagmiConfig({ partnerId });
60
+ const wagmiConfig = useMemo(() => createWagmiConfig({ partnerId }), [partnerId]);
61
61
  const { connect } = useConnect();
62
62
  const activeWagmiAccount = useAccount();
63
63
  const { switchAccount } = useSwitchAccount();
@@ -113,9 +113,7 @@ export function useAuthentication(partnerId: string, { skipAutoConnect = false }
113
113
  });
114
114
  }
115
115
  syncWagmiFunc();
116
- // wagmi config shouldn't change
117
- // eslint-disable-next-line react-hooks/exhaustive-deps
118
- }, [partnerId, wallets]);
116
+ }, [wagmiConfig, wallets, connect, switchAccount]);
119
117
 
120
118
  useEffect(() => {
121
119
  syncWagmi();
@@ -38,21 +38,3 @@ export function createWagmiConfig(options: CreateWagmiConfigOptions) {
38
38
  connectors: finalConnectors,
39
39
  });
40
40
  }
41
-
42
- /** Module-level cache — wagmi configs must not be recreated on every render. */
43
- const wagmiConfigCache = new Map<string, ReturnType<typeof createWagmiConfig>>();
44
-
45
- /**
46
- * Returns a cached wagmi config for the given partnerId.
47
- * Use this instead of calling createWagmiConfig() directly inside React components or hooks
48
- * to avoid registering duplicate EventEmitter listeners on every render.
49
- */
50
- export function getCachedWagmiConfig(options: CreateWagmiConfigOptions) {
51
- const key = options.partnerId;
52
- let config = wagmiConfigCache.get(key);
53
- if (!config) {
54
- config = createWagmiConfig(options);
55
- wagmiConfigCache.set(key, config);
56
- }
57
- return config;
58
- }