jsir 2.2.8 → 2.2.9
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 +12 -8
- package/deps/evalCode.js +1 -3
- package/deps/example.js +4 -1
- package/deps/util.js +36 -6
- package/package.json +1 -1
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
|
|
14
|
+
getOr, getAlias, wrapperJsirText
|
|
15
15
|
} = $lib;
|
|
16
16
|
const _args = process.argv.slice(2).map(trim);
|
|
17
17
|
const evalCode = require('../deps/evalCode')
|
|
@@ -1179,18 +1179,17 @@ const keywordDef = {
|
|
|
1179
1179
|
let text = removeComment(String(fs.readFileSync(path)))
|
|
1180
1180
|
let [space] = parseUniqueName(uniqueName)
|
|
1181
1181
|
|
|
1182
|
+
text = wrapperJsirText(text)
|
|
1183
|
+
|
|
1182
1184
|
await preLoad(text, "[\\s=;]require", requireG, packages, space)
|
|
1183
1185
|
await preLoad(text, "^require", requireG, packages, space)
|
|
1184
1186
|
await preLoad(text, "\\$import", importG, packages, space)
|
|
1185
|
-
await preLoad(text, "[\\s=;]import", importG, packages, space)
|
|
1186
|
-
await preLoad(text, "^import", importG, packages, space)
|
|
1187
1187
|
}
|
|
1188
1188
|
Object.keys(packages).forEach(key => {
|
|
1189
1189
|
let info = packages[key];
|
|
1190
1190
|
info.version = getPackageVersion(info.space, info.name)
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
info.loaded = loadedSpace
|
|
1191
|
+
if (global.$packages.hasOwnProperty(info.name)) {
|
|
1192
|
+
info.loaded = global.$packages[info.name]
|
|
1194
1193
|
}
|
|
1195
1194
|
if (info.loaded && info.loaded !== info.space) {
|
|
1196
1195
|
let version = getPackageVersion(info.loaded, info.name)
|
|
@@ -1364,7 +1363,9 @@ const keywordDef = {
|
|
|
1364
1363
|
let type = '';
|
|
1365
1364
|
for (let arg of args) {
|
|
1366
1365
|
if (_cmdMap[arg]) {
|
|
1367
|
-
|
|
1366
|
+
let pair = parseUniqueName(_cmdMap[arg])
|
|
1367
|
+
let fileName = pair[0] + '/' + pair[1].split(".")[0]
|
|
1368
|
+
path = `${getLibDataDir()}/log/${fileName}`
|
|
1368
1369
|
} else {
|
|
1369
1370
|
type = arg;
|
|
1370
1371
|
}
|
|
@@ -1382,7 +1383,7 @@ const keywordDef = {
|
|
|
1382
1383
|
console.warn('log file not found')
|
|
1383
1384
|
return;
|
|
1384
1385
|
}
|
|
1385
|
-
ei(cmdStr, [path], true)
|
|
1386
|
+
ei(cmdStr, [`"${path}"`], true)
|
|
1386
1387
|
},
|
|
1387
1388
|
short: 'l'
|
|
1388
1389
|
},
|
|
@@ -1508,6 +1509,9 @@ function removeComment(text) {
|
|
|
1508
1509
|
function _getScriptRequires(uniqueName, cmds, links) {
|
|
1509
1510
|
let path = getFullPath(uniqueName);
|
|
1510
1511
|
let text = removeComment(String(fs.readFileSync(path)))
|
|
1512
|
+
|
|
1513
|
+
text = wrapperJsirText(text);
|
|
1514
|
+
|
|
1511
1515
|
let temp = []
|
|
1512
1516
|
regEach(text, /\$require\s*\(([^()]+)\)/g, r=> {
|
|
1513
1517
|
if (r[1]) {
|
package/deps/evalCode.js
CHANGED
|
@@ -19,9 +19,7 @@ module.exports = async ($text = '', $cmdName = '', $args = [],
|
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
// 兼容
|
|
22
|
-
$text = $
|
|
23
|
-
$text = $text.replace(/([\s=;])import\s*\(/g, '$1$import(');
|
|
24
|
-
$text = $text.replace(/^import\s*\(/mg, '$import(');
|
|
22
|
+
$text = $lib.wrapperJsirText($text)
|
|
25
23
|
|
|
26
24
|
const $setTips = $lib.setTips;
|
|
27
25
|
const $delTips = $lib.delTips;
|
package/deps/example.js
CHANGED
package/deps/util.js
CHANGED
|
@@ -11,13 +11,14 @@ const crypto = require('crypto');
|
|
|
11
11
|
const dayJs = require('dayjs')
|
|
12
12
|
const table = require('console.table')
|
|
13
13
|
const initModulePaths = Object.assign([], module.paths)
|
|
14
|
+
const path = require('path')
|
|
14
15
|
|
|
15
16
|
global.$newInput = false
|
|
16
17
|
global.$workspaceMap = {}
|
|
17
18
|
global.$defaultSpace = 'local'
|
|
18
19
|
global.$newError = false
|
|
19
20
|
global.$tips = {}
|
|
20
|
-
global.$packages =
|
|
21
|
+
global.$packages = {}
|
|
21
22
|
|
|
22
23
|
let libDataDir;
|
|
23
24
|
let lockDir;
|
|
@@ -198,10 +199,12 @@ function createConsole(uniqueName) {
|
|
|
198
199
|
result.$error = $error;
|
|
199
200
|
result.$draft = draftLog;
|
|
200
201
|
if (uniqueName) {
|
|
201
|
-
|
|
202
|
+
let pair = parseUniqueName(uniqueName)
|
|
203
|
+
let fileName = pair[0] + '/' + pair[1].split(".")[0]
|
|
204
|
+
result.$log = createLimitLogger(fileName + '.log', {
|
|
202
205
|
logInfo: false
|
|
203
206
|
});
|
|
204
|
-
result.$error = createLimitLogger(
|
|
207
|
+
result.$error = createLimitLogger(fileName + '.error', {
|
|
205
208
|
logInfo: false,
|
|
206
209
|
error: true
|
|
207
210
|
});
|
|
@@ -297,7 +300,7 @@ function toJsirFileName(name) {
|
|
|
297
300
|
}
|
|
298
301
|
|
|
299
302
|
function isJsirFileName(name) {
|
|
300
|
-
return /^[^./]*[^./\s]\.[^./\s]+$/.test(name)
|
|
303
|
+
return /^[^./]*[^./\s]\.[^./\s]+$/.test(name) && name.indexOf(".") > 1
|
|
301
304
|
}
|
|
302
305
|
|
|
303
306
|
function isMatch(text,
|
|
@@ -604,6 +607,20 @@ function getLogDir() {
|
|
|
604
607
|
return logDir;
|
|
605
608
|
}
|
|
606
609
|
|
|
610
|
+
/**
|
|
611
|
+
* 根据文件完整路径,检查并创建其父级目录
|
|
612
|
+
* 示例:/a/b/c/d.txt -> 检查并创建 /a/b/c
|
|
613
|
+
* @param {string} filePath 文件的完整路径
|
|
614
|
+
*/
|
|
615
|
+
function createDirs(filePath) {
|
|
616
|
+
// 1. 获取父目录,比如 '/a/b/c'
|
|
617
|
+
const dirPath = path.dirname(filePath);
|
|
618
|
+
|
|
619
|
+
// 2. 使用 mkdirSync + { recursive: true } 来递归创建目录
|
|
620
|
+
// 如果目录已存在,则不会报错
|
|
621
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
622
|
+
}
|
|
623
|
+
|
|
607
624
|
function createLimitLogger(fileName, {
|
|
608
625
|
maxChars = 49 * 1024 * 1024,
|
|
609
626
|
logInfo = true,
|
|
@@ -616,6 +633,7 @@ function createLimitLogger(fileName, {
|
|
|
616
633
|
}
|
|
617
634
|
let logDir = getLogDir()
|
|
618
635
|
let logPath = logDir + "/" + fileName
|
|
636
|
+
createDirs(logPath)
|
|
619
637
|
if (logInfo) {
|
|
620
638
|
console.info(`log: ${logPath}`)
|
|
621
639
|
}
|
|
@@ -766,7 +784,7 @@ function setModulePaths(space) {
|
|
|
766
784
|
}
|
|
767
785
|
|
|
768
786
|
function enrichPackages(moduleName, space) {
|
|
769
|
-
if (!global.$packages
|
|
787
|
+
if (!global.$packages.hasOwnProperty(moduleName)) {
|
|
770
788
|
global.$packages[moduleName] = space
|
|
771
789
|
}
|
|
772
790
|
}
|
|
@@ -1778,7 +1796,18 @@ function getTextComments(text) {
|
|
|
1778
1796
|
return results.map(i => i.replace(/\s+$/, ''))
|
|
1779
1797
|
}
|
|
1780
1798
|
|
|
1799
|
+
function wrapperJsirText(text) {
|
|
1800
|
+
return text
|
|
1801
|
+
.replace(/^require\s*\(\s*(["'`][ei]\s+)/mg, 'await $require($2')
|
|
1802
|
+
.replace(/([\s=;])require\s*\(\s*(["'`][ei]\s+)/g, '$1await $require($2')
|
|
1803
|
+
.replace(/([\s=;])import\s*\(/g, '$1$import(')
|
|
1804
|
+
.replace(/^import\s*\(/mg, '$import(')
|
|
1805
|
+
.replace(/^module\.exports\s*=\s*/m, 'return ')
|
|
1806
|
+
;
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1781
1809
|
module.exports = {
|
|
1810
|
+
wrapperJsirText,
|
|
1782
1811
|
run,
|
|
1783
1812
|
reget,
|
|
1784
1813
|
trim,
|
|
@@ -1873,5 +1902,6 @@ module.exports = {
|
|
|
1873
1902
|
toJsirFileName,
|
|
1874
1903
|
fileJson,
|
|
1875
1904
|
debugStr,
|
|
1876
|
-
getAlias
|
|
1905
|
+
getAlias,
|
|
1906
|
+
createDirs
|
|
1877
1907
|
}
|