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 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
- _rl.output.write("*");
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
- _rl.setPrompt(promitStr)
393
- process.stdout.write('\x1B[32m')
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
- args[pair[0]] = argVal
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 {mkdir, getLibDataDir, trim, got, toBigNum, getConfig, objDataFile,
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
- wallets[i] = ethers.Wallet.fromMnemonic(mnemonic, `m/44\'/60\'/0\'/0/${i}`)
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
- if (!chainMap[address]) {
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
- async function getTokenMap(tokens, web3, batchNum, asyncNum) {
514
+ let tokenMapLoadSize = {}
515
+ async function saveTokenMap(web3) {
519
516
  web3 = web3 || global.web3;
520
517
  let chainId = global.chainId || await web3.getChainId()
521
- if (!tokenMapCache[chainId]) {
522
- tokenMapCache[chainId] = {}
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
- let chainMap = tokenMapCache[chainId]
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
- Object.assign(chainMap, objDataFile(tokenMapFile))
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsir",
3
- "version": "1.2.1",
3
+ "version": "1.2.6",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {