jsir 1.2.0 → 1.2.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.
- package/cmd/ooa.js +27 -6
- package/ethWeb.js +22 -11
- package/index.js +4 -2
- package/package.json +1 -1
package/cmd/ooa.js
CHANGED
|
@@ -322,7 +322,7 @@ async function dealInitData() {
|
|
|
322
322
|
try {
|
|
323
323
|
$i[initDataName] = await evalText(text)
|
|
324
324
|
} catch (e) {
|
|
325
|
-
$log(`$i.${initDataName} loading failed\n${e.stack}`);
|
|
325
|
+
$log(`$i.${initDataName} loading failed\n${e.stack || e}`);
|
|
326
326
|
}
|
|
327
327
|
if (!vl($i[initDataName])) {
|
|
328
328
|
warn(`$i.${initDataName} loading failed`)
|
|
@@ -346,13 +346,26 @@ function _nextLine(callback, preStr, hidden, resolve) {
|
|
|
346
346
|
input: process.stdin,
|
|
347
347
|
output: process.stdout
|
|
348
348
|
})
|
|
349
|
+
_rl.on("SIGINT", async () => {
|
|
350
|
+
if (_noAppendNextLine) {
|
|
351
|
+
process.exit(0);
|
|
352
|
+
} else {
|
|
353
|
+
_haveWrapperInput = true;
|
|
354
|
+
_rl.clearLine(0)
|
|
355
|
+
nextLine();
|
|
356
|
+
}
|
|
357
|
+
});
|
|
349
358
|
}
|
|
350
359
|
_haveStartRead = true
|
|
351
360
|
_haveWrapperInput = false
|
|
352
361
|
|
|
353
362
|
_rl._writeToOutput = function _writeToOutput(stringToWrite){
|
|
354
363
|
if(hidden && stringToWrite.indexOf("\n") === -1 && stringToWrite !== promitStr){
|
|
355
|
-
|
|
364
|
+
if (stringToWrite.indexOf(promitStr) === -1) {
|
|
365
|
+
_rl.output.write("*");
|
|
366
|
+
} else {
|
|
367
|
+
_rl.output.write(promitStr + stringToWrite.replace(promitStr, '').replace(/[\s\S]/g, '*'));
|
|
368
|
+
}
|
|
356
369
|
} else {
|
|
357
370
|
_rl.output.write(stringToWrite);
|
|
358
371
|
}
|
|
@@ -380,10 +393,9 @@ function _nextLine(callback, preStr, hidden, resolve) {
|
|
|
380
393
|
let promitStr = (preStr
|
|
381
394
|
|| ((callback && callback !== wrapperInput) ? "-> ":"")
|
|
382
395
|
|| [Object.values(global.$tips).filter(i => String(i)).join(','), repoTip].filter(i => i).join('-') + `> `)
|
|
383
|
-
|
|
384
|
-
|
|
396
|
+
promitStr = '\x1B[32m' + promitStr + '\x1B[39m'
|
|
397
|
+
_rl.setPrompt(promitStr);
|
|
385
398
|
_rl.prompt()
|
|
386
|
-
process.stdout.write('\x1B[39m')
|
|
387
399
|
}
|
|
388
400
|
|
|
389
401
|
async function nextText(callback, preStr, hidden) {
|
|
@@ -866,6 +878,9 @@ async function dealKeyword(str, strs, fstr, ostr) {
|
|
|
866
878
|
await fileLine(trim(ostr.join(' ')))
|
|
867
879
|
} else if (fstr === '%') {
|
|
868
880
|
listCmd(true)
|
|
881
|
+
} else if (fstr === 'q') {
|
|
882
|
+
console.log("Bye!")
|
|
883
|
+
process.exit(0)
|
|
869
884
|
} else {
|
|
870
885
|
await save(strs)
|
|
871
886
|
}
|
|
@@ -1018,6 +1033,7 @@ async function runCmd(str) {
|
|
|
1018
1033
|
let args = enrichArgs(str, text)
|
|
1019
1034
|
let argDef = getArgDef(text)
|
|
1020
1035
|
let argNames = Object.keys(argDef)
|
|
1036
|
+
let exactArg = {}
|
|
1021
1037
|
for (let i = 0; i<args.length; i++) {
|
|
1022
1038
|
let arg = args[i]
|
|
1023
1039
|
let pair = arg.split('=', 2).map(i => trim(i))
|
|
@@ -1031,10 +1047,14 @@ async function runCmd(str) {
|
|
|
1031
1047
|
if (argDef.hasOwnProperty(pair[0])) {
|
|
1032
1048
|
args[i] = argVal
|
|
1033
1049
|
delete args[argNames[i]]
|
|
1034
|
-
|
|
1050
|
+
exactArg[pair[0]] = argVal
|
|
1035
1051
|
}
|
|
1036
1052
|
}
|
|
1053
|
+
for (let key of Object.keys(exactArg)) {
|
|
1054
|
+
args[key] = exactArg[key]
|
|
1055
|
+
}
|
|
1037
1056
|
|
|
1057
|
+
delete args['[ParseError]']
|
|
1038
1058
|
let exit = false
|
|
1039
1059
|
for(let name of argNames) {
|
|
1040
1060
|
if (name.startsWith("_")) {
|
|
@@ -1111,6 +1131,7 @@ function getArgDef(text) {
|
|
|
1111
1131
|
argDef = eval(`(${exeStr || '{}'})`) || {}
|
|
1112
1132
|
} catch (e) {
|
|
1113
1133
|
$log(e.stack)
|
|
1134
|
+
argDef['[ParseError]'] = e.stack.split('\n')[0]
|
|
1114
1135
|
}
|
|
1115
1136
|
if (typeof argDef !== 'object') {
|
|
1116
1137
|
argDef = {}
|
package/ethWeb.js
CHANGED
|
@@ -154,7 +154,11 @@ function initRootWallet(mnemonic) {
|
|
|
154
154
|
getWallet(i) {
|
|
155
155
|
i = String(i)
|
|
156
156
|
if (!wallets[i]) {
|
|
157
|
-
|
|
157
|
+
if (/^\d+$/.test(i)) {
|
|
158
|
+
wallets[i] = ethers.Wallet.fromMnemonic(mnemonic, `m/44\'/60\'/0\'/0/${i}`)
|
|
159
|
+
} else {
|
|
160
|
+
wallets[i] = new ethers.Wallet(i);
|
|
161
|
+
}
|
|
158
162
|
}
|
|
159
163
|
return wallets[i]
|
|
160
164
|
},
|
|
@@ -411,16 +415,8 @@ async function tokenMap(address, web3) {
|
|
|
411
415
|
if (!address) {
|
|
412
416
|
return {name: '本币', decimals: 18, symbol: '本币'}
|
|
413
417
|
}
|
|
414
|
-
web3 = web3 || global.web3;
|
|
415
|
-
let chainId = global.chainId || await web3.getChainId()
|
|
416
|
-
if (!tokenMapCache[chainId]) {
|
|
417
|
-
tokenMapCache[chainId] = {}
|
|
418
|
-
}
|
|
419
|
-
let chainMap = tokenMapCache[chainId]
|
|
420
418
|
address = '0x' + address.toLowerCase().replace(/^0x/, '')
|
|
421
|
-
|
|
422
|
-
await getTokenMap([address], web3)
|
|
423
|
-
}
|
|
419
|
+
let chainMap = await getTokenMap([address], web3)
|
|
424
420
|
|
|
425
421
|
if (chainMap[address]) {
|
|
426
422
|
let decimals = chainMap[address].decimals
|
|
@@ -515,6 +511,20 @@ function getPairAmtNoFee(a, b, baseAmt) {
|
|
|
515
511
|
}
|
|
516
512
|
|
|
517
513
|
let tokenMapLoaded = {}
|
|
514
|
+
async function saveTokenMap(web3) {
|
|
515
|
+
web3 = web3 || global.web3;
|
|
516
|
+
let chainId = global.chainId || await web3.getChainId()
|
|
517
|
+
if (!tokenMapCache[chainId]) {
|
|
518
|
+
tokenMapCache[chainId] = {}
|
|
519
|
+
}
|
|
520
|
+
let chainMap = tokenMapCache[chainId]
|
|
521
|
+
let tokenMapFile = `tokenMap_${chainId}`
|
|
522
|
+
if (!tokenMapLoaded[chainId]) {
|
|
523
|
+
Object.assign(chainMap, objDataFile(tokenMapFile))
|
|
524
|
+
tokenMapLoaded[chainId] = true
|
|
525
|
+
}
|
|
526
|
+
objDataFile(tokenMapFile, () => chainMap);
|
|
527
|
+
}
|
|
518
528
|
async function getTokenMap(tokens, web3, batchNum, asyncNum) {
|
|
519
529
|
web3 = web3 || global.web3;
|
|
520
530
|
let chainId = global.chainId || await web3.getChainId()
|
|
@@ -1243,5 +1253,6 @@ module.exports = {
|
|
|
1243
1253
|
transferToken,
|
|
1244
1254
|
tokenApprove,
|
|
1245
1255
|
txnInputReplacer,
|
|
1246
|
-
abiDecoder
|
|
1256
|
+
abiDecoder,
|
|
1257
|
+
saveTokenMap
|
|
1247
1258
|
}
|
package/index.js
CHANGED
|
@@ -130,7 +130,8 @@ const {
|
|
|
130
130
|
transferToken,
|
|
131
131
|
tokenApprove,
|
|
132
132
|
txnInputReplacer,
|
|
133
|
-
abiDecoder
|
|
133
|
+
abiDecoder,
|
|
134
|
+
saveTokenMap
|
|
134
135
|
} = require('./ethWeb')
|
|
135
136
|
|
|
136
137
|
module.exports = {
|
|
@@ -261,5 +262,6 @@ module.exports = {
|
|
|
261
262
|
error,
|
|
262
263
|
txnInputReplacer,
|
|
263
264
|
parseSteps,
|
|
264
|
-
abiDecoder
|
|
265
|
+
abiDecoder,
|
|
266
|
+
saveTokenMap
|
|
265
267
|
}
|