handleMessage function application

Last updated: 2026-03-02T11:04:50.991Z

Metrics

LOC: 25 Complexity: 6 Params: 1

Signature

handleMessage(message: ExtensionMessage): : Promise<unknown>

Source Code

async function handleMessage(message: ExtensionMessage): Promise<unknown> {
  // DevTools relay: forward inner message to a specific tab's content script
  if (message.type === "DEVTOOLS_RELAY") {
    const payload = message.payload as
      | { tabId: number; message: ExtensionMessage }
      | undefined;
    if (!payload?.tabId || !payload?.message) {
      return { error: "Invalid DEVTOOLS_RELAY payload" };
    }
    return sendToSpecificTab(payload.tabId, undefined, payload.message, {
      injectIfNeeded: true,
    });
  }

  // Forward content-script-bound messages to the active tab
  if (CONTENT_SCRIPT_MESSAGES.has(message.type)) {
    return sendToActiveTab(message, { injectIfNeeded: true });
  }

  // Dispatch to the appropriate domain handler
  const result = await dispatchMessage(message);
  if (result !== null) return result;

  return { error: `Unknown message type: ${message.type}` };
}

Dependencies (Outgoing)

graph LR handleMessage["handleMessage"] ExtensionMessage["ExtensionMessage"] parseIncomingMessage["parseIncomingMessage"] sendToActiveTab["sendToActiveTab"] sendToSpecificTab["sendToSpecificTab"] handleContextMenuClick["handleContextMenuClick"] initLogger["initLogger"] createLogger["createLogger"] destroySession["destroySession"] destroyOptimizerSession["destroyOptimizerSession"] disposeTensorflowModel["disposeTensorflowModel"] setupContextMenu["setupContextMenu"] dispatchMessage["dispatchMessage"] destroyClassifierSession["destroyClassifierSession"] handleMessage -->|uses| ExtensionMessage handleMessage -->|uses| parseIncomingMessage handleMessage -->|uses| sendToActiveTab handleMessage -->|uses| sendToSpecificTab handleMessage -->|uses| handleContextMenuClick handleMessage -->|uses| initLogger handleMessage -->|uses| createLogger handleMessage -->|uses| destroySession handleMessage -->|uses| destroyOptimizerSession handleMessage -->|uses| disposeTensorflowModel handleMessage -->|calls| setupContextMenu handleMessage -->|calls| handleMessage handleMessage -->|calls| dispatchMessage handleMessage -->|calls| destroyClassifierSession style handleMessage fill:#dbeafe,stroke:#2563eb,stroke-width:2px click handleMessage "58fadf6b36b326d5.html" click ExtensionMessage "c70465261f6c12b8.html" click parseIncomingMessage "a979c41c6f827a26.html" click sendToActiveTab "a91f63e9f38af9db.html" click sendToSpecificTab "3da88adecaec2d24.html" click handleContextMenuClick "7a49f00f3b8840c0.html" click initLogger "ad03e6e0ac6d4c9a.html" click createLogger "70597a0a6b5e9ebb.html" click destroySession "cc8657e89b842217.html" click destroyOptimizerSession "9873f3b6584ea492.html" click disposeTensorflowModel "ccd708bbf6da29f0.html" click setupContextMenu "2ffc26e0cf740034.html" click dispatchMessage "5ff85783b526b44c.html" click destroyClassifierSession "e09460ab5446a77f.html"

Impact (Incoming)

graph LR handleMessage["handleMessage"] handleMessage -->|calls| handleMessage style handleMessage fill:#dbeafe,stroke:#2563eb,stroke-width:2px click handleMessage "58fadf6b36b326d5.html"
SourceType
handleMessage calls