jsir 2.3.1 → 2.3.2

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
@@ -11,7 +11,7 @@ const {
11
11
  createConsole, setTips, delTips,
12
12
  getEditor, errorStr, getConfigDir,
13
13
  getFullPath, parseUniqueName, toUniqueName, isJsirFileName, toJsirFileName,
14
- getOr, getAlias, wrapperJsirText, eia
14
+ getAlias, wrapperJsirText, eia
15
15
  } = $lib;
16
16
  const _args = process.argv.slice(2).map(trim);
17
17
  const evalCode = require('../deps/evalCode')
@@ -138,7 +138,7 @@ function getFileOpenExe(fileName) {
138
138
 
139
139
  function checkWorkspaces() {
140
140
  let localWorkspace = _libDataDir + '/local';
141
- global.$workspaceMap = {
141
+ setting.workspaceMap = {
142
142
  'local': localWorkspace
143
143
  }
144
144
  mkdir(localWorkspace)
@@ -149,15 +149,15 @@ function checkWorkspaces() {
149
149
  continue
150
150
  }
151
151
  if (fs.existsSync(workspace)) {
152
- $workspaceMap[space] = workspace;
152
+ setting.workspaceMap[space] = workspace;
153
153
  }
154
154
  }
155
- arrayDataFile(_workspaceConfigFile, () => Object.values($workspaceMap))
156
- initWorkspace()
155
+ arrayDataFile(_workspaceConfigFile, () => Object.values(setting.workspaceMap))
157
156
  }
158
157
 
159
158
  async function start() {
160
159
  checkWorkspaces()
160
+ initWorkspace()
161
161
 
162
162
  lastFilterArg = getConfig("lastFilterArg");
163
163
  _cmdMap = objDataFile(_cmdMapFile);
@@ -288,7 +288,7 @@ async function nextLine(callback, promptStr, hidden) {
288
288
  }
289
289
 
290
290
  function defaultPromptStr(showKey = false) {
291
- let tips = [getTipStr(showKey), $defaultSpace].filter(i => i).join(':') + `> `;
291
+ let tips = [getTipStr(showKey), setting.defaultSpace].filter(i => i).join(':') + `> `;
292
292
  _isTipsDoneShowKey = showKey;
293
293
  return tips;
294
294
  }
@@ -346,8 +346,8 @@ function initRl(callback, promptStr, hidden) {
346
346
 
347
347
  function getTipStr(showKey = false) {
348
348
  let items = [];
349
- for (let key of Object.keys(global.$tips)) {
350
- let val = global.$tips[key].map(i => {
349
+ for (let key of Object.keys(setting.tips)) {
350
+ let val = setting.tips[key].map(i => {
351
351
  let item = trim(i)
352
352
  if (item.indexOf(',') !== -1) {
353
353
  item = `[${item}]`;
@@ -872,14 +872,14 @@ function help(filterFn) {
872
872
  }
873
873
 
874
874
  function delTipsByIndex(idxs) {
875
- let keys = Object.keys($tips)
875
+ let keys = Object.keys(setting.tips)
876
876
  let indexKeyMap = {}
877
877
  for(let i = 1;i<=keys.length;i++) {
878
878
  indexKeyMap[i] = keys[i - 1]
879
879
  }
880
880
  let params = []
881
881
  for (const index of idxs) {
882
- if ($tips.hasOwnProperty(index)) {
882
+ if (setting.tips.hasOwnProperty(index)) {
883
883
  params.push(index)
884
884
  } else if (indexKeyMap[Number(index)]) {
885
885
  params.push(indexKeyMap[Number(index)])
@@ -895,7 +895,7 @@ function delTipsByIndex(idxs) {
895
895
  }
896
896
 
897
897
  function getPackageVersion(space, name) {
898
- let moduleDir = $workspaceMap[space] + '/node_modules'
898
+ let moduleDir = setting.workspaceMap[space] + '/node_modules'
899
899
  let dir = moduleDir + "/" + name;
900
900
  if (fs.existsSync(dir) && fs.existsSync(dir + '/package.json')) {
901
901
  return require(dir + '/package.json').version;
@@ -908,12 +908,12 @@ function copyToSpace(uniqueName) {
908
908
  let path = getFullPath(uniqueName)
909
909
  let text = String(fs.readFileSync(path))
910
910
  let fileName = parseUniqueName(uniqueName)[1];
911
- let targetPath = $workspaceMap[$defaultSpace] + '/' + fileName;
911
+ let targetPath = setting.workspaceMap[setting.defaultSpace] + '/' + fileName;
912
912
  if (fs.existsSync(targetPath)) {
913
- console.warn(`${fileName} already exist in ${$defaultSpace}`)
913
+ console.warn(`${fileName} already exist in ${setting.defaultSpace}`)
914
914
  } else {
915
915
  fs.writeFileSync(targetPath, text)
916
- console.info(`get ${uniqueName} to ${$defaultSpace}`)
916
+ console.info(`get ${uniqueName} to ${setting.defaultSpace}`)
917
917
  }
918
918
  }
919
919
 
@@ -1076,7 +1076,7 @@ const keywordDef = {
1076
1076
  } else {
1077
1077
  let pair = parseUniqueName(uniqueName)
1078
1078
  let newName =trim(args.slice(1).join(" "))
1079
- rename($workspaceMap[pair[0]], pair[1], toJsirFileName(newName), true)
1079
+ rename(setting.workspaceMap[pair[0]], pair[1], toJsirFileName(newName), true)
1080
1080
  }
1081
1081
  },
1082
1082
  args: {
@@ -1165,8 +1165,8 @@ const keywordDef = {
1165
1165
  return;
1166
1166
  }
1167
1167
 
1168
- let aFiles = fs.readdirSync($workspaceMap[aSpace]).filter(isJsirFileName)
1169
- let bFiles = fs.readdirSync($workspaceMap[bSpace]).filter(isJsirFileName)
1168
+ let aFiles = fs.readdirSync(setting.workspaceMap[aSpace]).filter(isJsirFileName)
1169
+ let bFiles = fs.readdirSync(setting.workspaceMap[bSpace]).filter(isJsirFileName)
1170
1170
 
1171
1171
  let result = compareMode[mode](aSpace, bSpace, aFiles, bFiles);
1172
1172
  resetCmdMap(arrayToCmdMap(result))
@@ -1208,8 +1208,8 @@ const keywordDef = {
1208
1208
  Object.keys(packages).forEach(key => {
1209
1209
  let info = packages[key];
1210
1210
  info.version = getPackageVersion(info.space, info.name)
1211
- if (global.$packages.hasOwnProperty(info.name)) {
1212
- info.loaded = global.$packages[info.name]
1211
+ if (setting.packages.hasOwnProperty(info.name)) {
1212
+ info.loaded = setting.packages[info.name]
1213
1213
  }
1214
1214
  if (info.loaded && info.loaded !== info.space) {
1215
1215
  let version = getPackageVersion(info.loaded, info.name)
@@ -1252,14 +1252,14 @@ const keywordDef = {
1252
1252
  let newWorkspace = args.join(' ')
1253
1253
  let isSwitch = false
1254
1254
  if (newWorkspace) {
1255
- if ($workspaceMap[newWorkspace]) {
1255
+ if (setting.workspaceMap[newWorkspace]) {
1256
1256
  isSwitch = true;
1257
1257
  initWorkspace(newWorkspace)
1258
1258
  } else if (newWorkspace.startsWith('-')) {
1259
1259
  let name = newWorkspace.replace(/^-\s*/, '');
1260
1260
  arrayDataFile(_workspaceConfigFile, arr => arr.filter(path => name !== getSpaceFromDir(path)))
1261
1261
  } else if (newWorkspace.startsWith("/")) {
1262
- let workspaces = Object.values($workspaceMap)
1262
+ let workspaces = Object.values(setting.workspaceMap)
1263
1263
  workspaces.push(newWorkspace)
1264
1264
  arrayDataFile(_workspaceConfigFile, () => workspaces)
1265
1265
  } else {
@@ -1267,10 +1267,11 @@ const keywordDef = {
1267
1267
  }
1268
1268
  }
1269
1269
  checkWorkspaces()
1270
- let workspaces = Object.values($workspaceMap)
1270
+ initWorkspace(setting.defaultSpace)
1271
+ let workspaces = Object.values(setting.workspaceMap)
1271
1272
  let items = workspaces.map((path, index) => {
1272
1273
  return {
1273
- name: (getSpaceFromDir(path) === $defaultSpace ? '*':' ') + getSpaceFromDir(path),
1274
+ name: (getSpaceFromDir(path) === setting.defaultSpace ? '*':' ') + getSpaceFromDir(path),
1274
1275
  path
1275
1276
  }
1276
1277
  })
@@ -1370,7 +1371,7 @@ const keywordDef = {
1370
1371
  if (args.length > 1) {
1371
1372
  _args = args.slice(1)
1372
1373
  }
1373
- await eia(`cd "${$workspaceMap[global.$defaultSpace]}";${cmd}`, _args, true)
1374
+ await eia(`cd "${setting.workspaceMap[setting.defaultSpace]}";${cmd}`, _args, true)
1374
1375
  },
1375
1376
  short: 'E'
1376
1377
  },
@@ -1389,12 +1390,12 @@ const keywordDef = {
1389
1390
  }
1390
1391
  }
1391
1392
  let suffix = 'log'
1392
- let cmdStr = 'less -R'
1393
+ let cmdStr = 'less -R +G'
1393
1394
  if (type.indexOf("e") !== -1) {
1394
1395
  suffix = 'error'
1395
1396
  }
1396
1397
  if (type.indexOf("t") !== -1) {
1397
- cmdStr = 'tail -n 50 -f'
1398
+ cmdStr = 'less -R +F'
1398
1399
  }
1399
1400
  path = path + '.' + suffix;
1400
1401
  if (!fs.existsSync(path)) {
@@ -1623,13 +1624,13 @@ function getJsirFileSuffix(name) {
1623
1624
  function initWorkspace(space) {
1624
1625
  let current = getConfig("workspace");
1625
1626
  let workspace = space || current || 'local'
1626
- if (!$workspaceMap[current]) {
1627
+ if (!setting.workspaceMap[workspace]) {
1627
1628
  workspace = 'local'
1628
1629
  }
1629
- if (workspace !== current) {
1630
+ if (workspace !== current && _noAppendNextLine) {
1630
1631
  setConfig("workspace", workspace)
1631
1632
  }
1632
- global.$defaultSpace = workspace;
1633
+ setting.defaultSpace = workspace;
1633
1634
  }
1634
1635
 
1635
1636
  function filterCmdAndList(arg) {
@@ -1655,10 +1656,10 @@ function filterCmd(arg){
1655
1656
  let spaceName
1656
1657
  if (arg.indexOf('/') !== -1) {
1657
1658
  let index = arg.indexOf('/');
1658
- spaceName = trim(arg.substring(0, index)) || $defaultSpace
1659
+ spaceName = trim(arg.substring(0, index)) || setting.defaultSpace
1659
1660
  arg = trim(arg.substring(index + 1))
1660
1661
  }
1661
- for (let workspace of Object.values($workspaceMap)) {
1662
+ for (let workspace of Object.values(setting.workspaceMap)) {
1662
1663
  let spaceTmp = getSpaceFromDir(workspace);
1663
1664
  if (!spaceName || spaceName === spaceTmp) {
1664
1665
  cmds.push(..._filterCmd(workspace, arg));
@@ -2063,7 +2064,7 @@ async function evalText($text = '', $cmdName = '', $args = []) {
2063
2064
  let pair = parseUniqueName($cmdName)
2064
2065
  currSpace = pair[0]
2065
2066
  } else {
2066
- currSpace = $defaultSpace
2067
+ currSpace = setting.defaultSpace
2067
2068
  }
2068
2069
  let $requires = async (...matchItems) => {
2069
2070
  let result = []
@@ -2080,19 +2081,21 @@ async function evalText($text = '', $cmdName = '', $args = []) {
2080
2081
  $require, $requires,
2081
2082
  nextLine, nextText,
2082
2083
  wrapperInput, filterCmd,
2083
- currSpace,
2084
+ currSpace, setting.defaultSpace, setting.workspaceMap,
2084
2085
  $homeDir, $lib, _cmdMap);
2085
2086
  }
2086
2087
 
2087
2088
  function clearFileLock() {
2088
- let fileLockMap = getOr(global, `$fileLock`, {})
2089
2089
  for (let file of Object.keys(fileLockMap)) {
2090
2090
  fp.rmdir(file)
2091
- delete fileLockMap[file]
2091
+ delete setting.fileLock[file]
2092
2092
  }
2093
2093
  }
2094
2094
 
2095
2095
  function sigExit() {
2096
+ if (!setting.sigExit) {
2097
+ return;
2098
+ }
2096
2099
  if (_noAppendNextLine) {
2097
2100
  delTips();
2098
2101
  clearFileLock();
package/deps/evalCode.js CHANGED
@@ -3,7 +3,7 @@ module.exports = async ($text = '', $cmdName = '', $args = [],
3
3
  $require, $requires,
4
4
  $nextLine, $nextText,
5
5
  $enter, $filterCmd,
6
- $currentSpace,
6
+ $currentSpace, $defaultSpace, $workspaceMap,
7
7
  $homeDir, $lib,
8
8
  $cmdMap) => {
9
9
  const $defArgs = () => $args;
@@ -26,13 +26,15 @@ module.exports = async ($text = '', $cmdName = '', $args = [],
26
26
  const $errorTag = $lib.errorTag;
27
27
 
28
28
  const $context = {
29
+ $defArgs,
29
30
  $data, $config, $file,
30
31
  $require, $requires, $import,
31
32
  $text, $cmdName, $args,
32
33
  $nextLine, $nextText,
33
34
  $setTips, $delTips,
34
35
  $enter, $filterCmd,
35
- $currentSpace, $homeDir, $lib, $cmdMap,
36
+ $currentSpace, $defaultSpace, $workspaceMap,
37
+ $homeDir, $lib, $cmdMap
36
38
  }
37
39
  let console = $lib.createConsole($cmdName);
38
40
  return await eval(`(async ()=>{${$text};
package/deps/setting.js CHANGED
@@ -17,5 +17,11 @@ module.exports = {
17
17
  exeKey,
18
18
  initKey,
19
19
  fileKey,
20
- defaultType
20
+ defaultType,
21
+ sigExit: true,
22
+ packages: {},
23
+ fileLock: {},
24
+ tips: {},
25
+ defaultSpace: 'local',
26
+ workspaceMap: {}
21
27
  }
package/deps/util.js CHANGED
@@ -16,11 +16,7 @@ const _types = setting.fileType
16
16
  const _typeKeys = Object.keys(_types)
17
17
 
18
18
  global.$newInput = false
19
- global.$workspaceMap = {}
20
- global.$defaultSpace = 'local'
21
19
  global.$newError = false
22
- global.$tips = {}
23
- global.$packages = {}
24
20
 
25
21
  let libDataDir;
26
22
  let lockDir;
@@ -256,7 +252,7 @@ function getFullPath(name) {
256
252
  }
257
253
  let uniqueName = toUniqueName(name)
258
254
  let pair = parseUniqueName(uniqueName)
259
- let space = $workspaceMap[pair[0]]
255
+ let space = setting.workspaceMap[pair[0]]
260
256
  if (!space) {
261
257
  return ''
262
258
  }
@@ -282,10 +278,10 @@ function toUniqueName(name, space) {
282
278
  } else if (name.indexOf('/') !== -1) {
283
279
  uniqueName = name;
284
280
  } else {
285
- uniqueName = (space || $defaultSpace) + '/' + name;
281
+ uniqueName = (space || setting.defaultSpace) + '/' + name;
286
282
  }
287
283
  let pair = parseUniqueName(uniqueName);
288
- return (pair[0] || space || $defaultSpace) + '/' + toJsirFileName(pair[1])
284
+ return (pair[0] || space || setting.defaultSpace) + '/' + toJsirFileName(pair[1])
289
285
  }
290
286
 
291
287
  function toJsirFileName(name) {
@@ -700,7 +696,7 @@ function iarrayDataFile(fileName, fn, fmt) {
700
696
  }
701
697
  function getInitName(fileName) {
702
698
  fileName = trim(fileName)
703
- let homeDir = global.$workspaceMap[$defaultSpace]
699
+ let homeDir = setting.workspaceMap[setting.defaultSpace]
704
700
  if (!fileName.startsWith("/")) {
705
701
  fileName = setting.initKey + ' ' + fileName.replace(new RegExp(`^${setting.initKey}\\s+`), '')
706
702
  if (!/\..+/.test(fileName)) {
@@ -769,7 +765,7 @@ async function fileJson(key, fn, fmt = true) {
769
765
  let dataDir = getLibDataDir() + "/data"
770
766
  let fileName = trim(key)
771
767
  let path = dataDir + "/" + fileName;
772
- let homeDir = global.$workspaceMap[$defaultSpace]
768
+ let homeDir = setting.workspaceMap[setting.defaultSpace]
773
769
  let isInit = fileName.startsWith(setting.initKey);
774
770
  if (isInit) {
775
771
  path = homeDir + '/' + toJsirFileName(fileName);
@@ -798,7 +794,7 @@ async function fileJson(key, fn, fmt = true) {
798
794
  }
799
795
 
800
796
  function setModulePaths(space) {
801
- let moduleDir = $workspaceMap[space] + '/node_modules'
797
+ let moduleDir = setting.workspaceMap[space] + '/node_modules'
802
798
  if (module.paths.indexOf(moduleDir) === -1) {
803
799
  module.paths.splice(0, module.paths.length)
804
800
  module.paths.push(moduleDir)
@@ -808,13 +804,13 @@ function setModulePaths(space) {
808
804
  }
809
805
 
810
806
  function enrichPackages(moduleName, space) {
811
- if (!global.$packages.hasOwnProperty(moduleName)) {
812
- global.$packages[moduleName] = space
807
+ if (!setting.packages.hasOwnProperty(moduleName)) {
808
+ setting.packages[moduleName] = space
813
809
  }
814
810
  }
815
811
 
816
812
  function requireG(moduleName, space){
817
- space = space || global.$defaultSpace;
813
+ space = space || setting.defaultSpace;
818
814
  let moduleDir = setModulePaths(space);
819
815
  if (module.paths.indexOf(moduleDir) === -1) {
820
816
  module.paths.splice(0, module.paths.length)
@@ -836,7 +832,7 @@ function requireG(moduleName, space){
836
832
  }
837
833
 
838
834
  async function importG(moduleName, space) {
839
- space = space || global.$defaultSpace;
835
+ space = space || setting.defaultSpace;
840
836
  let moduleDir = setModulePaths(space);
841
837
  try {
842
838
  let result = await import(moduleName);
@@ -1064,7 +1060,7 @@ async function _fileLock(key, fn) {
1064
1060
  } catch (e) {
1065
1061
  return false;
1066
1062
  }
1067
- let fileLockMap = getOr(global, `$fileLock`, {})
1063
+ let fileLockMap = setting.fileLock;
1068
1064
  fileLockMap[file] = true;
1069
1065
  try {
1070
1066
  await fn();
@@ -1116,19 +1112,19 @@ function setTips(key, value, onRm) {
1116
1112
  if (!vl(key) || key.indexOf(",") !== -1) {
1117
1113
  throw "invalid tip key";
1118
1114
  }
1119
- getOr(global.$tips, key, []).push(value);
1115
+ getOr(setting.tips, key, []).push(value);
1120
1116
  if (onRm) {
1121
1117
  getOr(_tipsOnRm, key, []).push(onRm)
1122
1118
  }
1123
1119
  }
1124
1120
 
1125
1121
  function delTips(...keys) {
1126
- for (let key of Object.keys($tips)) {
1122
+ for (let key of Object.keys(setting.tips)) {
1127
1123
  if (keys.length === 0) {
1128
- delete $tips[key]
1124
+ delete setting.tips[key]
1129
1125
  tipsOnRmCallback(key)
1130
1126
  } else if (keys.indexOf(key) !== -1) {
1131
- delete $tips[key]
1127
+ delete setting.tips[key]
1132
1128
  tipsOnRmCallback(key)
1133
1129
  }
1134
1130
  }
@@ -1186,7 +1182,7 @@ function fileCleaner(path, maxChars) {
1186
1182
  `
1187
1183
  cleanFiles[path] = Date.now() + (1000 * 60)
1188
1184
  let flag = "sys"
1189
- if (!$tips[flag]) {
1185
+ if (!setting.tips.hasOwnProperty(flag)) {
1190
1186
  timer(flag, 1000 * 9, () => {
1191
1187
  for (let aPath of Object.keys(cleanFiles)) {
1192
1188
  if (cleanFiles[aPath] < Date.now()) {
@@ -1399,14 +1395,17 @@ async function eia(cmd, args = [], shell = false) {
1399
1395
  `
1400
1396
  当前进程不会卡住,输入输出由cmd进程持有
1401
1397
  `
1398
+ setting.sigExit = false;
1402
1399
  let child = spawn(cmd, args, {stdio:"inherit", shell});
1403
1400
  return new Promise((resolve, reject) => {
1404
1401
  // 监听子进程的关闭事件
1405
1402
  child.on('close', (code) => {
1403
+ setting.sigExit = true;
1406
1404
  resolve(code);
1407
1405
  });
1408
1406
  // 可选:监听子进程的错误事件
1409
1407
  child.on('error', (err) => {
1408
+ setting.sigExit = true;
1410
1409
  reject(err)
1411
1410
  });
1412
1411
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsir",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "description": "JavaScript Script Management Tool",
5
5
  "main": "index.js",
6
6
  "scripts": {