benchforge 0.1.11 → 0.2.4

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 (253) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +99 -294
  3. package/bin/benchforge +1 -2
  4. package/dist/AnalyzeArchive-8NCJhmhS.mjs +145 -0
  5. package/dist/AnalyzeArchive-8NCJhmhS.mjs.map +1 -0
  6. package/dist/BenchMatrix-BZVrBB_h.mjs +1050 -0
  7. package/dist/BenchMatrix-BZVrBB_h.mjs.map +1 -0
  8. package/dist/{BenchRunner-BzyUfiyB.d.mts → BenchRunner-DglX1NOn.d.mts} +119 -66
  9. package/dist/CoverageSampler-D5T9DRqe.mjs +27 -0
  10. package/dist/CoverageSampler-D5T9DRqe.mjs.map +1 -0
  11. package/dist/Formatters-BWj3d4sv.mjs +95 -0
  12. package/dist/Formatters-BWj3d4sv.mjs.map +1 -0
  13. package/dist/{HeapSampler-B8dtKHn1.mjs → HeapSampler-Dq-hpXem.mjs} +4 -4
  14. package/dist/HeapSampler-Dq-hpXem.mjs.map +1 -0
  15. package/dist/RunBenchCLI-C17DrJz8.mjs +3075 -0
  16. package/dist/RunBenchCLI-C17DrJz8.mjs.map +1 -0
  17. package/dist/StatisticalUtils-BD92crgM.mjs +255 -0
  18. package/dist/StatisticalUtils-BD92crgM.mjs.map +1 -0
  19. package/dist/TimeSampler-Ds8n7l2B.mjs +29 -0
  20. package/dist/TimeSampler-Ds8n7l2B.mjs.map +1 -0
  21. package/dist/ViewerServer-BJhdnxlN.mjs +639 -0
  22. package/dist/ViewerServer-BJhdnxlN.mjs.map +1 -0
  23. package/dist/ViewerServer-CuMNdNBz.mjs +2 -0
  24. package/dist/bin/benchforge.mjs +4 -5
  25. package/dist/bin/benchforge.mjs.map +1 -1
  26. package/dist/index.d.mts +711 -558
  27. package/dist/index.mjs +98 -3
  28. package/dist/index.mjs.map +1 -0
  29. package/dist/runners/WorkerScript.d.mts +12 -4
  30. package/dist/runners/WorkerScript.mjs +77 -105
  31. package/dist/runners/WorkerScript.mjs.map +1 -1
  32. package/dist/viewer/assets/CIPlot-BkOvMoMa.js +1 -0
  33. package/dist/viewer/assets/HistogramKde-CmSyUFY0.js +1 -0
  34. package/dist/viewer/assets/LegendUtils-BJpbn_jr.js +55 -0
  35. package/dist/viewer/assets/SampleTimeSeries-C4VBhXr3.js +1 -0
  36. package/dist/viewer/assets/index-Br9bp_cX.js +153 -0
  37. package/dist/viewer/assets/index-NzXXe_CC.css +1 -0
  38. package/dist/viewer/index.html +19 -0
  39. package/dist/viewer/speedscope/LICENSE +21 -0
  40. package/dist/viewer/speedscope/SourceCodePro-Regular.ttf-ILST5JV6.woff2 +0 -0
  41. package/dist/viewer/speedscope/favicon-16x16-V2DMIAZS.js +2 -0
  42. package/dist/viewer/speedscope/favicon-16x16-V2DMIAZS.js.map +7 -0
  43. package/dist/viewer/speedscope/favicon-16x16-VSI62OPJ.png +0 -0
  44. package/dist/viewer/speedscope/favicon-32x32-3EB2YCUY.png +0 -0
  45. package/dist/viewer/speedscope/favicon-32x32-THY3JDJL.js +2 -0
  46. package/dist/viewer/speedscope/favicon-32x32-THY3JDJL.js.map +7 -0
  47. package/dist/viewer/speedscope/favicon-FOKUP5Y5.ico +0 -0
  48. package/dist/viewer/speedscope/favicon-M34RF7BI.js +2 -0
  49. package/dist/viewer/speedscope/favicon-M34RF7BI.js.map +7 -0
  50. package/dist/viewer/speedscope/file-format-schema.json +274 -0
  51. package/dist/viewer/speedscope/index.html +19 -0
  52. package/dist/viewer/speedscope/jfrview_bg-BLJXNNQB.wasm +0 -0
  53. package/dist/viewer/speedscope/perf-vertx-stacks-01-collapsed-all-ZNUIGAJL.txt +199 -0
  54. package/dist/viewer/speedscope/release.txt +3 -0
  55. package/dist/viewer/speedscope/source-code-pro.LICENSE.md +93 -0
  56. package/dist/viewer/speedscope/speedscope-GHPHNKXC.css +2 -0
  57. package/dist/viewer/speedscope/speedscope-GHPHNKXC.css.map +7 -0
  58. package/dist/viewer/speedscope/speedscope-QZFMJ7VP.js +212 -0
  59. package/dist/viewer/speedscope/speedscope-QZFMJ7VP.js.map +7 -0
  60. package/package.json +52 -27
  61. package/src/bin/benchforge.ts +2 -2
  62. package/src/cli/AnalyzeArchive.ts +232 -0
  63. package/src/cli/BrowserBench.ts +322 -0
  64. package/src/cli/CliArgs.ts +164 -51
  65. package/src/cli/CliExport.ts +179 -0
  66. package/src/cli/CliOptions.ts +147 -0
  67. package/src/cli/CliReport.ts +197 -0
  68. package/src/cli/FilterBenchmarks.ts +18 -30
  69. package/src/cli/RunBenchCLI.ts +132 -866
  70. package/src/cli/SuiteRunner.ts +160 -0
  71. package/src/cli/ViewerServer.ts +282 -0
  72. package/src/export/AllocExport.ts +121 -0
  73. package/src/export/ArchiveExport.ts +146 -0
  74. package/src/export/ArchiveFormat.ts +50 -0
  75. package/src/export/CoverageExport.ts +148 -0
  76. package/src/export/EditorUri.ts +10 -0
  77. package/src/export/PerfettoExport.ts +64 -99
  78. package/src/export/SpeedscopeTypes.ts +98 -0
  79. package/src/export/TimeExport.ts +115 -0
  80. package/src/index.ts +86 -67
  81. package/src/matrix/BenchMatrix.ts +230 -0
  82. package/src/matrix/CaseLoader.ts +8 -6
  83. package/src/matrix/MatrixDirRunner.ts +153 -0
  84. package/src/matrix/MatrixFilter.ts +49 -47
  85. package/src/matrix/MatrixInlineRunner.ts +50 -0
  86. package/src/matrix/MatrixReport.ts +90 -250
  87. package/src/matrix/VariantLoader.ts +5 -5
  88. package/src/profiling/browser/BenchLoop.ts +51 -0
  89. package/src/profiling/browser/BrowserCDP.ts +133 -0
  90. package/src/profiling/browser/BrowserGcStats.ts +33 -0
  91. package/src/profiling/browser/BrowserProfiler.ts +160 -0
  92. package/src/profiling/browser/CdpClient.ts +82 -0
  93. package/src/profiling/browser/CdpPage.ts +138 -0
  94. package/src/profiling/browser/ChromeLauncher.ts +158 -0
  95. package/src/profiling/browser/ChromeTraceEvent.ts +28 -0
  96. package/src/profiling/browser/PageLoadMode.ts +61 -0
  97. package/src/profiling/node/CoverageSampler.ts +27 -0
  98. package/src/profiling/node/CoverageTypes.ts +23 -0
  99. package/src/profiling/node/HeapSampleReport.ts +261 -0
  100. package/src/{heap-sample → profiling/node}/HeapSampler.ts +1 -2
  101. package/src/{heap-sample → profiling/node}/ResolvedProfile.ts +18 -9
  102. package/src/profiling/node/TimeSampler.ts +57 -0
  103. package/src/report/BenchmarkReport.ts +146 -0
  104. package/src/report/Colors.ts +9 -0
  105. package/src/report/Formatters.ts +110 -0
  106. package/src/report/GcSections.ts +151 -0
  107. package/src/{GitUtils.ts → report/GitUtils.ts} +18 -19
  108. package/src/report/HtmlReport.ts +223 -0
  109. package/src/report/ParseStats.ts +73 -0
  110. package/src/report/StandardSections.ts +147 -0
  111. package/src/report/ViewerSections.ts +286 -0
  112. package/src/report/text/TableReport.ts +253 -0
  113. package/src/report/text/TextReport.ts +123 -0
  114. package/src/runners/AdaptiveWrapper.ts +116 -236
  115. package/src/runners/BenchRunner.ts +20 -15
  116. package/src/{Benchmark.ts → runners/BenchmarkSpec.ts} +5 -6
  117. package/src/runners/CreateRunner.ts +5 -7
  118. package/src/runners/GcStats.ts +47 -50
  119. package/src/{MeasuredResults.ts → runners/MeasuredResults.ts} +43 -37
  120. package/src/runners/MergeBatches.ts +123 -0
  121. package/src/{NodeGC.ts → runners/NodeGC.ts} +2 -3
  122. package/src/runners/RunnerOrchestrator.ts +127 -243
  123. package/src/runners/RunnerUtils.ts +75 -1
  124. package/src/runners/SampleStats.ts +100 -0
  125. package/src/runners/TimingRunner.ts +244 -0
  126. package/src/runners/TimingUtils.ts +3 -2
  127. package/src/runners/WorkerScript.ts +135 -151
  128. package/src/stats/BootstrapDifference.ts +282 -0
  129. package/src/{PermutationTest.ts → stats/PermutationTest.ts} +8 -17
  130. package/src/stats/StatisticalUtils.ts +445 -0
  131. package/src/{tests → test}/AdaptiveConvergence.test.ts +10 -10
  132. package/src/test/AdaptiveRunner.test.ts +39 -41
  133. package/src/{tests → test}/AdaptiveSampling.test.ts +9 -9
  134. package/src/test/AdaptiveStatistics.integration.ts +2 -2
  135. package/src/{tests → test}/BenchMatrix.test.ts +19 -16
  136. package/src/test/BenchmarkReport.test.ts +63 -13
  137. package/src/test/BrowserBench.e2e.test.ts +186 -17
  138. package/src/test/BrowserBench.test.ts +10 -5
  139. package/src/test/BuildTimeSection.test.ts +130 -0
  140. package/src/test/CapSamples.test.ts +82 -0
  141. package/src/test/CoverageExport.test.ts +115 -0
  142. package/src/test/CoverageSampler.test.ts +33 -0
  143. package/src/test/HeapAttribution.test.ts +14 -14
  144. package/src/{tests → test}/MatrixFilter.test.ts +1 -1
  145. package/src/{tests → test}/MatrixReport.test.ts +1 -1
  146. package/src/test/PermutationTest.test.ts +1 -1
  147. package/src/{tests → test}/RealDataValidation.test.ts +6 -6
  148. package/src/test/RunBenchCLI.test.ts +39 -38
  149. package/src/test/RunnerOrchestrator.test.ts +12 -12
  150. package/src/test/StatisticalUtils.test.ts +48 -12
  151. package/src/{table-util/test → test}/TableReport.test.ts +2 -2
  152. package/src/test/TestUtils.ts +12 -7
  153. package/src/test/TimeExport.test.ts +139 -0
  154. package/src/test/TimeSampler.test.ts +37 -0
  155. package/src/test/ViewerLive.e2e.test.ts +159 -0
  156. package/src/test/ViewerStatic.static.e2e.test.ts +137 -0
  157. package/src/{tests → test}/fixtures/baseline/impl.ts +1 -1
  158. package/src/{tests → test}/fixtures/bevy30-samples.ts +3 -1
  159. package/src/test/fixtures/cases/asyncCases.ts +9 -0
  160. package/src/{tests → test}/fixtures/cases/cases.ts +5 -2
  161. package/src/test/fixtures/cases/variants/product.ts +2 -0
  162. package/src/test/fixtures/cases/variants/sum.ts +2 -0
  163. package/src/test/fixtures/discover/fast.ts +1 -0
  164. package/src/{tests → test}/fixtures/discover/slow.ts +1 -1
  165. package/src/test/fixtures/invalid/bad.ts +1 -0
  166. package/src/test/fixtures/loader/fast.ts +1 -0
  167. package/src/{tests → test}/fixtures/loader/slow.ts +1 -1
  168. package/src/test/fixtures/loader/stateful.ts +2 -0
  169. package/src/test/fixtures/stateful/stateful.ts +2 -0
  170. package/src/test/fixtures/variants/extra.ts +1 -0
  171. package/src/test/fixtures/variants/impl.ts +1 -0
  172. package/src/test/fixtures/worker/fast.ts +1 -0
  173. package/src/{tests → test}/fixtures/worker/slow.ts +1 -1
  174. package/src/viewer/DateFormat.ts +30 -0
  175. package/src/viewer/Helpers.ts +23 -0
  176. package/src/viewer/LineData.ts +120 -0
  177. package/src/viewer/Providers.ts +191 -0
  178. package/src/viewer/ReportData.ts +123 -0
  179. package/src/viewer/State.ts +49 -0
  180. package/src/viewer/Theme.ts +15 -0
  181. package/src/viewer/components/App.tsx +73 -0
  182. package/src/viewer/components/DropZone.tsx +71 -0
  183. package/src/viewer/components/LazyPlot.ts +33 -0
  184. package/src/viewer/components/SamplesPanel.tsx +214 -0
  185. package/src/viewer/components/Shell.tsx +26 -0
  186. package/src/viewer/components/SourcePanel.tsx +216 -0
  187. package/src/viewer/components/SummaryPanel.tsx +332 -0
  188. package/src/viewer/components/TabBar.tsx +131 -0
  189. package/src/viewer/components/TabContent.tsx +46 -0
  190. package/src/viewer/components/ThemeToggle.tsx +50 -0
  191. package/src/viewer/index.html +20 -0
  192. package/src/viewer/main.tsx +4 -0
  193. package/src/viewer/plots/CIPlot.ts +313 -0
  194. package/src/{html/browser → viewer/plots}/HistogramKde.ts +33 -38
  195. package/src/viewer/plots/LegendUtils.ts +134 -0
  196. package/src/viewer/plots/PlotTypes.ts +85 -0
  197. package/src/viewer/plots/RenderPlots.ts +230 -0
  198. package/src/viewer/plots/SampleTimeSeries.ts +306 -0
  199. package/src/viewer/plots/SvgHelpers.ts +136 -0
  200. package/src/viewer/plots/TimeSeriesMarks.ts +319 -0
  201. package/src/viewer/report.css +427 -0
  202. package/src/viewer/shell.css +357 -0
  203. package/src/viewer/tsconfig.json +11 -0
  204. package/dist/BrowserHeapSampler-B6asLKWQ.mjs +0 -202
  205. package/dist/BrowserHeapSampler-B6asLKWQ.mjs.map +0 -1
  206. package/dist/GcStats-wX7Xyblu.mjs +0 -77
  207. package/dist/GcStats-wX7Xyblu.mjs.map +0 -1
  208. package/dist/HeapSampler-B8dtKHn1.mjs.map +0 -1
  209. package/dist/TimingUtils-DwOwkc8G.mjs +0 -597
  210. package/dist/TimingUtils-DwOwkc8G.mjs.map +0 -1
  211. package/dist/browser/index.js +0 -914
  212. package/dist/src-B-DDaCa9.mjs +0 -3108
  213. package/dist/src-B-DDaCa9.mjs.map +0 -1
  214. package/src/BenchMatrix.ts +0 -380
  215. package/src/BenchmarkReport.ts +0 -161
  216. package/src/HtmlDataPrep.ts +0 -148
  217. package/src/StandardSections.ts +0 -261
  218. package/src/StatisticalUtils.ts +0 -175
  219. package/src/TypeUtil.ts +0 -8
  220. package/src/browser/BrowserGcStats.ts +0 -44
  221. package/src/browser/BrowserHeapSampler.ts +0 -271
  222. package/src/export/JsonExport.ts +0 -103
  223. package/src/export/JsonFormat.ts +0 -91
  224. package/src/export/SpeedscopeExport.ts +0 -202
  225. package/src/heap-sample/HeapSampleReport.ts +0 -269
  226. package/src/html/HtmlReport.ts +0 -131
  227. package/src/html/HtmlTemplate.ts +0 -284
  228. package/src/html/Types.ts +0 -88
  229. package/src/html/browser/CIPlot.ts +0 -287
  230. package/src/html/browser/LegendUtils.ts +0 -163
  231. package/src/html/browser/RenderPlots.ts +0 -263
  232. package/src/html/browser/SampleTimeSeries.ts +0 -389
  233. package/src/html/browser/Types.ts +0 -96
  234. package/src/html/browser/index.ts +0 -1
  235. package/src/html/index.ts +0 -17
  236. package/src/runners/BasicRunner.ts +0 -364
  237. package/src/table-util/ConvergenceFormatters.ts +0 -19
  238. package/src/table-util/Formatters.ts +0 -157
  239. package/src/table-util/README.md +0 -70
  240. package/src/table-util/TableReport.ts +0 -293
  241. package/src/tests/fixtures/cases/asyncCases.ts +0 -7
  242. package/src/tests/fixtures/cases/variants/product.ts +0 -2
  243. package/src/tests/fixtures/cases/variants/sum.ts +0 -2
  244. package/src/tests/fixtures/discover/fast.ts +0 -1
  245. package/src/tests/fixtures/invalid/bad.ts +0 -1
  246. package/src/tests/fixtures/loader/fast.ts +0 -1
  247. package/src/tests/fixtures/loader/stateful.ts +0 -2
  248. package/src/tests/fixtures/stateful/stateful.ts +0 -2
  249. package/src/tests/fixtures/variants/extra.ts +0 -1
  250. package/src/tests/fixtures/variants/impl.ts +0 -1
  251. package/src/tests/fixtures/worker/fast.ts +0 -1
  252. /package/src/{table-util/test → test}/TableValueExtractor.test.ts +0 -0
  253. /package/src/{table-util/test → test}/TableValueExtractor.ts +0 -0
