@nasl/cli 0.1.0

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 (98) hide show
  1. package/README.md +84 -0
  2. package/out/apis/index.d.ts +17 -0
  3. package/out/apis/index.d.ts.map +1 -0
  4. package/out/apis/index.js +83 -0
  5. package/out/apis/index.js.map +1 -0
  6. package/out/bin/nasl-compile.d.ts +3 -0
  7. package/out/bin/nasl-compile.d.ts.map +1 -0
  8. package/out/bin/nasl-compile.js +22 -0
  9. package/out/bin/nasl-compile.js.map +1 -0
  10. package/out/bin/nasl.d.ts +3 -0
  11. package/out/bin/nasl.d.ts.map +1 -0
  12. package/out/bin/nasl.js +54 -0
  13. package/out/bin/nasl.js.map +1 -0
  14. package/out/bin/naslc.d.ts +3 -0
  15. package/out/bin/naslc.d.ts.map +1 -0
  16. package/out/bin/naslc.js +18 -0
  17. package/out/bin/naslc.js.map +1 -0
  18. package/out/commands/check.d.ts +5 -0
  19. package/out/commands/check.d.ts.map +1 -0
  20. package/out/commands/check.js +30 -0
  21. package/out/commands/check.js.map +1 -0
  22. package/out/commands/compile.d.ts +9 -0
  23. package/out/commands/compile.d.ts.map +1 -0
  24. package/out/commands/compile.js +85 -0
  25. package/out/commands/compile.js.map +1 -0
  26. package/out/commands/dev.d.ts +5 -0
  27. package/out/commands/dev.d.ts.map +1 -0
  28. package/out/commands/dev.js +16 -0
  29. package/out/commands/dev.js.map +1 -0
  30. package/out/commands/index.d.ts +5 -0
  31. package/out/commands/index.d.ts.map +1 -0
  32. package/out/commands/index.js +21 -0
  33. package/out/commands/index.js.map +1 -0
  34. package/out/commands/init.d.ts +5 -0
  35. package/out/commands/init.d.ts.map +1 -0
  36. package/out/commands/init.js +75 -0
  37. package/out/commands/init.js.map +1 -0
  38. package/out/commands/transpile.d.ts +5 -0
  39. package/out/commands/transpile.d.ts.map +1 -0
  40. package/out/commands/transpile.js +123 -0
  41. package/out/commands/transpile.js.map +1 -0
  42. package/out/index.d.ts +14 -0
  43. package/out/index.d.ts.map +1 -0
  44. package/out/index.js +30 -0
  45. package/out/index.js.map +1 -0
  46. package/out/services/compose.d.ts +3 -0
  47. package/out/services/compose.d.ts.map +1 -0
  48. package/out/services/compose.js +36 -0
  49. package/out/services/compose.js.map +1 -0
  50. package/out/services/resolve.d.ts +18 -0
  51. package/out/services/resolve.d.ts.map +1 -0
  52. package/out/services/resolve.js +107 -0
  53. package/out/services/resolve.js.map +1 -0
  54. package/out/services/resolveFiles.d.ts +18 -0
  55. package/out/services/resolveFiles.d.ts.map +1 -0
  56. package/out/services/resolveFiles.js +103 -0
  57. package/out/services/resolveFiles.js.map +1 -0
  58. package/out/types/api.d.ts +107 -0
  59. package/out/types/api.d.ts.map +1 -0
  60. package/out/types/api.js +6 -0
  61. package/out/types/api.js.map +1 -0
  62. package/out/types/config.d.ts +27 -0
  63. package/out/types/config.d.ts.map +1 -0
  64. package/out/types/config.js +19 -0
  65. package/out/types/config.js.map +1 -0
  66. package/out/types/createAxios.d.ts +2 -0
  67. package/out/types/createAxios.d.ts.map +1 -0
  68. package/out/types/createAxios.js +17 -0
  69. package/out/types/createAxios.js.map +1 -0
  70. package/out/types/index.d.ts +3 -0
  71. package/out/types/index.d.ts.map +1 -0
  72. package/out/types/index.js +19 -0
  73. package/out/types/index.js.map +1 -0
  74. package/out/utils/config.d.ts +19 -0
  75. package/out/utils/config.d.ts.map +1 -0
  76. package/out/utils/config.js +114 -0
  77. package/out/utils/config.js.map +1 -0
  78. package/out/utils/exec.d.ts +11 -0
  79. package/out/utils/exec.d.ts.map +1 -0
  80. package/out/utils/exec.js +27 -0
  81. package/out/utils/exec.js.map +1 -0
  82. package/out/utils/file.d.ts +9 -0
  83. package/out/utils/file.d.ts.map +1 -0
  84. package/out/utils/file.js +67 -0
  85. package/out/utils/file.js.map +1 -0
  86. package/out/utils/index.d.ts +4 -0
  87. package/out/utils/index.d.ts.map +1 -0
  88. package/out/utils/index.js +20 -0
  89. package/out/utils/index.js.map +1 -0
  90. package/out/utils/logger.d.ts +27 -0
  91. package/out/utils/logger.d.ts.map +1 -0
  92. package/out/utils/logger.js +49 -0
  93. package/out/utils/logger.js.map +1 -0
  94. package/out/utils/string.d.ts +2 -0
  95. package/out/utils/string.d.ts.map +1 -0
  96. package/out/utils/string.js +7 -0
  97. package/out/utils/string.js.map +1 -0
  98. package/package.json +47 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 转换命令 - 将 NASL 转换为 AST JSON
