jsir 2.0.6 → 2.0.8

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/cleanEval.js ADDED
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ evalVal: (exeStr) => eval(`(${exeStr})`)
3
+ }
package/cmd/oaa.js CHANGED
@@ -1,16 +1,4 @@
1
1
  #!/usr/bin/env node
2
- const path = require('path');
3
- const {spawnSync} = require('child_process');
4
- const globalDirectories = require('global-dirs');
5
- let nodePath = process.env.NODE_PATH ? process.env.NODE_PATH.trim():'';
6
- let avoidFlag = path.delimiter + path.delimiter + path.delimiter;
7
- if (!nodePath.endsWith(avoidFlag) && nodePath.indexOf(globalDirectories.npm.packages) === -1) {
8
- process.env.NODE_PATH = [globalDirectories.npm.packages, nodePath].filter(i => i).join(path.delimiter) + avoidFlag
9
- process.on('SIGINT', function () {});
10
- spawnSync(process.argv[0], process.argv.slice(1), {stdio:"inherit"});
11
- return;
12
- }
13
-
14
2
  const $lib = require('../util');
15
3
  const {
16
4
  getLibDataDir, trim, regEach, getConfig, mkdir, reget,
@@ -22,6 +10,7 @@ const {
22
10
  } = $lib;
23
11
  const _args = process.argv.slice(2).map(trim);
24
12
  const evalCode = require('../evalCode')
13
+ const {evalVal} = require('../cleanEval')
25
14
  const _chokidar = require('chokidar');
26
15
  const setting = require('../setting')
27
16
  const _fs = require('fs')
@@ -47,20 +36,69 @@ let _rl
47
36
  let _rlHistory = []
48
37
  let _haveWrapperInput = true
49
38
  let _exit = false
39
+ let _noAppendNextLine = true
50
40
 
41
+ const _onGetMap = {}
51
42
  const _data = {}
43
+ const _dealOnGet = (key) => {
44
+ if (_noAppendNextLine || !_onGetMap[key]) {
45
+ return _data[key]
46
+ }
47
+ let item = _onGetMap[key]
48
+ if (Date.now() <= item.startTime) {
49
+ return _data[key]
50
+ }
51
+ let flag = _onGetMap[key].fn()
52
+ if (getType(flag)=== 'Promise') {
53
+ return new Promise(async (resolve, reject) => {
54
+ try {
55
+ await flag
56
+ item.startTime = Date.now() + (9 * 1000)
57
+ resolve(_data[key])
58
+ } catch (e) {
59
+ reject(e)
60
+ }
61
+ })
62
+ } else {
63
+ item.startTime = Date.now() + (9 * 1000)
64
+ return _data[key]
65
+ }
66
+ }
52
67
  const $data = {
53
68
  get: (key, defaultVal) => {
54
- if (!(key in _data) && defaultVal !== undefined) {
55
- _data[key] = defaultVal
69
+ if (!vl(_data[key])) {
70
+ if (vl(defaultVal)) {
71
+ return defaultVal
72
+ } else {
73
+ return _data[key]
74
+ }
56
75
  }
57
- return _data[key]
76
+ return _dealOnGet(key)
58
77
  },
59
- set: (key, val) => {
60
- _data[key] = val
78
+ gos: (key, defaultVal) => {
79
+ if (!vl(_data[key])) {
80
+ if (vl(defaultVal)) {
81
+ _data[key] = defaultVal
82
+ return defaultVal
83
+ } else {
84
+ return _data[key]
85
+ }
86
+ }
87
+ return _dealOnGet(key)
88
+ },
89
+ set: (key, val, onGet) => {
90
+ if (onGet) {
91
+ _onGetMap[key] = {
92
+ fn: onGet,
93
+ startTime: Date.now() + (9 * 1000)
94
+ }
95
+ }
96
+ return _data[key] = val
61
97
  },
62
98
  del: (key) => {
99
+ let val = _data[key]
63
100
  delete _data[key]
101
+ return val
64
102
  },
65
103
  keys: () => Object.keys(_data)
66
104
  }
@@ -71,8 +109,6 @@ global.$newInput = false
71
109
  global.$workspaceMap = {}
72
110
  global.$defaultSpace = 'local'
73
111
 
74
- let _noAppendNextLine = true
75
-
76
112
  function getFileOpenExe(fileName) {
77
113
  fileName = trim(fileName);
78
114
  let strs = fileName.split('.')
@@ -80,12 +116,11 @@ function getFileOpenExe(fileName) {
80
116
  if (strs.length > 1) {
81
117
  suffix = strs[strs.length - 1]
82
118
  }
119
+ let defaultExe = getConfig("defaultExe", "idea");
83
120
  if (!suffix) {
84
- return 'idea'
121
+ return defaultExe
85
122
  }
86
-
87
- let exe = getConfig(`${suffix}_exe`)
88
- return exe || 'idea';
123
+ return getConfig(`${suffix}_exe`, defaultExe);
89
124
  }
90
125
 
91
126
  function checkWorkspaces() {
@@ -121,12 +156,7 @@ async function start() {
121
156
  }).join(' ')
122
157
  await wrapperInput(line)
123
158
  } else {
124
- let defaultAction = getConfig("defaultAction", "repl");
125
- if (defaultAction && keywordDef[defaultAction]) {
126
- await wrapperInput('.' + defaultAction)
127
- } else {
128
- await wrapperInput('.repl')
129
- }
159
+ await wrapperInput(getConfig("defaultAction", ".repl"))
130
160
  }
131
161
  }
132
162
 
@@ -975,10 +1005,8 @@ const keywordDef = {
975
1005
  return
976
1006
  }
977
1007
  let cmds = filterCmd('^e ' + toJsirFileName(args[0]).replace(/^[eif]\s+/, '') + '$')
978
- _cmdMap = arrayToCmdMap(cmds)
979
- listCmd()
980
1008
  if (cmds.length === 1) {
981
- await runCmd('1 ' + args.slice(1).join(' '))
1009
+ await runCmd(args.slice(1).join(' '), cmds[0])
982
1010
  }
983
1011
  },
984
1012
  args: {
@@ -1371,7 +1399,7 @@ function getArgDef(text) {
1371
1399
  let exeStr = trim(reget(text, /\$defArgs\(\s*(\{[\s\S]*?\})\s*\)/))
1372
1400
  let argDef = {}
1373
1401
  try {
1374
- argDef = eval(`(${exeStr || '{}'})`) || {}
1402
+ argDef = (exeStr ? evalVal(exeStr) : {}) || {}
1375
1403
  let array = []
1376
1404
  for (let key of Object.keys(argDef)) {
1377
1405
  if (array.hasOwnProperty(key)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsir",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "description": "js script manager tool",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/util.js CHANGED
@@ -18,6 +18,9 @@ const emptyFn = ()=>{}
18
18
  const dayJs = require('dayjs')
19
19
  const table = require('console.table')
20
20
  const _fs = require("fs");
21
+ if (module.paths.indexOf(globalDirectories.npm.packages) === -1) {
22
+ module.paths.push(globalDirectories.npm.packages)
23
+ }
21
24
 
22
25
  let _globalLog = createLimitLogger2(`${setting.name}.log`, null, false)
23
26
  const $log = str => {
@@ -135,7 +138,7 @@ function vl(obj) {
135
138
  return !Number.isNaN(obj)
136
139
  }
137
140
  if (typeof obj === 'string') {
138
- obj = trim(obj)
141
+ obj = obj.trim()
139
142
  }
140
143
  return !(obj === null || obj === undefined || obj === '')
141
144
  }
@@ -329,32 +332,32 @@ function dataFile(fileName, fn, fmt, defaultObj = {}, returnStr = false) {
329
332
  }
330
333
  }
331
334
 
332
- function requireG(module){
335
+ function requireG(moduleName){
333
336
  try {
334
- let result = require(module);
337
+ let result = require(moduleName);
335
338
  if (result) {
336
339
  return result
337
340
  }
338
341
  } catch (e) {}
339
- let path = globalDirectories.npm.packages + '/' + module;
342
+ let path = globalDirectories.npm.packages + '/' + moduleName;
340
343
  if (!fs.existsSync(path)) {
341
- console.log(warnStr(`npm install -g ${module}`))
342
- throw `${module} not found, use above cmd to install it`;
344
+ console.log(warnStr(`npm install -g ${moduleName}`))
345
+ throw `${moduleName} not found, use above cmd to install it`;
343
346
  }
344
347
  return require(path);
345
348
  }
346
349
 
347
- async function importG(module) {
350
+ async function importG(moduleName) {
348
351
  try {
349
- let result = await import(module);
352
+ let result = await import(moduleName);
350
353
  if (result) {
351
354
  return result
352
355
  }
353
356
  } catch (e) {}
354
- let path = globalDirectories.npm.packages + '/' + module;
357
+ let path = globalDirectories.npm.packages + '/' + moduleName;
355
358
  if (!fs.existsSync(path)) {
356
- console.log(warnStr(`npm install -g ${module}`))
357
- throw `${module} not found, use above cmd to install it`;
359
+ console.log(warnStr(`npm install -g ${moduleName}`))
360
+ throw `${moduleName} not found, use above cmd to install it`;
358
361
  }
359
362
  return await import(path);
360
363
  }
@@ -399,10 +402,7 @@ function aesDecipher(str, key){
399
402
  }
400
403
  }
401
404
 
402
- function getConfig(key, defaultVal = null) {
403
- if (typeof defaultVal === "string") {
404
- defaultVal = trim(defaultVal)
405
- }
405
+ function getConfig(key, defaultVal) {
406
406
  let configInit = {}
407
407
  let configFile = getLibDataDir() + '/config.json';
408
408
  if (!fs.existsSync(configFile)) {
@@ -416,11 +416,18 @@ function getConfig(key, defaultVal = null) {
416
416
  let writeFlag = false
417
417
  if (!(key in config)) {
418
418
  writeFlag = true
419
- config[key] = defaultVal
419
+ config[key] = null
420
420
  }
421
421
  if (writeFlag) {
422
422
  fs.writeFileSync(configFile, JSON.stringify(config, null, 2))
423
423
  }
424
+
425
+ if (typeof defaultVal === "string") {
426
+ defaultVal = trim(defaultVal)
427
+ }
428
+ if (!vl(config[key]) && vl(defaultVal)) {
429
+ return defaultVal
430
+ }
424
431
  let val = config[key]
425
432
  if (typeof val === "string") {
426
433
  val = trim(val)