import { IErrorInfo, INavigator, IPerformance, IPv, IUserActivity } from '.'; /** * @description 上报信息 */ export interface IReport extends INavigator { /** SDK 版本 */ version: string; /** 项目ID */ projectID: string; /** location.host */ host: string; /** 用户uuid */ uuid: string; /** 源页面 */ originPage: string; /** 当前页面 */ page: string; /** 上报日志的时间戳 */ time: number; /** 自定义payload */ customPayload?: string; /** 信息类型 */ type: IType; /** viewport的宽高 */ viewport: string; /** 屏幕宽高 */ screen: string; /** 页面title */ pageTitle: string; /** 页面referrer */ referrer: string; /** 页面编码 */ charset: string; /** dpr */ dpr: number; pv: IPv | null; lag: { lagTime: number; } | null; error: IErrorInfo | null; ua: IUserActivity | null; perf: IPerformance | null; req: { requestType: string; responseURL: string; status: number; loadTime: number; statusText: string; reason: 'slow' | 'failed' | string; detail: string; requestData: string | null; responseBody: string | null; method: string; } | null; vD?: { /** 埋点名称 */ trackName: string; params: { /** 参数名称 */ name: string; /** 参数值 */ value: string; }[]; }; manualReport?: object; lifeCycleId: string; sessionId: string; } /** * @description 上报信息类型 * @type pv 路由变化 * @type error 资源加载错误及js错误相关 * @type ua 用户行为 * @type api 接口 * @type per 性能 * @type init 初始化时上报。因为初始化时,页面已经触发过路由,所以这次上报应 * 应当算作一次pv,但是又因为是初始化引起的,取单独类型进行区分 * @type request xhr请求超过阈值时的上报 * @type visual 可视化埋点上报 * @type manual 手动上报 */ export type IType = 'pv' | 'error' | 'ua' | 'api' | 'per' | 'init' | 'request' | 'visual' | 'manual' | 'lag'; export interface Navigator { connection: any; }