jsir 2.0.5 → 2.0.7
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/oaa.js +50 -65
- package/index.js +1 -2
- package/package.json +1 -1
- package/util.js +10 -6
- package/cmd/configServer.js +0 -31
- package/cmd/dirServer.js +0 -61
- package/cmd/ethDataServer.js +0 -77
- package/cmd/mockServer.js +0 -119
- package/cmd/see.js +0 -67
- package/cmd/solCd.js +0 -5
- package/cmd/solComplie.js +0 -4
- package/cmd/solDeploy.js +0 -4
- package/cmd/solTest.js +0 -7
- package/cmd/solTt.js +0 -10
- package/cmd/staticServer.js +0 -18
- package/sol.js +0 -340
- package/source/change.txt +0 -2038
- package/source/gua.json +0 -10
- package/source/pos.json +0 -8
package/cmd/oaa.js
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const $lib = require('../util');
|
|
3
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
|
+
const $lib = require('../util');
|
|
4
15
|
const {
|
|
5
16
|
getLibDataDir, trim, regEach, getConfig, mkdir, reget,
|
|
6
17
|
getCbText, e, sleep, objDataFile, vl, md5, BigNumber,
|
|
7
18
|
info, warn, error, arrayDataFile, infoStr, warnStr, errorStack,
|
|
8
19
|
getInfo, ei, pad, msgStr, getType,
|
|
9
20
|
errorTag, isArgsMatch, draftQuery, setConfig,
|
|
10
|
-
$log, $draft, getTextComments
|
|
21
|
+
$log, $draft, getTextComments
|
|
11
22
|
} = $lib;
|
|
12
|
-
const _args = process.argv.slice(2).map(trim)
|
|
13
|
-
let nodePath = trim(process.env.NODE_PATH)
|
|
14
|
-
let avoidFlag = path.delimiter + path.delimiter + path.delimiter;
|
|
15
|
-
if (!nodePath.endsWith(avoidFlag) && nodePath.indexOf(globalModulesPath) === -1) {
|
|
16
|
-
process.env.NODE_PATH = [globalModulesPath, nodePath].filter(i => i).join(path.delimiter) + avoidFlag
|
|
17
|
-
process.on('SIGINT', function () {});
|
|
18
|
-
ei(`jsir`, _args);
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
|
|
23
|
+
const _args = process.argv.slice(2).map(trim);
|
|
22
24
|
const evalCode = require('../evalCode')
|
|
23
25
|
const _chokidar = require('chokidar');
|
|
24
26
|
const setting = require('../setting')
|
|
@@ -27,7 +29,6 @@ const readline = require("readline");
|
|
|
27
29
|
|
|
28
30
|
const _workspaceConfigFile = 'workspace.json';
|
|
29
31
|
const _libDataDir = getLibDataDir()
|
|
30
|
-
const _history9 = []
|
|
31
32
|
const _tipsOnRm = {}
|
|
32
33
|
const _fileWatcherMap = {}
|
|
33
34
|
const _types = {
|
|
@@ -50,16 +51,22 @@ let _exit = false
|
|
|
50
51
|
const _data = {}
|
|
51
52
|
const $data = {
|
|
52
53
|
get: (key, defaultVal) => {
|
|
53
|
-
if (!(key
|
|
54
|
-
|
|
54
|
+
if (!vl(_data[key]) && vl(defaultVal)) {
|
|
55
|
+
return defaultVal
|
|
55
56
|
}
|
|
56
57
|
return _data[key]
|
|
57
58
|
},
|
|
58
|
-
|
|
59
|
-
_data[key]
|
|
59
|
+
gos: (key, defaultVal) => {
|
|
60
|
+
if (!vl(_data[key]) && vl(defaultVal)) {
|
|
61
|
+
_data[key] = defaultVal
|
|
62
|
+
}
|
|
63
|
+
return _data[key]
|
|
60
64
|
},
|
|
65
|
+
set: (key, val) => _data[key] = val,
|
|
61
66
|
del: (key) => {
|
|
67
|
+
let val = _data[key]
|
|
62
68
|
delete _data[key]
|
|
69
|
+
return val
|
|
63
70
|
},
|
|
64
71
|
keys: () => Object.keys(_data)
|
|
65
72
|
}
|
|
@@ -79,12 +86,11 @@ function getFileOpenExe(fileName) {
|
|
|
79
86
|
if (strs.length > 1) {
|
|
80
87
|
suffix = strs[strs.length - 1]
|
|
81
88
|
}
|
|
89
|
+
let defaultExe = getConfig("defaultExe", "idea");
|
|
82
90
|
if (!suffix) {
|
|
83
|
-
return
|
|
91
|
+
return defaultExe
|
|
84
92
|
}
|
|
85
|
-
|
|
86
|
-
let exe = getConfig(`${suffix}_exe`)
|
|
87
|
-
return exe || 'idea';
|
|
93
|
+
return getConfig(`${suffix}_exe`, defaultExe);
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
function checkWorkspaces() {
|
|
@@ -110,10 +116,8 @@ function checkWorkspaces() {
|
|
|
110
116
|
async function start() {
|
|
111
117
|
checkWorkspaces()
|
|
112
118
|
|
|
119
|
+
_cmdMap = objDataFile(_cmdMapFile)
|
|
113
120
|
if (_args[0]) {
|
|
114
|
-
if (_noAppendNextLine) {
|
|
115
|
-
_cmdMap = objDataFile(_cmdMapFile)
|
|
116
|
-
}
|
|
117
121
|
let line = _args.map(i => {
|
|
118
122
|
if (/\s+/.test(i) || !i) {
|
|
119
123
|
i = `"${i}"`
|
|
@@ -122,8 +126,7 @@ async function start() {
|
|
|
122
126
|
}).join(' ')
|
|
123
127
|
await wrapperInput(line)
|
|
124
128
|
} else {
|
|
125
|
-
|
|
126
|
-
console.log(warnStr("You can start with .help, use * to expand context"))
|
|
129
|
+
await wrapperInput(getConfig("defaultAction", ".repl"))
|
|
127
130
|
}
|
|
128
131
|
}
|
|
129
132
|
|
|
@@ -262,7 +265,7 @@ function initRl(callback, preStr, hidden) {
|
|
|
262
265
|
if (promptStr !== '') {
|
|
263
266
|
promptStr = (preStr
|
|
264
267
|
|| ((callback && callback !== wrapperInput) ? "-> ":"")
|
|
265
|
-
|| [Object.values(global.$tips).filter(i =>
|
|
268
|
+
|| [Object.values(global.$tips).map(String).filter(i => i).map(i => i.replace(/,/g, '-')).join(','), $defaultSpace].filter(i => i).join(':') + `> `)
|
|
266
269
|
promptStr = infoStr(promptStr)
|
|
267
270
|
}
|
|
268
271
|
if (hidden) {
|
|
@@ -411,26 +414,6 @@ function rename(dir, oldName, newName) {
|
|
|
411
414
|
listCmd()
|
|
412
415
|
}
|
|
413
416
|
|
|
414
|
-
function putHis(x) {
|
|
415
|
-
if (_history9.indexOf(x) !== -1) {
|
|
416
|
-
_history9.splice(_history9.indexOf(x), 1)
|
|
417
|
-
}
|
|
418
|
-
_history9.push(x)
|
|
419
|
-
if (_history9.length > 9) {
|
|
420
|
-
_history9.shift()
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
function hisToCmdMap() {
|
|
425
|
-
let i = 1
|
|
426
|
-
let cmdMap = {}
|
|
427
|
-
for (let item of _history9) {
|
|
428
|
-
cmdMap[i] = item
|
|
429
|
-
i ++
|
|
430
|
-
}
|
|
431
|
-
_cmdMap = cmdMap
|
|
432
|
-
}
|
|
433
|
-
|
|
434
417
|
function listCmd() {
|
|
435
418
|
let items = Object.values(_cmdMap)
|
|
436
419
|
.filter(item => _fs.existsSync(getFullPath(item)))
|
|
@@ -542,18 +525,14 @@ async function _wrapperInput(str) {
|
|
|
542
525
|
if (!text) {
|
|
543
526
|
text = '$context';
|
|
544
527
|
}
|
|
545
|
-
let
|
|
546
|
-
let result = await evalText('return ' + items[0])
|
|
528
|
+
let result = await evalText('return ' + text)
|
|
547
529
|
if (!result || typeof result === 'string' || Object.keys(result).length === 0) {
|
|
548
530
|
console.nable([getInfo(result)])
|
|
549
531
|
return
|
|
550
532
|
}
|
|
551
533
|
let rows = []
|
|
552
|
-
let matchs = items.slice(1)
|
|
553
534
|
for (let key of Object.keys(result)) {
|
|
554
|
-
|
|
555
|
-
rows.push(getInfo(result[key], key))
|
|
556
|
-
}
|
|
535
|
+
rows.push(getInfo(result[key], key))
|
|
557
536
|
}
|
|
558
537
|
if (rows.length === 0) {
|
|
559
538
|
warn("no items")
|
|
@@ -576,7 +555,6 @@ async function _wrapperInput(str) {
|
|
|
576
555
|
} else {
|
|
577
556
|
let strs = str.split(/\s+/)
|
|
578
557
|
if (_cmdMap[strs[0]]) {
|
|
579
|
-
putHis(_cmdMap[strs[0]])
|
|
580
558
|
let path = getFullPath(_cmdMap[strs[0]])
|
|
581
559
|
let uniqueName = trim(_cmdMap[strs[0]]);
|
|
582
560
|
let fileName = parseUniqueName(uniqueName)[1]
|
|
@@ -714,7 +692,7 @@ const keywordDef = {
|
|
|
714
692
|
exeFn: (args) => {
|
|
715
693
|
help()
|
|
716
694
|
},
|
|
717
|
-
short: '
|
|
695
|
+
short: 'h'
|
|
718
696
|
},
|
|
719
697
|
list: {
|
|
720
698
|
comment: '查看文件列表',
|
|
@@ -725,7 +703,7 @@ const keywordDef = {
|
|
|
725
703
|
listCmd()
|
|
726
704
|
},
|
|
727
705
|
args: {
|
|
728
|
-
queryParams: '
|
|
706
|
+
queryParams: '字符串匹配,[,]代表全部,关键字可以省略'
|
|
729
707
|
},
|
|
730
708
|
short: 'l'
|
|
731
709
|
},
|
|
@@ -888,14 +866,6 @@ const keywordDef = {
|
|
|
888
866
|
// },
|
|
889
867
|
// short: 'd'
|
|
890
868
|
// },
|
|
891
|
-
history: {
|
|
892
|
-
comment: '查看执行记录',
|
|
893
|
-
exeFn: (args) => {
|
|
894
|
-
hisToCmdMap()
|
|
895
|
-
listCmd()
|
|
896
|
-
},
|
|
897
|
-
short: 'h'
|
|
898
|
-
},
|
|
899
869
|
file: {
|
|
900
870
|
comment: '工作文件模式',
|
|
901
871
|
exeFn: async (args) => {
|
|
@@ -1024,6 +994,17 @@ const keywordDef = {
|
|
|
1024
994
|
process.exit(0)
|
|
1025
995
|
},
|
|
1026
996
|
short: 'q'
|
|
997
|
+
},
|
|
998
|
+
repl: {
|
|
999
|
+
comment: '交互式界面',
|
|
1000
|
+
exeFn: (args) => {
|
|
1001
|
+
_noAppendNextLine = false
|
|
1002
|
+
console.log(warnStr("You can start with .help, use * to expand context"))
|
|
1003
|
+
if (Object.keys(_cmdMap).length > 0) {
|
|
1004
|
+
listCmd()
|
|
1005
|
+
}
|
|
1006
|
+
},
|
|
1007
|
+
short: 'p'
|
|
1027
1008
|
}
|
|
1028
1009
|
}
|
|
1029
1010
|
|
|
@@ -1179,7 +1160,9 @@ function initWorkspace(space) {
|
|
|
1179
1160
|
if (!$workspaceMap[current]) {
|
|
1180
1161
|
workspace = 'local'
|
|
1181
1162
|
}
|
|
1182
|
-
|
|
1163
|
+
if (workspace !== current) {
|
|
1164
|
+
setConfig("workspace", workspace)
|
|
1165
|
+
}
|
|
1183
1166
|
global.$defaultSpace = workspace;
|
|
1184
1167
|
}
|
|
1185
1168
|
|
|
@@ -1511,6 +1494,8 @@ async function _requireSource(currSpace, cmdMatchStr, printLog = false) {
|
|
|
1511
1494
|
result = async (argsStr) => {
|
|
1512
1495
|
return await runCmd(trim(argsStr), uniqueName, text)
|
|
1513
1496
|
}
|
|
1497
|
+
} else {
|
|
1498
|
+
result = text;
|
|
1514
1499
|
}
|
|
1515
1500
|
if (!vl(result)) {
|
|
1516
1501
|
if (nullable) {
|
package/index.js
CHANGED
package/package.json
CHANGED
package/util.js
CHANGED
|
@@ -135,7 +135,7 @@ function vl(obj) {
|
|
|
135
135
|
return !Number.isNaN(obj)
|
|
136
136
|
}
|
|
137
137
|
if (typeof obj === 'string') {
|
|
138
|
-
obj = trim(
|
|
138
|
+
obj = obj.trim()
|
|
139
139
|
}
|
|
140
140
|
return !(obj === null || obj === undefined || obj === '')
|
|
141
141
|
}
|
|
@@ -400,9 +400,6 @@ function aesDecipher(str, key){
|
|
|
400
400
|
}
|
|
401
401
|
|
|
402
402
|
function getConfig(key, defaultVal) {
|
|
403
|
-
if (typeof defaultVal === "string") {
|
|
404
|
-
defaultVal = trim(defaultVal)
|
|
405
|
-
}
|
|
406
403
|
let configInit = {}
|
|
407
404
|
let configFile = getLibDataDir() + '/config.json';
|
|
408
405
|
if (!fs.existsSync(configFile)) {
|
|
@@ -414,13 +411,20 @@ function getConfig(key, defaultVal) {
|
|
|
414
411
|
return config
|
|
415
412
|
}
|
|
416
413
|
let writeFlag = false
|
|
417
|
-
if (!(key in config)
|
|
414
|
+
if (!(key in config)) {
|
|
418
415
|
writeFlag = true
|
|
419
|
-
config[key] =
|
|
416
|
+
config[key] = null
|
|
420
417
|
}
|
|
421
418
|
if (writeFlag) {
|
|
422
419
|
fs.writeFileSync(configFile, JSON.stringify(config, null, 2))
|
|
423
420
|
}
|
|
421
|
+
|
|
422
|
+
if (typeof defaultVal === "string") {
|
|
423
|
+
defaultVal = trim(defaultVal)
|
|
424
|
+
}
|
|
425
|
+
if (!vl(config[key]) && vl(defaultVal)) {
|
|
426
|
+
return defaultVal
|
|
427
|
+
}
|
|
424
428
|
let val = config[key]
|
|
425
429
|
if (typeof val === "string") {
|
|
426
430
|
val = trim(val)
|
package/cmd/configServer.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
let {$config, run, lisPid} = require('../util')
|
|
3
|
-
|
|
4
|
-
const server = require('server');
|
|
5
|
-
let address = require('address');
|
|
6
|
-
const { get } = server.router;
|
|
7
|
-
const {send} = server.reply
|
|
8
|
-
|
|
9
|
-
let port = Number(process.argv[2] || 9563 )
|
|
10
|
-
let router = [
|
|
11
|
-
get('/', () => {
|
|
12
|
-
return send($config.localConfig)
|
|
13
|
-
}),
|
|
14
|
-
get('/:key', (ctx) => {
|
|
15
|
-
if (!$config.localConfig.hasOwnProperty(ctx.params.key)) {
|
|
16
|
-
return send(null)
|
|
17
|
-
}
|
|
18
|
-
return send($config.getLocal(ctx.params.key))
|
|
19
|
-
})
|
|
20
|
-
]
|
|
21
|
-
|
|
22
|
-
lisPid('configServer_' + port)
|
|
23
|
-
|
|
24
|
-
run(async () => {
|
|
25
|
-
await $config.build()
|
|
26
|
-
await server({
|
|
27
|
-
port
|
|
28
|
-
},router);
|
|
29
|
-
console.log("http://localhost:"+port);
|
|
30
|
-
console.log("http://" + address.ip()+":"+port);
|
|
31
|
-
})
|
package/cmd/dirServer.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
let http = require('http');
|
|
3
|
-
let url=require('url');
|
|
4
|
-
let fs=require('fs');
|
|
5
|
-
let mine=require('../source/mine').types;
|
|
6
|
-
let path=require('path');
|
|
7
|
-
let address = require('address');
|
|
8
|
-
let urlencode = require('urlencode');
|
|
9
|
-
let {lisPid} = require('../util')
|
|
10
|
-
|
|
11
|
-
let server = http.createServer(function (request, response) {
|
|
12
|
-
let pathname = urlencode.decode(url.parse(request.url).pathname, "utf8");
|
|
13
|
-
let realPath = process.cwd() + pathname;
|
|
14
|
-
let ext = path.extname(realPath);
|
|
15
|
-
ext = ext ? ext.slice(1) : 'unknown';
|
|
16
|
-
if (fs.existsSync(realPath)) {
|
|
17
|
-
if (fs.statSync(realPath).isFile()) {
|
|
18
|
-
fs.readFile(realPath, "binary", function (err, file) {
|
|
19
|
-
if (err) {
|
|
20
|
-
response.writeHead(500, {
|
|
21
|
-
'Content-Type': 'text/plain'
|
|
22
|
-
});
|
|
23
|
-
response.end(err);
|
|
24
|
-
} else {
|
|
25
|
-
let contentType = mine[ext] || "text/plain";
|
|
26
|
-
response.writeHead(200, {
|
|
27
|
-
'Content-Type': contentType
|
|
28
|
-
});
|
|
29
|
-
response.write(file, "binary");
|
|
30
|
-
response.end();
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
} else {
|
|
34
|
-
let paths = fs.readdirSync(realPath)
|
|
35
|
-
response.writeHead(200, {
|
|
36
|
-
'Content-Type': 'text/html'
|
|
37
|
-
});
|
|
38
|
-
response.write('<head><meta charset="utf-8"/></head>');
|
|
39
|
-
paths.forEach(path => {
|
|
40
|
-
response.write(`
|
|
41
|
-
<a href="/${(request.url + '/').replace(/^\/+/, '')}${path}">${path}</a><br/>
|
|
42
|
-
`)
|
|
43
|
-
})
|
|
44
|
-
response.end();
|
|
45
|
-
}
|
|
46
|
-
} else {
|
|
47
|
-
response.writeHead(404, {
|
|
48
|
-
'Content-Type': 'text/plain'
|
|
49
|
-
});
|
|
50
|
-
response.write("This request URL " + pathname + " was not found on this server.");
|
|
51
|
-
response.end();
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
let port = process.argv[2] || 8088;
|
|
56
|
-
server.listen(port);
|
|
57
|
-
|
|
58
|
-
console.log("http://localhost:"+port);
|
|
59
|
-
console.log("http://" + address.ip()+":"+port);
|
|
60
|
-
|
|
61
|
-
lisPid('dirServer_' + port)
|
package/cmd/ethDataServer.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
let {getPrice, eFn, lisPid} = require('../util')
|
|
3
|
-
let Web3 = require('web3');
|
|
4
|
-
let web3 = new Web3("https://http-mainnet-node.huobichain.com");
|
|
5
|
-
web3.eth.transactionPollingTimeout = 49
|
|
6
|
-
global.web3 = web3
|
|
7
|
-
const server = require('server');
|
|
8
|
-
let address = require('address');
|
|
9
|
-
|
|
10
|
-
let usdt = '0xa71edc38d189767582c38a3145b5873052c3e47a'
|
|
11
|
-
let wht = '0x5545153ccfca01fbd7dd11c0b23ba694d9509a6f'
|
|
12
|
-
let mdxFact = '0xb0b670fc1F7724119963018DB0BfA86aDb22d941'
|
|
13
|
-
|
|
14
|
-
const { get } = server.router;
|
|
15
|
-
let port = 9589
|
|
16
|
-
|
|
17
|
-
let data = {
|
|
18
|
-
gasList: [],
|
|
19
|
-
htPrice: 0,
|
|
20
|
-
cost: 0,
|
|
21
|
-
timestamp: 0
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
let router = [
|
|
25
|
-
get('/', ctx => {
|
|
26
|
-
return data
|
|
27
|
-
})
|
|
28
|
-
]
|
|
29
|
-
|
|
30
|
-
lisPid('ethDataServer_' + port)
|
|
31
|
-
|
|
32
|
-
setTimeout(() => {
|
|
33
|
-
refreshData().catch()
|
|
34
|
-
server({port},router);
|
|
35
|
-
console.log("http://localhost:"+port);
|
|
36
|
-
console.log("http://" + address.ip()+":"+port);
|
|
37
|
-
}, 1000 * 5)
|
|
38
|
-
|
|
39
|
-
async function refreshData() {
|
|
40
|
-
let time = Date.now()
|
|
41
|
-
try {
|
|
42
|
-
data.htPrice = await getPrice(wht, usdt, mdxFact);
|
|
43
|
-
await refreshGasList()
|
|
44
|
-
} catch (e) {
|
|
45
|
-
console.log(String(e))
|
|
46
|
-
} finally {
|
|
47
|
-
let cost = Date.now() - time
|
|
48
|
-
console.log('Refresh Data Cost: ' + cost)
|
|
49
|
-
data.cost = cost
|
|
50
|
-
data.timestamp = Date.now()
|
|
51
|
-
}
|
|
52
|
-
setTimeout(() => refreshData(), 1000)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
async function refreshGasList() {
|
|
56
|
-
let blockInfo = await web3.eth.getBlock("pending")
|
|
57
|
-
if (blockInfo != null) {
|
|
58
|
-
let map = {}
|
|
59
|
-
let items = []
|
|
60
|
-
for (let txHash of blockInfo.transactions) {
|
|
61
|
-
items.push(eFn(async (txHash) => {
|
|
62
|
-
let rawTransaction = await web3.eth.getTransaction(txHash);
|
|
63
|
-
if (rawTransaction) {
|
|
64
|
-
map[Number(rawTransaction.gasPrice) / (1000 * 1000 * 1000)] = true
|
|
65
|
-
}
|
|
66
|
-
}, txHash))
|
|
67
|
-
}
|
|
68
|
-
await Promise.all(items)
|
|
69
|
-
let list = Object.keys(map)
|
|
70
|
-
list = list.sort((a, b) => Number(b) - Number(a));
|
|
71
|
-
list = list.slice(0, 10)
|
|
72
|
-
|
|
73
|
-
if (list.length > 0) {
|
|
74
|
-
data.gasList = list
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
package/cmd/mockServer.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
let fs = require('fs')
|
|
3
|
-
const server = require('server');
|
|
4
|
-
let address = require('address');
|
|
5
|
-
let {lisPid, getLibDataDir, trim, fileCleaner, getCbText} = require('../util')
|
|
6
|
-
let libRoot = getLibDataDir()
|
|
7
|
-
let home = libRoot + '/mock'
|
|
8
|
-
let readline = require('readline')
|
|
9
|
-
try {
|
|
10
|
-
fs.mkdirSync(home)
|
|
11
|
-
} catch (e) {}
|
|
12
|
-
const { get, post } = server.router;
|
|
13
|
-
let mockServerLog = libRoot + '/mockServer.log'
|
|
14
|
-
let port = 9549
|
|
15
|
-
let cmd = {
|
|
16
|
-
path,
|
|
17
|
-
start
|
|
18
|
-
}
|
|
19
|
-
if (!cmd[trim(process.argv[2])]) {
|
|
20
|
-
console.log(`ARGS EXAMPLE:
|
|
21
|
-
path
|
|
22
|
-
start [9549]`)
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
cmd[trim(process.argv[2])]()
|
|
26
|
-
|
|
27
|
-
function getPathMap() {
|
|
28
|
-
let pathMap = {}
|
|
29
|
-
let i = 1
|
|
30
|
-
fs.readdirSync(home).forEach(item => {
|
|
31
|
-
pathMap[String(i)] = item
|
|
32
|
-
i ++
|
|
33
|
-
})
|
|
34
|
-
return pathMap
|
|
35
|
-
}
|
|
36
|
-
function path(){
|
|
37
|
-
let map = getPathMap()
|
|
38
|
-
Object.keys(map).forEach(i => {
|
|
39
|
-
console.log(i + ": " + map[i].replace(/_-sep-_/g, '/'))
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
let rl = readline.createInterface({
|
|
43
|
-
input: process.stdin,
|
|
44
|
-
output: process.stdout
|
|
45
|
-
})
|
|
46
|
-
process.stdout.write("> ")
|
|
47
|
-
rl.on('line', async (str) => {
|
|
48
|
-
str = trim(str)
|
|
49
|
-
if (map[str]) {
|
|
50
|
-
try {
|
|
51
|
-
console.log(String(fs.readFileSync(home + '/' + map[str].replace(/\//g, '_-sep-_'))))
|
|
52
|
-
} catch (e) {}
|
|
53
|
-
} else {
|
|
54
|
-
if (str) {
|
|
55
|
-
let url = `${home}/${str.replace(/\//g, '_-sep-_')}`
|
|
56
|
-
let textStr = await getCbText()
|
|
57
|
-
if (!textStr) {
|
|
58
|
-
try {
|
|
59
|
-
fs.unlinkSync(url)
|
|
60
|
-
} catch (e) {}
|
|
61
|
-
} else {
|
|
62
|
-
fs.writeFileSync(url, textStr)
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
map = getPathMap()
|
|
67
|
-
Object.keys(map).forEach(i => {
|
|
68
|
-
console.log(i + ": " + map[i].replace(/_-sep-_/g, '/'))
|
|
69
|
-
})
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
process.stdout.write("> ")
|
|
73
|
-
})
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
function start() {
|
|
77
|
-
if (process.argv[3]) {
|
|
78
|
-
port = trim(process.argv[3])
|
|
79
|
-
}
|
|
80
|
-
let router = [
|
|
81
|
-
get('/', ctx => {
|
|
82
|
-
let map = getPathMap();
|
|
83
|
-
return Object.values(map).map(item => item.replace(/_-sep-_/g, '/'))
|
|
84
|
-
}),
|
|
85
|
-
post('/', ctx => {
|
|
86
|
-
log(ctx.data);
|
|
87
|
-
let map = getPathMap();
|
|
88
|
-
return Object.values(map).map(item => item.replace(/_-sep-_/g, '/'))
|
|
89
|
-
})
|
|
90
|
-
]
|
|
91
|
-
fs.readdirSync(home).forEach(item => {
|
|
92
|
-
let fn = ctx => {
|
|
93
|
-
let text = fs.readFileSync(`${home}/${item}`)
|
|
94
|
-
try {
|
|
95
|
-
(eval(`(()=>{${text}})()`))
|
|
96
|
-
return ((typeof ctx.return === 'object') ? ctx.return : String(ctx.return)) || {}
|
|
97
|
-
} catch (e) {
|
|
98
|
-
log(e)
|
|
99
|
-
return String(e)
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
let url = item.replace(/_-sep-_/g, '/')
|
|
103
|
-
router.push(get('/' + url, fn))
|
|
104
|
-
router.push(post('/' + url, fn))
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
fileCleaner(mockServerLog)
|
|
108
|
-
lisPid('mockServer_' + port)
|
|
109
|
-
|
|
110
|
-
console.log("http://localhost:"+port);
|
|
111
|
-
console.log("http://" + address.ip()+":"+port);
|
|
112
|
-
setTimeout(() => {
|
|
113
|
-
server({port},router);
|
|
114
|
-
}, 1000 * 5)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function log(s) {
|
|
118
|
-
fs.appendFileSync(mockServerLog, s + '\n')
|
|
119
|
-
}
|
package/cmd/see.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
let fs = require('fs');
|
|
3
|
-
let path = require('path')
|
|
4
|
-
let {getLibDataDir, cleanFile} = require("../util")
|
|
5
|
-
let readline = require('readline');
|
|
6
|
-
let gua = require('../source/gua');
|
|
7
|
-
let posJson = require('../source/pos');
|
|
8
|
-
let desc = process.argv.splice(2).join(" ");
|
|
9
|
-
let dataLibDir = getLibDataDir()
|
|
10
|
-
let get = n => Math.floor(Math.random()*n) + 1;
|
|
11
|
-
let down = get(8);
|
|
12
|
-
let up = get(8);
|
|
13
|
-
let pos = get(6);
|
|
14
|
-
let result = down + "," + up + "," + pos;
|
|
15
|
-
console.log(result);
|
|
16
|
-
|
|
17
|
-
function save(content) {
|
|
18
|
-
let seeTxt = dataLibDir + "/see.txt";
|
|
19
|
-
fs.writeFileSync(seeTxt, content,
|
|
20
|
-
{ encoding: 'utf8', flag: 'a' });
|
|
21
|
-
cleanFile(seeTxt)
|
|
22
|
-
}
|
|
23
|
-
if (desc) save(new Date() + "\t" + result + "\t" + desc + "\n");
|
|
24
|
-
|
|
25
|
-
let key = `${gua[String(up)]}上${gua[String(down)]}下`;
|
|
26
|
-
let changeStream = fs.createReadStream(path.resolve(__dirname, '../source/change.txt'));
|
|
27
|
-
let changeLine = readline.createInterface({
|
|
28
|
-
input:changeStream
|
|
29
|
-
});
|
|
30
|
-
let found = false;
|
|
31
|
-
let use = false;
|
|
32
|
-
let text = '';
|
|
33
|
-
changeLine.on('line',function (line) {
|
|
34
|
-
line = line.trim().replace(/-/g, "");
|
|
35
|
-
if (!line) return;
|
|
36
|
-
|
|
37
|
-
if (line.match(/^初[六九]/)) {
|
|
38
|
-
use = false;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
let two = line.substr(0, 2);
|
|
42
|
-
if (use && (two.indexOf("六") !== -1 || two.indexOf("九") !== -1)) {
|
|
43
|
-
use = false;
|
|
44
|
-
}
|
|
45
|
-
if (two.indexOf(posJson[String(pos)]) !== -1
|
|
46
|
-
&& (two.indexOf("六") !== -1 || two.indexOf("九") !== -1)) {
|
|
47
|
-
use = true;
|
|
48
|
-
}
|
|
49
|
-
if (line.match(/^第[一二三四五六七八九十]/)){
|
|
50
|
-
found = false;
|
|
51
|
-
}
|
|
52
|
-
if (found && use) {
|
|
53
|
-
text += line + "\n";
|
|
54
|
-
}
|
|
55
|
-
if (line.indexOf(key) !== -1) {
|
|
56
|
-
found = true;
|
|
57
|
-
use = true;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
changeLine.on('close', () => {
|
|
62
|
-
console.log(text);
|
|
63
|
-
if (desc) save(text);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
package/cmd/solCd.js
DELETED
package/cmd/solComplie.js
DELETED
package/cmd/solDeploy.js
DELETED