Skip to content

Commit 4a7afc3

Browse files
authored
fix(types): make algoliasearch detection compatible with TS 5.4.5 (#6244)
I can't manage to reproduce this locally, even if i update everything to 5.4.5, but in a fresh Next.js example (like https://codesandbox.io/s/47fy7c) `hitsPerPage` isn't accepted to Configure (because PlainSearchParameters is any) This is I believe linked to microsoft/TypeScript#56004, maybe also to sindresorhus/type-fest#846 (although the case seems different). Essentially before this change the types like `ClientLiteV5` were evaluated to `any` instead of `unknown`, poisoning the entire type and turning everything into any. The solution is to first check if `typeof AlgoliaSearchLite` is any, and if it is any we don't even evaluate the rest of teh type. Of course if it isn't any it works correctly for v5 still. Again, unfortunately this isn't reproducible in this repo, even when every typescript version is updated to 5.4.5, but at least the error will be fixed fixes #5989
1 parent adef3fe commit 4a7afc3

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

packages/algoliasearch-helper/types/algoliasearch.d.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,24 @@ type SearchClientShape = {
2828
// @ts-ignore
2929
type ClientV3_4 = ReturnType<typeof algoliasearch>;
3030

31-
type ClientLiteV5 = AnyToUnknown<
32-
// @ts-ignore
33-
ReturnType<typeof AlgoliaSearchLite.liteClient>
34-
>;
35-
type ClientFullV5 = AnyToUnknown<
36-
// @ts-ignore
37-
ReturnType<typeof AlgoliaSearch.algoliasearch>
38-
>;
39-
type ClientSearchV5 = AnyToUnknown<
40-
// @ts-ignore
41-
ReturnType<typeof ClientSearch.searchClient>
42-
>;
31+
type ClientLiteV5 = AnyToUnknown<typeof AlgoliaSearchLite> extends unknown
32+
? unknown
33+
: AnyToUnknown<
34+
// @ts-ignore
35+
ReturnType<typeof AlgoliaSearchLite.liteClient>
36+
>;
37+
type ClientFullV5 = AnyToUnknown<typeof AlgoliaSearch> extends unknown
38+
? unknown
39+
: AnyToUnknown<
40+
// @ts-ignore
41+
ReturnType<typeof AlgoliaSearch.algoliasearch>
42+
>;
43+
type ClientSearchV5 = AnyToUnknown<typeof ClientSearch> extends unknown
44+
? unknown
45+
: AnyToUnknown<
46+
// @ts-ignore
47+
ReturnType<typeof ClientSearch.searchClient>
48+
>;
4349
type ClientV5 = ClientLiteV5 extends SearchClientShape
4450
? ClientLiteV5
4551
: ClientSearchV5 extends SearchClientShape

0 commit comments

Comments
 (0)