import { IDeviceInfo } from './global.js'; type Callback = (...args: any[]) => any; /** 这些数据都是 需要提交的数据 */ interface IBasicInfo { /** 系统标识 */ system?: number | string; /** 系统中文名 */ systemName?: string; /** 客户端类型 web app h5 */ client?: string; /** 用户标识,调用接口时会通过token去取值 */ /** 应用名称,app端专用 */ appName?: string; /** 应用版本,app端专用 */ appVersion?: string; /** 离线包版本,app端专用 */ offlineVersion?: string; /** 工号 */ userCode?: string | number; /** 用户姓名 */ createBy?: string; /** 浏览器信息 */ navigator?: string; /** 设备相关信息 */ runtimeInfo?: Partial; [prop: string]: any; } interface IReport { url?: string; reportType?: "http" | "beacon"; headers?: Record; /** 上报数据格式化 */ format?: (data: IData[]) => IData[]; /** 自定义上报函数 */ customReport?: (data: IData[]) => Promise; /** 自定义决定是否上报 */ isReport?: (data: IData[]) => boolean; /** 非http、https场景下的请求方法 */ nonHttpMethod?: (options: any) => Promise; } interface IOptions { /** 初始化时传递的基础信息 */ basicInfo: IBasicInfo; /** 是否开启PV统计 */ pvReport?: boolean; /** 统计PV的方式 如果是repeat 那每次路由切换都会统计 * 如果是 single 只要不刷新页面统计不会重新计数已经统计过的路由 */ countPvType?: "repeat" | "single"; /** 是否开启UV统计 */ uvReport?: boolean; /** * 统计UV的最大时间,超过这个时间,会重新统计。单位是毫秒。默认是24小时。 * */ uvMaxTime?: number; /** 是否按天统计UV */ uvByDay?: boolean; /** 自定义UV统计 */ customUvReport?: (() => Promise) | null; /** 记录UV统计的key */ getUVKey?: () => string; /** 路由改变时,是否触发uv统计。具体添加UV还是依据设置的变量。 * 这里的判断主要是用来解决UV只有初始化时做统计,没法再基座中记录各个系统的UV统计数据 * */ isTriggerPathUv?: ((prePath: string | undefined, nextPath: string) => boolean) | null; /** 上传的接口信息 */ report?: IReport; /** 数据缓存方式 */ /** 是否开启 报错 上报 默认开启 */ errorReport?: boolean; /** 是否开启 页面性能 上报 默认开启 */ performanceReport?: boolean; /** 是否开启 hash变化 上报 默认开启 */ hashchangeReport?: boolean; /** 是否开启 history变化 上报 默认开启 */ historyReport?: boolean; /** 是否开启debugger */ isDebugger?: boolean; /** 记录路由最大长度 */ historyUrlsNum?: number; /** 超过这个长度后,立即上报 */ cacheMaxNum?: number; /** 上报请求最长数据条数 */ reportMaxNum?: number; /** 数据存储key */ cacheKey: string; /** 全局点击监听 */ globalClickListeners?: IGlobalClickListener[]; /** 上报失败最大重试次数,达到失败次数后,只存储不上报 */ maxRetryNum?: number; /** 达到最大上报失败次数后,多久解除上报限制 默认10分钟 */ removeRetryTime?: number; /** 数据重写 */ dataRewrite?: (data: IData) => IData; /** 其他信息 */ [prop: string]: any; } interface IGlobalClickListener { selector?: string; elementText?: string; callback?: (data: IListenConfig) => any; } interface IListenConfig { /** 目标触发元素 */ targetEl: any; /** 当前触发元素 */ currentEl: any; /** 点击元素文本 */ innerText: any; } declare enum EventType { Error = "error", UnhandledRejection = "unhandledrejection", History = "popstate", HashChange = "hashchange", Click = "click" } interface IListenParams { type: EventType; callback: Callback; options?: any; } interface IData extends IBasicInfo { /** 事件类型 */ eventKey: EventType | string; /** 事件内容 */ eventValue: any; /** 当前客户端记录上报的时间 */ requestTime?: number; /** 扩展信息 */ extra?: string; } export { Callback, EventType, IBasicInfo, IData, IGlobalClickListener, IListenConfig, IListenParams, IOptions, IReport };