-
Notifications
You must be signed in to change notification settings - Fork 225
Open
Labels
Description
Description
We encountered the issue Type instantiation is excessively deep and possibly infinite.ts(2589) while upgrading algoliasearch from v5.1 to v5.15 and working with Immer produce function and SearchResponse type.
Here's a reproducible example of the issue:
The issue stems from two types: highlightResult and snippetResult(which both have the same structure). They create a recursive reference in the Yaml definition here where highlightResultMap and highlightResultArray both reference the same highlightResult.
highlightResultArray:
type: array
description: Surround words that match the query with HTML tags for highlighting.
items:
$ref: '#/highlightResult'
highlightResultMap:
type: object
description: Surround words that match the query with HTML tags for highlighting.
additionalProperties:
x-additionalPropertiesName: attribute
$ref: '#/highlightResult'
highlightResult:
oneOf:
- $ref: '#/highlightResultOption'
- $ref: '#/highlightResultMap'
- $ref: '#/highlightResultArray'This type actually changed in the previous commits and did not create any issue in v5.1.0. Last working version is 5.3.2.
We see two possible fixes:
- Create a new
highlightResultLevelTwothat won't referencehighlightResultMaporhighlightResultArrayand breaks the cycle. - Patch the TS definitions to prevent a excessively deep recursion. TS Playground with a modified type
HighlightResultas generic
Thanks!
Client
Search
Version
5.15.0
Relevant log output
No response
zyhou, VictorGosse, shortcuts, lassediercks, retrorocket and 2 more