Fix binding operation evaluation in objects #665
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The issue was originally raised here: https://stackoverflow.com/questions/77742737/jsonata-transform-operator-unexpected-change-in-variable-binding-between-versi
Before #583 a JSONata user could bind a variable within an RHS expression of one of the object entries and then reuse that variable within another object entry, e.g.:
Here's the result on 1.8.6:
But due to the
await Promise.all
added in #583, this no longer works in 2.0.3:In this PR, I'm proposing a change to remove the
Promise.all
and iterate sequentially, which might have some performance implications for certain users of JSONata, but IMO, it would still be better to maintain compatibility between versions.All tests are passing: