diff --git a/src/meilisearch.ts b/src/meilisearch.ts index f28ee00e7..be82720d5 100644 --- a/src/meilisearch.ts +++ b/src/meilisearch.ts @@ -29,9 +29,8 @@ import { CancelTasksQuery, DeleteTasksQuery, MultiSearchParams, - MultiSearchResponse, - SearchResponse, FederatedMultiSearchParams, + MultiSearchResponseOrSearchResponse, } from "./types"; import { HttpRequests } from "./http-requests"; import { TaskClient, Task } from "./task"; @@ -214,18 +213,13 @@ export class MeiliSearch { * @param config - Additional request configuration options * @returns Promise containing the search responses */ - multiSearch = Record>( - queries: MultiSearchParams, + async multiSearch< + T1 extends MultiSearchParams | FederatedMultiSearchParams, + T2 extends Record = Record, + >( + queries: T1, config?: Partial, - ): Promise>; - multiSearch = Record>( - queries: FederatedMultiSearchParams, - config?: Partial, - ): Promise>; - async multiSearch = Record>( - queries: MultiSearchParams | FederatedMultiSearchParams, - config?: Partial, - ): Promise | SearchResponse> { + ): Promise> { const url = `multi-search`; return await this.httpRequest.post(url, queries, undefined, config); diff --git a/src/types/types.ts b/src/types/types.ts index f2d0befb7..d1844ccbd 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -299,6 +299,13 @@ export type MultiSearchResponse> = { results: Array>; }; +export type MultiSearchResponseOrSearchResponse< + T1 extends FederatedMultiSearchParams | MultiSearchParams, + T2 extends Record = Record, +> = T1 extends FederatedMultiSearchParams + ? SearchResponse + : MultiSearchResponse; + export type FieldDistribution = { [field: string]: number; };