modestbench 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +39 -31
  3. package/dist/bootstrap.cjs +10 -10
  4. package/dist/bootstrap.cjs.map +1 -1
  5. package/dist/bootstrap.d.cts.map +1 -1
  6. package/dist/bootstrap.d.ts.map +1 -1
  7. package/dist/bootstrap.js +5 -5
  8. package/dist/bootstrap.js.map +1 -1
  9. package/dist/cli/commands/history.cjs +108 -266
  10. package/dist/cli/commands/history.cjs.map +1 -1
  11. package/dist/cli/commands/history.d.cts +75 -12
  12. package/dist/cli/commands/history.d.cts.map +1 -1
  13. package/dist/cli/commands/history.d.ts +75 -12
  14. package/dist/cli/commands/history.d.ts.map +1 -1
  15. package/dist/cli/commands/history.js +105 -268
  16. package/dist/cli/commands/history.js.map +1 -1
  17. package/dist/cli/commands/run.cjs +18 -5
  18. package/dist/cli/commands/run.cjs.map +1 -1
  19. package/dist/cli/commands/run.d.cts +1 -0
  20. package/dist/cli/commands/run.d.cts.map +1 -1
  21. package/dist/cli/commands/run.d.ts +1 -0
  22. package/dist/cli/commands/run.d.ts.map +1 -1
  23. package/dist/cli/commands/run.js +18 -5
  24. package/dist/cli/commands/run.js.map +1 -1
  25. package/dist/cli/index.cjs +307 -91
  26. package/dist/cli/index.cjs.map +1 -1
  27. package/dist/cli/index.d.cts.map +1 -1
  28. package/dist/cli/index.d.ts.map +1 -1
  29. package/dist/cli/index.js +308 -92
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/core/engine.cjs +8 -1
  32. package/dist/core/engine.cjs.map +1 -1
  33. package/dist/core/engine.d.cts +3 -0
  34. package/dist/core/engine.d.cts.map +1 -1
  35. package/dist/core/engine.d.ts +3 -0
  36. package/dist/core/engine.d.ts.map +1 -1
  37. package/dist/core/engine.js +8 -1
  38. package/dist/core/engine.js.map +1 -1
  39. package/dist/core/output-path-resolver.cjs +34 -0
  40. package/dist/core/output-path-resolver.cjs.map +1 -0
  41. package/dist/core/output-path-resolver.d.cts +10 -0
  42. package/dist/core/output-path-resolver.d.cts.map +1 -0
  43. package/dist/core/output-path-resolver.d.ts +10 -0
  44. package/dist/core/output-path-resolver.d.ts.map +1 -0
  45. package/dist/core/output-path-resolver.js +30 -0
  46. package/dist/core/output-path-resolver.js.map +1 -0
  47. package/dist/formatters/history/base.cjs +9 -0
  48. package/dist/formatters/history/base.cjs.map +1 -0
  49. package/dist/formatters/history/base.d.cts +26 -0
  50. package/dist/formatters/history/base.d.cts.map +1 -0
  51. package/dist/formatters/history/base.d.ts +26 -0
  52. package/dist/formatters/history/base.d.ts.map +1 -0
  53. package/dist/formatters/history/base.js +8 -0
  54. package/dist/formatters/history/base.js.map +1 -0
  55. package/dist/formatters/history/compare.cjs +127 -0
  56. package/dist/formatters/history/compare.cjs.map +1 -0
  57. package/dist/formatters/history/compare.d.cts +21 -0
  58. package/dist/formatters/history/compare.d.cts.map +1 -0
  59. package/dist/formatters/history/compare.d.ts +21 -0
  60. package/dist/formatters/history/compare.d.ts.map +1 -0
  61. package/dist/formatters/history/compare.js +123 -0
  62. package/dist/formatters/history/compare.js.map +1 -0
  63. package/dist/formatters/history/list.cjs +74 -0
  64. package/dist/formatters/history/list.cjs.map +1 -0
  65. package/dist/formatters/history/list.d.cts +25 -0
  66. package/dist/formatters/history/list.d.cts.map +1 -0
  67. package/dist/formatters/history/list.d.ts +25 -0
  68. package/dist/formatters/history/list.d.ts.map +1 -0
  69. package/dist/formatters/history/list.js +70 -0
  70. package/dist/formatters/history/list.js.map +1 -0
  71. package/dist/formatters/history/show.cjs +98 -0
  72. package/dist/formatters/history/show.cjs.map +1 -0
  73. package/dist/formatters/history/show.d.cts +21 -0
  74. package/dist/formatters/history/show.d.cts.map +1 -0
  75. package/dist/formatters/history/show.d.ts +21 -0
  76. package/dist/formatters/history/show.d.ts.map +1 -0
  77. package/dist/formatters/history/show.js +94 -0
  78. package/dist/formatters/history/show.js.map +1 -0
  79. package/dist/formatters/history/trends.cjs +194 -0
  80. package/dist/formatters/history/trends.cjs.map +1 -0
  81. package/dist/formatters/history/trends.d.cts +22 -0
  82. package/dist/formatters/history/trends.d.cts.map +1 -0
  83. package/dist/formatters/history/trends.d.ts +22 -0
  84. package/dist/formatters/history/trends.d.ts.map +1 -0
  85. package/dist/formatters/history/trends.js +190 -0
  86. package/dist/formatters/history/trends.js.map +1 -0
  87. package/dist/formatters/history/visualization.cjs +79 -0
  88. package/dist/formatters/history/visualization.cjs.map +1 -0
  89. package/dist/formatters/history/visualization.d.cts +24 -0
  90. package/dist/formatters/history/visualization.d.cts.map +1 -0
  91. package/dist/formatters/history/visualization.d.ts +24 -0
  92. package/dist/formatters/history/visualization.d.ts.map +1 -0
  93. package/dist/formatters/history/visualization.js +74 -0
  94. package/dist/formatters/history/visualization.js.map +1 -0
  95. package/dist/index.cjs +15 -17
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.d.cts +5 -5
  98. package/dist/index.d.cts.map +1 -1
  99. package/dist/index.d.ts +5 -5
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +7 -9
  102. package/dist/index.js.map +1 -1
  103. package/dist/reporters/csv.cjs +2 -2
  104. package/dist/reporters/csv.cjs.map +1 -1
  105. package/dist/reporters/csv.d.cts +1 -1
  106. package/dist/reporters/csv.d.cts.map +1 -1
  107. package/dist/reporters/csv.d.ts +1 -1
  108. package/dist/reporters/csv.d.ts.map +1 -1
  109. package/dist/reporters/csv.js +1 -1
  110. package/dist/reporters/csv.js.map +1 -1
  111. package/dist/reporters/human.cjs +24 -62
  112. package/dist/reporters/human.cjs.map +1 -1
  113. package/dist/reporters/human.d.cts +1 -1
  114. package/dist/reporters/human.d.cts.map +1 -1
  115. package/dist/reporters/human.d.ts +1 -1
  116. package/dist/reporters/human.d.ts.map +1 -1
  117. package/dist/reporters/human.js +2 -40
  118. package/dist/reporters/human.js.map +1 -1
  119. package/dist/reporters/json.cjs +2 -2
  120. package/dist/reporters/json.cjs.map +1 -1
  121. package/dist/reporters/json.d.cts +1 -1
  122. package/dist/reporters/json.d.cts.map +1 -1
  123. package/dist/reporters/json.d.ts +1 -1
  124. package/dist/reporters/json.d.ts.map +1 -1
  125. package/dist/reporters/json.js +1 -1
  126. package/dist/reporters/json.js.map +1 -1
  127. package/dist/reporters/simple.cjs +2 -2
  128. package/dist/reporters/simple.cjs.map +1 -1
  129. package/dist/reporters/simple.d.cts +1 -1
  130. package/dist/reporters/simple.d.cts.map +1 -1
  131. package/dist/reporters/simple.d.ts +1 -1
  132. package/dist/reporters/simple.d.ts.map +1 -1
  133. package/dist/reporters/simple.js +1 -1
  134. package/dist/reporters/simple.js.map +1 -1
  135. package/dist/{config/manager.cjs → services/config-manager.cjs} +2 -2
  136. package/dist/services/config-manager.cjs.map +1 -0
  137. package/dist/{config/manager.d.cts → services/config-manager.d.cts} +1 -1
  138. package/dist/services/config-manager.d.cts.map +1 -0
  139. package/dist/{config/manager.d.ts → services/config-manager.d.ts} +1 -1
  140. package/dist/services/config-manager.d.ts.map +1 -0
  141. package/dist/{config/manager.js → services/config-manager.js} +2 -2
  142. package/dist/services/config-manager.js.map +1 -0
  143. package/dist/{core/loader.cjs → services/file-loader.cjs} +2 -2
  144. package/dist/services/file-loader.cjs.map +1 -0
  145. package/dist/{core/loader.d.cts → services/file-loader.d.cts} +1 -1
  146. package/dist/services/file-loader.d.cts.map +1 -0
  147. package/dist/{core/loader.d.ts → services/file-loader.d.ts} +1 -1
  148. package/dist/services/file-loader.d.ts.map +1 -0
  149. package/dist/{core/loader.js → services/file-loader.js} +2 -2
  150. package/dist/services/file-loader.js.map +1 -0
  151. package/dist/services/history/comparison.cjs +124 -0
  152. package/dist/services/history/comparison.cjs.map +1 -0
  153. package/dist/services/history/comparison.d.cts +18 -0
  154. package/dist/services/history/comparison.d.cts.map +1 -0
  155. package/dist/services/history/comparison.d.ts +18 -0
  156. package/dist/services/history/comparison.d.ts.map +1 -0
  157. package/dist/services/history/comparison.js +120 -0
  158. package/dist/services/history/comparison.js.map +1 -0
  159. package/dist/services/history/models.cjs +9 -0
  160. package/dist/services/history/models.cjs.map +1 -0
  161. package/dist/services/history/models.d.cts +139 -0
  162. package/dist/services/history/models.d.cts.map +1 -0
  163. package/dist/services/history/models.d.ts +139 -0
  164. package/dist/services/history/models.d.ts.map +1 -0
  165. package/dist/services/history/models.js +8 -0
  166. package/dist/services/history/models.js.map +1 -0
  167. package/dist/services/history/query.cjs +97 -0
  168. package/dist/services/history/query.cjs.map +1 -0
  169. package/dist/services/history/query.d.cts +38 -0
  170. package/dist/services/history/query.d.cts.map +1 -0
  171. package/dist/services/history/query.d.ts +38 -0
  172. package/dist/services/history/query.d.ts.map +1 -0
  173. package/dist/services/history/query.js +92 -0
  174. package/dist/services/history/query.js.map +1 -0
  175. package/dist/services/history/trend-analysis.cjs +187 -0
  176. package/dist/services/history/trend-analysis.cjs.map +1 -0
  177. package/dist/services/history/trend-analysis.d.cts +34 -0
  178. package/dist/services/history/trend-analysis.d.cts.map +1 -0
  179. package/dist/services/history/trend-analysis.d.ts +34 -0
  180. package/dist/services/history/trend-analysis.d.ts.map +1 -0
  181. package/dist/services/history/trend-analysis.js +179 -0
  182. package/dist/services/history/trend-analysis.js.map +1 -0
  183. package/dist/{storage/history.cjs → services/history-storage.cjs} +1 -1
  184. package/dist/services/history-storage.cjs.map +1 -0
  185. package/dist/{storage/history.d.cts → services/history-storage.d.cts} +1 -1
  186. package/dist/services/history-storage.d.cts.map +1 -0
  187. package/dist/{storage/history.d.ts → services/history-storage.d.ts} +1 -1
  188. package/dist/services/history-storage.d.ts.map +1 -0
  189. package/dist/{storage/history.js → services/history-storage.js} +1 -1
  190. package/dist/services/history-storage.js.map +1 -0
  191. package/dist/{progress/manager.cjs → services/progress-manager.cjs} +1 -1
  192. package/dist/services/progress-manager.cjs.map +1 -0
  193. package/dist/{progress/manager.d.cts → services/progress-manager.d.cts} +1 -1
  194. package/dist/services/progress-manager.d.cts.map +1 -0
  195. package/dist/{progress/manager.d.ts → services/progress-manager.d.ts} +1 -1
  196. package/dist/services/progress-manager.d.ts.map +1 -0
  197. package/dist/{progress/manager.js → services/progress-manager.js} +1 -1
  198. package/dist/services/progress-manager.js.map +1 -0
  199. package/dist/{reporters/registry.cjs → services/reporter-registry.cjs} +1 -1
  200. package/dist/services/reporter-registry.cjs.map +1 -0
  201. package/dist/{reporters/registry.d.cts → services/reporter-registry.d.cts} +1 -1
  202. package/dist/services/reporter-registry.d.cts.map +1 -0
  203. package/dist/{reporters/registry.d.ts → services/reporter-registry.d.ts} +1 -1
  204. package/dist/services/reporter-registry.d.ts.map +1 -0
  205. package/dist/{reporters/registry.js → services/reporter-registry.js} +1 -1
  206. package/dist/services/reporter-registry.js.map +1 -0
  207. package/dist/types/cli.d.cts +3 -0
  208. package/dist/types/cli.d.cts.map +1 -1
  209. package/dist/types/cli.d.ts +3 -0
  210. package/dist/types/cli.d.ts.map +1 -1
  211. package/dist/utils/ansi.cjs +61 -0
  212. package/dist/utils/ansi.cjs.map +1 -0
  213. package/dist/utils/ansi.d.cts +53 -0
  214. package/dist/utils/ansi.d.cts.map +1 -0
  215. package/dist/utils/ansi.d.ts +53 -0
  216. package/dist/utils/ansi.d.ts.map +1 -0
  217. package/dist/utils/ansi.js +57 -0
  218. package/dist/utils/ansi.js.map +1 -0
  219. package/package.json +5 -4
  220. package/src/bootstrap.ts +5 -5
  221. package/src/cli/commands/history.ts +194 -342
  222. package/src/cli/commands/run.ts +32 -3
  223. package/src/cli/index.ts +361 -106
  224. package/src/core/engine.ts +9 -1
  225. package/src/core/output-path-resolver.ts +38 -0
  226. package/src/formatters/history/base.ts +28 -0
  227. package/src/formatters/history/compare.ts +186 -0
  228. package/src/formatters/history/list.ts +101 -0
  229. package/src/formatters/history/show.ts +155 -0
  230. package/src/formatters/history/trends.ts +281 -0
  231. package/src/formatters/history/visualization.ts +93 -0
  232. package/src/index.ts +7 -11
  233. package/src/reporters/csv.ts +1 -1
  234. package/src/reporters/human.ts +2 -42
  235. package/src/reporters/json.ts +1 -1
  236. package/src/reporters/simple.ts +1 -1
  237. package/src/{config/manager.ts → services/config-manager.ts} +1 -1
  238. package/src/{core/loader.ts → services/file-loader.ts} +1 -1
  239. package/src/services/history/comparison.ts +130 -0
  240. package/src/services/history/models.ts +148 -0
  241. package/src/services/history/query.ts +116 -0
  242. package/src/services/history/trend-analysis.ts +238 -0
  243. package/src/types/cli.ts +3 -0
  244. package/src/utils/ansi.ts +59 -0
  245. package/dist/config/manager.cjs.map +0 -1
  246. package/dist/config/manager.d.cts.map +0 -1
  247. package/dist/config/manager.d.ts.map +0 -1
  248. package/dist/config/manager.js.map +0 -1
  249. package/dist/core/loader.cjs.map +0 -1
  250. package/dist/core/loader.d.cts.map +0 -1
  251. package/dist/core/loader.d.ts.map +0 -1
  252. package/dist/core/loader.js.map +0 -1
  253. package/dist/progress/manager.cjs.map +0 -1
  254. package/dist/progress/manager.d.cts.map +0 -1
  255. package/dist/progress/manager.d.ts.map +0 -1
  256. package/dist/progress/manager.js.map +0 -1
  257. package/dist/reporters/registry.cjs.map +0 -1
  258. package/dist/reporters/registry.d.cts.map +0 -1
  259. package/dist/reporters/registry.d.ts.map +0 -1
  260. package/dist/reporters/registry.js.map +0 -1
  261. package/dist/storage/history.cjs.map +0 -1
  262. package/dist/storage/history.d.cts.map +0 -1
  263. package/dist/storage/history.d.ts.map +0 -1
  264. package/dist/storage/history.js.map +0 -1
  265. /package/src/{storage/history.ts → services/history-storage.ts} +0 -0
  266. /package/src/{progress/manager.ts → services/progress-manager.ts} +0 -0
  267. /package/src/{reporters/registry.ts → services/reporter-registry.ts} +0 -0
