jsir 2.4.1 → 2.4.3

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 CHANGED
@@ -12,7 +12,8 @@ const {
12
12
  getEditor, errorStr, getConfigDir,
13
13
  getFullPath, parseUniqueName, toUniqueName, isJsirFileName, toJsirFileName,
14
14
  getAlias, wrapperJsirText, eia, getKeyTips, getValTips, getJsirTypeKey,
15
- createDetachedProcess, interceptStdStreams
15
+ createDetachedProcess, interceptStdStreams,
16
+ draftModify
16
17
  } = $lib;
17
18
  const _args = process.argv.slice(2).map(trim);
18
19
  const evalCode = require('../deps/evalCode')
@@ -32,6 +33,7 @@ const console = createConsole();
32
33
  const room = require('../deps/room');
33
34
  const server = require('../deps/server')
34
35
  const {reqNode} = require("../deps/room");
36
+ const {isRunningInBackground} = require("../deps/util");
35
37
 
36
38
  let lastFilterArg = '';
37
39
  let _cmdMapFile = setting.name + 'CmdMap.json'
@@ -599,7 +601,11 @@ async function _wrapperInput(str) {
599
601
  } else {
600
602
  let fLine = trim(str.substr(1))
601
603
  if (fLine) {
602
- console.log(draftQuery(fLine).join("\n"))
604
+ if (/\s+[+-]$/.test(fLine)) {
605
+ console.log((await draftModify(fLine)).join("\n"))
606
+ } else {
607
+ console.log(draftQuery(fLine).join("\n"))
608
+ }
603
609
  } else {
604
610
  console.$draft(await nextText(line => line, fstr))
605
611
  }
@@ -1442,7 +1448,11 @@ const keywordDef = {
1442
1448
  if (args.length > 1) {
1443
1449
  _args = args.slice(1)
1444
1450
  }
1445
- await eia(`cd "${setting.workspaceMap[setting.defaultSpace]}";${cmd}`, _args, true)
1451
+ if (isRunningInBackground()) {
1452
+ console.log(await e(`cd "${setting.workspaceMap[setting.defaultSpace]}";${args.join(' ')}`))
1453
+ } else {
1454
+ await eia(`cd "${setting.workspaceMap[setting.defaultSpace]}";${cmd}`, _args, true)
1455
+ }
1446
1456
  },
1447
1457
  short: 'E'
1448
1458
  },
package/deps/room.js CHANGED
@@ -74,7 +74,7 @@ function _onRoom() {
74
74
  if (setting.roomTid[0]) {
75
75
  _onRoom();
76
76
  }
77
- }, 3000)
77
+ }, setting.roomTimer)
78
78
  }
79
79
 
