npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@cxptek/web3client

v1.2.6

Published

Vic Web3 connector via Metamask, Walletconect, Defi wallet and Trust

Downloads

38

Readme

About web3client

npm

The web3client package provides a web3 clients that facilitates interaction with various wallets and blockchain networks, including Metamask, TronLink. It provides functionalities for working with Ethereum and Tron.

Usage

Here's a basic example of how to instantiate and use the web3client package:

Import web3client in your code:
import { Web3Service, MetaMaskClient, TronLinkClient, bsc, bscTestnet, nile, tron } from '@cxptek/web3client';
Create a Web3Service instance

You can use a Metamask or Tron client. As an example using Metamask:

//Metamask
const supportedChains = [bsc, bscTestnet, nile, tron];
const metamaskClient = new MetaMaskClient({ chains: supportedChains });
const web3Service = new Web3Service(metamaskClient);

//TronLink
const tronClient = new TronLinkClient({ chains: supportedChains });
const _web3Service = new Web3Service(tronClient);

Methods web3Client offers

Connect Mumbai to MetaMask
 import { ChainsMap } from "@cxptek/web3client";

 const mumbaiChain = ChainsMap.get(80_001);
 const connectResponse = await web3Service.client.connect(mumbaiChain)
Switch chain to Ethereum
 const ethereumChain = ChainsMap.get(1);
 const connectResponse = await web3Service.client.switchChain (ethereumChain);
Sign a message
 const signature = await web3Service.client.signMessage("Message to sign");
Send raw transaction
 import { BigNumber, utils } from 'ethers';
 import { type EthereumTransaction } from '@cxptek/web3client';

 const tx: EthereumTransaction = {
     nonce: 1,
     chainId: 1,
     data: '0x',
     gasLimit: BigNumber.from(600_000),
     from: "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5",
     to: '0x91da5bf3F8Eb72724E6f50Ec6C3D199C6355c59c',
     value: utils.parseUnits('0.0001', 18),
   };

   const response = await web3Service.client.sendRawTransaction(tx);
Sign transaction
import { BigNumber, utils } from 'ethers';
import { type EthereumTransaction } from 'web3client';

const tx: EthereumTransaction = {
  nonce: 1,
  chainId: 1,
  data: '',
  gasLimit: BigNumber.from(600_000),
  to: address,
  value: '1',
};

await web3Service.client.signTransaction(tx);
Send native token
 const response = await web3Service.client.send(address, '0.0001');

 const receiptConfirmed = await response.wait(1);
Is Installed or is Unlocked
 const isInstalled = web3Service.client.isInstalled();
Is Unlocked
 const isUnlocked = await web3Service.client.isUnlocked();
Authenticate User using their wallet and an specific API
 import { AuthenticateWalletWithAPI} from "web3client";

 const client = new Metamask()
 await client.authenticateWalletWithAPI(aPIUrl).then((e) => {
     console.log('AuthenticateWalletWithAPI', e)
   }).catch(error => {
     console.log('Error', error)
   })
Change Web3 language

The web3 library is using lingui as localization library to provide messages and translations in many languages. The app language can be changed using the method: activateLanguage('en-US')

 After any label or text that should be translated, you should do:
 yarn extract (this will create the new keys)
 yarn compile (This command compiles message catalogs in localeDir and outputs minified Javascript files)
getAllowance

Returns the token spend allowed by an address on behalf of the crypto holder

const spenderAddress = '0x123..8099'; // liquidity pool address
const tokenAddress = '0x456...789'; // USDT token address
const account = '0x121...999'; // my address
let allowance = await client.getAllowance(account, spenderAddress, tokenAddress, 18);
console.log('allowance in decimal', allowance);
approveToken

Before other smart contract can use your assets, you must approve amount of assets. Just call this method:

const spenderAddress = '0x123..8099'; // liquidity pool address
const tokenAddress = '0x456...789'; // USDT token address
const amount = 10; // 10 USDT in decimal.
await _web3Service.client.approve(spenderAddress, tokenAddress, amount, 18);
Execute native smart contract methods (Write methods)

We can use this method to call any write method from smart contract.

const writeContract = (
  address: string, // smart contract address | token address
  abi: ContractInterface, // ABI encode
  method: string, // name of smart contract method.
  params: Record<string, any>, // smart contract method arguments
  options?: Record<string, any> // other options such as Gas limit on metamask.
) => Promise<any>;

// Execute swap method from liquidity pool
const swapAmount = parseUnits(10, 18); // 18 for bsc
const swapResponse = await _web3Service.client.writeContract(
  address,
  ABI_DATA,
  'swap',
  { amount: swapAmount, recipient: '0x12333545' },
  { gasLimit: 800000 }
);

Web3 Events

accountsChanged

Listen whenever user change his account

web3Service.client.on('accountsChanged', (accounts: string[]) => {
  console.log('Account Changed', accounts);
});
chainChanged

Listen whenever user change network

web3Service.client.on('chainChanged', (newChain: { id: number; isUnsupported: boolean }) => {
  console.log('chain Changed', newChain);
  // {id: number, isUnsupported: boolean}
});
disconnect

Listen whenever user has disconnected

web3Service.client.on('disconnect', () => {
  console.log('disconnected');
});
removeAllListeners
web3Service.client.removeAllListeners();

Supported Chains

  • Ethereum
    • Ethereum (1)
    • Goerli ()
    • Polygon (137)
    • Mumbai (80001)
    • Binance smart chain (56)
    • Binance smart chain testnet (97)
  • Tron
    • Tron grid
    • Nile