diff --git a/package.json b/package.json index 4fba2f0..3391b14 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "asl-path-validator", - "version": "0.16.1", + "version": "0.17.0", "description": "Validates the path expressions for the Amazon States Language", "main": "./dist/index.js", "scripts": { diff --git a/src/__tests__/validatePath.test.ts b/src/__tests__/validatePath.test.ts index c2b4545..7f470d8 100644 --- a/src/__tests__/validatePath.test.ts +++ b/src/__tests__/validatePath.test.ts @@ -216,6 +216,14 @@ describe("unit tests for the parser", () => { { path: "$.book[?(@.author =~ /.*REES/i)]", valid_in: None }, { path: "$..*", valid_in: NoRefPaths }, { path: "..book.length()", valid_in: None }, + { + path: "$[?(@.key1 == pass)].key1.thing2", + valid_in: [AslPathContext.PATH, AslPathContext.PAYLOAD_TEMPLATE], + }, + { + path: "$[?(@.key1.thing1 == pass)]", + valid_in: [AslPathContext.PATH, AslPathContext.PAYLOAD_TEMPLATE], + }, ]; interface TestInputForContext { path: string; diff --git a/src/aslPaths.pegjs b/src/aslPaths.pegjs index 5ce7094..e3bcdb5 100644 --- a/src/aslPaths.pegjs +++ b/src/aslPaths.pegjs @@ -115,6 +115,7 @@ expression expression_ = PAREN_LEFT _ exp:expression _ PAREN_RIGHT {return {exp}} / path:jsonpath__ _ op:comparison_op _ minus:MINUS? val:NUMBER {return {path, op, val: minus==='-'?-val:val}} + / path:jsonpath__ _ op:comparison_op _ ID {return {path, op}} / path:jsonpath__ comparison_op