Skip to content

Commit 08d9a37

Browse files
authored
fix(types): use a minimal type for transformSearchClient (#2348)
1 parent 57eace5 commit 08d9a37

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

packages/docsearch-react/src/DocSearch.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { AutocompleteState, AutocompleteOptions } from '@algolia/autocomplete-core';
2-
import type { SearchClient } from 'algoliasearch';
3-
import type { SearchQuery, LiteClient } from 'algoliasearch/lite';
2+
import type { LiteClient, SearchForHits } from 'algoliasearch/lite';
43
import React from 'react';
54
import { createPortal } from 'react-dom';
65

@@ -16,17 +15,24 @@ export type DocSearchTranslations = Partial<{
1615
modal: ModalTranslations;
1716
}>;
1817

18+
// The interface that describes the minimal implementation required for the algoliasearch client, when using the [`transformSearchClient`](https://docsearch.algolia.com/docs/api/#transformsearchclient) option.
19+
export type DocSearchTransformClient = {
20+
search: LiteClient['search'];
21+
addAlgoliaAgent: LiteClient['addAlgoliaAgent'];
22+
transporter: Pick<LiteClient['transporter'], 'algoliaAgent'>;
23+
};
24+
1925
export interface DocSearchProps {
2026
appId: string;
2127
apiKey: string;
2228
indexName: string;
2329
placeholder?: string;
24-
searchParameters?: SearchQuery;
30+
searchParameters?: SearchForHits;
2531
maxResultsPerGroup?: number;
2632
transformItems?: (items: DocSearchHit[]) => DocSearchHit[];
2733
hitComponent?: (props: { hit: InternalDocSearchHit | StoredDocSearchHit; children: React.ReactNode }) => JSX.Element;
2834
resultsFooterComponent?: (props: { state: AutocompleteState<InternalDocSearchHit> }) => JSX.Element | null;
29-
transformSearchClient?: <T extends LiteClient | SearchClient>(searchClient: T) => T;
35+
transformSearchClient?: (searchClient: DocSearchTransformClient) => DocSearchTransformClient;
3036
disableUserPersonalization?: boolean;
3137
initialQuery?: string;
3238
navigator?: AutocompleteOptions<InternalDocSearchHit>['navigator'];

packages/docsearch-react/src/useSearchClient.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { liteClient } from 'algoliasearch/lite';
2-
import type { LiteClient } from 'algoliasearch/lite';
32
import React from 'react';
43

4+
import type { DocSearchTransformClient } from './DocSearch';
55
import { version } from './version';
66

77
export function useSearchClient(
88
appId: string,
99
apiKey: string,
10-
transformSearchClient: (searchClient: LiteClient) => LiteClient,
11-
): LiteClient {
10+
transformSearchClient: (searchClient: DocSearchTransformClient) => DocSearchTransformClient,
11+
): DocSearchTransformClient {
1212
const searchClient = React.useMemo(() => {
1313
const client = liteClient(appId, apiKey);
1414
client.addAlgoliaAgent('docsearch', version);

packages/website/docs/api.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ See the [default implementation][8].
126126

127127
## `transformSearchClient`
128128

129-
> `type: function` | `default: searchClient => searchClient` | **optional**
129+
> `type: function` | `default: DocSearchTransformClient => DocSearchTransformClient` | **optional**
130130
131131
Useful for transforming the [Algolia Search Client][10], for example to [debounce search queries][9]
132132

0 commit comments

Comments
 (0)