diff --git a/packages/connect-wallet-modal/CHANGELOG.md b/packages/connect-wallet-modal/CHANGELOG.md index 19308b15..8bb897b4 100644 --- a/packages/connect-wallet-modal/CHANGELOG.md +++ b/packages/connect-wallet-modal/CHANGELOG.md @@ -1,5 +1,16 @@ # @reef-knot/connect-wallet-modal +## 5.4.0 + +### Minor Changes + +- Coinbase smart wallet connector + +### Patch Changes + +- Updated dependencies + - @reef-knot/wallets-list@2.3.0 + ## 5.3.3 ### Patch Changes diff --git a/packages/connect-wallet-modal/package.json b/packages/connect-wallet-modal/package.json index 5325b1d7..c93d53f7 100644 --- a/packages/connect-wallet-modal/package.json +++ b/packages/connect-wallet-modal/package.json @@ -1,6 +1,6 @@ { "name": "@reef-knot/connect-wallet-modal", - "version": "5.3.3", + "version": "5.4.0", "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { @@ -41,7 +41,7 @@ "@ledgerhq/hw-app-eth": "^6.37.1", "@ledgerhq/hw-transport-webhid": "^6.29.0", "@lidofinance/lido-ui": "^3.18.0", - "@reef-knot/wallets-list": "^2.2.2", + "@reef-knot/wallets-list": "^2.3.0", "@types/react": "18.2.45", "@types/react-dom": "18.2.17" }, diff --git a/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModalForEth.tsx b/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModalForEth.tsx index 34c42e1f..fcefcdf6 100644 --- a/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModalForEth.tsx +++ b/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModalForEth.tsx @@ -32,6 +32,7 @@ const WALLETS_DISPLAY_CONFIG_DEFAULT: WalletsModalEthProps['walletsShown'] = [ 'walletConnect', 'binanceWallet', 'coinbase', + 'coinbaseSmartWallet', 'trust', 'exodus', 'brave', diff --git a/packages/reef-knot/CHANGELOG.md b/packages/reef-knot/CHANGELOG.md index ac996b57..0aac1ec5 100644 --- a/packages/reef-knot/CHANGELOG.md +++ b/packages/reef-knot/CHANGELOG.md @@ -1,5 +1,13 @@ # reef-knot +## 5.6.0 + +### Patch Changes + +- Updated dependencies + - @reef-knot/connect-wallet-modal@5.4.0 + - @reef-knot/wallets-list@2.3.0 + ## 5.5.4 ### Patch Changes diff --git a/packages/reef-knot/package.json b/packages/reef-knot/package.json index 64402aac..673dff36 100644 --- a/packages/reef-knot/package.json +++ b/packages/reef-knot/package.json @@ -1,6 +1,6 @@ { "name": "reef-knot", - "version": "5.5.4", + "version": "5.6.0", "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { @@ -41,11 +41,11 @@ "lint": "eslint --ext ts,tsx,js,mjs ." }, "dependencies": { - "@reef-knot/connect-wallet-modal": "5.3.3", + "@reef-knot/connect-wallet-modal": "5.4.0", "@reef-knot/core-react": "4.2.1", "@reef-knot/web3-react": "4.0.1", "@reef-knot/ui-react": "2.1.3", - "@reef-knot/wallets-list": "2.2.3", + "@reef-knot/wallets-list": "2.3.0", "@reef-knot/wallets-helpers": "2.1.0", "@reef-knot/types": "2.1.0", "@reef-knot/ledger-connector": "4.1.0" diff --git a/packages/wallets-list/CHANGELOG.md b/packages/wallets-list/CHANGELOG.md index 03b159cb..2e63cd27 100644 --- a/packages/wallets-list/CHANGELOG.md +++ b/packages/wallets-list/CHANGELOG.md @@ -1,5 +1,17 @@ # @reef-knot/wallets-list +## 2.3.0 + +### Minor Changes + +- Coinbase smart wallet connector + +### Patch Changes + +- Updated dependencies + - @reef-knot/wallet-adapter-coinbase-smart-wallet@1.0.0 + - @reef-knot/wallet-adapter-coinbase@2.2.0 + ## 2.2.3 ### Patch Changes diff --git a/packages/wallets-list/package.json b/packages/wallets-list/package.json index 38487f97..ed96f58e 100644 --- a/packages/wallets-list/package.json +++ b/packages/wallets-list/package.json @@ -1,6 +1,6 @@ { "name": "@reef-knot/wallets-list", - "version": "2.2.3", + "version": "2.3.0", "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { @@ -50,7 +50,8 @@ "@reef-knot/wallet-adapter-imtoken": "2.0.1", "@reef-knot/wallet-adapter-trust": "2.1.0", "@reef-knot/wallet-adapter-xdefi": "2.1.0", - "@reef-knot/wallet-adapter-coinbase": "2.1.0", + "@reef-knot/wallet-adapter-coinbase": "2.2.0", + "@reef-knot/wallet-adapter-coinbase-smart-wallet": "1.0.0", "@reef-knot/wallet-adapter-ledger-hid": "3.0.1", "@reef-knot/wallet-adapter-ledger-live": "3.0.1", "@reef-knot/wallet-adapter-dapp-browser-injected": "2.0.1", diff --git a/packages/wallets-list/src/ethereum.ts b/packages/wallets-list/src/ethereum.ts index 1dd3edf7..b9c62ad1 100644 --- a/packages/wallets-list/src/ethereum.ts +++ b/packages/wallets-list/src/ethereum.ts @@ -17,6 +17,10 @@ import { ImToken, id as idImToken } from '@reef-knot/wallet-adapter-imtoken'; import { Trust, id as idTrust } from '@reef-knot/wallet-adapter-trust'; import { Xdefi, id as idXdefi } from '@reef-knot/wallet-adapter-xdefi'; import { Coinbase, id as idCoinbase } from '@reef-knot/wallet-adapter-coinbase'; +import { + CoinbaseSmartWallet, + id as idCoinbaseSmartWallet, +} from '@reef-knot/wallet-adapter-coinbase-smart-wallet'; import { Ledger, id as idLedger } from '@reef-knot/wallet-adapter-ledger-hid'; import { LedgerLive, @@ -48,6 +52,7 @@ export const WalletsListEthereum = { [idTrust]: Trust, [idXdefi]: Xdefi, [idCoinbase]: Coinbase, + [idCoinbaseSmartWallet]: CoinbaseSmartWallet, [idDAppBrowserInjected]: DAppBrowserInjected, [idSafe]: Safe, [idBinanceWallet]: BinanceWeb3Wallet, diff --git a/packages/wallets/coinbase-smart-wallet/.eslintrc.json b/packages/wallets/coinbase-smart-wallet/.eslintrc.json new file mode 100644 index 00000000..06342be5 --- /dev/null +++ b/packages/wallets/coinbase-smart-wallet/.eslintrc.json @@ -0,0 +1,9 @@ +{ + "root": true, + "extends": [ + "custom" + ], + "rules": { + "import/no-extraneous-dependencies": "warn" + } +} diff --git a/packages/wallets/coinbase-smart-wallet/CHANGELOG.md b/packages/wallets/coinbase-smart-wallet/CHANGELOG.md new file mode 100644 index 00000000..9e38ebef --- /dev/null +++ b/packages/wallets/coinbase-smart-wallet/CHANGELOG.md @@ -0,0 +1,7 @@ +# @reef-knot/wallet-adapter-coinbase-smart-wallet + +## 1.0.0 + +### Major Changes + +- Coinbase smart wallet connector diff --git a/packages/wallets/coinbase-smart-wallet/package.json b/packages/wallets/coinbase-smart-wallet/package.json new file mode 100644 index 00000000..649aecd9 --- /dev/null +++ b/packages/wallets/coinbase-smart-wallet/package.json @@ -0,0 +1,44 @@ +{ + "name": "@reef-knot/wallet-adapter-coinbase-smart-wallet", + "version": "1.0.0", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "typesVersions": { + "*": { + ".": [ + "dist/index.d.ts" + ] + } + }, + "type": "module", + "files": [ + "dist" + ], + "license": "MIT", + "homepage": "https://github.com/lidofinance/reef-knot", + "bugs": { + "url": "https://github.com/lidofinance/reef-knot/issues" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "scripts": { + "build": "rollup -c", + "dev": "dev=on rollup -c -w", + "lint": "eslint --ext ts,tsx,js,mjs ." + }, + "devDependencies": { + "@reef-knot/types": "^2.0.0", + "@svgr/rollup": "^6.5.1", + "eslint-config-custom": "*" + }, + "peerDependencies": { + "wagmi": "2.10.4", + "@reef-knot/types": "^2.0.0", + "@tanstack/react-query": "^5.29.0" + } +} diff --git a/packages/wallets/coinbase-smart-wallet/rollup.config.js b/packages/wallets/coinbase-smart-wallet/rollup.config.js new file mode 100644 index 00000000..a91f4d4a --- /dev/null +++ b/packages/wallets/coinbase-smart-wallet/rollup.config.js @@ -0,0 +1,57 @@ +import * as process from 'node:process'; +import fs from 'node:fs'; +import ts from 'typescript'; +import { defineConfig } from 'rollup'; +import del from 'rollup-plugin-delete'; +import resolve from '@rollup/plugin-node-resolve'; +import typescript from 'rollup-plugin-typescript2'; +import { babel } from '@rollup/plugin-babel'; +import svgr from '@svgr/rollup'; + +const extensions = ['.js', '.jsx', '.ts', '.tsx', '.svg']; +const { dependencies = {}, peerDependencies = {} } = + JSON.parse(fs.readFileSync('package.json', 'utf-8')); +const commonExternal = [ + 'react/jsx-runtime', + // Do not include in the bundle subpath exports like: + /^@reef-knot\/.*/, // e.g. @reef-knot// + /^reef-knot\/.*/, // e.g. reef-knot/wallets-icons/react +]; +const external = [ + ...commonExternal, + ...Object.keys({ ...dependencies, ...peerDependencies }), + /node_modules/ +]; +const isDevMode = process.env.dev === 'on'; + +export default defineConfig({ + input: './src/index', + output: { + format: 'es', + dir: 'dist', + preserveModules: true, + preserveModulesRoot: 'src', + generatedCode: 'es2015' + }, + plugins: [ + isDevMode ? null : del({ targets: 'dist/*', runOnce: true }), + resolve({ extensions, preferBuiltins: true }), + svgr({ + typescript: true, + prettier: false, + memo: true, + svgo: false, + }), + typescript({ + typescript: ts, + tsconfig: 'tsconfig.json', + check: false, + }), + babel({ + exclude: 'node_modules/**', + babelHelpers: 'bundled', + extensions, + }), + ], + external, +}); diff --git a/packages/wallets/coinbase-smart-wallet/src/custom.d.ts b/packages/wallets/coinbase-smart-wallet/src/custom.d.ts new file mode 100644 index 00000000..006534e2 --- /dev/null +++ b/packages/wallets/coinbase-smart-wallet/src/custom.d.ts @@ -0,0 +1,4 @@ +declare module '*.svg' { + const content: React.FunctionComponent>; + export default content; +} diff --git a/packages/wallets/coinbase-smart-wallet/src/icons/coinbase.svg b/packages/wallets/coinbase-smart-wallet/src/icons/coinbase.svg new file mode 100644 index 00000000..a2692095 --- /dev/null +++ b/packages/wallets/coinbase-smart-wallet/src/icons/coinbase.svg @@ -0,0 +1 @@ + diff --git a/packages/wallets/coinbase-smart-wallet/src/icons/index.ts b/packages/wallets/coinbase-smart-wallet/src/icons/index.ts new file mode 100644 index 00000000..54a3f8df --- /dev/null +++ b/packages/wallets/coinbase-smart-wallet/src/icons/index.ts @@ -0,0 +1 @@ +export { default as WalletIcon } from './coinbase.svg'; diff --git a/packages/wallets/coinbase-smart-wallet/src/index.ts b/packages/wallets/coinbase-smart-wallet/src/index.ts new file mode 100644 index 00000000..4505f4c1 --- /dev/null +++ b/packages/wallets/coinbase-smart-wallet/src/index.ts @@ -0,0 +1,33 @@ +import { WalletAdapterType } from '@reef-knot/types'; +import { coinbaseWallet } from 'wagmi/connectors'; +import { isProviderExistsEIP6963 } from '@reef-knot/wallets-helpers'; +import { WalletIcon } from './icons/index.js'; + +export const id = 'coinbaseSmartWallet'; +export const name = 'Coinbase Smart Wallet'; +export const rdns = 'com.coinbase.wallet'; + +type ConfigType = Parameters>[0]; + +export const getCoinbaseSmartWalletConnector = (config: ConfigType) => { + const coinbaseCreateConnectorFn = coinbaseWallet({ + preference: 'smartWalletOnly', + appName: globalThis.window?.location?.hostname, + }); + + const coinbaseConnector = coinbaseCreateConnectorFn(config); + + return { + ...coinbaseConnector, + name, + }; +}; + +export const CoinbaseSmartWallet: WalletAdapterType = ({ providersStore }) => ({ + walletName: name, + walletId: id, + type: coinbaseWallet.type, + icon: WalletIcon, + detector: () => isProviderExistsEIP6963(providersStore, rdns), + createConnectorFn: getCoinbaseSmartWalletConnector, +}); diff --git a/packages/wallets/coinbase-smart-wallet/tsconfig.json b/packages/wallets/coinbase-smart-wallet/tsconfig.json new file mode 100644 index 00000000..23709e73 --- /dev/null +++ b/packages/wallets/coinbase-smart-wallet/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "tsconfig/react-library.json", + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.*"], + "compilerOptions": { + "rootDir": "src", + } +} diff --git a/packages/wallets/coinbase/CHANGELOG.md b/packages/wallets/coinbase/CHANGELOG.md index d905f6c3..0af77e95 100644 --- a/packages/wallets/coinbase/CHANGELOG.md +++ b/packages/wallets/coinbase/CHANGELOG.md @@ -1,5 +1,11 @@ # @reef-knot/wallet-adapter-coinbase +## 2.2.0 + +### Minor Changes + +- Coinbase smart wallet connector + ## 2.1.0 ### Minor Changes diff --git a/packages/wallets/coinbase/package.json b/packages/wallets/coinbase/package.json index d4006b2b..c2d8b7e4 100644 --- a/packages/wallets/coinbase/package.json +++ b/packages/wallets/coinbase/package.json @@ -1,6 +1,6 @@ { "name": "@reef-knot/wallet-adapter-coinbase", - "version": "2.1.0", + "version": "2.2.0", "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/wallets/coinbase/src/index.ts b/packages/wallets/coinbase/src/index.ts index 452e7c4a..37d87ea0 100644 --- a/packages/wallets/coinbase/src/index.ts +++ b/packages/wallets/coinbase/src/index.ts @@ -7,13 +7,17 @@ export const id = 'coinbase'; export const name = 'Coinbase'; export const rdns = 'com.coinbase.wallet'; +export const getCoinbaseConnector = () => + coinbaseWallet({ + preference: 'eoaOnly', + appName: globalThis.window?.location?.hostname, + }); + export const Coinbase: WalletAdapterType = ({ providersStore }) => ({ walletName: name, walletId: id, type: coinbaseWallet.type, icon: WalletIcon, detector: () => isProviderExistsEIP6963(providersStore, rdns), - createConnectorFn: coinbaseWallet({ - appName: globalThis.window?.location?.hostname, - }), + createConnectorFn: getCoinbaseConnector(), });