@react-querybuilder/core 8.20.2 → 8.21.1

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 (109) hide show
  1. package/README.md +4 -0
  2. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +2261 -2113
  3. package/dist/cjs/react-querybuilder_core.cjs.development.js +319 -22
  4. package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
  5. package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +2261 -2113
  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/{convertQuery-BJKNgecE.js → convertQuery-Cw76XFIn.js} +8 -8
  9. package/dist/{convertQuery-BJKNgecE.js.map → convertQuery-Cw76XFIn.js.map} +1 -1
  10. package/dist/{convertQuery-J1CaoDxe.mjs → convertQuery-D_4J7E-Z.mjs} +2 -2
  11. package/dist/{convertQuery-J1CaoDxe.mjs.map → convertQuery-D_4J7E-Z.mjs.map} +1 -1
  12. package/dist/formatQuery.d.mts +499 -459
  13. package/dist/formatQuery.d.ts +499 -459
  14. package/dist/formatQuery.js +170 -88
  15. package/dist/formatQuery.js.map +1 -1
  16. package/dist/formatQuery.mjs +97 -20
  17. package/dist/formatQuery.mjs.map +1 -1
  18. package/dist/import-BVdxeIBO.d.mts +26 -0
  19. package/dist/import-Ddc3d_8q.d.ts +26 -0
  20. package/dist/{index-DlVg-QXo.d.mts → index-BSwFvkeI.d.mts} +679 -648
  21. package/dist/{index-DlVg-QXo.d.ts → index-BSwFvkeI.d.ts} +679 -648
  22. package/dist/{objectUtils-DBJI82bl.js → isRuleGroup-0JNiQgLg.js} +1 -26
  23. package/dist/isRuleGroup-0JNiQgLg.js.map +1 -0
  24. package/dist/{objectUtils-ZvPkF6u6.mjs → isRuleGroup-CqLThsbu.mjs} +2 -15
  25. package/dist/isRuleGroup-CqLThsbu.mjs.map +1 -0
  26. package/dist/objectUtils-Cr02aGxb.js +27 -0
  27. package/dist/objectUtils-Cr02aGxb.js.map +1 -0
  28. package/dist/objectUtils-DBlmJgBf.mjs +16 -0
  29. package/dist/objectUtils-DBlmJgBf.mjs.map +1 -0
  30. package/dist/parseCEL.d.mts +64 -30
  31. package/dist/parseCEL.d.ts +64 -30
  32. package/dist/parseCEL.js +91 -12
  33. package/dist/parseCEL.js.map +1 -1
  34. package/dist/parseCEL.mjs +85 -8
  35. package/dist/parseCEL.mjs.map +1 -1
  36. package/dist/parseCypher.d.mts +24 -25
  37. package/dist/parseCypher.d.ts +24 -25
  38. package/dist/parseGremlin.d.mts +18 -19
  39. package/dist/parseGremlin.d.ts +18 -19
  40. package/dist/parseJSONata.d.mts +207 -20
  41. package/dist/parseJSONata.d.ts +207 -20
  42. package/dist/parseJSONata.js +92 -7
  43. package/dist/parseJSONata.js.map +1 -1
  44. package/dist/parseJSONata.mjs +80 -4
  45. package/dist/parseJSONata.mjs.map +1 -1
  46. package/dist/parseJsonLogic.d.mts +51 -18
  47. package/dist/parseJsonLogic.d.ts +51 -18
  48. package/dist/parseJsonLogic.js +95 -34
  49. package/dist/parseJsonLogic.js.map +1 -1
  50. package/dist/parseJsonLogic.mjs +65 -6
  51. package/dist/parseJsonLogic.mjs.map +1 -1
  52. package/dist/parseMongoDB.d.mts +89 -58
  53. package/dist/parseMongoDB.d.ts +89 -58
  54. package/dist/parseMongoDB.js +140 -15
  55. package/dist/parseMongoDB.js.map +1 -1
  56. package/dist/parseMongoDB.mjs +128 -5
  57. package/dist/parseMongoDB.mjs.map +1 -1
  58. package/dist/parseSPARQL.d.mts +17 -18
  59. package/dist/parseSPARQL.d.ts +17 -18
  60. package/dist/parseSPARQL.js.map +1 -1
  61. package/dist/parseSPARQL.mjs.map +1 -1
  62. package/dist/parseSQL.d.mts +266 -18
  63. package/dist/parseSQL.d.ts +266 -18
  64. package/dist/parseSQL.js +163 -10
  65. package/dist/parseSQL.js.map +1 -1
  66. package/dist/parseSQL.mjs +149 -7
  67. package/dist/parseSQL.mjs.map +1 -1
  68. package/dist/parseSpEL.d.mts +193 -19
  69. package/dist/parseSpEL.d.ts +193 -19
  70. package/dist/parseSpEL.js +166 -7
  71. package/dist/parseSpEL.js.map +1 -1
  72. package/dist/parseSpEL.mjs +142 -6
  73. package/dist/parseSpEL.mjs.map +1 -1
  74. package/dist/{prepareQueryObjects-Bni5VgYM.js → prepareQueryObjects-C2-kTZvR.js} +5 -5
  75. package/dist/prepareQueryObjects-C2-kTZvR.js.map +1 -0
  76. package/dist/{prepareQueryObjects-BCLU20Cg.mjs → prepareQueryObjects-Q18lHCKl.mjs} +3 -3
  77. package/dist/prepareQueryObjects-Q18lHCKl.mjs.map +1 -0
  78. package/dist/query-builder-layout.css.map +1 -1
  79. package/dist/query-builder.css.map +1 -1
  80. package/dist/react-querybuilder_core.d.mts +2261 -2113
  81. package/dist/react-querybuilder_core.legacy-esm.d.ts +2261 -2113
  82. package/dist/react-querybuilder_core.legacy-esm.js +335 -40
  83. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  84. package/dist/react-querybuilder_core.mjs +309 -23
  85. package/dist/react-querybuilder_core.mjs.map +1 -1
  86. package/dist/react-querybuilder_core.production.d.mts +2261 -2113
  87. package/dist/react-querybuilder_core.production.mjs +1 -1
  88. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  89. package/dist/styles/_layout.scss +18 -14
  90. package/dist/styles/_main.scss +7 -2
  91. package/dist/transformQuery.d.mts +91 -92
  92. package/dist/transformQuery.d.ts +91 -92
  93. package/dist/transformQuery.js +4 -3
  94. package/dist/transformQuery.js.map +1 -1
  95. package/dist/transformQuery.mjs +2 -1
  96. package/dist/transformQuery.mjs.map +1 -1
  97. package/dist/{utils-BpaOtylk.js → utils-DEwV7F6B.js} +108 -12
  98. package/dist/utils-DEwV7F6B.js.map +1 -0
  99. package/dist/{utils-CJRGiPb-.mjs → utils-Dt0D_DMV.mjs} +69 -3
  100. package/dist/utils-Dt0D_DMV.mjs.map +1 -0
  101. package/package.json +16 -16
  102. package/dist/import-Qs1-kgv5.d.ts +0 -27
  103. package/dist/import-ShTj5IdB.d.mts +0 -27
  104. package/dist/objectUtils-DBJI82bl.js.map +0 -1
  105. package/dist/objectUtils-ZvPkF6u6.mjs.map +0 -1
  106. package/dist/prepareQueryObjects-BCLU20Cg.mjs.map +0 -1
  107. package/dist/prepareQueryObjects-Bni5VgYM.js.map +0 -1
  108. package/dist/utils-BpaOtylk.js.map +0 -1
  109. package/dist/utils-CJRGiPb-.mjs.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-CJRGiPb-.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-ZvPkF6u6.mjs";
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";
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
- import { t as convertFromIC } from "./convertQuery-J1CaoDxe.mjs";
4
+ import { t as convertFromIC } from "./convertQuery-D_4J7E-Z.mjs";
5
5
  //#region src/utils/isRuleOrGroupValid.ts
