All notable changes to this project will be documented in this file.
- Generate better extreme cases for "number", "integer" and "string" types
- Add
:string_kindoption toRockSolid.from_schema/2
- Rename
Traversal.get_in_schema/2toTraversal.fetch_in_schema!/2and add safeTraversal.fetch_in_schema/2
- Fix regex intersection timeouts by replacing
greenery/pythonxwith rustler precompiledregex_solver
- Fix bug where properties named
"required"and"dependentRequired"weren't being simplified
- Rename
RockSolid.Traversal.update_in_schema/3toRockSolid.Traversal.put_in_schema!/3and also implementRockSolid.Traversal.put_in_schema/3
- Support JSON Pointers starting without "#" in
RockSolid.Traversal.to_path/1 - Fix
RockSolid.Traversal.update_in_schema/3when last element in path is a list
- Fix
containsnot being generated - Generate only a sublist of
prefixItemswhenminItemsis not specified, or is smaller thanprefixItemslength - Improve
patternwithmaxLengthgenerations
Implements all possible unrecoverable exceptions and adds improved error messages.
This version contains several bug fixes and optimisations, mainly for handling of object types.
- Fix
patternPropertiesignoringpropertyNamespattern - Fix
dependentSchemasbeing ignored - Fix
dependentRequiredalgorithm behaving incorrectly when properties depended on each other - Return empty value when a required property is no longer valid after adding a
notclause - Fix edge case when "catch all"
patternPropertiesis the same subschema as the otherpatternProperties - Fix
additionalPropertiesinif/then/elseclauses having the same priority as the base schema - Fix edge cases of
properties,definitions,dependencies,dependentSchemasanddependentRequiredbeing used as keys independencies,dependentSchemasanddependentRequired. For example, when a property calleddependenciesused as a key insidedependentRequiredit was being treated as the keyworddependenciesinstead of the literal key.
- Optimise
oneOfby computing the intersection of the subschema and the negation of the remaining clauses when possible - Optimise adding
notclauses for the common case of object type + present/absent properties - Avoid expanding
$refwhen the other element to intersect is the "any" value
- Fix generation not considering
minItems,minProperties,maxItems,maxPropertieswhen scaling
- Initial demo release