Skip to content

Releases: SoftCreatR/JSONPath

1.0.0

18 Dec 16:25
d6ccedf

Choose a tag to compare

Version 1.0.0 is finally here!

  • Rebuilt the test suite from scratch: removed bulky baseline fixtures and added compact unit/integration coverage for every filter (index, union, query, recursive, slice), lexer edge cases, and JSONPath core helpers. Runs reflection-free and deprecation-free.
  • Achieved and enforced 100% code coverage across AccessHelper, all filters, lexer, tokens, and JSONPath core while keeping phpstan and coding standards clean.
  • Added a lightweight manual query runner with curated examples to exercise selectors quickly without external datasets.
  • Major compatibility push toward the unofficial JSONPath standard: unions support slices/queries/wildcards, trailing commas parse correctly, negative indexes and bracket-escaped keys (quotes, brackets, wildcards, special chars) are honored, filters compare path-to-path and root references, equality/deep-equality/regex/in/nin semantics align with expectations, and null existence/value handling follows RFC behavior.
  • New feature highlights from this cycle:
    • Multi-key unions with and without quotes: $[name,year] and $["name","year"].
    • Robust bracket notation for special/escaped keys, including ']', '*', $, backslashes, and mixed punctuation.
    • Trailing comma support in unions/slices (e.g. $..books[0,1,2,]).
    • Negative index handling aligned with spec (short arrays return empty; -1 works where valid).
    • Filter improvements: path-to-path/root comparisons, deep equality across scalars/objects/arrays/null/empties, regex matching, in/nin/!in, tautological expressions, and ?@ existence behavior per RFC.
    • Unions combining slices/queries/wildcards now return complete results (e.g. $[1:3,4], $[*,1]).

Full Changelog: 0.11.0...1.0.0

0.11.0

17 Dec 14:10
7eb2365

Choose a tag to compare

🔻 Breaking changes ahead:

  • Dropped support for PHP < 8.5
  • JSONPathToken now uses a TokenType enum and the constructor signature changed accordingly.
  • JSONPath options flag is now an int bitmask (was bool), requiring callers to pass integer flags.
  • SliceFilter returns an empty result for non-positive step values (previously iterated indefinitely).
  • QueryResultFilter now throws a JSONPathException for unsupported operators instead of silently proceeding.
  • Access helper behavior is stricter: arrayValues throws on invalid types; ArrayAccess lookups check offsetExists before reading; traversables and objects are handled distinctly.
  • Adopted PHP 8.5 features: TokenType enum, readonly value object for tokens, typed flags/options, and #[\Override] usage.
  • CI now runs on PHP 8.5 with required extensions; code style workflow updated accordingly.
  • Added coverage for AccessHelper edge cases (magic getters, ArrayAccess, traversables, negative indexes), QueryResultFilter arithmetic branches, and SliceFilter negative/null bounds.
  • Fixed empty-expression handling in lexer and improved safety in AccessHelper traversable lookups.
  • Added PHPStan static analysis to the toolchain and addressed its findings.

Full Changelog: 0.10.0...0.11.0

0.10.0

22 Mar 00:30
74f0b33

Choose a tag to compare

What's Changed

  • Refactoring of QueryMatchFilter and provide greater support for JSONPath spec by @lucasnetau in #79

New Contributors

Full Changelog: 0.9.1...0.10.0

0.9.1

01 Jun 09:16
272173a

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.9.0...0.9.1

0.9.0

13 Mar 05:55
43bfb6a

Choose a tag to compare

Full Changelog: 0.8.3...0.9.0

0.8.3

17 Aug 20:14
fc12dee

Choose a tag to compare

What's Changed

  • Change getData() so that it can be mixed instead of array by @rcjsuen in #77

New Contributors

Full Changelog: 0.8.2...0.8.3

0.8.2

12 Feb 18:55

Choose a tag to compare

What's Changed

  • Handle multi-level JSON with objects and arrays by @kapow in #76

New Contributors

  • @kapow made their first contribution in #76

Full Changelog: 0.8.1...0.8.2

0.8.1

27 Sep 09:54

Choose a tag to compare

Full Changelog: 0.8.0...0.8.1

0.7.6

27 Sep 09:27

Choose a tag to compare

Full Changelog: 0.7.5...0.7.6

0.8.0

31 Jan 14:23

Choose a tag to compare

Full Changelog: 0.7.5...0.8.0