@react-querybuilder/core 8.22.5 → 8.23.0

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.
Files changed (120) hide show
  1. package/derivations/package.json +4 -0
  2. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +2078 -1665
  3. package/dist/cjs/react-querybuilder_core.cjs.development.js +1293 -422
  4. package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
  5. package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +2078 -1665
  6. package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
  7. package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
  8. package/dist/{convertQuery-Cw76XFIn.js → convertQuery-BLT0GIhM.js} +17 -8
  9. package/dist/{convertQuery-Cw76XFIn.js.map → convertQuery-BLT0GIhM.js.map} +1 -1
  10. package/dist/{convertQuery-D_4J7E-Z.mjs → convertQuery-DaXv3h7S.mjs} +6 -3
  11. package/dist/{convertQuery-D_4J7E-Z.mjs.map → convertQuery-DaXv3h7S.mjs.map} +1 -1
  12. package/dist/derivations.d.mts +2902 -0
  13. package/dist/derivations.d.ts +2902 -0
  14. package/dist/derivations.js +2845 -0
  15. package/dist/derivations.js.map +1 -0
  16. package/dist/derivations.mjs +2678 -0
  17. package/dist/derivations.mjs.map +1 -0
  18. package/dist/formatQuery.d.mts +2 -895
  19. package/dist/formatQuery.d.ts +2 -895
  20. package/dist/formatQuery.js +120 -140
  21. package/dist/formatQuery.js.map +1 -1
  22. package/dist/formatQuery.mjs +8 -28
  23. package/dist/formatQuery.mjs.map +1 -1
  24. package/dist/{import-DVWI7Fdh.d.mts → import-BdKPtLzo.d.mts} +2 -2
  25. package/dist/{import-6ExjhifL.d.ts → import-BfZTwhp2.d.ts} +2 -2
  26. package/dist/{index-CX9mehdL.d.mts → index-DOIE2pwx.d.mts} +274 -3
  27. package/dist/{index-CX9mehdL.d.ts → index-DOIE2pwx.d.ts} +274 -3
  28. package/dist/index-OF2Q1gTp.d.mts +895 -0
  29. package/dist/index-XueTy_XQ.d.ts +895 -0
  30. package/dist/isRuleOrGroupValid-CIMZNkt4.mjs +27 -0
  31. package/dist/isRuleOrGroupValid-CIMZNkt4.mjs.map +1 -0
  32. package/dist/isRuleOrGroupValid-CtUf4_4x.js +38 -0
  33. package/dist/isRuleOrGroupValid-CtUf4_4x.js.map +1 -0
  34. package/dist/{isRuleGroup-CqLThsbu.mjs → objectUtils-DDZ-KhV5.mjs} +25 -2
  35. package/dist/objectUtils-DDZ-KhV5.mjs.map +1 -0
  36. package/dist/{isRuleGroup-0JNiQgLg.js → objectUtils-DfnEmDSV.js} +48 -1
  37. package/dist/objectUtils-DfnEmDSV.js.map +1 -0
  38. package/dist/parseCEL.d.mts +2 -2
  39. package/dist/parseCEL.d.ts +2 -2
  40. package/dist/parseCEL.js +19 -16
  41. package/dist/parseCEL.js.map +1 -1
  42. package/dist/parseCEL.mjs +12 -9
  43. package/dist/parseCEL.mjs.map +1 -1
  44. package/dist/parseCypher.d.mts +1 -1
  45. package/dist/parseCypher.d.ts +1 -1
  46. package/dist/parseGremlin.d.mts +1 -1
  47. package/dist/parseGremlin.d.ts +1 -1
  48. package/dist/parseJSONata.d.mts +2 -2
  49. package/dist/parseJSONata.d.ts +2 -2
  50. package/dist/parseJSONata.js +17 -14
  51. package/dist/parseJSONata.js.map +1 -1
  52. package/dist/parseJSONata.mjs +11 -8
  53. package/dist/parseJSONata.mjs.map +1 -1
  54. package/dist/parseJsonLogic.d.mts +2 -2
  55. package/dist/parseJsonLogic.d.ts +2 -2
  56. package/dist/parseJsonLogic.js +38 -38
  57. package/dist/parseJsonLogic.js.map +1 -1
  58. package/dist/parseJsonLogic.mjs +5 -5
  59. package/dist/parseMongoDB.d.mts +2 -2
  60. package/dist/parseMongoDB.d.ts +2 -2
  61. package/dist/parseMongoDB.js +50 -47
  62. package/dist/parseMongoDB.js.map +1 -1
  63. package/dist/parseMongoDB.mjs +35 -32
  64. package/dist/parseMongoDB.mjs.map +1 -1
  65. package/dist/parseSPARQL.d.mts +1 -1
  66. package/dist/parseSPARQL.d.ts +1 -1
  67. package/dist/parseSQL.d.mts +2 -2
  68. package/dist/parseSQL.d.ts +2 -2
  69. package/dist/parseSQL.js +27 -23
  70. package/dist/parseSQL.js.map +1 -1
  71. package/dist/parseSQL.mjs +21 -17
  72. package/dist/parseSQL.mjs.map +1 -1
  73. package/dist/parseSpEL.d.mts +2 -2
  74. package/dist/parseSpEL.d.ts +2 -2
  75. package/dist/parseSpEL.js +16 -13
  76. package/dist/parseSpEL.js.map +1 -1
  77. package/dist/parseSpEL.mjs +12 -9
  78. package/dist/parseSpEL.mjs.map +1 -1
  79. package/dist/parserUtils-BKPstAaO.mjs +30 -0
  80. package/dist/parserUtils-BKPstAaO.mjs.map +1 -0
  81. package/dist/parserUtils-DbBXyAht.js +41 -0
  82. package/dist/parserUtils-DbBXyAht.js.map +1 -0
  83. package/dist/{prepareQueryObjects-BnGL91Tt.js → prepareQueryObjects-Dj9cTl9D.js} +90 -63
  84. package/dist/prepareQueryObjects-Dj9cTl9D.js.map +1 -0
  85. package/dist/{prepareQueryObjects-ChINDIap.mjs → prepareQueryObjects-Dmyf3Wi_.mjs} +56 -59
  86. package/dist/prepareQueryObjects-Dmyf3Wi_.mjs.map +1 -0
  87. package/dist/react-querybuilder_core.d.mts +2078 -1665
  88. package/dist/react-querybuilder_core.legacy-esm.d.ts +2078 -1665
  89. package/dist/react-querybuilder_core.legacy-esm.js +1445 -635
  90. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  91. package/dist/react-querybuilder_core.mjs +1288 -424
  92. package/dist/react-querybuilder_core.mjs.map +1 -1
  93. package/dist/react-querybuilder_core.production.d.mts +2078 -1665
  94. package/dist/react-querybuilder_core.production.mjs +1 -1
  95. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  96. package/dist/transformQuery-B7d9AWUf.d.mts +116 -0
  97. package/dist/transformQuery-BXDiUBGB.d.ts +116 -0
  98. package/dist/transformQuery.d.mts +2 -116
  99. package/dist/transformQuery.d.ts +2 -116
  100. package/dist/transformQuery.js +3 -4
  101. package/dist/transformQuery.js.map +1 -1
  102. package/dist/transformQuery.mjs +1 -2
  103. package/dist/transformQuery.mjs.map +1 -1
  104. package/dist/utils-CP5Jqy1P.mjs +1294 -0
  105. package/dist/utils-CP5Jqy1P.mjs.map +1 -0
  106. package/dist/utils-e-7KHkjV.js +1779 -0
  107. package/dist/utils-e-7KHkjV.js.map +1 -0
  108. package/package.json +33 -22
  109. package/dist/isRuleGroup-0JNiQgLg.js.map +0 -1
  110. package/dist/isRuleGroup-CqLThsbu.mjs.map +0 -1
  111. package/dist/objectUtils-Cr02aGxb.js +0 -27
  112. package/dist/objectUtils-Cr02aGxb.js.map +0 -1
  113. package/dist/objectUtils-DBlmJgBf.mjs +0 -16
  114. package/dist/objectUtils-DBlmJgBf.mjs.map +0 -1
  115. package/dist/prepareQueryObjects-BnGL91Tt.js.map +0 -1
  116. package/dist/prepareQueryObjects-ChINDIap.mjs.map +0 -1
  117. package/dist/utils-4k-j5FBa.mjs +0 -537
  118. package/dist/utils-4k-j5FBa.mjs.map +0 -1
  119. package/dist/utils-C79dxwZb.js +0 -752
  120. package/dist/utils-C79dxwZb.js.map +0 -1
