@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
@@ -1,39 +1,39 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_utils = require("./utils-C79dxwZb.js");
3
- const require_isRuleGroup = require("./isRuleGroup-0JNiQgLg.js");
4
- const require_objectUtils = require("./objectUtils-Cr02aGxb.js");
5
- const require_convertQuery = require("./convertQuery-Cw76XFIn.js");
6
- const require_prepareQueryObjects = require("./prepareQueryObjects-BnGL91Tt.js");
2
+ const require_utils = require("./utils-e-7KHkjV.js");
3
+ const require_objectUtils = require("./objectUtils-DfnEmDSV.js");
4
+ const require_convertQuery = require("./convertQuery-BLT0GIhM.js");
5
+ const require_prepareQueryObjects = require("./prepareQueryObjects-Dj9cTl9D.js");
6
+ const require_parserUtils = require("./parserUtils-DbBXyAht.js");
7
7
  //#region src/utils/parseJsonLogic/utils.ts
8
- const isJsonLogicVar = (logic) => require_isRuleGroup.isPojo(logic) && "var" in logic;
8
+ const isJsonLogicVar = (logic) => require_objectUtils.isPojo(logic) && "var" in logic;
9
9
  const isRQBJsonLogicVar = (logic) => isJsonLogicVar(logic) && typeof logic.var === "string";
10
- const isJsonLogicEqual = (logic) => require_isRuleGroup.isPojo(logic) && "==" in logic;
11
- const isJsonLogicStrictEqual = (logic) => require_isRuleGroup.isPojo(logic) && "===" in logic;
12
- const isJsonLogicNotEqual = (logic) => require_isRuleGroup.isPojo(logic) && "!=" in logic;
13
- const isJsonLogicStrictNotEqual = (logic) => require_isRuleGroup.isPojo(logic) && "!==" in logic;
14
- const isJsonLogicNegation = (logic) => require_isRuleGroup.isPojo(logic) && "!" in logic;
15
- const isJsonLogicDoubleNegation = (logic) => require_isRuleGroup.isPojo(logic) && "!!" in logic;
16
- const isJsonLogicOr = (logic) => require_isRuleGroup.isPojo(logic) && "or" in logic;
17
- const isJsonLogicAnd = (logic) => require_isRuleGroup.isPojo(logic) && "and" in logic;
18
- const isJsonLogicGreaterThan = (logic) => require_isRuleGroup.isPojo(logic) && ">" in logic;
19
- const isJsonLogicGreaterThanOrEqual = (logic) => require_isRuleGroup.isPojo(logic) && ">=" in logic;
20
- const isJsonLogicLessThan = (logic) => require_isRuleGroup.isPojo(logic) && "<" in logic && logic["<"].length === 2;
21
- const isJsonLogicLessThanOrEqual = (logic) => require_isRuleGroup.isPojo(logic) && "<=" in logic && logic["<="].length === 2;
22
- const isJsonLogicInArray = (logic) => require_isRuleGroup.isPojo(logic) && "in" in logic && Array.isArray(logic.in[1]);
23
- const isJsonLogicInString = (logic) => require_isRuleGroup.isPojo(logic) && "in" in logic && !Array.isArray(logic.in[1]);
24
- const isJsonLogicAll = (logic) => require_isRuleGroup.isPojo(logic) && "all" in logic;
25
- const isJsonLogicNone = (logic) => require_isRuleGroup.isPojo(logic) && "none" in logic;
26
- const isJsonLogicSome = (logic) => require_isRuleGroup.isPojo(logic) && "some" in logic;
27
- const isJsonLogicBetweenExclusive = (logic) => require_isRuleGroup.isPojo(logic) && "<" in logic && Array.isArray(logic["<"]) && logic["<"].length === 3;
28
- const isJsonLogicBetweenInclusive = (logic) => require_isRuleGroup.isPojo(logic) && "<=" in logic && Array.isArray(logic["<="]) && logic["<="].length === 3;
29
- const isRQBJsonLogicStartsWith = (logic) => require_isRuleGroup.isPojo(logic) && "startsWith" in logic;
30
- const isRQBJsonLogicEndsWith = (logic) => require_isRuleGroup.isPojo(logic) && "endsWith" in logic;
10
+ const isJsonLogicEqual = (logic) => require_objectUtils.isPojo(logic) && "==" in logic;
11
+ const isJsonLogicStrictEqual = (logic) => require_objectUtils.isPojo(logic) && "===" in logic;
12
+ const isJsonLogicNotEqual = (logic) => require_objectUtils.isPojo(logic) && "!=" in logic;
13
+ const isJsonLogicStrictNotEqual = (logic) => require_objectUtils.isPojo(logic) && "!==" in logic;
14
+ const isJsonLogicNegation = (logic) => require_objectUtils.isPojo(logic) && "!" in logic;
15
+ const isJsonLogicDoubleNegation = (logic) => require_objectUtils.isPojo(logic) && "!!" in logic;
16
+ const isJsonLogicOr = (logic) => require_objectUtils.isPojo(logic) && "or" in logic;
17
+ const isJsonLogicAnd = (logic) => require_objectUtils.isPojo(logic) && "and" in logic;
18
+ const isJsonLogicGreaterThan = (logic) => require_objectUtils.isPojo(logic) && ">" in logic;
19
+ const isJsonLogicGreaterThanOrEqual = (logic) => require_objectUtils.isPojo(logic) && ">=" in logic;
20
+ const isJsonLogicLessThan = (logic) => require_objectUtils.isPojo(logic) && "<" in logic && logic["<"].length === 2;
21
+ const isJsonLogicLessThanOrEqual = (logic) => require_objectUtils.isPojo(logic) && "<=" in logic && logic["<="].length === 2;
22
+ const isJsonLogicInArray = (logic) => require_objectUtils.isPojo(logic) && "in" in logic && Array.isArray(logic.in[1]);
23
+ const isJsonLogicInString = (logic) => require_objectUtils.isPojo(logic) && "in" in logic && !Array.isArray(logic.in[1]);
24
+ const isJsonLogicAll = (logic) => require_objectUtils.isPojo(logic) && "all" in logic;
25
+ const isJsonLogicNone = (logic) => require_objectUtils.isPojo(logic) && "none" in logic;
26
+ const isJsonLogicSome = (logic) => require_objectUtils.isPojo(logic) && "some" in logic;
27
+ const isJsonLogicBetweenExclusive = (logic) => require_objectUtils.isPojo(logic) && "<" in logic && Array.isArray(logic["<"]) && logic["<"].length === 3;
28
+ const isJsonLogicBetweenInclusive = (logic) => require_objectUtils.isPojo(logic) && "<=" in logic && Array.isArray(logic["<="]) && logic["<="].length === 3;
29
+ const isRQBJsonLogicStartsWith = (logic) => require_objectUtils.isPojo(logic) && "startsWith" in logic;
30
+ const isRQBJsonLogicEndsWith = (logic) => require_objectUtils.isPojo(logic) && "endsWith" in logic;
31
31
  /**
32
32
  * A JsonLogic comparison operand that is a candidate expression subtree: a plain object that
33
33
  * is not a variable reference (i.e. an arithmetic/function operation object). The
34
34
  * expr-supplied `getExpression` handler decides whether it maps to a known function.
35
35
  */
36
- const isJsonLogicExpressionOperand = (logic) => require_isRuleGroup.isPojo(logic) && !isRQBJsonLogicVar(logic);
36
+ const isJsonLogicExpressionOperand = (logic) => require_objectUtils.isPojo(logic) && !isRQBJsonLogicVar(logic);
37
37
  //#endregion
38
38
  //#region src/utils/parseJsonLogic/parseJsonLogic.ts