6
6
  /**
7
7
  * Determines if an object is useful as a validation result.
@@ -91,7 +91,7 @@ const escapeDoubleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !esca
91
91
  const defaultRuleProcessorCEL = (rule, opts = {}) => {
92
92
  const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
93
93
  const { field, operator, value, valueSource } = rule;
94
- const valueIsField = valueSource === "field";
94
+ const valueIsField = valueSource === "field" || valueSource === "parameter";
95
95
  const operatorTL = lc(operator === "=" ? "==" : operator);
96
96
  const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || shouldRenderAsNumber(value, parseNumbers);
97
97
  const matchEval = processMatchMode(rule);
@@ -412,7 +412,7 @@ const escapeSingleQuotes$2 = (v, escapeQuotes) => typeof v !== "string" || !esca
412
412
  const defaultRuleProcessorSpEL = (rule, opts = {}) => {
413
413
  const { field, operator, value, valueSource } = rule;
414
414
  const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
415
- const valueIsField = valueSource === "field";
415
+ const valueIsField = valueSource === "field" || valueSource === "parameter";
416
416
  const operatorTL = lc(operator === "=" ? "==" : operator);
417
417
  const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || shouldRenderAsNumber(value, parseNumbers);
418
418
  const matchEval = processMatchMode(rule);
@@ -446,11 +446,20 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
446
446
  case ">":
447
447
  case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`;
448
448
  case "contains":
449
- case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
449
+ case "doesnotcontain": {
450
+ const valueTL = valueIsField ? `'.*'.concat(${trimIfString(value)}).concat('.*')` : `'.*${escapeSingleQuotes$2(value, escapeQuotes)}.*'`;
451
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
452
+ }
450
453
  case "beginswith":
451
- case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
454
+ case "doesnotbeginwith": {
455
+ const valueTL = valueIsField ? `'^'.concat(${trimIfString(value)}).concat('.*')` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}.*'`;
456
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
457
+ }
452
458
  case "endswith":
453
- case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
459
+ case "doesnotendwith": {
460
+ const valueTL = valueIsField ? `'.*'.concat(${trimIfString(value)}).concat('$')` : `'.*${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`;
461
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
462
+ }
454
463
  case "null": return `${field} == null`;
455
464
  case "notnull": return `${field} != null`;
456
465
  case "in":
@@ -488,7 +497,35 @@ const escapeStringValueQuotes$1 = (v, quoteChar, escapeQuotes) => escapeQuotes &
488
497
  *
489
498
  * @group Export
490
499
  */
