• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

coreui / coreui-pro / 35587196909
94%
main: 94%

Build:
Build:
LAST BUILD BRANCH: refactor/parity-padding-axes-v6
DEFAULT BRANCH: main
Ran 21 Sep 2026 10:10AM UTC
Jobs 1
Files 76
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 Sep 2026 10:09AM UTC coverage: 94.371% (+0.01%) from 94.361%
35587196909

push

github

web-flow
perf(Calendar): format dates through cached Intl formatters (#1375)

Every cell with formatting options built its own formatter, because
`toLocaleDateString(locale, options)` constructs an `Intl.DateTimeFormat` per
call. A two-panel days render makes 116 such calls: two month names, two
years, 28 weekday headers and 84 day numbers. The other 84 calls, the
aria-labels, pass no options and the engine already caches that path, so they
were never the cost: measured in node, 84 calls with options take 3.17 ms and
84 without take 0.07 ms.

The instance keeps a Map of formatters keyed by locale and options. The locale
is part of the key, so nothing has to invalidate the map when `setConfig()`
changes it, and the pickers, which push a config on every selection, cost
nothing. A spec counts the constructions: a two-panel render builds fewer than
ten formatters and more than zero, which is what a revert would produce.

An unparseable date keeps its old output rather than taking the calendar down.
`Intl.DateTimeFormat.prototype.format` throws `RangeError: Invalid time value`
where `toLocaleDateString` returns the string `Invalid Date`, and a week
selection reaches that: a string that misses every pattern falls through to an
Invalid Date, which `_initializeDates` does not replace because it only catches
null. Measured: without the guard, `new Calendar(el, { selectionType: 'week',
calendarDate: 'next week' })` throws out of the constructor and renders
nothing.

Measured in node over the call pattern of a two-panel render: 3.76 ms to
0.60 ms. What remains is mostly `getMonthsNames()`, which builds twelve
formatters per panel in every view; that is its own change.

5812 of 6426 branches covered (90.45%)

Branch coverage included in aggregate %.

10 of 10 new or added lines in 1 file covered. (100.0%)

11004 of 11393 relevant lines covered (96.59%)

556.34 hits per line

Jobs
ID Job ID Ran Files Coverage
1 35587196909.1 21 Sep 2026 10:10AM UTC 76
94.37
GitHub Action Run
Source Files on build 35587196909
  • Tree
  • List 76
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #35587196909
  • 4ac7a88d on github
  • Prev Build on v6-dev (#35585062326)
  • Next Build on v6-dev (#35587308056)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc