UNPKG

@meilisearch/instant-meilisearch

Version:
59 lines 2.28 kB
import { splitSortString } from './sort-context.js'; import { createPaginationState } from './pagination-context.js'; function separateIndexFromSortRules(indexName) { const colonIndex = indexName.indexOf(':'); if (colonIndex === -1) { return { indexUid: indexName, sortBy: '', }; } return { indexUid: indexName.substring(0, colonIndex), sortBy: indexName.substring(colonIndex + 1), }; } /** * @param {AlgoliaMultipleQueriesQuery} searchRequest * @param {Context} options * @returns {SearchContext} */ export function createSearchContext(searchRequest, options) { const { query, indexName, params: instantSearchParams } = searchRequest; // Split index name and possible sorting rules const { indexUid, sortBy } = separateIndexFromSortRules(indexName); const paginationState = createPaginationState(options.finitePagination, instantSearchParams?.hitsPerPage, instantSearchParams?.page); const searchContext = { ...options, query, ...instantSearchParams, sort: splitSortString(sortBy), indexUid, pagination: paginationState, placeholderSearch: options.placeholderSearch !== false, // true by default keepZeroFacets: !!options.keepZeroFacets, // false by default }; return searchContext; } /** * @param {AlgoliaMultipleQueriesQuery} searchRequest * @param {Context} options * @returns {SearchContext} */ export function createFacetSearchContext(searchRequest, options) { // Split index name and possible sorting rules const { indexUid, sortBy } = separateIndexFromSortRules(searchRequest.indexName); const { params: instantSearchParams } = searchRequest; const paginationState = createPaginationState(options.finitePagination, instantSearchParams?.hitsPerPage, instantSearchParams?.page); const searchContext = { ...options, ...instantSearchParams, sort: splitSortString(sortBy), indexUid, pagination: paginationState, placeholderSearch: options.placeholderSearch !== false, // true by default keepZeroFacets: !!options.keepZeroFacets, // false by default }; return searchContext; } //# sourceMappingURL=search-context.js.map