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

@it-tools/bip39

v0.0.4

Published

A simple and complete bip39 mnemonic (passphrase) and entropy generator in typescript.

Downloads

3,038

Readme

logo

GitHub Workflow Status npm bundle size GitHub package.json version Licence Badge

A simple and complete bip39 mnemonic (passphrase) and entropy generator in typescript.

This package is similar to bitcoinjs/bip39 but lighter, strongly typed and without the heavy dependency to Buffer in order to be easily used in the browser.

Installation

Node JS

Install using yarn or npm.

npm install @it-tools/bip39
# or
yarn add @it-tools/bip39

And import :

// EMAScript import
import { entropyToMnemonic, mnemonicToEntropy } from '@it-tools/bip39';
// Or Common JS:
const { entropyToMnemonic, mnemonicToEntropy } = require('@it-tools/bip39');

const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e');

console.log(passphrase);
// alert record income curve mercy tree heavy loan hen recycle mean devote

Usage

Create mnemonic (passphrase) from entropy

Default language is english. The entropy must an hexadecimal string with a length >= 16 or <= 32 and that is a multiple or 4.

import { entropyToMnemonic } from '@it-tools/bip39';

const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e');

console.log(passphrase);
// alert record income curve mercy tree heavy loan hen recycle mean devote

Get entropy from a mnemonic (passphrase)

Default language is english.

import { mnemonicToEntropy } from '@it-tools/bip39';

const entropy = mnemonicToEntropy('alert record income curve mercy tree heavy loan hen recycle mean devote');

console.log(entropy);
// 063679ca1b28b5cfda9c186b367e271e

Generate an entropy

import { generateEntropy } from '@it-tools/bip39';

// Default is a 32 long entropy
const entropy = generateEntropy();

console.log(entropy);
// 063679ca1b28b5cfda9c186b367e271e
import { generateEntropy } from '@it-tools/bip39';

const entropy = generateEntropy(16);

console.log(entropy);
// b063679ca1b28b5c

Other languages

To use another language, just import the wordlist an use it in the function:

import { entropyToMnemonic, mnemonicToEntropy, frenchWordList } from '@it-tools/bip39';

const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e', frenchWordList);

console.log(passphrase);
// adroit pastèque glace commande lanceur tarder forcer insigne fougère paternel label culminer

const entropy = entropyToMnemonic('adroit pastèque glace commande lanceur tarder forcer insigne fougère paternel label culminer', frenchWordList);

console.log(entropy);
// a063679ca1b28b5cfda9c186b367e271e

Available languages are:

  • chineseSimplified: import { chineseSimplifiedWordList } from '@it-tools/bip39';
  • chineseTraditional: import { chineseTraditionalWordList } from '@it-tools/bip39';
  • czech: import { czechWordList } from '@it-tools/bip39';
  • english: import { englishWordList } from '@it-tools/bip39';
  • french: import { frenchWordList } from '@it-tools/bip39';
  • italian: import { italianWordList } from '@it-tools/bip39';
  • japanese: import { japaneseWordList } from '@it-tools/bip39';
  • korean: import { koreanWordList } from '@it-tools/bip39';
  • portuguese: import { portugueseWordList } from '@it-tools/bip39';
  • spanish: import { spanishWordList } from '@it-tools/bip39';

You can event define your custom language:

import { entropyToMnemonic, IWordList } from '@it-tools/bip39';

const customWordList: IWordList = {
  language: 'my-language',
  spacer: ' ', // character used to split word in a sentence, mainly space
  words: [
    'word1',
    'word2',
    // ...
  ],
};

const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e', customWordList);

Contribute

Pull requests are welcome ! Feel free to contribute.

Credits

Coded with ❤️ by Corentin Thomasset.

Inspired from bitcoinjs/bip39

License

This project is under the MIT license.