Packages

ata-validator

1.61.3 · 29 Oct 2026MIT21.8k / weekRepositoryHomepagenpmAtom feed

Your version

1.28.0

23 Sep 2026Where it was published

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 dataFrame is 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 with concat, map and join, a binary search and an object allocation for the value and another pair for its key, and a JSON.parse of 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 of JSON.parse on the same text, and the whole validateJSON call 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.