All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added support for PHP 8.3.
- Dropped support for PHP 8.0.
- Broken array indexes on deletion of non-last element.
- Dropped support for PHP 7.
- Queries now don't share same caching callback builder instance.
- PHP 8.1 compatibility issue (#24).
- Closure moved out from generated query code to prevent memory leak (see https://bugs.php.net/bug.php?id=76982).
- PHP 8.0 support.
- Upgraded
remorhaz/php-unilex
to version 0.3.1. - Names in dot-notation now allow non-ASCII characters.
- Order of array elements in result corresponds to order of indexes in filter.
- Order of object properties in result corresponds to order of properties in filter.
- Slices with negative steps are returned in reversed order.
- Names in dot-notation now allow hyphen symbol (
U+002D
) as non-starting symbol. - Fixed duplicated results in some filtered queries.
- Issue #18: processor results provide access to raw value objects.
- Upgraded
remorhaz/php-unilex
to version 0.1.0.
- Comparators moved from runtime to
remorhaz/php-json-data
.
- Issue #16:
min()
/max()
aggregator functions fail on single-element array.
- Some methods of
MapIndexInterface
renamed. - Issue #13: local data accessors/events replaced by
remorhaz/php-json-data
.
- Issue #12: quoted names allowed in dot-notation.
- Issue #11: unquoted names allowed in bracket-notation.
- Incorrect deep scan before predicate.
- Issue #8: single negative index in predicate is considered as start of a slice.
- Issue #9: deep scan of predicates (like
$..[0, 2]
) is supported. - Fetcher is now able to merge value lists.
- Issue #10: dot is allowed before predicate.
- Query callback builder clears it's state correctly before processing next AST.
- Support for numeric properties in dot-notation.
- Method for checking compatibility of index maps.
- Documentation improved.
- Issue #6: filtering by partially-existing property comparison throws exception.
- Maps can store NULL outer indexes for missing values.
- Issue #6: filtering by non-existing property comparison throws exception.
- Numeric properties in objects can be addressed correctly (bracket notation only).
- Processor is now able to delete and replace parts of JSON document by query.
- Events redesigned, value walker introduced.
- Query capability
isPath
renamed toisAddressable
. - Query constructor accepts callback builder instead of it's parts.
- Query rethrows convenient exception on failure. It contains original query source and source code of generated callback.
- Structure values incapsulate child iterators now.
- Value fetcher methods renamed from
fetchValue*
tocreate*Iterator
. - Path supports checking if it contains another path.
- Value iterator factory removed.
- Data events totally removed.
- Value fetcher
fetchArrayLength
method removed.
- Value list builders implemented.
- Interface for value list fetcher.
- Evaluator is no more part of runtime object.
- Query invocation signature changed.
- Filter object joined with fetcher.
- Child matchers accept address, value and container now.
- Runtime object is now just an aggregate of lesser parts (like evaluator and matcher factory) and is not passed to callback anymore.
- Processor supports selecting value paths (single and multiple).
- Processor supports selecting single value.
- Query object now provides query source for convenience.
QueryInterface::getCapabilities()
method replaces::getProperties()
.SelectResultInterface::toJson()
method removed.
- Many classes from
Query
namespace were renamed. - Processor results moved in new namespace.
Query
suffix removed fromCallbackBuilderInterface
methods.
- Query object now provides properties interface with
isPath
andisDefinite
flags. QueryCallbackBuilderInterface
implemented.
SelectResultInterface::encode()
method deprecates::toJson()
.
- Initial release.