@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>
50 lines (48 loc) • 1.67 kB
text/typescript
import { ToStringTypes } from '@sdc-monitor/shared'
import { toStringValidateOption, _support, transformParams } from '@sdc-monitor/utils'
import { ReportDataType } from '@sdc-monitor/types'
import { BaseTransport } from '@sdc-monitor/core'
import { WxOptionsFieldsTypes } from './types'
export class WxTransport extends BaseTransport<WxOptionsFieldsTypes> {
configReportWxRequest: unknown
useImgUpload = false
constructor(options: Partial<WxOptionsFieldsTypes> = {}) {
super()
super.bindOptions(options)
this.bindOptions(options)
}
post(data: any, url: string) {
const requestFun = (): void => {
let requestOptions = { method: 'POST' } as WechatMiniprogram.RequestOption
if (typeof this.configReportWxRequest === 'function') {
const params = this.configReportWxRequest(data)
// default method
requestOptions = { ...requestOptions, ...params }
}
requestOptions = {
...requestOptions,
data: JSON.stringify(data),
url
}
wx.request(requestOptions)
}
this.queue.addTask(requestFun)
}
sendToServer(data: any, url: string) {
// 此处去修改入参
const params = transformParams(data)
return this.post(params, url)
}
getTransportData(data: ReportDataType) {
return {
authInfo: this.getAuthInfo(),
data,
deviceInfo: _support.deviceInfo
}
}
bindOptions(options: WxOptionsFieldsTypes = {}) {
const { configReportWxRequest } = options
toStringValidateOption(configReportWxRequest, 'configReportWxRequest', ToStringTypes.Function) &&
(this.configReportWxRequest = configReportWxRequest)
}
}