@react-querybuilder/core 8.21.1 → 8.22.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 (88) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +1426 -56
  3. package/dist/cjs/react-querybuilder_core.cjs.development.js +2241 -83
  4. package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
  5. package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +1426 -56
  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 +17 -2
  9. package/dist/formatQuery.d.ts +17 -2
  10. package/dist/formatQuery.js +68 -45
  11. package/dist/formatQuery.js.map +1 -1
  12. package/dist/formatQuery.mjs +67 -46
  13. package/dist/formatQuery.mjs.map +1 -1
  14. package/dist/{import-Ddc3d_8q.d.ts → import-6ExjhifL.d.ts} +2 -2
  15. package/dist/{import-BVdxeIBO.d.mts → import-DVWI7Fdh.d.mts} +2 -2
  16. package/dist/{index-BSwFvkeI.d.mts → index-CX9mehdL.d.mts} +15 -1
  17. package/dist/{index-BSwFvkeI.d.ts → index-CX9mehdL.d.ts} +15 -1
  18. package/dist/parseCEL.d.mts +2 -2
  19. package/dist/parseCEL.d.ts +2 -2
  20. package/dist/parseCEL.js +6 -8
  21. package/dist/parseCEL.js.map +1 -1
  22. package/dist/parseCEL.mjs +6 -8
  23. package/dist/parseCEL.mjs.map +1 -1
  24. package/dist/parseCypher.d.mts +1 -1
  25. package/dist/parseCypher.d.ts +1 -1
  26. package/dist/parseCypher.js.map +1 -1
  27. package/dist/parseGremlin.d.mts +1 -1
  28. package/dist/parseGremlin.d.ts +1 -1
  29. package/dist/parseJSONata.d.mts +2 -2
  30. package/dist/parseJSONata.d.ts +2 -2
  31. package/dist/parseJSONata.js +2 -2
  32. package/dist/parseJSONata.js.map +1 -1
  33. package/dist/parseJSONata.mjs +1 -1
  34. package/dist/parseJsonLogic.d.mts +2 -2
  35. package/dist/parseJsonLogic.d.ts +2 -2
  36. package/dist/parseJsonLogic.js +3 -3
  37. package/dist/parseJsonLogic.js.map +1 -1
  38. package/dist/parseJsonLogic.mjs +3 -3
  39. package/dist/parseJsonLogic.mjs.map +1 -1
  40. package/dist/parseMongoDB.d.mts +2 -2
  41. package/dist/parseMongoDB.d.ts +2 -2
  42. package/dist/parseMongoDB.js +2 -2
  43. package/dist/parseMongoDB.mjs +2 -2
  44. package/dist/parseSPARQL.d.mts +1 -1
  45. package/dist/parseSPARQL.d.ts +1 -1
  46. package/dist/parseSPARQL.js +0 -1
  47. package/dist/parseSPARQL.js.map +1 -1
  48. package/dist/parseSPARQL.mjs +0 -1
  49. package/dist/parseSPARQL.mjs.map +1 -1
  50. package/dist/parseSQL.d.mts +2 -2
  51. package/dist/parseSQL.d.ts +2 -2
  52. package/dist/parseSQL.js +54 -62
  53. package/dist/parseSQL.js.map +1 -1
  54. package/dist/parseSQL.mjs +54 -62
  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 +3 -3
  59. package/dist/parseSpEL.js.map +1 -1
  60. package/dist/parseSpEL.mjs +3 -3
  61. package/dist/parseSpEL.mjs.map +1 -1
  62. package/dist/{prepareQueryObjects-C2-kTZvR.js → prepareQueryObjects-BnGL91Tt.js} +9 -5
  63. package/dist/{prepareQueryObjects-C2-kTZvR.js.map → prepareQueryObjects-BnGL91Tt.js.map} +1 -1
  64. package/dist/{prepareQueryObjects-Q18lHCKl.mjs → prepareQueryObjects-ChINDIap.mjs} +9 -5
  65. package/dist/{prepareQueryObjects-Q18lHCKl.mjs.map → prepareQueryObjects-ChINDIap.mjs.map} +1 -1
  66. package/dist/query-builder-layout.css +1 -1
  67. package/dist/query-builder-layout.css.map +1 -1
  68. package/dist/query-builder.css +1 -1
  69. package/dist/query-builder.css.map +1 -1
  70. package/dist/react-querybuilder_core.d.mts +1426 -56
  71. package/dist/react-querybuilder_core.legacy-esm.d.ts +1426 -56
  72. package/dist/react-querybuilder_core.legacy-esm.js +2279 -92
  73. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  74. package/dist/react-querybuilder_core.mjs +2198 -85
  75. package/dist/react-querybuilder_core.mjs.map +1 -1
  76. package/dist/react-querybuilder_core.production.d.mts +1426 -56
  77. package/dist/react-querybuilder_core.production.mjs +1 -1
  78. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  79. package/dist/styles/_layout.scss +5 -2
  80. package/dist/transformQuery.d.mts +1 -1
  81. package/dist/transformQuery.d.ts +1 -1
  82. package/dist/{utils-Dt0D_DMV.mjs → utils-4k-j5FBa.mjs} +20 -3
  83. package/dist/utils-4k-j5FBa.mjs.map +1 -0
  84. package/dist/{utils-DEwV7F6B.js → utils-C79dxwZb.js} +31 -2
  85. package/dist/utils-C79dxwZb.js.map +1 -0
  86. package/package.json +9 -8
  87. package/dist/utils-DEwV7F6B.js.map +0 -1
  88. package/dist/utils-Dt0D_DMV.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { A as parseNumber, C as getParseNumberMethod, D as toFlatOptionArray, M as toArray, N as trimIfString, S as wrapLikeFragment, _ as prismaOperators, a as getLikeWildcards, b as stripParamPrefix, c as getQuotedFieldName, d as isValueProcessorLegacy, f as jsonLogicAdditionalOperators, g as numerifyValues, h as normalizeConstituentWordOrder, i as defaultNLTranslations, k as toFullOptionList, l as getSQLConcat, m as mongoOperators, n as bigIntJsonStringifyReplacer, o as getNLTranslataion, p as mapSQLOperator, r as celCombinatorMap, s as getQuoteFieldNamesWithArray, t as bigIntJsonParseReviver, u as isValidValue, v as processMatchMode, w as getOption, x as withParamPrefix, y as shouldRenderAsNumber } from "./utils-Dt0D_DMV.mjs";
