@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
@@ -83,7 +83,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
83
83
  //#endregion
84
84
  //#region src/utils/formatQuery/defaultRuleProcessorCEL.ts
85
85
  const shouldNegate$2 = (op) => op.startsWith("not") || op.startsWith("doesnot");
86
- const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
86
+ const escapeDoubleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
87
87
  /**
88
88
  * Default rule processor used by {@link formatQuery} for "cel" format.
89
89
  *
@@ -125,19 +125,19 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
125
125
  case "==":
126
126
  case "!=":
127
127
  case ">":
128
- case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`}`;
128
+ case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`}`;
129
129
  case "contains":
130
- case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
130
+ case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
131
131
  case "beginswith":
132
- case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
132
+ case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
133
133
  case "endswith":
134
- case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
134
+ case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
135
135
  case "null": return `${field} == null`;
136
136
  case "notnull": return `${field} != null`;
137
137
  case "in":
138
138
  case "notin": {
139
139
  const [prefix, suffix] = shouldNegate$2(operatorTL) ? ["!(", ")"] : ["", ""];
140
- return `${prefix}${field} in [${require_utils.toArray(value).map((val) => valueIsField || require_utils.shouldRenderAsNumber(val, parseNumbers) ? `${require_utils.trimIfString(val)}` : `"${escapeDoubleQuotes(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
140
+ return `${prefix}${field} in [${require_utils.toArray(value).map((val) => valueIsField || require_utils.shouldRenderAsNumber(val, parseNumbers) ? `${require_utils.trimIfString(val)}` : `"${escapeDoubleQuotes$1(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
141
141
  }
142
142
  case "between":
143
143
  case "notbetween": {
@@ -147,8 +147,8 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
147
147
  const shouldParseNumbers = !(parseNumbers === false);
148
148
  const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
149
149
  const secondNum = require_utils.shouldRenderAsNumber(second, shouldParseNumbers) ? require_utils.parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
150
- let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes(first, escapeQuotes)}"` : firstNum;
151
- let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes(second, escapeQuotes)}"` : secondNum;
150
+ let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes$1(first, escapeQuotes)}"` : firstNum;
151
+ let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes$1(second, escapeQuotes)}"` : secondNum;
152
152
  if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
153
153
  const tempNum = secondNum;
154
154
  secondValue = firstNum;
@@ -404,7 +404,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
404
404
  //#region src/utils/formatQuery/defaultRuleProcessorSpEL.ts
405
405
  const shouldNegate$1 = (op) => op.startsWith("not") || op.startsWith("doesnot");
406
406
  const wrapInNegation = (clause, negate) => negate ? `!(${clause})` : clause;
407
- const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
407
+ const escapeSingleQuotes$2 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
408
408
  /**
409
409
  * Default rule processor used by {@link formatQuery} for "spel" format.
410
410
  *
@@ -445,20 +445,20 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
445
445
  case "==":
446
446
  case "!=":
447
447
  case ">":
448
- case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`;
448
+ case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`;
449
449
  case "contains":
450
- case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
450
+ case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
451
451
  case "beginswith":
452
- case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${require_utils.trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
452
+ case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${require_utils.trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
453
453
  case "endswith":
454
- case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${require_utils.trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
454
+ case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${require_utils.trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
455
455
  case "null": return `${field} == null`;
456
456
  case "notnull": return `${field} != null`;
457
457
  case "in":
458
458
  case "notin": {
459
459
  const negate = shouldNegate$1(operatorTL) ? "!" : "";
460
460
  const valueAsArray = require_utils.toArray(value);
461
- return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || require_utils.shouldRenderAsNumber(val, parseNumbers) ? `${require_utils.trimIfString(val)}` : `'${escapeSingleQuotes(val, escapeQuotes)}'`}`).join(" or ")})` : "";
461
+ return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || require_utils.shouldRenderAsNumber(val, parseNumbers) ? `${require_utils.trimIfString(val)}` : `'${escapeSingleQuotes$2(val, escapeQuotes)}'`}`).join(" or ")})` : "";
462
462
  }
463
463
  case "between":
464
464
  case "notbetween": {
@@ -468,8 +468,8 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
468
468
  const shouldParseNumbers = !(parseNumbers === false);
469
469
  const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
470
470
  const secondNum = require_utils.shouldRenderAsNumber(second, shouldParseNumbers) ? require_utils.parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
471
- let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes(first, escapeQuotes)}'` : firstNum;
472
- let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes(second, escapeQuotes)}'` : secondNum;
471
+ let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes$2(first, escapeQuotes)}'` : firstNum;
472
+ let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes$2(second, escapeQuotes)}'` : secondNum;
473
473
  if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
474
474
  const tempNum = secondNum;
475
475
  secondValue = firstNum;
@@ -537,6 +537,70 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
537
537
  return valueIsField ? wrapFieldName(value) : require_utils.shouldRenderAsNumber(value, parseNumbers) ? `${require_utils.trimIfString(value)}` : `${wrapAndEscape(value)}`;
538
538
  };
539
539
  //#endregion
540
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorCypher.ts
541
+ /**
542
+ * Maps a {@link DefaultCombinatorName} to a Cypher combinator keyword.
543
+ *
544
+ * @group Export
545
+ */
546
+ const cypherCombinatorMap = {
547
+ and: "AND",
548
+ or: "OR"
549
+ };
550
+ /**
551
+ * Rule group processor used by {@link formatQuery} for "cypher" and "gql" formats.
552
+ *
553
+ * @group Export
554
+ */
555
+ const defaultRuleGroupProcessorCypher = (ruleGroup, options) => {
556
+ const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
557
+ const processRuleGroup = (rg, outermost) => {
558
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
559
+ const processedRules = [];
560
+ let precedingCombinator = "";
561
+ let firstRule = true;
562
+ for (const rule of rg.rules) {
563
+ if (typeof rule === "string") {
564
+ precedingCombinator = cypherCombinatorMap[rule];
565
+ continue;
566
+ }
567
+ if (require_objectUtils.isRuleGroup(rule)) {
568
+ const processedGroup = processRuleGroup(rule);
569
+ if (processedGroup) {
570
+ if (!firstRule && precedingCombinator) {
571
+ processedRules.push(precedingCombinator);
572
+ precedingCombinator = "";
573
+ }
574
+ firstRule = false;
575
+ processedRules.push(processedGroup);
576
+ }
577
+ continue;
578
+ }
579
+ const [validationResult, fieldValidator] = validateRule(rule);
580
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
581
+ const fieldData = require_utils.getOption(fields, rule.field);
582
+ const processedRule = ruleProcessor(rule, {
583
+ ...options,
584
+ parseNumbers: getParseNumberBoolean(fieldData?.inputType),
585
+ escapeQuotes: (rule.valueSource ?? "value") === "value",
586
+ fieldData
587
+ });
588
+ if (processedRule) {
589
+ if (!firstRule && precedingCombinator) {
590
+ processedRules.push(precedingCombinator);
591
+ precedingCombinator = "";
592
+ }
593
+ firstRule = false;
594
+ processedRules.push(processedRule);
595
+ }
596
+ }
597
+ const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${cypherCombinatorMap[rg.combinator]} ` : " ");
598
+ const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "NOT " : ""}(`, ")"] : ["", ""];
599
+ return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
600
+ };
601
+ return processRuleGroup(ruleGroup, true);
602
+ };
603
+ //#endregion
540
604
  //#region src/utils/formatQuery/defaultRuleProcessorDrizzle.ts
