jsir 1.2.1 → 1.2.6
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 +16 -7
- package/ethWeb.js +30 -19
- 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`)
|
|
@@ -361,7 +361,11 @@ function _nextLine(callback, preStr, hidden, resolve) {
|
|
|
361
361
|
|
|
362
362
|
_rl._writeToOutput = function _writeToOutput(stringToWrite){
|
|
363
363
|
if(hidden && stringToWrite.indexOf("\n") === -1 && stringToWrite !== promitStr){
|
|
364
|
-
|
|
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
|
+
}
|
|
365
369
|
} else {
|
|
366
370
|
_rl.output.write(stringToWrite);
|
|
367
371
|
}
|
|
@@ -389,10 +393,9 @@ function _nextLine(callback, preStr, hidden, resolve) {
|
|
|
389
393
|
let promitStr = (preStr
|
|
390
394
|
|| ((callback && callback !== wrapperInput) ? "-> ":"")
|
|
391
395
|
|| [Object.values(global.$tips).filter(i => String(i)).join(','), repoTip].filter(i => i).join('-') + `> `)
|
|
392
|
-
|
|
393
|
-
|
|
396
|
+
promitStr = '\x1B[32m' + promitStr + '\x1B[39m'
|
|
397
|
+
_rl.setPrompt(promitStr);
|
|
394
398
|
_rl.prompt()
|
|
395
|
-
process.stdout.write('\x1B[39m')
|
|
396
399
|
}
|
|
397
400
|
|
|
398
401
|
async function nextText(callback, preStr, hidden) {
|
|
@@ -1030,9 +1033,10 @@ async function runCmd(str) {
|
|
|
1030
1033
|
let args = enrichArgs(str, text)
|
|
1031
1034
|
let argDef = getArgDef(text)
|
|
1032
1035
|
let argNames = Object.keys(argDef)
|
|
1036
|
+
let exactArg = {}
|
|
1033
1037
|
for (let i = 0; i<args.length; i++) {
|
|
1034
1038
|
let arg = args[i]
|
|
1035
|
-
let pair = arg.split('=', 2).map(i => trim(i))
|
|
1039
|
+
let pair = arg.indexOf('=') === -1 ? [] : arg.split('=', 2).map(i => trim(i))
|
|
1036
1040
|
let argVal = argDef.hasOwnProperty(pair[0]) ? pair[1]:arg
|
|
1037
1041
|
argVal = translateArgs(argVal)
|
|
1038
1042
|
|
|
@@ -1043,10 +1047,14 @@ async function runCmd(str) {
|
|
|
1043
1047
|
if (argDef.hasOwnProperty(pair[0])) {
|
|
1044
1048
|
args[i] = argVal
|
|
1045
1049
|
delete args[argNames[i]]
|
|
1046
|
-
|
|
1050
|
+
exactArg[pair[0]] = argVal
|
|
1047
1051
|
}
|
|
1048
1052
|
}
|
|
1053
|
+
for (let key of Object.keys(exactArg)) {
|
|
1054
|
+
args[key] = exactArg[key]
|
|
1055
|
+
}
|
|
1049
1056
|
|
|
1057
|
+
delete args['[ParseError]']
|
|
1050
1058
|
let exit = false
|
|
1051
1059
|
for(let name of argNames) {
|
|
1052
1060
|
if (name.startsWith("_")) {
|
|
@@ -1123,6 +1131,7 @@ function getArgDef(text) {
|
|
|
1123
1131
|
argDef = eval(`(${exeStr || '{}'})`) || {}
|
|
1124
1132
|
} catch (e) {
|
|
1125
1133
|
$log(e.stack)
|
|
1134
|
+
argDef['[ParseError]'] = e.stack.split('\n')[0]
|
|
1126
1135
|
}
|
|
1127
1136
|
if (typeof argDef !== 'object') {
|
|
1128
1137
|
argDef = {}
|
package/ethWeb.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const https = require('https');
|
|
2
2
|
const BigNumber = require('bignumber.js');
|
|
3
|
-
let {
|
|
4
|
-
eFn, removeFirst, randomInt, splitArray, sleep, vl, cacheFn, isError, bMin} = require('./util')
|
|
3
|
+
let {getLibDataDir, trim, toBigNum, getConfig, objDataFile,
|
|
4
|
+
eFn, removeFirst, randomInt, splitArray, sleep, vl, cacheFn, isError, bMin, getOr} = require('./util')
|
|
5
5
|
const abiDecoder = require('abi-decoder');
|
|
6
6
|
let fs = require('fs')
|
|
7
7
|
let contractMapPath = getLibDataDir() + "/contractMap.json"
|
|
@@ -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,17 +511,31 @@ function getPairAmtNoFee(a, b, baseAmt) {
|
|
|
515
511
|
}
|
|
516
512
|
|
|
517
513
|
let tokenMapLoaded = {}
|
|
518
|
-
|
|
514
|
+
let tokenMapLoadSize = {}
|
|
515
|
+
async function saveTokenMap(web3) {
|
|
519
516
|
web3 = web3 || global.web3;
|
|
520
517
|
let chainId = global.chainId || await web3.getChainId()
|
|
521
|
-
|
|
522
|
-
|
|
518
|
+
let chainMap = getOr(tokenMapCache, chainId, {})
|
|
519
|
+
let tokenMapFile = `tokenMap_${chainId}`
|
|
520
|
+
if (!tokenMapLoaded[chainId]) {
|
|
521
|
+
let temp = objDataFile(tokenMapFile)
|
|
522
|
+
tokenMapLoadSize[chainId] = Object.keys(temp).length
|
|
523
|
+
Object.assign(chainMap, temp)
|
|
524
|
+
tokenMapLoaded[chainId] = true
|
|
523
525
|
}
|
|
524
|
-
|
|
525
|
-
|
|
526
|
+
if (Object.keys(chainMap).length > tokenMapLoadSize[chainId]) {
|
|
527
|
+
await objDataFile(tokenMapFile, () => chainMap);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
async function getTokenMap(tokens, web3, batchNum, asyncNum) {
|
|
531
|
+
web3 = web3 || global.web3;
|
|
532
|
+
let chainId = global.chainId || await web3.getChainId()
|
|
533
|
+
let chainMap = getOr(tokenMapCache, chainId, {})
|
|
526
534
|
if (!tokenMapLoaded[chainId]) {
|
|
527
535
|
let tokenMapFile = `tokenMap_${chainId}`
|
|
528
|
-
|
|
536
|
+
let temp = objDataFile(tokenMapFile)
|
|
537
|
+
tokenMapLoadSize[chainId] = Object.keys(temp).length
|
|
538
|
+
Object.assign(chainMap, temp)
|
|
529
539
|
tokenMapLoaded[chainId] = true
|
|
530
540
|
}
|
|
531
541
|
|
|
@@ -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
|
}
|