1
+ import { C as withParamPrefix, E as getOption, F as trimIfString, M as parseNumber, P as toArray, S as subqueryElementAliasBase, T as getParseNumberMethod, _ as numerifyValues, a as getLikeWildcards, b as shouldRenderAsNumber, c as getQuotedFieldName, d as isValidValue, f as isValueProcessorLegacy, g as normalizeConstituentWordOrder, h as mongoOperators, i as defaultNLTranslations, j as toFullOptionList, k as toFlatOptionArray, l as getSQLConcat, m as mapSQLOperator, n as bigIntJsonStringifyReplacer, o as getNLTranslataion, p as jsonLogicAdditionalOperators, r as celCombinatorMap, s as getQuoteFieldNamesWithArray, t as bigIntJsonParseReviver, u as getSubqueryElementAlias, v as prismaOperators, w as wrapLikeFragment, x as stripParamPrefix, y as processMatchMode } from "./utils-4k-j5FBa.mjs";
2
2
  import { a as lc, i as isPojo, n as isRuleGroupType, o as nullOrUndefinedOrEmpty, r as isRuleGroupTypeIC, s as numericRegex, t as isRuleGroup } from "./isRuleGroup-CqLThsbu.mjs";
3
3
  import { transformQuery } from "./transformQuery.mjs";
4
4
  import { t as convertFromIC } from "./convertQuery-D_4J7E-Z.mjs";
