The application graph of ledger-desk The graph that analyze_javascript_application returns for the js-app fixture, drawn as boxes with the relation names on the arrows. Row one: the package ledger-desk loads the electron-main main.js, which contains the BrowserWindow at lines 8 to 16. Row two: main.js loads the electron-renderer index.html, the BrowserWindow loads the electron-preload preload.js, and preload.js exposes the context-bridge-api ledger with three members. Row three: preload.js invokes the ipc-channels ledger:percent-change and ledger:grade-label and sends on ledger:log. Row four: three ipc-handlers in main.js handle those channels. Row five: index.html loads the javascript-asset renderer.js, which calls the network endpoint /api/ledger/latest with fetch and persists_to the storage ledger:latest with localStorage.setItem. ledger-desk package, package.json main.js electron-main BrowserWindow@8:17-16:4 browser-window loads contains index.html electron-renderer ledger context bridge, 3 members preload.js electron-preload loads loads exposes ledger:percent-change ipc-channel ledger:grade-label ipc-channel ledger:log ipc-channel sends invokes ledger:percent-change handler, ipcMain.handle ledger:grade-label handler, ipcMain.handle ledger:log handler, ipcMain.on handles handles handles renderer.js javascript-asset /api/ledger/latest endpoint, fetch ledger:latest storage, localStorage loads calls persists_to