Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancement: Vanilla js example #1643

Merged
merged 6 commits into from
Apr 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 80 additions & 31 deletions examples/with-nextjs/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
"@ethersproject/properties" "^5.5.0"
"@ethersproject/strings" "^5.5.0"

"@ethersproject/abi@^5.5.0":
"@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.5.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449"
integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==
Expand Down Expand Up @@ -835,7 +835,7 @@
dependencies:
"@hapi/hoek" "^9.0.0"

"@sideway/formula@^3.0.0":
"@sideway/formula@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f"
integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==
Expand Down Expand Up @@ -901,41 +901,53 @@
"@typescript-eslint/types" "5.33.0"
eslint-visitor-keys "^3.3.0"

"@web3-onboard/common@^2.2.3":
version "2.2.3"
resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.2.3.tgz#fc0841186d84cf017f4cf0368dcd349e6ed8dc8b"
integrity sha512-ZI0XuCpxtuL9XGgeWglXR6rhgLP261EMEstjonxy8ptuOKLlTJcgvL7wSx2MjNDO3i/qmb/PGQpInvxYx5klSA==
"@unstoppabledomains/resolution@^8.0":
version "8.5.0"
resolved "https://registry.yarnpkg.com/@unstoppabledomains/resolution/-/resolution-8.5.0.tgz#7f65146fb3bc69bfae8699c4ed1c61f3d6f0096c"
integrity sha512-csqExbiK8F5mRKoHlDZjGuIEuvi63O8PSyhUcGhnTi76Il5fCREAGNVdTiRxagPPYoxCO+Xmf6kThwtmiws1Ow==
dependencies:
"@ethersproject/abi" "^5.0.1"
bn.js "^4.4.0"
cross-fetch "^3.1.4"
crypto-js "^4.1.1"
elliptic "^6.5.4"

"@web3-onboard/common@^2.2.4-alpha.1", "@web3-onboard/common@^2.3.1":
version "2.3.1"
resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.3.1.tgz#69ad0d5167e5103086c34a4f7e8af90681d71be4"
integrity sha512-VRIsJLW92Q+bu6w9WSlTrPIk0vGmFvVwnoAKy1ubKuBvSKKhMUmrnv8N5tusr0mk+gcUuUdDF6gLDCABqrfC7g==
dependencies:
bignumber.js "^9.1.0"
ethers "5.5.4"
joi "^17.6.1"
joi "17.9.1"

"@web3-onboard/core@^2.10.1":
version "2.12.1"
resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.12.1.tgz#e6dae9eaad1e572cfafe4ceaedd803a9a40224f0"
integrity sha512-WqDXHJ28hkJACJYv85iqYfiRm1Nn5BDrvKYwWm6LOQI9J2YuaVYr9c99WRLQzP7x42E/QKVTopn/gATdKY0VQQ==
"@web3-onboard/core@^2.15.6-alpha.3":
version "2.16.2"
resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.16.2.tgz#49b46d539e54d170e445065ff4017d8a53c90835"
integrity sha512-ONIMVt35i2kEJclCa9L8Gf2q71nIogtyyvXZTQuxZXvlN1DSECTXir6xuzb9iezd8QuxWBdtZcWzLZnf5KimkQ==
dependencies:
"@web3-onboard/common" "^2.2.3"
"@unstoppabledomains/resolution" "^8.0"
"@web3-onboard/common" "^2.3.1"
bignumber.js "^9.0.0"
bnc-sdk "^4.6.2"
bnc-sdk "^4.6.7"
bowser "^2.11.0"
ethers "5.5.3"
eventemitter3 "^4.0.7"
joi "^17.6.1"
joi "17.9.1"
lodash.merge "^4.6.2"
lodash.partition "^4.6.0"
nanoid "^4.0.0"
rxjs "^7.5.5"
svelte "^3.49.0"
svelte-i18n "^3.3.13"

"@web3-onboard/react@2.4.1":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@web3-onboard/react/-/react-2.4.1.tgz#6580c208ee4dec30238867607dbf604495091846"
integrity sha512-Qvpb5ezvwBVPhwIHVhW65jG+WIlNHM6O1jgLdNWvP9a0kSkmdfHyNP+gb4yjZ9w23xc+keIK21UVfQk2tBw0MA==
"@web3-onboard/react@2.6.7-alpha.3":
version "2.6.7-alpha.3"
resolved "https://registry.yarnpkg.com/@web3-onboard/react/-/react-2.6.7-alpha.3.tgz#211c77b352211769422858ff97dce109a9f447d8"
integrity sha512-jYkF4ZKgRduB0rDhCbW8RQYEaWs5kowTCEPa66GFGEg3i5zo0hyevitzPy6XgqKtcNcEk5m1UjfDQkCqBCE/Ig==
dependencies:
"@web3-onboard/common" "^2.2.3"
"@web3-onboard/core" "^2.10.1"
"@web3-onboard/common" "^2.2.4-alpha.1"
"@web3-onboard/core" "^2.15.6-alpha.3"
use-sync-external-store "1.0.0"

