Per-node context threaded through deepNormaliseWithContext.
Carries the diagnostics sink and the JSON Pointer to the current
node so per-node transforms can emit pointer-accurate diagnostics
when they translate or reject legacy constructs.
documentHasDynamicAnchor is set once at the entry point by scanning
the input for any $dynamicAnchor/$recursiveAnchor keyword. Per-
node transforms read it to decide whether a $dynamicRef/$recursiveRef
rewrite needs a dynamic-ref-degraded diagnostic — a ref pointing at
an anchor in the document body cannot be statically resolved without
losing dynamic-scope semantics, while a document with no dynamic
anchors at all has no semantics to lose.
documentHasRecursiveAnchor is the same idea for Draft 2019-09's
$recursiveAnchor keyword.
declaredDraft carries the draft the normaliser is operating under
(when known) so per-node transforms can emit keyword-out-of-draft
diagnostics for keywords introduced in a later draft.
Per-node context threaded through
deepNormaliseWithContext.Carries the diagnostics sink and the JSON Pointer to the current node so per-node transforms can emit pointer-accurate diagnostics when they translate or reject legacy constructs.
documentHasDynamicAnchoris set once at the entry point by scanning the input for any$dynamicAnchor/$recursiveAnchorkeyword. Per- node transforms read it to decide whether a$dynamicRef/$recursiveRefrewrite needs adynamic-ref-degradeddiagnostic — a ref pointing at an anchor in the document body cannot be statically resolved without losing dynamic-scope semantics, while a document with no dynamic anchors at all has no semantics to lose.documentHasRecursiveAnchoris the same idea for Draft 2019-09's$recursiveAnchorkeyword.declaredDraftcarries the draft the normaliser is operating under (when known) so per-node transforms can emitkeyword-out-of-draftdiagnostics for keywords introduced in a later draft.