src/devtools/panel-messaging.ts
Symbols by Kind
function
4
All Symbols
| Name | Kind | Visibility | Status | Lines | Signature |
|---|---|---|---|---|---|
| sendToPage | function | exported- | 10-15 | sendToPage(message: ExtensionMessage): : Promise<unknown> |
|
| sendToBackground | function | exported- | 17-21 | sendToBackground(
message: ExtensionMessage,
): : Promise<unknown> |
|
| getInspectedPageInfo | function | exported- | 25-40 | getInspectedPageInfo(): : Promise<
[string | undefined, string | undefined]
> |
|
| getInspectedUrl | function | exported- | 42-51 | getInspectedUrl(): : Promise<string> |
Full Source
/**
* Panel Messaging — Chrome runtime/tab messaging helpers for the DevTools panel.
*/
import type { ExtensionMessage } from "@/types";
import { panelState } from "./panel-state";
// ── Page & Background Messaging ───────────────────────────────────────────────
export async function sendToPage(message: ExtensionMessage): Promise<unknown> {
return chrome.runtime.sendMessage({
type: "DEVTOOLS_RELAY",
payload: { tabId: panelState.inspectedTabId, message },
});
}
export async function sendToBackground(
message: ExtensionMessage,
): Promise<unknown> {
return chrome.runtime.sendMessage(message);
}
// ── Inspected Page Introspection ──────────────────────────────────────────────
export function getInspectedPageInfo(): Promise<
[string | undefined, string | undefined]
> {
return new Promise((resolve) => {
chrome.devtools.inspectedWindow.eval(
"[location.href, document.title]",
(result: unknown) => {
if (Array.isArray(result) && result.length === 2) {
resolve([result[0] as string, result[1] as string]);
} else {
resolve([undefined, undefined]);
}
},
);
});
}
export function getInspectedUrl(): Promise<string> {
return new Promise((resolve) => {
chrome.devtools.inspectedWindow.eval(
"window.location.href",
(result: unknown) => {
resolve(String(result ?? ""));
},
);
});
}