541
605
  /**
542
606
  * Default rule processor used by {@link formatQuery} for the "drizzle" format.
@@ -704,6 +768,67 @@ const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
704
768
  return processedRuleGroup === false ? {} : processedRuleGroup;
705
769
  };
706
770
  //#endregion
771
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorGremlin.ts
772
+ /**
773
+ * Rule group processor used by {@link formatQuery} for "gremlin" format.
774
+ *
775
+ * At the top level, filter rules produce chained `.has()` steps (implicit AND).
776
+ * Nested groups use `.and()` / `.or()` / `.not()` compound traversals with
777
+ * `__` anonymous traversal prefixes.
778
+ *
779
+ * @group Export
780
+ */
781
+ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
782
+ const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
783
+ const validateAndProcess = (rule) => {
784
+ // v8 ignore next -- @preserve
785
+ if (typeof rule === "string" || require_objectUtils.isRuleGroup(rule)) return void 0;
786
+ const [validationResult, fieldValidator] = validateRule(rule);
787
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
788
+ const fieldData = require_utils.getOption(fields, rule.field);
789
+ return ruleProcessor(rule, {
790
+ ...options,
791
+ parseNumbers: getParseNumberBoolean(fieldData?.inputType),
792
+ escapeQuotes: (rule.valueSource ?? "value") === "value",
793
+ fieldData
794
+ });
795
+ };
796
+ /** Recursively processes a nested group into `.and()`/`.or()`/`.not()` form. */
797
+ const processNested = (rg) => {
798
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return "";
799
+ const predicates = [];
800
+ for (const rule of rg.rules) {
801
+ if (typeof rule === "string") continue;
802
+ if (require_objectUtils.isRuleGroup(rule)) {
803
+ const nested = processNested(rule);
804
+ if (nested) predicates.push(nested);
805
+ continue;
806
+ }
807
+ const processed = validateAndProcess(rule);
808
+ if (processed) predicates.push(processed);
809
+ }
810
+ if (predicates.length === 0) return "";
811
+ const combinator = rg.combinator ?? "and";
812
+ const prefix = rg.not ? "not" : combinator;
813
+ if (predicates.length === 1 && !rg.not) return predicates[0];
814
+ return `.${prefix}(${predicates.map((p) => p.startsWith(".") ? `__${p}` : p).join(", ")})`;
815
+ };
816
+ if (!isRuleOrGroupValid(ruleGroup, validationMap[ruleGroup.id ?? ""])) return fallbackExpression;
817
+ const steps = [];
818
+ for (const rule of ruleGroup.rules) {
819
+ if (typeof rule === "string") continue;
820
+ if (require_objectUtils.isRuleGroup(rule)) {
821
+ const compound = processNested(rule);
822
+ if (compound) steps.push(compound);
823
+ continue;
824
+ }
825
+ const processed = validateAndProcess(rule);
826
+ if (processed) steps.push(processed);
827
+ }
828
+ if (steps.length === 0) return fallbackExpression;
829
+ return steps.join("");
830
+ };
831
+ //#endregion
707
832
  //#region src/utils/formatQuery/defaultRuleGroupProcessorJSONata.ts
