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 +3 -0
- package/cmd/oaa.js +61 -33
- package/package.json +1 -1
- package/util.js +23 -16
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,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
|
|
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
|
-
|
|
60
|
-
_data[key]
|
|
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
|
|
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
|
-
|
|
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(
|
|
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 => {
|
|
@@ -135,7 +138,7 @@ function vl(obj) {
|
|
|
135
138
|
return !Number.isNaN(obj)
|
|
136
139
|
}
|
|
137
140
|
if (typeof obj === 'string') {
|
|
138
|
-
obj = trim(
|
|
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(
|
|
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
|
}
|
|
@@ -399,10 +402,7 @@ function aesDecipher(str, key){
|
|
|
399
402
|
}
|
|
400
403
|
}
|
|
401
404
|
|
|
402
|
-
function getConfig(key, defaultVal
|
|
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] =
|
|
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)
|