github.com/grafana/pyroscope@v1.18.0/public/app/legacy/models/spyName.ts (about) 1 import { z } from 'zod'; 2 3 export type SpyNameFirstClassType = (typeof SpyNameFirstClass)[number]; 4 5 export const SpyNameFirstClass = [ 6 'dotnetspy', 7 'ebpfspy', 8 'gospy', 9 'phpspy', 10 'pyspy', 11 'rbspy', 12 'nodespy', 13 'javaspy', 14 'pyroscope-rs', 15 ] as const; 16 17 export const SpyNameOther = [ 18 'scrape', // for compatibility purposes, it should be golang 19 'tracing', 20 'unknown', 21 ] as const; 22 23 export const AllSpyNames = [...SpyNameFirstClass, ...SpyNameOther] as const; 24 25 export const SpyNameSchema = z.preprocess((val) => { 26 if (!val || !AllSpyNames.includes(val as (typeof AllSpyNames)[number])) { 27 return 'unknown'; 28 } 29 return val; 30 }, z.enum(AllSpyNames).default('unknown')); 31 32 export type SpyName = z.infer<typeof SpyNameSchema>;