80
80
  function offRoom() {
@@ -137,7 +137,12 @@ async function syncRooms() {
137
137
  fns.push(async () => {
138
138
  let respBody = ''
139
139
  try {
140
- respBody = await reqNode(node, "get", "/");
140
+ try {
141
+ respBody = await reqNode(node, "get", "/");
142
+ } catch (e) {
143
+ debug(`sync ${node} failed:`, e);
144
+ respBody = await reqNode(node, "get", "/", setting.defaultPort);
145
+ }
141
146
  syncRooms.push(JSON.parse(respBody))
142
147
  debug(`sync ${node} success`);
143
148
  } catch (e) {
@@ -327,7 +332,7 @@ function isDisableConnect(node, port) {
327
332
  async function reqNode(node, method, url, port, body) {
328
333
  let room = setting.rooms.filter(i => i.selfNode === node)[0]
329
334
  if (!port) {
330
- port = 52108;
335
+ port = setting.defaultPort;
331
336
  if (room) {
332
337
  let activeJsir = Object.values(room.jsirs)
333
338
  .filter(i => !isDisableConnect(node, i.port));
@@ -348,7 +353,7 @@ async function reqNode(node, method, url, port, body) {
348
353
  debug('reqRoom', JSON.stringify(opt))
349
354
  return await new Promise((resolve, reject) => {
350
355
  try {
351
- let timeoutMs = url === '/' ? 3000:49000;
356
+ let timeoutMs = setting.reqNodeTimeouts[url] || setting.reqNodeDefaultTimeout;
352
357
  let timeout = null
353
358
 
354
359
  const req = http.request(opt, (res) => {
@@ -378,7 +383,7 @@ async function reqNode(node, method, url, port, body) {
378
383
  req.on('error', (e) => {
379
384
  clearTimeout(timeout); // 清除超时定时器
380
385
  if (room) {
381
- setting.disableConnect[node + ":" + port] = Date.now() + 6000
386
+ setting.disableConnect[node + ":" + port] = Date.now() + setting.disableConnectLimit
382
387
  }
383
388
  reject(e)
384
389
  });
package/deps/server.js CHANGED
@@ -3,7 +3,7 @@ const {createConsole, vl, aesDecipher, md5, aesCipher, debugStr, isError} = requ
3
3
  const console = createConsole();
4
4
  const setting = require('../deps/setting')
5
5
  // 尝试监听的端口
6
- const preferredPort = 52108;
6
+ const preferredPort = setting.defaultPort;
7
7
  // 路由存储
8
8
  const routes = setting.routes;
9
9
  let invokeStart = false;
@@ -51,7 +51,7 @@ async function createServer(port) {
51
51
  const decodedTime = verifySign(sign);
52
52
  const currentTime = Date.now();
53
53
 
54
- if (decodedTime === null || Math.abs(currentTime - decodedTime) > 6000) {
54
+ if (decodedTime === null || Math.abs(currentTime - decodedTime) > setting.serverSignExpire) {
55
55
  res.writeHead(403, { 'Content-Type': 'text/plain' });
56
56
  res.end('Forbidden: Invalid Sign');
57
57
  return;
package/deps/setting.js CHANGED
@@ -8,8 +8,6 @@ fileType[exeKey] = "exe";
8
8
  fileType[initKey] = "init";
9
9
  fileType[fileKey] = "file";
10
10
 
11
- const defaultType = 'note';
12
-
13
11
  module.exports = {
14
12
  name: 'jsir',
15
13
  libDataDir: '.jsirData',
@@ -17,7 +15,7 @@ module.exports = {
17
15
  exeKey,
18
16
  initKey,
19
17
  fileKey,
20
- defaultType,
18
+ defaultType: 'note',
21
19
  packages: {},
22
20
  tips: {},
23
21
  defaultSpace: 'local',
@@ -28,8 +26,16 @@ module.exports = {
28
26
  rooms: [],
29
27
  server: null,
30
28
  disableConnect: {},
29
+ disableConnectLimit: 6000,
31
30
  routes: {},
32
31
  services: {},
33
32
  serviceFns: {},
34
- enterOutputs: null
33
+ enterOutputs: null,
34
+ defaultPort: 52108,
35
+ reqNodeDefaultTimeout: 9000,
36
+ reqNodeTimeouts: {
37
+ '/': 3000
38
+ },
39
+ roomTimer: 1000,
40
+ serverSignExpire: 6000
35
41
  }
package/deps/util.js CHANGED
@@ -424,6 +424,42 @@ function parseDraftLog(draftPath) {
424
424
  }
425
425
 
426
426
  function draftQuery(fLine) {
427
+ fLine = fLine.trim();
428
+ let results = [];
429
+ let draftPath = getLibDataDir() + "/log/draft.log";
430
+ if (!fs.existsSync(draftPath)) {
431
+ return results;
432
+ }
433
+
434
+ let { lines } = parseDraftLog(draftPath);
435
+ let limit = 0;
436
+ let filterKeywords = '';
437
+
438
+ if (/\s+\d+$/.test(fLine)) {
439
+ filterKeywords = fLine.replace(/\s+\d+$/, '');
440
+ limit = parseInt(fLine.match(/\d+$/)[0]);
441
+ } else {
442
+ filterKeywords = fLine;
443
+ }
444
+
445
+ if (/^\d+$/.test(filterKeywords)) {
446
+ results = lines.slice(- parseInt(filterKeywords));
447
+ } else {
448
+ lines.forEach(line => {
449
+ if (isMatch(line, filterKeywords)) {
450
+ results.push(line);
451
+ }
452
+ });
453
+ }
454
+
455
+ if (limit > 0) {
456
+ results = results.slice(-limit);
457
+ }
458
+
459
+ return results;
460
+ }
461
+
462
+ async function draftModify(fLine) {
427
463
  fLine = fLine.trim();
428
464
  let results = [];
429
465
  let deleteRanges = [];
@@ -486,7 +522,7 @@ function draftQuery(fLine) {
486
522
  if (isEdit && results.length === 1) {
487
523
  let tempPath = getLibDataDir() + "/log/draft.temp";
488
524
  fs.writeFileSync(tempPath, results[0].split(/\n/).slice(1).join('\n'))
489
- ei(getEditor(), [tempPath])
525
+ await eia(getEditor(), [tempPath])
490
526
  let tempText = String(fs.readFileSync(tempPath))
491
527
  let lineRange = lineRanges.get(results[0]);
492
528
  let before = allLines.filter((_, index) => {
@@ -702,9 +738,8 @@ function createLimitLogger(fileName, {
702
738
  if (error) {
703
739
  global.$newError = true;
704
740
  }
705
- text = `${pad(3, String(process.pid%1000), process.pid >= 1000 ? '0':' ')}> ${text}`
706
741
  if (time) {
707
- text = `${timeStr('YYYY-MM-DD HH:mm:ss.SSS')} ${text}`
742
+ text = `${timeStr('YYYY-MM-DD HH:mm:ss.SSS')} ${pad(3, String(process.pid%1000), process.pid >= 1000 ? '0':' ')}> ${text}`
708
743
  }
709
744
  syncQueue(() => fp.appendFile(logPath, text + '\n'), logPath)
710
745
  let _minNum = (Date.now()/(1000 * 60 * 10)).toFixed(0)
@@ -1204,7 +1239,7 @@ async function _fileLock(key, fn, expireMs = 49000) {
1204
1239
 
1205
1240
  async function fileLock(key, fn, wait = true, expireMs = 49000) {
1206
1241
  `
1207
- 文件锁, 默认一直等待,直到加锁成功执行fn
1242
+ 文件锁, 默认一直等待expireMs,直到加锁成功执行fn
1208
1243
  wait = false, 加锁失败则不执行fn
1209
1244
  return void
1210
1245
  `
@@ -2164,5 +2199,6 @@ module.exports = {
2164
2199
  getJsirTypeKey,
2165
2200
  isRunningInBackground,
2166
2201
  createDetachedProcess,
2167
- interceptStdStreams
2202
+ interceptStdStreams,
2203
+ draftModify
2168
2204
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsir",
3
- "version": "2.4.1",
3
+ "version": "2.4.3",
4
4
  "description": "JavaScript Script Management Tool",
5
5
  "main": "index.js",
6
6
  "scripts": {