@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,13 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_utils = require("./utils-BpaOtylk.js");
3
- const require_objectUtils = require("./objectUtils-DBJI82bl.js");
2
+ const require_utils = require("./utils-DEwV7F6B.js");
3
+ const require_isRuleGroup = require("./isRuleGroup-0JNiQgLg.js");
4
4
  const require_transformQuery = require("./transformQuery.js");
5
- const require_convertQuery = require("./convertQuery-BJKNgecE.js");
5
+ const require_convertQuery = require("./convertQuery-Cw76XFIn.js");
6
6
  //#region src/utils/isRuleOrGroupValid.ts
7
7
  /**
8
8
  * Determines if an object is useful as a validation result.
9
9
  */
10
- const isValidationResult = (vr) => require_objectUtils.isPojo(vr) && typeof vr.valid === "boolean";
10
+ const isValidationResult = (vr) => require_isRuleGroup.isPojo(vr) && typeof vr.valid === "boolean";
11
11
  /**
12
12
  * Determines if a rule or group is valid based on a validation result (if defined)
13
13
  * or a validator function. Returns `true` if neither are defined and the `muted`
@@ -17,7 +17,7 @@ const isRuleOrGroupValid = (rg, validationResult, validator) => {
17
17
  if (rg.muted) return false;
18
18
  if (typeof validationResult === "boolean") return validationResult;
19
19
  if (isValidationResult(validationResult)) return validationResult.valid;
20
- if (typeof validator === "function" && !require_objectUtils.isRuleGroup(rg)) {
20
+ if (typeof validator === "function" && !require_isRuleGroup.isRuleGroup(rg)) {
21
21
  const vr = validator(rg);
22
22
  if (typeof vr === "boolean") return vr;
23
23
  // v8 ignore else
@@ -44,7 +44,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
44
44
  precedingCombinator = require_utils.celCombinatorMap[rule];
45
45
  continue;
46
46
  }
47
- if (require_objectUtils.isRuleGroup(rule)) {
47
+ if (require_isRuleGroup.isRuleGroup(rule)) {
48
48
  const processedGroup = processRuleGroup(rule);
49
49
  if (processedGroup) {
50
50
  if (!firstRule && precedingCombinator) {
@@ -74,7 +74,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
74
74
  processedRules.push(processedRule);
75
75
  }
76
76
  }
77
- const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${require_utils.celCombinatorMap[rg.combinator]} ` : " ");
77
+ const expression = processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${require_utils.celCombinatorMap[rg.combinator]} ` : " ");
78
78
  const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
79
79
  return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
80
80
  };
@@ -92,8 +92,8 @@ const escapeDoubleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !esca
92
92
  const defaultRuleProcessorCEL = (rule, opts = {}) => {
93
93
  const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
94
94
  const { field, operator, value, valueSource } = rule;
95
- const valueIsField = valueSource === "field";
96
- const operatorTL = require_objectUtils.lc(operator === "=" ? "==" : operator);
95
+ const valueIsField = valueSource === "field" || valueSource === "parameter";
96
+ const operatorTL = require_isRuleGroup.lc(operator === "=" ? "==" : operator);
97
97
  const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || require_utils.shouldRenderAsNumber(value, parseNumbers);
98
98
  const matchEval = require_utils.processMatchMode(rule);
99
99
  if (matchEval === false) return "";
@@ -142,7 +142,7 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
142
142
  case "between":
143
143
  case "notbetween": {
144
144
  const valueAsArray = require_utils.toArray(value);
145
- if (valueAsArray.length >= 2 && !require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[0]) && !require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[1])) {
145
+ if (valueAsArray.length >= 2 && !require_isRuleGroup.nullOrUndefinedOrEmpty(valueAsArray[0]) && !require_isRuleGroup.nullOrUndefinedOrEmpty(valueAsArray[1])) {
146
146
  const [first, second] = valueAsArray;
147
147
  const shouldParseNumbers = !(parseNumbers === false);
148
148
  const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
@@ -178,10 +178,10 @@ const defaultRuleGroupProcessorMongoDBQuery = (ruleGroup, options, meta) => {
178
178
  const { inExpressionContext } = context ?? {};
179
179
  const processRuleGroup = (rg, outermost) => {
180
180
  if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? mongoDbFallback : false;
181
- const combinator = `$${require_objectUtils.lc(rg.combinator)}`;
181
+ const combinator = `$${require_isRuleGroup.lc(rg.combinator)}`;
182
182
  let hasChildRules = false;
183
183
  const expressions = rg.rules.map((rule) => {
184
- if (require_objectUtils.isRuleGroup(rule)) {
184
+ if (require_isRuleGroup.isRuleGroup(rule)) {
185
185
  const processedRuleGroup = processRuleGroup(rule);
186
186
  if (processedRuleGroup) {
187
187
  hasChildRules = true;
@@ -263,7 +263,7 @@ const defaultRuleProcessorMongoDBQuery = (rule, options = {}) => {
263
263
  }
264
264
  }
265
265
  if (operator === "=" && !valueIsField) return avoidFieldsAsKeys ? { $eq: [`$${field}`, processNumber$1(value, value, parseNumbers)] } : { [field]: processNumber$1(value, value, parseNumbers) };
266
- const operatorLC = require_objectUtils.lc(operator);
266
+ const operatorLC = require_isRuleGroup.lc(operator);
267
267
  switch (operatorLC) {
268
268
  case "<":
269
269
  case "<=":
@@ -364,7 +364,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
364
364
  precedingCombinator = rule;
365
365
  continue;
366
366
  }
367
- if (require_objectUtils.isRuleGroup(rule)) {
367
+ if (require_isRuleGroup.isRuleGroup(rule)) {
368
368
  const processedGroup = processRuleGroup(rule);
369
369
  if (processedGroup) {
370
370
  if (!firstRule && precedingCombinator) {
@@ -394,7 +394,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
394
394
  processedRules.push(processedRule);
395
395
  }
396
396
  }
397
- const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ");
397
+ const expression = processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ");
398
398
  const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
399
399
  return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
400
400
  };
@@ -413,8 +413,8 @@ const escapeSingleQuotes$2 = (v, escapeQuotes) => typeof v !== "string" || !esca
413
413
  const defaultRuleProcessorSpEL = (rule, opts = {}) => {
414
414
  const { field, operator, value, valueSource } = rule;
415
415
  const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
416
- const valueIsField = valueSource === "field";
417
- const operatorTL = require_objectUtils.lc(operator === "=" ? "==" : operator);
416
+ const valueIsField = valueSource === "field" || valueSource === "parameter";
417
+ const operatorTL = require_isRuleGroup.lc(operator === "=" ? "==" : operator);
418
418
  const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || require_utils.shouldRenderAsNumber(value, parseNumbers);
419
419
  const matchEval = require_utils.processMatchMode(rule);
420
420
  if (matchEval === false) return "";
@@ -447,11 +447,20 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
447
447
  case ">":
448
448
  case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`;
449
449
  case "contains":
450
- case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
450
+ case "doesnotcontain": {
451
+ const valueTL = valueIsField ? `'.*'.concat(${require_utils.trimIfString(value)}).concat('.*')` : `'.*${escapeSingleQuotes$2(value, escapeQuotes)}.*'`;
452
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
453
+ }
451
454
  case "beginswith":
452
- case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${require_utils.trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
455
+ case "doesnotbeginwith": {
456
+ const valueTL = valueIsField ? `'^'.concat(${require_utils.trimIfString(value)}).concat('.*')` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}.*'`;
457
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
458
+ }
453
459
  case "endswith":
454
- case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${require_utils.trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
460
+ case "doesnotendwith": {
461
+ const valueTL = valueIsField ? `'.*'.concat(${require_utils.trimIfString(value)}).concat('$')` : `'.*${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`;
462
+ return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
463
+ }
455
464
  case "null": return `${field} == null`;
456
465
  case "notnull": return `${field} != null`;
457
466
  case "in":
@@ -463,7 +472,7 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
463
472
  case "between":
464
473
  case "notbetween": {
465
474
  const valueAsArray = require_utils.toArray(value);
466
- if (valueAsArray.length >= 2 && !require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[0]) && !require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[1])) {
475
+ if (valueAsArray.length >= 2 && !require_isRuleGroup.nullOrUndefinedOrEmpty(valueAsArray[0]) && !require_isRuleGroup.nullOrUndefinedOrEmpty(valueAsArray[1])) {
467
476
  const [first, second] = valueAsArray;
468
477
  const shouldParseNumbers = !(parseNumbers === false);
469
478
  const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
@@ -489,9 +498,37 @@ const escapeStringValueQuotes$1 = (v, quoteChar, escapeQuotes) => escapeQuotes &
489
498
  *
490
499
  * @group Export
491
500
  */
