jsir 2.0.7 → 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,22 +36,65 @@ 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 (!vl(_data[key]) && vl(defaultVal)) {
55
- return 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
78
  gos: (key, defaultVal) => {
60
- if (!vl(_data[key]) && vl(defaultVal)) {
61
- _data[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
+ }
62
86
  }
63
- return _data[key]
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
64
97
  },
65
- set: (key, val) => _data[key] = val,
66
98
  del: (key) => {
67
99
  let val = _data[key]
68
100
  delete _data[key]
@@ -77,8 +109,6 @@ global.$newInput = false
77
109
  global.$workspaceMap = {}
78
110
  global.$defaultSpace = 'local'
79
111
 
80
- let _noAppendNextLine = true
81
-
82
112
  function getFileOpenExe(fileName) {
83
113
  fileName = trim(fileName);
84
114
  let strs = fileName.split('.')
@@ -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.7",
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 => {
@@ -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
  }