From 0bdcceb35b0534818142c6d8c0fc578e68c8771c Mon Sep 17 00:00:00 2001 From: candy Date: Fri, 9 May 2025 10:08:51 +0800 Subject: [PATCH 01/34] feat: add_all_tlds_and paymentid --- packages/extension/package.json | 2 + .../extension/src/libs/name-resolver/index.ts | 2 +- .../ethereum/ui/send-transaction/index.vue | 6 +- .../kadena/ui/send-transaction/index.vue | 6 +- .../polkadot/ui/send-transaction/index.vue | 6 +- .../solana/ui/send-transaction/index.vue | 6 +- .../src/ui/action/views/swap/index.vue | 6 +- packages/name-resolution/package.json | 2 + packages/name-resolution/src/index.ts | 5 +- packages/name-resolution/src/sid/index.ts | 138 ++++-- packages/name-resolution/src/sid/types.ts | 32 ++ packages/name-resolution/src/sid/utils.ts | 3 + packages/name-resolution/src/types.ts | 7 +- packages/name-resolution/tsconfig.json | 9 +- yarn.lock | 415 ++++++++++++++++-- 15 files changed, 538 insertions(+), 107 deletions(-) create mode 100644 packages/name-resolution/src/sid/utils.ts diff --git a/packages/extension/package.json b/packages/extension/package.json index a2a952328..1efb82787 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -24,6 +24,7 @@ }, "dependencies": { "@amplitude/analytics-browser": "^2.14.0", + "@bonfida/spl-name-service": "^3.0.10", "@enkryptcom/extension-bridge": "workspace:^", "@enkryptcom/hw-wallets": "workspace:^", "@enkryptcom/keyring": "workspace:^", @@ -78,6 +79,7 @@ "switch-ts": "^1.1.1", "url-parse": "^1.5.10", "uuid": "^11.1.0", + "viem": "^2.23.12", "vue": "^3.5.13", "vue-echarts": "7.0.3", "vue-router": "^4.5.0", diff --git a/packages/extension/src/libs/name-resolver/index.ts b/packages/extension/src/libs/name-resolver/index.ts index b19d9684a..b279c412d 100644 --- a/packages/extension/src/libs/name-resolver/index.ts +++ b/packages/extension/src/libs/name-resolver/index.ts @@ -14,7 +14,7 @@ class GenericNameResolver { }); } - async resolveName(name: string, coins: CoinType[]): Promise { + async resolveName(name: string, coins: CoinType[], providerChain?: string): Promise { let response: string | null = null; for (const coin of coins) { response = await this.nameResolver diff --git a/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue b/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue index 1509894d8..b89963f5d 100644 --- a/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue @@ -668,7 +668,11 @@ const inputAddressFrom = (text: string) => { const inputAddressTo = async (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName(text, [props.network.name as CoinType, 'ETH']) + .resolveName( + text, + [props.network.name as CoinType, 'ETH'], + props.network?.provider as string, + ) .then(resolved => { if (resolved) { addressTo.value = resolved; diff --git a/packages/extension/src/providers/kadena/ui/send-transaction/index.vue b/packages/extension/src/providers/kadena/ui/send-transaction/index.vue index 90a5c1aee..f17bb2d1e 100644 --- a/packages/extension/src/providers/kadena/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/kadena/ui/send-transaction/index.vue @@ -399,7 +399,11 @@ const inputAddressFrom = (text: string) => { const inputAddressTo = (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName(text, [props.network.name as CoinType]) + .resolveName( + text, + [props.network.name as CoinType], + props.network?.provider as string, + ) .then(resolved => { if (resolved) { addressTo.value = resolved; diff --git a/packages/extension/src/providers/polkadot/ui/send-transaction/index.vue b/packages/extension/src/providers/polkadot/ui/send-transaction/index.vue index 2b1ec61fc..98370f254 100644 --- a/packages/extension/src/providers/polkadot/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/polkadot/ui/send-transaction/index.vue @@ -378,7 +378,11 @@ const inputAddressFrom = (text: string) => { const inputAddressTo = (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName(text, [props.network.name as CoinType, 'DOT', 'KSM']) + .resolveName( + text, + [props.network.name as CoinType, 'DOT', 'KSM'], + props.network?.provider as string, + ) .then(resolved => { if (resolved) { addressTo.value = resolved; diff --git a/packages/extension/src/providers/solana/ui/send-transaction/index.vue b/packages/extension/src/providers/solana/ui/send-transaction/index.vue index a947cbc51..665ec427f 100644 --- a/packages/extension/src/providers/solana/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/solana/ui/send-transaction/index.vue @@ -694,7 +694,11 @@ const inputAddressFrom = (text: string) => { const inputAddressTo = async (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName(text, [props.network.name as CoinType, 'ETH']) + .resolveName( + text, + [props.network.name as CoinType, 'ETH'], + props.network?.provider as string, + ) .then(resolved => { if (resolved) { addressTo.value = resolved; diff --git a/packages/extension/src/ui/action/views/swap/index.vue b/packages/extension/src/ui/action/views/swap/index.vue index ad00e35f3..eb1e37516 100644 --- a/packages/extension/src/ui/action/views/swap/index.vue +++ b/packages/extension/src/ui/action/views/swap/index.vue @@ -404,7 +404,11 @@ const setMax = () => { const inputAddress = (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName(text, [props.network.name as CoinType, 'ETH']) + .resolveName( + text, + [props.network.name as CoinType, 'ETH'], + props.network?.provider as string, + ) .then(resolved => { if (resolved) { inputAddress(resolved); diff --git a/packages/name-resolution/package.json b/packages/name-resolution/package.json index c60e7df5a..be0be4726 100644 --- a/packages/name-resolution/package.json +++ b/packages/name-resolution/package.json @@ -49,7 +49,9 @@ "dependencies": { "@ensdomains/address-encoder": "^1.1.2", "@siddomains/sidjs": "0.1.29", + "@solana/web3.js": "^1.98.0", "@unstoppabledomains/resolution": "^9.3.3", + "@web3-name-sdk/core": "^0.4.1", "ethers": "^5.8.0" } } diff --git a/packages/name-resolution/src/index.ts b/packages/name-resolution/src/index.ts index 7c641bec3..dfb1de661 100644 --- a/packages/name-resolution/src/index.ts +++ b/packages/name-resolution/src/index.ts @@ -47,10 +47,11 @@ class NameResolver { public async resolveAddress( name: string, - coin: CoinType = "ETH" + coin: CoinType = "ETH", + paymentIdChain?: string ): Promise { return this.initDone.then(() => { - if (this.sid.isSupportedName(name)) return this.sid.resolveAddress(name); + if (this.sid.isSupportedName(name)) return this.sid.resolveAddress(name, coin, paymentIdChain); if (this.rns.isSupportedName(name)) return this.rns.resolveAddress(name, coin); if (this.ud.isSupportedName(name)) diff --git a/packages/name-resolution/src/sid/index.ts b/packages/name-resolution/src/sid/index.ts index ca465372e..8c4fd5fba 100644 --- a/packages/name-resolution/src/sid/index.ts +++ b/packages/name-resolution/src/sid/index.ts @@ -1,72 +1,114 @@ -import { ethers } from "ethers"; -import SID, { getSidAddress } from "@siddomains/sidjs"; -import { BaseResolver } from "../types"; +import { createWeb3Name } from "@web3-name-sdk/core"; +import { BaseResolver, CoinType } from "../types"; +import { PAYMENT_ID_CHAINS_MAP, PaymentIdChain, SIDOptions, TIMEOUT_PRESETS } from "./types"; +import { createSolName } from "@web3-name-sdk/core/solName"; +import { createPaymentIdName } from "@web3-name-sdk/core/paymentIdName"; +import { isValidPaymentId } from "./utils"; import { getTLD } from "../utils"; -import { SIDOptions } from "./types"; +// demo: https://sdk-demo-git-main-space-id.vercel.app/ +const evm_tlds = [ + "bnb", + "arb", + "wod", + "mph", + "g", + "eth", + "btc", + "burger", + "alien", + "zkf", + "merlin", + "taiko", + "tomo", + "gno", + "floki", + "ll", + "ip", + "mode", + "mint", + "manta", + "cake", + "zeta", + "ail", + "duck", +]; class SIDResolver implements BaseResolver { name: string; - - supportedTLDs = ["bnb", "arb"]; - + timeout: number; + // The supported tlds for sid in evm and solana + supportedTLDs = ["sol", ...evm_tlds]; rpc: SIDOptions; + solanaNameResolver: ReturnType; + paymentIdNameResolver: ReturnType; + web3NameResolver: ReturnType; constructor(options: SIDOptions) { this.rpc = options; + this.timeout = options.timeout || TIMEOUT_PRESETS.normal; this.name = "spaceid"; + this.solanaNameResolver = createSolName({ timeout: this.timeout }); + this.paymentIdNameResolver = createPaymentIdName(); + this.web3NameResolver = createWeb3Name(); } - // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function public async init(): Promise {} - public async resolveReverseName(address: string): Promise { - const bnbProvider = new ethers.providers.JsonRpcProvider({ - url: this.rpc.node.bnb, - headers: { - "user-agent": "enkrypt/name-resolver", - }, - }); - const sidBNB = new SID({ - provider: bnbProvider, - sidAddress: getSidAddress("56"), + // The PaymentId only supports getAddress resolution. + public async handlePaymentIdGetAddress( + name: string, + paymentIdChain?: string + ): Promise { + return await this.paymentIdNameResolver.getAddress({ + name, + chainId: PAYMENT_ID_CHAINS_MAP[paymentIdChain?.toLowerCase()] || PaymentIdChain.Ethereum, }); - const nameBnb = await sidBNB.getName(address); - if (nameBnb) return nameBnb.name; - const arbProvider = new ethers.providers.JsonRpcProvider({ - url: this.rpc.node.arb, - headers: { - "user-agent": "enkrypt/name-resolver", - }, - }); - const sidArb = new SID({ - provider: arbProvider, - sidAddress: getSidAddress("42161"), - }); - const nameArb = await sidArb.getName(address); - if (nameArb) return nameArb.name; - return null; } - public async resolveAddress(name: string): Promise { - const provider = new ethers.providers.JsonRpcProvider({ - url: this.rpc.node[getTLD(name)], - headers: { - "user-agent": "enkrypt/name-resolver", - }, - }); - const sid = new SID({ - provider, - sidAddress: getSidAddress(getTLD(name) === "bnb" ? "56" : "42161"), - }); - const address = await sid.name(name).getAddress(); - if (parseInt(address, 16) === 0) { + public async resolveReverseName(address: string): Promise { + try { + let name = await this.web3NameResolver.getDomainName({ + timeout: this.timeout, + address, + }); + if (!name) { + name = await this.solanaNameResolver.getDomainName({ + address, + }); + } + return name; + } catch (error) { return null; } - return address; } + public async resolveAddress( + name: string, + coint: CoinType, + paymentIdChain?: string, + ): Promise { + if (isValidPaymentId(name)) { + console.log("PaymentId name", name, coint); + return this.handlePaymentIdGetAddress(name, paymentIdChain); + } + + const tld = getTLD(name); + switch (tld) { + case "sol": + const solAddress = await this.solanaNameResolver.getAddress({ + name, + }); + return solAddress; + default: + const address = await this.web3NameResolver.getAddress(name, { + timeout: this.timeout, + }); + return parseInt(address, 16) === 0 ? null : address; + } + } public isSupportedName(name: string): boolean { - return this.supportedTLDs.includes(getTLD(name)); + // Compatible with TLD and paymentId + return this.supportedTLDs.includes(getTLD(name)) || isValidPaymentId(name); } } diff --git a/packages/name-resolution/src/sid/types.ts b/packages/name-resolution/src/sid/types.ts index f0c52fef0..e2771c058 100644 --- a/packages/name-resolution/src/sid/types.ts +++ b/packages/name-resolution/src/sid/types.ts @@ -3,4 +3,36 @@ export interface SIDOptions { bnb: string; arb: string; }; + timeout?: number } + +export type Protocol = "EVM" | "Solana" | "PaymentID"; +export enum PaymentIdChain { + Bitcoin = 0, + Ethereum = 1, + Solana = 2, + Tron = 3, + Aptos = 4, + Sui = 5, +} +export const PAYMENT_ID_CHAINS_MAP = { + "bitcoin": 0, + "ethereum": 1, + "solana": 2, + "tron": 3, + "aptos": 4, + "sui": 5, +}; +export type Method = + | "getAddress" + | "getDomainName" + | "batchGetDomainNameByChainId" + | "getMetadata" + | "getContentHash"; + + +export const TIMEOUT_PRESETS = { + veryShort: 100, // Intentionally short to test timeout + normal: 5000, // Normal timeout (5s) + long: 15000, // Long timeout (15s) +}; \ No newline at end of file diff --git a/packages/name-resolution/src/sid/utils.ts b/packages/name-resolution/src/sid/utils.ts new file mode 100644 index 000000000..db6a9e3dd --- /dev/null +++ b/packages/name-resolution/src/sid/utils.ts @@ -0,0 +1,3 @@ +const paymentIdRegex = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+$/ +export const isValidPaymentId = (id: string) => paymentIdRegex.test(id) + diff --git a/packages/name-resolution/src/types.ts b/packages/name-resolution/src/types.ts index 242f5320d..b2aa884ba 100644 --- a/packages/name-resolution/src/types.ts +++ b/packages/name-resolution/src/types.ts @@ -1,5 +1,5 @@ import { ENSOptions } from "./ens/types"; -import { SIDOptions } from "./sid/types"; +import { PaymentIdChain, SIDOptions } from "./sid/types"; export type CoinType = | "BTC" @@ -146,12 +146,13 @@ export abstract class BaseResolver { public abstract resolveAddress( name: string, - coint: CoinType + coint: CoinType, + paymentIdChain?: string ): Promise; public abstract resolveReverseName(address: string): Promise; - public abstract isSupportedName(name: string): boolean; + public abstract isSupportedName(name: string, paymentIdChain?:PaymentIdChain): boolean; } export interface NameResolverOptions { diff --git a/packages/name-resolution/tsconfig.json b/packages/name-resolution/tsconfig.json index 6da8e1f23..d77afeb0b 100644 --- a/packages/name-resolution/tsconfig.json +++ b/packages/name-resolution/tsconfig.json @@ -2,17 +2,20 @@ "extends": "./tsconfig.paths.json", "compilerOptions": { "lib": ["ESNext", "dom"], - "moduleResolution": "node", + "moduleResolution": "bundler", "noUnusedLocals": true, "noUnusedParameters": true, "removeComments": true, "sourceMap": true, "target": "es5", - "module": "commonjs", + "module": "es2020", "outDir": "dist", "resolveJsonModule": true, "esModuleInterop": true, - "declaration": true + "declaration": true, + "paths": { + "@web3-name-sdk/core/*": ["node_modules/@web3-name-sdk/core/dist/*"] + }, }, "include": ["src/**/*.ts", "tests/**/*.ts"], "exclude": [ diff --git a/yarn.lock b/yarn.lock index aec5ea9de..0393ce210 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,13 @@ __metadata: languageName: node linkType: hard +"@adraffy/ens-normalize@npm:^1.10.0, @adraffy/ens-normalize@npm:^1.10.1": + version: 1.11.0 + resolution: "@adraffy/ens-normalize@npm:1.11.0" + checksum: 10/abef75f21470ea43dd6071168e092d2d13e38067e349e76186c78838ae174a46c3e18ca50921d05bea6ec3203074147c9e271f8cb6531d1c2c0e146f3199ddcb + languageName: node + linkType: hard + "@amplitude/analytics-browser@npm:^2.14.0": version: 2.14.0 resolution: "@amplitude/analytics-browser@npm:2.14.0" @@ -495,6 +502,38 @@ __metadata: languageName: node linkType: hard +"@bonfida/sns-records@npm:0.0.1": + version: 0.0.1 + resolution: "@bonfida/sns-records@npm:0.0.1" + dependencies: + borsh: "npm:1.0.0" + bs58: "npm:5.0.0" + buffer: "npm:^6.0.3" + peerDependencies: + "@solana/web3.js": ^1.87.3 + checksum: 10/e47294cdd73961288eb9ad41f5f80eb67953fcac5e0e9f29c39990795411f30606e3eba359fbd8e3e8b23ff64f797ce2ad33c8298fe6a2c9634902397b3a3098 + languageName: node + linkType: hard + +"@bonfida/spl-name-service@npm:^3.0.10": + version: 3.0.10 + resolution: "@bonfida/spl-name-service@npm:3.0.10" + dependencies: + "@bonfida/sns-records": "npm:0.0.1" + "@noble/curves": "npm:^1.4.0" + "@scure/base": "npm:^1.1.6" + "@solana/spl-token": "npm:0.4.6" + borsh: "npm:2.0.0" + buffer: "npm:^6.0.3" + graphemesplit: "npm:^2.4.4" + ipaddr.js: "npm:^2.2.0" + punycode: "npm:^2.3.1" + peerDependencies: + "@solana/web3.js": ^1.87.3 + checksum: 10/46b246cb5ac3154ddee69ed739bfb8893045d56759319c75beca61022575ffc048720334cb49abc2903eeee3ccdf815292186f8c0599e65ff2d11cb8db66739f + languageName: node + linkType: hard + "@bundled-es-modules/cookie@npm:^2.0.0": version: 2.0.0 resolution: "@bundled-es-modules/cookie@npm:2.0.0" @@ -1530,6 +1569,7 @@ __metadata: resolution: "@enkryptcom/extension@workspace:packages/extension" dependencies: "@amplitude/analytics-browser": "npm:^2.14.0" + "@bonfida/spl-name-service": "npm:^3.0.10" "@crxjs/vite-plugin": "npm:^2.0.0-beta.32" "@enkryptcom/extension-bridge": "workspace:^" "@enkryptcom/hw-wallets": "workspace:^" @@ -1628,6 +1668,7 @@ __metadata: url: "npm:^0.11.4" url-parse: "npm:^1.5.10" uuid: "npm:^11.1.0" + viem: "npm:^2.23.12" vite: "npm:^6.3.1" vite-plugin-node-polyfills: "npm:0.23.0" vite-tsconfig-paths: "npm:^5.1.4" @@ -1729,10 +1770,12 @@ __metadata: dependencies: "@ensdomains/address-encoder": "npm:^1.1.2" "@siddomains/sidjs": "npm:0.1.29" + "@solana/web3.js": "npm:^1.98.0" "@types/node": "npm:^22.14.1" "@typescript-eslint/eslint-plugin": "npm:^8.30.1" "@typescript-eslint/parser": "npm:^8.30.1" "@unstoppabledomains/resolution": "npm:^9.3.3" + "@web3-name-sdk/core": "npm:^0.4.1" eslint: "npm:^9.24.0" eslint-config-airbnb-base: "npm:^15.0.0" eslint-config-prettier: "npm:^10.1.2" @@ -1746,6 +1789,7 @@ __metadata: tsup: "npm:^8.4.0" typescript: "npm:^5.8.3" typescript-eslint: "npm:8.30.1" + viem: "npm:^2.23.12" vitest: "npm:^3.1.1" languageName: unknown linkType: soft @@ -6418,6 +6462,15 @@ __metadata: languageName: node linkType: hard +"@noble/curves@npm:1.8.2, @noble/curves@npm:~1.8.1": + version: 1.8.2 + resolution: "@noble/curves@npm:1.8.2" + dependencies: + "@noble/hashes": "npm:1.7.2" + checksum: 10/540e7b7a8fe92ecd5cef846f84d07180662eb7fd7d8e9172b8960c31827e74f148fe4630da962138a6be093ae9f8992d14ab23d3682a2cc32be839aa57c03a46 + languageName: node + linkType: hard + "@noble/curves@npm:^1.0.0, @noble/curves@npm:^1.1.0, @noble/curves@npm:^1.2.0, @noble/curves@npm:^1.3.0, @noble/curves@npm:^1.4.0, @noble/curves@npm:^1.4.2, @noble/curves@npm:~1.6.0": version: 1.6.0 resolution: "@noble/curves@npm:1.6.0" @@ -6427,12 +6480,12 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:~1.8.1": - version: 1.8.2 - resolution: "@noble/curves@npm:1.8.2" +"@noble/curves@npm:^1.6.0, @noble/curves@npm:~1.9.0": + version: 1.9.0 + resolution: "@noble/curves@npm:1.9.0" dependencies: - "@noble/hashes": "npm:1.7.2" - checksum: 10/540e7b7a8fe92ecd5cef846f84d07180662eb7fd7d8e9172b8960c31827e74f148fe4630da962138a6be093ae9f8992d14ab23d3682a2cc32be839aa57c03a46 + "@noble/hashes": "npm:1.8.0" + checksum: 10/f2c5946310722fee23e04ed747f21ce72e0436e38e1fa620d226a8c613262e7d0dbab5341f14caf92936089d01d9e9231964c409cd1ac2a73a075f3cdb1acc41 languageName: node linkType: hard @@ -6513,6 +6566,13 @@ __metadata: languageName: node linkType: hard +"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:~1.8.0": + version: 1.8.0 + resolution: "@noble/hashes@npm:1.8.0" + checksum: 10/474b7f56bc6fb2d5b3a42132561e221b0ea4f91e590f4655312ca13667840896b34195e2b53b7f097ec080a1fdd3b58d902c2a8d0fbdf51d2e238b53808a177e + languageName: node + linkType: hard + "@noble/hashes@npm:^1.6.1, @noble/hashes@npm:~1.7.1": version: 1.7.1 resolution: "@noble/hashes@npm:1.7.1" @@ -8374,6 +8434,13 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:^1.1.6, @scure/base@npm:~1.2.5": + version: 1.2.5 + resolution: "@scure/base@npm:1.2.5" + checksum: 10/9a963a27424a373b62760c9ae7099ae496be67eb5b31205639f529f0dbcb2228a827222a36d22842cc2acda78e300a3430d46d84de5d8d4b791208955360853e + languageName: node + linkType: hard + "@scure/base@npm:~1.2.2, @scure/base@npm:~1.2.4": version: 1.2.4 resolution: "@scure/base@npm:1.2.4" @@ -8403,6 +8470,17 @@ __metadata: languageName: node linkType: hard +"@scure/bip32@npm:1.6.2, @scure/bip32@npm:^1.3.1": + version: 1.6.2 + resolution: "@scure/bip32@npm:1.6.2" + dependencies: + "@noble/curves": "npm:~1.8.1" + "@noble/hashes": "npm:~1.7.1" + "@scure/base": "npm:~1.2.2" + checksum: 10/474ee315a8631aa1a7d378b0521b4494e09a231519ec53d879088cb88c8ff644a89b27a02a8bf0b5a9b1c4c0417acc70636ccdb121b800c34594ae53c723f8d7 + languageName: node + linkType: hard + "@scure/bip32@npm:^1.1.5, @scure/bip32@npm:^1.4.0": version: 1.5.0 resolution: "@scure/bip32@npm:1.5.0" @@ -8414,14 +8492,14 @@ __metadata: languageName: node linkType: hard -"@scure/bip32@npm:^1.3.1": - version: 1.6.2 - resolution: "@scure/bip32@npm:1.6.2" +"@scure/bip32@npm:^1.5.0": + version: 1.7.0 + resolution: "@scure/bip32@npm:1.7.0" dependencies: - "@noble/curves": "npm:~1.8.1" - "@noble/hashes": "npm:~1.7.1" - "@scure/base": "npm:~1.2.2" - checksum: 10/474ee315a8631aa1a7d378b0521b4494e09a231519ec53d879088cb88c8ff644a89b27a02a8bf0b5a9b1c4c0417acc70636ccdb121b800c34594ae53c723f8d7 + "@noble/curves": "npm:~1.9.0" + "@noble/hashes": "npm:~1.8.0" + "@scure/base": "npm:~1.2.5" + checksum: 10/f90e0c23ab6a31a164856ae9cb9a8cae2886df608c74a6c0c4875095b017e30ffd92f28f73b8c52890d9a89fca86d19f6d60bb1ea7cad64c7987f92ae83509ad languageName: node linkType: hard @@ -8445,6 +8523,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.5.4, @scure/bip39@npm:^1.2.1, @scure/bip39@npm:^1.5.1": + version: 1.5.4 + resolution: "@scure/bip39@npm:1.5.4" + dependencies: + "@noble/hashes": "npm:~1.7.1" + "@scure/base": "npm:~1.2.4" + checksum: 10/9f08b433511d7637bc48c51aa411457d5f33da5a85bd03370bf394822b0ea8c007ceb17247a3790c28237303d8fc20c4e7725765940cd47e1365a88319ad0d5c + languageName: node + linkType: hard + "@scure/bip39@npm:^1.2.0, @scure/bip39@npm:^1.3.0": version: 1.4.0 resolution: "@scure/bip39@npm:1.4.0" @@ -8455,13 +8543,13 @@ __metadata: languageName: node linkType: hard -"@scure/bip39@npm:^1.2.1, @scure/bip39@npm:^1.5.1": - version: 1.5.4 - resolution: "@scure/bip39@npm:1.5.4" +"@scure/bip39@npm:^1.4.0": + version: 1.6.0 + resolution: "@scure/bip39@npm:1.6.0" dependencies: - "@noble/hashes": "npm:~1.7.1" - "@scure/base": "npm:~1.2.4" - checksum: 10/9f08b433511d7637bc48c51aa411457d5f33da5a85bd03370bf394822b0ea8c007ceb17247a3790c28237303d8fc20c4e7725765940cd47e1365a88319ad0d5c + "@noble/hashes": "npm:~1.8.0" + "@scure/base": "npm:~1.2.5" + checksum: 10/63e60c40fa1bda2c1b50351546fee6d7b0947cc814aa7a4209dcedd3693b5053302c8fca28292f5f50735e11c613265359acdc019127393dbab17e53489fc449 languageName: node linkType: hard @@ -8699,6 +8787,15 @@ __metadata: languageName: node linkType: hard +"@solana/codecs-core@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs-core@npm:2.0.0-preview.2" + dependencies: + "@solana/errors": "npm:2.0.0-preview.2" + checksum: 10/28baf598f689deb8b3d2840035789960b73715425dc5684964e8cffec99baedc456aa468887b1ca681cb57d54312b70b3d65f6a5ea1475ddfcd76bb1ffe6710e + languageName: node + linkType: hard + "@solana/codecs-core@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs-core@npm:2.0.0-rc.1" @@ -8721,6 +8818,17 @@ __metadata: languageName: node linkType: hard +"@solana/codecs-data-structures@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs-data-structures@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/codecs-numbers": "npm:2.0.0-preview.2" + "@solana/errors": "npm:2.0.0-preview.2" + checksum: 10/2d5fb280b7df155e11cab25639884cf9336641291854dbe2768420a27cca87f86e1ee0289b4339debe92183c27c0c70f95a1f2043601a9cea88f33995b7b3664 + languageName: node + linkType: hard + "@solana/codecs-data-structures@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs-data-structures@npm:2.0.0-rc.1" @@ -8747,6 +8855,16 @@ __metadata: languageName: node linkType: hard +"@solana/codecs-numbers@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs-numbers@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/errors": "npm:2.0.0-preview.2" + checksum: 10/e6caed4c2d43bc52191f5af15284787bbea2e3b3153f84be0443196f7e7d4c5c02b2a56d60c8f64335c9033d890877a122bdc8de40c0a856ed52c84f39263722 + languageName: node + linkType: hard + "@solana/codecs-numbers@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs-numbers@npm:2.0.0-rc.1" @@ -8771,6 +8889,19 @@ __metadata: languageName: node linkType: hard +"@solana/codecs-strings@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs-strings@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/codecs-numbers": "npm:2.0.0-preview.2" + "@solana/errors": "npm:2.0.0-preview.2" + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + checksum: 10/c9e1c54b2d987fe504c879bfa083effe9539a83cd5927bcbc7446cd34065c6c707d4a6ae67b99ed0d475c6dd87b5879d3df205565febb17c94d3862c586b1783 + languageName: node + linkType: hard + "@solana/codecs-strings@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs-strings@npm:2.0.0-rc.1" @@ -8799,6 +8930,19 @@ __metadata: languageName: node linkType: hard +"@solana/codecs@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/codecs@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/codecs-data-structures": "npm:2.0.0-preview.2" + "@solana/codecs-numbers": "npm:2.0.0-preview.2" + "@solana/codecs-strings": "npm:2.0.0-preview.2" + "@solana/options": "npm:2.0.0-preview.2" + checksum: 10/8ee2a6349c602b62f3505d8ecde3dac00a472792fa13485f9aafffc44522d5e212038e90b561ac543a83f0cd78e76c7fe958cc6e2abc1c6e1b56d4e2ce1311f4 + languageName: node + linkType: hard + "@solana/codecs@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/codecs@npm:2.0.0-rc.1" @@ -8829,6 +8973,18 @@ __metadata: languageName: node linkType: hard +"@solana/errors@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/errors@npm:2.0.0-preview.2" + dependencies: + chalk: "npm:^5.3.0" + commander: "npm:^12.0.0" + bin: + errors: bin/cli.js + checksum: 10/37d11270311397d7f652ee320d52e6987265e94c7fe3daa7f47e569e5411ad36cba60acd63e11b672416d3f119f1d7eeb6ffeb9f8a43caa889aaf0199113da55 + languageName: node + linkType: hard + "@solana/errors@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/errors@npm:2.0.0-rc.1" @@ -8929,6 +9085,16 @@ __metadata: languageName: node linkType: hard +"@solana/options@npm:2.0.0-preview.2": + version: 2.0.0-preview.2 + resolution: "@solana/options@npm:2.0.0-preview.2" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.2" + "@solana/codecs-numbers": "npm:2.0.0-preview.2" + checksum: 10/63572dc6a29a1a2fcb68d19a6afe3b49baa1c60af250088c4413f890d91024dbf7bd752b4bf2c75456d89deb70823c25cd41013470a9cb5da1999b1459644b53 + languageName: node + linkType: hard + "@solana/options@npm:2.0.0-rc.1": version: 2.0.0-rc.1 resolution: "@solana/options@npm:2.0.0-rc.1" @@ -9177,6 +9343,18 @@ __metadata: languageName: node linkType: hard +"@solana/spl-token-group@npm:^0.0.4": + version: 0.0.4 + resolution: "@solana/spl-token-group@npm:0.0.4" + dependencies: + "@solana/codecs": "npm:2.0.0-preview.2" + "@solana/spl-type-length-value": "npm:0.1.0" + peerDependencies: + "@solana/web3.js": ^1.91.6 + checksum: 10/72621ce6dc9c6eedae636058623e7cc77ef1c228ca4c128c382d3f0f9e09e56f4d4f7b873b1d43d659a3b70745aec93ce7d9e2f09c12154f0d7bc55c0e7b279f + languageName: node + linkType: hard + "@solana/spl-token-group@npm:^0.0.7": version: 0.0.7 resolution: "@solana/spl-token-group@npm:0.0.7" @@ -9199,6 +9377,21 @@ __metadata: languageName: node linkType: hard +"@solana/spl-token@npm:0.4.6": + version: 0.4.6 + resolution: "@solana/spl-token@npm:0.4.6" + dependencies: + "@solana/buffer-layout": "npm:^4.0.0" + "@solana/buffer-layout-utils": "npm:^0.2.0" + "@solana/spl-token-group": "npm:^0.0.4" + "@solana/spl-token-metadata": "npm:^0.1.4" + buffer: "npm:^6.0.3" + peerDependencies: + "@solana/web3.js": ^1.91.6 + checksum: 10/944f5a5b4401fd21e17358f33278bd03e978f229682810f40fcd783a3f71cb05841c051b91352ffec1da3e7d3070c0307639c6b2b42312f50fc8ecbe78a3460d + languageName: node + linkType: hard + "@solana/spl-token@npm:0.4.9, @solana/spl-token@npm:^0.4.8": version: 0.4.9 resolution: "@solana/spl-token@npm:0.4.9" @@ -9229,6 +9422,15 @@ __metadata: languageName: node linkType: hard +"@solana/spl-type-length-value@npm:0.1.0": + version: 0.1.0 + resolution: "@solana/spl-type-length-value@npm:0.1.0" + dependencies: + buffer: "npm:^6.0.3" + checksum: 10/00ca61fb03a7eafb90ba43803b8a1e3c3a8ff8558c452ce2e0d571468f0d205ceeb64640160f5474e15c63e31aa75d664f49324f777ad18b019292d50c8b083b + languageName: node + linkType: hard + "@solana/subscribable@npm:2.1.0": version: 2.1.0 resolution: "@solana/subscribable@npm:2.1.0" @@ -12613,6 +12815,23 @@ __metadata: languageName: node linkType: hard +"@web3-name-sdk/core@npm:^0.4.1": + version: 0.4.1 + resolution: "@web3-name-sdk/core@npm:0.4.1" + dependencies: + "@adraffy/ens-normalize": "npm:^1.10.0" + "@ensdomains/ens-validation": "npm:^0.1.0" + peerDependencies: + "@bonfida/spl-name-service": ^3.0.10 + "@sei-js/core": ^3.1.0 + "@siddomains/injective-sidjs": 0.0.2-beta + "@siddomains/sei-sidjs": ^0.0.4 + "@solana/web3.js": ^1.75.0 + viem: ^2.23.12 + checksum: 10/8f047f00fd007f9c4e980da6979c26f75c8927fc865d8381ba37435388289ebdf9612b71e8f1d562ae3e466305433b2fa01277cde9bf4f6894cce79141091f2f + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/ast@npm:1.12.1" @@ -13012,6 +13231,21 @@ __metadata: languageName: node linkType: hard +"abitype@npm:1.0.8, abitype@npm:^1.0.6": + version: 1.0.8 + resolution: "abitype@npm:1.0.8" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10/878e74fbac6a971953649b6216950437aa5834a604e9fa833a5b275a6967cff59857c7e43594ae906387d2fb7cad9370138dec4298eb8814815a3ffb6365902c + languageName: node + linkType: hard + "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" @@ -14291,6 +14525,13 @@ __metadata: languageName: node linkType: hard +"borsh@npm:2.0.0": + version: 2.0.0 + resolution: "borsh@npm:2.0.0" + checksum: 10/b8e80de36b33899d05c5155715ccf9beabb82087a8dfc18ccd7250971a63dfa03e51635ad255e65cf60baff9e6ed88dee2141ef69982bcf442d9e850b2da16a2 + languageName: node + linkType: hard + "borsh@npm:^0.7.0": version: 0.7.0 resolution: "borsh@npm:0.7.0" @@ -14527,6 +14768,15 @@ __metadata: languageName: node linkType: hard +"bs58@npm:5.0.0, bs58@npm:^5.0.0": + version: 5.0.0 + resolution: "bs58@npm:5.0.0" + dependencies: + base-x: "npm:^4.0.0" + checksum: 10/2475cb0684e07077521aac718e604a13e0f891d58cff923d437a2f7e9e28703ab39fce9f84c7c703ab369815a675f11e3bd394d38643bfe8969fbe42e6833d45 + languageName: node + linkType: hard + "bs58@npm:^4.0.0, bs58@npm:^4.0.1": version: 4.0.1 resolution: "bs58@npm:4.0.1" @@ -14536,15 +14786,6 @@ __metadata: languageName: node linkType: hard -"bs58@npm:^5.0.0": - version: 5.0.0 - resolution: "bs58@npm:5.0.0" - dependencies: - base-x: "npm:^4.0.0" - checksum: 10/2475cb0684e07077521aac718e604a13e0f891d58cff923d437a2f7e9e28703ab39fce9f84c7c703ab369815a675f11e3bd394d38643bfe8969fbe42e6833d45 - languageName: node - linkType: hard - "bs58check@npm:2.1.2, bs58check@npm:<3.0.0, bs58check@npm:^2.0.0, bs58check@npm:^2.1.1, bs58check@npm:^2.1.2": version: 2.1.2 resolution: "bs58check@npm:2.1.2" @@ -15519,7 +15760,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^12.1.0": +"commander@npm:^12.0.0, commander@npm:^12.1.0": version: 12.1.0 resolution: "commander@npm:12.1.0" checksum: 10/cdaeb672d979816853a4eed7f1310a9319e8b976172485c2a6b437ed0db0a389a44cfb222bfbde772781efa9f215bdd1b936f80d6b249485b465c6cb906e1f93 @@ -19770,6 +20011,16 @@ __metadata: languageName: node linkType: hard +"graphemesplit@npm:^2.4.4": + version: 2.6.0 + resolution: "graphemesplit@npm:2.6.0" + dependencies: + js-base64: "npm:^3.6.0" + unicode-trie: "npm:^2.0.0" + checksum: 10/0ccc12a921a99afb673112d7e21486015296e058b9cf92261a0b72e8bfaf6fcb0220760e62acb9f3f44ba1e0ff6181c0c3ef0c6749035b20334e941aa2d9c578 + languageName: node + linkType: hard + "graphql-tag@npm:^2.12.6": version: 2.12.6 resolution: "graphql-tag@npm:2.12.6" @@ -20657,7 +20908,7 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:^2.0.1": +"ipaddr.js@npm:^2.0.1, ipaddr.js@npm:^2.2.0": version: 2.2.0 resolution: "ipaddr.js@npm:2.2.0" checksum: 10/9e1cdd9110b3bca5d910ab70d7fb1933e9c485d9b92cb14ef39f30c412ba3fe02a553921bf696efc7149cc653453c48ccf173adb996ec27d925f1f340f872986 @@ -21279,6 +21530,15 @@ __metadata: languageName: node linkType: hard +"isows@npm:1.0.6": + version: 1.0.6 + resolution: "isows@npm:1.0.6" + peerDependencies: + ws: "*" + checksum: 10/ab9e85b50bcc3d70aa5ec875aa2746c5daf9321cb376ed4e5434d3c2643c5d62b1f466d93a05cd2ad0ead5297224922748c31707cb4fbd68f5d05d0479dce99c + languageName: node + linkType: hard + "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -21470,7 +21730,7 @@ __metadata: languageName: node linkType: hard -"js-base64@npm:^3.7.2, js-base64@npm:^3.7.4, js-base64@npm:^3.7.7": +"js-base64@npm:^3.6.0, js-base64@npm:^3.7.2, js-base64@npm:^3.7.4, js-base64@npm:^3.7.7": version: 3.7.7 resolution: "js-base64@npm:3.7.7" checksum: 10/185e34c536a6b1c4e1ad8bd96d25b49a9ea4e6803e259eaaaca95f1b392a0d590b2933c5ca8580c776f7279507944b81ff1faf889d84baa5e31f026e96d676a5 @@ -24422,6 +24682,26 @@ __metadata: languageName: node linkType: hard +"ox@npm:0.6.9": + version: 0.6.9 + resolution: "ox@npm:0.6.9" + dependencies: + "@adraffy/ens-normalize": "npm:^1.10.1" + "@noble/curves": "npm:^1.6.0" + "@noble/hashes": "npm:^1.5.0" + "@scure/bip32": "npm:^1.5.0" + "@scure/bip39": "npm:^1.4.0" + abitype: "npm:^1.0.6" + eventemitter3: "npm:5.0.1" + peerDependencies: + typescript: ">=5.4.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/11ad9076b594dd424cd89d9763d4701e59e7ffc0733973947c82a14255a00a53483712e62fa9bbacd39efd35c6739bddb7728ef2211b47530f22036ab77cde69 + languageName: node + linkType: hard + "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -24568,6 +24848,13 @@ __metadata: languageName: node linkType: hard +"pako@npm:^0.2.5": + version: 0.2.9 + resolution: "pako@npm:0.2.9" + checksum: 10/627c6842e90af0b3a9ee47345bd66485a589aff9514266f4fa9318557ad819c46fedf97510f2cef9b6224c57913777966a05cb46caf6a9b31177a5401a06fe15 + languageName: node + linkType: hard + "pako@npm:^2.0.3, pako@npm:^2.0.4": version: 2.1.0 resolution: "pako@npm:2.1.0" @@ -28822,6 +29109,13 @@ __metadata: languageName: node linkType: hard +"tiny-inflate@npm:^1.0.0": + version: 1.0.3 + resolution: "tiny-inflate@npm:1.0.3" + checksum: 10/f620114fb51ea4a16ea7b4c62d6dd753f8faf41808a133c53d431ed4bf2ca377b21443653a0096894f2be22ca11bb327f148e7e5431f9246068917724ec01ffc + languageName: node + linkType: hard + "tiny-secp256k1@npm:1.1.6": version: 1.1.6 resolution: "tiny-secp256k1@npm:1.1.6" @@ -29848,6 +30142,16 @@ __metadata: languageName: node linkType: hard +"unicode-trie@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-trie@npm:2.0.0" + dependencies: + pako: "npm:^0.2.5" + tiny-inflate: "npm:^1.0.0" + checksum: 10/60404411dbd363bdcca9e81c9327fa80469f2e685737bac88ec693225ff20b9b545ac37ca2da13ec02f1552167dd010dfefd7c58b72a73d44a89fab1ca9c2479 + languageName: node + linkType: hard + "unicorn-magic@npm:^0.1.0": version: 0.1.0 resolution: "unicorn-magic@npm:0.1.0" @@ -30309,6 +30613,27 @@ __metadata: languageName: node linkType: hard +"viem@npm:^2.23.12": + version: 2.29.1 + resolution: "viem@npm:2.29.1" + dependencies: + "@noble/curves": "npm:1.8.2" + "@noble/hashes": "npm:1.7.2" + "@scure/bip32": "npm:1.6.2" + "@scure/bip39": "npm:1.5.4" + abitype: "npm:1.0.8" + isows: "npm:1.0.6" + ox: "npm:0.6.9" + ws: "npm:8.18.1" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/2ca6f9148bb309c3f3aae4856a2020103237c2e979010d4f040730e1e6724355395eb22542e8c6608107fe3d4b819f9fc1eb604ea1647ecde2b34ceac6fc5fd1 + languageName: node + linkType: hard + "vite-node@npm:3.1.1": version: 3.1.1 resolution: "vite-node@npm:3.1.1" @@ -31850,6 +32175,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:8.18.1, ws@npm:^8.18.1": + version: 8.18.1 + resolution: "ws@npm:8.18.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10/3f38e9594f2af5b6324138e86b74df7d77bbb8e310bf8188679dd80bac0d1f47e51536a1923ac3365f31f3d8b25ea0b03e4ade466aa8292a86cd5defca64b19b + languageName: node + linkType: hard + "ws@npm:^3.0.0": version: 3.3.3 resolution: "ws@npm:3.3.3" @@ -31876,21 +32216,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.1": - version: 8.18.1 - resolution: "ws@npm:8.18.1" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10/3f38e9594f2af5b6324138e86b74df7d77bbb8e310bf8188679dd80bac0d1f47e51536a1923ac3365f31f3d8b25ea0b03e4ade466aa8292a86cd5defca64b19b - languageName: node - linkType: hard - "xhr-request-promise@npm:^0.1.2": version: 0.1.3 resolution: "xhr-request-promise@npm:0.1.3" From 3ce9397495f9f497723239e28d44d207c4920d94 Mon Sep 17 00:00:00 2001 From: candy Date: Tue, 13 May 2025 10:28:20 +0800 Subject: [PATCH 02/34] feat: code review --- packages/extension/package.json | 1 - packages/extension/src/libs/name-resolver/index.ts | 2 +- .../src/providers/kadena/ui/send-transaction/index.vue | 6 +----- .../src/providers/polkadot/ui/send-transaction/index.vue | 6 +----- packages/name-resolution/package.json | 3 ++- packages/name-resolution/tsconfig.json | 4 ++-- 6 files changed, 7 insertions(+), 15 deletions(-) diff --git a/packages/extension/package.json b/packages/extension/package.json index 1efb82787..b883b71b7 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -79,7 +79,6 @@ "switch-ts": "^1.1.1", "url-parse": "^1.5.10", "uuid": "^11.1.0", - "viem": "^2.23.12", "vue": "^3.5.13", "vue-echarts": "7.0.3", "vue-router": "^4.5.0", diff --git a/packages/extension/src/libs/name-resolver/index.ts b/packages/extension/src/libs/name-resolver/index.ts index b279c412d..fd3656efd 100644 --- a/packages/extension/src/libs/name-resolver/index.ts +++ b/packages/extension/src/libs/name-resolver/index.ts @@ -18,7 +18,7 @@ class GenericNameResolver { let response: string | null = null; for (const coin of coins) { response = await this.nameResolver - .resolveAddress(name, coin) + .resolveAddress(name, coin, providerChain) .catch(() => null); if (response) return response; } diff --git a/packages/extension/src/providers/kadena/ui/send-transaction/index.vue b/packages/extension/src/providers/kadena/ui/send-transaction/index.vue index f17bb2d1e..90a5c1aee 100644 --- a/packages/extension/src/providers/kadena/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/kadena/ui/send-transaction/index.vue @@ -399,11 +399,7 @@ const inputAddressFrom = (text: string) => { const inputAddressTo = (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName( - text, - [props.network.name as CoinType], - props.network?.provider as string, - ) + .resolveName(text, [props.network.name as CoinType]) .then(resolved => { if (resolved) { addressTo.value = resolved; diff --git a/packages/extension/src/providers/polkadot/ui/send-transaction/index.vue b/packages/extension/src/providers/polkadot/ui/send-transaction/index.vue index 98370f254..2b1ec61fc 100644 --- a/packages/extension/src/providers/polkadot/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/polkadot/ui/send-transaction/index.vue @@ -378,11 +378,7 @@ const inputAddressFrom = (text: string) => { const inputAddressTo = (text: string) => { const debounceResolve = debounce(() => { nameResolver - .resolveName( - text, - [props.network.name as CoinType, 'DOT', 'KSM'], - props.network?.provider as string, - ) + .resolveName(text, [props.network.name as CoinType, 'DOT', 'KSM']) .then(resolved => { if (resolved) { addressTo.value = resolved; diff --git a/packages/name-resolution/package.json b/packages/name-resolution/package.json index be0be4726..b207a8047 100644 --- a/packages/name-resolution/package.json +++ b/packages/name-resolution/package.json @@ -52,6 +52,7 @@ "@solana/web3.js": "^1.98.0", "@unstoppabledomains/resolution": "^9.3.3", "@web3-name-sdk/core": "^0.4.1", - "ethers": "^5.8.0" + "ethers": "^5.8.0", + "viem": "^2.23.12" } } diff --git a/packages/name-resolution/tsconfig.json b/packages/name-resolution/tsconfig.json index d77afeb0b..f32c11b10 100644 --- a/packages/name-resolution/tsconfig.json +++ b/packages/name-resolution/tsconfig.json @@ -2,13 +2,13 @@ "extends": "./tsconfig.paths.json", "compilerOptions": { "lib": ["ESNext", "dom"], - "moduleResolution": "bundler", + "moduleResolution": "node", "noUnusedLocals": true, "noUnusedParameters": true, "removeComments": true, "sourceMap": true, "target": "es5", - "module": "es2020", + "module": "commonjs", "outDir": "dist", "resolveJsonModule": true, "esModuleInterop": true, From 34c9791417afc9f96976d3a061ca2e792767037e Mon Sep 17 00:00:00 2001 From: candy Date: Tue, 13 May 2025 10:38:53 +0800 Subject: [PATCH 03/34] feat: code review --- packages/name-resolution/src/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/name-resolution/src/types.ts b/packages/name-resolution/src/types.ts index b2aa884ba..c60dfa811 100644 --- a/packages/name-resolution/src/types.ts +++ b/packages/name-resolution/src/types.ts @@ -152,7 +152,7 @@ export abstract class BaseResolver { public abstract resolveReverseName(address: string): Promise; - public abstract isSupportedName(name: string, paymentIdChain?:PaymentIdChain): boolean; + public abstract isSupportedName(name: string): boolean; } export interface NameResolverOptions { From 660649626b7500eccb27f145245368f26c97a0d8 Mon Sep 17 00:00:00 2001 From: candy Date: Tue, 13 May 2025 12:58:44 +0800 Subject: [PATCH 04/34] feat: fix yarn build --- packages/name-resolution/package.json | 3 +- packages/name-resolution/src/types.ts | 2 +- yarn.lock | 174 ++++++-------------------- 3 files changed, 37 insertions(+), 142 deletions(-) diff --git a/packages/name-resolution/package.json b/packages/name-resolution/package.json index b207a8047..be0be4726 100644 --- a/packages/name-resolution/package.json +++ b/packages/name-resolution/package.json @@ -52,7 +52,6 @@ "@solana/web3.js": "^1.98.0", "@unstoppabledomains/resolution": "^9.3.3", "@web3-name-sdk/core": "^0.4.1", - "ethers": "^5.8.0", - "viem": "^2.23.12" + "ethers": "^5.8.0" } } diff --git a/packages/name-resolution/src/types.ts b/packages/name-resolution/src/types.ts index c60dfa811..3ecb1c2ed 100644 --- a/packages/name-resolution/src/types.ts +++ b/packages/name-resolution/src/types.ts @@ -1,5 +1,5 @@ import { ENSOptions } from "./ens/types"; -import { PaymentIdChain, SIDOptions } from "./sid/types"; +import { SIDOptions } from "./sid/types"; export type CoinType = | "BTC" diff --git a/yarn.lock b/yarn.lock index 0393ce210..9d88158d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,7 +23,7 @@ __metadata: languageName: node linkType: hard -"@adraffy/ens-normalize@npm:^1.10.0, @adraffy/ens-normalize@npm:^1.10.1": +"@adraffy/ens-normalize@npm:^1.10.0": version: 1.11.0 resolution: "@adraffy/ens-normalize@npm:1.11.0" checksum: 10/abef75f21470ea43dd6071168e092d2d13e38067e349e76186c78838ae174a46c3e18ca50921d05bea6ec3203074147c9e271f8cb6531d1c2c0e146f3199ddcb @@ -1668,7 +1668,6 @@ __metadata: url: "npm:^0.11.4" url-parse: "npm:^1.5.10" uuid: "npm:^11.1.0" - viem: "npm:^2.23.12" vite: "npm:^6.3.1" vite-plugin-node-polyfills: "npm:0.23.0" vite-tsconfig-paths: "npm:^5.1.4" @@ -1789,7 +1788,6 @@ __metadata: tsup: "npm:^8.4.0" typescript: "npm:^5.8.3" typescript-eslint: "npm:8.30.1" - viem: "npm:^2.23.12" vitest: "npm:^3.1.1" languageName: unknown linkType: soft @@ -6462,15 +6460,6 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:1.8.2, @noble/curves@npm:~1.8.1": - version: 1.8.2 - resolution: "@noble/curves@npm:1.8.2" - dependencies: - "@noble/hashes": "npm:1.7.2" - checksum: 10/540e7b7a8fe92ecd5cef846f84d07180662eb7fd7d8e9172b8960c31827e74f148fe4630da962138a6be093ae9f8992d14ab23d3682a2cc32be839aa57c03a46 - languageName: node - linkType: hard - "@noble/curves@npm:^1.0.0, @noble/curves@npm:^1.1.0, @noble/curves@npm:^1.2.0, @noble/curves@npm:^1.3.0, @noble/curves@npm:^1.4.0, @noble/curves@npm:^1.4.2, @noble/curves@npm:~1.6.0": version: 1.6.0 resolution: "@noble/curves@npm:1.6.0" @@ -6480,12 +6469,12 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:^1.6.0, @noble/curves@npm:~1.9.0": - version: 1.9.0 - resolution: "@noble/curves@npm:1.9.0" +"@noble/curves@npm:~1.8.1": + version: 1.8.2 + resolution: "@noble/curves@npm:1.8.2" dependencies: - "@noble/hashes": "npm:1.8.0" - checksum: 10/f2c5946310722fee23e04ed747f21ce72e0436e38e1fa620d226a8c613262e7d0dbab5341f14caf92936089d01d9e9231964c409cd1ac2a73a075f3cdb1acc41 + "@noble/hashes": "npm:1.7.2" + checksum: 10/540e7b7a8fe92ecd5cef846f84d07180662eb7fd7d8e9172b8960c31827e74f148fe4630da962138a6be093ae9f8992d14ab23d3682a2cc32be839aa57c03a46 languageName: node linkType: hard @@ -6566,13 +6555,6 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:~1.8.0": - version: 1.8.0 - resolution: "@noble/hashes@npm:1.8.0" - checksum: 10/474b7f56bc6fb2d5b3a42132561e221b0ea4f91e590f4655312ca13667840896b34195e2b53b7f097ec080a1fdd3b58d902c2a8d0fbdf51d2e238b53808a177e - languageName: node - linkType: hard - "@noble/hashes@npm:^1.6.1, @noble/hashes@npm:~1.7.1": version: 1.7.1 resolution: "@noble/hashes@npm:1.7.1" @@ -8434,7 +8416,7 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:^1.1.6, @scure/base@npm:~1.2.5": +"@scure/base@npm:^1.1.6": version: 1.2.5 resolution: "@scure/base@npm:1.2.5" checksum: 10/9a963a27424a373b62760c9ae7099ae496be67eb5b31205639f529f0dbcb2228a827222a36d22842cc2acda78e300a3430d46d84de5d8d4b791208955360853e @@ -8470,17 +8452,6 @@ __metadata: languageName: node linkType: hard -"@scure/bip32@npm:1.6.2, @scure/bip32@npm:^1.3.1": - version: 1.6.2 - resolution: "@scure/bip32@npm:1.6.2" - dependencies: - "@noble/curves": "npm:~1.8.1" - "@noble/hashes": "npm:~1.7.1" - "@scure/base": "npm:~1.2.2" - checksum: 10/474ee315a8631aa1a7d378b0521b4494e09a231519ec53d879088cb88c8ff644a89b27a02a8bf0b5a9b1c4c0417acc70636ccdb121b800c34594ae53c723f8d7 - languageName: node - linkType: hard - "@scure/bip32@npm:^1.1.5, @scure/bip32@npm:^1.4.0": version: 1.5.0 resolution: "@scure/bip32@npm:1.5.0" @@ -8492,14 +8463,14 @@ __metadata: languageName: node linkType: hard -"@scure/bip32@npm:^1.5.0": - version: 1.7.0 - resolution: "@scure/bip32@npm:1.7.0" +"@scure/bip32@npm:^1.3.1": + version: 1.6.2 + resolution: "@scure/bip32@npm:1.6.2" dependencies: - "@noble/curves": "npm:~1.9.0" - "@noble/hashes": "npm:~1.8.0" - "@scure/base": "npm:~1.2.5" - checksum: 10/f90e0c23ab6a31a164856ae9cb9a8cae2886df608c74a6c0c4875095b017e30ffd92f28f73b8c52890d9a89fca86d19f6d60bb1ea7cad64c7987f92ae83509ad + "@noble/curves": "npm:~1.8.1" + "@noble/hashes": "npm:~1.7.1" + "@scure/base": "npm:~1.2.2" + checksum: 10/474ee315a8631aa1a7d378b0521b4494e09a231519ec53d879088cb88c8ff644a89b27a02a8bf0b5a9b1c4c0417acc70636ccdb121b800c34594ae53c723f8d7 languageName: node linkType: hard @@ -8523,16 +8494,6 @@ __metadata: languageName: node linkType: hard -"@scure/bip39@npm:1.5.4, @scure/bip39@npm:^1.2.1, @scure/bip39@npm:^1.5.1": - version: 1.5.4 - resolution: "@scure/bip39@npm:1.5.4" - dependencies: - "@noble/hashes": "npm:~1.7.1" - "@scure/base": "npm:~1.2.4" - checksum: 10/9f08b433511d7637bc48c51aa411457d5f33da5a85bd03370bf394822b0ea8c007ceb17247a3790c28237303d8fc20c4e7725765940cd47e1365a88319ad0d5c - languageName: node - linkType: hard - "@scure/bip39@npm:^1.2.0, @scure/bip39@npm:^1.3.0": version: 1.4.0 resolution: "@scure/bip39@npm:1.4.0" @@ -8543,13 +8504,13 @@ __metadata: languageName: node linkType: hard -"@scure/bip39@npm:^1.4.0": - version: 1.6.0 - resolution: "@scure/bip39@npm:1.6.0" +"@scure/bip39@npm:^1.2.1, @scure/bip39@npm:^1.5.1": + version: 1.5.4 + resolution: "@scure/bip39@npm:1.5.4" dependencies: - "@noble/hashes": "npm:~1.8.0" - "@scure/base": "npm:~1.2.5" - checksum: 10/63e60c40fa1bda2c1b50351546fee6d7b0947cc814aa7a4209dcedd3693b5053302c8fca28292f5f50735e11c613265359acdc019127393dbab17e53489fc449 + "@noble/hashes": "npm:~1.7.1" + "@scure/base": "npm:~1.2.4" + checksum: 10/9f08b433511d7637bc48c51aa411457d5f33da5a85bd03370bf394822b0ea8c007ceb17247a3790c28237303d8fc20c4e7725765940cd47e1365a88319ad0d5c languageName: node linkType: hard @@ -13231,21 +13192,6 @@ __metadata: languageName: node linkType: hard -"abitype@npm:1.0.8, abitype@npm:^1.0.6": - version: 1.0.8 - resolution: "abitype@npm:1.0.8" - peerDependencies: - typescript: ">=5.0.4" - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - checksum: 10/878e74fbac6a971953649b6216950437aa5834a604e9fa833a5b275a6967cff59857c7e43594ae906387d2fb7cad9370138dec4298eb8814815a3ffb6365902c - languageName: node - linkType: hard - "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" @@ -21530,15 +21476,6 @@ __metadata: languageName: node linkType: hard -"isows@npm:1.0.6": - version: 1.0.6 - resolution: "isows@npm:1.0.6" - peerDependencies: - ws: "*" - checksum: 10/ab9e85b50bcc3d70aa5ec875aa2746c5daf9321cb376ed4e5434d3c2643c5d62b1f466d93a05cd2ad0ead5297224922748c31707cb4fbd68f5d05d0479dce99c - languageName: node - linkType: hard - "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -24682,26 +24619,6 @@ __metadata: languageName: node linkType: hard -"ox@npm:0.6.9": - version: 0.6.9 - resolution: "ox@npm:0.6.9" - dependencies: - "@adraffy/ens-normalize": "npm:^1.10.1" - "@noble/curves": "npm:^1.6.0" - "@noble/hashes": "npm:^1.5.0" - "@scure/bip32": "npm:^1.5.0" - "@scure/bip39": "npm:^1.4.0" - abitype: "npm:^1.0.6" - eventemitter3: "npm:5.0.1" - peerDependencies: - typescript: ">=5.4.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/11ad9076b594dd424cd89d9763d4701e59e7ffc0733973947c82a14255a00a53483712e62fa9bbacd39efd35c6739bddb7728ef2211b47530f22036ab77cde69 - languageName: node - linkType: hard - "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -30613,27 +30530,6 @@ __metadata: languageName: node linkType: hard -"viem@npm:^2.23.12": - version: 2.29.1 - resolution: "viem@npm:2.29.1" - dependencies: - "@noble/curves": "npm:1.8.2" - "@noble/hashes": "npm:1.7.2" - "@scure/bip32": "npm:1.6.2" - "@scure/bip39": "npm:1.5.4" - abitype: "npm:1.0.8" - isows: "npm:1.0.6" - ox: "npm:0.6.9" - ws: "npm:8.18.1" - peerDependencies: - typescript: ">=5.0.4" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/2ca6f9148bb309c3f3aae4856a2020103237c2e979010d4f040730e1e6724355395eb22542e8c6608107fe3d4b819f9fc1eb604ea1647ecde2b34ceac6fc5fd1 - languageName: node - linkType: hard - "vite-node@npm:3.1.1": version: 3.1.1 resolution: "vite-node@npm:3.1.1" @@ -32175,21 +32071,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.18.1, ws@npm:^8.18.1": - version: 8.18.1 - resolution: "ws@npm:8.18.1" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10/3f38e9594f2af5b6324138e86b74df7d77bbb8e310bf8188679dd80bac0d1f47e51536a1923ac3365f31f3d8b25ea0b03e4ade466aa8292a86cd5defca64b19b - languageName: node - linkType: hard - "ws@npm:^3.0.0": version: 3.3.3 resolution: "ws@npm:3.3.3" @@ -32216,6 +32097,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^8.18.1": + version: 8.18.1 + resolution: "ws@npm:8.18.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10/3f38e9594f2af5b6324138e86b74df7d77bbb8e310bf8188679dd80bac0d1f47e51536a1923ac3365f31f3d8b25ea0b03e4ade466aa8292a86cd5defca64b19b + languageName: node + linkType: hard + "xhr-request-promise@npm:^0.1.2": version: 0.1.3 resolution: "xhr-request-promise@npm:0.1.3" From eb9b0059320e38313c14b595992a55d431fb5683 Mon Sep 17 00:00:00 2001 From: kvhnuke <10602065+kvhnuke@users.noreply.github.com> Date: Wed, 14 May 2025 11:39:32 -0700 Subject: [PATCH 05/34] devop: make necessary changes --- packages/extension/package.json | 1 - .../send-transaction/send-contacts-list.vue | 4 +- .../ethereum/ui/send-transaction/index.vue | 2 +- .../solana/ui/send-transaction/index.vue | 3 +- .../src/ui/action/views/swap/index.vue | 4 +- packages/name-resolution/package.json | 3 +- packages/name-resolution/src/index.ts | 7 +- packages/name-resolution/src/sid/index.ts | 15 +- packages/name-resolution/tests/sid.test.ts | 18 +- packages/name-resolution/tsconfig.json | 9 +- yarn.lock | 176 ++++++++++++++---- 11 files changed, 179 insertions(+), 63 deletions(-) diff --git a/packages/extension/package.json b/packages/extension/package.json index b883b71b7..a2a952328 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -24,7 +24,6 @@ }, "dependencies": { "@amplitude/analytics-browser": "^2.14.0", - "@bonfida/spl-name-service": "^3.0.10", "@enkryptcom/extension-bridge": "workspace:^", "@enkryptcom/hw-wallets": "workspace:^", "@enkryptcom/keyring": "workspace:^", diff --git a/packages/extension/src/providers/common/ui/send-transaction/send-contacts-list.vue b/packages/extension/src/providers/common/ui/send-transaction/send-contacts-list.vue index 7800a0c69..fd2fae412 100644 --- a/packages/extension/src/providers/common/ui/send-transaction/send-contacts-list.vue +++ b/packages/extension/src/providers/common/ui/send-transaction/send-contacts-list.vue @@ -125,7 +125,9 @@ const isChecked = (address: string) => { props.network.displayAddress(address) ); } catch (err) { - console.error('Error checking if address is checked', err); + console.error( + 'Error checking if address is checked, probably name resolver', + ); return false; } }; diff --git a/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue b/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue index b89963f5d..e8ca5a9d7 100644 --- a/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue @@ -671,7 +671,7 @@ const inputAddressTo = async (text: string) => { .resolveName( text, [props.network.name as CoinType, 'ETH'], - props.network?.provider as string, + props.network.provider as string, ) .then(resolved => { if (resolved) { diff --git a/packages/extension/src/providers/solana/ui/send-transaction/index.vue b/packages/extension/src/providers/solana/ui/send-transaction/index.vue index 665ec427f..4fc6ab6d0 100644 --- a/packages/extension/src/providers/solana/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/solana/ui/send-transaction/index.vue @@ -138,7 +138,6 @@ import { fromBase, toBase, isValidDecimals } from '@enkryptcom/utils'; import { VerifyTransactionParams, SendTransactionDataType } from '../types'; import { formatFloatingPointValue, - formatFiatValue, isNumericPositive, } from '@/libs/utils/number-formatter'; import { routes as RouterNames } from '@/ui/action/router'; @@ -697,7 +696,7 @@ const inputAddressTo = async (text: string) => { .resolveName( text, [props.network.name as CoinType, 'ETH'], - props.network?.provider as string, + props.network.provider as string, ) .then(resolved => { if (resolved) { diff --git a/packages/extension/src/ui/action/views/swap/index.vue b/packages/extension/src/ui/action/views/swap/index.vue index eb1e37516..a0ea1c8f3 100644 --- a/packages/extension/src/ui/action/views/swap/index.vue +++ b/packages/extension/src/ui/action/views/swap/index.vue @@ -407,7 +407,7 @@ const inputAddress = (text: string) => { .resolveName( text, [props.network.name as CoinType, 'ETH'], - props.network?.provider as string, + props.network.provider as string, ) .then(resolved => { if (resolved) { @@ -777,7 +777,7 @@ const isDisabled = computed(() => { return true; if ( BigNumber(fromAmount.value).gt( - fromBase(fromToken.value!.balance.toString(), fromToken.value.decimals), + fromBase(fromToken.value!.balance!.toString(), fromToken.value!.decimals), ) ) return true; diff --git a/packages/name-resolution/package.json b/packages/name-resolution/package.json index be0be4726..74649284e 100644 --- a/packages/name-resolution/package.json +++ b/packages/name-resolution/package.json @@ -22,6 +22,7 @@ "node": ">=14.15.0" }, "devDependencies": { + "@bonfida/spl-name-service": "^3.0.10", "@types/node": "^22.14.1", "@typescript-eslint/eslint-plugin": "^8.30.1", "@typescript-eslint/parser": "^8.30.1", @@ -37,6 +38,7 @@ "tsup": "^8.4.0", "typescript": "^5.8.3", "typescript-eslint": "8.30.1", + "viem": "^2.29.2", "vitest": "^3.1.1" }, "repository": { @@ -49,7 +51,6 @@ "dependencies": { "@ensdomains/address-encoder": "^1.1.2", "@siddomains/sidjs": "0.1.29", - "@solana/web3.js": "^1.98.0", "@unstoppabledomains/resolution": "^9.3.3", "@web3-name-sdk/core": "^0.4.1", "ethers": "^5.8.0" diff --git a/packages/name-resolution/src/index.ts b/packages/name-resolution/src/index.ts index dfb1de661..5f518eada 100644 --- a/packages/name-resolution/src/index.ts +++ b/packages/name-resolution/src/index.ts @@ -41,21 +41,22 @@ class NameResolver { if (name !== null) return name; } return null; - }) + }), ); } public async resolveAddress( name: string, coin: CoinType = "ETH", - paymentIdChain?: string + paymentIdChain?: string, ): Promise { return this.initDone.then(() => { - if (this.sid.isSupportedName(name)) return this.sid.resolveAddress(name, coin, paymentIdChain); if (this.rns.isSupportedName(name)) return this.rns.resolveAddress(name, coin); if (this.ud.isSupportedName(name)) return this.ud.resolveAddress(name, coin); + if (this.sid.isSupportedName(name)) + return this.sid.resolveAddress(name, coin, paymentIdChain); if (this.ens.isSupportedName(name)) return this.ens.resolveAddress(name, coin); diff --git a/packages/name-resolution/src/sid/index.ts b/packages/name-resolution/src/sid/index.ts index 8c4fd5fba..356334566 100644 --- a/packages/name-resolution/src/sid/index.ts +++ b/packages/name-resolution/src/sid/index.ts @@ -1,18 +1,23 @@ import { createWeb3Name } from "@web3-name-sdk/core"; import { BaseResolver, CoinType } from "../types"; -import { PAYMENT_ID_CHAINS_MAP, PaymentIdChain, SIDOptions, TIMEOUT_PRESETS } from "./types"; +import { + PAYMENT_ID_CHAINS_MAP, + PaymentIdChain, + SIDOptions, + TIMEOUT_PRESETS, +} from "./types"; import { createSolName } from "@web3-name-sdk/core/solName"; import { createPaymentIdName } from "@web3-name-sdk/core/paymentIdName"; import { isValidPaymentId } from "./utils"; import { getTLD } from "../utils"; // demo: https://sdk-demo-git-main-space-id.vercel.app/ + const evm_tlds = [ "bnb", "arb", "wod", "mph", "g", - "eth", "btc", "burger", "alien", @@ -57,11 +62,13 @@ class SIDResolver implements BaseResolver { // The PaymentId only supports getAddress resolution. public async handlePaymentIdGetAddress( name: string, - paymentIdChain?: string + paymentIdChain?: string, ): Promise { return await this.paymentIdNameResolver.getAddress({ name, - chainId: PAYMENT_ID_CHAINS_MAP[paymentIdChain?.toLowerCase()] || PaymentIdChain.Ethereum, + chainId: + PAYMENT_ID_CHAINS_MAP[paymentIdChain?.toLowerCase()] || + PaymentIdChain.Ethereum, }); } diff --git a/packages/name-resolution/tests/sid.test.ts b/packages/name-resolution/tests/sid.test.ts index f87825e7e..f7fbed242 100644 --- a/packages/name-resolution/tests/sid.test.ts +++ b/packages/name-resolution/tests/sid.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from "vitest" +import { describe, it, expect } from "vitest"; import SIDResolver from "../src/sid"; describe("SID Name resolving", () => { @@ -11,7 +11,11 @@ describe("SID Name resolving", () => { }, }); await resolver.init(); - const address = await resolver.resolveAddress("spaceid.arb"); + const address = await resolver.resolveAddress( + "spaceid.arb", + "ETH", + "ethereum", + ); expect(address).to.be.eq("0xb5932a6B7d50A966AEC6C74C97385412Fb497540"); }); @@ -24,7 +28,7 @@ describe("SID Name resolving", () => { }); await resolver.init(); const name = await resolver.resolveReverseName( - "0x1e3157ead0f498d814495d228f6ea4f041a3dc40" + "0x1e3157ead0f498d814495d228f6ea4f041a3dc40", ); expect(name).to.be.eq("melissaa.bnb"); }); @@ -38,10 +42,14 @@ describe("SID Name resolving", () => { }); await resolver.init(); const name = await resolver.resolveReverseName( - "0xe5dc07bdcdb8c98850050c7f67de7e164b1ea392" + "0xe5dc07bdcdb8c98850050c7f67de7e164b1ea392", ); expect(name).to.be.eq(null); - const address = await resolver.resolveAddress("sdfsfsdfsdfsdf.bnb"); + const address = await resolver.resolveAddress( + "sdfsfsdfsdfsdf.bnb", + "ETH", + "ethereum", + ); expect(address).to.be.eq(null); }); }); diff --git a/packages/name-resolution/tsconfig.json b/packages/name-resolution/tsconfig.json index f32c11b10..e4512a10f 100644 --- a/packages/name-resolution/tsconfig.json +++ b/packages/name-resolution/tsconfig.json @@ -2,20 +2,17 @@ "extends": "./tsconfig.paths.json", "compilerOptions": { "lib": ["ESNext", "dom"], - "moduleResolution": "node", + "moduleResolution": "bundler", "noUnusedLocals": true, "noUnusedParameters": true, "removeComments": true, "sourceMap": true, "target": "es5", - "module": "commonjs", + "module": "ES2015", "outDir": "dist", "resolveJsonModule": true, "esModuleInterop": true, - "declaration": true, - "paths": { - "@web3-name-sdk/core/*": ["node_modules/@web3-name-sdk/core/dist/*"] - }, + "declaration": true }, "include": ["src/**/*.ts", "tests/**/*.ts"], "exclude": [ diff --git a/yarn.lock b/yarn.lock index 9d88158d1..f9a0c3584 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,7 +23,7 @@ __metadata: languageName: node linkType: hard -"@adraffy/ens-normalize@npm:^1.10.0": +"@adraffy/ens-normalize@npm:^1.10.0, @adraffy/ens-normalize@npm:^1.10.1": version: 1.11.0 resolution: "@adraffy/ens-normalize@npm:1.11.0" checksum: 10/abef75f21470ea43dd6071168e092d2d13e38067e349e76186c78838ae174a46c3e18ca50921d05bea6ec3203074147c9e271f8cb6531d1c2c0e146f3199ddcb @@ -1569,7 +1569,6 @@ __metadata: resolution: "@enkryptcom/extension@workspace:packages/extension" dependencies: "@amplitude/analytics-browser": "npm:^2.14.0" - "@bonfida/spl-name-service": "npm:^3.0.10" "@crxjs/vite-plugin": "npm:^2.0.0-beta.32" "@enkryptcom/extension-bridge": "workspace:^" "@enkryptcom/hw-wallets": "workspace:^" @@ -1767,9 +1766,9 @@ __metadata: version: 0.0.0-use.local resolution: "@enkryptcom/name-resolution@workspace:packages/name-resolution" dependencies: + "@bonfida/spl-name-service": "npm:^3.0.10" "@ensdomains/address-encoder": "npm:^1.1.2" "@siddomains/sidjs": "npm:0.1.29" - "@solana/web3.js": "npm:^1.98.0" "@types/node": "npm:^22.14.1" "@typescript-eslint/eslint-plugin": "npm:^8.30.1" "@typescript-eslint/parser": "npm:^8.30.1" @@ -1788,6 +1787,7 @@ __metadata: tsup: "npm:^8.4.0" typescript: "npm:^5.8.3" typescript-eslint: "npm:8.30.1" + viem: "npm:^2.29.2" vitest: "npm:^3.1.1" languageName: unknown linkType: soft @@ -6460,6 +6460,15 @@ __metadata: languageName: node linkType: hard +"@noble/curves@npm:1.8.2, @noble/curves@npm:~1.8.1": + version: 1.8.2 + resolution: "@noble/curves@npm:1.8.2" + dependencies: + "@noble/hashes": "npm:1.7.2" + checksum: 10/540e7b7a8fe92ecd5cef846f84d07180662eb7fd7d8e9172b8960c31827e74f148fe4630da962138a6be093ae9f8992d14ab23d3682a2cc32be839aa57c03a46 + languageName: node + linkType: hard + "@noble/curves@npm:^1.0.0, @noble/curves@npm:^1.1.0, @noble/curves@npm:^1.2.0, @noble/curves@npm:^1.3.0, @noble/curves@npm:^1.4.0, @noble/curves@npm:^1.4.2, @noble/curves@npm:~1.6.0": version: 1.6.0 resolution: "@noble/curves@npm:1.6.0" @@ -6469,12 +6478,12 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:~1.8.1": - version: 1.8.2 - resolution: "@noble/curves@npm:1.8.2" +"@noble/curves@npm:^1.6.0, @noble/curves@npm:~1.9.0": + version: 1.9.1 + resolution: "@noble/curves@npm:1.9.1" dependencies: - "@noble/hashes": "npm:1.7.2" - checksum: 10/540e7b7a8fe92ecd5cef846f84d07180662eb7fd7d8e9172b8960c31827e74f148fe4630da962138a6be093ae9f8992d14ab23d3682a2cc32be839aa57c03a46 + "@noble/hashes": "npm:1.8.0" + checksum: 10/5c82ec828ca4a4218b1666ba0ddffde17afd224d0bd5e07b64c2a0c83a3362483387f55c11cfd8db0fc046605394fe4e2c67fe024628a713e864acb541a7d2bb languageName: node linkType: hard @@ -6555,6 +6564,13 @@ __metadata: languageName: node linkType: hard +"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:~1.8.0": + version: 1.8.0 + resolution: "@noble/hashes@npm:1.8.0" + checksum: 10/474b7f56bc6fb2d5b3a42132561e221b0ea4f91e590f4655312ca13667840896b34195e2b53b7f097ec080a1fdd3b58d902c2a8d0fbdf51d2e238b53808a177e + languageName: node + linkType: hard + "@noble/hashes@npm:^1.6.1, @noble/hashes@npm:~1.7.1": version: 1.7.1 resolution: "@noble/hashes@npm:1.7.1" @@ -8416,7 +8432,7 @@ __metadata: languageName: node linkType: hard -"@scure/base@npm:^1.1.6": +"@scure/base@npm:^1.1.6, @scure/base@npm:~1.2.5": version: 1.2.5 resolution: "@scure/base@npm:1.2.5" checksum: 10/9a963a27424a373b62760c9ae7099ae496be67eb5b31205639f529f0dbcb2228a827222a36d22842cc2acda78e300a3430d46d84de5d8d4b791208955360853e @@ -8452,6 +8468,17 @@ __metadata: languageName: node linkType: hard +"@scure/bip32@npm:1.6.2, @scure/bip32@npm:^1.3.1": + version: 1.6.2 + resolution: "@scure/bip32@npm:1.6.2" + dependencies: + "@noble/curves": "npm:~1.8.1" + "@noble/hashes": "npm:~1.7.1" + "@scure/base": "npm:~1.2.2" + checksum: 10/474ee315a8631aa1a7d378b0521b4494e09a231519ec53d879088cb88c8ff644a89b27a02a8bf0b5a9b1c4c0417acc70636ccdb121b800c34594ae53c723f8d7 + languageName: node + linkType: hard + "@scure/bip32@npm:^1.1.5, @scure/bip32@npm:^1.4.0": version: 1.5.0 resolution: "@scure/bip32@npm:1.5.0" @@ -8463,14 +8490,14 @@ __metadata: languageName: node linkType: hard -"@scure/bip32@npm:^1.3.1": - version: 1.6.2 - resolution: "@scure/bip32@npm:1.6.2" +"@scure/bip32@npm:^1.5.0": + version: 1.7.0 + resolution: "@scure/bip32@npm:1.7.0" dependencies: - "@noble/curves": "npm:~1.8.1" - "@noble/hashes": "npm:~1.7.1" - "@scure/base": "npm:~1.2.2" - checksum: 10/474ee315a8631aa1a7d378b0521b4494e09a231519ec53d879088cb88c8ff644a89b27a02a8bf0b5a9b1c4c0417acc70636ccdb121b800c34594ae53c723f8d7 + "@noble/curves": "npm:~1.9.0" + "@noble/hashes": "npm:~1.8.0" + "@scure/base": "npm:~1.2.5" + checksum: 10/f90e0c23ab6a31a164856ae9cb9a8cae2886df608c74a6c0c4875095b017e30ffd92f28f73b8c52890d9a89fca86d19f6d60bb1ea7cad64c7987f92ae83509ad languageName: node linkType: hard @@ -8494,6 +8521,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.5.4, @scure/bip39@npm:^1.2.1, @scure/bip39@npm:^1.5.1": + version: 1.5.4 + resolution: "@scure/bip39@npm:1.5.4" + dependencies: + "@noble/hashes": "npm:~1.7.1" + "@scure/base": "npm:~1.2.4" + checksum: 10/9f08b433511d7637bc48c51aa411457d5f33da5a85bd03370bf394822b0ea8c007ceb17247a3790c28237303d8fc20c4e7725765940cd47e1365a88319ad0d5c + languageName: node + linkType: hard + "@scure/bip39@npm:^1.2.0, @scure/bip39@npm:^1.3.0": version: 1.4.0 resolution: "@scure/bip39@npm:1.4.0" @@ -8504,13 +8541,13 @@ __metadata: languageName: node linkType: hard -"@scure/bip39@npm:^1.2.1, @scure/bip39@npm:^1.5.1": - version: 1.5.4 - resolution: "@scure/bip39@npm:1.5.4" +"@scure/bip39@npm:^1.4.0": + version: 1.6.0 + resolution: "@scure/bip39@npm:1.6.0" dependencies: - "@noble/hashes": "npm:~1.7.1" - "@scure/base": "npm:~1.2.4" - checksum: 10/9f08b433511d7637bc48c51aa411457d5f33da5a85bd03370bf394822b0ea8c007ceb17247a3790c28237303d8fc20c4e7725765940cd47e1365a88319ad0d5c + "@noble/hashes": "npm:~1.8.0" + "@scure/base": "npm:~1.2.5" + checksum: 10/63e60c40fa1bda2c1b50351546fee6d7b0947cc814aa7a4209dcedd3693b5053302c8fca28292f5f50735e11c613265359acdc019127393dbab17e53489fc449 languageName: node linkType: hard @@ -13192,6 +13229,21 @@ __metadata: languageName: node linkType: hard +"abitype@npm:1.0.8, abitype@npm:^1.0.6": + version: 1.0.8 + resolution: "abitype@npm:1.0.8" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10/878e74fbac6a971953649b6216950437aa5834a604e9fa833a5b275a6967cff59857c7e43594ae906387d2fb7cad9370138dec4298eb8814815a3ffb6365902c + languageName: node + linkType: hard + "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" @@ -21476,6 +21528,15 @@ __metadata: languageName: node linkType: hard +"isows@npm:1.0.6": + version: 1.0.6 + resolution: "isows@npm:1.0.6" + peerDependencies: + ws: "*" + checksum: 10/ab9e85b50bcc3d70aa5ec875aa2746c5daf9321cb376ed4e5434d3c2643c5d62b1f466d93a05cd2ad0ead5297224922748c31707cb4fbd68f5d05d0479dce99c + languageName: node + linkType: hard + "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -24619,6 +24680,26 @@ __metadata: languageName: node linkType: hard +"ox@npm:0.6.9": + version: 0.6.9 + resolution: "ox@npm:0.6.9" + dependencies: + "@adraffy/ens-normalize": "npm:^1.10.1" + "@noble/curves": "npm:^1.6.0" + "@noble/hashes": "npm:^1.5.0" + "@scure/bip32": "npm:^1.5.0" + "@scure/bip39": "npm:^1.4.0" + abitype: "npm:^1.0.6" + eventemitter3: "npm:5.0.1" + peerDependencies: + typescript: ">=5.4.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/11ad9076b594dd424cd89d9763d4701e59e7ffc0733973947c82a14255a00a53483712e62fa9bbacd39efd35c6739bddb7728ef2211b47530f22036ab77cde69 + languageName: node + linkType: hard + "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -30530,6 +30611,27 @@ __metadata: languageName: node linkType: hard +"viem@npm:^2.29.2": + version: 2.29.2 + resolution: "viem@npm:2.29.2" + dependencies: + "@noble/curves": "npm:1.8.2" + "@noble/hashes": "npm:1.7.2" + "@scure/bip32": "npm:1.6.2" + "@scure/bip39": "npm:1.5.4" + abitype: "npm:1.0.8" + isows: "npm:1.0.6" + ox: "npm:0.6.9" + ws: "npm:8.18.1" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/deaddf43517beb44d1f17b6229a8c2a323f99533f27319e8176de071549aa9e6247c68ed915fb0f69bb84e2e85e880f17efc4564f7f23adb34c78f90b56c2c9c + languageName: node + linkType: hard + "vite-node@npm:3.1.1": version: 3.1.1 resolution: "vite-node@npm:3.1.1" @@ -32071,6 +32173,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:8.18.1, ws@npm:^8.18.1": + version: 8.18.1 + resolution: "ws@npm:8.18.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10/3f38e9594f2af5b6324138e86b74df7d77bbb8e310bf8188679dd80bac0d1f47e51536a1923ac3365f31f3d8b25ea0b03e4ade466aa8292a86cd5defca64b19b + languageName: node + linkType: hard + "ws@npm:^3.0.0": version: 3.3.3 resolution: "ws@npm:3.3.3" @@ -32097,21 +32214,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.1": - version: 8.18.1 - resolution: "ws@npm:8.18.1" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10/3f38e9594f2af5b6324138e86b74df7d77bbb8e310bf8188679dd80bac0d1f47e51536a1923ac3365f31f3d8b25ea0b03e4ade466aa8292a86cd5defca64b19b - languageName: node - linkType: hard - "xhr-request-promise@npm:^0.1.2": version: 0.1.3 resolution: "xhr-request-promise@npm:0.1.3" From cd4677a1a12c3db64f8ac49e20ea655c78020706 Mon Sep 17 00:00:00 2001 From: kvhnuke <10602065+kvhnuke@users.noreply.github.com> Date: Wed, 21 May 2025 15:39:10 -0700 Subject: [PATCH 06/34] devop: to address field --- .../ethereum/ui/eth-verify-transaction.vue | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue b/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue index 6ae31cb65..de1c97ada 100644 --- a/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue +++ b/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue @@ -77,6 +77,18 @@

+
+ +
({ address: '', } as EnkryptAccount); const identicon = ref(''); +const identiconTo = ref(network.value.identicon('')); const windowPromise = WindowPromiseHandler(3); const Options = ref({ domain: '', @@ -216,6 +229,9 @@ onBeforeMount(async () => { Request.value.params![0] as EthereumTransaction, network.value as EvmNetwork, ).then(decoded => { + identiconTo.value = network.value.identicon( + decoded.toAddress!.toLowerCase(), + ); if (decoded.decoded && decoded.dataHex.startsWith(TokenSigs.approve)) { isApproval.value = true; if ( From fe4ed5b881c5562d60547a58e50bba70e3f04150 Mon Sep 17 00:00:00 2001 From: olgakup <16910687+olgakup@users.noreply.github.com> Date: Wed, 21 May 2025 16:12:16 -0700 Subject: [PATCH 07/34] feat: add label to tx confirmation --- .../common/ui/styles/verify-transaction.less | 17 ++++++++++++----- .../ethereum/ui/eth-verify-transaction.vue | 9 +++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/extension/src/providers/common/ui/styles/verify-transaction.less b/packages/extension/src/providers/common/ui/styles/verify-transaction.less index 28904b599..d2970606d 100644 --- a/packages/extension/src/providers/common/ui/styles/verify-transaction.less +++ b/packages/extension/src/providers/common/ui/styles/verify-transaction.less @@ -7,6 +7,13 @@ &__logo { margin-bottom: 8px; } + &__label { + font-size: 12px; + line-height: 16px; + letter-spacing: 0.5px; + color: @grayPrimary; + margin: 0 0 4px 44px; + } &__network { display: flex; justify-content: flex-start; @@ -167,11 +174,11 @@ &-to { font-style: normal; - font-weight: 400; - font-size: 14px; - line-height: 20px; - letter-spacing: 0.25px; - color: @primaryLabel; + font-weight: 400 !important; + font-size: 16px !important; + line-height: 20px !important; + letter-spacing: 0.5px; + color: @black !important; word-break: break-all; } } diff --git a/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue b/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue index de1c97ada..75438afc2 100644 --- a/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue +++ b/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue @@ -11,7 +11,9 @@ diff --git a/packages/extension/src/providers/common/ui/send-transaction/send-alert.vue b/packages/extension/src/providers/common/ui/send-transaction/send-alert.vue index 6e8284c19..1b5d63585 100644 --- a/packages/extension/src/providers/common/ui/send-transaction/send-alert.vue +++ b/packages/extension/src/providers/common/ui/send-transaction/send-alert.vue @@ -5,9 +5,7 @@ Not enough funds. You are
~{{ $filters.formatFloatingPointValue(nativeValue).value }} - {{ nativeSymbol }} (${{ - $filters.formatFiatValue(priceDifference).value - }}) short. + {{ nativeSymbol }} ({{ $filters.parseCurrency(priceDifference) }}) short.

diff --git a/packages/extension/src/providers/common/ui/verify-transaction/verify-transaction-amount.vue b/packages/extension/src/providers/common/ui/verify-transaction/verify-transaction-amount.vue index 3496aa67e..7c4edf68f 100644 --- a/packages/extension/src/providers/common/ui/verify-transaction/verify-transaction-amount.vue +++ b/packages/extension/src/providers/common/ui/verify-transaction/verify-transaction-amount.vue @@ -8,7 +8,7 @@ {{ fromBase(token.amount, token.decimals) }} {{ token.symbol }} -
{{ $filters.formatFiatValue(token.valueUSD).value }}
+
{{ $filters.parseCurrency(token.valueUSD) }}
diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts index 2de30d2d8..d14f044d6 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts @@ -10,7 +10,7 @@ import { fromBase } from '@enkryptcom/utils'; import { toBN } from 'web3-utils'; import BigNumber from 'bignumber.js'; import { - formatFiatValue, + formatFloatingPointValue, } from '@/libs/utils/number-formatter'; import API from '@/providers/ethereum/libs/api'; @@ -278,15 +278,15 @@ export default ( const marketInfo = supportedNetworks[networkName].cgPlatform ? await marketData.getMarketInfoByContracts( - Object.keys(balances).filter( - contract => contract !== NATIVE_TOKEN_ADDRESS, - ), - supportedNetworks[networkName].cgPlatform as CoingeckoPlatform, - ) + Object.keys(balances).filter( + contract => contract !== NATIVE_TOKEN_ADDRESS, + ), + supportedNetworks[networkName].cgPlatform as CoingeckoPlatform, + ) : tokens.reduce( - (obj, cur) => ({ ...obj, [cur.contract]: null }), - {} as Record, - ); + (obj, cur) => ({ ...obj, [cur.contract]: null }), + {} as Record, + ); if (network.coingeckoID) { const nativeMarket = await marketData.getMarketData([ network.coingeckoID, @@ -337,12 +337,12 @@ export default ( balance: toBN(balances[address].balance).toString(), balancef: formatFloatingPointValue(userBalance).value, balanceUSD: usdBalance.toNumber(), - balanceUSDf: formatFiatValue(usdBalance.toString()).value, + balanceUSDf: usdBalance.toString(), icon: market.image, name: market.name, symbol: market.symbol, value: currentPrice.toString(), - valuef: formatFiatValue(currentPrice.toString()).value, + valuef: currentPrice.toString(), contract: address, decimals: tokenInfo[address].decimals, sparkline: new Sparkline(market.sparkline_in_24h.price, 25) @@ -377,7 +377,7 @@ export default ( balance: toBN(balances[unknownTokens[idx]].balance).toString(), balancef: formatFloatingPointValue(userBalance).value, balanceUSD: 0, - balanceUSDf: formatFiatValue('0').value, + balanceUSDf: '0', icon: tokenInfo[unknownTokens[idx]]?.logoURI || tInfo.icon || @@ -385,7 +385,7 @@ export default ( name: tInfo.name, symbol: tInfo.symbol, value: '0', - valuef: formatFiatValue('0').value, + valuef: '0', contract: unknownTokens[idx], decimals: tInfo.decimals, sparkline: '', diff --git a/packages/extension/src/providers/ethereum/networks/skale/skale-base.ts b/packages/extension/src/providers/ethereum/networks/skale/skale-base.ts index 56c756d6d..347d86482 100644 --- a/packages/extension/src/providers/ethereum/networks/skale/skale-base.ts +++ b/packages/extension/src/providers/ethereum/networks/skale/skale-base.ts @@ -8,7 +8,6 @@ import MarketData from '@/libs/market-data'; import { fromBase } from '@enkryptcom/utils'; import BigNumber from 'bignumber.js'; import { - formatFiatValue, formatFloatingPointValue, } from '@/libs/utils/number-formatter'; import API from '@/providers/ethereum/libs/api'; @@ -155,11 +154,11 @@ async function getPreconfiguredTokens( balancef: formatFloatingPointValue(fromBase(balanceAsset, assetDecimals)) .value, balanceUSD: nativeAssetUsdBalance.toNumber(), - balanceUSDf: formatFiatValue(nativeAssetUsdBalance.toString()).value, + balanceUSDf: nativeAssetUsdBalance.toString(), value: nativeAssetMarketData[index]?.current_price?.toString() ?? '0', - valuef: formatFiatValue( + valuef: nativeAssetMarketData[index]?.current_price?.toString() ?? '0', - ).value, + decimals: assetDecimals, sparkline: nativeAssetMarketData[index] ? new Sparkline( diff --git a/packages/extension/src/providers/ethereum/types/evm-network.ts b/packages/extension/src/providers/ethereum/types/evm-network.ts index a584cb701..406e20b3c 100644 --- a/packages/extension/src/providers/ethereum/types/evm-network.ts +++ b/packages/extension/src/providers/ethereum/types/evm-network.ts @@ -3,7 +3,6 @@ import Sparkline from '@/libs/sparkline'; import { TokensState } from '@/libs/tokens-state'; import { CustomErc20Token, TokenType } from '@/libs/tokens-state/types'; import { - formatFiatValue, formatFloatingPointValue, } from '@/libs/utils/number-formatter'; import { fromBase } from '@enkryptcom/utils'; @@ -151,11 +150,10 @@ export class EvmNetwork extends BaseNetwork { balancef: formatFloatingPointValue(fromBase(balance, this.decimals)) .value, balanceUSD: nativeUsdBalance.toNumber(), - balanceUSDf: formatFiatValue(nativeUsdBalance.toString()).value, + balanceUSDf: nativeUsdBalance.toString(), value: nativeMarketData?.current_price?.toString() ?? '0', - valuef: formatFiatValue( + valuef: nativeMarketData?.current_price?.toString() ?? '0', - ).value, decimals: this.decimals, sparkline: nativeMarketData ? new Sparkline(nativeMarketData.sparkline_in_24h.price, 25) @@ -269,11 +267,10 @@ export class EvmNetwork extends BaseNetwork { fromBase(token.balance ?? '0', token.decimals), ).times(marketInfo.current_price ?? 0); asset.balanceUSD = usdBalance.toNumber(); - asset.balanceUSDf = formatFiatValue(usdBalance.toString()).value; + asset.balanceUSDf = usdBalance.toString(); asset.value = marketInfo.current_price?.toString() ?? '0'; - asset.valuef = formatFiatValue( - marketInfo.current_price?.toString() ?? '0', - ).value; + asset.valuef = + marketInfo.current_price?.toString() ?? '0'; asset.sparkline = new Sparkline( marketInfo.sparkline_in_24h.price, 25, diff --git a/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue b/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue index 6ae31cb65..532ecdc36 100644 --- a/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue +++ b/packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue @@ -61,7 +61,7 @@

${{ fiatValue !== '~' - ? $filters.formatFiatValue(fiatValue).value + ? $filters.parseCurrency(fiatValue) : fiatValue }}

diff --git a/packages/extension/src/providers/kadena/types/kadena-network.ts b/packages/extension/src/providers/kadena/types/kadena-network.ts index 28705a090..689e4c02e 100644 --- a/packages/extension/src/providers/kadena/types/kadena-network.ts +++ b/packages/extension/src/providers/kadena/types/kadena-network.ts @@ -15,7 +15,7 @@ import { CoinGeckoTokenMarket } from '@/libs/market-data/types'; import Sparkline from '@/libs/sparkline'; import { formatFloatingPointValue, - formatFiatValue, + } from '@/libs/utils/number-formatter'; import { fromBase } from '@enkryptcom/utils'; import BigNumber from 'bignumber.js'; @@ -115,13 +115,12 @@ export class KadenaNetwork extends BaseNetwork { balance: balance, balancef: formatFloatingPointValue(userBalance).value, balanceUSD: usdBalance.toNumber(), - balanceUSDf: formatFiatValue(usdBalance.toString()).value, + balanceUSDf: usdBalance.toString(), icon: this.icon, name: this.name_long, symbol: this.currencyName, value: marketData[0]?.current_price?.toString() ?? '0', - valuef: formatFiatValue(marketData[0]?.current_price?.toString() ?? '0') - .value, + valuef: marketData[0]?.current_price?.toString() ?? '0', contract: '', decimals: this.decimals, sparkline: marketData.length diff --git a/packages/extension/src/providers/kadena/ui/send-transaction/components/send-token-item.vue b/packages/extension/src/providers/kadena/ui/send-transaction/components/send-token-item.vue index 8838464bc..e3d5c4a0d 100644 --- a/packages/extension/src/providers/kadena/ui/send-transaction/components/send-token-item.vue +++ b/packages/extension/src/providers/kadena/ui/send-transaction/components/send-token-item.vue @@ -17,8 +17,8 @@
-

{{ $filters.formatFiatValue(tokenBalance).value }}

-

@{{ $filters.formatFiatValue(tokenPrice).value }}

+

{{ $filters.parseCurrency(tokenBalance) }}

+

@{{ $filters.parseCurrency(tokenPrice) }}

diff --git a/packages/extension/src/providers/polkadot/types/substrate-network.ts b/packages/extension/src/providers/polkadot/types/substrate-network.ts index f161efac3..1bd3c0fe0 100644 --- a/packages/extension/src/providers/polkadot/types/substrate-network.ts +++ b/packages/extension/src/providers/polkadot/types/substrate-network.ts @@ -9,7 +9,6 @@ import createIcon from '../libs/blockies'; import MarketData from '@/libs/market-data'; import BigNumber from 'bignumber.js'; import { - formatFiatValue, formatFloatingPointValue, } from '@/libs/utils/number-formatter'; import Sparkline from '@/libs/sparkline'; @@ -160,7 +159,7 @@ export class SubstrateNetwork extends BaseNetwork { balance: balances[idx].toString(), balancef: formatFloatingPointValue(userBalance).value, balanceUSD: usdBalance.toNumber(), - balanceUSDf: formatFiatValue(usdBalance.toString()).value, + balanceUSDf: usdBalance.toString(), decimals: st.decimals, icon: st.icon, name: st.name, diff --git a/packages/extension/src/providers/polkadot/ui/send-transaction/components/send-token-item.vue b/packages/extension/src/providers/polkadot/ui/send-transaction/components/send-token-item.vue index 446c56525..9de125a4f 100644 --- a/packages/extension/src/providers/polkadot/ui/send-transaction/components/send-token-item.vue +++ b/packages/extension/src/providers/polkadot/ui/send-transaction/components/send-token-item.vue @@ -17,8 +17,8 @@
-

{{ $filters.formatFiatValue(tokenBalance).value }}

-

@{{ $filters.formatFiatValue(tokenPrice).value }}

+

{{ $filters.parseCurrency(tokenBalance) }}

+

@{{ $filters.parseCurrency(tokenPrice) }}

diff --git a/packages/extension/src/providers/solana/types/sol-network.ts b/packages/extension/src/providers/solana/types/sol-network.ts index 0135e6120..9f8c7787b 100644 --- a/packages/extension/src/providers/solana/types/sol-network.ts +++ b/packages/extension/src/providers/solana/types/sol-network.ts @@ -7,7 +7,6 @@ import { CoingeckoPlatform, NetworkNames, SignerType } from '@enkryptcom/types'; import createIcon from '../libs/blockies'; import { Activity } from '@/types/activity'; import { - formatFiatValue, formatFloatingPointValue, } from '@/libs/utils/number-formatter'; import MarketData from '@/libs/market-data'; @@ -125,14 +124,13 @@ export class SolanaNetwork extends BaseNetwork { balance: balance, balancef: formatFloatingPointValue(userBalance).value, balanceUSD: usdBalance.toNumber(), - balanceUSDf: formatFiatValue(usdBalance.toString()).value, + balanceUSDf: usdBalance.toString(), icon: this.icon, name: this.name_long, symbol: this.currencyName, value: marketData.length ? currentPrice.toString() : '0', - valuef: formatFiatValue( + valuef: marketData.length ? currentPrice.toString() : '0', - ).value, contract: '', decimals: this.decimals, sparkline: marketData.length diff --git a/packages/extension/src/providers/solana/ui/sol-verify-transaction.vue b/packages/extension/src/providers/solana/ui/sol-verify-transaction.vue index 08d9fcdc8..ee348f08d 100644 --- a/packages/extension/src/providers/solana/ui/sol-verify-transaction.vue +++ b/packages/extension/src/providers/solana/ui/sol-verify-transaction.vue @@ -69,7 +69,7 @@

{{ item.isNegative ? '-' : '' }} - ${{ $filters.formatFiatValue(parseFloat(item.USDval)).value }} + {{ $filters.parseCurrency(parseFloat(item.USDval)) }}

diff --git a/packages/extension/src/ui/action/composables/account-info.ts b/packages/extension/src/ui/action/composables/account-info.ts index 387c63d18..6143536b3 100644 --- a/packages/extension/src/ui/action/composables/account-info.ts +++ b/packages/extension/src/ui/action/composables/account-info.ts @@ -2,7 +2,7 @@ import MarketData from '@/libs/market-data'; import { BaseNetwork } from '@/types/base-network'; import { computed, ref, watch, onMounted, Ref } from 'vue'; import { AccountsHeaderData } from '../types/account'; -import { formatFloatingPointValue, formatFiatValue } from '../utils/filters'; +import { formatFloatingPointValue } from '../utils/filters'; const defaultFiatVal = '0.00'; export default ( network: Ref, @@ -31,14 +31,11 @@ export default ( const updateFiatValues = async () => { fiatAmount.value = defaultFiatVal; if (network.value.coingeckoID && cryptoAmountRaw.value != '~') { - fiatAmount.value = `${formatFiatValue( - await marketData.getTokenValue( - cryptoAmountRaw.value, - network.value.coingeckoID, - 'USD', - ), - ).value - }`; + fiatAmount.value = `${await marketData.getTokenValue( + cryptoAmountRaw.value, + network.value.coingeckoID, + 'USD', + )}`; } }; watch(cryptoAmount, updateFiatValues); diff --git a/packages/extension/src/ui/action/utils/filters.ts b/packages/extension/src/ui/action/utils/filters.ts index 17f3c514b..618222ac1 100644 --- a/packages/extension/src/ui/action/utils/filters.ts +++ b/packages/extension/src/ui/action/utils/filters.ts @@ -29,11 +29,8 @@ export const parseCurrency = (value: string | number): string => { const amount = new BigNumber(raw); const finalValue = amount.isNaN() || amount.isZero() ? 0 : amount.times(exchangeRate).toNumber(); - - return new Intl.NumberFormat(locale, { - style: 'currency', - currency: currency, - }).format(finalValue); + const notation = BigNumber(finalValue).gt(999999) ? 'compact' : 'standard'; + return `${amount.lt(0.0000001) ? '< ' : ''}${new Intl.NumberFormat(locale, { style: 'currency', currency: currency, notation, }).format(finalValue)}` }; export const truncate = (value: string, length: number): string => { @@ -53,8 +50,8 @@ export const formatDuration = ( isoString.match(/T((\d+)H)?((\d+)M)?(([\d]+)(\.(\d+))?S)?/) ?? []; if (duration.hours() < 0) - return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')}`; + return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')} `; - return `${m.padStart(2, '0')}:${s.padStart(2, '0')}`; + return `${m.padStart(2, '0')}:${s.padStart(2, '0')} `; }; export { formatFiatValue, formatFloatingPointValue }; diff --git a/packages/extension/src/ui/action/views/network-assets/components/network-assets-item.vue b/packages/extension/src/ui/action/views/network-assets/components/network-assets-item.vue index ea4efb730..9d63dade1 100644 --- a/packages/extension/src/ui/action/views/network-assets/components/network-assets-item.vue +++ b/packages/extension/src/ui/action/views/network-assets/components/network-assets-item.vue @@ -45,7 +45,7 @@
-

{{ $filters.parseCurrency(token.balanceUSDf) }}

+

{{ $filters.parseCurrency(token.balanceUSD) }}

@{{ $filters.parseCurrency(token.value) }}

diff --git a/packages/extension/src/ui/action/views/send-process/components/send-process-amount.vue b/packages/extension/src/ui/action/views/send-process/components/send-process-amount.vue index a75d9a350..088cb9473 100644 --- a/packages/extension/src/ui/action/views/send-process/components/send-process-amount.vue +++ b/packages/extension/src/ui/action/views/send-process/components/send-process-amount.vue @@ -8,7 +8,7 @@ {{ fromBase(token.amount, token.decimals) }} {{ token.symbol }} -
{{ $filters.formatFiatValue(token.valueUSD).value }}
+
{{ $filters.parseCurrency(token.valueUSD) }}
diff --git a/packages/extension/src/ui/action/views/settings/components/settings-select.vue b/packages/extension/src/ui/action/views/settings/components/settings-select.vue index 6fbd6beab..02d25d45c 100644 --- a/packages/extension/src/ui/action/views/settings/components/settings-select.vue +++ b/packages/extension/src/ui/action/views/settings/components/settings-select.vue @@ -71,8 +71,9 @@ const props = defineProps({ const searchedList = computed(() => { if (!searchInput.value) return props.list; + console.log(props.list); const filtered = props.list.filter(item => - item.includes(searchInput.value.toUpperCase()), + item.fiat_currency.includes(searchInput.value.toUpperCase()), ); return filtered; }); diff --git a/packages/extension/src/ui/action/views/swap/views/swap-best-offer/components/swap-best-offer-block/components/best-offer-error.vue b/packages/extension/src/ui/action/views/swap/views/swap-best-offer/components/swap-best-offer-block/components/best-offer-error.vue index 1967db5c2..be7473af4 100644 --- a/packages/extension/src/ui/action/views/swap/views/swap-best-offer/components/swap-best-offer-block/components/best-offer-error.vue +++ b/packages/extension/src/ui/action/views/swap/views/swap-best-offer/components/swap-best-offer-block/components/best-offer-error.vue @@ -11,14 +11,14 @@ Not enough {{ nativeSymbol }} to pay the network
fee. You are ~{{ $filters.formatFloatingPointValue(nativeValue).value }} - {{ nativeSymbol }} (${{ $filters.formatFiatValue(price).value }}) short. + {{ nativeSymbol }} ({{ $filters.parseCurrency(price) }}) short.

diff --git a/packages/extension/src/ui/action/views/swap/views/swap-best-offer/components/swap-best-offer-block/index.vue b/packages/extension/src/ui/action/views/swap/views/swap-best-offer/components/swap-best-offer-block/index.vue index 4708a1eb0..7891613de 100644 --- a/packages/extension/src/ui/action/views/swap/views/swap-best-offer/components/swap-best-offer-block/index.vue +++ b/packages/extension/src/ui/action/views/swap/views/swap-best-offer/components/swap-best-offer-block/index.vue @@ -16,7 +16,7 @@ {{ $filters.formatFloatingPointValue(toReadable).value }} {{ toToken.symbol }} -

≈ {{ $filters.formatFiatValue(toTokenPrice).value }}

+

≈ {{ $filters.parseCurrency(toTokenPrice) }}