diff --git a/.gitignore b/.gitignore
index 85eb636..9b73f54 100644
--- a/.gitignore
+++ b/.gitignore
@@ -60,5 +60,8 @@ Thumbs.db
.tmp
.temp
+# Screenshots
+*.png
+
# Build tools
.turbo
diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json
index f8e4cfd..681acce 100644
--- a/apps/dashboard/package.json
+++ b/apps/dashboard/package.json
@@ -10,15 +10,17 @@
"clean": "rm -rf dist"
},
"dependencies": {
+ "lucide-react": "^0.414.0",
"react": "^19.1.1",
"react-dom": "^19.1.1",
- "recharts": "^2.12.6",
- "lucide-react": "^0.414.0"
+ "react-router-dom": "^7.8.2",
+ "recharts": "^2.12.6"
},
"devDependencies": {
"@types/react": "^19.1.10",
"@types/react-dom": "^19.1.7",
- "typescript": "catalog:",
- "rolldown-vite": "7.1.4"
+ "@types/react-router-dom": "^5.3.3",
+ "rolldown-vite": "7.1.4",
+ "typescript": "catalog:"
}
}
diff --git a/apps/dashboard/src/App.css b/apps/dashboard/src/App.css
index 2da3bfc..3666519 100644
--- a/apps/dashboard/src/App.css
+++ b/apps/dashboard/src/App.css
@@ -62,7 +62,88 @@
}
}
-/* Navigation */
+/* Page Navigation */
+.page-nav {
+ background: transparent;
+ padding: 1rem 2rem;
+ display: flex;
+ gap: 0.5rem;
+ max-width: 1200px;
+ margin: 0 auto;
+ border-radius: 0.75rem;
+ margin-top: -0.5rem;
+ position: relative;
+ z-index: 10;
+}
+
+.page-button {
+ display: flex;
+ align-items: center;
+ gap: 0.625rem;
+ padding: 1rem 1.5rem;
+ border: 2px solid transparent;
+ background: transparent;
+ border-radius: 0.75rem;
+ cursor: pointer;
+ font-weight: 600;
+ font-size: 0.95rem;
+ transition: all 0.3s ease;
+ color: #64748b;
+ text-transform: capitalize;
+ letter-spacing: -0.025em;
+ position: relative;
+ overflow: hidden;
+ min-width: 160px;
+ justify-content: center;
+}
+
+.page-button::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: -100%;
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(90deg,
+ transparent,
+ rgba(16, 185, 129, 0.3),
+ transparent);
+ transition: left 0.5s ease;
+}
+
+.page-button:hover {
+ background: transparent;
+ border-color: #10b981;
+ color: #059669;
+ transform: translateY(-2px);
+ box-shadow: 0 8px 16px rgba(16, 185, 129, 0.2);
+}
+
+.page-button:hover::before {
+ left: 100%;
+}
+
+.page-button.active {
+ background: transparent;
+ border-color: #10b981;
+ color: #059669;
+ box-shadow: 0 8px 20px rgba(16, 185, 129, 0.3);
+ transform: translateY(-1px);
+}
+
+.page-button.active::before {
+ background: linear-gradient(90deg,
+ transparent,
+ rgba(16, 185, 129, 0.2),
+ transparent);
+}
+
+.page-button.active:hover {
+ transform: translateY(-3px);
+ box-shadow: 0 12px 24px rgba(16, 185, 129, 0.4);
+}
+
+/* Metric Navigation */
.dashboard-nav {
background: transparent;
padding: 1.25rem 2rem;
@@ -236,8 +317,71 @@
border: 1px solid rgba(220, 38, 38, 0.2);
}
+/* Library Charts Grid - Combined Layout */
+.library-charts-grid {
+ display: flex;
+ flex-direction: column;
+ gap: 2rem;
+ margin-bottom: 2rem;
+ padding: 0 2rem;
+}
+
+.library-chart-row {
+ background: #ffffff;
+ border: 1px solid #e5e7eb;
+ border-radius: 0.75rem;
+ padding: 1.5rem;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+ transition: all 0.3s ease;
+}
+
+.library-chart-row:hover {
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
+ transform: translateY(-2px);
+}
+
+.library-charts-columns {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 2rem;
+ margin-top: 1rem;
+}
+
+.library-chart-container {
+ background: #f9fafb;
+ border: 1px solid #e5e7eb;
+ border-radius: 0.5rem;
+ padding: 1rem;
+}
+
+.chart-subtitle {
+ margin: 0 0 1rem 0;
+ font-size: 1rem;
+ font-weight: 500;
+ color: #374151;
+ text-align: center;
+ padding-bottom: 0.5rem;
+ border-bottom: 1px solid #e5e7eb;
+}
+
+.library-title {
+ margin: 0 0 1rem 0;
+ font-size: 1.125rem;
+ font-weight: 600;
+ color: #111827;
+ text-transform: capitalize;
+ text-align: center;
+ padding-bottom: 0.5rem;
+ border-bottom: 2px solid #e5e7eb;
+}
+
/* Responsive Design */
@media (max-width: 768px) {
+ .page-nav {
+ flex-direction: column;
+ gap: 0.5rem;
+ }
+
.dashboard-nav {
flex-direction: column;
gap: 0.5rem;
@@ -254,6 +398,20 @@
.stats-grid {
grid-template-columns: 1fr;
}
+
+ .library-charts-grid {
+ padding: 0 1rem;
+ gap: 1rem;
+ }
+
+ .library-charts-columns {
+ grid-template-columns: 1fr;
+ gap: 1rem;
+ }
+
+ .library-chart-container {
+ padding: 1rem;
+ }
}
/* Remove default styles */
diff --git a/apps/dashboard/src/App.tsx b/apps/dashboard/src/App.tsx
index 3e26870..a7b3f84 100644
--- a/apps/dashboard/src/App.tsx
+++ b/apps/dashboard/src/App.tsx
@@ -1,208 +1,19 @@
-import { useState } from 'react'
-import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, Cell } from 'recharts'
-import { BarChart3, Clock, Package } from 'lucide-react'
+import { BrowserRouter, Routes, Route } from 'react-router-dom'
import './App.css'
-import rolldownStats from '../../../rolldown-version-stats.json'
-
-// Utility function to format numbers with commas
-const formatNumberWithCommas = (num: number): string => {
- return num.toLocaleString()
-}
-
-// Transform rolldown stats data for charts
-const buildTimeData = rolldownStats.map(stat => ({
- name: `v${stat.version}`,
- value: stat.buildTime
-}))
-
-// Calculate bundle size differences between consecutive versions
-const bundleSizeDiffData = rolldownStats.map((stat, index) => {
- if (index === 0) {
- // For the first version, show 0 difference or could show absolute value
- return {
- name: `v${stat.version}`,
- value: 0,
- previousSize: null,
- currentSize: stat.totalSize,
- isBaseline: true
- }
- }
-
- const prevSize = rolldownStats[index - 1].totalSize
- const currentSize = stat.totalSize
- const diff = currentSize - prevSize
-
- return {
- name: `v${stat.version}`,
- value: diff,
- previousSize: prevSize,
- currentSize: currentSize,
- isBaseline: false
- }
-})
+import Layout from './components/Layout'
+import RolldownStatsPage from './pages/RolldownStatsPage'
+import MinificationBenchmarksPage from './pages/MinificationBenchmarksPage'
function App() {
- const [selectedMetric, setSelectedMetric] = useState('bundleSize')
-
- // Custom tooltip formatter for bundle size differences
- const bundleSizeDiffTooltipFormatter = (value: any, name: string, props: any) => {
- const data = props.payload
- if (!data) return [value, name]
-
- if (data.isBaseline) {
- return [`${formatNumberWithCommas(data.currentSize)} bytes (baseline)`, 'Bundle Size']
- }
-
- const sign = value >= 0 ? '+' : ''
- const changeText = `${sign}${formatNumberWithCommas(value)} bytes`
- const fromTo = `(${formatNumberWithCommas(data.previousSize)} → ${formatNumberWithCommas(data.currentSize)})`
-
- return [`${changeText} ${fromTo}`, 'Size Change']
- }
-
- const metrics = [
- { id: 'bundleSize', name: 'Bundle Size', icon: Package, data: bundleSizeDiffData, color: '#374151' },
- { id: 'buildTime', name: 'Build Time', icon: Clock, data: buildTimeData, color: '#000000' },
- ]
-
- const currentMetric = metrics.find(m => m.id === selectedMetric) || metrics[0]
-
return (
-
-
-
-
-
-
-
-
{currentMetric.name}
-
- {selectedMetric === 'bundleSize' ? (
-
-
-
-
-
-
-
- {currentMetric.data.map((entry: any, index: number) => (
- = 0 ? '#dc2626' : '#16a34a')}
- />
- ))}
- |
-
- ) : (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )}
-
-
-
-
-
-
Average Build Time
-
{Math.round(buildTimeData.reduce((sum, item) => sum + item.value, 0) / buildTimeData.length)}ms
-
Across {buildTimeData.length} versions
-
-
-
Latest Bundle Size
-
{formatNumberWithCommas(rolldownStats[rolldownStats.length - 1]?.totalSize || 0)} bytes
-
v{rolldownStats[rolldownStats.length - 1]?.version}
-
-
-
Bundle Size Range
-
{Math.round((Math.max(...rolldownStats.map(s => s.totalSize)) - Math.min(...rolldownStats.map(s => s.totalSize))) / 1024)}KB
-
Size Variation
-
-
-
Versions Tested
-
{rolldownStats.length}
-
{rolldownStats[0]?.version} - {rolldownStats[rolldownStats.length - 1]?.version}
-
-
-
-
+
+
+ }>
+ } />
+ } />
+
+
+
)
}
diff --git a/apps/dashboard/src/MinificationBenchmarks.tsx b/apps/dashboard/src/MinificationBenchmarks.tsx
new file mode 100644
index 0000000..239e9c6
--- /dev/null
+++ b/apps/dashboard/src/MinificationBenchmarks.tsx
@@ -0,0 +1,193 @@
+import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, LabelList } from 'recharts'
+import minificationData from '../../../minification-benchmarks-data.json'
+
+// Transform minification data for charts
+// Get popular minifiers for comparison
+const popularMinifiers = ['terser', 'esbuild', '@swc/core', 'uglify-js', 'oxc-minify']
+
+// Get library names from the data, sorted by size (largest first)
+const libraries = Object.entries(minificationData)
+ .map(([name, data]: [string, any]) => ({ name, size: data.size }))
+ .sort((a, b) => b.size - a.size)
+ .map(item => item.name)
+
+// Transform minification data for individual library charts
+const getLibraryData = (library: string, metric: 'time' | 'compression') => {
+ const libraryData = (minificationData as any)[library]
+ const data: any[] = []
+
+ popularMinifiers.forEach(minifier => {
+ const minifierData = libraryData.minified?.[minifier]
+ if (minifierData?.result?.data) {
+ let value: number
+ let minzippedBytes = 0
+ if (metric === 'time') {
+ value = Math.round(minifierData.result.data.time || 0)
+ } else {
+ // compression ratio
+ const originalSize = libraryData.size
+ minzippedBytes = minifierData.result.data.minzippedBytes || 0
+ value = Math.round(((originalSize - minzippedBytes) / originalSize) * 100 * 10) / 10
+ }
+
+ data.push({
+ name: minifier === '@swc/core' ? 'SWC' :
+ minifier === 'uglify-js' ? 'UglifyJS' :
+ minifier === 'oxc-minify' ? 'OXC' :
+ minifier === 'esbuild' ? 'ESBuild' :
+ minifier === 'terser' ? 'Terser' : minifier,
+ value,
+ minzippedBytes: minzippedBytes || 0,
+ fill: minifier === 'terser' ? '#8b5cf6' :
+ minifier === 'esbuild' ? '#059669' :
+ minifier === '@swc/core' ? '#0ea5e9' :
+ minifier === 'uglify-js' ? '#dc2626' :
+ minifier === 'oxc-minify' ? '#f59e0b' : '#6b7280'
+ })
+ }
+ })
+
+ // Sort data: time from smallest to largest (fastest to slowest), compression from largest to smallest (best to worst)
+ return data.sort((a, b) => metric === 'time' ? a.value - b.value : a.minzippedBytes - b.minzippedBytes)
+}
+
+
+interface MinificationBenchmarksProps {
+ // Remove selectedMetric and setSelectedMetric since we'll show both metrics together
+}
+
+function MinificationBenchmarks({ }: MinificationBenchmarksProps) {
+ return (
+ <>
+
+ {/* Combined Charts for Each Library - Time and Compression Side by Side */}
+
+ {libraries.map(library => {
+ const timeData = getLibraryData(library, 'time')
+ const compressionData = getLibraryData(library, 'compression')
+
+ return (
+
+
{library}
+
+ {/* Left column - Minification Time */}
+
+
Minification Time
+
+
+
+
+
+ [`${value}ms`, 'Minification Time']}
+ />
+
+ `${value}ms`}
+ style={{ fontSize: '12px', fill: '#374151' }}
+ />
+
+
+
+
+
+ {/* Right column - Compression Ratio */}
+
+
Compression Ratio
+
+
+
+
+
+ [
+ `${value}% (${props.payload.minzippedBytes} bytes)`,
+ 'Compression Ratio'
+ ]}
+ />
+
+ `${value}%`}
+ style={{ fontSize: '10px', fill: '#374151' }}
+ />
+
+
+
+
+
+
+ )
+ })}
+
+
+
+ {/* Minification statistics */}
+
+
Libraries Tested
+
{Object.keys(minificationData).length}
+
JavaScript Libraries
+
+
+
Minifiers Compared
+
{popularMinifiers.length}
+
Popular Tools
+
+
+
Fastest Minifier
+
OXC
+
Rust-based
+
+
+
Best Compression
+
UglifyJS
+
Traditional Leader
+
+
+
+ >
+ )
+}
+
+export default MinificationBenchmarks
diff --git a/apps/dashboard/src/RolldownStats.tsx b/apps/dashboard/src/RolldownStats.tsx
new file mode 100644
index 0000000..0fe7edc
--- /dev/null
+++ b/apps/dashboard/src/RolldownStats.tsx
@@ -0,0 +1,217 @@
+import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, Cell, LabelList } from 'recharts'
+import { Clock, Package } from 'lucide-react'
+import rolldownStats from '../../../rolldown-version-stats.json'
+
+// Utility function to format numbers with commas
+const formatNumberWithCommas = (num: number): string => {
+ return num.toLocaleString()
+}
+
+// Transform rolldown stats data for charts
+const buildTimeData = rolldownStats.map(stat => ({
+ name: `v${stat.version}`,
+ value: stat.buildTime
+})).sort((a, b) => a.value - b.value) // Sort from smallest to largest
+
+// Calculate bundle size differences between consecutive versions
+const bundleSizeDiffData = rolldownStats.map((stat, index) => {
+ if (index === 0) {
+ // For the first version, show 0 difference or could show absolute value
+ return {
+ name: `v${stat.version}`,
+ value: 0,
+ previousSize: null,
+ currentSize: stat.totalSize,
+ isBaseline: true
+ }
+ }
+
+ const prevSize = rolldownStats[index - 1].totalSize
+ const currentSize = stat.totalSize
+ const diff = currentSize - prevSize
+
+ return {
+ name: `v${stat.version}`,
+ value: diff,
+ previousSize: prevSize,
+ currentSize: currentSize,
+ isBaseline: false
+ }
+}).sort((a, b) => a.value - b.value) // Sort from smallest to largest
+
+interface RolldownStatsProps {
+ selectedMetric: string
+ setSelectedMetric: (metric: string) => void
+}
+
+function RolldownStats({ selectedMetric, setSelectedMetric }: RolldownStatsProps) {
+ // Custom tooltip formatter for bundle size differences
+ const bundleSizeDiffTooltipFormatter = (value: any, name: string, props: any) => {
+ const data = props.payload
+ if (!data) return [value, name]
+
+ if (data.isBaseline) {
+ return [`${formatNumberWithCommas(data.currentSize)} bytes (baseline)`, 'Bundle Size']
+ }
+
+ const sign = value >= 0 ? '+' : ''
+ const changeText = `${sign}${formatNumberWithCommas(value)} bytes`
+ const fromTo = `(${formatNumberWithCommas(data.previousSize)} → ${formatNumberWithCommas(data.currentSize)})`
+
+ return [`${changeText} ${fromTo}`, 'Size Change']
+ }
+
+ const rolldownMetrics = [
+ { id: 'bundleSize', name: 'Bundle Size', icon: Package, data: bundleSizeDiffData, color: '#374151' },
+ { id: 'buildTime', name: 'Build Time', icon: Clock, data: buildTimeData, color: '#000000' },
+ ]
+
+ const currentMetric = rolldownMetrics.find(m => m.id === selectedMetric) || rolldownMetrics[0]
+
+ return (
+ <>
+ {/* Metric Navigation */}
+
+
+
+
+
{currentMetric.name}
+
+ {selectedMetric === 'bundleSize' ? (
+
+
+
+
+
+
+
+ {
+ if (value === 0) return 'baseline';
+ return value >= 0 ? `+${formatNumberWithCommas(value)}` : formatNumberWithCommas(value);
+ }}
+ style={{ fontSize: '11px', fill: '#374151' }}
+ />
+ {currentMetric.data.map((entry: any, index: number) => (
+ = 0 ? '#dc2626' : '#16a34a')}
+ />
+ ))}
+ |
+
+ ) : (
+
+
+
+
+
+
+
+ `${value}ms`}
+ style={{ fontSize: '11px', fill: '#374151' }}
+ />
+
+
+
+
+
+
+
+
+ )}
+
+
+
+
+
+
Average Build Time
+
{Math.round(buildTimeData.reduce((sum, item) => sum + item.value, 0) / buildTimeData.length)}ms
+
Across {buildTimeData.length} versions
+
+
+
Latest Bundle Size
+
{formatNumberWithCommas(rolldownStats[rolldownStats.length - 1]?.totalSize || 0)} bytes
+
v{rolldownStats[rolldownStats.length - 1]?.version}
+
+
+
Bundle Size Range
+
{Math.round((Math.max(...rolldownStats.map(s => s.totalSize)) - Math.min(...rolldownStats.map(s => s.totalSize))) / 1024)}KB
+
Size Variation
+
+
+
Versions Tested
+
{rolldownStats.length}
+
{rolldownStats[0]?.version} - {rolldownStats[rolldownStats.length - 1]?.version}
+
+
+
+ >
+ )
+}
+
+export default RolldownStats
\ No newline at end of file
diff --git a/apps/dashboard/src/components/Layout.tsx b/apps/dashboard/src/components/Layout.tsx
new file mode 100644
index 0000000..9914277
--- /dev/null
+++ b/apps/dashboard/src/components/Layout.tsx
@@ -0,0 +1,33 @@
+import { Outlet, Link, useLocation } from 'react-router-dom'
+import { Package, Zap } from 'lucide-react'
+
+function Layout() {
+ const location = useLocation()
+
+ return (
+ <>
+ {/* Page Navigation */}
+
+
+ {/* Render the current route's component */}
+
+ >
+ )
+}
+
+export default Layout
\ No newline at end of file
diff --git a/apps/dashboard/src/pages/MinificationBenchmarksPage.tsx b/apps/dashboard/src/pages/MinificationBenchmarksPage.tsx
new file mode 100644
index 0000000..7485a21
--- /dev/null
+++ b/apps/dashboard/src/pages/MinificationBenchmarksPage.tsx
@@ -0,0 +1,24 @@
+import { BarChart3 } from 'lucide-react'
+import MinificationBenchmarks from '../MinificationBenchmarks'
+
+function MinificationBenchmarksPage() {
+ return (
+
+ )
+}
+
+export default MinificationBenchmarksPage
\ No newline at end of file
diff --git a/apps/dashboard/src/pages/RolldownStatsPage.tsx b/apps/dashboard/src/pages/RolldownStatsPage.tsx
new file mode 100644
index 0000000..1993866
--- /dev/null
+++ b/apps/dashboard/src/pages/RolldownStatsPage.tsx
@@ -0,0 +1,30 @@
+import { useState } from 'react'
+import { BarChart3 } from 'lucide-react'
+import RolldownStats from '../RolldownStats'
+
+function RolldownStatsPage() {
+ const [selectedMetric, setSelectedMetric] = useState('bundleSize')
+
+ return (
+
+ )
+}
+
+export default RolldownStatsPage
\ No newline at end of file
diff --git a/minification-benchmarks-data.json b/minification-benchmarks-data.json
new file mode 100644
index 0000000..871bd74
--- /dev/null
+++ b/minification-benchmarks-data.json
@@ -0,0 +1,2086 @@
+{
+ "react": {
+ "version": "17.0.2",
+ "filePath": "/cjs/react.development.js",
+ "size": 72132,
+ "gzipSize": 19385,
+ "minified": {
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 22641,
+ "minzippedBytes": 8177,
+ "time": 496.9757794,
+ "runs": 5
+ }
+ }
+ },
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 22812,
+ "minzippedBytes": 8186,
+ "time": 12.1451782,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 22843,
+ "minzippedBytes": 8216,
+ "time": 1047.0273668,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 23052,
+ "minzippedBytes": 8255,
+ "time": 274.551738,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 23245,
+ "minzippedBytes": 8396,
+ "time": 3.1556648000000003,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "data": {
+ "minifiedBytes": 23601,
+ "minzippedBytes": 8448,
+ "time": 646.9409106,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 23699,
+ "minzippedBytes": 8542,
+ "time": 14.644507200000001,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 23494,
+ "minzippedBytes": 8628,
+ "time": 2.5089859999999997,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 23993,
+ "minzippedBytes": 8661,
+ "time": 12.6656054,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 25030,
+ "minzippedBytes": 8668,
+ "time": 91.1176644,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 25063,
+ "minzippedBytes": 8739,
+ "time": 117.94929340000002,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 40036,
+ "minzippedBytes": 10858,
+ "time": 12.010004400000001,
+ "runs": 5
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "data": {
+ "minifiedBytes": 40821,
+ "minzippedBytes": 11040,
+ "time": 125.73683779999999,
+ "runs": 5
+ }
+ }
+ }
+ }
+ },
+ "moment": {
+ "version": "2.29.1",
+ "filePath": "/moment.js",
+ "size": 173902,
+ "gzipSize": 36231,
+ "minified": {
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 57728,
+ "minzippedBytes": 18568,
+ "time": 1148.7919532,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 59010,
+ "minzippedBytes": 18689,
+ "time": 693.0884932000001,
+ "runs": 5
+ }
+ }
+ },
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 58424,
+ "minzippedBytes": 18747,
+ "time": 28.7603562,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 58293,
+ "minzippedBytes": 18923,
+ "time": 1228.7687749999998,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "data": {
+ "minifiedBytes": 59703,
+ "minzippedBytes": 19119,
+ "time": 1465.0631562,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 59450,
+ "minzippedBytes": 19244,
+ "time": 8.599861200000001,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 59818,
+ "minzippedBytes": 19333,
+ "time": 20.489266999999998,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 59889,
+ "minzippedBytes": 19480,
+ "time": 5.285310600000001,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 62495,
+ "minzippedBytes": 19569,
+ "time": 214.5709446,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 63011,
+ "minzippedBytes": 19651,
+ "time": 288.9846528,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 61836,
+ "minzippedBytes": 19857,
+ "time": 17.228784400000002,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 95933,
+ "minzippedBytes": 24744,
+ "time": 10.408164399999999,
+ "runs": 5
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "data": {
+ "minifiedBytes": 97632,
+ "minzippedBytes": 24998,
+ "time": 284.4643002,
+ "runs": 5
+ }
+ }
+ }
+ }
+ },
+ "jquery": {
+ "version": "3.5.1",
+ "filePath": "/dist/jquery.js",
+ "size": 287628,
+ "gzipSize": 84498,
+ "minified": {
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 89244,
+ "minzippedBytes": 30856,
+ "time": 920.8123079999999,
+ "runs": 5
+ }
+ }
+ },
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 89173,
+ "minzippedBytes": 30866,
+ "time": 45.252684,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 88448,
+ "minzippedBytes": 30903,
+ "time": 1592.905865,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 89287,
+ "minzippedBytes": 30966,
+ "time": 14.536240600000003,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 89681,
+ "minzippedBytes": 31446,
+ "time": 8.5301818,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 94082,
+ "minzippedBytes": 31470,
+ "time": 313.6579852,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 94258,
+ "minzippedBytes": 31555,
+ "time": 372.5247128,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "data": {
+ "minifiedBytes": 92103,
+ "minzippedBytes": 31799,
+ "time": 2397.5567532,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 90073,
+ "minzippedBytes": 31955,
+ "time": 36.434889,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 92548,
+ "minzippedBytes": 32653,
+ "time": 26.853957199999996,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 92729,
+ "minzippedBytes": 33092,
+ "time": 1357.3189418,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 141454,
+ "minzippedBytes": 40365,
+ "time": 21.9325996,
+ "runs": 5
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "data": {
+ "minifiedBytes": 144144,
+ "minzippedBytes": 40879,
+ "time": 361.25692,
+ "runs": 5
+ }
+ }
+ }
+ }
+ },
+ "vue": {
+ "version": "2.6.12",
+ "filePath": "/dist/vue.js",
+ "size": 342146,
+ "gzipSize": 89668,
+ "minified": {
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 115693,
+ "minzippedBytes": 42730,
+ "time": 61.95181279999999,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 116604,
+ "minzippedBytes": 42870,
+ "time": 1143.4689174,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 113796,
+ "minzippedBytes": 43036,
+ "time": 2205.7858818,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 117008,
+ "minzippedBytes": 43241,
+ "time": 18.3407382,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "data": {
+ "minifiedBytes": 117896,
+ "minzippedBytes": 43925,
+ "time": 2695.911624,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 115605,
+ "minzippedBytes": 44184,
+ "time": 1471.6905998000002,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 117698,
+ "minzippedBytes": 44367,
+ "time": 12.281387200000001,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 118144,
+ "minzippedBytes": 44373,
+ "time": 40.82703780000001,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 126137,
+ "minzippedBytes": 44450,
+ "time": 364.40576219999997,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 126386,
+ "minzippedBytes": 44636,
+ "time": 441.904378,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 121496,
+ "minzippedBytes": 45400,
+ "time": 28.852307000000003,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 193907,
+ "minzippedBytes": 56356,
+ "time": 23.0388784,
+ "runs": 5
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "data": {
+ "minifiedBytes": 197357,
+ "minzippedBytes": 57169,
+ "time": 477.7607884,
+ "runs": 5
+ }
+ }
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "filePath": "/lodash.js",
+ "size": 544089,
+ "gzipSize": 96690,
+ "minified": {
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 68167,
+ "minzippedBytes": 24686,
+ "time": 1688.5425219999997,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 73502,
+ "minzippedBytes": 25022,
+ "time": 1531.4422749999999,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 70408,
+ "minzippedBytes": 25152,
+ "time": 1028.4189818,
+ "runs": 5
+ }
+ }
+ },
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 69811,
+ "minzippedBytes": 25240,
+ "time": 49.850932799999995,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "data": {
+ "minifiedBytes": 72367,
+ "minzippedBytes": 25503,
+ "time": 2082.6992265999997,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 74607,
+ "minzippedBytes": 25862,
+ "time": 332.6733872,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 71177,
+ "minzippedBytes": 25976,
+ "time": 13.872408400000001,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 75035,
+ "minzippedBytes": 26187,
+ "time": 393.1307176,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 72497,
+ "minzippedBytes": 26204,
+ "time": 33.5148896,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 71895,
+ "minzippedBytes": 26498,
+ "time": 11.588117,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 73448,
+ "minzippedBytes": 26655,
+ "time": 22.399882400000003,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 146273,
+ "minzippedBytes": 35944,
+ "time": 12.930271199999998,
+ "runs": 5
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "data": {
+ "minifiedBytes": 148780,
+ "minzippedBytes": 36327,
+ "time": 371.0038666,
+ "runs": 5
+ }
+ }
+ }
+ }
+ },
+ "d3": {
+ "version": "6.3.1",
+ "filePath": "/dist/d3.js",
+ "size": 555767,
+ "gzipSize": 130686,
+ "minified": {
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 263558,
+ "minzippedBytes": 87016,
+ "time": 3926.9689769999995,
+ "runs": 5
+ }
+ }
+ },
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 265215,
+ "minzippedBytes": 87205,
+ "time": 133.5562306,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 267417,
+ "minzippedBytes": 87997,
+ "time": 2338.2048836,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 270779,
+ "minzippedBytes": 88098,
+ "time": 41.199357199999994,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 275347,
+ "minzippedBytes": 88319,
+ "time": 710.7314338,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 276125,
+ "minzippedBytes": 89069,
+ "time": 1019.8746441999999,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 269413,
+ "minzippedBytes": 89880,
+ "time": 33.9365498,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 270207,
+ "minzippedBytes": 90809,
+ "time": 68.2451408,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 273406,
+ "minzippedBytes": 92395,
+ "time": 47.3571204,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 270317,
+ "minzippedBytes": 94166,
+ "time": 2239.5654332,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 393697,
+ "minzippedBytes": 103813,
+ "time": 28.0347076,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "error": {
+ "message": "unknown: Cannot read properties of undefined (reading 'add')",
+ "stack": "TypeError: unknown: Cannot read properties of undefined (reading 'add')\n at ScopeTracker.addReference (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/scope-tracker.js:47:34)\n at ReferencedIdentifier (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:202:26)\n at newFn (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/visitors.js:216:17)\n at bfsTraverse (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/bfs-traverse.js:38:43)\n at Mangler.collect (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:235:7)\n at Mangler.run (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:60:12)\n at PluginPass.exit (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:546:19)\n at newFn (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/visitors.js:175:21)\n at NodePath._call (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/path/context.js:55:20)\n at NodePath.call (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/path/context.js:42:17)",
+ "stage": "minification"
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "error": {
+ "message": "RuntimeException: Unclosed regex pattern at position: 289075 in /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php:660",
+ "stack": "Stack trace:\n#0 /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php(302): JShrink\\Minifier->saveRegex()\n#1 /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php(164): JShrink\\Minifier->loop()\n#2 /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php(139): JShrink\\Minifier->minifyToString()\n#3 /packages/minifiers/minifiers/jshrink/jshrink.php(8): JShrink\\Minifier::minify()\n#4 {main}",
+ "stage": "minification"
+ }
+ }
+ }
+ }
+ },
+ "terser": {
+ "version": "5.30.3",
+ "filePath": "/dist/bundle.min.js",
+ "size": 1009635,
+ "gzipSize": 193763,
+ "minified": {
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 439583,
+ "minzippedBytes": 122123,
+ "time": 45.070734,
+ "runs": 5
+ }
+ }
+ },
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 455518,
+ "minzippedBytes": 123258,
+ "time": 123.34301599999999,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 451192,
+ "minzippedBytes": 123334,
+ "time": 3786.5722984,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 456593,
+ "minzippedBytes": 123346,
+ "time": 2226.7631194,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 472579,
+ "minzippedBytes": 124253,
+ "time": 965.7785854,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 472162,
+ "minzippedBytes": 124609,
+ "time": 778.440208,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 456604,
+ "minzippedBytes": 124884,
+ "time": 37.561242,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 439974,
+ "minzippedBytes": 126454,
+ "time": 2140.9360084,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 458925,
+ "minzippedBytes": 126711,
+ "time": 61.586201599999995,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 466803,
+ "minzippedBytes": 127653,
+ "time": 41.417042800000004,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 625930,
+ "minzippedBytes": 144303,
+ "time": 23.2993394,
+ "runs": 5
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "data": {
+ "minifiedBytes": 633710,
+ "minzippedBytes": 145178,
+ "time": 1337.417236,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "error": {
+ "message": "unknown: Cannot read properties of undefined (reading 'add')",
+ "stack": "TypeError: unknown: Cannot read properties of undefined (reading 'add')\n at ScopeTracker.addReference (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/scope-tracker.js:47:34)\n at ReferencedIdentifier (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:202:26)\n at newFn (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/visitors.js:216:17)\n at bfsTraverse (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/bfs-traverse.js:38:43)\n at Mangler.collect (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:235:7)\n at Mangler.run (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:60:12)\n at PluginPass.exit (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:546:19)\n at newFn (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/visitors.js:175:21)\n at NodePath._call (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/path/context.js:55:20)\n at NodePath.call (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/path/context.js:42:17)",
+ "stage": "minification"
+ }
+ }
+ }
+ }
+ },
+ "three": {
+ "version": "0.124.0",
+ "filePath": "/build/three.js",
+ "size": 1247235,
+ "gzipSize": 248267,
+ "minified": {
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 643030,
+ "minzippedBytes": 158751,
+ "time": 186.72430260000002,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 641593,
+ "minzippedBytes": 159071,
+ "time": 5046.1294526,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 653180,
+ "minzippedBytes": 159165,
+ "time": 2984.6040494,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 645653,
+ "minzippedBytes": 160068,
+ "time": 59.954443000000005,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 644520,
+ "minzippedBytes": 162771,
+ "time": 3252.6717416,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 674490,
+ "minzippedBytes": 163036,
+ "time": 993.953499,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 675428,
+ "minzippedBytes": 163181,
+ "time": 1294.1005918,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 646934,
+ "minzippedBytes": 163747,
+ "time": 88.20525,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 642468,
+ "minzippedBytes": 164615,
+ "time": 51.11986699999999,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 655932,
+ "minzippedBytes": 166210,
+ "time": 53.3063676,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 941063,
+ "minzippedBytes": 191965,
+ "time": 24.0326054,
+ "runs": 5
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "data": {
+ "minifiedBytes": 952007,
+ "minzippedBytes": 193471,
+ "time": 1713.5111401999998,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ }
+ }
+ },
+ "victory": {
+ "version": "35.8.4",
+ "filePath": "/dist/victory.js",
+ "size": 2132722,
+ "gzipSize": 309942,
+ "minified": {
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 694781,
+ "minzippedBytes": 157435,
+ "time": 6578.685240199999,
+ "runs": 5
+ }
+ }
+ },
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 705986,
+ "minzippedBytes": 157754,
+ "time": 261.4591094,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 712872,
+ "minzippedBytes": 158459,
+ "time": 4041.5376894,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 713542,
+ "minzippedBytes": 161467,
+ "time": 89.6914934,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 717114,
+ "minzippedBytes": 165017,
+ "time": 54.302933800000005,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 756623,
+ "minzippedBytes": 166176,
+ "time": 1572.7221264,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 756530,
+ "minzippedBytes": 167579,
+ "time": 1314.1042733999998,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 705934,
+ "minzippedBytes": 175469,
+ "time": 3799.0975919999996,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 725650,
+ "minzippedBytes": 181233,
+ "time": 122.381871,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 727899,
+ "minzippedBytes": 182671,
+ "time": 75.2266094,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 1433404,
+ "minzippedBytes": 221118,
+ "time": 34.2264782,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "error": {
+ "message": "unknown: Cannot read properties of undefined (reading 'add')",
+ "stack": "TypeError: unknown: Cannot read properties of undefined (reading 'add')\n at ScopeTracker.addReference (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/scope-tracker.js:47:34)\n at ReferencedIdentifier (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:202:26)\n at newFn (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/visitors.js:216:17)\n at bfsTraverse (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/bfs-traverse.js:38:43)\n at Mangler.collect (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:235:7)\n at Mangler.run (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:60:12)\n at PluginPass.exit (/node_modules/.pnpm/babel-plugin-minify-mangle-names@0.5.1/node_modules/babel-plugin-minify-mangle-names/lib/index.js:546:19)\n at newFn (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/visitors.js:175:21)\n at NodePath._call (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/path/context.js:55:20)\n at NodePath.call (/node_modules/.pnpm/@babel+traverse@7.12.12/node_modules/@babel/traverse/lib/path/context.js:42:17)",
+ "stage": "minification"
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "error": {
+ "message": "Unexpected token '~'",
+ "stack": "fs-require://2/index.js:594\nreturn function(key,value){if(stack.length>0){var thisPos=stack.indexOf(this)~thisPos?stack.splice(thisPos+1):stack.push(this)~thisPos?keys.splice(thisPos,Infinity,key):keys.push(key)\n ^\n\nSyntaxError: Unexpected token '~'\n at new Script (node:vm:116:7)\n at createScript (node:vm:268:10)\n at Object.runInThisContext (node:vm:316:10)\n at p. (file:///node_modules/.pnpm/fs-require@1.6.0/node_modules/fs-require/dist/index.mjs:1:1165)\n at s (file:///node_modules/.pnpm/fs-require@1.6.0/node_modules/fs-require/dist/index.mjs:1:1657)\n at requireString (/packages/artifacts/utils/require-string.ts:9:9)\n at Artifact.validate (/packages/artifacts/utils/artifact.ts:100:23)\n at (/packages/bench/benchmark/cli.ts:98:2)",
+ "stage": "post-validation"
+ }
+ }
+ }
+ }
+ },
+ "echarts": {
+ "version": "5.1.1",
+ "filePath": "/dist/echarts.js",
+ "size": 3196329,
+ "gzipSize": 684611,
+ "minified": {
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 994070,
+ "minzippedBytes": 321110,
+ "time": 541.0395758000001,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 998445,
+ "minzippedBytes": 321556,
+ "time": 6086.235555,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 1003804,
+ "minzippedBytes": 323648,
+ "time": 203.62955440000002,
+ "runs": 5
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "data": {
+ "minifiedBytes": 991092,
+ "minzippedBytes": 328037,
+ "time": 5145.6046416,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 1069227,
+ "minzippedBytes": 330348,
+ "time": 2683.738582,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 1068386,
+ "minzippedBytes": 331412,
+ "time": 1756.3432927999997,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 1011956,
+ "minzippedBytes": 331621,
+ "time": 188.35948,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 1013910,
+ "minzippedBytes": 331789,
+ "time": 114.91252320000001,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 1024688,
+ "minzippedBytes": 337934,
+ "time": 122.47312159999998,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 1770178,
+ "minzippedBytes": 434451,
+ "time": 45.795898,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ },
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "error": {
+ "message": "RuntimeException: Unclosed regex pattern at position: 37315 in /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php:660",
+ "stack": "Stack trace:\n#0 /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php(302): JShrink\\Minifier->saveRegex()\n#1 /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php(164): JShrink\\Minifier->loop()\n#2 /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php(139): JShrink\\Minifier->minifyToString()\n#3 /packages/minifiers/minifiers/jshrink/jshrink.php(8): JShrink\\Minifier::minify()\n#4 {main}",
+ "stage": "minification"
+ }
+ }
+ }
+ }
+ },
+ "antd": {
+ "version": "4.16.1",
+ "filePath": "/dist/antd.js",
+ "size": 6672611,
+ "gzipSize": 825175,
+ "minified": {
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 2145894,
+ "minzippedBytes": 452400,
+ "time": 682.9486800000001,
+ "runs": 5
+ }
+ }
+ },
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 2220461,
+ "minzippedBytes": 456937,
+ "time": 285.818411,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 2244769,
+ "minzippedBytes": 457352,
+ "time": 7180.1554232,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 2292513,
+ "minzippedBytes": 471796,
+ "time": 138.3470482,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 2420814,
+ "minzippedBytes": 474973,
+ "time": 3144.4844826,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 2420587,
+ "minzippedBytes": 478572,
+ "time": 2524.760631,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 2311632,
+ "minzippedBytes": 488421,
+ "time": 300.129338,
+ "runs": 5
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "data": {
+ "minifiedBytes": 2296786,
+ "minzippedBytes": 491833,
+ "time": 168.6869766,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 4428662,
+ "minzippedBytes": 623370,
+ "time": 73.88052719999999,
+ "runs": 5
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "data": {
+ "minifiedBytes": 4449283,
+ "minzippedBytes": 626675,
+ "time": 7276.2058372,
+ "runs": 5
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ },
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ }
+ }
+ },
+ "typescript": {
+ "version": "4.9.5",
+ "filePath": "/lib/typescript.js",
+ "size": 10945727,
+ "gzipSize": 1884998,
+ "minified": {
+ "oxc-minify": {
+ "minifierPath": "oxc-minify.ts",
+ "version": "0.86.0",
+ "configHash": "adfabf738f",
+ "result": {
+ "data": {
+ "minifiedBytes": 3336798,
+ "minzippedBytes": 855247,
+ "time": 613.7153956,
+ "runs": 5
+ }
+ }
+ },
+ "@swc/core": {
+ "minifierPath": "swc.ts",
+ "version": "1.13.5",
+ "configHash": "349d426e0a",
+ "result": {
+ "data": {
+ "minifiedBytes": 3307908,
+ "minzippedBytes": 859044,
+ "time": 1526.4316551999998,
+ "runs": 5
+ }
+ }
+ },
+ "@tdewolff/minify": {
+ "minifierPath": "tdewolff-minify.ts",
+ "version": "2.24.2",
+ "configHash": "38ae91bbd1",
+ "result": {
+ "data": {
+ "minifiedBytes": 3348166,
+ "minzippedBytes": 875823,
+ "time": 259.181507,
+ "runs": 5
+ }
+ }
+ },
+ "uglify-js (no compress)": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "data": {
+ "minifiedBytes": 3538024,
+ "minzippedBytes": 876535,
+ "time": 4029.2976471999996,
+ "runs": 5
+ }
+ }
+ },
+ "terser (no compress)": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "data": {
+ "minifiedBytes": 3525593,
+ "minzippedBytes": 878642,
+ "time": 5316.191062600001,
+ "runs": 5
+ }
+ }
+ },
+ "esbuild": {
+ "minifierPath": "esbuild.ts",
+ "version": "0.25.9",
+ "configHash": "f235d34b26",
+ "result": {
+ "data": {
+ "minifiedBytes": 3489829,
+ "minzippedBytes": 915590,
+ "time": 490.5950317999999,
+ "runs": 5
+ }
+ }
+ },
+ "@cminify/cminify-linux-x64": {
+ "minifierPath": "cminify.ts",
+ "version": "3.0.1",
+ "configHash": "d14f2a4dad",
+ "result": {
+ "data": {
+ "minifiedBytes": 5853398,
+ "minzippedBytes": 1128072,
+ "time": 111.0135956,
+ "runs": 5
+ }
+ }
+ },
+ "terser": {
+ "minifierPath": "terser.ts",
+ "version": "5.43.1",
+ "configHash": "fb23c51035",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ },
+ "babel-minify": {
+ "minifierPath": "babel-minify.ts",
+ "version": "0.5.2",
+ "configHash": "0774252772",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ },
+ "uglify-js": {
+ "minifierPath": "uglify-js.ts",
+ "version": "3.19.3",
+ "configHash": "4beb4311b5",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ },
+ "tedivm/jshrink": {
+ "minifierPath": "jshrink/index.ts",
+ "version": "1.8.0",
+ "configHash": "97050c77cb",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ },
+ "google-closure-compiler": {
+ "minifierPath": "google-closure-compiler.ts",
+ "version": "20250820.0.0",
+ "configHash": "004f9ddc59",
+ "result": {
+ "error": {
+ "message": "timeout"
+ }
+ }
+ },
+ "bun": {
+ "minifierPath": "bun.ts",
+ "version": "1.2.21",
+ "configHash": "cd9d902c70",
+ "result": {
+ "error": {
+ "message": "Expected values to be strictly equal:\n+ actual - expected\n\n+ 'var x = function () { return \"string\"; };\\r\\n'\n- 'var x = function () { return \"string\"; };\\n'",
+ "stack": "AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:\n+ actual - expected\n\n+ 'var x = function () { return \"string\"; };\\r\\n'\n- 'var x = function () { return \"string\"; };\\n'\n at Object.run (/packages/artifacts/artifacts/typescript/test.ts:13:10)\n at Artifact.validate (/packages/artifacts/utils/artifact.ts:101:15)\n at (/packages/bench/benchmark/cli.ts:98:2)",
+ "stage": "post-validation"
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0e042b2..3c35f7c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -29,6 +29,9 @@ importers:
react-dom:
specifier: ^19.1.1
version: 19.1.1(react@19.1.1)
+ react-router-dom:
+ specifier: ^7.8.2
+ version: 7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
recharts:
specifier: ^2.12.6
version: 2.15.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
@@ -39,6 +42,9 @@ importers:
'@types/react-dom':
specifier: ^19.1.7
version: 19.1.7(@types/react@19.1.11)
+ '@types/react-router-dom':
+ specifier: ^5.3.3
+ version: 5.3.3
rolldown-vite:
specifier: 7.1.4
version: 7.1.4(@types/node@20.19.11)(esbuild@0.25.9)
@@ -512,6 +518,9 @@ packages:
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+ '@types/history@4.7.11':
+ resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==}
+
'@types/node@20.19.11':
resolution: {integrity: sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==}
@@ -520,6 +529,12 @@ packages:
peerDependencies:
'@types/react': ^19.0.0
+ '@types/react-router-dom@5.3.3':
+ resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
+
+ '@types/react-router@5.1.20':
+ resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==}
+
'@types/react@19.1.11':
resolution: {integrity: sha512-lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ==}
@@ -581,6 +596,10 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
+ cookie@1.0.2:
+ resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
+ engines: {node: '>=18'}
+
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
@@ -837,6 +856,23 @@ packages:
react-is@18.3.1:
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
+ react-router-dom@7.8.2:
+ resolution: {integrity: sha512-Z4VM5mKDipal2jQ385H6UBhiiEDlnJPx6jyWsTYoZQdl5TrjxEV2a9yl3Fi60NBJxYzOTGTTHXPi0pdizvTwow==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+
+ react-router@7.8.2:
+ resolution: {integrity: sha512-7M2fR1JbIZ/jFWqelpvSZx+7vd7UlBTfdZqf6OSdF9g6+sfdqJDAWcak6ervbHph200ePlu+7G8LdoiC3ReyAQ==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+
react-smooth@4.0.4:
resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==}
peerDependencies:
@@ -915,6 +951,9 @@ packages:
scheduler@0.26.0:
resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==}
+ set-cookie-parser@2.7.1:
+ resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
+
siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@@ -1344,6 +1383,8 @@ snapshots:
'@types/estree@1.0.8': {}
+ '@types/history@4.7.11': {}
+
'@types/node@20.19.11':
dependencies:
undici-types: 6.21.0
@@ -1353,6 +1394,17 @@ snapshots:
dependencies:
'@types/react': 19.1.11
+ '@types/react-router-dom@5.3.3':
+ dependencies:
+ '@types/history': 4.7.11
+ '@types/react': 19.1.11
+ '@types/react-router': 5.1.20
+
+ '@types/react-router@5.1.20':
+ dependencies:
+ '@types/history': 4.7.11
+ '@types/react': 19.1.11
+
'@types/react@19.1.11':
dependencies:
csstype: 3.1.3
@@ -1445,6 +1497,8 @@ snapshots:
clsx@2.1.1: {}
+ cookie@1.0.2: {}
+
csstype@3.1.3: {}
d3-array@3.2.4:
@@ -1672,6 +1726,20 @@ snapshots:
react-is@18.3.1: {}
+ react-router-dom@7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ dependencies:
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+ react-router: 7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+
+ react-router@7.8.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ dependencies:
+ cookie: 1.0.2
+ react: 19.1.1
+ set-cookie-parser: 2.7.1
+ optionalDependencies:
+ react-dom: 19.1.1(react@19.1.1)
+
react-smooth@4.0.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
dependencies:
fast-equals: 5.2.2
@@ -1771,6 +1839,8 @@ snapshots:
scheduler@0.26.0: {}
+ set-cookie-parser@2.7.1: {}
+
siginfo@2.0.0: {}
source-map-js@1.2.1: {}