@react-querybuilder/core 8.14.4 → 8.15.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 (93) hide show
  1. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +201 -8
  2. package/dist/cjs/react-querybuilder_core.cjs.development.js +394 -58
  3. package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
  4. package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +201 -8
  5. package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
  6. package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
  7. package/dist/{convertQuery-CeJSNn37.mjs → convertQuery-BeJJH9BI.mjs} +2 -2
  8. package/dist/convertQuery-BeJJH9BI.mjs.map +1 -0
  9. package/dist/{convertQuery-J8LpTG-7.js → convertQuery-Lx2HQa0m.js} +2 -2
  10. package/dist/convertQuery-Lx2HQa0m.js.map +1 -0
  11. package/dist/formatQuery.d.mts +24 -2
  12. package/dist/formatQuery.d.ts +24 -2
  13. package/dist/formatQuery.js +373 -47
  14. package/dist/formatQuery.js.map +1 -1
  15. package/dist/formatQuery.mjs +373 -48
  16. package/dist/formatQuery.mjs.map +1 -1
  17. package/dist/{import-BwQqExpO.d.mts → import-0wp72lLT.d.mts} +2 -2
  18. package/dist/{import-CrJf23Nf.d.ts → import-yRVJh7E1.d.ts} +2 -2
  19. package/dist/{index-CYT4Saz-.d.mts → index-D5TXNIzF.d.ts} +149 -5
  20. package/dist/{index-DBlQeLax.d.ts → index-Lht_Wq3V.d.mts} +149 -5
  21. package/dist/{objectUtils-ButT0Mng.js → objectUtils-Bzug_QfX.js} +2 -2
  22. package/dist/objectUtils-Bzug_QfX.js.map +1 -0
  23. package/dist/{objectUtils-C0WB-8ex.mjs → objectUtils-D96eEEzL.mjs} +2 -2
  24. package/dist/objectUtils-D96eEEzL.mjs.map +1 -0
  25. package/dist/parseCEL.d.mts +2 -2
  26. package/dist/parseCEL.d.ts +2 -2
  27. package/dist/parseCEL.js +35 -35
  28. package/dist/parseCEL.js.map +1 -1
  29. package/dist/parseCEL.mjs +35 -35
  30. package/dist/parseCEL.mjs.map +1 -1
  31. package/dist/parseJSONata.d.mts +2 -2
  32. package/dist/parseJSONata.d.ts +2 -2
  33. package/dist/parseJSONata.js +11 -11
  34. package/dist/parseJSONata.js.map +1 -1
  35. package/dist/parseJSONata.mjs +11 -11
  36. package/dist/parseJSONata.mjs.map +1 -1
  37. package/dist/parseJsonLogic.d.mts +2 -2
  38. package/dist/parseJsonLogic.d.ts +2 -2
  39. package/dist/parseJsonLogic.js +6 -6
  40. package/dist/parseJsonLogic.js.map +1 -1
  41. package/dist/parseJsonLogic.mjs +6 -6
  42. package/dist/parseJsonLogic.mjs.map +1 -1
  43. package/dist/parseMongoDB.d.mts +2 -2
  44. package/dist/parseMongoDB.d.ts +2 -2
  45. package/dist/parseMongoDB.js +6 -6
  46. package/dist/parseMongoDB.js.map +1 -1
  47. package/dist/parseMongoDB.mjs +6 -6
  48. package/dist/parseMongoDB.mjs.map +1 -1
  49. package/dist/parseSQL.d.mts +2 -2
  50. package/dist/parseSQL.d.ts +2 -2
  51. package/dist/parseSQL.js +16 -16
  52. package/dist/parseSQL.js.map +1 -1
  53. package/dist/parseSQL.mjs +16 -16
  54. package/dist/parseSQL.mjs.map +1 -1
  55. package/dist/parseSpEL.d.mts +2 -2
  56. package/dist/parseSpEL.d.ts +2 -2
  57. package/dist/parseSpEL.js +10 -10
  58. package/dist/parseSpEL.js.map +1 -1
  59. package/dist/parseSpEL.mjs +10 -10
  60. package/dist/parseSpEL.mjs.map +1 -1
  61. package/dist/{prepareQueryObjects-DO3qXriW.js → prepareQueryObjects-BoG5Rt8z.js} +6 -6
  62. package/dist/prepareQueryObjects-BoG5Rt8z.js.map +1 -0
  63. package/dist/{prepareQueryObjects-BfMlS4ql.mjs → prepareQueryObjects-uA10ZpZX.mjs} +6 -6
  64. package/dist/prepareQueryObjects-uA10ZpZX.mjs.map +1 -0
  65. package/dist/query-builder.css +1 -1
  66. package/dist/query-builder.css.map +1 -1
  67. package/dist/react-querybuilder_core.d.mts +201 -8
  68. package/dist/react-querybuilder_core.legacy-esm.d.ts +201 -8
  69. package/dist/react-querybuilder_core.legacy-esm.js +433 -89
  70. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  71. package/dist/react-querybuilder_core.mjs +393 -59
  72. package/dist/react-querybuilder_core.mjs.map +1 -1
  73. package/dist/react-querybuilder_core.production.d.mts +201 -8
  74. package/dist/react-querybuilder_core.production.mjs +1 -1
  75. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  76. package/dist/styles/_main.scss +4 -0
  77. package/dist/transformQuery.d.mts +1 -1
  78. package/dist/transformQuery.d.ts +1 -1
  79. package/dist/transformQuery.js +1 -1
  80. package/dist/transformQuery.mjs +1 -1
  81. package/dist/{utils-BlMGIhvx.mjs → utils-ChLG90DP.mjs} +3 -3
  82. package/dist/utils-ChLG90DP.mjs.map +1 -0
  83. package/dist/{utils-CZRhzje-.js → utils-Qwkq2Q0F.js} +3 -3
  84. package/dist/utils-Qwkq2Q0F.js.map +1 -0
  85. package/package.json +9 -14
  86. package/dist/convertQuery-CeJSNn37.mjs.map +0 -1
  87. package/dist/convertQuery-J8LpTG-7.js.map +0 -1
  88. package/dist/objectUtils-ButT0Mng.js.map +0 -1
  89. package/dist/objectUtils-C0WB-8ex.mjs.map +0 -1
  90. package/dist/prepareQueryObjects-BfMlS4ql.mjs.map +0 -1
  91. package/dist/prepareQueryObjects-DO3qXriW.js.map +0 -1
  92. package/dist/utils-BlMGIhvx.mjs.map +0 -1
  93. package/dist/utils-CZRhzje-.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { D as toArray, O as trimIfString, S as toFlatOptionArray, T as parseNumber, _ as shouldRenderAsNumber, a as getNLTranslataion, c as isValidValue, d as mapSQLOperator, f as mongoOperators, g as processMatchMode, h as prismaOperators, i as defaultNLTranslations, l as isValueProcessorLegacy, m as numerifyValues, n as bigIntJsonStringifyReplacer, o as getQuoteFieldNamesWithArray, p as normalizeConstituentWordOrder, r as celCombinatorMap, s as getQuotedFieldName, t as bigIntJsonParseReviver, u as jsonLogicAdditionalOperators, v as getParseNumberMethod, w as toFullOptionList, y as getOption } from "./utils-BlMGIhvx.mjs";
