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 }