# Change Log

All notable changes to this project will be documented in this file
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
This project adheres to [Semantic Versioning](http://semver.org/).

# v4.3.5
## (2026-06-27)

* Update dependency lint-staged to v17.0.8 [balena-renovate[bot]]

# v4.3.4
## (2026-06-11)

* Update dependency lint-staged to v17 [balena-renovate[bot]]

# v4.3.3
## (2026-06-11)

* Rename .lintstagedrc to .lintstagedrc.json [joshbwlng]

# v4.3.2
## (2026-06-11)

* Update dependency chai to v6 [balena-renovate[bot]]

# v4.3.1
## (2026-06-10)

* Pin dependencies [balena-renovate[bot]]

# v4.3.0
## (2026-06-03)

* Add `ParameterAliasBind` typing utility [Otavio Jacobi]

# v4.2.30
## (2026-05-08)

* Avoid duplicate parenthesis check in `FilterNegateExpression` [Pagan Gazzard]

# v4.2.29
## (2026-05-07)

* Simplify arg checking for `FilterMethodCallExpression` [Pagan Gazzard]

# v4.2.28
## (2026-03-26)

* Revert flowzone pinning to master [Kyle Harding]

# v4.2.27
## (2026-03-26)

* Update product-os/flowzone digest to 8ea01d3 [balena-renovate[bot]]

# v4.2.26
## (2026-03-26)

* Update product-os/flowzone digest to 3eb3c97 [balena-renovate[bot]]

# v4.2.25
## (2026-03-26)

* Update product-os/flowzone digest to 7b49c1e [balena-renovate[bot]]

# v4.2.24
## (2026-03-26)

* Update product-os/flowzone digest to 8d926e2 [balena-renovate[bot]]

# v4.2.23
## (2026-03-26)

* Update product-os/flowzone digest to 20a58d6 [balena-renovate[bot]]

# v4.2.22
## (2026-03-26)

* Update product-os/flowzone digest to 7b1359d [balena-renovate[bot]]

# v4.2.21
## (2026-03-26)

* Update product-os/flowzone digest to 7b87702 [balena-renovate[bot]]

# v4.2.20
## (2026-03-26)

* Update product-os/flowzone digest to cc9836f [balena-renovate[bot]]

# v4.2.19
## (2026-03-26)

* Update product-os/flowzone digest to b79645a [balena-renovate[bot]]

# v4.2.18
## (2026-03-26)

* Update product-os/flowzone digest to 4815186 [balena-renovate[bot]]

# v4.2.17
## (2026-03-26)

* Update product-os/flowzone digest to 267495d [balena-renovate[bot]]

# v4.2.16
## (2026-03-25)

* Update product-os/flowzone digest to f955793 [balena-renovate[bot]]

# v4.2.15
## (2026-03-25)

* Update product-os/flowzone digest to 8674dc5 [balena-renovate[bot]]

# v4.2.14
## (2026-03-25)

* Update product-os/flowzone digest to eb703ea [balena-renovate[bot]]

# v4.2.13
## (2026-03-24)

* Pin product-os/flowzone action to a53cf4b [balena-renovate[bot]]

# v4.2.12
## (2026-03-12)

* Tests: remove lodash [Pagan Gazzard]

# v4.2.11
## (2026-03-12)

* Add id-token: write permission for NPM OIDC publishing [Kyle Harding]

# v4.2.10
## (2025-10-16)

* Avoid unnecessary allocations for date binds [Pagan Gazzard]

# v4.2.9
## (2025-10-16)

* Replace `CollapseObjectArray` with `Object.fromEntries` [Pagan Gazzard]

# v4.2.8
## (2025-09-11)

* Update dependency lint-staged to v16 [balena-renovate[bot]]

# v4.2.7
## (2025-09-11)

* Update dependency peggy to v5 [balena-renovate[bot]]

# v4.2.6
## (2025-04-10)

* Update @balena/lint to 9.x [Pagan Gazzard]

# v4.2.5
## (2025-04-09)

* Tests: convert to typescript [Pagan Gazzard]
* Improve typings [Pagan Gazzard]

# v4.2.4
## (2025-04-09)

* Build: switch tsconfig to use module "Node16" with type "commonjs" [Pagan Gazzard]

# v4.2.3
## (2025-04-01)

* Avoid setting $count `options` for $orderby when not provided [Thodoris Greasidis]

# v4.2.2
## (2025-03-25)

* Update dependency mocha to v11 [balena-renovate[bot]]

# v4.2.1
## (2025-03-18)

* Add the missing MethodCall type [Thodoris Greasidis]
* Add the missing properties in the PropertyPath typings [Thodoris Greasidis]

# v4.2.0
## (2025-03-12)

* Support ordering by a Collection Navigation property using a Key notation [Thodoris Greasidis]

# v4.1.0
## (2025-02-11)

* Allow ['Null'] inside a bound list [Otavio Jacobi]

# v4.0.0
## (2025-01-29)

* feat: compile odata `in` to a abstract sql `eq any $listBind` [Otavio Jacobi]

# v3.1.2
## (2024-10-04)

* Update dependencies [Pagan Gazzard]

# v3.1.1
## (2024-10-04)

* Avoid setting `property`/`count`/`options` for expands when not provided [Pagan Gazzard]
* Avoid setting nested `property` for `PropertyPath` when not provided [Pagan Gazzard]

# v3.1.0
## (2024-10-03)

* Use bind vars for $top and $skip options [Pagan Gazzard]

# v3.0.8
## (2024-06-04)

* Fix type checking of the declaration file [Pagan Gazzard]

# v3.0.7
## (2024-04-13)

* Update dependency husky to v9 [Self-hosted Renovate Bot]

# v3.0.6
## (2024-04-12)

* Update dependency peggy to v4 [Self-hosted Renovate Bot]

# v3.0.5
## (2024-04-12)

* Update dependency lint-staged to v15 [Self-hosted Renovate Bot]

# v3.0.4
## (2024-04-12)

* Update dependency @balena/lint to v8 [Self-hosted Renovate Bot]

# v3.0.3
## (2024-01-04)

* Optimize by moving constant values into global init [fisehara]

# v3.0.2
## (2024-01-04)

* Update dependencies [fisehara]

# v3.0.1
## (2023-09-25)

* Allow running CI on external PRs [Pagan Gazzard]

# v3.0.0
## (2023-04-26)

* Use optional chaining operator [Pagan Gazzard]
* Set minimum supported nodejs version to 16.13.0 [Pagan Gazzard]

# v2.5.0
## (2023-04-26)

* Update to peggy 3 and make us of the repetition operator [Pagan Gazzard]

# v2.4.6
## (2023-02-24)

* Improve typings [Pagan Gazzard]

# v2.4.5
## (2023-02-23)

* Use const/let as appropriate [Pagan Gazzard]

# v2.4.4
## (2023-02-23)

* Use shorthand object notation [Pagan Gazzard]

# v2.4.3
## (2023-02-23)

* Update dependencies [Pagan Gazzard]

# v2.4.2
## (2022-11-03)

* Test that `/$count` works with a `$filter`containing an 'and' [Thodoris Greasidis]

# v2.4.1
## (2022-10-14)

* Switch from balenaCI to flowzone [Pagan Gazzard]

# v2.4.0
## (2022-09-15)

* Add support for `/$count` with nested `$filter` in $orderby & $orderby [Thodoris Greasidis]

# v2.3.0
## (2022-06-06)

* Add source map [Pagan Gazzard]

# v2.2.9
## (2022-04-08)

* Update dependencies [Pagan Gazzard]
* Remove circleci [Pagan Gazzard]

# v2.2.8
## (2021-09-07)

* Remove some typescript strict mode exceptions [Pagan Gazzard]

# v2.2.7
## (2021-09-06)

* Convert tests to type checked javascript [Pagan Gazzard]

# v2.2.6
## (2021-07-09)

* Switch to peggy for compiling the grammar [Pagan Gazzard]

# v2.2.5
## (2021-06-30)

* Delete CODEOWNERS [Thodoris Greasidis]

# v2.2.4
## (2021-05-18)

* Ensure boundaries on keywords to fix parsing of eg `note eq 'foobar'` [Pagan Gazzard]

# v2.2.3
## (2021-03-15)

* Optimize `QuotedText` for the common case of few/no apostrophes [Pagan Gazzard]

# v2.2.2
## (2021-01-25)

* Optimize number parsing [Pagan Gazzard]

# v2.2.1
## (2020-11-25)

* Update dependencies [Pagan Gazzard]

# v2.2.0
## (2020-08-18)

* Add support for metadata argument in $format [Pagan Gazzard]

# v2.1.0
## (2020-07-10)

* Add support for specifying named keys [Pagan Gazzard]

# v2.0.1
## (2020-07-10)

* Improve typings [Pagan Gazzard]

# v2.0.0
## (2020-05-11)

* Rename to @balena/odata-parser [Pagan Gazzard]
* Update to @balena/lint 5.x [Pagan Gazzard]
* Drop support for nodejs 8 [Pagan Gazzard]
* CI: Add nodejs 14 to the test matrix [Pagan Gazzard]
* CI: Remove circleci publishing in favor of balenaCI [Pagan Gazzard]

# v1.4.1
## (2020-04-10)

* Update dependencies [Pagan Gazzard]

## 1.4.0 - 2020-03-02

* ✨: Add support for canAccess method call on resource [Andreas Fitzek]

## 1.3.1 - 2020-01-22

* Add CODEOWNERS [Pagan Gazzard]

## 1.3.0 - 2019-11-21

* Add support for `/$count` in filters [Pagan Gazzard]

## 1.2.3 - 2019-09-20

* Optimise merging of operands in `FilterByExpressionLoop` [Pagan Gazzard]

## 1.2.2 - 2019-07-03

* Accept `+` in place of ` `/`%20` as some tools encode spaces that way [Pagan Gazzard]

## 1.2.1 - 2019-07-02

* Accept trailing `?` with no query parameters [Pagan Gazzard]

## 1.2.0 - 2019-06-07

* Support `;` for separating expand options [Pagan Gazzard]

## 1.1.1 - 2019-06-07

* Improve typings [Pagan Gazzard]

## 1.1.0 - 2019-06-06

* Add typings [Pagan Gazzard]

## 1.0.4 - 2019-05-27

* Fix adding parameter alias to the options object [Pagan Gazzard]

## 1.0.3 - 2019-05-08

* Add .versionbot/CHANGELOG.yml for downstream changelogs [Pagan Gazzard]

## 1.0.2 - 2019-04-15

* Update dependencies [Pagan Gazzard]

## 1.0.1 - 2018-11-22

* Update README npm badge and change github links to balena-io-modules [Lucian]

## v1.0.0 - 2018-10-31

* Drop node 4 support [Pagan Gazzard]
* Use a prepare script instead of committing compiled files [Pagan Gazzard]
* Convert to pegjs [Pagan Gazzard]

## v0.3.6 - 2018-09-07

* Correctly fail on empty options that are invalid [Pagan Gazzard]

## v0.3.5 - 2018-06-11

* Fix `in` for text literals. #25 [Pagan Gazzard]

## v0.3.4 - 2018-06-08

* Add support for the `in` operator. #24 [Pagan Gazzard]

## v0.3.3 - 2018-06-08

* Add support for parameter aliases of literal values. #22 [Pagan Gazzard]

## v0.3.2 - 2018-06-08

* Fix tests indentations. #23 [Pagan Gazzard]

## v0.3.1 - 2018-06-01

* Check lhs is an array before trying to merge matching operators, fixes cases where the lhs is "null", eg "null eq Foo" #21 [Pagan Gazzard]

## v0.3.0 - 2018-05-18

* Switch to using a precedence climbing method for handling precedence, it offers much better performance and also makes the precedence ordering clearer. #16 [Pagan Gazzard]

## v0.2.15 - 2018-05-18

* Remove redundant section from `FilterNegateExpression` which is already covered by `FilterByValue` -> `GroupedPrecedenceExpression` #17 [Pagan Gazzard]

## v0.2.14 - 2018-05-18

* Use the compiled odata-parser for tests rather than compiling on the fly. #18 [Pagan Gazzard]

## v0.2.13 - 2018-05-17

* Optimise `Boolean` #19 [Pagan Gazzard]

## v0.2.12 - 2018-05-17

* Optimise `QueryOption`/`ExpandPathOption` #20 [Pagan Gazzard]

## v0.2.11 - 2018-05-14

* Optimise `ResourceName` further. #15 [Pagan Gazzard]
* Optimise `FilterByValue` by checking the more common options first where possible. #15 [Pagan Gazzard]
* Optimise `ExpandPathOption` and `QueryOption` by checking the more common options first. #15 [Pagan Gazzard]
* Optimise `spaces` #15 [Pagan Gazzard]
* Optimise `ResourceName`. #15 [Pagan Gazzard]
* Optimise `ODataParser.space` #15 [Pagan Gazzard]

## v0.2.10 - 2018-05-10

* Update dependencies #14 [Pagan Gazzard]

## v0.2.9 - 2018-05-09

* Inline `Apostrophe` into `ReservedUriComponent`. #13 [Pagan Gazzard]

## v0.2.8 - 2018-05-03

* Optimise the `FilterMethodCallExpr`. #12 [Pagan Gazzard]

## v0.2.7 - 2018-05-03

* Optimise the custom `space` rule. It is a very hot rule and gains significant benefits from this. #11 [Pagan Gazzard]

## v0.2.6 - 2018-04-30

* Add node 10 to the circleci tests #10 [Pagan Gazzard]
* Move circle.yml to .circleci/config.yml #10 [Pagan Gazzard]

## v0.2.5 - 2018-03-06

* Refactor `ReservedUriComponent` to improve performance of the generated code #9 [Pagan Gazzard]

## v0.2.4 - 2018-01-27

* Fix parsing of reserved options if the $ is quoted #8 [Pagan Gazzard]

## v0.2.3 - 2017-12-04

* Set up circleci auto-publishing #7 [Pagan Gazzard]

## v0.2.2 - 2017-09-25

* Added versionist #6 [Giovanni Garufi]

## v0.2.1

* Added `ExternalKeyBind`
* Added batch support

## v0.2.0

* Return the odata tree and bindings separately, so that is is possible to easily reuse trees even when bindings change.

## v0.1.10

* Added the ability to process only a given rule, making sure the rule is successful.

## v0.1.9

* Added support for /$count
* Added support for ?$count=(true|false)

## v0.1.8

* Fixed duration literals to follow the OData spec.
* Added support for negative numbers.

## v0.1.7

* Added support for duration literals.

## v0.1.6

* Added all OData 4 functions.
* Added a boolean property filter test.

## v0.1.5

* Allowed a lambda alias to be any valid resource name and to be only a valid resource name, rather than any single character.

## v0.1.4

* Updated ometa-js
* Added tests for grandchild lambdas.
* Allow `test.only`/`test.skip` to work with expand tests.
* Fix nested expand tests not actually testing nested expands.

## v0.1.3

* Added support for brackets (and a bunch of other chars), as well as '', in quoted text.

## v0.1.2

* Switched to being a scoped package.

## v0.1.1

* Added support for options in a $expand (eg `/a?$expand=b($filter=c eq 'd')`)
