2025-04-01 10:38:02 +09:00

53 lines
1.3 KiB
TypeScript

import { isEmpty } from 'lodash';
import { Labels } from '../../../../types/unified-alerting-dto';
import { Label } from '../components/rules/state-history/common';
export function labelsToTags(labels: Labels) {
return Object.entries(labels)
.map(([label, value]) => `${label}=${value}`)
.sort();
}
export function objectLabelsToArray(labels: Labels): Label[] {
return Object.entries(labels);
}
export function arrayLabelsToObject(labels: Label[]): Labels {
const labelsObject: Labels = {};
labels.forEach((label: Label) => {
labelsObject[label[0]] = label[1];
});
return labelsObject;
}
export function arrayKeyValuesToObject(
labels: Array<{
key: string;
value: string;
}>
): Labels {
const labelsObject: Labels = {};
labels.forEach((label) => {
label.key && (labelsObject[label.key] = label.value);
});
return labelsObject;
}
export const GRAFANA_ORIGIN_LABEL = '__grafana_origin';
export function labelsSize(labels?: Labels) {
if (isEmpty(labels)) {
return 0;
}
return Object.keys(labels).filter((key) => !isPrivateLabelKey(key)).length;
}
export function isPrivateLabelKey(labelKey: string) {
return (labelKey.startsWith('__') && labelKey.endsWith('__')) || labelKey === GRAFANA_ORIGIN_LABEL;
}
export const isPrivateLabel = ([key, _]: [string, string]) => isPrivateLabelKey(key);