@react-querybuilder/core 8.15.0 → 8.16.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 (84) hide show
  1. package/README.md +114 -53
  2. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +89 -16
  3. package/dist/cjs/react-querybuilder_core.cjs.development.js +402 -19
  4. package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
  5. package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +89 -16
  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/formatQuery.d.mts +67 -2
  9. package/dist/formatQuery.d.ts +67 -2
  10. package/dist/formatQuery.js +402 -19
  11. package/dist/formatQuery.js.map +1 -1
  12. package/dist/formatQuery.mjs +396 -20
  13. package/dist/formatQuery.mjs.map +1 -1
  14. package/dist/{import-0wp72lLT.d.mts → import-BHlzBLM_.d.mts} +2 -2
  15. package/dist/{import-yRVJh7E1.d.ts → import-C6imciDf.d.ts} +2 -2
  16. package/dist/{index-D5TXNIzF.d.ts → index-Cjapnb-H.d.ts} +14 -7
  17. package/dist/{index-Lht_Wq3V.d.mts → index-D-Iej37L.d.mts} +14 -7
  18. package/dist/parseCEL.d.mts +2 -2
  19. package/dist/parseCEL.d.ts +2 -2
  20. package/dist/parseCEL.js.map +1 -1
  21. package/dist/parseCEL.mjs.map +1 -1
  22. package/dist/parseCypher.d.mts +49 -0
  23. package/dist/parseCypher.d.ts +49 -0
  24. package/dist/parseCypher.js +578 -0
  25. package/dist/parseCypher.js.map +1 -0
  26. package/dist/parseCypher.mjs +575 -0
  27. package/dist/parseCypher.mjs.map +1 -0
  28. package/dist/parseGremlin.d.mts +35 -0
  29. package/dist/parseGremlin.d.ts +35 -0
  30. package/dist/parseGremlin.js +192 -0
  31. package/dist/parseGremlin.js.map +1 -0
  32. package/dist/parseGremlin.mjs +191 -0
  33. package/dist/parseGremlin.mjs.map +1 -0
  34. package/dist/parseJSONata.d.mts +2 -2
  35. package/dist/parseJSONata.d.ts +2 -2
  36. package/dist/parseJSONata.js.map +1 -1
  37. package/dist/parseJSONata.mjs.map +1 -1
  38. package/dist/parseJsonLogic.d.mts +2 -2
  39. package/dist/parseJsonLogic.d.ts +2 -2
  40. package/dist/parseJsonLogic.js.map +1 -1
  41. package/dist/parseJsonLogic.mjs.map +1 -1
  42. package/dist/parseMongoDB.d.mts +2 -2
  43. package/dist/parseMongoDB.d.ts +2 -2
  44. package/dist/parseMongoDB.js.map +1 -1
  45. package/dist/parseMongoDB.mjs.map +1 -1
  46. package/dist/parseSPARQL.d.mts +34 -0
  47. package/dist/parseSPARQL.d.ts +34 -0
  48. package/dist/parseSPARQL.js +253 -0
  49. package/dist/parseSPARQL.js.map +1 -0
  50. package/dist/parseSPARQL.mjs +251 -0
  51. package/dist/parseSPARQL.mjs.map +1 -0
  52. package/dist/parseSQL.d.mts +2 -2
  53. package/dist/parseSQL.d.ts +2 -2
  54. package/dist/parseSQL.js.map +1 -1
  55. package/dist/parseSQL.mjs.map +1 -1
  56. package/dist/parseSpEL.d.mts +2 -2
  57. package/dist/parseSpEL.d.ts +2 -2
  58. package/dist/parseSpEL.js.map +1 -1
  59. package/dist/parseSpEL.mjs.map +1 -1
  60. package/dist/prepareQueryObjects-BoG5Rt8z.js.map +1 -1
  61. package/dist/prepareQueryObjects-uA10ZpZX.mjs.map +1 -1
  62. package/dist/react-querybuilder_core.d.mts +89 -16
  63. package/dist/react-querybuilder_core.legacy-esm.d.ts +89 -16
  64. package/dist/react-querybuilder_core.legacy-esm.js +408 -27
  65. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  66. package/dist/react-querybuilder_core.mjs +396 -20
  67. package/dist/react-querybuilder_core.mjs.map +1 -1
  68. package/dist/react-querybuilder_core.production.d.mts +89 -16
  69. package/dist/react-querybuilder_core.production.mjs +1 -1
  70. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  71. package/dist/transformQuery.d.mts +1 -1
  72. package/dist/transformQuery.d.ts +1 -1
  73. package/formatQuery/package.json +1 -1
  74. package/package.json +47 -3
  75. package/parseCEL/package.json +1 -1
  76. package/parseCypher/package.json +4 -0
  77. package/parseGremlin/package.json +4 -0
  78. package/parseJSONata/package.json +1 -1
  79. package/parseJsonLogic/package.json +1 -1
  80. package/parseMongoDB/package.json +1 -1
  81. package/parseSPARQL/package.json +4 -0
  82. package/parseSQL/package.json +1 -1
  83. package/parseSpEL/package.json +1 -1
  84. package/transformQuery/package.json +1 -1
@@ -1481,7 +1481,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
1481
1481
  //#endregion
