modestbench 0.0.1

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 (275) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE.md +55 -0
  3. package/README.md +699 -0
  4. package/dist/bootstrap.cjs +37 -0
  5. package/dist/bootstrap.cjs.map +1 -0
  6. package/dist/bootstrap.d.cts +17 -0
  7. package/dist/bootstrap.d.cts.map +1 -0
  8. package/dist/bootstrap.d.ts +17 -0
  9. package/dist/bootstrap.d.ts.map +1 -0
  10. package/dist/bootstrap.js +33 -0
  11. package/dist/bootstrap.js.map +1 -0
  12. package/dist/cli/commands/history.cjs +459 -0
  13. package/dist/cli/commands/history.cjs.map +1 -0
  14. package/dist/cli/commands/history.d.cts +34 -0
  15. package/dist/cli/commands/history.d.cts.map +1 -0
  16. package/dist/cli/commands/history.d.ts +34 -0
  17. package/dist/cli/commands/history.d.ts.map +1 -0
  18. package/dist/cli/commands/history.js +422 -0
  19. package/dist/cli/commands/history.js.map +1 -0
  20. package/dist/cli/commands/init.cjs +566 -0
  21. package/dist/cli/commands/init.cjs.map +1 -0
  22. package/dist/cli/commands/init.d.cts +26 -0
  23. package/dist/cli/commands/init.d.cts.map +1 -0
  24. package/dist/cli/commands/init.d.ts +26 -0
  25. package/dist/cli/commands/init.d.ts.map +1 -0
  26. package/dist/cli/commands/init.js +562 -0
  27. package/dist/cli/commands/init.js.map +1 -0
  28. package/dist/cli/commands/run.cjs +285 -0
  29. package/dist/cli/commands/run.cjs.map +1 -0
  30. package/dist/cli/commands/run.d.cts +37 -0
  31. package/dist/cli/commands/run.d.cts.map +1 -0
  32. package/dist/cli/commands/run.d.ts +37 -0
  33. package/dist/cli/commands/run.d.ts.map +1 -0
  34. package/dist/cli/commands/run.js +248 -0
  35. package/dist/cli/commands/run.js.map +1 -0
  36. package/dist/cli/index.cjs +523 -0
  37. package/dist/cli/index.cjs.map +1 -0
  38. package/dist/cli/index.d.cts +58 -0
  39. package/dist/cli/index.d.cts.map +1 -0
  40. package/dist/cli/index.d.ts +58 -0
  41. package/dist/cli/index.d.ts.map +1 -0
  42. package/dist/cli/index.js +515 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/config/manager.cjs +370 -0
  45. package/dist/config/manager.cjs.map +1 -0
  46. package/dist/config/manager.d.cts +46 -0
  47. package/dist/config/manager.d.cts.map +1 -0
  48. package/dist/config/manager.d.ts +46 -0
  49. package/dist/config/manager.d.ts.map +1 -0
  50. package/dist/config/manager.js +333 -0
  51. package/dist/config/manager.js.map +1 -0
  52. package/dist/config/schema.cjs +182 -0
  53. package/dist/config/schema.cjs.map +1 -0
  54. package/dist/config/schema.d.cts +51 -0
  55. package/dist/config/schema.d.cts.map +1 -0
  56. package/dist/config/schema.d.ts +51 -0
  57. package/dist/config/schema.d.ts.map +1 -0
  58. package/dist/config/schema.js +145 -0
  59. package/dist/config/schema.js.map +1 -0
  60. package/dist/constants.cjs +22 -0
  61. package/dist/constants.cjs.map +1 -0
  62. package/dist/constants.d.cts +10 -0
  63. package/dist/constants.d.cts.map +1 -0
  64. package/dist/constants.d.ts +10 -0
  65. package/dist/constants.d.ts.map +1 -0
  66. package/dist/constants.js +19 -0
  67. package/dist/constants.js.map +1 -0
  68. package/dist/core/benchmark-schema.cjs +135 -0
  69. package/dist/core/benchmark-schema.cjs.map +1 -0
  70. package/dist/core/benchmark-schema.d.cts +139 -0
  71. package/dist/core/benchmark-schema.d.cts.map +1 -0
  72. package/dist/core/benchmark-schema.d.ts +139 -0
  73. package/dist/core/benchmark-schema.d.ts.map +1 -0
  74. package/dist/core/benchmark-schema.js +132 -0
  75. package/dist/core/benchmark-schema.js.map +1 -0
  76. package/dist/core/engine.cjs +669 -0
  77. package/dist/core/engine.cjs.map +1 -0
  78. package/dist/core/engine.d.cts +128 -0
  79. package/dist/core/engine.d.cts.map +1 -0
  80. package/dist/core/engine.d.ts +128 -0
  81. package/dist/core/engine.d.ts.map +1 -0
  82. package/dist/core/engine.js +632 -0
  83. package/dist/core/engine.js.map +1 -0
  84. package/dist/core/engines/accurate-engine.cjs +292 -0
  85. package/dist/core/engines/accurate-engine.cjs.map +1 -0
  86. package/dist/core/engines/accurate-engine.d.cts +63 -0
  87. package/dist/core/engines/accurate-engine.d.cts.map +1 -0
  88. package/dist/core/engines/accurate-engine.d.ts +63 -0
  89. package/dist/core/engines/accurate-engine.d.ts.map +1 -0
  90. package/dist/core/engines/accurate-engine.js +288 -0
  91. package/dist/core/engines/accurate-engine.js.map +1 -0
  92. package/dist/core/engines/index.cjs +21 -0
  93. package/dist/core/engines/index.cjs.map +1 -0
  94. package/dist/core/engines/index.d.cts +16 -0
  95. package/dist/core/engines/index.d.cts.map +1 -0
  96. package/dist/core/engines/index.d.ts +16 -0
  97. package/dist/core/engines/index.d.ts.map +1 -0
  98. package/dist/core/engines/index.js +16 -0
  99. package/dist/core/engines/index.js.map +1 -0
  100. package/dist/core/engines/tinybench-engine.cjs +286 -0
  101. package/dist/core/engines/tinybench-engine.cjs.map +1 -0
  102. package/dist/core/engines/tinybench-engine.d.cts +18 -0
  103. package/dist/core/engines/tinybench-engine.d.cts.map +1 -0
  104. package/dist/core/engines/tinybench-engine.d.ts +18 -0
  105. package/dist/core/engines/tinybench-engine.d.ts.map +1 -0
  106. package/dist/core/engines/tinybench-engine.js +282 -0
  107. package/dist/core/engines/tinybench-engine.js.map +1 -0
  108. package/dist/core/error-manager.cjs +303 -0
  109. package/dist/core/error-manager.cjs.map +1 -0
  110. package/dist/core/error-manager.d.cts +77 -0
  111. package/dist/core/error-manager.d.cts.map +1 -0
  112. package/dist/core/error-manager.d.ts +77 -0
  113. package/dist/core/error-manager.d.ts.map +1 -0
  114. package/dist/core/error-manager.js +299 -0
  115. package/dist/core/error-manager.js.map +1 -0
  116. package/dist/core/loader.cjs +287 -0
  117. package/dist/core/loader.cjs.map +1 -0
  118. package/dist/core/loader.d.cts +55 -0
  119. package/dist/core/loader.d.cts.map +1 -0
  120. package/dist/core/loader.d.ts +55 -0
  121. package/dist/core/loader.d.ts.map +1 -0
  122. package/dist/core/loader.js +250 -0
  123. package/dist/core/loader.js.map +1 -0
  124. package/dist/core/stats-utils.cjs +99 -0
  125. package/dist/core/stats-utils.cjs.map +1 -0
  126. package/dist/core/stats-utils.d.cts +50 -0
  127. package/dist/core/stats-utils.d.cts.map +1 -0
  128. package/dist/core/stats-utils.d.ts +50 -0
  129. package/dist/core/stats-utils.d.ts.map +1 -0
  130. package/dist/core/stats-utils.js +94 -0
  131. package/dist/core/stats-utils.js.map +1 -0
  132. package/dist/index.cjs +64 -0
  133. package/dist/index.cjs.map +1 -0
  134. package/dist/index.d.cts +22 -0
  135. package/dist/index.d.cts.map +1 -0
  136. package/dist/index.d.ts +22 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +30 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/progress/manager.cjs +325 -0
  141. package/dist/progress/manager.cjs.map +1 -0
  142. package/dist/progress/manager.d.cts +125 -0
  143. package/dist/progress/manager.d.cts.map +1 -0
  144. package/dist/progress/manager.d.ts +125 -0
  145. package/dist/progress/manager.d.ts.map +1 -0
  146. package/dist/progress/manager.js +321 -0
  147. package/dist/progress/manager.js.map +1 -0
  148. package/dist/reporters/csv.cjs +250 -0
  149. package/dist/reporters/csv.cjs.map +1 -0
  150. package/dist/reporters/csv.d.cts +92 -0
  151. package/dist/reporters/csv.d.cts.map +1 -0
  152. package/dist/reporters/csv.d.ts +92 -0
  153. package/dist/reporters/csv.d.ts.map +1 -0
  154. package/dist/reporters/csv.js +246 -0
  155. package/dist/reporters/csv.js.map +1 -0
  156. package/dist/reporters/human.cjs +516 -0
  157. package/dist/reporters/human.cjs.map +1 -0
  158. package/dist/reporters/human.d.cts +86 -0
  159. package/dist/reporters/human.d.cts.map +1 -0
  160. package/dist/reporters/human.d.ts +86 -0
  161. package/dist/reporters/human.d.ts.map +1 -0
  162. package/dist/reporters/human.js +509 -0
  163. package/dist/reporters/human.js.map +1 -0
  164. package/dist/reporters/index.cjs +17 -0
  165. package/dist/reporters/index.cjs.map +1 -0
  166. package/dist/reporters/index.d.cts +10 -0
  167. package/dist/reporters/index.d.cts.map +1 -0
  168. package/dist/reporters/index.d.ts +10 -0
  169. package/dist/reporters/index.d.ts.map +1 -0
  170. package/dist/reporters/index.js +10 -0
  171. package/dist/reporters/index.js.map +1 -0
  172. package/dist/reporters/json.cjs +215 -0
  173. package/dist/reporters/json.cjs.map +1 -0
  174. package/dist/reporters/json.d.cts +79 -0
  175. package/dist/reporters/json.d.cts.map +1 -0
  176. package/dist/reporters/json.d.ts +79 -0
  177. package/dist/reporters/json.d.ts.map +1 -0
  178. package/dist/reporters/json.js +211 -0
  179. package/dist/reporters/json.js.map +1 -0
  180. package/dist/reporters/registry.cjs +255 -0
  181. package/dist/reporters/registry.cjs.map +1 -0
  182. package/dist/reporters/registry.d.cts +155 -0
  183. package/dist/reporters/registry.d.cts.map +1 -0
  184. package/dist/reporters/registry.d.ts +155 -0
  185. package/dist/reporters/registry.d.ts.map +1 -0
  186. package/dist/reporters/registry.js +249 -0
  187. package/dist/reporters/registry.js.map +1 -0
  188. package/dist/reporters/simple.cjs +328 -0
  189. package/dist/reporters/simple.cjs.map +1 -0
  190. package/dist/reporters/simple.d.cts +51 -0
  191. package/dist/reporters/simple.d.cts.map +1 -0
  192. package/dist/reporters/simple.d.ts +51 -0
  193. package/dist/reporters/simple.d.ts.map +1 -0
  194. package/dist/reporters/simple.js +321 -0
  195. package/dist/reporters/simple.js.map +1 -0
  196. package/dist/schema/modestbench-config.schema.json +162 -0
  197. package/dist/storage/history.cjs +456 -0
  198. package/dist/storage/history.cjs.map +1 -0
  199. package/dist/storage/history.d.cts +99 -0
  200. package/dist/storage/history.d.cts.map +1 -0
  201. package/dist/storage/history.d.ts +99 -0
  202. package/dist/storage/history.d.ts.map +1 -0
  203. package/dist/storage/history.js +452 -0
  204. package/dist/storage/history.js.map +1 -0
  205. package/dist/types/cli.cjs +21 -0
  206. package/dist/types/cli.cjs.map +1 -0
  207. package/dist/types/cli.d.cts +296 -0
  208. package/dist/types/cli.d.cts.map +1 -0
  209. package/dist/types/cli.d.ts +296 -0
  210. package/dist/types/cli.d.ts.map +1 -0
  211. package/dist/types/cli.js +18 -0
  212. package/dist/types/cli.js.map +1 -0
  213. package/dist/types/core.cjs +14 -0
  214. package/dist/types/core.cjs.map +1 -0
  215. package/dist/types/core.d.cts +380 -0
  216. package/dist/types/core.d.cts.map +1 -0
  217. package/dist/types/core.d.ts +380 -0
  218. package/dist/types/core.d.ts.map +1 -0
  219. package/dist/types/core.js +13 -0
  220. package/dist/types/core.js.map +1 -0
  221. package/dist/types/index.cjs +27 -0
  222. package/dist/types/index.cjs.map +1 -0
  223. package/dist/types/index.d.cts +11 -0
  224. package/dist/types/index.d.cts.map +1 -0
  225. package/dist/types/index.d.ts +11 -0
  226. package/dist/types/index.d.ts.map +1 -0
  227. package/dist/types/index.js +11 -0
  228. package/dist/types/index.js.map +1 -0
  229. package/dist/types/interfaces.cjs +10 -0
  230. package/dist/types/interfaces.cjs.map +1 -0
  231. package/dist/types/interfaces.d.cts +381 -0
  232. package/dist/types/interfaces.d.cts.map +1 -0
  233. package/dist/types/interfaces.d.ts +381 -0
  234. package/dist/types/interfaces.d.ts.map +1 -0
  235. package/dist/types/interfaces.js +9 -0
  236. package/dist/types/interfaces.js.map +1 -0
  237. package/dist/types/utility.cjs +92 -0
  238. package/dist/types/utility.cjs.map +1 -0
  239. package/dist/types/utility.d.cts +330 -0
  240. package/dist/types/utility.d.cts.map +1 -0
  241. package/dist/types/utility.d.ts +330 -0
  242. package/dist/types/utility.d.ts.map +1 -0
  243. package/dist/types/utility.js +78 -0
  244. package/dist/types/utility.js.map +1 -0
  245. package/package.json +211 -0
  246. package/src/bootstrap.ts +35 -0
  247. package/src/cli/commands/history.ts +569 -0
  248. package/src/cli/commands/init.ts +658 -0
  249. package/src/cli/commands/run.ts +346 -0
  250. package/src/cli/index.ts +642 -0
  251. package/src/config/manager.ts +387 -0
  252. package/src/config/schema.ts +188 -0
  253. package/src/constants.ts +21 -0
  254. package/src/core/benchmark-schema.ts +185 -0
  255. package/src/core/engine.ts +888 -0
  256. package/src/core/engines/accurate-engine.ts +408 -0
  257. package/src/core/engines/index.ts +16 -0
  258. package/src/core/engines/tinybench-engine.ts +335 -0
  259. package/src/core/error-manager.ts +372 -0
  260. package/src/core/loader.ts +324 -0
  261. package/src/core/stats-utils.ts +135 -0
  262. package/src/index.ts +46 -0
  263. package/src/progress/manager.ts +415 -0
  264. package/src/reporters/csv.ts +368 -0
  265. package/src/reporters/human.ts +707 -0
  266. package/src/reporters/index.ts +10 -0
  267. package/src/reporters/json.ts +302 -0
  268. package/src/reporters/registry.ts +349 -0
  269. package/src/reporters/simple.ts +459 -0
  270. package/src/storage/history.ts +600 -0
  271. package/src/types/cli.ts +312 -0
  272. package/src/types/core.ts +414 -0
  273. package/src/types/index.ts +18 -0
  274. package/src/types/interfaces.ts +451 -0
  275. package/src/types/utility.ts +446 -0