@@ -21,8 +21,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  enumerable: true
22
22
  }) : target, mod));
23
23
  //#endregion
24
- const require_isRuleGroup = require("./isRuleGroup-0JNiQgLg.js");
25
- const require_prepareQueryObjects = require("./prepareQueryObjects-BnGL91Tt.js");
24
+ const require_objectUtils = require("./objectUtils-DfnEmDSV.js");
25
+ const require_prepareQueryObjects = require("./prepareQueryObjects-Dj9cTl9D.js");
26
+ const require_parserUtils = require("./parserUtils-DbBXyAht.js");
26
27
  let jsonata = require("jsonata");
27
28
  jsonata = __toESM(jsonata);
28
29
  //#region src/utils/parseJSONata/utils.ts
@@ -132,12 +133,14 @@ const generateMixedAndOrList = (expr) => {
132
133
  const tempAndArray = arr.slice(startIndex, i + 1);
133
134
  returnArray.push(tempAndArray);
134
135
  i -= 2;
135
- } else if (arr[i + 1] === "or") if (i === 0 || i === arr.length - 3) {
136
- if (i === 0 || arr[i - 1] === "or") returnArray.push(arr[i]);
137
- returnArray.push(arr[i + 1]);
138
- if (i === arr.length - 3) returnArray.push(arr[i + 2]);
139
- } else if (arr[i - 1] === "and") returnArray.push(arr[i + 1]);
140
- else returnArray.push(arr[i], arr[i + 1]);
136
+ } else if (arr[i + 1] === "or") {
137
+ if (i === 0 || i === arr.length - 3) {
138
+ if (i === 0 || arr[i - 1] === "or") returnArray.push(arr[i]);
139
+ returnArray.push(arr[i + 1]);
140
+ if (i === arr.length - 3) returnArray.push(arr[i + 2]);
141
+ } else if (arr[i - 1] === "and") returnArray.push(arr[i + 1]);
142
+ else returnArray.push(arr[i], arr[i + 1]);
143
+ }
141
144
  if (returnArray.length === 1 && Array.isArray(returnArray[0])) return returnArray[0];
142
145
  return returnArray;
143
146
  };
