Skip to content

Latest commit

 

History

History
121 lines (80 loc) · 5.16 KB

File metadata and controls

121 lines (80 loc) · 5.16 KB

1.1.0 (2026-05-03)

  • parseChunked():
    • Added returnValue and currentRootValue properties to the state object passed to onChunk and onRootValue callbacks
  • Exposed internal TypeScript types such as options and return types of public functions as part of the public API

1.0.0 (2026-03-09)

  • parseChunked():
    • Refactored from class-based to function-based implementation, as a result a bit smaller and faster
    • Added reviver support (similar to JSON.parse()), both as a second argument (parseChunked(input, reviver)) and in options (parseChunked(input, { reviver }))
    • Added support for JSONL (NDJSON) mode, which allows parsing multiple JSON values from a stream of chunks, where each value is separated by a newline character, i.e. parseChunked(input, { mode }), where mode can be json (default), jsonl, or auto
    • Added onRootValue option for incremental stream processing, useful in JSONL mode, which is called with each parsed root value
    • Added onChunk option for progress tracking
    • When onRootValue is specified, parseChunked() returns number of processed root values instead of collecting and returning parsed values
    • Fixed OOM on very long arrays (corner case, millions of elements)
    • Fixed various issues with parsing of malformed JSON
  • stringifyChunked():
    • Added mode option with "json" (default) and "jsonl" values; mode: "jsonl" serializes iterable input into newline-delimited JSON values
  • stringifyInfo():
    • Added mode option with "json" (default) and "jsonl" values; mode: "jsonl" computes byte size for newline-delimited JSON values

0.6.3 (2024-10-24)

  • Fixed an issue with types in the exports of package.json that introduced in version 0.6.2

0.6.2 (2024-10-18)

  • Added spaceBytes field to stringifyInfo() result, which indicates the number of bytes used for white spaces. This allows for estimating size of JSON.stringify() result with and without formatting (when space option is used) in a single pass instead of two
  • Fixed stringifyInfo() to correctly accept the space parameter from options, i.e. stringifyInfo(data, { space: 2 })

0.6.1 (2024-08-06)

  • Enhanced the performance of stringifyChunked() by 1.5-3x
  • Enhanced the performance of stringifyInfo() by 1.5-5x
  • Fixed parseFromWebStream() to ensure that the lock on the reader is properly released

0.6.0 (2024-07-02)

  • Added stringifyChunked() as a generator function (as a replacer for stringifyStream())
  • Added createStringifyWebStream() function
  • Added parseFromWebStream() function
  • Changed parseChunked() to accept an iterable or async iterable that iterates over string, Buffer, or TypedArray elements
  • Removed stringifyStream(), use Readable.from(stringifyChunked()) instead
  • Fixed conformance stringifyChunked() with JSON.stringify() when replacer a list of keys and a key refer to an entry in a prototype chain
  • stringifyInfo():
    • Aligned API with stringifyChunked by accepting options as the second parameter. Now supports:
      • stringifyInfo(value, replacer?, space?)
      • stringifyInfo(value, options?)
    • Renamed minLength field into bytes in functions result
    • Removed the async option
    • The function result no longer contains the async and duplicate fields
    • Fixed conformance with JSON.stringify() when replacer a list of keys and a key refer to an entry in a prototype chain
  • Discontinued exposing the version attribute
  • Converted to Dual Package, i.e. ESM and CommonJS support

0.5.7 (2022-03-09)

  • Fixed adding entire package.json content to a bundle when target is a browser

0.5.6 (2021-11-30)

  • Fixed stringifyStream() hang when last element in a stream takes a long time to process (#9, @kbrownlees)

0.5.5 (2021-09-14)

  • Added missed TypeScript typings file into the npm package

0.5.4 (2021-09-14)

  • Added TypeScript typings (#7, @lexich)

0.5.3 (2021-05-13)

  • Fixed stringifyStream() and stringifyInfo() to work properly when replacer is an allowlist
  • parseChunked()
    • Fixed wrong parse error when chunks are splitted on a whitespace inside an object or array (#6, @alexei-vedder)
    • Fixed corner cases when wrong placed or missed comma doesn't cause to parsing failure

0.5.2 (2020-12-26)

  • Fixed RangeError: Maximum call stack size exceeded in parseChunked() on very long arrays (corner case)

0.5.1 (2020-12-18)

  • Fixed parseChunked() crash when input has trailing whitespaces (#4, @smelukov)

0.5.0 (2020-12-05)

  • Added support for Node.js 10

0.4.0 (2020-12-04)

  • Added parseChunked() method
  • Fixed stringifyInfo() to not throw when meet unknown value type

0.3.2 (2020-10-26)

  • Added missed file for build purposes

0.3.1 (2020-10-26)

  • Changed build setup to allow building by any bundler that supports browser property in package.json
  • Exposed version

0.3.0 (2020-09-28)

  • Renamed info() method into stringifyInfo()
  • Fixed lib's distribution setup

0.2.0 (2020-09-28)

  • Added dist version to package (dist/json-ext.js and dist/json-ext.min.js)

0.1.1 (2020-09-08)

  • Fixed main entry point

0.1.0 (2020-09-08)

  • Initial release