Add nuxt module

This commit is contained in:
Georges KABBOUCHI 2022-06-06 14:31:36 +03:00
parent a4178e79d2
commit 69c4722d37
14 changed files with 8479 additions and 1 deletions

12
nuxt/.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
indent_size = 2
indent_style = space
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

2
nuxt/.eslintignore Normal file
View File

@ -0,0 +1,2 @@
dist
node_modules

10
nuxt/.eslintrc Normal file
View File

@ -0,0 +1,10 @@
{
"extends": [
"@nuxtjs/eslint-config-typescript"
],
"rules": {
"@typescript-eslint/no-unused-vars": [
"off"
]
}
}

51
nuxt/.gitignore vendored Normal file
View File

@ -0,0 +1,51 @@
# Dependencies
node_modules
# Logs
*.log*
# Temp directories
.temp
.tmp
.cache
# Yarn
**/.yarn/cache
**/.yarn/*state*
# Generated dirs
dist
# Nuxt
.nuxt
.output
.vercel_build_output
.build-*
.env
.netlify
# Env
.env
# Testing
reports
coverage
*.lcov
.nyc_output
# VSCode
.vscode
# Intellij idea
*.iml
.idea
# OSX
.DS_Store
.AppleDouble
.LSOverride
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

6
nuxt/README.md Normal file
View File

@ -0,0 +1,6 @@
# Nuxt Module
## Development
- Run `npm run dev:prepare` to generate type stubs.
- Use `npm run dev` to start [playground](./playground) in development mode.

36
nuxt/package.json Normal file
View File

@ -0,0 +1,36 @@
{
"name": "@instadapp/vue-web3-nuxt",
"version": "1.0.0",
"license": "MIT",
"type": "module",
"exports": {
".": {
"import": "./dist/module.mjs",
"require": "./dist/module.cjs"
}
},
"main": "./dist/module.cjs",
"types": "./dist/types.d.ts",
"files": [
"dist"
],
"scripts": {
"prepack": "nuxt-module-build",
"dev": "nuxi dev playground",
"dev:build": "nuxi build playground",
"dev:prepare": "nuxt-module-build --stub && nuxi prepare playground"
},
"dependencies": {
"@esbuild-plugins/node-globals-polyfill": "^0.1.1",
"@esbuild-plugins/node-modules-polyfill": "^0.1.4",
"@instadapp/vue-web3": "^0.7.0",
"@nuxt/kit": "^3.0.0-rc.3",
"rollup-plugin-node-polyfills": "^0.2.1"
},
"devDependencies": {
"@nuxt/module-builder": "latest",
"@nuxtjs/eslint-config-typescript": "latest",
"eslint": "latest",
"nuxt": "^3.0.0-rc.3"
}
}

45
nuxt/playground/app.vue Normal file
View File

@ -0,0 +1,45 @@
<template>
<div class="relative p-10 n-bg-base">
<div class="container w-full mx-auto flex flex-col gap-4">
<div class="flex justify-between items-center">
<div class="text-4xl">
Web3 + Nuxt
</div>
</div>
<NCard class="p4">
<pre>{{ {account, active, error} }}</pre>
</NCard>
<NCard class="p4 flex gap-4">
<NButton @click="connectMetamask">
Connect using MetaMask
</NButton>
<NButton @click="connectWalletConnect">
Connect using WalletConnect
</NButton>
</NCard>
</div>
</div>
</template>
<script setup>
const { active, account, activate, error } = useWeb3()
const connectMetamask = async () => {
const { InjectedConnector } = await import('@web3-react/injected-connector')
await activate(
new InjectedConnector({})
)
}
const connectWalletConnect = async () => {
const { WalletConnectConnector } = await import('@web3-react/walletconnect-connector')
await activate(
new WalletConnectConnector({ })
)
}
</script>

View File

@ -0,0 +1,12 @@
import { defineNuxtConfig } from 'nuxt'
import MyModule from '..'
export default defineNuxtConfig({
modules: [
'@nuxt/ui',
MyModule
],
web3: {
}
})

View File

@ -0,0 +1,11 @@
{
"private": true,
"name": "my-module-playground",
"dependencies": {
"@web3-react/injected-connector": "^6.0.7",
"@web3-react/walletconnect-connector": "^6.2.13"
},
"devDependencies": {
"@nuxt/ui": "^0.1.1"
}
}

2275
nuxt/playground/yarn.lock Normal file

File diff suppressed because it is too large Load Diff

54
nuxt/src/module.ts Normal file
View File

@ -0,0 +1,54 @@
import { resolve } from 'path'
import { addAutoImport, defineNuxtModule, extendViteConfig } from '@nuxt/kit'
import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'
import rollupNodePolyFill from 'rollup-plugin-node-polyfills'
export interface ModuleOptions {
autoImport: boolean
}
export default defineNuxtModule<ModuleOptions>({
meta: {
name: 'vue-web3',
configKey: 'web3'
},
defaults: {
autoImport: true
},
setup (options, nuxt) {
nuxt.hook('vite:extendConfig', (clientConfig, { isClient }) => {
if (isClient && process.env.NODE_ENV === 'production') {
clientConfig.resolve.alias = {
...clientConfig.resolve.alias,
web3: resolve('./node_modules/web3/dist/web3.min.js')
}
}
})
extendViteConfig((config) => {
config.build = config.build || {}
config.build.rollupOptions = config.build.rollupOptions || {}
config.build.rollupOptions.plugins = config.build.rollupOptions.plugins || []
config.build.rollupOptions.plugins.push(rollupNodePolyFill())
config.optimizeDeps = config.optimizeDeps || {}
config.optimizeDeps.esbuildOptions = config.optimizeDeps.esbuildOptions || {}
config.optimizeDeps.esbuildOptions.define = config.optimizeDeps.esbuildOptions.define || {}
config.optimizeDeps.esbuildOptions.define.global = 'globalThis'
config.optimizeDeps.esbuildOptions.plugins = config.optimizeDeps.esbuildOptions.plugins || []
config.optimizeDeps.esbuildOptions.plugins.push(
NodeGlobalsPolyfillPlugin({
process: true,
buffer: true
})
)
})
if (options.autoImport) {
addAutoImport({
name: 'useWeb3', from: '@instadapp/vue-web3'
})
}
}
})

3
nuxt/tsconfig.json Normal file
View File

@ -0,0 +1,3 @@
{
"extends": "./playground/.nuxt/tsconfig.json"
}

5960
nuxt/yarn.lock Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@instadapp/vue-web3", "name": "@instadapp/vue-web3",
"version": "0.7.0", "version": "0.8.0",
"description": "Vue web3 composition api", "description": "Vue web3 composition api",
"license": "MIT", "license": "MIT",
"main": "index.js", "main": "index.js",
@ -37,6 +37,7 @@
"lint:fix": "yarn run lint --write" "lint:fix": "yarn run lint --write"
}, },
"files": [ "files": [
"nuxt/**/*",
"dist/**/*", "dist/**/*",
"index.js", "index.js",
"index.cjs", "index.cjs",