Coder Social home page Coder Social logo

feat: defer/lazy load word lists about bip39 HOT 4 OPEN

bitcoinjs avatar bitcoinjs commented on May 23, 2024 3
feat: defer/lazy load word lists

from bip39.

Comments (4)

junderw avatar junderw commented on May 23, 2024

We've been throwing around similar ideas for a while, but it's low priority right now.
Pull Requests welcome, though!

I was thinking of making it more generic and making an npm package for each wordlist.

from bip39.

junderw avatar junderw commented on May 23, 2024

@dcousens I wonder if a lazy loading Proxy might be good...

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

  1. When initializing BIP39, no wordlist is loaded.
  2. When any attribute of bip39.wordlists is accessed a getter Proxy takes the name of the thing being gotten and then attempts to require('@bip39/' + name) and return it.
  3. If the parent app has name wordlist installed, require will find it and load it.
  4. Maybe add hash values for each wordlist to check against known values.

That way, a person looking to add bip39 with English only to their app will do

npm install --save bip39 @bip39/english

Then in their app:

const bip39 = require('bip39')
// bip39 currently has not loaded any wordlists into memory
bip39.mnemonicToSeed(mn, pass)
// doesn't throw an error and still no wordlist in bip39.wordlists. since it doesn't use wordlists.
bip39.entropyToMnemonic(crypto.randomBytes(16))
// this will perform wordlist = wordlist || bip39.wordlists.english
// which will have the Proxy of wordlists do require('@bip39/english') and return that. storing it within bip39.wordlists
// if the require fails, return undefined.

hmmm... I'll have to test it out.

from bip39.

dcousens avatar dcousens commented on May 23, 2024

I don't think many packages is necessary. The only issue is the bundle burden, not npm.

from bip39.

junderw avatar junderw commented on May 23, 2024

I made a PR with one idea...

from bip39.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.