jsir 1.2.3 → 1.2.4

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
@@ -1033,6 +1033,7 @@ async function runCmd(str) {
1033
1033
  let args = enrichArgs(str, text)
1034
1034
  let argDef = getArgDef(text)
1035
1035
  let argNames = Object.keys(argDef)
1036
+ let exactArg = {}
1036
1037
  for (let i = 0; i<args.length; i++) {
1037
1038
  let arg = args[i]
1038
1039
  let pair = arg.split('=', 2).map(i => trim(i))
@@ -1046,10 +1047,14 @@ async function runCmd(str) {
1046
1047
  if (argDef.hasOwnProperty(pair[0])) {
1047
1048
  args[i] = argVal
1048
1049
  delete args[argNames[i]]
1049
- args[pair[0]] = argVal
1050
+ exactArg[pair[0]] = argVal
1050
1051
  }
1051
1052
  }
1053
+ for (let key of Object.keys(exactArg)) {
1054
+ args[key] = exactArg[key]
1055
+ }
1052
1056
 
1057
+ delete args['[ParseError]']
1053
1058
  let exit = false
1054
1059
  for(let name of argNames) {
1055
1060
  if (name.startsWith("_")) {
@@ -1126,6 +1131,7 @@ function getArgDef(text) {
1126
1131
  argDef = eval(`(${exeStr || '{}'})`) || {}
1127
1132
  } catch (e) {
1128
1133
  $log(e.stack)
1134
+ argDef['[ParseError]'] = e.stack.split('\n')[0]
1129
1135
  }
1130
1136
  if (typeof argDef !== 'object') {
1131
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
- 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,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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsir",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {