[charts][draft] Explore selector typing
Deploy preview: https://deploy-preview-18362--material-ui-x.netlify.app/
Bundle size report
:information_source: Using snapshot from parent commit 45c9e35ebfd522d3fba3e84c0ffec0e0b6f017dd (fallback from 206128ae28c2c2e4ed0a2f112d21bb843ae848a6).
Total Size Change: ▼-1.38KB(-0.01%) - Total Gzip Change: ▼-1.57KB(-0.04%) Files: 122 total (0 added, 0 removed, 38 changed)
Show details for 100 more bundles (22 more not shown)
@mui/x-charts/ChartsClipPath parsed: 🔺+18B(+0.21%) gzip: ▼-33B(-0.99%) @mui/x-charts/ChartsOverlay parsed: 🔺+11B(+0.11%) gzip: ▼-32B(-0.84%) @mui/x-charts-pro/BarChartPro parsed: 🔺+8B(0.00%) gzip: ▼-67B(-0.09%) @mui/x-charts-pro/PieChartPro parsed: 🔺+3B(0.00%) gzip: ▼-62B(-0.10%) @mui/x-charts-pro parsed: ▼-445B(-0.13%) gzip: ▼-100B(-0.10%) @mui/x-charts parsed: ▼-304B(-0.11%) gzip: ▼-68B(-0.08%) @mui/x-charts-pro/ScatterChartPro parsed: ▼-155B(-0.08%) gzip: ▼-41B(-0.06%) @mui/x-charts-pro/FunnelChart parsed: ▼-114B(-0.05%) gzip: ▼-58B(-0.09%) @mui/x-charts/ChartsAxis parsed: ▼-33B(-0.05%) gzip: ▼-56B(-0.22%) @mui/x-charts/ChartsXAxis parsed: ▼-33B(-0.05%) gzip: ▼-48B(-0.20%) @mui/x-charts/ChartsYAxis parsed: ▼-33B(-0.05%) gzip: ▼-47B(-0.19%) @mui/x-charts-pro/ChartsToolbarPro parsed: ▼-29B(-0.05%) gzip: ▼-18B(-0.08%) @mui/x-charts/ChartsGrid parsed: ▼-29B(-0.05%) gzip: ▼-46B(-0.22%) @mui/x-charts/ScatterChart parsed: ▼-24B(-0.01%) gzip: ▼-32B(-0.06%) @mui/x-charts/ChartsLegend parsed: ▼-22B(-0.03%) gzip: ▼-50B(-0.20%) @mui/x-charts/ChartsReferenceLine parsed: ▼-22B(-0.04%) gzip: ▼-50B(-0.23%) @mui/x-charts/ChartsSurface parsed: ▼-22B(-0.04%) gzip: ▼-27B(-0.13%) @mui/x-charts-pro/RadarChartPro parsed: ▼-20B(-0.01%) gzip: ▼-57B(-0.10%) @mui/x-charts-pro/ChartDataProviderPro parsed: ▼-17B(-0.01%) gzip: ▼-31B(-0.07%) @mui/x-charts/ChartDataProvider parsed: ▼-17B(-0.02%) gzip: ▼-52B(-0.14%) @mui/x-charts/ChartContainer parsed: ▼-16B(-0.01%) gzip: ▼-63B(-0.16%) @mui/x-charts/ChartsAxisHighlight parsed: ▼-13B(-0.02%) gzip: ▼-44B(-0.20%) @mui/x-charts-pro/ChartZoomSlider parsed: ▼-12B(-0.02%) gzip: ▼-64B(-0.27%) @mui/x-charts/LineChart parsed: ▼-11B(-0.01%) gzip: ▼-46B(-0.07%) @mui/x-charts/Gauge parsed: ▼-9B(-0.01%) gzip: ▼-37B(-0.10%) @mui/x-charts-pro/ChartContainerPro parsed: ▼-8B(-0.01%) gzip: ▼-56B(-0.12%) @mui/x-charts/SparkLineChart parsed: ▼-8B(0.00%) gzip: ▼-68B(-0.12%) @mui/x-charts-pro/Heatmap parsed: ▼-7B(0.00%) gzip: ▼-78B(-0.12%) @mui/x-charts/ChartsTooltip parsed: ▼-5B(-0.01%) gzip: ▼-17B(-0.06%) @mui/x-charts-pro/LineChartPro parsed: ▼-3B(0.00%) gzip: ▼-24B(-0.03%) @mui/x-charts/PieChart parsed: ▼-3B(0.00%) gzip: ▼-6B(-0.01%) @mui/x-charts/RadarChart parsed: ▼-2B(0.00%) gzip: ▼-55B(-0.11%) @mui/x-charts/BarChart parsed: 0B(0.00%) gzip: ▼-36B(-0.06%) @mui/x-charts/ChartsLabel parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsLocalizationProvider parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/ChartsText parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-charts/Toolbar parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid-premium parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid-premium/DataGridPremium parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid-pro parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid-pro/DataGridPro parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-data-grid/DataGrid parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterDateFns parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterDateFnsJalali parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterDayjs parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterLuxon parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterMoment parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterMomentHijri parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/AdapterMomentJalaali parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DateRangeCalendar parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DateRangePicker parsed: 0B(0.00%) gzip: 🔺+2B(0.00%) @mui/x-date-pickers-pro/DateRangePickerDay parsed: 0B(0.00%) gzip: ▼-1B(-0.01%) @mui/x-date-pickers-pro/DateRangePickerDay2 parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DateTimeRangePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DesktopDateRangePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DesktopDateTimeRangePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/DesktopTimeRangePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/LocalizationProvider parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MobileDateRangePicker parsed: 0B(0.00%) gzip: 🔺+2B(0.00%) @mui/x-date-pickers-pro/MobileDateTimeRangePicker parsed: 0B(0.00%) gzip: ▼-1B(0.00%) @mui/x-date-pickers-pro/MobileTimeRangePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MultiInputDateRangeField parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MultiInputDateTimeRangeField parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/MultiInputTimeRangeField parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/PickersRangeCalendarHeader parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/SingleInputDateRangeField parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/SingleInputDateTimeRangeField parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/SingleInputTimeRangeField parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/StaticDateRangePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers-pro/TimeRangePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterDateFns parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterDateFnsBase parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterDateFnsJalali parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterDayjs parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterLuxon parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterMoment parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterMomentHijri parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/AdapterMomentJalaali parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DateCalendar parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DateField parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DatePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DateTimeField parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DateTimePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DayCalendarSkeleton parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DesktopDatePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DesktopDateTimePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DesktopTimePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/DigitalClock parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/LocalizationProvider parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MobileDatePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MobileDateTimePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MobileTimePicker parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MonthCalendar parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/MultiSectionDigitalClock parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/PickerDay2 parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/PickersActionBar parsed: 0B(0.00%) gzip: 0B(0.00%) @mui/x-date-pickers/PickersCalendarHeader parsed: 0B(0.00%) gzip: 0B(0.00%)
Generated by :no_entry_sign: dangerJS against fdc491a52539c4aa8994ec913f5bbb082d4283a2
CodSpeed Performance Report
Merging #18362 will not alter performance
Comparing alexfauquette:type-selectors (fdc491a) with master (c4245ec)
Summary
✅ 9 untouched benchmarks
This seems to work, but we're ditching createSelector which has some caching logic.
Looking at createSelector, it isn't generic. Should we make it generic on the state type so that we can specify it and fix this issue without losing createSelector's functionality, or are we ok with losing that?
This seems to work, but we're ditching
createSelectorwhich has some caching logic.Looking at
createSelector, it isn't generic. Should we make it generic on the state type so that we can specify it and fix this issue without losingcreateSelector's functionality, or are we ok with losing that?
It is generic though, it is typecast with as unknown as CreateSelectorFunction, and that is probably the main issue.
We could try to manually make it generic with our own typings, or we could try to make the type required, so whoever is calling the createSelector has to type the expected params/return.
I tried importing a simpler version of reselect type system. It effectively solves our issue without having to manually type any selector
Superb improvement, great work! 🙏