Fixes most of https://github.com/prometheus/prometheus/issues/15202
This should address all areas of the UI except for the autocompletion in the
codemirror-promql text editor. The strategy here is that any time we print or
internally serialize (like for the PromLens tree view) either a metric name or
a label name as part of a selector or in other relevant parts of PromQL, we
check whether it contains characters beyond what was previously supported, and
if so, quote and escape it. In the case of metric names, we also have to move
them from the beginning of the selector into the curly braces.
Signed-off-by: Julius Volz <julius.volz@gmail.com>
Previously, scrapes durations that are very short (e.g., connection refused)
could show as empty (durations under 1 millisecond).
This commit ensures that sub-millisecond durations are correctly
displayed as "0ms" or "1ms" when necessary.
- Adjusted `humanizeDuration` to round sub-millisecond durations to the
nearest millisecond.
- Updated unit tests to verify the correct handling of sub-millisecond
values.
Signed-off-by: Julien <roidelapluie@o11y.eu>