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,351 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiAnalytics = void 0;
4
+ const events_1 = require("events");
5
+ class ApiAnalytics extends events_1.EventEmitter {
6
+ constructor(config = {}) {
7
+ super();
8
+ this.requestRecords = [];
9
+ this.endpointStats = new Map();
10
+ this.errorCounts = new Map();
11
+ this.isRunning = false;
12
+ this.config = {
13
+ enableDetailedTracking: true,
14
+ maxRequestRecords: 10000,
15
+ analyticsWindow: 3600000,
16
+ enablePerformanceMonitoring: true,
17
+ enableErrorTracking: true,
18
+ sampleRate: 1.0,
19
+ ...config,
20
+ };
21
+ this.setupPeriodicAnalytics();
22
+ }
23
+ start() {
24
+ if (this.isRunning) {
25
+ return;
26
+ }
27
+ this.isRunning = true;
28
+ this.emit('analyticsStarted', {
29
+ timestamp: Date.now(),
30
+ config: this.config,
31
+ });
32
+ }
33
+ stop() {
34
+ if (!this.isRunning) {
35
+ return;
36
+ }
37
+ this.isRunning = false;
38
+ if (this.analyticsTimer) {
39
+ clearInterval(this.analyticsTimer);
40
+ delete this.analyticsTimer;
41
+ }
42
+ this.emit('analyticsStopped', {
43
+ timestamp: Date.now(),
44
+ finalStats: this.getOverallStats(),
45
+ });
46
+ }
47
+ recordRequest(id, method, url, responseTime, options = {}) {
48
+ if (!this.isRunning) {
49
+ return;
50
+ }
51
+ if (this.config.sampleRate < 1.0 && Math.random() > this.config.sampleRate) {
52
+ return;
53
+ }
54
+ const record = {
55
+ id,
56
+ method: method.toUpperCase(),
57
+ url,
58
+ timestamp: Date.now(),
59
+ responseTime,
60
+ statusCode: options.statusCode || 0,
61
+ requestSize: options.requestSize || 0,
62
+ responseSize: options.responseSize || 0,
63
+ success: options.success !== false,
64
+ error: options.error || '',
65
+ priority: options.priority || 'medium',
66
+ cached: options.cached || false,
67
+ batched: options.batched || false,
68
+ userAgent: options.userAgent || '',
69
+ };
70
+ if (this.config.enableDetailedTracking) {
71
+ this.requestRecords.push(record);
72
+ if (this.requestRecords.length > this.config.maxRequestRecords) {
73
+ this.requestRecords.shift();
74
+ }
75
+ }
76
+ this.updateEndpointStats(record);
77
+ if (this.config.enableErrorTracking && !record.success && record.error) {
78
+ this.trackError(record.error);
79
+ }
80
+ this.emit('requestRecorded', {
81
+ record,
82
+ timestamp: Date.now(),
83
+ });
84
+ }
85
+ getOverallStats() {
86
+ const now = Date.now();
87
+ const windowStart = now - this.config.analyticsWindow;
88
+ const recentRecords = this.requestRecords.filter(r => r.timestamp >= windowStart);
89
+ const totalRequests = recentRecords.length;
90
+ const successfulRequests = recentRecords.filter(r => r.success).length;
91
+ const failedRequests = totalRequests - successfulRequests;
92
+ const averageResponseTime = totalRequests > 0
93
+ ? recentRecords.reduce((sum, r) => sum + r.responseTime, 0) / totalRequests
94
+ : 0;
95
+ const successRate = totalRequests > 0 ? successfulRequests / totalRequests : 0;
96
+ const totalDataTransferred = recentRecords.reduce((sum, r) => sum + r.requestSize + r.responseSize, 0);
97
+ return {
98
+ totalRequests,
99
+ successfulRequests,
100
+ failedRequests,
101
+ averageResponseTime,
102
+ successRate,
103
+ totalDataTransferred,
104
+ timeWindow: this.config.analyticsWindow,
105
+ };
106
+ }
107
+ getEndpointStats() {
108
+ return Array.from(this.endpointStats.values()).sort((a, b) => b.totalRequests - a.totalRequests);
109
+ }
110
+ getPerformanceMetrics() {
111
+ const now = Date.now();
112
+ const windowStart = now - this.config.analyticsWindow;
113
+ const recentRecords = this.requestRecords.filter(r => r.timestamp >= windowStart);
114
+ if (recentRecords.length === 0) {
115
+ return {
116
+ averageResponseTime: 0,
117
+ p95ResponseTime: 0,
118
+ p99ResponseTime: 0,
119
+ overallSuccessRate: 0,
120
+ requestsPerSecond: 0,
121
+ cacheHitRate: 0,
122
+ batchEfficiency: 0,
123
+ errorRate: 0,
124
+ averageRequestSize: 0,
125
+ averageResponseSize: 0,
126
+ };
127
+ }
128
+ const responseTimes = recentRecords.map(r => r.responseTime).sort((a, b) => a - b);
129
+ const p95Index = Math.floor(responseTimes.length * 0.95);
130
+ const p99Index = Math.floor(responseTimes.length * 0.99);
131
+ const averageResponseTime = responseTimes.reduce((sum, rt) => sum + rt, 0) / responseTimes.length;
132
+ const p95ResponseTime = responseTimes[p95Index] || 0;
133
+ const p99ResponseTime = responseTimes[p99Index] || 0;
134
+ const successfulRequests = recentRecords.filter(r => r.success).length;
135
+ const overallSuccessRate = successfulRequests / recentRecords.length;
136
+ const timeSpan = (now - windowStart) / 1000;
137
+ const requestsPerSecond = recentRecords.length / timeSpan;
138
+ const cachedRequests = recentRecords.filter(r => r.cached).length;
139
+ const cacheHitRate = cachedRequests / recentRecords.length;
140
+ const batchedRequests = recentRecords.filter(r => r.batched).length;
141
+ const batchEfficiency = batchedRequests / recentRecords.length;
142
+ const errorRate = 1 - overallSuccessRate;
143
+ const averageRequestSize = recentRecords.reduce((sum, r) => sum + r.requestSize, 0) / recentRecords.length;
144
+ const averageResponseSize = recentRecords.reduce((sum, r) => sum + r.responseSize, 0) / recentRecords.length;
145
+ return {
146
+ averageResponseTime,
147
+ p95ResponseTime,
148
+ p99ResponseTime,
149
+ overallSuccessRate,
150
+ requestsPerSecond,
151
+ cacheHitRate,
152
+ batchEfficiency,
153
+ errorRate,
154
+ averageRequestSize,
155
+ averageResponseSize,
156
+ };
157
+ }
158
+ getErrorAnalysis() {
159
+ const now = Date.now();
160
+ const windowStart = now - this.config.analyticsWindow;
161
+ const recentRecords = this.requestRecords.filter(r => r.timestamp >= windowStart);
162
+ const errorRecords = recentRecords.filter(r => !r.success && r.error);
163
+ const errorCounts = new Map();
164
+ for (const record of errorRecords) {
165
+ const error = record.error;
166
+ const existing = errorCounts.get(error) || { count: 0, endpoints: new Set() };
167
+ existing.count++;
168
+ existing.endpoints.add(record.url);
169
+ errorCounts.set(error, existing);
170
+ }
171
+ const commonErrors = Array.from(errorCounts.entries())
172
+ .map(([error, data]) => ({
173
+ error,
174
+ count: data.count,
175
+ percentage: (data.count / errorRecords.length) * 100,
176
+ endpoints: Array.from(data.endpoints),
177
+ }))
178
+ .sort((a, b) => b.count - a.count);
179
+ const endpointErrorCounts = new Map();
180
+ const endpointTotalCounts = new Map();
181
+ for (const record of recentRecords) {
182
+ const current = endpointTotalCounts.get(record.url) || 0;
183
+ endpointTotalCounts.set(record.url, current + 1);
184
+ if (!record.success) {
185
+ const errorCurrent = endpointErrorCounts.get(record.url) || 0;
186
+ endpointErrorCounts.set(record.url, errorCurrent + 1);
187
+ }
188
+ }
189
+ const errorsByEndpoint = Array.from(endpointErrorCounts.entries())
190
+ .map(([endpoint, errorCount]) => ({
191
+ endpoint,
192
+ errorCount,
193
+ errorRate: errorCount / (endpointTotalCounts.get(endpoint) || 1),
194
+ }))
195
+ .sort((a, b) => b.errorRate - a.errorRate);
196
+ const hourlyBuckets = new Map();
197
+ const hourMs = 3600000;
198
+ for (const record of recentRecords) {
199
+ const hourBucket = Math.floor(record.timestamp / hourMs) * hourMs;
200
+ const existing = hourlyBuckets.get(hourBucket) || { errors: 0, total: 0 };
201
+ existing.total++;
202
+ if (!record.success) {
203
+ existing.errors++;
204
+ }
205
+ hourlyBuckets.set(hourBucket, existing);
206
+ }
207
+ const errorTrends = Array.from(hourlyBuckets.entries())
208
+ .map(([timestamp, data]) => ({
209
+ timestamp,
210
+ errorCount: data.errors,
211
+ totalRequests: data.total,
212
+ }))
213
+ .sort((a, b) => a.timestamp - b.timestamp);
214
+ return {
215
+ commonErrors,
216
+ errorsByEndpoint,
217
+ errorTrends,
218
+ };
219
+ }
220
+ getUsagePatterns() {
221
+ const now = Date.now();
222
+ const windowStart = now - this.config.analyticsWindow;
223
+ const recentRecords = this.requestRecords.filter(r => r.timestamp >= windowStart);
224
+ const hourlyRequests = new Map();
225
+ for (const record of recentRecords) {
226
+ const hour = new Date(record.timestamp).getHours();
227
+ hourlyRequests.set(hour, (hourlyRequests.get(hour) || 0) + 1);
228
+ }
229
+ const peakHours = Array.from(hourlyRequests.entries())
230
+ .map(([hour, requestCount]) => ({ hour, requestCount }))
231
+ .sort((a, b) => b.requestCount - a.requestCount);
232
+ const endpointRequests = new Map();
233
+ for (const record of recentRecords) {
234
+ endpointRequests.set(record.url, (endpointRequests.get(record.url) || 0) + 1);
235
+ }
236
+ const totalRequests = recentRecords.length;
237
+ const activeEndpoints = Array.from(endpointRequests.entries())
238
+ .map(([endpoint, requestCount]) => ({
239
+ endpoint,
240
+ requestCount,
241
+ percentage: (requestCount / totalRequests) * 100,
242
+ }))
243
+ .sort((a, b) => b.requestCount - a.requestCount);
244
+ const methodDistribution = {};
245
+ for (const record of recentRecords) {
246
+ methodDistribution[record.method] = (methodDistribution[record.method] || 0) + 1;
247
+ }
248
+ const priorityDistribution = {};
249
+ for (const record of recentRecords) {
250
+ priorityDistribution[record.priority] = (priorityDistribution[record.priority] || 0) + 1;
251
+ }
252
+ const cachedRequests = recentRecords.filter(r => r.cached).length;
253
+ const cacheableRequests = recentRecords.filter(r => r.method === 'GET').length;
254
+ const cachingStats = {
255
+ cacheHitRate: cacheableRequests > 0 ? cachedRequests / cacheableRequests : 0,
256
+ cacheMissRate: cacheableRequests > 0 ? (cacheableRequests - cachedRequests) / cacheableRequests : 0,
257
+ cacheableRequests,
258
+ };
259
+ return {
260
+ peakHours,
261
+ activeEndpoints,
262
+ methodDistribution,
263
+ priorityDistribution,
264
+ cachingStats,
265
+ };
266
+ }
267
+ generateReport() {
268
+ return {
269
+ summary: this.getOverallStats(),
270
+ performance: this.getPerformanceMetrics(),
271
+ errors: this.getErrorAnalysis(),
272
+ usage: this.getUsagePatterns(),
273
+ endpoints: this.getEndpointStats(),
274
+ generatedAt: Date.now(),
275
+ };
276
+ }
277
+ clearData() {
278
+ this.requestRecords = [];
279
+ this.endpointStats.clear();
280
+ this.errorCounts.clear();
281
+ this.emit('dataCleared', {
282
+ timestamp: Date.now(),
283
+ });
284
+ }
285
+ updateConfig(newConfig) {
286
+ this.config = { ...this.config, ...newConfig };
287
+ this.emit('configUpdated', {
288
+ config: this.config,
289
+ timestamp: Date.now(),
290
+ });
291
+ }
292
+ updateEndpointStats(record) {
293
+ const endpoint = this.normalizeEndpoint(record.url);
294
+ const existing = this.endpointStats.get(endpoint) || {
295
+ endpoint,
296
+ totalRequests: 0,
297
+ successfulRequests: 0,
298
+ failedRequests: 0,
299
+ averageResponseTime: 0,
300
+ minResponseTime: Infinity,
301
+ maxResponseTime: 0,
302
+ successRate: 0,
303
+ totalDataTransferred: 0,
304
+ lastRequestTime: 0,
305
+ requestsPerHour: 0,
306
+ };
307
+ existing.totalRequests++;
308
+ existing.lastRequestTime = record.timestamp;
309
+ existing.totalDataTransferred += record.requestSize + record.responseSize;
310
+ if (record.success) {
311
+ existing.successfulRequests++;
312
+ }
313
+ else {
314
+ existing.failedRequests++;
315
+ }
316
+ existing.averageResponseTime = ((existing.averageResponseTime * (existing.totalRequests - 1)) + record.responseTime) / existing.totalRequests;
317
+ existing.minResponseTime = Math.min(existing.minResponseTime, record.responseTime);
318
+ existing.maxResponseTime = Math.max(existing.maxResponseTime, record.responseTime);
319
+ existing.successRate = existing.successfulRequests / existing.totalRequests;
320
+ const now = Date.now();
321
+ const hourAgo = now - 3600000;
322
+ const recentRequests = this.requestRecords.filter(r => r.url === record.url && r.timestamp >= hourAgo);
323
+ existing.requestsPerHour = recentRequests.length;
324
+ this.endpointStats.set(endpoint, existing);
325
+ }
326
+ normalizeEndpoint(url) {
327
+ const baseUrl = url.split('?')[0];
328
+ return (baseUrl || '').replace(/\/\d+/g, '/{id}');
329
+ }
330
+ trackError(error) {
331
+ this.errorCounts.set(error, (this.errorCounts.get(error) || 0) + 1);
332
+ }
333
+ setupPeriodicAnalytics() {
334
+ this.analyticsTimer = setInterval(() => {
335
+ if (this.isRunning) {
336
+ this.performPeriodicAnalytics();
337
+ }
338
+ }, 60000);
339
+ }
340
+ performPeriodicAnalytics() {
341
+ const report = this.generateReport();
342
+ this.emit('periodicAnalytics', {
343
+ report,
344
+ timestamp: Date.now(),
345
+ });
346
+ const cutoffTime = Date.now() - this.config.analyticsWindow;
347
+ this.requestRecords = this.requestRecords.filter(r => r.timestamp >= cutoffTime);
348
+ }
349
+ }
350
+ exports.ApiAnalytics = ApiAnalytics;
351
+ //# sourceMappingURL=api-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-analytics.js","sourceRoot":"","sources":["../../src/performance/api-analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { EventEmitter } from 'events';
2
+ export interface ApiOptimizerConfig {
3
+ enableCaching: boolean;
4
+ cacheTtl: number;
5
+ maxCacheSize: number;
6
+ enableDeduplication: boolean;
7
+ deduplicationWindow: number;
8
+ enableCoalescing: boolean;
9
+ coalescingWindow: number;
10
+ enableCompression: boolean;
11
+ compressionThreshold: number;
12
+ }
13
+ export interface OptimizationStats {
14
+ totalRequests: number;
15
+ cachedRequests: number;
16
+ deduplicatedRequests: number;
17
+ coalescedRequests: number;
18
+ cacheHitRatio: number;
19
+ averageResponseTime: number;
20
+ bytesSaved: number;
21
+ currentCacheSize: number;
22
+ }
23
+ export declare class ApiOptimizer extends EventEmitter {
24
+ private config;
25
+ private cache;
26
+ private pendingRequests;
27
+ private recentRequests;
28
+ private stats;
29
+ private coalescingTimers;
30
+ constructor(config?: Partial<ApiOptimizerConfig>);
31
+ optimizeRequest(method: string, url: string, params?: Record<string, any>, body?: any, options?: {
32
+ priority?: 'low' | 'medium' | 'high';
33
+ bypassCache?: boolean;
34
+ ttl?: number;
35
+ }): Promise<any>;
36
+ invalidateCache(pattern?: string): void;
37
+ getStats(): OptimizationStats;
38
+ getCacheInfo(): {
39
+ size: number;
40
+ entries: Array<{
41
+ hash: string;
42
+ timestamp: number;
43
+ ttl: number;
44
+ hitCount: number;
45
+ size: number;
46
+ }>;
47
+ };
48
+ updateConfig(newConfig: Partial<ApiOptimizerConfig>): void;
49
+ reset(): void;
50
+ private createRequestSignature;
51
+ private hashSignature;
52
+ private hashObject;
53
+ private getCachedResponse;
54
+ private checkForDuplicate;
55
+ private coalesceRequest;
56
+ private executePendingRequest;
57
+ private executeRequest;
58
+ private cacheResponse;
59
+ private evictOldestEntry;
60
+ private estimateSize;
61
+ private getPriorityValue;
62
+ private updateStats;
63
+ private setupCacheCleanup;
64
+ private cleanupExpiredEntries;
65
+ }
66
+ //# sourceMappingURL=api-optimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-optimizer.d.ts","sourceRoot":"","sources":["../../src/performance/api-optimizer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,MAAM,WAAW,kBAAkB;IAEjC,aAAa,EAAE,OAAO,CAAC;IAEvB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,MAAM,CAAC;IAErB,mBAAmB,EAAE,OAAO,CAAC;IAE7B,mBAAmB,EAAE,MAAM,CAAC;IAE5B,gBAAgB,EAAE,OAAO,CAAC;IAE1B,gBAAgB,EAAE,MAAM,CAAC;IAEzB,iBAAiB,EAAE,OAAO,CAAC;IAE3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAsDD,MAAM,WAAW,iBAAiB;IAEhC,aAAa,EAAE,MAAM,CAAC;IAEtB,cAAc,EAAE,MAAM,CAAC;IAEvB,oBAAoB,EAAE,MAAM,CAAC;IAE7B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,aAAa,EAAE,MAAM,CAAC;IAEtB,mBAAmB,EAAE,MAAM,CAAC;IAE5B,UAAU,EAAE,MAAM,CAAC;IAEnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAKD,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,gBAAgB,CAA0C;gBAEtD,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAiCvC,eAAe,CAC1B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QACrC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,GAAG,CAAC,EAAE,MAAM,CAAC;KACT,GACL,OAAO,CAAC,GAAG,CAAC;IAmGR,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAiCvC,QAAQ,IAAI,iBAAiB;IAO7B,YAAY,IAAI;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,SAAS,EAAE,MAAM,CAAC;YAClB,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC,CAAC;KACJ;IAkBM,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAY1D,KAAK,IAAI,IAAI;IA6BpB,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,iBAAiB;YA0BX,eAAe;YA4Cf,qBAAqB;YA8CrB,cAAc;IA4B5B,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,qBAAqB;CAuB9B"}