import { EventEmitter } from "events"; import { useEffect, useState } from "react"; export type Unpromisify = T extends Promise ? R : T; export type Unarray = T extends Array ? R : T; export type Tab = Unarray>>; export type Request = Parameters< Parameters[0] >[0]; export function getshorthost(host: string) { return host.split(".").slice(-2).join("."); } export function useEmitter(e: EventEmitter) { const [counter, setCounter] = useState(0); useEffect(() => { const callback = () => { setCounter((counter) => counter + 1); }; e.on("change", callback); return () => { e.removeListener("change", callback); }; }, []); return counter; } export function parseCookie(cookie: string): Record { return cookie .split(";") .map((l) => l.split("=")) .reduce( (acc, [key, value]) => ({ ...acc, [key]: value, }), {} ); } export async function getTabByID(id: number) { const tabs = await browser.tabs.query({ currentWindow: true }); return tabs.find((tab) => tab.id == id); }