@grafana/assistant
Version:
Type definitions and helper functions for Grafana Assistant
52 lines (51 loc) • 1.83 kB
TypeScript
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'];