708
833
  /**
709
834
  * Rule group processor used by {@link formatQuery} for "jsonata" format.
@@ -1091,6 +1216,63 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
1091
1216
  return processRuleGroup(require_convertQuery.convertFromIC(ruleGroup), true);
1092
1217
  };
1093
1218
  //#endregion
1219
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorSPARQL.ts
1220
+ /**
1221
+ * Rule group processor used by {@link formatQuery} for "sparql" format.
1222
+ *
1223
+ * SPARQL uses the same combinators as CEL (`&&` / `||`) and `!()` for negation.
1224
+ *
1225
+ * @group Export
1226
+ */
1227
+ const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
1228
+ const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
1229
+ const processRuleGroup = (rg, outermost) => {
1230
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
1231
+ const processedRules = [];
1232
+ let precedingCombinator = "";
1233
+ let firstRule = true;
1234
+ for (const rule of rg.rules) {
1235
+ if (typeof rule === "string") {
1236
+ precedingCombinator = require_utils.celCombinatorMap[rule];
1237
+ continue;
1238
+ }
1239
+ if (require_objectUtils.isRuleGroup(rule)) {
1240
+ const processedGroup = processRuleGroup(rule);
1241
+ if (processedGroup) {
1242
+ if (!firstRule && precedingCombinator) {
1243
+ processedRules.push(precedingCombinator);
1244
+ precedingCombinator = "";
1245
+ }
1246
+ firstRule = false;
1247
+ processedRules.push(processedGroup);
1248
+ }
1249
+ continue;
1250
+ }
1251
+ const [validationResult, fieldValidator] = validateRule(rule);
1252
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
1253
+ const fieldData = require_utils.getOption(fields, rule.field);
1254
+ const processedRule = ruleProcessor(rule, {
1255
+ ...options,
1256
+ parseNumbers: getParseNumberBoolean(fieldData?.inputType),
1257
+ escapeQuotes: (rule.valueSource ?? "value") === "value",
1258
+ fieldData
1259
+ });
1260
+ if (processedRule) {
1261
+ if (!firstRule && precedingCombinator) {
1262
+ processedRules.push(precedingCombinator);
1263
+ precedingCombinator = "";
1264
+ }
1265
+ firstRule = false;
1266
+ processedRules.push(processedRule);
1267
+ }
1268
+ }
1269
+ const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${require_utils.celCombinatorMap[rg.combinator]} ` : " ");
1270
+ const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
1271
+ return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
1272
+ };
1273
+ return processRuleGroup(ruleGroup, true);
1274
+ };
1275
+ //#endregion
1094
1276
  //#region src/utils/formatQuery/defaultRuleGroupProcessorSQL.ts
1095
1277
  /**
1096
1278
  * Default rule processor used by {@link formatQuery} for "sql" format.
@@ -1466,6 +1648,59 @@ const getFieldValidatorReasons = (rule, fieldValidator) => {
1466
1648
  }
1467
1649
  };
1468
1650
  //#endregion
1651
+ //#region src/utils/formatQuery/defaultRuleProcessorCypher.ts
1652
+ const escapeSingleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
1653
+ /**
1654
+ * Default rule processor used by {@link formatQuery} for "cypher" and "gql" formats.
1655
+ *
1656
+ * @group Export
1657
+ */
1658
+ const defaultRuleProcessorCypher = (rule, opts = {}) => {
1659
+ const { escapeQuotes, parseNumbers } = opts;
1660
+ const { field, operator, value, valueSource } = rule;
1661
+ const valueIsField = valueSource === "field";
1662
+ const operatorTL = operator.toLowerCase();
1663
+ const fmtVal = (v) => {
1664
+ if (v === null || v === void 0) return "null";
1665
+ if (typeof v === "boolean" || typeof v === "bigint") return String(v);
1666
+ if (valueIsField) return require_utils.trimIfString(v);
1667
+ if (typeof v === "number" || require_utils.shouldRenderAsNumber(v, parseNumbers)) return require_utils.trimIfString(v);
1668
+ return `'${escapeSingleQuotes$1(v, escapeQuotes)}'`;
1669
+ };
1670
+ switch (operatorTL) {
1671
+ case "=": return `${field} = ${fmtVal(value)}`;
1672
+ case "!=":
1673
+ case "<>": return `${field} <> ${fmtVal(value)}`;
1674
+ case "<":
1675
+ case ">":
1676
+ case "<=":
1677
+ case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
1678
+ case "contains": return `${field} CONTAINS ${fmtVal(value)}`;
1679
+ case "doesnotcontain": return `NOT ${field} CONTAINS ${fmtVal(value)}`;
1680
+ case "beginswith": return `${field} STARTS WITH ${fmtVal(value)}`;
1681
+ case "doesnotbeginwith": return `NOT ${field} STARTS WITH ${fmtVal(value)}`;
1682
+ case "endswith": return `${field} ENDS WITH ${fmtVal(value)}`;
1683
+ case "doesnotendwith": return `NOT ${field} ENDS WITH ${fmtVal(value)}`;
1684
+ case "null": return `${field} IS NULL`;
1685
+ case "notnull": return `${field} IS NOT NULL`;
1686
+ case "in":
1687
+ case "notin": {
1688
+ const values = require_utils.toArray(value).map(fmtVal);
1689
+ if (!values.length) return "";
1690
+ return `${operatorTL === "notin" ? "NOT " : ""}${field} IN [${values.join(", ")}]`;
1691
+ }
1692
+ case "between":
1693
+ case "notbetween": {
1694
+ const arr = require_utils.toArray(value);
1695
+ if (arr.length < 2) return "";
1696
+ const [low, high] = [fmtVal(arr[0]), fmtVal(arr[1])];
1697
+ const expr = `${low} <= ${field} AND ${field} <= ${high}`;
1698
+ return operatorTL === "notbetween" ? `NOT (${expr})` : expr;
1699
+ }
1700
+ default: return `${field} ${operator} ${fmtVal(value)}`;
1701
+ }
1702
+ };
1703
+ //#endregion
1469
1704
  //#region src/utils/formatQuery/defaultRuleProcessorElasticSearch.ts
1470
1705
  const rangeOperatorMap = {
1471
1706
  "<": "lt",
@@ -1617,6 +1852,68 @@ const defaultRuleProcessorElasticSearch = (rule, options = {}) => {
1617
1852
  return false;
1618
1853
  };
1619
1854
  //#endregion
1855
+ //#region src/utils/formatQuery/defaultRuleProcessorGremlin.ts
1856
+ const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
1857
+ /**
1858
+ * Default rule processor used by {@link formatQuery} for "gremlin" format.
1859
+ *
1860
+ * Each rule becomes a `.has()` step (or `.hasNot()`/`.has()` for null checks).
1861
+ *
1862
+ * @group Export
1863
+ */
1864
+ const defaultRuleProcessorGremlin = (rule, opts = {}) => {
1865
+ const { escapeQuotes, parseNumbers } = opts;
1866
+ const { field, operator, value, valueSource } = rule;
1867
+ const valueIsField = valueSource === "field";
1868
+ const operatorTL = operator.toLowerCase();
1869
+ const prop = field.includes(".") ? field.split(".").pop() : field;
1870
+ const fmtVal = (v) => {
1871
+ if (v === null || v === void 0) return "null";
1872
+ if (typeof v === "boolean" || typeof v === "bigint") return String(v);
1873
+ if (valueIsField) return require_utils.trimIfString(v);
1874
+ if (typeof v === "number" || require_utils.shouldRenderAsNumber(v, parseNumbers)) return require_utils.trimIfString(v);
1875
+ return `'${escapeSingleQuotes(v, escapeQuotes)}'`;
1876
+ };
1877
+ switch (operatorTL) {
1878
+ case "=": return `.has('${prop}', ${fmtVal(value)})`;
1879
+ case "!=":
1880
+ case "<>": return `.has('${prop}', neq(${fmtVal(value)}))`;
1881
+ case "<": return `.has('${prop}', lt(${fmtVal(value)}))`;
1882
+ case ">": return `.has('${prop}', gt(${fmtVal(value)}))`;
1883
+ case "<=": return `.has('${prop}', lte(${fmtVal(value)}))`;
1884
+ case ">=": return `.has('${prop}', gte(${fmtVal(value)}))`;
1885
+ case "contains": return `.has('${prop}', containing(${fmtVal(value)}))`;
1886
+ case "doesnotcontain": return `.has('${prop}', notContaining(${fmtVal(value)}))`;
1887
+ case "beginswith": return `.has('${prop}', startingWith(${fmtVal(value)}))`;
1888
+ case "doesnotbeginwith": return `.has('${prop}', notStartingWith(${fmtVal(value)}))`;
1889
+ case "endswith": return `.has('${prop}', endingWith(${fmtVal(value)}))`;
1890
+ case "doesnotendwith": return `.has('${prop}', notEndingWith(${fmtVal(value)}))`;
1891
+ case "null": return `.hasNot('${prop}')`;
1892
+ case "notnull": return `.has('${prop}')`;
1893
+ case "in": {
1894
+ const items = require_utils.toArray(value).map(fmtVal);
1895
+ if (!items.length) return "";
1896
+ return `.has('${prop}', within(${items.join(", ")}))`;
1897
+ }
1898
+ case "notin": {
1899
+ const items = require_utils.toArray(value).map(fmtVal);
1900
+ if (!items.length) return "";
1901
+ return `.has('${prop}', without(${items.join(", ")}))`;
1902
+ }
1903
+ case "between": {
1904
+ const arr = require_utils.toArray(value);
1905
+ if (arr.length < 2) return "";
1906
+ return `.has('${prop}', between(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
1907
+ }
1908
+ case "notbetween": {
1909
+ const arr = require_utils.toArray(value);
1910
+ if (arr.length < 2) return "";
1911
+ return `.has('${prop}', outside(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
1912
+ }
1913
+ default: return `.has('${prop}', ${fmtVal(value)})`;
1914
+ }
1915
+ };
1916
+ //#endregion
1620
1917
  //#region src/utils/formatQuery/defaultRuleProcessorJSONata.ts
1621
1918
  const shouldNegate = (op) => op.startsWith("not") || op.startsWith("doesnot");
1622
1919
  const quote = (v, escapeQuotes) => `"${typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`)}"`;
@@ -2239,8 +2536,11 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
2239
2536
  const valueIsField = valueSource === "field";
2240
2537
  const operatorLC = require_objectUtils.lc(operator);
2241
2538
  if (!Op || valueIsField && (!col || !fn && [
2539
+ "contains",
2242
2540
  "doesnotcontain",
2541
+ "beginswith",
2243
2542
  "doesnotbeginwith",
2543
+ "endswith",
2244
2544
  "doesnotendwith"
2245
2545
  ].includes(operatorLC))) return;
2246
2546
  switch (operatorLC) {
@@ -2260,9 +2560,9 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
2260
2560
  }[operatorLC];
2261
2561
  return { [field]: valueIsField && operatorLC === "=" ? { [Op.col]: value } : { [sequelizeOperator]: valueIsField ? col(value) : require_utils.shouldRenderAsNumber(value, parseNumbers) ? require_utils.parseNumber(value, { parseNumbers: "strict" }) : value } };
2262
2562
  }
2263
- case "contains": return { [field]: { [Op.substring]: valueIsField ? col(value) : `${value}` } };
2264
- case "beginswith": return { [field]: { [Op.startsWith]: valueIsField ? col(value) : `${value}` } };
2265
- case "endswith": return { [field]: { [Op.endsWith]: valueIsField ? col(value) : `${value}` } };
2563
+ case "contains": return { [field]: { [valueIsField ? Op.like : Op.substring]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `${value}` } };
2564
+ case "beginswith": return { [field]: { [valueIsField ? Op.like : Op.startsWith]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}` } };
2565
+ case "endswith": return { [field]: { [valueIsField ? Op.like : Op.endsWith]: valueIsField ? fn("CONCAT", "%", col(value)) : `${value}` } };
2266
2566
  case "doesnotcontain": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `%${value}%` } };
