spy-client
Version:
spy client
210 lines (209 loc) • 5.72 kB
TypeScript
export interface SpyClientOption {
/**
* 模块ID
*/
pid: string;
/**
* 日志ID
*/
lid?: string;
/**
* 全局抽样配置,默认是 1,取值从[0, 1]
*/
sample?: number;
/**
* 是否校验发送字段符合规范,默认是 true
*/
check?: boolean;
/**
* 日志服务器,默认是webb服务器,尾部需要加?
*/
logServer?: string;
/**
* 本地日志cache对象,是指独立的spy-local-cache模块实例
*/
localCache?: any;
}
export declare class Module {
load?: () => void;
leave?: () => void;
destroy?: () => void;
}
export interface FIDMetric {
fid: number;
}
export type FIDCB = (metric: FIDMetric) => void;
export interface LCPMetric {
lcp: number;
}
export type LCPCB = (metric: LCPMetric) => void;
export declare enum ResType {
JS = "js",
CSS = "css",
IMG = "img",
FONT = "font"
}
export interface ResourceMetric {
allSize: number;
docSize: number;
headerSize: number;
jsNum: number;
cssNum: number;
imgNum: number;
fontNum: number;
jsSize: number;
cssSize: number;
imgSize: number;
fontSize: number;
allTransferSize: number;
docTransferSize: number;
jsTransferSize: number;
cssTransferSize: number;
imgTransferSize: number;
fontTransferSize: number;
jsDuration: number;
cssDuration: number;
imgDuration: number;
fontDuration: number;
jsCacheRate: number;
cssCacheRate: number;
imgCacheRate: number;
}
export interface ResourceHostMetric {
[host: string]: {
hostNum: number;
hostSize: number;
hostTransferSize: number;
hostDuration: number;
hostCacheRate: number;
};
}
export type ResourceCB = (metric: ResourceMetric, hostMetric: ResourceHostMetric) => void;
export interface ResourceErrorInfo {
msg: string;
xpath: string;
host: string;
type: string;
dur?: number;
}
export type ResourceErrorCB = (info: ResourceErrorInfo) => void;
export interface TimingMetric {
dns: number;
tcp: number;
request: number;
response: number;
parseHtml: number;
domReady: number;
loadEventHandle: number;
load: number;
fp?: number;
fcp?: number;
t7FirstPaint?: number;
t7FirstScreen?: number;
}
export type TimingCB = (metric: TimingMetric) => void;
export interface TTIMetric {
tti: number;
}
export type TTICB = (metric: TTIMetric) => void;
export interface TTIOption {
interval?: number;
filterRequest?: (entry: PerformanceEntry) => boolean;
}
export interface LayoutShiftMetric {
layoutShift: number;
}
export type LayoutShiftCB = (metric: LayoutShiftMetric) => void;
export interface MemoryMetric {
usedJSHeapSize: number;
totalJSHeapSize: number;
jsHeapSizeLimit: number;
usedJSHeapRate: number;
}
export type MemoryCB = (metric: MemoryMetric) => void;
export interface NavigatorInfoMetric {
downlink?: number;
effectiveType?: '2g' | '3g' | '4g' | 'slow-2g';
rtt?: number;
saveData?: boolean;
deviceMemory?: number;
hardwareConcurrency?: number;
}
export type NavigatorInfoCB = (metric: NavigatorInfoMetric) => void;
export interface FSPLongtaskMetric {
fspLongtaskTime: number;
fspTBT: number;
fspTotalTime: number;
fspLongtaskRate: number;
fspLongtaskNum: number;
}
export type FSPLongtaskCB = (metric: FSPLongtaskMetric) => void;
export interface LCPLongtaskMetric {
lcpLongtaskTime: number;
lcpTBT: number;
lcpTotalTime: number;
lcpLongtaskRate: number;
lcpLongtaskNum: number;
}
export type LCPLongtaskCB = (metric: LCPLongtaskMetric) => void;
export interface LoadLongtaskMetric {
loadLongtaskTime: number;
loadTBT: number;
loadTotalTime: number;
loadLongtaskRate: number;
loadLongtaskNum: number;
}
export type LoadLongtaskCB = (metric: LoadLongtaskMetric) => void;
export interface PageLongtaskMetric {
pageLongtaskTime: number;
pageTBT: number;
pageTotalTime: number;
pageLongtaskRate: number;
pageLongtaskNum: number;
pageIframeLongtaskTime: number;
pageIframeLongtaskRate: number;
pageIframeLongtaskNum: number;
}
export type PageLongtaskCB = (metric: PageLongtaskMetric) => void;
export interface ResOption {
ignorePaths?: string[];
trigger?: 'load' | 'leave';
}
export interface BigImgOption {
/**
* 体积大于该阈值,就认为是大图,默认150,单位是kb
*/
maxSize?: number;
/**
* 忽略指定path的资源
*/
ignorePaths?: string[];
/**
* 触发时机,在load事件触发后,还是在用户离开页面后,收集出现的加载慢的资源。,默认是load
*/
trigger?: 'load' | 'leave';
}
export interface HttpResOption {
/**
* 忽略指定path的资源
*/
ignorePaths?: string[];
/**
* 触发时机,在load事件触发后,还是在用户离开页面后,收集出现的加载慢的资源。,默认是load
*/
trigger?: 'load' | 'leave';
}
export interface SlowOption {
/**
* 加载时长大于该阈值,就认为是慢资源,默认1000,单位是ms
*/
threshold?: number;
/**
* 忽略指定path的资源
*/
ignorePaths?: string[];
/**
* 触发时机,在load事件触发后,还是在用户离开页面后,收集出现的加载慢的资源。,默认是load
*/
trigger?: 'load' | 'leave';
}