2
- import { a as isRuleGroupTypeIC, c as nullOrUndefinedOrEmpty, i as isRuleGroupType, o as isPojo, r as isRuleGroup, s as lc } from "./objectUtils-C0WB-8ex.mjs";
1
+ import { D as toArray, O as trimIfString, S as toFlatOptionArray, T as parseNumber, _ as shouldRenderAsNumber, a as getNLTranslataion, c as isValidValue, d as mapSQLOperator, f as mongoOperators, g as processMatchMode, h as prismaOperators, i as defaultNLTranslations, l as isValueProcessorLegacy, m as numerifyValues, n as bigIntJsonStringifyReplacer, o as getQuoteFieldNamesWithArray, p as normalizeConstituentWordOrder, r as celCombinatorMap, s as getQuotedFieldName, t as bigIntJsonParseReviver, u as jsonLogicAdditionalOperators, v as getParseNumberMethod, w as toFullOptionList, y as getOption } from "./utils-ChLG90DP.mjs";
2
+ import { a as isRuleGroupTypeIC, c as nullOrUndefinedOrEmpty, i as isRuleGroupType, l as numericRegex, o as isPojo, r as isRuleGroup, s as lc } from "./objectUtils-D96eEEzL.mjs";
3
3
  import { transformQuery } from "./transformQuery.mjs";
4
- import { t as convertFromIC } from "./convertQuery-CeJSNn37.mjs";
4
+ import { t as convertFromIC } from "./convertQuery-BeJJH9BI.mjs";
5
5
  //#region src/utils/isRuleOrGroupValid.ts
6
6
  /**
7
7
  * Determines if an object is useful as a validation result.
@@ -19,7 +19,7 @@ const isRuleOrGroupValid = (rg, validationResult, validator) => {
19
19
  if (typeof validator === "function" && !isRuleGroup(rg)) {
20
20
  const vr = validator(rg);
21
21
  if (typeof vr === "boolean") return vr;
22
- // istanbul ignore else
22
+ // v8 ignore else
23
23
  if (isValidationResult(vr)) return vr.valid;
24
24
  }
25
25
  return true;
@@ -543,22 +543,22 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
543
543
  * @group Export
544
544
  */
