Modify JSON schema $ref resolution strategy to support resolving values internal to the schema #312
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Previously, only
$ref
that were directed to#/$defs
could be resolved via the use of a pre-loadeddefinitions
variable. This PR modifies the behaviour of$ref
resolutions by instead using aresolver
function, which is generated to scope to a particular schema or subschema.#/$defs
as before$ref
keys are split to traverse through the scoped schema. When found, they are cached for re-use to avoid re-traversingexpand_json_schema
,$id
is an identifier of a scope change, and a new resolver linked to the schema for that scope is used for its children (e.g. for supporting bundling)Fixes #310 for local references (i.e. doesn't attempt to address remote schemas)