1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039 |
- import {t} from 'sentry/locale';
- export enum FieldKind {
- TAG = 'tag',
- MEASUREMENT = 'measurement',
- BREAKDOWN = 'breakdown',
- FIELD = 'field',
- FUNCTION = 'function',
- EQUATION = 'equation',
- METRICS = 'metric',
- NUMERIC_METRICS = 'numeric_metric',
- }
- export enum FieldKey {
- AGE = 'age',
- ASSIGNED = 'assigned',
- ASSIGNED_OR_SUGGESTED = 'assigned_or_suggested',
- BOOKMARKS = 'bookmarks',
- CULPRIT = 'culprit',
- DEVICE_ARCH = 'device.arch',
- DEVICE_BATTERY_LEVEL = 'device.battery_level',
- DEVICE_BRAND = 'device.brand',
- DEVICE_CHARGING = 'device.charging',
- DEVICE_FAMILY = 'device.family',
- DEVICE_LOCALE = 'device.locale',
- DEVICE_MODEL_ID = 'device.model_id',
- DEVICE_NAME = 'device.name',
- DEVICE_ONLINE = 'device.online',
- DEVICE_ORIENTATION = 'device.orientation',
- DEVICE_SIMULATOR = 'device.simulator',
- DEVICE_UUID = 'device.uuid',
- DIST = 'dist',
- ENVIRONMENT = 'environment',
- ERROR_HANDLED = 'error.handled',
- ERROR_MECHANISM = 'error.mechanism',
- ERROR_TYPE = 'error.type',
- ERROR_UNHANDLED = 'error.unhandled',
- ERROR_VALUE = 'error.value',
- EVENT_TIMESTAMP = 'event.timestamp',
- EVENT_TYPE = 'event.type',
- FIRST_RELEASE = 'firstRelease',
- FIRST_SEEN = 'firstSeen',
- GEO_CITY = 'geo.city',
- GEO_COUNTRY_CODE = 'geo.country_code',
- GEO_REGION = 'geo.region',
- HAS = 'has',
- HTTP_METHOD = 'http.method',
- HTTP_REFERER = 'http.referer',
- HTTP_STATUS_CODE = 'http.status_code',
- HTTP_URL = 'http.url',
- ID = 'id',
- IS = 'is',
- ISSUE = 'issue',
- ISSUE_CATEGORY = 'issue.category',
- ISSUE_TYPE = 'issue.type',
- LAST_SEEN = 'lastSeen',
- LEVEL = 'level',
- LOCATION = 'location',
- MESSAGE = 'message',
- OS = 'os',
- OS_BUILD = 'os.build',
- OS_KERNEL_VERSION = 'os.kernel_version',
- PLATFORM = 'platform',
- PLATFORM_NAME = 'platform.name',
- PROJECT = 'project',
- RELEASE = 'release',
- RELEASE_BUILD = 'release.build',
- RELEASE_PACKAGE = 'release.package',
- RELEASE_STAGE = 'release.stage',
- RELEASE_VERSION = 'release.version',
- SDK_NAME = 'sdk.name',
- SDK_VERSION = 'sdk.version',
- STACK_ABS_PATH = 'stack.abs_path',
- STACK_COLNO = 'stack.colno',
- STACK_FILENAME = 'stack.filename',
- STACK_FUNCTION = 'stack.function',
- STACK_IN_APP = 'stack.in_app',
- STACK_LINENO = 'stack.lineno',
- STACK_MODULE = 'stack.module',
- STACK_PACKAGE = 'stack.package',
- STACK_RESOURCE = 'stack.resource',
- STACK_STACK_LEVEL = 'stack.stack_level',
- TIMESTAMP = 'timestamp',
- TIMESTAMP_TO_DAY = 'timestamp.to_day',
- TIMESTAMP_TO_HOUR = 'timestamp.to_hour',
- TIMES_SEEN = 'timesSeen',
- TITLE = 'title',
- TRACE = 'trace',
- TRACE_PARENT_SPAN = 'trace.parent_span',
- TRACE_SPAN = 'trace.span',
- TRANSACTION = 'transaction',
- TRANSACTION_DURATION = 'transaction.duration',
- TRANSACTION_OP = 'transaction.op',
- TRANSACTION_STATUS = 'transaction.status',
- USER = 'user',
- USER_DISPLAY = 'user.display',
- USER_EMAIL = 'user.email',
- USER_ID = 'user.id',
- USER_IP = 'user.ip',
- USER_USERNAME = 'user.username',
- }
- export enum FieldValueType {
- BOOLEAN = 'boolean',
- DATE = 'date',
- DURATION = 'duration',
- INTEGER = 'integer',
- NUMBER = 'number',
- PERCENTAGE = 'percentage',
- STRING = 'string',
- NEVER = 'never',
- SIZE = 'size',
- }
- export enum WebVital {
- FP = 'measurements.fp',
- FCP = 'measurements.fcp',
- LCP = 'measurements.lcp',
- FID = 'measurements.fid',
- CLS = 'measurements.cls',
- TTFB = 'measurements.ttfb',
- RequestTime = 'measurements.ttfb.requesttime',
- }
- export enum MobileVital {
- AppStartCold = 'measurements.app_start_cold',
- AppStartWarm = 'measurements.app_start_warm',
- FramesTotal = 'measurements.frames_total',
- FramesSlow = 'measurements.frames_slow',
- FramesFrozen = 'measurements.frames_frozen',
- FramesSlowRate = 'measurements.frames_slow_rate',
- FramesFrozenRate = 'measurements.frames_frozen_rate',
- StallCount = 'measurements.stall_count',
- StallTotalTime = 'measurements.stall_total_time',
- StallLongestTime = 'measurements.stall_longest_time',
- StallPercentage = 'measurements.stall_percentage',
- }
- export enum SpanOpBreakdown {
- SpansBrowser = 'spans.browser',
- SpansDb = 'spans.db',
- SpansHttp = 'spans.http',
- SpansResource = 'spans.resource',
- SpansUi = 'spans.ui',
- }
- export enum AggregationKey {
- Count = 'count',
- CountUnique = 'count_unique',
- CountMiserable = 'count_miserable',
- CountIf = 'count_if',
- CountWebVitals = 'count_web_vitals',
- Eps = 'eps',
- Epm = 'epm',
- FailureCount = 'failure_count',
- Min = 'min',
- Max = 'max',
- Sum = 'sum',
- Any = 'any',
- P50 = 'p50',
- P75 = 'p75',
- P95 = 'p95',
- P99 = 'p99',
- P100 = 'p100',
- Percentile = 'percentile',
- Avg = 'avg',
- Apdex = 'apdex',
- UserMisery = 'user_misery',
- FailureRate = 'failure_rate',
- LastSeen = 'last_seen',
- }
- export interface FieldDefinition {
- kind: FieldKind;
- valueType: FieldValueType | null;
- /**
- * Is this field being deprecated
- */
- deprecated?: boolean;
- /**
- * Description of the field
- */
- desc?: string;
- /**
- * Feature flag that indicates gating of the field from use
- */
- featureFlag?: string;
- /**
- * Additional keywords used when filtering via autocomplete
- */
- keywords?: string[];
- }
- export const AGGREGATION_FIELDS: Record<AggregationKey, FieldDefinition> = {
- [AggregationKey.Count]: {
- desc: t('count of events'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.NUMBER,
- },
- [AggregationKey.CountUnique]: {
- desc: t('Unique count of the field values'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.INTEGER,
- },
- [AggregationKey.CountMiserable]: {
- desc: t('Count of unique miserable users'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.NUMBER,
- },
- [AggregationKey.CountIf]: {
- desc: t('Count of events matching the parameter conditions'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.NUMBER,
- },
- [AggregationKey.CountWebVitals]: {
- desc: t('Count of web vitals with a specific status'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.NUMBER,
- },
- [AggregationKey.Eps]: {
- desc: t('Events per second'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.NUMBER,
- },
- [AggregationKey.Epm]: {
- desc: t('Events per minute'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.NUMBER,
- },
- [AggregationKey.FailureRate]: {
- desc: t('Failed event percentage based on transaction.status'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.PERCENTAGE,
- },
- [AggregationKey.FailureCount]: {
- desc: t('Failed event count based on transaction.status'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.NUMBER,
- },
- [AggregationKey.Min]: {
- desc: t('Returns the minimum value of the selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.Max]: {
- desc: t('Returns maximum value of the selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.Sum]: {
- desc: t('Returns the total value for the selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.Any]: {
- desc: t('Not Recommended, a random field value'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.P50]: {
- desc: t('Returns the 50th percentile of the selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.P75]: {
- desc: t('Returns the 75th percentile of the selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.P95]: {
- desc: t('Returns the 95th percentile of the selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.P99]: {
- desc: t('Returns the 99th percentile of the selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.P100]: {
- desc: t('Returns the 100th percentile of the selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.Percentile]: {
- desc: t('Returns the percentile of the selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.Avg]: {
- desc: t('Returns averages for a selected field'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.Apdex]: {
- desc: t('Performance score based on a duration threshold'),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.UserMisery]: {
- desc: t(
- 'User-weighted performance metric that counts the number of unique users who were frustrated'
- ),
- kind: FieldKind.FUNCTION,
- valueType: null,
- },
- [AggregationKey.LastSeen]: {
- desc: t('Issues last seen at a date and time'),
- kind: FieldKind.FUNCTION,
- valueType: FieldValueType.DATE,
- },
- };
- export const MEASUREMENT_FIELDS: Record<WebVital | MobileVital, FieldDefinition> = {
- [WebVital.FP]: {
- desc: t('Web Vital First Paint'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [WebVital.FCP]: {
- desc: t('Web Vital First Contentful Paint'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [WebVital.LCP]: {
- desc: t('Web Vital Largest Contentful Paint'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [WebVital.FID]: {
- desc: t('Web Vital First Input Delay'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [WebVital.CLS]: {
- desc: t('Web Vital Cumulative Layout Shift'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.NUMBER,
- },
- [WebVital.TTFB]: {
- desc: t('Web Vital Time To First Byte'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [WebVital.RequestTime]: {
- desc: t('Time between start of request to start of response'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [MobileVital.AppStartCold]: {
- desc: t('First launch (not in memory and no process exists)'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [MobileVital.AppStartWarm]: {
- desc: t('Already launched (partial memory and process may exist)'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [MobileVital.FramesTotal]: {
- desc: t('Total number of frames'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.INTEGER,
- },
- [MobileVital.FramesSlow]: {
- desc: t('Number of slow frames'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.INTEGER,
- },
- [MobileVital.FramesFrozen]: {
- desc: t('Number of frozen frames'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.INTEGER,
- },
- [MobileVital.FramesSlowRate]: {
- desc: t('Number of slow frames out of the total'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.PERCENTAGE,
- },
- [MobileVital.FramesFrozenRate]: {
- desc: t('Number of frozen frames out of the total'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.PERCENTAGE,
- },
- [MobileVital.StallCount]: {
- desc: t('Count of slow Javascript event loops (React Native)'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.INTEGER,
- },
- [MobileVital.StallTotalTime]: {
- desc: t('Total stall duration (React Native)'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.PERCENTAGE,
- },
- [MobileVital.StallLongestTime]: {
- desc: t('Duration of slowest Javascript event loop (React Native)'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.INTEGER,
- },
- [MobileVital.StallPercentage]: {
- desc: t('Total stall duration out of the total transaction duration (React Native)'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.PERCENTAGE,
- },
- };
- export const SPAN_OP_FIELDS: Record<SpanOpBreakdown, FieldDefinition> = {
- [SpanOpBreakdown.SpansBrowser]: {
- desc: t('Cumulative time based on the browser operation'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [SpanOpBreakdown.SpansDb]: {
- desc: t('Cumulative time based on the database operation'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [SpanOpBreakdown.SpansHttp]: {
- desc: t('Cumulative time based on the http operation'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [SpanOpBreakdown.SpansResource]: {
- desc: t('Cumulative time based on the resource operation'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- [SpanOpBreakdown.SpansUi]: {
- desc: t('Cumulative time based on the ui operation'),
- kind: FieldKind.METRICS,
- valueType: FieldValueType.DURATION,
- },
- };
- type AllFieldKeys =
- | keyof typeof AGGREGATION_FIELDS
- | keyof typeof MEASUREMENT_FIELDS
- | keyof typeof SPAN_OP_FIELDS
- | FieldKey;
- const FIELD_DEFINITIONS: Record<AllFieldKeys, FieldDefinition> = {
- ...AGGREGATION_FIELDS,
- ...MEASUREMENT_FIELDS,
- ...SPAN_OP_FIELDS,
- [FieldKey.AGE]: {
- desc: t('The age of the issue in relative time'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.DURATION,
- },
- [FieldKey.ASSIGNED]: {
- desc: t('Assignee of the issue as a user ID'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.ASSIGNED_OR_SUGGESTED]: {
- desc: t('Assignee or suggestee of the issue as a user ID'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.CULPRIT]: {
- deprecated: true,
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.BOOKMARKS]: {
- desc: t('The issues bookmarked by a user ID'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DEVICE_ARCH]: {
- desc: t('CPU architecture'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DEVICE_BATTERY_LEVEL]: {
- desc: t('Indicates remaining battery life'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DEVICE_BRAND]: {
- desc: t('Brand of device'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DEVICE_CHARGING]: {
- desc: t('Charging at the time of the event'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.BOOLEAN,
- },
- [FieldKey.DEVICE_FAMILY]: {
- desc: t('Model name across generations'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DEVICE_LOCALE]: {
- desc: t("The locale of the user's device"),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DEVICE_MODEL_ID]: {
- desc: t('Internal hardware revision'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DEVICE_NAME]: {
- desc: t('Descriptor details'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DEVICE_ONLINE]: {
- desc: t('Online at the time of the event'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.BOOLEAN,
- },
- [FieldKey.DEVICE_ORIENTATION]: {
- desc: t('Portrait or landscape view '),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DEVICE_SIMULATOR]: {
- desc: t('Indicates if it occured on a simulator'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.BOOLEAN,
- },
- [FieldKey.DEVICE_UUID]: {
- desc: t('Unique device identifier'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.DIST]: {
- desc: t(
- 'Distinguishes between build or deployment variants of the same release of an application.'
- ),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.ENVIRONMENT]: {
- desc: t('The environment the event was seen in'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.ERROR_HANDLED]: {
- desc: t('Determines handling status of the error'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.BOOLEAN,
- },
- [FieldKey.ERROR_MECHANISM]: {
- desc: t('The mechanism that created the error'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.ERROR_TYPE]: {
- desc: t('The type of exception'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.ERROR_UNHANDLED]: {
- desc: t('Determines unhandling status of the error'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.BOOLEAN,
- },
- [FieldKey.ERROR_VALUE]: {
- desc: t('Original value that exhibits error'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.EVENT_TIMESTAMP]: {
- desc: t('Date and time of the event'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.DATE,
- },
- [FieldKey.EVENT_TYPE]: {
- desc: t('Type of event (Errors, transactions, csp and default)'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.GEO_CITY]: {
- desc: t('Full name of the city'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.GEO_COUNTRY_CODE]: {
- desc: t('Country code based on ISO 3166-1'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.GEO_REGION]: {
- desc: t('Full name of the country'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.HTTP_METHOD]: {
- desc: t('Method of the request that created the event'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.HTTP_REFERER]: {
- desc: t('The web page the resource was requested from'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.HTTP_STATUS_CODE]: {
- desc: t('Type of response (i.e., 200, 404)'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.HTTP_URL]: {
- desc: t('Full URL of the request without parameters'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.ID]: {
- desc: t('The event identification number'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.IS]: {
- desc: t('The properties of an issue (i.e. Resolved, unresolved)'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- keywords: ['ignored', 'assigned', 'for_review', 'unassigned', 'linked', 'unlinked'],
- },
- [FieldKey.ISSUE]: {
- desc: t('The issue identification code'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.ISSUE_CATEGORY]: {
- desc: t('The category of issue'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- keywords: ['error', 'performance'],
- featureFlag: 'performance-issues',
- },
- [FieldKey.ISSUE_TYPE]: {
- desc: t('The type of issue'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- featureFlag: 'performance-issues',
- },
- [FieldKey.LAST_SEEN]: {
- desc: t('Issues last seen at a given time'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.DATE,
- },
- [FieldKey.LEVEL]: {
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.LOCATION]: {
- desc: t('Location of error'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.MESSAGE]: {
- desc: t('Error message or transaction name'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.OS]: {
- desc: t('Build and kernel version'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.OS_BUILD]: {
- desc: t('Name of the build'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.OS_KERNEL_VERSION]: {
- desc: t('Version number'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.PLATFORM]: {
- desc: t('Name of the platform'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.PLATFORM_NAME]: {
- desc: t('Name of the platform'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.PROJECT]: {
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.FIRST_RELEASE]: {
- desc: t('Issues first seen in a given release'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.FIRST_SEEN]: {
- desc: t('Issues first seen at a given time'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.DATE,
- },
- [FieldKey.HAS]: {
- desc: t('Determines if a tag or field exists in an event'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.RELEASE]: {
- desc: t('The version of your code deployed to an environment'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.RELEASE_BUILD]: {
- desc: t('The full version number that identifies the iteration'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.RELEASE_PACKAGE]: {
- desc: t('The identifier unique to the project or application'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.RELEASE_STAGE]: {
- desc: t('Stage of usage (i.e., adopted, replaced, low)'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.RELEASE_VERSION]: {
- desc: t('An abbreviated version number of the build'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.SDK_NAME]: {
- desc: t('Name of the platform that sent the event'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.SDK_VERSION]: {
- desc: t('Version of the platform that sent the event'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.STACK_ABS_PATH]: {
- desc: t('Absolute path to the source file'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.STACK_COLNO]: {
- desc: t('Column number of the call starting at 1'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.NUMBER,
- },
- [FieldKey.STACK_FILENAME]: {
- desc: t('Relative path to the source file from the root directory'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.STACK_FUNCTION]: {
- desc: t('Name of function being called'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.STACK_IN_APP]: {
- desc: t('Indicates if frame is related to relevant code in stack trace'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.BOOLEAN,
- },
- [FieldKey.STACK_LINENO]: {
- desc: t('Line number of the call starting at 1'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.NUMBER,
- },
- [FieldKey.STACK_MODULE]: {
- desc: t('Platform specific module path'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.STACK_PACKAGE]: {
- desc: t('The package the frame is from'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.STACK_RESOURCE]: {
- desc: t('The package the frame is from'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.STACK_STACK_LEVEL]: {
- desc: t('Number of frames per stacktrace'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.NUMBER,
- },
- [FieldKey.TIMES_SEEN]: {
- desc: t('Total number of events'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.NUMBER,
- keywords: ['count'],
- },
- [FieldKey.TIMESTAMP]: {
- desc: t('The time an event finishes'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.DATE,
- },
- [FieldKey.TIMESTAMP_TO_HOUR]: {
- desc: t('Rounded down to the nearest hour'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.DATE,
- },
- [FieldKey.TIMESTAMP_TO_DAY]: {
- desc: t('Rounded down to the nearest day'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.DATE,
- },
- [FieldKey.TITLE]: {
- desc: t('Error or transaction name identifier'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.TRACE]: {
- desc: t('The trace identification number'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.TRACE_PARENT_SPAN]: {
- desc: t('Span identification number of the parent to the event'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.TRACE_SPAN]: {
- desc: t('Span identification number of the root span'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.TRANSACTION]: {
- desc: t('Error or transaction name identifier'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.TRANSACTION_OP]: {
- desc: t('Short code identifying the type of operation the span is measuring'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.TRANSACTION_DURATION]: {
- desc: t('Duration, in milliseconds, of the transaction'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.DURATION,
- },
- [FieldKey.TRANSACTION_STATUS]: {
- desc: t('Describes the status of the span/transaction'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.USER]: {
- desc: t('User identification value'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.USER_DISPLAY]: {
- desc: t('The first user field available of email, username, ID, and IP'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.USER_EMAIL]: {
- desc: t('Email address of the user'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.USER_ID]: {
- desc: t('Application specific internal identifier of the user'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.USER_IP]: {
- desc: t('IP Address of the user'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- [FieldKey.USER_USERNAME]: {
- desc: t('Username of the user'),
- kind: FieldKind.FIELD,
- valueType: FieldValueType.STRING,
- },
- };
- export const ISSUE_FIELDS = [
- FieldKey.AGE,
- FieldKey.ASSIGNED,
- FieldKey.ASSIGNED_OR_SUGGESTED,
- FieldKey.BOOKMARKS,
- FieldKey.DEVICE_ARCH,
- FieldKey.DEVICE_BRAND,
- FieldKey.DEVICE_FAMILY,
- FieldKey.DEVICE_LOCALE,
- FieldKey.DEVICE_LOCALE,
- FieldKey.DEVICE_MODEL_ID,
- FieldKey.DEVICE_ORIENTATION,
- FieldKey.DEVICE_UUID,
- FieldKey.DIST,
- FieldKey.ERROR_HANDLED,
- FieldKey.ERROR_MECHANISM,
- FieldKey.ERROR_TYPE,
- FieldKey.ERROR_UNHANDLED,
- FieldKey.ERROR_VALUE,
- FieldKey.EVENT_TIMESTAMP,
- FieldKey.EVENT_TYPE,
- FieldKey.FIRST_RELEASE,
- FieldKey.FIRST_SEEN,
- FieldKey.GEO_CITY,
- FieldKey.GEO_COUNTRY_CODE,
- FieldKey.GEO_REGION,
- FieldKey.HAS,
- FieldKey.HTTP_METHOD,
- FieldKey.HTTP_REFERER,
- FieldKey.HTTP_STATUS_CODE,
- FieldKey.HTTP_URL,
- FieldKey.ID,
- FieldKey.IS,
- FieldKey.ISSUE_CATEGORY,
- FieldKey.ISSUE_TYPE,
- FieldKey.LAST_SEEN,
- FieldKey.LOCATION,
- FieldKey.MESSAGE,
- FieldKey.OS_BUILD,
- FieldKey.OS_KERNEL_VERSION,
- FieldKey.PLATFORM,
- FieldKey.RELEASE,
- FieldKey.RELEASE_BUILD,
- FieldKey.RELEASE_PACKAGE,
- FieldKey.RELEASE_STAGE,
- FieldKey.RELEASE_VERSION,
- FieldKey.SDK_NAME,
- FieldKey.SDK_VERSION,
- FieldKey.STACK_ABS_PATH,
- FieldKey.STACK_FILENAME,
- FieldKey.STACK_FUNCTION,
- FieldKey.STACK_MODULE,
- FieldKey.STACK_PACKAGE,
- FieldKey.STACK_STACK_LEVEL,
- FieldKey.TIMESTAMP,
- FieldKey.TIMES_SEEN,
- FieldKey.TITLE,
- FieldKey.TRACE,
- FieldKey.TRANSACTION,
- FieldKey.USER_EMAIL,
- FieldKey.USER_ID,
- FieldKey.USER_IP,
- FieldKey.USER_USERNAME,
- ];
- /**
- * Refer to src/sentry/snuba/events.py, search for Columns
- */
- export const DISCOVER_FIELDS = [
- FieldKey.ID,
- // issue.id and project.id are omitted on purpose.
- // Customers should use `issue` and `project` instead.
- FieldKey.TIMESTAMP,
- // time is omitted on purpose.
- // Customers should use `timestamp` or `timestamp.to_hour`.
- FieldKey.TIMESTAMP_TO_HOUR,
- FieldKey.TIMESTAMP_TO_DAY,
- FieldKey.CULPRIT,
- FieldKey.LOCATION,
- FieldKey.MESSAGE,
- FieldKey.PLATFORM_NAME,
- FieldKey.ENVIRONMENT,
- FieldKey.RELEASE,
- FieldKey.DIST,
- FieldKey.TITLE,
- FieldKey.EVENT_TYPE,
- // tags.key and tags.value are omitted on purpose as well.
- FieldKey.TRANSACTION,
- FieldKey.USER,
- FieldKey.USER_ID,
- FieldKey.USER_EMAIL,
- FieldKey.USER_USERNAME,
- FieldKey.USER_IP,
- FieldKey.SDK_NAME,
- FieldKey.SDK_VERSION,
- FieldKey.HTTP_METHOD,
- FieldKey.HTTP_REFERER,
- FieldKey.HTTP_URL,
- FieldKey.OS_BUILD,
- FieldKey.OS_KERNEL_VERSION,
- FieldKey.DEVICE_NAME,
- FieldKey.DEVICE_BRAND,
- FieldKey.DEVICE_LOCALE,
- FieldKey.DEVICE_UUID,
- FieldKey.DEVICE_ARCH,
- FieldKey.DEVICE_FAMILY,
- FieldKey.DEVICE_BATTERY_LEVEL,
- FieldKey.DEVICE_ORIENTATION,
- FieldKey.DEVICE_SIMULATOR,
- FieldKey.DEVICE_ONLINE,
- FieldKey.DEVICE_CHARGING,
- FieldKey.GEO_COUNTRY_CODE,
- FieldKey.GEO_REGION,
- FieldKey.GEO_CITY,
- FieldKey.ERROR_TYPE,
- FieldKey.ERROR_VALUE,
- FieldKey.ERROR_MECHANISM,
- FieldKey.ERROR_HANDLED,
- FieldKey.ERROR_UNHANDLED,
- FieldKey.LEVEL,
- FieldKey.STACK_ABS_PATH,
- FieldKey.STACK_FILENAME,
- FieldKey.STACK_PACKAGE,
- FieldKey.STACK_MODULE,
- FieldKey.STACK_FUNCTION,
- FieldKey.STACK_IN_APP,
- FieldKey.STACK_COLNO,
- FieldKey.STACK_LINENO,
- FieldKey.STACK_STACK_LEVEL,
- // contexts.key and contexts.value omitted on purpose.
- // Transaction event fields.
- FieldKey.TRANSACTION_DURATION,
- FieldKey.TRANSACTION_OP,
- FieldKey.TRANSACTION_STATUS,
- FieldKey.TRACE,
- FieldKey.TRACE_SPAN,
- FieldKey.TRACE_PARENT_SPAN,
- // Field alises defined in src/sentry/api/event_search.py
- FieldKey.PROJECT,
- FieldKey.ISSUE,
- FieldKey.USER_DISPLAY,
- // Span Op fields
- SpanOpBreakdown.SpansBrowser,
- SpanOpBreakdown.SpansDb,
- SpanOpBreakdown.SpansHttp,
- SpanOpBreakdown.SpansResource,
- SpanOpBreakdown.SpansUi,
- ];
- export const getFieldDefinition = (key: string): FieldDefinition | null => {
- return FIELD_DEFINITIONS[key] ?? null;
- };
|