@nasl/cli 0.1.5 → 0.1.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/README.md +12 -0
- package/build/index.js +8 -0
- package/dist/bin/nasl.mjs +39802 -0
- package/dist/bin/nasl.mjs.map +1 -0
- package/dist/bin/naslc.mjs +37697 -0
- package/dist/bin/naslc.mjs.map +1 -0
- package/dist/index.mjs +36379 -0
- package/dist/index.mjs.map +1 -0
- package/out/apis/createAxios.d.ts.map +1 -1
- package/out/apis/createAxios.js +13 -0
- package/out/apis/createAxios.js.map +1 -1
- package/out/commands/check.d.ts.map +1 -1
- package/out/commands/check.js +2 -3
- package/out/commands/check.js.map +1 -1
- package/out/commands/compile.js +1 -1
- package/out/commands/compile.js.map +1 -1
- package/out/commands/dev.d.ts.map +1 -1
- package/out/commands/dev.js +191 -6
- package/out/commands/dev.js.map +1 -1
- package/out/services/resolve.d.ts.map +1 -1
- package/out/services/resolve.js +17 -5
- package/out/services/resolve.js.map +1 -1
- package/out/utils/logger.d.ts +4 -0
- package/out/utils/logger.d.ts.map +1 -1
- package/out/utils/logger.js +24 -1
- package/out/utils/logger.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAxios.d.ts","sourceRoot":"","sources":["../../src/apis/createAxios.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createAxios.d.ts","sourceRoot":"","sources":["../../src/apis/createAxios.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,iCAuB1C"}
|
package/out/apis/createAxios.js
CHANGED
|
@@ -5,11 +5,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createAxios = createAxios;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const url_1 = require("url");
|
|
8
9
|
function createAxios(baseURL) {
|
|
10
|
+
// 解析 baseURL 提取 hostname 和 port
|
|
11
|
+
const url = new url_1.URL(baseURL);
|
|
12
|
+
const hostname = url.hostname;
|
|
13
|
+
const protocol = url.protocol;
|
|
14
|
+
// 确定端口:如果 URL 中没有指定端口,根据协议使用默认端口
|
|
15
|
+
let port = url.port;
|
|
16
|
+
if (!port) {
|
|
17
|
+
port = protocol === 'https:' ? '443' : '80';
|
|
18
|
+
}
|
|
19
|
+
// 构建 Host 头:hostname:port
|
|
20
|
+
const hostHeader = `${hostname}:${port}`;
|
|
9
21
|
return axios_1.default.create({
|
|
10
22
|
baseURL,
|
|
11
23
|
headers: {
|
|
12
24
|
'Content-Type': 'application/json',
|
|
25
|
+
'Host': hostHeader,
|
|
13
26
|
},
|
|
14
27
|
timeout: 120000,
|
|
15
28
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAxios.js","sourceRoot":"","sources":["../../src/apis/createAxios.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"createAxios.js","sourceRoot":"","sources":["../../src/apis/createAxios.ts"],"names":[],"mappings":";;;;;AAGA,kCAuBC;AA1BD,kDAA0B;AAC1B,6BAA0B;AAE1B,SAAgB,WAAW,CAAC,OAAe;IACvC,gCAAgC;IAChC,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAE9B,iCAAiC;IACjC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,IAAI,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAED,0BAA0B;IAC1B,MAAM,UAAU,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;IAEzC,OAAO,eAAK,CAAC,MAAM,CAAC;QAChB,OAAO;QACP,OAAO,EAAE;YACL,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,UAAU;SACrB;QACD,OAAO,EAAE,MAAM;KAClB,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C;;GAEG;AACH,wBAAsB,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc;;;;GAoC9E"}
|
package/out/commands/check.js
CHANGED
|
@@ -5,6 +5,7 @@ const utils_1 = require("../utils");
|
|
|
5
5
|
const apis_1 = require("../apis");
|
|
6
6
|
const compose_1 = require("../services/compose");
|
|
7
7
|
const resolve_1 = require("../services/resolve");
|
|
8
|
+
const logger_1 = require("../utils/logger");
|
|
8
9
|
/**
|
|
9
10
|
* 检查命令 - 检查 NASL 代码的语法和语义
|
|
10
11
|
*/
|
|
@@ -30,14 +31,12 @@ async function check(entry, options) {
|
|
|
30
31
|
ideVersion: config.ideVersion,
|
|
31
32
|
})).trim();
|
|
32
33
|
}
|
|
33
|
-
if (result || process.env.DEBUG_TO_FILE_WHEN_SUCCESS) {
|
|
34
|
-
logger.debugToFile('check', result + '\n============\n' + fullNaturalTS);
|
|
35
|
-
}
|
|
36
34
|
const checkResult = {
|
|
37
35
|
success: !result,
|
|
38
36
|
result,
|
|
39
37
|
fullNaturalTS,
|
|
40
38
|
};
|
|
39
|
+
(0, logger_1.fastLogToFile)(entry || '*', `check_${checkResult.success ? 'success' : 'error'}.log`, result + '\n================================================\n\n================================================\n' + fullNaturalTS);
|
|
41
40
|
if (!checkResult.success)
|
|
42
41
|
logger.error('\n' + checkResult.result);
|
|
43
42
|
return checkResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":";;AAUA,sBAoCC;AA9CD,oCAAyC;AACzC,kCAAmC;AACnC,iDAAsD;AACtD,iDAAuD;AAEvD,4CAAgD;AAEhD;;GAEG;AACI,KAAK,UAAU,KAAK,CAAC,KAAyB,EAAE,OAAwB;IAC3E,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,qBAAa,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE/B,YAAY;IACZ,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAgB,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAElG,WAAW;IACX,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAEtC,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC;QACD,aAAa,GAAG,IAAA,yBAAe,EAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,MAAM,GAAI,KAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;QAC3B,MAAM,GAAG,CAAC,MAAM,IAAA,eAAQ,EAAC,aAAa,EAAE;YACpC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,UAAU,EAAE,MAAM,CAAC,UAAU;SAChC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG;QAChB,OAAO,EAAE,CAAC,MAAM;QAChB,MAAM;QACN,aAAa;KAChB,CAAC;IAEF,IAAA,sBAAa,EAAC,KAAK,IAAI,GAAG,EAAE,SAAS,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,MAAM,GAAG,0GAA0G,GAAG,aAAa,CAAC,CAAC;IAE3N,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,WAAW,CAAC;AACvB,CAAC"}
|
package/out/commands/compile.js
CHANGED
|
@@ -75,11 +75,11 @@ async function compile(entry, options) {
|
|
|
75
75
|
return { config, outDir };
|
|
76
76
|
}
|
|
77
77
|
async function tryCompile(entry, options) {
|
|
78
|
-
const logger = options?.logger || utils_1.defaultLogger;
|
|
79
78
|
try {
|
|
80
79
|
await compile(entry, options);
|
|
81
80
|
}
|
|
82
81
|
catch (error) {
|
|
82
|
+
const logger = options?.logger || utils_1.defaultLogger;
|
|
83
83
|
logger.error(`编译过程发生错误:${error.message}`);
|
|
84
84
|
logger.exit(1);
|
|
85
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,0BAmCC;AAED,gCAQC;AAvDD,2CAA6B;AAC7B,oCAA2D;AAC3D,kCAAqC;AACrC,iDAAsD;AACtD,iDAAuD;AAGvD;;GAEG;AACI,KAAK,UAAU,OAAO,CAAC,KAAc,EAAE,OAAwB;IAClE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,qBAAa,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE/B,YAAY;IACZ,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,0BAAgB,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/G,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,WAAW;IACX,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,IAAI,CAAC;QACD,MAAM,aAAa,GAAG,IAAA,yBAAe,EAAC,cAAc,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAA,iBAAU,EAAC,aAAa,EAAE;YAChD,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,UAAU,EAAE,MAAM,CAAC,UAAU;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExB,SAAS;QACT,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,IAAA,wBAAgB,EAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,MAAM,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,UAAW,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAc,EAAE,OAAwB;IACrE,
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,0BAmCC;AAED,gCAQC;AAvDD,2CAA6B;AAC7B,oCAA2D;AAC3D,kCAAqC;AACrC,iDAAsD;AACtD,iDAAuD;AAGvD;;GAEG;AACI,KAAK,UAAU,OAAO,CAAC,KAAc,EAAE,OAAwB;IAClE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,qBAAa,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE/B,YAAY;IACZ,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,0BAAgB,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/G,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,WAAW;IACX,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,IAAI,CAAC;QACD,MAAM,aAAa,GAAG,IAAA,yBAAe,EAAC,cAAc,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAA,iBAAU,EAAC,aAAa,EAAE;YAChD,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,UAAU,EAAE,MAAM,CAAC,UAAU;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExB,SAAS;QACT,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,IAAA,wBAAgB,EAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,MAAM,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,UAAW,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAc,EAAE,OAAwB;IACrE,IAAI,CAAC;QACD,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,qBAAa,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,YAAa,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD,MAAM,WAAW,UAAU;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkM7E"}
|
package/out/commands/dev.js
CHANGED
|
@@ -34,18 +34,193 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.dev = dev;
|
|
37
|
-
const exec_1 = require("../utils/exec");
|
|
38
37
|
const logger_1 = require("../utils/logger");
|
|
39
38
|
const compile_1 = require("./compile");
|
|
40
39
|
const path = __importStar(require("path"));
|
|
40
|
+
const fs = __importStar(require("fs-extra"));
|
|
41
|
+
const child_process_1 = require("child_process");
|
|
41
42
|
/**
|
|
42
43
|
* 编译命令 - 将 NASL 编译为 Vue 和 JS
|
|
43
44
|
*/
|
|
44
45
|
async function dev(entry, options) {
|
|
45
|
-
const logger = options?.logger || logger_1.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
const logger = options?.logger || new logger_1.ConsoleLoggerWithoutExit();
|
|
47
|
+
// 获取项目根目录和配置
|
|
48
|
+
const projectRoot = process.cwd();
|
|
49
|
+
const configPath = path.join(projectRoot, 'nasl.config.json');
|
|
50
|
+
if (!fs.existsSync(configPath)) {
|
|
51
|
+
logger.error('未找到 nasl.config.json 配置文件,请先初始化项目');
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
const configContent = fs.readFileSync(configPath, 'utf-8');
|
|
55
|
+
const config = JSON.parse(configContent);
|
|
56
|
+
const srcDir = path.join(projectRoot, config.srcDir);
|
|
57
|
+
const outDir = path.join(projectRoot, config.outDir);
|
|
58
|
+
// 检查是否存在 src 目录
|
|
59
|
+
const hasSrcDir = fs.existsSync(srcDir) && fs.statSync(srcDir).isDirectory();
|
|
60
|
+
let lastCompileSuccess = false;
|
|
61
|
+
if (hasSrcDir) {
|
|
62
|
+
// 有 src 目录,先进行一次初始编译
|
|
63
|
+
logger.info('检测到 src 目录,开始初始编译...');
|
|
64
|
+
try {
|
|
65
|
+
await (0, compile_1.compile)(entry);
|
|
66
|
+
lastCompileSuccess = true;
|
|
67
|
+
logger.success('初始编译成功!');
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
logger.error(`初始编译失败:${error.message}`);
|
|
71
|
+
// 即使编译失败,也要尝试启动服务(可能 out 目录已有旧文件)
|
|
72
|
+
lastCompileSuccess = false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
logger.info('未检测到 src 目录,将监听 src 目录的创建');
|
|
77
|
+
}
|
|
78
|
+
// 确保 out 目录存在
|
|
79
|
+
if (!fs.existsSync(outDir)) {
|
|
80
|
+
logger.info('out 目录不存在,创建空的 out 目录');
|
|
81
|
+
fs.ensureDirSync(outDir);
|
|
82
|
+
}
|
|
83
|
+
// 启动 webpack 开发服务器
|
|
84
|
+
const webpackProcess = await startWebpackDevServer(outDir, options, logger);
|
|
85
|
+
const { default: chokidar } = await Promise.resolve().then(() => __importStar(require('chokidar')));
|
|
86
|
+
// 监听 src 目录下的文件变化(即使目录不存在也可以监听)
|
|
87
|
+
logger.info(`正在监听 src 目录: ${srcDir}`);
|
|
88
|
+
const watcher = chokidar.watch(srcDir, {
|
|
89
|
+
ignored: /(^|[\/\\])\../, // 忽略隐藏文件
|
|
90
|
+
ignoreInitial: true,
|
|
91
|
+
persistent: true,
|
|
92
|
+
awaitWriteFinish: {
|
|
93
|
+
stabilityThreshold: 100,
|
|
94
|
+
pollInterval: 10,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
// 只监听 ts/tsx/nasl 文件的变化
|
|
98
|
+
const shouldHandleFile = (filePath) => {
|
|
99
|
+
return /\.(ts|tsx|nasl|css)$/.test(filePath);
|
|
100
|
+
};
|
|
101
|
+
let isCompiling = false;
|
|
102
|
+
let pendingCompile = false;
|
|
103
|
+
const handleFileChange = async (filePath) => {
|
|
104
|
+
// 过滤非目标文件类型
|
|
105
|
+
if (!shouldHandleFile(filePath))
|
|
106
|
+
return;
|
|
107
|
+
logger.info(`检测到文件变化: ${path.relative(projectRoot, filePath)}`);
|
|
108
|
+
if (isCompiling) {
|
|
109
|
+
pendingCompile = true;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
isCompiling = true;
|
|
113
|
+
pendingCompile = false;
|
|
114
|
+
try {
|
|
115
|
+
logger.newLine();
|
|
116
|
+
logger.info('开始重新编译...');
|
|
117
|
+
await (0, compile_1.compile)(entry);
|
|
118
|
+
logger.success('重新编译成功!');
|
|
119
|
+
lastCompileSuccess = true;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
logger.error(`重新编译失败:${error.message}`);
|
|
123
|
+
logger.info('继续使用上次成功的编译结果提供服务');
|
|
124
|
+
// 不重启 webpack,继续使用旧的 out 目录
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
isCompiling = false;
|
|
128
|
+
if (pendingCompile) {
|
|
129
|
+
// 如果在编译期间有新的文件变化,立即处理
|
|
130
|
+
setTimeout(() => handleFileChange(filePath), 0);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
watcher.on('change', handleFileChange);
|
|
135
|
+
watcher.on('add', handleFileChange);
|
|
136
|
+
watcher.on('unlink', handleFileChange);
|
|
137
|
+
// 监听 src 目录本身的创建
|
|
138
|
+
watcher.on('addDir', async (dirPath) => {
|
|
139
|
+
// 当 src 目录本身被创建时触发编译
|
|
140
|
+
if (dirPath === srcDir) {
|
|
141
|
+
logger.info('检测到 src 目录被创建');
|
|
142
|
+
if (isCompiling) {
|
|
143
|
+
pendingCompile = true;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
isCompiling = true;
|
|
147
|
+
pendingCompile = false;
|
|
148
|
+
try {
|
|
149
|
+
logger.newLine();
|
|
150
|
+
logger.info('开始编译...');
|
|
151
|
+
await (0, compile_1.compile)(entry);
|
|
152
|
+
logger.success('编译成功!');
|
|
153
|
+
lastCompileSuccess = true;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
logger.error(`编译失败:${error.message}`);
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
isCompiling = false;
|
|
160
|
+
if (pendingCompile) {
|
|
161
|
+
setTimeout(() => handleFileChange(''), 0);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
// 监听 out 目录的删除,以便在 out 目录被删除时重新编译
|
|
167
|
+
const outWatcher = chokidar.watch(outDir, {
|
|
168
|
+
ignoreInitial: true,
|
|
169
|
+
persistent: true,
|
|
170
|
+
depth: 0, // 只监听 out 目录本身,不监听子目录
|
|
171
|
+
});
|
|
172
|
+
outWatcher.on('unlinkDir', async (deletedPath) => {
|
|
173
|
+
if (deletedPath === outDir) {
|
|
174
|
+
logger.warn('检测到 out 目录被删除');
|
|
175
|
+
// 检查是否存在 src 目录
|
|
176
|
+
const hasSrc = fs.existsSync(srcDir) && fs.statSync(srcDir).isDirectory();
|
|
177
|
+
if (hasSrc) {
|
|
178
|
+
logger.info('检测到 src 目录存在,开始重新编译...');
|
|
179
|
+
if (isCompiling) {
|
|
180
|
+
pendingCompile = true;
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
isCompiling = true;
|
|
184
|
+
pendingCompile = false;
|
|
185
|
+
try {
|
|
186
|
+
// 确保 out 目录存在
|
|
187
|
+
fs.ensureDirSync(outDir);
|
|
188
|
+
await (0, compile_1.compile)(entry);
|
|
189
|
+
logger.success('重新编译成功!out 目录已恢复');
|
|
190
|
+
lastCompileSuccess = true;
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
logger.error(`重新编译失败:${error.message}`);
|
|
194
|
+
}
|
|
195
|
+
finally {
|
|
196
|
+
isCompiling = false;
|
|
197
|
+
if (pendingCompile) {
|
|
198
|
+
setTimeout(() => handleFileChange(''), 0);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
logger.warn('未检测到 src 目录,无法重新编译');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
// 处理进程退出
|
|
208
|
+
const cleanup = () => {
|
|
209
|
+
if (webpackProcess) {
|
|
210
|
+
webpackProcess.kill();
|
|
211
|
+
}
|
|
212
|
+
watcher.close().catch(() => { });
|
|
213
|
+
outWatcher.close().catch(() => { });
|
|
214
|
+
};
|
|
215
|
+
process.on('SIGINT', cleanup);
|
|
216
|
+
process.on('SIGTERM', cleanup);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* 启动 webpack 开发服务器
|
|
220
|
+
*/
|
|
221
|
+
async function startWebpackDevServer(outDir, options, logger) {
|
|
222
|
+
logger?.newLine();
|
|
223
|
+
logger?.info('正在启动开发服务...');
|
|
49
224
|
const configRelativePath = path.relative(outDir, path.resolve(__dirname, '../../build/webpack.config.js'));
|
|
50
225
|
// 构建 webpack-cli 参数
|
|
51
226
|
let webpackArgs = `${require.resolve('.bin/webpack-cli')} serve --config ${configRelativePath}`;
|
|
@@ -57,6 +232,16 @@ async function dev(entry, options) {
|
|
|
57
232
|
webpackArgs += ' --open';
|
|
58
233
|
if (options?.hot)
|
|
59
234
|
webpackArgs += ' --hot';
|
|
60
|
-
|
|
235
|
+
// 使用 spawn 而不是 spawnSync,以便进程可以常驻
|
|
236
|
+
const webpackProcess = (0, child_process_1.spawn)(webpackArgs, {
|
|
237
|
+
shell: true,
|
|
238
|
+
stdio: 'inherit',
|
|
239
|
+
cwd: outDir,
|
|
240
|
+
});
|
|
241
|
+
webpackProcess.on('error', (error) => {
|
|
242
|
+
logger?.error(`Webpack 开发服务器启动失败: ${error.message}`);
|
|
243
|
+
process.exit(1);
|
|
244
|
+
});
|
|
245
|
+
return webpackProcess;
|
|
61
246
|
}
|
|
62
247
|
//# sourceMappingURL=dev.js.map
|
package/out/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/services/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAIzE;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAa7H;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAanH;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/services/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAIzE;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAa7H;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAanH;AAwLD,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4DlK"}
|
package/out/services/resolve.js
CHANGED
|
@@ -114,15 +114,16 @@ function replaceViewAsSignature(content) {
|
|
|
114
114
|
* @param processedFileMap 已处理的文件集合
|
|
115
115
|
* @returns 文件信息和新发现的依赖文件列表
|
|
116
116
|
*/
|
|
117
|
-
function processFileDeps(pathRelativeToSrc, srcDir, matchedFileSet, processedFileMap, logger, verbose) {
|
|
117
|
+
function processFileDeps(pathRelativeToSrc, srcDir, matchedFileSet, processedFileMap, depNotFoundList, logger, verbose) {
|
|
118
118
|
const absoluteFilePath = path.join(srcDir, pathRelativeToSrc);
|
|
119
119
|
const fileInfo = { path: pathRelativeToSrc, content: '' };
|
|
120
120
|
try {
|
|
121
121
|
fileInfo.content = (0, utils_1.readFileWithLog)(absoluteFilePath, logger);
|
|
122
122
|
}
|
|
123
123
|
catch (error) {
|
|
124
|
+
depNotFoundList.push(pathRelativeToSrc);
|
|
124
125
|
// Logger.warn(`找不到依赖文件 ${pathRelativeToSrc},跳过分析`);
|
|
125
|
-
throw new Error(`找不到依赖文件 ${pathRelativeToSrc},尝试先实现依赖文件或创建占位文件。建议用 MultiEdit 工具快速创建多个文件`);
|
|
126
|
+
// throw new Error(`找不到依赖文件 ${pathRelativeToSrc},尝试先实现依赖文件或创建占位文件。建议用 MultiEdit 工具快速创建多个文件`);
|
|
126
127
|
}
|
|
127
128
|
const isView = pathRelativeToSrc.endsWith('.tsx');
|
|
128
129
|
const isEntryFile = matchedFileSet.has(pathRelativeToSrc);
|
|
@@ -192,13 +193,14 @@ async function collectDeps(patterns, projectRoot, srcDir, logger, verbose) {
|
|
|
192
193
|
});
|
|
193
194
|
filesToProcess.sort(compose_1.sorter);
|
|
194
195
|
let errors = [];
|
|
196
|
+
const depNotFoundList = [];
|
|
195
197
|
// 2. 广度优先遍历依赖
|
|
196
198
|
while (filesToProcess.length > 0) {
|
|
197
199
|
const pathRelativeToSrc = filesToProcess.shift();
|
|
198
200
|
if (processedFileMap.has(pathRelativeToSrc))
|
|
199
201
|
continue; // 跳过已处理的文件
|
|
200
202
|
try {
|
|
201
|
-
const { fileInfo, newDeps } = processFileDeps(pathRelativeToSrc, srcDir, matchedFileSet, processedFileMap, logger, verbose);
|
|
203
|
+
const { fileInfo, newDeps } = processFileDeps(pathRelativeToSrc, srcDir, matchedFileSet, processedFileMap, depNotFoundList, logger, verbose);
|
|
202
204
|
result.push(fileInfo);
|
|
203
205
|
filesToProcess.push(...newDeps);
|
|
204
206
|
}
|
|
@@ -209,8 +211,18 @@ async function collectDeps(patterns, projectRoot, srcDir, logger, verbose) {
|
|
|
209
211
|
}
|
|
210
212
|
}
|
|
211
213
|
logger.info(`依赖分析完成,共收集到 ${result.length} 个文件`);
|
|
212
|
-
|
|
213
|
-
|
|
214
|
+
let errorMessage = '';
|
|
215
|
+
if (depNotFoundList.length > 0) {
|
|
216
|
+
errorMessage += `找不到以下依赖文件:
|
|
217
|
+
${depNotFoundList.map((dep) => `- ${dep}\n`).join('')}
|
|
218
|
+
------
|
|
219
|
+
尝试先实现依赖文件或创建占位文件。建议用 MultiEdit 工具快速创建多个文件`;
|
|
220
|
+
}
|
|
221
|
+
if (errors.length > 0) {
|
|
222
|
+
errorMessage += (errorMessage ? '\n' : '') + errors.join('\n============\n');
|
|
223
|
+
}
|
|
224
|
+
if (errorMessage)
|
|
225
|
+
throw new Error(errorMessage);
|
|
214
226
|
return result;
|
|
215
227
|
}
|
|
216
228
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/services/resolve.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,sCAaC;AAED,wCAaC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/services/resolve.ts"],"names":[],"mappings":"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"}
|
package/out/utils/logger.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function fastLogToFile(entry: string | string[], suffix: string, content: string): void;
|
|
1
2
|
/**
|
|
2
3
|
* 日志工具类
|
|
3
4
|
*/
|
|
@@ -38,6 +39,9 @@ export declare class ConsoleLogger extends BaseLogger {
|
|
|
38
39
|
debug(...args: any[]): void;
|
|
39
40
|
exit(code: number): never;
|
|
40
41
|
}
|
|
42
|
+
export declare class ConsoleLoggerWithoutExit extends ConsoleLogger {
|
|
43
|
+
exit(code: number): never;
|
|
44
|
+
}
|
|
41
45
|
/**
|
|
42
46
|
* 内存日志工具类
|
|
43
47
|
* 用于在内存中存储日志
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,qBAAa,UAAU;IACnB,OAAO,IAAI,IAAI;IAIf,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI7B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAgBnD;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;IACzC,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B;;OAEG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI7B;;OAEG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B;;OAEG;IACH,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B;;OAEG;IACH,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;CAG5B;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,UAAU;IACjC,IAAI,EAAE,MAAM,EAAE,CAAM;IAE3B,OAAO,IAAI,IAAI;IAIf,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI7B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAKzB,KAAK,IAAI,IAAI;IAIb,aAAa,IAAI,MAAM;CAG1B;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAc7F;AAED;;GAEG;AACH,qBAAa,UAAU;IACnB,OAAO,IAAI,IAAI;IAIf,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI7B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAgBnD;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;IACzC,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B;;OAEG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI7B;;OAEG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B;;OAEG;IACH,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B;;OAEG;IACH,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;CAG5B;AAED,qBAAa,wBAAyB,SAAQ,aAAa;IACvD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;CAI5B;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,UAAU;IACjC,IAAI,EAAE,MAAM,EAAE,CAAM;IAE3B,OAAO,IAAI,IAAI;IAIf,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI7B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAKzB,KAAK,IAAI,IAAI;IAIb,aAAa,IAAI,MAAM;CAG1B;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
package/out/utils/logger.js
CHANGED
|
@@ -36,11 +36,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.defaultLogger = exports.MemoryLogger = exports.ConsoleLogger = exports.BaseLogger = void 0;
|
|
39
|
+
exports.defaultLogger = exports.MemoryLogger = exports.ConsoleLoggerWithoutExit = exports.ConsoleLogger = exports.BaseLogger = void 0;
|
|
40
|
+
exports.fastLogToFile = fastLogToFile;
|
|
40
41
|
const chalk_1 = __importDefault(require("chalk"));
|
|
41
42
|
const fs = __importStar(require("fs-extra"));
|
|
42
43
|
const path = __importStar(require("path"));
|
|
43
44
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
45
|
+
function fastLogToFile(entry, suffix, content) {
|
|
46
|
+
if (process.env.NASL_CLI_LOG_DIR) {
|
|
47
|
+
const logDir = path.resolve(process.env.NASL_CLI_LOG_DIR);
|
|
48
|
+
fs.ensureDirSync(logDir);
|
|
49
|
+
const timeInDir = (process.env.NASL_CLI_LOG_DIR.match(/\d{6,8}_(\d{6})-/)?.[1] || '00');
|
|
50
|
+
const now = (0, dayjs_1.default)();
|
|
51
|
+
const hourInDir = parseInt(timeInDir.slice(0, 2), 10);
|
|
52
|
+
// 跨天则累加 24 小时
|
|
53
|
+
const hourStr = (now.hour() >= hourInDir ? now.hour() : Math.ceil(hourInDir / 24) * 24 + now.hour()).toString().padStart(2, '0');
|
|
54
|
+
const entryName = path.basename(Array.isArray(entry) ? entry[0] || '*' : entry).replace(/[\[\]\(\)\{\}\*\+\-\?\|\^\$\,\/\#\:\\\s]+/g, '_');
|
|
55
|
+
const filePath = path.resolve(logDir, `${hourStr}${now.format('mmss_SSS')}-${entryName}-${suffix}`);
|
|
56
|
+
fs.outputFileSync(filePath, content);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
44
59
|
/**
|
|
45
60
|
* 日志工具类
|
|
46
61
|
*/
|
|
@@ -127,6 +142,14 @@ class ConsoleLogger extends BaseLogger {
|
|
|
127
142
|
}
|
|
128
143
|
}
|
|
129
144
|
exports.ConsoleLogger = ConsoleLogger;
|
|
145
|
+
class ConsoleLoggerWithoutExit extends ConsoleLogger {
|
|
146
|
+
exit(code) {
|
|
147
|
+
if (code)
|
|
148
|
+
throw new Error(`Error with code: ${code}`);
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.ConsoleLoggerWithoutExit = ConsoleLoggerWithoutExit;
|
|
130
153
|
/**
|
|
131
154
|
* 内存日志工具类
|
|
132
155
|
* 用于在内存中存储日志
|
package/out/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nasl/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "NASL (Next Application Specific Language) CLI tool for checking, compiling and developing NASL code",
|
|
5
5
|
"main": "out/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
"@typescript-eslint/parser": "^8.0.0",
|
|
49
49
|
"eslint": "^8.0.0",
|
|
50
50
|
"rollup": "^4.53.3",
|
|
51
|
-
"rollup-plugin-node-externals": "^8.1.2",
|
|
52
51
|
"typescript": "^5.9.0"
|
|
53
52
|
},
|
|
54
53
|
"dependencies": {
|
|
55
54
|
"@types/fs-extra": "^11.0.4",
|
|
56
55
|
"axios": "^1.13.2",
|
|
57
56
|
"chalk": "^4.1.2",
|
|
57
|
+
"chokidar": "^4.0.3",
|
|
58
58
|
"commander": "^11.0.0",
|
|
59
59
|
"copy-webpack-plugin": "^13.0.1",
|
|
60
60
|
"css-loader": "^6.8.1",
|