Files
medusa-store/www/packages/docs-ui/src/utils/get-local-search.ts
Shahed Nasser 5deb8eaf50 docs: support multiple sidebars in a project (#11768)
* changed to new sidebar across projects except resources

* finalize multi sidebar support

* clean up

* remove redundant property

* small changes

* fixes

* generate

* fix error

* fix initial open
2025-03-07 15:47:38 +02:00

37 lines
878 B
TypeScript

import MiniSearch, { Options as MiniSearchOptions } from "minisearch"
type BaseSearchRecord = Record<string, unknown>
type GetLocalSearchInput<T extends BaseSearchRecord = BaseSearchRecord> = {
docs: T[]
searchableFields: string[]
options?: Omit<MiniSearchOptions, "fields">
}
type SearchResult<T> = (T & {
terms?: string[]
})[]
export type LocalSearch<T extends BaseSearchRecord = BaseSearchRecord> =
MiniSearch & {
search: (query: string) => SearchResult<T>
}
export const getLocalSearch = <T extends BaseSearchRecord = BaseSearchRecord>({
docs,
searchableFields,
options,
}: GetLocalSearchInput<T>): LocalSearch<T> | undefined => {
try {
const miniSearch = new MiniSearch({
fields: searchableFields,
...options,
})
miniSearch.addAll(docs)
return miniSearch as LocalSearch<T>
} catch (e) {
console.warn(e)
}
}