@@ -34,7 +34,7 @@ const isRuleOrGroupValid = (rg, validationResult, validator) => {
34
34
  const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
35
35
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
36
36
  const processRuleGroup = (rg, outermost) => {
37
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
37
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
38
38
  const processedRules = [];
39
39
  let precedingCombinator = "";
40
40
  let firstRule = true;
@@ -98,11 +98,16 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
98
98
  if (matchEval === false) return "";
99
99
  else if (matchEval) {
100
100
  const { mode, threshold } = matchEval;
101
- const arrayElementAlias = "elem_alias";
102
- const nestedArrayFilter = defaultRuleGroupProcessorCEL(transformQuery(rule.value, { ruleProcessor: (r) => ({
101
+ const subqueryDepth = opts.subqueryDepth ?? 0;
102
+ const arrayElementAlias = getSubqueryElementAlias(subqueryDepth);
103
+ const celQuery = transformQuery(rule.value, { ruleProcessor: (r) => ({
103
104
  ...r,
104
105
  field: `${arrayElementAlias}${r.field ? `.${r.field}` : ""}`
105
- }) }), opts);
106
+ }) });
107
+ const nestedArrayFilter = defaultRuleGroupProcessorCEL(celQuery, {
108
+ ...opts,
109
+ subqueryDepth: subqueryDepth + 1
110
+ });
106
111
  switch (mode) {
107
112
  case "all": return `${field}.all(${arrayElementAlias}, ${nestedArrayFilter})`;
108
113
  case "none":
@@ -176,7 +181,7 @@ const defaultRuleGroupProcessorMongoDBQuery = (ruleGroup, options, meta) => {
176
181
  const { context, fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
177
182
  const { inExpressionContext } = context ?? {};
178
183
  const processRuleGroup = (rg, outermost) => {
179
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? mongoDbFallback : false;
184
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermost ? mongoDbFallback : false;
180
185
  const combinator = `$${lc(rg.combinator)}`;
181
186
  let hasChildRules = false;
182
187
  const expressions = rg.rules.map((rule) => {
@@ -354,7 +359,7 @@ const defaultRuleProcessorMongoDB = (rule, options) => {
354
359
  const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
355
360
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
356
361
  const processRuleGroup = (rg, outermost) => {
357
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
362
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
358
363
  const processedRules = [];
359
364
  let precedingCombinator = "";
360
365
  let firstRule = true;
@@ -595,7 +600,7 @@ const cypherCombinatorMap = {
595
600
  const defaultRuleGroupProcessorCypher = (ruleGroup, options) => {
596
601
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
597
602
  const processRuleGroup = (rg, outermost) => {
598
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
603
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
599
604
  const processedRules = [];
600
605
  let precedingCombinator = "";
601
606
  let firstRule = true;
@@ -659,7 +664,7 @@ const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns
659
664
  if (!columns || !drizzleOperators) return void 0;
660
665
  const { and, not, or } = drizzleOperators;
661
666
  const processRuleGroup = (rg, _outermost) => {
662
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return;
667
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return;
663
668
  const processedRules = rg.rules.map((rule) => {
664
669
  if (isRuleGroup(rule)) return processRuleGroup(rule);
665
670
  const [validationResult, fieldValidator] = validateRule(rule);
@@ -692,7 +697,7 @@ const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns
692
697
  const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
693
698
  const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
694
699
  const processRuleGroup = (rg) => {
695
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return false;
700
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return false;
696
701
  const processedRules = rg.rules.map((rule) => {
697
702
  if (isRuleGroup(rule)) return processRuleGroup(rule);
698
703
  const [validationResult, fieldValidator] = validateRule(rule);
@@ -727,7 +732,9 @@ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
727
732
  // v8 ignore next -- @preserve
728
733
  if (typeof rule === "string" || isRuleGroup(rule)) return void 0;
729
734
  const [validationResult, fieldValidator] = validateRule(rule);
730
- if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
735
+ if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) ||
736
+ /* v8 ignore next 2 -- @preserve */
737
+ rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
731
738
  const fieldData = getOption(fields, rule.field);
732
739
  return ruleProcessor(rule, {
733
740
  ...options,
@@ -738,7 +745,7 @@ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
738
745
  };
739
746
  /** Recursively processes a nested group into `.and()`/`.or()`/`.not()` form. */
740
747
  const processNested = (rg) => {
741
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return "";
748
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return "";
742
749
  const predicates = [];
743
750
  for (const rule of rg.rules) {
744
751
  if (typeof rule === "string") continue;
@@ -756,7 +763,7 @@ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
756
763
  if (predicates.length === 1 && !rg.not) return predicates[0];
757
764
  return `.${prefix}(${predicates.map((p) => p.startsWith(".") ? `__${p}` : p).join(", ")})`;
758
765
  };
759
- if (!isRuleOrGroupValid(ruleGroup, validationMap[ruleGroup.id ?? ""])) return fallbackExpression;
766
+ if (!isRuleOrGroupValid(ruleGroup, validationMap[ruleGroup.id ?? /* v8 ignore start -- @preserve */ ""])) return fallbackExpression;
760
767
  const steps = [];
761
768
  for (const rule of ruleGroup.rules) {
762
769
  if (typeof rule === "string") continue;
@@ -781,7 +788,7 @@ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
781
788
  const defaultRuleGroupProcessorJSONata = (ruleGroup, options) => {
782
789
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
783
790
  const processRuleGroup = (rg, outermost) => {
784
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
791
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
785
792
  const processedRules = [];
786
793
  let precedingCombinator = "";
787
794
  let firstRule = true;
@@ -837,7 +844,7 @@ const defaultRuleGroupProcessorJsonLogic = (ruleGroup, options) => {
837
844
  const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
838
845
  const query = convertFromIC(ruleGroup);
839
846
  const processRuleGroup = (rg, _outermost) => {
840
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return false;
847
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return false;
841
848
  const processedRules = rg.rules.map((rule) => {
842
849
  if (isRuleGroup(rule)) return processRuleGroup(rule);
843
850
  const [validationResult, fieldValidator] = validateRule(rule);
@@ -865,7 +872,7 @@ const defaultRuleGroupProcessorJsonLogic = (ruleGroup, options) => {
865
872
  const defaultRuleGroupProcessorLDAP = (ruleGroup, options) => {
866
873
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
867
874
  const processRuleGroup = (rg, outermost) => {
868
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
875
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
869
876
  const rules = rg.rules.map((rule) => {
870
877
  if (isRuleGroup(rule)) return processRuleGroup(rule);
871
878
  const [validationResult, fieldValidator] = validateRule(rule);
@@ -898,7 +905,7 @@ const isBracketed = (str) => str.startsWith("{") && str.endsWith("}");
898
905
  const defaultRuleGroupProcessorMongoDB = (ruleGroup, options, meta) => {
899
906
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
900
907
  const processRuleGroup = (rg, outermost) => {
901
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
908
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
902
909
  const combinator = `"$${lc(rg.combinator)}"`;
903
910
  let hasChildRules = false;
904
911
  const expressions = rg.rules.map((rule) => {
@@ -935,7 +942,7 @@ const defaultRuleGroupProcessorMongoDB = (ruleGroup, options, meta) => {
935
942
  const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
936
943
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, translations, validateRule, validationMap } = options;
937
944
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
938
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
945
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
939
946
  const rg2 = isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && lc(r) === "xor") ? convertFromIC(rg) : rg;
940
947
  const processedRules = [];
941
948
  let precedingCombinator = "";
@@ -946,7 +953,8 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
946
953
  continue;
947
954
  }
948
955
  if (isRuleGroup(rule)) {
949
- const processedGroup = processRuleGroup(rule, rg2.rules.length === 1 && !(rg2.not || /^xor$/i.test(rg2.combinator ?? "")));
956
+ const processedGroup = processRuleGroup(rule, rg2.rules.length === 1 && !(rg2.not || /^xor$/i.test(rg2.combinator ??
957
+ /* v8 ignore start -- @preserve */ "")));
950
958
  // v8 ignore else
951
959
  if (processedGroup) {
952
960
  if (!firstRule && precedingCombinator) {
@@ -1033,7 +1041,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
1033
1041
  return sql;
1034
1042
  };
1035
1043
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
1036
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
1044
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
1037
1045
  const processedRules = [];
1038
1046
  let precedingCombinator = "";
1039
1047
  let firstRule = true;
@@ -1093,7 +1101,7 @@ const prismaFallback = {};
1093
1101
  const defaultRuleGroupProcessorPrisma = (ruleGroup, options) => {
1094
1102
  const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
1095
1103
  const processRuleGroup = (rg, outermost) => {
1096
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? prismaFallback : void 0;
1104
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermost ? prismaFallback : void 0;
1097
1105
  const combinator = rg.combinator.toUpperCase();
1098
1106
  let hasChildRules = false;
1099
1107
  const expressions = rg.rules.map((rule) => {
@@ -1132,7 +1140,7 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
1132
1140
  const { sequelizeOperators: Op } = context;
1133
1141
  if (!Op) return void 0;
1134
1142
  const processRuleGroup = (rg, _outermost) => {
1135
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return;
1143
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return;
1136
1144
  const combinator = rg.combinator.toUpperCase();
1137
1145
  let hasChildRules = false;
1138
1146
  const expressions = rg.rules.map((rule) => {
@@ -1171,7 +1179,7 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
1171
1179
  const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
1172
1180
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
1173
1181
  const processRuleGroup = (rg, outermost) => {
1174
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
1182
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
1175
1183
  const processedRules = [];
1176
1184
  let precedingCombinator = "";
1177
1185
  let firstRule = true;
@@ -1226,7 +1234,7 @@ const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
1226
1234
  const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
1227
1235
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
1228
1236
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
1229
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
1237
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
1230
1238
  const processedRules = [];
1231
1239
  let precedingCombinator = "";
1232
1240
  let firstRule = true;
@@ -1294,7 +1302,7 @@ const defaultRuleGroupProcessorTanStackDB = (ruleGroup, options) => (refs) => {
1294
1302
  /* v8 ignore next -- @preserve */
1295
1303
  if (refKeys.length === 0) return fallback;
1296
1304
  const processRuleGroup = (rg) => {
1297
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return;
1305
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* v8 ignore start -- @preserve */ ""])) return;
1298
1306
  const processedRules = rg.rules.map((rule) => {
1299
1307
  if (isRuleGroup(rule)) return processRuleGroup(rule);
1300
1308
  const [validationResult, fieldValidator] = validateRule(rule);
@@ -1697,7 +1705,7 @@ const defaultRuleProcessorCypher = (rule, opts = {}) => {
1697
1705
  * @group Export
1698
1706
  */
1699
1707
  const defaultRuleProcessorDrizzle = (rule, _options) => {
1700
- const opts = _options ?? ( /* v8 ignore start -- @preserve */ {});
1708
+ const opts = _options ?? /* v8 ignore start -- @preserve */ {};
1701
1709
  // v8 ignore next
1702
1710
  const { parseNumbers, preserveValueOrder, context = {} } = opts;
1703
1711
  const { columns, drizzleOperators, useRawFields } = context;
@@ -1718,16 +1726,19 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
1718
1726
  else if (matchEval) {
1719
1727
  if (opts.preset !== "postgresql") return void 0;
1720
1728
  const { mode, threshold } = matchEval;
1721
- const arrayElementAlias = "elem_alias";
1722
- const nestedArrayFilter = defaultRuleGroupProcessorDrizzle(transformQuery(rule.value, { ruleProcessor: (r) => ({
1729
+ const subqueryDepth = opts.subqueryDepth ?? 0;
1730
+ const arrayElementAlias = getSubqueryElementAlias(subqueryDepth);
1731
+ const sqlQuery = transformQuery(rule.value, { ruleProcessor: (r) => ({
1723
1732
  ...r,
1724
1733
  field: arrayElementAlias
1725
- }) }), {
1734
+ }) });
1735
+ const nestedArrayFilter = defaultRuleGroupProcessorDrizzle(sqlQuery, {
1726
1736
  ...opts,
1727
1737
  context: {
1728
1738
  ...opts.context,
1729
1739
  useRawFields: true
1730
- }
1740
+ },
1741
+ subqueryDepth: subqueryDepth + 1
1731
1742
  });
1732
1743
  switch (mode) {
1733
1744
  case "all": return sql`(select count(*) from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)}) = array_length(${column}, 1)`;
@@ -2260,7 +2271,7 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
2260
2271
  const { escapeQuotes, fields, parseNumbers, quoteFieldNamesWith, quoteValuesWith, fieldIdentifierSeparator, translations } = opts;
2261
2272
  const valueIsField = rule.valueSource === "field";
2262
2273
  const operatorLowerCase = lc(rule.operator);
2263
- const quoteChar = quoteValuesWith || "'";
2274
+ const quoteChar = quoteValuesWith || /* v8 ignore start -- @preserve */ "'";
2264
2275
  const quoteValue = (v) => `${quoteChar}${v}${quoteChar}`;
2265
2276
  const escapeValue = (v) => escapeStringValueQuotes(v, quoteChar, escapeQuotes);
2266
2277
  const wrapAndEscape = (v) => quoteValue(escapeValue(v));
@@ -2268,7 +2279,7 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
2268
2279
  quoteFieldNamesWith,
2269
2280
  fieldIdentifierSeparator
2270
2281
  });
2271
- const t = translations ?? ( /* v8 ignore start -- @preserve */ {});
2282
+ const t = translations ?? /* v8 ignore start -- @preserve */ {};
2272
2283
  const orTL = t.or ?? "or";
2273
2284
  const trueTL = t.true ?? "true";
2274
2285
  const falseTL = t.false ?? "false";
@@ -2280,7 +2291,8 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
2280
2291
  case "between":
2281
2292
  case "notbetween": {
2282
2293
  if (!valueIsField) return defaultValueProcessorByRule(rule, opts);
2283
- const valueAsArray = toArray(rule.value, { retainEmptyStrings: true }).slice(0, 2).map((v) => wrapFieldName(getOption(fields ?? [], v)?.label ?? v));
2294
+ const valueAsArray = toArray(rule.value, { retainEmptyStrings: true }).slice(0, 2).map((v) => wrapFieldName(getOption(fields ??
2295
+ /* v8 ignore start -- @preserve */ [], v)?.label ?? v));
2284
2296
  if (valueAsArray.length < 2 || !isValidValue(valueAsArray[0]) || !isValidValue(valueAsArray[1])) return "";
2285
2297
  return defaultValueProcessorByRule({
2286
2298
  ...rule,
@@ -2291,14 +2303,16 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
2291
2303
  case "notin": {
2292
2304
  const valueAsArray = toArray(rule.value);
2293
2305
  if (valueAsArray.length === 0) return "";
2294
- const valStringArray = valueAsArray.map((v) => valueIsField ? wrapFieldName(getOption(fields ?? [], v)?.label ?? v) : shouldRenderAsNumber(v, parseNumbers) ? `${trimIfString(v)}` : `${wrapAndEscape(v)}`);
2306
+ const valStringArray = valueAsArray.map((v) => valueIsField ? wrapFieldName(getOption(fields ??
2307
+ /* v8 ignore start -- @preserve */ [], v)?.label ?? v) : shouldRenderAsNumber(v, parseNumbers) ? `${trimIfString(v)}` : `${wrapAndEscape(v)}`);
2295
2308
  if (valStringArray.length === 1) return valStringArray[0];
2296
2309
  const oxfordComma = useOxfordComma && valStringArray.length > 2 ? "," : "";
2297
2310
  return `(${`${valStringArray.slice(0, -1).join(listSep)}${oxfordComma} ${orTL} ${valStringArray.at(-1)}`})`;
2298
2311
  }
2299
2312
  }
2300
2313
  if (typeof rule.value === "boolean") return rule.value ? trueTL : falseTL;
2301
- return valueIsField ? wrapFieldName(getOption(fields ?? [], rule.value)?.label ?? rule.value) : shouldRenderAsNumber(rule.value, parseNumbers) ? `${trimIfString(rule.value)}` : `${wrapAndEscape(rule.value)}`;
2314
+ return valueIsField ? wrapFieldName(getOption(fields ??
2315
+ /* v8 ignore start -- @preserve */ [], rule.value)?.label ?? rule.value) : shouldRenderAsNumber(rule.value, parseNumbers) ? `${trimIfString(rule.value)}` : `${wrapAndEscape(rule.value)}`;
2302
2316
  };
2303
2317
  //#endregion
2304
2318
  //#region src/utils/formatQuery/defaultRuleProcessorNL.ts
@@ -2350,7 +2364,7 @@ const defaultOperatorProcessorNL = (rule, opts = {}) => {
2350
2364
  name: field,
2351
2365
  value: field,
2352
2366
  label: field
2353
- } }) ?? []), normalizedOperator) ?? {
2367
+ } }) ?? /* v8 ignore start -- @preserve */ []), normalizedOperator) ?? {
2354
2368
  name: normalizedOperator,
2355
2369
  value: normalizedOperator,
2356
2370
  label: normalizedOperator
@@ -2366,7 +2380,7 @@ const defaultOperatorProcessorNL = (rule, opts = {}) => {
2366
2380
  const defaultRuleProcessorNL = (rule, opts) => {
2367
2381
  const { field, operator } = rule;
2368
2382
  // v8 ignore next
2369
- const { fieldData, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", quoteValuesWith = `'`, operatorProcessor = defaultOperatorProcessorNL, valueProcessor = defaultValueProcessorNL, concatOperator = "||", wordOrder = "SVO" } = opts ?? ( /* v8 ignore start -- @preserve */ {});
2383
+ const { fieldData, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", quoteValuesWith = `'`, operatorProcessor = defaultOperatorProcessorNL, valueProcessor = defaultValueProcessorNL, concatOperator = "||", wordOrder = "SVO" } = opts ?? /* v8 ignore start -- @preserve */ {};
2370
2384
  const processedField = getQuotedFieldName(fieldData?.label ?? field, {
2371
2385
  quoteFieldNamesWith,
2372
2386
  fieldIdentifierSeparator
@@ -2441,11 +2455,15 @@ const defaultRuleProcessorSQL = (rule, opts = {}) => {
2441
2455
  else if (matchEval) {
2442
2456
  if (opts?.preset !== "postgresql") return "";
2443
2457
  const { mode, threshold } = matchEval;
2444
- const arrayElementAlias = "elem_alias";
2458
+ const subqueryDepth = opts.subqueryDepth ?? 0;
2459
+ const arrayElementAlias = getSubqueryElementAlias(subqueryDepth);
2445
2460
  const nestedArrayFilter = defaultRuleGroupProcessorSQL(transformQuery(rule.value, { ruleProcessor: (r) => ({
2446
2461
  ...r,
2447
2462
  field: arrayElementAlias
2448
- }) }), opts);
2463
+ }) }), {
2464
+ ...opts,
2465
+ subqueryDepth: subqueryDepth + 1
2466
+ });
2449
2467
  switch (mode) {
2450
2468
  case "all": return `(select count(*) from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedArrayFilter}) = array_length(${ruleField}, 1)`;
2451
2469
  case "none": return `not exists (select 1 from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedArrayFilter})`;
@@ -2503,13 +2521,15 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
2503
2521
  else if (matchEval) {
2504
2522
  if (opts?.preset !== "postgresql") return finalize("");
2505
2523
  const { mode, threshold } = matchEval;
2506
- const arrayElementAlias = "elem_alias";
2524
+ const subqueryDepth = opts.subqueryDepth ?? 0;
2525
+ const arrayElementAlias = getSubqueryElementAlias(subqueryDepth);
2507
2526
  const { sql: nestedSQL, params: nestedParams } = defaultRuleGroupProcessorParameterized(transformQuery(rule.value, { ruleProcessor: (r) => ({
2508
2527
  ...r,
2509
2528
  field: arrayElementAlias
2510
2529
  }) }), {
2511
2530
  ...opts,
2512
- fields: []
2531
+ fields: [],
2532
+ subqueryDepth: subqueryDepth + 1
2513
2533
  });
2514
2534
  if (Array.isArray(nestedParams)) params.push(...nestedParams);
2515
2535
  else Object.assign(paramsNamed, nestedParams);
@@ -2581,7 +2601,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
2581
2601
  }
2582
2602
  let paramValue = rule.value;
2583
2603
  if (typeof rule.value === "string") if (shouldRenderAsNumber(rule.value, parseNumbers)) paramValue = parseNumber(rule.value, { parseNumbers });
2584
- else paramValue = /^'.*'$/g.test(value) ? value.replaceAll(/(^'|'$)/g, "") : /* v8 ignore next -- @preserve */ value;
2604
+ else paramValue = /^'.*'$/g.test(value) ? value.replaceAll(/(^'|'$)/g, "") : /* v8 ignore next -- @preserve */ value;
2585
2605
  let paramName = "";
2586
2606
  if (parameterized) params.push(paramValue);
2587
2607
  else {
@@ -2798,7 +2818,7 @@ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
2798
2818
  * @group Export
2799
2819
  */
2800
2820
  const defaultRuleProcessorTanStackDB = (rule, _options) => {
2801
- const { parseNumbers, preserveValueOrder, context = {} } = _options ?? ( /* v8 ignore start -- @preserve */ {});
2821
+ const { parseNumbers, preserveValueOrder, context = {} } = _options ?? /* v8 ignore start -- @preserve */ {};
2802
2822
  const ops = context.tanStackDbOperators;
2803
2823
  const refs = context._tanstackDbRefs;
2804
2824
  const primaryRef = context._tanstackDbPrimaryRef;
@@ -3034,7 +3054,8 @@ function formatQuery(ruleGroup, optionParam = {}) {
3034
3054
  const ruleProcessor = (typeof ruleProcessor_option === "function" ? ruleProcessor_option : null) ?? (valueProcessorCanActAsRuleProcessor.has(format) && typeof ruleProcessor_option !== "function" && valueProcessor_option ? valueProcessor : null) ?? defaultRuleProcessors[format] ?? defaultRuleProcessorSQL;
3035
3055
  const quoteFieldNamesWith = getQuoteFieldNamesWithArray(quoteFieldNamesWith_option);
3036
3056
  const fields = toFullOptionList(optObj.fields);
3037
- const getOperators = (f, m) => toFullOptionList(getOperators_option(f, m) ?? []);
3057
+ const getOperators = (f, m) => toFullOptionList(getOperators_option(f, m) ??
3058
+ /* v8 ignore start -- @preserve */ []);
3038
3059
  const fallbackExpression = fallbackExpression_option ?? defaultFallbackExpressions[format] ?? defaultFallbackExpressions.sql;
3039
3060
  let validationMap = {};
3040
3061
  // v8 ignore else
@@ -3057,7 +3078,7 @@ function formatQuery(ruleGroup, optionParam = {}) {
3057
3078
  const uniqueFields = toFlatOptionArray(fields);
3058
3079
  for (const f of uniqueFields)
3059
3080
  // v8 ignore else
3060
- if (typeof f.validator === "function") validatorMap[f.value ?? f.name] = f.validator;
3081
+ if (typeof f.validator === "function") validatorMap[f.value ?? /* v8 ignore start -- @preserve */ f.name] = f.validator;
3061
3082
  const validateRule = (rule) => {
3062
3083
  let validationResult;
3063
3084
  let fieldValidator;
@@ -3176,6 +3197,6 @@ const defaultValueProcessorMongoDBByRule = defaultRuleProcessorMongoDB;
3176
3197
  */
3177
3198
  const defaultValueProcessorSpELByRule = defaultRuleProcessorSpEL;
3178
3199
  //#endregion
3179
- export { bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, cypherCombinatorMap, defaultCELValueProcessor, defaultExportOperatorMap, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, defaultRuleGroupProcessorCEL, defaultRuleGroupProcessorCypher, defaultRuleGroupProcessorDiagnostics, defaultRuleGroupProcessorDrizzle, defaultRuleGroupProcessorElasticSearch, defaultRuleGroupProcessorGremlin, defaultRuleGroupProcessorJSONata, defaultRuleGroupProcessorJsonLogic, defaultRuleGroupProcessorLDAP, defaultRuleGroupProcessorMongoDB, defaultRuleGroupProcessorMongoDBQuery, defaultRuleGroupProcessorNL, defaultRuleGroupProcessorParameterized, defaultRuleGroupProcessorPrisma, defaultRuleGroupProcessorSPARQL, defaultRuleGroupProcessorSQL, defaultRuleGroupProcessorSequelize, defaultRuleGroupProcessorSpEL, defaultRuleGroupProcessorTanStackDB, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultRuleProcessorTanStackDB, defaultSpELValueProcessor, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, formatQuery, formatQueryOptionPresets, getLikeWildcards, getNLTranslataion, getQuoteFieldNamesWithArray, getQuotedFieldName, getSQLConcat, isValidValue, isValueProcessorLegacy, jsonLogicAdditionalOperators, mapSQLOperator, mongoDbFallback, mongoOperators, normalizeConstituentWordOrder, numerifyValues, prismaFallback, prismaOperators, processMatchMode, shouldRenderAsNumber, sparqlVar, sqlDialectPresets, stripParamPrefix, withParamPrefix, wrapLikeFragment };
3200
+ export { bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, cypherCombinatorMap, defaultCELValueProcessor, defaultExportOperatorMap, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, defaultRuleGroupProcessorCEL, defaultRuleGroupProcessorCypher, defaultRuleGroupProcessorDiagnostics, defaultRuleGroupProcessorDrizzle, defaultRuleGroupProcessorElasticSearch, defaultRuleGroupProcessorGremlin, defaultRuleGroupProcessorJSONata, defaultRuleGroupProcessorJsonLogic, defaultRuleGroupProcessorLDAP, defaultRuleGroupProcessorMongoDB, defaultRuleGroupProcessorMongoDBQuery, defaultRuleGroupProcessorNL, defaultRuleGroupProcessorParameterized, defaultRuleGroupProcessorPrisma, defaultRuleGroupProcessorSPARQL, defaultRuleGroupProcessorSQL, defaultRuleGroupProcessorSequelize, defaultRuleGroupProcessorSpEL, defaultRuleGroupProcessorTanStackDB, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultRuleProcessorTanStackDB, defaultSpELValueProcessor, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, formatQuery, formatQueryOptionPresets, getLikeWildcards, getNLTranslataion, getQuoteFieldNamesWithArray, getQuotedFieldName, getSQLConcat, getSubqueryElementAlias, isValidValue, isValueProcessorLegacy, jsonLogicAdditionalOperators, mapSQLOperator, mongoDbFallback, mongoOperators, normalizeConstituentWordOrder, numerifyValues, prismaFallback, prismaOperators, processMatchMode, shouldRenderAsNumber, sparqlVar, sqlDialectPresets, stripParamPrefix, subqueryElementAliasBase, withParamPrefix, wrapLikeFragment };
3180
3201
 
3181
3202
  //# sourceMappingURL=formatQuery.mjs.map