wordlist.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. "use strict";
  2. // This gets overridden by rollup
  3. const exportWordlist = false;
  4. import { id } from "@ethersproject/hash";
  5. import { defineReadOnly } from "@ethersproject/properties";
  6. import { Logger } from "@ethersproject/logger";
  7. import { version } from "./_version";
  8. export const logger = new Logger(version);
  9. export class Wordlist {
  10. constructor(locale) {
  11. logger.checkAbstract(new.target, Wordlist);
  12. defineReadOnly(this, "locale", locale);
  13. }
  14. // Subclasses may override this
  15. split(mnemonic) {
  16. return mnemonic.toLowerCase().split(/ +/g);
  17. }
  18. // Subclasses may override this
  19. join(words) {
  20. return words.join(" ");
  21. }
  22. static check(wordlist) {
  23. const words = [];
  24. for (let i = 0; i < 2048; i++) {
  25. const word = wordlist.getWord(i);
  26. /* istanbul ignore if */
  27. if (i !== wordlist.getWordIndex(word)) {
  28. return "0x";
  29. }
  30. words.push(word);
  31. }
  32. return id(words.join("\n") + "\n");
  33. }
  34. static register(lang, name) {
  35. if (!name) {
  36. name = lang.locale;
  37. }
  38. /* istanbul ignore if */
  39. if (exportWordlist) {
  40. try {
  41. const anyGlobal = window;
  42. if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {
  43. if (!anyGlobal._ethers.wordlists[name]) {
  44. defineReadOnly(anyGlobal._ethers.wordlists, name, lang);
  45. }
  46. }
  47. }
  48. catch (error) { }
  49. }
  50. }
  51. }
  52. //# sourceMappingURL=wordlist.js.map