1482
1482
  //#region src/utils/formatQuery/defaultRuleProcessorCEL.ts
1483
1483
  const shouldNegate$2 = (op) => op.startsWith("not") || op.startsWith("doesnot");
1484
- const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
1484
+ const escapeDoubleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
1485
1485
  /**
1486
1486
  * Default rule processor used by {@link formatQuery} for "cel" format.
1487
1487
  *
@@ -1523,19 +1523,19 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
1523
1523
  case "==":
1524
1524
  case "!=":
1525
1525
  case ">":
1526
- case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`}`;
1526
+ case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`}`;
1527
1527
  case "contains":
1528
- case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
1528
+ case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
1529
1529
  case "beginswith":
1530
- case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
1530
+ case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
1531
1531
  case "endswith":
1532
- case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
1532
+ case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
1533
1533
  case "null": return `${field} == null`;
1534
1534
  case "notnull": return `${field} != null`;
1535
1535
  case "in":
1536
1536
  case "notin": {
1537
1537
  const [prefix, suffix] = shouldNegate$2(operatorTL) ? ["!(", ")"] : ["", ""];
1538
- return `${prefix}${field} in [${toArray(value).map((val) => valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `"${escapeDoubleQuotes(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
1538
+ return `${prefix}${field} in [${toArray(value).map((val) => valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `"${escapeDoubleQuotes$1(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
1539
1539
  }
1540
1540
  case "between":
1541
1541
  case "notbetween": {
@@ -1545,8 +1545,8 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
1545
1545
  const shouldParseNumbers = !(parseNumbers === false);
1546
1546
  const firstNum = shouldRenderAsNumber(first, shouldParseNumbers) ? parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
1547
1547
  const secondNum = shouldRenderAsNumber(second, shouldParseNumbers) ? parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
1548
- let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes(first, escapeQuotes)}"` : firstNum;
1549
- let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes(second, escapeQuotes)}"` : secondNum;
1548
+ let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes$1(first, escapeQuotes)}"` : firstNum;
1549
+ let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes$1(second, escapeQuotes)}"` : secondNum;
1550
1550
  if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
1551
1551
  const tempNum = secondNum;
1552
1552
  secondValue = firstNum;
@@ -1802,7 +1802,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
1802
1802
  //#region src/utils/formatQuery/defaultRuleProcessorSpEL.ts
1803
1803
  const shouldNegate$1 = (op) => op.startsWith("not") || op.startsWith("doesnot");
1804
1804
  const wrapInNegation = (clause, negate) => negate ? `!(${clause})` : clause;
1805
- const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
1805
+ const escapeSingleQuotes$2 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
1806
1806
  /**
1807
1807
  * Default rule processor used by {@link formatQuery} for "spel" format.
1808
1808
  *
@@ -1843,20 +1843,20 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
1843
1843
  case "==":
1844
1844
  case "!=":
1845
1845
  case ">":
1846
- case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`;
1846
+ case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`;
1847
1847
  case "contains":
1848
- case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1848
+ case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1849
1849
  case "beginswith":
1850
- case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1850
+ case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1851
1851
  case "endswith":
1852
- case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
1852
+ case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
1853
1853
  case "null": return `${field} == null`;
1854
1854
  case "notnull": return `${field} != null`;
1855
1855
  case "in":
1856
1856
  case "notin": {
1857
1857
  const negate = shouldNegate$1(operatorTL) ? "!" : "";
1858
1858
  const valueAsArray = toArray(value);
1859
- return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `'${escapeSingleQuotes(val, escapeQuotes)}'`}`).join(" or ")})` : "";
1859
+ return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `'${escapeSingleQuotes$2(val, escapeQuotes)}'`}`).join(" or ")})` : "";
1860
1860
  }
1861
1861
  case "between":
1862
1862
  case "notbetween": {
@@ -1866,8 +1866,8 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
1866
1866
  const shouldParseNumbers = !(parseNumbers === false);
1867
1867
  const firstNum = shouldRenderAsNumber(first, shouldParseNumbers) ? parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
1868
1868
  const secondNum = shouldRenderAsNumber(second, shouldParseNumbers) ? parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
1869
- let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes(first, escapeQuotes)}'` : firstNum;
1870
- let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes(second, escapeQuotes)}'` : secondNum;
1869
+ let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes$2(first, escapeQuotes)}'` : firstNum;
1870
+ let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes$2(second, escapeQuotes)}'` : secondNum;
1871
1871
  if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
1872
1872
  const tempNum = secondNum;
1873
1873
  secondValue = firstNum;
@@ -1935,6 +1935,70 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
1935
1935
  return valueIsField ? wrapFieldName(value) : shouldRenderAsNumber(value, parseNumbers) ? `${trimIfString(value)}` : `${wrapAndEscape(value)}`;
1936
1936
  };
1937
1937
  //#endregion
1938
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorCypher.ts
1939
+ /**
1940
+ * Maps a {@link DefaultCombinatorName} to a Cypher combinator keyword.
1941
+ *
1942
+ * @group Export
1943
+ */
1944
+ const cypherCombinatorMap = {
1945
+ and: "AND",
1946
+ or: "OR"
1947
+ };
1948
+ /**
1949
+ * Rule group processor used by {@link formatQuery} for "cypher" and "gql" formats.
1950
+ *
1951
+ * @group Export
1952
+ */
1953
+ const defaultRuleGroupProcessorCypher = (ruleGroup, options) => {
1954
+ const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
1955
+ const processRuleGroup = (rg, outermost) => {
1956
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
1957
+ const processedRules = [];
1958
+ let precedingCombinator = "";
1959
+ let firstRule = true;
1960
+ for (const rule of rg.rules) {
1961
+ if (typeof rule === "string") {
1962
+ precedingCombinator = cypherCombinatorMap[rule];
1963
+ continue;
1964
+ }
1965
+ if (isRuleGroup(rule)) {
1966
+ const processedGroup = processRuleGroup(rule);
1967
+ if (processedGroup) {
1968
+ if (!firstRule && precedingCombinator) {
1969
+ processedRules.push(precedingCombinator);
1970
+ precedingCombinator = "";
1971
+ }
1972
+ firstRule = false;
1973
+ processedRules.push(processedGroup);
1974
+ }
1975
+ continue;
1976
+ }
1977
+ const [validationResult, fieldValidator] = validateRule(rule);
1978
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
1979
+ const fieldData = getOption(fields, rule.field);
1980
+ const processedRule = ruleProcessor(rule, {
1981
+ ...options,
1982
+ parseNumbers: getParseNumberBoolean(fieldData?.inputType),
1983
+ escapeQuotes: (rule.valueSource ?? "value") === "value",
1984
+ fieldData
1985
+ });
1986
+ if (processedRule) {
1987
+ if (!firstRule && precedingCombinator) {
1988
+ processedRules.push(precedingCombinator);
1989
+ precedingCombinator = "";
1990
+ }
1991
+ firstRule = false;
1992
+ processedRules.push(processedRule);
1993
+ }
1994
+ }
1995
+ const expression = processedRules.join(isRuleGroupType(rg) ? ` ${cypherCombinatorMap[rg.combinator]} ` : " ");
1996
+ const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "NOT " : ""}(`, ")"] : ["", ""];
1997
+ return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
1998
+ };
1999
+ return processRuleGroup(ruleGroup, true);
2000
+ };
2001
+ //#endregion
1938
2002
  //#region src/utils/formatQuery/defaultRuleProcessorDrizzle.ts
1939
2003
  /**
1940
2004
  * Default rule processor used by {@link formatQuery} for the "drizzle" format.
@@ -2102,6 +2166,67 @@ const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
2102
2166
  return processedRuleGroup === false ? {} : processedRuleGroup;
2103
2167
  };
2104
2168
  //#endregion
2169
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorGremlin.ts
2170
+ /**
2171
+ * Rule group processor used by {@link formatQuery} for "gremlin" format.
2172
+ *
2173
+ * At the top level, filter rules produce chained `.has()` steps (implicit AND).
2174
+ * Nested groups use `.and()` / `.or()` / `.not()` compound traversals with
2175
+ * `__` anonymous traversal prefixes.
2176
+ *
2177
+ * @group Export
2178
+ */
2179
+ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
2180
+ const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
2181
+ const validateAndProcess = (rule) => {
2182
+ // v8 ignore next -- @preserve
2183
+ if (typeof rule === "string" || isRuleGroup(rule)) return void 0;
2184
+ const [validationResult, fieldValidator] = validateRule(rule);
2185
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
2186
+ const fieldData = getOption(fields, rule.field);
2187
+ return ruleProcessor(rule, {
2188
+ ...options,
2189
+ parseNumbers: getParseNumberBoolean(fieldData?.inputType),
2190
+ escapeQuotes: (rule.valueSource ?? "value") === "value",
2191
+ fieldData
2192
+ });
2193
+ };
2194
+ /** Recursively processes a nested group into `.and()`/`.or()`/`.not()` form. */
2195
+ const processNested = (rg) => {
2196
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return "";
2197
+ const predicates = [];
2198
+ for (const rule of rg.rules) {
2199
+ if (typeof rule === "string") continue;
2200
+ if (isRuleGroup(rule)) {
2201
+ const nested = processNested(rule);
2202
+ if (nested) predicates.push(nested);
2203
+ continue;
2204
+ }
2205
+ const processed = validateAndProcess(rule);
2206
+ if (processed) predicates.push(processed);
2207
+ }
2208
+ if (predicates.length === 0) return "";
2209
+ const combinator = rg.combinator ?? "and";
2210
+ const prefix = rg.not ? "not" : combinator;
2211
+ if (predicates.length === 1 && !rg.not) return predicates[0];
2212
+ return `.${prefix}(${predicates.map((p) => p.startsWith(".") ? `__${p}` : p).join(", ")})`;
2213
+ };
2214
+ if (!isRuleOrGroupValid(ruleGroup, validationMap[ruleGroup.id ?? ""])) return fallbackExpression;
2215
+ const steps = [];
2216
+ for (const rule of ruleGroup.rules) {
2217
+ if (typeof rule === "string") continue;
2218
+ if (isRuleGroup(rule)) {
2219
+ const compound = processNested(rule);
2220
+ if (compound) steps.push(compound);
2221
+ continue;
2222
+ }
2223
+ const processed = validateAndProcess(rule);
2224
+ if (processed) steps.push(processed);
2225
+ }
2226
+ if (steps.length === 0) return fallbackExpression;
2227
+ return steps.join("");
2228
+ };
2229
+ //#endregion
2105
2230
  //#region src/utils/formatQuery/defaultRuleGroupProcessorJSONata.ts
2106
2231
  /**
2107
2232
  * Rule group processor used by {@link formatQuery} for "jsonata" format.
@@ -2489,6 +2614,63 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
2489
2614
  return processRuleGroup(convertFromIC(ruleGroup), true);
2490
2615
  };
2491
2616
  //#endregion
2617
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorSPARQL.ts
2618
+ /**
2619
+ * Rule group processor used by {@link formatQuery} for "sparql" format.
2620
+ *
2621
+ * SPARQL uses the same combinators as CEL (`&&` / `||`) and `!()` for negation.
2622
+ *
2623
+ * @group Export
2624
+ */
2625
+ const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
2626
+ const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
2627
+ const processRuleGroup = (rg, outermost) => {
2628
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
2629
+ const processedRules = [];
2630
+ let precedingCombinator = "";
2631
+ let firstRule = true;
2632
+ for (const rule of rg.rules) {
2633
+ if (typeof rule === "string") {
2634
+ precedingCombinator = celCombinatorMap[rule];
2635
+ continue;
2636
+ }
2637
+ if (isRuleGroup(rule)) {
2638
+ const processedGroup = processRuleGroup(rule);
2639
+ if (processedGroup) {
2640
+ if (!firstRule && precedingCombinator) {
2641
+ processedRules.push(precedingCombinator);
2642
+ precedingCombinator = "";
2643
+ }
2644
+ firstRule = false;
2645
+ processedRules.push(processedGroup);
2646
+ }
2647
+ continue;
2648
+ }
2649
+ const [validationResult, fieldValidator] = validateRule(rule);
2650
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
2651
+ const fieldData = getOption(fields, rule.field);
2652
+ const processedRule = ruleProcessor(rule, {
2653
+ ...options,
2654
+ parseNumbers: getParseNumberBoolean(fieldData?.inputType),
2655
+ escapeQuotes: (rule.valueSource ?? "value") === "value",
2656
+ fieldData
2657
+ });
2658
+ if (processedRule) {
2659
+ if (!firstRule && precedingCombinator) {
2660
+ processedRules.push(precedingCombinator);
2661
+ precedingCombinator = "";
2662
+ }
2663
+ firstRule = false;
2664
+ processedRules.push(processedRule);
2665
+ }
2666
+ }
2667
+ const expression = processedRules.join(isRuleGroupType(rg) ? ` ${celCombinatorMap[rg.combinator]} ` : " ");
2668
+ const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
2669
+ return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
2670
+ };
2671
+ return processRuleGroup(ruleGroup, true);
2672
+ };
2673
+ //#endregion
2492
2674
  //#region src/utils/formatQuery/defaultRuleGroupProcessorSQL.ts
2493
2675
  /**
2494
2676
  * Default rule processor used by {@link formatQuery} for "sql" format.
@@ -2864,6 +3046,59 @@ const getFieldValidatorReasons = (rule, fieldValidator) => {
2864
3046
  }
2865
3047
  };
2866
3048
  //#endregion
3049
+ //#region src/utils/formatQuery/defaultRuleProcessorCypher.ts
3050
+ const escapeSingleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
3051
+ /**
3052
+ * Default rule processor used by {@link formatQuery} for "cypher" and "gql" formats.
3053
+ *
3054
+ * @group Export
3055
+ */
3056
+ const defaultRuleProcessorCypher = (rule, opts = {}) => {
3057
+ const { escapeQuotes, parseNumbers } = opts;
3058
+ const { field, operator, value, valueSource } = rule;
3059
+ const valueIsField = valueSource === "field";
3060
+ const operatorTL = operator.toLowerCase();
3061
+ const fmtVal = (v) => {
3062
+ if (v === null || v === void 0) return "null";
3063
+ if (typeof v === "boolean" || typeof v === "bigint") return String(v);
3064
+ if (valueIsField) return trimIfString(v);
3065
+ if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
3066
+ return `'${escapeSingleQuotes$1(v, escapeQuotes)}'`;
3067
+ };
3068
+ switch (operatorTL) {
3069
+ case "=": return `${field} = ${fmtVal(value)}`;
3070
+ case "!=":
3071
+ case "<>": return `${field} <> ${fmtVal(value)}`;
3072
+ case "<":
3073
+ case ">":
3074
+ case "<=":
3075
+ case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
3076
+ case "contains": return `${field} CONTAINS ${fmtVal(value)}`;
3077
+ case "doesnotcontain": return `NOT ${field} CONTAINS ${fmtVal(value)}`;
3078
+ case "beginswith": return `${field} STARTS WITH ${fmtVal(value)}`;
3079
+ case "doesnotbeginwith": return `NOT ${field} STARTS WITH ${fmtVal(value)}`;
3080
+ case "endswith": return `${field} ENDS WITH ${fmtVal(value)}`;
3081
+ case "doesnotendwith": return `NOT ${field} ENDS WITH ${fmtVal(value)}`;
3082
+ case "null": return `${field} IS NULL`;
3083
+ case "notnull": return `${field} IS NOT NULL`;
3084
+ case "in":
3085
+ case "notin": {
3086
+ const values = toArray(value).map(fmtVal);
3087
+ if (!values.length) return "";
3088
+ return `${operatorTL === "notin" ? "NOT " : ""}${field} IN [${values.join(", ")}]`;
3089
+ }
3090
+ case "between":
3091
+ case "notbetween": {
3092
+ const arr = toArray(value);
3093
+ if (arr.length < 2) return "";
3094
+ const [low, high] = [fmtVal(arr[0]), fmtVal(arr[1])];
3095
+ const expr = `${low} <= ${field} AND ${field} <= ${high}`;
3096
+ return operatorTL === "notbetween" ? `NOT (${expr})` : expr;
3097
+ }
3098
+ default: return `${field} ${operator} ${fmtVal(value)}`;
3099
+ }
3100
+ };
3101
+ //#endregion
2867
3102
  //#region src/utils/formatQuery/defaultRuleProcessorElasticSearch.ts
2868
3103
  const rangeOperatorMap = {
2869
3104
  "<": "lt",
@@ -3015,6 +3250,68 @@ const defaultRuleProcessorElasticSearch = (rule, options = {}) => {
3015
3250
  return false;
3016
3251
  };
3017
3252
  //#endregion
3253
+ //#region src/utils/formatQuery/defaultRuleProcessorGremlin.ts
3254
+ const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
3255
+ /**
3256
+ * Default rule processor used by {@link formatQuery} for "gremlin" format.
3257
+ *
3258
+ * Each rule becomes a `.has()` step (or `.hasNot()`/`.has()` for null checks).
3259
+ *
3260
+ * @group Export
3261
+ */
3262
+ const defaultRuleProcessorGremlin = (rule, opts = {}) => {
3263
+ const { escapeQuotes, parseNumbers } = opts;
3264
+ const { field, operator, value, valueSource } = rule;
3265
+ const valueIsField = valueSource === "field";
3266
+ const operatorTL = operator.toLowerCase();
3267
+ const prop = field.includes(".") ? field.split(".").pop() : field;
3268
+ const fmtVal = (v) => {
3269
+ if (v === null || v === void 0) return "null";
3270
+ if (typeof v === "boolean" || typeof v === "bigint") return String(v);
3271
+ if (valueIsField) return trimIfString(v);
3272
+ if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
3273
+ return `'${escapeSingleQuotes(v, escapeQuotes)}'`;
3274
+ };
3275
+ switch (operatorTL) {
3276
+ case "=": return `.has('${prop}', ${fmtVal(value)})`;
3277
+ case "!=":
3278
+ case "<>": return `.has('${prop}', neq(${fmtVal(value)}))`;
3279
+ case "<": return `.has('${prop}', lt(${fmtVal(value)}))`;
3280
+ case ">": return `.has('${prop}', gt(${fmtVal(value)}))`;
3281
+ case "<=": return `.has('${prop}', lte(${fmtVal(value)}))`;
3282
+ case ">=": return `.has('${prop}', gte(${fmtVal(value)}))`;
3283
+ case "contains": return `.has('${prop}', containing(${fmtVal(value)}))`;
3284
+ case "doesnotcontain": return `.has('${prop}', notContaining(${fmtVal(value)}))`;
3285
+ case "beginswith": return `.has('${prop}', startingWith(${fmtVal(value)}))`;
3286
+ case "doesnotbeginwith": return `.has('${prop}', notStartingWith(${fmtVal(value)}))`;
3287
+ case "endswith": return `.has('${prop}', endingWith(${fmtVal(value)}))`;
3288
+ case "doesnotendwith": return `.has('${prop}', notEndingWith(${fmtVal(value)}))`;
3289
+ case "null": return `.hasNot('${prop}')`;
3290
+ case "notnull": return `.has('${prop}')`;
3291
+ case "in": {
3292
+ const items = toArray(value).map(fmtVal);
3293
+ if (!items.length) return "";
3294
+ return `.has('${prop}', within(${items.join(", ")}))`;
3295
+ }
3296
+ case "notin": {
3297
+ const items = toArray(value).map(fmtVal);
3298
+ if (!items.length) return "";
3299
+ return `.has('${prop}', without(${items.join(", ")}))`;
3300
+ }
3301
+ case "between": {
3302
+ const arr = toArray(value);
3303
+ if (arr.length < 2) return "";
3304
+ return `.has('${prop}', between(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
3305
+ }
3306
+ case "notbetween": {
3307
+ const arr = toArray(value);
3308
+ if (arr.length < 2) return "";
3309
+ return `.has('${prop}', outside(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
3310
+ }
3311
+ default: return `.has('${prop}', ${fmtVal(value)})`;
3312
+ }
3313
+ };
3314
+ //#endregion
3018
3315
  //#region src/utils/formatQuery/defaultRuleProcessorJSONata.ts
3019
3316
  const shouldNegate = (op) => op.startsWith("not") || op.startsWith("doesnot");
3020
3317
  const quote = (v, escapeQuotes) => `"${typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`)}"`;
@@ -3637,8 +3934,11 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
3637
3934
  const valueIsField = valueSource === "field";
3638
3935
  const operatorLC = lc(operator);
3639
3936
  if (!Op || valueIsField && (!col || !fn && [
3937
+ "contains",
3640
3938
  "doesnotcontain",
3939
+ "beginswith",
3641
3940
  "doesnotbeginwith",
3941
+ "endswith",
3642
3942
  "doesnotendwith"
3643
3943
  ].includes(operatorLC))) return;
3644
3944
  switch (operatorLC) {
@@ -3658,9 +3958,9 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
3658
3958
  }[operatorLC];
3659
3959
  return { [field]: valueIsField && operatorLC === "=" ? { [Op.col]: value } : { [sequelizeOperator]: valueIsField ? col(value) : shouldRenderAsNumber(value, parseNumbers) ? parseNumber(value, { parseNumbers: "strict" }) : value } };
3660
3960
  }
3661
- case "contains": return { [field]: { [Op.substring]: valueIsField ? col(value) : `${value}` } };
3662
- case "beginswith": return { [field]: { [Op.startsWith]: valueIsField ? col(value) : `${value}` } };
3663
- case "endswith": return { [field]: { [Op.endsWith]: valueIsField ? col(value) : `${value}` } };
3961
+ case "contains": return { [field]: { [valueIsField ? Op.like : Op.substring]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `${value}` } };
3962
+ case "beginswith": return { [field]: { [valueIsField ? Op.like : Op.startsWith]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}` } };
3963
+ case "endswith": return { [field]: { [valueIsField ? Op.like : Op.endsWith]: valueIsField ? fn("CONCAT", "%", col(value)) : `${value}` } };
3664
3964
  case "doesnotcontain": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `%${value}%` } };
