@react-querybuilder/core 8.9.0 → 8.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/dist/arrayUtils-BF1P8iHS.mjs +122 -0
- package/dist/arrayUtils-BF1P8iHS.mjs.map +1 -0
- package/dist/basic-BfD-7CN3.d.mts +1235 -0
- package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +21 -10
- package/dist/cjs/react-querybuilder_core.cjs.development.js +22 -19
- package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +21 -10
- package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
- package/dist/convertQuery-H7RhQiIc.mjs +75 -0
- package/dist/convertQuery-H7RhQiIc.mjs.map +1 -0
- package/dist/export-r-V7bU31.d.mts +452 -0
- package/dist/formatQuery.d.mts +667 -0
- package/dist/formatQuery.mjs +2366 -0
- package/dist/formatQuery.mjs.map +1 -0
- package/dist/import-BwbbP4oU.d.mts +28 -0
- package/dist/isRuleGroup-CnhYpLOM.mjs +40 -0
- package/dist/isRuleGroup-CnhYpLOM.mjs.map +1 -0
- package/dist/isRuleGroup-DqAs2x4E.js.map +1 -1
- package/dist/objectUtils-BtWdcZVG.mjs +11 -0
- package/dist/objectUtils-BtWdcZVG.mjs.map +1 -0
- package/dist/optGroupUtils-Duv-M8rf.mjs +102 -0
- package/dist/optGroupUtils-Duv-M8rf.mjs.map +1 -0
- package/dist/parseCEL.d.mts +34 -0
- package/dist/parseCEL.mjs +2593 -0
- package/dist/parseCEL.mjs.map +1 -0
- package/dist/parseJSONata.d.mts +36 -0
- package/dist/parseJSONata.mjs +268 -0
- package/dist/parseJSONata.mjs.map +1 -0
- package/dist/parseJsonLogic.d.mts +36 -0
- package/dist/parseJsonLogic.mjs +191 -0
- package/dist/parseJsonLogic.mjs.map +1 -0
- package/dist/parseMongoDB.d.mts +79 -0
- package/dist/parseMongoDB.mjs +267 -0
- package/dist/parseMongoDB.mjs.map +1 -0
- package/dist/parseNumber-BtGKa58z.mjs +24 -0
- package/dist/parseNumber-BtGKa58z.mjs.map +1 -0
- package/dist/parseSQL.d.mts +37 -0
- package/dist/parseSQL.mjs +6626 -0
- package/dist/parseSQL.mjs.map +1 -0
- package/dist/parseSpEL.d.mts +34 -0
- package/dist/parseSpEL.mjs +273 -0
- package/dist/parseSpEL.mjs.map +1 -0
- package/dist/prepareQueryObjects-CS6Wmhmf.mjs +154 -0
- package/dist/prepareQueryObjects-CS6Wmhmf.mjs.map +1 -0
- package/dist/react-querybuilder_core.d.mts +21 -10
- package/dist/react-querybuilder_core.legacy-esm.d.ts +21 -10
- package/dist/react-querybuilder_core.legacy-esm.js +19 -18
- package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_core.mjs +22 -20
- package/dist/react-querybuilder_core.mjs.map +1 -1
- package/dist/react-querybuilder_core.production.d.mts +21 -10
- package/dist/react-querybuilder_core.production.mjs +1 -1
- package/dist/react-querybuilder_core.production.mjs.map +1 -1
- package/dist/transformQuery-DdMvmrCh.mjs +41 -0
- package/dist/transformQuery-DdMvmrCh.mjs.map +1 -0
- package/dist/transformQuery.d.mts +118 -0
- package/dist/transformQuery.mjs +4 -0
- package/package.json +68 -19
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCEL.mjs","names":["o","state","returnArray: (DefaultCombinatorName | CELExpression | ('and' | CELExpression)[])[]","emptyQuery: DefaultRuleGroupTypeAny","rules","operatorPre: DefaultOperatorName","valueSource: ValueSource | undefined","field: string | null","value: any","processedCEL: CELExpression"],"sources":["../src/utils/parseCEL/celParser.js","../src/utils/parseCEL/utils.ts","../src/utils/parseCEL/parseCEL.ts"],"sourcesContent":["/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar celParser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,27],$V1=[1,31],$V2=[1,32],$V3=[1,28],$V4=[1,29],$V5=[1,30],$V6=[1,33],$V7=[1,34],$V8=[1,18],$V9=[1,26],$Va=[1,12],$Vb=[1,13],$Vc=[1,19],$Vd=[1,20],$Ve=[1,40],$Vf=[1,39],$Vg=[1,41],$Vh=[1,42],$Vi=[1,43],$Vj=[1,36],$Vk=[1,37],$Vl=[1,38],$Vm=[5,37,43,45,49,50,53,54,55,56,60,61,62,63],$Vn=[1,44],$Vo=[1,45],$Vp=[1,46],$Vq=[5,23,24,25,26,27,28,31,37,40,43,44,45,46,49,50,53,54,55,56,60,61,62,63],$Vr=[7,9,10,12,13,14,16,18,21,35,40,41,44,46],$Vs=[2,36],$Vt=[1,85],$Vu=[43,45,50],$Vv=[5,37,43,45,49,50,53,61,62,63],$Vw=[5,37,43,45,49,50,53,54,55,56,61,62,63],$Vx=[2,37],$Vy=[49,50];\nvar parser = {trace: function trace() {},\nyy: {},\nsymbols_: {\"error\":2,\"main\":3,\"expr\":4,\"EOF\":5,\"string_literal\":6,\"STRING_LIT\":7,\"bytes_literal\":8,\"b\":9,\"B\":10,\"number_literal\":11,\"INT_LIT\":12,\"UINT_LIT\":13,\"FLOAT_LIT\":14,\"boolean_literal\":15,\"BOOL_LIT\":16,\"null_literal\":17,\"NULL_LIT\":18,\"literal\":19,\"ident\":20,\"IDENT\":21,\"relop\":22,\"==\":23,\">=\":24,\">\":25,\"<=\":26,\"<\":27,\"!=\":28,\"relation\":29,\"member\":30,\"in\":31,\"list\":32,\"map\":33,\"negation\":34,\"!\":35,\"negative\":36,\"-\":37,\"unary\":38,\"primary\":39,\"DOT\":40,\"(\":41,\"expr_list\":42,\")\":43,\"[\":44,\"]\":45,\"{\":46,\"field_inits\":47,\"trailing_comma\":48,\"}\":49,\",\":50,\"map_inits\":51,\"math_operation\":52,\"+\":53,\"*\":54,\"/\":55,\"%\":56,\"conditional_expr\":57,\"conditional_and\":58,\"conditional_or\":59,\"?\":60,\":\":61,\"&&\":62,\"||\":63,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",7:\"STRING_LIT\",9:\"b\",10:\"B\",12:\"INT_LIT\",13:\"UINT_LIT\",14:\"FLOAT_LIT\",16:\"BOOL_LIT\",18:\"NULL_LIT\",21:\"IDENT\",23:\"==\",24:\">=\",25:\">\",26:\"<=\",27:\"<\",28:\"!=\",31:\"in\",35:\"!\",37:\"-\",40:\"DOT\",41:\"(\",43:\")\",44:\"[\",45:\"]\",46:\"{\",49:\"}\",50:\",\",53:\"+\",54:\"*\",55:\"/\",56:\"%\",60:\"?\",61:\":\",62:\"&&\",63:\"||\"},\nproductions_: [0,[3,2],[6,1],[8,2],[8,2],[11,1],[11,1],[11,1],[15,1],[17,1],[19,1],[19,1],[19,1],[19,1],[19,1],[20,1],[22,1],[22,1],[22,1],[22,1],[22,1],[22,1],[29,3],[29,3],[29,3],[34,1],[34,2],[36,1],[36,2],[38,2],[30,1],[30,1],[30,3],[30,6],[30,4],[30,5],[48,0],[48,1],[39,1],[39,2],[39,5],[39,6],[39,3],[39,1],[39,1],[39,1],[32,4],[33,4],[52,3],[52,3],[52,3],[52,3],[52,3],[4,1],[4,1],[4,1],[4,1],[4,1],[4,1],[57,5],[58,3],[59,3],[42,1],[42,3],[47,3],[47,5],[51,3],[51,5]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return { nodeType: 'Main', value: $$[$0-1] }; \nbreak;\ncase 2:\nthis.$ = { type: 'StringLiteral', value: $$[$0] };\nbreak;\ncase 3: case 4:\nthis.$ = { type: 'BytesLiteral', value: $$[$0] };\nbreak;\ncase 5:\nthis.$ = { type: 'IntegerLiteral', value: parseInt($$[$0], /x/.test($$[$0]) ? 16 : 10) };\nbreak;\ncase 6:\nthis.$ = { type: 'UnsignedIntegerLiteral', value: parseInt($$[$0].replace(/u$/i, ''), /^0x/.test($$[$0]) ? 16 : 10) };\nbreak;\ncase 7:\nthis.$ = { type: 'FloatLiteral', value: parseFloat($$[$0]) };\nbreak;\ncase 8:\nthis.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true' };\nbreak;\ncase 9:\nthis.$ = { type: 'NullLiteral', value: null };\nbreak;\ncase 10: case 11: case 12: case 13: case 14: case 16: case 17: case 18: case 19: case 20: case 21: case 38: case 43: case 44: case 45: case 53: case 54: case 55: case 56: case 57: case 58:\nthis.$ = $$[$0];\nbreak;\ncase 15:\nthis.$ = { type: 'Identifier', value: $$[$0] };\nbreak;\ncase 22: case 23: case 24:\nthis.$ = { type: 'Relation', left: $$[$0-2], operator: $$[$0-1], right: $$[$0] };\nbreak;\ncase 25: case 27:\nthis.$ = 1;\nbreak;\ncase 26: case 28:\nthis.$ = this.$ += 1;;\nbreak;\ncase 29:\nthis.$ = { type: 'Negation', negations: $$[$0-1], value: $$[$0] };\nbreak;\ncase 30: case 31:\nthis.$ = $$[$0];\nbreak;\ncase 32:\nthis.$ = { type: 'Member', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 33:\nthis.$ = { type: 'Member', left: $$[$0-5], right: $$[$0-3], list: $$[$0-1] };\nbreak;\ncase 34:\nthis.$ = { type: 'DynamicPropertyAccessor', left: $$[$0-3], right: $$[$0-1] };\nbreak;\ncase 35:\nthis.$ = { type: 'FieldsObject', left: $$[$0-4], list: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 36:\nthis.$ = false;\nbreak;\ncase 37:\nthis.$ = true;\nbreak;\ncase 39:\nthis.$ = { type: 'Property', value: $$[$0] };\nbreak;\ncase 40:\nthis.$ = { type: 'FunctionCall', name: $$[$0-4], args: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 41:\nthis.$ = { type: 'Property', value: $$[$0-4], args: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 42:\nthis.$ = { type: 'ExpressionGroup', value: $$[$0-1] };\nbreak;\ncase 46:\nthis.$ = { type: 'List', value: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 47:\nthis.$ = { type: 'Map', value: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 48:\nthis.$ = { type: 'Addition', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 49:\nthis.$ = { type: 'Subtraction', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 50:\nthis.$ = { type: 'Multiplication', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 51:\nthis.$ = { type: 'Division', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 52:\nthis.$ = { type: 'Modulo', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 59:\nthis.$ = { type: 'ConditionalExpr', condition: $$[$0-4], valueIfTrue: $$[$0-2], valueIfFalse: $$[$0] };\nbreak;\ncase 60:\nthis.$ = { type: 'ConditionalAnd', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 61:\nthis.$ = { type: 'ConditionalOr', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 62:\nthis.$ = { type: 'ExpressionList', value: [ $$[$0] ] };\nbreak;\ncase 63:\nthis.$ = $$[$0-2]; this.$.value.push($$[$0]);;\nbreak;\ncase 64:\nthis.$ = { type: 'FieldInits', value: [ { type: 'FieldInit', left: $$[$0-2], right: $$[$0] } ] };\nbreak;\ncase 65:\nthis.$ = $$[$0-4]; this.$.value.push({ type: 'FieldInit', left: $$[$0-2], right: $$[$0] });;\nbreak;\ncase 66:\nthis.$ = { type: 'MapInits', value: [ { type: 'MapInit', left: $$[$0-2], right: $$[$0] } ] };\nbreak;\ncase 67:\nthis.$ = $$[$0-4]; this.$.value.push({ type: 'MapInit', left: $$[$0-2], right: $$[$0] });;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{1:[3]},{5:[1,35],37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl},o($Vm,[2,53],{22:47,23:[1,49],24:[1,50],25:[1,51],26:[1,52],27:[1,53],28:[1,54],31:[1,48],40:$Vn,44:$Vo,46:$Vp}),o($Vm,[2,54]),o($Vm,[2,55]),o($Vm,[2,56]),o($Vm,[2,57]),o($Vm,[2,58]),o($Vq,[2,30]),o($Vq,[2,31]),o($Vq,[2,38],{41:[1,55]}),{20:56,21:$V8},{4:57,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,43]),o($Vq,[2,44]),o($Vq,[2,45]),{6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,32:14,33:15,35:[1,59],39:58,40:$Va,41:$Vb,44:$Vc,46:$Vd},o([5,23,24,25,26,27,28,31,37,40,41,43,44,45,46,49,50,53,54,55,56,60,61,62,63],[2,15]),{4:61,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,42:60,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:63,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,51:62,52:8,57:4,58:5,59:6},o($Vq,[2,10]),o($Vq,[2,11]),o($Vq,[2,12]),o($Vq,[2,13]),o($Vq,[2,14]),o($Vr,[2,25]),o($Vq,[2,2]),o($Vq,[2,5]),o($Vq,[2,6]),o($Vq,[2,7]),{6:64,7:$V0},{6:65,7:$V0},o($Vq,[2,8]),o($Vq,[2,9]),{1:[2,1]},{4:66,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:67,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:68,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:69,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:70,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:71,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:72,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:73,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{20:74,21:$V8},{4:75,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{20:77,21:$V8,47:76},{6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,30:78,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd},{32:79,33:80,44:$Vc,46:$Vd},o($Vr,[2,16]),o($Vr,[2,17]),o($Vr,[2,18]),o($Vr,[2,19]),o($Vr,[2,20]),o($Vr,[2,21]),{4:61,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,42:81,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,39],{41:[1,82]}),{37:$Ve,43:[1,83],53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl},o($Vq,[2,29]),o($Vr,[2,26]),{45:$Vs,48:84,50:$Vt},o($Vu,[2,62],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),{48:86,49:$Vs,50:[1,87]},{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,61:[1,88],62:$Vk,63:$Vl},o($Vq,[2,3]),o($Vq,[2,4]),{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,61:[1,89],62:$Vk,63:$Vl},o([5,43,45,49,50,61,62,63],[2,60],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj}),o([5,43,45,49,50,61,63],[2,61],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk}),o($Vv,[2,48],{54:$Vg,55:$Vh,56:$Vi,60:$Vj}),o($Vv,[2,49],{54:$Vg,55:$Vh,56:$Vi,60:$Vj}),o($Vw,[2,50],{60:$Vj}),o($Vw,[2,51],{60:$Vj}),o($Vw,[2,52],{60:$Vj}),o($Vq,[2,32],{41:[1,90]}),{37:$Ve,45:[1,91],53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl},{48:92,49:$Vs,50:[1,93]},{61:[1,94]},o($Vm,[2,22],{40:$Vn,44:$Vo,46:$Vp}),o($Vm,[2,23]),o($Vm,[2,24]),{43:$Vs,48:95,50:$Vt},{4:61,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,42:96,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,42]),{45:[1,97]},o([43,45],$Vx,{30:3,57:4,58:5,59:6,29:7,52:8,39:9,38:10,20:11,32:14,33:15,19:16,34:17,6:21,11:22,8:23,15:24,17:25,4:98,7:$V0,9:$V1,10:$V2,12:$V3,13:$V4,14:$V5,16:$V6,18:$V7,21:$V8,35:$V9,40:$Va,41:$Vb,44:$Vc,46:$Vd}),{49:[1,99]},{4:100,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,49:$Vx,52:8,57:4,58:5,59:6},{4:101,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:102,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:61,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,42:103,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,34]),{49:[1,104]},{20:105,21:$V8,49:$Vx},{4:106,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{43:[1,107]},{43:$Vs,48:108,50:$Vt},o($Vq,[2,46]),o($Vu,[2,63],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),o($Vq,[2,47]),{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,61:[1,109],62:$Vk,63:$Vl},o($Vy,[2,66],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),o($Vm,[2,59]),{43:[1,110],50:[1,111]},o($Vq,[2,35]),{61:[1,112]},o($Vy,[2,64],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),o($Vq,[2,40]),{43:[1,113]},{4:114,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,33]),{4:98,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:115,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,41]),o($Vy,[2,67],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),o($Vy,[2,65],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl})],\ndefaultActions: {35:[2,1]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable)\n this.trace(str);\n else {\n var error = Error(str);\n error.hash = hash;\n throw error;\n }\n },\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1, args = lstack.slice.call(arguments, 1), lexer = Object.create(this.lexer), sharedState = { yy: {} };\n for (var k in this.yy)\n if (Object.prototype.hasOwnProperty.call(this.yy, k))\n sharedState.yy[k] = this.yy[k];\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc > \"u\")\n lexer.yylloc = {};\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\")\n this.parseError = sharedState.yy.parseError;\n else\n this.parseError = Object.getPrototypeOf(this).parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n var lex = function() {\n var token = lexer.lex() || EOF;\n if (typeof token !== \"number\")\n token = self.symbols_[token] || token;\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (!0) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state])\n action = this.defaultActions[state];\n else {\n if (symbol === null || typeof symbol > \"u\")\n symbol = lex();\n action = table[state] && table[state][symbol];\n }\n if (typeof action > \"u\" || !action.length || !action[0]) {\n let locateNearestErrorRecoveryRule = function(state) {\n var stack_probe = stack.length - 1, depth = 0;\n for (;; ) {\n if (TERROR.toString() in table[state])\n return depth;\n if (state === 0 || stack_probe < 2)\n return !1;\n stack_probe -= 2;\n state = stack[stack_probe];\n ++depth;\n }\n };\n var error_rule_depth, errStr = \"\";\n if (!recovering) {\n error_rule_depth = locateNearestErrorRecoveryRule(state);\n expected = [];\n for (p in table[state])\n if (this.terminals_[p] && p > TERROR)\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n if (lexer.showPosition)\n errStr = \"Parse error on line \" + (yylineno + 1) + `:\n` + lexer.showPosition() + `\nExpecting ` + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n else\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected,\n recoverable: error_rule_depth !== !1\n });\n } else if (preErrorSymbol !== EOF)\n error_rule_depth = locateNearestErrorRecoveryRule(state);\n if (recovering == 3) {\n if (symbol === EOF || preErrorSymbol === EOF)\n throw Error(errStr || \"Parsing halted while starting to recover from another error.\");\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n symbol = lex();\n }\n if (error_rule_depth === !1)\n throw Error(errStr || \"Parsing halted. No suitable error recovery rule available.\");\n popStack(error_rule_depth);\n preErrorSymbol = symbol == TERROR ? null : symbol;\n symbol = TERROR;\n state = stack[stack.length - 1];\n action = table[state] && table[state][TERROR];\n recovering = 3;\n }\n if (action[0] instanceof Array && action.length > 1)\n throw Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0)\n recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges)\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n if (typeof r < \"u\")\n return r;\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return !0;\n }\n }\n return !0;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser)\n this.yy.parser.parseError(str, hash);\n else\n throw Error(str);\n },\n\n// resets the lexer, sets new input\nsetInput:function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = !1;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges)\n this.yylloc.range = [0, 0];\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else\n this.yylloc.last_column++;\n if (this.options.ranges)\n this.yylloc.range[1]++;\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function(ch) {\n var len = ch.length, lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1)\n this.yylineno -= lines.length - 1;\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges)\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function() {\n this._more = !0;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function() {\n if (this.options.backtrack_lexer)\n this._backtrack = !0;\n else\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n` + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n return this;\n },\n\n// retain first n characters of the match\nless:function(n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function() {\n var next = this.match;\n if (next.length < 20)\n next += this._input.substr(0, 20 - next.length);\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function() {\n var pre = this.pastInput(), c = Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + `\n` + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges)\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines)\n this.yylineno += lines.length;\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges)\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n this._more = !1;\n this._backtrack = !1;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input)\n this.done = !1;\n if (token)\n return token;\n else if (this._backtrack) {\n for (var k in backup)\n this[k] = backup[k];\n return !1;\n }\n return !1;\n },\n\n// return next match in input\nnext:function() {\n if (this.done)\n return this.EOF;\n if (!this._input)\n this.done = !0;\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0;i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== !1)\n return token;\n else if (this._backtrack) {\n match = !1;\n continue;\n } else\n return !1;\n } else if (!this.options.flex)\n break;\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== !1)\n return token;\n return !1;\n }\n if (this._input === \"\")\n return this.EOF;\n else\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + `. Unrecognized text.\n` + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r)\n return r;\n else\n return this.lex();\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0)\n return this.conditionStack.pop();\n else\n return this.conditionStack[0];\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1])\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n else\n return this.conditions.INITIAL.rules;\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0)\n return this.conditionStack[n];\n else\n return \"INITIAL\";\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"flex\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* skip end-of-line comments */\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:return 31\nbreak;\ncase 3:return 'as'\nbreak;\ncase 4:return 'break'\nbreak;\ncase 5:return 'const'\nbreak;\ncase 6:return 'continue'\nbreak;\ncase 7:return 'else'\nbreak;\ncase 8:return 'for'\nbreak;\ncase 9:return 'function'\nbreak;\ncase 10:return 'if'\nbreak;\ncase 11:return 'import'\nbreak;\ncase 12:return 'let'\nbreak;\ncase 13:return 'loop'\nbreak;\ncase 14:return 'package'\nbreak;\ncase 15:return 'namespace'\nbreak;\ncase 16:return 'return'\nbreak;\ncase 17:return 'var'\nbreak;\ncase 18:return 'void'\nbreak;\ncase 19:return 'while'\nbreak;\ncase 20:return 18\nbreak;\ncase 21:return 16\nbreak;\ncase 22:return 16\nbreak;\ncase 23:return 40\nbreak;\ncase 24:return 60\nbreak;\ncase 25:return 61\nbreak;\ncase 26:return 50\nbreak;\ncase 27:return 44\nbreak;\ncase 28:return 45\nbreak;\ncase 29:return 41\nbreak;\ncase 30:return 43\nbreak;\ncase 31:return 28\nbreak;\ncase 32:return 35\nbreak;\ncase 33:return 53\nbreak;\ncase 34:return 37\nbreak;\ncase 35:return 54\nbreak;\ncase 36:return 55\nbreak;\ncase 37:return 56\nbreak;\ncase 38:return 23\nbreak;\ncase 39:return 24\nbreak;\ncase 40:return 25\nbreak;\ncase 41:return 26\nbreak;\ncase 42:return 27\nbreak;\ncase 43:return 46\nbreak;\ncase 44:return 49\nbreak;\ncase 45:return 62\nbreak;\ncase 46:return 63\nbreak;\ncase 47:return 21\nbreak;\ncase 48:return 7\nbreak;\ncase 49:return 7\nbreak;\ncase 50:return 7\nbreak;\ncase 51:return 7\nbreak;\ncase 52:return 12\nbreak;\ncase 53:return 13\nbreak;\ncase 54:return 14\nbreak;\ncase 55:return 5\nbreak;\ncase 56:return 'INVALID'\nbreak;\ncase 57:console.log(yy_.yytext);\nbreak;\n}\n},\nrules: [/^(?:[/][/]\\s.*\\n)/,/^(?:\\s+)/,/^(?:in)/,/^(?:as)/,/^(?:break)/,/^(?:const)/,/^(?:continue)/,/^(?:else)/,/^(?:for)/,/^(?:function)/,/^(?:if)/,/^(?:import)/,/^(?:let)/,/^(?:loop)/,/^(?:package)/,/^(?:namespace)/,/^(?:return)/,/^(?:var)/,/^(?:void)/,/^(?:while)/,/^(?:null)/,/^(?:true)/,/^(?:false)/,/^(?:\\.)/,/^(?:\\?)/,/^(?::)/,/^(?:,)/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\()/,/^(?:\\))/,/^(?:!=)/,/^(?:!)/,/^(?:\\+)/,/^(?:-)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:%)/,/^(?:==)/,/^(?:>=)/,/^(?:>)/,/^(?:<=)/,/^(?:<)/,/^(?:\\{)/,/^(?:\\})/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:[_a-zA-Z][_a-zA-Z0-9]*)/,/^(?:[rR]?['][']['](\\.|[^'])*['][']['])/,/^(?:[rR]?[\"][\"][\"](\\.|[^\"])*[\"][\"][\"])/,/^(?:[rR]?['](\\.|[^'\\n\\r])*['])/,/^(?:[rR]?[\"](\\.|[^\"\\n\\r])*[\"])/,/^(?:[-]?([0-9]+|0x[0-9a-fA-F]+))/,/^(?:([0-9]+|0x[0-9a-fA-F]+)[uU])/,/^(?:[-]?[0-9]+(\\.[0-9]+)?([eE][+-]?[0-9]+(\\.[0-9]+)?)?)/,/^(?:$)/,/^(?:.)/,/^(?:.)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nexport { celParser };","import type { DefaultCombinatorName, DefaultOperatorName } from '../../types';\nimport type {\n CELBooleanLiteral,\n CELBytesLiteral,\n CELConditionalAnd,\n CELConditionalOr,\n CELExpression,\n CELExpressionGroup,\n CELIdentifier,\n CELLikeExpression,\n CELList,\n CELLiteral,\n CELMap,\n CELMember,\n CELMemberIdentifierChain,\n CELMemberNegatedIdentifier,\n CELMemberNegatedIdentifierChain,\n CELNegatedLikeExpression,\n CELNegation,\n CELNullLiteral,\n CELNumericLiteral,\n CELRelation,\n CELRelop,\n CELStringLiteral,\n} from './types';\n\nexport const isCELExpressionGroup = (expr: CELExpression): expr is CELExpressionGroup =>\n expr.type === 'ExpressionGroup';\nexport const isCELConditionalAnd = (expr: CELExpression): expr is CELConditionalAnd =>\n expr.type === 'ConditionalAnd';\nexport const isCELConditionalOr = (expr: CELExpression): expr is CELConditionalOr =>\n expr.type === 'ConditionalOr';\nexport const isCELStringLiteral = (expr: CELExpression): expr is CELStringLiteral =>\n expr.type === 'StringLiteral';\nexport const isCELLiteral = (expr: CELExpression): expr is CELLiteral =>\n isCELNumericLiteral(expr) ||\n isCELStringLiteral(expr) ||\n expr.type === 'BooleanLiteral' ||\n expr.type === 'NullLiteral' ||\n expr.type === 'BytesLiteral';\nexport const isCELNumericLiteral = (expr: CELExpression): expr is CELNumericLiteral =>\n expr.type === 'FloatLiteral' ||\n expr.type === 'IntegerLiteral' ||\n expr.type === 'UnsignedIntegerLiteral';\nexport const isCELRelation = (expr: CELExpression): expr is CELRelation => expr.type === 'Relation';\nexport const isCELList = (expr: CELExpression): expr is CELList => expr.type === 'List';\nexport const isCELMap = (expr: CELExpression): expr is CELMap => expr.type === 'Map';\nexport const isCELIdentifier = (expr: CELExpression): expr is CELIdentifier =>\n expr.type === 'Identifier';\nexport const isCELNegation = (expr: CELExpression): expr is CELNegation => expr.type === 'Negation';\nexport const isCELMember = (expr: CELExpression): expr is CELMember => expr.type === 'Member';\n\nexport const isCELIdentifierOrChain = (\n expr: CELExpression\n): expr is CELMemberIdentifierChain | CELIdentifier =>\n isCELIdentifier(expr) ||\n (isCELMember(expr) &&\n !!expr.left &&\n !!expr.right &&\n !expr.list &&\n !expr.value &&\n isCELIdentifierOrChain(expr.left) &&\n isCELIdentifier(expr.right));\n\nexport const isCELNegatedIdentifier = (expr: CELExpression): expr is CELMemberNegatedIdentifier =>\n isCELNegation(expr) && isCELIdentifier(expr.value);\n\nexport const isCELNegatedIdentifierOrChain = (\n expr: CELExpression\n): expr is CELMemberNegatedIdentifierChain | CELMemberNegatedIdentifier =>\n isCELNegatedIdentifier(expr) ||\n (isCELMember(expr) &&\n !!expr.left &&\n !!expr.right &&\n !expr.list &&\n !expr.value &&\n isCELIdentifierOrChain(expr.right) &&\n isCELNegatedIdentifier(expr.left));\n\nexport const isCELLikeExpression = (expr: CELExpression): expr is CELLikeExpression =>\n isCELMember(expr) &&\n !!expr.left &&\n !!expr.right &&\n !!expr.list &&\n isCELIdentifierOrChain(expr.left) &&\n isCELIdentifier(expr.right) &&\n (expr.right.value === 'contains' ||\n expr.right.value === 'startsWith' ||\n expr.right.value === 'endsWith') &&\n expr.list.value.length === 1 &&\n (isCELStringLiteral(expr.list.value[0]) || isCELIdentifier(expr.list.value[0]));\n\nexport const isCELNegatedLikeExpression = (expr: CELExpression): expr is CELNegatedLikeExpression =>\n isCELMember(expr) &&\n !!expr.left &&\n !!expr.right &&\n !!expr.list &&\n isCELNegatedIdentifierOrChain(expr.left) &&\n isCELIdentifier(expr.right) &&\n (expr.right.value === 'contains' ||\n expr.right.value === 'startsWith' ||\n expr.right.value === 'endsWith') &&\n expr.list.value.length === 1 &&\n (isCELStringLiteral(expr.list.value[0]) || isCELIdentifier(expr.list.value[0]));\n\nexport const getIdentifierFromChain = (expr: CELIdentifier | CELMemberIdentifierChain): string => {\n if (isCELIdentifier(expr)) {\n return expr.value;\n }\n\n return `${getIdentifierFromChain(expr.left)}.${expr.right.value}`;\n};\n\nexport const getIdentifierFromNegatedChain = (\n expr: CELMemberNegatedIdentifier | CELMemberNegatedIdentifierChain\n): string => {\n if (isCELNegatedIdentifier(expr)) {\n return `${``.padStart(expr.negations, `!`)}${expr.value.value}`;\n }\n\n return `${getIdentifierFromNegatedChain(expr.left)}.${expr.right.value}`;\n};\n\nfunction evalCELLiteralValue(literal: CELStringLiteral): string;\nfunction evalCELLiteralValue(literal: CELBooleanLiteral): boolean;\nfunction evalCELLiteralValue(literal: CELNumericLiteral): number | null;\nfunction evalCELLiteralValue(literal: CELBytesLiteral): null;\nfunction evalCELLiteralValue(literal: CELNullLiteral): null;\nfunction evalCELLiteralValue(literal: CELLiteral): string | boolean | number | null;\nfunction evalCELLiteralValue(literal: CELLiteral) {\n switch (literal.type) {\n case 'StringLiteral': {\n return literal.value.replaceAll(/^((?:'''|\"\"\"|'|\")?)([\\S\\s]*?)\\1$/gm, '$2');\n }\n case 'BooleanLiteral': {\n return literal.value;\n }\n case 'NullLiteral':\n case 'BytesLiteral': {\n return null;\n }\n default:\n return literal.value;\n }\n}\n\nexport const normalizeCombinator = (c: '&&' | '||'): DefaultCombinatorName =>\n c === '||' ? 'or' : 'and';\n\nexport const normalizeOperator = (op: CELRelop, flip?: boolean): DefaultOperatorName => {\n if (flip) {\n if (op === '<') return '>';\n if (op === '<=') return '>=';\n if (op === '>') return '<';\n if (op === '>=') return '<=';\n }\n if (op === '==') return '=';\n return op;\n};\n\nexport const generateFlatAndOrList = (\n expr: CELConditionalAnd | CELConditionalOr\n): (DefaultCombinatorName | CELExpression)[] => {\n const combinator = normalizeCombinator(expr.type === 'ConditionalAnd' ? '&&' : '||');\n const { left, right } = expr;\n if (isCELConditionalAnd(left) || isCELConditionalOr(left)) {\n return [...generateFlatAndOrList(left), combinator, right];\n }\n return [left, combinator, right];\n};\n\nexport const generateMixedAndOrList = (\n expr: CELConditionalAnd | CELConditionalOr\n): (DefaultCombinatorName | CELExpression | ('and' | CELExpression)[])[] => {\n const arr = generateFlatAndOrList(expr);\n const returnArray: (DefaultCombinatorName | CELExpression | ('and' | CELExpression)[])[] = [];\n let startIndex = 0;\n for (let i = 0; i < arr.length; i += 2) {\n if (arr[i + 1] === 'and') {\n startIndex = i;\n let j = 1;\n while (arr[startIndex + j] === 'and') {\n i += 2;\n j += 2;\n }\n const tempAndArray = arr.slice(startIndex, i + 1) as ('and' | CELExpression)[];\n returnArray.push(tempAndArray);\n i -= 2;\n } else if (arr[i + 1] === 'or') {\n if (i === 0 || i === arr.length - 3) {\n if (i === 0 || arr[i - 1] === 'or') {\n returnArray.push(arr[i]);\n }\n returnArray.push(arr[i + 1]);\n if (i === arr.length - 3) {\n returnArray.push(arr[i + 2]);\n }\n } else {\n if (arr[i - 1] === 'and') {\n returnArray.push(arr[i + 1]);\n } else {\n returnArray.push(arr[i], arr[i + 1]);\n }\n }\n }\n }\n if (returnArray.length === 1 && Array.isArray(returnArray[0])) {\n // If length is 1, then the only element is an AND array so just return that\n return returnArray[0];\n }\n return returnArray;\n};\n\nexport { evalCELLiteralValue };\n","import { defaultOperatorNegationMap } from '../../defaults';\nimport type {\n DefaultCombinatorName,\n DefaultOperatorName,\n DefaultRuleGroupArray,\n DefaultRuleGroupICArray,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n Except,\n ValueSource,\n} from '../../types';\nimport type { ParserCommonOptions } from '../../types/import';\nimport { joinWith } from '../arrayUtils';\nimport { isRuleGroup } from '../isRuleGroup';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { prepareRuleGroup } from '../prepareQueryObjects';\nimport { celParser } from './celParser';\nimport type { CELExpression, CELIdentifier, CELLikeExpression, CELLiteral } from './types';\nimport {\n evalCELLiteralValue,\n generateFlatAndOrList,\n generateMixedAndOrList,\n getIdentifierFromChain,\n getIdentifierFromNegatedChain,\n isCELConditionalAnd,\n isCELConditionalOr,\n isCELExpressionGroup,\n isCELIdentifierOrChain,\n isCELLikeExpression,\n isCELList,\n isCELLiteral,\n isCELMap,\n isCELNegatedLikeExpression,\n isCELNegation,\n isCELRelation,\n isCELStringLiteral,\n normalizeOperator,\n} from './utils';\n\n/**\n * Options object for {@link parseCEL}.\n */\nexport interface ParseCELOptions extends ParserCommonOptions {}\n\n/**\n * Converts a CEL string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseCEL(cel: string): DefaultRuleGroupType;\n/**\n * Converts a CEL string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseCEL(\n cel: string,\n options: Except<ParseCELOptions, 'independentCombinators'> & {\n independentCombinators?: false;\n }\n): DefaultRuleGroupType;\n/**\n * Converts a CEL string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupTypeIC DefaultRuleGroupTypeIC}).\n */\nfunction parseCEL(\n cel: string,\n options: Except<ParseCELOptions, 'independentCombinators'> & {\n independentCombinators: true;\n }\n): DefaultRuleGroupTypeIC;\nfunction parseCEL(cel: string, options: ParseCELOptions = {}): DefaultRuleGroupTypeAny {\n const { fields, independentCombinators, listsAsArrays } = options;\n const ic = !!independentCombinators;\n const fieldsFlat = getFieldsArray(fields);\n\n const fieldIsValid = (\n fieldName: string,\n operator: DefaultOperatorName,\n subordinateFieldName?: string\n ) =>\n fieldIsValidUtil({\n fieldName,\n fieldsFlat,\n operator,\n subordinateFieldName,\n getValueSources: options?.getValueSources,\n });\n\n const emptyQuery: DefaultRuleGroupTypeAny = {\n rules: [],\n ...(ic ? {} : { combinator: 'and' }),\n };\n\n const processCELExpression = (\n expr: CELExpression,\n processOpts: {\n groupOnlyIfNecessary?: boolean;\n forwardNegation?: boolean;\n } = {}\n ): DefaultRuleType | DefaultRuleGroupTypeAny | null => {\n const { forwardNegation: forwardedNegation, groupOnlyIfNecessary } = processOpts;\n /* istanbul ignore if */\n if (isCELNegation(expr) || isCELNegatedLikeExpression(expr)) {\n const negate = isCELNegation(expr)\n ? expr.negations % 2 === 1\n : (getIdentifierFromNegatedChain(expr.left).match(/^!+/)?.[0].length ?? 0) % 2 === 1;\n const negatedExpr =\n isCELNegation(expr) &&\n isCELExpressionGroup(expr.value) &&\n isCELLikeExpression(expr.value.value)\n ? processCELExpression(expr.value.value, { forwardNegation: negate })\n : isCELNegatedLikeExpression(expr)\n ? processCELExpression(\n {\n ...expr,\n left: {\n type: 'Identifier',\n value: getIdentifierFromNegatedChain(expr.left).replace(/^!+/, ''),\n },\n } as CELLikeExpression,\n { forwardNegation: negate }\n )\n : isCELNegation(expr) &&\n isCELExpressionGroup(expr.value) &&\n isCELRelation(expr.value.value)\n ? processCELExpression(expr.value.value, { forwardNegation: negate })\n : processCELExpression(expr.value, {\n groupOnlyIfNecessary: true,\n forwardNegation: negate,\n });\n if (negatedExpr) {\n if (\n isCELNegatedLikeExpression(expr) ||\n (isCELNegation(expr) &&\n isCELExpressionGroup(expr.value) &&\n isCELRelation(expr.value.value))\n ) {\n return negatedExpr;\n } else if (\n !negate ||\n (negate && !isRuleGroup(negatedExpr) && negatedExpr.operator.startsWith('doesNot'))\n ) {\n return ic\n ? ({ rules: [negatedExpr] } as DefaultRuleGroupTypeIC)\n : ({\n combinator: 'and',\n rules: [negatedExpr],\n } as DefaultRuleGroupType);\n }\n return ic\n ? ({ rules: [negatedExpr], not: true } as DefaultRuleGroupTypeIC)\n : ({\n combinator: 'and',\n rules: [negatedExpr],\n not: true,\n } as DefaultRuleGroupType);\n }\n } else if (isCELExpressionGroup(expr)) {\n const rule = processCELExpression(expr.value, {\n groupOnlyIfNecessary: true,\n });\n if (rule) {\n if (isRuleGroup(rule) || (groupOnlyIfNecessary && isCELExpressionGroup(expr.value))) {\n return rule;\n }\n return ic ? { rules: [rule] } : { combinator: 'and', rules: [rule] };\n }\n } else if (isCELConditionalAnd(expr) || isCELConditionalOr(expr)) {\n if (ic) {\n const andOrList = generateFlatAndOrList(expr);\n const rules = andOrList.map(v => {\n if (typeof v === 'string') {\n return v;\n }\n return processCELExpression(v);\n });\n // Bail out completely if any rules in the list were invalid\n // so as not to return an incorrect and/or sequence\n if (!rules.every(Boolean)) {\n return null;\n }\n return {\n rules: rules as DefaultRuleGroupICArray,\n };\n }\n const andOrList = generateMixedAndOrList(expr);\n const combinator = andOrList[1] as DefaultCombinatorName;\n const filteredList = andOrList\n .filter(v => Array.isArray(v) || (!!v && typeof v !== 'string' && 'type' in v))\n .map(v =>\n Array.isArray(v) ? v.filter(vf => !!v && typeof vf !== 'string' && 'type' in vf) : v\n ) as (CELExpression | CELExpression[])[];\n const rules = filteredList\n .map((exp): DefaultRuleGroupType | DefaultRuleType | null => {\n if (Array.isArray(exp)) {\n return {\n combinator: 'and',\n rules: exp.map(e => processCELExpression(e)).filter(Boolean) as DefaultRuleGroupArray,\n };\n }\n return processCELExpression(exp) as DefaultRuleType | DefaultRuleGroupType | null;\n })\n .filter(Boolean) as DefaultRuleGroupArray;\n /* istanbul ignore else */\n if (rules.length > 0) {\n return { combinator, rules };\n }\n } else if (isCELLikeExpression(expr)) {\n const field = getIdentifierFromChain(expr.left);\n const func = expr.right.value;\n const operatorPre: DefaultOperatorName = func === 'startsWith' ? 'beginsWith' : func;\n const operator = forwardedNegation\n ? (`doesNot${operatorPre[0].toUpperCase()}${operatorPre\n .slice(1)\n .replace('s', '')}` as DefaultOperatorName)\n : operatorPre;\n const valueObj = expr.list.value[0];\n const value = isCELStringLiteral(valueObj) ? evalCELLiteralValue(valueObj) : valueObj.value;\n const valueSource: ValueSource | undefined =\n expr.list.value[0].type === 'Identifier' ? 'field' : undefined;\n if (fieldIsValid(field, operator, valueSource === 'field' ? value : undefined)) {\n return valueSource ? { field, operator, value, valueSource } : { field, operator, value };\n }\n } else if (isCELRelation(expr)) {\n let field: string | null = null;\n // oxlint-disable-next-line typescript/no-explicit-any\n let value: any = undefined;\n let valueSource: ValueSource | undefined = undefined;\n let flip = false;\n const { left, right } = expr;\n if (isCELIdentifierOrChain(left)) {\n field = getIdentifierFromChain(left);\n if (isCELIdentifierOrChain(right)) {\n value = getIdentifierFromChain(right);\n valueSource = 'field';\n } else if (isCELLiteral(right)) {\n value = evalCELLiteralValue(right);\n }\n } else {\n /* istanbul ignore else */\n if (isCELIdentifierOrChain(right) && isCELLiteral(left) && expr.operator !== 'in') {\n flip = true;\n field = getIdentifierFromChain(right);\n value = evalCELLiteralValue(left);\n }\n }\n let operator = normalizeOperator(expr.operator, flip);\n if (forwardedNegation) {\n operator = defaultOperatorNegationMap[operator];\n }\n if (value === null && (operator === '=' || operator === '!=')) {\n operator = operator === '=' ? 'null' : 'notNull';\n } else if ((operator === 'in' || operator === 'notIn') && isCELList(right)) {\n if (right.value.value.every(v => isCELLiteral(v))) {\n value = right.value.value.map(v => evalCELLiteralValue(v));\n } else {\n if (right.value.value.every(v => isCELIdentifierOrChain(v))) {\n valueSource = 'field';\n value = right.value.value.map(id => getIdentifierFromChain(id));\n }\n }\n if (value && !listsAsArrays) {\n value = joinWith(\n value.map((v: string | boolean | number) => `${v}`),\n ','\n );\n }\n } else if ((operator === 'in' || operator === 'notIn') && isCELMap(right)) {\n const keys = right.value.value.map(v => v.left);\n if (keys.every(k => isCELLiteral(k) || isCELIdentifierOrChain(k))) {\n value = (keys as (CELLiteral | CELIdentifier)[]).map(k =>\n isCELLiteral(k) ? evalCELLiteralValue(k) : getIdentifierFromChain(k)\n );\n }\n if (value && !listsAsArrays) {\n value = joinWith(\n value.map((v: string | boolean | number) => `${v}`),\n ','\n );\n }\n }\n if (\n field &&\n fieldIsValid(field, operator, valueSource === 'field' ? value : undefined) &&\n value !== undefined\n ) {\n return valueSource ? { field, operator, value, valueSource } : { field, operator, value };\n }\n }\n return null;\n };\n\n const prepare = options.generateIDs ? prepareRuleGroup : <T>(g: T) => g;\n\n let processedCEL: CELExpression;\n try {\n processedCEL = celParser.parse(cel).value;\n } catch {\n return prepare(emptyQuery);\n }\n const result = processCELExpression(processedCEL);\n if (result) {\n if (isRuleGroup(result)) {\n return prepare(result);\n }\n return prepare({ rules: [result], ...(ic ? {} : { combinator: 'and' }) });\n }\n\n return prepare(emptyQuery);\n}\n\nexport { parseCEL };\n"],"mappings":"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AAI,IAAG;GAAI,IAAG;GAAI,IAAG;GAAI,IAAG;GAAK,IAAG;GAAK;EACpU,cAAc;GAAC;GAAE,CAAC,GAAE,EAAE;GAAC,CAAC,GAAE,EAAE;GAAC,CAAC,GAAE,EAAE;GAAC,CAAC,GAAE,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,IAAG,EAAE;GAAC,CAAC,GAAE,EAAE;GAAC,CAAC,GAAE,EAAE;GAAC,CAAC,GAAE,EAAE;GAAC,CAAC,GAAE,EAAE;GAAC,CAAC,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,IAAG;IAAE,IAAG;IAAE,IAAG;IAAG,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAE,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE;GAAC;IAAC,GAAE;IAAG,GAAE;IAAG,GAAE;IAAI,GAAE;IAAG,GAAE;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAG,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAE,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE;GAAC;IAAC,GAAE;IAAG,GAAE;IAAG,GAAE;IAAI,GAAE;IAAG,GAAE;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAG,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAE,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE;GAAC;IAAC,GAAE;IAAG,GAAE;IAAG,GAAE;IAAI,GAAE;IAAG,GAAE;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAG,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAE,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE;GAAC;IAAC,GAAE;IAAG,GAAE;IAAG,GAAE;IAAI,GAAE;IAAG,GAAE;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAG,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAE,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE;GAAC;IAAC,GAAE;IAAG,GAAE;IAAG,GAAE;IAAI,GAAE;IAAG,GAAE;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAG,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAE,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE;GAAC;IAAC,GAAE;IAAG,GAAE;IAAG,GAAE;IAAI,GAAE;IAAG,GAAE;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAG,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAE,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE,IAAG;IAAE;GAAC;IAAC,GAAE;IAAG,GAAE;IAAG,GAAE;IAAI,GAAE;IAAG,GAAE;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAI,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAI,IAAG;IAAG,IAAG;IAAG,IAAG;IAAI,IAAG;IAAE,IAAG;IAAE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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { DefaultRuleGroupType, DefaultRuleGroupTypeIC, Except } from "./basic-BfD-7CN3.mjs";
|
|
2
|
+
import { ParserCommonOptions } from "./import-BwbbP4oU.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/utils/parseJSONata/parseJSONata.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Options object for {@link parseJSONata}.
|
|
8
|
+
*
|
|
9
|
+
* Note: `listsAsArrays` is ignored by `parseJSONata`; lists are _always_ arrays.
|
|
10
|
+
*/
|
|
11
|
+
interface ParseJSONataOptions extends ParserCommonOptions {}
|
|
12
|
+
/**
|
|
13
|
+
* Converts a JSONata string expression into a query suitable for the
|
|
14
|
+
* {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props
|
|
15
|
+
* ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).
|
|
16
|
+
*/
|
|
17
|
+
declare function parseJSONata(jsonataInput: string): DefaultRuleGroupType;
|
|
18
|
+
/**
|
|
19
|
+
* Converts a JSONata string expression into a query suitable for the
|
|
20
|
+
* {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props
|
|
21
|
+
* ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).
|
|
22
|
+
*/
|
|
23
|
+
declare function parseJSONata(jsonataInput: string, options: Except<ParseJSONataOptions, "independentCombinators"> & {
|
|
24
|
+
independentCombinators?: false;
|
|
25
|
+
}): DefaultRuleGroupType;
|
|
26
|
+
/**
|
|
27
|
+
* Converts a JSONata string expression into a query suitable for the
|
|
28
|
+
* {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props
|
|
29
|
+
* ({@link index!DefaultRuleGroupTypeIC DefaultRuleGroupTypeIC}).
|
|
30
|
+
*/
|
|
31
|
+
declare function parseJSONata(jsonataInput: string, options: Except<ParseJSONataOptions, "independentCombinators"> & {
|
|
32
|
+
independentCombinators: true;
|
|
33
|
+
}): DefaultRuleGroupTypeIC;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { ParseJSONataOptions, parseJSONata };
|
|
36
|
+
//# sourceMappingURL=parseJSONata.d.mts.map
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { isRuleGroup } from "./isRuleGroup-CnhYpLOM.mjs";
|
|
2
|
+
import "./optGroupUtils-Duv-M8rf.mjs";
|
|
3
|
+
import { fieldIsValidUtil, getFieldsArray, prepareRuleGroup } from "./prepareQueryObjects-CS6Wmhmf.mjs";
|
|
4
|
+
import jsonata from "jsonata";
|
|
5
|
+
|
|
6
|
+
//#region src/utils/parseJSONata/utils.ts
|
|
7
|
+
const isJSONataExprNode = (expr) => {
|
|
8
|
+
return expr && typeof expr === "object" && typeof expr.type === "string";
|
|
9
|
+
};
|
|
10
|
+
const isJSONataBinaryNode = (expr) => isJSONataExprNode(expr) && expr.type === "binary";
|
|
11
|
+
const isJSONataPath = (expr) => isJSONataExprNode(expr) && expr.type === "path" && Array.isArray(expr.steps) && expr.steps.length > 0 && isJSONataExprNode(expr.steps[0]);
|
|
12
|
+
const isJSONataName = (expr) => isJSONataExprNode(expr) && expr.type === "name" && typeof expr.value === "string" && expr.value.length > 0;
|
|
13
|
+
const isJSONataIdentifier = (expr) => isJSONataPath(expr) && expr.steps.every((v) => isJSONataName(v));
|
|
14
|
+
const isJSONataBlock = (expr) => isJSONataExprNode(expr) && expr.type === "block" && Array.isArray(expr.expressions) && expr.expressions.length > 0 && isJSONataExprNode(expr.expressions[0]);
|
|
15
|
+
const isJSONataString = (expr) => isJSONataExprNode(expr) && expr.type === "string" && typeof expr.value === "string";
|
|
16
|
+
const isJSONataNumber = (expr) => isJSONataExprNode(expr) && expr.type === "number" && typeof expr.value === "number";
|
|
17
|
+
const isJSONataBoolean = (expr) => isJSONataExprNode(expr) && expr.type === "value" && typeof expr.value === "boolean";
|
|
18
|
+
const isJSONataNull = (expr) => isJSONataExprNode(expr) && expr.type === "value" && expr.value === null;
|
|
19
|
+
const isJSONataRegex = (expr) => isJSONataExprNode(expr) && expr.type === "regex" && expr.value instanceof RegExp;
|
|
20
|
+
const isJSONataAnd = (expr) => isJSONataBinaryNode(expr) && expr.value === "and";
|
|
21
|
+
const isJSONataOr = (expr) => isJSONataBinaryNode(expr) && expr.value === "or";
|
|
22
|
+
const isJSONataEqual = (expr) => isJSONataBinaryNode(expr) && expr.value === "=";
|
|
23
|
+
const isJSONataNotEqual = (expr) => isJSONataBinaryNode(expr) && expr.value === "!=";
|
|
24
|
+
const isJSONataGreaterThan = (expr) => isJSONataBinaryNode(expr) && expr.value === ">";
|
|
25
|
+
const isJSONataGreaterThanOrEqual = (expr) => isJSONataBinaryNode(expr) && expr.value === ">=";
|
|
26
|
+
const isJSONataLessThan = (expr) => isJSONataBinaryNode(expr) && expr.value === "<";
|
|
27
|
+
const isJSONataLessThanOrEqual = (expr) => isJSONataBinaryNode(expr) && expr.value === "<=";
|
|
28
|
+
const isJSONataIn = (expr) => isJSONataBinaryNode(expr) && expr.value === "in" && isJSONataPath(expr.lhs) && isJSONataList(expr.rhs);
|
|
29
|
+
const isJSONataNot = (expr) => isJSONataExprNode(expr) && expr.type === "function" && expr.value === "(" && Array.isArray(expr.arguments) && isJSONataExprNode(expr.arguments[0]) && isJSONataExprNode(expr.procedure) && expr.procedure.value === "not" && expr.procedure.type === "variable";
|
|
30
|
+
const isJSONataContains = (expr) => isJSONataExprNode(expr) && expr.type === "function" && expr.value === "(" && Array.isArray(expr.arguments) && expr.arguments.length >= 2 && isJSONataExprNode(expr.arguments[0]) && isJSONataExprNode(expr.procedure) && expr.procedure.value === "contains" && expr.procedure.type === "variable";
|
|
31
|
+
const isJSONataToMillis = (expr) => isJSONataExprNode(expr) && expr.type === "function" && expr.value === "(" && Array.isArray(expr.arguments) && expr.arguments.length > 0 && isJSONataString(expr.arguments[0]) && isJSONataExprNode(expr.procedure) && expr.procedure.value === "toMillis" && expr.procedure.type === "variable";
|
|
32
|
+
const isJSONataList = (expr) => isJSONataExprNode(expr) && expr.type === "unary" && expr.value === "[" && Array.isArray(expr.expressions);
|
|
33
|
+
const isJSONataPrimitive = (expr) => {
|
|
34
|
+
return isJSONataString(expr) || isJSONataNumber(expr) || isJSONataBoolean(expr) || isJSONataNull(expr) || isJSONataToMillis(expr);
|
|
35
|
+
};
|
|
36
|
+
const isJSONataPrimitiveList = (expr) => isJSONataList(expr) && expr.expressions.every((v) => isJSONataPrimitive(v));
|
|
37
|
+
const isJSONataIdentifierList = (expr) => isJSONataList(expr) && expr.expressions.every((v) => isJSONataIdentifier(v));
|
|
38
|
+
const isJSONataValidValue = (expr) => isJSONataPrimitive(expr) || isJSONataRegex(expr) || isJSONataIdentifier(expr) || isJSONataPrimitiveList(expr) || isJSONataIdentifierList(expr) || isJSONataToMillis(expr);
|
|
39
|
+
const isJSONataComparison = (expr) => isJSONataEqual(expr) || isJSONataNotEqual(expr) || isJSONataGreaterThan(expr) || isJSONataGreaterThanOrEqual(expr) || isJSONataLessThan(expr) || isJSONataLessThanOrEqual(expr);
|
|
40
|
+
const getValidValue = (expr) => {
|
|
41
|
+
if (isJSONataToMillis(expr)) return getValidValue(expr.arguments[0]);
|
|
42
|
+
else if (isJSONataIdentifier(expr)) return getFieldFromPath(expr);
|
|
43
|
+
else if (isJSONataPrimitiveList(expr)) return expr.expressions.map((v) => getValidValue(v));
|
|
44
|
+
else if (isJSONataIdentifierList(expr)) return expr.expressions.map((v) => getFieldFromPath(v));
|
|
45
|
+
return expr.value;
|
|
46
|
+
};
|
|
47
|
+
const getFieldFromPath = (path) => isJSONataIdentifier(path) ? path.steps.map((s) => s.value).join(".") : "";
|
|
48
|
+
const normalizeOperator = (opType, flip) => {
|
|
49
|
+
if (flip) {
|
|
50
|
+
if (opType === "<") return ">";
|
|
51
|
+
if (opType === "<=") return ">=";
|
|
52
|
+
if (opType === ">") return "<";
|
|
53
|
+
if (opType === ">=") return "<=";
|
|
54
|
+
}
|
|
55
|
+
return opType;
|
|
56
|
+
};
|
|
57
|
+
const negatedLikeOperators = {
|
|
58
|
+
contains: "doesNotContain",
|
|
59
|
+
beginsWith: "doesNotBeginWith",
|
|
60
|
+
endsWith: "doesNotEndWith"
|
|
61
|
+
};
|
|
62
|
+
const generateFlatAndOrList = (expr) => {
|
|
63
|
+
// istanbul ignore else
|
|
64
|
+
if (isJSONataAnd(expr) || isJSONataOr(expr)) {
|
|
65
|
+
const { lhs, rhs, value: combinator } = expr;
|
|
66
|
+
if (isJSONataAnd(lhs) || isJSONataOr(lhs)) return [
|
|
67
|
+
...generateFlatAndOrList(lhs),
|
|
68
|
+
combinator,
|
|
69
|
+
rhs
|
|
70
|
+
];
|
|
71
|
+
return [
|
|
72
|
+
lhs,
|
|
73
|
+
combinator,
|
|
74
|
+
rhs
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
// istanbul ignore next
|
|
78
|
+
return [];
|
|
79
|
+
};
|
|
80
|
+
const generateMixedAndOrList = (expr) => {
|
|
81
|
+
const arr = generateFlatAndOrList(expr);
|
|
82
|
+
const returnArray = [];
|
|
83
|
+
let startIndex = 0;
|
|
84
|
+
for (let i = 0; i < arr.length; i += 2) if (arr[i + 1] === "and") {
|
|
85
|
+
startIndex = i;
|
|
86
|
+
let j = 1;
|
|
87
|
+
while (arr[startIndex + j] === "and") {
|
|
88
|
+
i += 2;
|
|
89
|
+
j += 2;
|
|
90
|
+
}
|
|
91
|
+
const tempAndArray = arr.slice(startIndex, i + 1);
|
|
92
|
+
returnArray.push(tempAndArray);
|
|
93
|
+
i -= 2;
|
|
94
|
+
} else if (arr[i + 1] === "or") if (i === 0 || i === arr.length - 3) {
|
|
95
|
+
if (i === 0 || arr[i - 1] === "or") returnArray.push(arr[i]);
|
|
96
|
+
returnArray.push(arr[i + 1]);
|
|
97
|
+
if (i === arr.length - 3) returnArray.push(arr[i + 2]);
|
|
98
|
+
} else if (arr[i - 1] === "and") returnArray.push(arr[i + 1]);
|
|
99
|
+
else returnArray.push(arr[i], arr[i + 1]);
|
|
100
|
+
if (returnArray.length === 1 && Array.isArray(returnArray[0])) return returnArray[0];
|
|
101
|
+
return returnArray;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
//#endregion
|
|
105
|
+
//#region src/utils/parseJSONata/parseJSONata.ts
|
|
106
|
+
function parseJSONata(jsonataInput, options = {}) {
|
|
107
|
+
const { fields, independentCombinators, listsAsArrays: _laa } = options;
|
|
108
|
+
const ic = !!independentCombinators;
|
|
109
|
+
const fieldsFlat = getFieldsArray(fields);
|
|
110
|
+
const fieldIsValid = (fieldName, operator, subordinateFieldName) => fieldIsValidUtil({
|
|
111
|
+
fieldName,
|
|
112
|
+
fieldsFlat,
|
|
113
|
+
operator,
|
|
114
|
+
subordinateFieldName,
|
|
115
|
+
getValueSources: options?.getValueSources
|
|
116
|
+
});
|
|
117
|
+
const emptyQuery = {
|
|
118
|
+
rules: [],
|
|
119
|
+
...ic ? {} : { combinator: "and" }
|
|
120
|
+
};
|
|
121
|
+
const parseJSONataAST = (expr, processOpts = {}) => {
|
|
122
|
+
const { forwardNegation: _forwardedNegation, groupOnlyIfNecessary: _g } = processOpts;
|
|
123
|
+
if (isJSONataBlock(expr)) {
|
|
124
|
+
if (isJSONataAnd(expr.expressions[0]) || isJSONataOr(expr.expressions[0]) || isJSONataBlock(expr.expressions[0])) return parseJSONataAST(expr.expressions[0]);
|
|
125
|
+
const blockOfExpr = parseJSONataAST(expr.expressions[0]);
|
|
126
|
+
// istanbul ignore else
|
|
127
|
+
if (blockOfExpr) return ic ? { rules: [blockOfExpr] } : {
|
|
128
|
+
combinator: "and",
|
|
129
|
+
rules: [blockOfExpr]
|
|
130
|
+
};
|
|
131
|
+
} else if (isJSONataAnd(expr) || isJSONataOr(expr)) {
|
|
132
|
+
if (ic) {
|
|
133
|
+
const rules$1 = generateFlatAndOrList(expr).map((v) => {
|
|
134
|
+
if (typeof v === "string") return v;
|
|
135
|
+
return parseJSONataAST(v);
|
|
136
|
+
});
|
|
137
|
+
if (!rules$1.every(Boolean)) return null;
|
|
138
|
+
if (((rs) => rs.length === 3 && (rs[1] === "and" || rs[1] === "or") && !isRuleGroup(rs[0]) && !isRuleGroup(rs[2]))(rules$1) && rules$1[0].field === rules$1[2].field && (rules$1[0].valueSource ?? "value") === (rules$1[2].valueSource ?? "value") && (rules$1[1] === "and" && (rules$1[0].operator === ">=" && rules$1[2].operator === "<=" || rules$1[0].operator === "<=" && rules$1[2].operator === ">=") || rules$1[1] === "or" && (rules$1[0].operator === ">" && rules$1[2].operator === "<" || rules$1[0].operator === "<" && rules$1[2].operator === ">"))) return {
|
|
139
|
+
field: rules$1[0].field,
|
|
140
|
+
operator: rules$1[1] === "and" ? "between" : "notBetween",
|
|
141
|
+
value: rules$1[1] === "and" && rules$1[0].operator === "<=" || rules$1[1] === "or" && rules$1[0].operator === ">" ? [rules$1[2].value, rules$1[0].value] : [rules$1[0].value, rules$1[2].value],
|
|
142
|
+
...rules$1[0].valueSource ? { valueSource: rules$1[0].valueSource } : null
|
|
143
|
+
};
|
|
144
|
+
return { rules: rules$1 };
|
|
145
|
+
}
|
|
146
|
+
const andOrList = generateMixedAndOrList(expr);
|
|
147
|
+
const combinator = andOrList[1];
|
|
148
|
+
const rules = andOrList.filter((v) => Array.isArray(v) || !!v && typeof v !== "string" && "type" in v).map((v) => Array.isArray(v) ? v.filter((vf) => !!v && typeof vf !== "string" && "type" in vf) : v).map((exp) => {
|
|
149
|
+
if (Array.isArray(exp)) return {
|
|
150
|
+
combinator: "and",
|
|
151
|
+
rules: exp.map((e) => parseJSONataAST(e)).filter(Boolean)
|
|
152
|
+
};
|
|
153
|
+
return parseJSONataAST(exp);
|
|
154
|
+
}).filter(Boolean);
|
|
155
|
+
if (((rs) => rs.length === 2 && !isRuleGroup(rs[0]) && !isRuleGroup(rs[1]))(rules) && rules[0].field === rules[1].field && (rules[0].valueSource ?? "value") === (rules[1].valueSource ?? "value") && (combinator === "and" && (rules[0].operator === ">=" && rules[1].operator === "<=" || rules[0].operator === "<=" && rules[1].operator === ">=") || combinator === "or" && (rules[0].operator === ">" && rules[1].operator === "<" || rules[0].operator === "<" && rules[1].operator === ">"))) return {
|
|
156
|
+
field: rules[0].field,
|
|
157
|
+
operator: combinator === "and" ? "between" : "notBetween",
|
|
158
|
+
value: combinator === "and" && rules[0].operator === "<=" || combinator === "or" && rules[0].operator === ">" ? [rules[1].value, rules[0].value] : [rules[0].value, rules[1].value],
|
|
159
|
+
...rules[0].valueSource ? { valueSource: rules[0].valueSource } : null
|
|
160
|
+
};
|
|
161
|
+
// istanbul ignore else
|
|
162
|
+
if (rules.length > 0) return {
|
|
163
|
+
combinator,
|
|
164
|
+
rules
|
|
165
|
+
};
|
|
166
|
+
} else if (isJSONataNot(expr)) {
|
|
167
|
+
const negatedExpr = parseJSONataAST(expr.arguments[0]);
|
|
168
|
+
// istanbul ignore else
|
|
169
|
+
if (negatedExpr) {
|
|
170
|
+
if (!isRuleGroup(negatedExpr) && (negatedExpr.operator === "contains" || negatedExpr.operator === "beginsWith" || negatedExpr.operator === "endsWith")) return {
|
|
171
|
+
...negatedExpr,
|
|
172
|
+
operator: negatedLikeOperators[negatedExpr.operator]
|
|
173
|
+
};
|
|
174
|
+
return ic ? {
|
|
175
|
+
rules: [negatedExpr],
|
|
176
|
+
not: true
|
|
177
|
+
} : {
|
|
178
|
+
combinator: "and",
|
|
179
|
+
rules: [negatedExpr],
|
|
180
|
+
not: true
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
} else if (isJSONataContains(expr)) {
|
|
184
|
+
const [arg1, arg2] = expr.arguments;
|
|
185
|
+
let field = "";
|
|
186
|
+
let regex = "";
|
|
187
|
+
let valueSource = void 0;
|
|
188
|
+
// istanbul ignore else
|
|
189
|
+
if (isJSONataIdentifier(arg1)) {
|
|
190
|
+
field = getFieldFromPath(arg1);
|
|
191
|
+
if (isJSONataIdentifier(arg2)) {
|
|
192
|
+
regex = getFieldFromPath(arg2);
|
|
193
|
+
valueSource = "field";
|
|
194
|
+
} else if (isJSONataString(arg2) || isJSONataRegex(arg2)) regex = getValidValue(arg2);
|
|
195
|
+
}
|
|
196
|
+
// istanbul ignore else
|
|
197
|
+
if (valueSource === "field" ? fieldIsValid(field, "contains", regex) : fieldIsValid(field, "contains")) return {
|
|
198
|
+
field,
|
|
199
|
+
operator: "contains",
|
|
200
|
+
value: regex,
|
|
201
|
+
...valueSource ? { valueSource } : {}
|
|
202
|
+
};
|
|
203
|
+
} else if (isJSONataIn(expr)) {
|
|
204
|
+
const field = getFieldFromPath(expr.lhs);
|
|
205
|
+
let valueSource = void 0;
|
|
206
|
+
if (isJSONataIdentifierList(expr.rhs)) valueSource = "field";
|
|
207
|
+
if (isJSONataValidValue(expr.rhs)) {
|
|
208
|
+
const value = getValidValue(expr.rhs);
|
|
209
|
+
// istanbul ignore else
|
|
210
|
+
if (field && value.every((v) => fieldIsValid(field, "in", valueSource === "field" ? v : void 0))) return {
|
|
211
|
+
field,
|
|
212
|
+
operator: "in",
|
|
213
|
+
value,
|
|
214
|
+
...valueSource ? { valueSource } : {}
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
} else if (isJSONataComparison(expr)) {
|
|
218
|
+
let field = null;
|
|
219
|
+
let value = void 0;
|
|
220
|
+
let valueSource = void 0;
|
|
221
|
+
let flip = false;
|
|
222
|
+
const { lhs, rhs } = expr;
|
|
223
|
+
if (isJSONataIdentifier(lhs) && isJSONataValidValue(rhs)) {
|
|
224
|
+
field = getFieldFromPath(lhs);
|
|
225
|
+
value = getValidValue(rhs);
|
|
226
|
+
if (isJSONataIdentifier(rhs)) valueSource = "field";
|
|
227
|
+
} else if (isJSONataIdentifier(rhs) && isJSONataValidValue(lhs)) {
|
|
228
|
+
flip = true;
|
|
229
|
+
field = getFieldFromPath(rhs);
|
|
230
|
+
value = getValidValue(lhs);
|
|
231
|
+
}
|
|
232
|
+
let operator = normalizeOperator(expr.value, flip);
|
|
233
|
+
if (value === null && (operator === "=" || operator === "!=")) operator = operator === "=" ? "null" : "notNull";
|
|
234
|
+
if (field && fieldIsValid(field, operator, valueSource === "field" ? value : void 0) && value !== void 0) return valueSource ? {
|
|
235
|
+
field,
|
|
236
|
+
operator,
|
|
237
|
+
value,
|
|
238
|
+
valueSource
|
|
239
|
+
} : {
|
|
240
|
+
field,
|
|
241
|
+
operator,
|
|
242
|
+
value
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return null;
|
|
246
|
+
};
|
|
247
|
+
const prepare = options.generateIDs ? prepareRuleGroup : (g) => g;
|
|
248
|
+
let jsonataExpr;
|
|
249
|
+
try {
|
|
250
|
+
jsonataExpr = jsonata(jsonataInput);
|
|
251
|
+
} catch {
|
|
252
|
+
return prepare(emptyQuery);
|
|
253
|
+
}
|
|
254
|
+
const jsonataAST = jsonataExpr.ast();
|
|
255
|
+
const result = parseJSONataAST(jsonataAST);
|
|
256
|
+
if (result) {
|
|
257
|
+
if (isRuleGroup(result)) return prepare(result);
|
|
258
|
+
return prepare({
|
|
259
|
+
rules: [result],
|
|
260
|
+
...ic ? {} : { combinator: "and" }
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
return prepare(emptyQuery);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
//#endregion
|
|
267
|
+
export { parseJSONata };
|
|
268
|
+
//# sourceMappingURL=parseJSONata.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseJSONata.mjs","names":["negatedLikeOperators: Record<\n Extract<DefaultOperatorName, 'beginsWith' | 'contains' | 'endsWith'>,\n DefaultOperatorName\n>","returnArray: (DefaultCombinatorName | JSONataExprNode | ('and' | JSONataExprNode)[])[]","emptyQuery: DefaultRuleGroupTypeAny","rules","field: string","regex: string | RegExp","valueSource: ValueSource | undefined","value: any[]","field: string | null","value: any","jsonataExpr: jsonata.Expression"],"sources":["../src/utils/parseJSONata/utils.ts","../src/utils/parseJSONata/parseJSONata.ts"],"sourcesContent":["import type { DefaultCombinatorName, DefaultOperatorName } from '../../types';\nimport type {\n JSONataAnd,\n JSONataBinaryNode,\n JSONataBlock,\n JSONataBoolean,\n JSONataContains,\n JSONataEqual,\n JSONataExprNode,\n JSONataGreaterThan,\n JSONataGreaterThanOrEqual,\n JSONataIdentifier,\n JSONataIn,\n JSONataLessThan,\n JSONataLessThanOrEqual,\n JSONataList,\n JSONataName,\n JSONataNot,\n JSONataNotEqual,\n JSONataNull,\n JSONataNumber,\n JSONataOr,\n JSONataPath,\n JSONataRegex,\n JSONataString,\n JSONataToMillis,\n} from './types';\n\n// oxlint-disable-next-line typescript/no-explicit-any\ntype Any = any;\n\nexport const isJSONataExprNode = (expr: Any): expr is JSONataExprNode => {\n return expr && typeof expr === 'object' && typeof expr.type === 'string';\n};\nconst isJSONataBinaryNode = (expr: Any): expr is JSONataBinaryNode =>\n isJSONataExprNode(expr) && expr.type === 'binary';\n\n// Identifiers\nexport const isJSONataPath = (expr: Any): expr is JSONataPath =>\n isJSONataExprNode(expr) &&\n expr.type === 'path' &&\n Array.isArray(expr.steps) &&\n expr.steps.length > 0 &&\n isJSONataExprNode(expr.steps[0]);\nexport const isJSONataName = (expr: Any): expr is JSONataName =>\n isJSONataExprNode(expr) &&\n expr.type === 'name' &&\n typeof expr.value === 'string' &&\n expr.value.length > 0;\nexport const isJSONataIdentifier = (expr: Any): expr is JSONataIdentifier =>\n isJSONataPath(expr) && expr.steps.every(v => isJSONataName(v));\n\n// Groups\nexport const isJSONataBlock = (expr: Any): expr is JSONataBlock =>\n isJSONataExprNode(expr) &&\n expr.type === 'block' &&\n Array.isArray(expr.expressions) &&\n expr.expressions.length > 0 &&\n isJSONataExprNode(expr.expressions[0]);\n\n// Values\nexport const isJSONataString = (expr: Any): expr is JSONataString =>\n isJSONataExprNode(expr) && expr.type === 'string' && typeof expr.value === 'string';\nexport const isJSONataNumber = (expr: Any): expr is JSONataNumber =>\n isJSONataExprNode(expr) && expr.type === 'number' && typeof expr.value === 'number';\nexport const isJSONataBoolean = (expr: Any): expr is JSONataBoolean =>\n isJSONataExprNode(expr) && expr.type === 'value' && typeof expr.value === 'boolean';\nexport const isJSONataNull = (expr: Any): expr is JSONataNull =>\n isJSONataExprNode(expr) && expr.type === 'value' && expr.value === null;\nexport const isJSONataRegex = (expr: Any): expr is JSONataRegex =>\n isJSONataExprNode(expr) && expr.type === 'regex' && expr.value instanceof RegExp;\n\n// Combinators\nexport const isJSONataAnd = (expr: Any): expr is JSONataAnd =>\n isJSONataBinaryNode(expr) && expr.value === 'and';\nexport const isJSONataOr = (expr: Any): expr is JSONataOr =>\n isJSONataBinaryNode(expr) && expr.value === 'or';\n\n// Operators\nexport const isJSONataEqual = (expr: Any): expr is JSONataEqual =>\n isJSONataBinaryNode(expr) && expr.value === '=';\nexport const isJSONataNotEqual = (expr: Any): expr is JSONataNotEqual =>\n isJSONataBinaryNode(expr) && expr.value === '!=';\nexport const isJSONataGreaterThan = (expr: Any): expr is JSONataGreaterThan =>\n isJSONataBinaryNode(expr) && expr.value === '>';\nexport const isJSONataGreaterThanOrEqual = (expr: Any): expr is JSONataGreaterThanOrEqual =>\n isJSONataBinaryNode(expr) && expr.value === '>=';\nexport const isJSONataLessThan = (expr: Any): expr is JSONataLessThan =>\n isJSONataBinaryNode(expr) && expr.value === '<';\nexport const isJSONataLessThanOrEqual = (expr: Any): expr is JSONataLessThanOrEqual =>\n isJSONataBinaryNode(expr) && expr.value === '<=';\nexport const isJSONataIn = (expr: Any): expr is JSONataIn =>\n isJSONataBinaryNode(expr) &&\n expr.value === 'in' &&\n isJSONataPath(expr.lhs) &&\n isJSONataList(expr.rhs);\n\n// Functions\nexport const isJSONataNot = (expr: Any): expr is JSONataNot =>\n isJSONataExprNode(expr) &&\n expr.type === 'function' &&\n expr.value === '(' &&\n Array.isArray(expr.arguments) &&\n isJSONataExprNode(expr.arguments[0]) &&\n isJSONataExprNode(expr.procedure) &&\n expr.procedure.value === 'not' &&\n expr.procedure.type === 'variable';\nexport const isJSONataContains = (expr: Any): expr is JSONataContains =>\n isJSONataExprNode(expr) &&\n expr.type === 'function' &&\n expr.value === '(' &&\n Array.isArray(expr.arguments) &&\n expr.arguments.length >= 2 &&\n isJSONataExprNode(expr.arguments[0]) &&\n isJSONataExprNode(expr.procedure) &&\n expr.procedure.value === 'contains' &&\n expr.procedure.type === 'variable';\nexport const isJSONataToMillis = (expr: Any): expr is JSONataToMillis =>\n isJSONataExprNode(expr) &&\n expr.type === 'function' &&\n expr.value === '(' &&\n Array.isArray(expr.arguments) &&\n expr.arguments.length > 0 &&\n isJSONataString(expr.arguments[0]) &&\n isJSONataExprNode(expr.procedure) &&\n expr.procedure.value === 'toMillis' &&\n expr.procedure.type === 'variable';\n\n// Miscellaneous\nexport const isJSONataList = (expr: Any): expr is JSONataList =>\n isJSONataExprNode(expr) &&\n expr.type === 'unary' &&\n expr.value === '[' &&\n Array.isArray(expr.expressions);\nexport const isJSONataPrimitive = (expr: Any): boolean => {\n return (\n isJSONataString(expr) ||\n isJSONataNumber(expr) ||\n isJSONataBoolean(expr) ||\n isJSONataNull(expr) ||\n isJSONataToMillis(expr)\n );\n};\nexport const isJSONataPrimitiveList = (expr: Any): boolean =>\n isJSONataList(expr) && expr.expressions.every(v => isJSONataPrimitive(v));\nexport const isJSONataIdentifierList = (expr: Any): boolean =>\n isJSONataList(expr) && expr.expressions.every(v => isJSONataIdentifier(v));\nexport const isJSONataValidValue = (expr: Any): boolean =>\n isJSONataPrimitive(expr) ||\n isJSONataRegex(expr) ||\n isJSONataIdentifier(expr) ||\n isJSONataPrimitiveList(expr) ||\n isJSONataIdentifierList(expr) ||\n isJSONataToMillis(expr);\nexport const isJSONataComparison = (\n expr: Any\n): expr is\n | JSONataEqual\n | JSONataNotEqual\n | JSONataGreaterThan\n | JSONataGreaterThanOrEqual\n | JSONataLessThan\n | JSONataLessThanOrEqual =>\n isJSONataEqual(expr) ||\n isJSONataNotEqual(expr) ||\n isJSONataGreaterThan(expr) ||\n isJSONataGreaterThanOrEqual(expr) ||\n isJSONataLessThan(expr) ||\n isJSONataLessThanOrEqual(expr);\n\nexport const getValidValue = (expr: Any): Any => {\n if (isJSONataToMillis(expr)) {\n return getValidValue(expr.arguments[0]);\n } else if (isJSONataIdentifier(expr)) {\n return getFieldFromPath(expr);\n } else if (isJSONataPrimitiveList(expr)) {\n return expr.expressions.map((v: Any) => getValidValue(v));\n } else if (isJSONataIdentifierList(expr)) {\n return expr.expressions.map((v: Any) => getFieldFromPath(v));\n }\n return expr.value;\n};\n\nexport const getFieldFromPath = (path: JSONataPath): string =>\n isJSONataIdentifier(path)\n ? path.steps.map(s => s.value).join('.')\n : /* istanbul ignore next */ '';\n\nexport const normalizeOperator = (\n opType: DefaultOperatorName,\n flip?: boolean\n): DefaultOperatorName => {\n if (flip) {\n if (opType === '<') return '>';\n if (opType === '<=') return '>=';\n if (opType === '>') return '<';\n if (opType === '>=') return '<=';\n }\n return opType;\n};\n\nexport const negatedLikeOperators: Record<\n Extract<DefaultOperatorName, 'beginsWith' | 'contains' | 'endsWith'>,\n DefaultOperatorName\n> = {\n contains: 'doesNotContain',\n beginsWith: 'doesNotBeginWith',\n endsWith: 'doesNotEndWith',\n} satisfies Record<\n Extract<DefaultOperatorName, 'beginsWith' | 'contains' | 'endsWith'>,\n DefaultOperatorName\n>;\n\nexport const generateFlatAndOrList = (\n expr: JSONataExprNode\n): (DefaultCombinatorName | JSONataExprNode)[] => {\n // istanbul ignore else\n if (isJSONataAnd(expr) || isJSONataOr(expr)) {\n const { lhs, rhs, value: combinator } = expr;\n if (isJSONataAnd(lhs) || isJSONataOr(lhs)) {\n return [...generateFlatAndOrList(lhs), combinator, rhs];\n }\n return [lhs, combinator, rhs];\n }\n // istanbul ignore next\n return [];\n};\n\nexport const generateMixedAndOrList = (\n expr: JSONataAnd | JSONataOr\n): (JSONataExprNode | DefaultCombinatorName | (JSONataExprNode | 'and')[])[] => {\n const arr = generateFlatAndOrList(expr);\n const returnArray: (DefaultCombinatorName | JSONataExprNode | ('and' | JSONataExprNode)[])[] = [];\n let startIndex = 0;\n for (let i = 0; i < arr.length; i += 2) {\n if (arr[i + 1] === 'and') {\n startIndex = i;\n let j = 1;\n while (arr[startIndex + j] === 'and') {\n i += 2;\n j += 2;\n }\n const tempAndArray = arr.slice(startIndex, i + 1) as ('and' | JSONataExprNode)[];\n returnArray.push(tempAndArray);\n i -= 2;\n } else if (arr[i + 1] === 'or') {\n if (i === 0 || i === arr.length - 3) {\n if (i === 0 || arr[i - 1] === 'or') {\n returnArray.push(arr[i]);\n }\n returnArray.push(arr[i + 1]);\n if (i === arr.length - 3) {\n returnArray.push(arr[i + 2]);\n }\n } else {\n if (arr[i - 1] === 'and') {\n returnArray.push(arr[i + 1]);\n } else {\n returnArray.push(arr[i], arr[i + 1]);\n }\n }\n }\n }\n if (returnArray.length === 1 && Array.isArray(returnArray[0])) {\n // If length is 1, then the only element is an AND array so just return that\n return returnArray[0];\n }\n return returnArray;\n};\n","import jsonata from 'jsonata';\nimport type {\n DefaultCombinatorName,\n DefaultOperatorName,\n DefaultRuleGroupArray,\n DefaultRuleGroupICArray,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n Except,\n ValueSource,\n} from '../../types';\nimport type { ParserCommonOptions } from '../../types/import';\nimport { isRuleGroup } from '../isRuleGroup';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { prepareRuleGroup } from '../prepareQueryObjects';\nimport type { JSONataExprNode } from './types';\nimport {\n generateFlatAndOrList,\n generateMixedAndOrList,\n getFieldFromPath,\n getValidValue,\n isJSONataAnd,\n isJSONataBlock,\n isJSONataComparison,\n isJSONataContains,\n isJSONataIdentifier,\n isJSONataIdentifierList,\n isJSONataIn,\n isJSONataNot,\n isJSONataOr,\n isJSONataRegex,\n isJSONataString,\n isJSONataValidValue,\n negatedLikeOperators,\n normalizeOperator,\n} from './utils';\n\n/**\n * Options object for {@link parseJSONata}.\n *\n * Note: `listsAsArrays` is ignored by `parseJSONata`; lists are _always_ arrays.\n */\nexport interface ParseJSONataOptions extends ParserCommonOptions {}\n\n/**\n * Converts a JSONata string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJSONata(jsonataInput: string): DefaultRuleGroupType;\n/**\n * Converts a JSONata string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJSONata(\n jsonataInput: string,\n options: Except<ParseJSONataOptions, 'independentCombinators'> & {\n independentCombinators?: false;\n }\n): DefaultRuleGroupType;\n/**\n * Converts a JSONata string expression into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupTypeIC DefaultRuleGroupTypeIC}).\n */\nfunction parseJSONata(\n jsonataInput: string,\n options: Except<ParseJSONataOptions, 'independentCombinators'> & {\n independentCombinators: true;\n }\n): DefaultRuleGroupTypeIC;\nfunction parseJSONata(\n jsonataInput: string,\n options: ParseJSONataOptions = {}\n): DefaultRuleGroupTypeAny {\n const { fields, independentCombinators, listsAsArrays: _laa } = options;\n const ic = !!independentCombinators;\n const fieldsFlat = getFieldsArray(fields);\n\n const fieldIsValid = (\n fieldName: string,\n operator: DefaultOperatorName,\n subordinateFieldName?: string\n ) =>\n fieldIsValidUtil({\n fieldName,\n fieldsFlat,\n operator,\n subordinateFieldName,\n getValueSources: options?.getValueSources,\n });\n\n const emptyQuery: DefaultRuleGroupTypeAny = {\n rules: [],\n ...(ic ? {} : { combinator: 'and' }),\n };\n\n const parseJSONataAST = (\n expr: JSONataExprNode,\n processOpts: {\n groupOnlyIfNecessary?: boolean;\n forwardNegation?: boolean;\n } = {}\n ): DefaultRuleType | DefaultRuleGroupTypeAny | null => {\n const { forwardNegation: _forwardedNegation, groupOnlyIfNecessary: _g } = processOpts;\n if (isJSONataBlock(expr)) {\n if (\n isJSONataAnd(expr.expressions[0]) ||\n isJSONataOr(expr.expressions[0]) ||\n isJSONataBlock(expr.expressions[0])\n ) {\n return parseJSONataAST(expr.expressions[0]);\n }\n const blockOfExpr = parseJSONataAST(expr.expressions[0]);\n // istanbul ignore else\n if (blockOfExpr) {\n return ic\n ? ({ rules: [blockOfExpr] } as DefaultRuleGroupTypeIC)\n : ({\n combinator: 'and',\n rules: [blockOfExpr],\n } as DefaultRuleGroupType);\n }\n } else if (isJSONataAnd(expr) || isJSONataOr(expr)) {\n if (ic) {\n const andOrList = generateFlatAndOrList(expr);\n const rules = andOrList.map(v => {\n if (typeof v === 'string') {\n return v;\n }\n return parseJSONataAST(v);\n });\n // Bail out completely if any rules in the list were invalid\n // so as not to return an incorrect and/or sequence\n if (!rules.every(Boolean)) {\n return null;\n }\n\n // Reduce this group to a single between/notBetween rule if possible\n if (\n ((rs: unknown[]): rs is [DefaultRuleType, DefaultCombinatorName, DefaultRuleType] =>\n rs.length === 3 &&\n (rs[1] === 'and' || rs[1] === 'or') &&\n !isRuleGroup(rs[0]) &&\n !isRuleGroup(rs[2]))(rules) &&\n rules[0].field === rules[2].field &&\n (rules[0].valueSource ?? 'value') === (rules[2].valueSource ?? 'value') &&\n ((rules[1] === 'and' &&\n ((rules[0].operator === '>=' && rules[2].operator === '<=') ||\n (rules[0].operator === '<=' && rules[2].operator === '>='))) ||\n (rules[1] === 'or' &&\n ((rules[0].operator === '>' && rules[2].operator === '<') ||\n (rules[0].operator === '<' && rules[2].operator === '>'))))\n ) {\n return {\n field: rules[0].field,\n operator: rules[1] === 'and' ? 'between' : 'notBetween',\n value:\n (rules[1] === 'and' && rules[0].operator === '<=') ||\n (rules[1] === 'or' && rules[0].operator === '>')\n ? [rules[2].value, rules[0].value]\n : [rules[0].value, rules[2].value],\n ...(rules[0].valueSource ? { valueSource: rules[0].valueSource } : null),\n };\n }\n\n return {\n rules: rules as DefaultRuleGroupICArray,\n };\n }\n const andOrList = generateMixedAndOrList(expr);\n const combinator = andOrList[1] as DefaultCombinatorName;\n const filteredList = andOrList\n .filter(v => Array.isArray(v) || (!!v && typeof v !== 'string' && 'type' in v))\n .map(v =>\n Array.isArray(v) ? v.filter(vf => !!v && typeof vf !== 'string' && 'type' in vf) : v\n ) as (JSONataExprNode | JSONataExprNode[])[];\n const rules = filteredList\n .map((exp): DefaultRuleGroupType | DefaultRuleType | null => {\n if (Array.isArray(exp)) {\n return {\n combinator: 'and',\n rules: exp.map(e => parseJSONataAST(e)).filter(Boolean) as DefaultRuleGroupArray,\n };\n }\n return parseJSONataAST(exp) as DefaultRuleType | DefaultRuleGroupType | null;\n })\n .filter(Boolean) as DefaultRuleGroupArray;\n\n // Reduce this group to a single between/notBetween rule if possible\n if (\n ((rs: unknown[]): rs is [DefaultRuleType, DefaultRuleType] =>\n rs.length === 2 && !isRuleGroup(rs[0]) && !isRuleGroup(rs[1]))(rules) &&\n rules[0].field === rules[1].field &&\n (rules[0].valueSource ?? 'value') === (rules[1].valueSource ?? 'value') &&\n ((combinator === 'and' &&\n ((rules[0].operator === '>=' && rules[1].operator === '<=') ||\n (rules[0].operator === '<=' && rules[1].operator === '>='))) ||\n (combinator === 'or' &&\n ((rules[0].operator === '>' && rules[1].operator === '<') ||\n (rules[0].operator === '<' && rules[1].operator === '>'))))\n ) {\n return {\n field: rules[0].field,\n operator: combinator === 'and' ? 'between' : 'notBetween',\n value:\n (combinator === 'and' && rules[0].operator === '<=') ||\n (combinator === 'or' && rules[0].operator === '>')\n ? [rules[1].value, rules[0].value]\n : [rules[0].value, rules[1].value],\n ...(rules[0].valueSource ? { valueSource: rules[0].valueSource } : null),\n };\n }\n\n // istanbul ignore else\n if (rules.length > 0) {\n return { combinator, rules };\n }\n } else if (isJSONataNot(expr)) {\n const negatedExpr = parseJSONataAST(expr.arguments[0]);\n // istanbul ignore else\n if (negatedExpr) {\n if (\n !isRuleGroup(negatedExpr) &&\n (negatedExpr.operator === 'contains' ||\n negatedExpr.operator === 'beginsWith' ||\n negatedExpr.operator === 'endsWith')\n ) {\n return {\n ...negatedExpr,\n operator: negatedLikeOperators[negatedExpr.operator],\n };\n }\n return ic\n ? ({ rules: [negatedExpr], not: true } as DefaultRuleGroupTypeIC)\n : ({\n combinator: 'and',\n rules: [negatedExpr],\n not: true,\n } as DefaultRuleGroupType);\n }\n } else if (isJSONataContains(expr)) {\n const [arg1, arg2] = expr.arguments;\n let field: string = '';\n let regex: string | RegExp = '';\n let valueSource: ValueSource | undefined = undefined;\n // istanbul ignore else\n if (isJSONataIdentifier(arg1)) {\n field = getFieldFromPath(arg1);\n if (isJSONataIdentifier(arg2)) {\n regex = getFieldFromPath(arg2);\n valueSource = 'field';\n } else {\n // istanbul ignore else\n if (isJSONataString(arg2) || isJSONataRegex(arg2)) {\n regex = getValidValue(arg2);\n }\n }\n }\n\n // istanbul ignore else\n if (\n valueSource === 'field'\n ? fieldIsValid(field, 'contains', regex as string)\n : fieldIsValid(field, 'contains')\n ) {\n return {\n field,\n operator: 'contains',\n value: regex,\n ...(valueSource ? { valueSource } : {}),\n };\n }\n } else if (isJSONataIn(expr)) {\n const field = getFieldFromPath(expr.lhs);\n let valueSource: ValueSource | undefined = undefined;\n if (isJSONataIdentifierList(expr.rhs)) {\n valueSource = 'field';\n }\n if (isJSONataValidValue(expr.rhs)) {\n // oxlint-disable-next-line typescript/no-explicit-any\n const value: any[] = getValidValue(expr.rhs);\n // istanbul ignore else\n if (\n field &&\n value.every(v => fieldIsValid(field, 'in', valueSource === 'field' ? v : undefined))\n ) {\n return { field, operator: 'in', value, ...(valueSource ? { valueSource } : {}) };\n }\n }\n } else if (isJSONataComparison(expr)) {\n let field: string | null = null;\n // oxlint-disable-next-line typescript/no-explicit-any\n let value: any = undefined;\n let valueSource: ValueSource | undefined = undefined;\n let flip = false;\n const { lhs, rhs } = expr;\n\n if (isJSONataIdentifier(lhs) && isJSONataValidValue(rhs)) {\n field = getFieldFromPath(lhs);\n value = getValidValue(rhs);\n if (isJSONataIdentifier(rhs)) {\n valueSource = 'field';\n }\n } else {\n // istanbul ignore else\n if (isJSONataIdentifier(rhs) && isJSONataValidValue(lhs)) {\n flip = true;\n field = getFieldFromPath(rhs);\n value = getValidValue(lhs);\n }\n }\n let operator = normalizeOperator(expr.value, flip);\n if (value === null && (operator === '=' || operator === '!=')) {\n operator = operator === '=' ? 'null' : 'notNull';\n }\n if (\n field &&\n fieldIsValid(field, operator, valueSource === 'field' ? value : undefined) &&\n value !== undefined\n ) {\n return valueSource ? { field, operator, value, valueSource } : { field, operator, value };\n }\n }\n return null;\n };\n\n const prepare = options.generateIDs ? prepareRuleGroup : <T>(g: T) => g;\n\n let jsonataExpr: jsonata.Expression;\n try {\n jsonataExpr = jsonata(jsonataInput);\n } catch {\n return prepare(emptyQuery);\n }\n const jsonataAST = jsonataExpr.ast() as JSONataExprNode;\n\n const result = parseJSONataAST(jsonataAST);\n if (result) {\n if (isRuleGroup(result)) {\n return prepare(result);\n }\n return prepare({ rules: [result], ...(ic ? {} : { combinator: 'and' }) });\n }\n\n return prepare(emptyQuery);\n}\n\nexport { parseJSONata };\n"],"mappings":"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"}
|