This document describes the features and fixes that must be implemented before releasing a stable version.

Recursive $ref

The current implementation only considers recursive $ref reachable from a single path. When the same $ref is reached during a recursive intersection the algorithm assumes it has already been simplified and the code raises a "Placeholder ${VALUE} not found" error. The algorithm must be rewritten to support multiple branches and paths.

string pattern and length

When generating data, if we have pattern + minLength/maxLength, we generate based on pattern and then apply filtering. This approach often throws a StreamData.FilterTooNarrowError. Instead we should add support for generating strings based on regular expressions + length options. This change should likely be implemented in MoreStreamData

contains keyword

The current solution is a hack that places the contains value on the first available prefixItems, which returns empty intersection errors when the schema must be intersected with another one that contains incompatible prefix items. Instead we should keep the contains keyword in the array object as use it in the data generation step.

dependentSchemas

Find an alternative to calculating the powerset and creating potentially thousands of schemas.