@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
@@ -694,7 +694,7 @@ const isRuleGroupType = (rg) => isRuleGroup(rg) && typeof rg.combinator === "str
694
694
  */
695
695
  const isRuleGroupTypeIC = (rg) => isRuleGroup(rg) && rg.combinator === void 0;
696
696
  //#endregion
697
- //#region \0@oxc-project+runtime@0.124.0/helpers/typeof.js
697
+ //#region \0@oxc-project+runtime@0.127.0/helpers/typeof.js
698
698
  function _typeof(o) {
699
699
  "@babel/helpers - typeof";
700
700
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -704,7 +704,7 @@ function _typeof(o) {
704
704
  }, _typeof(o);
705
705
  }
706
706
  //#endregion
707
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPrimitive.js
707
+ //#region \0@oxc-project+runtime@0.127.0/helpers/toPrimitive.js
708
708
  function toPrimitive(t, r) {
709
709
  if ("object" != _typeof(t) || !t) return t;
710
710
  var e = t[Symbol.toPrimitive];
@@ -716,13 +716,13 @@ function toPrimitive(t, r) {
716
716
  return ("string" === r ? String : Number)(t);
717
717
  }
718
718
  //#endregion
719
- //#region \0@oxc-project+runtime@0.124.0/helpers/toPropertyKey.js
719
+ //#region \0@oxc-project+runtime@0.127.0/helpers/toPropertyKey.js
720
720
  function toPropertyKey(t) {
721
721
  var i = toPrimitive(t, "string");
722
722
  return "symbol" == _typeof(i) ? i : i + "";
723
723
  }
724
724
  //#endregion
725
- //#region \0@oxc-project+runtime@0.124.0/helpers/defineProperty.js
725
+ //#region \0@oxc-project+runtime@0.127.0/helpers/defineProperty.js
726
726
  function _defineProperty(e, r, t) {
727
727
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
728
728
  value: t,
@@ -732,7 +732,7 @@ function _defineProperty(e, r, t) {
732
732
  }) : e[r] = t, e;
733
733
  }
734
734
  //#endregion
