profiling.d.ts 1.6 KB

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