@intentius/chant-lexicon-grafana 0.96.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 +50 -0
- package/dist/build.d.ts +116 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/catalog.d.ts +26 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/codegen/docs-cli.d.ts +3 -0
- package/dist/codegen/docs-cli.d.ts.map +1 -0
- package/dist/codegen/docs.d.ts +8 -0
- package/dist/codegen/docs.d.ts.map +1 -0
- package/dist/codegen/generate-cli.d.ts +3 -0
- package/dist/codegen/generate-cli.d.ts.map +1 -0
- package/dist/codegen/generate.d.ts +21 -0
- package/dist/codegen/generate.d.ts.map +1 -0
- package/dist/codegen/package.d.ts +7 -0
- package/dist/codegen/package.d.ts.map +1 -0
- package/dist/codegen/schema-types.d.ts +41 -0
- package/dist/codegen/schema-types.d.ts.map +1 -0
- package/dist/composites/agent-dashboard.d.ts +70 -0
- package/dist/composites/agent-dashboard.d.ts.map +1 -0
- package/dist/composites/catalog.d.ts +3 -0
- package/dist/composites/catalog.d.ts.map +1 -0
- package/dist/composites/index.d.ts +12 -0
- package/dist/composites/index.d.ts.map +1 -0
- package/dist/composites/red-dashboard.d.ts +58 -0
- package/dist/composites/red-dashboard.d.ts.map +1 -0
- package/dist/composites/shared.d.ts +68 -0
- package/dist/composites/shared.d.ts.map +1 -0
- package/dist/composites/slo-dashboard.d.ts +62 -0
- package/dist/composites/slo-dashboard.d.ts.map +1 -0
- package/dist/dashboard.d.ts +84 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/datasource.d.ts +67 -0
- package/dist/datasource.d.ts.map +1 -0
- package/dist/detect.d.ts +20 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/integrity.json +22 -0
- package/dist/lint/audit-catalog.d.ts +13 -0
- package/dist/lint/audit-catalog.d.ts.map +1 -0
- package/dist/lint/post-synth/graf101.d.ts +8 -0
- package/dist/lint/post-synth/graf101.d.ts.map +1 -0
- package/dist/lint/post-synth/graf102.d.ts +8 -0
- package/dist/lint/post-synth/graf102.d.ts.map +1 -0
- package/dist/lint/post-synth/graf103.d.ts +8 -0
- package/dist/lint/post-synth/graf103.d.ts.map +1 -0
- package/dist/lint/post-synth/graf104.d.ts +8 -0
- package/dist/lint/post-synth/graf104.d.ts.map +1 -0
- package/dist/lint/post-synth/graf105.d.ts +8 -0
- package/dist/lint/post-synth/graf105.d.ts.map +1 -0
- package/dist/lint/post-synth/graf106.d.ts +8 -0
- package/dist/lint/post-synth/graf106.d.ts.map +1 -0
- package/dist/lint/post-synth/graf107.d.ts +8 -0
- package/dist/lint/post-synth/graf107.d.ts.map +1 -0
- package/dist/lint/post-synth/grafana-helpers.d.ts +16 -0
- package/dist/lint/post-synth/grafana-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/index.d.ts +3 -0
- package/dist/lint/post-synth/index.d.ts.map +1 -0
- package/dist/lint/rules/grafana-ast.d.ts +21 -0
- package/dist/lint/rules/grafana-ast.d.ts.map +1 -0
- package/dist/lint/rules/index.d.ts +6 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lint/rules/literal-secret.d.ts +12 -0
- package/dist/lint/rules/literal-secret.d.ts.map +1 -0
- package/dist/lint/rules/uid-syntax.d.ts +12 -0
- package/dist/lint/rules/uid-syntax.d.ts.map +1 -0
- package/dist/lsp/completions.d.ts +4 -0
- package/dist/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/hover.d.ts +4 -0
- package/dist/lsp/hover.d.ts.map +1 -0
- package/dist/manifest.json +8 -0
- package/dist/meta.json +107 -0
- package/dist/okf/index.md +39 -0
- package/dist/okf/rules/GRAF001.md +16 -0
- package/dist/okf/rules/GRAF002.md +15 -0
- package/dist/okf/rules/GRAF101.md +15 -0
- package/dist/okf/rules/GRAF102.md +15 -0
- package/dist/okf/rules/GRAF103.md +11 -0
- package/dist/okf/rules/GRAF104.md +15 -0
- package/dist/okf/rules/GRAF105.md +11 -0
- package/dist/okf/rules/GRAF106.md +11 -0
- package/dist/okf/rules/GRAF107.md +11 -0
- package/dist/okf/types/ConstantVariable.md +9 -0
- package/dist/okf/types/CustomVariable.md +9 -0
- package/dist/okf/types/Dashboard.md +14 -0
- package/dist/okf/types/DashboardProvider.md +9 -0
- package/dist/okf/types/Datasource.md +16 -0
- package/dist/okf/types/DatasourceVariable.md +9 -0
- package/dist/okf/types/GaugePanel.md +9 -0
- package/dist/okf/types/HeatmapPanel.md +9 -0
- package/dist/okf/types/IntervalVariable.md +9 -0
- package/dist/okf/types/LogsPanel.md +9 -0
- package/dist/okf/types/LokiQuery.md +9 -0
- package/dist/okf/types/PromQuery.md +9 -0
- package/dist/okf/types/QueryVariable.md +9 -0
- package/dist/okf/types/Row.md +9 -0
- package/dist/okf/types/StatPanel.md +9 -0
- package/dist/okf/types/TablePanel.md +9 -0
- package/dist/okf/types/TempoQuery.md +9 -0
- package/dist/okf/types/TextPanel.md +9 -0
- package/dist/okf/types/TextboxVariable.md +9 -0
- package/dist/okf/types/TimeSeriesPanel.md +9 -0
- package/dist/okf/types/TracesPanel.md +9 -0
- package/dist/package-cli.d.ts +3 -0
- package/dist/package-cli.d.ts.map +1 -0
- package/dist/panels.d.ts +138 -0
- package/dist/panels.d.ts.map +1 -0
- package/dist/pin.d.ts +32 -0
- package/dist/pin.d.ts.map +1 -0
- package/dist/plugin.d.ts +12 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/query.d.ts +81 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/rules/graf101.ts +17 -0
- package/dist/rules/graf102.ts +17 -0
- package/dist/rules/graf103.ts +17 -0
- package/dist/rules/graf104.ts +17 -0
- package/dist/rules/graf105.ts +17 -0
- package/dist/rules/graf106.ts +17 -0
- package/dist/rules/graf107.ts +17 -0
- package/dist/rules/grafana-ast.ts +70 -0
- package/dist/rules/grafana-helpers.ts +68 -0
- package/dist/rules/literal-secret.ts +48 -0
- package/dist/rules/uid-syntax.ts +56 -0
- package/dist/schema/dashboard.gen.d.ts +1231 -0
- package/dist/schema/dashboard.gen.d.ts.map +1 -0
- package/dist/schema/gauge.gen.d.ts +57 -0
- package/dist/schema/gauge.gen.d.ts.map +1 -0
- package/dist/schema/heatmap.gen.d.ts +295 -0
- package/dist/schema/heatmap.gen.d.ts.map +1 -0
- package/dist/schema/index.d.ts +18 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/logs.gen.d.ts +29 -0
- package/dist/schema/logs.gen.d.ts.map +1 -0
- package/dist/schema/loki.gen.d.ts +69 -0
- package/dist/schema/loki.gen.d.ts.map +1 -0
- package/dist/schema/prometheus.gen.d.ts +169 -0
- package/dist/schema/prometheus.gen.d.ts.map +1 -0
- package/dist/schema/stat.gen.d.ts +75 -0
- package/dist/schema/stat.gen.d.ts.map +1 -0
- package/dist/schema/table.gen.d.ts +295 -0
- package/dist/schema/table.gen.d.ts.map +1 -0
- package/dist/schema/tempo.gen.d.ts +136 -0
- package/dist/schema/tempo.gen.d.ts.map +1 -0
- package/dist/schema/text.gen.d.ts +16 -0
- package/dist/schema/text.gen.d.ts.map +1 -0
- package/dist/schema/timeseries.gen.d.ts +179 -0
- package/dist/schema/timeseries.gen.d.ts.map +1 -0
- package/dist/schema-validate.d.ts +20 -0
- package/dist/schema-validate.d.ts.map +1 -0
- package/dist/serializer.d.ts +22 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/skill-defs.d.ts +3 -0
- package/dist/skill-defs.d.ts.map +1 -0
- package/dist/skills/chant-grafana-provisioning.md +42 -0
- package/dist/skills/chant-grafana.md +93 -0
- package/dist/spec/fetch-cli.d.ts +3 -0
- package/dist/spec/fetch-cli.d.ts.map +1 -0
- package/dist/spec/schemas.d.ts +25 -0
- package/dist/spec/schemas.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/util.d.ts +17 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/validate-cli.d.ts +3 -0
- package/dist/validate-cli.d.ts.map +1 -0
- package/dist/validate-output.d.ts +42 -0
- package/dist/validate-output.d.ts.map +1 -0
- package/dist/validate.d.ts +12 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/variables.d.ts +100 -0
- package/dist/variables.d.ts.map +1 -0
- package/package.json +79 -0
- package/src/build.test.ts +210 -0
- package/src/build.ts +573 -0
- package/src/catalog.ts +116 -0
- package/src/codegen/docs-cli.ts +4 -0
- package/src/codegen/docs.ts +97 -0
- package/src/codegen/generate-cli.ts +8 -0
- package/src/codegen/generate.ts +83 -0
- package/src/codegen/package.ts +41 -0
- package/src/codegen/schema-types.ts +173 -0
- package/src/composites/agent-dashboard.ts +235 -0
- package/src/composites/catalog.test.ts +37 -0
- package/src/composites/catalog.ts +223 -0
- package/src/composites/composites.test.ts +314 -0
- package/src/composites/index.ts +12 -0
- package/src/composites/red-dashboard.ts +159 -0
- package/src/composites/shared.ts +94 -0
- package/src/composites/slo-dashboard.ts +177 -0
- package/src/dashboard.ts +123 -0
- package/src/datasource.ts +93 -0
- package/src/detect.ts +30 -0
- package/src/generated/lexicon-grafana.json +107 -0
- package/src/import.e2e.test.ts +147 -0
- package/src/import.test.ts +45 -0
- package/src/index.ts +178 -0
- package/src/lint/audit-catalog.ts +87 -0
- package/src/lint/post-synth/graf101.ts +17 -0
- package/src/lint/post-synth/graf102.ts +17 -0
- package/src/lint/post-synth/graf103.ts +17 -0
- package/src/lint/post-synth/graf104.ts +17 -0
- package/src/lint/post-synth/graf105.ts +17 -0
- package/src/lint/post-synth/graf106.ts +17 -0
- package/src/lint/post-synth/graf107.ts +17 -0
- package/src/lint/post-synth/grafana-helpers.ts +68 -0
- package/src/lint/post-synth/index.ts +19 -0
- package/src/lint/post-synth/post-synth.test.ts +231 -0
- package/src/lint/rules/grafana-ast.ts +70 -0
- package/src/lint/rules/index.ts +9 -0
- package/src/lint/rules/literal-secret.ts +48 -0
- package/src/lint/rules/rules.test.ts +70 -0
- package/src/lint/rules/uid-syntax.ts +56 -0
- package/src/lsp/completions.test.ts +31 -0
- package/src/lsp/completions.ts +15 -0
- package/src/lsp/hover.test.ts +25 -0
- package/src/lsp/hover.ts +28 -0
- package/src/package-cli.ts +17 -0
- package/src/panels.ts +275 -0
- package/src/pin.ts +68 -0
- package/src/plugin.test.ts +50 -0
- package/src/plugin.ts +116 -0
- package/src/query.ts +160 -0
- package/src/schema/dashboard.gen.ts +1289 -0
- package/src/schema/gauge.gen.ts +64 -0
- package/src/schema/heatmap.gen.ts +321 -0
- package/src/schema/index.ts +17 -0
- package/src/schema/logs.gen.ts +34 -0
- package/src/schema/loki.gen.ts +77 -0
- package/src/schema/prometheus.gen.ts +181 -0
- package/src/schema/stat.gen.ts +86 -0
- package/src/schema/table.gen.ts +334 -0
- package/src/schema/tempo.gen.ts +146 -0
- package/src/schema/text.gen.ts +22 -0
- package/src/schema/timeseries.gen.ts +208 -0
- package/src/schema-validate.ts +143 -0
- package/src/schema.test.ts +76 -0
- package/src/serializer.test.ts +170 -0
- package/src/serializer.ts +37 -0
- package/src/skill-defs.ts +31 -0
- package/src/skills/chant-grafana-provisioning.md +42 -0
- package/src/skills/chant-grafana.md +93 -0
- package/src/spec/fetch-cli.ts +27 -0
- package/src/spec/schemas/dashboard.jsonschema.json +1901 -0
- package/src/spec/schemas/gauge.jsonschema.json +114 -0
- package/src/spec/schemas/heatmap.jsonschema.json +480 -0
- package/src/spec/schemas/logs.jsonschema.json +94 -0
- package/src/spec/schemas/loki.jsonschema.json +118 -0
- package/src/spec/schemas/prometheus.jsonschema.json +276 -0
- package/src/spec/schemas/stat.jsonschema.json +163 -0
- package/src/spec/schemas/table.jsonschema.json +751 -0
- package/src/spec/schemas/tempo.jsonschema.json +225 -0
- package/src/spec/schemas/text.jsonschema.json +72 -0
- package/src/spec/schemas/timeseries.jsonschema.json +471 -0
- package/src/spec/schemas.ts +56 -0
- package/src/util.ts +43 -0
- package/src/validate-cli.ts +7 -0
- package/src/validate-output.ts +380 -0
- package/src/validate.ts +108 -0
- package/src/variables.ts +161 -0
package/src/query.ts
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed queries, one class per datasource plugin: `PromQuery` (PromQL),
|
|
3
|
+
* `TempoQuery` (TraceQL) and `LokiQuery` (LogQL), each typed from that
|
|
4
|
+
* plugin's query schema at `GRAFANA_SCHEMA_PIN`.
|
|
5
|
+
*
|
|
6
|
+
* The expression is a string; this lexicon does not parse PromQL, TraceQL or
|
|
7
|
+
* LogQL. What it does check is where the query goes: `datasource` only
|
|
8
|
+
* accepts a datasource of the query's own plugin type, and GRAF101, GRAF102
|
|
9
|
+
* and GRAF103 check the emitted references after a build.
|
|
10
|
+
*
|
|
11
|
+
* `defineQuery` is the extension point for any other datasource plugin, and
|
|
12
|
+
* the three built-ins are defined through it.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { createProperty } from "@intentius/chant/runtime";
|
|
16
|
+
import type { Declarable } from "@intentius/chant/declarable";
|
|
17
|
+
import type { DatasourceEntity, DatasourceRef } from "./datasource";
|
|
18
|
+
import type { DatasourceVariableEntity } from "./variables";
|
|
19
|
+
import type { SchemaName } from "./pin";
|
|
20
|
+
import type { Dataquery as PrometheusDataquery } from "./schema/prometheus.gen";
|
|
21
|
+
import type { Dataquery as TempoDataquery } from "./schema/tempo.gen";
|
|
22
|
+
import type { Dataquery as LokiDataquery } from "./schema/loki.gen";
|
|
23
|
+
|
|
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> = DatasourceEntity<T> | DatasourceVariableEntity<T> | DatasourceRef<T>;
|
|
26
|
+
|
|
27
|
+
/** A query model's fields, less what chant fills in (`datasource`, `refId` stays optional). */
|
|
28
|
+
export type QueryModel<M> = Omit<M, "datasource">;
|
|
29
|
+
|
|
30
|
+
export type QueryProps<M, T extends string> = QueryModel<M> & {
|
|
31
|
+
/** Overrides the panel's datasource for this query. */
|
|
32
|
+
datasource?: DatasourceInput<T>;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export interface QueryDefinition<T extends string = string, M = Record<string, unknown>> {
|
|
36
|
+
/** The datasource plugin id this query is for. */
|
|
37
|
+
datasourceType: T;
|
|
38
|
+
/** The class name, for hover and docs. */
|
|
39
|
+
className: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
/** The vendored schema the model follows, when there is one (GRAF107 validates against it). */
|
|
42
|
+
schema?: SchemaName;
|
|
43
|
+
/** Which field holds the expression, for GRAF103 and hover. */
|
|
44
|
+
expressionField?: string;
|
|
45
|
+
/** Fields the schema requires that Grafana fills in anyway, written when the author leaves them out. */
|
|
46
|
+
defaults?: Partial<M>;
|
|
47
|
+
/** True only for the queries this package ships. */
|
|
48
|
+
builtin: boolean;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface QueryEntity<T extends string = string, M = Record<string, unknown>> extends Declarable {
|
|
52
|
+
readonly props: QueryProps<M, T>;
|
|
53
|
+
readonly queryDefinition: QueryDefinition<T, M>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface QueryClass<T extends string = string, M = Record<string, unknown>> {
|
|
57
|
+
new (props: QueryProps<M, T>): QueryEntity<T, M>;
|
|
58
|
+
readonly definition: QueryDefinition<T, M>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export const QUERY_TYPE_PREFIX = "Grafana::Query::";
|
|
62
|
+
|
|
63
|
+
const REGISTRY_KEY = Symbol.for("chant.grafana.queryDefinitions");
|
|
64
|
+
function registry(): Map<string, QueryDefinition> {
|
|
65
|
+
const g = globalThis as unknown as Record<symbol, Map<string, QueryDefinition> | undefined>;
|
|
66
|
+
return (g[REGISTRY_KEY] ??= new Map());
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Every registered query definition, keyed by datasource type. */
|
|
70
|
+
export function registeredQueries(): QueryDefinition[] {
|
|
71
|
+
return [...registry().values()];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function queryDefinitionFor(datasourceType: string): QueryDefinition | undefined {
|
|
75
|
+
return registry().get(datasourceType);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function makeQueryClass<T extends string, M>(def: QueryDefinition<T, M>): QueryClass<T, M> {
|
|
79
|
+
const existing = registry().get(def.datasourceType);
|
|
80
|
+
if (existing?.builtin && !def.builtin) {
|
|
81
|
+
throw new Error(`grafana: queries for "${def.datasourceType}" are built in (${existing.className}); use that class.`);
|
|
82
|
+
}
|
|
83
|
+
registry().set(def.datasourceType, def as unknown as QueryDefinition);
|
|
84
|
+
const Base = createProperty(`${QUERY_TYPE_PREFIX}${def.datasourceType}`, "grafana") as unknown as (
|
|
85
|
+
this: object,
|
|
86
|
+
props: Record<string, unknown>,
|
|
87
|
+
) => void;
|
|
88
|
+
const Cls = function (this: object, props: Record<string, unknown>) {
|
|
89
|
+
Base.call(this, props ?? {});
|
|
90
|
+
Object.defineProperty(this, "queryDefinition", { value: def, enumerable: false });
|
|
91
|
+
};
|
|
92
|
+
Object.defineProperty(Cls, "name", { value: def.className });
|
|
93
|
+
Object.defineProperty(Cls, "definition", { value: def, enumerable: false });
|
|
94
|
+
return Cls as unknown as QueryClass<T, M>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Define a query class for a datasource plugin chant doesn't ship.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* interface ElasticQueryModel { query: string; metrics?: Array<{ type: string; id: string }>; refId?: string }
|
|
103
|
+
*
|
|
104
|
+
* export const ElasticQuery = defineQuery<ElasticQueryModel>()({
|
|
105
|
+
* datasourceType: "elasticsearch",
|
|
106
|
+
* className: "ElasticQuery",
|
|
107
|
+
* expressionField: "query",
|
|
108
|
+
* });
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export function defineQuery<M>() {
|
|
112
|
+
return function <T extends string>(def: Omit<QueryDefinition<T, M>, "builtin">): QueryClass<T, M> {
|
|
113
|
+
return makeQueryClass<T, M>({ ...def, builtin: false });
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export function isQueryEntity(value: unknown): value is QueryEntity {
|
|
118
|
+
return (
|
|
119
|
+
typeof value === "object" &&
|
|
120
|
+
value !== null &&
|
|
121
|
+
(value as Declarable).lexicon === "grafana" &&
|
|
122
|
+
typeof (value as Declarable).entityType === "string" &&
|
|
123
|
+
(value as Declarable).entityType.startsWith(QUERY_TYPE_PREFIX)
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/** A Prometheus query: `expr` is PromQL. */
|
|
128
|
+
export const PromQuery = makeQueryClass<"prometheus", PrometheusDataquery>({
|
|
129
|
+
datasourceType: "prometheus",
|
|
130
|
+
className: "PromQuery",
|
|
131
|
+
description: "A Prometheus query; expr is PromQL",
|
|
132
|
+
schema: "prometheus",
|
|
133
|
+
expressionField: "expr",
|
|
134
|
+
builtin: true,
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
/** A Tempo query: `query` is TraceQL. `filters` defaults to none. */
|
|
138
|
+
export const TempoQuery = makeQueryClass<"tempo", Omit<TempoDataquery, "filters"> & Partial<Pick<TempoDataquery, "filters">>>({
|
|
139
|
+
datasourceType: "tempo",
|
|
140
|
+
className: "TempoQuery",
|
|
141
|
+
description: "A Tempo query; query is TraceQL",
|
|
142
|
+
schema: "tempo",
|
|
143
|
+
expressionField: "query",
|
|
144
|
+
defaults: { filters: [], queryType: "traceql" },
|
|
145
|
+
builtin: true,
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
/** A Loki query: `expr` is LogQL. */
|
|
149
|
+
export const LokiQuery = makeQueryClass<"loki", LokiDataquery>({
|
|
150
|
+
datasourceType: "loki",
|
|
151
|
+
className: "LokiQuery",
|
|
152
|
+
description: "A Loki query; expr is LogQL",
|
|
153
|
+
schema: "loki",
|
|
154
|
+
expressionField: "expr",
|
|
155
|
+
builtin: true,
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
export type PromQueryEntity = InstanceType<typeof PromQuery>;
|
|
159
|
+
export type TempoQueryEntity = InstanceType<typeof TempoQuery>;
|
|
160
|
+
export type LokiQueryEntity = InstanceType<typeof LokiQuery>;
|