3665
3965
  case "doesnotbeginwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}%` } };
3666
3966
  case "doesnotendwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value)) : `%${value}` } };
@@ -3690,6 +3990,68 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
3690
3990
  }
3691
3991
  };
3692
3992
  //#endregion
3993
+ //#region src/utils/formatQuery/defaultRuleProcessorSPARQL.ts
3994
+ const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
3995
+ /**
3996
+ * Default rule processor used by {@link formatQuery} for "sparql" format.
3997
+ *
3998
+ * @group Export
3999
+ */
4000
+ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
4001
+ const { escapeQuotes, parseNumbers } = opts;
4002
+ const { field, operator, value, valueSource } = rule;
4003
+ const valueIsField = valueSource === "field";
4004
+ const operatorTL = operator.toLowerCase();
4005
+ const fmtVal = (v) => {
4006
+ if (v === null || v === void 0) return "\"\"";
4007
+ if (typeof v === "boolean") return `"${v}"^^xsd:boolean`;
4008
+ if (typeof v === "bigint") return String(v);
4009
+ if (valueIsField) return trimIfString(v);
4010
+ if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
4011
+ const s = typeof v === "string" ? v : JSON.stringify(v) ?? "";
4012
+ if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
4013
+ return `"${escapeDoubleQuotes(s, escapeQuotes)}"`;
4014
+ };
4015
+ switch (operatorTL) {
4016
+ case "=":
4017
+ case "!=":
4018
+ case "<":
4019
+ case ">":
4020
+ case "<=":
4021
+ case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
4022
+ case "<>": return `${field} != ${fmtVal(value)}`;
4023
+ case "contains": return `CONTAINS(${field}, ${fmtVal(value)})`;
4024
+ case "doesnotcontain": return `!CONTAINS(${field}, ${fmtVal(value)})`;
4025
+ case "beginswith": return `STRSTARTS(${field}, ${fmtVal(value)})`;
4026
+ case "doesnotbeginwith": return `!STRSTARTS(${field}, ${fmtVal(value)})`;
4027
+ case "endswith": return `STRENDS(${field}, ${fmtVal(value)})`;
4028
+ case "doesnotendwith": return `!STRENDS(${field}, ${fmtVal(value)})`;
4029
+ case "null": return `!BOUND(${field})`;
4030
+ case "notnull": return `BOUND(${field})`;
4031
+ case "in": {
4032
+ const items = toArray(value).map(fmtVal);
4033
+ if (!items.length) return "";
4034
+ return items.map((item) => `${field} = ${item}`).join(" || ");
4035
+ }
4036
+ case "notin": {
4037
+ const items = toArray(value).map(fmtVal);
4038
+ if (!items.length) return "";
4039
+ return items.map((item) => `${field} != ${item}`).join(" && ");
4040
+ }
4041
+ case "between": {
4042
+ const arr = toArray(value);
4043
+ if (arr.length < 2) return "";
4044
+ return `${field} >= ${fmtVal(arr[0])} && ${field} <= ${fmtVal(arr[1])}`;
4045
+ }
4046
+ case "notbetween": {
4047
+ const arr = toArray(value);
4048
+ if (arr.length < 2) return "";
4049
+ return `(${field} < ${fmtVal(arr[0])} || ${field} > ${fmtVal(arr[1])})`;
4050
+ }
4051
+ default: return `${field} ${operator} ${fmtVal(value)}`;
4052
+ }
4053
+ };
4054
+ //#endregion
3693
4055
  //#region src/utils/formatQuery/formatQuery.ts
