@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,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GRAF108: the PromQL a dashboard sends to Prometheus, syntax-checked with
|
|
3
|
+
* the prometheus lexicon's `checkPromql` (the grammar behind the Prometheus
|
|
4
|
+
* web UI's editor, `@prometheus-io/lezer-promql`).
|
|
5
|
+
*
|
|
6
|
+
* Only queries that reach a Prometheus datasource are parsed, as
|
|
7
|
+
* `datasourceUses()` resolves them: a query's own ref, else its panel's, a
|
|
8
|
+
* datasource variable's plugin type, or an undeclared ref's own `type`. A
|
|
9
|
+
* query whose datasource can't be told (no ref at all, a `-- Mixed --` panel
|
|
10
|
+
* query with none of its own) is left alone.
|
|
11
|
+
*
|
|
12
|
+
* Grafana interpolates template variables before Prometheus sees the query,
|
|
13
|
+
* so `$var`, `${var}`, `${var:format}`, `[[var]]` and the `$__` macros are
|
|
14
|
+
* replaced with a placeholder that parses where they stand: a duration
|
|
15
|
+
* inside `[...]` or after `offset`, a number for the `_ms`/`_s` macros and
|
|
16
|
+
* `$__from`/`$__to`, an identifier anywhere else. Inside a string literal
|
|
17
|
+
* they are left as they are.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { checkPromql } from "@intentius/chant-lexicon-prometheus/promql";
|
|
21
|
+
import { datasourceUses, variablesOf, type KnownDatasource } from "./datasource-refs";
|
|
22
|
+
|
|
23
|
+
type Json = Record<string, unknown>;
|
|
24
|
+
|
|
25
|
+
const DURATION = "5m";
|
|
26
|
+
const NUMBER = "1";
|
|
27
|
+
const IDENTIFIER = "grafana_var";
|
|
28
|
+
|
|
29
|
+
/** A template variable reference starting at the regex's lastIndex. */
|
|
30
|
+
const VARIABLE = /\$\{([^}]*)\}|\[\[([A-Za-z_][^\]]*)\]\]|\$([A-Za-z_][A-Za-z0-9_]*)/y;
|
|
31
|
+
|
|
32
|
+
function isNumericMacro(name: string): boolean {
|
|
33
|
+
if (name === "__from" || name === "__to") return true;
|
|
34
|
+
return (name.startsWith("__") || name === "interval_ms") && /_(ms|s)$/.test(name);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** A span of substituted text and the original text it replaced. */
|
|
38
|
+
interface Span {
|
|
39
|
+
at: number;
|
|
40
|
+
length: number;
|
|
41
|
+
original: number;
|
|
42
|
+
originalLength: number;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface Substituted {
|
|
46
|
+
text: string;
|
|
47
|
+
/** Maps an offset in `text` back to one in the original query. */
|
|
48
|
+
originalOffset(at: number): number;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Replace every template variable outside a string literal with a placeholder that parses in its place. */
|
|
52
|
+
export function substituteTemplateVariables(query: string): Substituted {
|
|
53
|
+
let out = "";
|
|
54
|
+
const spans: Span[] = [];
|
|
55
|
+
let quote: string | undefined;
|
|
56
|
+
let depth = 0;
|
|
57
|
+
let i = 0;
|
|
58
|
+
while (i < query.length) {
|
|
59
|
+
const c = query[i];
|
|
60
|
+
if (quote) {
|
|
61
|
+
out += c;
|
|
62
|
+
if (c === "\\" && quote !== "`" && i + 1 < query.length) {
|
|
63
|
+
out += query[i + 1];
|
|
64
|
+
i += 2;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (c === quote) quote = undefined;
|
|
68
|
+
i++;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (c === "$" || (c === "[" && query[i + 1] === "[")) {
|
|
72
|
+
VARIABLE.lastIndex = i;
|
|
73
|
+
const m = VARIABLE.exec(query);
|
|
74
|
+
if (m) {
|
|
75
|
+
const name = (m[1] ?? m[2] ?? m[3]).split(/[:.]/)[0].trim();
|
|
76
|
+
const before = out.trimEnd();
|
|
77
|
+
let value: string;
|
|
78
|
+
if (depth > 0 || /\boffset$/i.test(before)) {
|
|
79
|
+
// `[${n}m]`: the unit follows, so only the number is substituted.
|
|
80
|
+
value = /[a-z]/i.test(query[i + m[0].length] ?? "") ? NUMBER : DURATION;
|
|
81
|
+
} else if (isNumericMacro(name) || before.endsWith("@")) {
|
|
82
|
+
value = NUMBER;
|
|
83
|
+
} else {
|
|
84
|
+
value = IDENTIFIER;
|
|
85
|
+
}
|
|
86
|
+
spans.push({ at: out.length, length: value.length, original: i, originalLength: m[0].length });
|
|
87
|
+
out += value;
|
|
88
|
+
i += m[0].length;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (c === '"' || c === "'" || c === "`") quote = c;
|
|
93
|
+
else if (c === "[") depth++;
|
|
94
|
+
else if (c === "]" && depth > 0) depth--;
|
|
95
|
+
out += c;
|
|
96
|
+
i++;
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
text: out,
|
|
100
|
+
originalOffset(at: number): number {
|
|
101
|
+
let shift = 0;
|
|
102
|
+
for (const s of spans) {
|
|
103
|
+
if (at < s.at) break;
|
|
104
|
+
if (at < s.at + s.length) return s.original;
|
|
105
|
+
shift = s.original + s.originalLength - (s.at + s.length);
|
|
106
|
+
}
|
|
107
|
+
return at + shift;
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export type PromqlSyntax = { ok: true } | { ok: false; message: string };
|
|
113
|
+
|
|
114
|
+
/** Check one query's PromQL syntax after substituting its template variables. */
|
|
115
|
+
export function checkGrafanaPromql(query: string): PromqlSyntax {
|
|
116
|
+
const substituted = substituteTemplateVariables(query);
|
|
117
|
+
const checked = checkPromql(substituted.text);
|
|
118
|
+
if (checked.ok) return { ok: true };
|
|
119
|
+
const at = Math.min(substituted.originalOffset(checked.position), query.length);
|
|
120
|
+
if (at >= query.length) return { ok: false, message: `the expression ends early (after "${query.slice(Math.max(0, at - 30)).trim()}")` };
|
|
121
|
+
const before = query.slice(Math.max(0, at - 30), at);
|
|
122
|
+
const after = query.slice(at, at + 30);
|
|
123
|
+
return { ok: false, message: `syntax error at offset ${at}: "${before}" >>> "${after}"` };
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* The PromQL inside a Prometheus query variable's query. Grafana handles
|
|
128
|
+
* `label_names()`, `label_values(selector, label)`, `metrics(regex)` and
|
|
129
|
+
* `query_result(expr)` itself and sends only the selector or expression; any
|
|
130
|
+
* other text is a series selector (`/api/v1/series?match[]=`).
|
|
131
|
+
*/
|
|
132
|
+
export function variablePromql(query: string): string[] {
|
|
133
|
+
const q = query.trim();
|
|
134
|
+
if (q === "" || /^label_names\(\s*\)$/.test(q)) return [];
|
|
135
|
+
let m = /^label_names\((.+)\)$/.exec(q);
|
|
136
|
+
if (m) return [m[1]];
|
|
137
|
+
m = /^label_values\((?:(.+),\s*)?([a-zA-Z_$][a-zA-Z0-9_]*)\)$/.exec(q);
|
|
138
|
+
if (m) return m[1] ? [m[1]] : [];
|
|
139
|
+
if (/^metrics\((.+)\)$/.test(q)) return [];
|
|
140
|
+
m = /^query_result\((.+)\)$/.exec(q);
|
|
141
|
+
if (m) return [m[1]];
|
|
142
|
+
return [q];
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function variableQueryText(variable: Json): string | undefined {
|
|
146
|
+
const q = variable.query;
|
|
147
|
+
if (typeof q === "string") return q;
|
|
148
|
+
if (q && typeof q === "object" && typeof (q as Json).query === "string") return (q as Json).query as string;
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/** One piece of PromQL a dashboard sends to Prometheus, and where it is written. */
|
|
153
|
+
export interface PromqlUse {
|
|
154
|
+
where: string;
|
|
155
|
+
expr: string;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** The PromQL of one dashboard (or, for a library panel, a one-panel stand-in); `library` names the `__elements` key. */
|
|
159
|
+
function usesOf(dashboard: Json, known: ReadonlyMap<string, KnownDatasource>, library?: string): PromqlUse[] {
|
|
160
|
+
const out: PromqlUse[] = [];
|
|
161
|
+
for (const use of datasourceUses(dashboard, known)) {
|
|
162
|
+
if (use.resolved.type !== "prometheus") continue;
|
|
163
|
+
if (use.kind === "query") {
|
|
164
|
+
const expr = use.target?.expr;
|
|
165
|
+
if (typeof expr !== "string" || expr.trim() === "") continue;
|
|
166
|
+
out.push({ where: library ? `library panel "${library}" query ${String(use.target?.refId ?? "?")}` : use.where, expr });
|
|
167
|
+
} else if (use.kind === "variable" && use.variable && !library) {
|
|
168
|
+
const text = variableQueryText(use.variable);
|
|
169
|
+
if (text) for (const expr of variablePromql(text)) out.push({ where: `${use.where} query`, expr });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return out;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/** Every PromQL query a dashboard sends to Prometheus: panel queries, query variables and the library panels an export embeds in `__elements`. */
|
|
176
|
+
export function prometheusQueries(dashboard: Json, known: ReadonlyMap<string, KnownDatasource>): PromqlUse[] {
|
|
177
|
+
const out = usesOf(dashboard, known);
|
|
178
|
+
const elements = dashboard.__elements;
|
|
179
|
+
if (elements && typeof elements === "object" && !Array.isArray(elements)) {
|
|
180
|
+
// The dashboard's variables, so a library panel's `${DS_...}` ref resolves as the dashboard's would.
|
|
181
|
+
const templating = { list: variablesOf(dashboard) };
|
|
182
|
+
for (const [key, element] of Object.entries(elements as Json)) {
|
|
183
|
+
const model = element && typeof element === "object" ? (element as Json).model : undefined;
|
|
184
|
+
if (!model || typeof model !== "object" || Array.isArray(model)) continue;
|
|
185
|
+
out.push(...usesOf({ templating, panels: [model] }, known, key));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return out;
|
|
189
|
+
}
|
package/src/query.ts
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
* `TempoQuery` (TraceQL) and `LokiQuery` (LogQL), each typed from that
|
|
4
4
|
* plugin's query schema at `GRAFANA_SCHEMA_PIN`.
|
|
5
5
|
*
|
|
6
|
-
* The expression is a string
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* The expression is a string. What the lexicon checks is where the query
|
|
7
|
+
* goes: `datasource` only accepts a datasource of the query's own plugin
|
|
8
|
+
* type, and GRAF101, GRAF102 and GRAF103 check the emitted references after
|
|
9
|
+
* a build. GRAF108 parses the PromQL of every query that reaches a
|
|
10
|
+
* Prometheus; TraceQL and LogQL are not parsed.
|
|
10
11
|
*
|
|
11
12
|
* `defineQuery` is the extension point for any other datasource plugin, and
|
|
12
13
|
* the three built-ins are defined through it.
|
|
@@ -14,15 +15,19 @@
|
|
|
14
15
|
|
|
15
16
|
import { createProperty } from "@intentius/chant/runtime";
|
|
16
17
|
import type { Declarable } from "@intentius/chant/declarable";
|
|
17
|
-
import type { DatasourceEntity, DatasourceRef } from "./datasource";
|
|
18
|
+
import type { DatasourceEntity, DatasourceRef, ExternalDatasourceEntity } from "./datasource";
|
|
18
19
|
import type { DatasourceVariableEntity } from "./variables";
|
|
19
20
|
import type { SchemaName } from "./pin";
|
|
20
21
|
import type { Dataquery as PrometheusDataquery } from "./schema/prometheus.gen";
|
|
21
22
|
import type { Dataquery as TempoDataquery } from "./schema/tempo.gen";
|
|
22
23
|
import type { Dataquery as LokiDataquery } from "./schema/loki.gen";
|
|
23
24
|
|
|
24
|
-
/** Where a query or panel sends its request: a declared datasource, a datasource variable, or the ref of one declared elsewhere. */
|
|
25
|
-
export type DatasourceInput<T extends string = string> =
|
|
25
|
+
/** Where a query or panel sends its request: a declared or external datasource, a datasource variable, or the ref of one declared elsewhere. */
|
|
26
|
+
export type DatasourceInput<T extends string = string> =
|
|
27
|
+
| DatasourceEntity<T>
|
|
28
|
+
| ExternalDatasourceEntity<T>
|
|
29
|
+
| DatasourceVariableEntity<T>
|
|
30
|
+
| DatasourceRef<T>;
|
|
26
31
|
|
|
27
32
|
/** A query model's fields, less what chant fills in (`datasource`, `refId` stays optional). */
|
|
28
33
|
export type QueryModel<M> = Omit<M, "datasource">;
|
|
@@ -108,7 +113,7 @@ function makeQueryClass<T extends string, M>(def: QueryDefinition<T, M>): QueryC
|
|
|
108
113
|
* });
|
|
109
114
|
* ```
|
|
110
115
|
*/
|
|
111
|
-
export function defineQuery<M
|
|
116
|
+
export function defineQuery<M = Record<string, unknown>>() {
|
|
112
117
|
return function <T extends string>(def: Omit<QueryDefinition<T, M>, "builtin">): QueryClass<T, M> {
|
|
113
118
|
return makeQueryClass<T, M>({ ...def, builtin: false });
|
|
114
119
|
};
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
// Code generated by chant generate from the vendored Grafana schema
|
|
2
|
+
// src/spec/schemas/barchart.jsonschema.json (see src/pin.ts) and its correction
|
|
3
|
+
// overlay in src/spec/overlay/ (see src/spec/overlay.ts). DO NOT EDIT.
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
|
|
6
|
+
export interface Options {
|
|
7
|
+
/**
|
|
8
|
+
* Manually select which field from the dataset to represent the x field.
|
|
9
|
+
*/
|
|
10
|
+
xField?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Use the color value for a sibling field to color each bar value.
|
|
13
|
+
*/
|
|
14
|
+
colorByField?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Controls the orientation of the bar chart, either vertical or horizontal.
|
|
17
|
+
*/
|
|
18
|
+
orientation: VizOrientation;
|
|
19
|
+
/**
|
|
20
|
+
* Controls the radius of each bar.
|
|
21
|
+
*/
|
|
22
|
+
barRadius?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Controls the rotation of the x axis labels.
|
|
25
|
+
*/
|
|
26
|
+
xTickLabelRotation: number;
|
|
27
|
+
/**
|
|
28
|
+
* Sets the max length that a label can have before it is truncated.
|
|
29
|
+
*/
|
|
30
|
+
xTickLabelMaxLength: number;
|
|
31
|
+
/**
|
|
32
|
+
* Controls the spacing between x axis labels.
|
|
33
|
+
* negative values indicate backwards skipping behavior
|
|
34
|
+
*/
|
|
35
|
+
xTickLabelSpacing?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Controls whether bars are stacked or not, either normally or in percent mode.
|
|
38
|
+
*/
|
|
39
|
+
stacking: StackingMode;
|
|
40
|
+
/**
|
|
41
|
+
* This controls whether values are shown on top or to the left of bars.
|
|
42
|
+
*/
|
|
43
|
+
showValue: VisibilityMode;
|
|
44
|
+
/**
|
|
45
|
+
* Controls the width of bars. 1 = Max width, 0 = Min width.
|
|
46
|
+
*/
|
|
47
|
+
barWidth: number;
|
|
48
|
+
/**
|
|
49
|
+
* Controls the width of groups. 1 = max with, 0 = min width.
|
|
50
|
+
*/
|
|
51
|
+
groupWidth: number;
|
|
52
|
+
legend: VizLegendOptions;
|
|
53
|
+
tooltip: VizTooltipOptions;
|
|
54
|
+
text?: VizTextDisplayOptions;
|
|
55
|
+
/**
|
|
56
|
+
* Enables mode which highlights the entire bar area and shows tooltip when cursor
|
|
57
|
+
* hovers over highlighted area
|
|
58
|
+
*/
|
|
59
|
+
fullHighlight: boolean;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface FieldConfig {
|
|
63
|
+
/**
|
|
64
|
+
* Controls line width of the bars.
|
|
65
|
+
*/
|
|
66
|
+
lineWidth?: number;
|
|
67
|
+
/**
|
|
68
|
+
* Controls the fill opacity of the bars.
|
|
69
|
+
*/
|
|
70
|
+
fillOpacity?: number;
|
|
71
|
+
/**
|
|
72
|
+
* Set the mode of the gradient fill. Fill gradient is based on the line color. To change the color, use the standard color scheme field option.
|
|
73
|
+
* Gradient appearance is influenced by the Fill opacity setting.
|
|
74
|
+
*/
|
|
75
|
+
gradientMode?: GraphGradientMode;
|
|
76
|
+
axisPlacement?: AxisPlacement;
|
|
77
|
+
axisColorMode?: AxisColorMode;
|
|
78
|
+
axisLabel?: string;
|
|
79
|
+
axisWidth?: number;
|
|
80
|
+
axisSoftMin?: number;
|
|
81
|
+
axisSoftMax?: number;
|
|
82
|
+
axisGridShow?: boolean;
|
|
83
|
+
scaleDistribution?: ScaleDistributionConfig;
|
|
84
|
+
axisCenteredZero?: boolean;
|
|
85
|
+
hideFrom?: HideSeriesConfig;
|
|
86
|
+
/**
|
|
87
|
+
* Threshold rendering
|
|
88
|
+
*/
|
|
89
|
+
thresholdsStyle?: GraphThresholdsStyleConfig;
|
|
90
|
+
axisBorderShow?: boolean;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* TODO docs
|
|
95
|
+
*/
|
|
96
|
+
export type VizOrientation = "auto" | "vertical" | "horizontal";
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* TODO docs
|
|
100
|
+
*/
|
|
101
|
+
export type StackingMode = "none" | "normal" | "percent";
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* TODO docs
|
|
105
|
+
*/
|
|
106
|
+
export type VisibilityMode = "auto" | "never" | "always";
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* TODO docs
|
|
110
|
+
*/
|
|
111
|
+
export interface VizLegendOptions {
|
|
112
|
+
displayMode: LegendDisplayMode;
|
|
113
|
+
placement: LegendPlacement;
|
|
114
|
+
showLegend: boolean;
|
|
115
|
+
asTable?: boolean;
|
|
116
|
+
isVisible?: boolean;
|
|
117
|
+
sortBy?: string;
|
|
118
|
+
sortDesc?: boolean;
|
|
119
|
+
width?: number;
|
|
120
|
+
calcs: string[];
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* TODO docs
|
|
125
|
+
*/
|
|
126
|
+
export interface VizTooltipOptions {
|
|
127
|
+
mode: TooltipDisplayMode;
|
|
128
|
+
sort: SortOrder;
|
|
129
|
+
maxWidth?: number;
|
|
130
|
+
maxHeight?: number;
|
|
131
|
+
hideZeros?: boolean;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* TODO docs
|
|
136
|
+
*/
|
|
137
|
+
export interface VizTextDisplayOptions {
|
|
138
|
+
/**
|
|
139
|
+
* Explicit title text size
|
|
140
|
+
*/
|
|
141
|
+
titleSize?: number;
|
|
142
|
+
/**
|
|
143
|
+
* Explicit value text size
|
|
144
|
+
*/
|
|
145
|
+
valueSize?: number;
|
|
146
|
+
/**
|
|
147
|
+
* Explicit percent text size
|
|
148
|
+
*/
|
|
149
|
+
percentSize?: number;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* TODO docs
|
|
154
|
+
*/
|
|
155
|
+
export type GraphGradientMode = "none" | "opacity" | "hue" | "scheme";
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* TODO docs
|
|
159
|
+
*/
|
|
160
|
+
export type AxisPlacement = "auto" | "top" | "right" | "bottom" | "left" | "hidden";
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* TODO docs
|
|
164
|
+
*/
|
|
165
|
+
export type AxisColorMode = "text" | "series";
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* TODO docs
|
|
169
|
+
*/
|
|
170
|
+
export interface ScaleDistributionConfig {
|
|
171
|
+
type: ScaleDistribution;
|
|
172
|
+
log?: number;
|
|
173
|
+
linearThreshold?: number;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* TODO docs
|
|
178
|
+
*/
|
|
179
|
+
export interface HideSeriesConfig {
|
|
180
|
+
tooltip: boolean;
|
|
181
|
+
legend: boolean;
|
|
182
|
+
viz: boolean;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* TODO docs
|
|
187
|
+
*/
|
|
188
|
+
export interface GraphThresholdsStyleConfig {
|
|
189
|
+
mode: GraphThresholdsStyleMode;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* TODO docs
|
|
194
|
+
* Note: "hidden" needs to remain as an option for plugins compatibility
|
|
195
|
+
*/
|
|
196
|
+
export type LegendDisplayMode = "list" | "table" | "hidden";
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* TODO docs
|
|
200
|
+
*/
|
|
201
|
+
export type LegendPlacement = "bottom" | "right";
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* TODO docs
|
|
205
|
+
*/
|
|
206
|
+
export type TooltipDisplayMode = "single" | "multi" | "none";
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* TODO docs
|
|
210
|
+
*/
|
|
211
|
+
export type SortOrder = "asc" | "desc" | "none";
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* TODO docs
|
|
215
|
+
*/
|
|
216
|
+
export type ScaleDistribution = "linear" | "log" | "ordinal" | "symlog";
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* TODO docs
|
|
220
|
+
*/
|
|
221
|
+
export type GraphThresholdsStyleMode = "off" | "line" | "dashed" | "area" | "line+area" | "dashed+area" | "series";
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Code generated by chant generate from the vendored Grafana schema
|
|
2
|
+
// src/spec/schemas/bargauge.jsonschema.json (see src/pin.ts) and its correction
|
|
3
|
+
// overlay in src/spec/overlay/ (see src/spec/overlay.ts). DO NOT EDIT.
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
|
|
6
|
+
export interface Options {
|
|
7
|
+
displayMode: BarGaugeDisplayMode;
|
|
8
|
+
valueMode: BarGaugeValueMode;
|
|
9
|
+
namePlacement: BarGaugeNamePlacement;
|
|
10
|
+
showUnfilled: boolean;
|
|
11
|
+
sizing: BarGaugeSizing;
|
|
12
|
+
minVizWidth: number;
|
|
13
|
+
minVizHeight: number;
|
|
14
|
+
legend: VizLegendOptions;
|
|
15
|
+
reduceOptions: ReduceDataOptions;
|
|
16
|
+
text?: VizTextDisplayOptions;
|
|
17
|
+
maxVizHeight: number;
|
|
18
|
+
orientation: VizOrientation;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Enum expressing the possible display modes
|
|
23
|
+
* for the bar gauge component of Grafana UI
|
|
24
|
+
*/
|
|
25
|
+
export type BarGaugeDisplayMode = "basic" | "lcd" | "gradient";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Allows for the table cell gauge display type to set the gauge mode.
|
|
29
|
+
*/
|
|
30
|
+
export type BarGaugeValueMode = "color" | "text" | "hidden";
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Allows for the bar gauge name to be placed explicitly
|
|
34
|
+
*/
|
|
35
|
+
export type BarGaugeNamePlacement = "auto" | "top" | "left" | "hidden";
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Allows for the bar gauge size to be set explicitly
|
|
39
|
+
*/
|
|
40
|
+
export type BarGaugeSizing = "auto" | "manual";
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* TODO docs
|
|
44
|
+
*/
|
|
45
|
+
export interface VizLegendOptions {
|
|
46
|
+
displayMode: LegendDisplayMode;
|
|
47
|
+
placement: LegendPlacement;
|
|
48
|
+
showLegend: boolean;
|
|
49
|
+
asTable?: boolean;
|
|
50
|
+
isVisible?: boolean;
|
|
51
|
+
sortBy?: string;
|
|
52
|
+
sortDesc?: boolean;
|
|
53
|
+
width?: number;
|
|
54
|
+
calcs: string[];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* TODO docs
|
|
59
|
+
*/
|
|
60
|
+
export interface ReduceDataOptions {
|
|
61
|
+
/**
|
|
62
|
+
* If true show each row value
|
|
63
|
+
*/
|
|
64
|
+
values?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* if showing all values limit
|
|
67
|
+
*/
|
|
68
|
+
limit?: number;
|
|
69
|
+
/**
|
|
70
|
+
* When !values, pick one value for the whole field
|
|
71
|
+
*/
|
|
72
|
+
calcs: string[];
|
|
73
|
+
/**
|
|
74
|
+
* Which fields to show. By default this is only numeric fields
|
|
75
|
+
*/
|
|
76
|
+
fields?: string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* TODO docs
|
|
81
|
+
*/
|
|
82
|
+
export interface VizTextDisplayOptions {
|
|
83
|
+
/**
|
|
84
|
+
* Explicit title text size
|
|
85
|
+
*/
|
|
86
|
+
titleSize?: number;
|
|
87
|
+
/**
|
|
88
|
+
* Explicit value text size
|
|
89
|
+
*/
|
|
90
|
+
valueSize?: number;
|
|
91
|
+
/**
|
|
92
|
+
* Explicit percent text size
|
|
93
|
+
*/
|
|
94
|
+
percentSize?: number;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* TODO docs
|
|
99
|
+
*/
|
|
100
|
+
export type VizOrientation = "auto" | "vertical" | "horizontal";
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* TODO docs
|
|
104
|
+
* Note: "hidden" needs to remain as an option for plugins compatibility
|
|
105
|
+
*/
|
|
106
|
+
export type LegendDisplayMode = "list" | "table" | "hidden";
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* TODO docs
|
|
110
|
+
*/
|
|
111
|
+
export type LegendPlacement = "bottom" | "right";
|