@nasl/cli 0.1.17 → 0.1.19

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.
Files changed (39) hide show
  1. package/README.md +115 -11
  2. package/dist/bin/nasl.mjs +267 -57
  3. package/dist/bin/nasl.mjs.map +1 -1
  4. package/dist/bin/naslc.mjs +259 -50
  5. package/dist/bin/naslc.mjs.map +1 -1
  6. package/dist/index.mjs +266 -56
  7. package/dist/index.mjs.map +1 -1
  8. package/out/apis/cachable.d.ts +16 -0
  9. package/out/apis/cachable.d.ts.map +1 -0
  10. package/out/apis/cachable.js +142 -0
  11. package/out/apis/cachable.js.map +1 -0
  12. package/out/apis/createAxios.d.ts.map +1 -1
  13. package/out/apis/createAxios.js +2 -3
  14. package/out/apis/createAxios.js.map +1 -1
  15. package/out/apis/openapi.d.ts +5 -2
  16. package/out/apis/openapi.d.ts.map +1 -1
  17. package/out/apis/openapi.js +21 -25
  18. package/out/apis/openapi.js.map +1 -1
  19. package/out/commands/createAppInIde.d.ts.map +1 -1
  20. package/out/commands/createAppInIde.js +4 -0
  21. package/out/commands/createAppInIde.js.map +1 -1
  22. package/out/commands/transform.d.ts.map +1 -1
  23. package/out/commands/transform.js +1 -4
  24. package/out/commands/transform.js.map +1 -1
  25. package/out/services/compose.d.ts +1 -1
  26. package/out/services/compose.d.ts.map +1 -1
  27. package/out/services/compose.js +66 -18
  28. package/out/services/compose.js.map +1 -1
  29. package/out/services/resolve.d.ts.map +1 -1
  30. package/out/services/resolve.js +30 -5
  31. package/out/services/resolve.js.map +1 -1
  32. package/out/utils/config.d.ts.map +1 -1
  33. package/out/utils/config.js +34 -2
  34. package/out/utils/config.js.map +1 -1
  35. package/out/utils/file.d.ts +12 -0
  36. package/out/utils/file.d.ts.map +1 -1
  37. package/out/utils/file.js +18 -0
  38. package/out/utils/file.js.map +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 高阶函数,为异步函数添加缓存功能
