Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@dynamic-labs/wallet-book

Package Overview
Dependencies
Maintainers
2
Versions
565
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dynamic-labs/wallet-book

## Updating Wallet Book

  • 4.0.0-alpha.36
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
18K
increased by6.95%
Maintainers
2
Weekly downloads
 
Created
Source

Wallet Book

Updating Wallet Book

Adding First Party Wallet

Simply add an entry to firstPartyWalletsData in packages/wallet-book/src/build/sources/firstParty/index.ts and Compile & Publish

For example:

  argentx: {
    brand: {
      alt: 'Argent Wallet',
      primaryColor: '#FF875B',
      spriteId: 'argentx',
    },
    desktop: {
      chromeId: 'dlcobpjiigpikoobohmabehhmhfoodbb',
      firefoxId: 'argent-x',
    },
    name: 'Argent X',
    injectedConfig: [
      {
        chain: 'EVM',
        extensionLocators:
      }
    ]
  },

Required fields:

  • brand
    • alt
    • primaryColor
    • spriteId - The id used in the iconic svg
    • name

Refer to WalletRecordsSchema for more schema options

Adding injected (browser extension) wallets

Similar to adding first party wallets, we add another key, injectedConfig to the wallet object.

...
injectedConfig: [
  {
    chain: 'EVM',
    extensionLocators: [
      { flag: 'isOkxWallet', value: true },
      { flag: 'isOkexWallet', value: true }
    ],
    windowLocations: ['okxwallet']
  }
],
name: 'OKX'
If you need to override any of the following functions: signMessage, getAddress, getSigner, isInstalledOnBrowser, etc...
  1. Create a file in the respective ethereum/src/injected/ or solana/src/injected/. The basic file should follow this form:
export class <NameOfConnector> extends InjectedWalletBase {
  override name = '<Name Here>';
  override walletConnectorFallback = true; // only specified on evm wallet connectors

  constructor(props: EthereumWalletConnectorOpts) {
    super(props);

    this.wallet = findWalletBookWallet(this.walletBook, this.key);
  }

  // override the methods you need below
  override async getAddress() {
    ...
  }
}
  1. Open fetchInjectedWalletConnectors.ts for the respective network package (etherem/solana/...) and add the new InjectedWalletBase class to injectedWalletOverrides and the key (normalized name) to the filterInjectedWalletKeyOverrides
Things to remember when adding a new wallet
  • IF the new wallet is also in wallletconnect.json: make sure that the key used in firstParty/index.ts is the same as the value from walletconnect.json as to inherit the properties from that wallet definition.
  • The value(s) in windowLocations map to window.<value from windowLocations>. i.e. okxwallet means window.okxwallet. The values can be a nested path that is dot delimited. If the wallet lives under window.ethereum or window.ethereum.providers, those window locations are imported by default.
  • For every extension locator you add for the new wallet, add the negation [{ flag: 'isOkxWallet', value: false }, ...] to the extensionLocators under the metamask key in firstParty.
  • If the new wallet is wallet connect enabled (exists in walletconnect.json), make sure to add: filterFromWalletConnect: true as a sibling to injectedConfig which will filter the wallet from the wallet connect connectors list and use wallet connect as fallback.
Checklist before submitting the PR:

[ ]: If this change adds a new file to the injected folder, add the wallet key to the walletBookFallbackList in packages/wallet-book/src/build/index.ts

[ ]: If the name is changing in walletbook, make sure that if there is no new file in the injected/ folder, you make sure at least the shortName normalizes down to the wallet key

myawesomenewwallet: {
  ...
  injectedConfig: { ... },
  shortName: 'My Awesome New Wallet', // maps down to the key if you lowercase and remove special characters and spaces
  name: 'Awesome Wallet' // this will be displayed in the wallet list and can be changed as long as the `shortName` normalizes to the key
}

NOTE:

Refer to injectedConfigSchema for the schema options

Updating Wallet Connect Data

Adding overrides to WalletConnect

  • modify packages/wallet-book/src/build/sources/walletConnectOverrides/index.ts
  • Compile & Publish

Compile & Publish

The compiled json is stored in packages/wallet-book/wallet-book.json. When the file is updated and merged to main it will be published to S3 automatically.

Simply, make any changes that you need and:

  • run npm run nuke - to clean any cache of the wallet-book logic
  • run npx nx compile wallet-book
  • commit wallet-book.json
  • Open PR with changes and merge

FAQs

Package last updated on 26 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc