vite-uni-dev-tool
Version:
vite-uni-dev-tool, debug, uni-app, 一处编写,到处调试
119 lines (97 loc) • 2.54 kB
text/typescript
import { DevStore } from './devStore';
import { DevEvent } from './devEvent';
import { DevIntercept } from './devIntercept';
import { DevConsole } from './devConsole';
import type { DevTool } from './type';
import { EventBus } from './devEventBus';
/**
* 备份原生方法
*
* @private
* @memberof DevStore
*/
const backup = {
// log: console.log,
// info: console.info,
// warn: console.warn,
// error: console.error,
setStorage: uni?.setStorage,
setStorageSync: uni?.setStorageSync,
clearStorage: uni?.clearStorage,
clearStorageSync: uni?.clearStorageSync,
removeStorage: uni?.removeStorage,
removeStorageSync: uni?.removeStorageSync,
reject: Promise.reject,
connectSocket: uni?.connectSocket,
uploadFile: uni?.uploadFile,
$on: uni.$on,
$once: uni.$once,
$emit: uni.$emit,
$off: uni.$off,
__log__: (uni as any).__log__,
};
const eventBus = new EventBus();
const store = new DevStore();
const event = new DevEvent({
store,
eventBus,
});
const console = new DevConsole(event);
const intercept = new DevIntercept({
event,
enableInterceptPromiseReject: store?.enableInterceptPromiseReject,
});
function getDevToolOptions() {
return store.getDevToolOptions();
}
function initDevTool(options?: DevTool.DevToolOptions) {
if (!options?.mode) {
console.error('[DevTool] 请传入 mode: import.meta.env.MODE');
}
store.setDevToolOptions(options || { mode: '' });
intercept.interceptVue3(options?.vue3instance);
}
function showDevToolButton() {
event.showDevToolButton();
}
function hideDevToolButton() {
event.hideDevToolButton();
}
function openDevToolWindow() {
event.openDevToolWindow();
}
function closeDevToolWindow() {
event.closeDevToolWindow();
}
function createDevTool() {
event.createDevTool();
intercept.init({
event,
enableInterceptPromiseReject: store?.enableInterceptPromiseReject,
});
}
function destroyDevTool() {
event.destroyDevTool();
}
function interceptVuexStorage(store: any) {
return intercept.interceptVuexStorage(store);
}
function interceptPiniaStore(context: any) {
return intercept.interceptPiniaStore(context);
}
uni.__dev__console = console;
export {
backup,
console,
initDevTool,
createDevTool,
destroyDevTool,
showDevToolButton,
hideDevToolButton,
openDevToolWindow,
closeDevToolWindow,
getDevToolOptions,
interceptVuexStorage,
interceptPiniaStore,
eventBus,
};