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>;