feat(step-functions): add Jsonata class with helper methods for typed JSONata expressions#36879
Conversation
Contributor
Author
|
This PR was created with Kiro and is here for evaluation purposes. We have not yet decided whether we want to introduce this into the CDK. |
aws-cdk-automation
requested changes
Feb 4, 2026
Collaborator
aws-cdk-automation
left a comment
There was a problem hiding this comment.
The pull request linter fails with the following errors:
❌ Features must contain a change to a README file.
❌ Features must contain a change to an integration test file and the resulting snapshot.
If you believe this pull request should receive an exemption, please comment and provide a justification. A comment requesting an exemption should contain the text Exemption Request. Additionally, if clarification is needed, add Clarification Request to a comment.
iliapolo
commented
Feb 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Issue # (if applicable)
Closes #34228.
Reason for this change
When using JSONata with Step Functions tasks like
BatchSubmitJob, properties typed asnumber(such asarraySize) cannot accept JSONata expression strings directly, resulting in TypeScript compilation errors. WhileJsonPath.numberAt()exists for JSONPath expressions, there was no equivalent helper for JSONata expressions.This forces users to use
@ts-expect-errorworkarounds, which bypasses type safety and provides a poor developer experience.Description of changes
Added a new public
Jsonataclass to theaws-stepfunctionsmodule with static helper methods that mirror the existingJsonPathclass pattern:Jsonata.numberAt(expression)- Returns a number token for JSONata expressions where numbers are expectedJsonata.stringAt(expression)- Returns a string token for JSONata expressions where strings are expectedJsonata.listAt(expression)- Returns a list token for JSONata expressions where lists are expectedJsonata.objectAt(expression)- Returns an IResolvable for JSONata expressions where objects are expectedImplementation details:
JsonataTokenclass (internal) that implementsIResolvableand wraps expressions with{% ... %}delimiters on resolutionvalidateJsonataExpression()function that validates expressions are non-empty and don't include delimiters (which are added automatically)Usage example:
Describe any new or updated permissions being added
N/A - No IAM permission changes. This is a CDK type system enhancement only.
Description of how you validated changes
fields.test.tscovering:numberAt,stringAt,listAt,objectAt){% ... %}wrapped expressionssubmit-job.test.tsverifyingBatchSubmitJob.jsonata()correctly acceptsJsonata.numberAt()forarraySizepropertyChecklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license
Additional Context
Related Issues
ResultWritersupport JSONPath/JSONata bucket #33793 - "feat(stepfunctions): ResultWriter support JSONPath/JSONata bucket" - Shows pattern for handling JSONPath/JSONata in propertiesDependencies
No new dependencies added.
Documentation Updates
Follow-up Work
This pattern can be applied to other Step Functions task properties that need JSONata support for typed values.
Review Guidelines
Focus Areas
Jsonataclass API mirrorsJsonPathappropriatelyJsonataToken.resolve()correctly wraps expressions with{% ... %}delimitersTesting Notes
fields.test.tspasssubmit-job.test.tsverifies end-to-end usage withBatchSubmitJobRisk Assessment