491
- const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQuotes, parseNumbers, preserveValueOrder, quoteFieldNamesWith, quoteValuesWith, concatOperator = "||", fieldIdentifierSeparator, wrapValueWith = ["", ""], translations } = {}) => {
500
+ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQuotes, parseNumbers, preserveValueOrder, quoteFieldNamesWith, quoteValuesWith, concatOperator = "||", fieldIdentifierSeparator, paramPrefix, wrapValueWith = ["", ""], translations } = {}) => {
501
+ if (valueSource === "parameter") {
502
+ const operatorLowerCase = lc(operator);
503
+ if (operatorLowerCase === "between" || operatorLowerCase === "notbetween") {
504
+ const valueAsArray = toArray(value, { retainEmptyStrings: true });
505
+ if (valueAsArray.length < 2 || !isValidValue(valueAsArray[0]) || !isValidValue(valueAsArray[1])) return "";
506
+ const [first, second] = valueAsArray;
507
+ return [withParamPrefix(first, paramPrefix), withParamPrefix(second, paramPrefix)].join(` ${translations?.betweenAnd ?? translations?.and ?? "and"} `);
508
+ }
509
+ if (operatorLowerCase === "in" || operatorLowerCase === "notin") {
510
+ const valueAsArray = toArray(value);
511
+ if (valueAsArray.length === 0) return "";
512
+ return `(${valueAsArray.map((v) => withParamPrefix(v, paramPrefix)).join(", ")})`;
513
+ }
514
+ const paramRef = withParamPrefix(value, paramPrefix);
515
+ switch (operatorLowerCase) {
516
+ case "contains":
517
+ case "doesnotcontain":
518
+ case "beginswith":
519
+ case "doesnotbeginwith":
520
+ case "endswith":
521
+ case "doesnotendwith": return wrapLikeFragment(paramRef, operatorLowerCase, {
522
+ concatOperator,
523
+ quoteValuesWith,
524
+ wrapValueWith
525
+ });
526
+ }
527
+ return paramRef;
528
+ }
492
529
  const valueIsField = valueSource === "field";
493
530
  const operatorLowerCase = lc(operator);
494
531
  const quoteChar = quoteValuesWith || "'";
@@ -499,7 +536,11 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
499
536
  quoteFieldNamesWith,
500
537
  fieldIdentifierSeparator
501
538
  });
