fumadocs-core
Version:
The React.js library for building a documentation website
49 lines (47 loc) • 1.37 kB
JavaScript
import { t as createContentHighlighter } from "./search-D6ChCLhY.js";
//#region src/search/client/algolia.ts
function groupResults(hits) {
const grouped = [];
const scannedUrls = /* @__PURE__ */ new Set();
for (const hit of hits) {
if (!scannedUrls.has(hit.url)) {
scannedUrls.add(hit.url);
grouped.push({
id: hit.url,
type: "page",
breadcrumbs: hit.breadcrumbs,
url: hit.url,
content: hit.title
});
}
grouped.push({
id: hit.objectID,
type: hit.content === hit.section ? "heading" : "text",
url: hit.section_id ? `${hit.url}#${hit.section_id}` : hit.url,
content: hit.content
});
}
return grouped;
}
async function searchDocs(query, { indexName, onSearch, client, locale, tag }) {
if (query.trim().length === 0) return [];
const result = onSearch ? await onSearch(query, tag, locale) : await client.searchForHits({ requests: [{
type: "default",
indexName,
query,
distinct: 5,
hitsPerPage: 10,
filters: tag ? `tag:${tag}` : void 0
}] });
const highlighter = createContentHighlighter(query);
return groupResults(result.results[0].hits).flatMap((hit) => {
if (hit.type === "page") return {
...hit,
contentWithHighlights: hit.contentWithHighlights ?? highlighter.highlight(hit.content)
};
return [];
});
}
//#endregion
export { searchDocs };
//# sourceMappingURL=algolia-CQPXCnjV.js.map