3694
4056
  /**
3695
4057
  * A collection of option presets for {@link formatQuery}, specifically for SQL-based formats.
@@ -3737,6 +4099,10 @@ const defaultRuleProcessors = {
3737
4099
  sequelize: defaultRuleProcessorSequelize,
3738
4100
  spel: defaultRuleProcessorSpEL,
3739
4101
  sql: defaultRuleProcessorSQL,
4102
+ cypher: defaultRuleProcessorCypher,
4103
+ gql: defaultRuleProcessorCypher,
4104
+ sparql: defaultRuleProcessorSPARQL,
4105
+ gremlin: defaultRuleProcessorGremlin,
3740
4106
  diagnostics: defaultRuleProcessorSQL
3741
4107
  };
3742
4108
  /* v8 ignore next -- @preserve */
@@ -3759,6 +4125,10 @@ const defaultOperatorProcessors = {
3759
4125
  sequelize: defaultOperatorProcessor,
3760
4126
  spel: defaultOperatorProcessor,
3761
4127
  sql: defaultOperatorProcessorSQL,
4128
+ cypher: defaultOperatorProcessor,
4129
+ gql: defaultOperatorProcessor,
4130
+ sparql: defaultOperatorProcessor,
4131
+ gremlin: defaultOperatorProcessor,
3762
4132
  diagnostics: defaultOperatorProcessor
3763
4133
  };