39
39
  const emptyRuleGroup = {
@@ -41,9 +41,9 @@ const emptyRuleGroup = {
41
41
  rules: []
42
42
  };
43
43
  function parseJsonLogic(rqbJsonLogic, options = {}) {
44
- const fieldsFlat = require_prepareQueryObjects.getFieldsArray(options.fields);
44
+ const fieldsFlat = require_parserUtils.getFieldsArray(options.fields);
45
45
  const { getValueSources, listsAsArrays, jsonLogicOperations, getExpression } = options;
46
- const fieldIsValid = (fieldName, operator, subordinateFieldName) => require_prepareQueryObjects.fieldIsValidUtil({
46
+ const fieldIsValid = (fieldName, operator, subordinateFieldName) => require_parserUtils.fieldIsValidUtil({
47
47
  fieldName,
48
48
  fieldsFlat,
49
49
  operator,
@@ -52,11 +52,11 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
52
52
  });
53
53
  const exprCtx = { fieldExists: (fieldName) => fieldsFlat.length === 0 || fieldsFlat.some((f) => f.name === fieldName) };
54
54
  function processLogic(logic, outermost, inSubquery) {
55
- if (outermost && !require_isRuleGroup.isPojo(logic)) return false;
55
+ if (outermost && !require_objectUtils.isPojo(logic)) return false;
56
56
  const [key, keyValue] = Object.entries(logic || {})?.[0] ?? [];
57
57
  if (jsonLogicOperations && require_objectUtils.objectKeys(jsonLogicOperations).includes(key)) {
58
58
  const rule = jsonLogicOperations[key](keyValue);
59
- return rule ? outermost && !require_isRuleGroup.isRuleGroup(rule) ? {
59
+ return rule ? outermost && !require_objectUtils.isRuleGroup(rule) ? {
60
60
  combinator: "and",
61
61
  rules: [rule]
62
62
  } : rule : false;
@@ -72,7 +72,7 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
72
72
  else if (isJsonLogicNegation(logic)) {
73
73
  const rule = processLogic(logic["!"], false, inSubquery);
74
74
  if (rule) {
75
- if (!require_isRuleGroup.isRuleGroupType(rule) && (rule.operator === "between" || rule.operator === "in" || rule.operator === "contains" || rule.operator === "beginsWith" || rule.operator === "endsWith")) {
75
+ if (!require_objectUtils.isRuleGroupType(rule) && (rule.operator === "between" || rule.operator === "in" || rule.operator === "contains" || rule.operator === "beginsWith" || rule.operator === "endsWith")) {
76
76
  const newRule = {
77
77
  ...rule,
78
78
  operator: require_utils.defaultOperatorNegationMap[rule.operator]
@@ -82,7 +82,7 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
82
82
  rules: [newRule]
83
83
  };
84
84
  return newRule;
85
- } else if (isJsonLogicBetweenExclusive(logic["!"]) || require_isRuleGroup.isRuleGroupType(rule)) return {
85
+ } else if (isJsonLogicBetweenExclusive(logic["!"]) || require_objectUtils.isRuleGroupType(rule)) return {
86
86
  ...rule,
87
87
  not: true
88
88
  };
@@ -116,7 +116,7 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
116
116
  value: rhs,
117
117
  valueSource: "expression"
118
118
  };
119
- } else if (firstIsExpr && !require_isRuleGroup.isPojo(second)) {
119
+ } else if (firstIsExpr && !require_objectUtils.isPojo(second)) {
120
120
  const lhs = getExpression(first, exprCtx);
121
121
  if (lhs) rule = {
122
122
  field: "",
@@ -138,10 +138,10 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
138
138
  rules: [rule]
139
139
  } : rule : false;
140
140
  }
141
- if (isRQBJsonLogicVar(first) && !require_isRuleGroup.isPojo(second)) {
141
+ if (isRQBJsonLogicVar(first) && !require_objectUtils.isPojo(second)) {
142
142
  field = first.var;
143
143
  value = second;
144
- } else if (!require_isRuleGroup.isPojo(first) && isRQBJsonLogicVar(second)) {
144
+ } else if (!require_objectUtils.isPojo(first) && isRQBJsonLogicVar(second)) {
145
145
  field = second.var;
146
146
  value = first;
147
147
  } else if (isRQBJsonLogicVar(first) && isRQBJsonLogicVar(second)) {
@@ -170,7 +170,7 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
170
170
  field: fld,
171
171
  operator: "=",
172
172
  match,
173
- value: require_isRuleGroup.isRuleGroup(matcher) ? matcher : {
173
+ value: require_objectUtils.isRuleGroup(matcher) ? matcher : {
174
174
  combinator: "and",
175
175
  rules: [matcher]
176
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parseJsonLogic.js","names":["isPojo","getFieldsArray","fieldIsValidUtil","isPojo","objectKeys","isRuleGroup","isRuleGroupType","defaultOperatorNegationMap","joinWith","prepareRuleGroup","convertToIC"],"sources":["../src/utils/parseJsonLogic/utils.ts","../src/utils/parseJsonLogic/parseJsonLogic.ts"],"sourcesContent":["import type {\n JsonLogicAll,\n JsonLogicAnd,\n JsonLogicDoubleNegation,\n JsonLogicEqual,\n JsonLogicGreaterThan,\n JsonLogicGreaterThanOrEqual,\n JsonLogicInArray,\n JsonLogicInString,\n JsonLogicLessThan,\n JsonLogicLessThanOrEqual,\n JsonLogicNegation,\n JsonLogicNone,\n JsonLogicNotEqual,\n JsonLogicOr,\n JsonLogicSome,\n JsonLogicStrictEqual,\n JsonLogicStrictNotEqual,\n JsonLogicVar,\n RQBJsonLogicEndsWith,\n RQBJsonLogicStartsWith,\n RQBJsonLogicVar,\n} from '../../types';\nimport { isPojo } from '../misc';\nimport type {\n JsonLogicBetweenExclusive,\n JsonLogicBetweenInclusive,\n JsonLogicExpressionOperand,\n} from './types';\n\n// Standard JsonLogic operations\nexport const isJsonLogicVar = (\n logic: unknown\n): logic is JsonLogicVar<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'var' in logic;\nexport const isRQBJsonLogicVar = (logic: unknown): logic is RQBJsonLogicVar =>\n isJsonLogicVar(logic) && typeof logic.var === 'string';\nexport const isJsonLogicEqual = (logic: unknown): logic is JsonLogicEqual =>\n isPojo(logic) && '==' in logic;\nexport const isJsonLogicStrictEqual = (logic: unknown): logic is JsonLogicStrictEqual =>\n isPojo(logic) && '===' in logic;\nexport const isJsonLogicNotEqual = (logic: unknown): logic is JsonLogicNotEqual =>\n isPojo(logic) && '!=' in logic;\nexport const isJsonLogicStrictNotEqual = (logic: unknown): logic is JsonLogicStrictNotEqual =>\n isPojo(logic) && '!==' in logic;\nexport const isJsonLogicNegation = (logic: unknown): logic is JsonLogicNegation =>\n isPojo(logic) && '!' in logic;\nexport const isJsonLogicDoubleNegation = (logic: unknown): logic is JsonLogicDoubleNegation =>\n isPojo(logic) && '!!' in logic;\nexport const isJsonLogicOr = (\n logic: unknown\n): logic is JsonLogicOr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'or' in logic;\nexport const isJsonLogicAnd = (\n logic: unknown\n): logic is JsonLogicAnd<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'and' in logic;\nexport const isJsonLogicGreaterThan = (\n logic: unknown\n): logic is JsonLogicGreaterThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '>' in logic;\nexport const isJsonLogicGreaterThanOrEqual = (\n logic: unknown\n): logic is JsonLogicGreaterThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '>=' in logic;\nexport const isJsonLogicLessThan = (\n logic: unknown\n): logic is JsonLogicLessThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '<' in logic && logic['<'].length === 2;\nexport const isJsonLogicLessThanOrEqual = (\n logic: unknown\n): logic is JsonLogicLessThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '<=' in logic && logic['<='].length === 2;\nexport const isJsonLogicInArray = (\n logic: unknown\n): logic is JsonLogicInArray<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'in' in logic && Array.isArray(logic.in[1]);\nexport const isJsonLogicInString = (\n logic: unknown\n): logic is JsonLogicInString<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'in' in logic && !Array.isArray(logic.in[1]);\nexport const isJsonLogicAll = (\n logic: unknown\n): logic is JsonLogicAll<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'all' in logic;\nexport const isJsonLogicNone = (\n logic: unknown\n): logic is JsonLogicNone<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'none' in logic;\nexport const isJsonLogicSome = (\n logic: unknown\n): logic is JsonLogicSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'some' in logic;\n\n// \"Between\" operations are special cases of '<' and '<='\nexport const isJsonLogicBetweenExclusive = (logic: unknown): logic is JsonLogicBetweenExclusive =>\n isPojo(logic) && '<' in logic && Array.isArray(logic['<']) && logic['<'].length === 3;\nexport const isJsonLogicBetweenInclusive = (logic: unknown): logic is JsonLogicBetweenInclusive =>\n isPojo(logic) && '<=' in logic && Array.isArray(logic['<=']) && logic['<='].length === 3;\n\n// RQB extensions\nexport const isRQBJsonLogicStartsWith = (logic: unknown): logic is RQBJsonLogicStartsWith =>\n isPojo(logic) && 'startsWith' in logic;\nexport const isRQBJsonLogicEndsWith = (logic: unknown): logic is RQBJsonLogicEndsWith =>\n isPojo(logic) && 'endsWith' in logic;\n\n/**\n * A JsonLogic comparison operand that is a candidate expression subtree: a plain object that\n * is not a variable reference (i.e. an arithmetic/function operation object). The\n * expr-supplied `getExpression` handler decides whether it maps to a known function.\n */\nexport const isJsonLogicExpressionOperand = (logic: unknown): logic is JsonLogicExpressionOperand =>\n isPojo(logic) && !isRQBJsonLogicVar(logic);\n\n// Type guards for unused JsonLogic operations\n\n// import type {\n// JsonLogicCat,\n// JsonLogicDifference,\n// JsonLogicFilter,\n// JsonLogicIf,\n// JsonLogicLog,\n// JsonLogicMap,\n// JsonLogicMax,\n// JsonLogicMerge,\n// JsonLogicMin,\n// JsonLogicMissing,\n// JsonLogicMissingSome,\n// JsonLogicProduct,\n// JsonLogicQuotient,\n// JsonLogicReduce,\n// JsonLogicRemainder,\n// JsonLogicSubstr,\n// JsonLogicSum,\n// } from '../../types';\n//\n// export const isJsonLogicMissing = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMissing<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'missing' in logic;\n// export const isJsonLogicMissingSome = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMissingSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'missing_some' in logic;\n// export const isJsonLogicIf = (logic: RQBJsonLogic): logic is JsonLogicIf =>\n// isPojo(logic) && 'if' in logic;\n// export const isJsonLogicMax = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMax<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'max' in logic;\n// export const isJsonLogicMin = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMin<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'min' in logic;\n// export const isJsonLogicSum = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicSum<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '+' in logic;\n// export const isJsonLogicDifference = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicDifference<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '-' in logic;\n// export const isJsonLogicProduct = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicProduct<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '*' in logic;\n// export const isJsonLogicQuotient = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicQuotient<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '/' in logic;\n// export const isJsonLogicRemainder = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicRemainder<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '%' in logic;\n// export const isJsonLogicMap = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMap<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'map' in logic;\n// export const isJsonLogicFilter = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicFilter<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'filter' in logic;\n// export const isJsonLogicReduce = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicReduce<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'reduce' in logic;\n// export const isJsonLogicMerge = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMerge<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'merge' in logic;\n// export const isJsonLogicCat = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicCat<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'cat' in logic;\n// export const isJsonLogicSubstr = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicSubstr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'substr' in logic;\n// export const isJsonLogicLog = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicLog<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'log' in logic;\n","import type { Except } from 'type-fest';\nimport { defaultOperatorNegationMap } from '../../defaults';\nimport type {\n DefaultOperatorName,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n ExpressionNode,\n MatchConfig,\n RQBJsonLogic,\n RQBJsonLogicVar,\n RuleGroupTypeAny,\n RuleType,\n ValueSource,\n} from '../../types';\nimport type { ParserCommonOptions } from '../../types/import';\nimport { joinWith } from '../arrayUtils';\nimport { convertToIC } from '../convertQuery';\nimport { isRuleGroup, isRuleGroupType } from '../isRuleGroup';\nimport { isPojo } from '../misc';\nimport { objectKeys } from '../objectUtils';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { prepareRuleGroup } from '../prepareQueryObjects';\nimport type { JsonLogicExpressionOperand, ParseJsonLogicExpressionContext } from './types';\nimport {\n isJsonLogicAll,\n isJsonLogicAnd,\n isJsonLogicBetweenExclusive,\n isJsonLogicBetweenInclusive,\n isJsonLogicDoubleNegation,\n isJsonLogicEqual,\n isJsonLogicExpressionOperand,\n isJsonLogicGreaterThan,\n isJsonLogicGreaterThanOrEqual,\n isJsonLogicInArray,\n isJsonLogicInString,\n isJsonLogicLessThan,\n isJsonLogicLessThanOrEqual,\n isJsonLogicNegation,\n isJsonLogicNone,\n isJsonLogicNotEqual,\n isJsonLogicOr,\n isJsonLogicSome,\n isJsonLogicStrictEqual,\n isJsonLogicStrictNotEqual,\n isRQBJsonLogicEndsWith,\n isRQBJsonLogicStartsWith,\n isRQBJsonLogicVar,\n} from './utils';\n\n/**\n * Options object for {@link parseJsonLogic}.\n */\nexport interface ParseJsonLogicOptions extends ParserCommonOptions {\n // oxlint-disable-next-line typescript/no-explicit-any\n jsonLogicOperations?: Record<string, (value: any) => RuleType | RuleGroupTypeAny | false>;\n /**\n * Handler that converts a JsonLogic arithmetic/function operation object into an\n * {@link ExpressionNode}. Return `null` to reject (the rule is dropped). Supplied by\n * `@react-querybuilder/expr` (`expressionParserJsonLogic`). When omitted, expression\n * operands are ignored (rule dropped).\n */\n getExpression?: (\n node: JsonLogicExpressionOperand,\n ctx: ParseJsonLogicExpressionContext\n ) => ExpressionNode | null;\n}\n\nconst emptyRuleGroup: DefaultRuleGroupType = { combinator: 'and', rules: [] };\n\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJsonLogic(rqbJsonLogic: string | RQBJsonLogic): DefaultRuleGroupType;\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: Except<ParseJsonLogicOptions, 'independentCombinators'> & {\n independentCombinators?: false;\n }\n): DefaultRuleGroupType;\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupTypeIC DefaultRuleGroupTypeIC}).\n */\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: Except<ParseJsonLogicOptions, 'independentCombinators'> & {\n independentCombinators: true;\n }\n): DefaultRuleGroupTypeIC;\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: ParseJsonLogicOptions = {}\n): DefaultRuleGroupTypeAny {\n const fieldsFlat = getFieldsArray(options.fields);\n const { getValueSources, listsAsArrays, jsonLogicOperations, getExpression } = options;\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,\n });\n\n const exprCtx: ParseJsonLogicExpressionContext = {\n fieldExists: fieldName => fieldsFlat.length === 0 || fieldsFlat.some(f => f.name === fieldName),\n };\n\n // Overload 1: Always return a rule group or false for the outermost logic object\n function processLogic(logic: RQBJsonLogic, outermost: true): DefaultRuleGroupType | false;\n // Overload 2: If not the outermost object, return value could also be a rule\n function processLogic(\n logic: RQBJsonLogic,\n outermost?: false,\n inSubquery?: boolean\n ): DefaultRuleGroupType | DefaultRuleType | false;\n // Implementation\n function processLogic(\n logic: RQBJsonLogic,\n outermost?: boolean,\n inSubquery?: boolean\n ): DefaultRuleGroupType | DefaultRuleType | false {\n // Bail if the outermost logic is not a plain object\n if (outermost && !isPojo(logic)) {\n return false;\n }\n const [key, keyValue] = Object.entries(logic || {})?.[0] ?? [];\n\n // Custom operations process logic\n if (jsonLogicOperations && objectKeys(jsonLogicOperations).includes(key)) {\n const rule = jsonLogicOperations[key](keyValue) as DefaultRuleType;\n return rule\n ? outermost && !isRuleGroup(rule)\n ? { combinator: 'and', rules: [rule] }\n : rule\n : false;\n }\n\n // Rule groups\n if (isJsonLogicAnd(logic)) {\n return {\n combinator: 'and',\n rules: logic.and.map(l => processLogic(l, false, inSubquery)).filter(Boolean) as (\n | DefaultRuleType\n | DefaultRuleGroupType\n )[],\n };\n } else if (isJsonLogicOr(logic)) {\n return {\n combinator: 'or',\n rules: logic.or.map(l => processLogic(l, false, inSubquery)).filter(Boolean) as (\n | DefaultRuleType\n | DefaultRuleGroupType\n )[],\n };\n } else if (isJsonLogicNegation(logic)) {\n const rule = processLogic(logic['!'], false, inSubquery);\n if (rule) {\n if (\n !isRuleGroupType(rule) &&\n (rule.operator === 'between' ||\n rule.operator === 'in' ||\n rule.operator === 'contains' ||\n rule.operator === 'beginsWith' ||\n rule.operator === 'endsWith')\n ) {\n const newRule = { ...rule, operator: defaultOperatorNegationMap[rule.operator] };\n if (outermost) {\n return { combinator: 'and', rules: [newRule] };\n }\n return newRule;\n } else if (isJsonLogicBetweenExclusive(logic['!']) || isRuleGroupType(rule)) {\n return { ...rule, not: true };\n }\n return { combinator: 'and', rules: [rule], not: true };\n }\n return false;\n } else if (isJsonLogicDoubleNegation(logic)) {\n const rule = processLogic(logic['!!'], false, inSubquery);\n return rule || false;\n }\n\n // All other keys represent rules\n let rule: DefaultRuleType | false = false;\n let field = '';\n let operator: DefaultOperatorName = '=';\n // oxlint-disable-next-line typescript/no-explicit-any\n let value: any = '';\n let valueSource: ValueSource | undefined = undefined;\n\n if (\n // Basic boolean operations\n isJsonLogicEqual(logic) ||\n isJsonLogicStrictEqual(logic) ||\n isJsonLogicNotEqual(logic) ||\n isJsonLogicStrictNotEqual(logic) ||\n isJsonLogicGreaterThan(logic) ||\n isJsonLogicGreaterThanOrEqual(logic) ||\n isJsonLogicLessThan(logic) ||\n isJsonLogicLessThanOrEqual(logic) ||\n isJsonLogicInString(logic) ||\n isRQBJsonLogicStartsWith(logic) ||\n isRQBJsonLogicEndsWith(logic)\n ) {\n const [first, second] = keyValue;\n // Scalar comparisons (not string-match) may carry arithmetic/function expression operands\n const scalarComparison =\n isJsonLogicEqual(logic) ||\n isJsonLogicStrictEqual(logic) ||\n isJsonLogicNotEqual(logic) ||\n isJsonLogicStrictNotEqual(logic) ||\n isJsonLogicGreaterThan(logic) ||\n isJsonLogicGreaterThanOrEqual(logic) ||\n isJsonLogicLessThan(logic) ||\n isJsonLogicLessThanOrEqual(logic);\n const firstIsExpr = isJsonLogicExpressionOperand(first);\n const secondIsExpr = isJsonLogicExpressionOperand(second);\n\n if (getExpression && scalarComparison && (firstIsExpr || secondIsExpr)) {\n // Operator is lhs-first (export never flips), '=='/'===' → '=', '!='/'!==' → '!='\n const exprOperator: DefaultOperatorName =\n isJsonLogicEqual(logic) || isJsonLogicStrictEqual(logic)\n ? '='\n : isJsonLogicNotEqual(logic) || isJsonLogicStrictNotEqual(logic)\n ? '!='\n : (key as DefaultOperatorName);\n\n if (firstIsExpr && secondIsExpr) {\n // expression <op> expression → both sides on lhs/value\n const lhs = getExpression(first, exprCtx);\n const rhs = getExpression(second, exprCtx);\n if (lhs && rhs) {\n rule = {\n field: '',\n operator: exprOperator,\n lhs,\n value: rhs,\n valueSource: 'expression',\n };\n }\n } else if (firstIsExpr && !isPojo(second)) {\n // expression <op> literal → lhs = expression\n const lhs = getExpression(first, exprCtx);\n if (lhs) {\n rule = { field: '', operator: exprOperator, lhs, value: second };\n }\n } else if (isRQBJsonLogicVar(first) && secondIsExpr) {\n // field <op> expression → rhs expression\n const node = getExpression(second, exprCtx);\n if (node && (inSubquery || fieldIsValid(first.var, exprOperator))) {\n rule = {\n field: first.var,\n operator: exprOperator,\n value: node,\n valueSource: 'expression',\n };\n }\n }\n return rule ? (outermost ? { combinator: 'and', rules: [rule] } : rule) : false;\n }\n\n if (isRQBJsonLogicVar(first) && !isPojo(second)) {\n field = first.var;\n value = second;\n } else if (!isPojo(first) && isRQBJsonLogicVar(second)) {\n field = second.var;\n value = first;\n } else if (isRQBJsonLogicVar(first) && isRQBJsonLogicVar(second)) {\n field = first.var;\n value = second.var;\n valueSource = 'field';\n } else {\n return false;\n }\n\n // Translate operator if necessary\n if (isJsonLogicEqual(logic) || isJsonLogicStrictEqual(logic)) {\n operator = value === null ? 'null' : '=';\n } else if (isJsonLogicNotEqual(logic) || isJsonLogicStrictNotEqual(logic)) {\n operator = value === null ? 'notNull' : '!=';\n } else if (isJsonLogicInString(logic)) {\n operator = 'contains';\n } else if (isRQBJsonLogicStartsWith(logic)) {\n operator = 'beginsWith';\n } else if (isRQBJsonLogicEndsWith(logic)) {\n operator = 'endsWith';\n } else {\n operator = key as DefaultOperatorName;\n }\n\n if (\n inSubquery ||\n fieldIsValid(field, operator, valueSource === 'field' ? value : undefined)\n ) {\n rule = { field, operator, value, valueSource };\n }\n } else if (\n (isJsonLogicAll(logic) && isRQBJsonLogicVar(logic['all'][0])) ||\n (isJsonLogicNone(logic) && isRQBJsonLogicVar(logic['none'][0])) ||\n (isJsonLogicSome(logic) && isRQBJsonLogicVar(logic['some'][0]))\n ) {\n // The array coverage functions must have a field as their first element.\n // Otherwise we'd be comparing values to values, which is not supported.\n const match: MatchConfig = {\n mode: isJsonLogicNone(logic) ? 'none' : isJsonLogicSome(logic) ? 'some' : 'all',\n };\n\n // oxlint-disable-next-line typescript/no-explicit-any\n const [{ var: fld }, operation] = (logic as any)[match.mode];\n const matcher = processLogic(operation, false, true);\n\n if (!matcher) return false;\n\n rule = {\n field: fld,\n operator: '=',\n match,\n value: isRuleGroup(matcher) ? matcher : { combinator: 'and', rules: [matcher] },\n };\n } else if (isJsonLogicBetweenExclusive(logic) && isRQBJsonLogicVar(logic['<'][1])) {\n field = logic['<'][1].var;\n const values = [logic['<'][0], logic['<'][2]];\n // v8 ignore else\n if (\n values.every(v => isRQBJsonLogicVar(v)) ||\n values.every(el => typeof el === 'string') ||\n values.every(el => typeof el === 'number') ||\n values.every(el => typeof el === 'boolean')\n ) {\n return (\n processLogic({\n and: [{ '>': [{ var: field }, values[0]] }, { '<': [{ var: field }, values[1]] }],\n }) || /* v8 ignore start -- @preserve */ false /* v8 ignore stop -- @preserve */\n );\n }\n } else if (isJsonLogicBetweenInclusive(logic) && isRQBJsonLogicVar(logic['<='][1])) {\n field = logic['<='][1].var;\n operator = 'between';\n const values = [logic['<='][0], logic['<='][2]];\n if (\n getExpression &&\n (isJsonLogicExpressionOperand(values[0]) || isJsonLogicExpressionOperand(values[1]))\n ) {\n // field between expression and expression → expression-sourced bounds\n const from = getExpression(values[0], exprCtx);\n const to = getExpression(values[1], exprCtx);\n if (from && to && fieldIsValid(field, operator)) {\n rule = { field, operator, value: [from, to], valueSource: 'expression' };\n }\n return rule ? (outermost ? { combinator: 'and', rules: [rule] } : rule) : false;\n }\n if (logic['<='].every(v => isRQBJsonLogicVar(v))) {\n const vars = values as RQBJsonLogicVar[];\n valueSource = 'field';\n const fieldList = vars.map(el => el.var).filter(sf => fieldIsValid(field, operator, sf));\n value = listsAsArrays ? fieldList : joinWith(fieldList, ',');\n } else {\n // v8 ignore else\n if (\n values.every(el => typeof el === 'string') ||\n values.every(el => typeof el === 'number') ||\n values.every(el => typeof el === 'boolean')\n ) {\n value = listsAsArrays\n ? values\n : joinWith(\n values.map(el => `${el}`),\n ','\n );\n }\n }\n\n if (fieldIsValid(field, operator) && value.length >= 2) {\n rule = { field, operator, value, valueSource };\n }\n } else if (isJsonLogicInArray(logic) && isRQBJsonLogicVar(keyValue[0])) {\n field = keyValue[0].var;\n operator = 'in';\n if (logic.in[1].every(v => isRQBJsonLogicVar(v))) {\n valueSource = 'field';\n const fieldList = logic.in[1]\n .map(el => el.var)\n .filter(sf => fieldIsValid(field, operator, sf));\n value = listsAsArrays ? fieldList : joinWith(fieldList, ',');\n } else {\n // v8 ignore else\n if (\n logic.in[1].every(el => typeof el === 'string') ||\n logic.in[1].every(el => typeof el === 'number') ||\n logic.in[1].every(el => typeof el === 'boolean')\n ) {\n value = listsAsArrays\n ? logic.in[1]\n : joinWith(\n logic.in[1].map(el => `${el}`),\n ','\n );\n }\n }\n\n // v8 ignore else\n if (value.length > 0) {\n rule = { field, operator, value, valueSource };\n }\n }\n\n return rule ? (outermost ? { combinator: 'and', rules: [rule] } : rule) : false;\n }\n\n const prepare = options.generateIDs ? prepareRuleGroup : <T>(g: T) => g;\n\n let logicRoot = rqbJsonLogic;\n if (typeof rqbJsonLogic === 'string') {\n try {\n logicRoot = JSON.parse(rqbJsonLogic);\n } catch {\n return prepare(emptyRuleGroup);\n }\n }\n\n const result = processLogic(logicRoot, true);\n const finalQuery: DefaultRuleGroupType = result || emptyRuleGroup;\n return prepare(options.independentCombinators ? convertToIC(finalQuery) : finalQuery);\n}\n\nexport { parseJsonLogic };\n"],"mappings":";;;;;;;AA+BA,MAAa,kBACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,SAAS;AAC5B,MAAa,qBAAqB,UAChC,eAAe,KAAK,KAAK,OAAO,MAAM,QAAQ;AAChD,MAAa,oBAAoB,UAC/BA,oBAAAA,OAAO,KAAK,KAAK,QAAQ;AAC3B,MAAa,0BAA0B,UACrCA,oBAAAA,OAAO,KAAK,KAAK,SAAS;AAC5B,MAAa,uBAAuB,UAClCA,oBAAAA,OAAO,KAAK,KAAK,QAAQ;AAC3B,MAAa,6BAA6B,UACxCA,oBAAAA,OAAO,KAAK,KAAK,SAAS;AAC5B,MAAa,uBAAuB,UAClCA,oBAAAA,OAAO,KAAK,KAAK,OAAO;AAC1B,MAAa,6BAA6B,UACxCA,oBAAAA,OAAO,KAAK,KAAK,QAAQ;AAC3B,MAAa,iBACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,QAAQ;AAC3B,MAAa,kBACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,SAAS;AAC5B,MAAa,0BACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,OAAO;AAC1B,MAAa,iCACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,QAAQ;AAC3B,MAAa,uBACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,OAAO,SAAS,MAAM,IAAI,CAAC,WAAW;AACzD,MAAa,8BACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,QAAQ,SAAS,MAAM,KAAK,CAAC,WAAW;AAC3D,MAAa,sBACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,QAAQ,SAAS,MAAM,QAAQ,MAAM,GAAG,EAAE;AAC7D,MAAa,uBACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,QAAQ,SAAS,CAAC,MAAM,QAAQ,MAAM,GAAG,EAAE;AAC9D,MAAa,kBACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,SAAS;AAC5B,MAAa,mBACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,UAAU;AAC7B,MAAa,mBACX,UAEAA,oBAAAA,OAAO,KAAK,KAAK,UAAU;AAG7B,MAAa,+BAA+B,UAC1CA,oBAAAA,OAAO,KAAK,KAAK,OAAO,SAAS,MAAM,QAAQ,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC,WAAW;AACtF,MAAa,+BAA+B,UAC1CA,oBAAAA,OAAO,KAAK,KAAK,QAAQ,SAAS,MAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,KAAK,CAAC,WAAW;AAGzF,MAAa,4BAA4B,UACvCA,oBAAAA,OAAO,KAAK,KAAK,gBAAgB;AACnC,MAAa,0BAA0B,UACrCA,oBAAAA,OAAO,KAAK,KAAK,cAAc;;;;;;AAOjC,MAAa,gCAAgC,UAC3CA,oBAAAA,OAAO,KAAK,KAAK,CAAC,kBAAkB,KAAK;;;AC3C3C,MAAM,iBAAuC;CAAE,YAAY;CAAO,OAAO,CAAC;AAAE;AA8B5E,SAAS,eACP,cACA,UAAiC,CAAC,GACT;CACzB,MAAM,aAAaC,4BAAAA,eAAe,QAAQ,MAAM;CAChD,MAAM,EAAE,iBAAiB,eAAe,qBAAqB,kBAAkB;CAE/E,MAAM,gBACJ,WACA,UACA,yBAEAC,4BAAAA,iBAAiB;EACf;EACA;EACA;EACA;EACA;CACF,CAAC;CAEH,MAAM,UAA2C,EAC/C,cAAa,cAAa,WAAW,WAAW,KAAK,WAAW,MAAK,MAAK,EAAE,SAAS,SAAS,EAChG;CAWA,SAAS,aACP,OACA,WACA,YACgD;EAEhD,IAAI,aAAa,CAACC,oBAAAA,OAAO,KAAK,GAC5B,OAAO;EAET,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EAG7D,IAAI,uBAAuBC,oBAAAA,WAAW,mBAAmB,CAAC,CAAC,SAAS,GAAG,GAAG;GACxE,MAAM,OAAO,oBAAoB,IAAI,CAAC,QAAQ;GAC9C,OAAO,OACH,aAAa,CAACC,oBAAAA,YAAY,IAAI,IAC5B;IAAE,YAAY;IAAO,OAAO,CAAC,IAAI;GAAE,IACnC,OACF;EACN;EAGA,IAAI,eAAe,KAAK,GACtB,OAAO;GACL,YAAY;GACZ,OAAO,MAAM,IAAI,KAAI,MAAK,aAAa,GAAG,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO;EAI9E;OACK,IAAI,cAAc,KAAK,GAC5B,OAAO;GACL,YAAY;GACZ,OAAO,MAAM,GAAG,KAAI,MAAK,aAAa,GAAG,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO;EAI7E;OACK,IAAI,oBAAoB,KAAK,GAAG;GACrC,MAAM,OAAO,aAAa,MAAM,MAAM,OAAO,UAAU;GACvD,IAAI,MAAM;IACR,IACE,CAACC,oBAAAA,gBAAgB,IAAI,MACpB,KAAK,aAAa,aACjB,KAAK,aAAa,QAClB,KAAK,aAAa,cAClB,KAAK,aAAa,gBAClB,KAAK,aAAa,aACpB;KACA,MAAM,UAAU;MAAE,GAAG;MAAM,UAAUC,cAAAA,2BAA2B,KAAK;KAAU;KAC/E,IAAI,WACF,OAAO;MAAE,YAAY;MAAO,OAAO,CAAC,OAAO;KAAE;KAE/C,OAAO;IACT,OAAO,IAAI,4BAA4B,MAAM,IAAI,KAAKD,oBAAAA,gBAAgB,IAAI,GACxE,OAAO;KAAE,GAAG;KAAM,KAAK;IAAK;IAE9B,OAAO;KAAE,YAAY;KAAO,OAAO,CAAC,IAAI;KAAG,KAAK;IAAK;GACvD;GACA,OAAO;EACT,OAAO,IAAI,0BAA0B,KAAK,GAExC,OADa,aAAa,MAAM,OAAO,OAAO,UACpC,KAAK;EAIjB,IAAI,OAAgC;EACpC,IAAI,QAAQ;EACZ,IAAI,WAAgC;EAEpC,IAAI,QAAa;EACjB,IAAI,cAAuC,KAAA;EAE3C,IAEE,iBAAiB,KAAK,KACtB,uBAAuB,KAAK,KAC5B,oBAAoB,KAAK,KACzB,0BAA0B,KAAK,KAC/B,uBAAuB,KAAK,KAC5B,8BAA8B,KAAK,KACnC,oBAAoB,KAAK,KACzB,2BAA2B,KAAK,KAChC,oBAAoB,KAAK,KACzB,yBAAyB,KAAK,KAC9B,uBAAuB,KAAK,GAC5B;GACA,MAAM,CAAC,OAAO,UAAU;GAExB,MAAM,mBACJ,iBAAiB,KAAK,KACtB,uBAAuB,KAAK,KAC5B,oBAAoB,KAAK,KACzB,0BAA0B,KAAK,KAC/B,uBAAuB,KAAK,KAC5B,8BAA8B,KAAK,KACnC,oBAAoB,KAAK,KACzB,2BAA2B,KAAK;GAClC,MAAM,cAAc,6BAA6B,KAAK;GACtD,MAAM,eAAe,6BAA6B,MAAM;GAExD,IAAI,iBAAiB,qBAAqB,eAAe,eAAe;IAEtE,MAAM,eACJ,iBAAiB,KAAK,KAAK,uBAAuB,KAAK,IACnD,MACA,oBAAoB,KAAK,KAAK,0BAA0B,KAAK,IAC3D,OACC;IAET,IAAI,eAAe,cAAc;KAE/B,MAAM,MAAM,cAAc,OAAO,OAAO;KACxC,MAAM,MAAM,cAAc,QAAQ,OAAO;KACzC,IAAI,OAAO,KACT,OAAO;MACL,OAAO;MACP,UAAU;MACV;MACA,OAAO;MACP,aAAa;KACf;IAEJ,OAAO,IAAI,eAAe,CAACH,oBAAAA,OAAO,MAAM,GAAG;KAEzC,MAAM,MAAM,cAAc,OAAO,OAAO;KACxC,IAAI,KACF,OAAO;MAAE,OAAO;MAAI,UAAU;MAAc;MAAK,OAAO;KAAO;IAEnE,OAAO,IAAI,kBAAkB,KAAK,KAAK,cAAc;KAEnD,MAAM,OAAO,cAAc,QAAQ,OAAO;KAC1C,IAAI,SAAS,cAAc,aAAa,MAAM,KAAK,YAAY,IAC7D,OAAO;MACL,OAAO,MAAM;MACb,UAAU;MACV,OAAO;MACP,aAAa;KACf;IAEJ;IACA,OAAO,OAAQ,YAAY;KAAE,YAAY;KAAO,OAAO,CAAC,IAAI;IAAE,IAAI,OAAQ;GAC5E;GAEA,IAAI,kBAAkB,KAAK,KAAK,CAACA,oBAAAA,OAAO,MAAM,GAAG;IAC/C,QAAQ,MAAM;IACd,QAAQ;GACV,OAAO,IAAI,CAACA,oBAAAA,OAAO,KAAK,KAAK,kBAAkB,MAAM,GAAG;IACtD,QAAQ,OAAO;IACf,QAAQ;GACV,OAAO,IAAI,kBAAkB,KAAK,KAAK,kBAAkB,MAAM,GAAG;IAChE,QAAQ,MAAM;IACd,QAAQ,OAAO;IACf,cAAc;GAChB,OACE,OAAO;GAIT,IAAI,iBAAiB,KAAK,KAAK,uBAAuB,KAAK,GACzD,WAAW,UAAU,OAAO,SAAS;QAChC,IAAI,oBAAoB,KAAK,KAAK,0BAA0B,KAAK,GACtE,WAAW,UAAU,OAAO,YAAY;QACnC,IAAI,oBAAoB,KAAK,GAClC,WAAW;QACN,IAAI,yBAAyB,KAAK,GACvC,WAAW;QACN,IAAI,uBAAuB,KAAK,GACrC,WAAW;QAEX,WAAW;GAGb,IACE,cACA,aAAa,OAAO,UAAU,gBAAgB,UAAU,QAAQ,KAAA,CAAS,GAEzE,OAAO;IAAE;IAAO;IAAU;IAAO;GAAY;EAEjD,OAAO,IACJ,eAAe,KAAK,KAAK,kBAAkB,MAAM,MAAM,CAAC,EAAE,KAC1D,gBAAgB,KAAK,KAAK,kBAAkB,MAAM,OAAO,CAAC,EAAE,KAC5D,gBAAgB,KAAK,KAAK,kBAAkB,MAAM,OAAO,CAAC,EAAE,GAC7D;GAGA,MAAM,QAAqB,EACzB,MAAM,gBAAgB,KAAK,IAAI,SAAS,gBAAgB,KAAK,IAAI,SAAS,MAC5E;GAGA,MAAM,CAAC,EAAE,KAAK,OAAO,aAAc,MAAc,MAAM;GACvD,MAAM,UAAU,aAAa,WAAW,OAAO,IAAI;GAEnD,IAAI,CAAC,SAAS,OAAO;GAErB,OAAO;IACL,OAAO;IACP,UAAU;IACV;IACA,OAAOE,oBAAAA,YAAY,OAAO,IAAI,UAAU;KAAE,YAAY;KAAO,OAAO,CAAC,OAAO;IAAE;GAChF;EACF,OAAO,IAAI,4BAA4B,KAAK,KAAK,kBAAkB,MAAM,IAAI,CAAC,EAAE,GAAG;GACjF,QAAQ,MAAM,IAAI,CAAC,EAAE,CAAC;GACtB,MAAM,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;;GAE5C,IACE,OAAO,OAAM,MAAK,kBAAkB,CAAC,CAAC,KACtC,OAAO,OAAM,OAAM,OAAO,OAAO,QAAQ,KACzC,OAAO,OAAM,OAAM,OAAO,OAAO,QAAQ,KACzC,OAAO,OAAM,OAAM,OAAO,OAAO,SAAS,GAE1C,OACE,aAAa,EACX,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,EAAE,EAAE,CAAC,EAClF,CAAC,wCAAwC;EAG/C,OAAO,IAAI,4BAA4B,KAAK,KAAK,kBAAkB,MAAM,KAAK,CAAC,EAAE,GAAG;GAClF,QAAQ,MAAM,KAAK,CAAC,EAAE,CAAC;GACvB,WAAW;GACX,MAAM,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;GAC9C,IACE,kBACC,6BAA6B,OAAO,EAAE,KAAK,6BAA6B,OAAO,EAAE,IAClF;IAEA,MAAM,OAAO,cAAc,OAAO,IAAI,OAAO;IAC7C,MAAM,KAAK,cAAc,OAAO,IAAI,OAAO;IAC3C,IAAI,QAAQ,MAAM,aAAa,OAAO,QAAQ,GAC5C,OAAO;KAAE;KAAO;KAAU,OAAO,CAAC,MAAM,EAAE;KAAG,aAAa;IAAa;IAEzE,OAAO,OAAQ,YAAY;KAAE,YAAY;KAAO,OAAO,CAAC,IAAI;IAAE,IAAI,OAAQ;GAC5E;GACA,IAAI,MAAM,KAAK,CAAC,OAAM,MAAK,kBAAkB,CAAC,CAAC,GAAG;IAChD,MAAM,OAAO;IACb,cAAc;IACd,MAAM,YAAY,KAAK,KAAI,OAAM,GAAG,GAAG,CAAC,CAAC,QAAO,OAAM,aAAa,OAAO,UAAU,EAAE,CAAC;IACvF,QAAQ,gBAAgB,YAAYG,cAAAA,SAAS,WAAW,GAAG;GAC7D,OAEE,IACE,OAAO,OAAM,OAAM,OAAO,OAAO,QAAQ,KACzC,OAAO,OAAM,OAAM,OAAO,OAAO,QAAQ,KACzC,OAAO,OAAM,OAAM,OAAO,OAAO,SAAS,GAE1C,QAAQ,gBACJ,SACAA,cAAAA,SACE,OAAO,KAAI,OAAM,GAAG,IAAI,GACxB,GACF;GAIR,IAAI,aAAa,OAAO,QAAQ,KAAK,MAAM,UAAU,GACnD,OAAO;IAAE;IAAO;IAAU;IAAO;GAAY;EAEjD,OAAO,IAAI,mBAAmB,KAAK,KAAK,kBAAkB,SAAS,EAAE,GAAG;GACtE,QAAQ,SAAS,EAAE,CAAC;GACpB,WAAW;GACX,IAAI,MAAM,GAAG,EAAE,CAAC,OAAM,MAAK,kBAAkB,CAAC,CAAC,GAAG;IAChD,cAAc;IACd,MAAM,YAAY,MAAM,GAAG,EAAE,CAC1B,KAAI,OAAM,GAAG,GAAG,CAAC,CACjB,QAAO,OAAM,aAAa,OAAO,UAAU,EAAE,CAAC;IACjD,QAAQ,gBAAgB,YAAYA,cAAAA,SAAS,WAAW,GAAG;GAC7D,OAEE,IACE,MAAM,GAAG,EAAE,CAAC,OAAM,OAAM,OAAO,OAAO,QAAQ,KAC9C,MAAM,GAAG,EAAE,CAAC,OAAM,OAAM,OAAO,OAAO,QAAQ,KAC9C,MAAM,GAAG,EAAE,CAAC,OAAM,OAAM,OAAO,OAAO,SAAS,GAE/C,QAAQ,gBACJ,MAAM,GAAG,KACTA,cAAAA,SACE,MAAM,GAAG,EAAE,CAAC,KAAI,OAAM,GAAG,IAAI,GAC7B,GACF;;GAKR,IAAI,MAAM,SAAS,GACjB,OAAO;IAAE;IAAO;IAAU;IAAO;GAAY;EAEjD;EAEA,OAAO,OAAQ,YAAY;GAAE,YAAY;GAAO,OAAO,CAAC,IAAI;EAAE,IAAI,OAAQ;CAC5E;CAEA,MAAM,UAAU,QAAQ,cAAcC,4BAAAA,oBAAuB,MAAS;CAEtE,IAAI,YAAY;CAChB,IAAI,OAAO,iBAAiB,UAC1B,IAAI;EACF,YAAY,KAAK,MAAM,YAAY;CACrC,QAAQ;EACN,OAAO,QAAQ,cAAc;CAC/B;CAIF,MAAM,aADS,aAAa,WAAW,IACO,KAAK;CACnD,OAAO,QAAQ,QAAQ,yBAAyBC,qBAAAA,YAAY,UAAU,IAAI,UAAU;AACtF"}
1
+ {"version":3,"file":"parseJsonLogic.js","names":["isPojo","getFieldsArray","fieldIsValidUtil","isPojo","objectKeys","isRuleGroup","isRuleGroupType","defaultOperatorNegationMap","joinWith","prepareRuleGroup","convertToIC"],"sources":["../src/utils/parseJsonLogic/utils.ts","../src/utils/parseJsonLogic/parseJsonLogic.ts"],"sourcesContent":["import type {\n JsonLogicAll,\n JsonLogicAnd,\n JsonLogicDoubleNegation,\n JsonLogicEqual,\n JsonLogicGreaterThan,\n JsonLogicGreaterThanOrEqual,\n JsonLogicInArray,\n JsonLogicInString,\n JsonLogicLessThan,\n JsonLogicLessThanOrEqual,\n JsonLogicNegation,\n JsonLogicNone,\n JsonLogicNotEqual,\n JsonLogicOr,\n JsonLogicSome,\n JsonLogicStrictEqual,\n JsonLogicStrictNotEqual,\n JsonLogicVar,\n RQBJsonLogicEndsWith,\n RQBJsonLogicStartsWith,\n RQBJsonLogicVar,\n} from '../../types';\nimport { isPojo } from '../misc';\nimport type {\n JsonLogicBetweenExclusive,\n JsonLogicBetweenInclusive,\n JsonLogicExpressionOperand,\n} from './types';\n\n// Standard JsonLogic operations\nexport const isJsonLogicVar = (\n logic: unknown\n): logic is JsonLogicVar<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'var' in logic;\nexport const isRQBJsonLogicVar = (logic: unknown): logic is RQBJsonLogicVar =>\n isJsonLogicVar(logic) && typeof logic.var === 'string';\nexport const isJsonLogicEqual = (logic: unknown): logic is JsonLogicEqual =>\n isPojo(logic) && '==' in logic;\nexport const isJsonLogicStrictEqual = (logic: unknown): logic is JsonLogicStrictEqual =>\n isPojo(logic) && '===' in logic;\nexport const isJsonLogicNotEqual = (logic: unknown): logic is JsonLogicNotEqual =>\n isPojo(logic) && '!=' in logic;\nexport const isJsonLogicStrictNotEqual = (logic: unknown): logic is JsonLogicStrictNotEqual =>\n isPojo(logic) && '!==' in logic;\nexport const isJsonLogicNegation = (logic: unknown): logic is JsonLogicNegation =>\n isPojo(logic) && '!' in logic;\nexport const isJsonLogicDoubleNegation = (logic: unknown): logic is JsonLogicDoubleNegation =>\n isPojo(logic) && '!!' in logic;\nexport const isJsonLogicOr = (\n logic: unknown\n): logic is JsonLogicOr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'or' in logic;\nexport const isJsonLogicAnd = (\n logic: unknown\n): logic is JsonLogicAnd<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'and' in logic;\nexport const isJsonLogicGreaterThan = (\n logic: unknown\n): logic is JsonLogicGreaterThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '>' in logic;\nexport const isJsonLogicGreaterThanOrEqual = (\n logic: unknown\n): logic is JsonLogicGreaterThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '>=' in logic;\nexport const isJsonLogicLessThan = (\n logic: unknown\n): logic is JsonLogicLessThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '<' in logic && logic['<'].length === 2;\nexport const isJsonLogicLessThanOrEqual = (\n logic: unknown\n): logic is JsonLogicLessThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '<=' in logic && logic['<='].length === 2;\nexport const isJsonLogicInArray = (\n logic: unknown\n): logic is JsonLogicInArray<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'in' in logic && Array.isArray(logic.in[1]);\nexport const isJsonLogicInString = (\n logic: unknown\n): logic is JsonLogicInString<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'in' in logic && !Array.isArray(logic.in[1]);\nexport const isJsonLogicAll = (\n logic: unknown\n): logic is JsonLogicAll<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'all' in logic;\nexport const isJsonLogicNone = (\n logic: unknown\n): logic is JsonLogicNone<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'none' in logic;\nexport const isJsonLogicSome = (\n logic: unknown\n): logic is JsonLogicSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'some' in logic;\n\n// \"Between\" operations are special cases of '<' and '<='\nexport const isJsonLogicBetweenExclusive = (logic: unknown): logic is JsonLogicBetweenExclusive =>\n isPojo(logic) && '<' in logic && Array.isArray(logic['<']) && logic['<'].length === 3;\nexport const isJsonLogicBetweenInclusive = (logic: unknown): logic is JsonLogicBetweenInclusive =>\n isPojo(logic) && '<=' in logic && Array.isArray(logic['<=']) && logic['<='].length === 3;\n\n// RQB extensions\nexport const isRQBJsonLogicStartsWith = (logic: unknown): logic is RQBJsonLogicStartsWith =>\n isPojo(logic) && 'startsWith' in logic;\nexport const isRQBJsonLogicEndsWith = (logic: unknown): logic is RQBJsonLogicEndsWith =>\n isPojo(logic) && 'endsWith' in logic;\n\n/**\n * A JsonLogic comparison operand that is a candidate expression subtree: a plain object that\n * is not a variable reference (i.e. an arithmetic/function operation object). The\n * expr-supplied `getExpression` handler decides whether it maps to a known function.\n */\nexport const isJsonLogicExpressionOperand = (logic: unknown): logic is JsonLogicExpressionOperand =>\n isPojo(logic) && !isRQBJsonLogicVar(logic);\n\n// Type guards for unused JsonLogic operations\n\n// import type {\n// JsonLogicCat,\n// JsonLogicDifference,\n// JsonLogicFilter,\n// JsonLogicIf,\n// JsonLogicLog,\n// JsonLogicMap,\n// JsonLogicMax,\n// JsonLogicMerge,\n// JsonLogicMin,\n// JsonLogicMissing,\n// JsonLogicMissingSome,\n// JsonLogicProduct,\n// JsonLogicQuotient,\n// JsonLogicReduce,\n// JsonLogicRemainder,\n// JsonLogicSubstr,\n// JsonLogicSum,\n// } from '../../types';\n//\n// export const isJsonLogicMissing = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMissing<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'missing' in logic;\n// export const isJsonLogicMissingSome = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMissingSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'missing_some' in logic;\n// export const isJsonLogicIf = (logic: RQBJsonLogic): logic is JsonLogicIf =>\n// isPojo(logic) && 'if' in logic;\n// export const isJsonLogicMax = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMax<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'max' in logic;\n// export const isJsonLogicMin = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMin<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'min' in logic;\n// export const isJsonLogicSum = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicSum<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '+' in logic;\n// export const isJsonLogicDifference = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicDifference<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '-' in logic;\n// export const isJsonLogicProduct = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicProduct<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '*' in logic;\n// export const isJsonLogicQuotient = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicQuotient<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '/' in logic;\n// export const isJsonLogicRemainder = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicRemainder<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '%' in logic;\n// export const isJsonLogicMap = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMap<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'map' in logic;\n// export const isJsonLogicFilter = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicFilter<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'filter' in logic;\n// export const isJsonLogicReduce = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicReduce<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'reduce' in logic;\n// export const isJsonLogicMerge = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMerge<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'merge' in logic;\n// export const isJsonLogicCat = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicCat<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'cat' in logic;\n// export const isJsonLogicSubstr = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicSubstr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'substr' in logic;\n// export const isJsonLogicLog = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicLog<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'log' in logic;\n","import type { Except } from 'type-fest';\nimport { defaultOperatorNegationMap } from '../../defaults';\nimport type {\n DefaultOperatorName,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n ExpressionNode,\n MatchConfig,\n RQBJsonLogic,\n RQBJsonLogicVar,\n RuleGroupTypeAny,\n RuleType,\n ValueSource,\n} from '../../types';\nimport type { ParserCommonOptions } from '../../types/import';\nimport { joinWith } from '../arrayUtils';\nimport { convertToIC } from '../convertQuery';\nimport { isRuleGroup, isRuleGroupType } from '../isRuleGroup';\nimport { isPojo } from '../misc';\nimport { objectKeys } from '../objectUtils';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { prepareRuleGroup } from '../prepareQueryObjects';\nimport type { JsonLogicExpressionOperand, ParseJsonLogicExpressionContext } from './types';\nimport {\n isJsonLogicAll,\n isJsonLogicAnd,\n isJsonLogicBetweenExclusive,\n isJsonLogicBetweenInclusive,\n isJsonLogicDoubleNegation,\n isJsonLogicEqual,\n isJsonLogicExpressionOperand,\n isJsonLogicGreaterThan,\n isJsonLogicGreaterThanOrEqual,\n isJsonLogicInArray,\n isJsonLogicInString,\n isJsonLogicLessThan,\n isJsonLogicLessThanOrEqual,\n isJsonLogicNegation,\n isJsonLogicNone,\n isJsonLogicNotEqual,\n isJsonLogicOr,\n isJsonLogicSome,\n isJsonLogicStrictEqual,\n isJsonLogicStrictNotEqual,\n isRQBJsonLogicEndsWith,\n isRQBJsonLogicStartsWith,\n isRQBJsonLogicVar,\n} from './utils';\n\n/**\n * Options object for {@link parseJsonLogic}.\n */\nexport interface ParseJsonLogicOptions extends ParserCommonOptions {\n // oxlint-disable-next-line typescript/no-explicit-any\n jsonLogicOperations?: Record<string, (value: any) => RuleType | RuleGroupTypeAny | false>;\n /**\n * Handler that converts a JsonLogic arithmetic/function operation object into an\n * {@link ExpressionNode}. Return `null` to reject (the rule is dropped). Supplied by\n * `@react-querybuilder/expr` (`expressionParserJsonLogic`). When omitted, expression\n * operands are ignored (rule dropped).\n */\n getExpression?: (\n node: JsonLogicExpressionOperand,\n ctx: ParseJsonLogicExpressionContext\n ) => ExpressionNode | null;\n}\n\nconst emptyRuleGroup: DefaultRuleGroupType = { combinator: 'and', rules: [] };\n\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJsonLogic(rqbJsonLogic: string | RQBJsonLogic): DefaultRuleGroupType;\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: Except<ParseJsonLogicOptions, 'independentCombinators'> & {\n independentCombinators?: false;\n }\n): DefaultRuleGroupType;\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupTypeIC DefaultRuleGroupTypeIC}).\n */\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: Except<ParseJsonLogicOptions, 'independentCombinators'> & {\n independentCombinators: true;\n }\n): DefaultRuleGroupTypeIC;\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: ParseJsonLogicOptions = {}\n): DefaultRuleGroupTypeAny {\n const fieldsFlat = getFieldsArray(options.fields);\n const { getValueSources, listsAsArrays, jsonLogicOperations, getExpression } = options;\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,\n });\n\n const exprCtx: ParseJsonLogicExpressionContext = {\n fieldExists: fieldName => fieldsFlat.length === 0 || fieldsFlat.some(f => f.name === fieldName),\n };\n\n // Overload 1: Always return a rule group or false for the outermost logic object\n function processLogic(logic: RQBJsonLogic, outermost: true): DefaultRuleGroupType | false;\n // Overload 2: If not the outermost object, return value could also be a rule\n function processLogic(\n logic: RQBJsonLogic,\n outermost?: false,\n inSubquery?: boolean\n ): DefaultRuleGroupType | DefaultRuleType | false;\n // Implementation\n function processLogic(\n logic: RQBJsonLogic,\n outermost?: boolean,\n inSubquery?: boolean\n ): DefaultRuleGroupType | DefaultRuleType | false {\n // Bail if the outermost logic is not a plain object\n if (outermost && !isPojo(logic)) {\n return false;\n }\n const [key, keyValue] = Object.entries(logic || {})?.[0] ?? [];\n\n // Custom operations process logic\n if (jsonLogicOperations && objectKeys(jsonLogicOperations).includes(key)) {\n const rule = jsonLogicOperations[key](keyValue) as DefaultRuleType;\n return rule\n ? outermost && !isRuleGroup(rule)\n ? { combinator: 'and', rules: [rule] }\n : rule\n : false;\n }\n\n // Rule groups\n if (isJsonLogicAnd(logic)) {\n return {\n combinator: 'and',\n rules: logic.and.map(l => processLogic(l, false, inSubquery)).filter(Boolean) as (\n | DefaultRuleType\n | DefaultRuleGroupType\n )[],\n };\n } else if (isJsonLogicOr(logic)) {\n return {\n combinator: 'or',\n rules: logic.or.map(l => processLogic(l, false, inSubquery)).filter(Boolean) as (\n | DefaultRuleType\n | DefaultRuleGroupType\n )[],\n };\n } else if (isJsonLogicNegation(logic)) {\n const rule = processLogic(logic['!'], false, inSubquery);\n if (rule) {\n if (\n !isRuleGroupType(rule) &&\n (rule.operator === 'between' ||\n rule.operator === 'in' ||\n rule.operator === 'contains' ||\n rule.operator === 'beginsWith' ||\n rule.operator === 'endsWith')\n ) {\n const newRule = { ...rule, operator: defaultOperatorNegationMap[rule.operator] };\n if (outermost) {\n return { combinator: 'and', rules: [newRule] };\n }\n return newRule;\n } else if (isJsonLogicBetweenExclusive(logic['!']) || isRuleGroupType(rule)) {\n return { ...rule, not: true };\n }\n return { combinator: 'and', rules: [rule], not: true };\n }\n return false;\n } else if (isJsonLogicDoubleNegation(logic)) {\n const rule = processLogic(logic['!!'], false, inSubquery);\n return rule || false;\n }\n\n // All other keys represent rules\n let rule: DefaultRuleType | false = false;\n let field = '';\n let operator: DefaultOperatorName = '=';\n // oxlint-disable-next-line typescript/no-explicit-any\n let value: any = '';\n let valueSource: ValueSource | undefined = undefined;\n\n if (\n // Basic boolean operations\n isJsonLogicEqual(logic) ||\n isJsonLogicStrictEqual(logic) ||\n isJsonLogicNotEqual(logic) ||\n isJsonLogicStrictNotEqual(logic) ||\n isJsonLogicGreaterThan(logic) ||\n isJsonLogicGreaterThanOrEqual(logic) ||\n isJsonLogicLessThan(logic) ||\n isJsonLogicLessThanOrEqual(logic) ||\n isJsonLogicInString(logic) ||\n isRQBJsonLogicStartsWith(logic) ||\n isRQBJsonLogicEndsWith(logic)\n ) {\n const [first, second] = keyValue;\n // Scalar comparisons (not string-match) may carry arithmetic/function expression operands\n const scalarComparison =\n isJsonLogicEqual(logic) ||\n isJsonLogicStrictEqual(logic) ||\n isJsonLogicNotEqual(logic) ||\n isJsonLogicStrictNotEqual(logic) ||\n isJsonLogicGreaterThan(logic) ||\n isJsonLogicGreaterThanOrEqual(logic) ||\n isJsonLogicLessThan(logic) ||\n isJsonLogicLessThanOrEqual(logic);\n const firstIsExpr = isJsonLogicExpressionOperand(first);\n const secondIsExpr = isJsonLogicExpressionOperand(second);\n\n if (getExpression && scalarComparison && (firstIsExpr || secondIsExpr)) {\n // Operator is lhs-first (export never flips), '=='/'===' → '=', '!='/'!==' → '!='\n const exprOperator: DefaultOperatorName =\n isJsonLogicEqual(logic) || isJsonLogicStrictEqual(logic)\n ? '='\n : isJsonLogicNotEqual(logic) || isJsonLogicStrictNotEqual(logic)\n ? '!='\n : (key as DefaultOperatorName);\n\n if (firstIsExpr && secondIsExpr) {\n // expression <op> expression → both sides on lhs/value\n const lhs = getExpression(first, exprCtx);\n const rhs = getExpression(second, exprCtx);\n if (lhs && rhs) {\n rule = {\n field: '',\n operator: exprOperator,\n lhs,\n value: rhs,\n valueSource: 'expression',\n };\n }\n } else if (firstIsExpr && !isPojo(second)) {\n // expression <op> literal → lhs = expression\n const lhs = getExpression(first, exprCtx);\n if (lhs) {\n rule = { field: '', operator: exprOperator, lhs, value: second };\n }\n } else if (isRQBJsonLogicVar(first) && secondIsExpr) {\n // field <op> expression → rhs expression\n const node = getExpression(second, exprCtx);\n if (node && (inSubquery || fieldIsValid(first.var, exprOperator))) {\n rule = {\n field: first.var,\n operator: exprOperator,\n value: node,\n valueSource: 'expression',\n };\n }\n }\n return rule ? (outermost ? { combinator: 'and', rules: [rule] } : rule) : false;\n }\n\n if (isRQBJsonLogicVar(first) && !isPojo(second)) {\n field = first.var;\n value = second;\n } else if (!isPojo(first) && isRQBJsonLogicVar(second)) {\n field = second.var;\n value = first;\n } else if (isRQBJsonLogicVar(first) && isRQBJsonLogicVar(second)) {\n field = first.var;\n value = second.var;\n valueSource = 'field';\n } else {\n return false;\n }\n\n // Translate operator if necessary\n if (isJsonLogicEqual(logic) || isJsonLogicStrictEqual(logic)) {\n operator = value === null ? 'null' : '=';\n } else if (isJsonLogicNotEqual(logic) || isJsonLogicStrictNotEqual(logic)) {\n operator = value === null ? 'notNull' : '!=';\n } else if (isJsonLogicInString(logic)) {\n operator = 'contains';\n } else if (isRQBJsonLogicStartsWith(logic)) {\n operator = 'beginsWith';\n } else if (isRQBJsonLogicEndsWith(logic)) {\n operator = 'endsWith';\n } else {\n operator = key as DefaultOperatorName;\n }\n\n if (\n inSubquery ||\n fieldIsValid(field, operator, valueSource === 'field' ? value : undefined)\n ) {\n rule = { field, operator, value, valueSource };\n }\n } else if (\n (isJsonLogicAll(logic) && isRQBJsonLogicVar(logic['all'][0])) ||\n (isJsonLogicNone(logic) && isRQBJsonLogicVar(logic['none'][0])) ||\n (isJsonLogicSome(logic) && isRQBJsonLogicVar(logic['some'][0]))\n ) {\n // The array coverage functions must have a field as their first element.\n // Otherwise we'd be comparing values to values, which is not supported.\n const match: MatchConfig = {\n mode: isJsonLogicNone(logic) ? 'none' : isJsonLogicSome(logic) ? 'some' : 'all',\n };\n\n // oxlint-disable-next-line typescript/no-explicit-any\n const [{ var: fld }, operation] = (logic as any)[match.mode];\n const matcher = processLogic(operation, false, true);\n\n if (!matcher) return false;\n\n rule = {\n field: fld,\n operator: '=',\n match,\n value: isRuleGroup(matcher) ? matcher : { combinator: 'and', rules: [matcher] },\n };\n } else if (isJsonLogicBetweenExclusive(logic) && isRQBJsonLogicVar(logic['<'][1])) {\n field = logic['<'][1].var;\n const values = [logic['<'][0], logic['<'][2]];\n // v8 ignore else\n if (\n values.every(v => isRQBJsonLogicVar(v)) ||\n values.every(el => typeof el === 'string') ||\n values.every(el => typeof el === 'number') ||\n values.every(el => typeof el === 'boolean')\n ) {\n return (\n processLogic({\n and: [{ '>': [{ var: field }, values[0]] }, { '<': [{ var: field }, values[1]] }],\n }) || /* v8 ignore start -- @preserve */ false /* v8 ignore stop -- @preserve */\n );\n }\n } else if (isJsonLogicBetweenInclusive(logic) && isRQBJsonLogicVar(logic['<='][1])) {\n field = logic['<='][1].var;\n operator = 'between';\n const values = [logic['<='][0], logic['<='][2]];\n if (\n getExpression &&\n (isJsonLogicExpressionOperand(values[0]) || isJsonLogicExpressionOperand(values[1]))\n ) {\n // field between expression and expression → expression-sourced bounds\n const from = getExpression(values[0], exprCtx);\n const to = getExpression(values[1], exprCtx);\n if (from && to && fieldIsValid(field, operator)) {\n rule = { field, operator, value: [from, to], valueSource: 'expression' };\n }\n return rule ? (outermost ? { combinator: 'and', rules: [rule] } : rule) : false;\n }\n if (logic['<='].every(v => isRQBJsonLogicVar(v))) {\n const vars = values as RQBJsonLogicVar[];\n valueSource = 'field';\n const fieldList = vars.map(el => el.var).filter(sf => fieldIsValid(field, operator, sf));\n value = listsAsArrays ? fieldList : joinWith(fieldList, ',');\n } else {\n // v8 ignore else\n if (\n values.every(el => typeof el === 'string') ||\n values.every(el => typeof el === 'number') ||\n values.every(el => typeof el === 'boolean')\n ) {\n value = listsAsArrays\n ? values\n : joinWith(\n values.map(el => `${el}`),\n ','\n );\n }\n }\n\n if (fieldIsValid(field, operator) && value.length >= 2) {\n rule = { field, operator, value, valueSource };\n }\n } else if (isJsonLogicInArray(logic) && isRQBJsonLogicVar(keyValue[0])) {\n field = keyValue[0].var;\n operator = 'in';\n if (logic.in[1].every(v => isRQBJsonLogicVar(v))) {\n valueSource = 'field';\n const fieldList = logic.in[1]\n .map(el => el.var)\n .filter(sf => fieldIsValid(field, operator, sf));\n value = listsAsArrays ? fieldList : joinWith(fieldList, ',');\n } else {\n // v8 ignore else\n if (\n logic.in[1].every(el => typeof el === 'string') ||\n logic.in[1].every(el => typeof el === 'number') ||\n logic.in[1].every(el => typeof el === 'boolean')\n ) {\n value = listsAsArrays\n ? logic.in[1]\n : joinWith(\n logic.in[1].map(el => `${el}`),\n ','\n );\n }\n }\n\n // v8 ignore else\n if (value.length > 0) {\n rule = { field, operator, value, valueSource };\n }\n }\n\n return rule ? (outermost ? { combinator: 'and', rules: [rule] } : rule) : false;\n }\n\n const prepare = options.generateIDs ? prepareRuleGroup : <T>(g: T) => g;\n\n let logicRoot = rqbJsonLogic;\n if (typeof rqbJsonLogic === 'string') {\n try {\n logicRoot = JSON.parse(rqbJsonLogic);\n } catch {\n return prepare(emptyRuleGroup);\n }\n }\n\n const result = processLogic(logicRoot, true);\n const finalQuery: DefaultRuleGroupType = result || emptyRuleGroup;\n return prepare(options.independentCombinators ? convertToIC(finalQuery) : finalQuery);\n}\n\nexport { parseJsonLogic };\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { I as defaultOperatorNegationMap, N as joinWith } from "./utils-4k-j5FBa.mjs";
2
- import { i as isPojo, n as isRuleGroupType, t as isRuleGroup } from "./isRuleGroup-CqLThsbu.mjs";
3
- import { n as objectKeys } from "./objectUtils-DBlmJgBf.mjs";
4
- import { n as convertToIC } from "./convertQuery-D_4J7E-Z.mjs";
5
- import { n as fieldIsValidUtil, r as getFieldsArray, t as prepareRuleGroup } from "./prepareQueryObjects-ChINDIap.mjs";
1
+ import { U as joinWith, ot as defaultOperatorNegationMap } from "./utils-CP5Jqy1P.mjs";
2
+ import { a as isRuleGroupType, c as isPojo, i as isRuleGroup, r as objectKeys } from "./objectUtils-DDZ-KhV5.mjs";
3
+ import { r as convertToIC } from "./convertQuery-DaXv3h7S.mjs";
4
+ import { n as prepareRuleGroup } from "./prepareQueryObjects-Dmyf3Wi_.mjs";
5
+ import { n as getFieldsArray, t as fieldIsValidUtil } from "./parserUtils-BKPstAaO.mjs";
6
6
  //#region src/utils/parseJsonLogic/utils.ts
7
7
  const isJsonLogicVar = (logic) => isPojo(logic) && "var" in logic;
8
8
  const isRQBJsonLogicVar = (logic) => isJsonLogicVar(logic) && typeof logic.var === "string";
@@ -1,5 +1,5 @@
1
- import { L as Except, M as RuleGroupType, N as RuleType, P as ExpressionNode, T as DefaultRuleGroupTypeIC, j as DefaultRuleGroupType } from "./index-CX9mehdL.mjs";
2
- import { t as ParserCommonOptions } from "./import-DVWI7Fdh.mjs";
1
+ import { $t as DefaultRuleGroupType, Pt as DefaultRuleGroupTypeIC, jn as Except, nn as RuleGroupType, on as ExpressionNode, rn as RuleType } from "./index-DOIE2pwx.mjs";
2
+ import { t as ParserCommonOptions } from "./import-BdKPtLzo.mjs";
3
3
  //#region src/utils/parseMongoDB/types.d.ts
4
4
  type MongoDbSupportedOperators = "$and" | "$or" | "$not" | "$eq" | "$gt" | "$gte" | "$in" | "$lt" | "$lte" | "$ne" | "$nin" | "$regex" | "$expr";
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { L as Except, M as RuleGroupType, N as RuleType, P as ExpressionNode, T as DefaultRuleGroupTypeIC, j as DefaultRuleGroupType } from "./index-CX9mehdL.js";
2
- import { t as ParserCommonOptions } from "./import-6ExjhifL.js";
1
+ import { $t as DefaultRuleGroupType, Pt as DefaultRuleGroupTypeIC, jn as Except, nn as RuleGroupType, on as ExpressionNode, rn as RuleType } from "./index-DOIE2pwx.js";
2
+ import { t as ParserCommonOptions } from "./import-BfZTwhp2.js";
3
3
  //#region src/utils/parseMongoDB/types.d.ts
4
4
  type MongoDbSupportedOperators = "$and" | "$or" | "$not" | "$eq" | "$gt" | "$gte" | "$in" | "$lt" | "$lte" | "$ne" | "$nin" | "$regex" | "$expr";
5
5
  /**
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_utils = require("./utils-C79dxwZb.js");
3
- const require_isRuleGroup = require("./isRuleGroup-0JNiQgLg.js");
4
- const require_objectUtils = require("./objectUtils-Cr02aGxb.js");
5
- const require_convertQuery = require("./convertQuery-Cw76XFIn.js");
6
- const require_prepareQueryObjects = require("./prepareQueryObjects-BnGL91Tt.js");
2
+ const require_utils = require("./utils-e-7KHkjV.js");
3
+ const require_objectUtils = require("./objectUtils-DfnEmDSV.js");
4
+ const require_convertQuery = require("./convertQuery-BLT0GIhM.js");
5
+ const require_prepareQueryObjects = require("./prepareQueryObjects-Dj9cTl9D.js");
6
+ const require_parserUtils = require("./parserUtils-DbBXyAht.js");
7
7
  //#region src/utils/parseMongoDB/utils.ts
8
8
  const getRegExStr = (re) => typeof re === "string" ? re : re.source;
9
9
  const isPrimitive = (v) => typeof v === "string" || typeof v === "number" || typeof v === "boolean";
@@ -32,7 +32,7 @@ const flipMongoDbOperator = (op) => op === "<" ? ">" : op === "<=" ? ">=" : op =
32
32
  * literals are not expression operands. The expr-supplied `getExpression` handler decides
33
33
  * whether it maps to a known function.
34
34
  */
35
- const isMongoDBExpressionOperand = (operand) => require_isRuleGroup.isPojo(operand);
35
+ const isMongoDBExpressionOperand = (operand) => require_objectUtils.isPojo(operand);
36
36
  /** Reads a MongoDB field-path operand (`"$field"`), returning the field name or `null`. */
37
37
  const mongoDbFieldRef = (operand) => typeof operand === "string" && operand.startsWith("$") ? operand.slice(1) : null;
38
38
  //#endregion
@@ -43,13 +43,13 @@ const emptyRuleGroup = {
43
43
  };
44
44
  function parseMongoDB(mongoDbRules, options = {}) {
45
45
  const listsAsArrays = !!options.listsAsArrays;
46
- const fieldsFlat = require_prepareQueryObjects.getFieldsArray(options.fields);
46
+ const fieldsFlat = require_parserUtils.getFieldsArray(options.fields);
47
47
  const getValueSources = options.getValueSources;
48
48
  const additionalOperators = options.additionalOperators ?? {};
49
49
  const preventOperatorNegation = !!options.preventOperatorNegation;
50
50
  const getExpression = options.getExpression;
51
51
  const { additionalOperators: _ao, ...otherOptions } = options;
52
- const fieldIsValid = (fieldName, operator, subordinateFieldName) => require_prepareQueryObjects.fieldIsValidUtil({
52
+ const fieldIsValid = (fieldName, operator, subordinateFieldName) => require_parserUtils.fieldIsValidUtil({
53
53
  fieldName,
54
54
  fieldsFlat,
55
55
  operator,
@@ -128,7 +128,7 @@ function parseMongoDB(mongoDbRules, options = {}) {
128
128
  if ((op === "$and" || op === "$or") && Array.isArray(payload) && payload.length === 2) {
129
129
  const between = op === "$and";
130
130
  const [c1, c2] = payload;
131
- if (!require_isRuleGroup.isPojo(c1) || !require_isRuleGroup.isPojo(c2)) return void 0;
131
+ if (!require_objectUtils.isPojo(c1) || !require_objectUtils.isPojo(c2)) return void 0;
132
132
  const k1 = require_objectUtils.objectKeys(c1)[0];
133
133
  const k2 = require_objectUtils.objectKeys(c2)[0];
134
134
  const [expK1, expK2] = between ? ["$gte", "$lte"] : ["$lt", "$gt"];
@@ -156,21 +156,22 @@ function parseMongoDB(mongoDbRules, options = {}) {
156
156
  let operator = "=";
157
157
  let value = "";
158
158
  // v8 ignore else
159
- if (mdbOperator === "$eq" || mdbOperator === "$ne" || mdbOperator === "$gt" || mdbOperator === "$gte" || mdbOperator === "$lt" || mdbOperator === "$lte") if (mdbOperator === "$ne" && keyValue === null) {
160
- if (fieldIsValid(field, "notNull")) return {
161
- field,
162
- operator: "notNull",
163
- value: null
164
- };
165
- } else {
166
- operator = mongoDbToRqbOperatorMap[mdbOperator];
167
- if (fieldIsValid(field, operator)) return {
168
- field,
169
- operator,
170
- value: keyValue
171
- };
172
- }
173
- else if (mdbOperator === "$regex" && /^[^$^]$|^[^^].*[^$]$/.test(getRegExStr(keyValue))) {
159
+ if (mdbOperator === "$eq" || mdbOperator === "$ne" || mdbOperator === "$gt" || mdbOperator === "$gte" || mdbOperator === "$lt" || mdbOperator === "$lte") {
160
+ if (mdbOperator === "$ne" && keyValue === null) {
161
+ if (fieldIsValid(field, "notNull")) return {
162
+ field,
163
+ operator: "notNull",
164
+ value: null
165
+ };
166
+ } else {
167
+ operator = mongoDbToRqbOperatorMap[mdbOperator];
168
+ if (fieldIsValid(field, operator)) return {
169
+ field,
170
+ operator,
171
+ value: keyValue
172
+ };
173
+ }
174
+ } else if (mdbOperator === "$regex" && /^[^$^]$|^[^^].*[^$]$/.test(getRegExStr(keyValue))) {
174
175
  if (fieldIsValid(field, "contains")) return {
175
176
  field,
176
177
  operator: "contains",
@@ -211,11 +212,11 @@ function parseMongoDB(mongoDbRules, options = {}) {
211
212
  let field = "";
212
213
  // v8 ignore else
213
214
  if (key === "$and") {
214
- if (!Array.isArray(keyValue) || keyValue.length === 0 || !keyValue.every((v) => require_isRuleGroup.isPojo(v))) return false;
215
+ if (!Array.isArray(keyValue) || keyValue.length === 0 || !keyValue.every((v) => require_objectUtils.isPojo(v))) return false;
215
216
  if (keyValue.length === 2 && keyValue.every((kv) => require_objectUtils.objectKeys(kv).length === 1)) {
216
217
  const [rule1, rule2] = keyValue;
217
218
  const [ruleKey1, ruleKey2] = keyValue.map((kv) => require_objectUtils.objectKeys(kv)[0]);
218
- if (ruleKey1 === ruleKey2 && require_isRuleGroup.isPojo(rule1[ruleKey1]) && require_objectUtils.objectKeys(rule1[ruleKey1]).length === 1 && require_isRuleGroup.isPojo(rule2[ruleKey2]) && require_objectUtils.objectKeys(rule2[ruleKey2]).length === 1 && ("$gte" in rule1[ruleKey1] && "$lte" in rule2[ruleKey2] && rule2[ruleKey2].$lte >= rule1[ruleKey1].$gte || "$lte" in rule1[ruleKey1] && "$gte" in rule2[ruleKey2] && rule1[ruleKey1].$lte >= rule2[ruleKey2].$gte)) {
219
+ if (ruleKey1 === ruleKey2 && require_objectUtils.isPojo(rule1[ruleKey1]) && require_objectUtils.objectKeys(rule1[ruleKey1]).length === 1 && require_objectUtils.isPojo(rule2[ruleKey2]) && require_objectUtils.objectKeys(rule2[ruleKey2]).length === 1 && ("$gte" in rule1[ruleKey1] && "$lte" in rule2[ruleKey2] && rule2[ruleKey2].$lte >= rule1[ruleKey1].$gte || "$lte" in rule1[ruleKey1] && "$gte" in rule2[ruleKey2] && rule1[ruleKey1].$lte >= rule2[ruleKey2].$gte)) {
219
220
  const [val1, val2] = [rule1[ruleKey1].$gte ?? rule1[ruleKey1].$lte, rule2[ruleKey2].$lte ?? rule2[ruleKey2].$gte];
220
221
  let value = listsAsArrays ? [val1, val2] : require_utils.joinWith([val1, val2], ",");
221
222
  if (val1 > val2) value = listsAsArrays ? [val2, val1] : require_utils.joinWith([val2, val1], ",");
@@ -232,11 +233,11 @@ function parseMongoDB(mongoDbRules, options = {}) {
232
233
  rules
233
234
  } : false;
234
235
  } else if (key === "$or") {
235
- if (!Array.isArray(keyValue) || keyValue.length === 0 || !keyValue.every((v) => require_isRuleGroup.isPojo(v))) return false;
236
+ if (!Array.isArray(keyValue) || keyValue.length === 0 || !keyValue.every((v) => require_objectUtils.isPojo(v))) return false;
236
237
  if (keyValue.length === 2 && keyValue.every((kv) => require_objectUtils.objectKeys(kv).length === 1)) {
237
238
  const [rule1, rule2] = keyValue;
238
239
  const [ruleKey1, ruleKey2] = keyValue.map((kv) => require_objectUtils.objectKeys(kv)[0]);
239
- if (ruleKey1 === ruleKey2 && require_isRuleGroup.isPojo(rule1[ruleKey1]) && require_objectUtils.objectKeys(rule1[ruleKey1]).length === 1 && require_isRuleGroup.isPojo(rule2[ruleKey2]) && require_objectUtils.objectKeys(rule2[ruleKey2]).length === 1 && ("$gt" in rule1[ruleKey1] && "$lt" in rule2[ruleKey2] && rule1[ruleKey1].$gt >= rule2[ruleKey2].$lt || "$lt" in rule1[ruleKey1] && "$gt" in rule2[ruleKey2] && rule2[ruleKey2].$gt >= rule1[ruleKey1].$lt)) {
240
+ if (ruleKey1 === ruleKey2 && require_objectUtils.isPojo(rule1[ruleKey1]) && require_objectUtils.objectKeys(rule1[ruleKey1]).length === 1 && require_objectUtils.isPojo(rule2[ruleKey2]) && require_objectUtils.objectKeys(rule2[ruleKey2]).length === 1 && ("$gt" in rule1[ruleKey1] && "$lt" in rule2[ruleKey2] && rule1[ruleKey1].$gt >= rule2[ruleKey2].$lt || "$lt" in rule1[ruleKey1] && "$gt" in rule2[ruleKey2] && rule2[ruleKey2].$gt >= rule1[ruleKey1].$lt)) {
240
241
  const [val1, val2] = [rule1[ruleKey1].$gt ?? rule1[ruleKey1].$lt, rule2[ruleKey2].$lt ?? rule2[ruleKey2].$gt];
241
242
  let value = listsAsArrays ? [val1, val2] : `${val1},${val2}`;
242
243
  if (val1 > val2) value = listsAsArrays ? [val2, val1] : `${val2},${val1}`;
@@ -252,10 +253,10 @@ function parseMongoDB(mongoDbRules, options = {}) {
252
253
  combinator: "or",
253
254
  rules
254
255
  } : false;
255
- } else if (key === "$not" && require_isRuleGroup.isPojo(keyValue)) {
256
+ } else if (key === "$not" && require_objectUtils.isPojo(keyValue)) {
256
257
  const ruleOrGroup = processMongoDbQueryObject(keyValue);
257
258
  if (ruleOrGroup) {
258
- if (require_isRuleGroup.isRuleGroupType(ruleOrGroup)) return ruleOrGroup.not ? {
259
+ if (require_objectUtils.isRuleGroupType(ruleOrGroup)) return ruleOrGroup.not ? {
259
260
  combinator: "and",
260
261
  rules: [ruleOrGroup],
261
262
  not: true
@@ -293,7 +294,7 @@ function parseMongoDB(mongoDbRules, options = {}) {
293
294
  };
294
295
  }
295
296
  }
296
- if (require_isRuleGroup.isPojo(keyValue[op][1])) return false;
297
+ if (require_objectUtils.isPojo(keyValue[op][1])) return false;
297
298
  return processMongoDbQueryBooleanOperator(field, op, keyValue[op][1]);
298
299
  }
299
300
  } else if (/^[^$]/.test(key)) {
@@ -310,7 +311,7 @@ function parseMongoDB(mongoDbRules, options = {}) {
310
311
  operator: "null",
311
312
  value: keyValue
312
313
  };
313
- } else if (require_isRuleGroup.isPojo(keyValue)) {
314
+ } else if (require_objectUtils.isPojo(keyValue)) {
314
315
  let betweenRule = false;
315
316
  let notRule = false;
316
317
  const allOps = [
@@ -326,20 +327,22 @@ function parseMongoDB(mongoDbRules, options = {}) {
326
327
  const acceptedOpsRegExp = new RegExp(`^\\$(${allOps.join("|")})$`);
327
328
  const operators = require_objectUtils.objectKeys(keyValue).filter((o) => acceptedOpsRegExp.test(o)).sort();
328
329
  if (operators.length === 0) return false;
329
- if ("$not" in keyValue && require_isRuleGroup.isPojo(keyValue.$not)) {
330
+ if ("$not" in keyValue && require_objectUtils.isPojo(keyValue.$not)) {
330
331
  const invertedNotRule = processMongoDbQueryObject({ [field]: keyValue.$not });
331
- if (invertedNotRule) if (require_isRuleGroup.isRuleGroupType(invertedNotRule)) notRule = {
332
- ...invertedNotRule,
333
- not: true
334
- };
335
- else notRule = preventOperatorNegation ? {
336
- combinator: "and",
337
- rules: [invertedNotRule],
338
- not: true
339
- } : {
340
- ...invertedNotRule,
341
- operator: require_utils.defaultOperatorNegationMap[invertedNotRule.operator]
342
- };
332
+ if (invertedNotRule) {
333
+ if (require_objectUtils.isRuleGroupType(invertedNotRule)) notRule = {
334
+ ...invertedNotRule,
335
+ not: true
336
+ };
337
+ else notRule = preventOperatorNegation ? {
338
+ combinator: "and",
339
+ rules: [invertedNotRule],
340
+ not: true
341
+ } : {
342
+ ...invertedNotRule,
343
+ operator: require_utils.defaultOperatorNegationMap[invertedNotRule.operator]
344
+ };
345
+ }
343
346
  }
344
347
  if ("$gte" in keyValue && "$lte" in keyValue) betweenRule = {
345
348
  field,
@@ -373,9 +376,9 @@ function parseMongoDB(mongoDbRules, options = {}) {
373
376
  } catch {
374
377
  return prepare(emptyRuleGroup);
375
378
  }
376
- if (!require_isRuleGroup.isPojo(mongoDbPOJO)) return prepare(emptyRuleGroup);
379
+ if (!require_objectUtils.isPojo(mongoDbPOJO)) return prepare(emptyRuleGroup);
377
380
  const result = processMongoDbQueryObject(mongoDbPOJO);
378
- const finalQuery = result ? require_isRuleGroup.isRuleGroupType(result) ? result : {
381
+ const finalQuery = result ? require_objectUtils.isRuleGroupType(result) ? result : {
379
382
  combinator: "and",
380
383
  rules: [result]
381
384
  } : emptyRuleGroup;