UNPKG

@grafana/assistant

Version:

Type definitions and helper functions for Grafana Assistant

52 lines (51 loc) 1.83 kB
import { NodeData, NodeDataParams, StructuredNodeData, StructuredNodeDataParams } from './base'; import { ComponentNodeData, type CreateComponentContextParams } from './component'; import { DashboardNodeData, FolderNodeData, type CreateDashboardContextParams, type CreateFolderContextParams } from './dashboard'; import { DatasourceNodeData, type CreateDatasourceContextParams } from './datasource'; import { LabelNameNodeData, LabelValueNodeData, type CreateLabelNameContextParams, type CreateLabelValueContextParams } from './label'; /** * registry to handle the type mappings between ItemData type, params and node data */ export type ContextTypeRegistry = { datasource: { params: CreateDatasourceContextParams; node: DatasourceNodeData; }; label_name: { params: CreateLabelNameContextParams; node: LabelNameNodeData; }; label_value: { params: CreateLabelValueContextParams; node: LabelValueNodeData; }; dashboard: { params: CreateDashboardContextParams; node: DashboardNodeData; }; dashboard_folder: { params: CreateFolderContextParams; node: FolderNodeData; }; structured: { params: StructuredNodeDataParams; node: StructuredNodeData; }; component: { params: CreateComponentContextParams; node: ComponentNodeData; }; unknown: { params: NodeDataParams; node: NodeData; }; }; export type DatasourceMeta = { datasourceType: string; datasourceName: string; img?: string; }; /** * Creates context nodes based on type with full type safety using generics */ export declare function createContextByType<T extends keyof ContextTypeRegistry>(type: T, params: ContextTypeRegistry[T]['params']): ContextTypeRegistry[T]['node'];