@@ -0,0 +1 @@
1
+ import{n as e,r as t}from"./index-Br9bp_cX.js";import{_ as n,a as r,c as i,i as a,l as o,m as s,n as c,p as l,r as u,s as d,t as f}from"./LegendUtils-BJpbn_jr.js";var p={1:`interpreted`,129:`sparkplug`,17:`turbofan`,33:`maglev`,49:`turbofan+maglev`,32769:`optimized`},m={turbofan:`#22c55e`,optimized:`#22c55e`,"turbofan+maglev":`#22c55e`,maglev:`#eab308`,sparkplug:`#f97316`,interpreted:`#dc3545`},h=1e3;function g(e){let{hasWarmup:t,gcCount:n,pauseCount:r,hasHeap:i,hasBaselineHeap:a}=e,{hasRejected:o,optTiers:s,benchmarks:c,baselineNames:l}=e,u=[];return t&&u.push({color:`#dc3545`,label:`warmup`,style:`hollow-dot`}),n>0&&u.push({color:`#22c55e`,label:`gc (${n})`,style:`vertical-line`}),r>0&&u.push({color:`#888`,label:`pause (${r})`,style:`vertical-line`,strokeDash:`4,4`}),i&&u.push({color:`#93c5fd`,label:`heap`,style:`rect`}),a&&u.push({color:`#fcd34d`,label:`heap (baseline)`,style:`rect`}),u.push(...S(s,c,l)),o&&u.push({color:`#999`,label:`rejected`,style:`hollow-dot`}),u}function _(e,t,n){return e.length===0?[]:[a(e,{x:`sample`,y:`y`,y1:t,fill:n,fillOpacity:.15,stroke:n,strokeWidth:1,strokeOpacity:.4})]}function v(e,t,r){if(!e)return[];let i=t-r,a=t+i*.01,o=t+i*.06,s=n(e.heapMinBytes/1024/1024,(e.heapMinBytes+e.heapRangeBytes)/1024/1024,3),c=e=>e>=100?e.toFixed(0):e>=10?e.toFixed(1):e.toFixed(2),l=s.map(t=>({x:a,y:e.yMin+(t*1024*1024-e.heapMinBytes)*e.scale,label:c(t)})),u={x:`x`,y:`y`,fontSize:10,textAnchor:`start`,fill:`#333`,clip:!1},f=[{x:o,y:e.yMin+e.heapRangeBytes*e.scale*.5,text:`MB`}];return[d(l,{...u,text:`label`}),d(f,{...u,text:`text`})]}function y(e,t,n){return u(e.map(e=>({x1:e.sampleIndex,y1:t,x2:e.sampleIndex,y2:t+n(e.duration),duration:e.duration})),{x1:`x1`,y1:`y1`,x2:`x2`,y2:`y2`,stroke:`#22c55e`,strokeWidth:2,strokeOpacity:.8,title:e=>`GC: ${e.duration.toFixed(2)}ms`})}function b(e,t,n){return e.map(e=>i([e.sampleIndex],{y1:t,y2:n,stroke:`#888`,strokeWidth:1,strokeDasharray:`4,4`,strokeOpacity:.7,title:`Pause: ${e.durationMs}ms`}))}function x(e,t,n){let{unitSuffix:r,formatValue:i}=e,a=e=>`${i(e.displayValue)}${r}`,o=e=>e.optTier?`Iteration ${e.sample}: ${a(e)} [${e.optTier}]`:`Iteration ${e.sample}: ${a(e)}`,s={x:`sample`,y:`displayValue`,r:3},{warmup:l,baseline:u,measured:d,rejected:f}=C(e.convertedData,t,n);return[c(l,{...s,stroke:`#dc3545`,fill:`none`,strokeWidth:1.5,opacity:.7,title:e=>`Warmup ${e.sample}: ${a(e)}`}),c(u,{...s,stroke:`#ffa500`,fill:`none`,strokeWidth:2,opacity:.8,title:o}),c(d,{...s,opacity:.8,title:o,fill:e=>e.optTier&&m[e.optTier]||`#4682b4`}),...w(f,s,o)]}function S(e,t,n){return e.length>0?e.map(e=>({color:m[e]||`#4682b4`,label:e,style:`filled-dot`})):[...t].sort((e,t)=>Number(n.has(e))-Number(n.has(t))).map(e=>{let t=n.has(e);return{color:t?`#ffa500`:`#4682b4`,label:e,style:t?`hollow-dot`:`filled-dot`}})}function C(e,t,n){let r=e=>n(e,h,e=>e.sample,e=>e.displayValue),i=e.filter(e=>!e.isWarmup&&!e.isRejected);return{warmup:r(e.filter(e=>e.isWarmup)),baseline:r(i.filter(e=>e.isBaseline)),measured:r(i.filter(e=>!e.isBaseline)),rejected:t?e.filter(e=>e.isRejected&&!e.isWarmup):[]}}function w(e,t,n){return e.length?[c(e,{...t,stroke:`#999`,fill:`none`,strokeWidth:1,opacity:.3,title:e=>`Rejected ${n(e)}`})]:[]}var T={baseline:!0,heap:!0,baselineHeap:!1,rejected:!0};function E(e,n=[],i=[],a=[],o=[],s=T){let c=D(s.baseline?e:e.filter(e=>!e.isBaseline)),l=O(c,a,o,s,n,i);return r({...t,x:{label:`Iteration`,labelAnchor:`center`,labelOffset:45,grid:!0,domain:[c.xMin,c.xMax]},y:{label:`Time (${c.unitSuffix})`,labelAnchor:`top`,labelArrow:!1,grid:!0,domain:[c.yMin,c.yMax],tickFormat:c.formatValue},color:{legend:!1,scheme:`observable10`},marks:k({ctx:c,...l,gcEvents:n,pausePoints:i})})}function D(t){let n=[...new Set(t.map(e=>e.benchmark))],r=A(t),{unitSuffix:i,convertValue:a,formatValue:o}=e(r.map(e=>e.value)),c=r.map(e=>({...e,displayValue:a(e.value)})),{yMin:u,yMax:d}=j(c.map(e=>e.displayValue)),f=l(c,e=>e.sample),p=s(c,e=>e.sample);f===p&&(f-=.5,p+=.5);let m=c.some(e=>e.isWarmup),h=c.some(e=>e.isRejected),g=new Set(c.filter(e=>e.isBaseline).map(e=>e.benchmark)),_=[...new Set(c.filter(e=>e.optTier&&!e.isWarmup).map(e=>e.optTier))];return{convertedData:c,xMin:f,xMax:p,yMin:u,yMax:d,unitSuffix:i,formatValue:o,convertValue:a,hasWarmup:m,hasRejected:h,baselineNames:g,optTiers:_,benchmarks:n}}function O(e,t,n,r,i,a){let o=M([...r.heap?t:[],...r.baselineHeap?n:[]],e.yMin,e.yMax),s=o&&r.heap?N(t,o):[],c=o&&r.baselineHeap?N(n,o):[],l=r.rejected&&e.hasRejected;return{heapScale:o,heapData:s,baselineHeapData:c,showRejected:l,legendItems:g({hasWarmup:e.hasWarmup,gcCount:i.length,pauseCount:a.length,hasHeap:s.length>0,hasBaselineHeap:c.length>0,hasRejected:l,optTiers:e.optTiers,benchmarks:e.benchmarks,baselineNames:e.baselineNames})}}function k(e){let{ctx:t,heapData:n,baselineHeapData:r,heapScale:a}=e,{gcEvents:s,pausePoints:c,legendItems:l,showRejected:u}=e,d=t.hasWarmup?[i([0],{stroke:`#999`,strokeWidth:1,strokeDasharray:`4,4`})]:[],{xMin:p,xMax:m,yMin:h,yMax:g}=t;return[..._(r,h,`#fcd34d`),..._(n,h,`#93c5fd`),...v(a,m,p),...d,y(s,h,t.convertValue),...b(c,h,g),...x(t,u,P),o([h],{stroke:`black`,strokeWidth:1}),...f({xMin:p,xMax:m,yMin:h,yMax:g},l)]}function A(e){return e.map(e=>({benchmark:e.benchmark,sample:e.iteration,value:e.value,isBaseline:e.isBaseline||!1,isWarmup:e.isWarmup||!1,isRejected:e.isRejected||!1,optTier:e.optStatus===void 0?null:p[e.optStatus]||`unknown`}))}function j(e){let t=l(e),n=s(e),r=n-t,i=t-r*.15,a=10**Math.floor(Math.log10(Math.abs(i)));return i=Math.floor(i/a)*a,t>0&&i<0&&(i=0),{yMin:i,yMax:n+r*.05}}function M(e,t,n){if(e.length===0)return;let r=l(e,e=>e.value),i=s(e,e=>e.value)-r||1;return{heapMinBytes:r,heapRangeBytes:i,scale:(n-t)*.25/i,yMin:t}}function N(e,t){return e.length===0?[]:P(e.map(e=>({sample:e.iteration,y:t.yMin+(e.value-t.heapMinBytes)*t.scale})),500,e=>e.sample,e=>e.y)}function P(e,t,n,r){if(e.length<=t)return e;let i=(e.length-2)/(t-2),a=[e[0]];for(let o=0;o<t-2;o++){let t=Math.floor(o*i)+1,s=Math.floor((o+1)*i)+1,c=s,l=Math.min(Math.floor((o+2)*i)+1,e.length-1),u=0,d=0;for(let t=c;t<l;t++)u+=n(e[t]),d+=r(e[t]);let f=l-c||1;u/=f,d/=f;let p=a[a.length-1],m=n(p),h=r(p),g=-1,_=t;for(let i=t;i<s;i++){let t=Math.abs((m-u)*(r(e[i])-h)-(m-n(e[i]))*(d-h));t>g&&(g=t,_=i)}a.push(e[_])}return a.push(e[e.length-1]),a}export{E as createSampleTimeSeries};