acorn-jsx@^5.3.2:
Expand Down Expand Up @@ -1054,7 +1066,7 @@ bignumber.js@^9.0.0, bignumber.js@^9.1.0:
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6"
integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==

bn.js@^4.11.9:
bn.js@^4.11.9, bn.js@^4.4.0:
version "4.12.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
Expand All @@ -1064,10 +1076,10 @@ bn.js@^5.2.1:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==

bnc-sdk@^4.6.2:
version "4.6.3"
resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.6.3.tgz#c852f091a5e84bb77864543b0775b35ebdbb1724"
integrity sha512-rva+LyJuAm+U6xwZYqlsDxKaMy3EpHBqkOL93UDih7iwXDYnUr87n27pnGCw3B8xRBeRhCBC/VZMuzRFeea/Hw==
bnc-sdk@^4.6.7:
version "4.6.7"
resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-4.6.7.tgz#138a22e04c95c2c697fb836092358d21957e2114"
integrity sha512-jIQ6cmeRBgvH/YDLuYRr2+kxDGcAAi0SOvjlO5nQ5cWdbslw+ASWftd1HmxiVLNCiwEH5bSc/t8a0agZ5njTUQ==
dependencies:
crypto-es "^1.2.2"
nanoid "^3.3.1"
Expand Down Expand Up @@ -1158,6 +1170,13 @@ core-js-pure@^3.20.2:
resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz#8839dde5da545521bf282feb7dc6d0b425f39fd3"
integrity sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==

cross-fetch@^3.1.4:
version "3.1.5"
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f"
integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==
dependencies:
node-fetch "2.6.7"

cross-spawn@^7.0.2:
version "7.0.3"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
Expand All @@ -1172,6 +1191,11 @@ crypto-es@^1.2.2:
resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88"
integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ==

crypto-js@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf"
integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==

d@1, d@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
Expand Down Expand Up @@ -1245,7 +1269,7 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"

elliptic@6.5.4:
elliptic@6.5.4, elliptic@^6.5.4:
version "6.5.4"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
Expand Down Expand Up @@ -2052,15 +2076,15 @@ isexe@^2.0.0:
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==

joi@^17.6.1:
version "17.7.0"
resolved "https://registry.yarnpkg.com/joi/-/joi-17.7.0.tgz#591a33b1fe1aca2bc27f290bcad9b9c1c570a6b3"
integrity sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==
joi@17.9.1:
version "17.9.1"
resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.1.tgz#74899b9fa3646904afa984a11df648eca66c9018"
integrity sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw==
dependencies:
"@hapi/hoek" "^9.0.0"
"@hapi/topo" "^5.0.0"
"@sideway/address" "^4.1.3"
"@sideway/formula" "^3.0.0"
"@sideway/formula" "^3.0.1"
"@sideway/pinpoint" "^2.0.0"

js-sha3@0.8.0:
Expand Down Expand Up @@ -2283,6 +2307,13 @@ next@12.2.5:
"@next/swc-win32-ia32-msvc" "12.2.5"
"@next/swc-win32-x64-msvc" "12.2.5"

node-fetch@2.6.7:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"

object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
Expand Down Expand Up @@ -2726,6 +2757,11 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"

tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==

tsconfig-paths@^3.14.1:
version "3.14.1"
resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
Expand Down Expand Up @@ -2812,6 +2848,19 @@ v8-compile-cache@^2.0.3:
resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==

webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==

whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"

