Skip to content

[bug]: TS recursivity error in SearchResponse #1571

Open
@ChrisRast

Description

@ChrisRast

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:

  1. Create a new highlightResultLevelTwo that won't reference highlightResultMap or highlightResultArray and breaks the cycle.
  2. Patch the TS definitions to prevent a excessively deep recursion. TS Playground with a modified type HighlightResult as generic

Thanks!

Client

Search

Version

5.15.0

Relevant log output

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions