@zubari/sdk 0.5.4 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,4 @@
1
1
  import { HDNodeWallet } from 'ethers';
2
- import { mnemonicToSeedSync, validateMnemonic, generateMnemonic } from '@scure/bip39';
3
- import { wordlist } from '@scure/bip39/wordlists/english';
4
- import { HDKey } from '@scure/bip32';
5
- import { bech32, base58check } from '@scure/base';
6
- import { sha256 } from '@noble/hashes/sha256';
7
- import { ripemd160 } from '@noble/hashes/ripemd160';
8
2
 
9
3
  var __defProp = Object.defineProperty;
10
4
  var __export = (target, all) => {
@@ -1101,12 +1095,37 @@ var DERIVATION_PATHS2 = {
1101
1095
  solana: `${DERIVATION_PATHS.solana}/0'`,
1102
1096
  spark: `${DERIVATION_PATHS.spark}/0`
1103
1097
  };
1098
+ var _crypto = null;
1099
+ async function loadCrypto() {
1100
+ if (_crypto) return _crypto;
1101
+ const [bip39, bip39Words, bip32, scureBase, sha256Mod, ripemd160Mod] = await Promise.all([
1102
+ import('@scure/bip39'),
1103
+ import('@scure/bip39/wordlists/english.js'),
1104
+ import('@scure/bip32'),
1105
+ import('@scure/base'),
1106
+ import('@noble/hashes/sha256'),
1107
+ import('@noble/hashes/ripemd160')
1108
+ ]);
1109
+ _crypto = {
1110
+ mnemonicToSeedSync: bip39.mnemonicToSeedSync,
1111
+ validateMnemonic: bip39.validateMnemonic,
1112
+ generateMnemonic: bip39.generateMnemonic,
1113
+ wordlist: bip39Words.wordlist,
1114
+ HDKey: bip32.HDKey,
1115
+ bech32: scureBase.bech32,
1116
+ base58check: scureBase.base58check,
1117
+ sha256: sha256Mod.sha256,
1118
+ ripemd160: ripemd160Mod.ripemd160
1119
+ };
1120
+ return _crypto;
1121
+ }
1104
1122
  function deriveEthereumAddress(seed) {
1105
1123
  const hdNode = HDNodeWallet.fromPhrase(seed, void 0, DERIVATION_PATHS2.ethereum);
1106
1124
  return hdNode.address;
1107
1125
  }
1108
- function deriveBitcoinAddress(seed, network = "mainnet") {
1126
+ async function deriveBitcoinAddress(seed, network = "mainnet") {
1109
1127
  try {
1128
+ const { mnemonicToSeedSync, HDKey, sha256, ripemd160, bech32 } = await loadCrypto();
1110
1129
  const seedBytes = mnemonicToSeedSync(seed);
1111
1130
  const hdKey = HDKey.fromMasterSeed(seedBytes);
1112
1131
  const path = network === "testnet" ? DERIVATION_PATHS2.bitcoin_testnet : DERIVATION_PATHS2.bitcoin_mainnet;
@@ -1128,13 +1147,14 @@ function deriveBitcoinAddress(seed, network = "mainnet") {
1128
1147
  }
1129
1148
  async function deriveSolanaAddress(seed) {
1130
1149
  try {
1131
- const [ed25519, nacl, bs58Module] = await Promise.all([
1150
+ const [crypto, ed25519, nacl, bs58Module] = await Promise.all([
1151
+ loadCrypto(),
1132
1152
  import('ed25519-hd-key'),
1133
1153
  import('tweetnacl'),
1134
1154
  import('bs58')
1135
1155
  ]);
1136
1156
  const bs58 = bs58Module.default || bs58Module;
1137
- const seedBytes = mnemonicToSeedSync(seed);
1157
+ const seedBytes = crypto.mnemonicToSeedSync(seed);
1138
1158
  const derived = ed25519.derivePath(DERIVATION_PATHS2.solana, Buffer.from(seedBytes).toString("hex"));
1139
1159
  const keypair = nacl.sign.keyPair.fromSeed(new Uint8Array(derived.key));
1140
1160
  return bs58.encode(keypair.publicKey);
@@ -1145,17 +1165,18 @@ async function deriveSolanaAddress(seed) {
1145
1165
  }
1146
1166
  async function deriveTonAddress(seed) {
1147
1167
  try {
1148
- const [ed25519, nacl] = await Promise.all([
1168
+ const [crypto, ed25519, nacl] = await Promise.all([
1169
+ loadCrypto(),
1149
1170
  import('ed25519-hd-key'),
1150
1171
  import('tweetnacl')
1151
1172
  ]);
1152
- const seedBytes = mnemonicToSeedSync(seed);
1173
+ const seedBytes = crypto.mnemonicToSeedSync(seed);
1153
1174
  const derived = ed25519.derivePath(DERIVATION_PATHS2.ton, Buffer.from(seedBytes).toString("hex"));
1154
1175
  const keypair = nacl.sign.keyPair.fromSeed(new Uint8Array(derived.key));
1155
1176
  const publicKey = keypair.publicKey;
1156
1177
  const workchain = 0;
1157
1178
  const flags = 17;
1158
- const hash = sha256(publicKey);
1179
+ const hash = crypto.sha256(publicKey);
1159
1180
  const addressData = new Uint8Array(34);
1160
1181
  addressData[0] = flags;
1161
1182
  addressData[1] = workchain;
@@ -1183,8 +1204,9 @@ function crc16(data) {
1183
1204
  }
1184
1205
  return crc;
1185
1206
  }
1186
- function deriveTronAddress(seed) {
1207
+ async function deriveTronAddress(seed) {
1187
1208
  try {
1209
+ const { sha256, base58check } = await loadCrypto();
1188
1210
  const hdNode = HDNodeWallet.fromPhrase(seed, void 0, DERIVATION_PATHS2.tron);
1189
1211
  const ethAddressHex = hdNode.address.slice(2).toLowerCase();
1190
1212
  const addressBytes = new Uint8Array(21);
@@ -1199,8 +1221,9 @@ function deriveTronAddress(seed) {
1199
1221
  throw error;
1200
1222
  }
1201
1223
  }
1202
- function deriveSparkAddress(seed, network = "mainnet") {
1224
+ async function deriveSparkAddress(seed, network = "mainnet") {
1203
1225
  try {
1226
+ const { mnemonicToSeedSync, HDKey, sha256, ripemd160, bech32 } = await loadCrypto();
1204
1227
  const seedBytes = mnemonicToSeedSync(seed);
1205
1228
  const hdKey = HDKey.fromMasterSeed(seedBytes);
1206
1229
  const child = hdKey.derive(DERIVATION_PATHS2.spark);
@@ -1228,46 +1251,37 @@ async function deriveAllAddresses(seed, network = "mainnet") {
1228
1251
  solana: null,
1229
1252
  spark: null
1230
1253
  };
1254
+ await loadCrypto();
1231
1255
  try {
1232
1256
  addresses.ethereum = deriveEthereumAddress(seed);
1233
1257
  } catch (e) {
1234
1258
  console.error("ETH derivation failed:", e);
1235
1259
  }
1236
- try {
1237
- addresses.bitcoin = deriveBitcoinAddress(seed, network);
1238
- } catch (e) {
1239
- console.error("BTC derivation failed:", e);
1240
- }
1241
- try {
1242
- addresses.spark = deriveSparkAddress(seed, network);
1243
- } catch (e) {
1244
- console.error("Spark derivation failed:", e);
1245
- }
1246
- try {
1247
- addresses.tron = deriveTronAddress(seed);
1248
- } catch (e) {
1249
- console.error("TRON derivation failed:", e);
1250
- }
1251
- const [solResult, tonResult] = await Promise.allSettled([
1260
+ const [btcResult, sparkResult, tronResult, solResult, tonResult] = await Promise.allSettled([
1261
+ deriveBitcoinAddress(seed, network),
1262
+ deriveSparkAddress(seed, network),
1263
+ deriveTronAddress(seed),
1252
1264
  deriveSolanaAddress(seed),
1253
1265
  deriveTonAddress(seed)
1254
1266
  ]);
1255
- if (solResult.status === "fulfilled") {
1256
- addresses.solana = solResult.value;
1257
- } else {
1258
- console.error("SOL derivation failed:", solResult.reason);
1259
- }
1260
- if (tonResult.status === "fulfilled") {
1261
- addresses.ton = tonResult.value;
1262
- } else {
1263
- console.error("TON derivation failed:", tonResult.reason);
1264
- }
1267
+ if (btcResult.status === "fulfilled") addresses.bitcoin = btcResult.value;
1268
+ else console.error("BTC derivation failed:", btcResult.reason);
1269
+ if (sparkResult.status === "fulfilled") addresses.spark = sparkResult.value;
1270
+ else console.error("Spark derivation failed:", sparkResult.reason);
1271
+ if (tronResult.status === "fulfilled") addresses.tron = tronResult.value;
1272
+ else console.error("TRON derivation failed:", tronResult.reason);
1273
+ if (solResult.status === "fulfilled") addresses.solana = solResult.value;
1274
+ else console.error("SOL derivation failed:", solResult.reason);
1275
+ if (tonResult.status === "fulfilled") addresses.ton = tonResult.value;
1276
+ else console.error("TON derivation failed:", tonResult.reason);
1265
1277
  return addresses;
1266
1278
  }
1267
- function isValidSeed(seed) {
1279
+ async function isValidSeed(seed) {
1280
+ const { validateMnemonic, wordlist } = await loadCrypto();
1268
1281
  return validateMnemonic(seed, wordlist);
1269
1282
  }
1270
- function generateSeedPhrase() {
1283
+ async function generateSeedPhrase() {
1284
+ const { generateMnemonic, wordlist } = await loadCrypto();
1271
1285
  return generateMnemonic(wordlist);
1272
1286
  }
1273
1287
 
@@ -1511,7 +1525,7 @@ var ZubariWdkService = class {
1511
1525
  };
1512
1526
  if (!addresses.spark) {
1513
1527
  try {
1514
- addresses.spark = deriveSparkAddress(seed, this.config.network);
1528
+ addresses.spark = await deriveSparkAddress(seed, this.config.network);
1515
1529
  } catch (e) {
1516
1530
  console.warn("Browser Spark derivation fallback failed:", e);
1517
1531
  }
@@ -1747,13 +1761,13 @@ var ZubariWdkService = class {
1747
1761
  address = deriveEthereumAddress(seed);
1748
1762
  break;
1749
1763
  case "bitcoin":
1750
- address = deriveBitcoinAddress(seed, this.config.network);
1764
+ address = await deriveBitcoinAddress(seed, this.config.network);
1751
1765
  break;
1752
1766
  case "tron":
1753
- address = deriveTronAddress(seed);
1767
+ address = await deriveTronAddress(seed);
1754
1768
  break;
1755
1769
  case "spark":
1756
- address = deriveSparkAddress(seed, this.config.network);
1770
+ address = await deriveSparkAddress(seed, this.config.network);
1757
1771
  break;
1758
1772
  case "solana":
1759
1773
  address = await deriveSolanaAddress(seed);