github.com/pyroscope-io/pyroscope@v0.37.3-0.20230725203016-5f6947968bd0/packages/pyroscope-models/src/units.ts (about)

     1  import { z } from 'zod';
     2  
     3  export const units = [
     4    'samples',
     5    'objects',
     6    'goroutines',
     7    'bytes',
     8    'lock_samples',
     9    'lock_nanoseconds',
    10    'trace_samples',
    11    'exceptions',
    12  ];
    13  
    14  export const UnitsSchema = z.preprocess((u) => {
    15    if (typeof u === 'string') {
    16      if (units.includes(u)) {
    17        return u;
    18      }
    19    }
    20    return 'unknown';
    21  }, z.enum(['samples', 'objects', 'goroutines', 'bytes', 'lock_samples', 'lock_nanoseconds', 'trace_samples', 'exceptions', 'unknown']));
    22  
    23  export type UnitsType = typeof units[number];
    24  export type Units = z.infer<typeof UnitsSchema>;