@@ -146,8 +149,8 @@ const generateMixedAndOrList = (expr) => {
146
149
  function parseJSONata(jsonataInput, options = {}) {
147
150
  const { fields, independentCombinators, listsAsArrays: _laa, getExpression } = options;
148
151
  const ic = !!independentCombinators;
149
- const fieldsFlat = require_prepareQueryObjects.getFieldsArray(fields);
150
- const fieldIsValid = (fieldName, operator, subordinateFieldName) => require_prepareQueryObjects.fieldIsValidUtil({
152
+ const fieldsFlat = require_parserUtils.getFieldsArray(fields);
153
+ const fieldIsValid = (fieldName, operator, subordinateFieldName) => require_parserUtils.fieldIsValidUtil({
151
154
  fieldName,
152
155
  fieldsFlat,
153
156
  operator,
@@ -176,7 +179,7 @@ function parseJSONata(jsonataInput, options = {}) {
176
179
  return parseJSONataAST(v);
177
180
  });
178
181
  if (!rules.every(Boolean)) return null;
179
- if (((rs) => rs.length === 3 && (rs[1] === "and" || rs[1] === "or") && !require_isRuleGroup.isRuleGroup(rs[0]) && !require_isRuleGroup.isRuleGroup(rs[2]))(rules) && rules[0].field === rules[2].field && (rules[0].valueSource ?? "value") === (rules[2].valueSource ?? "value") && (rules[1] === "and" && (rules[0].operator === ">=" && rules[2].operator === "<=" || rules[0].operator === "<=" && rules[2].operator === ">=") || rules[1] === "or" && (rules[0].operator === ">" && rules[2].operator === "<" || rules[0].operator === "<" && rules[2].operator === ">"))) return {
182
+ if (((rs) => rs.length === 3 && (rs[1] === "and" || rs[1] === "or") && !require_objectUtils.isRuleGroup(rs[0]) && !require_objectUtils.isRuleGroup(rs[2]))(rules) && rules[0].field === rules[2].field && (rules[0].valueSource ?? "value") === (rules[2].valueSource ?? "value") && (rules[1] === "and" && (rules[0].operator === ">=" && rules[2].operator === "<=" || rules[0].operator === "<=" && rules[2].operator === ">=") || rules[1] === "or" && (rules[0].operator === ">" && rules[2].operator === "<" || rules[0].operator === "<" && rules[2].operator === ">"))) return {
180
183
  field: rules[0].field,
181
184
  operator: rules[1] === "and" ? "between" : "notBetween",
182
185
  value: rules[1] === "and" && rules[0].operator === "<=" || rules[1] === "or" && rules[0].operator === ">" ? [rules[2].value, rules[0].value] : [rules[0].value, rules[2].value],
@@ -193,7 +196,7 @@ function parseJSONata(jsonataInput, options = {}) {
193
196
  };
194
197
  return parseJSONataAST(exp);
195
198
  }).filter(Boolean);
196
- if (((rs) => rs.length === 2 && !require_isRuleGroup.isRuleGroup(rs[0]) && !require_isRuleGroup.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 {
199
+ if (((rs) => rs.length === 2 && !require_objectUtils.isRuleGroup(rs[0]) && !require_objectUtils.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 {
197
200
  field: rules[0].field,
198
201
  operator: combinator === "and" ? "between" : "notBetween",
199
202
  value: combinator === "and" && rules[0].operator === "<=" || combinator === "or" && rules[0].operator === ">" ? [rules[1].value, rules[0].value] : [rules[0].value, rules[1].value],
@@ -208,7 +211,7 @@ function parseJSONata(jsonataInput, options = {}) {
208
211
  const negatedExpr = parseJSONataAST(expr.arguments[0]);
209
212
  // v8 ignore else
210
213
  if (negatedExpr) {
211
- if (!require_isRuleGroup.isRuleGroup(negatedExpr) && (negatedExpr.operator === "contains" || negatedExpr.operator === "beginsWith" || negatedExpr.operator === "endsWith")) return {
214
+ if (!require_objectUtils.isRuleGroup(negatedExpr) && (negatedExpr.operator === "contains" || negatedExpr.operator === "beginsWith" || negatedExpr.operator === "endsWith")) return {
212
215
  ...negatedExpr,
213
216
  operator: negatedLikeOperators[negatedExpr.operator]
214
217
  };
@@ -350,7 +353,7 @@ function parseJSONata(jsonataInput, options = {}) {
350
353
  }
351
354
  const result = parseJSONataAST(jsonataExpr.ast());
352
355
  if (result) {
353
- if (require_isRuleGroup.isRuleGroup(result)) return prepare(result);
356
+ if (require_objectUtils.isRuleGroup(result)) return prepare(result);
354
357
  return prepare({
355
358
  rules: [result],
356
359
  ...ic ? {} : { combinator: "and" }
@@ -1 +1 @@
1
- {"version":3,"file":"parseJSONata.js","names":["getFieldsArray","fieldIsValidUtil","isRuleGroup","prepareRuleGroup"],"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\n// Arithmetic infix operators eligible as expression operands\nconst jsonataArithmeticOperators = new Set(['+', '-', '*', '/', '%']);\n\n/**\n * A JSONata comparison operand that is a candidate expression subtree: an arithmetic infix node\n * (`+ - * / %`) or a function-call node (excluding the `not`/`contains` predicates handled\n * elsewhere). The expr-supplied `getExpression` handler decides whether it maps to a known\n * function.\n */\nexport const isJSONataExpressionOperand = (expr: Any): expr is JSONataExprNode => {\n if (!isJSONataExprNode(expr)) return false;\n // Unwrap parenthesized single-expression blocks (e.g. `(cost * 2)`)\n if (isJSONataBlock(expr) && expr.expressions.length === 1)\n return isJSONataExpressionOperand(expr.expressions[0]);\n if (isJSONataBinaryNode(expr) && jsonataArithmeticOperators.has(expr.value)) return true;\n return (\n expr.type === 'function' &&\n expr.value === '(' &&\n isJSONataExprNode(expr.procedure) &&\n expr.procedure.type === 'variable' &&\n typeof expr.procedure.value === 'string' &&\n expr.procedure.value !== 'not' &&\n expr.procedure.value !== 'contains'\n );\n};\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 : /* v8 ignore next -- @preserve */ '';\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 // v8 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 // v8 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 { Except } from 'type-fest';\nimport type {\n DefaultCombinatorName,\n DefaultOperatorName,\n DefaultRuleGroupArray,\n DefaultRuleGroupICArray,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n ExpressionNode,\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 {\n JSONataExprNode,\n JSONataExpressionOperand,\n ParseJSONataExpressionContext,\n} from './types';\nimport {\n generateFlatAndOrList,\n generateMixedAndOrList,\n getFieldFromPath,\n getValidValue,\n isJSONataAnd,\n isJSONataBlock,\n isJSONataComparison,\n isJSONataContains,\n isJSONataExpressionOperand,\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 * Handler that converts a JSONata arithmetic/function operand subtree into an\n * {@link ExpressionNode}. Return `null` to reject (the rule is dropped). Supplied by\n * `@react-querybuilder/expr` (`expressionParserJSONata`). When omitted, expression\n * operands are ignored (rule dropped).\n */\n getExpression?: (\n node: JSONataExpressionOperand,\n ctx: ParseJSONataExpressionContext\n ) => ExpressionNode | null;\n}\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, getExpression } = 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 exprCtx: ParseJSONataExpressionContext = {\n fieldExists: fieldName => fieldsFlat.length === 0 || fieldsFlat.some(f => f.name === fieldName),\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 // v8 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 // v8 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 // v8 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 // v8 ignore else\n if (isJSONataIdentifier(arg1)) {\n field = getFieldFromPath(arg1);\n if (isJSONataIdentifier(arg2)) {\n regex = getFieldFromPath(arg2);\n valueSource = 'field';\n } else {\n // v8 ignore else\n if (isJSONataString(arg2) || isJSONataRegex(arg2)) {\n regex = getValidValue(arg2);\n }\n }\n }\n\n // v8 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 // v8 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 // Arithmetic/function expression operands (from `@react-querybuilder/expr`)\n if (getExpression) {\n const lhsIsExpr = isJSONataExpressionOperand(lhs);\n const rhsIsExpr = isJSONataExpressionOperand(rhs);\n if (lhsIsExpr && rhsIsExpr) {\n // expression <op> expression → both sides on lhs/value\n const l = getExpression(lhs, exprCtx);\n const r = getExpression(rhs, exprCtx);\n if (l && r) {\n return {\n field: '',\n operator: normalizeOperator(expr.value),\n lhs: l,\n value: r,\n valueSource: 'expression',\n };\n }\n return null;\n } else if (isJSONataIdentifier(lhs) && rhsIsExpr) {\n // field <op> expression → rhs expression\n const node = getExpression(rhs, exprCtx);\n const f = getFieldFromPath(lhs);\n const op = normalizeOperator(expr.value);\n if (node && fieldIsValid(f, op)) {\n return { field: f, operator: op, value: node, valueSource: 'expression' };\n }\n return null;\n } else if (lhsIsExpr && isJSONataIdentifier(rhs)) {\n // expression <op> field → flip to field <op> expression\n const node = getExpression(lhs, exprCtx);\n const f = getFieldFromPath(rhs);\n const op = normalizeOperator(expr.value, true);\n if (node && fieldIsValid(f, op)) {\n return { field: f, operator: op, value: node, valueSource: 'expression' };\n }\n return null;\n } else if (lhsIsExpr && isJSONataValidValue(rhs)) {\n // expression <op> literal → lhs = expression, literal value\n const l = getExpression(lhs, exprCtx);\n if (l) {\n return {\n field: '',\n operator: normalizeOperator(expr.value),\n lhs: l,\n value: getValidValue(rhs),\n };\n }\n return null;\n } else if (isJSONataValidValue(lhs) && rhsIsExpr) {\n // literal <op> expression → lhs = expression, flip operator\n const l = getExpression(rhs, exprCtx);\n if (l) {\n return {\n field: '',\n operator: normalizeOperator(expr.value, true),\n lhs: l,\n value: getValidValue(lhs),\n };\n }\n return null;\n }\n }\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 // v8 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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"}
1
+ {"version":3,"file":"parseJSONata.js","names":["getFieldsArray","fieldIsValidUtil","isRuleGroup","prepareRuleGroup"],"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\n// Arithmetic infix operators eligible as expression operands\nconst jsonataArithmeticOperators = new Set(['+', '-', '*', '/', '%']);\n\n/**\n * A JSONata comparison operand that is a candidate expression subtree: an arithmetic infix node\n * (`+ - * / %`) or a function-call node (excluding the `not`/`contains` predicates handled\n * elsewhere). The expr-supplied `getExpression` handler decides whether it maps to a known\n * function.\n */\nexport const isJSONataExpressionOperand = (expr: Any): expr is JSONataExprNode => {\n if (!isJSONataExprNode(expr)) return false;\n // Unwrap parenthesized single-expression blocks (e.g. `(cost * 2)`)\n if (isJSONataBlock(expr) && expr.expressions.length === 1)\n return isJSONataExpressionOperand(expr.expressions[0]);\n if (isJSONataBinaryNode(expr) && jsonataArithmeticOperators.has(expr.value)) return true;\n return (\n expr.type === 'function' &&\n expr.value === '(' &&\n isJSONataExprNode(expr.procedure) &&\n expr.procedure.type === 'variable' &&\n typeof expr.procedure.value === 'string' &&\n expr.procedure.value !== 'not' &&\n expr.procedure.value !== 'contains'\n );\n};\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 : /* v8 ignore next -- @preserve */ '';\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 // v8 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 // v8 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 { Except } from 'type-fest';\nimport type {\n DefaultCombinatorName,\n DefaultOperatorName,\n DefaultRuleGroupArray,\n DefaultRuleGroupICArray,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n ExpressionNode,\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 {\n JSONataExprNode,\n JSONataExpressionOperand,\n ParseJSONataExpressionContext,\n} from './types';\nimport {\n generateFlatAndOrList,\n generateMixedAndOrList,\n getFieldFromPath,\n getValidValue,\n isJSONataAnd,\n isJSONataBlock,\n isJSONataComparison,\n isJSONataContains,\n isJSONataExpressionOperand,\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 * Handler that converts a JSONata arithmetic/function operand subtree into an\n * {@link ExpressionNode}. Return `null` to reject (the rule is dropped). Supplied by\n * `@react-querybuilder/expr` (`expressionParserJSONata`). When omitted, expression\n * operands are ignored (rule dropped).\n */\n getExpression?: (\n node: JSONataExpressionOperand,\n ctx: ParseJSONataExpressionContext\n ) => ExpressionNode | null;\n}\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, getExpression } = 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 exprCtx: ParseJSONataExpressionContext = {\n fieldExists: fieldName => fieldsFlat.length === 0 || fieldsFlat.some(f => f.name === fieldName),\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 // v8 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 // v8 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 // v8 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 // v8 ignore else\n if (isJSONataIdentifier(arg1)) {\n field = getFieldFromPath(arg1);\n if (isJSONataIdentifier(arg2)) {\n regex = getFieldFromPath(arg2);\n valueSource = 'field';\n } else {\n // v8 ignore else\n if (isJSONataString(arg2) || isJSONataRegex(arg2)) {\n regex = getValidValue(arg2);\n }\n }\n }\n\n // v8 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 // v8 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 // Arithmetic/function expression operands (from `@react-querybuilder/expr`)\n if (getExpression) {\n const lhsIsExpr = isJSONataExpressionOperand(lhs);\n const rhsIsExpr = isJSONataExpressionOperand(rhs);\n if (lhsIsExpr && rhsIsExpr) {\n // expression <op> expression → both sides on lhs/value\n const l = getExpression(lhs, exprCtx);\n const r = getExpression(rhs, exprCtx);\n if (l && r) {\n return {\n field: '',\n operator: normalizeOperator(expr.value),\n lhs: l,\n value: r,\n valueSource: 'expression',\n };\n }\n return null;\n } else if (isJSONataIdentifier(lhs) && rhsIsExpr) {\n // field <op> expression → rhs expression\n const node = getExpression(rhs, exprCtx);\n const f = getFieldFromPath(lhs);\n const op = normalizeOperator(expr.value);\n if (node && fieldIsValid(f, op)) {\n return { field: f, operator: op, value: node, valueSource: 'expression' };\n }\n return null;\n } else if (lhsIsExpr && isJSONataIdentifier(rhs)) {\n // expression <op> field → flip to field <op> expression\n const node = getExpression(lhs, exprCtx);\n const f = getFieldFromPath(rhs);\n const op = normalizeOperator(expr.value, true);\n if (node && fieldIsValid(f, op)) {\n return { field: f, operator: op, value: node, valueSource: 'expression' };\n }\n return null;\n } else if (lhsIsExpr && isJSONataValidValue(rhs)) {\n // expression <op> literal → lhs = expression, literal value\n const l = getExpression(lhs, exprCtx);\n if (l) {\n return {\n field: '',\n operator: normalizeOperator(expr.value),\n lhs: l,\n value: getValidValue(rhs),\n };\n }\n return null;\n } else if (isJSONataValidValue(lhs) && rhsIsExpr) {\n // literal <op> expression → lhs = expression, flip operator\n const l = getExpression(rhs, exprCtx);\n if (l) {\n return {\n field: '',\n operator: normalizeOperator(expr.value, true),\n lhs: l,\n value: getValidValue(lhs),\n };\n }\n return null;\n }\n }\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 // v8 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,qBAAqB,SAAuC;CACvE,OAAO,QAAQ,OAAO,SAAS,YAAY,OAAO,KAAK,SAAS;AAClE;AACA,MAAM,uBAAuB,SAC3B,kBAAkB,IAAI,KAAK,KAAK,SAAS;AAG3C,MAAa,iBAAiB,SAC5B,kBAAkB,IAAI,KACtB,KAAK,SAAS,UACd,MAAM,QAAQ,KAAK,KAAK,KACxB,KAAK,MAAM,SAAS,KACpB,kBAAkB,KAAK,MAAM,EAAE;AACjC,MAAa,iBAAiB,SAC5B,kBAAkB,IAAI,KACtB,KAAK,SAAS,UACd,OAAO,KAAK,UAAU,YACtB,KAAK,MAAM,SAAS;AACtB,MAAa,uBAAuB,SAClC,cAAc,IAAI,KAAK,KAAK,MAAM,OAAM,MAAK,cAAc,CAAC,CAAC;AAG/D,MAAa,kBAAkB,SAC7B,kBAAkB,IAAI,KACtB,KAAK,SAAS,WACd,MAAM,QAAQ,KAAK,WAAW,KAC9B,KAAK,YAAY,SAAS,KAC1B,kBAAkB,KAAK,YAAY,EAAE;AAGvC,MAAa,mBAAmB,SAC9B,kBAAkB,IAAI,KAAK,KAAK,SAAS,YAAY,OAAO,KAAK,UAAU;AAC7E,MAAa,mBAAmB,SAC9B,kBAAkB,IAAI,KAAK,KAAK,SAAS,YAAY,OAAO,KAAK,UAAU;AAC7E,MAAa,oBAAoB,SAC/B,kBAAkB,IAAI,KAAK,KAAK,SAAS,WAAW,OAAO,KAAK,UAAU;AAC5E,MAAa,iBAAiB,SAC5B,kBAAkB,IAAI,KAAK,KAAK,SAAS,WAAW,KAAK,UAAU;AACrE,MAAa,kBAAkB,SAC7B,kBAAkB,IAAI,KAAK,KAAK,SAAS,WAAW,KAAK,iBAAiB;AAG5E,MAAa,gBAAgB,SAC3B,oBAAoB,IAAI,KAAK,KAAK,UAAU;AAC9C,MAAa,eAAe,SAC1B,oBAAoB,IAAI,KAAK,KAAK,UAAU;AAG9C,MAAa,kBAAkB,SAC7B,oBAAoB,IAAI,KAAK,KAAK,UAAU;AAC9C,MAAa,qBAAqB,SAChC,oBAAoB,IAAI,KAAK,KAAK,UAAU;AAC9C,MAAa,wBAAwB,SACnC,oBAAoB,IAAI,KAAK,KAAK,UAAU;AAC9C,MAAa,+BAA+B,SAC1C,oBAAoB,IAAI,KAAK,KAAK,UAAU;AAC9C,MAAa,qBAAqB,SAChC,oBAAoB,IAAI,KAAK,KAAK,UAAU;AAC9C,MAAa,4BAA4B,SACvC,oBAAoB,IAAI,KAAK,KAAK,UAAU;AAC9C,MAAa,eAAe,SAC1B,oBAAoB,IAAI,KACxB,KAAK,UAAU,QACf,cAAc,KAAK,GAAG,KACtB,cAAc,KAAK,GAAG;AAGxB,MAAa,gBAAgB,SAC3B,kBAAkB,IAAI,KACtB,KAAK,SAAS,cACd,KAAK,UAAU,OACf,MAAM,QAAQ,KAAK,SAAS,KAC5B,kBAAkB,KAAK,UAAU,EAAE,KACnC,kBAAkB,KAAK,SAAS,KAChC,KAAK,UAAU,UAAU,SACzB,KAAK,UAAU,SAAS;AAC1B,MAAa,qBAAqB,SAChC,kBAAkB,IAAI,KACtB,KAAK,SAAS,cACd,KAAK,UAAU,OACf,MAAM,QAAQ,KAAK,SAAS,KAC5B,KAAK,UAAU,UAAU,KACzB,kBAAkB,KAAK,UAAU,EAAE,KACnC,kBAAkB,KAAK,SAAS,KAChC,KAAK,UAAU,UAAU,cACzB,KAAK,UAAU,SAAS;AAC1B,MAAa,qBAAqB,SAChC,kBAAkB,IAAI,KACtB,KAAK,SAAS,cACd,KAAK,UAAU,OACf,MAAM,QAAQ,KAAK,SAAS,KAC5B,KAAK,UAAU,SAAS,KACxB,gBAAgB,KAAK,UAAU,EAAE,KACjC,kBAAkB,KAAK,SAAS,KAChC,KAAK,UAAU,UAAU,cACzB,KAAK,UAAU,SAAS;AAG1B,MAAa,iBAAiB,SAC5B,kBAAkB,IAAI,KACtB,KAAK,SAAS,WACd,KAAK,UAAU,OACf,MAAM,QAAQ,KAAK,WAAW;AAChC,MAAa,sBAAsB,SAAuB;CACxD,OACE,gBAAgB,IAAI,KACpB,gBAAgB,IAAI,KACpB,iBAAiB,IAAI,KACrB,cAAc,IAAI,KAClB,kBAAkB,IAAI;AAE1B;AACA,MAAa,0BAA0B,SACrC,cAAc,IAAI,KAAK,KAAK,YAAY,OAAM,MAAK,mBAAmB,CAAC,CAAC;AAC1E,MAAa,2BAA2B,SACtC,cAAc,IAAI,KAAK,KAAK,YAAY,OAAM,MAAK,oBAAoB,CAAC,CAAC;AAC3E,MAAa,uBAAuB,SAClC,mBAAmB,IAAI,KACvB,eAAe,IAAI,KACnB,oBAAoB,IAAI,KACxB,uBAAuB,IAAI,KAC3B,wBAAwB,IAAI,KAC5B,kBAAkB,IAAI;AACxB,MAAa,uBACX,SAQA,eAAe,IAAI,KACnB,kBAAkB,IAAI,KACtB,qBAAqB,IAAI,KACzB,4BAA4B,IAAI,KAChC,kBAAkB,IAAI,KACtB,yBAAyB,IAAI;AAG/B,MAAM,6CAA6B,IAAI,IAAI;CAAC;CAAK;CAAK;CAAK;CAAK;AAAG,CAAC;;;;;;;AAQpE,MAAa,8BAA8B,SAAuC;CAChF,IAAI,CAAC,kBAAkB,IAAI,GAAG,OAAO;CAErC,IAAI,eAAe,IAAI,KAAK,KAAK,YAAY,WAAW,GACtD,OAAO,2BAA2B,KAAK,YAAY,EAAE;CACvD,IAAI,oBAAoB,IAAI,KAAK,2BAA2B,IAAI,KAAK,KAAK,GAAG,OAAO;CACpF,OACE,KAAK,SAAS,cACd,KAAK,UAAU,OACf,kBAAkB,KAAK,SAAS,KAChC,KAAK,UAAU,SAAS,cACxB,OAAO,KAAK,UAAU,UAAU,YAChC,KAAK,UAAU,UAAU,SACzB,KAAK,UAAU,UAAU;AAE7B;AAEA,MAAa,iBAAiB,SAAmB;CAC/C,IAAI,kBAAkB,IAAI,GACxB,OAAO,cAAc,KAAK,UAAU,EAAE;MACjC,IAAI,oBAAoB,IAAI,GACjC,OAAO,iBAAiB,IAAI;MACvB,IAAI,uBAAuB,IAAI,GACpC,OAAO,KAAK,YAAY,KAAK,MAAW,cAAc,CAAC,CAAC;MACnD,IAAI,wBAAwB,IAAI,GACrC,OAAO,KAAK,YAAY,KAAK,MAAW,iBAAiB,CAAC,CAAC;CAE7D,OAAO,KAAK;AACd;AAEA,MAAa,oBAAoB,SAC/B,oBAAoB,IAAI,IACpB,KAAK,MAAM,KAAI,MAAK,EAAE,KAAK,CAAC,CAAC,KAAK,GAAG,sCACH;AAExC,MAAa,qBACX,QACA,SACwB;CACxB,IAAI,MAAM;EACR,IAAI,WAAW,KAAK,OAAO;EAC3B,IAAI,WAAW,MAAM,OAAO;EAC5B,IAAI,WAAW,KAAK,OAAO;EAC3B,IAAI,WAAW,MAAM,OAAO;CAC9B;CACA,OAAO;AACT;AAEA,MAAa,uBAGT;CACF,UAAU;CACV,YAAY;CACZ,UAAU;AACZ;AAKA,MAAa,yBACX,SACgD;;CAEhD,IAAI,aAAa,IAAI,KAAK,YAAY,IAAI,GAAG;EAC3C,MAAM,EAAE,KAAK,KAAK,OAAO,eAAe;EACxC,IAAI,aAAa,GAAG,KAAK,YAAY,GAAG,GACtC,OAAO;GAAC,GAAG,sBAAsB,GAAG;GAAG;GAAY;EAAG;EAExD,OAAO;GAAC;GAAK;GAAY;EAAG;CAC9B;;CAEA,OAAO,CAAC;AACV;AAEA,MAAa,0BACX,SAC8E;CAC9E,MAAM,MAAM,sBAAsB,IAAI;CACtC,MAAM,cAAyF,CAAC;CAChG,IAAI,aAAa;CACjB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GACnC,IAAI,IAAI,IAAI,OAAO,OAAO;EACxB,aAAa;EACb,IAAI,IAAI;EACR,OAAO,IAAI,aAAa,OAAO,OAAO;GACpC,KAAK;GACL,KAAK;EACP;EACA,MAAM,eAAe,IAAI,MAAM,YAAY,IAAI,CAAC;EAChD,YAAY,KAAK,YAAY;EAC7B,KAAK;CACP,OAAO,IAAI,IAAI,IAAI,OAAO,MAAM;EAC9B,IAAI,MAAM,KAAK,MAAM,IAAI,SAAS,GAAG;GACnC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAC5B,YAAY,KAAK,IAAI,EAAE;GAEzB,YAAY,KAAK,IAAI,IAAI,EAAE;GAC3B,IAAI,MAAM,IAAI,SAAS,GACrB,YAAY,KAAK,IAAI,IAAI,EAAE;EAE/B,OACE,IAAI,IAAI,IAAI,OAAO,OACjB,YAAY,KAAK,IAAI,IAAI,EAAE;OAE3B,YAAY,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;CAGzC;CAEF,IAAI,YAAY,WAAW,KAAK,MAAM,QAAQ,YAAY,EAAE,GAE1D,OAAO,YAAY;CAErB,OAAO;AACT;;;AC3MA,SAAS,aACP,cACA,UAA+B,CAAC,GACP;CACzB,MAAM,EAAE,QAAQ,wBAAwB,eAAe,MAAM,kBAAkB;CAC/E,MAAM,KAAK,CAAC,CAAC;CACb,MAAM,aAAaA,oBAAAA,eAAe,MAAM;CAExC,MAAM,gBACJ,WACA,UACA,yBAEAC,oBAAAA,iBAAiB;EACf;EACA;EACA;EACA;EACA,iBAAiB,SAAS;CAC5B,CAAC;CAEH,MAAM,aAAsC;EAC1C,OAAO,CAAC;EACR,GAAI,KAAK,CAAC,IAAI,EAAE,YAAY,MAAM;CACpC;CAEA,MAAM,UAAyC,EAC7C,cAAa,cAAa,WAAW,WAAW,KAAK,WAAW,MAAK,MAAK,EAAE,SAAS,SAAS,EAChG;CAEA,MAAM,mBACJ,MACA,cAGI,CAAC,MACgD;EACrD,MAAM,EAAE,iBAAiB,oBAAoB,sBAAsB,OAAO;EAC1E,IAAI,eAAe,IAAI,GAAG;GACxB,IACE,aAAa,KAAK,YAAY,EAAE,KAChC,YAAY,KAAK,YAAY,EAAE,KAC/B,eAAe,KAAK,YAAY,EAAE,GAElC,OAAO,gBAAgB,KAAK,YAAY,EAAE;GAE5C,MAAM,cAAc,gBAAgB,KAAK,YAAY,EAAE;;GAEvD,IAAI,aACF,OAAO,KACF,EAAE,OAAO,CAAC,WAAW,EAAE,IACvB;IACC,YAAY;IACZ,OAAO,CAAC,WAAW;GACrB;EAER,OAAO,IAAI,aAAa,IAAI,KAAK,YAAY,IAAI,GAAG;GAClD,IAAI,IAAI;IAEN,MAAM,QADY,sBAAsB,IAClB,CAAC,CAAC,KAAI,MAAK;KAC/B,IAAI,OAAO,MAAM,UACf,OAAO;KAET,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAGD,IAAI,CAAC,MAAM,MAAM,OAAO,GACtB,OAAO;IAIT,MACI,OACA,GAAG,WAAW,MACb,GAAG,OAAO,SAAS,GAAG,OAAO,SAC9B,CAACC,oBAAAA,YAAY,GAAG,EAAE,KAClB,CAACA,oBAAAA,YAAY,GAAG,EAAE,EAAA,CAAG,KAAK,KAC5B,MAAM,EAAE,CAAC,UAAU,MAAM,EAAE,CAAC,UAC3B,MAAM,EAAE,CAAC,eAAe,cAAc,MAAM,EAAE,CAAC,eAAe,aAC7D,MAAM,OAAO,UACX,MAAM,EAAE,CAAC,aAAa,QAAQ,MAAM,EAAE,CAAC,aAAa,QACnD,MAAM,EAAE,CAAC,aAAa,QAAQ,MAAM,EAAE,CAAC,aAAa,SACtD,MAAM,OAAO,SACV,MAAM,EAAE,CAAC,aAAa,OAAO,MAAM,EAAE,CAAC,aAAa,OAClD,MAAM,EAAE,CAAC,aAAa,OAAO,MAAM,EAAE,CAAC,aAAa,OAE1D,OAAO;KACL,OAAO,MAAM,EAAE,CAAC;KAChB,UAAU,MAAM,OAAO,QAAQ,YAAY;KAC3C,OACG,MAAM,OAAO,SAAS,MAAM,EAAE,CAAC,aAAa,QAC5C,MAAM,OAAO,QAAQ,MAAM,EAAE,CAAC,aAAa,MACxC,CAAC,MAAM,EAAE,CAAC,OAAO,MAAM,EAAE,CAAC,KAAK,IAC/B,CAAC,MAAM,EAAE,CAAC,OAAO,MAAM,EAAE,CAAC,KAAK;KACrC,GAAI,MAAM,EAAE,CAAC,cAAc,EAAE,aAAa,MAAM,EAAE,CAAC,YAAY,IAAI;IACrE;IAGF,OAAO,EACE,MACT;GACF;GACA,MAAM,YAAY,uBAAuB,IAAI;GAC7C,MAAM,aAAa,UAAU;GAM7B,MAAM,QALe,UAClB,QAAO,MAAK,MAAM,QAAQ,CAAC,KAAM,CAAC,CAAC,KAAK,OAAO,MAAM,YAAY,UAAU,CAAE,CAAC,CAC9E,KAAI,MACH,MAAM,QAAQ,CAAC,IAAI,EAAE,QAAO,OAAM,CAAC,CAAC,KAAK,OAAO,OAAO,YAAY,UAAU,EAAE,IAAI,CAE9D,CAAC,CACvB,KAAK,QAAuD;IAC3D,IAAI,MAAM,QAAQ,GAAG,GACnB,OAAO;KACL,YAAY;KACZ,OAAO,IAAI,KAAI,MAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO;IACxD;IAEF,OAAO,gBAAgB,GAAG;GAC5B,CAAC,CAAC,CACD,OAAO,OAAO;GAGjB,MACI,OACA,GAAG,WAAW,KAAK,CAACA,oBAAAA,YAAY,GAAG,EAAE,KAAK,CAACA,oBAAAA,YAAY,GAAG,EAAE,EAAA,CAAG,KAAK,KACtE,MAAM,EAAE,CAAC,UAAU,MAAM,EAAE,CAAC,UAC3B,MAAM,EAAE,CAAC,eAAe,cAAc,MAAM,EAAE,CAAC,eAAe,aAC7D,eAAe,UACb,MAAM,EAAE,CAAC,aAAa,QAAQ,MAAM,EAAE,CAAC,aAAa,QACnD,MAAM,EAAE,CAAC,aAAa,QAAQ,MAAM,EAAE,CAAC,aAAa,SACtD,eAAe,SACZ,MAAM,EAAE,CAAC,aAAa,OAAO,MAAM,EAAE,CAAC,aAAa,OAClD,MAAM,EAAE,CAAC,aAAa,OAAO,MAAM,EAAE,CAAC,aAAa,OAE1D,OAAO;IACL,OAAO,MAAM,EAAE,CAAC;IAChB,UAAU,eAAe,QAAQ,YAAY;IAC7C,OACG,eAAe,SAAS,MAAM,EAAE,CAAC,aAAa,QAC9C,eAAe,QAAQ,MAAM,EAAE,CAAC,aAAa,MAC1C,CAAC,MAAM,EAAE,CAAC,OAAO,MAAM,EAAE,CAAC,KAAK,IAC/B,CAAC,MAAM,EAAE,CAAC,OAAO,MAAM,EAAE,CAAC,KAAK;IACrC,GAAI,MAAM,EAAE,CAAC,cAAc,EAAE,aAAa,MAAM,EAAE,CAAC,YAAY,IAAI;GACrE;;GAIF,IAAI,MAAM,SAAS,GACjB,OAAO;IAAE;IAAY;GAAM;EAE/B,OAAO,IAAI,aAAa,IAAI,GAAG;GAC7B,MAAM,cAAc,gBAAgB,KAAK,UAAU,EAAE;;GAErD,IAAI,aAAa;IACf,IACE,CAACA,oBAAAA,YAAY,WAAW,MACvB,YAAY,aAAa,cACxB,YAAY,aAAa,gBACzB,YAAY,aAAa,aAE3B,OAAO;KACL,GAAG;KACH,UAAU,qBAAqB,YAAY;IAC7C;IAEF,OAAO,KACF;KAAE,OAAO,CAAC,WAAW;KAAG,KAAK;IAAK,IAClC;KACC,YAAY;KACZ,OAAO,CAAC,WAAW;KACnB,KAAK;IACP;GACN;EACF,OAAO,IAAI,kBAAkB,IAAI,GAAG;GAClC,MAAM,CAAC,MAAM,QAAQ,KAAK;GAC1B,IAAI,QAAgB;GACpB,IAAI,QAAyB;GAC7B,IAAI,cAAuC,KAAA;;GAE3C,IAAI,oBAAoB,IAAI,GAAG;IAC7B,QAAQ,iBAAiB,IAAI;IAC7B,IAAI,oBAAoB,IAAI,GAAG;KAC7B,QAAQ,iBAAiB,IAAI;KAC7B,cAAc;IAChB,OAEE,IAAI,gBAAgB,IAAI,KAAK,eAAe,IAAI,GAC9C,QAAQ,cAAc,IAAI;GAGhC;;GAGA,IACE,gBAAgB,UACZ,aAAa,OAAO,YAAY,KAAe,IAC/C,aAAa,OAAO,UAAU,GAElC,OAAO;IACL;IACA,UAAU;IACV,OAAO;IACP,GAAI,cAAc,EAAE,YAAY,IAAI,CAAC;GACvC;EAEJ,OAAO,IAAI,YAAY,IAAI,GAAG;GAC5B,MAAM,QAAQ,iBAAiB,KAAK,GAAG;GACvC,IAAI,cAAuC,KAAA;GAC3C,IAAI,wBAAwB,KAAK,GAAG,GAClC,cAAc;GAEhB,IAAI,oBAAoB,KAAK,GAAG,GAAG;IAEjC,MAAM,QAAe,cAAc,KAAK,GAAG;;IAE3C,IACE,SACA,MAAM,OAAM,MAAK,aAAa,OAAO,MAAM,gBAAgB,UAAU,IAAI,KAAA,CAAS,CAAC,GAEnF,OAAO;KAAE;KAAO,UAAU;KAAM;KAAO,GAAI,cAAc,EAAE,YAAY,IAAI,CAAC;IAAG;GAEnF;EACF,OAAO,IAAI,oBAAoB,IAAI,GAAG;GACpC,IAAI,QAAuB;GAE3B,IAAI,QAAa,KAAA;GACjB,IAAI,cAAuC,KAAA;GAC3C,IAAI,OAAO;GACX,MAAM,EAAE,KAAK,QAAQ;GAGrB,IAAI,eAAe;IACjB,MAAM,YAAY,2BAA2B,GAAG;IAChD,MAAM,YAAY,2BAA2B,GAAG;IAChD,IAAI,aAAa,WAAW;KAE1B,MAAM,IAAI,cAAc,KAAK,OAAO;KACpC,MAAM,IAAI,cAAc,KAAK,OAAO;KACpC,IAAI,KAAK,GACP,OAAO;MACL,OAAO;MACP,UAAU,kBAAkB,KAAK,KAAK;MACtC,KAAK;MACL,OAAO;MACP,aAAa;KACf;KAEF,OAAO;IACT,OAAO,IAAI,oBAAoB,GAAG,KAAK,WAAW;KAEhD,MAAM,OAAO,cAAc,KAAK,OAAO;KACvC,MAAM,IAAI,iBAAiB,GAAG;KAC9B,MAAM,KAAK,kBAAkB,KAAK,KAAK;KACvC,IAAI,QAAQ,aAAa,GAAG,EAAE,GAC5B,OAAO;MAAE,OAAO;MAAG,UAAU;MAAI,OAAO;MAAM,aAAa;KAAa;KAE1E,OAAO;IACT,OAAO,IAAI,aAAa,oBAAoB,GAAG,GAAG;KAEhD,MAAM,OAAO,cAAc,KAAK,OAAO;KACvC,MAAM,IAAI,iBAAiB,GAAG;KAC9B,MAAM,KAAK,kBAAkB,KAAK,OAAO,IAAI;KAC7C,IAAI,QAAQ,aAAa,GAAG,EAAE,GAC5B,OAAO;MAAE,OAAO;MAAG,UAAU;MAAI,OAAO;MAAM,aAAa;KAAa;KAE1E,OAAO;IACT,OAAO,IAAI,aAAa,oBAAoB,GAAG,GAAG;KAEhD,MAAM,IAAI,cAAc,KAAK,OAAO;KACpC,IAAI,GACF,OAAO;MACL,OAAO;MACP,UAAU,kBAAkB,KAAK,KAAK;MACtC,KAAK;MACL,OAAO,cAAc,GAAG;KAC1B;KAEF,OAAO;IACT,OAAO,IAAI,oBAAoB,GAAG,KAAK,WAAW;KAEhD,MAAM,IAAI,cAAc,KAAK,OAAO;KACpC,IAAI,GACF,OAAO;MACL,OAAO;MACP,UAAU,kBAAkB,KAAK,OAAO,IAAI;MAC5C,KAAK;MACL,OAAO,cAAc,GAAG;KAC1B;KAEF,OAAO;IACT;GACF;GAEA,IAAI,oBAAoB,GAAG,KAAK,oBAAoB,GAAG,GAAG;IACxD,QAAQ,iBAAiB,GAAG;IAC5B,QAAQ,cAAc,GAAG;IACzB,IAAI,oBAAoB,GAAG,GACzB,cAAc;GAElB,OAEE,IAAI,oBAAoB,GAAG,KAAK,oBAAoB,GAAG,GAAG;IACxD,OAAO;IACP,QAAQ,iBAAiB,GAAG;IAC5B,QAAQ,cAAc,GAAG;GAC3B;GAEF,IAAI,WAAW,kBAAkB,KAAK,OAAO,IAAI;GACjD,IAAI,UAAU,SAAS,aAAa,OAAO,aAAa,OACtD,WAAW,aAAa,MAAM,SAAS;GAEzC,IACE,SACA,aAAa,OAAO,UAAU,gBAAgB,UAAU,QAAQ,KAAA,CAAS,KACzE,UAAU,KAAA,GAEV,OAAO,cAAc;IAAE;IAAO;IAAU;IAAO;GAAY,IAAI;IAAE;IAAO;IAAU;GAAM;EAE5F;EACA,OAAO;CACT;CAEA,MAAM,UAAU,QAAQ,cAAcC,4BAAAA,oBAAuB,MAAS;CAEtE,IAAI;CACJ,IAAI;EACF,eAAA,GAAc,QAAA,QAAA,CAAQ,YAAY;CACpC,QAAQ;EACN,OAAO,QAAQ,UAAU;CAC3B;CAGA,MAAM,SAAS,gBAFI,YAAY,IAES,CAAC;CACzC,IAAI,QAAQ;EACV,IAAID,oBAAAA,YAAY,MAAM,GACpB,OAAO,QAAQ,MAAM;EAEvB,OAAO,QAAQ;GAAE,OAAO,CAAC,MAAM;GAAG,GAAI,KAAK,CAAC,IAAI,EAAE,YAAY,MAAM;EAAG,CAAC;CAC1E;CAEA,OAAO,QAAQ,UAAU;AAC3B"}
@@ -1,5 +1,6 @@
1
- import { t as isRuleGroup } from "./isRuleGroup-CqLThsbu.mjs";
2
- import { n as fieldIsValidUtil, r as getFieldsArray, t as prepareRuleGroup } from "./prepareQueryObjects-ChINDIap.mjs";
1
+ import { i as isRuleGroup } from "./objectUtils-DDZ-KhV5.mjs";
2
+ import { n as prepareRuleGroup } from "./prepareQueryObjects-Dmyf3Wi_.mjs";
3
+ import { n as getFieldsArray, t as fieldIsValidUtil } from "./parserUtils-BKPstAaO.mjs";
3
4
  import jsonata from "jsonata";
4
5
  //#region src/utils/parseJSONata/utils.ts
5
6
  const isJSONataExprNode = (expr) => {
@@ -108,12 +109,14 @@ const generateMixedAndOrList = (expr) => {
108
109
  const tempAndArray = arr.slice(startIndex, i + 1);
109
110
  returnArray.push(tempAndArray);
110
111
  i -= 2;
111
- } else if (arr[i + 1] === "or") if (i === 0 || i === arr.length - 3) {
112
- if (i === 0 || arr[i - 1] === "or") returnArray.push(arr[i]);
113
- returnArray.push(arr[i + 1]);
114
- if (i === arr.length - 3) returnArray.push(arr[i + 2]);
115
- } else if (arr[i - 1] === "and") returnArray.push(arr[i + 1]);
116
- else returnArray.push(arr[i], arr[i + 1]);
112
+ } else if (arr[i + 1] === "or") {
113
+ if (i === 0 || i === arr.length - 3) {
114
+ if (i === 0 || arr[i - 1] === "or") returnArray.push(arr[i]);
115
+ returnArray.push(arr[i + 1]);
116
+ if (i === arr.length - 3) returnArray.push(arr[i + 2]);
117
+ } else if (arr[i - 1] === "and") returnArray.push(arr[i + 1]);
118
+ else returnArray.push(arr[i], arr[i + 1]);
119
+ }
117
120
  if (returnArray.length === 1 && Array.isArray(returnArray[0])) return returnArray[0];
118
121
  return returnArray;
119
122
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parseJSONata.mjs","names":[],"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\n// Arithmetic infix operators eligible as expression operands\nconst jsonataArithmeticOperators = new Set(['+', '-', '*', '/', '%']);\n\n/**\n * A JSONata comparison operand that is a candidate expression subtree: an arithmetic infix node\n * (`+ - * / %`) or a function-call node (excluding the `not`/`contains` predicates handled\n * elsewhere). The expr-supplied `getExpression` handler decides whether it maps to a known\n * function.\n */\nexport const isJSONataExpressionOperand = (expr: Any): expr is JSONataExprNode => {\n if (!isJSONataExprNode(expr)) return false;\n // Unwrap parenthesized single-expression blocks (e.g. `(cost * 2)`)\n if (isJSONataBlock(expr) && expr.expressions.length === 1)\n return isJSONataExpressionOperand(expr.expressions[0]);\n if (isJSONataBinaryNode(expr) && jsonataArithmeticOperators.has(expr.value)) return true;\n return (\n expr.type === 'function' &&\n expr.value === '(' &&\n isJSONataExprNode(expr.procedure) &&\n expr.procedure.type === 'variable' &&\n typeof expr.procedure.value === 'string' &&\n expr.procedure.value !== 'not' &&\n expr.procedure.value !== 'contains'\n );\n};\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 : /* v8 ignore next -- @preserve */ '';\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 // v8 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 // v8 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 { Except } from 'type-fest';\nimport type {\n DefaultCombinatorName,\n DefaultOperatorName,\n DefaultRuleGroupArray,\n DefaultRuleGroupICArray,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n ExpressionNode,\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 {\n JSONataExprNode,\n JSONataExpressionOperand,\n ParseJSONataExpressionContext,\n} from './types';\nimport {\n generateFlatAndOrList,\n generateMixedAndOrList,\n getFieldFromPath,\n getValidValue,\n isJSONataAnd,\n isJSONataBlock,\n isJSONataComparison,\n isJSONataContains,\n isJSONataExpressionOperand,\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 * Handler that converts a JSONata arithmetic/function operand subtree into an\n * {@link ExpressionNode}. Return `null` to reject (the rule is dropped). Supplied by\n * `@react-querybuilder/expr` (`expressionParserJSONata`). When omitted, expression\n * operands are ignored (rule dropped).\n */\n getExpression?: (\n node: JSONataExpressionOperand,\n ctx: ParseJSONataExpressionContext\n ) => ExpressionNode | null;\n}\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, getExpression } = 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 exprCtx: ParseJSONataExpressionContext = {\n fieldExists: fieldName => fieldsFlat.length === 0 || fieldsFlat.some(f => f.name === fieldName),\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 // v8 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 // v8 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 // v8 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 // v8 ignore else\n if (isJSONataIdentifier(arg1)) {\n field = getFieldFromPath(arg1);\n if (isJSONataIdentifier(arg2)) {\n regex = getFieldFromPath(arg2);\n valueSource = 'field';\n } else {\n // v8 ignore else\n if (isJSONataString(arg2) || isJSONataRegex(arg2)) {\n regex = getValidValue(arg2);\n }\n }\n }\n\n // v8 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 // v8 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 // Arithmetic/function expression operands (from `@react-querybuilder/expr`)\n if (getExpression) {\n const lhsIsExpr = isJSONataExpressionOperand(lhs);\n const rhsIsExpr = isJSONataExpressionOperand(rhs);\n if (lhsIsExpr && rhsIsExpr) {\n // expression <op> expression → both sides on lhs/value\n const l = getExpression(lhs, exprCtx);\n const r = getExpression(rhs, exprCtx);\n if (l && r) {\n return {\n field: '',\n operator: normalizeOperator(expr.value),\n lhs: l,\n value: r,\n valueSource: 'expression',\n };\n }\n return null;\n } else if (isJSONataIdentifier(lhs) && rhsIsExpr) {\n // field <op> expression → rhs expression\n const node = getExpression(rhs, exprCtx);\n const f = getFieldFromPath(lhs);\n const op = normalizeOperator(expr.value);\n if (node && fieldIsValid(f, op)) {\n return { field: f, operator: op, value: node, valueSource: 'expression' };\n }\n return null;\n } else if (lhsIsExpr && isJSONataIdentifier(rhs)) {\n // expression <op> field → flip to field <op> expression\n const node = getExpression(lhs, exprCtx);\n const f = getFieldFromPath(rhs);\n const op = normalizeOperator(expr.value, true);\n if (node && fieldIsValid(f, op)) {\n return { field: f, operator: op, value: node, valueSource: 'expression' };\n }\n return null;\n } else if (lhsIsExpr && isJSONataValidValue(rhs)) {\n // expression <op> literal → lhs = expression, literal value\n const l = getExpression(lhs, exprCtx);\n if (l) {\n return {\n field: '',\n operator: normalizeOperator(expr.value),\n lhs: l,\n value: getValidValue(rhs),\n };\n }\n return null;\n } else if (isJSONataValidValue(lhs) && rhsIsExpr) {\n // literal <op> expression → lhs = expression, flip operator\n const l = getExpression(rhs, exprCtx);\n if (l) {\n return {\n field: '',\n operator: normalizeOperator(expr.value, true),\n lhs: l,\n value: getValidValue(lhs),\n };\n }\n return null;\n }\n }\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 // v8 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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"}
1
+ {"version":3,"file":"parseJSONata.mjs","names":[],"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\n// Arithmetic infix operators eligible as expression operands\nconst jsonataArithmeticOperators = new Set(['+', '-', '*', '/', '%']);\n\n/**\n * A JSONata comparison operand that is a candidate expression subtree: an arithmetic infix node\n * (`+ - * / %`) or a function-call node (excluding the `not`/`contains` predicates handled\n * elsewhere). The expr-supplied `getExpression` handler decides whether it maps to a known\n * function.\n */\nexport const isJSONataExpressionOperand = (expr: Any): expr is JSONataExprNode => {\n if (!isJSONataExprNode(expr)) return false;\n // Unwrap parenthesized single-expression blocks (e.g. `(cost * 2)`)\n if (isJSONataBlock(expr) && expr.expressions.length === 1)\n return isJSONataExpressionOperand(expr.expressions[0]);\n if (isJSONataBinaryNode(expr) && jsonataArithmeticOperators.has(expr.value)) return true;\n return (\n expr.type === 'function' &&\n expr.value === '(' &&\n isJSONataExprNode(expr.procedure) &&\n expr.procedure.type === 'variable' &&\n typeof expr.procedure.value === 'string' &&\n expr.procedure.value !== 'not' &&\n expr.procedure.value !== 'contains'\n );\n};\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 : /* v8 ignore next -- @preserve */ '';\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 // v8 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 // v8 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 { Except } from 'type-fest';\nimport type {\n DefaultCombinatorName,\n DefaultOperatorName,\n DefaultRuleGroupArray,\n DefaultRuleGroupICArray,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n ExpressionNode,\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 {\n JSONataExprNode,\n JSONataExpressionOperand,\n ParseJSONataExpressionContext,\n} from './types';\nimport {\n generateFlatAndOrList,\n generateMixedAndOrList,\n getFieldFromPath,\n getValidValue,\n isJSONataAnd,\n isJSONataBlock,\n isJSONataComparison,\n isJSONataContains,\n isJSONataExpressionOperand,\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 * Handler that converts a JSONata arithmetic/function operand subtree into an\n * {@link ExpressionNode}. Return `null` to reject (the rule is dropped). Supplied by\n * `@react-querybuilder/expr` (`expressionParserJSONata`). When omitted, expression\n * operands are ignored (rule dropped).\n */\n getExpression?: (\n node: JSONataExpressionOperand,\n ctx: ParseJSONataExpressionContext\n ) => ExpressionNode | null;\n}\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, getExpression } = 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 exprCtx: ParseJSONataExpressionContext = {\n fieldExists: fieldName => fieldsFlat.length === 0 || fieldsFlat.some(f => f.name === fieldName),\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 // v8 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 // v8 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 // v8 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 // v8 ignore else\n if (isJSONataIdentifier(arg1)) {\n field = getFieldFromPath(arg1);\n if (isJSONataIdentifier(arg2)) {\n regex = getFieldFromPath(arg2);\n valueSource = 'field';\n } else {\n // v8 ignore else\n if (isJSONataString(arg2) || isJSONataRegex(arg2)) {\n regex = getValidValue(arg2);\n }\n }\n }\n\n // v8 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 // v8 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 // Arithmetic/function expression operands (from `@react-querybuilder/expr`)\n if (getExpression) {\n const lhsIsExpr = isJSONataExpressionOperand(lhs);\n const rhsIsExpr = isJSONataExpressionOperand(rhs);\n if (lhsIsExpr && rhsIsExpr) {\n // expression <op> expression → both sides on lhs/value\n const l = getExpression(lhs, exprCtx);\n const r = getExpression(rhs, exprCtx);\n if (l && r) {\n return {\n field: '',\n operator: normalizeOperator(expr.value),\n lhs: l,\n value: r,\n valueSource: 'expression',\n };\n }\n return null;\n } else if (isJSONataIdentifier(lhs) && rhsIsExpr) {\n // field <op> expression → rhs expression\n const node = getExpression(rhs, exprCtx);\n const f = getFieldFromPath(lhs);\n const op = normalizeOperator(expr.value);\n if (node && fieldIsValid(f, op)) {\n return { field: f, operator: op, value: node, valueSource: 'expression' };\n }\n return null;\n } else if (lhsIsExpr && isJSONataIdentifier(rhs)) {\n // expression <op> field → flip to field <op> expression\n const node = getExpression(lhs, exprCtx);\n const f = getFieldFromPath(rhs);\n const op = normalizeOperator(expr.value, true);\n if (node && fieldIsValid(f, op)) {\n return { field: f, operator: op, value: node, valueSource: 'expression' };\n }\n return null;\n } else if (lhsIsExpr && isJSONataValidValue(rhs)) {\n // expression <op> literal → lhs = expression, literal value\n const l = getExpression(lhs, exprCtx);\n if (l) {\n return {\n field: '',\n operator: normalizeOperator(expr.value),\n lhs: l,\n value: getValidValue(rhs),\n };\n }\n return null;\n } else if (isJSONataValidValue(lhs) && rhsIsExpr) {\n // literal <op> expression → lhs = expression, flip operator\n const l = getExpression(rhs, exprCtx);\n if (l) {\n return {\n field: '',\n operator: normalizeOperator(expr.value, true),\n lhs: l,\n value: getValidValue(lhs),\n };\n }\n return null;\n }\n }\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 // v8 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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"}
@@ -1,5 +1,5 @@
1
- import { E as RuleGroupTypeAny, L as Except, N as RuleType, P as ExpressionNode, T as DefaultRuleGroupTypeIC, g as RQBJsonLogicVar, h as RQBJsonLogic, j as DefaultRuleGroupType, n as JsonLogicLessThanOrEqual, r as JsonLogicRulesLogic, t as JsonLogicLessThan } from "./index-CX9mehdL.mjs";
2
- import { t as ParserCommonOptions } from "./import-DVWI7Fdh.mjs";
1
+ import { $t as DefaultRuleGroupType, Bt as RuleGroupTypeAny, Pt as DefaultRuleGroupTypeIC, R as RQBJsonLogic, V as RQBJsonLogicVar, g as JsonLogicRulesLogic, jn as Except, l as JsonLogicLessThan, on as ExpressionNode, rn as RuleType, u as JsonLogicLessThanOrEqual } from "./index-DOIE2pwx.mjs";
2
+ import { t as ParserCommonOptions } from "./import-BdKPtLzo.mjs";
3
3
  //#region src/utils/parseJsonLogic/types.d.ts
4
4
  interface JsonLogicBetweenExclusive extends JsonLogicLessThan {
5
5
  "<": [JsonLogicRulesLogic, JsonLogicRulesLogic, JsonLogicRulesLogic];
@@ -1,5 +1,5 @@
1
- import { E as RuleGroupTypeAny, L as Except, N as RuleType, P as ExpressionNode, T as DefaultRuleGroupTypeIC, g as RQBJsonLogicVar, h as RQBJsonLogic, j as DefaultRuleGroupType, n as JsonLogicLessThanOrEqual, r as JsonLogicRulesLogic, t as JsonLogicLessThan } from "./index-CX9mehdL.js";
2
- import { t as ParserCommonOptions } from "./import-6ExjhifL.js";
1
+ import { $t as DefaultRuleGroupType, Bt as RuleGroupTypeAny, Pt as DefaultRuleGroupTypeIC, R as RQBJsonLogic, V as RQBJsonLogicVar, g as JsonLogicRulesLogic, jn as Except, l as JsonLogicLessThan, on as ExpressionNode, rn as RuleType, u as JsonLogicLessThanOrEqual } from "./index-DOIE2pwx.js";
2
+ import { t as ParserCommonOptions } from "./import-BfZTwhp2.js";
3
3
  //#region src/utils/parseJsonLogic/types.d.ts
4
4
  interface JsonLogicBetweenExclusive extends JsonLogicLessThan {
5
5
  "<": [JsonLogicRulesLogic, JsonLogicRulesLogic, JsonLogicRulesLogic];