polyv-live-cli 1.1.4 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/dist/commands/account.commands.d.ts +3 -0
  2. package/dist/commands/account.commands.d.ts.map +1 -0
  3. package/dist/commands/account.commands.js +386 -0
  4. package/dist/commands/account.commands.js.map +1 -0
  5. package/dist/commands/channel.commands.d.ts.map +1 -1
  6. package/dist/commands/channel.commands.js +84 -60
  7. package/dist/commands/channel.commands.js.map +1 -1
  8. package/dist/commands/index.d.ts +3 -0
  9. package/dist/commands/index.d.ts.map +1 -1
  10. package/dist/commands/index.js +7 -1
  11. package/dist/commands/index.js.map +1 -1
  12. package/dist/commands/monitor.commands.d.ts +12 -0
  13. package/dist/commands/monitor.commands.d.ts.map +1 -0
  14. package/dist/commands/monitor.commands.js +75 -0
  15. package/dist/commands/monitor.commands.js.map +1 -0
  16. package/dist/commands/stream.commands.d.ts.map +1 -1
  17. package/dist/commands/stream.commands.js +141 -63
  18. package/dist/commands/stream.commands.js.map +1 -1
  19. package/dist/commands/use.commands.d.ts +9 -0
  20. package/dist/commands/use.commands.d.ts.map +1 -0
  21. package/dist/commands/use.commands.js +66 -0
  22. package/dist/commands/use.commands.js.map +1 -0
  23. package/dist/components/alert.panel.d.ts +98 -0
  24. package/dist/components/alert.panel.d.ts.map +1 -0
  25. package/dist/components/alert.panel.js +1001 -0
  26. package/dist/components/alert.panel.js.map +1 -0
  27. package/dist/components/base.component.d.ts +61 -0
  28. package/dist/components/base.component.d.ts.map +1 -0
  29. package/dist/components/base.component.js +346 -0
  30. package/dist/components/base.component.js.map +1 -0
  31. package/dist/components/batch-operations.dialog.d.ts +58 -0
  32. package/dist/components/batch-operations.dialog.d.ts.map +1 -0
  33. package/dist/components/batch-operations.dialog.js +340 -0
  34. package/dist/components/batch-operations.dialog.js.map +1 -0
  35. package/dist/components/channel-details.popup.d.ts +55 -0
  36. package/dist/components/channel-details.popup.d.ts.map +1 -0
  37. package/dist/components/channel-details.popup.js +416 -0
  38. package/dist/components/channel-details.popup.js.map +1 -0
  39. package/dist/components/channel-status.panel.d.ts +129 -0
  40. package/dist/components/channel-status.panel.d.ts.map +1 -0
  41. package/dist/components/channel-status.panel.js +858 -0
  42. package/dist/components/channel-status.panel.js.map +1 -0
  43. package/dist/components/component-registry.d.ts +36 -0
  44. package/dist/components/component-registry.d.ts.map +1 -0
  45. package/dist/components/component-registry.js +119 -0
  46. package/dist/components/component-registry.js.map +1 -0
  47. package/dist/components/context-menu-factory.d.ts +13 -0
  48. package/dist/components/context-menu-factory.d.ts.map +1 -0
  49. package/dist/components/context-menu-factory.js +341 -0
  50. package/dist/components/context-menu-factory.js.map +1 -0
  51. package/dist/components/context-menu.d.ts +54 -0
  52. package/dist/components/context-menu.d.ts.map +1 -0
  53. package/dist/components/context-menu.js +235 -0
  54. package/dist/components/context-menu.js.map +1 -0
  55. package/dist/components/grid-manager.d.ts +52 -0
  56. package/dist/components/grid-manager.d.ts.map +1 -0
  57. package/dist/components/grid-manager.js +404 -0
  58. package/dist/components/grid-manager.js.map +1 -0
  59. package/dist/components/help-panel.d.ts +34 -0
  60. package/dist/components/help-panel.d.ts.map +1 -0
  61. package/dist/components/help-panel.js +249 -0
  62. package/dist/components/help-panel.js.map +1 -0
  63. package/dist/components/index.d.ts +21 -0
  64. package/dist/components/index.d.ts.map +1 -0
  65. package/dist/components/index.js +43 -0
  66. package/dist/components/index.js.map +1 -0
  67. package/dist/components/interaction-manager.d.ts +47 -0
  68. package/dist/components/interaction-manager.d.ts.map +1 -0
  69. package/dist/components/interaction-manager.js +597 -0
  70. package/dist/components/interaction-manager.js.map +1 -0
  71. package/dist/components/layout-manager.d.ts +76 -0
  72. package/dist/components/layout-manager.d.ts.map +1 -0
  73. package/dist/components/layout-manager.js +538 -0
  74. package/dist/components/layout-manager.js.map +1 -0
  75. package/dist/components/monitoring-dashboard.d.ts +85 -0
  76. package/dist/components/monitoring-dashboard.d.ts.map +1 -0
  77. package/dist/components/monitoring-dashboard.js +908 -0
  78. package/dist/components/monitoring-dashboard.js.map +1 -0
  79. package/dist/components/search-panel.d.ts +80 -0
  80. package/dist/components/search-panel.d.ts.map +1 -0
  81. package/dist/components/search-panel.js +585 -0
  82. package/dist/components/search-panel.js.map +1 -0
  83. package/dist/components/status-bar.d.ts +77 -0
  84. package/dist/components/status-bar.d.ts.map +1 -0
  85. package/dist/components/status-bar.js +482 -0
  86. package/dist/components/status-bar.js.map +1 -0
  87. package/dist/components/status.component.d.ts +16 -0
  88. package/dist/components/status.component.d.ts.map +1 -0
  89. package/dist/components/status.component.js +79 -0
  90. package/dist/components/status.component.js.map +1 -0
  91. package/dist/components/stream-metrics.panel.d.ts +86 -0
  92. package/dist/components/stream-metrics.panel.d.ts.map +1 -0
  93. package/dist/components/stream-metrics.panel.js +395 -0
  94. package/dist/components/stream-metrics.panel.js.map +1 -0
  95. package/dist/components/system-resource.panel.d.ts +78 -0
  96. package/dist/components/system-resource.panel.d.ts.map +1 -0
  97. package/dist/components/system-resource.panel.js +642 -0
  98. package/dist/components/system-resource.panel.js.map +1 -0
  99. package/dist/components/tooltip.d.ts +35 -0
  100. package/dist/components/tooltip.d.ts.map +1 -0
  101. package/dist/components/tooltip.js +156 -0
  102. package/dist/components/tooltip.js.map +1 -0
  103. package/dist/config/account-config.d.ts +27 -0
  104. package/dist/config/account-config.d.ts.map +1 -0
  105. package/dist/config/account-config.js +358 -0
  106. package/dist/config/account-config.js.map +1 -0
  107. package/dist/config/account-crypto.d.ts +17 -0
  108. package/dist/config/account-crypto.d.ts.map +1 -0
  109. package/dist/config/account-crypto.js +129 -0
  110. package/dist/config/account-crypto.js.map +1 -0
  111. package/dist/config/account-encryption.d.ts +35 -0
  112. package/dist/config/account-encryption.d.ts.map +1 -0
  113. package/dist/config/account-encryption.js +207 -0
  114. package/dist/config/account-encryption.js.map +1 -0
  115. package/dist/config/auth-adapter.d.ts +23 -0
  116. package/dist/config/auth-adapter.d.ts.map +1 -0
  117. package/dist/config/auth-adapter.js +49 -0
  118. package/dist/config/auth-adapter.js.map +1 -0
  119. package/dist/config/auth-provider.d.ts +27 -0
  120. package/dist/config/auth-provider.d.ts.map +1 -0
  121. package/dist/config/auth-provider.js +54 -0
  122. package/dist/config/auth-provider.js.map +1 -0
  123. package/dist/config/auth-source-manager.d.ts +61 -0
  124. package/dist/config/auth-source-manager.d.ts.map +1 -0
  125. package/dist/config/auth-source-manager.js +402 -0
  126. package/dist/config/auth-source-manager.js.map +1 -0
  127. package/dist/config/config-io.d.ts +63 -0
  128. package/dist/config/config-io.d.ts.map +1 -0
  129. package/dist/config/config-io.js +352 -0
  130. package/dist/config/config-io.js.map +1 -0
  131. package/dist/config/config-manager.d.ts +51 -0
  132. package/dist/config/config-manager.d.ts.map +1 -0
  133. package/dist/config/config-manager.js +404 -0
  134. package/dist/config/config-manager.js.map +1 -0
  135. package/dist/config/config-recovery-manager.d.ts +67 -0
  136. package/dist/config/config-recovery-manager.d.ts.map +1 -0
  137. package/dist/config/config-recovery-manager.js +593 -0
  138. package/dist/config/config-recovery-manager.js.map +1 -0
  139. package/dist/config/config-validator.d.ts +27 -0
  140. package/dist/config/config-validator.d.ts.map +1 -0
  141. package/dist/config/config-validator.js +421 -0
  142. package/dist/config/config-validator.js.map +1 -0
  143. package/dist/config/config-version-manager.d.ts +44 -0
  144. package/dist/config/config-version-manager.d.ts.map +1 -0
  145. package/dist/config/config-version-manager.js +319 -0
  146. package/dist/config/config-version-manager.js.map +1 -0
  147. package/dist/config/custom-theme-builder.d.ts +88 -0
  148. package/dist/config/custom-theme-builder.d.ts.map +1 -0
  149. package/dist/config/custom-theme-builder.js +458 -0
  150. package/dist/config/custom-theme-builder.js.map +1 -0
  151. package/dist/config/file-permission-manager.d.ts +41 -0
  152. package/dist/config/file-permission-manager.d.ts.map +1 -0
  153. package/dist/config/file-permission-manager.js +290 -0
  154. package/dist/config/file-permission-manager.js.map +1 -0
  155. package/dist/config/layout-manager.d.ts +60 -0
  156. package/dist/config/layout-manager.d.ts.map +1 -0
  157. package/dist/config/layout-manager.js +596 -0
  158. package/dist/config/layout-manager.js.map +1 -0
  159. package/dist/config/monitoring.d.ts +27 -0
  160. package/dist/config/monitoring.d.ts.map +1 -0
  161. package/dist/config/monitoring.js +276 -0
  162. package/dist/config/monitoring.js.map +1 -0
  163. package/dist/config/secure-account-manager.d.ts +54 -0
  164. package/dist/config/secure-account-manager.d.ts.map +1 -0
  165. package/dist/config/secure-account-manager.js +438 -0
  166. package/dist/config/secure-account-manager.js.map +1 -0
  167. package/dist/config/session-state.d.ts +37 -0
  168. package/dist/config/session-state.d.ts.map +1 -0
  169. package/dist/config/session-state.js +207 -0
  170. package/dist/config/session-state.js.map +1 -0
  171. package/dist/config/session-storage.d.ts +21 -0
  172. package/dist/config/session-storage.d.ts.map +1 -0
  173. package/dist/config/session-storage.js +235 -0
  174. package/dist/config/session-storage.js.map +1 -0
  175. package/dist/config/theme-manager.d.ts +53 -0
  176. package/dist/config/theme-manager.d.ts.map +1 -0
  177. package/dist/config/theme-manager.js +491 -0
  178. package/dist/config/theme-manager.js.map +1 -0
  179. package/dist/handlers/monitor.handler.d.ts +28 -0
  180. package/dist/handlers/monitor.handler.d.ts.map +1 -0
  181. package/dist/handlers/monitor.handler.js +457 -0
  182. package/dist/handlers/monitor.handler.js.map +1 -0
  183. package/dist/handlers/stream.handler.d.ts.map +1 -1
  184. package/dist/handlers/stream.handler.js +6 -0
  185. package/dist/handlers/stream.handler.js.map +1 -1
  186. package/dist/handlers/use.handler.d.ts +13 -0
  187. package/dist/handlers/use.handler.d.ts.map +1 -0
  188. package/dist/handlers/use.handler.js +118 -0
  189. package/dist/handlers/use.handler.js.map +1 -0
  190. package/dist/index.d.ts +2 -1
  191. package/dist/index.d.ts.map +1 -1
  192. package/dist/index.js +24 -12
  193. package/dist/index.js.map +1 -1
  194. package/dist/performance/adaptive-polling.d.ts +69 -0
  195. package/dist/performance/adaptive-polling.d.ts.map +1 -0
  196. package/dist/performance/adaptive-polling.js +313 -0
  197. package/dist/performance/adaptive-polling.js.map +1 -0
  198. package/dist/performance/api-analytics.d.ts +137 -0
  199. package/dist/performance/api-analytics.d.ts.map +1 -0
  200. package/dist/performance/api-analytics.js +351 -0
  201. package/dist/performance/api-analytics.js.map +1 -0
  202. package/dist/performance/api-optimizer.d.ts +66 -0
  203. package/dist/performance/api-optimizer.d.ts.map +1 -0
  204. package/dist/performance/api-optimizer.js +368 -0
  205. package/dist/performance/api-optimizer.js.map +1 -0
  206. package/dist/performance/batch-request-manager.d.ts +90 -0
  207. package/dist/performance/batch-request-manager.d.ts.map +1 -0
  208. package/dist/performance/batch-request-manager.js +355 -0
  209. package/dist/performance/batch-request-manager.js.map +1 -0
  210. package/dist/performance/change-detector.d.ts +75 -0
  211. package/dist/performance/change-detector.d.ts.map +1 -0
  212. package/dist/performance/change-detector.js +421 -0
  213. package/dist/performance/change-detector.js.map +1 -0
  214. package/dist/performance/connection-pool-manager.d.ts +99 -0
  215. package/dist/performance/connection-pool-manager.d.ts.map +1 -0
  216. package/dist/performance/connection-pool-manager.js +474 -0
  217. package/dist/performance/connection-pool-manager.js.map +1 -0
  218. package/dist/performance/error-recovery-manager.d.ts +134 -0
  219. package/dist/performance/error-recovery-manager.d.ts.map +1 -0
  220. package/dist/performance/error-recovery-manager.js +673 -0
  221. package/dist/performance/error-recovery-manager.js.map +1 -0
  222. package/dist/performance/fallback-manager.d.ts +123 -0
  223. package/dist/performance/fallback-manager.d.ts.map +1 -0
  224. package/dist/performance/fallback-manager.js +524 -0
  225. package/dist/performance/fallback-manager.js.map +1 -0
  226. package/dist/performance/index.d.ts +25 -0
  227. package/dist/performance/index.d.ts.map +1 -0
  228. package/dist/performance/index.js +28 -0
  229. package/dist/performance/index.js.map +1 -0
  230. package/dist/performance/memory-manager.d.ts +97 -0
  231. package/dist/performance/memory-manager.d.ts.map +1 -0
  232. package/dist/performance/memory-manager.js +417 -0
  233. package/dist/performance/memory-manager.js.map +1 -0
  234. package/dist/performance/performance-monitor.d.ts +149 -0
  235. package/dist/performance/performance-monitor.d.ts.map +1 -0
  236. package/dist/performance/performance-monitor.js +513 -0
  237. package/dist/performance/performance-monitor.js.map +1 -0
  238. package/dist/performance/performance-optimizer.d.ts +110 -0
  239. package/dist/performance/performance-optimizer.d.ts.map +1 -0
  240. package/dist/performance/performance-optimizer.js +476 -0
  241. package/dist/performance/performance-optimizer.js.map +1 -0
  242. package/dist/performance/render-optimizer.d.ts +95 -0
  243. package/dist/performance/render-optimizer.d.ts.map +1 -0
  244. package/dist/performance/render-optimizer.js +408 -0
  245. package/dist/performance/render-optimizer.js.map +1 -0
  246. package/dist/services/index.d.ts +4 -1
  247. package/dist/services/index.d.ts.map +1 -1
  248. package/dist/services/index.js +3 -1
  249. package/dist/services/index.js.map +1 -1
  250. package/dist/services/system-resource.service.d.ts +168 -0
  251. package/dist/services/system-resource.service.d.ts.map +1 -0
  252. package/dist/services/system-resource.service.js +544 -0
  253. package/dist/services/system-resource.service.js.map +1 -0
  254. package/dist/types/account.types.d.ts +79 -0
  255. package/dist/types/account.types.d.ts.map +1 -0
  256. package/dist/types/account.types.js +23 -0
  257. package/dist/types/account.types.js.map +1 -0
  258. package/dist/types/alert.d.ts +147 -0
  259. package/dist/types/alert.d.ts.map +1 -0
  260. package/dist/types/alert.js +3 -0
  261. package/dist/types/alert.js.map +1 -0
  262. package/dist/types/auth-source.types.d.ts +62 -0
  263. package/dist/types/auth-source.types.d.ts.map +1 -0
  264. package/dist/types/auth-source.types.js +25 -0
  265. package/dist/types/auth-source.types.js.map +1 -0
  266. package/dist/types/index.d.ts +3 -0
  267. package/dist/types/index.d.ts.map +1 -1
  268. package/dist/types/index.js +2 -0
  269. package/dist/types/index.js.map +1 -1
  270. package/dist/types/interaction.d.ts +147 -0
  271. package/dist/types/interaction.d.ts.map +1 -0
  272. package/dist/types/interaction.js +3 -0
  273. package/dist/types/interaction.js.map +1 -0
  274. package/dist/types/monitoring.d.ts +233 -0
  275. package/dist/types/monitoring.d.ts.map +1 -0
  276. package/dist/types/monitoring.js +35 -0
  277. package/dist/types/monitoring.js.map +1 -0
  278. package/dist/types/session.types.d.ts +43 -0
  279. package/dist/types/session.types.d.ts.map +1 -0
  280. package/dist/types/session.types.js +27 -0
  281. package/dist/types/session.types.js.map +1 -0
  282. package/dist/utils/alert-history-manager.d.ts +72 -0
  283. package/dist/utils/alert-history-manager.d.ts.map +1 -0
  284. package/dist/utils/alert-history-manager.js +492 -0
  285. package/dist/utils/alert-history-manager.js.map +1 -0
  286. package/dist/utils/alert-manager.d.ts +75 -0
  287. package/dist/utils/alert-manager.d.ts.map +1 -0
  288. package/dist/utils/alert-manager.js +348 -0
  289. package/dist/utils/alert-manager.js.map +1 -0
  290. package/dist/utils/alert-rule-manager.d.ts +51 -0
  291. package/dist/utils/alert-rule-manager.d.ts.map +1 -0
  292. package/dist/utils/alert-rule-manager.js +515 -0
  293. package/dist/utils/alert-rule-manager.js.map +1 -0
  294. package/dist/utils/auth-diagnostics.d.ts +47 -0
  295. package/dist/utils/auth-diagnostics.d.ts.map +1 -0
  296. package/dist/utils/auth-diagnostics.js +245 -0
  297. package/dist/utils/auth-diagnostics.js.map +1 -0
  298. package/dist/utils/data-manager.d.ts +53 -0
  299. package/dist/utils/data-manager.d.ts.map +1 -0
  300. package/dist/utils/data-manager.js +228 -0
  301. package/dist/utils/data-manager.js.map +1 -0
  302. package/dist/utils/formatter.d.ts +5 -0
  303. package/dist/utils/formatter.d.ts.map +1 -1
  304. package/dist/utils/formatter.js +19 -0
  305. package/dist/utils/formatter.js.map +1 -1
  306. package/dist/utils/index.d.ts +6 -0
  307. package/dist/utils/index.d.ts.map +1 -1
  308. package/dist/utils/index.js +6 -0
  309. package/dist/utils/index.js.map +1 -1
  310. package/dist/utils/keyboard-handler.d.ts +32 -0
  311. package/dist/utils/keyboard-handler.d.ts.map +1 -0
  312. package/dist/utils/keyboard-handler.js +193 -0
  313. package/dist/utils/keyboard-handler.js.map +1 -0
  314. package/dist/utils/mouse-handler.d.ts +61 -0
  315. package/dist/utils/mouse-handler.d.ts.map +1 -0
  316. package/dist/utils/mouse-handler.js +192 -0
  317. package/dist/utils/mouse-handler.js.map +1 -0
  318. package/dist/utils/stream-verification.d.ts.map +1 -1
  319. package/dist/utils/stream-verification.js +2 -13
  320. package/dist/utils/stream-verification.js.map +1 -1
  321. package/dist/utils/terminal.d.ts +24 -0
  322. package/dist/utils/terminal.d.ts.map +1 -0
  323. package/dist/utils/terminal.js +148 -0
  324. package/dist/utils/terminal.js.map +1 -0
  325. package/dist/utils/time-series.processor.d.ts +65 -0
  326. package/dist/utils/time-series.processor.d.ts.map +1 -0
  327. package/dist/utils/time-series.processor.js +263 -0
  328. package/dist/utils/time-series.processor.js.map +1 -0
  329. package/package.json +40 -4
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StatusComponentFactory = exports.StatusComponent = void 0;
7
+ const blessed_1 = __importDefault(require("blessed"));
8
+ const base_component_1 = require("./base.component");
9
+ class StatusComponent extends base_component_1.BaseComponent {
10
+ constructor(config, eventBus) {
11
+ super(config, eventBus);
12
+ }
13
+ createWidget() {
14
+ this.statusBox = blessed_1.default.box({
15
+ top: this.config.position.y,
16
+ left: this.config.position.x,
17
+ width: this.config.position.width,
18
+ height: this.config.position.height,
19
+ content: 'PolyV Monitoring Dashboard\nStatus: Starting...',
20
+ tags: true,
21
+ border: {
22
+ type: 'line',
23
+ },
24
+ style: {
25
+ fg: 'white',
26
+ bg: 'black',
27
+ border: {
28
+ fg: 'cyan',
29
+ },
30
+ },
31
+ label: ' Status ',
32
+ });
33
+ this.widget = this.statusBox;
34
+ }
35
+ render() {
36
+ if (this.isDestroyed || !this.widget)
37
+ return;
38
+ try {
39
+ this.widget.screen?.render();
40
+ }
41
+ catch (error) {
42
+ this.handleError(error instanceof Error ? error : new Error('Render error'));
43
+ }
44
+ }
45
+ update(data) {
46
+ if (this.isDestroyed || !this.statusBox)
47
+ return;
48
+ try {
49
+ const statusText = this.formatStatus(data);
50
+ this.statusBox.setContent(statusText);
51
+ this.render();
52
+ this.updateState({ lastUpdate: new Date() });
53
+ }
54
+ catch (error) {
55
+ this.handleError(error instanceof Error ? error : new Error('Update error'));
56
+ }
57
+ }
58
+ formatStatus(data) {
59
+ const lines = [
60
+ 'PolyV Monitoring Dashboard',
61
+ '',
62
+ `Status: ${data?.status || 'Running'}`,
63
+ `Uptime: ${data?.uptime || '0s'}`,
64
+ `Layout: ${data?.layout || 'default'}`,
65
+ `Components: ${data?.components || '0'}`,
66
+ '',
67
+ 'Press ? for help, q to quit',
68
+ ];
69
+ return lines.join('\n');
70
+ }
71
+ }
72
+ exports.StatusComponent = StatusComponent;
73
+ exports.StatusComponentFactory = {
74
+ type: 'status',
75
+ create: (config, eventBus) => {
76
+ return new StatusComponent(config, eventBus);
77
+ },
78
+ };
79
+ //# sourceMappingURL=status.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.component.js","sourceRoot":"","sources":["../../src/components/status.component.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAE9B,qDAAiD;AAGjD,MAAa,eAAgB,SAAQ,8BAAa;IAGhD,YAAY,MAAuB,EAAE,QAAsB;QACzD,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,SAAS,GAAG,iBAAO,CAAC,GAAG,CAAC;YAC3B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;YACnC,OAAO,EAAE,iDAAiD;YAC1D,IAAI,EAAE,IAAI;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM;aACb;YACD,KAAK,EAAE;gBACL,EAAE,EAAE,OAAO;gBACX,EAAE,EAAE,OAAO;gBACX,MAAM,EAAE;oBACN,EAAE,EAAE,MAAM;iBACX;aACF;YACD,KAAK,EAAE,UAAU;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,CAAC;IAEM,MAAM;QACX,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAE7C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,IAAS;QACrB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAEhD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAS;QAC5B,MAAM,KAAK,GAAG;YACZ,4BAA4B;YAC5B,EAAE;YACF,WAAW,IAAI,EAAE,MAAM,IAAI,SAAS,EAAE;YACtC,WAAW,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE;YACjC,WAAW,IAAI,EAAE,MAAM,IAAI,SAAS,EAAE;YACtC,eAAe,IAAI,EAAE,UAAU,IAAI,GAAG,EAAE;YACxC,EAAE;YACF,6BAA6B;SAC9B,CAAC;QAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AApED,0CAoEC;AAGY,QAAA,sBAAsB,GAAG;IACpC,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,CAAC,MAAuB,EAAE,QAAsB,EAAE,EAAE;QAC1D,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { EventEmitter } from 'events';
2
+ import { BaseComponent } from './base.component';
3
+ import { ComponentConfig, StreamMetrics } from '../types/monitoring';
4
+ export interface StreamMetricsPanelConfig extends ComponentConfig {
5
+ refreshInterval: number;
6
+ maxDataPoints: number;
7
+ channels: string[];
8
+ alertThresholds: {
9
+ bitrate: {
10
+ min: number;
11
+ max: number;
12
+ };
13
+ fps: {
14
+ min: number;
15
+ max: number;
16
+ };
17
+ viewerCount: {
18
+ max: number;
19
+ };
20
+ };
21
+ chartStyle: {
22
+ lineColors: string[];
23
+ backgroundColor: string;
24
+ foregroundColor: string;
25
+ };
26
+ }
27
+ export interface MetricsDataPoint {
28
+ timestamp: Date;
29
+ bitrate: number;
30
+ fps: number;
31
+ viewerCount: number;
32
+ bandwidth: number;
33
+ channelId: string;
34
+ }
35
+ export interface ChannelMetricsData {
36
+ channelId: string;
37
+ channelName?: string;
38
+ isActive: boolean;
39
+ dataPoints: MetricsDataPoint[];
40
+ alerts: AlertInfo[];
41
+ lastUpdate: Date;
42
+ }
43
+ export interface AlertInfo {
44
+ type: 'bitrate' | 'fps' | 'viewerCount';
45
+ level: 'warning' | 'error';
46
+ message: string;
47
+ timestamp: Date;
48
+ value: number;
49
+ threshold: number;
50
+ }
51
+ export declare class StreamMetricsPanel extends BaseComponent {
52
+ private lineChart;
53
+ private channelsData;
54
+ private currentChannelId;
55
+ private container;
56
+ private headerBox;
57
+ private noDataBox;
58
+ private alertBox;
59
+ private lastUpdateTime;
60
+ private alertCooldowns;
61
+ constructor(config: StreamMetricsPanelConfig, eventBus: EventEmitter);
62
+ protected createWidget(): void;
63
+ private setupKeyBindings;
64
+ render(): void;
65
+ update(data: StreamMetrics | StreamMetrics[] | {
66
+ channels: StreamMetrics[];
67
+ }): void;
68
+ private processChannelMetrics;
69
+ private checkAlerts;
70
+ private updateHeader;
71
+ private updateAlertDisplay;
72
+ private updateChart;
73
+ private switchToNextChannel;
74
+ private switchToPreviousChannel;
75
+ private clearAlerts;
76
+ private emitAlert;
77
+ private emitChannelSwitch;
78
+ private getNoChannelMessage;
79
+ private getNoDataMessage;
80
+ private getConfig;
81
+ getCurrentChannelData(): ChannelMetricsData | null;
82
+ getAllChannelsData(): Map<string, ChannelMetricsData>;
83
+ setCurrentChannel(channelId: string): void;
84
+ destroy(): void;
85
+ }
86
+ //# sourceMappingURL=stream-metrics.panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-metrics.panel.d.ts","sourceRoot":"","sources":["../../src/components/stream-metrics.panel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,395 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StreamMetricsPanel = void 0;
7
+ const blessed_1 = __importDefault(require("blessed"));
8
+ const blessed_contrib_1 = require("blessed-contrib");
9
+ const base_component_1 = require("./base.component");
10
+ class StreamMetricsPanel extends base_component_1.BaseComponent {
11
+ constructor(config, eventBus) {
12
+ super(config, eventBus);
13
+ this.channelsData = new Map();
14
+ this.currentChannelId = null;
15
+ this.lastUpdateTime = new Date();
16
+ this.alertCooldowns = new Map();
17
+ }
18
+ createWidget() {
19
+ this.container = blessed_1.default.box({
20
+ label: ' Stream Metrics ',
21
+ border: { type: 'line' },
22
+ style: {
23
+ fg: this.getConfig().chartStyle?.foregroundColor || 'white',
24
+ bg: this.getConfig().chartStyle?.backgroundColor || 'black',
25
+ border: { fg: 'cyan' }
26
+ },
27
+ top: this.config.position.y,
28
+ left: this.config.position.x,
29
+ width: this.config.position.width,
30
+ height: this.config.position.height,
31
+ scrollable: false,
32
+ alwaysScroll: false,
33
+ mouse: true,
34
+ keys: true,
35
+ vi: true,
36
+ tags: true
37
+ });
38
+ this.headerBox = blessed_1.default.box({
39
+ parent: this.container,
40
+ top: 0,
41
+ left: 0,
42
+ width: '100%',
43
+ height: 3,
44
+ content: this.getNoChannelMessage(),
45
+ style: { fg: 'yellow' },
46
+ tags: true
47
+ });
48
+ this.alertBox = blessed_1.default.box({
49
+ parent: this.container,
50
+ top: 'top+3',
51
+ left: 0,
52
+ width: '100%',
53
+ height: 2,
54
+ content: '',
55
+ style: { fg: 'red', bold: true },
56
+ tags: true
57
+ });
58
+ const chartConfig = {
59
+ style: {
60
+ line: this.getConfig().chartStyle?.lineColors?.[0] || 'yellow',
61
+ text: this.getConfig().chartStyle?.foregroundColor || 'white',
62
+ baseline: 'white'
63
+ },
64
+ xLabelPadding: 3,
65
+ xPadding: 5,
66
+ yLabelPadding: 3,
67
+ yPadding: 2,
68
+ legend: { width: 12 },
69
+ wholeNumbersOnly: false,
70
+ numYLabels: 6,
71
+ numXLabels: 8,
72
+ showLegend: true,
73
+ abbreviate: true
74
+ };
75
+ this.lineChart = (0, blessed_contrib_1.line)(chartConfig);
76
+ this.lineChart.parent = this.container;
77
+ this.lineChart.top = 'top+5';
78
+ this.lineChart.left = 0;
79
+ this.lineChart.width = '100%';
80
+ this.lineChart.height = 'bottom-1';
81
+ this.noDataBox = blessed_1.default.box({
82
+ parent: this.container,
83
+ top: 'center',
84
+ left: 'center',
85
+ width: 'shrink',
86
+ height: 'shrink',
87
+ content: this.getNoDataMessage(),
88
+ style: { fg: 'gray' },
89
+ tags: true,
90
+ hidden: false
91
+ });
92
+ this.widget = this.container;
93
+ this.setupKeyBindings();
94
+ this.lineChart.hide();
95
+ }
96
+ setupKeyBindings() {
97
+ this.container.key(['n', 'N'], () => {
98
+ this.switchToNextChannel();
99
+ });
100
+ this.container.key(['p', 'P'], () => {
101
+ this.switchToPreviousChannel();
102
+ });
103
+ this.container.key(['r', 'R'], () => {
104
+ this.requestUpdate();
105
+ });
106
+ this.container.key(['c', 'C'], () => {
107
+ this.clearAlerts();
108
+ });
109
+ }
110
+ render() {
111
+ if (this.isDestroyed || !this.widget)
112
+ return;
113
+ try {
114
+ this.updateHeader();
115
+ this.updateAlertDisplay();
116
+ this.updateChart();
117
+ this.widget.screen?.render();
118
+ }
119
+ catch (error) {
120
+ this.handleError(error instanceof Error ? error : new Error('Unknown render error'));
121
+ }
122
+ }
123
+ update(data) {
124
+ if (this.isDestroyed)
125
+ return;
126
+ try {
127
+ let metricsArray;
128
+ if (Array.isArray(data)) {
129
+ metricsArray = data;
130
+ }
131
+ else if ('channels' in data && Array.isArray(data.channels)) {
132
+ metricsArray = data.channels;
133
+ }
134
+ else {
135
+ metricsArray = [data];
136
+ }
137
+ for (const metrics of metricsArray) {
138
+ this.processChannelMetrics(metrics);
139
+ }
140
+ if (!this.currentChannelId && this.channelsData.size > 0) {
141
+ this.currentChannelId = Array.from(this.channelsData.keys())[0] || null;
142
+ }
143
+ this.lastUpdateTime = new Date();
144
+ this.updateState({ lastUpdate: this.lastUpdateTime });
145
+ if (this.channelsData.size > 0) {
146
+ this.noDataBox.hide();
147
+ this.lineChart.show();
148
+ }
149
+ else {
150
+ this.noDataBox.show();
151
+ this.lineChart.hide();
152
+ }
153
+ this.throttledRender();
154
+ }
155
+ catch (error) {
156
+ this.handleError(error instanceof Error ? error : new Error('Failed to update stream metrics'));
157
+ }
158
+ }
159
+ processChannelMetrics(metrics) {
160
+ const channelId = metrics.channelId;
161
+ let channelData = this.channelsData.get(channelId);
162
+ if (!channelData) {
163
+ channelData = {
164
+ channelId,
165
+ isActive: metrics.status === 'live',
166
+ dataPoints: [],
167
+ alerts: [],
168
+ lastUpdate: new Date()
169
+ };
170
+ this.channelsData.set(channelId, channelData);
171
+ }
172
+ const dataPoint = {
173
+ timestamp: metrics.lastUpdate || new Date(),
174
+ bitrate: metrics.bitrate || 0,
175
+ fps: metrics.fps || 0,
176
+ viewerCount: metrics.viewerCount || 0,
177
+ bandwidth: metrics.bandwidth || 0,
178
+ channelId
179
+ };
180
+ channelData.dataPoints.push(dataPoint);
181
+ const maxPoints = this.getConfig().maxDataPoints || 100;
182
+ if (channelData.dataPoints.length > maxPoints) {
183
+ channelData.dataPoints = channelData.dataPoints.slice(-maxPoints);
184
+ }
185
+ channelData.isActive = metrics.status === 'live';
186
+ channelData.lastUpdate = new Date();
187
+ this.checkAlerts(channelData, dataPoint);
188
+ }
189
+ checkAlerts(channelData, dataPoint) {
190
+ const config = this.getConfig();
191
+ const thresholds = config.alertThresholds;
192
+ const now = new Date();
193
+ const cooldownMs = 30000;
194
+ if (thresholds?.bitrate) {
195
+ const alertKey = `${channelData.channelId}-bitrate`;
196
+ const lastAlert = this.alertCooldowns.get(alertKey);
197
+ if (!lastAlert || (now.getTime() - lastAlert.getTime()) > cooldownMs) {
198
+ if (dataPoint.bitrate < thresholds.bitrate.min) {
199
+ const alert = {
200
+ type: 'bitrate',
201
+ level: 'warning',
202
+ message: `Low bitrate: ${dataPoint.bitrate} kbps (min: ${thresholds.bitrate.min} kbps)`,
203
+ timestamp: now,
204
+ value: dataPoint.bitrate,
205
+ threshold: thresholds.bitrate.min
206
+ };
207
+ channelData.alerts.push(alert);
208
+ this.alertCooldowns.set(alertKey, now);
209
+ this.emitAlert(channelData.channelId, alert);
210
+ }
211
+ else if (dataPoint.bitrate > thresholds.bitrate.max) {
212
+ const alert = {
213
+ type: 'bitrate',
214
+ level: 'error',
215
+ message: `High bitrate: ${dataPoint.bitrate} kbps (max: ${thresholds.bitrate.max} kbps)`,
216
+ timestamp: now,
217
+ value: dataPoint.bitrate,
218
+ threshold: thresholds.bitrate.max
219
+ };
220
+ channelData.alerts.push(alert);
221
+ this.alertCooldowns.set(alertKey, now);
222
+ this.emitAlert(channelData.channelId, alert);
223
+ }
224
+ }
225
+ }
226
+ if (thresholds?.fps) {
227
+ const alertKey = `${channelData.channelId}-fps`;
228
+ const lastAlert = this.alertCooldowns.get(alertKey);
229
+ if (!lastAlert || (now.getTime() - lastAlert.getTime()) > cooldownMs) {
230
+ if (dataPoint.fps < thresholds.fps.min) {
231
+ const alert = {
232
+ type: 'fps',
233
+ level: 'warning',
234
+ message: `Low FPS: ${dataPoint.fps} (min: ${thresholds.fps.min})`,
235
+ timestamp: now,
236
+ value: dataPoint.fps,
237
+ threshold: thresholds.fps.min
238
+ };
239
+ channelData.alerts.push(alert);
240
+ this.alertCooldowns.set(alertKey, now);
241
+ this.emitAlert(channelData.channelId, alert);
242
+ }
243
+ }
244
+ }
245
+ const maxAlerts = 10;
246
+ if (channelData.alerts.length > maxAlerts) {
247
+ channelData.alerts = channelData.alerts.slice(-maxAlerts);
248
+ }
249
+ }
250
+ updateHeader() {
251
+ if (!this.currentChannelId) {
252
+ this.headerBox.setContent(this.getNoChannelMessage());
253
+ return;
254
+ }
255
+ const channelData = this.channelsData.get(this.currentChannelId);
256
+ if (!channelData) {
257
+ this.headerBox.setContent(this.getNoChannelMessage());
258
+ return;
259
+ }
260
+ const status = channelData.isActive ? '{green-fg}LIVE{/green-fg}' : '{red-fg}OFFLINE{/red-fg}';
261
+ const lastUpdate = channelData.lastUpdate.toLocaleTimeString();
262
+ const channelCount = this.channelsData.size;
263
+ const currentIndex = Array.from(this.channelsData.keys()).indexOf(this.currentChannelId) + 1;
264
+ const headerText = `Channel: {bold}${this.currentChannelId}{/bold} | Status: ${status} | Updated: {gray-fg}${lastUpdate}{/gray-fg} | {cyan-fg}${currentIndex}/${channelCount}{/cyan-fg}`;
265
+ this.headerBox.setContent(headerText);
266
+ }
267
+ updateAlertDisplay() {
268
+ if (!this.currentChannelId) {
269
+ this.alertBox.setContent('');
270
+ return;
271
+ }
272
+ const channelData = this.channelsData.get(this.currentChannelId);
273
+ if (!channelData || channelData.alerts.length === 0) {
274
+ this.alertBox.setContent('');
275
+ return;
276
+ }
277
+ const latestAlert = channelData.alerts[channelData.alerts.length - 1];
278
+ const alertColor = latestAlert?.level === 'error' ? 'red' : 'yellow';
279
+ const alertText = `{${alertColor}-fg}⚠ ${latestAlert?.message}{/${alertColor}-fg} | {gray-fg}${latestAlert?.timestamp.toLocaleTimeString()}{/gray-fg}`;
280
+ this.alertBox.setContent(alertText);
281
+ }
282
+ updateChart() {
283
+ if (!this.currentChannelId)
284
+ return;
285
+ const channelData = this.channelsData.get(this.currentChannelId);
286
+ if (!channelData || channelData.dataPoints.length === 0)
287
+ return;
288
+ try {
289
+ const dataPoints = channelData.dataPoints;
290
+ const timestamps = dataPoints.map(p => p.timestamp.toLocaleTimeString().slice(0, 5));
291
+ const chartData = [
292
+ {
293
+ title: 'Bitrate (kbps)',
294
+ x: timestamps,
295
+ y: dataPoints.map(p => p.bitrate),
296
+ style: { line: this.getConfig().chartStyle?.lineColors?.[0] || 'yellow' }
297
+ },
298
+ {
299
+ title: 'FPS',
300
+ x: timestamps,
301
+ y: dataPoints.map(p => p.fps),
302
+ style: { line: this.getConfig().chartStyle?.lineColors?.[1] || 'green' }
303
+ },
304
+ {
305
+ title: 'Viewers',
306
+ x: timestamps,
307
+ y: dataPoints.map(p => p.viewerCount),
308
+ style: { line: this.getConfig().chartStyle?.lineColors?.[2] || 'cyan' }
309
+ }
310
+ ];
311
+ this.lineChart.setData(chartData);
312
+ }
313
+ catch (error) {
314
+ console.warn('[StreamMetricsPanel] Chart update failed:', error);
315
+ }
316
+ }
317
+ switchToNextChannel() {
318
+ const channels = Array.from(this.channelsData.keys());
319
+ if (channels.length === 0)
320
+ return;
321
+ const currentIndex = this.currentChannelId ? channels.indexOf(this.currentChannelId) : -1;
322
+ const nextIndex = (currentIndex + 1) % channels.length;
323
+ this.currentChannelId = channels[nextIndex] || null;
324
+ this.throttledRender();
325
+ if (this.currentChannelId) {
326
+ this.emitChannelSwitch(this.currentChannelId);
327
+ }
328
+ }
329
+ switchToPreviousChannel() {
330
+ const channels = Array.from(this.channelsData.keys());
331
+ if (channels.length === 0)
332
+ return;
333
+ const currentIndex = this.currentChannelId ? channels.indexOf(this.currentChannelId) : 0;
334
+ const prevIndex = currentIndex === 0 ? channels.length - 1 : currentIndex - 1;
335
+ this.currentChannelId = channels[prevIndex] || null;
336
+ this.throttledRender();
337
+ if (this.currentChannelId) {
338
+ this.emitChannelSwitch(this.currentChannelId);
339
+ }
340
+ }
341
+ clearAlerts() {
342
+ if (!this.currentChannelId)
343
+ return;
344
+ const channelData = this.channelsData.get(this.currentChannelId);
345
+ if (channelData) {
346
+ channelData.alerts = [];
347
+ this.throttledRender();
348
+ }
349
+ }
350
+ emitAlert(channelId, alert) {
351
+ this.emit('component:alert', {
352
+ componentId: this.state.id,
353
+ channelId,
354
+ alert,
355
+ timestamp: new Date()
356
+ });
357
+ }
358
+ emitChannelSwitch(channelId) {
359
+ this.emit('component:channelSwitch', {
360
+ componentId: this.state.id,
361
+ channelId,
362
+ timestamp: new Date()
363
+ });
364
+ }
365
+ getNoChannelMessage() {
366
+ return '{center}{gray-fg}No channel selected{/gray-fg}{/center}';
367
+ }
368
+ getNoDataMessage() {
369
+ return '{center}{gray-fg}No stream data available{/gray-fg}\n{center}{gray-fg}Waiting for stream metrics...{/gray-fg}{/center}';
370
+ }
371
+ getConfig() {
372
+ return this.config;
373
+ }
374
+ getCurrentChannelData() {
375
+ return this.currentChannelId ? this.channelsData.get(this.currentChannelId) || null : null;
376
+ }
377
+ getAllChannelsData() {
378
+ return new Map(this.channelsData);
379
+ }
380
+ setCurrentChannel(channelId) {
381
+ if (this.channelsData.has(channelId)) {
382
+ this.currentChannelId = channelId;
383
+ this.throttledRender();
384
+ this.emitChannelSwitch(channelId);
385
+ }
386
+ }
387
+ destroy() {
388
+ this.stopRefresh();
389
+ this.channelsData.clear();
390
+ this.alertCooldowns.clear();
391
+ super.destroy();
392
+ }
393
+ }
394
+ exports.StreamMetricsPanel = StreamMetricsPanel;
395
+ //# sourceMappingURL=stream-metrics.panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-metrics.panel.js","sourceRoot":"","sources":["../../src/components/stream-metrics.panel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { EventEmitter } from 'events';
2
+ import { BaseComponent } from './base.component';
3
+ import { ComponentConfig } from '../types/monitoring';
4
+ import { SystemResourcesDetailed } from '../services/system-resource.service';
5
+ interface ResourceAlertThresholds {
6
+ cpu: {
7
+ warning: number;
8
+ critical: number;
9
+ };
10
+ memory: {
11
+ warning: number;
12
+ critical: number;
13
+ };
14
+ network: {
15
+ warning: number;
16
+ critical: number;
17
+ };
18
+ }
19
+ export declare class SystemResourcePanel extends BaseComponent {
20
+ private container;
21
+ private cpuGauge;
22
+ private memoryGauge;
23
+ private processGauge;
24
+ private networkChart;
25
+ private cpuChart;
26
+ private memoryChart;
27
+ private networkStatsBox;
28
+ private processStatsBox;
29
+ private infoBox;
30
+ private alertBox;
31
+ private systemResourceService;
32
+ private currentResources;
33
+ private networkHistory;
34
+ private cpuHistory;
35
+ private memoryHistory;
36
+ private readonly maxNetworkHistorySize;
37
+ private readonly maxCpuHistorySize;
38
+ private readonly maxMemoryHistorySize;
39
+ private alertThresholds;
40
+ private isGracefullyDegraded;
41
+ private lastNetworkBytes;
42
+ constructor(config: ComponentConfig, eventBus: EventEmitter);
43
+ private loadAlertThresholds;
44
+ updateAlertThresholds(newThresholds: Partial<ResourceAlertThresholds>): void;
45
+ getAlertThresholds(): ResourceAlertThresholds;
46
+ private setupResourceService;
47
+ protected createWidget(): void;
48
+ private createGauges;
49
+ private createNetworkChart;
50
+ private createCpuChart;
51
+ private createMemoryChart;
52
+ private createNetworkStatsBox;
53
+ private createProcessStatsBox;
54
+ private createInfoBox;
55
+ private createAlertBox;
56
+ private startDataCollection;
57
+ private collectResourceData;
58
+ private updateNetworkHistory;
59
+ private updateCpuHistory;
60
+ private updateMemoryHistory;
61
+ private handleResourceError;
62
+ private showDegradedMode;
63
+ render(): void;
64
+ private updateGauges;
65
+ private updateNetworkChart;
66
+ private updateCpuChart;
67
+ private updateMemoryChart;
68
+ private updateNetworkStatsBox;
69
+ private updateProcessStatsBox;
70
+ private updateInfoBox;
71
+ private updateAlertBox;
72
+ private getColorForValue;
73
+ update(data: SystemResourcesDetailed): void;
74
+ protected requestUpdate(): void;
75
+ destroy(): void;
76
+ }
77
+ export {};
78
+ //# sourceMappingURL=system-resource.panel.d.ts.map