Reported as "the Aegis DigiByte import error". The vendored @dgb-wallet/core modules under lib/dgb/ imported "bitcoinjs-lib", "bip32", "ecpair", "bip39" and "@bitcoinerlab/secp256k1" as bare specifiers. Node's ESM resolver walks up from the importing file, so that resolves in a dev checkout — where Theseus's node_modules sits above the add-on — and resolves nowhere once Aegis is running from <userData>/extensions/aegis/, which is every OTA install. The import threw, index.js caught it and set dgbCore = null, and any DigiByte import then died in digibyteNetwork() with "DGB adapter not available". So DigiByte worked on a fresh install and disappeared after the first update. Confirmed on this machine: the only node_modules reachable from the installed extension carries bip39 and none of the other four. lib/dgb/deps.js now holds the dependencies, injected by index.js from api.require (which resolves against the app tree) before anything under lib/dgb/ is imported — the same pattern every other lib/*.js in Aegis already uses, and the reason that pattern exists. Consumers read them through accessors rather than capturing them at module scope, so import order is no longer load-bearing: hd.js builds its bip32 on first use and the two initEccLib callers go through a once-only ensureEcc(). Using a DGB module without injection now throws a named error instead of a resolver failure swallowed into a null. Verified by loading the modules from a directory with no reachable node_modules and deriving real addresses: BIP44 D…, BIP49 S… with its legacy 3… pair, BIP84 dgb1q…, BIP86 dgb1p… taproot, plus a WIF round-trip and the non-DGB WIF rejection.
17 lines
No EOL
813 B
JavaScript
17 lines
No EOL
813 B
JavaScript
import { bip39 } from '../deps.js';
|
|
// Word count → entropy strength for BIP39.
|
|
// 12 → 128, 15 → 160, 18 → 192, 21 → 224, 24 → 256.
|
|
export function generateSeedPhrase(strength = 128) {
|
|
return bip39().generateMnemonic(strength);
|
|
}
|
|
// BIP39 checksum + wordlist validation. Returns false for typos, bad
|
|
// word counts, and out-of-wordlist words.
|
|
export function validateSeedPhrase(phrase, wordlist = undefined) {
|
|
return bip39().validateMnemonic(phrase.trim(), wordlist || bip39().wordlists.english);
|
|
}
|
|
// BIP39 seed derivation. Passphrase is the optional "25th word";
|
|
// changing it produces a different wallet from the same mnemonic.
|
|
export async function seedFromPhrase(phrase, passphrase = '') {
|
|
return bip39().mnemonicToSeed(phrase.trim(), passphrase);
|
|
}
|
|
//# sourceMappingURL=seed.js.map
|