# All files / src/types options.ts

100% Statements 5/5
100% Branches 2/2
100% Functions 1/1
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177

    5x
    5x
    5x
    5x
    5x

     import { Breadcrumb } from '../core/breadcrumb'
    import { BreadcrumbPushData } from './breadcrumb'
    import { ReportDataType, TransportDataType } from './transportData'
    type CANCEL = null | undefined | boolean

    export type HttpMethod = 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE' | 'OPTIONS'

    export enum EMethods {
      Get = 'GET',
      Post = 'POST',
      Put = 'PUT',
      Delete = 'DELETE'
    }

    interface IRequestHeaderConfig {
      url: HttpMethod
      method: string
    }

    type TSetRequestHeader = (key: string, value: string) => {}
    export interface IBeforeAppAjaxSendConfig {
      setRequestHeader: TSetRequestHeader
    }
    export interface InitOptions extends SilentEventTypes, HooksTypes, WxSilentEventTypes {
      /**
       * dsn服务器地址
       */
      dsn?: string
      /**
       * 为true时，整个sdk将禁用
       */
      disabled?: boolean
      /**
       * 每个项目有一个唯一key
       */
      apikey?: string
      /**
       * 默认为关闭，为true是会打印一些信息：breadcrumb
       */
      debug?: boolean
      /**
       * 默认是关闭traceId，开启时，页面的所有请求都会生成一个uuid，放入请求头中
       */
      enableTraceId?: boolean
      /**
       * 如果开启了enableTraceId,也需要配置该配置项，includeHttpUrlTraceIdRegExp.test(xhr.url)为true时，才会在该请求头中添加traceId
       * 由于考虑部分接口如果随便加上多余的请求头会造成跨域，所以这边用的是包含关系的正则
       */
      includeHttpUrlTraceIdRegExp?: RegExp
      /**
       * traceId放入请求头中的key，默认是Trace-Id
       */
      traceIdFieldName?: string
      /**
       * 默认为空，所有ajax都会被监听，不为空时，filterXhrUrlRegExp.test(xhr.url)为true时过滤
       */
      filterXhrUrlRegExp?: RegExp
      /**
       * 忽视某些错误不上传
       */
      // ignoreErrors?: Array<string | RegExp>
      /**
       * 默认20，最大100，超过100还是设置成100
       */
      maxBreadcrumbs?: number
    }

    export interface HooksTypes {
      /**
       * 钩子函数，配置发送到服务端的xhr
       * 可以对当前xhr实例做一些配置：xhr.setRequestHeader()、xhr.withCredentials
       * 会在xhr.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8')、
       * xhr.withCredentials = true,后面调用该函数
       * ../param xhr XMLHttpRequest的实例
       */
      configReportXhr?(xhr: XMLHttpRequest): void
      /**
       * 钩子函数，在每次发送事件前会调用
       *
       * ../param event 有SDK生成的错误事件
       * ../returns 如果返回 null | undefined | boolean 时，将忽略本次上传
       */
      beforeDataReport?(event: TransportDataType): Promise<TransportDataType | null | CANCEL> | TransportDataType | CANCEL | null
      /**
       * 钩子函数，在每次添加用户行为事件前都会调用
       *
       * ../param breadcrumb 由SDK生成的breacrumb事件栈
       * ../param hint 当次的生成的breadcrumb数据
       * ../returns 如果返回 null | undefined | boolean 时，将忽略本次的push
       */
      beforePushBreadcrumb?(breadcrumb: Breadcrumb, hint: BreadcrumbPushData): BreadcrumbPushData | CANCEL
      /**
       * 在状态小于400并且不等于0的时候回调用当前hook
       * ../param data 请求状态为200时返回的响应体
       * ../returns 如果返回 null | undefined | boolean 时，将忽略本次的上传
       */
      // afterSuccessHttp?<T>(data: T): string | CANCEL
      /**
       * 钩子函数，拦截用户页面的ajax请求，并在ajax请求发送前执行该hook，可以对用户发送的ajax请求做xhr.setRequestHeader
       * ../param config 当前请求的
       */
      beforeAppAjaxSend?(config: IRequestHeaderConfig, setRequestHeader: IBeforeAppAjaxSendConfig): void

      /**
       * 钩子函数：在页面拦截的ajax后，收集当次数据并传入该函数后并调用
       */
      // afterAppAjaxClose?(data: ReportDataType): ReportDataType

      /**
       * 钩子函数，在beforeDataReport后面调用，在整合上报数据和本身SDK信息数据前调用，当前函数执行完后立即将数据错误信息上报至服务端
       * trackerId表示用户唯一键（可以理解成userId），需要trackerId的意义可以区分每个错误影响的用户数量
       */
      backTrackerId?(): string | number
    }

    export interface SilentEventTypes {
      /**
       * 静默监控Xhr事件
       */
      silentXhr?: boolean
      /**
       * 静默监控fetch事件
       */
      silentFetch?: boolean
      /**
       * 静默监控console事件
       */
      silentConsole?: boolean
      /**
       * 静默监控Dom事件
       */
      silentDom?: boolean
      /**
       * 静默监控history事件
       */
      silentHistory?: boolean
      /**
       * 静默监控error事件
       */
      silentError?: boolean
      /**
       * 静默监控unhandledrejection事件
       */
      silentUnhandledrejection?: boolean
      /**
       * 静默监控hashchange事件
       */
      silentHashchange?: boolean
      /**
       * 静默监控Vue.warn函数
       */
      silentVue?: boolean
    }

    export interface WxSilentEventTypes {
      /**
       * 静默监控AppOnError
       */
      silentWxOnError?: boolean
      /**
       * 静默监控AppOnUnhandledRejection
       */
      silentWxOnUnhandledRejection?: boolean
      /**
       * 静默监控AppOnPageNotFound
       */
      silentWxOnPageNotFound?: boolean
      /**
       * 静默监控PageOnShareAppMessage
       */
      silentWxOnShareAppMessage?: boolean
      /**
       * 静默监控小程序路由
       */
      silentMiniRoute?: boolean
    }