diff --git a/.changeset/backmerge-29-07-26.md b/.changeset/backmerge-29-07-26.md new file mode 100644 index 0000000000..3bbda76831 --- /dev/null +++ b/.changeset/backmerge-29-07-26.md @@ -0,0 +1,6 @@ +--- +"create-eth": patch +--- + +- fix: pin @coinbase/cdp-sdk to 1.52.0 to avoid @x402 module-not-found (https://github.com/scaffold-eth/scaffold-eth-2/pull/1310) +- web3 deps update (https://github.com/scaffold-eth/scaffold-eth-2/pull/1281) diff --git a/templates/base/package.json b/templates/base/package.json index 9da73659de..c9d416c7d7 100644 --- a/templates/base/package.json +++ b/templates/base/package.json @@ -27,6 +27,9 @@ "husky": "~9.1.6", "lint-staged": "~13.2.2" }, + "resolutions": { + "@coinbase/cdp-sdk": "1.52.0" + }, "engines": { "node": ">=20.18.3" } diff --git a/templates/base/packages/nextjs/app/blockexplorer/_components/ContractTabs.tsx b/templates/base/packages/nextjs/app/blockexplorer/_components/ContractTabs.tsx index 760c7ae83d..4992dcc65b 100644 --- a/templates/base/packages/nextjs/app/blockexplorer/_components/ContractTabs.tsx +++ b/templates/base/packages/nextjs/app/blockexplorer/_components/ContractTabs.tsx @@ -32,7 +32,7 @@ export const ContractTabs = ({ address, contractData }: PageProps) => { useEffect(() => { const checkIsContract = async () => { - const contractCode = await publicClient.getBytecode({ address: address }); + const contractCode = await publicClient.getCode({ address: address }); setIsContract(contractCode !== undefined && contractCode !== "0x"); }; diff --git a/templates/base/packages/nextjs/app/blockexplorer/_components/SearchBar.tsx b/templates/base/packages/nextjs/app/blockexplorer/_components/SearchBar.tsx index 28c68c9b1e..f8e7bbe941 100644 --- a/templates/base/packages/nextjs/app/blockexplorer/_components/SearchBar.tsx +++ b/templates/base/packages/nextjs/app/blockexplorer/_components/SearchBar.tsx @@ -12,7 +12,7 @@ export const SearchBar = () => { const client = usePublicClient({ chainId: hardhat.id }); - const handleSearch = async (event: React.FormEvent) => { + const handleSearch = async (event: React.SubmitEvent) => { event.preventDefault(); if (isHex(searchInput)) { try { diff --git a/templates/base/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/AddressInfoDropdown.tsx b/templates/base/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/AddressInfoDropdown.tsx index 4ba89a132a..310d3c2602 100644 --- a/templates/base/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/AddressInfoDropdown.tsx +++ b/templates/base/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/AddressInfoDropdown.tsx @@ -4,7 +4,7 @@ import { getAddress } from "viem"; import { Address } from "viem"; import { useAccount, useDisconnect } from "wagmi"; import { - ArrowLeftOnRectangleIcon, + ArrowLeftEndOnRectangleIcon, ArrowTopRightOnSquareIcon, ArrowsRightLeftIcon, CheckCircleIcon, @@ -127,7 +127,7 @@ export const AddressInfoDropdown = ({ type="button" onClick={() => disconnect()} > - Disconnect + Disconnect diff --git a/templates/base/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/WrongNetworkDropdown.tsx b/templates/base/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/WrongNetworkDropdown.tsx index eea522cdcb..82c70512bf 100644 --- a/templates/base/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/WrongNetworkDropdown.tsx +++ b/templates/base/packages/nextjs/components/scaffold-eth/RainbowKitCustomConnectButton/WrongNetworkDropdown.tsx @@ -1,6 +1,6 @@ import { NetworkOptions } from "./NetworkOptions"; import { useDisconnect } from "wagmi"; -import { ArrowLeftOnRectangleIcon, ChevronDownIcon } from "@heroicons/react/24/outline"; +import { ArrowLeftEndOnRectangleIcon, ChevronDownIcon } from "@heroicons/react/24/outline"; export const WrongNetworkDropdown = () => { const { disconnect } = useDisconnect(); @@ -15,7 +15,7 @@ export const WrongNetworkDropdown = () => {
  • diff --git a/templates/base/packages/nextjs/eslint.config.mjs b/templates/base/packages/nextjs/eslint.config.mjs index 3a337f76ed..10573a40c5 100644 --- a/templates/base/packages/nextjs/eslint.config.mjs +++ b/templates/base/packages/nextjs/eslint.config.mjs @@ -25,4 +25,16 @@ export default defineConfig([ }, ignores: [".next", "next-env.d.ts"], }, + { + files: ["**/*.ts", "**/*.tsx"], + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + rules: { + "@typescript-eslint/no-deprecated": "warn", + }, + }, ]); diff --git a/templates/base/packages/nextjs/hooks/scaffold-eth/useDeployedContractInfo.ts b/templates/base/packages/nextjs/hooks/scaffold-eth/useDeployedContractInfo.ts index 3d58526cd8..a7a2261d7f 100644 --- a/templates/base/packages/nextjs/hooks/scaffold-eth/useDeployedContractInfo.ts +++ b/templates/base/packages/nextjs/hooks/scaffold-eth/useDeployedContractInfo.ts @@ -60,7 +60,7 @@ export function useDeployedContractInfo( return; } - const code = await publicClient.getBytecode({ + const code = await publicClient.getCode({ address: deployedContract.address, }); diff --git a/templates/base/packages/nextjs/hooks/scaffold-eth/useScaffoldReadContract.ts b/templates/base/packages/nextjs/hooks/scaffold-eth/useScaffoldReadContract.ts index 82dfe3dc97..376dbb6ab3 100644 --- a/templates/base/packages/nextjs/hooks/scaffold-eth/useScaffoldReadContract.ts +++ b/templates/base/packages/nextjs/hooks/scaffold-eth/useScaffoldReadContract.ts @@ -14,7 +14,7 @@ import { } from "~~/utils/scaffold-eth/contract"; /** - * Wrapper around wagmi's useContractRead hook which automatically loads (by name) the contract ABI and address from + * Wrapper around wagmi's useReadContract hook which automatically loads (by name) the contract ABI and address from * the contracts present in deployedContracts.ts & externalContracts.ts corresponding to targetNetworks configured in scaffold.config.ts * @param config - The config settings, including extra wagmi configuration * @param config.contractName - deployed contract name diff --git a/templates/base/packages/nextjs/package.json b/templates/base/packages/nextjs/package.json index 157ec657cd..3f492e5a63 100644 --- a/templates/base/packages/nextjs/package.json +++ b/templates/base/packages/nextjs/package.json @@ -17,14 +17,14 @@ }, "dependencies": { "@heroicons/react": "~2.2.0", - "@rainbow-me/rainbowkit": "2.2.9", + "@rainbow-me/rainbowkit": "2.2.11", "@react-native-async-storage/async-storage": "~2.2.0", "@scaffold-ui/components": "^0.1.12", "@scaffold-ui/debug-contracts": "^0.1.11", "@scaffold-ui/hooks": "^0.1.8", - "@tanstack/react-query": "~5.59.15", + "@tanstack/react-query": "~5.100.5", "blo": "~2.0.0", - "burner-connector": "0.0.20", + "burner-connector": "0.0.21", "daisyui": "5.5.19", "kubo-rpc-client": "~6.1.0", "next": "~16.2.4", @@ -35,7 +35,7 @@ "react-dom": "~19.2.5", "react-hot-toast": "~2.6.0", "usehooks-ts": "~3.1.1", - "viem": "2.39.0", + "viem": "2.53.1", "wagmi": "2.19.5", "zustand": "~5.0.12" }, @@ -44,7 +44,7 @@ "@trivago/prettier-plugin-sort-imports": "~6.0.2", "@types/node": "~18.19.130", "@types/react": "~19.2.14", - "abitype": "1.0.6", + "abitype": "1.2.4", "bgipfs": "~0.0.18", "eslint": "~9.39.0", "eslint-config-next": "~16.2.4", diff --git a/templates/base/packages/nextjs/services/web3/wagmiConnectors.tsx b/templates/base/packages/nextjs/services/web3/wagmiConnectors.tsx index a890e715ce..21c6e58eb1 100644 --- a/templates/base/packages/nextjs/services/web3/wagmiConnectors.tsx +++ b/templates/base/packages/nextjs/services/web3/wagmiConnectors.tsx @@ -1,6 +1,6 @@ import { connectorsForWallets } from "@rainbow-me/rainbowkit"; import { - baseAccount, + base, ledgerWallet, metaMaskWallet, rainbowWallet, @@ -21,7 +21,7 @@ const wallets = [ metaMaskWallet, walletConnectWallet, ledgerWallet, - baseAccount, + base, rainbowWallet, safeWallet, ...(showBurnerWallet ? [rainbowkitBurnerWallet] : []),