github.com/pyroscope-io/pyroscope@v0.37.3-0.20230725203016-5f6947968bd0/packages/pyroscope-models/src/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 compability 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>;