@sdc-monitor/demo
Version:
<div align="center"> <a href="#" target="_blank"> <img src="https://i.loli.net/2021/07/28/EvPwd4NjVH3tBfO.jpg" alt="mito-logo" height="90"> </a> <p>A Lightweight SDK For Monitor Web</p>
68 lines (64 loc) • 2.24 kB
text/typescript
import { Breadcrumb, BaseClient } from '@sdc-monitor/core'
import { ErrorTypes, EventTypes, MitoLog, MitoLogEmptyMsg, MitoLogEmptyTag, Silent, WxBreadcrumbTypes, WxEventTypes } from '@sdc-monitor/shared'
import { extractErrorStack, firstStrtoUppercase, getCurrentRoute, getTimestamp, isError, Severity, unknownToString } from '@sdc-monitor/utils'
import { LogTypes, TrackReportDataType } from '@sdc-monitor/types'
import { WxOptions } from './wxOptions'
import { WxTransport } from './wxTransport'
import { WxOptionsFieldsTypes } from './types'
import { addBreadcrumbInWx } from './utils'
export class WxClient extends BaseClient<WxOptionsFieldsTypes, EventTypes> {
transport: WxTransport
options: WxOptions
breadcrumb: Breadcrumb<WxOptionsFieldsTypes>
constructor(options: WxOptionsFieldsTypes = {}) {
super(options)
this.options = new WxOptions(options)
this.transport = new WxTransport(options)
this.breadcrumb = new Breadcrumb(options)
}
/**
* 判断当前插件是否启用,用于wx的option
*
* @param {WxEventTypes} name
* @return {*} {boolean}
* @memberof WxClient
*/
isPluginEnable(name: WxEventTypes): boolean {
const silentField = `${Silent}${firstStrtoUppercase(name)}`
return !this.options[silentField]
}
log(data: LogTypes) {
const { message = MitoLogEmptyMsg, tag = MitoLogEmptyTag, level = Severity.Critical, ex = '' } = data
let errorInfo = {}
if (isError(ex)) {
errorInfo = extractErrorStack(ex, level)
}
const reportData = {
type: ErrorTypes.LOG,
level,
message: unknownToString(message),
name: MitoLog,
customTag: unknownToString(tag),
time: getTimestamp(),
url: getCurrentRoute(),
...errorInfo
}
const breadcrumbStack = addBreadcrumbInWx.call(this, message, WxBreadcrumbTypes.CUSTOMER, Severity.fromString(level.toString()))
this.transport.send(reportData, breadcrumbStack)
}
/**
* 埋点信息发送
*
* @param {TrackReportDataType} trackData
* @memberof WxClient
*/
trackSend(trackData: TrackReportDataType): void {
this.transport.send(
{
isTrack: true,
...trackData
},
this.breadcrumb.getStack()
)
}
}