ata-validator
1.61.3 · 29 Oct 2026MIT21.8k / weekRepositoryHomepagenpmAtom feed
1.61.3 is the newest release of 1.x.
In short
1 new1 fixed
Release note
Added
$vocabularyis honoured when a schema names a custom meta-schema in$schema. A dialect is a set of vocabularies and a vocabulary is a set of keywords, so a keyword whose vocabulary the meta-schema does not declare is not part of that dialect at all: it is an unknown keyword, and an unknown keyword is ignored. A schema written against a meta-schema which declares only the core and applicator vocabularies now has itsminimum,typeand the rest of the validation keywords ignored, whilepropertiesand the other applicators still apply. The keywords belonging to each vocabulary are read from the vendored meta-schemas rather than from a list kept by hand, so they come from the specification. Removing the keyword before compilation means every engine agrees without any of them knowing what a vocabulary is.This closes the last case ata missed. Draft 2020-12 goes from 1298 to 1299 of 1299, with draft 7 at 927 of 927 and the v1 dialect at 1133 of 1133, the same with code generation blocked.
tests/run_suite.jshas no known failures left.Two things it does not do. It does not refuse a schema whose meta-schema requires, with
true, a vocabulary ata does not recognise; the specification says an implementation must refuse there, and turning what has always been silently accepted into a hard failure is a separate decision, so such a schema is evaluated as before with every keyword applied. And a separate document reached through$refkeeps its own keywords rather than inheriting the referring dialect, so a document which should follow one needs to say so with its own$schema.
Fixed
bundleStandaloneandbundleCompactbuilt the error-reporting function from the schema the caller passed rather than the one the validator compiled. Anything which prepares a schema therefore reached the boolean path and not the error path: withassertFormat: falsethe bundle reported aformaterror the caller had turned off, and only once some other keyword failed first, since the error function runs only after the boolean one says no.toStandalonealready read the compiled schema; these two now do as well.