492
- const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQuotes, parseNumbers, preserveValueOrder, quoteFieldNamesWith, quoteValuesWith, concatOperator = "||", fieldIdentifierSeparator, wrapValueWith = ["", ""], translations } = {}) => {
501
+ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQuotes, parseNumbers, preserveValueOrder, quoteFieldNamesWith, quoteValuesWith, concatOperator = "||", fieldIdentifierSeparator, paramPrefix, wrapValueWith = ["", ""], translations } = {}) => {
502
+ if (valueSource === "parameter") {
503
+ const operatorLowerCase = require_isRuleGroup.lc(operator);
504
+ if (operatorLowerCase === "between" || operatorLowerCase === "notbetween") {
505
+ const valueAsArray = require_utils.toArray(value, { retainEmptyStrings: true });
506
+ if (valueAsArray.length < 2 || !require_utils.isValidValue(valueAsArray[0]) || !require_utils.isValidValue(valueAsArray[1])) return "";
507
+ const [first, second] = valueAsArray;
508
+ return [require_utils.withParamPrefix(first, paramPrefix), require_utils.withParamPrefix(second, paramPrefix)].join(` ${translations?.betweenAnd ?? translations?.and ?? "and"} `);
509
+ }
510
+ if (operatorLowerCase === "in" || operatorLowerCase === "notin") {
511
+ const valueAsArray = require_utils.toArray(value);
512
+ if (valueAsArray.length === 0) return "";
513
+ return `(${valueAsArray.map((v) => require_utils.withParamPrefix(v, paramPrefix)).join(", ")})`;
514
+ }
515
+ const paramRef = require_utils.withParamPrefix(value, paramPrefix);
516
+ switch (operatorLowerCase) {
517
+ case "contains":
518
+ case "doesnotcontain":
519
+ case "beginswith":
520
+ case "doesnotbeginwith":
521
+ case "endswith":
522
+ case "doesnotendwith": return require_utils.wrapLikeFragment(paramRef, operatorLowerCase, {
523
+ concatOperator,
524
+ quoteValuesWith,
525
+ wrapValueWith
526
+ });
527
+ }
528
+ return paramRef;
529
+ }
493
530
  const valueIsField = valueSource === "field";
494
- const operatorLowerCase = require_objectUtils.lc(operator);
531
+ const operatorLowerCase = require_isRuleGroup.lc(operator);
495
532
  const quoteChar = quoteValuesWith || "'";
496
533
  const quoteValue = (v) => `${wrapValueWith[0]}${quoteChar}${v}${quoteChar}${wrapValueWith[1]}`;
497
534
  const escapeValue = (v) => escapeStringValueQuotes$1(v, quoteChar, escapeQuotes);
@@ -500,7 +537,11 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
500
537
  quoteFieldNamesWith,
501
538
  fieldIdentifierSeparator
502
539
  });
503
- const concat = (...values) => concatOperator.toUpperCase() === "CONCAT" ? `CONCAT(${values.join(", ")})` : values.join(` ${concatOperator} `);
540
+ const likeOpts = {
541
+ concatOperator,
542
+ quoteValuesWith,
543
+ wrapValueWith
544
+ };
504
545
  switch (operatorLowerCase) {
505
546
  case "null":
506
547
  case "notnull": return "";
@@ -527,11 +568,11 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
527
568
  return (valueIsField ? valsOneAndTwoOnly.map((v) => wrapFieldName(v)) : valsOneAndTwoOnly.every((v) => require_utils.shouldRenderAsNumber(v, parseNumbers)) ? valsOneAndTwoOnly.map((v) => require_utils.parseNumber(v, { parseNumbers: "strict" })) : valsOneAndTwoOnly.map((v) => wrapAndEscape(v))).join(` ${translations?.betweenAnd ?? translations?.and ?? "and"} `);
528
569
  }
529
570
  case "contains":
530
- case "doesnotcontain": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value), quoteValue("%")) : quoteValue(`%${escapeValue(value)}%`);
571
+ case "doesnotcontain": return valueIsField ? require_utils.wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`%${escapeValue(value)}%`);
531
572
  case "beginswith":
532
- case "doesnotbeginwith": return valueIsField ? concat(wrapFieldName(value), quoteValue("%")) : quoteValue(`${escapeValue(value)}%`);
573
+ case "doesnotbeginwith": return valueIsField ? require_utils.wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`${escapeValue(value)}%`);
533
574
  case "endswith":
534
- case "doesnotendwith": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value)) : quoteValue(`%${escapeValue(value)}`);
575
+ case "doesnotendwith": return valueIsField ? require_utils.wrapLikeFragment(wrapFieldName(value), operatorLowerCase, likeOpts) : quoteValue(`%${escapeValue(value)}`);
535
576
  }
