Compare commits

...

6 Commits

Author SHA1 Message Date
Georges KABBOUCHI
1d10cfb64f nuxt 0.11.1 2023-09-28 20:09:47 +03:00
Georges KABBOUCHI
382192068b fix 2023-09-28 20:07:04 +03:00
Georges KABBOUCHI
ddfdab416c Update npm-publish.yml 2023-09-28 19:51:13 +03:00
Georges KABBOUCHI
1b8472b128 update nuxt 2023-09-28 19:49:24 +03:00
Georges KABBOUCHI
9d74a5ff4e support viem 2023-09-28 19:45:53 +03:00
Georges KABBOUCHI
9da073d3b0 upgrade vue-demi 2023-01-25 15:02:49 +02:00
7 changed files with 55 additions and 39 deletions

View File

@ -1,6 +1,7 @@
name: npm-publish
on:
workflow_dispatch:
release:
types: [released]

View File

@ -32,8 +32,24 @@ const walletconnect = new WalletConnectConnector({
qrcode: true,
})
// web3.js v1
setWeb3LibraryCallback((provider) => new Web3(provider))
// ethers.js v5
setWeb3LibraryCallback((provider) => new Web3Provider(provider, "any"))
// viem
setWeb3LibraryCallback((provider, _connector, account) => ({
public: createPublicClient({
transport: custom(provider),
}),
wallet: createWalletClient({
account,
chain: null as unknown as Chain,
transport: custom(provider),
}),
}))
defineComponent({
setup() {
const { active, activate, account, library } = useWeb3()
@ -55,9 +71,11 @@ defineComponent({
},
})
```
#### Typescript:
using generic:
```js
import Web3 from 'web3'
@ -71,16 +89,16 @@ const { library } = useWeb3<Web3Provider>()
```
using global types:
```ts
// global.d.ts
import type Web3 from "web3";
import type Web3 from 'web3'
declare module "@instadapp/vue-web3" {
declare module '@instadapp/vue-web3' {
interface IVueWeb3Library extends Web3 {}
}
```
#### Nuxt 3
```bash
@ -88,31 +106,31 @@ yarn add @instadapp/vue-web3-nuxt -D
```
```ts
// nuxt.config.ts
// nuxt.config.ts
export default defineNuxtConfig({
modules: [
'@instadapp/vue-web3-nuxt'
],
web3 :{
autoImport: false, // default `true`
}
modules: ['@instadapp/vue-web3-nuxt'],
web3: {
autoImport: false, // default `true`
},
})
```
If you disabled `@instadapp/vue-web3-nuxt` auto import:
```ts
//composables/useWeb3.ts
import Web3 from "web3";
import Web3 from 'web3'
// import { Web3Provider } from "@ethersproject/providers";
import { useWeb3 as useWeb3Generic } from "@instadapp/vue-web3";
import { useWeb3 as useWeb3Generic } from '@instadapp/vue-web3'
const useWeb3 = () => useWeb3Generic<Web3>();
const useWeb3 = () => useWeb3Generic<Web3>()
// const useWeb3 = () => useWeb3Generic<Web3Provider>();
export { useWeb3 };
export { useWeb3 }
```
<br />
---
## <br />
<br />
Demo (Nuxt 2): https://github.com/KABBOUCHI/nuxt-vue-web3

View File

@ -1,6 +1,6 @@
{
"name": "@instadapp/vue-web3-nuxt",
"version": "0.10.0",
"version": "0.11.1",
"license": "MIT",
"type": "module",
"exports": {
@ -21,7 +21,7 @@
"dev:prepare": "nuxt-module-build --stub && nuxi prepare playground"
},
"dependencies": {
"@instadapp/vue-web3": "^0.9.8",
"@instadapp/vue-web3": "^0.11.1",
"@nuxt/kit": "^3.1.0",
"mkdirp-promise": "4",
"vite-plugin-node-polyfills": "^0.7.0"

View File

@ -722,10 +722,10 @@
kolorist "^1.6.0"
local-pkg "^0.4.2"
"@instadapp/vue-web3@^0.9.8":
version "0.9.8"
resolved "https://registry.yarnpkg.com/@instadapp/vue-web3/-/vue-web3-0.9.8.tgz#4d7acf14518c96037c181cffa9a1865d8c3537b0"
integrity sha512-sFh20QxHm9U07v03PgpAH7Ox9YlLipPiEriwnBRPigwyDbyrKe9w6bj4eNklPzKcYbOqVQ3rxt/TTderzFuuKQ==
"@instadapp/vue-web3@^0.11.1":
version "0.11.1"
resolved "https://registry.yarnpkg.com/@instadapp/vue-web3/-/vue-web3-0.11.1.tgz#3abcd28d39346aaf7a87bc4c3cb0221680ee5371"
integrity sha512-SSz2bnD1jMSlbznpV6oFEwlNQ4OR8mzXTuvVw/QCeY21nBuzQKy97e911691Ixdui1dfO6wadYrkke6c5meePQ==
dependencies:
"@ethersproject/bytes" "^5.4.0"
"@ethersproject/keccak256" "^5.4.0"
@ -733,7 +733,7 @@
"@web3-react/types" "^6.0.7"
events "^3.3.0"
tiny-invariant "^1.1.0"
vue-demi "^0.11.4"
vue-demi "^0.13.11"
"@ioredis/commands@^1.1.1":
version "1.2.0"
@ -7696,16 +7696,11 @@ vue-bundle-renderer@^1.0.0:
dependencies:
ufo "^1.0.0"
vue-demi@*:
vue-demi@*, vue-demi@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99"
integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
vue-demi@^0.11.4:
version "0.11.4"
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.11.4.tgz#6101992fe4724cf5634018a16e953f3052e94e2a"
integrity sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==
vue-devtools-stub@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz#a65b9485edecd4273cedcb8102c739b83add2c81"

View File

@ -1,6 +1,6 @@
{
"name": "@instadapp/vue-web3",
"version": "0.10.0",
"version": "0.11.1",
"description": "Vue web3 composition api",
"license": "MIT",
"main": "index.js",
@ -53,7 +53,7 @@
"@web3-react/types": "^6.0.7",
"events": "^3.3.0",
"tiny-invariant": "^1.1.0",
"vue-demi": "^0.11.4"
"vue-demi": "^0.13.11"
},
"devDependencies": {
"@esbuild-plugins/node-globals-polyfill": "^0.1.1",

View File

@ -37,10 +37,12 @@ const active = computed(
)
const library = shallowRef()
let getLibrary: any = (provider?: any, connector?: any) => (): any => null
let getLibrary: any =
(provider: any, connector: any, account: `0x${string}`) => (): any =>
null
export const setWeb3LibraryCallback = (
cb: (provider?: any, connector?: any) => any,
cb: (provider: any, connector: any, account: `0x${string}`) => any,
) => {
getLibrary = cb
}
@ -160,13 +162,13 @@ export const useWeb3 = <TVueWeb3Library extends IVueWeb3Library>() => {
library.value = undefined
}
watch([active, provider, connector, chainId], () => {
watch([active, provider, connector, chainId, account], () => {
library.value =
active.value &&
chainId.value !== undefined &&
Number.isInteger(chainId.value) &&
!!connector.value
? getLibrary(provider.value, connector.value)
? getLibrary(provider.value, connector.value, account.value)
: undefined
})

View File

@ -1695,10 +1695,10 @@ universalify@^0.1.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
vue-demi@^0.11.4:
version "0.11.4"
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.11.4.tgz#6101992fe4724cf5634018a16e953f3052e94e2a"
integrity sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==
vue-demi@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99"
integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
vue@^3.2.6:
version "3.2.41"