index.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import {Fragment} from 'react';
  2. import ContextBlock from 'sentry/components/events/contexts/contextBlock';
  3. import type {Event} from 'sentry/types/event';
  4. import {
  5. getContextMeta,
  6. getKnownData,
  7. getKnownStructuredData,
  8. getUnknownData,
  9. } from '../utils';
  10. import {getRuntimeKnownDataDetails} from './getRuntimeKnownDataDetails';
  11. import type {RuntimeData} from './types';
  12. import {RuntimeIgnoredDataType, RuntimeKnownDataType} from './types';
  13. type Props = {
  14. data: RuntimeData;
  15. event: Event;
  16. meta?: Record<string, any>;
  17. };
  18. export const runtimeKnownDataValues = [
  19. RuntimeKnownDataType.NAME,
  20. RuntimeKnownDataType.VERSION,
  21. ];
  22. const runtimeIgnoredDataValues = [RuntimeIgnoredDataType.BUILD];
  23. export function getKnownRuntimeContextData({data, meta}: Pick<Props, 'data' | 'meta'>) {
  24. return getKnownData<RuntimeData, RuntimeKnownDataType>({
  25. data,
  26. meta,
  27. knownDataTypes: runtimeKnownDataValues,
  28. onGetKnownDataDetails: v => getRuntimeKnownDataDetails(v),
  29. });
  30. }
  31. export function getUnknownRuntimeContextData({data, meta}: Pick<Props, 'data' | 'meta'>) {
  32. return getUnknownData({
  33. allData: data,
  34. knownKeys: [...runtimeKnownDataValues, ...runtimeIgnoredDataValues],
  35. meta,
  36. });
  37. }
  38. export function RuntimeEventContext({data, event, meta: propsMeta}: Props) {
  39. const meta = propsMeta ?? getContextMeta(event, 'runtime');
  40. const knownData = getKnownRuntimeContextData({data, meta});
  41. const knownStructuredData = getKnownStructuredData(knownData, meta);
  42. const unknownData = getUnknownRuntimeContextData({data, meta});
  43. return (
  44. <Fragment>
  45. <ContextBlock data={knownStructuredData} />
  46. <ContextBlock data={unknownData} />
  47. </Fragment>
  48. );
  49. }