3
+ * @param fn 需要添加缓存的函数
4
+ * @returns 带缓存的函数版本
5
+ */
6
+ export declare function cachable<TParams, EParams, TResult>(fn: (params: TParams, extraParams?: EParams) => Promise<TResult>): (params: TParams, extraParams?: EParams) => Promise<TResult>;
7
+ /**
8
+ * 高阶函数,为异步函数添加带时间戳的缓存功能
9
+ * @param fn 需要添加缓存的函数
10
+ * @param ttl 缓存有效期(毫秒),默认 1 小时
11
+ * @param getCacheKey 可选的自定义缓存 key 生成函数,如果不提供则使用整个 params
12
+ * @returns 带缓存的函数版本
13
+ */
14
+ export declare function cachableWithTTL<TParams, EParams, TResult>(fn: (params: TParams, extraParams?: EParams) => Promise<TResult>, ttl?: number, // 默认 1 小时
15
+ getCacheKey?: (params: TParams) => unknown): (params: TParams, extraParams?: EParams) => Promise<TResult>;
16
+ //# sourceMappingURL=cachable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cachable.d.ts","sourceRoot":"","sources":["../../src/apis/cachable.ts"],"names":[],"mappings":"AAuEA;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAC9C,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GACjE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAmC9D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EACrD,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAChE,GAAG,SAAc,EAAE,UAAU;AAC7B,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAC3C,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAkC9D"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cachable = cachable;
4
+ exports.cachableWithTTL = cachableWithTTL;
5
+ const crypto_1 = require("crypto");
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ function generateHash(params) {
9
+ const hash = (0, crypto_1.createHash)('sha256');
10
+ hash.update(JSON.stringify(params));
11
+ return hash.digest('hex');
12
+ }
13
+ async function getCachePath(hash) {
14
+ const cacheDir = (0, path_1.join)(process.cwd(), '.cache');
15
+ await fs_1.promises.mkdir(cacheDir, { recursive: true });
16
+ return (0, path_1.join)(cacheDir, `${hash}.json`);
17
+ }
18
+ async function getCachePathWithTimestamp(hash) {
19
+ const cacheDir = (0, path_1.join)(process.cwd(), '.cache');
20
+ await fs_1.promises.mkdir(cacheDir, { recursive: true });
21
+ return (0, path_1.join)(cacheDir, `${hash}_${Date.now()}.json`);
22
+ }
23
+ /**
24
+ * 查找指定 hash 的有效缓存文件
25
+ * @param hash 缓存标识
26
+ * @param ttl 缓存有效期(毫秒)
27
+ * @returns 缓存文件路径和缓存内容,如果没有有效缓存则返回 null
28
+ */
29
+ async function findValidCache(hash, ttl) {
30
+ const cacheDir = (0, path_1.join)(process.cwd(), '.cache');
31
+ try {
32
+ await fs_1.promises.mkdir(cacheDir, { recursive: true });
33
+ const files = await fs_1.promises.readdir(cacheDir);
34
+ const now = Date.now();
35
+ // 查找所有匹配的缓存文件
36
+ const matchingFiles = files
37
+ .filter((file) => file.startsWith(`${hash}_`) && file.endsWith('.json'))
38
+ .map((file) => {
39
+ const match = file.match(/_(\d+)\.json$/);
40
+ if (!match)
41
+ return null;
42
+ const timestamp = parseInt(match[1], 10);
43
+ return {
44
+ path: (0, path_1.join)(cacheDir, file),
45
+ timestamp,
46
+ isExpired: now - timestamp > ttl,
47
+ };
48
+ })
49
+ .filter((item) => item !== null);
50
+ // 删除过期的缓存文件
51
+ const expiredFiles = matchingFiles.filter((item) => item.isExpired);
52
+ await Promise.all(expiredFiles.map((item) => fs_1.promises.unlink(item.path).catch(() => { })));
53
+ // 查找有效的缓存文件(按时间戳降序排序,获取最新的)
54
+ const validFiles = matchingFiles.filter((item) => !item.isExpired).sort((a, b) => b.timestamp - a.timestamp);
55
+ if (validFiles.length > 0) {
56
+ const cacheFile = validFiles[0];
57
+ const cacheContent = await fs_1.promises.readFile(cacheFile.path, 'utf-8');
58
+ const cachedResult = JSON.parse(cacheContent);
59
+ return { path: cacheFile.path, data: cachedResult };
60
+ }
61
+ return null;
62
+ }
63
+ catch (error) {
64
+ return null;
65
+ }
66
+ }
67
+ /**
68
+ * 高阶函数,为异步函数添加缓存功能
69
+ * @param fn 需要添加缓存的函数
70
+ * @returns 带缓存的函数版本
71
+ */
72
+ function cachable(fn) {
73
+ return async (params, extraParams) => {
74
+ const functionName = fn.name;
75
+ const logPrefix = functionName ? `[${functionName}]` : '[cachable]';
76
+ // 检查是否启用缓存
77
+ if (process.env.NO_AI_CACHE) {
78
+ return fn(params, extraParams);
79
+ }
80
+ const hash = generateHash(params);
81
+ const cachePath = await getCachePath(hash);
82
+ try {
83
+ // 尝试读取缓存
84
+ const cacheContent = await fs_1.promises.readFile(cachePath, 'utf-8');
85
+ const cachedResult = JSON.parse(cacheContent);
86
+ console.log(`${logPrefix} ✓ 使用缓存`);
87
+ return cachedResult;
88
+ }
89
+ catch (error) {
90
+ // 缓存不存在或读取失败,继续执行原函数
91
+ }
92
+ // 调用原函数
93
+ const result = await fn(params, extraParams);
94
+ // 保存结果到缓存
95
+ try {
96
+ await fs_1.promises.writeFile(cachePath, JSON.stringify(result, null, 2), 'utf-8');
97
+ }
98
+ catch (error) {
99
+ // 缓存写入失败,但不影响返回结果
100
+ }
101
+ return result;
102
+ };
103
+ }
104
+ /**
105
+ * 高阶函数,为异步函数添加带时间戳的缓存功能
106
+ * @param fn 需要添加缓存的函数
107
+ * @param ttl 缓存有效期(毫秒),默认 1 小时
108
+ * @param getCacheKey 可选的自定义缓存 key 生成函数,如果不提供则使用整个 params
109
+ * @returns 带缓存的函数版本
110
+ */
111
+ function cachableWithTTL(fn, ttl = 3600 * 1000, // 默认 1 小时
112
+ getCacheKey) {
113
+ return async (params, extraParams) => {
114
+ const functionName = fn.name;
115
+ const logPrefix = functionName ? `[${functionName}]` : '[cachableWithTTL]';
116
+ // 检查是否启用缓存
117
+ if (process.env.NO_AI_CACHE) {
118
+ return fn(params, extraParams);
119
+ }
120
+ // 使用自定义的 getCacheKey 或默认使用整个 params
121
+ const cacheKey = getCacheKey ? getCacheKey(params) : params;
122
+ const hash = generateHash(cacheKey);
123
+ // 查找有效的缓存
124
+ const validCache = await findValidCache(hash, ttl);
125
+ if (validCache) {
126
+ console.log(`${logPrefix} ✓ 使用缓存`);
127
+ return validCache.data;
128
+ }
129
+ // 调用原函数
130
+ const result = await fn(params, extraParams);
131
+ // 保存结果到缓存(带时间戳)
132
+ try {
133
+ const cachePath = await getCachePathWithTimestamp(hash);
134
+ await fs_1.promises.writeFile(cachePath, JSON.stringify(result, null, 2), 'utf-8');
135
+ }
136
+ catch (error) {
137
+ // 缓存写入失败,但不影响返回结果
138
+ }
139
+ return result;
140
+ };
141
+ }
142
+ //# sourceMappingURL=cachable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cachable.js","sourceRoot":"","sources":["../../src/apis/cachable.ts"],"names":[],"mappings":";;AA4EA,4BAqCC;AASD,0CAsCC;AAhKD,mCAAoC;AACpC,2BAAoC;AACpC,+BAA4B;AAE5B,SAAS,YAAY,CAAC,MAAe;IACjC,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACpC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,aAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAA,WAAI,EAAC,QAAQ,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,IAAY;IACjD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,aAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAA,WAAI,EAAC,QAAQ,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,cAAc,CAAU,IAAY,EAAE,GAAW;IAC5D,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC;QACD,MAAM,aAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,aAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,cAAc;QACd,MAAM,aAAa,GAAG,KAAK;aACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aACvE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,OAAO;gBACH,IAAI,EAAE,IAAA,WAAI,EAAC,QAAQ,EAAE,IAAI,CAAC;gBAC1B,SAAS;gBACT,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,GAAG;aACnC,CAAC;QACN,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAmE,CAAC;QAEvG,YAAY;QACZ,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,4BAA4B;QAC5B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QAE7G,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC9C,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QACxD,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,QAAQ,CACpB,EAAgE;IAEhE,OAAO,KAAK,EAAE,MAAe,EAAE,WAAqB,EAAoB,EAAE;QACtE,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC;QAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;QAEpE,WAAW;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAC;YACD,SAAS;YACT,MAAM,YAAY,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC;YACnC,OAAO,YAAY,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,qBAAqB;QACzB,CAAC;QAED,QAAQ;QACR,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE7C,UAAU;QACV,IAAI,CAAC;YACD,MAAM,aAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,kBAAkB;QACtB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAC3B,EAAgE,EAChE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,UAAU;AAC7B,WAA0C;IAE1C,OAAO,KAAK,EAAE,MAAe,EAAE,WAAqB,EAAoB,EAAE;QACtE,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC;QAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAE3E,WAAW;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnC,CAAC;QAED,oCAAoC;QACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEpC,UAAU;QACV,MAAM,UAAU,GAAG,MAAM,cAAc,CAAU,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC;YACnC,OAAO,UAAU,CAAC,IAAI,CAAC;QAC3B,CAAC;QAED,QAAQ;QACR,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE7C,gBAAgB;QAChB,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,aAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,kBAAkB;QACtB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createAxios.d.ts","sourceRoot":"","sources":["../../src/apis/createAxios.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,sDAiCvD"}
1
+ {"version":3,"file":"createAxios.d.ts","sourceRoot":"","sources":["../../src/apis/createAxios.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,sDAgCvD"}
@@ -14,10 +14,9 @@ const openapi_1 = require("./openapi");
14
14
  async function createAxios(options) {
15
15
  // 如果需要鉴权,拼接 /openapi/v3/nasl;否则使用原始 URL
16
16
  const serverBaseURL = new URL(options.serverBaseURL).origin;
17
- const useOPENAPI = options.useOPENAPI || process.env.USE_LCAP_OPENAPI === 'true';
18
- const baseURL = useOPENAPI ? `${serverBaseURL}/openapi/v3/nasl` : `${serverBaseURL}/api/v1/nasl`;
17
+ const baseURL = options.useOPENAPI ? `${serverBaseURL}/openapi/v3/nasl` : `${serverBaseURL}/api/v1/nasl`;
19
18
  // 如果需要鉴权,生成完整的认证头;否则只使用基础 headers
20
- const headers = useOPENAPI ? await (0, openapi_1.generateCompleteHeaders)(options) : { 'Content-Type': 'application/json' };
19
+ const headers = options.useOPENAPI ? await (0, openapi_1.generateCompleteHeaders)(options) : { 'Content-Type': 'application/json' };
21
20
  console.log('本次服务调用方为:', baseURL);
22
21
  const instance = axios_fixed_1.default.create({
23
22
  baseURL,
@@ -1 +1 @@
1
- {"version":3,"file":"createAxios.js","sourceRoot":"","sources":["../../src/apis/createAxios.ts"],"names":[],"mappings":";;;;;AAUA,kCAiCC;AA1CD,oEAAsC;AAEtC,uCAAoD;AAEpD;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,OAAsB;IACpD,wCAAwC;IACxC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;IAE5D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC;IACjF,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,kBAAkB,CAAC,CAAC,CAAC,GAAG,aAAa,cAAc,CAAC;IACjG,kCAAkC;IAClC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,IAAA,iCAAuB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAE7G,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,qBAAK,CAAC,MAAM,CAAC;QAC1B,OAAO;QACP,OAAO;QACP,OAAO,EAAE,MAAM;KAClB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,GAAG,KAAK,EAAmD,GAAW,EAAE,IAAQ,EAAE,MAA8B,EAAc,EAAE;QACzI,OAAO,OAAO,CAAkC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAW,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,uDAAuD;YACvD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,CAAC;YACd,CAAC;QACL,CAAC,CAAe,CAAC;IACrB,CAAC,CAAC;IACF,OAAO,QAAQ,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"createAxios.js","sourceRoot":"","sources":["../../src/apis/createAxios.ts"],"names":[],"mappings":";;;;;AAUA,kCAgCC;AAzCD,oEAAsC;AAEtC,uCAAoD;AAEpD;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,OAAsB;IACpD,wCAAwC;IACxC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;IAE5D,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,kBAAkB,CAAC,CAAC,CAAC,GAAG,aAAa,cAAc,CAAC;IACzG,kCAAkC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,IAAA,iCAAuB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAErH,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,qBAAK,CAAC,MAAM,CAAC;QAC1B,OAAO;QACP,OAAO;QACP,OAAO,EAAE,MAAM;KAClB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,GAAG,KAAK,EAAmD,GAAW,EAAE,IAAQ,EAAE,MAA8B,EAAc,EAAE;QACzI,OAAO,OAAO,CAAkC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAW,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,uDAAuD;YACvD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,CAAC;YACd,CAAC;QACL,CAAC,CAAe,CAAC;IACrB,CAAC,CAAC;IACF,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -19,12 +19,15 @@ export declare function generateClientSignature(appKey: string, secretKey: strin
19
19
  */
20
20
  export declare function generateBaseHeaders(ak: string, sk: string): Record<string, string>;
21
21
  /**
22
- * 获取租户的 signInfo
22
+ * 获取租户的 signInfo(带缓存,1 小时过期)
23
23
  * @param options 服务器选项
24
24
  * @param baseHeaders 基础认证头
25
25
  * @returns x-signInfo 值
26
26
  */
27
- export declare function fetchSignInfo(options: ServerOptions, baseHeaders: Record<string, string>): Promise<string | null>;
27
+ export declare const fetchSignInfo: (params: {
28
+ options: ServerOptions;
29
+ baseHeaders: Record<string, string>;
30
+ }, extraParams?: unknown) => Promise<string | null>;
28
31
  /**
29
32
  * 生成完整的认证头(包含 x-signInfo)
30
33
  * @param options 服务器选项
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/apis/openapi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgBlD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;EAYxE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUlF;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBvH;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0BrG"}
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/apis/openapi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;EAYxE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUlF;AAkCD;;;;;GAKG;AACH,eAAO,MAAM,aAAa;aAhCyC,aAAa;iBAAe,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;mDAoCpH,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAyBrG"}
@@ -3,25 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchSignInfo = void 0;
6
7
  exports.generateClientSignature = generateClientSignature;
7
8
  exports.generateBaseHeaders = generateBaseHeaders;
8
- exports.fetchSignInfo = fetchSignInfo;
9
9
  exports.generateCompleteHeaders = generateCompleteHeaders;
10
10
  const axios_fixed_1 = __importDefault(require("@lcap/axios-fixed"));
11
11
  const crypto_1 = __importDefault(require("crypto"));
12
12
  const uuid_1 = require("uuid");
13
- /**
14
- * 构建签名字符串
15
- */
16
- function buildStringToSign(appKey, nonce, timestamp, secretKey) {
17
- return `${appKey}&${nonce}&${timestamp}&${secretKey}`;
18
- }
19
- /**
20
- * 生成 MD5 签名
21
- */
22
- function generateSignature(plainText) {
23
- return crypto_1.default.createHash('md5').update(plainText).digest('hex');
24
- }
13
+ const cachable_1 = require("./cachable");
25
14
  /**
26
15
  * 生成客户端签名信息
27
16
  * @param appKey AppKey
@@ -31,8 +20,8 @@ function generateSignature(plainText) {
31
20
  function generateClientSignature(appKey, secretKey) {
32
21
  const timestamp = Math.floor(Date.now() / 1000).toString();
33
22
  const nonce = (0, uuid_1.v4)();
34
- const plainText = buildStringToSign(appKey, nonce, timestamp, secretKey);
35
- const signature = generateSignature(plainText);
23
+ const plainText = `${appKey}&${nonce}&${timestamp}&${secretKey}`;
24
+ const signature = crypto_1.default.createHash('md5').update(plainText).digest('hex');
36
25
  return {
37
26
  appKey,
38
27
  timestamp,
@@ -57,12 +46,12 @@ function generateBaseHeaders(ak, sk) {
57
46
  };
58
47
  }
59
48
  /**
60
- * 获取租户的 signInfo
49
+ * 获取租户的 signInfo(内部实现)
61
50
  * @param options 服务器选项
62
51
  * @param baseHeaders 基础认证头
63
52
  * @returns x-signInfo 值
64
53
  */
65
- async function fetchSignInfo(options, baseHeaders) {
54
+ async function _fetchSignInfo({ options, baseHeaders }) {
66
55
  const tenantName = options.tenantName || 'defaulttenant';
67
56
  const userName = tenantName === 'defaulttenant' ? 'admin' : `${tenantName}-admin`;
68
57
  const data = {
@@ -84,6 +73,14 @@ async function fetchSignInfo(options, baseHeaders) {
84
73
  return null;
85
74
  }
86
75
  }
76
+ /**
77
+ * 获取租户的 signInfo(带缓存,1 小时过期)
78
+ * @param options 服务器选项
79
+ * @param baseHeaders 基础认证头
80
+ * @returns x-signInfo 值
81
+ */
82
+ exports.fetchSignInfo = (0, cachable_1.cachableWithTTL)(_fetchSignInfo, 3600 * 1000, // 1 小时
83
+ (params) => params.options);
87
84
  /**
88
85
  * 生成完整的认证头(包含 x-signInfo)
89
86
  * @param options 服务器选项
@@ -93,19 +90,18 @@ async function generateCompleteHeaders(options) {
93
90
  const headers = {
94
91
  'Content-Type': 'application/json',
95
92
  };
96
- const OPENAPI_AK = options.OPENAPI_AK || process.env.LCAP_OPENAPI_AK;
97
- const OPENAPI_SK = options.OPENAPI_SK || process.env.LCAP_OPENAPI_SK;
98
93
  // 如果没有提供 ak 和 sk,返回基础 headers
99
- if (!OPENAPI_AK || !OPENAPI_SK) {
100
- throw new Error(`配置了 useOPENAPI,但没有提供 OPENAPI_AK 和 OPENAPI_SK:
101
- - 可取消配置 useOPENAPI
102
- - nasl.config.json 中配置 OPENAPI_AK 和 OPENAPI_SK,或者在环境变量中配置 LCAP_OPENAPI_AK 和 LCAP_OPENAPI_SK`);
94
+ if (!options.OPENAPI_AK || !options.OPENAPI_SK) {
95
+ throw new Error(`配置了 useOPENAPI,但缺少配置 OPENAPI_AK 和 OPENAPI_SK:
96
+ - nasl.config.json 中配置 OPENAPI_AK 和 OPENAPI_SK,或者在环境变量中配置 LCAP_OPENAPI_AK 和 LCAP_OPENAPI_SK
97
+ - 或将 useOPENAPI 配置为 false
98
+ `);
103
99
  }
104
100
  // 生成基础认证头
105
- const baseHeaders = generateBaseHeaders(OPENAPI_AK, OPENAPI_SK);
101
+ const baseHeaders = generateBaseHeaders(options.OPENAPI_AK, options.OPENAPI_SK);
106
102
  Object.assign(headers, baseHeaders);
107
103
  // 获取 signInfo
108
- const signInfo = await fetchSignInfo(options, headers);
104
+ const signInfo = await (0, exports.fetchSignInfo)({ options, baseHeaders: headers });
109
105
  if (signInfo) {
110
106
  headers['x-signInfo'] = signInfo;
111
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/apis/openapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/apis/openapi.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createAppInIde.d.ts","sourceRoot":"","sources":["../../src/commands/createAppInIde.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAwB/C;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,iBAkE5E"}
1
+ {"version":3,"file":"createAppInIde.d.ts","sourceRoot":"","sources":["../../src/commands/createAppInIde.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAwB/C;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,iBAsE5E"}
@@ -69,6 +69,10 @@ async function createAppInIde(entry, options) {
69
69
  logger.info('开始创建应用在 IDE 中...');
70
70
  // 收集需要处理的文件
71
71
  const { collectedFiles, config } = await (0, resolve_1.resolveNASLFiles)(entry, logger, false, options?.verbose);
72
+ if (config.useOPENAPI) {
73
+ logger.error('create-app-in-ide 暂不支持 useOPENAPI 模式');
74
+ logger.exit(1);
75
+ }
72
76
  // 生成 fullNaturalTS
73
77
  logger.newLine();
74
78
  logger.info('正在生成 NaturalTS 代码...');
@@ -1 +1 @@
1
- {"version":3,"file":"createAppInIde.js","sourceRoot":"","sources":["../../src/commands/createAppInIde.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createAppInIde.js","sourceRoot":"","sources":["../../src/commands/createAppInIde.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/commands/transform.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;AAEvE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAiFD;;GAEG;AACH,wBAAsB,SAAS,CAC3B,aAAa,EAAE,aAAa,EAC5B,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAWf"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/commands/transform.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;AAEvE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AA8ED;;GAEG;AACH,wBAAsB,SAAS,CAC3B,aAAa,EAAE,aAAa,EAC5B,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -88,10 +88,7 @@ const transformFns = {
88
88
  jsonContent = fs.readFileSync(entry, 'utf-8');
89
89
  logger.info(`读取到 JSON 文件: ${entry}`);
90
90
  }
91
- const files = await (0, transformApi_1.transformJson2FilesApi)(jsonContent ? JSON.parse(jsonContent) : {}, {
92
- serverBaseURL: config.serverBaseURL,
93
- ideVersion: config.ideVersion,
94
- });
91
+ const files = await (0, transformApi_1.transformJson2FilesApi)(jsonContent ? JSON.parse(jsonContent) : {}, config);
95
92
  await Promise.all(files.map(async (file) => {
96
93
  const outputPath = path.join(projectRoot, config.srcDir, file.path);
97
94
  await fs.writeFile(outputPath, file.content);
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/commands/transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/commands/transform.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6FA,8BAeC;AA5GD,2CAA6B;AAC7B,6CAA+B;AAC/B,oCAAuF;AACvF,iDAAsD;AACtD,iDAAuD;AAEvD,uDAA8D;AAQ9D,MAAM,YAAY,GAAyF;IACvG;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAc,EAAE,OAA0B;QACvD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,qBAAa,CAAC;QAEhD,YAAY;QACZ,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,0BAAgB,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEvG,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,MAAM,MAAM,CAAC,CAAC;QAE/C,oBAAoB;QACpB,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzB,MAAM,aAAa,GAAG,IAAA,yBAAe,EAAC,cAAc,CAAC,CAAC;QAEtD,SAAS;QACT,MAAM,UAAU,GAAG,OAAO,EAAE,MAAM;YAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QAElD,OAAO;QACP,IAAA,wBAAgB,EAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,KAAc,EAAE,OAA0B;QACvD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,qBAAa,CAAC;QAEhD,OAAO;QACP,MAAM,MAAM,GAAG,IAAA,kBAAU,GAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,IAAA,sBAAc,GAAE,CAAC;QAErC,MAAM,CAAC,IAAI,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,MAAM,aAAa,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACJ,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAA,qCAAsB,EAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAE/F,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,OAAO,CAAC,eAAe,KAAK,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAc,EAAE,OAA0B;QACvD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,qBAAa,CAAC;QAEhD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;CACJ,CAAC;AAEF;;GAEG;AACI,KAAK,UAAU,SAAS,CAC3B,aAA4B,EAC5B,KAAc,EACd,OAA0B;IAE1B,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,qBAAa,CAAC;IAEhD,MAAM,CAAC,IAAI,CAAC,WAAW,aAAa,EAAE,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,aAAa,aAAa,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { FileInfo } from "../types";
1
+ import type { FileInfo } from '../types';
2
2
  export declare function createSorter(): (a: string, b: string) => number;
3
3
  export declare const sorter: (a: string, b: string) => number;
4
4
  export declare function composeToString(files: FileInfo[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/services/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,wBAAgB,YAAY,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CA0B/D;AACD,eAAO,MAAM,MAAM,MA3BiB,MAAM,KAAK,MAAM,KAAK,MA2BtB,CAAC;AAErC,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAgCzD"}
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/services/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,wBAAgB,YAAY,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CA0B/D;AACD,eAAO,MAAM,MAAM,MA3BiB,MAAM,KAAK,MAAM,KAAK,MA2BtB,CAAC;AA+CrC,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAoCzD"}
@@ -28,6 +28,56 @@ function createSorter() {
28
28
  };
29
29
  }
30
30
  exports.sorter = createSorter();
31
+ /**
32
+ * 验证 variables 文件
33
+ */
34
+ function validateVariablesFile(file, errors) {
35
+ const matchArr = Array.from(file.content.matchAll(/^(export\s+)(declare\s+)?(const|let)\s+(\w+)/gm));
36
+ if (matchArr.length === 0) {
37
+ errors.push(`${file.path} (variables文件) 必须包含至少一个 export const 或 export let 声明`);
38
+ }
39
+ for (const match of matchArr) {
40
+ const [, isExport] = match;
41
+ if (!isExport)
42
+ errors.push(`${file.path} 所有声明必须使用 export,错误代码:${match[0]}`);
43
+ }
44
+ }
45
+ /**
46
+ * 验证 extensions 文件
47
+ */
48
+ function validateExtensionsFile(file, errors) {
49
+ const matchArr = Array.from(file.content.matchAll(/^(export\s+)(namespace)\s+(\w+)/gm));
50
+ if (matchArr.length === 0) {
51
+ errors.push(`${file.path} (extensions文件) 必须包含至少一个 export namespace 声明`);
52
+ }
53
+ for (const match of matchArr) {
54
+ const [, isExport] = match;
55
+ if (!isExport)
56
+ errors.push(`${file.path} 所有 namespace 必须使用 export,错误代码:${match[0]}`);
57
+ }
58
+ }
59
+ /**
60
+ * 验证普通文件(枚举、实体、数据结构、逻辑、页面)
61
+ */
62
+ function validateNormalFile(file, nameFromPath, namespace, errors) {
63
+ const matchArr = Array.from(file.content.matchAll(/^(export\s+)?(declare\s+)?(function|class|interface)\s+(\w+)/gm));
64
+ if (matchArr.length === 0)
65
+ errors.push(`${file.path} 必须有一个函数或类,错误代码:${file.content}`);
66
+ else if (matchArr.length > 1)
67
+ errors.push(`${file.path} 只能有一个函数或类,错误代码:${matchArr.map((match) => match[0]).join('\n')}
68
+ 你可以将该文件中所有函数合并,或者将其他函数拆到多个文件中。`);
69
+ for (const match of matchArr) {
70
+ const [, isExport, isDeclare, type, name] = match;
71
+ if (!isExport)
72
+ errors.push(`${file.path} 必须使用 export,错误代码:${match[0]}`);
73
+ if (name !== nameFromPath)
74
+ errors.push(`${file.path} 的函数或类名必须与文件名一致,错误代码:${match[0]}`);
75
+ if (/\.(entities|enums|structures)/.test(namespace) && type !== 'class')
76
+ errors.push(`${file.path} 实体、数据结构和枚举只能使用 class 定义,错误代码:${match[0]}`);
77
+ if (/\.(logics|views)/.test(namespace) && type !== 'function')
78
+ errors.push(`${file.path} 逻辑和页面只能使用 function 定义,错误代码:${match[0]}`);
79
+ }
80
+ }
31
81
  function composeToString(files) {
32
82
  files.sort((a, b) => (0, exports.sorter)(a.path, b.path));
33
83
  const errors = [];
@@ -35,28 +85,26 @@ function composeToString(files) {
35
85
  const arr = file.path.split('.');
36
86
  const ext = arr.pop();
37
87
  const nameFromPath = arr.pop();
38
- const namespace = arr.join('.');
88
+ // 判断是否是特殊文件类型(variables extensions)
89
+ const isVariablesFile = nameFromPath === 'variables';
90
+ const isExtensionsFile = arr[0] === 'extensions';
91
+ const isSpecialFile = isVariablesFile || isExtensionsFile;
92
+ // 特殊文件的 namespace 包含文件名,普通文件不包含
93
+ const namespace = isSpecialFile ? [...arr, nameFromPath].join('.') : arr.join('.');
39
94
  if (['ts', 'tsx'].includes(ext)) {
40
- const matchArr = Array.from(file.content.matchAll(/^(export\s+)?(declare\s+)?(function|class|interface)\s+(\w+)/gm));
41
- if (matchArr.length === 0)
42
- errors.push(`${file.path} 必须有一个函数或类,错误代码:${file.content}`);
43
- else if (matchArr.length > 1)
44
- errors.push(`${file.path} 只能有一个函数或类,错误代码:${matchArr.map((match) => match[0]).join('\n')}
45
- 你可以将该文件中所有函数合并,或者将其他函数拆到多个文件中。`);
46
- for (const match of matchArr) {
47
- const [, isExport, isDeclare, type, name] = match;
48
- if (!isExport)
49
- errors.push(`${file.path} 必须使用 export,错误代码:${match[0]}`);
50
- if (name !== nameFromPath)
51
- errors.push(`${file.path} 的函数或类名必须与文件名一致,错误代码:${match[0]}`);
52
- if (/\.(entities|enums|structures)/.test(namespace) && type !== 'class')
53
- errors.push(`${file.path} 实体、数据结构和枚举只能使用 class 定义,错误代码:${match[0]}`);
54
- if (/\.(logics|views)/.test(namespace) && type !== 'function')
55
- errors.push(`${file.path} 逻辑和页面只能使用 function 定义,错误代码:${match[0]}`);
95
+ if (isVariablesFile) {
96
+ validateVariablesFile(file, errors);
97
+ }
98
+ else if (isExtensionsFile) {
99
+ validateExtensionsFile(file, errors);
100
+ }
101
+ else {
102
+ validateNormalFile(file, nameFromPath, namespace, errors);
56
103
  }
57
104
  }
58
105
  return `namespace ${namespace} {\n${file.content}\n}\n`;
59
- }).join('\n');
106
+ })
107
+ .join('\n');
60
108
  if (errors.length > 0) {
61
109
  throw new Error(errors.join('\n============\n'));
62
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/services/compose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/services/compose.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;AA6MD,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"}
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;AA4ND,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,CAsElK"}
@@ -84,11 +84,13 @@ async function scanEntryFiles(projectRoot, patterns, logger) {
84
84
  */
85
85
  function extractDeps(content) {
86
86
  const deps = new Set();
87
- // 预处理:移除注释,避免注释影响依赖分析
87
+ // 预处理:移除注释和字符串字面量,避免它们影响依赖分析
88
88
  let processedContent = content
89
89
  .replace(/\/\/.*$/gm, '') // 移除单行注释 // ...
90
- .replace(/\/\*[\s\S]*?\*\//g, ''); // 移除多行注释 /* ... */
91
- const allMatches = processedContent.matchAll(/app\.\w+\.[\w.]+/g); // 起码要2个点
90
+ .replace(/\/\*[\s\S]*?\*\//g, '') // 移除多行注释 /* ... */
91
+ .replace(/'(?:[^'\\]|\\.)*'/g, '') // 移除单引号字符串 'xxx'
92
+ .replace(/"(?:[^"\\]|\\.)*"/g, ''); // 移除双引号字符串 "xxx"
93
+ const allMatches = processedContent.matchAll(/(app|extensions)\.\w+\.[\w.]+/g); // 起码要2个点,支持 app.* 和 extensions.*
92
94
  for (const match of allMatches) {
93
95
  let dep = match[0];
94
96
  if (/Entity$|Entity\./.test(dep)) {
@@ -97,6 +99,14 @@ function extractDeps(content) {
97
99
  else if (/\.enums\.(\w+)\.(\w+)/.test(dep)) {
98
100
  dep = dep.replace(/\.enums\.(\w+).+$/, '.enums.$1');
99
101
  }
102
+ else if (/\.variables\.(\w+)/.test(dep)) {
103
+ // 处理 variables 依赖:app.backend.variables.xxx -> app.backend.variables
104
+ dep = dep.replace(/\.variables\..+$/, '.variables');
105
+ }
106
+ else if (/^extensions\.\w+\.\w+/.test(dep)) {
107
+ // 处理 extensions 依赖:extensions.lcap_auth.xxx -> extensions.lcap_auth
108
+ dep = dep.replace(/^(extensions\.\w+)\..+$/, '$1');
109
+ }
100
110
  else if (/app\.dataSources\.\w+\.entities\.\w+\.\w+$/.test(dep)) {
101
111
  continue; // 应该是写法有问题,跳过让后面的 checker 做检查
102
112
  }
@@ -218,7 +228,12 @@ async function collectDeps(patterns, projectRoot, srcDir, logger, verbose) {
218
228
  while (filesToProcess.length > 0) {
219
229
  const pathRelativeToSrc = filesToProcess.shift();
220
230
  if (processedFileMap.has(pathRelativeToSrc))
221
- continue; // 跳过已处理的文件
231
+ continue; // 跳过已处理的文件
232
+ // 检查文件类型是否支持
233
+ if (!(0, utils_1.isKnownFileType)(pathRelativeToSrc)) {
234
+ logger.warn(`跳过不支持的文件类型: ${pathRelativeToSrc}`);
235
+ continue;
236
+ }
222
237
  try {
223
238
  const { fileInfo, newDeps } = processFileDeps(pathRelativeToSrc, srcDir, matchedFileSet, processedFileMap, depNotFoundList, logger, verbose);
224
239
  result.push(fileInfo);
@@ -298,8 +313,18 @@ async function resolveNASLFiles(entry, logger, depMode, verbose) {
298
313
  }
299
314
  logger.info(`找到 ${collectedFiles.length} 个 NASL 文件`);
300
315
  }
316
+ // 统一过滤掉不支持的文件类型
317
+ const filteredFiles = [];
318
+ collectedFiles.forEach((file) => {
319
+ if ((0, utils_1.isKnownFileType)(file.path)) {
320
+ filteredFiles.push(file);
321
+ }
322
+ else {
323
+ logger.warn(`跳过不支持的文件类型: ${file.path}`);
324
+ }
325
+ });
301
326
  return {
302
- collectedFiles,
327
+ collectedFiles: filteredFiles,
303
328
  config,
304
329
  projectRoot,
305
330
  srcDir,