node-os-utils 1.3.7 → 2.0.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/README.md +1113 -237
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/package.json +99 -0
  4. package/dist/src/adapters/adapter-factory.d.ts +87 -0
  5. package/dist/src/adapters/adapter-factory.d.ts.map +1 -0
  6. package/dist/src/adapters/adapter-factory.js +272 -0
  7. package/dist/src/adapters/adapter-factory.js.map +1 -0
  8. package/dist/src/adapters/linux-adapter.d.ts +199 -0
  9. package/dist/src/adapters/linux-adapter.d.ts.map +1 -0
  10. package/dist/src/adapters/linux-adapter.js +1308 -0
  11. package/dist/src/adapters/linux-adapter.js.map +1 -0
  12. package/dist/src/adapters/macos-adapter.d.ts +232 -0
  13. package/dist/src/adapters/macos-adapter.d.ts.map +1 -0
  14. package/dist/src/adapters/macos-adapter.js +1144 -0
  15. package/dist/src/adapters/macos-adapter.js.map +1 -0
  16. package/dist/src/adapters/windows-adapter.d.ts +124 -0
  17. package/dist/src/adapters/windows-adapter.d.ts.map +1 -0
  18. package/dist/src/adapters/windows-adapter.js +601 -0
  19. package/dist/src/adapters/windows-adapter.js.map +1 -0
  20. package/dist/src/core/base-monitor.d.ts +107 -0
  21. package/dist/src/core/base-monitor.d.ts.map +1 -0
  22. package/dist/src/core/base-monitor.js +312 -0
  23. package/dist/src/core/base-monitor.js.map +1 -0
  24. package/dist/src/core/cache-manager.d.ts +157 -0
  25. package/dist/src/core/cache-manager.d.ts.map +1 -0
  26. package/dist/src/core/cache-manager.js +315 -0
  27. package/dist/src/core/cache-manager.js.map +1 -0
  28. package/dist/src/core/platform-adapter.d.ts +197 -0
  29. package/dist/src/core/platform-adapter.d.ts.map +1 -0
  30. package/dist/src/core/platform-adapter.js +244 -0
  31. package/dist/src/core/platform-adapter.js.map +1 -0
  32. package/dist/src/index.d.ts +205 -0
  33. package/dist/src/index.d.ts.map +1 -0
  34. package/dist/src/index.js +315 -0
  35. package/dist/src/index.js.map +1 -0
  36. package/dist/src/monitors/cpu-monitor.d.ts +139 -0
  37. package/dist/src/monitors/cpu-monitor.d.ts.map +1 -0
  38. package/dist/src/monitors/cpu-monitor.js +433 -0
  39. package/dist/src/monitors/cpu-monitor.js.map +1 -0
  40. package/dist/src/monitors/disk-monitor.d.ts +136 -0
  41. package/dist/src/monitors/disk-monitor.d.ts.map +1 -0
  42. package/dist/src/monitors/disk-monitor.js +465 -0
  43. package/dist/src/monitors/disk-monitor.js.map +1 -0
  44. package/dist/src/monitors/memory-monitor.d.ts +136 -0
  45. package/dist/src/monitors/memory-monitor.d.ts.map +1 -0
  46. package/dist/src/monitors/memory-monitor.js +443 -0
  47. package/dist/src/monitors/memory-monitor.js.map +1 -0
  48. package/dist/src/monitors/network-monitor.d.ts +166 -0
  49. package/dist/src/monitors/network-monitor.d.ts.map +1 -0
  50. package/dist/src/monitors/network-monitor.js +586 -0
  51. package/dist/src/monitors/network-monitor.js.map +1 -0
  52. package/dist/src/monitors/process-monitor.d.ts +142 -0
  53. package/dist/src/monitors/process-monitor.d.ts.map +1 -0
  54. package/dist/src/monitors/process-monitor.js +460 -0
  55. package/dist/src/monitors/process-monitor.js.map +1 -0
  56. package/dist/src/monitors/system-monitor.d.ts +173 -0
  57. package/dist/src/monitors/system-monitor.d.ts.map +1 -0
  58. package/dist/src/monitors/system-monitor.js +592 -0
  59. package/dist/src/monitors/system-monitor.js.map +1 -0
  60. package/dist/src/types/common.d.ts +135 -0
  61. package/dist/src/types/common.d.ts.map +1 -0
  62. package/dist/src/types/common.js +141 -0
  63. package/dist/src/types/common.js.map +1 -0
  64. package/dist/src/types/config.d.ts +288 -0
  65. package/dist/src/types/config.d.ts.map +1 -0
  66. package/dist/src/types/config.js +3 -0
  67. package/dist/src/types/config.js.map +1 -0
  68. package/dist/src/types/errors.d.ts +40 -0
  69. package/dist/src/types/errors.d.ts.map +1 -0
  70. package/dist/src/types/errors.js +67 -0
  71. package/dist/src/types/errors.js.map +1 -0
  72. package/dist/src/types/index.d.ts +16 -0
  73. package/dist/src/types/index.d.ts.map +1 -0
  74. package/dist/src/types/index.js +36 -0
  75. package/dist/src/types/index.js.map +1 -0
  76. package/dist/src/types/monitors.d.ts +623 -0
  77. package/dist/src/types/monitors.d.ts.map +1 -0
  78. package/dist/src/types/monitors.js +3 -0
  79. package/dist/src/types/monitors.js.map +1 -0
  80. package/dist/src/types/platform.d.ts +435 -0
  81. package/dist/src/types/platform.d.ts.map +1 -0
  82. package/dist/src/types/platform.js +3 -0
  83. package/dist/src/types/platform.js.map +1 -0
  84. package/dist/src/utils/command-executor.d.ts +58 -0
  85. package/dist/src/utils/command-executor.d.ts.map +1 -0
  86. package/dist/src/utils/command-executor.js +321 -0
  87. package/dist/src/utils/command-executor.js.map +1 -0
  88. package/dist/test/config/test-config.d.ts +301 -0
  89. package/dist/test/config/test-config.d.ts.map +1 -0
  90. package/dist/test/config/test-config.js +235 -0
  91. package/dist/test/config/test-config.js.map +1 -0
  92. package/dist/test/platform/linux.test.d.ts +6 -0
  93. package/dist/test/platform/linux.test.d.ts.map +1 -0
  94. package/dist/test/platform/linux.test.js +307 -0
  95. package/dist/test/platform/linux.test.js.map +1 -0
  96. package/dist/test/platform/macos.test.d.ts +6 -0
  97. package/dist/test/platform/macos.test.d.ts.map +1 -0
  98. package/dist/test/platform/macos.test.js +276 -0
  99. package/dist/test/platform/macos.test.js.map +1 -0
  100. package/dist/test/platform/windows.test.d.ts +6 -0
  101. package/dist/test/platform/windows.test.d.ts.map +1 -0
  102. package/dist/test/platform/windows.test.js +320 -0
  103. package/dist/test/platform/windows.test.js.map +1 -0
  104. package/dist/test/unit/adapters/adapter-factory.test.d.ts +2 -0
  105. package/dist/test/unit/adapters/adapter-factory.test.d.ts.map +1 -0
  106. package/dist/test/unit/adapters/adapter-factory.test.js +147 -0
  107. package/dist/test/unit/adapters/adapter-factory.test.js.map +1 -0
  108. package/dist/test/unit/adapters/linux-adapter.test.d.ts +2 -0
  109. package/dist/test/unit/adapters/linux-adapter.test.d.ts.map +1 -0
  110. package/dist/test/unit/adapters/linux-adapter.test.js +191 -0
  111. package/dist/test/unit/adapters/linux-adapter.test.js.map +1 -0
  112. package/dist/test/unit/adapters/macos-adapter.test.d.ts +2 -0
  113. package/dist/test/unit/adapters/macos-adapter.test.d.ts.map +1 -0
  114. package/dist/test/unit/adapters/macos-adapter.test.js +224 -0
  115. package/dist/test/unit/adapters/macos-adapter.test.js.map +1 -0
  116. package/dist/test/unit/adapters/windows-adapter.test.d.ts +2 -0
  117. package/dist/test/unit/adapters/windows-adapter.test.d.ts.map +1 -0
  118. package/dist/test/unit/adapters/windows-adapter.test.js +41 -0
  119. package/dist/test/unit/adapters/windows-adapter.test.js.map +1 -0
  120. package/dist/test/unit/core/base-monitor.test.d.ts +2 -0
  121. package/dist/test/unit/core/base-monitor.test.d.ts.map +1 -0
  122. package/dist/test/unit/core/base-monitor.test.js +157 -0
  123. package/dist/test/unit/core/base-monitor.test.js.map +1 -0
  124. package/dist/test/unit/core/cache-manager.test.d.ts +6 -0
  125. package/dist/test/unit/core/cache-manager.test.d.ts.map +1 -0
  126. package/dist/test/unit/core/cache-manager.test.js +127 -0
  127. package/dist/test/unit/core/cache-manager.test.js.map +1 -0
  128. package/dist/test/unit/core/platform-adapter.test.d.ts +2 -0
  129. package/dist/test/unit/core/platform-adapter.test.d.ts.map +1 -0
  130. package/dist/test/unit/core/platform-adapter.test.js +186 -0
  131. package/dist/test/unit/core/platform-adapter.test.js.map +1 -0
  132. package/dist/test/unit/index.test.d.ts +2 -0
  133. package/dist/test/unit/index.test.d.ts.map +1 -0
  134. package/dist/test/unit/index.test.js +183 -0
  135. package/dist/test/unit/index.test.js.map +1 -0
  136. package/dist/test/unit/monitors/cpu-monitor.test.d.ts +2 -0
  137. package/dist/test/unit/monitors/cpu-monitor.test.d.ts.map +1 -0
  138. package/dist/test/unit/monitors/cpu-monitor.test.js +166 -0
  139. package/dist/test/unit/monitors/cpu-monitor.test.js.map +1 -0
  140. package/dist/test/unit/monitors/disk-monitor.test.d.ts +2 -0
  141. package/dist/test/unit/monitors/disk-monitor.test.d.ts.map +1 -0
  142. package/dist/test/unit/monitors/disk-monitor.test.js +46 -0
  143. package/dist/test/unit/monitors/disk-monitor.test.js.map +1 -0
  144. package/dist/test/unit/monitors/memory-monitor.test.d.ts +2 -0
  145. package/dist/test/unit/monitors/memory-monitor.test.d.ts.map +1 -0
  146. package/dist/test/unit/monitors/memory-monitor.test.js +142 -0
  147. package/dist/test/unit/monitors/memory-monitor.test.js.map +1 -0
  148. package/dist/test/unit/monitors/network-monitor.test.d.ts +2 -0
  149. package/dist/test/unit/monitors/network-monitor.test.d.ts.map +1 -0
  150. package/dist/test/unit/monitors/network-monitor.test.js +22 -0
  151. package/dist/test/unit/monitors/network-monitor.test.js.map +1 -0
  152. package/dist/test/unit/monitors/process-monitor.test.d.ts +2 -0
  153. package/dist/test/unit/monitors/process-monitor.test.d.ts.map +1 -0
  154. package/dist/test/unit/monitors/process-monitor.test.js +165 -0
  155. package/dist/test/unit/monitors/process-monitor.test.js.map +1 -0
  156. package/dist/test/unit/monitors/system-monitor-macos.test.d.ts +2 -0
  157. package/dist/test/unit/monitors/system-monitor-macos.test.d.ts.map +1 -0
  158. package/dist/test/unit/monitors/system-monitor-macos.test.js +115 -0
  159. package/dist/test/unit/monitors/system-monitor-macos.test.js.map +1 -0
  160. package/dist/test/unit/monitors/system-monitor.test.d.ts +2 -0
  161. package/dist/test/unit/monitors/system-monitor.test.d.ts.map +1 -0
  162. package/dist/test/unit/monitors/system-monitor.test.js +70 -0
  163. package/dist/test/unit/monitors/system-monitor.test.js.map +1 -0
  164. package/dist/test/unit/types/common.test.d.ts +6 -0
  165. package/dist/test/unit/types/common.test.d.ts.map +1 -0
  166. package/dist/test/unit/types/common.test.js +139 -0
  167. package/dist/test/unit/types/common.test.js.map +1 -0
  168. package/dist/test/unit/types/config.test.d.ts +2 -0
  169. package/dist/test/unit/types/config.test.d.ts.map +1 -0
  170. package/dist/test/unit/types/config.test.js +9 -0
  171. package/dist/test/unit/types/config.test.js.map +1 -0
  172. package/dist/test/unit/types/errors.test.d.ts +6 -0
  173. package/dist/test/unit/types/errors.test.d.ts.map +1 -0
  174. package/dist/test/unit/types/errors.test.js +184 -0
  175. package/dist/test/unit/types/errors.test.js.map +1 -0
  176. package/dist/test/unit/types/index.test.d.ts +2 -0
  177. package/dist/test/unit/types/index.test.d.ts.map +1 -0
  178. package/dist/test/unit/types/index.test.js +39 -0
  179. package/dist/test/unit/types/index.test.js.map +1 -0
  180. package/dist/test/unit/types/monitors.test.d.ts +2 -0
  181. package/dist/test/unit/types/monitors.test.d.ts.map +1 -0
  182. package/dist/test/unit/types/monitors.test.js +9 -0
  183. package/dist/test/unit/types/monitors.test.js.map +1 -0
  184. package/dist/test/unit/types/platform.test.d.ts +2 -0
  185. package/dist/test/unit/types/platform.test.d.ts.map +1 -0
  186. package/dist/test/unit/types/platform.test.js +9 -0
  187. package/dist/test/unit/types/platform.test.js.map +1 -0
  188. package/dist/test/unit/utils/command-executor.test.d.ts +6 -0
  189. package/dist/test/unit/utils/command-executor.test.d.ts.map +1 -0
  190. package/dist/test/unit/utils/command-executor.test.js +153 -0
  191. package/dist/test/unit/utils/command-executor.test.js.map +1 -0
  192. package/dist/test/unit/utils/platform-specific.test.d.ts +2 -0
  193. package/dist/test/unit/utils/platform-specific.test.d.ts.map +1 -0
  194. package/dist/test/unit/utils/platform-specific.test.js +32 -0
  195. package/dist/test/unit/utils/platform-specific.test.js.map +1 -0
  196. package/dist/test/utils/platform-specific.d.ts +139 -0
  197. package/dist/test/utils/platform-specific.d.ts.map +1 -0
  198. package/dist/test/utils/platform-specific.js +306 -0
  199. package/dist/test/utils/platform-specific.js.map +1 -0
  200. package/dist/test/utils/test-base.d.ts +157 -0
  201. package/dist/test/utils/test-base.d.ts.map +1 -0
  202. package/dist/test/utils/test-base.js +316 -0
  203. package/dist/test/utils/test-base.js.map +1 -0
  204. package/package.json +78 -18
  205. package/.travis.yml +0 -7
  206. package/index.js +0 -17
  207. package/lib/bucket.js +0 -14
  208. package/lib/cpu.js +0 -94
  209. package/lib/drive.js +0 -113
  210. package/lib/exec.js +0 -28
  211. package/lib/mem.js +0 -176
  212. package/lib/netstat.js +0 -182
  213. package/lib/openfiles.js +0 -25
  214. package/lib/os.js +0 -148
  215. package/lib/osCmd.js +0 -20
  216. package/lib/proc.js +0 -38
  217. package/lib/users.js +0 -18
  218. package/test/test.js +0 -55
  219. package/util/co.js +0 -237
  220. package/util/index.js +0 -12
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandExecutor = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const util_1 = require("util");
6
+ const errors_1 = require("../types/errors");
7
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
8
+ /**
9
+ * 命令执行器
10
+ *
11
+ * 负责在不同平台上执行系统命令,提供统一的接口和错误处理
12
+ */
13
+ class CommandExecutor {
14
+ constructor(platform, defaultOptions = {}) {
15
+ this.platform = platform;
16
+ this.defaultOptions = {
17
+ timeout: 10000,
18
+ shell: true,
19
+ encoding: 'utf8',
20
+ maxBuffer: 1024 * 1024, // 1MB
21
+ env: {
22
+ ...process.env,
23
+ LC_ALL: 'en_US.UTF-8',
24
+ LANG: 'en_US.UTF-8',
25
+ LANGUAGE: 'en_US:en'
26
+ },
27
+ ...defaultOptions
28
+ };
29
+ }
30
+ /**
31
+ * 执行命令并返回结果
32
+ */
33
+ async execute(command, options = {}) {
34
+ const mergedOptions = { ...this.defaultOptions, ...options };
35
+ const startTime = Date.now();
36
+ try {
37
+ const result = await this.executeWithTimeout(command, mergedOptions);
38
+ const executionTime = Date.now() - startTime;
39
+ return {
40
+ stdout: result.stdout || '',
41
+ stderr: result.stderr || '',
42
+ exitCode: 0,
43
+ platform: this.platform,
44
+ executionTime,
45
+ command
46
+ };
47
+ }
48
+ catch (error) {
49
+ const executionTime = Date.now() - startTime;
50
+ // 处理不同类型的错误
51
+ if (error.killed && error.signal) {
52
+ // 超时或被杀死的进程
53
+ throw new errors_1.MonitorError(`Command was killed with signal ${error.signal}`, errors_1.ErrorCode.TIMEOUT, this.platform, {
54
+ command,
55
+ signal: error.signal,
56
+ killed: error.killed,
57
+ executionTime
58
+ });
59
+ }
60
+ if (error.code === 'ENOENT') {
61
+ // 命令不存在
62
+ throw new errors_1.MonitorError(`Command not found: ${command}`, errors_1.ErrorCode.COMMAND_FAILED, this.platform, {
63
+ command,
64
+ code: error.code,
65
+ executionTime
66
+ });
67
+ }
68
+ if (error.code === 'EACCES') {
69
+ // 权限不足
70
+ throw new errors_1.MonitorError(`Permission denied: ${command}`, errors_1.ErrorCode.PERMISSION_DENIED, this.platform, {
71
+ command,
72
+ code: error.code,
73
+ executionTime
74
+ });
75
+ }
76
+ const timeoutMs = mergedOptions.timeout ?? this.defaultOptions.timeout ?? 10000;
77
+ if (error.name === 'AbortError' || error.code === 'ABORT_ERR' || error.code === 'ERR_CANCELED') {
78
+ throw new errors_1.MonitorError(`Command timed out after ${timeoutMs}ms`, errors_1.ErrorCode.TIMEOUT, this.platform, {
79
+ command,
80
+ executionTime,
81
+ timeout: timeoutMs
82
+ });
83
+ }
84
+ // 命令执行失败但有输出
85
+ const result = {
86
+ stdout: error.stdout || '',
87
+ stderr: error.stderr || '',
88
+ exitCode: error.code || 1,
89
+ platform: this.platform,
90
+ executionTime,
91
+ command
92
+ };
93
+ // 如果有标准输出,即使退出码非零也返回结果
94
+ if (result.stdout && result.stdout.trim()) {
95
+ return result;
96
+ }
97
+ // 否则抛出错误
98
+ throw new errors_1.MonitorError(`Command failed with exit code ${result.exitCode}: ${result.stderr || 'Unknown error'}`, errors_1.ErrorCode.COMMAND_FAILED, this.platform, {
99
+ command,
100
+ exitCode: result.exitCode,
101
+ stderr: result.stderr,
102
+ stdout: result.stdout,
103
+ executionTime
104
+ });
105
+ }
106
+ }
107
+ /**
108
+ * 执行多个命令
109
+ */
110
+ async executeMultiple(commands, options = {}) {
111
+ const results = [];
112
+ for (const command of commands) {
113
+ try {
114
+ const result = await this.execute(command, options);
115
+ results.push(result);
116
+ }
117
+ catch (error) {
118
+ // 继续执行其他命令,但记录错误
119
+ const errorResult = {
120
+ stdout: '',
121
+ stderr: error instanceof Error ? error.message : String(error),
122
+ exitCode: 1,
123
+ platform: this.platform,
124
+ executionTime: 0,
125
+ command
126
+ };
127
+ results.push(errorResult);
128
+ }
129
+ }
130
+ return results;
131
+ }
132
+ /**
133
+ * 并发执行多个命令
134
+ */
135
+ async executeConcurrent(commands, options = {}) {
136
+ const promises = commands.map(command => this.execute(command, options).catch(error => {
137
+ // 转换错误为结果对象
138
+ return {
139
+ stdout: '',
140
+ stderr: error instanceof Error ? error.message : String(error),
141
+ exitCode: 1,
142
+ platform: this.platform,
143
+ executionTime: 0,
144
+ command
145
+ };
146
+ }));
147
+ return Promise.all(promises);
148
+ }
149
+ /**
150
+ * 执行命令并流式处理输出
151
+ */
152
+ async executeStream(command, onData, options = {}) {
153
+ const mergedOptions = { ...this.defaultOptions, ...options };
154
+ const startTime = Date.now();
155
+ return new Promise((resolve, reject) => {
156
+ const spawnOptions = {
157
+ shell: mergedOptions.shell,
158
+ env: mergedOptions.env,
159
+ cwd: mergedOptions.cwd,
160
+ timeout: mergedOptions.timeout
161
+ };
162
+ let child;
163
+ if (spawnOptions.shell) {
164
+ child = (0, child_process_1.spawn)(command, spawnOptions);
165
+ }
166
+ else {
167
+ const tokens = this.tokenizeCommand(command);
168
+ const executable = tokens.shift();
169
+ if (!executable) {
170
+ reject(new errors_1.MonitorError('Invalid command provided for execution', errors_1.ErrorCode.INVALID_CONFIG, this.platform, { command }));
171
+ return;
172
+ }
173
+ child = (0, child_process_1.spawn)(executable, tokens, spawnOptions);
174
+ }
175
+ let stdout = '';
176
+ let stderr = '';
177
+ child.stdout?.on('data', (data) => {
178
+ const text = data.toString();
179
+ stdout += text;
180
+ onData(text, false);
181
+ });
182
+ child.stderr?.on('data', (data) => {
183
+ const text = data.toString();
184
+ stderr += text;
185
+ onData(text, true);
186
+ });
187
+ child.on('close', (code) => {
188
+ const executionTime = Date.now() - startTime;
189
+ const result = {
190
+ stdout,
191
+ stderr,
192
+ exitCode: code || 0,
193
+ platform: this.platform,
194
+ executionTime,
195
+ command
196
+ };
197
+ if (code === 0 || stdout.trim()) {
198
+ resolve(result);
199
+ }
200
+ else {
201
+ reject(new errors_1.MonitorError(`Command failed with exit code ${code}`, errors_1.ErrorCode.COMMAND_FAILED, this.platform, result));
202
+ }
203
+ });
204
+ child.on('error', (error) => {
205
+ const executionTime = Date.now() - startTime;
206
+ reject(new errors_1.MonitorError(`Command execution error: ${error.message}`, errors_1.ErrorCode.COMMAND_FAILED, this.platform, {
207
+ command,
208
+ error: error.message,
209
+ executionTime
210
+ }));
211
+ });
212
+ });
213
+ }
214
+ /**
215
+ * 检查命令是否可用
216
+ */
217
+ async isCommandAvailable(command) {
218
+ const testCommand = this.platform === 'win32'
219
+ ? `where ${command}`
220
+ : `which ${command}`;
221
+ try {
222
+ await this.execute(testCommand, { timeout: 5000 });
223
+ return true;
224
+ }
225
+ catch {
226
+ return false;
227
+ }
228
+ }
229
+ /**
230
+ * 获取命令的版本信息
231
+ */
232
+ async getCommandVersion(command, versionFlag = '--version') {
233
+ try {
234
+ const result = await this.execute(`${command} ${versionFlag}`, { timeout: 5000 });
235
+ return result.stdout.trim();
236
+ }
237
+ catch (error) {
238
+ throw new errors_1.MonitorError(`Failed to get version for command: ${command}`, errors_1.ErrorCode.COMMAND_FAILED, this.platform, { command, versionFlag, error });
239
+ }
240
+ }
241
+ /**
242
+ * 设置默认选项
243
+ */
244
+ setDefaultOptions(options) {
245
+ this.defaultOptions = { ...this.defaultOptions, ...options };
246
+ }
247
+ /**
248
+ * 获取默认选项
249
+ */
250
+ getDefaultOptions() {
251
+ return { ...this.defaultOptions };
252
+ }
253
+ /**
254
+ * 转义命令参数
255
+ */
256
+ escapeArgument(arg) {
257
+ if (this.platform === 'win32') {
258
+ // Windows 命令行转义
259
+ return `"${arg.replace(/"/g, '""')}"`;
260
+ }
261
+ else {
262
+ // Unix-like 系统转义
263
+ return `'${arg.replace(/'/g, "'\"'\"'")}'`;
264
+ }
265
+ }
266
+ /**
267
+ * 构建安全的命令字符串
268
+ */
269
+ buildCommand(command, args = []) {
270
+ const escapedArgs = args.map(arg => this.escapeArgument(arg));
271
+ return [command, ...escapedArgs].join(' ');
272
+ }
273
+ tokenizeCommand(command) {
274
+ const matches = command.match(/"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'|[^\s]+/g);
275
+ if (!matches) {
276
+ return [];
277
+ }
278
+ return matches.map(token => {
279
+ const startsWithQuote = token.startsWith('"') || token.startsWith("'");
280
+ const endsWithQuote = token.endsWith('"') || token.endsWith("'");
281
+ if (startsWithQuote && endsWithQuote && token.length >= 2) {
282
+ const unquoted = token.slice(1, -1);
283
+ return unquoted.replace(/\\([\\'" ])/g, '$1');
284
+ }
285
+ return token;
286
+ });
287
+ }
288
+ /**
289
+ * 带超时执行命令
290
+ */
291
+ async executeWithTimeout(command, options) {
292
+ const controller = new AbortController();
293
+ const timeoutId = setTimeout(() => controller.abort(), options.timeout || 10000);
294
+ try {
295
+ const execOptions = {
296
+ ...options,
297
+ signal: controller.signal
298
+ };
299
+ // 确保 shell 选项在不同平台下正确设置
300
+ if (execOptions.shell === true) {
301
+ if (process.platform === 'win32') {
302
+ execOptions.shell = process.env.ComSpec || 'cmd.exe';
303
+ }
304
+ else {
305
+ // 尝试使用当前 SHELL,若不存在再回退到常见 POSIX shell
306
+ const fallbackShells = [process.env.SHELL, '/bin/bash', '/bin/sh'];
307
+ execOptions.shell = fallbackShells.find(Boolean);
308
+ }
309
+ }
310
+ const result = await execAsync(command, execOptions);
311
+ clearTimeout(timeoutId);
312
+ return result;
313
+ }
314
+ catch (error) {
315
+ clearTimeout(timeoutId);
316
+ throw error;
317
+ }
318
+ }
319
+ }
320
+ exports.CommandExecutor = CommandExecutor;
321
+ //# sourceMappingURL=command-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-executor.js","sourceRoot":"","sources":["../../../src/utils/command-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,301 @@
1
+ /**
2
+ * 测试配置文件
3
+ * 统一管理所有测试相关的配置参数
4
+ */
5
+ /**
6
+ * 全局测试配置
7
+ */
8
+ export declare const TestGlobalConfig: {
9
+ timeouts: {
10
+ default: number;
11
+ long: number;
12
+ performance: number;
13
+ quick: number;
14
+ };
15
+ performance: {
16
+ maxMemoryIncreaseMB: number;
17
+ maxExecutionTimeMs: number;
18
+ maxSyncOperationMs: number;
19
+ maxAsyncOperationMs: number;
20
+ iterationCount: {
21
+ quick: number;
22
+ standard: number;
23
+ stress: number;
24
+ };
25
+ };
26
+ validation: {
27
+ percentageRange: {
28
+ min: number;
29
+ max: number;
30
+ };
31
+ memoryToleranceMB: number;
32
+ diskToleranceGB: number;
33
+ percentageTolerance: number;
34
+ networkStatsMinFields: string[];
35
+ };
36
+ retry: {
37
+ maxAttempts: number;
38
+ delayMs: number;
39
+ backoffMultiplier: number;
40
+ };
41
+ };
42
+ /**
43
+ * 平台特定配置
44
+ */
45
+ export declare const PlatformConfigs: {
46
+ linux: {
47
+ timeouts: {
48
+ memory: number;
49
+ disk: number;
50
+ network: number;
51
+ cpu: number;
52
+ };
53
+ features: {
54
+ procFilesystem: boolean;
55
+ loadavg: boolean;
56
+ networkInterfaces: string[];
57
+ expectedCommands: string[];
58
+ };
59
+ paths: {
60
+ procMeminfo: string;
61
+ procCpuinfo: string;
62
+ procStat: string;
63
+ procLoadavg: string;
64
+ procNetDev: string;
65
+ };
66
+ validation: {
67
+ memoryMinMB: number;
68
+ diskMinGB: number;
69
+ cpuMinCount: number;
70
+ };
71
+ };
72
+ darwin: {
73
+ timeouts: {
74
+ memory: number;
75
+ disk: number;
76
+ network: number;
77
+ cpu: number;
78
+ };
79
+ features: {
80
+ procFilesystem: boolean;
81
+ loadavg: boolean;
82
+ networkInterfaces: string[];
83
+ expectedCommands: string[];
84
+ applesilicon: boolean;
85
+ };
86
+ paths: {
87
+ mountPoint: string;
88
+ systemVolumesData: string;
89
+ privatePath: string;
90
+ };
91
+ validation: {
92
+ memoryMinMB: number;
93
+ diskMinGB: number;
94
+ cpuMinCount: number;
95
+ cpuModelPatterns: RegExp;
96
+ };
97
+ };
98
+ win32: {
99
+ timeouts: {
100
+ memory: number;
101
+ disk: number;
102
+ network: number;
103
+ cpu: number;
104
+ };
105
+ features: {
106
+ procFilesystem: boolean;
107
+ loadavg: boolean;
108
+ networkInterfaces: string[];
109
+ expectedCommands: string[];
110
+ unsupportedFeatures: string[];
111
+ };
112
+ paths: {
113
+ systemDrive: string;
114
+ commonDrives: string[];
115
+ };
116
+ validation: {
117
+ memoryMinMB: number;
118
+ diskMinGB: number;
119
+ cpuMinCount: number;
120
+ cpuModelPatterns: RegExp;
121
+ };
122
+ };
123
+ };
124
+ /**
125
+ * 获取当前平台的配置
126
+ */
127
+ export declare function getCurrentPlatformConfig(): {
128
+ timeouts: {
129
+ memory: number;
130
+ disk: number;
131
+ network: number;
132
+ cpu: number;
133
+ };
134
+ features: {
135
+ procFilesystem: boolean;
136
+ loadavg: boolean;
137
+ networkInterfaces: string[];
138
+ expectedCommands: string[];
139
+ };
140
+ paths: {
141
+ procMeminfo: string;
142
+ procCpuinfo: string;
143
+ procStat: string;
144
+ procLoadavg: string;
145
+ procNetDev: string;
146
+ };
147
+ validation: {
148
+ memoryMinMB: number;
149
+ diskMinGB: number;
150
+ cpuMinCount: number;
151
+ };
152
+ } | {
153
+ timeouts: {
154
+ memory: number;
155
+ disk: number;
156
+ network: number;
157
+ cpu: number;
158
+ };
159
+ features: {
160
+ procFilesystem: boolean;
161
+ loadavg: boolean;
162
+ networkInterfaces: string[];
163
+ expectedCommands: string[];
164
+ applesilicon: boolean;
165
+ };
166
+ paths: {
167
+ mountPoint: string;
168
+ systemVolumesData: string;
169
+ privatePath: string;
170
+ };
171
+ validation: {
172
+ memoryMinMB: number;
173
+ diskMinGB: number;
174
+ cpuMinCount: number;
175
+ cpuModelPatterns: RegExp;
176
+ };
177
+ } | {
178
+ timeouts: {
179
+ memory: number;
180
+ disk: number;
181
+ network: number;
182
+ cpu: number;
183
+ };
184
+ features: {
185
+ procFilesystem: boolean;
186
+ loadavg: boolean;
187
+ networkInterfaces: string[];
188
+ expectedCommands: string[];
189
+ unsupportedFeatures: string[];
190
+ };
191
+ paths: {
192
+ systemDrive: string;
193
+ commonDrives: string[];
194
+ };
195
+ validation: {
196
+ memoryMinMB: number;
197
+ diskMinGB: number;
198
+ cpuMinCount: number;
199
+ cpuModelPatterns: RegExp;
200
+ };
201
+ };
202
+ /**
203
+ * 获取平台特定的超时时间
204
+ */
205
+ export declare function getPlatformTimeout(category: string): number;
206
+ /**
207
+ * 检查功能是否在当前平台上支持
208
+ */
209
+ export declare function isFeatureSupported(feature: string): boolean;
210
+ /**
211
+ * 获取平台特定的验证阈值
212
+ */
213
+ export declare function getPlatformValidation(): {
214
+ memoryMinMB: number;
215
+ diskMinGB: number;
216
+ cpuMinCount: number;
217
+ percentageRange: {
218
+ min: number;
219
+ max: number;
220
+ };
221
+ memoryToleranceMB: number;
222
+ diskToleranceGB: number;
223
+ percentageTolerance: number;
224
+ networkStatsMinFields: string[];
225
+ } | {
226
+ memoryMinMB: number;
227
+ diskMinGB: number;
228
+ cpuMinCount: number;
229
+ cpuModelPatterns: RegExp;
230
+ percentageRange: {
231
+ min: number;
232
+ max: number;
233
+ };
234
+ memoryToleranceMB: number;
235
+ diskToleranceGB: number;
236
+ percentageTolerance: number;
237
+ networkStatsMinFields: string[];
238
+ } | {
239
+ memoryMinMB: number;
240
+ diskMinGB: number;
241
+ cpuMinCount: number;
242
+ cpuModelPatterns: RegExp;
243
+ percentageRange: {
244
+ min: number;
245
+ max: number;
246
+ };
247
+ memoryToleranceMB: number;
248
+ diskToleranceGB: number;
249
+ percentageTolerance: number;
250
+ networkStatsMinFields: string[];
251
+ };
252
+ /**
253
+ * CI/CD 环境检测和配置
254
+ */
255
+ export declare const CIConfig: {
256
+ isCI: boolean;
257
+ adjustments: {
258
+ timeoutMultiplier: number;
259
+ maxMemoryIncreaseMB: number;
260
+ retryAttempts: number;
261
+ skipPerformanceTests: boolean;
262
+ };
263
+ };
264
+ /**
265
+ * 应用CI环境调整
266
+ */
267
+ export declare function getAdjustedConfig(): {
268
+ timeouts: {
269
+ default: number;
270
+ long: number;
271
+ performance: number;
272
+ quick: number;
273
+ };
274
+ performance: {
275
+ maxMemoryIncreaseMB: number;
276
+ maxExecutionTimeMs: number;
277
+ maxSyncOperationMs: number;
278
+ maxAsyncOperationMs: number;
279
+ iterationCount: {
280
+ quick: number;
281
+ standard: number;
282
+ stress: number;
283
+ };
284
+ };
285
+ validation: {
286
+ percentageRange: {
287
+ min: number;
288
+ max: number;
289
+ };
290
+ memoryToleranceMB: number;
291
+ diskToleranceGB: number;
292
+ percentageTolerance: number;
293
+ networkStatsMinFields: string[];
294
+ };
295
+ retry: {
296
+ maxAttempts: number;
297
+ delayMs: number;
298
+ backoffMultiplier: number;
299
+ };
300
+ };
301
+ //# sourceMappingURL=test-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-config.d.ts","sourceRoot":"","sources":["../../../test/config/test-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC5B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyF3B,CAAA;AAED;;GAEG;AACH,wBAAgB,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGvC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAS3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMpC;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;CAgBpB,CAAA;AAED;;GAEG;AACH,wBAAgB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBhC"}