Comparing version 0.1.0 to 0.2.0
@@ -234,2 +234,42 @@ "use strict"; | ||
} | ||
async function exportWalletForTon(client, store) { | ||
let res = await (0, enquirer_1.prompt)([{ | ||
type: 'select', | ||
name: 'export_wallet', | ||
message: 'Export Wallet', | ||
initial: 0, | ||
choices: store.allKeys.map((v) => ({ | ||
name: v.name, | ||
message: v.name, | ||
hint: v.address.toFriendly() | ||
})) | ||
}, { | ||
type: 'input', | ||
name: 'name', | ||
message: 'File name (without extension)', | ||
initial: 'wallet_0001', | ||
validate: (src) => { | ||
if (src.trim().length === 0) { | ||
return 'Name couldn\'t be empty'; | ||
} | ||
else { | ||
return true; | ||
} | ||
} | ||
}]); | ||
// Ask for store password | ||
const password = await (0, askPassword_1.askPassword)(store); | ||
// Read key | ||
const spinner = (0, ora_1.default)('Loading key').start(); | ||
let source = store.allKeys.find((v) => v.name === res.export_wallet).address; | ||
let mnemonics = (await store.getSecret(res.export_wallet, password)).toString().split(' '); | ||
if (!(await (0, ton_crypto_1.mnemonicValidate)(mnemonics))) { | ||
throw Error('Mnemonics are invalid'); | ||
} | ||
let key = await (0, ton_crypto_1.mnemonicToWalletKey)(mnemonics); | ||
let wallet = await client.openWalletDefaultFromSecretKey({ workchain: source.workChain, secretKey: key.secretKey }); | ||
fs_1.default.writeFileSync(res.name + '.addr', wallet.address.toBuffer()); | ||
fs_1.default.writeFileSync(res.name + '.pk', key.secretKey.slice(0, 32)); | ||
spinner.succeed('Written files ' + res.name + '.addr' + ' and ' + res.name + '.pk'); | ||
} | ||
async function viewKeystore(config) { | ||
@@ -251,2 +291,3 @@ const store = await (0, openKeystore_1.openKeystore)(); | ||
{ message: 'Create wallets', name: 'create-keys' }, | ||
{ message: 'Export wallet for TON Node', name: 'export-wallet' }, | ||
{ message: 'Import wallets', name: 'import-keys' }, | ||
@@ -277,2 +318,5 @@ { message: 'Backup wallets', name: 'backup-keys' }, | ||
} | ||
if (res.command === 'export-wallet') { | ||
await exportWalletForTon(client, store.store); | ||
} | ||
if (res.command === 'exit') { | ||
@@ -279,0 +323,0 @@ return; |
{ | ||
"name": "ton-cli", | ||
"version": "0.1.0", | ||
"version": "0.2.0", | ||
"repository": "https://github.com/ex3ndr/ton-cli.git", | ||
@@ -5,0 +5,0 @@ "author": "Steve Korshakov <steve@korshakov.com>", |
@@ -8,4 +8,5 @@ # TON CLI | ||
## Features | ||
- 🚀 Works anywhere and does not require to install local TON node | ||
- 🔐 Encrypted storage of wallets | ||
- 🚀 Multiple wallets (even thousands of them if you wish) | ||
- 💸 Multiple wallets (even thousands of them if you wish) | ||
- 🍰 Get balance | ||
@@ -12,0 +13,0 @@ - ✈️ Transfers |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
29786
682
58
0