536
577
  if (typeof value === "boolean") return value ? "TRUE" : "FALSE";
537
578
  return valueIsField ? wrapFieldName(value) : require_utils.shouldRenderAsNumber(value, parseNumbers) ? `${require_utils.trimIfString(value)}` : `${wrapAndEscape(value)}`;
@@ -564,7 +605,7 @@ const defaultRuleGroupProcessorCypher = (ruleGroup, options) => {
564
605
  precedingCombinator = cypherCombinatorMap[rule];
565
606
  continue;
566
607
  }
567
- if (require_objectUtils.isRuleGroup(rule)) {
608
+ if (require_isRuleGroup.isRuleGroup(rule)) {
568
609
  const processedGroup = processRuleGroup(rule);
569
610
  if (processedGroup) {
570
611
  if (!firstRule && precedingCombinator) {
@@ -594,7 +635,7 @@ const defaultRuleGroupProcessorCypher = (ruleGroup, options) => {
594
635
  processedRules.push(processedRule);
595
636
  }
596
637
  }
597
- const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${cypherCombinatorMap[rg.combinator]} ` : " ");
638
+ const expression = processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${cypherCombinatorMap[rg.combinator]} ` : " ");
598
639
  const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "NOT " : ""}(`, ")"] : ["", ""];
599
640
  return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
600
641
  };
@@ -621,7 +662,7 @@ const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns
621
662
  const processRuleGroup = (rg, _outermost) => {
622
663
  if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return;
623
664
  const processedRules = rg.rules.map((rule) => {
624
- if (require_objectUtils.isRuleGroup(rule)) return processRuleGroup(rule);
665
+ if (require_isRuleGroup.isRuleGroup(rule)) return processRuleGroup(rule);
625
666
  const [validationResult, fieldValidator] = validateRule(rule);
626
667
  if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
627
668
  const fieldData = require_utils.getOption(fields, rule.field);
@@ -654,7 +695,7 @@ const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
654
695
  const processRuleGroup = (rg) => {
655
696
  if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return false;
656
697
  const processedRules = rg.rules.map((rule) => {
657
- if (require_objectUtils.isRuleGroup(rule)) return processRuleGroup(rule);
698
+ if (require_isRuleGroup.isRuleGroup(rule)) return processRuleGroup(rule);
658
699
  const [validationResult, fieldValidator] = validateRule(rule);
659
700
  if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return false;
660
701
  const fieldData = require_utils.getOption(fields, rule.field);
@@ -685,7 +726,7 @@ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
685
726
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
686
727
  const validateAndProcess = (rule) => {
687
728
  // v8 ignore next -- @preserve
688
- if (typeof rule === "string" || require_objectUtils.isRuleGroup(rule)) return void 0;
729
+ if (typeof rule === "string" || require_isRuleGroup.isRuleGroup(rule)) return void 0;
689
730
  const [validationResult, fieldValidator] = validateRule(rule);
690
731
  if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
691
732
  const fieldData = require_utils.getOption(fields, rule.field);
@@ -702,7 +743,7 @@ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
702
743
  const predicates = [];
703
744
  for (const rule of rg.rules) {
704
745
  if (typeof rule === "string") continue;
705
- if (require_objectUtils.isRuleGroup(rule)) {
746
+ if (require_isRuleGroup.isRuleGroup(rule)) {
706
747
  const nested = processNested(rule);
707
748
  if (nested) predicates.push(nested);
708
749
  continue;
@@ -720,7 +761,7 @@ const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
720
761
  const steps = [];
721
762
  for (const rule of ruleGroup.rules) {
722
763
  if (typeof rule === "string") continue;
723
- if (require_objectUtils.isRuleGroup(rule)) {
764
+ if (require_isRuleGroup.isRuleGroup(rule)) {
724
765
  const compound = processNested(rule);
725
766
  if (compound) steps.push(compound);
726
767
  continue;
@@ -750,7 +791,7 @@ const defaultRuleGroupProcessorJSONata = (ruleGroup, options) => {
750
791
  precedingCombinator = rule;
751
792
  continue;
752
793
  }
753
- if (require_objectUtils.isRuleGroup(rule)) {
794
+ if (require_isRuleGroup.isRuleGroup(rule)) {
754
795
  const processedGroup = processRuleGroup(rule);
755
796
  if (processedGroup) {
756
797
  if (!firstRule && precedingCombinator) {
@@ -780,7 +821,7 @@ const defaultRuleGroupProcessorJSONata = (ruleGroup, options) => {
780
821
  processedRules.push(processedRule);
781
822
  }
782
823
  }
783
- const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ");
824
+ const expression = processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ");
784
825
  const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "$not" : ""}(`, ")"] : ["", ""];
785
826
  return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
786
827
  };