502
- const concat = (...values) => concatOperator.toUpperCase() === "CONCAT" ? `CONCAT(${values.join(", ")})` : values.join(` ${concatOperator} `);
539
+ const likeOpts = {
540
+ concatOperator,
541
+ quoteValuesWith,
542
+ wrapValueWith
543
+ };
503
544
  switch (operatorLowerCase) {
504
545
  case "null":
505
546
  case "notnull": return "";
@@ -526,11 +567,11 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
526
567
  return (valueIsField ? valsOneAndTwoOnly.map((v) => wrapFieldName(v)) : valsOneAndTwoOnly.every((v) => shouldRenderAsNumber(v, parseNumbers)) ? valsOneAndTwoOnly.map((v) => parseNumber(v, { parseNumbers: "strict" })) : valsOneAndTwoOnly.map((v) => wrapAndEscape(v))).join(` ${translations?.betweenAnd ?? translations?.and ?? "and"} `);
527
568
  }
528
569
  case "contains":
529
- case "doesnotcontain": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value), quoteValue("%")) : quoteValue(`%${escapeValue(value)}%`);
570
+ case "doesnotcontain": return valueIsField ? wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`%${escapeValue(value)}%`);
530
571
  case "beginswith":
531
- case "doesnotbeginwith": return valueIsField ? concat(wrapFieldName(value), quoteValue("%")) : quoteValue(`${escapeValue(value)}%`);
572
+ case "doesnotbeginwith": return valueIsField ? wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`${escapeValue(value)}%`);
532
573
  case "endswith":
533
- case "doesnotendwith": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value)) : quoteValue(`%${escapeValue(value)}`);
574
+ case "doesnotendwith": return valueIsField ? wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`%${escapeValue(value)}`);
534
575
  }
535
576
  if (typeof value === "boolean") return value ? "TRUE" : "FALSE";
536
577
  return valueIsField ? wrapFieldName(value) : shouldRenderAsNumber(value, parseNumbers) ? `${trimIfString(value)}` : `${wrapAndEscape(value)}`;
@@ -2102,7 +2143,10 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
2102
2143
  case "null":
2103
2144
  case "notnull": return { [`${operatorLC === "notnull" ? "!" : "="}=`]: [fieldObject, null] };
2104
2145
  case "in":
2105
- case "notin": return negateIfNotOp(operatorLC, { in: [fieldObject, toArray(value).map((v) => fieldOrNumberRenderer(v))] });
2146
+ case "notin": {
2147
+ const valueAsArray = toArray(value).map((v) => fieldOrNumberRenderer(v));
2148
+ return negateIfNotOp(operatorLC, { in: [fieldObject, valueAsArray] });
2149
+ }
2106
2150
  case "between":
2107
2151
  case "notbetween": {
2108
2152
  const valueAsArray = toArray(value);
@@ -2133,11 +2177,20 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
2133
2177
  return false;
2134
2178
  }
2135
2179
  case "contains":
2136
- case "doesnotcontain": return negateIfNotOp(operatorLC, { in: [fieldOrNumberRenderer(value), fieldObject] });
2180
+ case "doesnotcontain": {
2181
+ const jsonRule = { in: [fieldOrNumberRenderer(value), fieldObject] };
2182
+ return negateIfNotOp(operatorLC, jsonRule);
2183
+ }
2137
2184
  case "beginswith":
2138
- case "doesnotbeginwith": return negateIfNotOp(operatorLC, { startsWith: [fieldObject, fieldOrNumberRenderer(value)] });
2185
+ case "doesnotbeginwith": {
2186
+ const jsonRule = { startsWith: [fieldObject, fieldOrNumberRenderer(value)] };
2187
+ return negateIfNotOp(operatorLC, jsonRule);
2188
+ }
2139
2189
  case "endswith":
2140
- case "doesnotendwith": return negateIfNotOp(operatorLC, { endsWith: [fieldObject, fieldOrNumberRenderer(value)] });
2190
+ case "doesnotendwith": {
2191
+ const jsonRule = { endsWith: [fieldObject, fieldOrNumberRenderer(value)] };
2192
+ return negateIfNotOp(operatorLC, jsonRule);
2193
+ }
2141
2194
  }
2142
2195
  return false;
2143
2196
  };
