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,244 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BasePlatformAdapter = void 0;
4
+ const errors_1 = require("../types/errors");
5
+ /**
6
+ * 平台适配器抽象基类
7
+ *
8
+ * 为不同操作系统提供统一的接口,子类需要实现具体的平台相关逻辑
9
+ */
10
+ class BasePlatformAdapter {
11
+ constructor(platformName) {
12
+ this.platformName = platformName;
13
+ this.supportedFeatures = this.initializeSupportedFeatures();
14
+ }
15
+ /**
16
+ * 获取平台名称
17
+ */
18
+ getPlatform() {
19
+ return this.platformName;
20
+ }
21
+ /**
22
+ * 检查是否支持特定功能
23
+ */
24
+ isSupported(feature) {
25
+ const parts = feature.split('.');
26
+ if (parts.length !== 2) {
27
+ return false;
28
+ }
29
+ const [category, featureName] = parts;
30
+ const categoryFeatures = this.supportedFeatures[category];
31
+ if (!categoryFeatures) {
32
+ return false;
33
+ }
34
+ return categoryFeatures[featureName] === true;
35
+ }
36
+ /**
37
+ * 获取支持的功能列表
38
+ */
39
+ getSupportedFeatures() {
40
+ return { ...this.supportedFeatures };
41
+ }
42
+ // 受保护的辅助方法
43
+ /**
44
+ * 安全执行命令
45
+ */
46
+ async safeExecute(command, options) {
47
+ try {
48
+ return await this.executeCommand(command, options);
49
+ }
50
+ catch (error) {
51
+ // 返回失败的结果而不是抛出异常
52
+ return {
53
+ stdout: '',
54
+ stderr: error instanceof Error ? error.message : String(error),
55
+ exitCode: 1,
56
+ platform: this.platformName,
57
+ executionTime: 0,
58
+ command
59
+ };
60
+ }
61
+ }
62
+ /**
63
+ * 创建不支持功能的错误
64
+ */
65
+ createUnsupportedError(feature) {
66
+ return errors_1.MonitorError.createPlatformNotSupported(this.platformName, feature);
67
+ }
68
+ /**
69
+ * 创建命令执行失败错误
70
+ */
71
+ createCommandError(command, details) {
72
+ return errors_1.MonitorError.createCommandFailed(this.platformName, command, details);
73
+ }
74
+ /**
75
+ * 创建解析错误
76
+ */
77
+ createParseError(data, reason) {
78
+ return errors_1.MonitorError.createParseError(this.platformName, data, reason);
79
+ }
80
+ /**
81
+ * 验证命令执行结果
82
+ */
83
+ validateCommandResult(result, command) {
84
+ if (result.exitCode !== 0) {
85
+ throw this.createCommandError(command, {
86
+ exitCode: result.exitCode,
87
+ stderr: result.stderr,
88
+ stdout: result.stdout
89
+ });
90
+ }
91
+ if (!result.stdout || result.stdout.trim().length === 0) {
92
+ throw this.createCommandError(command, {
93
+ reason: 'Empty output',
94
+ stderr: result.stderr
95
+ });
96
+ }
97
+ }
98
+ /**
99
+ * 安全解析 JSON
100
+ */
101
+ safeParseJSON(data, fallback = null) {
102
+ try {
103
+ return JSON.parse(data);
104
+ }
105
+ catch (error) {
106
+ return fallback;
107
+ }
108
+ }
109
+ /**
110
+ * 安全解析数字
111
+ */
112
+ safeParseNumber(value, fallback = 0) {
113
+ if (typeof value === 'number') {
114
+ return isNaN(value) ? fallback : value;
115
+ }
116
+ const parsed = parseFloat(value);
117
+ return isNaN(parsed) ? fallback : parsed;
118
+ }
119
+ /**
120
+ * 安全解析整数
121
+ */
122
+ safeParseInt(value, fallback = 0, radix = 10) {
123
+ if (typeof value === 'number') {
124
+ return isNaN(value) ? fallback : Math.floor(value);
125
+ }
126
+ const parsed = parseInt(value, radix);
127
+ return isNaN(parsed) ? fallback : parsed;
128
+ }
129
+ /**
130
+ * 解析键值对格式的输出
131
+ */
132
+ parseKeyValueOutput(output, separator = ':') {
133
+ const result = {};
134
+ const lines = output.split('\n');
135
+ for (const line of lines) {
136
+ const trimmed = line.trim();
137
+ if (!trimmed)
138
+ continue;
139
+ const separatorIndex = trimmed.indexOf(separator);
140
+ if (separatorIndex === -1)
141
+ continue;
142
+ const key = trimmed.substring(0, separatorIndex).trim();
143
+ const value = trimmed.substring(separatorIndex + separator.length).trim();
144
+ if (key && value) {
145
+ result[key] = value;
146
+ }
147
+ }
148
+ return result;
149
+ }
150
+ /**
151
+ * 解析表格格式的输出
152
+ */
153
+ parseTableOutput(output, hasHeader = true) {
154
+ const lines = output.split('\n').map(line => line.trim()).filter(line => line);
155
+ if (lines.length === 0)
156
+ return [];
157
+ let dataLines = lines;
158
+ let headers = [];
159
+ if (hasHeader && lines.length > 0) {
160
+ headers = this.splitTableRow(lines[0]);
161
+ dataLines = lines.slice(1);
162
+ }
163
+ const result = [];
164
+ for (const line of dataLines) {
165
+ const values = this.splitTableRow(line);
166
+ if (values.length === 0)
167
+ continue;
168
+ const row = {};
169
+ if (headers.length > 0) {
170
+ // 使用表头作为键
171
+ for (let i = 0; i < Math.min(headers.length, values.length); i++) {
172
+ row[headers[i]] = values[i];
173
+ }
174
+ }
175
+ else {
176
+ // 使用索引作为键
177
+ for (let i = 0; i < values.length; i++) {
178
+ row[i.toString()] = values[i];
179
+ }
180
+ }
181
+ result.push(row);
182
+ }
183
+ return result;
184
+ }
185
+ /**
186
+ * 分割表格行
187
+ */
188
+ splitTableRow(row) {
189
+ // 支持多种分隔符:空格、制表符等
190
+ return row.split(/\s+/).filter(cell => cell.length > 0);
191
+ }
192
+ /**
193
+ * 字节单位转换
194
+ */
195
+ /**
196
+ * 将带单位的容量统一换算为字节,支持 SI 与二进制后缀
197
+ */
198
+ convertToBytes(value, unit) {
199
+ const num = typeof value === 'string' ? this.safeParseNumber(value) : value;
200
+ if (!unit) {
201
+ // 尝试从值中提取单位
202
+ if (typeof value === 'string') {
203
+ const match = value.match(/^([\d.]+)\s*([a-zA-Z]+)$/);
204
+ if (match) {
205
+ return this.convertToBytes(match[1], match[2]);
206
+ }
207
+ }
208
+ return num;
209
+ }
210
+ const multipliers = {
211
+ 'b': 1,
212
+ 'byte': 1,
213
+ 'bytes': 1,
214
+ 'k': 1024,
215
+ 'kb': 1024,
216
+ 'kib': 1024,
217
+ 'ki': 1024,
218
+ 'kilobyte': 1024,
219
+ 'kilobytes': 1024,
220
+ 'm': 1024 * 1024,
221
+ 'mb': 1024 * 1024,
222
+ 'mib': 1024 * 1024,
223
+ 'mi': 1024 * 1024,
224
+ 'megabyte': 1024 * 1024,
225
+ 'megabytes': 1024 * 1024,
226
+ 'g': 1024 * 1024 * 1024,
227
+ 'gb': 1024 * 1024 * 1024,
228
+ 'gib': 1024 * 1024 * 1024,
229
+ 'gi': 1024 * 1024 * 1024,
230
+ 'gigabyte': 1024 * 1024 * 1024,
231
+ 'gigabytes': 1024 * 1024 * 1024,
232
+ 't': 1024 * 1024 * 1024 * 1024,
233
+ 'tb': 1024 * 1024 * 1024 * 1024,
234
+ 'tib': 1024 * 1024 * 1024 * 1024,
235
+ 'ti': 1024 * 1024 * 1024 * 1024,
236
+ 'terabyte': 1024 * 1024 * 1024 * 1024,
237
+ 'terabytes': 1024 * 1024 * 1024 * 1024
238
+ };
239
+ const multiplier = multipliers[unit.toLowerCase()] || 1;
240
+ return num * multiplier;
241
+ }
242
+ }
243
+ exports.BasePlatformAdapter = BasePlatformAdapter;
244
+ //# sourceMappingURL=platform-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-adapter.js","sourceRoot":"","sources":["../../../src/core/platform-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * node-os-utils v2.0.0
3
+ *
4
+ * 现代化的跨平台操作系统监控工具库
5
+ * TypeScript 重构版本,提供全面的系统监控功能
6
+ */
7
+ import { AdapterFactory } from './adapters/adapter-factory';
8
+ import { CacheManager } from './core/cache-manager';
9
+ import { CPUMonitor } from './monitors/cpu-monitor';
10
+ import { MemoryMonitor } from './monitors/memory-monitor';
11
+ import { DiskMonitor } from './monitors/disk-monitor';
12
+ import { NetworkMonitor } from './monitors/network-monitor';
13
+ import { ProcessMonitor } from './monitors/process-monitor';
14
+ import { SystemMonitor } from './monitors/system-monitor';
15
+ import { GlobalConfig } from './types';
16
+ /**
17
+ * OSUtils 主类
18
+ *
19
+ * 提供统一的系统监控 API,自动处理平台适配和缓存管理
20
+ */
21
+ export declare class OSUtils {
22
+ private adapter;
23
+ private cache;
24
+ private config;
25
+ private _cpu?;
26
+ private _memory?;
27
+ private _disk?;
28
+ private _network?;
29
+ private _process?;
30
+ private _system?;
31
+ constructor(config?: Partial<GlobalConfig>);
32
+ /**
33
+ * CPU 监控器
34
+ */
35
+ get cpu(): CPUMonitor;
36
+ /**
37
+ * 内存监控器
38
+ */
39
+ get memory(): MemoryMonitor;
40
+ /**
41
+ * 磁盘监控器
42
+ */
43
+ get disk(): DiskMonitor;
44
+ /**
45
+ * 网络监控器
46
+ */
47
+ get network(): NetworkMonitor;
48
+ /**
49
+ * 进程监控器
50
+ */
51
+ get process(): ProcessMonitor;
52
+ /**
53
+ * 系统监控器
54
+ */
55
+ get system(): SystemMonitor;
56
+ /**
57
+ * 获取平台信息
58
+ */
59
+ getPlatformInfo(): {
60
+ platform: string;
61
+ arch: string;
62
+ version: string;
63
+ supported: boolean;
64
+ };
65
+ /**
66
+ * 获取支持的平台列表
67
+ */
68
+ getSupportedPlatforms(): string[];
69
+ /**
70
+ * 检查平台能力
71
+ */
72
+ checkPlatformCapabilities(): Promise<{
73
+ platform: string;
74
+ supported: boolean;
75
+ capabilities: {
76
+ commands: string[];
77
+ files: string[];
78
+ features: string[];
79
+ };
80
+ issues: string[];
81
+ }>;
82
+ /**
83
+ * 获取缓存统计信息
84
+ */
85
+ getCacheStats(): import("./core/cache-manager").CacheStats;
86
+ /**
87
+ * 清理缓存
88
+ */
89
+ clearCache(): this;
90
+ /**
91
+ * 配置缓存
92
+ */
93
+ configureCache(options: {
94
+ enabled?: boolean;
95
+ maxSize?: number;
96
+ defaultTTL?: number;
97
+ }): this;
98
+ /**
99
+ * 配置调试模式
100
+ */
101
+ setDebug(enabled: boolean): this;
102
+ /**
103
+ * 获取系统总览信息
104
+ */
105
+ overview(): Promise<{
106
+ platform: string;
107
+ timestamp: number;
108
+ system: import("./types").SystemInfo | null;
109
+ cpu: {
110
+ usage: number | null;
111
+ };
112
+ memory: {
113
+ total: string;
114
+ used: string;
115
+ available: string;
116
+ usagePercentage: number;
117
+ swap: {
118
+ total: string;
119
+ used: string;
120
+ usagePercentage: number;
121
+ };
122
+ } | null;
123
+ disk: {
124
+ total: import("./types").DataSize;
125
+ used: import("./types").DataSize;
126
+ available: import("./types").DataSize;
127
+ usagePercentage: number;
128
+ disks: number;
129
+ } | null;
130
+ network: {
131
+ interfaces: number;
132
+ activeInterfaces: number;
133
+ totalRxBytes: import("./types").DataSize;
134
+ totalTxBytes: import("./types").DataSize;
135
+ totalPackets: number;
136
+ totalErrors: number;
137
+ } | null;
138
+ processes: {
139
+ total: number;
140
+ running: number;
141
+ sleeping: number;
142
+ waiting: number;
143
+ zombie: number;
144
+ stopped: number;
145
+ unknown: number;
146
+ totalCpuUsage: number;
147
+ totalMemoryUsage: import("./types").DataSize;
148
+ } | null;
149
+ }>;
150
+ /**
151
+ * 健康检查
152
+ */
153
+ healthCheck(): Promise<{
154
+ status: "healthy";
155
+ issues: string[];
156
+ timestamp: number;
157
+ details: {
158
+ system: {
159
+ status: "critical" | "warning" | "healthy";
160
+ checks: {
161
+ load: boolean;
162
+ uptime: boolean;
163
+ services: boolean;
164
+ resources: boolean;
165
+ };
166
+ issues: string[];
167
+ score: number;
168
+ } | null;
169
+ disk: {
170
+ status: "critical" | "warning" | "healthy";
171
+ issues: string[];
172
+ checks: {
173
+ spaceUsage: boolean;
174
+ mountStatus: boolean;
175
+ ioErrors: boolean;
176
+ };
177
+ } | null;
178
+ network: {
179
+ status: "critical" | "warning" | "healthy";
180
+ issues: string[];
181
+ checks: {
182
+ interfaceStatus: boolean;
183
+ connectivity: boolean;
184
+ performance: boolean;
185
+ };
186
+ } | null;
187
+ };
188
+ }>;
189
+ /**
190
+ * 销毁实例,清理资源
191
+ */
192
+ destroy(): void;
193
+ private resetMonitors;
194
+ }
195
+ /**
196
+ * 创建 OSUtils 实例的工厂函数
197
+ */
198
+ export declare function createOSUtils(config?: Partial<GlobalConfig>): OSUtils;
199
+ export * from './types';
200
+ export { CPUMonitor, MemoryMonitor, DiskMonitor, NetworkMonitor, ProcessMonitor, SystemMonitor };
201
+ export { AdapterFactory, CacheManager };
202
+ export default OSUtils;
203
+ export declare const version: string;
204
+ export declare const name: string;
205
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EACL,YAAY,EAEb,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAe;IAG7B,OAAO,CAAC,IAAI,CAAC,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAClC,OAAO,CAAC,OAAO,CAAC,CAAgB;gBAEpB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IA2B9C;;OAEG;IACH,IAAI,GAAG,IAAI,UAAU,CAKpB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,aAAa,CAK1B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,WAAW,CAKtB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,cAAc,CAK5B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,cAAc,CAK5B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,aAAa,CAK1B;IAED;;OAEG;IACH,eAAe;;;;;;IAIf;;OAEG;IACH,qBAAqB;IAIrB;;OAEG;IACG,yBAAyB;;;;;;;;;;IAI/B;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,UAAU;IAKV;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAiCD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO;IAKzB;;OAEG;IACG,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqCd;;OAEG;IACG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2CjB;;OAEG;IACH,OAAO;IASP,OAAO,CAAC,aAAa;CA0BtB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAErE;AAGD,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACd,cAAc,EACd,aAAa,EACd,CAAC;AAGF,OAAO,EACL,cAAc,EACd,YAAY,EACb,CAAC;AAGF,eAAe,OAAO,CAAC;AAGvB,eAAO,MAAM,OAAO,QAAsB,CAAC;AAC3C,eAAO,MAAM,IAAI,QAAmB,CAAC"}