vite-uni-dev-tool
Version:
vite-uni-dev-tool, debug, uni-app, 一处编写,到处调试
417 lines (416 loc) • 12.6 kB
TypeScript
import { DevEvent } from './devEvent';
export declare namespace DevTool {
type UV = {
index: number;
inTime: number;
outTime: number;
duration: number;
};
type Page = {
index?: number;
path: string;
sort?: number;
name?: string;
type?: string;
style: {
navigationBarTitleText?: string;
};
/** 访问次数 */
visitTimes?: number;
totalDuration?: number;
/** 访问历史记录 */
uvList?: UV[];
} & Partial<UV>;
type Message = {
type: 'receive' | 'send';
status: 'success' | 'error';
valueType: ValueType;
value: any;
shortValue?: string;
time: number;
};
type WS = {
url: string;
/**
* -1: error
* 0:connecting
* 1:open
* 2:closing
* 3:closed
*/
readyState?: string;
headers?: {
key: string;
value: string;
}[];
method?: string;
protocols?: string[];
message: Message[];
};
type Nav = {
pagePath: string;
text: string;
};
type PagesJSON = {
pages: Page[];
subPackages?: {
root: string;
pages: Page[];
}[];
tabBar: {
list: Nav[];
};
};
type CaptureEventType = 'tap' | 'touchstart' | 'touchmove' | 'touchend';
type CaptureList = CaptureEventType[];
type UploadAbnormalUV = {
/** 上传地址 */
url: string;
/** 请求头 */
header?: Record<string, any>;
/** 超时时间 */
timerOut?: number;
/** 上报间隔 ms 默认 10 * 1000 */
duration?: number;
/**
* 上传的附加信息
* 自动增加 devUV 字段,工具内部异常数据
*/
payload?: {
/** 内部 uv 数据, 外部传入无效 */
devUV?: Record<string, any>;
[key: string]: any;
};
};
type DevToolOptions = {
/** 开启截屏监听 */
enableCaptureScreen?: boolean;
/** 是否拦截Promise.reject 最好不要拦截 默认禁用 */
enableInterceptPromiseReject?: boolean;
/** 打开窗口时隐藏按钮 */
openWindowHideButton?: boolean;
/** 最大的console条数 */
consoleMaxSize?: number;
/** 最大的网络请求条数 */
networkMaxSize?: number;
/** 最大的上传文件条数 */
uploadMaxSize?: number;
/** 最大的套接字消息条数 */
wsDataMaxSize?: number;
/** 最大的节点事件条数 */
elEventListMaxSize?: number;
/** 最大的uni事件列表条数 */
uniEventListMaxSize?: number;
/** 最大屏幕记录条数 */
screenMaxSize?: number;
/** 最大扫描条数 */
scanCodeListMaxSize?: number;
/** 最大占用缓存空间 */
cacheMaxSize?: number;
/** 所有路由信息 */
pagesJson?: PagesJSON;
/** 源文件服务地址 */
sourceFileServers?: string[];
/** 用于区分生产环境和开发环境,开发环境下,为了获取 Android 异常栈源码会获取本地源码进行展示 */
mode: string;
/** 用于捕获 vue 抛出的错误和警告 */
vueInstance?: any;
/**
* 该属性处于实验当中,谨慎使用
* 读取开发环境 source file,source map,默认 禁用
*/
useDevSource?: boolean;
/** 层级默认 998 */
zIndex?: number;
devToolVersion?: string;
devToolBuildTime?: string;
devToolGit?: string;
/** 初始化时是否显示调试按钮,默认显示 */
initShowDevTool?: boolean;
/** 需要捕获的事件 默认不捕获 */
captureList?: CaptureList;
/** 需要捕获的 data-xxx, 优先级高于 `excludeCaptureElDataSet` 默认空 捕获全部 */
includeCaptureElDataSet?: string[];
/** 排除捕获的 data-xxx, 优先级低于 includeCaptureElDataSet` */
excludeCaptureElDataSet?: string[];
/** 异常上报 */
uploadAbnormalUV?: UploadAbnormalUV;
};
type ButtonOptions = Partial<{
/** 按钮大小 */
buttonSize: number;
/** 按钮文本 */
buttonText: string;
/** 按钮文本颜色 */
buttonColor: string;
/** 按钮字体大小 */
buttonFontSize: string;
/** 按钮背景颜色 */
buttonBackgroundColor: string;
}>;
type Response = {
data?: any;
statusCode?: number | string;
header?: any;
cookies?: any[];
errMsg: string;
};
type NetworkItem = {
index: number;
url: string;
name: string;
method: string;
status: number | string;
time: string;
startTime: number;
endTime: number;
size: string;
headers: {
requestHeader: {
key: string;
value: any;
}[];
responseHeader: {
key: string;
value: any;
}[];
};
response: Response;
payload: any;
/** 调用栈 */
stack?: string;
/** 时间线宽度 */
width?: string;
/** 时间线位置 */
left?: string;
/** 超时配置 */
timeout?: number;
/** 拦截次数 */
interceptCount?: number;
/** 是否被拦截 */
intercepted?: boolean;
/** 发起人 */
sponsor?: 'user' | 'dev_tool';
/** 是否有上传 */
hasUpload?: boolean;
};
type StorageItem = {
key: string;
_oldKey: string;
value: string;
};
/** 调试工具目前支持处理的console类型 */
type ConsoleType = 'log' | 'info' | 'warn' | 'error' | 'timeEnd' | 'time' | 'clear' | 'count';
/** 不支持处理的console类型 */
type OriginalConsoleType = 'assert' | 'count' | 'countReset' | 'debug' | 'dir' | 'dirxml' | 'group' | 'groupCollapsed' | 'groupEnd' | 'table' | 'trace' | 'profile' | 'profileEnd' | 'timeStamp';
type ValueType = 'number' | 'string' | 'boolean' | 'null' | 'undefined' | 'symbol' | 'array' | 'object' | 'link';
type Arg = {
type: ValueType;
value: any;
shortValue?: string;
};
type ConsoleItem = {
type: string;
args: Arg[];
position: string;
time: string;
stack?: string;
/**
* input 输入
* output 输出
*/
mode?: 'input' | 'output';
/**
* 执行用时
*/
executionTime?: number;
/** 是否被上传 */
hasUpload?: boolean;
};
type UploadItem = {
index: number;
url?: string;
filePath?: string;
formData?: Record<string, any>;
method?: string;
headers?: {
requestHeader?: {
key: string;
value: unknown;
}[];
responseHeader?: {
key: string;
value: unknown;
}[];
};
response?: Record<string, any>;
files?: any[];
fileType?: string;
name?: string;
status: number | string;
timeout?: number;
startTime?: number;
endTime?: number;
/** 上传进度 */
progress?: number;
/** 已上传长度 */
totalBytesSent?: number;
/** 预计上传总长度 */
totalBytesExpectedToSend?: number;
/** 调用栈 */
stack?: string;
/** 是否被上传 */
hasUpload?: boolean;
};
type EventCount = {
on: number;
once: number;
emit: number;
off: number;
};
type EventCountKey = keyof EventCount;
type UniEventItem = {
/** 事件名称 */
eventName?: string;
/** 触发事件 */
timer?: string;
/** 调用位置 */
stack?: string;
/** 事件类型 */
type?: string;
/** 是否被上传 */
hasUpload?: boolean;
};
type Touch = {
/** 视口坐标 */
clientX: 357;
/** 视口坐标 */
clientY: 554;
/** 触摸压力 1 表示最大压力 */
force: 1;
/** 触摸点唯一标识(0 表示第一个触摸点) */
identifier: 0;
/** 文档坐标 */
pageX: 357;
/** 文档坐标 */
pageY: 554;
};
type ElEventItem = {
/** 事件类型 */
type: string;
/** 触发时间 */
timer: number;
/** 事件源 */
target: {
id?: string;
/** data- 携带节点属性 */
dataset?: Record<string, any>;
/** 其他属性 */
[key: string]: any;
};
/**
* 事件的详细坐标信息
* 屏幕位置
*/
touches: Touch[];
path: string;
/** 是否被上传 */
hasUpload?: boolean;
};
type RunJSItem = {
/** 代码 */
code?: string;
/** 结果 */
result?: any;
/** 开始时间 */
timer?: string;
/** 执行用时 */
duration?: number;
/** 执行状态 */
type?: string;
mode?: 'input' | 'output';
};
type ScreenItem = {
index: number;
position: string;
startTime: string;
endTime: string;
type: string;
path?: string;
hasUpload?: boolean;
};
type ScanCodeItem = {
timer: number;
charSet: string;
rawData: string;
result: string;
scanType: string;
errMsg: string;
resultObject?: any;
path: string;
stack?: string;
shortValue?: string;
};
type WindowData = {
devToolVisible?: boolean;
consoleList?: ConsoleItem[];
networkList?: NetworkItem[];
storageList?: StorageItem[];
routeList?: Page[];
vuexList?: Record<string, any>;
piniaList?: Record<string, any>;
systemInfo?: Record<string, any>;
deviceInfo?: Record<string, any>;
windowInfo?: Record<string, any>;
netWorkStatus?: Record<string, any>;
appInfo?: Record<string, any>;
wsList?: WS[];
size?: number;
sizeFormat?: string;
uploadList?: UploadItem[];
eventCount?: EventCount;
elEventList?: ElEventItem[];
uniEventList?: UniEventItem[];
screenList?: ScreenItem[];
interceptNetworkMap?: Map<string, NetworkItem>;
scanCodeList?: ScanCodeItem[];
/** 缓存网络配置到本地 */
cacheInterceptConfig?: boolean;
devToolVersion?: string;
devToolBuildTime?: string;
devToolGit?: string;
};
type DevInterceptOptions = {
event: DevEvent;
enableInterceptPromiseReject?: boolean;
};
type DevToolInfo = {
/** 是否销毁 */
devToolDestroy?: boolean;
/** 按钮状态 */
devToolButtonVisible?: boolean;
/** 窗口状态 */
devToolWindowVisible?: boolean;
/** 按钮位置 */
top?: number;
/** 按钮位置 */
left?: number;
/** 当前活动tab */
activeTab?: number;
/** 当前console类型 */
currentConsoleType?: string;
/** 当前network类型 */
currentNetworkType?: string;
/** 当前websocket类型 */
currentWebSocketType?: string;
/** table滚动位置 */
tabScrollLeft?: number;
/** 颜色主题 */
theme?: string;
/** 缓存拦截配置 */
cacheInterceptConfig?: boolean;
/** 拦截配置 */
interceptNetworkList?: DevTool.NetworkItem[];
};
}
//# sourceMappingURL=type.d.ts.map