2267
2567
  case "doesnotbeginwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}%` } };
2268
2568
  case "doesnotendwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value)) : `%${value}` } };
@@ -2292,6 +2592,68 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
2292
2592
  }
2293
2593
  };
2294
2594
  //#endregion
2595
+ //#region src/utils/formatQuery/defaultRuleProcessorSPARQL.ts
2596
+ const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
2597
+ /**
2598
+ * Default rule processor used by {@link formatQuery} for "sparql" format.
2599
+ *
2600
+ * @group Export
2601
+ */
2602
+ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
2603
+ const { escapeQuotes, parseNumbers } = opts;
2604
+ const { field, operator, value, valueSource } = rule;
2605
+ const valueIsField = valueSource === "field";
2606
+ const operatorTL = operator.toLowerCase();
2607
+ const fmtVal = (v) => {
2608
+ if (v === null || v === void 0) return "\"\"";
2609
+ if (typeof v === "boolean") return `"${v}"^^xsd:boolean`;
2610
+ if (typeof v === "bigint") return String(v);
2611
+ if (valueIsField) return require_utils.trimIfString(v);
2612
+ if (typeof v === "number" || require_utils.shouldRenderAsNumber(v, parseNumbers)) return require_utils.trimIfString(v);
2613
+ const s = typeof v === "string" ? v : JSON.stringify(v) ?? "";
2614
+ if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
2615
+ return `"${escapeDoubleQuotes(s, escapeQuotes)}"`;
2616
+ };
2617
+ switch (operatorTL) {
2618
+ case "=":
2619
+ case "!=":
2620
+ case "<":
2621
+ case ">":
2622
+ case "<=":
2623
+ case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
2624
+ case "<>": return `${field} != ${fmtVal(value)}`;
2625
+ case "contains": return `CONTAINS(${field}, ${fmtVal(value)})`;
2626
+ case "doesnotcontain": return `!CONTAINS(${field}, ${fmtVal(value)})`;
2627
+ case "beginswith": return `STRSTARTS(${field}, ${fmtVal(value)})`;
2628
+ case "doesnotbeginwith": return `!STRSTARTS(${field}, ${fmtVal(value)})`;
2629
+ case "endswith": return `STRENDS(${field}, ${fmtVal(value)})`;
2630
+ case "doesnotendwith": return `!STRENDS(${field}, ${fmtVal(value)})`;
2631
+ case "null": return `!BOUND(${field})`;
2632
+ case "notnull": return `BOUND(${field})`;
2633
+ case "in": {
2634
+ const items = require_utils.toArray(value).map(fmtVal);
2635
+ if (!items.length) return "";
2636
+ return items.map((item) => `${field} = ${item}`).join(" || ");
2637
+ }
2638
+ case "notin": {
2639
+ const items = require_utils.toArray(value).map(fmtVal);
2640
+ if (!items.length) return "";
2641
+ return items.map((item) => `${field} != ${item}`).join(" && ");
2642
+ }
2643
+ case "between": {
2644
+ const arr = require_utils.toArray(value);
2645
+ if (arr.length < 2) return "";
2646
+ return `${field} >= ${fmtVal(arr[0])} && ${field} <= ${fmtVal(arr[1])}`;
2647
+ }
2648
+ case "notbetween": {
2649
+ const arr = require_utils.toArray(value);
2650
+ if (arr.length < 2) return "";
2651
+ return `(${field} < ${fmtVal(arr[0])} || ${field} > ${fmtVal(arr[1])})`;
2652
+ }
2653
+ default: return `${field} ${operator} ${fmtVal(value)}`;
2654
+ }
2655
+ };
2656
+ //#endregion
2295
2657
  //#region src/utils/formatQuery/formatQuery.ts
