├── .browserslistrc ├── .editorconfig ├── .env ├── .eslintrc.js ├── .gitignore ├── .npmrc ├── .prettierrc ├── .vscode ├── settings.json └── vue.code-snippets ├── README.md ├── babel.config.js ├── jest.config.js ├── jsconfig.json ├── package-lock.json ├── package.json ├── public ├── favicon.ico └── index.html ├── src ├── App.vue ├── assets │ ├── gif │ │ └── nft.gif │ ├── jpg │ │ ├── 8pay.jpg │ │ ├── bbank.jpg │ │ ├── bitgert.jpeg │ │ ├── bitkeep.jpeg │ │ ├── ism.jpg │ │ ├── martian.jpeg │ │ ├── oec.jpg │ │ ├── oecd.jpg │ │ ├── okwallet.jpeg │ │ └── zk.jpeg │ ├── json │ │ ├── eth-erc20.json │ │ ├── eth-erc721.json │ │ ├── eth-lock.json │ │ ├── eth-nft-lock.json │ │ ├── nftclaim.json │ │ ├── o3.json │ │ ├── test-token-basics copy.json │ │ ├── test-token-basics.json │ │ ├── test-transaction.json │ │ └── test-transactions.json │ ├── png │ │ ├── ONG.png │ │ ├── airbg1.png │ │ ├── airbg2.png │ │ ├── airbg3.png │ │ ├── airbg4.png │ │ ├── airbg5.png │ │ ├── airdrop.png │ │ ├── airdroplogo.png │ │ ├── airgift1.png │ │ ├── airgift2.png │ │ ├── aptos.png │ │ ├── astar.png │ │ ├── avax.png │ │ ├── boba.png │ │ ├── bytom.png │ │ ├── ccswap.png │ │ ├── ccswap1.png │ │ ├── cell.png │ │ ├── celo.png │ │ ├── cloudtx.png │ │ ├── clv.png │ │ ├── coinbase.png │ │ ├── cube.png │ │ ├── cube1.png │ │ ├── cws.png │ │ ├── dexit.png │ │ ├── ecell.png │ │ ├── fei.png │ │ ├── ftm.png │ │ ├── giftbg.png │ │ ├── hoo.png │ │ ├── kcc.png │ │ ├── kel.png │ │ ├── kishu.png │ │ ├── logo.png │ │ ├── martian.png │ │ ├── math.png │ │ ├── metis.png │ │ ├── milkomeda.png │ │ ├── nft.png │ │ ├── o3.png │ │ ├── oasis.png │ │ ├── okwallet.png │ │ ├── plf.png │ │ ├── poly2y.png │ │ ├── search.png │ │ ├── shib.png │ │ ├── stack.png │ │ ├── stc.png │ │ ├── tribe.png │ │ ├── tsx.png │ │ ├── xdai.png │ │ ├── xrp.png │ │ ├── xumm.png │ │ └── yni.png │ └── svg │ │ ├── Arbitrum.svg │ │ ├── ESS.svg │ │ ├── Harmony.svg │ │ ├── ONG.svg │ │ ├── ONT.svg │ │ ├── ONT_blue.svg │ │ ├── UNFI.svg │ │ ├── UNI.svg │ │ ├── WBTC.svg │ │ ├── YFI.svg │ │ ├── adai.svg │ │ ├── aeth.svg │ │ ├── arbi.svg │ │ ├── arrow-down.svg │ │ ├── arrow-left.svg │ │ ├── arrow-right.svg │ │ ├── bac.svg │ │ ├── back.svg │ │ ├── basv2.svg │ │ ├── binance.svg │ │ ├── bitkeep.svg │ │ ├── bles.svg │ │ ├── bsc.svg │ │ ├── btc.svg │ │ ├── cdai.svg │ │ ├── celo.svg │ │ ├── ceth.svg │ │ ├── check-w.svg │ │ ├── check.svg │ │ ├── chevron-down.svg │ │ ├── chevron-right.svg │ │ ├── close.svg │ │ ├── clv.svg │ │ ├── conflux.svg │ │ ├── cook.svg │ │ ├── copy.svg │ │ ├── cube.svg │ │ ├── cvt.svg │ │ ├── dai.svg │ │ ├── discord.svg │ │ ├── down2.svg │ │ ├── ecell.svg │ │ ├── email.svg │ │ ├── eth-token.svg │ │ ├── eth.svg │ │ ├── exchange.svg │ │ ├── failed.svg │ │ ├── flm.svg │ │ ├── flux.svg │ │ ├── from.svg │ │ ├── github.svg │ │ ├── heco.svg │ │ ├── kava.svg │ │ ├── lev.svg │ │ ├── logo.svg │ │ ├── mbtm.svg │ │ ├── mdx.svg │ │ ├── medium.svg │ │ ├── meta-mask.svg │ │ ├── naut.svg │ │ ├── neo-token.svg │ │ ├── neo.svg │ │ ├── neoline.svg │ │ ├── o3.svg │ │ ├── ok.svg │ │ ├── op.svg │ │ ├── pending-large.svg │ │ ├── pending.svg │ │ ├── pixie.svg │ │ ├── plt.svg │ │ ├── plut.svg │ │ ├── poly-bg.svg │ │ ├── polygon.svg │ │ ├── question.svg │ │ ├── renBTC.svg │ │ ├── revo.svg │ │ ├── shadows.svg │ │ ├── share.svg │ │ ├── status-failed.svg │ │ ├── status-pending.svg │ │ ├── status-succeeded.svg │ │ ├── status-waiting.svg │ │ ├── stc.svg │ │ ├── susd.svg │ │ ├── switch.svg │ │ ├── swth.svg │ │ ├── tap.svg │ │ ├── telegram.svg │ │ ├── to.svg │ │ ├── twitter.svg │ │ ├── unknown.svg │ │ ├── usdc.svg │ │ ├── usdt.svg │ │ ├── wallet-connect.svg │ │ ├── wing.svg │ │ ├── xdc.svg │ │ ├── xtf.svg │ │ ├── xtm.svg │ │ └── youtube.svg ├── components │ ├── basic │ │ ├── CButton.vue │ │ ├── CLink.vue │ │ └── CSubmitButton.vue │ ├── form │ │ └── CInput.vue │ ├── index.js │ ├── others │ │ ├── CCard.vue │ │ ├── CDialog.vue │ │ ├── CDivider.vue │ │ ├── CDrawer.vue │ │ ├── CPopover.vue │ │ └── CTooltip.vue │ └── spans │ │ └── CFlexSpan.vue ├── i18n │ ├── en.js │ ├── index.js │ └── zh-cn.js ├── main.js ├── router │ └── index.js ├── store │ ├── allowances.js │ ├── balances.js │ ├── chains.js │ ├── expecttime.js │ ├── fees.js │ ├── health.js │ ├── index.js │ ├── nftAssetsBasics.js │ ├── register.js │ ├── tokenBasics.js │ ├── tokenMaps.js │ ├── tokens.js │ ├── transactions.js │ └── wallets.js ├── styles │ ├── mixins │ │ ├── index.scss │ │ ├── layouts.scss │ │ └── utils.scss │ ├── rules │ │ ├── animations.scss │ │ ├── element-ui.scss │ │ ├── index.scss │ │ └── transitions.scss │ └── variables │ │ ├── element-ui.scss │ │ └── index.scss ├── utils │ ├── chainApi │ │ ├── aptos.js │ │ ├── eth.js │ │ ├── index.js │ │ ├── n3.js │ │ ├── neo.js │ │ ├── ont.js │ │ ├── stc.js │ │ └── xrp.js │ ├── convertors.js │ ├── enums.js │ ├── env.js │ ├── errorHandler.js │ ├── errors.js │ ├── formatters.js │ ├── getStoreKey.js │ ├── httpApi.js │ ├── index.js │ ├── mappers.js │ ├── schemas.js │ ├── serializr.js │ ├── validations.js │ ├── values.js │ └── walletApi │ │ ├── binance.js │ │ ├── bitkeep.js │ │ ├── coinBase.js │ │ ├── cyano.js │ │ ├── index.js │ │ ├── martian.js │ │ ├── math.js │ │ ├── metaMask.js │ │ ├── neoline.js │ │ ├── neolineN3.js │ │ ├── o3.js │ │ ├── okwallet.js │ │ ├── petra.js │ │ ├── starMask.js │ │ ├── walletConnect.js │ │ └── xumm.js └── views │ ├── airdrop │ ├── ConnectWallet.vue │ └── index.vue │ ├── common │ ├── ConnectWallet.vue │ ├── Footer.vue │ ├── Header.vue │ ├── Menu.vue │ ├── Networks.vue │ ├── Page.vue │ ├── Wallet.vue │ └── Wallets.vue │ ├── home │ ├── Airdrop.vue │ ├── Confirm.vue │ ├── ConnectWallet.vue │ ├── Form.vue │ ├── SelectChain.vue │ ├── SelectTokenBasic.vue │ └── index.vue │ ├── nft │ ├── Confirm.vue │ ├── ConnectWallet.vue │ ├── Detail.vue │ ├── Form.vue │ ├── SelectAsset.vue │ ├── SelectChain.vue │ ├── SelectItem.vue │ ├── SelectTokenBasic.vue │ └── index.vue │ ├── nfttransactions │ ├── Details.vue │ └── index.vue │ └── transactions │ ├── Details.vue │ └── index.vue ├── tests └── unit │ └── example.spec.js ├── vue.config.js └── yarn.lock /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | VUE_APP_TITLE=PolyBridge -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true, 5 | }, 6 | extends: ['plugin:vue/essential', '@vue/airbnb', '@vue/prettier'], 7 | ignorePatterns: ['**/src/lib/*'], 8 | rules: { 9 | // edit rules cautiously 10 | 'class-methods-use-this': 'off', 11 | 'global-require': 'off', 12 | 'import/extensions': ['error', 'always', { js: 'never', vue: 'never' }], 13 | 'import/no-cycle': 'off', 14 | 'import/prefer-default-export': 'off', 15 | 'max-classes-per-file': 'off', 16 | 'no-console': ['warn', { allow: ['warn', 'error'] }], 17 | 'no-debugger': 'off', 18 | 'no-param-reassign': ['error', { props: false }], 19 | 'no-unused-vars': ['warn', { args: 'none' }], 20 | 'vue/no-unused-components': 'warn', 21 | }, 22 | parserOptions: { 23 | parser: 'babel-eslint', 24 | }, 25 | overrides: [ 26 | { 27 | files: ['**/test/**/*.test.{j,t}s?(x)'], 28 | env: { 29 | jest: true, 30 | }, 31 | }, 32 | ], 33 | }; 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npm.taobao.org/ -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "singleQuote": true, 4 | "trailingComma": "all" 5 | } 6 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode", 3 | "editor.formatOnSave": true, 4 | "javascript.suggest.autoImports": false, 5 | "typescript.suggest.autoImports": false, 6 | "vetur.completion.autoImport": false, 7 | "[javascript]": { 8 | "editor.defaultFormatter": "vscode.typescript-language-features" 9 | }, 10 | "[vue]": { 11 | "editor.defaultFormatter": "octref.vetur" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.vscode/vue.code-snippets: -------------------------------------------------------------------------------- 1 | { 2 | "Vue init file": { 3 | "scope": "vue", 4 | "prefix": "