@@ -0,0 +1,92 @@
1
+ /**
2
+ * History Query Service
3
+ *
4
+ * Handles querying benchmark run history with date parsing and filtering.
5
+ */
6
+ /**
7
+ * Service for querying historical benchmark runs
8
+ */
9
+ export class HistoryQueryService {
10
+ storage;
11
+ constructor(storage) {
12
+ this.storage = storage;
13
+ }
14
+ /**
15
+ * Query runs with automatic date string parsing
16
+ */
17
+ async queryWithDateParsing(options) {
18
+ // Build query object all at once
19
+ const query = {
20
+ ...(options.since && { since: parseDate(options.since) }),
21
+ ...(options.until && { until: parseDate(options.until) }),
22
+ ...(options.pattern && { pattern: options.pattern }),
23
+ ...(options.tags && options.tags.length > 0 && { tags: options.tags }),
24
+ ...(options.limit && { limit: options.limit }),
25
+ };
26
+ return await this.storage.queryRuns(query);
27
+ }
28
+ }
29
+ /**
30
+ * Parse date string (ISO 8601 or relative)
31
+ *
32
+ * Supports:
33
+ *
34
+ * - ISO 8601: "2025-10-24T12:00:00Z", "2025-10-24"
35
+ * - Relative: "1 day ago", "3 weeks ago", "2 hours ago"
36
+ * - Shorthand: "1d", "2w", "3m", "6h"
37
+ *
38
+ * @param dateStr - Date string to parse
39
+ * @returns Parsed Date object
40
+ * @throws Error if date format is invalid
41
+ */
42
+ export const parseDate = (dateStr) => {
43
+ if (!dateStr || dateStr.trim() === '') {
44
+ throw new Error(`Invalid date format: "${dateStr}"`);
45
+ }
46
+ // Try parsing as ISO 8601 first
47
+ const isoDate = new Date(dateStr);
48
+ if (!isNaN(isoDate.getTime())) {
49
+ return isoDate;
50
+ }
51
+ // Parse relative dates like "1 week ago", "3 days ago"
52
+ const relativePattern = /^(\d+)\s+(hour|day|week|month)s?\s+ago$/i;
53
+ const relativeMatch = dateStr.trim().match(relativePattern);
54
+ if (relativeMatch && relativeMatch[1] && relativeMatch[2]) {
55
+ const amount = parseInt(relativeMatch[1], 10);
56
+ const unit = relativeMatch[2].toLowerCase();
57
+ if (amount <= 0) {
58
+ throw new Error(`Invalid date format: "${dateStr}"`);
59
+ }
60
+ const now = new Date();
61
+ const msPerUnit = {
62
+ day: 24 * 60 * 60 * 1000,
63
+ hour: 60 * 60 * 1000,
64
+ month: 30 * 24 * 60 * 60 * 1000, // Approximate
65
+ week: 7 * 24 * 60 * 60 * 1000,
66
+ };
67
+ const offset = amount * (msPerUnit[unit] || 0);
68
+ return new Date(now.getTime() - offset);
69
+ }
70
+ // Parse shorthand formats like "1d", "2w", "3m", "6h"
71
+ // cspell:ignore hdwm
72
+ const shorthandPattern = /^(\d+)([hdwm])$/i;
73
+ const shorthandMatch = dateStr.trim().match(shorthandPattern);
74
+ if (shorthandMatch && shorthandMatch[1] && shorthandMatch[2]) {
75
+ const amount = parseInt(shorthandMatch[1], 10);
76
+ const unit = shorthandMatch[2].toLowerCase();
77
+ if (amount <= 0) {
78
+ throw new Error(`Invalid date format: "${dateStr}"`);
79
+ }
80
+ const now = new Date();
81
+ const msPerUnit = {
82
+ d: 24 * 60 * 60 * 1000,
83
+ h: 60 * 60 * 1000,
84
+ m: 30 * 24 * 60 * 60 * 1000, // Approximate month
85
+ w: 7 * 24 * 60 * 60 * 1000,
86
+ };
87
+ const offset = amount * (msPerUnit[unit] || 0);
88
+ return new Date(now.getTime() - offset);
89
+ }
90
+ throw new Error(`Invalid date format: "${dateStr}"`);
91
+ };
92
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/services/history/query.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAM1B;QACC,iCAAiC;QACjC,MAAM,KAAK,GAA0B;YACnC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;SAC/C,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAQ,EAAE;IACjD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uDAAuD;IACvD,MAAM,eAAe,GAAG,0CAA0C,CAAC;IACnE,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAE5D,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAE5C,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAA2B;YACxC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YACxB,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;YACpB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,cAAc;YAC/C,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;SAC9B,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,sDAAsD;IACtD,qBAAqB;IACrB,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;IAC5C,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAE9D,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7C,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAA2B;YACxC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YACtB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;YACjB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,oBAAoB;YACjD,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,GAAG,CAAC,CAAC;AACvD,CAAC,CAAC"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ /**
3
+ * Trend Analysis Service
4
+ *
5
+ * Statistical analysis of benchmark performance trends over time, including
6
+ * regression detection and trend classification.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.detectRegression = exports.calculateTrend = exports.calculateStatistics = exports.calculatePercentChange = exports.TrendAnalysisService = void 0;
10
+ /**
11
+ * Service for analyzing performance trends
12
+ */
13
+ class TrendAnalysisService {
14
+ /**
15
+ * Analyze trends across multiple benchmark runs
16
+ */
17
+ analyzeTrends(runs) {
18
+ // Build trend data for each task across runs
19
+ const taskTrendsMap = new Map();
20
+ for (const run of runs) {
21
+ for (const file of run.files) {
22
+ for (const suite of file.suites) {
23
+ for (const task of suite.tasks) {
24
+ if (!task.error) {
25
+ const key = `${file.filePath}::${suite.name}::${task.name}`;
26
+ const dataPoints = taskTrendsMap.get(key) || [];
27
+ dataPoints.push({
28
+ date: new Date(run.startTime),
29
+ mean: task.mean,
30
+ });
31
+ taskTrendsMap.set(key, dataPoints);
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ // Calculate trends for each task
38
+ const trendsData = [];
39
+ for (const [key, dataPoints] of taskTrendsMap.entries()) {
40
+ // Sort by date (oldest first)
41
+ dataPoints.sort((a, b) => a.date.getTime() - b.date.getTime());
42
+ const [_filePath, suiteName, taskName] = key.split('::');
43
+ const statistics = (0, exports.calculateStatistics)(dataPoints);
44
+ const trend = (0, exports.calculateTrend)(dataPoints);
45
+ const percentChange = (0, exports.calculatePercentChange)(dataPoints);
46
+ trendsData.push({
47
+ confidence: 95, // Fixed confidence level for now
48
+ dataPoints,
49
+ percentChange,
50
+ runs: dataPoints.length,
51
+ statistics,
52
+ task: `${suiteName} › ${taskName}`,
53
+ trend,
54
+ });
55
+ }
56
+ // Sort by absolute percent change (most significant first)
57
+ trendsData.sort((a, b) => Math.abs(b.percentChange) - Math.abs(a.percentChange));
58
+ // Calculate summary statistics
59
+ const summary = {
60
+ degradingTasks: trendsData.filter((t) => t.trend === 'degrading').length,
61
+ improvingTasks: trendsData.filter((t) => t.trend === 'improving').length,
62
+ stableTasks: trendsData.filter((t) => t.trend === 'stable').length,
63
+ totalTasks: trendsData.length,
64
+ };
65
+ // Get timespan
66
+ const firstRun = runs[runs.length - 1];
67
+ const lastRun = runs[0];
68
+ const timespan = {
69
+ end: lastRun ? new Date(lastRun.startTime) : new Date(),
70
+ start: firstRun ? new Date(firstRun.startTime) : new Date(),
71
+ };
72
+ // Detect regressions (require minimum 5 runs for confidence)
73
+ const minRunsForRegression = 5;
74
+ const regressions = trendsData.filter((t) => (0, exports.detectRegression)(t, 5, minRunsForRegression));
75
+ // Also track low-confidence potential regressions (2-4 runs showing degradation)
76
+ const lowConfidenceRegressions = trendsData.filter((t) => t.trend === 'degrading' &&
77
+ t.percentChange >= 5 &&
78
+ t.runs < minRunsForRegression &&
79
+ t.runs >= 2);
80
+ return {
81
+ lowConfidenceRegressions,
82
+ regressions,
83
+ runs: runs.length,
84
+ summary,
85
+ timespan,
86
+ trends: trendsData,
87
+ };
88
+ }
89
+ }
90
+ exports.TrendAnalysisService = TrendAnalysisService;
91
+ /**
92
+ * Calculate percent change from first to last data point
93
+ */
94
+ const calculatePercentChange = (dataPoints) => {
95
+ if (dataPoints.length === 0 || dataPoints.length === 1) {
96
+ return 0;
97
+ }
98
+ const firstPoint = dataPoints[0];
99
+ const lastPoint = dataPoints[dataPoints.length - 1];
100
+ if (!firstPoint || !lastPoint) {
101
+ return 0;
102
+ }
103
+ const first = firstPoint.mean;
104
+ const last = lastPoint.mean;
105
+ if (first === 0) {
106
+ return 0; // Avoid division by zero
107
+ }
108
+ return ((last - first) / first) * 100;
109
+ };
110
+ exports.calculatePercentChange = calculatePercentChange;
111
+ /**
112
+ * Calculate statistical metrics from data points
113
+ */
114
+ const calculateStatistics = (dataPoints) => {
115
+ if (dataPoints.length === 0) {
116
+ throw new Error('Cannot calculate statistics for empty data points array');
117
+ }
118
+ const values = dataPoints.map((dp) => dp.mean);
119
+ const n = values.length;
120
+ // Calculate mean
121
+ const mean = values.reduce((sum, val) => sum + val, 0) / n;
122
+ // Calculate median
123
+ const sorted = [...values].sort((a, b) => a - b);
124
+ const median = n % 2 === 0
125
+ ? ((sorted[n / 2 - 1] ?? 0) + (sorted[n / 2] ?? 0)) / 2
126
+ : (sorted[Math.floor(n / 2)] ?? 0);
127
+ // Calculate variance and standard deviation
128
+ const variance = n === 1
129
+ ? 0
130
+ : values.reduce((sum, val) => sum + Math.pow(val - mean, 2), 0) / n;
131
+ const stdDeviation = Math.sqrt(variance);
132
+ return {
133
+ mean,
134
+ median,
135
+ stdDeviation,
136
+ variance,
137
+ };
138
+ };
139
+ exports.calculateStatistics = calculateStatistics;
140
+ /**
141
+ * Calculate trend direction from data points using linear regression
142
+ */
143
+ const calculateTrend = (dataPoints) => {
144
+ if (dataPoints.length === 0) {
145
+ return 'stable';
146
+ }
147
+ if (dataPoints.length === 1) {
148
+ return 'stable';
149
+ }
150
+ // Simple linear regression to determine slope
151
+ const n = dataPoints.length;
152
+ const x = Array.from({ length: n }, (_, i) => i); // Time indices
153
+ const y = dataPoints.map((dp) => dp.mean);
154
+ const sumX = x.reduce((a, b) => a + b, 0);
155
+ const sumY = y.reduce((a, b) => a + b, 0);
156
+ const sumXY = x.reduce((sum, xi, i) => sum + xi * (y[i] ?? 0), 0);
157
+ const sumXX = x.reduce((sum, xi) => sum + xi * xi, 0);
158
+ // Calculate slope: (n*sumXY - sumX*sumY) / (n*sumXX - sumX*sumX)
159
+ const slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
160
+ // Determine significance threshold (5% of mean)
161
+ const meanValue = sumY / n;
162
+ const significanceThreshold = Math.abs(meanValue * 0.05);
163
+ // Classify trend based on slope
164
+ if (Math.abs(slope) < significanceThreshold / n) {
165
+ return 'stable';
166
+ }
167
+ else if (slope < 0) {
168
+ // Negative slope = values decreasing = performance improving
169
+ return 'improving';
170
+ }
171
+ else {
172
+ // Positive slope = values increasing = performance degrading
173
+ return 'degrading';
174
+ }
175
+ };
176
+ exports.calculateTrend = calculateTrend;
177
+ /**
178
+ * Detect if a trend represents a performance regression
179
+ */
180
+ const detectRegression = (trendData, threshold, minRuns) => {
181
+ // Regression is a degrading trend with percent change exceeding threshold
182
+ return (trendData.trend === 'degrading' &&
183
+ trendData.percentChange >= threshold &&
184
+ trendData.runs >= minRuns);
185
+ };
186
+ exports.detectRegression = detectRegression;
187
+ //# sourceMappingURL=trend-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trend-analysis.js","sourceRoot":"","sources":["../../../src/services/history/trend-analysis.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAUH;;GAEG;AACH,MAAa,oBAAoB;IAC/B;;OAEG;IACH,aAAa,CAAC,IAAoB;QAChC,6CAA6C;QAC7C,MAAM,aAAa,GAAG,IAAI,GAAG,EAA4B,CAAC;QAE1D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;4BAChB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;4BAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;4BAChD,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;gCAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;6BAChB,CAAC,CAAC;4BACH,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;wBACrC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,8BAA8B;YAC9B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAE/D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEzD,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,UAAU,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,IAAA,sBAAc,EAAC,UAAU,CAAC,CAAC;YACzC,MAAM,aAAa,GAAG,IAAA,8BAAsB,EAAC,UAAU,CAAC,CAAC;YAEzD,UAAU,CAAC,IAAI,CAAC;gBACd,UAAU,EAAE,EAAE,EAAE,iCAAiC;gBACjD,UAAU;gBACV,aAAa;gBACb,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,UAAU;gBACV,IAAI,EAAE,GAAG,SAAS,MAAM,QAAQ,EAAE;gBAClC,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,2DAA2D;QAC3D,UAAU,CAAC,IAAI,CACb,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAChE,CAAC;QAEF,+BAA+B;QAC/B,MAAM,OAAO,GAAG;YACd,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,MAAM;YACxE,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,MAAM;YACxE,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,MAAM;YAClE,UAAU,EAAE,UAAU,CAAC,MAAM;SAC9B,CAAC;QAEF,eAAe;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG;YACf,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YACvD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;SAC5D,CAAC;QAEF,6DAA6D;QAC7D,MAAM,oBAAoB,GAAG,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1C,IAAA,wBAAgB,EAAC,CAAC,EAAE,CAAC,EAAE,oBAAoB,CAAC,CAC7C,CAAC;QAEF,iFAAiF;QACjF,MAAM,wBAAwB,GAAG,UAAU,CAAC,MAAM,CAChD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,KAAK,KAAK,WAAW;YACvB,CAAC,CAAC,aAAa,IAAI,CAAC;YACpB,CAAC,CAAC,IAAI,GAAG,oBAAoB;YAC7B,CAAC,CAAC,IAAI,IAAI,CAAC,CACd,CAAC;QAEF,OAAO;YACL,wBAAwB;YACxB,WAAW;YACX,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,OAAO;YACP,QAAQ;YACR,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;CACF;AA/FD,oDA+FC;AAED;;GAEG;AACI,MAAM,sBAAsB,GAAG,CACpC,UAA4B,EACpB,EAAE;IACV,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEpD,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;IAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAE5B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,CAAC,CAAC,CAAC,yBAAyB;IACrC,CAAC;IAED,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;AACxC,CAAC,CAAC;AAtBW,QAAA,sBAAsB,0BAsBjC;AAEF;;GAEG;AACI,MAAM,mBAAmB,GAAG,CACjC,UAA4B,EACX,EAAE;IACnB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAExB,iBAAiB;IACjB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAE3D,mBAAmB;IACnB,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,MAAM,GACV,CAAC,GAAG,CAAC,KAAK,CAAC;QACT,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACvD,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvC,4CAA4C;IAC5C,MAAM,QAAQ,GACZ,CAAC,KAAK,CAAC;QACL,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO;QACL,IAAI;QACJ,MAAM;QACN,YAAY;QACZ,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAjCW,QAAA,mBAAmB,uBAiC9B;AAEF;;GAEG;AACI,MAAM,cAAc,GAAG,CAC5B,UAA4B,EACU,EAAE;IACxC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8CAA8C;IAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;IAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;IACjE,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAEtD,iEAAiE;IACjE,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAEpE,gDAAgD;IAChD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC;IAC3B,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAEzD,gCAAgC;IAChC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,qBAAqB,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACrB,6DAA6D;QAC7D,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,6DAA6D;QAC7D,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAtCW,QAAA,cAAc,kBAsCzB;AAEF;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAC9B,SAAoB,EACpB,SAAiB,EACjB,OAAe,EACN,EAAE;IACX,0EAA0E;IAC1E,OAAO,CACL,SAAS,CAAC,KAAK,KAAK,WAAW;QAC/B,SAAS,CAAC,aAAa,IAAI,SAAS;QACpC,SAAS,CAAC,IAAI,IAAI,OAAO,CAC1B,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,gBAAgB,oBAW3B"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Trend Analysis Service
3
+ *
4
+ * Statistical analysis of benchmark performance trends over time, including
5
+ * regression detection and trend classification.
6
+ */
7
+ import type { BenchmarkRun } from "../../types/index.cjs";
8
+ import type { TrendData, TrendDataPoint, TrendsResult, TrendStatistics } from "./models.cjs";
9
+ /**
10
+ * Service for analyzing performance trends
11
+ */
12
+ export declare class TrendAnalysisService {
13
+ /**
14
+ * Analyze trends across multiple benchmark runs
15
+ */
16
+ analyzeTrends(runs: BenchmarkRun[]): TrendsResult;
17
+ }
18
+ /**
19
+ * Calculate percent change from first to last data point
20
+ */
21
+ export declare const calculatePercentChange: (dataPoints: TrendDataPoint[]) => number;
22
+ /**
23
+ * Calculate statistical metrics from data points
24
+ */
25
+ export declare const calculateStatistics: (dataPoints: TrendDataPoint[]) => TrendStatistics;
26
+ /**
27
+ * Calculate trend direction from data points using linear regression
28
+ */
29
+ export declare const calculateTrend: (dataPoints: TrendDataPoint[]) => "degrading" | "improving" | "stable";
30
+ /**
31
+ * Detect if a trend represents a performance regression
32
+ */
33
+ export declare const detectRegression: (trendData: TrendData, threshold: number, minRuns: number) => boolean;
34
+ //# sourceMappingURL=trend-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trend-analysis.d.ts","sourceRoot":"","sources":["../../../src/services/history/trend-analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA6B;AACzD,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,eAAe,EAChB,qBAAoB;AAErB;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,YAAY;CA2FlD;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,YAAY,cAAc,EAAE,KAC3B,MAoBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,cAAc,EAAE,KAC3B,eA+BF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,cAAc,EAAE,KAC3B,WAAW,GAAG,WAAW,GAAG,QAoC9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,SAAS,EACpB,WAAW,MAAM,EACjB,SAAS,MAAM,KACd,OAOF,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Trend Analysis Service
3
+ *
4
+ * Statistical analysis of benchmark performance trends over time, including
5
+ * regression detection and trend classification.
6
+ */
7
+ import type { BenchmarkRun } from "../../types/index.js";
8
+ import type { TrendData, TrendDataPoint, TrendsResult, TrendStatistics } from "./models.js";
9
+ /**
10
+ * Service for analyzing performance trends
11
+ */
12
+ export declare class TrendAnalysisService {
13
+ /**
14
+ * Analyze trends across multiple benchmark runs
15
+ */
16
+ analyzeTrends(runs: BenchmarkRun[]): TrendsResult;
17
+ }
18
+ /**
19
+ * Calculate percent change from first to last data point
20
+ */
21
+ export declare const calculatePercentChange: (dataPoints: TrendDataPoint[]) => number;
22
+ /**
23
+ * Calculate statistical metrics from data points
24
+ */
25
+ export declare const calculateStatistics: (dataPoints: TrendDataPoint[]) => TrendStatistics;
26
+ /**
27
+ * Calculate trend direction from data points using linear regression
28
+ */
29
+ export declare const calculateTrend: (dataPoints: TrendDataPoint[]) => "degrading" | "improving" | "stable";
30
+ /**
31
+ * Detect if a trend represents a performance regression
32
+ */
33
+ export declare const detectRegression: (trendData: TrendData, threshold: number, minRuns: number) => boolean;
34
+ //# sourceMappingURL=trend-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trend-analysis.d.ts","sourceRoot":"","sources":["../../../src/services/history/trend-analysis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,6BAA6B;AACzD,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,eAAe,EAChB,oBAAoB;AAErB;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,YAAY;CA2FlD;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,YAAY,cAAc,EAAE,KAC3B,MAoBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,cAAc,EAAE,KAC3B,eA+BF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,cAAc,EAAE,KAC3B,WAAW,GAAG,WAAW,GAAG,QAoC9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,SAAS,EACpB,WAAW,MAAM,EACjB,SAAS,MAAM,KACd,OAOF,CAAC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Trend Analysis Service
3
+ *
4
+ * Statistical analysis of benchmark performance trends over time, including
5
+ * regression detection and trend classification.
6
+ */
7
+ /**
8
+ * Service for analyzing performance trends
9
+ */
10
+ export class TrendAnalysisService {
11
+ /**
12
+ * Analyze trends across multiple benchmark runs
13
+ */
14
+ analyzeTrends(runs) {
15
+ // Build trend data for each task across runs
16
+ const taskTrendsMap = new Map();
17
+ for (const run of runs) {
18
+ for (const file of run.files) {
19
+ for (const suite of file.suites) {
20
+ for (const task of suite.tasks) {
21
+ if (!task.error) {
22
+ const key = `${file.filePath}::${suite.name}::${task.name}`;
23
+ const dataPoints = taskTrendsMap.get(key) || [];
24
+ dataPoints.push({
25
+ date: new Date(run.startTime),
26
+ mean: task.mean,
27
+ });
28
+ taskTrendsMap.set(key, dataPoints);
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ // Calculate trends for each task
35
+ const trendsData = [];
36
+ for (const [key, dataPoints] of taskTrendsMap.entries()) {
37
+ // Sort by date (oldest first)
38
+ dataPoints.sort((a, b) => a.date.getTime() - b.date.getTime());
39
+ const [_filePath, suiteName, taskName] = key.split('::');
40
+ const statistics = calculateStatistics(dataPoints);
41
+ const trend = calculateTrend(dataPoints);
42
+ const percentChange = calculatePercentChange(dataPoints);
43
+ trendsData.push({
44
+ confidence: 95, // Fixed confidence level for now
45
+ dataPoints,
46
+ percentChange,
47
+ runs: dataPoints.length,
48
+ statistics,
49
+ task: `${suiteName} › ${taskName}`,
50
+ trend,
51
+ });
52
+ }
53
+ // Sort by absolute percent change (most significant first)
54
+ trendsData.sort((a, b) => Math.abs(b.percentChange) - Math.abs(a.percentChange));
55
+ // Calculate summary statistics
56
+ const summary = {
57
+ degradingTasks: trendsData.filter((t) => t.trend === 'degrading').length,
58
+ improvingTasks: trendsData.filter((t) => t.trend === 'improving').length,
59
+ stableTasks: trendsData.filter((t) => t.trend === 'stable').length,
60
+ totalTasks: trendsData.length,
61
+ };
62
+ // Get timespan
63
+ const firstRun = runs[runs.length - 1];
64
+ const lastRun = runs[0];
65
+ const timespan = {
66
+ end: lastRun ? new Date(lastRun.startTime) : new Date(),
67
+ start: firstRun ? new Date(firstRun.startTime) : new Date(),
68
+ };
69
+ // Detect regressions (require minimum 5 runs for confidence)
70
+ const minRunsForRegression = 5;
71
+ const regressions = trendsData.filter((t) => detectRegression(t, 5, minRunsForRegression));
72
+ // Also track low-confidence potential regressions (2-4 runs showing degradation)
73
+ const lowConfidenceRegressions = trendsData.filter((t) => t.trend === 'degrading' &&
74
+ t.percentChange >= 5 &&
75
+ t.runs < minRunsForRegression &&
76
+ t.runs >= 2);
77
+ return {
78
+ lowConfidenceRegressions,
79
+ regressions,
80
+ runs: runs.length,
81
+ summary,
82
+ timespan,
83
+ trends: trendsData,
84
+ };
85
+ }
86
+ }
87
+ /**
88
+ * Calculate percent change from first to last data point
89
+ */
90
+ export const calculatePercentChange = (dataPoints) => {
91
+ if (dataPoints.length === 0 || dataPoints.length === 1) {
92
+ return 0;
93
+ }
94
+ const firstPoint = dataPoints[0];
95
+ const lastPoint = dataPoints[dataPoints.length - 1];
96
+ if (!firstPoint || !lastPoint) {
97
+ return 0;
98
+ }
99
+ const first = firstPoint.mean;
100
+ const last = lastPoint.mean;
101
+ if (first === 0) {
102
+ return 0; // Avoid division by zero
103
+ }
104
+ return ((last - first) / first) * 100;
105
+ };
106
+ /**
107
+ * Calculate statistical metrics from data points
108
+ */
109
+ export const calculateStatistics = (dataPoints) => {
110
+ if (dataPoints.length === 0) {
111
+ throw new Error('Cannot calculate statistics for empty data points array');
112
+ }
113
+ const values = dataPoints.map((dp) => dp.mean);
114
+ const n = values.length;
115
+ // Calculate mean
116
+ const mean = values.reduce((sum, val) => sum + val, 0) / n;
117
+ // Calculate median
118
+ const sorted = [...values].sort((a, b) => a - b);
119
+ const median = n % 2 === 0
120
+ ? ((sorted[n / 2 - 1] ?? 0) + (sorted[n / 2] ?? 0)) / 2
121
+ : (sorted[Math.floor(n / 2)] ?? 0);
122
+ // Calculate variance and standard deviation
123
+ const variance = n === 1
124
+ ? 0
125
+ : values.reduce((sum, val) => sum + Math.pow(val - mean, 2), 0) / n;
126
+ const stdDeviation = Math.sqrt(variance);
127
+ return {
128
+ mean,
129
+ median,
130
+ stdDeviation,
131
+ variance,
132
+ };
133
+ };
134
+ /**
135
+ * Calculate trend direction from data points using linear regression
136
+ */
137
+ export const calculateTrend = (dataPoints) => {
138
+ if (dataPoints.length === 0) {
139
+ return 'stable';
140
+ }
141
+ if (dataPoints.length === 1) {
142
+ return 'stable';
143
+ }
144
+ // Simple linear regression to determine slope
145
+ const n = dataPoints.length;
146
+ const x = Array.from({ length: n }, (_, i) => i); // Time indices
147
+ const y = dataPoints.map((dp) => dp.mean);
148
+ const sumX = x.reduce((a, b) => a + b, 0);
149
+ const sumY = y.reduce((a, b) => a + b, 0);
150
+ const sumXY = x.reduce((sum, xi, i) => sum + xi * (y[i] ?? 0), 0);
151
+ const sumXX = x.reduce((sum, xi) => sum + xi * xi, 0);
152
+ // Calculate slope: (n*sumXY - sumX*sumY) / (n*sumXX - sumX*sumX)
153
+ const slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
154
+ // Determine significance threshold (5% of mean)
155
+ const meanValue = sumY / n;
156
+ const significanceThreshold = Math.abs(meanValue * 0.05);
157
+ // Classify trend based on slope
158
+ if (Math.abs(slope) < significanceThreshold / n) {
159
+ return 'stable';
160
+ }
161
+ else if (slope < 0) {
162
+ // Negative slope = values decreasing = performance improving
163
+ return 'improving';
164
+ }
165
+ else {
166
+ // Positive slope = values increasing = performance degrading
167
+ return 'degrading';
168
+ }
169
+ };
170
+ /**
171
+ * Detect if a trend represents a performance regression
172
+ */
173
+ export const detectRegression = (trendData, threshold, minRuns) => {
174
+ // Regression is a degrading trend with percent change exceeding threshold
175
+ return (trendData.trend === 'degrading' &&
176
+ trendData.percentChange >= threshold &&
177
+ trendData.runs >= minRuns);
178
+ };
179
+ //# sourceMappingURL=trend-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trend-analysis.js","sourceRoot":"","sources":["../../../src/services/history/trend-analysis.ts"],"names":[],"mappings":"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"}
@@ -474,4 +474,4 @@ class FileHistoryStorage {
474
474
  }
475
475
  }
476
476
  exports.FileHistoryStorage = FileHistoryStorage;
477
- //# sourceMappingURL=history.js.map
477
+ //# sourceMappingURL=history-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-storage.js","sourceRoot":"","sources":["../../src/services/history-storage.ts"],"names":[],"mappings":"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"}
@@ -96,4 +96,4 @@ export declare class FileHistoryStorage implements HistoryStorage {
96
96
  */
97
97
  private updateIndex;
98
98
  }
99
- //# sourceMappingURL=history.d.ts.map
99
+ //# sourceMappingURL=history-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-storage.d.ts","sourceRoot":"","sources":["../../src/services/history-storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EAChB,2BAA0B;AAkC3B;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGlC,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KAChB;WAUM,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY;IAoBpE;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IA+E9D;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA4B3E;;OAEG;IACG,QAAQ,IAAI,OAAO,CACvB,KAAK,CAAC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CACnD;IAgBD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;QAC7B,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAqBF;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IASvC;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAwCvD;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA4E7D;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC/C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,WAAW;IA2CnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;YACW,SAAS;IA8CvB;;OAEG;YACW,eAAe;IAW7B;;OAEG;YACW,SAAS;IAqBvB;;OAEG;YACW,WAAW;CA6B1B"}
@@ -96,4 +96,4 @@ export declare class FileHistoryStorage implements HistoryStorage {
96
96
  */
97
97
  private updateIndex;
98
98
  }
99
- //# sourceMappingURL=history.d.ts.map
99
+ //# sourceMappingURL=history-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-storage.d.ts","sourceRoot":"","sources":["../../src/services/history-storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EAChB,0BAA0B;AAkC3B;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGlC,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KAChB;WAUM,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY;IAoBpE;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IA+E9D;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA4B3E;;OAEG;IACG,QAAQ,IAAI,OAAO,CACvB,KAAK,CAAC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CACnD;IAgBD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;QAC7B,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAqBF;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IASvC;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAwCvD;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA4E7D;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC/C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,WAAW;IA2CnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;YACW,SAAS;IA8CvB;;OAEG;YACW,eAAe;IAW7B;;OAEG;YACW,SAAS;IAqBvB;;OAEG;YACW,WAAW;CA6B1B"}
@@ -470,4 +470,4 @@ export class FileHistoryStorage {
470
470
  await this.saveIndex();
471
471
  }
472
472
  }
473
- //# sourceMappingURL=history.js.map
473
+ //# sourceMappingURL=history-storage.js.map