All notable changes to this project will be documented in this file. It uses the Keep a Changelog format, and this project adheres to Semantic Versioning.
v0.4.0 — 2025-01-15
- Added the
Pointer
method toNormalizedPath
. It returns an RFC 9535 JSON Pointer string representation of the normalized path.
v0.3.0 — 2024-12-28
- Added
SelectLocated
. It works just likeSelect
, but returnsLocatedNode
s that pair the selected nodes with RFC 9535-definedNormalizedPath
s that uniquely identify their locations within the JSON query argument. - Added
LocatedNodeList
, the return value fromSelectLocated
. It contains methods for working with the selected nodes, including iterators for its nodes &NormalizedPath
s, deduplication, sorting, and cloning. - Added
Compare
toNormalizedPath
, which enables the sorting ofLocatedNodeList
s.
- Requires Go 1.23 to take advantage of its iterator support.
- Changed the return value of
Select
from[]any
toNodeList
, which is an alias for[]any
. Done to pair withLocatedNodeList
, the return value ofSelectLocated
. Features anAll
method, which returns an iterator over all the nodes in the list. It may gain additional methods in the future.
- Added
Select
,SelectLocated
,NodeList
, andLocatedNodeList
examples to the Go docs.
v0.2.1 — 2024-12-12
- Fixed the formatting of slice strings to omit min and max integers when not specified and using a negative step.
v0.2.0 — 2024-11-13
- Added
spec.Filter.Eval
to allow public evaluation of a single JSON node. Used internally byspec.FilterSelector.Select
. - Added
spec.Segment.IsDescendant
to tell wether a segments selects just from the current child node or also recursively selects from all of its descendants.
- Added missing "?" to the stringification of
spec.FilterSelector
.
- Made
spec.SliceSelector.Bounds
public. - Made the underlying struct defining
spec.Wildcard
public, named itspec.WildcardSelector
.
v0.1.2 — 2024-10-28
- Eliminated a lexer variable that prevented TinyGo compilation.
- Added simple tests to ensure the package compiles properly as Go and TinyGo WASM.
- Added the WASM compile test to the Test and Lint GitHub action.
- Fixed version header links here in CHANGELOG.md.
v0.1.1 — 2024-09-19
- Neatened the formatting of the README table for improved display on pkg.go.dev.
v0.1.0 — 2024-09-19
The theme of this release is Standards Matter.
- First release, everything is new!
- Full RFC 9535 JSONPath implementation
- All JSONPath Compliance Test Suite tests pass
- Includes parser, AST, and executor
- Built with Go
- Use
go get
to add to a project
- Docs on pkg.go.dev
- Syntax summary in
README
- The
jsonpath
package is stable and unlikely to change - The
spec
package is not yet stable - The
registry
package is stable, althoughspec
objects it references may change - More detailed documentation to come