2296
2658
  /**
2297
2659
  * A collection of option presets for {@link formatQuery}, specifically for SQL-based formats.
@@ -2339,6 +2701,10 @@ const defaultRuleProcessors = {
2339
2701
  sequelize: defaultRuleProcessorSequelize,
2340
2702
  spel: defaultRuleProcessorSpEL,
2341
2703
  sql: defaultRuleProcessorSQL,
2704
+ cypher: defaultRuleProcessorCypher,
2705
+ gql: defaultRuleProcessorCypher,
2706
+ sparql: defaultRuleProcessorSPARQL,
2707
+ gremlin: defaultRuleProcessorGremlin,
2342
2708
  diagnostics: defaultRuleProcessorSQL
2343
2709
  };
2344
2710
  /* v8 ignore next -- @preserve */
@@ -2361,6 +2727,10 @@ const defaultOperatorProcessors = {
2361
2727
  sequelize: defaultOperatorProcessor,
2362
2728
  spel: defaultOperatorProcessor,
2363
2729
  sql: defaultOperatorProcessorSQL,
2730
+ cypher: defaultOperatorProcessor,
2731
+ gql: defaultOperatorProcessor,
2732
+ sparql: defaultOperatorProcessor,
2733
+ gremlin: defaultOperatorProcessor,
2364
2734
  diagnostics: defaultOperatorProcessor
2365
2735
  };