@@ -799,7 +840,7 @@ const defaultRuleGroupProcessorJsonLogic = (ruleGroup, options) => {
799
840
  const processRuleGroup = (rg, _outermost) => {
800
841
  if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return false;
801
842
  const processedRules = rg.rules.map((rule) => {
802
- if (require_objectUtils.isRuleGroup(rule)) return processRuleGroup(rule);
843
+ if (require_isRuleGroup.isRuleGroup(rule)) return processRuleGroup(rule);
803
844
  const [validationResult, fieldValidator] = validateRule(rule);
804
845
  if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return false;
805
846
  const fieldData = require_utils.getOption(fields, rule.field);
@@ -827,7 +868,7 @@ const defaultRuleGroupProcessorLDAP = (ruleGroup, options) => {
827
868
  const processRuleGroup = (rg, outermost) => {
828
869
  if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
829
870
  const rules = rg.rules.map((rule) => {
830
- if (require_objectUtils.isRuleGroup(rule)) return processRuleGroup(rule);
871
+ if (require_isRuleGroup.isRuleGroup(rule)) return processRuleGroup(rule);
831
872
  const [validationResult, fieldValidator] = validateRule(rule);
832
873
  if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return "";
833
874
  const fieldData = require_utils.getOption(fields, rule.field);
@@ -859,10 +900,10 @@ const defaultRuleGroupProcessorMongoDB = (ruleGroup, options, meta) => {
859
900
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
860
901
  const processRuleGroup = (rg, outermost) => {
861
902
  if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
862
- const combinator = `"$${require_objectUtils.lc(rg.combinator)}"`;
903
+ const combinator = `"$${require_isRuleGroup.lc(rg.combinator)}"`;
863
904
  let hasChildRules = false;
864
905
  const expressions = rg.rules.map((rule) => {
865
- if (require_objectUtils.isRuleGroup(rule)) {
906
+ if (require_isRuleGroup.isRuleGroup(rule)) {
866
907
  const processedRuleGroup = processRuleGroup(rule);
867
908
  if (processedRuleGroup) {
868
909
  hasChildRules = true;
@@ -896,7 +937,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
896
937
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, translations, validateRule, validationMap } = options;
897
938
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
898
939
  if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
899
- const rg2 = require_objectUtils.isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && require_objectUtils.lc(r) === "xor") ? require_convertQuery.convertFromIC(rg) : rg;
940
+ const rg2 = require_isRuleGroup.isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && require_isRuleGroup.lc(r) === "xor") ? require_convertQuery.convertFromIC(rg) : rg;
900
941
  const processedRules = [];
901
942
  let precedingCombinator = "";
902
943
  let firstRule = true;
@@ -905,7 +946,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
905
946
  precedingCombinator = `${translations.ruleSeparator ?? ", "}${translations[rule] ?? rule} `;
906
947
  continue;
907
948
  }
908
- if (require_objectUtils.isRuleGroup(rule)) {
949
+ if (require_isRuleGroup.isRuleGroup(rule)) {
909
950
  const processedGroup = processRuleGroup(rule, rg2.rules.length === 1 && !(rg2.not || /^xor$/i.test(rg2.combinator ?? "")));
910
951
  // v8 ignore else
911
952
  if (processedGroup) {
@@ -938,14 +979,14 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
938
979
  }
939
980
  }
940
981
  if (processedRules.length === 0) return fallbackExpression;
941
- const isXOR = require_objectUtils.lc(rg2.combinator ?? "") === "xor";
982
+ const isXOR = require_isRuleGroup.lc(rg2.combinator ?? "") === "xor";
942
983
  const combinator = isXOR ? rg2.combinator.slice(1) : rg2.combinator;
943
984
  const mustWrap = rg2.not || !outermostOrLonelyInGroup || isXOR && processedRules.length > 1;
944
985
  const [prefixTL, suffixTL] = ["groupPrefix", "groupSuffix"].map((key) => rg2.not ? isXOR ? require_utils.getNLTranslataion(key, translations, ["not", "xor"]) : require_utils.getNLTranslataion(key, translations, ["not"]) : isXOR ? require_utils.getNLTranslataion(key, translations, ["xor"]) : require_utils.getNLTranslataion(key, translations));
945
986
  const prefix = mustWrap ? `${prefixTL} (`.trim() : "";
946
987
  const suffix = mustWrap ? `) ${suffixTL}`.trim() : "";
947
988
  const sep = translations.ruleSeparator ?? ", ";
948
- return `${prefix}${processedRules.join(require_objectUtils.isRuleGroupType(rg2) ? `${sep}${translations[combinator] ?? combinator} ` : "")}${suffix}`;
989
+ return `${prefix}${processedRules.join(require_isRuleGroup.isRuleGroupType(rg2) ? `${sep}${translations[combinator] ?? combinator} ` : "")}${suffix}`;
949
990
  };
950
991
  return processRuleGroup(ruleGroup, true);
951
992
  };
@@ -981,12 +1022,12 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
981
1022
  fieldParamNames,
982
1023
  fieldData
983
1024
  }, { processedParams: params });
984
- if (!require_objectUtils.isPojo(processedRule)) return "";
1025
+ if (!require_isRuleGroup.isPojo(processedRule)) return "";
985
1026
  const { sql, params: customParams } = processedRule;
986
1027
  if (typeof sql !== "string" || !sql) return "";
987
1028
  // v8 ignore else
988
1029
  if (format === "parameterized" && Array.isArray(customParams)) params.push(...customParams);
989
- else if (format === "parameterized_named" && require_objectUtils.isPojo(customParams)) {
1030
+ else if (format === "parameterized_named" && require_isRuleGroup.isPojo(customParams)) {
990
1031
  Object.assign(paramsNamed, customParams);
991
1032
  for (const p of Object.keys(customParams)) fieldParams.get(rule.field)?.add(p);
992
1033
  }
@@ -1002,7 +1043,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
1002
1043
  precedingCombinator = rule;
1003
1044
  continue;
1004
1045
  }
1005
- if (require_objectUtils.isRuleGroup(rule)) {
1046
+ if (require_isRuleGroup.isRuleGroup(rule)) {
1006
1047
  const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
1007
1048
  // v8 ignore else
1008
1049
  if (processedGroup) {
@@ -1026,7 +1067,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
1026
1067
  }
1027
1068
  }
1028
1069
  if (processedRules.length === 0) return fallbackExpression;
1029
- return `${rg.not ? "NOT " : ""}(${processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ")})`;
1070
+ return `${rg.not ? "NOT " : ""}(${processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ")})`;
1030
1071
  };
1031
1072
  if (parameterized) return {
1032
1073
  sql: processRuleGroup(ruleGroup, true),
@@ -1057,7 +1098,7 @@ const defaultRuleGroupProcessorPrisma = (ruleGroup, options) => {
1057
1098
  const combinator = rg.combinator.toUpperCase();
1058
1099
  let hasChildRules = false;
1059
1100
  const expressions = rg.rules.map((rule) => {
1060
- if (require_objectUtils.isRuleGroup(rule)) {
1101
+ if (require_isRuleGroup.isRuleGroup(rule)) {
1061
1102
  const processedRuleGroup = processRuleGroup(rule);
1062
1103
  if (processedRuleGroup) {
1063
1104
  hasChildRules = true;
@@ -1096,7 +1137,7 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
1096
1137
  const combinator = rg.combinator.toUpperCase();
1097
1138
  let hasChildRules = false;
1098
1139
  const expressions = rg.rules.map((rule) => {
1099
- if (require_objectUtils.isRuleGroup(rule)) {
1140
+ if (require_isRuleGroup.isRuleGroup(rule)) {
1100
1141
  const processedRuleGroup = processRuleGroup(rule);
1101
1142
  if (processedRuleGroup) {
1102
1143
  hasChildRules = true;
@@ -1114,7 +1155,7 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
1114
1155
  });
1115
1156
  }).filter(Boolean);
1116
1157
  if (expressions.length === 0) return void 0;
1117
- const result = expressions.length === 1 && !hasChildRules ? expressions[0] : { [require_objectUtils.lc(combinator) === "or" ? Op.or : Op.and]: expressions };
1158
+ const result = expressions.length === 1 && !hasChildRules ? expressions[0] : { [require_isRuleGroup.lc(combinator) === "or" ? Op.or : Op.and]: expressions };
1118
1159
  return rg.not ? { [Op.not]: result } : result;
1119
1160
  };
1120
1161
  return processRuleGroup(require_convertQuery.convertFromIC(ruleGroup), true);
@@ -1140,7 +1181,7 @@ const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
1140
1181
  precedingCombinator = require_utils.celCombinatorMap[rule];
1141
1182
  continue;
1142
1183
  }
1143
- if (require_objectUtils.isRuleGroup(rule)) {
1184
+ if (require_isRuleGroup.isRuleGroup(rule)) {
1144
1185
  const processedGroup = processRuleGroup(rule);
1145
1186
  if (processedGroup) {
1146
1187
  if (!firstRule && precedingCombinator) {
@@ -1170,7 +1211,7 @@ const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
1170
1211
  processedRules.push(processedRule);
1171
1212
  }
1172
1213
  }
1173
- const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${require_utils.celCombinatorMap[rg.combinator]} ` : " ");
1214
+ const expression = processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${require_utils.celCombinatorMap[rg.combinator]} ` : " ");
1174
1215
  const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
1175
1216
  return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
1176
1217
  };
@@ -1195,7 +1236,7 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
1195
1236
  precedingCombinator = rule;
1196
1237
  continue;
1197
1238
  }
1198
- if (require_objectUtils.isRuleGroup(rule)) {
1239
+ if (require_isRuleGroup.isRuleGroup(rule)) {
1199
1240
  const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
1200
1241
  // v8 ignore else
1201
1242
  if (processedGroup) {
@@ -1228,7 +1269,7 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
1228
1269
  }
1229
1270
  }
1230
1271
  if (processedRules.length === 0) return fallbackExpression;
1231
- return `${rg.not ? "NOT " : ""}(${processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ")})`;
1272
+ return `${rg.not ? "NOT " : ""}(${processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ")})`;
1232
1273
  };
1233
1274
  return processRuleGroup(ruleGroup, true);
1234
1275
  };
@@ -1256,7 +1297,7 @@ const defaultRuleGroupProcessorTanStackDB = (ruleGroup, options) => (refs) => {
1256
1297
  const processRuleGroup = (rg) => {
1257
1298
  if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return;
1258
1299
  const processedRules = rg.rules.map((rule) => {
1259
- if (require_objectUtils.isRuleGroup(rule)) return processRuleGroup(rule);
1300
+ if (require_isRuleGroup.isRuleGroup(rule)) return processRuleGroup(rule);
1260
1301
  const [validationResult, fieldValidator] = validateRule(rule);
1261
1302
  if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
1262
1303
  const fieldData = require_utils.getOption(fields, rule.field);
@@ -1310,7 +1351,7 @@ const checkValueTypeMismatch = (value, inputType) => {
1310
1351
  if (numericInputTypes.has(inputType)) {
1311
1352
  const v = typeof value === "string" ? value.trim() : value;
1312
1353
  if (typeof v === "number" || typeof v === "bigint") return void 0;
1313
- if (typeof v === "string" && require_objectUtils.numericRegex.test(v)) return void 0;
1354
+ if (typeof v === "string" && require_isRuleGroup.numericRegex.test(v)) return void 0;
1314
1355
  return "VALUE_TYPE_MISMATCH";
1315
1356
  }
1316
1357
  if (inputType === "date") {
@@ -1426,7 +1467,7 @@ const defaultRuleGroupProcessorDiagnostics = (ruleGroup, options) => {
1426
1467
  continue;
1427
1468
  }
1428
1469
  const childPath = [...path, ruleIndex];
1429
- if (require_objectUtils.isRuleGroup(rule)) {
1470
+ if (require_isRuleGroup.isRuleGroup(rule)) {
1430
1471
  const annotatedGroup = processRuleGroup(rule, childPath);
1431
1472
  if (!annotatedGroup.valid) allChildrenValid = false;
1432
1473
  annotatedRules.push(annotatedGroup);
@@ -1463,7 +1504,7 @@ const defaultRuleGroupProcessorDiagnostics = (ruleGroup, options) => {
1463
1504
  const groupValid = groupSelfValid && allChildrenValid;
1464
1505
  if (groupValid) stats.validGroups++;
1465
1506
  else stats.invalidGroups++;
1466
- if (require_objectUtils.isRuleGroupType(rg)) return {
1507
+ if (require_isRuleGroup.isRuleGroupType(rg)) return {
1467
1508
  ...rg,
1468
1509
  valid: groupValid,
1469
1510
  ...groupReasons ? { reasons: groupReasons } : null,
@@ -1665,7 +1706,7 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
1665
1706
  const { between, eq, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, notBetween, notInArray, notLike, sql } = drizzleOperators;
1666
1707
  const { field, operator, value, valueSource } = rule;
1667
1708
  const column = useRawFields && /^[a-z_][a-z0-9_.]*$/i.test(field) ? sql.raw(field) : columns[field];
1668
- const operatorLC = require_objectUtils.lc(operator);
1709
+ const operatorLC = require_isRuleGroup.lc(operator);
1669
1710
  const valueIsField = valueSource === "field";
1670
1711
  const asFieldOrValue = (v) => valueIsField ? columns[v] : v;
1671
1712
  const maybeParseNumber = (v) => {
@@ -1779,7 +1820,7 @@ const valueRenderer = (v, parseNumbers) => typeof v === "boolean" ? v : require_
1779
1820
  const defaultRuleProcessorElasticSearch = (rule, options = {}) => {
1780
1821
  const { field, operator, value, valueSource } = rule;
1781
1822
  const { parseNumbers, preserveValueOrder } = options;
1782
- const operatorLC = require_objectUtils.lc(operator);
1823
+ const operatorLC = require_isRuleGroup.lc(operator);
1783
1824
  const matchEval = require_utils.processMatchMode(rule);
1784
1825
  if (matchEval === false) return false;
1785
1826
  else if (matchEval) {
@@ -2004,7 +2045,7 @@ const defaultRuleProcessorJSONata = (rule, options = {}) => {
2004
2045
  }
2005
2046
  }
2006
2047
  }
2007
- const operatorLC = require_objectUtils.lc(operator);
2048
+ const operatorLC = require_isRuleGroup.lc(operator);
2008
2049
  switch (operatorLC) {
2009
2050
  case "<":
2010
2051
  case "<=":
@@ -2028,7 +2069,7 @@ const defaultRuleProcessorJSONata = (rule, options = {}) => {
2028
2069
  case "between":
2029
2070
  case "notbetween": {
2030
2071
  const valueAsArray = require_utils.toArray(value);
2031
- if (valueAsArray.length < 2 || require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[0]) || require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[1])) return "";
2072
+ if (valueAsArray.length < 2 || require_isRuleGroup.nullOrUndefinedOrEmpty(valueAsArray[0]) || require_isRuleGroup.nullOrUndefinedOrEmpty(valueAsArray[1])) return "";
2032
2073
  const [first, second] = valueAsArray;
2033
2074
  const shouldParseNumbers = !(parseNumbers === false);
2034
2075
  const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
@@ -2070,13 +2111,13 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
2070
2111
  switch (mode) {
2071
2112
  case "all":
2072
2113
  case "none":
2073
- case "some": return { [mode]: [{ var: field }, value.rules.length === 1 && !require_objectUtils.isRuleGroup(value.rules[0]) ? defaultRuleProcessorJsonLogic(value.rules[0], options) : defaultRuleGroupProcessorJsonLogic(value, options)] };
2114
+ case "some": return { [mode]: [{ var: field }, value.rules.length === 1 && !require_isRuleGroup.isRuleGroup(value.rules[0]) ? defaultRuleProcessorJsonLogic(value.rules[0], options) : defaultRuleGroupProcessorJsonLogic(value, options)] };
2074
2115
  case "atleast":
2075
2116
  case "atmost":
2076
2117
  case "exactly": {
2077
2118
  const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "==";
2078
2119
  const filteredCount = { reduce: [
2079
- { filter: [{ var: field }, value.rules.length === 1 && !require_objectUtils.isRuleGroup(value.rules[0]) ? defaultRuleProcessorJsonLogic(value.rules[0], options) : defaultRuleGroupProcessorJsonLogic(value, options)] },
2120
+ { filter: [{ var: field }, value.rules.length === 1 && !require_isRuleGroup.isRuleGroup(value.rules[0]) ? defaultRuleProcessorJsonLogic(value.rules[0], options) : defaultRuleGroupProcessorJsonLogic(value, options)] },
2080
2121
  { "+": [1, { var: "accumulator" }] },
2081
2122
  0
2082
2123
  ] };
@@ -2092,7 +2133,7 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
2092
2133
  }
2093
2134
  }
2094
2135
  }
2095
- const operatorLC = require_objectUtils.lc(operator);
2136
+ const operatorLC = require_isRuleGroup.lc(operator);
2096
2137
  switch (operatorLC) {
2097
2138
  case "<":
2098
2139
  case "<=":
@@ -2103,7 +2144,10 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
2103
2144
  case "null":
2104
2145
  case "notnull": return { [`${operatorLC === "notnull" ? "!" : "="}=`]: [fieldObject, null] };
2105
2146
  case "in":
2106
- case "notin": return negateIfNotOp(operatorLC, { in: [fieldObject, require_utils.toArray(value).map((v) => fieldOrNumberRenderer(v))] });
2147
+ case "notin": {
2148
+ const valueAsArray = require_utils.toArray(value).map((v) => fieldOrNumberRenderer(v));
2149
+ return negateIfNotOp(operatorLC, { in: [fieldObject, valueAsArray] });
2150
+ }
2107
2151
  case "between":
2108
2152
  case "notbetween": {
2109
2153
  const valueAsArray = require_utils.toArray(value);
@@ -2134,11 +2178,20 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
2134
2178
  return false;
2135
2179
  }
2136
2180
  case "contains":
2137
- case "doesnotcontain": return negateIfNotOp(operatorLC, { in: [fieldOrNumberRenderer(value), fieldObject] });
2181
+ case "doesnotcontain": {
2182
+ const jsonRule = { in: [fieldOrNumberRenderer(value), fieldObject] };
2183
+ return negateIfNotOp(operatorLC, jsonRule);
2184
+ }
2138
2185
  case "beginswith":
2139
- case "doesnotbeginwith": return negateIfNotOp(operatorLC, { startsWith: [fieldObject, fieldOrNumberRenderer(value)] });
2186
+ case "doesnotbeginwith": {
2187
+ const jsonRule = { startsWith: [fieldObject, fieldOrNumberRenderer(value)] };
2188
+ return negateIfNotOp(operatorLC, jsonRule);
2189
+ }
2140
2190
  case "endswith":
2141
- case "doesnotendwith": return negateIfNotOp(operatorLC, { endsWith: [fieldObject, fieldOrNumberRenderer(value)] });
2191
+ case "doesnotendwith": {
2192
+ const jsonRule = { endsWith: [fieldObject, fieldOrNumberRenderer(value)] };
2193
+ return negateIfNotOp(operatorLC, jsonRule);
2194
+ }
2142
2195
  }
2143
2196
  return false;
2144
2197
  };
@@ -2154,8 +2207,8 @@ const ldapEscape = (s) => `${require_utils.trimIfString(s)}`.replaceAll(/[()&|=<
2154
2207
  const defaultRuleProcessorLDAP = (rule, options = {}) => {
2155
2208
  const { field, operator, value, valueSource } = rule;
2156
2209
  const { preserveValueOrder } = options;
2157
- const operatorLC = require_objectUtils.lc(operator);
2158
- if (valueSource === "field" || require_objectUtils.nullOrUndefinedOrEmpty(value) && operatorLC !== "null" && operatorLC !== "notnull" || require_utils.processMatchMode(rule)) return "";
2210
+ const operatorLC = require_isRuleGroup.lc(operator);
2211
+ if (valueSource === "field" || require_isRuleGroup.nullOrUndefinedOrEmpty(value) && operatorLC !== "null" && operatorLC !== "notnull" || require_utils.processMatchMode(rule)) return "";
2159
2212
  switch (operatorLC) {
2160
2213
  case "=":
2161
2214
  case "!=": return negateIf(`(${field}=${ldapEscape(value)})`, operatorLC === "!=");
@@ -2172,11 +2225,14 @@ const defaultRuleProcessorLDAP = (rule, options = {}) => {
2172
2225
  case "null":
2173
2226
  case "notnull": return negateIf(`(${field}=*)`, operatorLC === "notnull");
2174
2227
  case "in":
2175
- case "notin": return negateIf(`(|${require_utils.toArray(value).map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
2228
+ case "notin": {
2229
+ const valueAsArray = require_utils.toArray(value);
2230
+ return negateIf(`(|${valueAsArray.map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
2231
+ }
2176
2232
  case "between":
2177
2233
  case "notbetween": {
2178
2234
  const valueAsArray = require_utils.toArray(value);
2179
- if (valueAsArray.length < 2 || require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[0]) || require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[1])) return "";
2235
+ if (valueAsArray.length < 2 || require_isRuleGroup.nullOrUndefinedOrEmpty(valueAsArray[0]) || require_isRuleGroup.nullOrUndefinedOrEmpty(valueAsArray[1])) return "";
2180
2236
  const [first, second] = valueAsArray;
2181
2237
  const firstNum = require_utils.shouldRenderAsNumber(first, true) ? require_utils.parseNumber(first, { parseNumbers: true }) : NaN;
2182
2238
  const secondNum = require_utils.shouldRenderAsNumber(second, true) ? require_utils.parseNumber(second, { parseNumbers: true }) : NaN;
@@ -2204,7 +2260,7 @@ const escapeStringValueQuotes = (v, quoteChar, escapeQuotes) => escapeQuotes &&
2204
2260
  const defaultValueProcessorNL = (rule, opts = {}) => {
2205
2261
  const { escapeQuotes, fields, parseNumbers, quoteFieldNamesWith, quoteValuesWith, fieldIdentifierSeparator, translations } = opts;
2206
2262
  const valueIsField = rule.valueSource === "field";
2207
- const operatorLowerCase = require_objectUtils.lc(rule.operator);
2263
+ const operatorLowerCase = require_isRuleGroup.lc(rule.operator);
2208
2264
  const quoteChar = quoteValuesWith || "'";
2209
2265
  const quoteValue = (v) => `${quoteChar}${v}${quoteChar}`;
2210
2266
  const escapeValue = (v) => escapeStringValueQuotes(v, quoteChar, escapeQuotes);
@@ -2284,9 +2340,9 @@ const defaultOperatorProcessorNL = (rule, opts = {}) => {
2284
2340
  // v8 ignore next
2285
2341
  const { getOperators = defaultGetOperators, operatorMap: operatorMapParam = defaultExportOperatorMap } = opts;
2286
2342
  const mergedOperatorMap = new Map(Object.entries(defaultExportOperatorMap));
2287
- for (const [key, value] of Object.entries(operatorMapParam)) mergedOperatorMap.set(require_objectUtils.lc(key), value);
2343
+ for (const [key, value] of Object.entries(operatorMapParam)) mergedOperatorMap.set(require_isRuleGroup.lc(key), value);
2288
2344
  const operatorMap = Object.fromEntries(mergedOperatorMap);
2289
- const operatorLC = require_objectUtils.lc(operator);
2345
+ const operatorLC = require_isRuleGroup.lc(operator);
2290
2346
  var normalizedOperator = operator;
2291
2347
  const hasSingleValue = require_utils.toArray(rule.value).length === 1;
2292
2348
  if (operatorLC === "in" && hasSingleValue) normalizedOperator = "=";
@@ -2300,7 +2356,7 @@ const defaultOperatorProcessorNL = (rule, opts = {}) => {
2300
2356
  value: normalizedOperator,
2301
2357
  label: normalizedOperator
2302
2358
  };
2303
- const operatorTL = operatorMap[operatorNL] ?? operatorMap[require_objectUtils.lc(operatorNL)] ?? [label, label];
2359
+ const operatorTL = operatorMap[operatorNL] ?? operatorMap[require_isRuleGroup.lc(operatorNL)] ?? [label, label];
2304
2360
  return typeof operatorTL === "string" ? operatorTL : operatorTL[valueSource === "field" ? 1 : 0];
2305
2361
  };
2306
2362
  /**
@@ -2345,7 +2401,7 @@ const defaultRuleProcessorNL = (rule, opts) => {
2345
2401
  quoteValuesWith,
2346
2402
  concatOperator
2347
2403
  });
2348
- const operatorLC = require_objectUtils.lc(operator);
2404
+ const operatorLC = require_isRuleGroup.lc(operator);
2349
2405
  if ((operatorLC === "in" || operatorLC === "notin" || operatorLC === "between" || operatorLC === "notbetween") && !value) return "";
2350
2406
  const wordOrderMap = {
2351
2407
  S: processedField,
@@ -2368,7 +2424,7 @@ const defaultRuleProcessorNL = (rule, opts) => {
2368
2424
  *
2369
2425
  * @group Export
2370
2426
  */
2371
- const defaultOperatorProcessorSQL = (rule) => require_objectUtils.lc(require_utils.mapSQLOperator(rule.operator));
2427
+ const defaultOperatorProcessorSQL = (rule) => require_isRuleGroup.lc(require_utils.mapSQLOperator(rule.operator));
2372
2428
  /**
2373
2429
  * Default rule processor used by {@link formatQuery} for "sql" format.
2374
2430
  *
@@ -2411,7 +2467,7 @@ const defaultRuleProcessorSQL = (rule, opts = {}) => {
2411
2467
  concatOperator
2412
2468
  });
2413
2469
  const operator = operatorProcessor(rule, opts);
2414
- const operatorLowerCase = require_objectUtils.lc(operator);
2470
+ const operatorLowerCase = require_isRuleGroup.lc(operator);
2415
2471
  if ((operatorLowerCase === "in" || operatorLowerCase === "not in" || operatorLowerCase === "between" || operatorLowerCase === "not between") && !value) return "";
2416
2472
  return `${ruleField} ${operator} ${value}`.trim();
2417
2473
  };
@@ -2479,11 +2535,26 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
2479
2535
  format
2480
2536
  });
2481
2537
  const sqlOperator = operatorProcessor(rule, opts);
2482
- const sqlOperatorLowerCase = require_objectUtils.lc(sqlOperator);
2538
+ const sqlOperatorLowerCase = require_isRuleGroup.lc(sqlOperator);
2483
2539
  const [qPre, qPost] = quoteFieldNamesWith;
2484
2540
  if ((sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in" || sqlOperatorLowerCase === "between" || sqlOperatorLowerCase === "not between") && !value) return finalize("");
2485
2541
  else if (sqlOperatorLowerCase === "is null" || sqlOperatorLowerCase === "is not null") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator}`);
2486
- else if (rule.valueSource === "field") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${value}`.trim());
2542
+ else if (rule.valueSource === "parameter") {
2543
+ const registerParam = (v) => {
2544
+ const ref = require_utils.withParamPrefix(v, paramPrefix);
2545
+ if (!parameterized) paramsNamed[paramsKeepPrefix ? ref : require_utils.stripParamPrefix(v, paramPrefix)] = null;
2546
+ return ref;
2547
+ };
2548
+ if (sqlOperatorLowerCase === "between" || sqlOperatorLowerCase === "not between") {
2549
+ const [first, second] = require_utils.toArray(rule.value, { retainEmptyStrings: true }).slice(0, 2);
2550
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${registerParam(first)} and ${registerParam(second)}`.trim());
2551
+ }
2552
+ if (sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in") {
2553
+ const splitValue = require_utils.toArray(rule.value);
2554
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} (${splitValue.map((v) => registerParam(v)).join(", ")})`);
2555
+ }
2556
+ return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${require_utils.wrapLikeFragment(registerParam(rule.value), require_isRuleGroup.lc(rule.operator), { concatOperator })}`.trim());
2557
+ } else if (rule.valueSource === "field") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator} ${value}`.trim());
2487
2558
  else if (sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in") {
2488
2559
  const splitValue = require_utils.toArray(rule.value);
2489
2560
  if (parameterized) {
@@ -2533,7 +2604,7 @@ const defaultRuleProcessorPrisma = (rule, options = {}) => {
2533
2604
  // v8 ignore next
2534
2605
  const { parseNumbers, preserveValueOrder } = options;
2535
2606
  if (valueSource === "field" || require_utils.processMatchMode(rule)) return void 0;
2536
- const operatorLC = require_objectUtils.lc(operator);
2607
+ const operatorLC = require_isRuleGroup.lc(operator);
2537
2608
  switch (operatorLC) {
2538
2609
  case "=": return { [field]: processNumber(value, value, parseNumbers) };
2539
2610
  case "!=":
@@ -2593,7 +2664,7 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
2593
2664
  if (require_utils.processMatchMode(rule)) return void 0;
2594
2665
  const { field, operator, value, valueSource } = rule;
2595
2666
  const valueIsField = valueSource === "field";
2596
- const operatorLC = require_objectUtils.lc(operator);
2667
+ const operatorLC = require_isRuleGroup.lc(operator);
2597
2668
  if (!Op || valueIsField && (!col || !fn && [
2598
2669
  "contains",
2599
2670
  "doesnotcontain",
@@ -2675,7 +2746,9 @@ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
2675
2746
  if (typeof v === "bigint") return String(v);
2676
2747
  if (valueIsField) return sparqlVar(require_utils.trimIfString(v));
2677
2748
  if (typeof v === "number" || require_utils.shouldRenderAsNumber(v, parseNumbers)) return require_utils.trimIfString(v);
2749
+ /* v8 ignore start -- @preserve */
2678
2750
  const s = typeof v === "string" ? v : JSON.stringify(v) ?? "";
2751
+ /* v8 ignore stop -- @preserve */
2679
2752
  if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
2680
2753
  return `"${escapeDoubleQuotes(s, escapeQuotes)}"`;
2681
2754
  };
@@ -2743,7 +2816,7 @@ const defaultRuleProcessorTanStackDB = (rule, _options) => {
2743
2816
  };
2744
2817
  const { field, operator, value, valueSource } = rule;
2745
2818
  const column = resolveField(field);
2746
- const operatorLC = require_objectUtils.lc(operator);
2819
+ const operatorLC = require_isRuleGroup.lc(operator);
2747
2820
  const valueIsField = valueSource === "field";
2748
2821
  const asFieldOrValue = (v) => valueIsField ? resolveField(v) : v;
2749
2822
  const maybeParseNumber = (v) => {
@@ -2942,14 +3015,14 @@ const sqlFormats = /* @__PURE__ */ new Set([
2942
3015
  "sequelize"
2943
3016
  ]);
2944
3017
  function formatQuery(ruleGroup, optionParam = {}) {
2945
- const options = typeof optionParam === "string" ? { format: require_objectUtils.lc(optionParam) } : optionParam;
3018
+ const options = typeof optionParam === "string" ? { format: require_isRuleGroup.lc(optionParam) } : optionParam;
2946
3019
  const optObj = {
2947
3020
  ...defaultFormatQueryOptions,
2948
3021
  ...!options.format || sqlFormats.has(options.format) ? sqlDialectPresets[options.preset ?? "ansi"] ?? null : null,
2949
3022
  ...options,
2950
3023
  ...!options.format && (Object.keys(sqlDialectPresets).includes(options.preset ?? "") ? { format: "sql" } : null)
2951
3024
  };
2952
- const format = require_objectUtils.lc(optObj.format);
3025
+ const format = require_isRuleGroup.lc(optObj.format);
2953
3026
  const { fallbackExpression: fallbackExpression_option, getOperators: getOperators_option, operatorProcessor: operatorProcessor_option, parseNumbers, quoteFieldNamesWith: quoteFieldNamesWith_option, ruleGroupProcessor: ruleGroupProcessor_option, ruleProcessor: ruleProcessor_option, validator, valueProcessor: valueProcessor_option, context } = optObj;
2954
3027
  const getParseNumberBoolean = (inputType) => {
2955
3028
  return typeof require_utils.getParseNumberMethod({
@@ -2998,6 +3071,10 @@ function formatQuery(ruleGroup, optionParam = {}) {
2998
3071
  if (typeof field.validator === "function") fieldValidator = field.validator;
2999
3072
  }
3000
3073
  }
3074
+ if (rule.valueSource === "parameter" && typeof optObj.getParameters === "function") {
3075
+ const fieldData = require_utils.getOption(fields, rule.field);
3076
+ if (!new Set(require_utils.toFlatOptionArray(require_utils.toFullOptionList(optObj.getParameters(rule.field, rule.operator, { fieldData }))).map((p) => require_utils.stripParamPrefix(p.value, optObj.paramPrefix))).has(require_utils.stripParamPrefix(rule.value, optObj.paramPrefix))) validationResult = false;
3077
+ }
3001
3078
  return [validationResult, fieldValidator];
3002
3079
  };
3003
3080
  const finalOptions = {
@@ -3156,9 +3233,11 @@ exports.defaultValueProcessorNL = defaultValueProcessorNL;
3156
3233
  exports.defaultValueProcessorSpELByRule = defaultValueProcessorSpELByRule;
3157
3234
  exports.formatQuery = formatQuery;
3158
3235
  exports.formatQueryOptionPresets = formatQueryOptionPresets;
3236
+ exports.getLikeWildcards = require_utils.getLikeWildcards;
3159
3237
  exports.getNLTranslataion = require_utils.getNLTranslataion;
3160
3238
  exports.getQuoteFieldNamesWithArray = require_utils.getQuoteFieldNamesWithArray;
3161
3239
  exports.getQuotedFieldName = require_utils.getQuotedFieldName;
3240
+ exports.getSQLConcat = require_utils.getSQLConcat;
3162
3241
  exports.isValidValue = require_utils.isValidValue;
3163
3242
  exports.isValueProcessorLegacy = require_utils.isValueProcessorLegacy;
3164
3243
  exports.jsonLogicAdditionalOperators = require_utils.jsonLogicAdditionalOperators;
@@ -3173,5 +3252,8 @@ exports.processMatchMode = require_utils.processMatchMode;
3173
3252
  exports.shouldRenderAsNumber = require_utils.shouldRenderAsNumber;
3174
3253
  exports.sparqlVar = sparqlVar;
3175
3254
  exports.sqlDialectPresets = sqlDialectPresets;
3255
+ exports.stripParamPrefix = require_utils.stripParamPrefix;
3256
+ exports.withParamPrefix = require_utils.withParamPrefix;
3257
+ exports.wrapLikeFragment = require_utils.wrapLikeFragment;
3176
3258
 
3177
3259
  //# sourceMappingURL=formatQuery.js.map