ata-validator
1.61.3 · 29 Oct 2026MIT21.8k / weekRepositoryHomepagenpmAtom feed
1.61.3 is the newest release of 1.x.
In short
1 changed1 internal
Release note
Reporting on an invalid document costs about half what it did, and a single validator can now be kept off code generation without a process-wide switch.
Changed
The position map behind
dataFrameis built without per-node work, which makes an invalid document cheaper to report on. It used to record an entry for every node in the document: a JSON pointer rebuilt from a path array withconcat,mapandjoin, a binary search and an object allocation for the value and another pair for its key, and aJSON.parseof every string value whose result was then discarded. String values are now spanned and not decoded, a key decodes only when its token holds an escape or a raw control character, the pointer is carried down the walk instead of being rebuilt, and line and column are resolved at the end for the nodes that were recorded. On a 132 KB config with three errors the map went from 2800 to about 1040 microseconds, which is 19.8x down to 7.3x the cost ofJSON.parseon the same text, and the wholevalidateJSONcall went from 3673 to 1825 microseconds. Output is unchanged: 112661 fuzzed documents, random and truncated and CRLF and BOM-prefixed and byte-punched, map identically against the previous walker, field order and throws included, so a document that declined to map still declines. Standalone modules built with{ positions: true }embed this walk, so they carry the same improvement once rebuilt.
Suite unchanged at 100% on all three dialects, identical with code generation blocked: draft 2020-12 1301/1301, draft 7 929/929, the v1 dialect 1135/1135.