import { convert as convertHtmlToPlainText } from "html-to-text"; export type SearchResults = [title: string, snippet: string, url: string][]; export async function search(query: string, limit?: number) { const searchUrl = new URL("/search", self.location.origin); searchUrl.searchParams.set("q", query); searchUrl.searchParams.set("token", VITE_SEARCH_TOKEN); if (limit && limit > 0) { searchUrl.searchParams.set("limit", limit.toString()); } const response = await fetch(searchUrl.toString()); if (!response.ok) return []; const searchResults = (await response.json()) as SearchResults; const cleanedSearchResults = searchResults.map(([title, snippet, url]) => [ convertHtmlToPlainText(title, { wordwrap: false }), convertHtmlToPlainText(snippet, { wordwrap: false }), url, ]) as SearchResults; return cleanedSearchResults; }