3
+ */
4
+ export declare function transpileCommand(entry?: string): Promise<void>;
5
+ //# sourceMappingURL=transpile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transpile.d.ts","sourceRoot":"","sources":["../../src/commands/transpile.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFpE"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.transpileCommand = transpileCommand;
37
+ const path = __importStar(require("path"));
38
+ const utils_1 = require("../utils");
39
+ const apis_1 = require("../apis");
40
+ /**
41
+ * 转换命令 - 将 NASL 转换为 AST JSON
42
+ */
43
+ async function transpileCommand(entry) {
44
+ try {
45
+ // 加载配置
46
+ const config = (0, utils_1.loadConfig)();
47
+ const projectRoot = (0, utils_1.getProjectRoot)();
48
+ utils_1.Logger.info('开始转换 NASL 代码...');
49
+ utils_1.Logger.info(`项目根目录: ${projectRoot}`);
50
+ utils_1.Logger.info(`源代码目录: ${config.srcDir}`);
51
+ utils_1.Logger.info(`输出目录: ${config.outDir}`);
52
+ const srcDir = path.join(projectRoot, config.srcDir);
53
+ const outDir = path.join(projectRoot, config.outDir);
54
+ // 收集需要转换的文件
55
+ let files = [];
56
+ if (entry) {
57
+ // 转换指定入口文件及其依赖
58
+ const entryPath = path.resolve(projectRoot, entry);
59
+ utils_1.Logger.info(`入口文件: ${entry}`);
60
+ // TODO: 这里需要实现依赖分析,收集所有依赖文件
61
+ // 目前简单实现:只读取入口文件
62
+ const content = (0, utils_1.readFileWithLog)(entryPath);
63
+ files = [
64
+ {
65
+ path: path.relative(projectRoot, entryPath),
66
+ content,
67
+ },
68
+ ];
69
+ }
70
+ else {
71
+ // 转换整个 src 目录
72
+ utils_1.Logger.info('转换整个源代码目录...');
73
+ const filePaths = await (0, utils_1.scanNASLFiles)(srcDir, config.representation);
74
+ files = filePaths.map((filePath) => ({
75
+ path: filePath,
76
+ content: (0, utils_1.readFileWithLog)(path.join(projectRoot, filePath)),
77
+ }));
78
+ utils_1.Logger.info(`找到 ${files.length} 个 NASL 文件`);
79
+ }
80
+ if (files.length === 0) {
81
+ utils_1.Logger.warn('未找到需要转换的文件');
82
+ return;
83
+ }
84
+ // 调用转换 API
85
+ utils_1.Logger.info('正在调用转换服务...');
86
+ const result = await (0, apis_1.transpile)(files, {
87
+ entry,
88
+ srcDir: config.srcDir,
89
+ outDir: config.outDir,
90
+ serverBaseURL: config.serverBaseURL,
91
+ ideVersion: config.ideVersion,
92
+ });
93
+ // 处理转换结果
94
+ if (result.success && result.files) {
95
+ utils_1.Logger.success('转换成功!');
96
+ utils_1.Logger.info(`生成 ${result.files.length} 个 AST JSON 文件`);
97
+ // 写入输出文件
98
+ for (const file of result.files) {
99
+ const outputPath = path.join(outDir, file.path);
100
+ (0, utils_1.writeFileWithLog)(outputPath, file.content);
101
+ utils_1.Logger.debug(`写入文件: ${outputPath}`);
102
+ }
103
+ utils_1.Logger.success(`所有文件已输出到: ${outDir}`);
104
+ }
105
+ else if (result.errors && result.errors.length > 0) {
106
+ utils_1.Logger.error('转换失败!');
107
+ utils_1.Logger.error('\n错误信息:');
108
+ for (const error of result.errors) {
109
+ console.error(` ${error.file}:${error.line}:${error.column} - [${error.type}] ${error.message}`);
110
+ }
111
+ process.exit(1);
112
+ }
113
+ else {
114
+ utils_1.Logger.error('转换失败:未知错误');
115
+ process.exit(1);
116
+ }
117
+ }
118
+ catch (error) {
119
+ utils_1.Logger.error(`转换过程发生错误: ${error.message}`);
120
+ process.exit(1);
121
+ }
122
+ }
123
+ //# sourceMappingURL=transpile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transpile.js","sourceRoot":"","sources":["../../src/commands/transpile.ts"],"names":[],"mappings":"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"}
package/out/index.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @nasl/cli - NASL CLI 工具
3
+ *
4
+ * 提供以下功能:
5
+ * - nasl-init: 初始化配置文件
6
+ * - nasl-compile / naslc: 编译 NASL 代码
7
+ * - nasl-check: 检查 NASL 代码
8
+ * - nasl-transpile: 转换 NASL 代码为 AST JSON
9
+ */
10
+ export * from './types';
11
+ export * from './utils';
12
+ export * from './commands';
13
+ export * from './apis';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC"}
package/out/index.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * @nasl/cli - NASL CLI 工具
4
+ *
5
+ * 提供以下功能:
6
+ * - nasl-init: 初始化配置文件
7
+ * - nasl-compile / naslc: 编译 NASL 代码
8
+ * - nasl-check: 检查 NASL 代码
9
+ * - nasl-transpile: 转换 NASL 代码为 AST JSON
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
23
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ __exportStar(require("./types"), exports);
27
+ __exportStar(require("./utils"), exports);
28
+ __exportStar(require("./commands"), exports);
29
+ __exportStar(require("./apis"), exports);
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB"}
@@ -0,0 +1,3 @@
1
+ import type { FileInfo } from "../types";
2
+ export declare function composeToString(files: FileInfo[]): string;
3
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +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;AA8BzC,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAQzD"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.composeToString = composeToString;
4
+ function createSorter() {
5
+ const priorityOrder = ['app.dataSources', 'app.enums', 'app.structures', 'app.logics', 'app.frontendTypes'];
6
+ // 获取优先级索引
7
+ const getPriority = (str) => {
8
+ const prefixIndex = priorityOrder.findIndex((p) => str.startsWith(p));
9
+ return ~prefixIndex ? prefixIndex : priorityOrder.length;
10
+ };
11
+ return (a, b) => {
12
+ const aPriority = getPriority(a);
13
+ const bPriority = getPriority(b);
14
+ // 首先按优先级排序
15
+ if (aPriority !== bPriority) {
16
+ return aPriority - bPriority;
17
+ }
18
+ // 如果是frontendTypes,按字母顺序排序
19
+ if (aPriority === 4) {
20
+ return a.localeCompare(b);
21
+ }
22
+ else {
23
+ // 其他情况保持原顺序
24
+ return 0;
25
+ }
26
+ };
27
+ }
28
+ function composeToString(files) {
29
+ const sorter = createSorter();
30
+ files.sort((a, b) => sorter(a.path, b.path));
31
+ return files.map((file) => {
32
+ const namespace = file.path.split('.').slice(0, -2).join('.');
33
+ return `namespace ${namespace} {\n${file.content}\n}\n`;
34
+ }).join('\n');
35
+ }
36
+ //# sourceMappingURL=compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/services/compose.ts"],"names":[],"mappings":";;AA8BA,0CAQC;AApCD,SAAS,YAAY;IACjB,MAAM,aAAa,GAAG,CAAC,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAE5G,UAAU;IACV,MAAM,WAAW,GAAG,CAAC,GAAW,EAAU,EAAE;QACxC,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;IAC7D,CAAC,CAAC;IAEF,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QAC5B,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAEjC,WAAW;QACX,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,SAAS,GAAG,SAAS,CAAC;QACjC,CAAC;QAED,2BAA2B;QAC3B,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACJ,YAAY;YACZ,OAAO,CAAC,CAAC;QACb,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,eAAe,CAAC,KAAiB;IAC7C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,OAAO,aAAa,SAAS,OAAO,IAAI,CAAC,OAAO,OAAO,CAAC;IAC5D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { FileInfo, NASLRepresentation, NASLConfig } from '../types';
2
+ /**
3
+ * 扫描目录下的所有 NASL 文件
4
+ */
5
+ export declare function scanNASLFiles(srcDir: string, representation: NASLRepresentation): Promise<string[]>;
6
+ export interface ResolveFilesResult {
7
+ inputFiles: FileInfo[];
8
+ config: NASLConfig;
9
+ projectRoot: string;
10
+ srcDir: string;
11
+ }
12
+ /**
13
+ * 解析需要处理的文件(包含配置加载和目录设置)
14
+ * @param entry 入口文件路径(可选)
15
+ * @returns 文件信息、配置和目录信息
16
+ */
17
+ export declare function resolveNASLFiles(entry?: string): Promise<ResolveFilesResult>;
18
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/services/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzE;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAazG;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkDlF"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.scanNASLFiles = scanNASLFiles;
37
+ exports.resolveNASLFiles = resolveNASLFiles;
38
+ const path = __importStar(require("path"));
39
+ const globby = require("globby");
40
+ const utils_1 = require("../utils");
41
+ /**
42
+ * 扫描目录下的所有 NASL 文件
43
+ */
44
+ async function scanNASLFiles(srcDir, representation) {
45
+ try {
46
+ const pattern = representation === 'NaturalTS' ? '**/*.{ts,tsx}' : '**/*.nasl';
47
+ const files = await globby(pattern, {
48
+ cwd: srcDir,
49
+ onlyFiles: true,
50
+ absolute: false,
51
+ });
52
+ return files;
53
+ }
54
+ catch (error) {
55
+ utils_1.Logger.error(`扫描文件失败: ${error.message}`);
56
+ throw error;
57
+ }
58
+ }
59
+ /**
60
+ * 解析需要处理的文件(包含配置加载和目录设置)
61
+ * @param entry 入口文件路径(可选)
62
+ * @returns 文件信息、配置和目录信息
63
+ */
64
+ async function resolveNASLFiles(entry) {
65
+ // 加载配置
66
+ const config = (0, utils_1.loadConfig)();
67
+ const projectRoot = (0, utils_1.getProjectRoot)();
68
+ utils_1.Logger.info(`项目根目录: ${projectRoot}`);
69
+ utils_1.Logger.info(`源代码目录: ${config.srcDir}`);
70
+ const srcDir = path.join(projectRoot, config.srcDir);
71
+ // 收集需要处理的文件
72
+ let inputFiles = [];
73
+ if (entry) {
74
+ // 处理指定入口文件及其依赖
75
+ const entryPath = path.resolve(projectRoot, entry);
76
+ utils_1.Logger.info(`入口文件: ${entry}`);
77
+ // TODO: 这里需要实现依赖分析,收集所有依赖文件
78
+ // 目前简单实现:只读取入口文件
79
+ const content = (0, utils_1.readFileWithLog)(entryPath);
80
+ inputFiles = [{
81
+ path: path.relative(projectRoot, entryPath),
82
+ content,
83
+ }];
84
+ }
85
+ else {
86
+ // 扫描整个 src 目录
87
+ utils_1.Logger.info('扫描整个源代码目录...');
88
+ const filePaths = await scanNASLFiles(srcDir, config.representation);
89
+ utils_1.Logger.debug(filePaths);
90
+ inputFiles = filePaths.map((filePath) => ({
91
+ path: filePath,
92
+ content: (0, utils_1.readFileWithLog)(path.join(srcDir, filePath)),
93
+ }));
94
+ if (inputFiles.length === 0) {
95
+ utils_1.Logger.warn('未找到 NASL 文件');
96
+ process.exit(1);
97
+ }
98
+ utils_1.Logger.info(`找到 ${inputFiles.length} 个 NASL 文件`);
99
+ }
100
+ return {
101
+ inputFiles,
102
+ config,
103
+ projectRoot,
104
+ srcDir,
105
+ };
106
+ }
107
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/services/resolve.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,sCAaC;AAcD,4CAkDC;AArFD,2CAA6B;AAC7B,iCAAkC;AAClC,oCAA+E;AAG/E;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,cAAkC;IAClF,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/E,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE;YAChC,GAAG,EAAE,MAAM;YACX,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,cAAM,CAAC,KAAK,CAAC,WAAY,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AASD;;;;GAIG;AACI,KAAK,UAAU,gBAAgB,CAAC,KAAc;IACjD,OAAO;IACP,MAAM,MAAM,GAAG,IAAA,kBAAU,GAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,IAAA,sBAAc,GAAE,CAAC;IAErC,cAAM,CAAC,IAAI,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;IACrC,cAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,YAAY;IACZ,IAAI,UAAU,GAAe,EAAE,CAAC;IAEhC,IAAI,KAAK,EAAE,CAAC;QACR,eAAe;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACnD,cAAM,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;QAE9B,4BAA4B;QAC5B,iBAAiB;QACjB,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,SAAS,CAAC,CAAC;QAC3C,UAAU,GAAG,CAAC;gBACV,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;gBAC3C,OAAO;aACV,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,cAAc;QACd,cAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QACrE,cAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAExB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAA,uBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SACxD,CAAC,CAAC,CAAC;QAEJ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,cAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,cAAM,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACH,UAAU;QACV,MAAM;QACN,WAAW;QACX,MAAM;KACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { FileInfo, NASLRepresentation, NASLConfig } from '../types';
2
+ /**
3
+ * 扫描目录下的所有 NASL 文件
4
+ */
5
+ export declare function scanNASLFiles(srcDir: string, representation: NASLRepresentation): Promise<string[]>;
6
+ export interface ResolveFilesResult {
7
+ inputFiles: FileInfo[];
8
+ config: NASLConfig;
9
+ projectRoot: string;
10
+ srcDir: string;
11
+ }
12
+ /**
13
+ * 解析需要处理的文件(包含配置加载和目录设置)
14
+ * @param entry 入口文件路径(可选)
15
+ * @returns 文件信息、配置和目录信息
16
+ */
17
+ export declare function resolveFiles(entry?: string): Promise<ResolveFilesResult>;
18
+ //# sourceMappingURL=resolveFiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveFiles.d.ts","sourceRoot":"","sources":["../../src/services/resolveFiles.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzE;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAazG;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6C9E"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.scanNASLFiles = scanNASLFiles;
37
+ exports.resolveFiles = resolveFiles;
38
+ const path = __importStar(require("path"));
39
+ const globby = require("globby");
40
+ const utils_1 = require("../utils");
41
+ /**
42
+ * 扫描目录下的所有 NASL 文件
43
+ */
44
+ async function scanNASLFiles(srcDir, representation) {
45
+ try {
46
+ const pattern = representation === 'NaturalTS' ? '**/*.{ts,tsx}' : '**/*.nasl';
47
+ const files = await globby(pattern, {
48
+ cwd: srcDir,
49
+ onlyFiles: true,
50
+ absolute: false,
51
+ });
52
+ return files;
53
+ }
54
+ catch (error) {
55
+ utils_1.Logger.error(`扫描文件失败: ${error.message}`);
56
+ throw error;
57
+ }
58
+ }
59
+ /**
60
+ * 解析需要处理的文件(包含配置加载和目录设置)
61
+ * @param entry 入口文件路径(可选)
62
+ * @returns 文件信息、配置和目录信息
63
+ */
64
+ async function resolveFiles(entry) {
65
+ // 加载配置
66
+ const config = (0, utils_1.loadConfig)();
67
+ const projectRoot = (0, utils_1.getProjectRoot)();
68
+ utils_1.Logger.info(`项目根目录: ${projectRoot}`);
69
+ utils_1.Logger.info(`源代码目录: ${config.srcDir}`);
70
+ const srcDir = path.join(projectRoot, config.srcDir);
71
+ // 收集需要处理的文件
72
+ let inputFiles = [];
73
+ if (entry) {
74
+ // 处理指定入口文件及其依赖
75
+ const entryPath = path.resolve(projectRoot, entry);
76
+ utils_1.Logger.info(`入口文件: ${entry}`);
77
+ // TODO: 这里需要实现依赖分析,收集所有依赖文件
78
+ // 目前简单实现:只读取入口文件
79
+ const content = (0, utils_1.readFileWithLog)(entryPath);
80
+ inputFiles = [{
81
+ path: path.relative(projectRoot, entryPath),
82
+ content,
83
+ }];
84
+ }
85
+ else {
86
+ // 扫描整个 src 目录
87
+ utils_1.Logger.info('扫描整个源代码目录...');
88
+ const filePaths = await scanNASLFiles(srcDir, config.representation);
89
+ utils_1.Logger.debug(filePaths);
90
+ inputFiles = filePaths.map((filePath) => ({
91
+ path: filePath,
92
+ content: (0, utils_1.readFileWithLog)(path.join(srcDir, filePath)),
93
+ }));
94
+ utils_1.Logger.info(`找到 ${inputFiles.length} 个 NASL 文件`);
95
+ }
96
+ return {
97
+ inputFiles,
98
+ config,
99
+ projectRoot,
100
+ srcDir,
101
+ };
102
+ }
103
+ //# sourceMappingURL=resolveFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveFiles.js","sourceRoot":"","sources":["../../src/services/resolveFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,sCAaC;AAcD,oCA6CC;AAhFD,2CAA6B;AAC7B,iCAAkC;AAClC,oCAA+E;AAG/E;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,cAAkC;IAClF,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/E,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE;YAChC,GAAG,EAAE,MAAM;YACX,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,cAAM,CAAC,KAAK,CAAC,WAAY,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AASD;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAAC,KAAc;IAC7C,OAAO;IACP,MAAM,MAAM,GAAG,IAAA,kBAAU,GAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,IAAA,sBAAc,GAAE,CAAC;IAErC,cAAM,CAAC,IAAI,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;IACrC,cAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,YAAY;IACZ,IAAI,UAAU,GAAe,EAAE,CAAC;IAEhC,IAAI,KAAK,EAAE,CAAC;QACR,eAAe;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACnD,cAAM,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;QAE9B,4BAA4B;QAC5B,iBAAiB;QACjB,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,SAAS,CAAC,CAAC;QAC3C,UAAU,GAAG,CAAC;gBACV,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;gBAC3C,OAAO;aACV,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,cAAc;QACd,cAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QACrE,cAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAExB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAA,uBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SACxD,CAAC,CAAC,CAAC;QAEJ,cAAM,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACH,UAAU;QACV,MAAM;QACN,WAAW;QACX,MAAM;KACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * API 相关类型定义
3
+ */
4
+ /**
5
+ * 编译选项
6
+ */
7
+ export interface CompileOptions {
8
+ /** 入口文件 */
9
+ entry?: string;
10
+ /** 源代码目录 */
11
+ srcDir: string;
12
+ /** 输出目录 */
13
+ outDir: string;
14
+ /** 服务器 URL */
15
+ serverBaseURL: string;
16
+ /** IDE 版本 */
17
+ ideVersion: string;
18
+ }
19
+ /**
20
+ * 检查选项
21
+ */
22
+ export interface ServerOptions {
23
+ /** 服务器 URL */
24
+ serverBaseURL: string;
25
+ /** IDE 版本 */
26
+ ideVersion: string;
27
+ }
28
+ /**
29
+ * 转换选项
30
+ */
31
+ export interface TranspileOptions {
32
+ /** 入口文件 */
33
+ entry?: string;
34
+ /** 源代码目录 */
35
+ srcDir: string;
36
+ /** 输出目录 */
37
+ outDir: string;
38
+ /** 服务器 URL */
39
+ serverBaseURL: string;
40
+ /** IDE 版本 */
41
+ ideVersion: string;
42
+ }
43
+ /**
44
+ * 文件信息
45
+ */
46
+ export interface FileInfo {
47
+ /** 文件路径 */
48
+ path: string;
49
+ /** 文件内容 */
50
+ content: string;
51
+ }
52
+ /**
53
+ * 编译结果
54
+ */
55
+ export interface CompileResult {
56
+ /** 是否成功 */
57
+ success: boolean;
58
+ /** 输出文件列表 */
59
+ files?: Array<{
60
+ path: string;
61
+ content: string;
62
+ }>;
63
+ /** 错误信息 */
64
+ errors?: Array<{
65
+ file: string;
66
+ line: number;
67
+ column: number;
68
+ message: string;
69
+ type: 'syntax' | 'semantic';
70
+ }>;
71
+ }
72
+ /**
73
+ * 检查结果
74
+ */
75
+ export interface CheckResult {
76
+ /** 是否成功 */
77
+ success: boolean;
78
+ /** 错误信息 */
79
+ errors?: Array<{
80
+ file: string;
81
+ line: number;
82
+ column: number;
83
+ message: string;
84
+ type: 'syntax' | 'semantic';
85
+ }>;
86
+ }
87
+ /**
88
+ * 转换结果
89
+ */
90
+ export interface TranspileResult {
91
+ /** 是否成功 */
92
+ success: boolean;
93
+ /** AST JSON 文件列表 */
94
+ files?: Array<{
95
+ path: string;
96
+ content: string;
97
+ }>;
98
+ /** 错误信息 */
99
+ errors?: Array<{
100
+ file: string;
101
+ line: number;
102
+ column: number;
103
+ message: string;
104
+ type: 'syntax' | 'semantic';
105
+ }>;
106
+ }
107
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,cAAc;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,cAAc;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,cAAc;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,WAAW;IACX,MAAM,CAAC,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;KAC/B,CAAC,CAAC;CACN;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,MAAM,CAAC,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;KAC/B,CAAC,CAAC;CACN;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,WAAW;IACX,MAAM,CAAC,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;KAC/B,CAAC,CAAC;CACN"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * API 相关类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":";AAAA;;GAEG"}