@zubari/sdk 0.5.6 → 0.5.7

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,4 +1,10 @@
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';
2
8
 
3
9
  var __defProp = Object.defineProperty;
4
10
  var __export = (target, all) => {
@@ -1095,37 +1101,12 @@ var DERIVATION_PATHS2 = {
1095
1101
  solana: `${DERIVATION_PATHS.solana}/0'`,
1096
1102
  spark: `${DERIVATION_PATHS.spark}/0`
1097
1103
  };
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'),
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
- }
1122
1104
  function deriveEthereumAddress(seed) {
1123
1105
  const hdNode = HDNodeWallet.fromPhrase(seed, void 0, DERIVATION_PATHS2.ethereum);
1124
1106
  return hdNode.address;
1125
1107
  }
1126
- async function deriveBitcoinAddress(seed, network = "mainnet") {
1108
+ function deriveBitcoinAddress(seed, network = "mainnet") {
1127
1109
  try {
1128
- const { mnemonicToSeedSync, HDKey, sha256, ripemd160, bech32 } = await loadCrypto();
1129
1110
  const seedBytes = mnemonicToSeedSync(seed);
1130
1111
  const hdKey = HDKey.fromMasterSeed(seedBytes);
1131
1112
  const path = network === "testnet" ? DERIVATION_PATHS2.bitcoin_testnet : DERIVATION_PATHS2.bitcoin_mainnet;
@@ -1147,14 +1128,13 @@ async function deriveBitcoinAddress(seed, network = "mainnet") {
1147
1128
  }
1148
1129
  async function deriveSolanaAddress(seed) {
1149
1130
  try {
1150
- const [crypto, ed25519, nacl, bs58Module] = await Promise.all([
1151
- loadCrypto(),
1131
+ const [ed25519, nacl, bs58Module] = await Promise.all([
1152
1132
  import('ed25519-hd-key'),
1153
1133
  import('tweetnacl'),
1154
1134
  import('bs58')
1155
1135
  ]);
1156
1136
  const bs58 = bs58Module.default || bs58Module;
1157
- const seedBytes = crypto.mnemonicToSeedSync(seed);
1137
+ const seedBytes = mnemonicToSeedSync(seed);
1158
1138
  const derived = ed25519.derivePath(DERIVATION_PATHS2.solana, Buffer.from(seedBytes).toString("hex"));
1159
1139
  const keypair = nacl.sign.keyPair.fromSeed(new Uint8Array(derived.key));
1160
1140
  return bs58.encode(keypair.publicKey);
@@ -1165,18 +1145,17 @@ async function deriveSolanaAddress(seed) {
1165
1145
  }
1166
1146
  async function deriveTonAddress(seed) {
1167
1147
  try {
1168
- const [crypto, ed25519, nacl] = await Promise.all([
1169
- loadCrypto(),
1148
+ const [ed25519, nacl] = await Promise.all([
1170
1149
  import('ed25519-hd-key'),
1171
1150
  import('tweetnacl')
1172
1151
  ]);
1173
- const seedBytes = crypto.mnemonicToSeedSync(seed);
1152
+ const seedBytes = mnemonicToSeedSync(seed);
1174
1153
  const derived = ed25519.derivePath(DERIVATION_PATHS2.ton, Buffer.from(seedBytes).toString("hex"));
1175
1154
  const keypair = nacl.sign.keyPair.fromSeed(new Uint8Array(derived.key));
1176
1155
  const publicKey = keypair.publicKey;
1177
1156
  const workchain = 0;
1178
1157
  const flags = 17;
1179
- const hash = crypto.sha256(publicKey);
1158
+ const hash = sha256(publicKey);
1180
1159
  const addressData = new Uint8Array(34);
1181
1160
  addressData[0] = flags;
1182
1161
  addressData[1] = workchain;
@@ -1204,9 +1183,8 @@ function crc16(data) {
1204
1183
  }
1205
1184
  return crc;
1206
1185
  }
1207
- async function deriveTronAddress(seed) {
1186
+ function deriveTronAddress(seed) {
1208
1187
  try {
1209
- const { sha256, base58check } = await loadCrypto();
1210
1188
  const hdNode = HDNodeWallet.fromPhrase(seed, void 0, DERIVATION_PATHS2.tron);
1211
1189
  const ethAddressHex = hdNode.address.slice(2).toLowerCase();
1212
1190
  const addressBytes = new Uint8Array(21);
@@ -1221,9 +1199,8 @@ async function deriveTronAddress(seed) {
1221
1199
  throw error;
1222
1200
  }
1223
1201
  }
1224
- async function deriveSparkAddress(seed, network = "mainnet") {
1202
+ function deriveSparkAddress(seed, network = "mainnet") {
1225
1203
  try {
1226
- const { mnemonicToSeedSync, HDKey, sha256, ripemd160, bech32 } = await loadCrypto();
1227
1204
  const seedBytes = mnemonicToSeedSync(seed);
1228
1205
  const hdKey = HDKey.fromMasterSeed(seedBytes);
1229
1206
  const child = hdKey.derive(DERIVATION_PATHS2.spark);
@@ -1251,37 +1228,46 @@ async function deriveAllAddresses(seed, network = "mainnet") {
1251
1228
  solana: null,
1252
1229
  spark: null
1253
1230
  };
1254
- await loadCrypto();
1255
1231
  try {
1256
1232
  addresses.ethereum = deriveEthereumAddress(seed);
1257
1233
  } catch (e) {
1258
1234
  console.error("ETH derivation failed:", e);
1259
1235
  }
1260
- const [btcResult, sparkResult, tronResult, solResult, tonResult] = await Promise.allSettled([
1261
- deriveBitcoinAddress(seed, network),
1262
- deriveSparkAddress(seed, network),
1263
- deriveTronAddress(seed),
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([
1264
1252
  deriveSolanaAddress(seed),
1265
1253
  deriveTonAddress(seed)
1266
1254
  ]);
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);
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
+ }
1277
1265
  return addresses;
1278
1266
  }
1279
- async function isValidSeed(seed) {
1280
- const { validateMnemonic, wordlist } = await loadCrypto();
1267
+ function isValidSeed(seed) {
1281
1268
  return validateMnemonic(seed, wordlist);
1282
1269
  }
1283
- async function generateSeedPhrase() {
1284
- const { generateMnemonic, wordlist } = await loadCrypto();
1270
+ function generateSeedPhrase() {
1285
1271
  return generateMnemonic(wordlist);
1286
1272
  }
1287
1273
 
@@ -1525,7 +1511,7 @@ var ZubariWdkService = class {
1525
1511
  };
1526
1512
  if (!addresses.spark) {
1527
1513
  try {
1528
- addresses.spark = await deriveSparkAddress(seed, this.config.network);
1514
+ addresses.spark = deriveSparkAddress(seed, this.config.network);
1529
1515
  } catch (e) {
1530
1516
  console.warn("Browser Spark derivation fallback failed:", e);
1531
1517
  }
@@ -1761,13 +1747,13 @@ var ZubariWdkService = class {
1761
1747
  address = deriveEthereumAddress(seed);
1762
1748
  break;
1763
1749
  case "bitcoin":
1764
- address = await deriveBitcoinAddress(seed, this.config.network);
1750
+ address = deriveBitcoinAddress(seed, this.config.network);
1765
1751
  break;
1766
1752
  case "tron":
1767
- address = await deriveTronAddress(seed);
1753
+ address = deriveTronAddress(seed);
1768
1754
  break;
1769
1755
  case "spark":
1770
- address = await deriveSparkAddress(seed, this.config.network);
1756
+ address = deriveSparkAddress(seed, this.config.network);
1771
1757
  break;
1772
1758
  case "solana":
1773
1759
  address = await deriveSolanaAddress(seed);