@@ -2171,7 +2224,10 @@ const defaultRuleProcessorLDAP = (rule, options = {}) => {
2171
2224
  case "null":
2172
2225
  case "notnull": return negateIf(`(${field}=*)`, operatorLC === "notnull");
2173
2226
  case "in":
2174
- case "notin": return negateIf(`(|${toArray(value).map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
2227
+ case "notin": {
2228
+ const valueAsArray = toArray(value);
2229
+ return negateIf(`(|${valueAsArray.map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
2230
+ }
2175
2231
  case "between":
2176
2232
  case "notbetween": {
2177
2233
  const valueAsArray = toArray(value);
@@ -2482,7 +2538,22 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
2482
2538
  const [qPre, qPost] = quoteFieldNamesWith;
2483
2539
  if ((sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in" || sqlOperatorLowerCase === "between" || sqlOperatorLowerCase === "not between") && !value) return finalize("");
2484
2540
  else if (sqlOperatorLowerCase === "is null" || sqlOperatorLowerCase === "is not null") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator}`);
2485
- else if (rule.valueSource === "field") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${value}`.trim());
2541
+ else if (rule.valueSource === "parameter") {
2542
+ const registerParam = (v) => {
2543
+ const ref = withParamPrefix(v, paramPrefix);
2544
+ if (!parameterized) paramsNamed[paramsKeepPrefix ? ref : stripParamPrefix(v, paramPrefix)] = null;
2545
+ return ref;
2546
+ };
2547
+ if (sqlOperatorLowerCase === "between" || sqlOperatorLowerCase === "not between") {
2548
+ const [first, second] = toArray(rule.value, { retainEmptyStrings: true }).slice(0, 2);
2549
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${registerParam(first)} and ${registerParam(second)}`.trim());
2550
+ }
2551
+ if (sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in") {
2552
+ const splitValue = toArray(rule.value);
2553
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} (${splitValue.map((v) => registerParam(v)).join(", ")})`);
2554
+ }
2555
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${wrapLikeFragment(registerParam(rule.value), lc(rule.operator), { concatOperator })}`.trim());
2556
+ } else if (rule.valueSource === "field") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${value}`.trim());
2486
2557
  else if (sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in") {
2487
2558
  const splitValue = toArray(rule.value);
2488
2559
  if (parameterized) {
@@ -2674,7 +2745,9 @@ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
2674
2745
  if (typeof v === "bigint") return String(v);
2675
2746
  if (valueIsField) return sparqlVar(trimIfString(v));
2676
2747
  if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
2748
+ /* v8 ignore start -- @preserve */
2677
2749
  const s = typeof v === "string" ? v : JSON.stringify(v) ?? "";
2750
+ /* v8 ignore stop -- @preserve */
2678
2751
  if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
2679
2752
  return `"${escapeDoubleQuotes(s, escapeQuotes)}"`;
2680
2753
  };
@@ -2997,6 +3070,10 @@ function formatQuery(ruleGroup, optionParam = {}) {
2997
3070
  if (typeof field.validator === "function") fieldValidator = field.validator;
2998
3071
  }
2999
3072
  }
3073
+ if (rule.valueSource === "parameter" && typeof optObj.getParameters === "function") {
3074
+ const fieldData = getOption(fields, rule.field);
3075
+ if (!new Set(toFlatOptionArray(toFullOptionList(optObj.getParameters(rule.field, rule.operator, { fieldData }))).map((p) => stripParamPrefix(p.value, optObj.paramPrefix))).has(stripParamPrefix(rule.value, optObj.paramPrefix))) validationResult = false;
3076
+ }
3000
3077
  return [validationResult, fieldValidator];
3001
3078
  };
3002
3079
  const finalOptions = {
@@ -3099,6 +3176,6 @@ const defaultValueProcessorMongoDBByRule = defaultRuleProcessorMongoDB;
3099
3176
  */
3100
3177
  const defaultValueProcessorSpELByRule = defaultRuleProcessorSpEL;
3101
3178
  //#endregion
3102
- 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, getNLTranslataion, getQuoteFieldNamesWithArray, getQuotedFieldName, isValidValue, isValueProcessorLegacy, jsonLogicAdditionalOperators, mapSQLOperator, mongoDbFallback, mongoOperators, normalizeConstituentWordOrder, numerifyValues, prismaFallback, prismaOperators, processMatchMode, shouldRenderAsNumber, sparqlVar, sqlDialectPresets };
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 };
3103
3180
 
3104
3181
  //# sourceMappingURL=formatQuery.mjs.map