3764
4134
  const defaultFallbackExpressions = {
@@ -3766,6 +4136,8 @@ const defaultFallbackExpressions = {
3766
4136
  ldap: "",
3767
4137
  mongodb: "\"$and\":[{\"$expr\":true}]",
3768
4138
  natural_language: "1 is 1",
4139
+ sparql: "1 = 1",
4140
+ gremlin: "",
3769
4141
  spel: "1 == 1",
3770
4142
  sql: "(1 = 1)"
3771
4143
  };
@@ -3906,6 +4278,10 @@ function formatQuery(ruleGroup, optionParam = {}) {
3906
4278
  case "prisma": return defaultRuleGroupProcessorPrisma(ruleGroup, finalOptions);
3907
4279
  case "drizzle": return defaultRuleGroupProcessorDrizzle(ruleGroup, finalOptions);
3908
4280
  case "sequelize": return defaultRuleGroupProcessorSequelize(ruleGroup, finalOptions);
4281
+ case "cypher":
4282
+ case "gql": return defaultRuleGroupProcessorCypher(ruleGroup, finalOptions);
4283
+ case "sparql": return defaultRuleGroupProcessorSPARQL(ruleGroup, finalOptions);
4284
+ case "gremlin": return defaultRuleGroupProcessorGremlin(ruleGroup, finalOptions);
3909
4285
  case "diagnostics": return defaultRuleGroupProcessorDiagnostics(ruleGroup, finalOptions);
3910
4286
  default: return "";
3911
4287
  }
@@ -4618,6 +4994,6 @@ const groupInPlace = (query, sourcePathOrID, targetPathOrID, options = {}) => {
4618
4994
  return query;
4619
4995
  };
4620
4996
  //#endregion
4621
- export { LogType, TestID, add, addInPlace, bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, clsx, convertFromIC, convertQuery, convertToIC, defaultCELValueProcessor, defaultCombinatorLabelMap, defaultCombinators, defaultCombinatorsExtended, defaultControlClassnames, defaultExportOperatorMap, defaultJoinChar, defaultMatchModes, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorLabelMap, defaultOperatorNegationMap, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, defaultOperators, defaultPlaceholderFieldGroupLabel, defaultPlaceholderFieldLabel, defaultPlaceholderFieldName, defaultPlaceholderLabel, defaultPlaceholderName, defaultPlaceholderOperatorGroupLabel, defaultPlaceholderOperatorLabel, defaultPlaceholderOperatorName, defaultPlaceholderValueGroupLabel, defaultPlaceholderValueLabel, defaultPlaceholderValueName, defaultRuleGroupProcessorCEL, defaultRuleGroupProcessorDiagnostics, defaultRuleGroupProcessorDrizzle, defaultRuleGroupProcessorElasticSearch, defaultRuleGroupProcessorJSONata, defaultRuleGroupProcessorJsonLogic, defaultRuleGroupProcessorLDAP, defaultRuleGroupProcessorMongoDB, defaultRuleGroupProcessorMongoDBQuery, defaultRuleGroupProcessorNL, defaultRuleGroupProcessorParameterized, defaultRuleGroupProcessorPrisma, defaultRuleGroupProcessorSQL, defaultRuleGroupProcessorSequelize, defaultRuleGroupProcessorSpEL, defaultRuleProcessorCEL, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultSpELValueProcessor, defaultTranslations, defaultValidator, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, filterFieldsByComparator, findID, findPath, formatQuery, formatQueryOptionPresets, generateAccessibleDescription, generateID, getCommonAncestorPath, getFirstOption, getMatchModesUtil, getNLTranslataion, getOption, getParentPath, getParseNumberMethod, getPathOfID, getQuoteFieldNamesWithArray, getQuotedFieldName, getValidationClassNames, getValueSourcesUtil, group, groupInPlace, groupInvalidReasons, insert, insertInPlace, isAncestor, isFlexibleOptionArray, isFlexibleOptionGroupArray, isFullOptionArray, isFullOptionGroupArray, isOptionGroupArray, isPojo, isRuleGroup, isRuleGroupType, isRuleGroupTypeIC, isRuleOrGroupValid, isRuleType, isUnsafeKey, isValidValue, isValidationResult, isValueProcessorLegacy, joinWith, jsonLogicAdditionalOperators, lc, mapSQLOperator, mergeAnyTranslation, mergeAnyTranslations, mergeClassnames, mongoDbFallback, mongoOperators, move, moveInPlace, normalizeConstituentWordOrder, nullFreeArray, nullOrUndefinedOrEmpty, numericRegex, numerifyValues, objectEntries, objectKeys, parseNumber, pathIsDisabled, pathsAreEqual, preferAnyProp, preferFlagProps, preferProp, prepareOptionList, prepareRule, prepareRuleGroup, prepareRuleOrGroup, prismaFallback, prismaOperators, processMatchMode, queryBuilderFlagDefaults, regenerateID, regenerateIDs, remove, removeInPlace, rootPath, shouldRenderAsNumber, splitBy, sqlDialectPresets, standardClassnames, toArray, toFlatOptionArray, toFullOption, toFullOptionList, toFullOptionMap, transformQuery, trimIfString, uniqByIdentifier, uniqByName, uniqOptGroups, uniqOptList, update, updateInPlace, uuidV4regex };
4997
+ export { LogType, TestID, add, addInPlace, bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, clsx, convertFromIC, convertQuery, convertToIC, cypherCombinatorMap, defaultCELValueProcessor, defaultCombinatorLabelMap, defaultCombinators, defaultCombinatorsExtended, defaultControlClassnames, defaultExportOperatorMap, defaultJoinChar, defaultMatchModes, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorLabelMap, defaultOperatorNegationMap, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, defaultOperators, defaultPlaceholderFieldGroupLabel, defaultPlaceholderFieldLabel, defaultPlaceholderFieldName, defaultPlaceholderLabel, defaultPlaceholderName, defaultPlaceholderOperatorGroupLabel, defaultPlaceholderOperatorLabel, defaultPlaceholderOperatorName, defaultPlaceholderValueGroupLabel, defaultPlaceholderValueLabel, defaultPlaceholderValueName, defaultRuleGroupProcessorCEL, defaultRuleGroupProcessorCypher, defaultRuleGroupProcessorDiagnostics, defaultRuleGroupProcessorDrizzle, defaultRuleGroupProcessorElasticSearch, defaultRuleGroupProcessorGremlin, defaultRuleGroupProcessorJSONata, defaultRuleGroupProcessorJsonLogic, defaultRuleGroupProcessorLDAP, defaultRuleGroupProcessorMongoDB, defaultRuleGroupProcessorMongoDBQuery, defaultRuleGroupProcessorNL, defaultRuleGroupProcessorParameterized, defaultRuleGroupProcessorPrisma, defaultRuleGroupProcessorSPARQL, defaultRuleGroupProcessorSQL, defaultRuleGroupProcessorSequelize, defaultRuleGroupProcessorSpEL, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultSpELValueProcessor, defaultTranslations, defaultValidator, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, filterFieldsByComparator, findID, findPath, formatQuery, formatQueryOptionPresets, generateAccessibleDescription, generateID, getCommonAncestorPath, getFirstOption, getMatchModesUtil, getNLTranslataion, getOption, getParentPath, getParseNumberMethod, getPathOfID, getQuoteFieldNamesWithArray, getQuotedFieldName, getValidationClassNames, getValueSourcesUtil, group, groupInPlace, groupInvalidReasons, insert, insertInPlace, isAncestor, isFlexibleOptionArray, isFlexibleOptionGroupArray, isFullOptionArray, isFullOptionGroupArray, isOptionGroupArray, isPojo, isRuleGroup, isRuleGroupType, isRuleGroupTypeIC, isRuleOrGroupValid, isRuleType, isUnsafeKey, isValidValue, isValidationResult, isValueProcessorLegacy, joinWith, jsonLogicAdditionalOperators, lc, mapSQLOperator, mergeAnyTranslation, mergeAnyTranslations, mergeClassnames, mongoDbFallback, mongoOperators, move, moveInPlace, normalizeConstituentWordOrder, nullFreeArray, nullOrUndefinedOrEmpty, numericRegex, numerifyValues, objectEntries, objectKeys, parseNumber, pathIsDisabled, pathsAreEqual, preferAnyProp, preferFlagProps, preferProp, prepareOptionList, prepareRule, prepareRuleGroup, prepareRuleOrGroup, prismaFallback, prismaOperators, processMatchMode, queryBuilderFlagDefaults, regenerateID, regenerateIDs, remove, removeInPlace, rootPath, shouldRenderAsNumber, splitBy, sqlDialectPresets, standardClassnames, toArray, toFlatOptionArray, toFullOption, toFullOptionList, toFullOptionMap, transformQuery, trimIfString, uniqByIdentifier, uniqByName, uniqOptGroups, uniqOptList, update, updateInPlace, uuidV4regex };
4622
4998
 
4623
4999
  //# sourceMappingURL=react-querybuilder_core.mjs.map