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

@springrole/springwallet

v0.2.2

Published

Wallet for SpringRole users

Downloads

5

Readme

SpringWallet

About

SpringWallet - A simple wallet for flexible identity management for your frontend application

Basic Usage

  1. Install springwallet with npm.

    npm install @springrole/springwallet --save or yarn add @springrole/springwallet

  2. Import springwallet into your project.

    import { SpringWallet } from '@springrole/springwallet';
  3. Generate 12 words random mnemonic

    const mnemonic = SpringWallet.generateMnemonic();
  4. Create a new wallet using plain text mnemonic and encrypt it with password

    async function createWallet(plainTextMnemonic, password) {
        const encryptedMnemonic = await SpringWallet.encryptMnemonic(plainTextMnemonic, password); // encrypting mnemonic
        const wallet = await SpringWallet.initializeWalletFromMnemonic(plainTextMnemonic); // initializing wallet 
        const address = wallet.getChecksumAddressString(); // wallet address
        const key = wallet.getPrivateKey().toString('hex'); // private key
        await SpringWallet.setWalletSession(address, encryptedMnemonic); // saving wallet session in localStorage
        sessionStorage.setItem('wallet-session', key); // persist wallet private key in sessionStorage
        return true;
    }

    Note: encrypted mnemonic and address of the wallet will be store in localStorage at key 'wallet-session'

  5. Fetch wallet's address and encrypted mnemonic

    const { address, encryptedMnemonic } = SpringWallet.getWalletSession();
  6. Decrypt encryptedMnemonic and unlock wallet

    async function unlockWallet(encryptedMnemonic, password) {
      let plainTextMnemonic;
      try {
        plainTextMnemonic = await SpringWallet.decryptMnemonic(encryptedMnemonic, password);
      } catch {
        return false;
      }
      return SpringWallet.unlockWallet(plainTextMnemonic);
    }
  7. Use SpringWallet provider with web3.js

    const springwallet = new SpringWallet({
        rpcUrl: "http://localhost:8545",
        chainId: "1337"
      });
       
    const web3 = new Web3(springwallet.provider);
    return web3;

    NOTE SpringWallet needs to be unlocked before performing any web3 actions, like getAccounts(), getBalance()

Advance Usage

  1. Change SpringWallet password

    async function changeWalletPassword(address, encryptedMnemonic, oldPassword, newPassword) {
      const mnemonicPhrase = await SpringWallet.decryptMnemonic(encryptedMnemonic, oldPassword);
      const newEncryptedMnemonic = await SpringWallet.encryptMnemonic(mnemonicPhrase, newPassword);
      return true;
    }

    NOTE This will decrypt mnemonic with old password and reencrypts it using new password which will create new encrypted mnemonic

  2. Reset SpringWallet password, needs the plaintext mnemonic

    async function resetWalletPassword(plainTextMnemonic, newPassword) {
      const newEncryptedMnemonic = await SpringWallet.encryptMnemonic(plainTextMnemonic, newPassword);
      const wallet = await SpringWallet.initializeWalletFromMnemonic(plainTextMnemonic);
      const walletAddress = wallet.getChecksumAddressString();
      return true;
    }

Contributing

TODO