2366
2736
  const defaultFallbackExpressions = {
@@ -2368,6 +2738,8 @@ const defaultFallbackExpressions = {
2368
2738
  ldap: "",
2369
2739
  mongodb: "\"$and\":[{\"$expr\":true}]",
2370
2740
  natural_language: "1 is 1",
2741
+ sparql: "1 = 1",
2742
+ gremlin: "",
2371
2743
  spel: "1 == 1",
2372
2744
  sql: "(1 = 1)"
2373
2745
  };
@@ -2508,6 +2880,10 @@ function formatQuery(ruleGroup, optionParam = {}) {
2508
2880
  case "prisma": return defaultRuleGroupProcessorPrisma(ruleGroup, finalOptions);
2509
2881
  case "drizzle": return defaultRuleGroupProcessorDrizzle(ruleGroup, finalOptions);
2510
2882
  case "sequelize": return defaultRuleGroupProcessorSequelize(ruleGroup, finalOptions);
2883
+ case "cypher":
2884
+ case "gql": return defaultRuleGroupProcessorCypher(ruleGroup, finalOptions);
2885
+ case "sparql": return defaultRuleGroupProcessorSPARQL(ruleGroup, finalOptions);
2886
+ case "gremlin": return defaultRuleGroupProcessorGremlin(ruleGroup, finalOptions);
2511
2887
  case "diagnostics": return defaultRuleGroupProcessorDiagnostics(ruleGroup, finalOptions);
2512
2888
  default: return "";
2513
2889
  }
@@ -2566,6 +2942,7 @@ const defaultValueProcessorSpELByRule = defaultRuleProcessorSpEL;
2566
2942
  exports.bigIntJsonParseReviver = require_utils.bigIntJsonParseReviver;
2567
2943
  exports.bigIntJsonStringifyReplacer = require_utils.bigIntJsonStringifyReplacer;
2568
2944
  exports.celCombinatorMap = require_utils.celCombinatorMap;
2945
+ exports.cypherCombinatorMap = cypherCombinatorMap;
2569
2946
  exports.defaultCELValueProcessor = defaultCELValueProcessor;
2570
2947
  exports.defaultExportOperatorMap = defaultExportOperatorMap;
2571
2948
  exports.defaultMongoDBValueProcessor = defaultMongoDBValueProcessor;
@@ -2573,9 +2950,11 @@ exports.defaultNLTranslations = require_utils.defaultNLTranslations;
2573
2950
  exports.defaultOperatorProcessorNL = defaultOperatorProcessorNL;
2574
2951
  exports.defaultOperatorProcessorSQL = defaultOperatorProcessorSQL;
2575
2952
  exports.defaultRuleGroupProcessorCEL = defaultRuleGroupProcessorCEL;
2953
+ exports.defaultRuleGroupProcessorCypher = defaultRuleGroupProcessorCypher;
2576
2954
  exports.defaultRuleGroupProcessorDiagnostics = defaultRuleGroupProcessorDiagnostics;
2577
2955
  exports.defaultRuleGroupProcessorDrizzle = defaultRuleGroupProcessorDrizzle;
2578
2956
  exports.defaultRuleGroupProcessorElasticSearch = defaultRuleGroupProcessorElasticSearch;
2957
+ exports.defaultRuleGroupProcessorGremlin = defaultRuleGroupProcessorGremlin;
2579
2958
  exports.defaultRuleGroupProcessorJSONata = defaultRuleGroupProcessorJSONata;
2580
2959
  exports.defaultRuleGroupProcessorJsonLogic = defaultRuleGroupProcessorJsonLogic;
2581
2960
  exports.defaultRuleGroupProcessorLDAP = defaultRuleGroupProcessorLDAP;
@@ -2584,12 +2963,15 @@ exports.defaultRuleGroupProcessorMongoDBQuery = defaultRuleGroupProcessorMongoDB
2584
2963
  exports.defaultRuleGroupProcessorNL = defaultRuleGroupProcessorNL;
2585
2964
  exports.defaultRuleGroupProcessorParameterized = defaultRuleGroupProcessorParameterized;
2586
2965
  exports.defaultRuleGroupProcessorPrisma = defaultRuleGroupProcessorPrisma;
2966
+ exports.defaultRuleGroupProcessorSPARQL = defaultRuleGroupProcessorSPARQL;
2587
2967
  exports.defaultRuleGroupProcessorSQL = defaultRuleGroupProcessorSQL;
2588
2968
  exports.defaultRuleGroupProcessorSequelize = defaultRuleGroupProcessorSequelize;
2589
2969
  exports.defaultRuleGroupProcessorSpEL = defaultRuleGroupProcessorSpEL;
2590
2970
  exports.defaultRuleProcessorCEL = defaultRuleProcessorCEL;
2971
+ exports.defaultRuleProcessorCypher = defaultRuleProcessorCypher;
2591
2972
  exports.defaultRuleProcessorDrizzle = defaultRuleProcessorDrizzle;
2592
2973
  exports.defaultRuleProcessorElasticSearch = defaultRuleProcessorElasticSearch;
2974
+ exports.defaultRuleProcessorGremlin = defaultRuleProcessorGremlin;
2593
2975
  exports.defaultRuleProcessorJSONata = defaultRuleProcessorJSONata;
2594
2976
  exports.defaultRuleProcessorJsonLogic = defaultRuleProcessorJsonLogic;
2595
2977
  exports.defaultRuleProcessorLDAP = defaultRuleProcessorLDAP;
@@ -2598,6 +2980,7 @@ exports.defaultRuleProcessorMongoDBQuery = defaultRuleProcessorMongoDBQuery;
2598
2980
  exports.defaultRuleProcessorNL = defaultRuleProcessorNL;
2599
2981
  exports.defaultRuleProcessorParameterized = defaultRuleProcessorParameterized;
2600
2982
  exports.defaultRuleProcessorPrisma = defaultRuleProcessorPrisma;
2983
+ exports.defaultRuleProcessorSPARQL = defaultRuleProcessorSPARQL;
2601
2984
  exports.defaultRuleProcessorSQL = defaultRuleProcessorSQL;
2602
2985
  exports.defaultRuleProcessorSequelize = defaultRuleProcessorSequelize;
2603
2986
  exports.defaultRuleProcessorSpEL = defaultRuleProcessorSpEL;