@intentius/chant-lexicon-grafana 0.97.0 → 0.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -5
- package/dist/actions/grafana.d.ts +24 -0
- package/dist/actions/grafana.d.ts.map +1 -0
- package/dist/actions/index.d.ts +2 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/alerting-build.d.ts +128 -0
- package/dist/alerting-build.d.ts.map +1 -0
- package/dist/alerting.d.ts +273 -0
- package/dist/alerting.d.ts.map +1 -0
- package/dist/api/apply.d.ts +156 -0
- package/dist/api/apply.d.ts.map +1 -0
- package/dist/api/bind.d.ts +32 -0
- package/dist/api/bind.d.ts.map +1 -0
- package/dist/api/client.d.ts +76 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/converge.d.ts +33 -0
- package/dist/api/converge.d.ts.map +1 -0
- package/dist/api/dashboards.d.ts +102 -0
- package/dist/api/dashboards.d.ts.map +1 -0
- package/dist/api/datasources.d.ts +26 -0
- package/dist/api/datasources.d.ts.map +1 -0
- package/dist/api/fake-grafana-writes.d.ts +41 -0
- package/dist/api/fake-grafana-writes.d.ts.map +1 -0
- package/dist/api/fake-grafana.d.ts +61 -0
- package/dist/api/fake-grafana.d.ts.map +1 -0
- package/dist/api/folders.d.ts +110 -0
- package/dist/api/folders.d.ts.map +1 -0
- package/dist/api/library-panels.d.ts +52 -0
- package/dist/api/library-panels.d.ts.map +1 -0
- package/dist/build.d.ts +30 -2
- package/dist/build.d.ts.map +1 -1
- package/dist/catalog.d.ts +1 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/codegen/docs.d.ts.map +1 -1
- package/dist/codegen/schema-types.d.ts +3 -3
- package/dist/codegen/schema-types.d.ts.map +1 -1
- package/dist/composites/agent-dashboard.d.ts.map +1 -1
- package/dist/composites/catalog.d.ts.map +1 -1
- package/dist/composites/index.d.ts +4 -2
- package/dist/composites/index.d.ts.map +1 -1
- package/dist/composites/red-dashboard.d.ts +21 -2
- package/dist/composites/red-dashboard.d.ts.map +1 -1
- package/dist/composites/shared.d.ts +7 -0
- package/dist/composites/shared.d.ts.map +1 -1
- package/dist/composites/slo-alert-rules.d.ts +92 -0
- package/dist/composites/slo-alert-rules.d.ts.map +1 -0
- package/dist/config.d.ts +111 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/contact-point-secrets.d.ts +17 -0
- package/dist/contact-point-secrets.d.ts.map +1 -0
- package/dist/dashboard.d.ts +16 -2
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/datasource-refs.d.ts +95 -0
- package/dist/datasource-refs.d.ts.map +1 -0
- package/dist/datasource.d.ts +29 -0
- package/dist/datasource.d.ts.map +1 -1
- package/dist/deep-observe-hooks.d.ts +64 -0
- package/dist/deep-observe-hooks.d.ts.map +1 -0
- package/dist/deep-observe.d.ts +42 -0
- package/dist/deep-observe.d.ts.map +1 -0
- package/dist/describe-resources.d.ts +49 -0
- package/dist/describe-resources.d.ts.map +1 -0
- package/dist/detect.d.ts +28 -1
- package/dist/detect.d.ts.map +1 -1
- package/dist/export-resources.d.ts +38 -0
- package/dist/export-resources.d.ts.map +1 -0
- package/dist/import/alerting.d.ts +40 -0
- package/dist/import/alerting.d.ts.map +1 -0
- package/dist/import/edits.d.ts +47 -0
- package/dist/import/edits.d.ts.map +1 -0
- package/dist/import/embedded.d.ts +14 -0
- package/dist/import/embedded.d.ts.map +1 -0
- package/dist/import/generator.d.ts +60 -0
- package/dist/import/generator.d.ts.map +1 -0
- package/dist/import/live-export.d.ts +108 -0
- package/dist/import/live-export.d.ts.map +1 -0
- package/dist/import/mappings.d.ts +83 -0
- package/dist/import/mappings.d.ts.map +1 -0
- package/dist/import/model.d.ts +98 -0
- package/dist/import/model.d.ts.map +1 -0
- package/dist/import/normalize-alerting.d.ts +26 -0
- package/dist/import/normalize-alerting.d.ts.map +1 -0
- package/dist/import/normalize.d.ts +74 -0
- package/dist/import/normalize.d.ts.map +1 -0
- package/dist/import/parser.d.ts +110 -0
- package/dist/import/parser.d.ts.map +1 -0
- package/dist/import/report.d.ts +26 -0
- package/dist/import/report.d.ts.map +1 -0
- package/dist/import/testdata/fixtures.d.ts +35 -0
- package/dist/import/testdata/fixtures.d.ts.map +1 -0
- package/dist/import/v2.d.ts +72 -0
- package/dist/import/v2.d.ts.map +1 -0
- package/dist/index.d.ts +26 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/integrity.json +18 -10
- package/dist/k8s.d.ts +107 -0
- package/dist/k8s.d.ts.map +1 -0
- package/dist/lint/audit-catalog.d.ts +2 -1
- package/dist/lint/audit-catalog.d.ts.map +1 -1
- package/dist/lint/post-synth/graf101.d.ts +2 -2
- package/dist/lint/post-synth/graf102.d.ts +1 -1
- package/dist/lint/post-synth/graf107.d.ts +1 -1
- package/dist/lint/post-synth/graf108.d.ts +8 -0
- package/dist/lint/post-synth/graf108.d.ts.map +1 -0
- package/dist/lint/post-synth/graf109.d.ts +8 -0
- package/dist/lint/post-synth/graf109.d.ts.map +1 -0
- package/dist/lint/post-synth/graf111.d.ts +8 -0
- package/dist/lint/post-synth/graf111.d.ts.map +1 -0
- package/dist/lint/post-synth/graf112.d.ts +8 -0
- package/dist/lint/post-synth/graf112.d.ts.map +1 -0
- package/dist/lint/post-synth/graf113.d.ts +8 -0
- package/dist/lint/post-synth/graf113.d.ts.map +1 -0
- package/dist/lint/post-synth/graf114.d.ts +8 -0
- package/dist/lint/post-synth/graf114.d.ts.map +1 -0
- package/dist/lint/post-synth/graf115.d.ts +8 -0
- package/dist/lint/post-synth/graf115.d.ts.map +1 -0
- package/dist/lint/post-synth/grafana-helpers.d.ts +7 -5
- package/dist/lint/post-synth/grafana-helpers.d.ts.map +1 -1
- package/dist/lint/post-synth/index.d.ts.map +1 -1
- package/dist/lint/rules/literal-secret.d.ts +7 -3
- package/dist/lint/rules/literal-secret.d.ts.map +1 -1
- package/dist/lsp/hover.d.ts.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/members.d.ts +27 -0
- package/dist/members.d.ts.map +1 -0
- package/dist/meta.json +135 -0
- package/dist/okf/index.md +36 -2
- package/dist/okf/rules/GRAF002.md +3 -2
- package/dist/okf/rules/GRAF101.md +3 -2
- package/dist/okf/rules/GRAF102.md +1 -0
- package/dist/okf/rules/GRAF108.md +11 -0
- package/dist/okf/rules/GRAF109.md +15 -0
- package/dist/okf/rules/GRAF111.md +11 -0
- package/dist/okf/rules/GRAF112.md +16 -0
- package/dist/okf/rules/GRAF113.md +16 -0
- package/dist/okf/rules/GRAF114.md +11 -0
- package/dist/okf/rules/GRAF115.md +11 -0
- package/dist/okf/types/AlertListPanel.md +9 -0
- package/dist/okf/types/AlertQuery.md +9 -0
- package/dist/okf/types/AlertRule.md +9 -0
- package/dist/okf/types/AlertRuleGroup.md +9 -0
- package/dist/okf/types/BarChartPanel.md +9 -0
- package/dist/okf/types/BarGaugePanel.md +9 -0
- package/dist/okf/types/CanvasPanel.md +9 -0
- package/dist/okf/types/ClassicConditionsExpression.md +9 -0
- package/dist/okf/types/ContactPoint.md +14 -0
- package/dist/okf/types/Dashboard.md +1 -0
- package/dist/okf/types/Datasource.md +3 -2
- package/dist/okf/types/ExternalDatasource.md +15 -0
- package/dist/okf/types/FlameGraphPanel.md +9 -0
- package/dist/okf/types/GeomapPanel.md +9 -0
- package/dist/okf/types/HistogramPanel.md +9 -0
- package/dist/okf/types/MathExpression.md +9 -0
- package/dist/okf/types/MuteTiming.md +13 -0
- package/dist/okf/types/NodeGraphPanel.md +9 -0
- package/dist/okf/types/NotificationPolicy.md +9 -0
- package/dist/okf/types/NotificationTemplate.md +9 -0
- package/dist/okf/types/PieChartPanel.md +9 -0
- package/dist/okf/types/ReduceExpression.md +9 -0
- package/dist/okf/types/ResampleExpression.md +9 -0
- package/dist/okf/types/SqlExpression.md +9 -0
- package/dist/okf/types/StateTimelinePanel.md +9 -0
- package/dist/okf/types/StatusHistoryPanel.md +9 -0
- package/dist/okf/types/ThresholdExpression.md +9 -0
- package/dist/okf/types/TrendPanel.md +9 -0
- package/dist/okf/types/XYChartPanel.md +9 -0
- package/dist/op/activities/grafana-apply.d.ts +75 -0
- package/dist/op/activities/grafana-apply.d.ts.map +1 -0
- package/dist/op/activities/index.d.ts +9 -0
- package/dist/op/activities/index.d.ts.map +1 -0
- package/dist/op/builders.d.ts +24 -0
- package/dist/op/builders.d.ts.map +1 -0
- package/dist/ownership.d.ts +67 -0
- package/dist/ownership.d.ts.map +1 -0
- package/dist/panel-options.d.ts +65 -0
- package/dist/panel-options.d.ts.map +1 -0
- package/dist/panels.d.ts +46 -9
- package/dist/panels.d.ts.map +1 -1
- package/dist/pin.d.ts +29 -7
- package/dist/pin.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/promql-check.d.ts +51 -0
- package/dist/promql-check.d.ts.map +1 -0
- package/dist/query.d.ts +9 -8
- package/dist/query.d.ts.map +1 -1
- package/dist/rules/graf101.ts +3 -3
- package/dist/rules/graf102.ts +1 -1
- package/dist/rules/graf107.ts +1 -1
- package/dist/rules/graf108.ts +17 -0
- package/dist/rules/graf109.ts +17 -0
- package/dist/rules/graf111.ts +17 -0
- package/dist/rules/graf112.ts +17 -0
- package/dist/rules/graf113.ts +17 -0
- package/dist/rules/graf114.ts +17 -0
- package/dist/rules/graf115.ts +17 -0
- package/dist/rules/grafana-helpers.ts +15 -8
- package/dist/rules/literal-secret.ts +60 -6
- package/dist/schema/barchart.gen.d.ts +198 -0
- package/dist/schema/barchart.gen.d.ts.map +1 -0
- package/dist/schema/bargauge.gen.d.ts +97 -0
- package/dist/schema/bargauge.gen.d.ts.map +1 -0
- package/dist/schema/canvas.gen.d.ts +152 -0
- package/dist/schema/canvas.gen.d.ts.map +1 -0
- package/dist/schema/dashboard.gen.d.ts +196 -21
- package/dist/schema/dashboard.gen.d.ts.map +1 -1
- package/dist/schema/expr.gen.d.ts +606 -0
- package/dist/schema/expr.gen.d.ts.map +1 -0
- package/dist/schema/gauge.gen.d.ts.map +1 -1
- package/dist/schema/geomap.gen.d.ts +100 -0
- package/dist/schema/geomap.gen.d.ts.map +1 -0
- package/dist/schema/heatmap.gen.d.ts.map +1 -1
- package/dist/schema/histogram.gen.d.ts +132 -0
- package/dist/schema/histogram.gen.d.ts.map +1 -0
- package/dist/schema/index.d.ts +12 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/logs.gen.d.ts +1 -0
- package/dist/schema/logs.gen.d.ts.map +1 -1
- package/dist/schema/loki.gen.d.ts.map +1 -1
- package/dist/schema/nodegraph.gen.d.ts +49 -0
- package/dist/schema/nodegraph.gen.d.ts.map +1 -0
- package/dist/schema/piechart.gen.d.ts +127 -0
- package/dist/schema/piechart.gen.d.ts.map +1 -0
- package/dist/schema/prometheus.gen.d.ts.map +1 -1
- package/dist/schema/stat.gen.d.ts.map +1 -1
- package/dist/schema/statetimeline.gen.d.ts +124 -0
- package/dist/schema/statetimeline.gen.d.ts.map +1 -0
- package/dist/schema/statushistory.gen.d.ts +114 -0
- package/dist/schema/statushistory.gen.d.ts.map +1 -0
- package/dist/schema/table.gen.d.ts +22 -3
- package/dist/schema/table.gen.d.ts.map +1 -1
- package/dist/schema/tempo.gen.d.ts.map +1 -1
- package/dist/schema/text.gen.d.ts.map +1 -1
- package/dist/schema/timeseries.gen.d.ts +5 -1
- package/dist/schema/timeseries.gen.d.ts.map +1 -1
- package/dist/schema/trend.gen.d.ts +180 -0
- package/dist/schema/trend.gen.d.ts.map +1 -0
- package/dist/schema/xychart.gen.d.ts +145 -0
- package/dist/schema/xychart.gen.d.ts.map +1 -0
- package/dist/schema-validate.d.ts +30 -4
- package/dist/schema-validate.d.ts.map +1 -1
- package/dist/serializer.d.ts +11 -3
- package/dist/serializer.d.ts.map +1 -1
- package/dist/skill-defs.d.ts.map +1 -1
- package/dist/skills/chant-grafana-alerting.md +49 -0
- package/dist/skills/chant-grafana-provisioning.md +3 -3
- package/dist/skills/chant-grafana.md +12 -6
- package/dist/spec/fetch-units-cli.d.ts +3 -0
- package/dist/spec/fetch-units-cli.d.ts.map +1 -0
- package/dist/spec/overlay.d.ts +43 -0
- package/dist/spec/overlay.d.ts.map +1 -0
- package/dist/spec/schemas.d.ts +13 -7
- package/dist/spec/schemas.d.ts.map +1 -1
- package/dist/spec/units.d.ts +35 -0
- package/dist/spec/units.d.ts.map +1 -0
- package/dist/spec/units.gen.d.ts +2 -0
- package/dist/spec/units.gen.d.ts.map +1 -0
- package/dist/transformations.d.ts +459 -0
- package/dist/transformations.d.ts.map +1 -0
- package/dist/util.d.ts +6 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/validate-alerting.d.ts +65 -0
- package/dist/validate-alerting.d.ts.map +1 -0
- package/dist/validate-output.d.ts +49 -9
- package/dist/validate-output.d.ts.map +1 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/variables.d.ts +7 -2
- package/dist/variables.d.ts.map +1 -1
- package/package.json +12 -4
- package/src/actions/actions.test.ts +24 -0
- package/src/actions/grafana.ts +40 -0
- package/src/actions/index.ts +1 -0
- package/src/alerting-build.ts +376 -0
- package/src/alerting.e2e.test.ts +212 -0
- package/src/alerting.test.ts +272 -0
- package/src/alerting.ts +435 -0
- package/src/api/apply.test.ts +238 -0
- package/src/api/apply.ts +384 -0
- package/src/api/bind.ts +58 -0
- package/src/api/client.ts +148 -0
- package/src/api/converge.ts +63 -0
- package/src/api/dashboards.ts +247 -0
- package/src/api/datasources.ts +33 -0
- package/src/api/fake-grafana-writes.ts +201 -0
- package/src/api/fake-grafana.ts +186 -0
- package/src/api/folders.ts +265 -0
- package/src/api/library-panels.ts +101 -0
- package/src/build.test.ts +210 -5
- package/src/build.ts +180 -43
- package/src/catalog.ts +86 -2
- package/src/codegen/docs.ts +42 -9
- package/src/codegen/schema-types.ts +16 -6
- package/src/composites/agent-dashboard.ts +6 -3
- package/src/composites/catalog.test.ts +2 -2
- package/src/composites/catalog.ts +82 -0
- package/src/composites/composites.test.ts +73 -9
- package/src/composites/index.ts +4 -2
- package/src/composites/queries.e2e.test.ts +374 -0
- package/src/composites/red-dashboard.ts +83 -12
- package/src/composites/shared.ts +11 -0
- package/src/composites/slo-alert-rules.ts +149 -0
- package/src/config.test.ts +61 -0
- package/src/config.ts +138 -0
- package/src/contact-point-secrets.ts +63 -0
- package/src/dashboard.ts +16 -2
- package/src/datasource-refs.test.ts +56 -0
- package/src/datasource-refs.ts +189 -0
- package/src/datasource.ts +52 -0
- package/src/deep-observe-hooks.ts +252 -0
- package/src/deep-observe.test.ts +265 -0
- package/src/deep-observe.ts +164 -0
- package/src/describe-resources.test.ts +255 -0
- package/src/describe-resources.ts +209 -0
- package/src/detect.ts +79 -2
- package/src/export-resources.test.ts +129 -0
- package/src/export-resources.ts +84 -0
- package/src/generated/lexicon-grafana.json +135 -0
- package/src/import/alerting-roundtrip.test.ts +161 -0
- package/src/import/alerting.ts +500 -0
- package/src/import/edits.ts +95 -0
- package/src/import/embedded.test.ts +45 -0
- package/src/import/embedded.ts +47 -0
- package/src/import/generated-types.e2e.test.ts +118 -0
- package/src/import/generator.test.ts +210 -0
- package/src/import/generator.ts +462 -0
- package/src/import/live-export.ts +264 -0
- package/src/import/mappings.ts +264 -0
- package/src/import/model.ts +110 -0
- package/src/import/normalize-alerting.ts +101 -0
- package/src/import/normalize.test.ts +117 -0
- package/src/import/normalize.ts +364 -0
- package/src/import/parser.test.ts +440 -0
- package/src/import/parser.ts +1236 -0
- package/src/import/report.ts +62 -0
- package/src/import/roundtrip.test.ts +468 -0
- package/src/import/testdata/fixtures.ts +129 -0
- package/src/import/v2.test.ts +292 -0
- package/src/import/v2.ts +803 -0
- package/src/import.e2e.test.ts +31 -84
- package/src/import.test.ts +9 -3
- package/src/index.ts +190 -5
- package/src/k8s.test.ts +98 -0
- package/src/k8s.ts +197 -0
- package/src/lint/audit-catalog.ts +60 -3
- package/src/lint/core-lint.test.ts +43 -0
- package/src/lint/post-synth/graf101.ts +3 -3
- package/src/lint/post-synth/graf102.ts +1 -1
- package/src/lint/post-synth/graf107.ts +1 -1
- package/src/lint/post-synth/graf108.ts +17 -0
- package/src/lint/post-synth/graf109.ts +17 -0
- package/src/lint/post-synth/graf111.ts +17 -0
- package/src/lint/post-synth/graf112.ts +17 -0
- package/src/lint/post-synth/graf113.ts +17 -0
- package/src/lint/post-synth/graf114.ts +17 -0
- package/src/lint/post-synth/graf115.ts +17 -0
- package/src/lint/post-synth/grafana-helpers.ts +15 -8
- package/src/lint/post-synth/index.ts +14 -0
- package/src/lint/post-synth/post-synth.test.ts +235 -11
- package/src/lint/rules/literal-secret.ts +60 -6
- package/src/lint/rules/rules.test.ts +27 -0
- package/src/lsp/completions.test.ts +5 -0
- package/src/lsp/hover.test.ts +7 -0
- package/src/lsp/hover.ts +8 -1
- package/src/members.ts +68 -0
- package/src/observe.e2e.test.ts +255 -0
- package/src/op/activities/grafana-apply.e2e.test.ts +175 -0
- package/src/op/activities/grafana-apply.test.ts +229 -0
- package/src/op/activities/grafana-apply.ts +171 -0
- package/src/op/activities/index.ts +8 -0
- package/src/op/builders.test.ts +40 -0
- package/src/op/builders.ts +34 -0
- package/src/ownership.ts +103 -0
- package/src/panel-options.ts +66 -0
- package/src/panels.test.ts +51 -0
- package/src/panels.ts +148 -10
- package/src/pin.ts +57 -6
- package/src/plugin.test.ts +5 -2
- package/src/plugin.ts +66 -0
- package/src/promql-check.test.ts +108 -0
- package/src/promql-check.ts +189 -0
- package/src/query.ts +13 -8
- package/src/schema/barchart.gen.ts +221 -0
- package/src/schema/bargauge.gen.ts +111 -0
- package/src/schema/canvas.gen.ts +176 -0
- package/src/schema/dashboard.gen.ts +206 -22
- package/src/schema/expr.gen.ts +618 -0
- package/src/schema/gauge.gen.ts +2 -1
- package/src/schema/geomap.gen.ts +112 -0
- package/src/schema/heatmap.gen.ts +2 -1
- package/src/schema/histogram.gen.ts +151 -0
- package/src/schema/index.ts +12 -0
- package/src/schema/logs.gen.ts +3 -1
- package/src/schema/loki.gen.ts +2 -1
- package/src/schema/nodegraph.gen.ts +58 -0
- package/src/schema/piechart.gen.ts +146 -0
- package/src/schema/prometheus.gen.ts +2 -1
- package/src/schema/stat.gen.ts +2 -1
- package/src/schema/statetimeline.gen.ts +143 -0
- package/src/schema/statushistory.gen.ts +132 -0
- package/src/schema/table.gen.ts +27 -4
- package/src/schema/tempo.gen.ts +2 -1
- package/src/schema/text.gen.ts +2 -1
- package/src/schema/timeseries.gen.ts +7 -2
- package/src/schema/trend.gen.ts +208 -0
- package/src/schema/xychart.gen.ts +167 -0
- package/src/schema-overlay.test.ts +282 -0
- package/src/schema-validate.ts +141 -50
- package/src/schema.test.ts +4 -2
- package/src/serializer.test.ts +13 -1
- package/src/serializer.ts +11 -3
- package/src/skill-defs.ts +17 -0
- package/src/skills/chant-grafana-alerting.md +49 -0
- package/src/skills/chant-grafana-provisioning.md +3 -3
- package/src/skills/chant-grafana.md +12 -6
- package/src/spec/fetch-cli.ts +3 -3
- package/src/spec/fetch-units-cli.ts +37 -0
- package/src/spec/overlay/canvas.overlay.json +142 -0
- package/src/spec/overlay/dashboard.overlay.json +378 -0
- package/src/spec/overlay/expr.overlay.json +14 -0
- package/src/spec/overlay/geomap.overlay.json +35 -0
- package/src/spec/overlay/logs.overlay.json +14 -0
- package/src/spec/overlay/nodegraph.overlay.json +31 -0
- package/src/spec/overlay/piechart.overlay.json +17 -0
- package/src/spec/overlay/table.overlay.json +84 -0
- package/src/spec/overlay/timeseries.overlay.json +21 -0
- package/src/spec/overlay/trend.overlay.json +17 -0
- package/src/spec/overlay/xychart.overlay.json +16 -0
- package/src/spec/overlay.ts +105 -0
- package/src/spec/schemas/barchart.jsonschema.json +419 -0
- package/src/spec/schemas/bargauge.jsonschema.json +224 -0
- package/src/spec/schemas/canvas.jsonschema.json +356 -0
- package/src/spec/schemas/dashboardv2.jsonschema.json +3387 -0
- package/src/spec/schemas/expr.jsonschema.json +987 -0
- package/src/spec/schemas/geomap.jsonschema.json +220 -0
- package/src/spec/schemas/histogram.jsonschema.json +308 -0
- package/src/spec/schemas/nodegraph.jsonschema.json +77 -0
- package/src/spec/schemas/piechart.jsonschema.json +275 -0
- package/src/spec/schemas/statetimeline.jsonschema.json +324 -0
- package/src/spec/schemas/statushistory.jsonschema.json +292 -0
- package/src/spec/schemas/trend.jsonschema.json +449 -0
- package/src/spec/schemas/xychart.jsonschema.json +428 -0
- package/src/spec/schemas.ts +22 -10
- package/src/spec/units.gen.ts +281 -0
- package/src/spec/units.ts +77 -0
- package/src/transformations.test.ts +65 -0
- package/src/transformations.ts +574 -0
- package/src/util.ts +8 -0
- package/src/validate-alerting.test.ts +255 -0
- package/src/validate-alerting.ts +428 -0
- package/src/validate-output.ts +332 -101
- package/src/validate.ts +14 -0
- package/src/variables.ts +7 -2
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Panel transformations, typed per transformer.
|
|
3
|
+
*
|
|
4
|
+
* The dashboard schema types a transformation as `{ id: string; options:
|
|
5
|
+
* {} }`: foundation-sdk v0.0.20 has no schema for any transformer's options.
|
|
6
|
+
* The option types below are transcribed from the transformers Grafana
|
|
7
|
+
* v13.2.2 registers (tag v13.2.2, commit
|
|
8
|
+
* 3db12332b66497c31f8ad2a5fb0eb0fe0ca05a7e):
|
|
9
|
+
*
|
|
10
|
+
* - `packages/grafana-data/src/transformations/transformers/<id>.ts` for the
|
|
11
|
+
* standard transformers, `transformers/ids.ts` for their ids;
|
|
12
|
+
* - `public/app/features/transformers/**` for the ones the app registers
|
|
13
|
+
* (heatmap, extractFields, configFromData, rowsToFields, joinByLabels,
|
|
14
|
+
* partitionByValues, prepareTimeSeries, timeSeriesTable, regression,
|
|
15
|
+
* smoothing, spatial, fieldLookup);
|
|
16
|
+
* - enums from `fieldReducer.ts` (ReducerID), `utils/binaryOperators.ts`,
|
|
17
|
+
* `utils/unaryOperators.ts`, `types/dataFrame.ts` (FieldType,
|
|
18
|
+
* EnumFieldConfig), `types/data.ts` (NullValueMode),
|
|
19
|
+
* `types/transformations.ts` (SpecialValue),
|
|
20
|
+
* `transformers/joinShared.ts` (JoinMode) and
|
|
21
|
+
* `matchers/nameMatcher.ts` (RegexpOrNamesMatcherOptions).
|
|
22
|
+
*
|
|
23
|
+
* Every top-level option is optional: Grafana spreads each transformer's
|
|
24
|
+
* `defaultOptions` under the stored options before it runs
|
|
25
|
+
* (`transformDataFrame`), so a dashboard stores only what was set. Nested
|
|
26
|
+
* objects keep Grafana's required fields.
|
|
27
|
+
*
|
|
28
|
+
* A transformation whose id Grafana doesn't register (a plugin's), or whose
|
|
29
|
+
* options this file doesn't know, goes through `customTransformation()`.
|
|
30
|
+
*/
|
|
31
|
+
import type { MatcherConfig } from "./schema/dashboard.gen.js";
|
|
32
|
+
import type { HeatmapCalculationOptions } from "./schema/heatmap.gen.js";
|
|
33
|
+
import type { FrameGeometrySource } from "./schema/geomap.gen.js";
|
|
34
|
+
/** `ReducerID` in `fieldReducer.ts`. */
|
|
35
|
+
export type ReducerId = "sum" | "max" | "min" | "logmin" | "mean" | "variance" | "stdDev" | "last" | "median" | "first" | "count" | "countAll" | "range" | "diff" | "diffperc" | "delta" | "step" | "firstNotNull" | "lastNotNull" | "changeCount" | "distinctCount" | "allIsZero" | "allIsNull" | "allValues" | "uniqueValues" | `p${Percentile}`;
|
|
36
|
+
type Digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
|
|
37
|
+
type NonZeroDigit = Exclude<Digit, "0">;
|
|
38
|
+
/** p1 to p99. */
|
|
39
|
+
type Percentile = NonZeroDigit | `${NonZeroDigit}${Digit}`;
|
|
40
|
+
/** `FieldType` in `types/dataFrame.ts`. */
|
|
41
|
+
export type FieldTypeId = "time" | "number" | "string" | "boolean" | "trace" | "geo" | "enum" | "other" | "frame" | "nestedFrames";
|
|
42
|
+
/** `SpecialValue` in `types/transformations.ts`. */
|
|
43
|
+
export type SpecialValue = "true" | "false" | "null" | "empty" | "zero";
|
|
44
|
+
/** `NullValueMode` in `types/data.ts`. */
|
|
45
|
+
export type NullValueMode = "null" | "connected" | "null as zero";
|
|
46
|
+
/** `RegexpOrNamesMatcherOptions` in `matchers/nameMatcher.ts`. */
|
|
47
|
+
export interface RegexpOrNamesMatcherOptions {
|
|
48
|
+
pattern?: string;
|
|
49
|
+
names?: string[];
|
|
50
|
+
variable?: string;
|
|
51
|
+
}
|
|
52
|
+
/** `calculateField.ts`. */
|
|
53
|
+
export interface CalculateFieldOptions {
|
|
54
|
+
timeSeries?: boolean;
|
|
55
|
+
mode?: "reduceRow" | "cumulativeFunctions" | "windowFunctions" | "binary" | "unary" | "index";
|
|
56
|
+
reduce?: {
|
|
57
|
+
include?: string[];
|
|
58
|
+
reducer: ReducerId;
|
|
59
|
+
nullValueMode?: NullValueMode;
|
|
60
|
+
};
|
|
61
|
+
window?: {
|
|
62
|
+
field?: string;
|
|
63
|
+
reducer: ReducerId;
|
|
64
|
+
windowSize?: number;
|
|
65
|
+
windowSizeMode?: "percentage" | "fixed";
|
|
66
|
+
windowAlignment?: "trailing" | "centered";
|
|
67
|
+
};
|
|
68
|
+
cumulative?: {
|
|
69
|
+
field?: string;
|
|
70
|
+
reducer: ReducerId;
|
|
71
|
+
};
|
|
72
|
+
binary?: {
|
|
73
|
+
left: CalculateFieldBinaryValue;
|
|
74
|
+
operator: "+" | "-" | "/" | "*";
|
|
75
|
+
right: CalculateFieldBinaryValue;
|
|
76
|
+
};
|
|
77
|
+
unary?: {
|
|
78
|
+
operator: "abs" | "exp" | "ln" | "round" | "floor" | "ceil" | "percent";
|
|
79
|
+
fieldName: string;
|
|
80
|
+
};
|
|
81
|
+
index?: {
|
|
82
|
+
asPercentile: boolean;
|
|
83
|
+
};
|
|
84
|
+
replaceFields?: boolean;
|
|
85
|
+
alias?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* One side of a binary calculation. Grafana 10.3 and later store
|
|
89
|
+
* `{ fixed }` or `{ matcher: { id: "byName", options } }`; older
|
|
90
|
+
* dashboards store the field name or number as a plain string, which
|
|
91
|
+
* Grafana still reads.
|
|
92
|
+
*/
|
|
93
|
+
export type CalculateFieldBinaryValue = string | {
|
|
94
|
+
fixed?: string;
|
|
95
|
+
matcher?: {
|
|
96
|
+
id?: string;
|
|
97
|
+
options?: string;
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
/** `concat.ts`. */
|
|
101
|
+
export interface ConcatenateOptions {
|
|
102
|
+
frameNameMode?: "drop" | "field" | "label";
|
|
103
|
+
frameNameLabel?: string;
|
|
104
|
+
}
|
|
105
|
+
/** `convertFieldType.ts`. */
|
|
106
|
+
export interface ConvertFieldTypeOptions {
|
|
107
|
+
conversions?: Array<{
|
|
108
|
+
targetField?: string;
|
|
109
|
+
destinationType?: FieldTypeId;
|
|
110
|
+
dateFormat?: string;
|
|
111
|
+
joinWith?: string;
|
|
112
|
+
timezone?: string;
|
|
113
|
+
enumConfig?: {
|
|
114
|
+
text?: string[];
|
|
115
|
+
color?: string[];
|
|
116
|
+
icon?: string[];
|
|
117
|
+
description?: string[];
|
|
118
|
+
};
|
|
119
|
+
}>;
|
|
120
|
+
}
|
|
121
|
+
/** `convertFrameType.ts`. */
|
|
122
|
+
export interface ConvertFrameTypeOptions {
|
|
123
|
+
targetType?: "exemplar" | "timeRegion" | "annotation";
|
|
124
|
+
}
|
|
125
|
+
/** `filter.ts` (filterFields and filterFrames). */
|
|
126
|
+
export interface FilterOptions {
|
|
127
|
+
include?: MatcherConfig;
|
|
128
|
+
exclude?: MatcherConfig;
|
|
129
|
+
}
|
|
130
|
+
/** `filterByName.ts`. */
|
|
131
|
+
export interface FilterFieldsByNameOptions {
|
|
132
|
+
include?: RegexpOrNamesMatcherOptions;
|
|
133
|
+
exclude?: RegexpOrNamesMatcherOptions;
|
|
134
|
+
byVariable?: boolean;
|
|
135
|
+
}
|
|
136
|
+
/** `filterByRefId.ts`. */
|
|
137
|
+
export interface FilterByRefIdOptions {
|
|
138
|
+
include?: string;
|
|
139
|
+
exclude?: string;
|
|
140
|
+
}
|
|
141
|
+
/** `filterByValue.ts`. `config` is a value matcher: `{ id: "greater", options: { value: 10 } }`. */
|
|
142
|
+
export interface FilterByValueOptions {
|
|
143
|
+
filters?: Array<{
|
|
144
|
+
fieldName: string;
|
|
145
|
+
config: MatcherConfig;
|
|
146
|
+
}>;
|
|
147
|
+
type?: "exclude" | "include";
|
|
148
|
+
match?: "all" | "any";
|
|
149
|
+
}
|
|
150
|
+
/** `formatString.ts`. */
|
|
151
|
+
export interface FormatStringOptions {
|
|
152
|
+
stringField?: string;
|
|
153
|
+
substringStart?: number;
|
|
154
|
+
substringEnd?: number;
|
|
155
|
+
outputFormat?: "Upper Case" | "Lower Case" | "Sentence Case" | "Title Case" | "Pascal Case" | "Camel Case" | "Snake Case" | "Kebab Case" | "Trim" | "Substring";
|
|
156
|
+
}
|
|
157
|
+
/** `formatTime.ts`. `useTimezone` is in its `defaultOptions`. */
|
|
158
|
+
export interface FormatTimeOptions {
|
|
159
|
+
timeField?: string;
|
|
160
|
+
outputFormat?: string;
|
|
161
|
+
timezone?: string;
|
|
162
|
+
useTimezone?: boolean;
|
|
163
|
+
}
|
|
164
|
+
/** `groupBy.ts`, per field. */
|
|
165
|
+
export interface GroupByFieldOptions {
|
|
166
|
+
aggregations: ReducerId[];
|
|
167
|
+
operation: "aggregate" | "groupby" | null;
|
|
168
|
+
}
|
|
169
|
+
/** `groupBy.ts`. */
|
|
170
|
+
export interface GroupByOptions {
|
|
171
|
+
fields?: Record<string, GroupByFieldOptions>;
|
|
172
|
+
}
|
|
173
|
+
/** `groupToNestedTable.ts`: per-field options, or (V2) matcher rules. */
|
|
174
|
+
export interface GroupToNestedTableOptions {
|
|
175
|
+
showSubframeHeaders?: boolean;
|
|
176
|
+
expandAllRows?: boolean;
|
|
177
|
+
fields?: Record<string, GroupByFieldOptions>;
|
|
178
|
+
rules?: Array<{
|
|
179
|
+
matcher: MatcherConfig;
|
|
180
|
+
operation: "aggregate" | "groupby" | null;
|
|
181
|
+
aggregations: ReducerId[];
|
|
182
|
+
keepNestedField?: boolean;
|
|
183
|
+
}>;
|
|
184
|
+
}
|
|
185
|
+
/** `groupingToMatrix.ts`. */
|
|
186
|
+
export interface GroupingToMatrixOptions {
|
|
187
|
+
columnField?: string;
|
|
188
|
+
rowField?: string;
|
|
189
|
+
valueField?: string;
|
|
190
|
+
emptyValue?: SpecialValue;
|
|
191
|
+
}
|
|
192
|
+
/** `histogram.ts`. The editor stores sizes and offsets as numbers or strings. */
|
|
193
|
+
export interface HistogramOptions {
|
|
194
|
+
bucketCount?: number;
|
|
195
|
+
bucketSize?: number | string;
|
|
196
|
+
bucketOffset?: number | string;
|
|
197
|
+
combine?: boolean;
|
|
198
|
+
}
|
|
199
|
+
/** `joinByField.ts` (and the deprecated `seriesToColumns`). */
|
|
200
|
+
export interface JoinByFieldOptions {
|
|
201
|
+
byField?: string;
|
|
202
|
+
mode?: "outer" | "inner" | "outerTabular";
|
|
203
|
+
}
|
|
204
|
+
/** `labelsToFields.ts`. */
|
|
205
|
+
export interface LabelsToFieldsOptions {
|
|
206
|
+
mode?: "columns" | "rows";
|
|
207
|
+
keepLabels?: string[];
|
|
208
|
+
valueLabel?: string;
|
|
209
|
+
}
|
|
210
|
+
/** `limit.ts`. A string is a variable reference. */
|
|
211
|
+
export interface LimitOptions {
|
|
212
|
+
limitField?: number | string;
|
|
213
|
+
}
|
|
214
|
+
/** `order.ts`. */
|
|
215
|
+
export interface OrderOptions {
|
|
216
|
+
indexByName?: Record<string, number>;
|
|
217
|
+
orderByMode?: "manual" | "auto";
|
|
218
|
+
orderBy?: Array<{
|
|
219
|
+
type: "name" | "label";
|
|
220
|
+
name?: string;
|
|
221
|
+
desc?: boolean;
|
|
222
|
+
}>;
|
|
223
|
+
}
|
|
224
|
+
/** `rename.ts`. */
|
|
225
|
+
export interface RenameOptions {
|
|
226
|
+
renameByName?: Record<string, string>;
|
|
227
|
+
}
|
|
228
|
+
/** `organize.ts`: order, rename and exclude in one. */
|
|
229
|
+
export interface OrganizeOptions extends OrderOptions, RenameOptions {
|
|
230
|
+
excludeByName?: Record<string, boolean>;
|
|
231
|
+
includeByName?: Record<string, boolean>;
|
|
232
|
+
}
|
|
233
|
+
/** `reduce.ts`. `fields` limits which fields are reduced. */
|
|
234
|
+
export interface ReduceOptions {
|
|
235
|
+
reducers?: ReducerId[];
|
|
236
|
+
fields?: MatcherConfig;
|
|
237
|
+
mode?: "seriesToRows" | "reduceFields";
|
|
238
|
+
includeTimeField?: boolean;
|
|
239
|
+
labelsToFields?: boolean;
|
|
240
|
+
}
|
|
241
|
+
/** `renameByRegex.ts`. */
|
|
242
|
+
export interface RenameByRegexOptions {
|
|
243
|
+
regex?: string;
|
|
244
|
+
renamePattern?: string;
|
|
245
|
+
}
|
|
246
|
+
/** `sortBy.ts`. Grafana uses only the first entry. */
|
|
247
|
+
export interface SortByOptions {
|
|
248
|
+
sort?: Array<{
|
|
249
|
+
field: string;
|
|
250
|
+
desc?: boolean;
|
|
251
|
+
index?: number;
|
|
252
|
+
}>;
|
|
253
|
+
}
|
|
254
|
+
/** `transpose.ts`. */
|
|
255
|
+
export interface TransposeOptions {
|
|
256
|
+
firstFieldName?: string;
|
|
257
|
+
restFieldsName?: string;
|
|
258
|
+
emptyValue?: SpecialValue;
|
|
259
|
+
}
|
|
260
|
+
/** A transformer that takes no options (merge, noop, seriesToRows, ensureColumns). */
|
|
261
|
+
export type NoOptions = Record<string, never>;
|
|
262
|
+
/** `fieldToConfigMapping/fieldToConfigMapping.ts`. */
|
|
263
|
+
export interface FieldToConfigMapping {
|
|
264
|
+
fieldName: string;
|
|
265
|
+
reducerId?: ReducerId;
|
|
266
|
+
handlerKey: string | null;
|
|
267
|
+
handlerArguments?: {
|
|
268
|
+
threshold?: {
|
|
269
|
+
color?: string;
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/** `configFromQuery/configFromQuery.ts`. */
|
|
274
|
+
export interface ConfigFromDataOptions {
|
|
275
|
+
configRefId?: string;
|
|
276
|
+
mappings?: FieldToConfigMapping[];
|
|
277
|
+
applyTo?: MatcherConfig;
|
|
278
|
+
}
|
|
279
|
+
/** `extractFields/types.ts`. */
|
|
280
|
+
export interface ExtractFieldsOptions {
|
|
281
|
+
source?: string;
|
|
282
|
+
jsonPaths?: Array<{
|
|
283
|
+
path: string;
|
|
284
|
+
alias?: string;
|
|
285
|
+
}>;
|
|
286
|
+
delimiter?: string;
|
|
287
|
+
regExp?: string;
|
|
288
|
+
format?: "json" | "kvp" | "auto" | "regexp" | "delimiter";
|
|
289
|
+
replace?: boolean;
|
|
290
|
+
keepTime?: boolean;
|
|
291
|
+
}
|
|
292
|
+
/** `lookupGazetteer/fieldLookup.ts`. */
|
|
293
|
+
export interface FieldLookupOptions {
|
|
294
|
+
lookupField?: string;
|
|
295
|
+
gazetteer?: string;
|
|
296
|
+
}
|
|
297
|
+
/** `calculateHeatmap/heatmap.ts`: the heatmap panel's calculation options, plus `keepOriginalData`. */
|
|
298
|
+
export interface HeatmapTransformOptions extends HeatmapCalculationOptions {
|
|
299
|
+
keepOriginalData?: boolean;
|
|
300
|
+
}
|
|
301
|
+
/** `joinByLabels/joinByLabels.ts`. */
|
|
302
|
+
export interface JoinByLabelsOptions {
|
|
303
|
+
value?: string;
|
|
304
|
+
join?: string[];
|
|
305
|
+
}
|
|
306
|
+
/** `partitionByValues/partitionByValues.ts`. */
|
|
307
|
+
export interface PartitionByValuesOptions {
|
|
308
|
+
fields?: string[];
|
|
309
|
+
naming?: {
|
|
310
|
+
asLabels?: boolean;
|
|
311
|
+
append?: boolean;
|
|
312
|
+
withNames?: boolean;
|
|
313
|
+
separator1?: string;
|
|
314
|
+
separator2?: string;
|
|
315
|
+
};
|
|
316
|
+
keepFields?: boolean;
|
|
317
|
+
}
|
|
318
|
+
/** `prepareTimeSeries/prepareTimeSeries.ts`. */
|
|
319
|
+
export interface PrepareTimeSeriesOptions {
|
|
320
|
+
format?: "wide" | "long" | "multi" | "many";
|
|
321
|
+
}
|
|
322
|
+
/** `regression/regression.ts`. */
|
|
323
|
+
export interface RegressionOptions {
|
|
324
|
+
modelType?: "linear" | "polynomial";
|
|
325
|
+
degree?: number;
|
|
326
|
+
xFieldName?: string;
|
|
327
|
+
yFieldName?: string;
|
|
328
|
+
predictionCount?: number;
|
|
329
|
+
}
|
|
330
|
+
/** `rowsToFields/rowsToFields.ts`. */
|
|
331
|
+
export interface RowsToFieldsOptions {
|
|
332
|
+
nameField?: string;
|
|
333
|
+
valueField?: string;
|
|
334
|
+
mappings?: FieldToConfigMapping[];
|
|
335
|
+
}
|
|
336
|
+
/** `smoothing/smoothing.ts`. */
|
|
337
|
+
export interface SmoothingOptions {
|
|
338
|
+
resolution?: number;
|
|
339
|
+
}
|
|
340
|
+
/** `spatial/models.gen.ts`. */
|
|
341
|
+
export interface SpatialOptions {
|
|
342
|
+
action?: "prepare" | "calculate" | "modify";
|
|
343
|
+
source?: FrameGeometrySource;
|
|
344
|
+
calculate?: {
|
|
345
|
+
calc?: "heading" | "distance" | "area";
|
|
346
|
+
field?: string;
|
|
347
|
+
};
|
|
348
|
+
modify?: {
|
|
349
|
+
op: "asLine" | "lineBuilder";
|
|
350
|
+
target?: FrameGeometrySource;
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
/** `timeSeriesTable/timeSeriesTableTransformer.ts`: per query refId. */
|
|
354
|
+
export type TimeSeriesTableOptions = Record<string, {
|
|
355
|
+
stat?: ReducerId;
|
|
356
|
+
timeField?: string;
|
|
357
|
+
inlineStat?: boolean;
|
|
358
|
+
}>;
|
|
359
|
+
/** Every transformer Grafana v13.2.2 registers, by the id a dashboard stores, and its options. */
|
|
360
|
+
export interface TransformationOptionsById {
|
|
361
|
+
calculateField: CalculateFieldOptions;
|
|
362
|
+
concatenate: ConcatenateOptions;
|
|
363
|
+
configFromData: ConfigFromDataOptions;
|
|
364
|
+
convertFieldType: ConvertFieldTypeOptions;
|
|
365
|
+
convertFrameType: ConvertFrameTypeOptions;
|
|
366
|
+
ensureColumns: NoOptions;
|
|
367
|
+
extractFields: ExtractFieldsOptions;
|
|
368
|
+
fieldLookup: FieldLookupOptions;
|
|
369
|
+
filterByRefId: FilterByRefIdOptions;
|
|
370
|
+
filterByValue: FilterByValueOptions;
|
|
371
|
+
filterFields: FilterOptions;
|
|
372
|
+
filterFieldsByName: FilterFieldsByNameOptions;
|
|
373
|
+
filterFrames: FilterOptions;
|
|
374
|
+
formatString: FormatStringOptions;
|
|
375
|
+
formatTime: FormatTimeOptions;
|
|
376
|
+
groupBy: GroupByOptions;
|
|
377
|
+
groupToNestedTable: GroupToNestedTableOptions;
|
|
378
|
+
groupingToMatrix: GroupingToMatrixOptions;
|
|
379
|
+
heatmap: HeatmapTransformOptions;
|
|
380
|
+
histogram: HistogramOptions;
|
|
381
|
+
joinByField: JoinByFieldOptions;
|
|
382
|
+
joinByLabels: JoinByLabelsOptions;
|
|
383
|
+
labelsToFields: LabelsToFieldsOptions;
|
|
384
|
+
limit: LimitOptions;
|
|
385
|
+
merge: NoOptions;
|
|
386
|
+
noop: NoOptions;
|
|
387
|
+
order: OrderOptions;
|
|
388
|
+
organize: OrganizeOptions;
|
|
389
|
+
partitionByValues: PartitionByValuesOptions;
|
|
390
|
+
prepareTimeSeries: PrepareTimeSeriesOptions;
|
|
391
|
+
reduce: ReduceOptions;
|
|
392
|
+
regression: RegressionOptions;
|
|
393
|
+
rename: RenameOptions;
|
|
394
|
+
renameByRegex: RenameByRegexOptions;
|
|
395
|
+
rowsToFields: RowsToFieldsOptions;
|
|
396
|
+
/** Deprecated in Grafana for `joinByField`, which takes the same options. */
|
|
397
|
+
seriesToColumns: JoinByFieldOptions;
|
|
398
|
+
seriesToRows: NoOptions;
|
|
399
|
+
smoothing: SmoothingOptions;
|
|
400
|
+
sortBy: SortByOptions;
|
|
401
|
+
spatial: SpatialOptions;
|
|
402
|
+
timeSeriesTable: TimeSeriesTableOptions;
|
|
403
|
+
transpose: TransposeOptions;
|
|
404
|
+
}
|
|
405
|
+
export type TransformationId = keyof TransformationOptionsById;
|
|
406
|
+
/** The fields every transformation has besides its id and options (`DataTransformerConfig`). */
|
|
407
|
+
export interface TransformationCommon {
|
|
408
|
+
/** A disabled transformation is skipped. */
|
|
409
|
+
disabled?: boolean;
|
|
410
|
+
/** Apply it only to the frames this matcher selects. */
|
|
411
|
+
filter?: MatcherConfig;
|
|
412
|
+
/** Where its input frames come from. */
|
|
413
|
+
topic?: "series" | "annotations" | "alertStates";
|
|
414
|
+
}
|
|
415
|
+
/** A transformation Grafana registers, with its options typed. */
|
|
416
|
+
export type KnownTransformation = {
|
|
417
|
+
[K in TransformationId]: TransformationCommon & {
|
|
418
|
+
id: K;
|
|
419
|
+
options?: TransformationOptionsById[K];
|
|
420
|
+
};
|
|
421
|
+
}[TransformationId];
|
|
422
|
+
declare const custom: unique symbol;
|
|
423
|
+
/** A transformation built by `customTransformation()`: any id, untyped options. */
|
|
424
|
+
export interface CustomTransformation extends TransformationCommon {
|
|
425
|
+
id: string;
|
|
426
|
+
options: Record<string, unknown>;
|
|
427
|
+
/** Type-only: a plain object literal can't pose as one, so a typo in a known id or option is still an error. */
|
|
428
|
+
readonly [custom]: true;
|
|
429
|
+
}
|
|
430
|
+
/** What a panel's `transformations` takes. */
|
|
431
|
+
export type Transformation = KnownTransformation | CustomTransformation;
|
|
432
|
+
/**
|
|
433
|
+
* A transformation Grafana registers, typed by its id:
|
|
434
|
+
*
|
|
435
|
+
* ```ts
|
|
436
|
+
* transformation("organize", { excludeByName: { Time: true }, renameByName: { Value: "Requests" } })
|
|
437
|
+
* ```
|
|
438
|
+
*
|
|
439
|
+
* The same as writing `{ id: "organize", options: { ... } }` in `transformations`.
|
|
440
|
+
*/
|
|
441
|
+
export declare function transformation<K extends TransformationId>(id: K, options?: TransformationOptionsById[K], common?: TransformationCommon): Extract<KnownTransformation, {
|
|
442
|
+
id: K;
|
|
443
|
+
}>;
|
|
444
|
+
/**
|
|
445
|
+
* A transformation with any id and options, for a plugin's transformer, or
|
|
446
|
+
* options newer than the ones typed here. Written to the dashboard as given,
|
|
447
|
+
* with any other keys in `common` beside them.
|
|
448
|
+
*/
|
|
449
|
+
export declare function customTransformation(id: string, options?: Record<string, unknown>, common?: TransformationCommon & Record<string, unknown>): CustomTransformation;
|
|
450
|
+
export declare const TRANSFORMATION_IDS: readonly TransformationId[];
|
|
451
|
+
/**
|
|
452
|
+
* Why a transformation as stored can't be written as a typed one, or
|
|
453
|
+
* undefined when it can: an id Grafana doesn't register, a key beside
|
|
454
|
+
* `options` the config doesn't have, or an option key its transformer
|
|
455
|
+
* doesn't take.
|
|
456
|
+
*/
|
|
457
|
+
export declare function untypedTransformationReason(t: Record<string, unknown>): string | undefined;
|
|
458
|
+
export {};
|
|
459
|
+
//# sourceMappingURL=transformations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformations.d.ts","sourceRoot":"","sources":["../src/transformations.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
export type DeepPartial<T> = T extends (infer U)[] ? DeepPartial<U>[] : T extends object ? {
|
|
4
4
|
[K in keyof T]?: DeepPartial<T[K]>;
|
|
5
5
|
} : T;
|
|
6
|
+
/**
|
|
7
|
+
* The props a declaration class takes: `PropsOf<typeof TimeSeriesPanel>["options"]`
|
|
8
|
+
* types a const that is passed as a panel's `options`. The TypeScript
|
|
9
|
+
* `chant import` writes annotates its lifted consts this way.
|
|
10
|
+
*/
|
|
11
|
+
export type PropsOf<C extends abstract new (props: any) => unknown> = NonNullable<ConstructorParameters<C>[0]>;
|
|
6
12
|
/** Grafana's uid alphabet: letters, digits, `-` and `_`, at most 40 characters. */
|
|
7
13
|
export declare const UID_PATTERN: RegExp;
|
|
8
14
|
export declare function isValidUid(uid: string): boolean;
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAElE,0FAA0F;AAC1F,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC9C,WAAW,CAAC,CAAC,CAAC,EAAE,GAChB,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACtC,CAAC,CAAC;AAER,mFAAmF;AACnF,eAAO,MAAM,WAAW,QAA0B,CAAC;AAEnD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ5C;AAED,0FAA0F;AAC1F,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAUtC"}
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAElE,0FAA0F;AAC1F,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC9C,WAAW,CAAC,CAAC,CAAC,EAAE,GAChB,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACtC,CAAC,CAAC;AAER;;;;GAIG;AAEH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,QAAQ,MAAM,KAAK,EAAE,GAAG,KAAK,OAAO,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/G,mFAAmF;AACnF,eAAO,MAAM,WAAW,QAA0B,CAAC;AAEnD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ5C;AAED,0FAA0F;AAC1F,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAUtC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The checks behind GRAF111-GRAF114, and the alert-rule half of GRAF108, as
|
|
3
|
+
* plain functions over alerting provisioning files (parsed). The
|
|
4
|
+
* post-synth checks run them over a build's output; a test or another
|
|
5
|
+
* lexicon holding the same YAML can call them directly.
|
|
6
|
+
*
|
|
7
|
+
* - GRAF111: a rule's queries and expressions fit together: its condition,
|
|
8
|
+
* each expression's inputs and a recording rule's `record.from` name a
|
|
9
|
+
* refId of the rule, refIds are unique, and each expression model is
|
|
10
|
+
* valid for the pinned `expr` schema.
|
|
11
|
+
* - GRAF112: each query's datasource is one the build knows (provisioned or
|
|
12
|
+
* `ExternalDatasource`), and of the type the query model says.
|
|
13
|
+
* - GRAF113: the policy tree and rules route to contact points and mute
|
|
14
|
+
* timings the build declares, and their matchers parse.
|
|
15
|
+
* - GRAF114: uids, names, titles and intervals Grafana accepts, and nothing
|
|
16
|
+
* declared twice (a duplicate stops Grafana provisioning every alerting
|
|
17
|
+
* file at startup).
|
|
18
|
+
*
|
|
19
|
+
* Like GRAF101, a reference check only reports an error when the build
|
|
20
|
+
* declares things of that kind; with none declared it warns once that it
|
|
21
|
+
* cannot check, since the thing may already exist in Grafana.
|
|
22
|
+
*/
|
|
23
|
+
import type { KnownDatasource } from "./datasource-refs.js";
|
|
24
|
+
type Json = Record<string, unknown>;
|
|
25
|
+
/** One alerting provisioning file, parsed, and where it came from. */
|
|
26
|
+
export interface AlertingDoc {
|
|
27
|
+
source?: string;
|
|
28
|
+
json: Json;
|
|
29
|
+
}
|
|
30
|
+
export type AlertingIssueCode = "GRAF108" | "GRAF111" | "GRAF112" | "GRAF113" | "GRAF114";
|
|
31
|
+
export interface AlertingIssue {
|
|
32
|
+
code: AlertingIssueCode;
|
|
33
|
+
severity: "error" | "warning";
|
|
34
|
+
message: string;
|
|
35
|
+
/** The rule uid, contact point or group the issue is about. */
|
|
36
|
+
entity?: string;
|
|
37
|
+
}
|
|
38
|
+
/** Contact point names Grafana has without provisioning: the default email contact point. */
|
|
39
|
+
export declare const BUILTIN_CONTACT_POINTS: ReadonlySet<string>;
|
|
40
|
+
export interface RuleInfo {
|
|
41
|
+
rule: Json;
|
|
42
|
+
group: Json;
|
|
43
|
+
/** `rule "<title>" (uid <uid>)`. */
|
|
44
|
+
where: string;
|
|
45
|
+
}
|
|
46
|
+
/** Every rule of every group across the files. */
|
|
47
|
+
export declare function alertRules(docs: readonly AlertingDoc[]): RuleInfo[];
|
|
48
|
+
/** The refIds an expression reads. */
|
|
49
|
+
export declare function expressionInputs(model: Json): string[];
|
|
50
|
+
export declare function checkRuleQueries(docs: readonly AlertingDoc[]): AlertingIssue[];
|
|
51
|
+
export declare function checkRuleDatasources(docs: readonly AlertingDoc[], known: ReadonlyMap<string, KnownDatasource>): AlertingIssue[];
|
|
52
|
+
/** Every PromQL expression an alert rule sends to Prometheus, and where it is written. */
|
|
53
|
+
export declare function alertRulePromql(docs: readonly AlertingDoc[], known: ReadonlyMap<string, KnownDatasource>): Array<{
|
|
54
|
+
where: string;
|
|
55
|
+
expr: string;
|
|
56
|
+
entity: string;
|
|
57
|
+
}>;
|
|
58
|
+
/** GRAF108 over alert rules: the PromQL of each query that reaches Prometheus parses. */
|
|
59
|
+
export declare function checkRulePromql(docs: readonly AlertingDoc[], known: ReadonlyMap<string, KnownDatasource>): AlertingIssue[];
|
|
60
|
+
export declare function checkNotificationRefs(docs: readonly AlertingDoc[]): AlertingIssue[];
|
|
61
|
+
/** Grafana's scheduler ticks every 10 seconds; a group's interval must be a positive multiple of it. */
|
|
62
|
+
export declare const BASE_INTERVAL_SECONDS = 10;
|
|
63
|
+
export declare function checkAlertingIdentity(docs: readonly AlertingDoc[]): AlertingIssue[];
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=validate-alerting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-alerting.d.ts","sourceRoot":"","sources":["../src/validate-alerting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1F,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAsC,CAAC;AAe9F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,IAAI,CAAC;IACZ,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,GAAG,QAAQ,EAAE,CAUnE;AAYD,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,CAwBtD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,GAAG,aAAa,EAAE,CA0C9E;AAaD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,aAAa,EAAE,CA6C/H;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAajK;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,aAAa,EAAE,CAO1H;AAqBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,GAAG,aAAa,EAAE,CAiEnF;AAaD,wGAAwG;AACxG,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAIxC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,GAAG,aAAa,EAAE,CA2EnF"}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The checks behind GRAF101-
|
|
3
|
-
* output: dashboard JSON documents
|
|
2
|
+
* The checks behind GRAF101-GRAF109, GRAF111-GRAF114 and GRAF115, as plain
|
|
3
|
+
* functions over built Grafana output: dashboard JSON documents, provisioned
|
|
4
|
+
* datasources, dashboard providers and alerting provisioning files (the
|
|
5
|
+
* alerting checks are in `validate-alerting.ts`). The
|
|
4
6
|
* post-synth checks run them over a build; anything else holding the same
|
|
5
7
|
* JSON (a test, another lexicon embedding dashboards) can call them directly.
|
|
6
8
|
*
|
|
7
9
|
* Checks that join a dashboard against datasources (GRAF101, GRAF102) only
|
|
8
|
-
* see the datasources passed in
|
|
9
|
-
*
|
|
10
|
-
*
|
|
10
|
+
* see the datasources passed in: the ones provisioned and the ones declared
|
|
11
|
+
* with `ExternalDatasource`. In a build that is the build root being built
|
|
12
|
+
* (chant #1939). With none declared they warn that references cannot be
|
|
13
|
+
* checked; a datasource that exists in Grafana but is not declared looks
|
|
14
|
+
* undeclared, so declare it with `ExternalDatasource`.
|
|
11
15
|
*/
|
|
12
|
-
import type { ProvisionedDatasource } from "./build.js";
|
|
13
|
-
|
|
16
|
+
import type { ExternalDatasourceRecord, ProvisionedDatasource } from "./build.js";
|
|
17
|
+
import { variableReferences, type KnownDatasource } from "./datasource-refs.js";
|
|
18
|
+
import { type AlertingDoc } from "./validate-alerting.js";
|
|
19
|
+
export type GrafanaIssueCode = "GRAF101" | "GRAF102" | "GRAF103" | "GRAF104" | "GRAF105" | "GRAF106" | "GRAF107" | "GRAF108" | "GRAF109" | "GRAF111" | "GRAF112" | "GRAF113" | "GRAF114" | "GRAF115";
|
|
14
20
|
export interface GrafanaIssue {
|
|
15
21
|
code: GrafanaIssueCode;
|
|
16
22
|
severity: "error" | "warning";
|
|
@@ -25,16 +31,50 @@ export interface DashboardDoc {
|
|
|
25
31
|
}
|
|
26
32
|
export interface GrafanaArtifacts {
|
|
27
33
|
dashboards: DashboardDoc[];
|
|
34
|
+
/** Datasources the build provisions. */
|
|
28
35
|
datasources: ProvisionedDatasource[];
|
|
36
|
+
/** Datasources the build references but does not provision (`ExternalDatasource`). */
|
|
37
|
+
externalDatasources?: ExternalDatasourceRecord[];
|
|
38
|
+
/** Entries of `providers:` in dashboard provisioning files, as written: any field may be missing. */
|
|
39
|
+
providers?: Array<Record<string, unknown>>;
|
|
40
|
+
/** Alerting provisioning files (rule groups, contact points, policies, mute timings, templates). */
|
|
41
|
+
alerting?: AlertingDoc[];
|
|
29
42
|
}
|
|
30
|
-
|
|
31
|
-
export
|
|
43
|
+
export type { AlertingDoc };
|
|
44
|
+
export { variableReferences };
|
|
45
|
+
type Json = Record<string, unknown>;
|
|
46
|
+
/** The datasources a set of artifacts knows by uid: provisioned and external. */
|
|
47
|
+
export declare function knownDatasourcesOf(a: GrafanaArtifacts): Map<string, KnownDatasource>;
|
|
32
48
|
export declare function checkDatasourceRefs(a: GrafanaArtifacts): GrafanaIssue[];
|
|
33
49
|
export declare function checkVariables(a: GrafanaArtifacts): GrafanaIssue[];
|
|
34
50
|
export declare function checkDuplicates(a: GrafanaArtifacts): GrafanaIssue[];
|
|
35
51
|
export declare function checkGrid(a: GrafanaArtifacts): GrafanaIssue[];
|
|
36
52
|
export declare function checkIdentity(a: GrafanaArtifacts): GrafanaIssue[];
|
|
53
|
+
/**
|
|
54
|
+
* A value the pinned schemas (with the correction overlay) do not allow is
|
|
55
|
+
* an error; a key they do not know is a warning, since newer Grafana
|
|
56
|
+
* versions add keys the pin has not caught up with.
|
|
57
|
+
*/
|
|
37
58
|
export declare function checkSchema(a: GrafanaArtifacts): GrafanaIssue[];
|
|
59
|
+
/**
|
|
60
|
+
* Each panel query, query variable and alert rule query that reaches a
|
|
61
|
+
* Prometheus datasource is parsed as PromQL, with its template variables replaced by placeholders
|
|
62
|
+
* first (see `promql-check.ts`). A query whose datasource can't be told is
|
|
63
|
+
* not parsed.
|
|
64
|
+
*/
|
|
65
|
+
export declare function checkPromqlSyntax(a: GrafanaArtifacts): GrafanaIssue[];
|
|
66
|
+
/** Every unit a panel sets, with where: field defaults, `unit` overrides, heatmap axes and cells, and a legacy graph panel's y-axes. */
|
|
67
|
+
export declare function panelUnits(panel: Json): Array<{
|
|
68
|
+
where: string;
|
|
69
|
+
unit: string;
|
|
70
|
+
}>;
|
|
71
|
+
/**
|
|
72
|
+
* A unit Grafana doesn't register (at v13.2.2) and that isn't a custom
|
|
73
|
+
* `<kind>:` unit is shown as a literal suffix, so `"byte"` renders `5 byte`.
|
|
74
|
+
* A warning: it renders, just not as meant.
|
|
75
|
+
*/
|
|
76
|
+
export declare function checkUnits(a: GrafanaArtifacts): GrafanaIssue[];
|
|
77
|
+
export declare function checkProvisioning(a: GrafanaArtifacts): GrafanaIssue[];
|
|
38
78
|
/** The issues one check finds. */
|
|
39
79
|
export declare function issuesFor(code: GrafanaIssueCode, a: GrafanaArtifacts): GrafanaIssue[];
|
|
40
80
|
/** Every issue every check finds, in code order. */
|