545
545
  const defaultRuleProcessorDrizzle = (rule, _options) => {
546
- const opts = _options ?? ( /* istanbul ignore next */ {});
547
- // istanbul ignore next
546
+ const opts = _options ?? ( /* v8 ignore start -- @preserve */ {});
547
+ // v8 ignore next
548
548
  const { parseNumbers, preserveValueOrder, context = {} } = opts;
549
549
  const { columns, drizzleOperators, useRawFields } = context;
550
- if (!columns || !drizzleOperators) return;
550
+ if (!columns || !drizzleOperators) return void 0;
551
551
  const { between, eq, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, notBetween, notInArray, notLike, sql } = drizzleOperators;
552
552
  const { field, operator, value, valueSource } = rule;
553
553
  const column = useRawFields && /[a-z][a-z0-9]*/i.test(field) ? sql.raw(field) : columns[field];
554
554
  const operatorLC = lc(operator);
555
555
  const valueIsField = valueSource === "field";
556
556
  const asFieldOrValue = (v) => valueIsField ? columns[v] : v;
557
- if (!column) return;
557
+ if (!column) return void 0;
558
558
  const matchEval = processMatchMode(rule);
559
559
  if (matchEval === false) return;
560
560
  else if (matchEval) {
561
- if (opts.preset !== "postgresql") return;
561
+ if (opts.preset !== "postgresql") return void 0;
562
562
  const { mode, threshold } = matchEval;
563
563
  const arrayElementAlias = "elem_alias";
564
564
  const nestedArrayFilter = defaultRuleGroupProcessorDrizzle(transformQuery(rule.value, { ruleProcessor: (r) => ({
@@ -647,7 +647,7 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
647
647
  */
648
648
  const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns, drizzleOperators) => {
649
649
  const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap } = options;
650
- if (!columns || !drizzleOperators) return;
650
+ if (!columns || !drizzleOperators) return void 0;
651
651
  const { and, not, or } = drizzleOperators;
652
652
  const ruleProcessor = defaultRuleProcessorDrizzle;
653
653
  const processRuleGroup = (rg, _outermost) => {
@@ -866,7 +866,7 @@ const defaultRuleGroupProcessorMongoDB = (ruleGroup, options, meta) => {
866
866
  const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
867
867
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, translations, validateRule, validationMap } = options;
868
868
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
869
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
869
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
870
870
  const rg2 = isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && lc(r) === "xor") ? convertFromIC(rg) : rg;
871
871
  const processedRules = [];
872
872
  let precedingCombinator = "";
@@ -878,7 +878,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
878
878
  }
879
879
  if (isRuleGroup(rule)) {
880
880
  const processedGroup = processRuleGroup(rule, rg2.rules.length === 1 && !(rg2.not || /^xor$/i.test(rg2.combinator ?? "")));
881
- // istanbul ignore else
881
+ // v8 ignore else
882
882
  if (processedGroup) {
883
883
  if (!firstRule && precedingCombinator) {
884
884
  processedRules.push(precedingCombinator);
@@ -954,7 +954,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
954
954
  if (!isPojo(processedRule)) return "";
955
955
  const { sql, params: customParams } = processedRule;
956
956
  if (typeof sql !== "string" || !sql) return "";
957
- // istanbul ignore else
957
+ // v8 ignore else
958
958
  if (format === "parameterized" && Array.isArray(customParams)) params.push(...customParams);
959
959
  else if (format === "parameterized_named" && isPojo(customParams)) {
960
960
  Object.assign(paramsNamed, customParams);
@@ -963,7 +963,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
963
963
  return sql;
964
964
  };
965
965
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
966
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
966
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
967
967
  const processedRules = [];
968
968
  let precedingCombinator = "";
969
969
  let firstRule = true;
@@ -974,7 +974,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
974
974
  }
975
975
  if (isRuleGroup(rule)) {
976
976
  const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
977
- // istanbul ignore else
977
+ // v8 ignore else
978
978
  if (processedGroup) {
979
979
  if (!firstRule && precedingCombinator) {
980
980
  processedRules.push(precedingCombinator);
@@ -1057,10 +1057,10 @@ const defaultRuleGroupProcessorPrisma = (ruleGroup, options) => {
1057
1057
  * @group Export
1058
1058
  */
1059
1059
  const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
1060
- // istanbul ignore next
1060
+ // v8 ignore next
1061
1061
  const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap, context = {} } = options;
1062
1062
  const { sequelizeOperators: Op } = context;
1063
- if (!Op) return;
1063
+ if (!Op) return void 0;
1064
1064
  const processRuleGroup = (rg, _outermost) => {
1065
1065
  if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return;
1066
1066
  const combinator = rg.combinator.toUpperCase();
@@ -1083,7 +1083,7 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
1083
1083
  fieldData
1084
1084
  });
1085
1085
  }).filter(Boolean);
1086
- if (expressions.length === 0) return;
1086
+ if (expressions.length === 0) return void 0;
1087
1087
  const result = expressions.length === 1 && !hasChildRules ? expressions[0] : { [lc(combinator) === "or" ? Op.or : Op.and]: expressions };
1088
1088
  return rg.not ? { [Op.not]: result } : result;
1089
1089
  };
@@ -1099,7 +1099,7 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
1099
1099
  const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
1100
1100
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
1101
1101
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
1102
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
1102
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
1103
1103
  const processedRules = [];
1104
1104
  let precedingCombinator = "";
1105
1105
  let firstRule = true;
@@ -1110,7 +1110,7 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
1110
1110
  }
1111
1111
  if (isRuleGroup(rule)) {
1112
1112
  const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
1113
- // istanbul ignore else
1113
+ // v8 ignore else
1114
1114
  if (processedGroup) {
1115
1115
  if (!firstRule && precedingCombinator) {
1116
1116
  processedRules.push(precedingCombinator);
@@ -1146,6 +1146,325 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
1146
1146
  return processRuleGroup(ruleGroup, true);
1147
1147
  };
1148
1148
  //#endregion
1149
+ //#region src/utils/formatQuery/defaultRuleGroupProcessorDiagnostics.ts
1150
+ const numericInputTypes = new Set([
1151
+ "number",
1152
+ "range",
1153
+ "bigint"
1154
+ ]);
1155
+ const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
1156
+ const timeRegex = /^\d{2}:\d{2}(:\d{2}(\.\d+)?)?$/;
1157
+ const monthRegex = /^\d{4}-\d{2}$/;
1158
+ const weekRegex = /^\d{4}-W\d{2}$/;
1159
+ const colorRegex = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
1160
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
1161
+ const isValidDateComponents = (y, m, d) => {
1162
+ const date = new Date(Date.UTC(y, m - 1, d));
1163
+ return date.getUTCFullYear() === y && date.getUTCMonth() === m - 1 && date.getUTCDate() === d;
1164
+ };
1165
+ const isValidTimeComponents = (s) => {
1166
+ const parts = s.split(":");
1167
+ const h = Number(parts[0]);
1168
+ const m = Number(parts[1]);
1169
+ const sec = parts[2] ? Number.parseFloat(parts[2]) : 0;
1170
+ return h >= 0 && h <= 23 && m >= 0 && m <= 59 && sec >= 0 && sec < 60;
1171
+ };
1172
+ /**
1173
+ * Checks whether a value is compatible with the given {@link FullField.inputType}.
1174
+ * Returns a diagnostic code string if there is a mismatch, or `undefined` if OK.
1175
+ */
1176
+ const checkValueTypeMismatch = (value, inputType) => {
1177
+ if (value === null || value === void 0 || value === "") return void 0;
1178
+ if (numericInputTypes.has(inputType)) {
1179
+ const v = typeof value === "string" ? value.trim() : value;
1180
+ if (typeof v === "number" || typeof v === "bigint") return void 0;
1181
+ if (typeof v === "string" && numericRegex.test(v)) return void 0;
1182
+ return "VALUE_TYPE_MISMATCH";
1183
+ }
1184
+ if (inputType === "date") {
1185
+ if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
1186
+ const v = value.trim();
1187
+ if (!dateRegex.test(v)) return "VALUE_TYPE_MISMATCH";
1188
+ const [y, m, d] = v.split("-").map(Number);
1189
+ return isValidDateComponents(y, m, d) ? void 0 : "VALUE_TYPE_MISMATCH";
1190
+ }
1191
+ if (inputType === "datetime-local") {
1192
+ if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
1193
+ const base = value.trim().replace(/(Z|[+-]\d{2}:?\d{2}|[+-]\d{2})$/, "");
1194
+ const tIndex = base.indexOf("T");
1195
+ if (tIndex === -1) return "VALUE_TYPE_MISMATCH";
1196
+ const datePart = base.slice(0, tIndex);
1197
+ const timePart = base.slice(tIndex + 1);
1198
+ if (!dateRegex.test(datePart) || !timeRegex.test(timePart)) return "VALUE_TYPE_MISMATCH";
1199
+ const [y, m, d] = datePart.split("-").map(Number);
1200
+ if (!isValidDateComponents(y, m, d)) return "VALUE_TYPE_MISMATCH";
1201
+ return isValidTimeComponents(timePart) ? void 0 : "VALUE_TYPE_MISMATCH";
1202
+ }
1203
+ if (inputType === "time") {
1204
+ if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
1205
+ const v = value.trim();
1206
+ if (!timeRegex.test(v)) return "VALUE_TYPE_MISMATCH";
1207
+ return isValidTimeComponents(v) ? void 0 : "VALUE_TYPE_MISMATCH";
1208
+ }
1209
+ if (inputType === "month") {
1210
+ if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
1211
+ const v = value.trim();
1212
+ if (!monthRegex.test(v)) return "VALUE_TYPE_MISMATCH";
1213
+ const m = Number(v.slice(5));
1214
+ return m >= 1 && m <= 12 ? void 0 : "VALUE_TYPE_MISMATCH";
1215
+ }
1216
+ if (inputType === "week") {
1217
+ if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
1218
+ const v = value.trim();
1219
+ if (!weekRegex.test(v)) return "VALUE_TYPE_MISMATCH";
1220
+ const w = Number(v.slice(6));
1221
+ return w >= 1 && w <= 53 ? void 0 : "VALUE_TYPE_MISMATCH";
1222
+ }
1223
+ if (inputType === "color") {
1224
+ if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
1225
+ return colorRegex.test(value.trim()) ? void 0 : "VALUE_TYPE_MISMATCH";
1226
+ }
1227
+ if (inputType === "url") {
1228
+ if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
1229
+ try {
1230
+ new URL(value.trim());
1231
+ return;
1232
+ } catch {
1233
+ return "VALUE_TYPE_MISMATCH";
1234
+ }
1235
+ }
1236
+ if (inputType === "email") {
1237
+ if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
1238
+ return emailRegex.test(value.trim()) ? void 0 : "VALUE_TYPE_MISMATCH";
1239
+ }
1240
+ };
1241
+ /**
1242
+ * Rule group processor used by {@link formatQuery} for "diagnostics" format.
1243
+ *
1244
+ * Produces a {@link DiagnosticsResult} containing an annotated copy of the query
1245
+ * tree (`query`) with `valid`, `reasons`, `path`, and `level` properties on every
1246
+ * rule and group; a flat `diagnostics` array; aggregate `stats`; and a per-field
1247
+ * `fieldSummary`.
1248
+ *
1249
+ * @group Export
1250
+ */
1251
+ const defaultRuleGroupProcessorDiagnostics = (ruleGroup, options) => {
1252
+ const { fields: fieldsOption, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap } = options;
1253
+ const diagnostics = [];
1254
+ const stats = {
1255
+ totalRules: 0,
1256
+ totalGroups: 0,
1257
+ validRules: 0,
1258
+ invalidRules: 0,
1259
+ validGroups: 0,
1260
+ invalidGroups: 0
1261
+ };
1262
+ const fieldSummary = {};
1263
+ const uniqueFields = toFlatOptionArray(fieldsOption);
1264
+ const fieldsByName = /* @__PURE__ */ new Map();
1265
+ for (const f of uniqueFields) fieldsByName.set(f.name, f);
1266
+ const hasFieldsConfig = fieldsByName.size > 0;
1267
+ const processRuleGroup = (rg, path) => {
1268
+ stats.totalGroups++;
1269
+ const level = path.length;
1270
+ const groupValidationEntry = validationMap[rg.id ?? ""];
1271
+ const groupSelfValid = isRuleOrGroupValid(rg, groupValidationEntry);
1272
+ const groupReasons = getReasons(groupValidationEntry);
1273
+ if (rg.muted) diagnostics.push({
1274
+ id: rg.id ?? "",
1275
+ path,
1276
+ code: "MUTED",
1277
+ message: "Group is muted",
1278
+ source: "muted"
1279
+ });
1280
+ else if (!groupSelfValid && groupValidationEntry !== void 0) diagnostics.push({
1281
+ id: rg.id ?? "",
1282
+ path,
1283
+ code: "CUSTOM_VALIDATOR",
1284
+ message: groupReasons ? `Invalid: ${groupReasons.join(", ")}` : "Group failed validation",
1285
+ source: "query-validator"
1286
+ });
1287
+ let allChildrenValid = true;
1288
+ let ruleIndex = 0;
1289
+ const annotatedRules = [];
1290
+ for (const rule of rg.rules) {
1291
+ if (typeof rule === "string") {
1292
+ annotatedRules.push(rule);
1293
+ ruleIndex++;
1294
+ continue;
1295
+ }
1296
+ const childPath = [...path, ruleIndex];
1297
+ if (isRuleGroup(rule)) {
1298
+ const annotatedGroup = processRuleGroup(rule, childPath);
1299
+ if (!annotatedGroup.valid) allChildrenValid = false;
1300
+ annotatedRules.push(annotatedGroup);
1301
+ ruleIndex++;
1302
+ continue;
1303
+ }
1304
+ stats.totalRules++;
1305
+ const childLevel = childPath.length;
1306
+ const [validationResult, fieldValidator] = validateRule(rule);
1307
+ const ruleValid = isRuleOrGroupValid(rule, validationResult, fieldValidator) && rule.field !== placeholderFieldName && rule.operator !== placeholderOperatorName && !(placeholderValueName !== void 0 && rule.value === placeholderValueName);
1308
+ collectRuleDiagnostics(rule, childPath, validationResult, fieldValidator, ruleValid, diagnostics, placeholderFieldName, placeholderOperatorName, placeholderValueName, hasFieldsConfig, fieldsByName);
1309
+ if (!ruleValid) {
1310
+ allChildrenValid = false;
1311
+ stats.invalidRules++;
1312
+ } else stats.validRules++;
1313
+ const fieldName = rule.field;
1314
+ if (!fieldSummary[fieldName]) fieldSummary[fieldName] = {
1315
+ ruleCount: 0,
1316
+ invalidCount: 0
1317
+ };
1318
+ fieldSummary[fieldName].ruleCount++;
1319
+ if (!ruleValid) fieldSummary[fieldName].invalidCount++;
1320
+ const ruleReasons = getReasons(validationResult) ?? getFieldValidatorReasons(rule, fieldValidator);
1321
+ const annotatedRule = {
1322
+ ...rule,
1323
+ valid: ruleValid,
1324
+ ...ruleReasons ? { reasons: ruleReasons } : null,
1325
+ path: childPath,
1326
+ level: childLevel
1327
+ };
1328
+ annotatedRules.push(annotatedRule);
1329
+ ruleIndex++;
1330
+ }
1331
+ const groupValid = groupSelfValid && allChildrenValid;
1332
+ if (groupValid) stats.validGroups++;
1333
+ else stats.invalidGroups++;
1334
+ if (isRuleGroupType(rg)) return {
1335
+ ...rg,
1336
+ valid: groupValid,
1337
+ ...groupReasons ? { reasons: groupReasons } : null,
1338
+ path,
1339
+ level,
1340
+ rules: annotatedRules
1341
+ };
1342
+ return {
1343
+ ...rg,
1344
+ valid: groupValid,
1345
+ ...groupReasons ? { reasons: groupReasons } : null,
1346
+ path,
1347
+ level,
1348
+ rules: annotatedRules
1349
+ };
1350
+ };
1351
+ const query = processRuleGroup(ruleGroup, []);
1352
+ if (hasFieldsConfig) {
1353
+ const referencedFields = new Set(Object.keys(fieldSummary));
1354
+ for (const [fieldName] of fieldsByName) if (!referencedFields.has(fieldName)) diagnostics.push({
1355
+ id: "",
1356
+ path: [],
1357
+ code: "UNREFERENCED_FIELD",
1358
+ message: `Field "${fieldName}" is defined in the fields config but not used in the query`,
1359
+ source: "field-check"
1360
+ });
1361
+ }
1362
+ return {
1363
+ query,
1364
+ diagnostics,
1365
+ stats,
1366
+ fieldSummary
1367
+ };
1368
+ };
1369
+ /**
1370
+ * Collects diagnostic entries for a single rule.
1371
+ */
1372
+ const collectRuleDiagnostics = (rule, path, validationResult, fieldValidator, ruleValid, diagnostics, placeholderFieldName, placeholderOperatorName, placeholderValueName, hasFieldsConfig, fieldsByName) => {
1373
+ const id = rule.id ?? "";
1374
+ if (rule.muted) diagnostics.push({
1375
+ id,
1376
+ path,
1377
+ code: "MUTED",
1378
+ message: "Rule is muted",
1379
+ source: "muted"
1380
+ });
1381
+ if (rule.field === placeholderFieldName) diagnostics.push({
1382
+ id,
1383
+ path,
1384
+ code: "PLACEHOLDER_FIELD",
1385
+ message: "Rule has a placeholder field",
1386
+ source: "placeholder"
1387
+ });
1388
+ if (rule.operator === placeholderOperatorName) diagnostics.push({
1389
+ id,
1390
+ path,
1391
+ code: "PLACEHOLDER_OPERATOR",
1392
+ message: "Rule has a placeholder operator",
1393
+ source: "placeholder"
1394
+ });
1395
+ if (placeholderValueName !== void 0 && rule.value === placeholderValueName) diagnostics.push({
1396
+ id,
1397
+ path,
1398
+ code: "PLACEHOLDER_VALUE",
1399
+ message: "Rule has a placeholder value",
1400
+ source: "placeholder"
1401
+ });
1402
+ if (!rule.muted && rule.field !== placeholderFieldName && rule.operator !== placeholderOperatorName && !(placeholderValueName !== void 0 && rule.value === placeholderValueName)) {
1403
+ if (typeof validationResult === "boolean" && !validationResult) diagnostics.push({
1404
+ id,
1405
+ path,
1406
+ code: "CUSTOM_VALIDATOR",
1407
+ message: "Rule failed validation",
1408
+ source: "query-validator"
1409
+ });
1410
+ else if (typeof validationResult !== "boolean" && isValidationResult(validationResult) && !validationResult.valid) {
1411
+ const reasons = validationResult.reasons;
1412
+ diagnostics.push({
1413
+ id,
1414
+ path,
1415
+ code: "CUSTOM_VALIDATOR",
1416
+ message: reasons ? `Invalid: ${reasons.join(", ")}` : "Rule failed validation",
1417
+ source: "query-validator"
1418
+ });
1419
+ } else if (!ruleValid && typeof fieldValidator === "function") {
1420
+ const vr = fieldValidator(rule);
1421
+ const reasons = typeof vr !== "boolean" && isValidationResult(vr) && !vr.valid ? vr.reasons : void 0;
1422
+ diagnostics.push({
1423
+ id,
1424
+ path,
1425
+ code: "CUSTOM_VALIDATOR",
1426
+ message: reasons ? `Invalid: ${reasons.join(", ")}` : "Rule failed field validation",
1427
+ source: "field-validator"
1428
+ });
1429
+ }
1430
+ }
1431
+ if (hasFieldsConfig && !fieldsByName.has(rule.field) && rule.field !== placeholderFieldName) diagnostics.push({
1432
+ id,
1433
+ path,
1434
+ code: "UNDEFINED_FIELD",
1435
+ message: `Field "${rule.field}" is not defined in the fields config`,
1436
+ source: "field-check"
1437
+ });
1438
+ if (hasFieldsConfig) {
1439
+ const fieldDef = fieldsByName.get(rule.field);
1440
+ if (fieldDef?.inputType) {
1441
+ const mismatchCode = checkValueTypeMismatch(rule.value, fieldDef.inputType);
1442
+ if (mismatchCode) diagnostics.push({
1443
+ id,
1444
+ path,
1445
+ code: mismatchCode,
1446
+ message: `Value "${rule.value}" is not compatible with input type "${fieldDef.inputType}"`,
1447
+ source: "type-check"
1448
+ });
1449
+ }
1450
+ }
1451
+ };
1452
+ /**
1453
+ * Extracts `reasons` from a validation result, if present.
1454
+ */
1455
+ const getReasons = (validationResult) => {
1456
+ if (typeof validationResult !== "boolean" && isValidationResult(validationResult) && !validationResult.valid && validationResult.reasons) return validationResult.reasons;
1457
+ };
1458
+ /**
1459
+ * Runs a field-level validator and extracts `reasons` if present.
1460
+ */
1461
+ const getFieldValidatorReasons = (rule, fieldValidator) => {
1462
+ if (typeof fieldValidator === "function") {
1463
+ const vr = fieldValidator(rule);
1464
+ if (typeof vr !== "boolean" && isValidationResult(vr) && !vr.valid && vr.reasons) return vr.reasons;
1465
+ }
1466
+ };
1467
+ //#endregion
1149
1468
  //#region src/utils/formatQuery/defaultRuleProcessorElasticSearch.ts
1150
1469
  const rangeOperatorMap = {
1151
1470
  "<": "lt",
@@ -1524,12 +1843,12 @@ const defaultRuleProcessorLDAP = (rule, options = {}) => {
1524
1843
  return negateIf(`(&(${field}>=${ldapEscape(firstValue)})(${field}<=${ldapEscape(secondValue)}))`, operatorLC === "notbetween");
1525
1844
  }
1526
1845
  }
1527
- // istanbul ignore next
1846
+ // v8 ignore next
1528
1847
  return "";
1529
1848
  };
1530
1849
  //#endregion
1531
1850
  //#region src/utils/formatQuery/defaultValueProcessorNL.ts
1532
- const escapeStringValueQuotes = (v, quoteChar, escapeQuotes) => escapeQuotes && typeof v === "string" ? v.replaceAll(`${quoteChar}`, `${quoteChar}${quoteChar}`) : v;
1851
+ const escapeStringValueQuotes = (v, quoteChar, escapeQuotes) => escapeQuotes && typeof v === "string" ? v.replaceAll(`${quoteChar}`, `${quoteChar}${quoteChar}`) : /* v8 ignore next -- @preserve */ v;
1533
1852
  /**
1534
1853
  * Default value processor used by {@link formatQuery} for "natural_language" format.
1535
1854
  *
@@ -1547,7 +1866,7 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
1547
1866
  quoteFieldNamesWith,
1548
1867
  fieldIdentifierSeparator
1549
1868
  });
1550
- const t = translations ?? ( /* istanbul ignore next */ {});
1869
+ const t = translations ?? ( /* v8 ignore start -- @preserve */ {});
1551
1870
  const orTL = t.or ?? "or";
1552
1871
  const trueTL = t.true ?? "true";
1553
1872
  const falseTL = t.false ?? "false";
@@ -1603,7 +1922,7 @@ const defaultExportOperatorMap = {
1603
1922
  between: ["is between", "is between the values in"],
1604
1923
  notbetween: ["is not between", "is not between the values in"]
1605
1924
  };
1606
- /* istanbul ignore next */
1925
+ /* v8 ignore next -- @preserve */
1607
1926
  const defaultGetOperators = () => [];
1608
1927
  /**
1609
1928
  * Default operator processor used by {@link formatQuery} for "natural_language" format.
@@ -1612,7 +1931,7 @@ const defaultGetOperators = () => [];
1612
1931
  */
1613
1932
  const defaultOperatorProcessorNL = (rule, opts = {}) => {
1614
1933
  const { field, operator, valueSource = "value" } = rule;
1615
- // istanbul ignore next
1934
+ // v8 ignore next
1616
1935
  const { getOperators = defaultGetOperators, operatorMap: operatorMapParam = defaultExportOperatorMap } = opts;
1617
1936
  const mergedOperatorMap = new Map(Object.entries(defaultExportOperatorMap));
1618
1937
  for (const [key, value] of Object.entries(operatorMapParam)) mergedOperatorMap.set(lc(key), value);
@@ -1641,8 +1960,8 @@ const defaultOperatorProcessorNL = (rule, opts = {}) => {
1641
1960
  */
1642
1961
  const defaultRuleProcessorNL = (rule, opts) => {
1643
1962
  const { field, operator } = rule;
1644
- // istanbul ignore next
1645
- const { fieldData, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", quoteValuesWith = `'`, operatorProcessor = defaultOperatorProcessorNL, valueProcessor = defaultValueProcessorNL, concatOperator = "||", wordOrder = "SVO" } = opts ?? ( /* istanbul ignore next */ {});
1963
+ // v8 ignore next
1964
+ const { fieldData, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", quoteValuesWith = `'`, operatorProcessor = defaultOperatorProcessorNL, valueProcessor = defaultValueProcessorNL, concatOperator = "||", wordOrder = "SVO" } = opts ?? ( /* v8 ignore start -- @preserve */ {});
1646
1965
  const processedField = getQuotedFieldName(fieldData?.label ?? field, {
1647
1966
  quoteFieldNamesWith,
1648
1967
  fieldIdentifierSeparator
@@ -1748,7 +2067,7 @@ const defaultRuleProcessorSQL = (rule, opts = {}) => {
1748
2067
  * @group Export
1749
2068
  */
1750
2069
  const defaultRuleProcessorParameterized = (rule, opts, meta) => {
1751
- // istanbul ignore next
2070
+ // v8 ignore next
1752
2071
  const { fieldData, format, getNextNamedParam, parseNumbers, paramPrefix, paramsKeepPrefix, numberedParams, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator, concatOperator, operatorProcessor = defaultOperatorProcessorSQL, valueProcessor = defaultValueProcessorByRule } = opts ?? {};
1753
2072
  const { processedParams = [] } = meta ?? {};
1754
2073
  const parameterized = format === "parameterized";
@@ -1767,6 +2086,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
1767
2086
  });
1768
2087
  const ruleField = wrapFieldName(rule.field);
1769
2088
  const matchEval = processMatchMode(rule);
2089
+ /* v8 ignore start -- @preserve */
1770
2090
  if (matchEval === false) return;
1771
2091
  else if (matchEval) {
1772
2092
  if (opts?.preset !== "postgresql") return finalize("");
@@ -1779,7 +2099,6 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
1779
2099
  ...opts,
1780
2100
  fields: []
1781
2101
  });
1782
- // istanbul ignore else
1783
2102
  if (Array.isArray(nestedParams)) params.push(...nestedParams);
1784
2103
  else Object.assign(paramsNamed, nestedParams);
1785
2104
  switch (mode) {
@@ -1794,6 +2113,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
1794
2113
  }
1795
2114
  }
1796
2115
  }
2116
+ /* v8 ignore stop -- @preserve */
1797
2117
  const value = valueProcessor(rule, {
1798
2118
  parseNumbers,
1799
2119
  quoteFieldNamesWith,
@@ -1834,7 +2154,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
1834
2154
  }
1835
2155
  let paramValue = rule.value;
1836
2156
  if (typeof rule.value === "string") if (shouldRenderAsNumber(rule.value, parseNumbers)) paramValue = parseNumber(rule.value, { parseNumbers });
1837
- else paramValue = /^'.*'$/g.test(value) ? value.replaceAll(/(^'|'$)/g, "") : value;
2157
+ else paramValue = /^'.*'$/g.test(value) ? value.replaceAll(/(^'|'$)/g, "") : /* v8 ignore next -- @preserve */ value;
1838
2158
  let paramName = "";
1839
2159
  if (parameterized) params.push(paramValue);
1840
2160
  else {
@@ -1853,9 +2173,9 @@ const processNumber = (value, fallback, parseNumbers) => shouldRenderAsNumber(va
1853
2173
  */
1854
2174
  const defaultRuleProcessorPrisma = (rule, options = {}) => {
1855
2175
  const { field, operator, value, valueSource } = rule;
1856
- // istanbul ignore next
2176
+ // v8 ignore next
1857
2177
  const { parseNumbers, preserveValueOrder } = options;
1858
- if (valueSource === "field" || processMatchMode(rule)) return;
2178
+ if (valueSource === "field" || processMatchMode(rule)) return void 0;
1859
2179
  const operatorLC = lc(operator);
1860
2180
  switch (operatorLC) {
1861
2181
  case "=": return { [field]: processNumber(value, value, parseNumbers) };
@@ -1913,7 +2233,7 @@ const defaultRuleProcessorPrisma = (rule, options = {}) => {
1913
2233
  */
1914
2234
  const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder, context = {} } = {}) => {
1915
2235
  const { sequelizeOperators: Op, sequelizeCol: col, sequelizeFn: fn } = context;
1916
- if (processMatchMode(rule)) return;
2236
+ if (processMatchMode(rule)) return void 0;
1917
2237
  const { field, operator, value, valueSource } = rule;
1918
2238
  const valueIsField = valueSource === "field";
1919
2239
  const operatorLC = lc(operator);
@@ -2017,9 +2337,10 @@ const defaultRuleProcessors = {
2017
2337
  prisma: defaultRuleProcessorPrisma,
2018
2338
  sequelize: defaultRuleProcessorSequelize,
2019
2339
  spel: defaultRuleProcessorSpEL,
2020
- sql: defaultRuleProcessorSQL
2340
+ sql: defaultRuleProcessorSQL,
2341
+ diagnostics: defaultRuleProcessorSQL
2021
2342
  };
2022
- /* istanbul ignore next */
2343
+ /* v8 ignore next -- @preserve */
2023
2344
  const defaultOperatorProcessor = (r) => r.operator;
2024
2345
  const defaultOperatorProcessors = {
2025
2346
  cel: defaultOperatorProcessor,
@@ -2038,7 +2359,8 @@ const defaultOperatorProcessors = {
2038
2359
  prisma: defaultOperatorProcessor,
2039
2360
  sequelize: defaultOperatorProcessor,
2040
2361
  spel: defaultOperatorProcessor,
2041
- sql: defaultOperatorProcessorSQL
2362
+ sql: defaultOperatorProcessorSQL,
2363
+ diagnostics: defaultOperatorProcessor
2042
2364
  };
2043
2365
  const defaultFallbackExpressions = {
2044
2366
  cel: "1 == 1",
@@ -2112,24 +2434,26 @@ function formatQuery(ruleGroup, optionParam = {}) {
2112
2434
  const getOperators = (f, m) => toFullOptionList(getOperators_option(f, m) ?? []);
2113
2435
  const fallbackExpression = fallbackExpression_option ?? defaultFallbackExpressions[format] ?? defaultFallbackExpressions.sql;
2114
2436
  let validationMap = {};
2115
- // istanbul ignore else
2437
+ // v8 ignore else
2116
2438
  if (typeof validator === "function") {
2117
2439
  const validationResult = validator(ruleGroup);
2118
2440
  if (typeof validationResult === "boolean") {
2119
- // istanbul ignore else
2120
- if (!validationResult) return format === "parameterized" ? {
2121
- sql: fallbackExpression,
2122
- params: []
2123
- } : format === "parameterized_named" ? {
2124
- sql: fallbackExpression,
2125
- params: {}
2126
- } : format === "mongodb" ? `{${fallbackExpression}}` : format === "mongodb_query" ? mongoDbFallback : format === "prisma" ? prismaFallback : format === "jsonlogic" ? false : format === "elasticsearch" ? {} : format === "drizzle" || format === "sequelize" ? void 0 : fallbackExpression;
2441
+ // v8 ignore else
2442
+ if (!validationResult) {
2443
+ if (format !== "diagnostics") return format === "parameterized" ? {
2444
+ sql: fallbackExpression,
2445
+ params: []
2446
+ } : format === "parameterized_named" ? {
2447
+ sql: fallbackExpression,
2448
+ params: {}
2449
+ } : format === "mongodb" ? `{${fallbackExpression}}` : format === "mongodb_query" ? mongoDbFallback : format === "prisma" ? prismaFallback : format === "jsonlogic" ? false : format === "elasticsearch" ? {} : format === "drizzle" || format === "sequelize" ? void 0 : fallbackExpression;
2450
+ }
2127
2451
  } else validationMap = validationResult;
2128
2452
  }
2129
2453
  const validatorMap = {};
2130
2454
  const uniqueFields = toFlatOptionArray(fields);
2131
2455
  for (const f of uniqueFields)
2132
- // istanbul ignore else
2456
+ // v8 ignore else
2133
2457
  if (typeof f.validator === "function") validatorMap[f.value ?? f.name] = f.validator;
2134
2458
  const validateRule = (rule) => {
2135
2459
  let validationResult;
@@ -2139,7 +2463,7 @@ function formatQuery(ruleGroup, optionParam = {}) {
2139
2463
  const fieldArr = uniqueFields.filter((f) => f.name === rule.field);
2140
2464
  if (fieldArr.length > 0) {
2141
2465
  const field = fieldArr[0];
2142
- // istanbul ignore else
2466
+ // v8 ignore else
2143
2467
  if (typeof field.validator === "function") fieldValidator = field.validator;
2144
2468
  }
2145
2469
  }
@@ -2183,6 +2507,7 @@ function formatQuery(ruleGroup, optionParam = {}) {
2183
2507
  case "prisma": return defaultRuleGroupProcessorPrisma(ruleGroup, finalOptions);
2184
2508
  case "drizzle": return defaultRuleGroupProcessorDrizzle(ruleGroup, finalOptions);
2185
2509
  case "sequelize": return defaultRuleGroupProcessorSequelize(ruleGroup, finalOptions);
2510
+ case "diagnostics": return defaultRuleGroupProcessorDiagnostics(ruleGroup, finalOptions);
2186
2511
  default: return "";
2187
2512
  }
2188
2513
  }
@@ -2237,6 +2562,6 @@ const defaultValueProcessorMongoDBByRule = defaultRuleProcessorMongoDB;
2237
2562
  */
2238
2563
  const defaultValueProcessorSpELByRule = defaultRuleProcessorSpEL;
2239
2564
  //#endregion
2240
- export { bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, defaultCELValueProcessor, defaultExportOperatorMap, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, defaultRuleGroupProcessorCEL, 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, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, formatQuery, formatQueryOptionPresets, getNLTranslataion, getQuoteFieldNamesWithArray, getQuotedFieldName, isValidValue, isValueProcessorLegacy, jsonLogicAdditionalOperators, mapSQLOperator, mongoDbFallback, mongoOperators, normalizeConstituentWordOrder, numerifyValues, prismaFallback, prismaOperators, processMatchMode, shouldRenderAsNumber, sqlDialectPresets };
2565
+ export { bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, defaultCELValueProcessor, defaultExportOperatorMap, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, 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, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, formatQuery, formatQueryOptionPresets, getNLTranslataion, getQuoteFieldNamesWithArray, getQuotedFieldName, isValidValue, isValueProcessorLegacy, jsonLogicAdditionalOperators, mapSQLOperator, mongoDbFallback, mongoOperators, normalizeConstituentWordOrder, numerifyValues, prismaFallback, prismaOperators, processMatchMode, shouldRenderAsNumber, sqlDialectPresets };
2241
2566
 
2242
2567
  //# sourceMappingURL=formatQuery.mjs.map