profiling.d.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. namespace Profiling {
  2. interface RawProfileBase {
  3. endValue: number;
  4. startValue: number;
  5. name: string;
  6. unit: string;
  7. spans?: RawSpan[];
  8. }
  9. // Android traces follow this format
  10. interface EventedProfile extends RawProfileBase {
  11. events: ReadonlyArray<Event>;
  12. type: 'evented';
  13. }
  14. // iOS traces follow this format
  15. interface SampledProfile extends RawProfileBase {
  16. weights: number[];
  17. samples: number[][];
  18. type: 'sampled';
  19. }
  20. type Event = {at: number; frame: number; type: 'O' | 'C'};
  21. type Span = {
  22. duration_ms: number;
  23. name: string;
  24. queue_label: string;
  25. relative_start_ms: number;
  26. thread_id: number;
  27. children?: Span[];
  28. };
  29. type FrameInfo = {
  30. key: string | number;
  31. name: string;
  32. file?: string;
  33. line?: number;
  34. column?: number;
  35. is_application?: boolean;
  36. image?: string;
  37. resource?: string;
  38. };
  39. type ProfileTypes = EventedProfile | SampledProfile | JSSelfProfiling.Trace;
  40. type ImportedProfiles = {
  41. name: string;
  42. traceID: string;
  43. activeProfileIndex: number;
  44. profiles: ProfileTypes[];
  45. };
  46. // This extends speedscope's schema - we are keeping this as is, but we are likely to diverge as we add more
  47. // sentry related features to the flamegraphs. This should happen after the MVP integration
  48. type Schema = {
  49. name: string;
  50. activeProfileIndex?: number;
  51. profiles: ReadonlyArray<ProfileTypes>;
  52. shared: {
  53. frames: ReadonlyArray<Omit<FrameInfo, 'key'>>;
  54. };
  55. };
  56. }