import { getNextRefId } from '@grafana/data'; import { DataQuery } from '@grafana/schema'; /** * Makes sure all the queries have unique (and valid) refIds */ export function withUniqueRefIds(queries: DataQuery[]): DataQuery[] { const refIds = new Set(queries.map((query) => query.refId).filter(Boolean)); if (refIds.size === queries.length) { return queries; } refIds.clear(); return queries.map((query) => { if (query.refId && !refIds.has(query.refId)) { refIds.add(query.refId); return query; } const refId = getNextRefId(queries); refIds.add(refId); const newQuery = { ...query, refId, }; return newQuery; }); }