{"version":3,"file":"selectorBuilder.cjs","sources":["../../../../src/components/metrics-browser/selectorBuilder.ts"],"sourcesContent":["import { escapeLabelValueInExactSelector, escapeLabelValueInRegexSelector } from '../../escaping';\nimport { isValidLegacyName, utf8Support } from '../../utf8_support';\n\n/**\n * Builds a Prometheus selector string from a metric name and label values\n * @param selectedMetric - The metric name, can be empty\n * @param selectedLabelValues - Record of label names to their selected values\n * @returns A properly formatted Prometheus selector string\n */\nexport function buildSelector(selectedMetric: string, selectedLabelValues: Record<string, string[]>): string {\n  // Handle empty case\n  if (selectedMetric === '' && Object.keys(selectedLabelValues).length === 0) {\n    return '{}';\n  }\n\n  // Build all label selectors\n  const selectorParts: string[] = [];\n\n  // Process label selectors\n  for (const [key, values] of Object.entries(selectedLabelValues)) {\n    // Skip empty value arrays\n    if (values.length === 0) {\n      continue;\n    }\n\n    // Use regex matcher for multiple values\n    if (values.length > 1) {\n      // Wrap alternation in parentheses for better regex performance: (val1|val2|val3) instead of val1|val2|val3\n      selectorParts.push(`${utf8Support(key)}=~\"(${values.map(escapeLabelValueInRegexSelector).join('|')})\"`);\n    } else {\n      // Use exact matcher for single value\n      selectorParts.push(`${utf8Support(key)}=\"${escapeLabelValueInExactSelector(values[0])}\"`);\n    }\n  }\n\n  // Handle metric name cases\n  if (selectedMetric === '') {\n    return `{${selectorParts.join(',')}}`;\n  }\n\n  if (isValidLegacyName(selectedMetric)) {\n    return `${selectedMetric}{${selectorParts.join(',')}}`;\n  }\n\n  // Add quoted metric as another selector when it's not a valid legacy name\n  selectorParts.unshift(utf8Support(selectedMetric));\n  return `{${selectorParts.join(',')}}`;\n}\n"],"names":["utf8Support","escapeLabelValueInRegexSelector","escapeLabelValueInExactSelector","isValidLegacyName"],"mappings":";;;;;;;;AASO,SAAS,aAAA,CAAc,gBAAwB,mBAAA,EAAuD;AAE3G,EAAA,IAAI,mBAAmB,EAAA,IAAM,MAAA,CAAO,KAAK,mBAAmB,CAAA,CAAE,WAAW,CAAA,EAAG;AAC1E,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,MAAM,gBAA0B,EAAC;AAGjC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,mBAAmB,CAAA,EAAG;AAE/D,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AAErB,MAAA,aAAA,CAAc,IAAA,CAAK,CAAA,EAAGA,wBAAA,CAAY,GAAG,CAAC,CAAA,IAAA,EAAO,MAAA,CAAO,GAAA,CAAIC,wCAA+B,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,EAAA,CAAI,CAAA;AAAA,IACxG,CAAA,MAAO;AAEL,MAAA,aAAA,CAAc,IAAA,CAAK,CAAA,EAAGD,wBAAA,CAAY,GAAG,CAAC,CAAA,EAAA,EAAKE,wCAAA,CAAgC,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG,CAAA;AAAA,IAC1F;AAAA,EACF;AAGA,EAAA,IAAI,mBAAmB,EAAA,EAAI;AACzB,IAAA,OAAO,CAAA,CAAA,EAAI,aAAA,CAAc,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,EACpC;AAEA,EAAA,IAAIC,8BAAA,CAAkB,cAAc,CAAA,EAAG;AACrC,IAAA,OAAO,GAAG,cAAc,CAAA,CAAA,EAAI,aAAA,CAAc,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,EACrD;AAGA,EAAA,aAAA,CAAc,OAAA,CAAQH,wBAAA,CAAY,cAAc,CAAC,CAAA;AACjD,EAAA,OAAO,CAAA,CAAA,EAAI,aAAA,CAAc,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AACpC;;;;"}