which-boxed-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
Expand Down
3 changes: 3 additions & 0 deletions examples/with-vanilla-js/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules
dist
.env
33 changes: 33 additions & 0 deletions examples/with-vanilla-js/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
This is a sample [Web3Onboard](https://github.com/blocknative/web3-onboard) project showing how to integrate web3Onboard with vanilla javascript.

## Getting Started

Clone this repo

```
https://github.com/blocknative/web3-onboard.git
```

Navigate to the project directory:

```
cd examples/with-vanilla-js
```

Install the dependencies:

```
npm install
```

Run the development server:

```bash
npm run dev
```

Open [http://localhost:9000](http://localhost:9000) with your browser to see the result.

## Learn More

To learn more about other web3Onboard integraions, take a look at our documentation: [Web3Onboard Documentation](https://onboard.blocknative.com/docs/overview/introduction#features) for more details.
24 changes: 24 additions & 0 deletions examples/with-vanilla-js/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="icon" type="image/x-icon" href="./public/favicon.ico">
<title>@web3-onboard with vanilla js</title>
<script defer src="dist/bundle.js"></script>
</head>
<body>
<main class="main">
<h1>Welcome to this demo of <span>Web3-Onboard</span> + Vanilla JS!</h1>
<div class="wallet hidden">
<div class="connected">
<div class="address"></div>
<div class="label"></div>
</div>
<button class="disconnect-button">Disconnect</button>
</div>
<div class="disconnected">
<button class="connect-button">Connect</button>
</div>
</main>
</body>
</html>
24 changes: 24 additions & 0 deletions examples/with-vanilla-js/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "web3-onboard-with-vanilla-js",
"version": "1.0.0",
"description": "",
"scripts": {
"clean": "rm dist/bundle.js",
"dev": "webpack serve --open --mode=development",
"build": "webpack --mode=production"
},
"author": "",
"license": "ISC",
"devDependencies": {
"css-loader": "^6.7.3",
"style-loader": "^3.3.2",
"webpack": "^5.79.0",
"webpack-cli": "^5.0.1"
},
"dependencies": {
"@web3-onboard/coinbase": "^2.2.2",
"@web3-onboard/core": "^2.16.2",
"@web3-onboard/injected-wallets": "^2.8.4",
"@web3-onboard/walletconnect": "^2.3.5"
}
}
Binary file added examples/with-vanilla-js/public/favicon.ico
Binary file not shown.
44 changes: 44 additions & 0 deletions examples/with-vanilla-js/src/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import onboard from './onboard'
import './styles.css'

const $connect = document.querySelector('.connect-button')
const $disconnect = document.querySelector('.disconnect-button')
const $wallet = document.querySelector('.wallet')
const $disconnected = document.querySelector('.disconnected')
const $address = document.querySelector('.address')
const $label = document.querySelector('.label')

let label

const connect = async () => {
return await onboard.connectWallet()
}

const disconnect = () => {
onboard.disconnectWallet({ label })
}

const addConnectedInfo = connectedAccount => {
const address = connectedAccount.address
const start = address.slice(0, 5)
const end = address.slice(-5, -1)
$address.innerHTML = `${start}.....${end}`
$label.innerHTML = `Connected Wallet: ${label}`
}

$connect.addEventListener('click', async _ => {
const wallets = await connect()
const connectedAccount = wallets[0].accounts[0]
label = wallets[0].label
if (wallets[0]) {
addConnectedInfo(connectedAccount)
$wallet.classList.remove('hidden')
$disconnected.classList.add('hidden')
}
})

$disconnect.addEventListener('click', _ => {
disconnect()
$wallet.classList.add('hidden')
$disconnected.classList.remove('hidden')
})
47 changes: 47 additions & 0 deletions examples/with-vanilla-js/src/onboard.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import Onboard from '@web3-onboard/core'
import injectedWalletsModule from '@web3-onboard/injected-wallets'
import walletConnectModule from '@web3-onboard/walletconnect'
import coinbaseModule from '@web3-onboard/coinbase'

const injected = injectedWalletsModule()
const walletConnect = walletConnectModule({})
const coinbaseWallet = coinbaseModule()

const wallets = [injected, walletConnect, coinbaseWallet]

const chains = [
{
id: 1,
token: 'ETH',
label: 'Ethereum Mainnet',
rpcUrl: `https://rpc.flashbots.net`
},
{
id: 137,
token: 'MATIC',
label: 'Matic Mainnet',
rpcUrl: 'https://matic-mainnet.chainstacklabs.com'
}
]

const appMetadata = {
name: 'Web3-Onboard Vanilla JS Demo',
icon: '<svg />',
logo: '<svg />',
description: 'Demo using Onboard',
recommendedInjectedWallets: [
{ name: 'Coinbase', url: 'https://wallet.coinbase.com/' },
{ name: 'MetaMask', url: 'https://metamask.io' }
]
}
let onboard

if (!onboard) {
onboard = Onboard({
wallets,
chains,
appMetadata
})
}

export default onboard
Loading