@dynamic-labs/ethereum 3.0.0-alpha.5 → 3.0.0-alpha.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,10 +4,10 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../_virtual/_tslib.cjs');
7
- var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
7
+ var viem = require('viem');
8
+ var L2ResolverAbi = require('./L2ResolverAbi.cjs');
8
9
 
9
10
  const getNameservice = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ rpcProvider, address, }) {
10
- var _b;
11
11
  const nsData = {
12
12
  avatar: undefined,
13
13
  name: undefined,
@@ -16,19 +16,39 @@ const getNameservice = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function*
16
16
  if (!network) {
17
17
  return nsData;
18
18
  }
19
- // Handle Base name service requests
19
+ // per CB team they recommended using the code
20
+ // from: https://github.com/coinbase/onchainkit/blob/main/src/identity/utils/getName.ts
21
+ // Once they will have proper resolver for the ens names we can remove this code
22
+ const convertReverseNodeToBytes = (address, chainId) => {
23
+ const addressFormatted = address.toLocaleLowerCase();
24
+ const addressNode = viem.keccak256(addressFormatted.substring(2));
25
+ const chainCoinType = convertChainIdToCoinType(chainId);
26
+ const baseReverseNode = viem.namehash(`${chainCoinType.toLocaleUpperCase()}.reverse`);
27
+ const addressReverseNode = viem.keccak256(viem.encodePacked(['bytes32', 'bytes32'], [baseReverseNode, addressNode]));
28
+ return addressReverseNode;
29
+ };
30
+ const convertChainIdToCoinType = (chainId) => {
31
+ const cointype = (0x80000000 | chainId) >>> 0;
32
+ return cointype.toString(16).toLocaleUpperCase();
33
+ };
20
34
  if (network === 8453) {
35
+ const addressReverseNode = convertReverseNodeToBytes(address, 8453);
21
36
  try {
22
- const response = yield fetch(`https://resolver-api.basename.app/v1/addresses/${address}`);
23
- if (response.ok) {
24
- const data = yield response.json();
25
- nsData.name = (_b = data.name) !== null && _b !== void 0 ? _b : undefined;
37
+ const baseName = yield rpcProvider.readContract({
38
+ abi: L2ResolverAbi,
39
+ address: '0xC6d566A56A1aFf6508b41f6c90ff131615583BCD',
40
+ args: [addressReverseNode],
41
+ functionName: 'name',
42
+ });
43
+ if (baseName) {
44
+ nsData.name = baseName;
45
+ return nsData;
26
46
  }
27
47
  }
28
- catch (e) {
29
- walletConnectorCore.logger.debug('Failed to fetch ens data', e);
48
+ catch (_error) {
49
+ // This is a best effort attempt, so we don't need to do anything here.
50
+ return nsData;
30
51
  }
31
- return nsData;
32
52
  }
33
53
  else {
34
54
  nsData.name = (yield rpcProvider.getEnsName({
@@ -1,9 +1,9 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../_virtual/_tslib.js';
3
- import { logger } from '@dynamic-labs/wallet-connector-core';
3
+ import { keccak256, namehash, encodePacked } from 'viem';
4
+ import L2ResolverAbi from './L2ResolverAbi.js';
4
5
 
5
6
  const getNameservice = (_a) => __awaiter(void 0, [_a], void 0, function* ({ rpcProvider, address, }) {
6
- var _b;
7
7
  const nsData = {
8
8
  avatar: undefined,
9
9
  name: undefined,
@@ -12,19 +12,39 @@ const getNameservice = (_a) => __awaiter(void 0, [_a], void 0, function* ({ rpcP
12
12
  if (!network) {
13
13
  return nsData;
14
14
  }
15
- // Handle Base name service requests
15
+ // per CB team they recommended using the code
16
+ // from: https://github.com/coinbase/onchainkit/blob/main/src/identity/utils/getName.ts
17
+ // Once they will have proper resolver for the ens names we can remove this code
18
+ const convertReverseNodeToBytes = (address, chainId) => {
19
+ const addressFormatted = address.toLocaleLowerCase();
20
+ const addressNode = keccak256(addressFormatted.substring(2));
21
+ const chainCoinType = convertChainIdToCoinType(chainId);
22
+ const baseReverseNode = namehash(`${chainCoinType.toLocaleUpperCase()}.reverse`);
23
+ const addressReverseNode = keccak256(encodePacked(['bytes32', 'bytes32'], [baseReverseNode, addressNode]));
24
+ return addressReverseNode;
25
+ };
26
+ const convertChainIdToCoinType = (chainId) => {
27
+ const cointype = (0x80000000 | chainId) >>> 0;
28
+ return cointype.toString(16).toLocaleUpperCase();
29
+ };
16
30
  if (network === 8453) {
31
+ const addressReverseNode = convertReverseNodeToBytes(address, 8453);
17
32
  try {
18
- const response = yield fetch(`https://resolver-api.basename.app/v1/addresses/${address}`);
19
- if (response.ok) {
20
- const data = yield response.json();
21
- nsData.name = (_b = data.name) !== null && _b !== void 0 ? _b : undefined;
33
+ const baseName = yield rpcProvider.readContract({
34
+ abi: L2ResolverAbi,
35
+ address: '0xC6d566A56A1aFf6508b41f6c90ff131615583BCD',
36
+ args: [addressReverseNode],
37
+ functionName: 'name',
38
+ });
39
+ if (baseName) {
40
+ nsData.name = baseName;
41
+ return nsData;
22
42
  }
23
43
  }
24
- catch (e) {
25
- logger.debug('Failed to fetch ens data', e);
44
+ catch (_error) {
45
+ // This is a best effort attempt, so we don't need to do anything here.
46
+ return nsData;
26
47
  }
27
- return nsData;
28
48
  }
29
49
  else {
30
50
  nsData.name = (yield rpcProvider.getEnsName({
@@ -10,7 +10,7 @@ var viem = require('viem');
10
10
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
11
11
  var walletBook = require('@dynamic-labs/wallet-book');
12
12
  var utils = require('@dynamic-labs/utils');
13
- var viemUtils = require('@dynamic-labs/viem-utils');
13
+ var ethereumCore = require('@dynamic-labs/ethereum-core');
14
14
  var EthWalletConnector = require('../EthWalletConnector.cjs');
15
15
  var parseIntSafe = require('../utils/parseIntSafe.cjs');
16
16
 
@@ -246,7 +246,7 @@ class WalletConnect extends EthWalletConnector.EthWalletConnector {
246
246
  }
247
247
  return viem.createWalletClient({
248
248
  account: this.getActiveAccount(),
249
- chain: viemUtils.chainsMap[chainId !== null && chainId !== void 0 ? chainId : String(this.currentChainId)],
249
+ chain: ethereumCore.chainsMap[chainId !== null && chainId !== void 0 ? chainId : String(this.currentChainId)],
250
250
  transport: viem.custom(WalletConnect.provider),
251
251
  });
252
252
  }
@@ -6,7 +6,7 @@ import { createWalletClient, custom } from 'viem';
6
6
  import { logger, performPlatformSpecificConnectionMethod, getDeepLink } from '@dynamic-labs/wallet-connector-core';
7
7
  import { getWalletBookWallet } from '@dynamic-labs/wallet-book';
8
8
  import { DynamicError, sleep, isMobile } from '@dynamic-labs/utils';
9
- import { chainsMap } from '@dynamic-labs/viem-utils';
9
+ import { chainsMap } from '@dynamic-labs/ethereum-core';
10
10
  import { EthWalletConnector } from '../EthWalletConnector.js';
11
11
  import { parseIntSafe } from '../utils/parseIntSafe.js';
12
12
 
@@ -1,40 +0,0 @@
1
- 'use client'
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
- const isEip9693Event = (event) => event.type === 'eip6963:announceProvider' &&
7
- event.detail !== undefined;
8
- class Eip6963Provider {
9
- constructor() {
10
- this.providers = [];
11
- }
12
- registerProviders() {
13
- if (typeof window === 'undefined') {
14
- return;
15
- }
16
- window.addEventListener('eip6963:announceProvider', (event) => {
17
- if (!isEip9693Event(event)) {
18
- return;
19
- }
20
- this.providers.push(event.detail);
21
- });
22
- window.dispatchEvent(new Event('eip6963:requestProvider'));
23
- }
24
- }
25
- class Eip6963ProviderSingleton {
26
- constructor() {
27
- this.eip6963Provider = new Eip6963Provider();
28
- }
29
- static get() {
30
- var _a;
31
- if (!((_a = Eip6963ProviderSingleton.instance) === null || _a === void 0 ? void 0 : _a.eip6963Provider)) {
32
- Eip6963ProviderSingleton.instance = new Eip6963ProviderSingleton();
33
- Eip6963ProviderSingleton.instance.eip6963Provider.registerProviders();
34
- }
35
- return Eip6963ProviderSingleton.instance.eip6963Provider;
36
- }
37
- }
38
-
39
- exports.Eip6963Provider = Eip6963Provider;
40
- exports.Eip6963ProviderSingleton = Eip6963ProviderSingleton;
@@ -1,25 +0,0 @@
1
- import { IEthereum } from './types';
2
- /**
3
- * Represents the assets needed to display a wallet
4
- */
5
- type Eip6963ProviderInfo = {
6
- uuid: string;
7
- name: string;
8
- icon: string;
9
- rdns: string;
10
- };
11
- type Eip6963ProviderDetail = {
12
- info: Eip6963ProviderInfo;
13
- provider: IEthereum;
14
- };
15
- export declare class Eip6963Provider {
16
- providers: Eip6963ProviderDetail[];
17
- registerProviders(): void;
18
- }
19
- export declare class Eip6963ProviderSingleton {
20
- readonly eip6963Provider: Eip6963Provider;
21
- private constructor();
22
- private static instance;
23
- static get(): Eip6963Provider;
24
- }
25
- export {};
@@ -1,35 +0,0 @@
1
- 'use client'
2
- const isEip9693Event = (event) => event.type === 'eip6963:announceProvider' &&
3
- event.detail !== undefined;
4
- class Eip6963Provider {
5
- constructor() {
6
- this.providers = [];
7
- }
8
- registerProviders() {
9
- if (typeof window === 'undefined') {
10
- return;
11
- }
12
- window.addEventListener('eip6963:announceProvider', (event) => {
13
- if (!isEip9693Event(event)) {
14
- return;
15
- }
16
- this.providers.push(event.detail);
17
- });
18
- window.dispatchEvent(new Event('eip6963:requestProvider'));
19
- }
20
- }
21
- class Eip6963ProviderSingleton {
22
- constructor() {
23
- this.eip6963Provider = new Eip6963Provider();
24
- }
25
- static get() {
26
- var _a;
27
- if (!((_a = Eip6963ProviderSingleton.instance) === null || _a === void 0 ? void 0 : _a.eip6963Provider)) {
28
- Eip6963ProviderSingleton.instance = new Eip6963ProviderSingleton();
29
- Eip6963ProviderSingleton.instance.eip6963Provider.registerProviders();
30
- }
31
- return Eip6963ProviderSingleton.instance.eip6963Provider;
32
- }
33
- }
34
-
35
- export { Eip6963Provider, Eip6963ProviderSingleton };