fix: harden dashboard model validation

This commit is contained in:
vince 2026-06-18 17:43:55 +02:00
parent 7cfd5b4069
commit 74651a49de
4 changed files with 288 additions and 13 deletions

View file

@ -64,7 +64,7 @@ const DatasourceReferenceSchema = Type.Union([
ExternalDatasourceSchema,
]);
const MetricValueSchema = Type.Object(
const NumericMetricValueSchema = Type.Object(
{
kind: Type.Union([
Type.Literal("percent"),
@ -72,21 +72,34 @@ const MetricValueSchema = Type.Object(
Type.Literal("temperature"),
Type.Literal("latency"),
Type.Literal("number"),
Type.Literal("text"),
]),
value: Type.Union([Type.Number(), Type.String()]),
value: Type.Number(),
unit: Type.Optional(Type.String({ minLength: 1 })),
precision: Type.Optional(Type.Integer({ minimum: 0, maximum: 4 })),
},
{ additionalProperties: false },
);
const TextMetricValueSchema = Type.Object(
{
kind: Type.Literal("text"),
value: Type.String(),
unit: Type.Optional(Type.String({ minLength: 1 })),
},
{ additionalProperties: false },
);
const MetricValueSchema = Type.Union([
NumericMetricValueSchema,
TextMetricValueSchema,
]);
const ThresholdSchema = Type.Object(
{
warning: Type.Optional(Type.Number()),
danger: Type.Optional(Type.Number()),
},
{ additionalProperties: false },
{ additionalProperties: false, minProperties: 1 },
);
export const TelemetryCardSchema = Type.Object(