Skip to content

v0.0.23

Choose a tag to compare

@juanjoDiaz juanjoDiaz released this 04 Aug 10:44
· 15 commits to main since this release

Feature

  • Accept any Iterable in write(), not just Arrays/TypedArrays/strings
  • Report stream-absolute error positions alongside the chunk-local ones

Bugfix

  • Stop proto keys from polluting parsed-object prototypes (security)
  • Reassemble multi-byte UTF-8 characters split across more than 2 writes
  • Reject invalid UTF-8 instead of silently replacing it with U+FFFD
  • Match JSON.parse's handling of unpaired UTF-16 surrogates
  • Recognize the UTF-8 BOM by its bytes, not the input's container type
  • Reject a stream ending mid-way through a multi-byte separator
  • Reject partial tokens outside VALUE/KEY state in TokenParser
  • Reject non-integer/negative stringBufferSize and numberBufferSize
  • Track member count so keepStack:false stops accepting trailing commas
  • Truncate emitted array elements under keepStack:false instead of delete
  • Stabilize onValue event metadata in the Node and WHATWG adapters
  • Don't end the Node writable stream as soon as the root value completes
  • Let flush() close the WHATWG stream normally instead of terminate()
  • Stop TokenParser/Tokenizer TransformStreams aborting on end
  • Export ParsedTokenInfo/ParsedElementInfo as types, not namespaces

Performance

  • Scan plain-ASCII string runs instead of one appendChar per byte
  • Decode multi-byte string runs in maximal spans
  • Fold NonBufferedString incrementally to kill quadratic partial-token emits
  • Compile selectors into a trie instead of rescanning every path per value
  • Snapshot onValue metadata lazily in the Node/WHATWG adapters

Build / CI

  • Replace eslint & prettier with biome
  • Drop Node 20 from the test matrix
  • Make npm pack ship a working, minimal tarball

Tests / Benchmarks

  • Redesign benchmarks as a whole-library throughput suite across engines & JSON types
  • Make fail()-sentinel negative tests actually assert
  • Make keepStack:false memory tests reliable (deterministic + forced-GC)
  • Make the plainjs test runner actually call end()