Skip to content

Commit b1d93df

Browse files
authored
fix(preset-algolia): support algoliasearch v5 (#1002)
* fix(preset-algolia): support algoliasearch v5 * generic
1 parent a95f06f commit b1d93df

File tree

8 files changed

+86
-15
lines changed

8 files changed

+86
-15
lines changed

packages/autocomplete-preset-algolia/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"algoliasearch": "4.9.1"
3939
},
4040
"peerDependencies": {
41-
"@algolia/client-search": "^4.9.1",
42-
"algoliasearch": "^4.9.1"
41+
"@algolia/client-search": ">= 4.9.1 < 6",
42+
"algoliasearch": ">= 4.9.1 < 6"
4343
}
4444
}

packages/autocomplete-preset-algolia/src/highlight/HighlightedHit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { HighlightResult } from '@algolia/client-search';
1+
import { HighlightResult } from '../types';
22

33
export type HighlightedHit<THit> = THit & {
44
_highlightResult?: HighlightResult<THit>;

packages/autocomplete-preset-algolia/src/highlight/SnippetedHit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { SnippetResult } from '@algolia/client-search';
1+
import { SnippetResult } from '../types';
22

33
export type SnippetedHit<THit> = THit & {
44
_snippetResult?: SnippetResult<THit>;

packages/autocomplete-preset-algolia/src/requester/createRequester.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import {
1+
import { fetchAlgoliaResults } from '../search';
2+
import type {
23
MultipleQueriesQuery,
34
SearchForFacetValuesResponse,
45
SearchResponse,
5-
} from '@algolia/client-search';
6-
import { SearchClient } from 'algoliasearch/lite';
7-
8-
import { fetchAlgoliaResults } from '../search';
6+
SearchClient,
7+
} from '../types';
98

109
type Fetcher = typeof fetchAlgoliaResults;
1110

packages/autocomplete-preset-algolia/src/requester/getAlgoliaFacets.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { MultipleQueriesQuery } from '@algolia/client-search';
1+
import type { MultipleQueriesQuery } from '../types';
22

33
import { createAlgoliaRequester } from './createAlgoliaRequester';
44
import { RequestParams } from './createRequester';

packages/autocomplete-preset-algolia/src/search/fetchAlgoliaResults.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import {
22
userAgents as coreUserAgents,
33
UserAgent,
44
} from '@algolia/autocomplete-shared';
5-
import {
5+
6+
import { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';
7+
import type {
68
MultipleQueriesQuery,
79
SearchForFacetValuesResponse,
810
SearchResponse,
9-
} from '@algolia/client-search';
10-
import type { SearchClient } from 'algoliasearch/lite';
11-
12-
import { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';
11+
SearchClient,
12+
} from '../types';
1313

1414
export interface SearchParams {
1515
/**
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import * as ClientSearch from '@algolia/client-search';
2+
import type * as AlgoliaSearch from 'algoliasearch/lite';
3+
4+
// turns any to unknown, so it can be used as a conditional
5+
type AnyToUnknown<TSubject> = (any extends TSubject ? true : false) extends true
6+
? unknown
7+
: TSubject;
8+
9+
type SearchClientShape = {
10+
search: unknown;
11+
};
12+
13+
type ClientLiteV5 = AnyToUnknown<
14+
// @ts-ignore
15+
ReturnType<typeof AlgoliaSearch.liteClient>
16+
>;
17+
type ClientSearchV5 = AnyToUnknown<
18+
// @ts-ignore
19+
ReturnType<typeof ClientSearch.searchClient>
20+
>;
21+
type ClientV5 = ClientLiteV5 extends SearchClientShape
22+
? ClientLiteV5
23+
: ClientSearchV5 extends SearchClientShape
24+
? ClientSearchV5
25+
: unknown;
26+
27+
type PickForClient<
28+
TMapping extends { v4: unknown; v5: unknown }
29+
> = ClientV5 extends SearchClientShape ? TMapping['v5'] : TMapping['v4'];
30+
31+
export type SearchClient = PickForClient<{
32+
// @ts-ignore
33+
v4: AlgoliaSearch.SearchClient;
34+
// @ts-ignore
35+
v5: ClientV5;
36+
}>;
37+
38+
export type MultipleQueriesQuery = PickForClient<{
39+
// @ts-ignore
40+
v4: ClientSearch.MultipleQueriesQuery;
41+
// @ts-ignore
42+
v5: AlgoliaSearch.LegacySearchMethodProps[number];
43+
}>;
44+
45+
export type SearchForFacetValuesResponse = PickForClient<{
46+
// @ts-ignore
47+
v4: ClientSearch.SearchForFacetValuesResponse;
48+
// @ts-ignore
49+
v5: AlgoliaSearch.SearchForFacetValuesResponse;
50+
}>;
51+
52+
export type SearchResponse<THit> = PickForClient<{
53+
// @ts-ignore
54+
v4: ClientSearch.SearchResponse<THit>;
55+
// @ts-ignore
56+
v5: AlgoliaSearch.SearchResponse<THit>;
57+
}>;
58+
59+
export type HighlightResult<THit> = PickForClient<{
60+
// @ts-ignore
61+
v4: ClientSearch.HighlightResult<THit>;
62+
// @ts-ignore
63+
v5: AlgoliaSearch.HighlightResult; // should be generic, but isn't yet in the client
64+
}>;
65+
66+
export type SnippetResult<THit> = PickForClient<{
67+
// @ts-ignore
68+
v4: ClientSearch.SnippetResult<THit>;
69+
// @ts-ignore
70+
v5: AlgoliaSearch.SnippetResult; // should be generic, but isn't yet in the client
71+
}>;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './algoliasearch';

0 commit comments

Comments
 (0)