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 +3 -0
- package/cmd/oaa.js +53 -25
- package/package.json +1 -1
- package/util.js +13 -10
package/cleanEval.js
ADDED
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])
|
|
55
|
-
|
|
69
|
+
if (!vl(_data[key])) {
|
|
70
|
+
if (vl(defaultVal)) {
|
|
71
|
+
return defaultVal
|
|
72
|
+
} else {
|
|
73
|
+
return _data[key]
|
|
74
|
+
}
|
|
56
75
|
}
|
|
57
|
-
return
|
|
76
|
+
return _dealOnGet(key)
|
|
58
77
|
},
|
|
59
78
|
gos: (key, defaultVal) => {
|
|
60
|
-
if (!vl(_data[key])
|
|
61
|
-
|
|
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
|
|
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(
|
|
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 =
|
|
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
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(
|
|
335
|
+
function requireG(moduleName){
|
|
333
336
|
try {
|
|
334
|
-
let result = require(
|
|
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 + '/' +
|
|
342
|
+
let path = globalDirectories.npm.packages + '/' + moduleName;
|
|
340
343
|
if (!fs.existsSync(path)) {
|
|
341
|
-
console.log(warnStr(`npm install -g ${
|
|
342
|
-
throw `${
|
|
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(
|
|
350
|
+
async function importG(moduleName) {
|
|
348
351
|
try {
|
|
349
|
-
let result = await import(
|
|
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 + '/' +
|
|
357
|
+
let path = globalDirectories.npm.packages + '/' + moduleName;
|
|
355
358
|
if (!fs.existsSync(path)) {
|
|
356
|
-
console.log(warnStr(`npm install -g ${
|
|
357
|
-
throw `${
|
|
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
|
}
|