github.com/grafana/pyroscope@v1.18.0/public/app/util/query.ts (about)

     1  export function appendLabelToQuery(
     2    query: string,
     3    label: string,
     4    labelValue: string
     5  ) {
     6    // Check if label is a "legacy" label name (i.e. only
     7    // contains characters in [a-zA-Z0-9_]). If not legacy,
     8    // need to wrap the label name in quotes
     9    const legacyLabelRegex = /^[a-zA-Z0-9_]+$/;
    10    if (!legacyLabelRegex.test(label)) {
    11      label = `"${label}"`;
    12    }
    13  
    14    const case1Regexp = new RegExp(`${label}=.+?(\\}|,)`);
    15    if (query.match(case1Regexp)) {
    16      return query.replace(case1Regexp, `${label}="${labelValue}"$1`);
    17    }
    18    if (query.indexOf('{}') !== -1) {
    19      return query.replace('}', `${label}="${labelValue}"}`);
    20    }
    21    if (query.indexOf('}') !== -1) {
    22      return query.replace('}', `, ${label}="${labelValue}"}`);
    23    }
    24  
    25    console.warn('TODO: handle this case');
    26    return query;
    27  }