Add logging to background service worker (#1760)

* Add logging in background service worker

* Create ninety-sheep-end.md
This commit is contained in:
Nathan Bierema 2024-09-15 22:19:01 -04:00 committed by GitHub
parent 3c39eb49f2
commit eb3ac09b03
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 0 deletions

View File

@ -0,0 +1,5 @@
---
'remotedev-redux-devtools-extension': patch
---
Add logging to background service worker

View File

@ -249,6 +249,8 @@ type MonitorAction<S, A extends Action<string>> =
const maxChromeMsgSize = 32 * 1024 * 1024; const maxChromeMsgSize = 32 * 1024 * 1024;
function toMonitors<S, A extends Action<string>>(action: MonitorAction<S, A>) { function toMonitors<S, A extends Action<string>>(action: MonitorAction<S, A>) {
console.log(`Message to monitors: ${action.type}`);
for (const port of Object.values(connections.panel)) { for (const port of Object.values(connections.panel)) {
try { try {
port.postMessage(action); port.postMessage(action);
@ -315,6 +317,8 @@ interface ImportMessage {
type ToContentScriptMessage = ImportMessage | LiftedActionAction; type ToContentScriptMessage = ImportMessage | LiftedActionAction;
function toContentScript(messageBody: ToContentScriptMessage) { function toContentScript(messageBody: ToContentScriptMessage) {
console.log(`Message to tab ${messageBody.id}: ${messageBody.message}`);
if (messageBody.message === 'DISPATCH') { if (messageBody.message === 'DISPATCH') {
const { message, action, id, instanceId, state } = messageBody; const { message, action, id, instanceId, state } = messageBody;
connections.tab[id!].postMessage({ connections.tab[id!].postMessage({
@ -389,6 +393,8 @@ function toContentScript(messageBody: ToContentScriptMessage) {
} }
function toAllTabs(msg: TabMessage) { function toAllTabs(msg: TabMessage) {
console.log(`Message to all tabs: ${msg.type}`);
for (const tabPort of Object.values(connections.tab)) { for (const tabPort of Object.values(connections.tab)) {
tabPort.postMessage(msg); tabPort.postMessage(msg);
} }
@ -435,6 +441,7 @@ function messaging<S, A extends Action<string>>(
sender: chrome.runtime.MessageSender, sender: chrome.runtime.MessageSender,
) { ) {
let tabId = getId(sender); let tabId = getId(sender);
console.log(`Message from tab ${tabId}: ${request.type ?? request.split}`);
if (!tabId) return; if (!tabId) return;
if (sender.frameId) tabId = `${tabId}-${sender.frameId}`; if (sender.frameId) tabId = `${tabId}-${sender.frameId}`;
@ -517,6 +524,8 @@ function disconnect(
listener: (message: any, port: chrome.runtime.Port) => void, listener: (message: any, port: chrome.runtime.Port) => void,
) { ) {
return function disconnectListener() { return function disconnectListener() {
console.log(`Disconnected from ${type} ${id}`);
const p = connections[type][id]; const p = connections[type][id];
if (listener && p) p.onMessage.removeListener(listener); if (listener && p) p.onMessage.removeListener(listener);
if (p) p.onDisconnect.removeListener(disconnectListener); if (p) p.onDisconnect.removeListener(disconnectListener);
@ -541,10 +550,12 @@ function onConnect<S, A extends Action<string>>(port: chrome.runtime.Port) {
if (port.name === 'tab') { if (port.name === 'tab') {
id = getId(port.sender!); id = getId(port.sender!);
console.log(`Connected to tab ${id}`);
if (port.sender!.frameId) id = `${id}-${port.sender!.frameId}`; if (port.sender!.frameId) id = `${id}-${port.sender!.frameId}`;
connections.tab[id] = port; connections.tab[id] = port;
listener = (msg: ContentScriptToBackgroundMessage<S, A> | 'heartbeat') => { listener = (msg: ContentScriptToBackgroundMessage<S, A> | 'heartbeat') => {
if (msg === 'heartbeat') return; if (msg === 'heartbeat') return;
console.log(`Message from tab ${id}: ${msg.name}`);
if (msg.name === 'INIT_INSTANCE') { if (msg.name === 'INIT_INSTANCE') {
if (typeof id === 'number') { if (typeof id === 'number') {
chrome.action.enable(id); chrome.action.enable(id);
@ -578,11 +589,13 @@ function onConnect<S, A extends Action<string>>(port: chrome.runtime.Port) {
} else if (port.name && port.name.indexOf('monitor') === 0) { } else if (port.name && port.name.indexOf('monitor') === 0) {
// devpanel // devpanel
id = getId(port.sender!, port.name); id = getId(port.sender!, port.name);
console.log(`Connected to monitor ${id}`);
connections.panel[id] = port; connections.panel[id] = port;
monitors++; monitors++;
toAllTabs({ type: 'START' }); toAllTabs({ type: 'START' });
listener = (msg: BackgroundAction | 'heartbeat') => { listener = (msg: BackgroundAction | 'heartbeat') => {
if (msg === 'heartbeat') return; if (msg === 'heartbeat') return;
console.log(`Message from monitor ${id}: ${msg.type}`);
store.dispatch(msg); store.dispatch(msg);
}; };
port.onMessage.addListener(listener); port.onMessage.addListener(listener);