123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- import {Project} from './project';
- export enum SamplingRuleType {
- /**
- * The rule applies to traces (transaction events considered in the context of a trace)
- */
- TRACE = 'trace',
- /**
- * The rule applies to transaction events considered independently
- */
- TRANSACTION = 'transaction',
- }
- export enum SamplingConditionOperator {
- /**
- * Combine multiple sub-conditions with the operator 'and'
- */
- AND = 'and',
- }
- export enum SamplingRuleOperator {
- /**
- * The first rule on the list
- */
- IF = 'if',
- /**
- * All other rules, except rules without a condition
- */
- ELSE_IF = 'else_if',
- /**
- * Rules without a condition. In this case the rule cannot be reordered and is “pinned” at the bottom of the list
- */
- ELSE = 'else',
- }
- export enum SamplingInnerOperator {
- /**
- * It uses glob matches for checking (e.g. releases use glob matching "1.1.*" will match release 1.1.1 and 1.1.2)
- */
- GLOB_MATCH = 'glob',
- /**
- * It uses simple equality for checking
- */
- EQUAL = 'eq',
- /**
- * Custom Operation
- */
- CUSTOM = 'custom',
- }
- /**
- * String of the sampling category that's used on the backend.
- * Default naming strategy should be based on the path in the event, prefixed with `event.`.
- * To see the path in the event, click on the JSON button on the issue details page.
- */
- export enum SamplingInnerName {
- TRACE_RELEASE = 'trace.release',
- TRACE_ENVIRONMENT = 'trace.environment',
- TRACE_USER_ID = 'trace.user.id',
- TRACE_USER_SEGMENT = 'trace.user.segment',
- TRACE_TRANSACTION = 'trace.transaction',
- EVENT_RELEASE = 'event.release',
- EVENT_ENVIRONMENT = 'event.environment',
- EVENT_USER_ID = 'event.user.id',
- EVENT_USER_SEGMENT = 'event.user.segment',
- EVENT_LOCALHOST = 'event.is_local_ip',
- EVENT_WEB_CRAWLERS = 'event.web_crawlers',
- EVENT_TRANSACTION = 'event.transaction',
- EVENT_OS_NAME = 'event.contexts.os.name',
- EVENT_OS_VERSION = 'event.contexts.os.version',
- EVENT_DEVICE_NAME = 'event.contexts.device.name',
- EVENT_DEVICE_FAMILY = 'event.contexts.device.family',
- // Custom operators
- EVENT_IP_ADDRESSES = 'event.client_ip',
- EVENT_LEGACY_BROWSER = 'event.legacy_browser',
- EVENT_CSP = 'event.csp',
- EVENT_CUSTOM_TAG = 'event.custom_tag', // used for the fresh new custom tag condition (gets replaced once you choose tag key)
- }
- export enum LegacyBrowser {
- IE_PRE_9 = 'ie_pre_9',
- IE9 = 'ie9',
- IE10 = 'ie10',
- IE11 = 'ie11',
- SAFARI_PRE_6 = 'safari_pre_6',
- OPERA_PRE_15 = 'opera_pre_15',
- OPERA_MINI_PRE_8 = 'opera_mini_pre_8',
- ANDROID_PRE_4 = 'android_pre_4',
- }
- type SamplingConditionLogicalInnerGlob = {
- name:
- | SamplingInnerName.EVENT_RELEASE
- | SamplingInnerName.TRACE_RELEASE
- | SamplingInnerName.EVENT_TRANSACTION
- | SamplingInnerName.TRACE_TRANSACTION
- | SamplingInnerName.EVENT_OS_NAME
- | SamplingInnerName.EVENT_OS_VERSION
- | SamplingInnerName.EVENT_DEVICE_FAMILY
- | SamplingInnerName.EVENT_DEVICE_NAME
- | SamplingInnerName.EVENT_CUSTOM_TAG
- | string; // for custom tags
- op: SamplingInnerOperator.GLOB_MATCH;
- value: Array<string>;
- };
- type SamplingConditionLogicalInnerEq = {
- name:
- | SamplingInnerName.EVENT_ENVIRONMENT
- | SamplingInnerName.TRACE_ENVIRONMENT
- | SamplingInnerName.EVENT_USER_ID
- | SamplingInnerName.TRACE_USER_ID
- | SamplingInnerName.EVENT_USER_SEGMENT
- | SamplingInnerName.TRACE_USER_SEGMENT;
- op: SamplingInnerOperator.EQUAL;
- options: {
- ignoreCase: boolean;
- };
- value: Array<string>;
- };
- type SamplingConditionLogicalInnerEqBoolean = {
- name: SamplingInnerName.EVENT_LOCALHOST | SamplingInnerName.EVENT_WEB_CRAWLERS;
- op: SamplingInnerOperator.EQUAL;
- value: boolean;
- };
- type SamplingConditionLogicalInnerCustom = {
- name: SamplingInnerName.EVENT_CSP | SamplingInnerName.EVENT_IP_ADDRESSES;
- op: SamplingInnerOperator.CUSTOM;
- value: Array<string>;
- };
- type SamplingConditionLogicalInnerCustomLegacyBrowser = {
- name: SamplingInnerName.EVENT_LEGACY_BROWSER;
- op: SamplingInnerOperator.CUSTOM;
- value: Array<LegacyBrowser>;
- };
- export type SamplingConditionLogicalInner =
- | SamplingConditionLogicalInnerGlob
- | SamplingConditionLogicalInnerEq
- | SamplingConditionLogicalInnerEqBoolean
- | SamplingConditionLogicalInnerCustom
- | SamplingConditionLogicalInnerCustomLegacyBrowser;
- export type SamplingCondition = {
- inner: Array<SamplingConditionLogicalInner>;
- op: SamplingConditionOperator.AND;
- };
- export type SamplingRule = {
- /**
- * It is a possibly empty list of conditions to which the rule applies.
- * The conditions are combined using the and operator (so all the conditions must be satisfied for the rule to apply).
- * If the conditions field is an empty list the rule applies for all events that satisfy the projectIds and the ty fields.
- */
- condition: SamplingCondition;
- /**
- * This is a unique number within a project
- */
- id: number;
- /**
- * It is the sampling rate that will be applied if the rule is selected
- */
- sampleRate: number;
- /**
- * Describes the type of rule
- */
- type: SamplingRuleType;
- /**
- * Indicates if the rule is enabled for server-side sampling
- */
- active?: boolean;
- };
- export type SamplingDistribution = {
- null_sample_rate_percentage: null | number;
- project_breakdown:
- | null
- | {
- 'count()': number;
- project: string;
- project_id: number;
- }[];
- sample_rate_distributions: null | {
- avg: null | number;
- max: null | number;
- min: null | number;
- p50: null | number;
- p90: null | number;
- p95: null | number;
- p99: null | number;
- };
- sample_size: number;
- };
- export type SamplingSdkVersion = {
- isSendingSampleRate: boolean;
- latestSDKName: string;
- latestSDKVersion: string;
- project: string;
- };
- export type RecommendedSdkUpgrade = {
- latestSDKName: SamplingSdkVersion['latestSDKName'];
- latestSDKVersion: SamplingSdkVersion['latestSDKVersion'];
- project: Project;
- };
- export type UniformModalsSubmit = (props: {
- sampleRate: number;
- uniformRateModalOrigin: boolean;
- onError?: () => void;
- onSuccess?: (newRules: SamplingRule[]) => void;
- recommendedSampleRate?: boolean;
- rule?: SamplingRule;
- }) => void;
|