735
- //#region \0@oxc-project+runtime@0.124.0/helpers/objectSpread2.js
735
+ //#region \0@oxc-project+runtime@0.127.0/helpers/objectSpread2.js
736
736
  function ownKeys(e, r) {
737
737
  var t = Object.keys(e);
738
738
  if (Object.getOwnPropertySymbols) {
@@ -755,7 +755,7 @@ function _objectSpread2(e) {
755
755
  return e;
756
756
  }
757
757
  //#endregion
758
- //#region \0@oxc-project+runtime@0.124.0/helpers/objectWithoutPropertiesLoose.js
758
+ //#region \0@oxc-project+runtime@0.127.0/helpers/objectWithoutPropertiesLoose.js
759
759
  function _objectWithoutPropertiesLoose(r, e) {
760
760
  if (null == r) return {};
761
761
  var t = {};
@@ -766,7 +766,7 @@ function _objectWithoutPropertiesLoose(r, e) {
766
766
  return t;
767
767
  }
768
768
  //#endregion
769
- //#region \0@oxc-project+runtime@0.124.0/helpers/objectWithoutProperties.js
769
+ //#region \0@oxc-project+runtime@0.127.0/helpers/objectWithoutProperties.js
770
770
  function _objectWithoutProperties(e, t) {
771
771
  if (null == e) return {};
772
772
  var o, r, i = _objectWithoutPropertiesLoose(e, t);
@@ -1558,7 +1558,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
1558
1558
  //#endregion
1559
1559
  //#region src/utils/formatQuery/defaultRuleProcessorCEL.ts
1560
1560
  const shouldNegate$2 = (op) => op.startsWith("not") || op.startsWith("doesnot");
1561
- const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
1561
+ const escapeDoubleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
1562
1562
  /**
1563
1563
  * Default rule processor used by {@link formatQuery} for "cel" format.
1564
1564
  *
@@ -1597,19 +1597,19 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
1597
1597
  case "==":
1598
1598
  case "!=":
1599
1599
  case ">":
1600
- case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`}`;
1600
+ case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`}`;
1601
1601
  case "contains":
1602
- case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
1602
+ case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
1603
1603
  case "beginswith":
1604
- case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
1604
+ case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
1605
1605
  case "endswith":
1606
- case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
1606
+ case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
1607
1607
  case "null": return `${field} == null`;
1608
1608
  case "notnull": return `${field} != null`;
1609
1609
  case "in":
1610
1610
  case "notin": {
1611
1611
  const [prefix, suffix] = shouldNegate$2(operatorTL) ? ["!(", ")"] : ["", ""];
1612
- return `${prefix}${field} in [${toArray(value).map((val) => valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `"${escapeDoubleQuotes(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
1612
+ return `${prefix}${field} in [${toArray(value).map((val) => valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `"${escapeDoubleQuotes$1(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
1613
1613
  }
1614
1614
  case "between":
1615
1615
  case "notbetween": {
@@ -1619,8 +1619,8 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
1619
1619
  const shouldParseNumbers = !(parseNumbers === false);
1620
1620
  const firstNum = shouldRenderAsNumber(first, shouldParseNumbers) ? parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
1621
1621
  const secondNum = shouldRenderAsNumber(second, shouldParseNumbers) ? parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
1622
- let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes(first, escapeQuotes)}"` : firstNum;
1623
- let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes(second, escapeQuotes)}"` : secondNum;
1622
+ let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes$1(first, escapeQuotes)}"` : firstNum;
1623
+ let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes$1(second, escapeQuotes)}"` : secondNum;
1624
1624
  if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
1625
1625
  const tempNum = secondNum;
1626
1626
  secondValue = firstNum;
@@ -1865,7 +1865,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
1865
1865
  //#region src/utils/formatQuery/defaultRuleProcessorSpEL.ts
1866
1866
  const shouldNegate$1 = (op) => op.startsWith("not") || op.startsWith("doesnot");
1867
1867
  const wrapInNegation = (clause, negate) => negate ? `!(${clause})` : clause;
1868
- const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
1868
+ const escapeSingleQuotes$2 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
1869
1869
  /**
1870
1870
  * Default rule processor used by {@link formatQuery} for "spel" format.
1871
1871
  *
@@ -1903,20 +1903,20 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
1903
1903
  case "==":
1904
1904
  case "!=":
1905
1905
  case ">":
1906
- case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`;
1906
+ case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`;
1907
1907
  case "contains":
1908
- case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1908
+ case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1909
1909
  case "beginswith":
1910
- case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1910
+ case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
1911
1911
  case "endswith":
1912
- case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
1912
+ case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
1913
1913
  case "null": return `${field} == null`;
1914
1914
  case "notnull": return `${field} != null`;
1915
1915
  case "in":
1916
1916
  case "notin": {
1917
1917
  const negate = shouldNegate$1(operatorTL) ? "!" : "";
1918
1918
  const valueAsArray = toArray(value);
1919
- return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `'${escapeSingleQuotes(val, escapeQuotes)}'`}`).join(" or ")})` : "";
1919
+ return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `'${escapeSingleQuotes$2(val, escapeQuotes)}'`}`).join(" or ")})` : "";
1920
1920
  }
1921
1921
  case "between":
1922
1922
  case "notbetween": {
@@ -1926,8 +1926,8 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
1926
1926
  const shouldParseNumbers = !(parseNumbers === false);
1927
1927
  const firstNum = shouldRenderAsNumber(first, shouldParseNumbers) ? parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
1928
1928
  const secondNum = shouldRenderAsNumber(second, shouldParseNumbers) ? parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
1929
- let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes(first, escapeQuotes)}'` : firstNum;
1930
- let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes(second, escapeQuotes)}'` : secondNum;
1929
+ let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes$2(first, escapeQuotes)}'` : firstNum;
1930
+ let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes$2(second, escapeQuotes)}'` : secondNum;
1931
1931
  if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
1932
1932
  const tempNum = secondNum;
1933
1933
  secondValue = firstNum;
@@ -1996,6 +1996,71 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
1996
1996
  return valueIsField ? wrapFieldName(value) : shouldRenderAsNumber(value, parseNumbers) ? `${trimIfString(value)}` : `${wrapAndEscape(value)}`;
1997
1997
  };
1998
1998
  //#endregion
1999
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorCypher.ts
2000
+ /**
2001
+ * Maps a {@link DefaultCombinatorName} to a Cypher combinator keyword.
2002
+ *
2003
+ * @group Export
2004
+ */
2005
+ const cypherCombinatorMap = {
2006
+ and: "AND",
2007
+ or: "OR"
2008
+ };
2009
+ /**
2010
+ * Rule group processor used by {@link formatQuery} for "cypher" and "gql" formats.
2011
+ *
2012
+ * @group Export
2013
+ */
2014
+ const defaultRuleGroupProcessorCypher = (ruleGroup, options) => {
2015
+ const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
2016
+ const processRuleGroup = (rg, outermost) => {
2017
+ var _rg$id;
2018
+ if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
2019
+ const processedRules = [];
2020
+ let precedingCombinator = "";
2021
+ let firstRule = true;
2022
+ for (const rule of rg.rules) {
2023
+ var _rule$valueSource;
2024
+ if (typeof rule === "string") {
2025
+ precedingCombinator = cypherCombinatorMap[rule];
2026
+ continue;
2027
+ }
2028
+ if (isRuleGroup(rule)) {
2029
+ const processedGroup = processRuleGroup(rule);
2030
+ if (processedGroup) {
2031
+ if (!firstRule && precedingCombinator) {
2032
+ processedRules.push(precedingCombinator);
2033
+ precedingCombinator = "";
2034
+ }
2035
+ firstRule = false;
2036
+ processedRules.push(processedGroup);
2037
+ }
2038
+ continue;
2039
+ }
2040
+ const [validationResult, fieldValidator] = validateRule(rule);
2041
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
2042
+ const fieldData = getOption(fields, rule.field);
2043
+ const processedRule = ruleProcessor(rule, _objectSpread2(_objectSpread2({}, options), {}, {
2044
+ parseNumbers: getParseNumberBoolean(fieldData === null || fieldData === void 0 ? void 0 : fieldData.inputType),
2045
+ escapeQuotes: ((_rule$valueSource = rule.valueSource) !== null && _rule$valueSource !== void 0 ? _rule$valueSource : "value") === "value",
2046
+ fieldData
2047
+ }));
2048
+ if (processedRule) {
2049
+ if (!firstRule && precedingCombinator) {
2050
+ processedRules.push(precedingCombinator);
2051
+ precedingCombinator = "";
2052
+ }
2053
+ firstRule = false;
2054
+ processedRules.push(processedRule);
2055
+ }
2056
+ }
2057
+ const expression = processedRules.join(isRuleGroupType(rg) ? ` ${cypherCombinatorMap[rg.combinator]} ` : " ");
2058
+ const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "NOT " : ""}(`, ")"] : ["", ""];
2059
+ return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
2060
+ };
2061
+ return processRuleGroup(ruleGroup, true);
2062
+ };
2063
+ //#endregion
1999
2064
  //#region src/utils/formatQuery/defaultRuleProcessorDrizzle.ts
2000
2065
  /**
2001
2066
  * Default rule processor used by {@link formatQuery} for the "drizzle" format.
@@ -2153,6 +2218,69 @@ const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
2153
2218
  return processedRuleGroup === false ? {} : processedRuleGroup;
2154
2219
  };
2155
2220
  //#endregion
2221
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorGremlin.ts
2222
+ /**
2223
+ * Rule group processor used by {@link formatQuery} for "gremlin" format.
2224
+ *
2225
+ * At the top level, filter rules produce chained `.has()` steps (implicit AND).
2226
+ * Nested groups use `.and()` / `.or()` / `.not()` compound traversals with
2227
+ * `__` anonymous traversal prefixes.
2228
+ *
2229
+ * @group Export
2230
+ */
2231
+ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
2232
+ var _ruleGroup$id;
2233
+ const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
2234
+ const validateAndProcess = (rule) => {
2235
+ var _rule$valueSource;
2236
+ // v8 ignore next -- @preserve
2237
+ if (typeof rule === "string" || isRuleGroup(rule)) return void 0;
2238
+ const [validationResult, fieldValidator] = validateRule(rule);
2239
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
2240
+ const fieldData = getOption(fields, rule.field);
2241
+ return ruleProcessor(rule, _objectSpread2(_objectSpread2({}, options), {}, {
2242
+ parseNumbers: getParseNumberBoolean(fieldData === null || fieldData === void 0 ? void 0 : fieldData.inputType),
2243
+ escapeQuotes: ((_rule$valueSource = rule.valueSource) !== null && _rule$valueSource !== void 0 ? _rule$valueSource : "value") === "value",
2244
+ fieldData
2245
+ }));
2246
+ };
2247
+ /** Recursively processes a nested group into `.and()`/`.or()`/`.not()` form. */
2248
+ const processNested = (rg) => {
2249
+ var _rg$id, _combinator;
2250
+ if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return "";
2251
+ const predicates = [];
2252
+ for (const rule of rg.rules) {
2253
+ if (typeof rule === "string") continue;
2254
+ if (isRuleGroup(rule)) {
2255
+ const nested = processNested(rule);
2256
+ if (nested) predicates.push(nested);
2257
+ continue;
2258
+ }
2259
+ const processed = validateAndProcess(rule);
2260
+ if (processed) predicates.push(processed);
2261
+ }
2262
+ if (predicates.length === 0) return "";
2263
+ const combinator = (_combinator = rg.combinator) !== null && _combinator !== void 0 ? _combinator : "and";
2264
+ const prefix = rg.not ? "not" : combinator;
2265
+ if (predicates.length === 1 && !rg.not) return predicates[0];
2266
+ return `.${prefix}(${predicates.map((p) => p.startsWith(".") ? `__${p}` : p).join(", ")})`;
2267
+ };
2268
+ if (!isRuleOrGroupValid(ruleGroup, validationMap[(_ruleGroup$id = ruleGroup.id) !== null && _ruleGroup$id !== void 0 ? _ruleGroup$id : /* v8 ignore start -- @preserve */ ""])) return fallbackExpression;
2269
+ const steps = [];
2270
+ for (const rule of ruleGroup.rules) {
2271
+ if (typeof rule === "string") continue;
2272
+ if (isRuleGroup(rule)) {
2273
+ const compound = processNested(rule);
2274
+ if (compound) steps.push(compound);
2275
+ continue;
2276
+ }
2277
+ const processed = validateAndProcess(rule);
2278
+ if (processed) steps.push(processed);
2279
+ }
2280
+ if (steps.length === 0) return fallbackExpression;
2281
+ return steps.join("");
2282
+ };
2283
+ //#endregion
2156
2284
  //#region src/utils/formatQuery/defaultRuleGroupProcessorJSONata.ts
2157
2285
  /**
2158
2286
  * Rule group processor used by {@link formatQuery} for "jsonata" format.
@@ -2547,6 +2675,64 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
2547
2675
  return processRuleGroup(convertFromIC(ruleGroup), true);
2548
2676
  };
2549
2677
  //#endregion
2678
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorSPARQL.ts
2679
+ /**
2680
+ * Rule group processor used by {@link formatQuery} for "sparql" format.
2681
+ *
2682
+ * SPARQL uses the same combinators as CEL (`&&` / `||`) and `!()` for negation.
2683
+ *
2684
+ * @group Export
2685
+ */
2686
+ const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
2687
+ const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
2688
+ const processRuleGroup = (rg, outermost) => {
2689
+ var _rg$id;
2690
+ if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
2691
+ const processedRules = [];
2692
+ let precedingCombinator = "";
2693
+ let firstRule = true;
2694
+ for (const rule of rg.rules) {
2695
+ var _rule$valueSource;
2696
+ if (typeof rule === "string") {
2697
+ precedingCombinator = celCombinatorMap[rule];
2698
+ continue;
2699
+ }
2700
+ if (isRuleGroup(rule)) {
2701
+ const processedGroup = processRuleGroup(rule);
2702
+ if (processedGroup) {
2703
+ if (!firstRule && precedingCombinator) {
2704
+ processedRules.push(precedingCombinator);
2705
+ precedingCombinator = "";
2706
+ }
2707
+ firstRule = false;
2708
+ processedRules.push(processedGroup);
2709
+ }
2710
+ continue;
2711
+ }
2712
+ const [validationResult, fieldValidator] = validateRule(rule);
2713
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
2714
+ const fieldData = getOption(fields, rule.field);
2715
+ const processedRule = ruleProcessor(rule, _objectSpread2(_objectSpread2({}, options), {}, {
2716
+ parseNumbers: getParseNumberBoolean(fieldData === null || fieldData === void 0 ? void 0 : fieldData.inputType),
2717
+ escapeQuotes: ((_rule$valueSource = rule.valueSource) !== null && _rule$valueSource !== void 0 ? _rule$valueSource : "value") === "value",
2718
+ fieldData
2719
+ }));
2720
+ if (processedRule) {
2721
+ if (!firstRule && precedingCombinator) {
2722
+ processedRules.push(precedingCombinator);
2723
+ precedingCombinator = "";
2724
+ }
2725
+ firstRule = false;
2726
+ processedRules.push(processedRule);
2727
+ }
2728
+ }
2729
+ const expression = processedRules.join(isRuleGroupType(rg) ? ` ${celCombinatorMap[rg.combinator]} ` : " ");
2730
+ const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
2731
+ return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
2732
+ };
2733
+ return processRuleGroup(ruleGroup, true);
2734
+ };
2735
+ //#endregion
2550
2736
  //#region src/utils/formatQuery/defaultRuleGroupProcessorSQL.ts
2551
2737
  /**
2552
2738
  * Default rule processor used by {@link formatQuery} for "sql" format.
@@ -2922,6 +3108,59 @@ const getFieldValidatorReasons = (rule, fieldValidator) => {
2922
3108
  }
2923
3109
  };
2924
3110
  //#endregion
3111
+ //#region src/utils/formatQuery/defaultRuleProcessorCypher.ts
3112
+ const escapeSingleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
3113
+ /**
3114
+ * Default rule processor used by {@link formatQuery} for "cypher" and "gql" formats.
3115
+ *
3116
+ * @group Export
3117
+ */
3118
+ const defaultRuleProcessorCypher = (rule, opts = {}) => {
3119
+ const { escapeQuotes, parseNumbers } = opts;
3120
+ const { field, operator, value, valueSource } = rule;
3121
+ const valueIsField = valueSource === "field";
3122
+ const operatorTL = operator.toLowerCase();
3123
+ const fmtVal = (v) => {
3124
+ if (v === null || v === void 0) return "null";
3125
+ if (typeof v === "boolean" || typeof v === "bigint") return String(v);
3126
+ if (valueIsField) return trimIfString(v);
3127
+ if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
3128
+ return `'${escapeSingleQuotes$1(v, escapeQuotes)}'`;
3129
+ };
3130
+ switch (operatorTL) {
3131
+ case "=": return `${field} = ${fmtVal(value)}`;
3132
+ case "!=":
3133
+ case "<>": return `${field} <> ${fmtVal(value)}`;
3134
+ case "<":
3135
+ case ">":
3136
+ case "<=":
3137
+ case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
3138
+ case "contains": return `${field} CONTAINS ${fmtVal(value)}`;
3139
+ case "doesnotcontain": return `NOT ${field} CONTAINS ${fmtVal(value)}`;
3140
+ case "beginswith": return `${field} STARTS WITH ${fmtVal(value)}`;
3141
+ case "doesnotbeginwith": return `NOT ${field} STARTS WITH ${fmtVal(value)}`;
3142
+ case "endswith": return `${field} ENDS WITH ${fmtVal(value)}`;
3143
+ case "doesnotendwith": return `NOT ${field} ENDS WITH ${fmtVal(value)}`;
3144
+ case "null": return `${field} IS NULL`;
3145
+ case "notnull": return `${field} IS NOT NULL`;
3146
+ case "in":
3147
+ case "notin": {
3148
+ const values = toArray(value).map(fmtVal);
3149
+ if (!values.length) return "";
3150
+ return `${operatorTL === "notin" ? "NOT " : ""}${field} IN [${values.join(", ")}]`;
3151
+ }
3152
+ case "between":
3153
+ case "notbetween": {
3154
+ const arr = toArray(value);
3155
+ if (arr.length < 2) return "";
3156
+ const [low, high] = [fmtVal(arr[0]), fmtVal(arr[1])];
3157
+ const expr = `${low} <= ${field} AND ${field} <= ${high}`;
3158
+ return operatorTL === "notbetween" ? `NOT (${expr})` : expr;
3159
+ }
3160
+ default: return `${field} ${operator} ${fmtVal(value)}`;
3161
+ }
3162
+ };
3163
+ //#endregion
2925
3164
  //#region src/utils/formatQuery/defaultRuleProcessorElasticSearch.ts
2926
3165
  const rangeOperatorMap = {
2927
3166
  "<": "lt",
@@ -3071,6 +3310,68 @@ const defaultRuleProcessorElasticSearch = (rule, options = {}) => {
3071
3310
  return false;
3072
3311
  };
3073
3312
  //#endregion
3313
+ //#region src/utils/formatQuery/defaultRuleProcessorGremlin.ts
3314
+ const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
3315
+ /**
3316
+ * Default rule processor used by {@link formatQuery} for "gremlin" format.
3317
+ *
3318
+ * Each rule becomes a `.has()` step (or `.hasNot()`/`.has()` for null checks).
3319
+ *
3320
+ * @group Export
3321
+ */
3322
+ const defaultRuleProcessorGremlin = (rule, opts = {}) => {
3323
+ const { escapeQuotes, parseNumbers } = opts;
3324
+ const { field, operator, value, valueSource } = rule;
3325
+ const valueIsField = valueSource === "field";
3326
+ const operatorTL = operator.toLowerCase();
3327
+ const prop = field.includes(".") ? field.split(".").pop() : field;
3328
+ const fmtVal = (v) => {
3329
+ if (v === null || v === void 0) return "null";
3330
+ if (typeof v === "boolean" || typeof v === "bigint") return String(v);
3331
+ if (valueIsField) return trimIfString(v);
3332
+ if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
3333
+ return `'${escapeSingleQuotes(v, escapeQuotes)}'`;
3334
+ };
3335
+ switch (operatorTL) {
3336
+ case "=": return `.has('${prop}', ${fmtVal(value)})`;
3337
+ case "!=":
3338
+ case "<>": return `.has('${prop}', neq(${fmtVal(value)}))`;
3339
+ case "<": return `.has('${prop}', lt(${fmtVal(value)}))`;
3340
+ case ">": return `.has('${prop}', gt(${fmtVal(value)}))`;
3341
+ case "<=": return `.has('${prop}', lte(${fmtVal(value)}))`;
3342
+ case ">=": return `.has('${prop}', gte(${fmtVal(value)}))`;
3343
+ case "contains": return `.has('${prop}', containing(${fmtVal(value)}))`;
3344
+ case "doesnotcontain": return `.has('${prop}', notContaining(${fmtVal(value)}))`;
3345
+ case "beginswith": return `.has('${prop}', startingWith(${fmtVal(value)}))`;
3346
+ case "doesnotbeginwith": return `.has('${prop}', notStartingWith(${fmtVal(value)}))`;
3347
+ case "endswith": return `.has('${prop}', endingWith(${fmtVal(value)}))`;
3348
+ case "doesnotendwith": return `.has('${prop}', notEndingWith(${fmtVal(value)}))`;
3349
+ case "null": return `.hasNot('${prop}')`;
3350
+ case "notnull": return `.has('${prop}')`;
3351
+ case "in": {
3352
+ const items = toArray(value).map(fmtVal);
3353
+ if (!items.length) return "";
3354
+ return `.has('${prop}', within(${items.join(", ")}))`;
3355
+ }
3356
+ case "notin": {
3357
+ const items = toArray(value).map(fmtVal);
3358
+ if (!items.length) return "";
3359
+ return `.has('${prop}', without(${items.join(", ")}))`;
3360
+ }
3361
+ case "between": {
3362
+ const arr = toArray(value);
3363
+ if (arr.length < 2) return "";
3364
+ return `.has('${prop}', between(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
3365
+ }
3366
+ case "notbetween": {
3367
+ const arr = toArray(value);
3368
+ if (arr.length < 2) return "";
3369
+ return `.has('${prop}', outside(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
3370
+ }
3371
+ default: return `.has('${prop}', ${fmtVal(value)})`;
3372
+ }
3373
+ };
3374
+ //#endregion
3074
3375
  //#region src/utils/formatQuery/defaultRuleProcessorJSONata.ts
3075
3376
  const shouldNegate = (op) => op.startsWith("not") || op.startsWith("doesnot");
3076
3377
  const quote = (v, escapeQuotes) => `"${typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`)}"`;
@@ -3686,8 +3987,11 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
3686
3987
  const valueIsField = valueSource === "field";
3687
3988
  const operatorLC = lc(operator);
3688
3989
  if (!Op || valueIsField && (!col || !fn && [
3990
+ "contains",
3689
3991
  "doesnotcontain",
3992
+ "beginswith",
3690
3993
  "doesnotbeginwith",
3994
+ "endswith",
3691
3995
  "doesnotendwith"
3692
3996
  ].includes(operatorLC))) return;
3693
3997
  switch (operatorLC) {
@@ -3707,9 +4011,9 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
3707
4011
  }[operatorLC];
3708
4012
  return { [field]: valueIsField && operatorLC === "=" ? { [Op.col]: value } : { [sequelizeOperator]: valueIsField ? col(value) : shouldRenderAsNumber(value, parseNumbers) ? parseNumber(value, { parseNumbers: "strict" }) : value } };
3709
4013
  }
3710
- case "contains": return { [field]: { [Op.substring]: valueIsField ? col(value) : `${value}` } };
3711
- case "beginswith": return { [field]: { [Op.startsWith]: valueIsField ? col(value) : `${value}` } };
3712
- case "endswith": return { [field]: { [Op.endsWith]: valueIsField ? col(value) : `${value}` } };
4014
+ case "contains": return { [field]: { [valueIsField ? Op.like : Op.substring]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `${value}` } };
4015
+ case "beginswith": return { [field]: { [valueIsField ? Op.like : Op.startsWith]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}` } };
4016
+ case "endswith": return { [field]: { [valueIsField ? Op.like : Op.endsWith]: valueIsField ? fn("CONCAT", "%", col(value)) : `${value}` } };
3713
4017
  case "doesnotcontain": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `%${value}%` } };
3714
4018
  case "doesnotbeginwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}%` } };
3715
4019
  case "doesnotendwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value)) : `%${value}` } };
@@ -3739,6 +4043,69 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
3739
4043
  }
3740
4044
  };
3741
4045
  //#endregion
4046
+ //#region src/utils/formatQuery/defaultRuleProcessorSPARQL.ts
4047
+ const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
4048
+ /**
4049
+ * Default rule processor used by {@link formatQuery} for "sparql" format.
4050
+ *
4051
+ * @group Export
4052
+ */
4053
+ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
4054
+ const { escapeQuotes, parseNumbers } = opts;
4055
+ const { field, operator, value, valueSource } = rule;
4056
+ const valueIsField = valueSource === "field";
4057
+ const operatorTL = operator.toLowerCase();
4058
+ const fmtVal = (v) => {
4059
+ var _JSON$stringify;
4060
+ if (v === null || v === void 0) return "\"\"";
4061
+ if (typeof v === "boolean") return `"${v}"^^xsd:boolean`;
4062
+ if (typeof v === "bigint") return String(v);
4063
+ if (valueIsField) return trimIfString(v);
4064
+ if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
4065
+ const s = typeof v === "string" ? v : (_JSON$stringify = JSON.stringify(v)) !== null && _JSON$stringify !== void 0 ? _JSON$stringify : "";
4066
+ if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
4067
+ return `"${escapeDoubleQuotes(s, escapeQuotes)}"`;
4068
+ };
4069
+ switch (operatorTL) {
4070
+ case "=":
4071
+ case "!=":
4072
+ case "<":
4073
+ case ">":
4074
+ case "<=":
4075
+ case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
4076
+ case "<>": return `${field} != ${fmtVal(value)}`;
4077
+ case "contains": return `CONTAINS(${field}, ${fmtVal(value)})`;
4078
+ case "doesnotcontain": return `!CONTAINS(${field}, ${fmtVal(value)})`;
4079
+ case "beginswith": return `STRSTARTS(${field}, ${fmtVal(value)})`;
4080
+ case "doesnotbeginwith": return `!STRSTARTS(${field}, ${fmtVal(value)})`;
4081
+ case "endswith": return `STRENDS(${field}, ${fmtVal(value)})`;
4082
+ case "doesnotendwith": return `!STRENDS(${field}, ${fmtVal(value)})`;
4083
+ case "null": return `!BOUND(${field})`;
4084
+ case "notnull": return `BOUND(${field})`;
4085
+ case "in": {
4086
+ const items = toArray(value).map(fmtVal);
4087
+ if (!items.length) return "";
4088
+ return items.map((item) => `${field} = ${item}`).join(" || ");
4089
+ }
4090
+ case "notin": {
4091
+ const items = toArray(value).map(fmtVal);
4092
+ if (!items.length) return "";
4093
+ return items.map((item) => `${field} != ${item}`).join(" && ");
4094
+ }
4095
+ case "between": {
4096
+ const arr = toArray(value);
4097
+ if (arr.length < 2) return "";
4098
+ return `${field} >= ${fmtVal(arr[0])} && ${field} <= ${fmtVal(arr[1])}`;
4099
+ }
4100
+ case "notbetween": {
4101
+ const arr = toArray(value);
4102
+ if (arr.length < 2) return "";
4103
+ return `(${field} < ${fmtVal(arr[0])} || ${field} > ${fmtVal(arr[1])})`;
4104
+ }
4105
+ default: return `${field} ${operator} ${fmtVal(value)}`;
4106
+ }
4107
+ };
4108
+ //#endregion
3742
4109
  //#region src/utils/formatQuery/formatQuery.ts
3743
4110
  /**
3744
4111
  * A collection of option presets for {@link formatQuery}, specifically for SQL-based formats.
@@ -3786,6 +4153,10 @@ const defaultRuleProcessors = {
3786
4153
  sequelize: defaultRuleProcessorSequelize,
3787
4154
  spel: defaultRuleProcessorSpEL,
3788
4155
  sql: defaultRuleProcessorSQL,
4156
+ cypher: defaultRuleProcessorCypher,
4157
+ gql: defaultRuleProcessorCypher,
4158
+ sparql: defaultRuleProcessorSPARQL,
4159
+ gremlin: defaultRuleProcessorGremlin,
3789
4160
  diagnostics: defaultRuleProcessorSQL
3790
4161
  };
3791
4162
  /* v8 ignore next -- @preserve */
@@ -3808,6 +4179,10 @@ const defaultOperatorProcessors = {
3808
4179
  sequelize: defaultOperatorProcessor,
3809
4180
  spel: defaultOperatorProcessor,
3810
4181
  sql: defaultOperatorProcessorSQL,
4182
+ cypher: defaultOperatorProcessor,
4183
+ gql: defaultOperatorProcessor,
4184
+ sparql: defaultOperatorProcessor,
4185
+ gremlin: defaultOperatorProcessor,
3811
4186
  diagnostics: defaultOperatorProcessor
3812
4187
  };
3813
4188
  const defaultFallbackExpressions = {
@@ -3815,6 +4190,8 @@ const defaultFallbackExpressions = {
3815
4190
  ldap: "",
3816
4191
  mongodb: "\"$and\":[{\"$expr\":true}]",
3817
4192
  natural_language: "1 is 1",
4193
+ sparql: "1 = 1",
4194
+ gremlin: "",
3818
4195
  spel: "1 == 1",
3819
4196
  sql: "(1 = 1)"
3820
4197
  };
@@ -3957,6 +4334,10 @@ function formatQuery(ruleGroup, optionParam = {}) {
3957
4334
  case "prisma": return defaultRuleGroupProcessorPrisma(ruleGroup, finalOptions);
3958
4335
  case "drizzle": return defaultRuleGroupProcessorDrizzle(ruleGroup, finalOptions);
3959
4336
  case "sequelize": return defaultRuleGroupProcessorSequelize(ruleGroup, finalOptions);
4337
+ case "cypher":
4338
+ case "gql": return defaultRuleGroupProcessorCypher(ruleGroup, finalOptions);
4339
+ case "sparql": return defaultRuleGroupProcessorSPARQL(ruleGroup, finalOptions);
4340
+ case "gremlin": return defaultRuleGroupProcessorGremlin(ruleGroup, finalOptions);
3960
4341
  case "diagnostics": return defaultRuleGroupProcessorDiagnostics(ruleGroup, finalOptions);
3961
4342
  default: return "";
3962
4343
  }
@@ -4676,6 +5057,6 @@ const groupInPlace = (query, sourcePathOrID, targetPathOrID, options = {}) => {
4676
5057
  return query;
4677
5058
  };
4678
5059
  //#endregion
4679
- 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 };
5060
+ 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 };
4680
5061
 
4681
5062
  //# sourceMappingURL=react-querybuilder_core.legacy-esm.js.map