package/dist/index.cjs ADDED
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Public API
4
+ *
5
+ * Main entry point for programmatic usage of ModestBench. This module exports
6
+ * all core classes, utilities, and types needed to use ModestBench as a
7
+ * library.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.FileHistoryStorage = exports.ModestBenchReporterRegistry = exports.CompositeReporter = exports.BaseReporter = exports.JsonReporter = exports.HumanReporter = exports.CsvReporter = exports.ModestBenchProgressManager = exports.removeOutliersIQR = exports.calculateStatistics = exports.BenchmarkFileLoader = exports.ModestBenchErrorManager = exports.TinybenchEngine = exports.AccurateEngine = exports.ModestBenchEngine = exports.ModestBenchConfigurationManager = exports.modestbench = void 0;
25
+ var bootstrap_js_1 = require("./bootstrap.cjs");
26
+ Object.defineProperty(exports, "modestbench", { enumerable: true, get: function () { return bootstrap_js_1.bootstrap; } });
27
+ // Configuration management
28
+ var manager_js_1 = require("./config/manager.cjs");
29
+ Object.defineProperty(exports, "ModestBenchConfigurationManager", { enumerable: true, get: function () { return manager_js_1.ModestBenchConfigurationManager; } });
30
+ // Core engine and loader
31
+ var engine_js_1 = require("./core/engine.cjs");
32
+ Object.defineProperty(exports, "ModestBenchEngine", { enumerable: true, get: function () { return engine_js_1.ModestBenchEngine; } });
33
+ var index_js_1 = require("./core/engines/index.cjs");
34
+ Object.defineProperty(exports, "AccurateEngine", { enumerable: true, get: function () { return index_js_1.AccurateEngine; } });
35
+ Object.defineProperty(exports, "TinybenchEngine", { enumerable: true, get: function () { return index_js_1.TinybenchEngine; } });
36
+ // Error handling
37
+ var error_manager_js_1 = require("./core/error-manager.cjs");
38
+ Object.defineProperty(exports, "ModestBenchErrorManager", { enumerable: true, get: function () { return error_manager_js_1.ModestBenchErrorManager; } });
39
+ var loader_js_1 = require("./core/loader.cjs");
40
+ Object.defineProperty(exports, "BenchmarkFileLoader", { enumerable: true, get: function () { return loader_js_1.BenchmarkFileLoader; } });
41
+ // Statistical utilities
42
+ var stats_utils_js_1 = require("./core/stats-utils.cjs");
43
+ Object.defineProperty(exports, "calculateStatistics", { enumerable: true, get: function () { return stats_utils_js_1.calculateStatistics; } });
44
+ Object.defineProperty(exports, "removeOutliersIQR", { enumerable: true, get: function () { return stats_utils_js_1.removeOutliersIQR; } });
45
+ // Progress tracking
46
+ var manager_js_2 = require("./progress/manager.cjs");
47
+ Object.defineProperty(exports, "ModestBenchProgressManager", { enumerable: true, get: function () { return manager_js_2.ModestBenchProgressManager; } });
48
+ // Reporters
49
+ var csv_js_1 = require("./reporters/csv.cjs");
50
+ Object.defineProperty(exports, "CsvReporter", { enumerable: true, get: function () { return csv_js_1.CsvReporter; } });
51
+ var human_js_1 = require("./reporters/human.cjs");
52
+ Object.defineProperty(exports, "HumanReporter", { enumerable: true, get: function () { return human_js_1.HumanReporter; } });
53
+ var json_js_1 = require("./reporters/json.cjs");
54
+ Object.defineProperty(exports, "JsonReporter", { enumerable: true, get: function () { return json_js_1.JsonReporter; } });
55
+ var registry_js_1 = require("./reporters/registry.cjs");
56
+ Object.defineProperty(exports, "BaseReporter", { enumerable: true, get: function () { return registry_js_1.BaseReporter; } });
57
+ Object.defineProperty(exports, "CompositeReporter", { enumerable: true, get: function () { return registry_js_1.CompositeReporter; } });
58
+ Object.defineProperty(exports, "ModestBenchReporterRegistry", { enumerable: true, get: function () { return registry_js_1.ModestBenchReporterRegistry; } });
59
+ // Storage
60
+ var history_js_1 = require("./storage/history.cjs");
61
+ Object.defineProperty(exports, "FileHistoryStorage", { enumerable: true, get: function () { return history_js_1.FileHistoryStorage; } });
62
+ // Export all types
63
+ __exportStar(require("./types/index.cjs"), exports);
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,gDAA0D;AAAjD,2GAAA,SAAS,OAAe;AACjC,2BAA2B;AAC3B,mDAAsE;AAA7D,6HAAA,+BAA+B,OAAA;AAExC,yBAAyB;AACzB,+CAAqD;AAA5C,8GAAA,iBAAiB,OAAA;AAC1B,qDAA0E;AAAjE,0GAAA,cAAc,OAAA;AAAE,2GAAA,eAAe,OAAA;AAExC,iBAAiB;AACjB,6DAAkE;AAAzD,2HAAA,uBAAuB,OAAA;AAEhC,+CAAuD;AAA9C,gHAAA,mBAAmB,OAAA;AAE5B,wBAAwB;AACxB,yDAI+B;AAH7B,qHAAA,mBAAmB,OAAA;AACnB,mHAAA,iBAAiB,OAAA;AAInB,oBAAoB;AACpB,qDAAmE;AAA1D,wHAAA,0BAA0B,OAAA;AACnC,YAAY;AACZ,8CAAiD;AAAxC,qGAAA,WAAW,OAAA;AACpB,kDAAqD;AAA5C,yGAAA,aAAa,OAAA;AACtB,gDAAmD;AAA1C,uGAAA,YAAY,OAAA;AAErB,wDAIiC;AAH/B,2GAAA,YAAY,OAAA;AACZ,gHAAA,iBAAiB,OAAA;AACjB,0HAAA,2BAA2B,OAAA;AAG7B,UAAU;AACV,oDAA0D;AAAjD,gHAAA,kBAAkB,OAAA;AAE3B,mBAAmB;AACnB,oDAAiC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ModestBench Public API
3
+ *
4
+ * Main entry point for programmatic usage of ModestBench. This module exports
5
+ * all core classes, utilities, and types needed to use ModestBench as a
6
+ * library.
7
+ */
8
+ export { bootstrap as modestbench } from "./bootstrap.cjs";
9
+ export { ModestBenchConfigurationManager } from "./config/manager.cjs";
10
+ export { ModestBenchEngine } from "./core/engine.cjs";
11
+ export { AccurateEngine, TinybenchEngine } from "./core/engines/index.cjs";
12
+ export { ModestBenchErrorManager } from "./core/error-manager.cjs";
13
+ export { BenchmarkFileLoader } from "./core/loader.cjs";
14
+ export { calculateStatistics, removeOutliersIQR, type SampleStatistics, } from "./core/stats-utils.cjs";
15
+ export { ModestBenchProgressManager } from "./progress/manager.cjs";
16
+ export { CsvReporter } from "./reporters/csv.cjs";
17
+ export { HumanReporter } from "./reporters/human.cjs";
18
+ export { JsonReporter } from "./reporters/json.cjs";
19
+ export { BaseReporter, CompositeReporter, ModestBenchReporterRegistry, } from "./reporters/registry.cjs";
20
+ export { FileHistoryStorage } from "./storage/history.cjs";
21
+ export * from "./types/index.cjs";
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,wBAAuB;AAE1D,OAAO,EAAE,+BAA+B,EAAE,6BAA4B;AAGtE,OAAO,EAAE,iBAAiB,EAAE,0BAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iCAAgC;AAG1E,OAAO,EAAE,uBAAuB,EAAE,iCAAgC;AAElE,OAAO,EAAE,mBAAmB,EAAE,0BAAyB;AAGvD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,+BAA8B;AAG/B,OAAO,EAAE,0BAA0B,EAAE,+BAA8B;AAEnE,OAAO,EAAE,WAAW,EAAE,4BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,8BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,6BAA4B;AAEnD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,iCAAgC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,8BAA6B;AAG1D,kCAAiC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ModestBench Public API
3
+ *
4
+ * Main entry point for programmatic usage of ModestBench. This module exports
5
+ * all core classes, utilities, and types needed to use ModestBench as a
6
+ * library.
7
+ */
8
+ export { bootstrap as modestbench } from "./bootstrap.js";
9
+ export { ModestBenchConfigurationManager } from "./config/manager.js";
10
+ export { ModestBenchEngine } from "./core/engine.js";
11
+ export { AccurateEngine, TinybenchEngine } from "./core/engines/index.js";
12
+ export { ModestBenchErrorManager } from "./core/error-manager.js";
13
+ export { BenchmarkFileLoader } from "./core/loader.js";
14
+ export { calculateStatistics, removeOutliersIQR, type SampleStatistics, } from "./core/stats-utils.js";
15
+ export { ModestBenchProgressManager } from "./progress/manager.js";
16
+ export { CsvReporter } from "./reporters/csv.js";
17
+ export { HumanReporter } from "./reporters/human.js";
18
+ export { JsonReporter } from "./reporters/json.js";
19
+ export { BaseReporter, CompositeReporter, ModestBenchReporterRegistry, } from "./reporters/registry.js";
20
+ export { FileHistoryStorage } from "./storage/history.js";
21
+ export * from "./types/index.js";
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,uBAAuB;AAE1D,OAAO,EAAE,+BAA+B,EAAE,4BAA4B;AAGtE,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gCAAgC;AAG1E,OAAO,EAAE,uBAAuB,EAAE,gCAAgC;AAElE,OAAO,EAAE,mBAAmB,EAAE,yBAAyB;AAGvD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,8BAA8B;AAG/B,OAAO,EAAE,0BAA0B,EAAE,8BAA8B;AAEnE,OAAO,EAAE,WAAW,EAAE,2BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,6BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,4BAA4B;AAEnD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,gCAAgC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,6BAA6B;AAG1D,iCAAiC"}
package/dist/index.js ADDED
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ModestBench Public API
3
+ *
4
+ * Main entry point for programmatic usage of ModestBench. This module exports
5
+ * all core classes, utilities, and types needed to use ModestBench as a
6
+ * library.
7
+ */
8
+ export { bootstrap as modestbench } from "./bootstrap.js";
9
+ // Configuration management
10
+ export { ModestBenchConfigurationManager } from "./config/manager.js";
11
+ // Core engine and loader
12
+ export { ModestBenchEngine } from "./core/engine.js";
13
+ export { AccurateEngine, TinybenchEngine } from "./core/engines/index.js";
14
+ // Error handling
15
+ export { ModestBenchErrorManager } from "./core/error-manager.js";
16
+ export { BenchmarkFileLoader } from "./core/loader.js";
17
+ // Statistical utilities
18
+ export { calculateStatistics, removeOutliersIQR, } from "./core/stats-utils.js";
19
+ // Progress tracking
20
+ export { ModestBenchProgressManager } from "./progress/manager.js";
21
+ // Reporters
22
+ export { CsvReporter } from "./reporters/csv.js";
23
+ export { HumanReporter } from "./reporters/human.js";
24
+ export { JsonReporter } from "./reporters/json.js";
25
+ export { BaseReporter, CompositeReporter, ModestBenchReporterRegistry, } from "./reporters/registry.js";
26
+ // Storage
27
+ export { FileHistoryStorage } from "./storage/history.js";
28
+ // Export all types
29
+ export * from "./types/index.js";
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,uBAAuB;AAC1D,2BAA2B;AAC3B,OAAO,EAAE,+BAA+B,EAAE,4BAA4B;AAEtE,yBAAyB;AACzB,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gCAAgC;AAE1E,iBAAiB;AACjB,OAAO,EAAE,uBAAuB,EAAE,gCAAgC;AAElE,OAAO,EAAE,mBAAmB,EAAE,yBAAyB;AAEvD,wBAAwB;AACxB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAElB,8BAA8B;AAE/B,oBAAoB;AACpB,OAAO,EAAE,0BAA0B,EAAE,8BAA8B;AACnE,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,2BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,6BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,4BAA4B;AAEnD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,gCAAgC;AAEjC,UAAU;AACV,OAAO,EAAE,kBAAkB,EAAE,6BAA6B;AAE1D,mBAAmB;AACnB,iCAAiC"}
@@ -0,0 +1,325 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Progress Manager
4
+ *
5
+ * Tracks execution progress, estimates completion times, and manages progress
6
+ * callbacks for real-time updates during benchmark runs.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ModestBenchProgressManager = void 0;
10
+ /**
11
+ * Default progress manager implementation
12
+ */
13
+ class ModestBenchProgressManager {
14
+ callbacks = [];
15
+ lastUpdate = 0;
16
+ maxRecentTimings = 10;
17
+ metrics = null;
18
+ state;
19
+ updateThrottleMs = 100; // Limit updates to avoid spam
20
+ constructor() {
21
+ this.state = this.createInitialState();
22
+ }
23
+ /**
24
+ * Clean up progress tracking resources
25
+ */
26
+ cleanup() {
27
+ this.callbacks = [];
28
+ this.metrics = null;
29
+ this.state = this.createInitialState();
30
+ }
31
+ /**
32
+ * Estimate completion time
33
+ */
34
+ estimateCompletion() {
35
+ if (!this.metrics ||
36
+ this.state.totalTasks === 0 ||
37
+ this.state.tasksCompleted === 0) {
38
+ return null;
39
+ }
40
+ const remainingTasks = this.state.totalTasks - this.state.tasksCompleted;
41
+ if (remainingTasks <= 0) {
42
+ return new Date(); // Already complete
43
+ }
44
+ // Calculate average throughput from recent timings
45
+ const throughput = this.calculateThroughput();
46
+ if (throughput <= 0) {
47
+ return null; // Can't estimate with no throughput data
48
+ }
49
+ const estimatedRemainingMs = (remainingTasks / throughput) * 1000;
50
+ return new Date(Date.now() + estimatedRemainingMs);
51
+ }
52
+ /**
53
+ * Force an immediate progress update (bypassing throttling)
54
+ */
55
+ forceUpdate() {
56
+ const oldThrottle = this.lastUpdate;
57
+ this.lastUpdate = 0; // Reset throttle
58
+ this.update({}); // Trigger update with no changes
59
+ this.lastUpdate = oldThrottle; // Restore throttle timing
60
+ }
61
+ /**
62
+ * Format elapsed time as human-readable string
63
+ */
64
+ getFormattedElapsed() {
65
+ const seconds = Math.floor(this.state.elapsed / 1000);
66
+ const minutes = Math.floor(seconds / 60);
67
+ const hours = Math.floor(minutes / 60);
68
+ if (hours > 0) {
69
+ return `${hours}h ${minutes % 60}m ${seconds % 60}s`;
70
+ }
71
+ else if (minutes > 0) {
72
+ return `${minutes}m ${seconds % 60}s`;
73
+ }
74
+ else {
75
+ return `${seconds}s`;
76
+ }
77
+ }
78
+ /**
79
+ * Format estimated remaining time as human-readable string
80
+ */
81
+ getFormattedEstimate() {
82
+ const completion = this.estimateCompletion();
83
+ if (!completion) {
84
+ return null;
85
+ }
86
+ const remaining = completion.getTime() - Date.now();
87
+ if (remaining <= 0) {
88
+ return 'Complete';
89
+ }
90
+ const seconds = Math.floor(remaining / 1000);
91
+ const minutes = Math.floor(seconds / 60);
92
+ const hours = Math.floor(minutes / 60);
93
+ if (hours > 0) {
94
+ return `~${hours}h ${minutes % 60}m remaining`;
95
+ }
96
+ else if (minutes > 0) {
97
+ return `~${minutes}m ${seconds % 60}s remaining`;
98
+ }
99
+ else {
100
+ return `~${seconds}s remaining`;
101
+ }
102
+ }
103
+ /**
104
+ * Get detailed progress metrics
105
+ */
106
+ getMetrics() {
107
+ if (!this.metrics) {
108
+ return null;
109
+ }
110
+ const throughput = this.calculateThroughput();
111
+ const estimatedCompletion = this.estimateCompletion();
112
+ const elapsedMs = Date.now() - this.metrics.startTime;
113
+ const remainingTasks = Math.max(0, this.state.totalTasks - this.state.tasksCompleted);
114
+ return {
115
+ elapsedMs,
116
+ estimatedCompletion,
117
+ remainingTasks,
118
+ throughput,
119
+ };
120
+ }
121
+ /**
122
+ * Get progress as a fraction (0.0 to 1.0)
123
+ */
124
+ getProgressFraction() {
125
+ return this.state.percentage / 100;
126
+ }
127
+ /**
128
+ * Get current progress state
129
+ */
130
+ getState() {
131
+ return { ...this.state };
132
+ }
133
+ /**
134
+ * Increment the completed files counter
135
+ */
136
+ incrementFiles() {
137
+ this.update({ filesCompleted: this.state.filesCompleted + 1 });
138
+ }
139
+ /**
140
+ * Increment the completed suites counter
141
+ */
142
+ incrementSuites() {
143
+ this.update({ suitesCompleted: this.state.suitesCompleted + 1 });
144
+ }
145
+ /**
146
+ * Increment the completed tasks counter
147
+ */
148
+ incrementTasks() {
149
+ this.update({ tasksCompleted: this.state.tasksCompleted + 1 });
150
+ }
151
+ /**
152
+ * Initialize progress tracking for a benchmark run
153
+ */
154
+ initialize(run) {
155
+ // Use summary totals if available (from pre-calculation), otherwise calculate from files
156
+ const totalFiles = run.summary?.totalFiles ?? run.files.length;
157
+ let totalSuites = run.summary?.totalSuites ?? 0;
158
+ let totalTasks = run.summary?.totalTasks ?? 0;
159
+ // If we don't have summary data and have detailed run information, calculate actual totals
160
+ if (!run.summary?.totalTasks && run.files.length > 0) {
161
+ for (const file of run.files) {
162
+ for (const suite of file.suites) {
163
+ totalSuites++;
164
+ totalTasks += suite.tasks.length;
165
+ }
166
+ }
167
+ }
168
+ this.state = {
169
+ elapsed: 0,
170
+ filesCompleted: 0,
171
+ percentage: 0,
172
+ suitesCompleted: 0,
173
+ tasksCompleted: 0,
174
+ totalFiles,
175
+ totalSuites,
176
+ totalTasks,
177
+ };
178
+ this.metrics = {
179
+ currentThroughput: 0,
180
+ estimatedTotal: totalTasks, // Use tasks as the primary progress unit
181
+ recentTimings: [],
182
+ startTime: Date.now(),
183
+ };
184
+ this.lastUpdate = Date.now();
185
+ this.notifyCallbacks();
186
+ }
187
+ /**
188
+ * Check if the run is complete
189
+ */
190
+ isComplete() {
191
+ return (this.state.tasksCompleted >= this.state.totalTasks &&
192
+ this.state.totalTasks > 0);
193
+ }
194
+ /**
195
+ * Register a callback for progress updates
196
+ */
197
+ onProgress(callback) {
198
+ this.callbacks.push(callback);
199
+ } /**
200
+ * Remove a progress callback
201
+ */
202
+ removeCallback(callback) {
203
+ const index = this.callbacks.indexOf(callback);
204
+ if (index >= 0) {
205
+ this.callbacks.splice(index, 1);
206
+ return true;
207
+ }
208
+ return false;
209
+ }
210
+ /**
211
+ * Set the current file being processed
212
+ */
213
+ setCurrentFile(file) {
214
+ this.update({ currentFile: file });
215
+ }
216
+ /**
217
+ * Set the current suite being processed
218
+ */
219
+ setCurrentSuite(suite) {
220
+ this.update({ currentSuite: suite });
221
+ }
222
+ /**
223
+ * Set the current task being processed
224
+ */
225
+ setCurrentTask(task) {
226
+ this.update({ currentTask: task });
227
+ }
228
+ /**
229
+ * Update progress state
230
+ */
231
+ update(updates) {
232
+ const now = Date.now();
233
+ // Throttle updates to avoid excessive callbacks
234
+ if (now - this.lastUpdate < this.updateThrottleMs) {
235
+ return;
236
+ }
237
+ // Calculate elapsed time
238
+ const elapsed = this.metrics ? now - this.metrics.startTime : 0;
239
+ // Apply updates
240
+ this.state = {
241
+ ...this.state,
242
+ ...updates,
243
+ elapsed,
244
+ percentage: this.calculatePercentage(updates),
245
+ };
246
+ // Update metrics for completion estimation
247
+ this.updateMetrics(now);
248
+ this.lastUpdate = now;
249
+ this.notifyCallbacks();
250
+ }
251
+ /**
252
+ * Calculate progress percentage from current state
253
+ */
254
+ calculatePercentage(updates) {
255
+ const currentState = { ...this.state, ...updates };
256
+ if (currentState.totalTasks === 0) {
257
+ return 0;
258
+ }
259
+ return Math.min(100, Math.max(0, (currentState.tasksCompleted / currentState.totalTasks) * 100));
260
+ }
261
+ /**
262
+ * Calculate average throughput from recent measurements
263
+ */
264
+ calculateThroughput() {
265
+ if (!this.metrics || this.metrics.recentTimings.length === 0) {
266
+ return 0;
267
+ }
268
+ // Use moving average of recent throughput measurements
269
+ const sum = this.metrics.recentTimings.reduce((acc, timing) => acc + timing, 0);
270
+ return sum / this.metrics.recentTimings.length;
271
+ }
272
+ /**
273
+ * Create initial progress state
274
+ */
275
+ createInitialState() {
276
+ return {
277
+ elapsed: 0,
278
+ filesCompleted: 0,
279
+ percentage: 0,
280
+ suitesCompleted: 0,
281
+ tasksCompleted: 0,
282
+ totalFiles: 0,
283
+ totalSuites: 0,
284
+ totalTasks: 0,
285
+ };
286
+ }
287
+ /**
288
+ * Notify all registered callbacks of state changes
289
+ */
290
+ notifyCallbacks() {
291
+ for (const callback of this.callbacks) {
292
+ try {
293
+ callback(this.state);
294
+ }
295
+ catch (error) {
296
+ console.error('Error in progress callback:', error);
297
+ }
298
+ }
299
+ }
300
+ /**
301
+ * Update throughput metrics
302
+ */
303
+ updateMetrics(now) {
304
+ if (!this.metrics) {
305
+ return;
306
+ }
307
+ // Track timing for throughput calculation
308
+ const elapsed = now - this.metrics.startTime;
309
+ if (elapsed > 0 && this.state.tasksCompleted > 0) {
310
+ const currentThroughput = this.state.tasksCompleted / (elapsed / 1000); // tasks per second
311
+ // Add to recent timings for moving average
312
+ this.metrics.recentTimings.push(currentThroughput);
313
+ // Keep only the most recent timings
314
+ if (this.metrics.recentTimings.length > this.maxRecentTimings) {
315
+ this.metrics.recentTimings.shift();
316
+ }
317
+ this.metrics = {
318
+ ...this.metrics,
319
+ currentThroughput,
320
+ };
321
+ }
322
+ }
323
+ }
324
+ exports.ModestBenchProgressManager = ModestBenchProgressManager;
325
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/progress/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * ModestBench Progress Manager
3
+ *
4
+ * Tracks execution progress, estimates completion times, and manages progress
5
+ * callbacks for real-time updates during benchmark runs.
6
+ */
7
+ import type { BenchmarkRun, ProgressManager, ProgressState } from "../types/index.cjs";
8
+ /**
9
+ * Progress callback function type
10
+ */
11
+ type ProgressCallback = (state: ProgressState) => void;
12
+ /**
13
+ * Default progress manager implementation
14
+ */
15
+ export declare class ModestBenchProgressManager implements ProgressManager {
16
+ private callbacks;
17
+ private lastUpdate;
18
+ private readonly maxRecentTimings;
19
+ private metrics;
20
+ private state;
21
+ private readonly updateThrottleMs;
22
+ constructor();
23
+ /**
24
+ * Clean up progress tracking resources
25
+ */
26
+ cleanup(): void;
27
+ /**
28
+ * Estimate completion time
29
+ */
30
+ estimateCompletion(): Date | null;
31
+ /**
32
+ * Force an immediate progress update (bypassing throttling)
33
+ */
34
+ forceUpdate(): void;
35
+ /**
36
+ * Format elapsed time as human-readable string
37
+ */
38
+ getFormattedElapsed(): string;
39
+ /**
40
+ * Format estimated remaining time as human-readable string
41
+ */
42
+ getFormattedEstimate(): null | string;
43
+ /**
44
+ * Get detailed progress metrics
45
+ */
46
+ getMetrics(): null | {
47
+ elapsedMs: number;
48
+ estimatedCompletion: Date | null;
49
+ remainingTasks: number;
50
+ throughput: number;
51
+ };
52
+ /**
53
+ * Get progress as a fraction (0.0 to 1.0)
54
+ */
55
+ getProgressFraction(): number;
56
+ /**
57
+ * Get current progress state
58
+ */
59
+ getState(): ProgressState;
60
+ /**
61
+ * Increment the completed files counter
62
+ */
63
+ incrementFiles(): void;
64
+ /**
65
+ * Increment the completed suites counter
66
+ */
67
+ incrementSuites(): void;
68
+ /**
69
+ * Increment the completed tasks counter
70
+ */
71
+ incrementTasks(): void;
72
+ /**
73
+ * Initialize progress tracking for a benchmark run
74
+ */
75
+ initialize(run: BenchmarkRun): void;
76
+ /**
77
+ * Check if the run is complete
78
+ */
79
+ isComplete(): boolean;
80
+ /**
81
+ * Register a callback for progress updates
82
+ */
83
+ onProgress(callback: ProgressCallback): void; /**
84
+ * Remove a progress callback
85
+ */
86
+ removeCallback(callback: ProgressCallback): boolean;
87
+ /**
88
+ * Set the current file being processed
89
+ */
90
+ setCurrentFile(file: string): void;
91
+ /**
92
+ * Set the current suite being processed
93
+ */
94
+ setCurrentSuite(suite: string): void;
95
+ /**
96
+ * Set the current task being processed
97
+ */
98
+ setCurrentTask(task: string): void;
99
+ /**
100
+ * Update progress state
101
+ */
102
+ update(updates: Partial<ProgressState>): void;
103
+ /**
104
+ * Calculate progress percentage from current state
105
+ */
106
+ private calculatePercentage;
107
+ /**
108
+ * Calculate average throughput from recent measurements
109
+ */
110
+ private calculateThroughput;
111
+ /**
112
+ * Create initial progress state
113
+ */
114
+ private createInitialState;
115
+ /**
116
+ * Notify all registered callbacks of state changes
117
+ */
118
+ private notifyCallbacks;
119
+ /**
120
+ * Update throughput metrics
121
+ */
122
+ private updateMetrics;
123
+ }
124
+ export {};
125
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/progress/manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACd,2BAA0B;AAE3B;;GAEG;AACH,KAAK,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAYvD;;GAEG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IAChE,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,CAAC,UAAU,CAAK;IAEvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAEvC,OAAO,CAAC,OAAO,CAAgC;IAE/C,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAO;;IAMxC;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf;;OAEG;IACH,kBAAkB,IAAI,IAAI,GAAG,IAAI;IA0BjC;;OAEG;IACH,WAAW,IAAI,IAAI;IAOnB;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAc7B;;OAEG;IACH,oBAAoB,IAAI,IAAI,GAAG,MAAM;IAwBrC;;OAEG;IACH,UAAU,IAAI,IAAI,GAAG;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB,EAAE,IAAI,GAAG,IAAI,CAAC;QACjC,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;KACpB;IAqBD;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,QAAQ,IAAI,aAAa;IAIzB;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAsCnC;;OAEG;IACH,UAAU,IAAI,OAAO;IAOrB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EAE1C;;OAEC;IAEH,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IASnD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IA0B7C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,aAAa;CAwBtB"}