11const { contextBridge, ipcRenderer } = require ( "electron" ) ;
22
3+ function sendDebugLog ( scope , message , details ) {
4+ try {
5+ ipcRenderer . send ( "debug:log" , {
6+ scope : String ( scope || "renderer" ) ,
7+ message : String ( message || "" ) ,
8+ details : details == null ? { } : details ,
9+ url : typeof location !== "undefined" ? String ( location . href || "" ) : "" ,
10+ } ) ;
11+ } catch { }
12+ }
13+
14+ sendDebugLog ( "preload" , "script-start" , {
15+ userAgent : typeof navigator !== "undefined" ? String ( navigator . userAgent || "" ) : "" ,
16+ } ) ;
17+
18+ if ( typeof document !== "undefined" ) {
19+ document . addEventListener ( "readystatechange" , ( ) => {
20+ sendDebugLog ( "preload" , "document-readystate" , {
21+ readyState : String ( document . readyState || "" ) ,
22+ } ) ;
23+ } ) ;
24+ }
25+
26+ if ( typeof window !== "undefined" ) {
27+ window . addEventListener ( "DOMContentLoaded" , ( ) => {
28+ sendDebugLog ( "preload" , "dom-content-loaded" ) ;
29+ } ) ;
30+
31+ window . addEventListener ( "load" , ( ) => {
32+ sendDebugLog ( "preload" , "window-load" ) ;
33+ } ) ;
34+
35+ window . addEventListener ( "error" , ( event ) => {
36+ sendDebugLog ( "preload" , "window-error" , {
37+ message : String ( event ?. message || "" ) ,
38+ filename : String ( event ?. filename || "" ) ,
39+ lineno : Number ( event ?. lineno || 0 ) ,
40+ colno : Number ( event ?. colno || 0 ) ,
41+ } ) ;
42+ } ) ;
43+
44+ window . addEventListener ( "unhandledrejection" , ( event ) => {
45+ const reason = event ?. reason ;
46+ sendDebugLog ( "preload" , "window-unhandledrejection" , {
47+ reason :
48+ reason instanceof Error
49+ ? {
50+ name : String ( reason . name || "Error" ) ,
51+ message : String ( reason . message || "" ) ,
52+ stack : String ( reason . stack || "" ) ,
53+ }
54+ : String ( reason || "" ) ,
55+ } ) ;
56+ } ) ;
57+
58+ window . setTimeout ( ( ) => {
59+ sendDebugLog ( "preload" , "set-timeout-0" ) ;
60+ } , 0 ) ;
61+ }
62+
363contextBridge . exposeInMainWorld ( "wechatDesktop" , {
464 // Marker used by the frontend to distinguish the Electron desktop shell from the pure web build.
565 __brand : "WeChatDataAnalysisDesktop" ,
@@ -8,6 +68,7 @@ contextBridge.exposeInMainWorld("wechatDesktop", {
868 close : ( ) => ipcRenderer . invoke ( "window:close" ) ,
969 isMaximized : ( ) => ipcRenderer . invoke ( "window:isMaximized" ) ,
1070 isDebugEnabled : ( ) => ipcRenderer . invoke ( "app:isDebugEnabled" ) ,
71+ logDebug : ( scope , message , details = { } ) => sendDebugLog ( scope , message , details ) ,
1172
1273 getAutoLaunch : ( ) => ipcRenderer . invoke ( "app:getAutoLaunch" ) ,
1374 setAutoLaunch : ( enabled ) => ipcRenderer . invoke ( "app:setAutoLaunch" , ! ! enabled ) ,
0 commit comments