@react-querybuilder/core 8.17.0 → 8.18.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 (56) hide show
  1. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +36 -3
  2. package/dist/cjs/react-querybuilder_core.cjs.development.js +14 -9
  3. package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
  4. package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +36 -3
  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/formatQuery.d.mts +3 -1
  8. package/dist/formatQuery.d.ts +3 -1
  9. package/dist/formatQuery.js +10 -8
  10. package/dist/formatQuery.js.map +1 -1
  11. package/dist/formatQuery.mjs +10 -8
  12. package/dist/formatQuery.mjs.map +1 -1
  13. package/dist/{import-CSHMjlid.d.ts → import-Qs1-kgv5.d.ts} +2 -2
  14. package/dist/{import-BQ5xaW6i.d.mts → import-ShTj5IdB.d.mts} +2 -2
  15. package/dist/{index-CREDWM32.d.ts → index-DlVg-QXo.d.mts} +32 -3
  16. package/dist/{index-CREDWM32.d.mts → index-DlVg-QXo.d.ts} +32 -3
  17. package/dist/parseCEL.d.mts +7 -7
  18. package/dist/parseCEL.d.ts +7 -7
  19. package/dist/parseCEL.js +3 -3
  20. package/dist/parseCEL.js.map +1 -1
  21. package/dist/parseCEL.mjs +3 -3
  22. package/dist/parseCEL.mjs.map +1 -1
  23. package/dist/parseCypher.d.mts +1 -1
  24. package/dist/parseCypher.d.ts +1 -1
  25. package/dist/parseGremlin.d.mts +1 -1
  26. package/dist/parseGremlin.d.ts +1 -1
  27. package/dist/parseJSONata.d.mts +2 -2
  28. package/dist/parseJSONata.d.ts +2 -2
  29. package/dist/parseJsonLogic.d.mts +2 -2
  30. package/dist/parseJsonLogic.d.ts +2 -2
  31. package/dist/parseJsonLogic.js +7 -7
  32. package/dist/parseJsonLogic.js.map +1 -1
  33. package/dist/parseJsonLogic.mjs +7 -7
  34. package/dist/parseJsonLogic.mjs.map +1 -1
  35. package/dist/parseMongoDB.d.mts +2 -2
  36. package/dist/parseMongoDB.d.ts +2 -2
  37. package/dist/parseSPARQL.d.mts +1 -1
  38. package/dist/parseSPARQL.d.ts +1 -1
  39. package/dist/parseSQL.d.mts +2 -2
  40. package/dist/parseSQL.d.ts +2 -2
  41. package/dist/parseSpEL.d.mts +2 -2
  42. package/dist/parseSpEL.d.ts +2 -2
  43. package/dist/react-querybuilder_core.d.mts +36 -3
  44. package/dist/react-querybuilder_core.legacy-esm.d.ts +36 -3
  45. package/dist/react-querybuilder_core.legacy-esm.js +14 -9
  46. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  47. package/dist/react-querybuilder_core.mjs +14 -9
  48. package/dist/react-querybuilder_core.mjs.map +1 -1
  49. package/dist/react-querybuilder_core.production.d.mts +36 -3
  50. package/dist/react-querybuilder_core.production.mjs +1 -1
  51. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  52. package/dist/transformQuery.d.mts +1 -1
  53. package/dist/transformQuery.d.ts +1 -1
  54. package/dist/utils-01WaTGBL.mjs.map +1 -1
  55. package/dist/utils-ZlKseh1X.js.map +1 -1
  56. package/package.json +6 -6
@@ -88,7 +88,10 @@ const defaultTranslations = {
88
88
  placeholderGroupLabel: defaultPlaceholderValueGroupLabel
89
89
  },
90
90
  matchMode: { title: "Match mode" },
91
- matchThreshold: { title: "Match threshold" },
91
+ matchThreshold: {
92
+ title: "Match threshold",
93
+ placeholderName: "#"
94
+ },
92
95
  value: { title: "Value" },
93
96
  removeRule: {
94
97
  label: "⨯",
@@ -1512,7 +1515,7 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
1512
1515
  const totalCount = `double(${field}.size())`;
1513
1516
  const filteredCount = `${field}.filter(${arrayElementAlias}, ${nestedArrayFilter}).size()`;
1514
1517
  const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "==";
1515
- if (threshold > 0 && threshold < 1) return `${filteredCount} ${op} (${totalCount} * ${threshold})`;
1518
+ if (threshold > 0 && threshold < 1) return `double(${filteredCount}) ${op} (${totalCount} * ${threshold})`;
1516
1519
  return `${filteredCount} ${op} ${threshold}`;
1517
1520
  }
1518
1521
  }
@@ -2013,7 +2016,7 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
2013
2016
  if (!columns || !drizzleOperators) return void 0;
2014
2017
  const { between, eq, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, notBetween, notInArray, notLike, sql } = drizzleOperators;
2015
2018
  const { field, operator, value, valueSource } = rule;
2016
- const column = useRawFields && /[a-z][a-z0-9]*/i.test(field) ? sql.raw(field) : columns[field];
2019
+ const column = useRawFields && /^[a-z_][a-z0-9_.]*$/i.test(field) ? sql.raw(field) : columns[field];
2017
2020
  const operatorLC = lc(operator);
2018
2021
  const valueIsField = valueSource === "field";
2019
2022
  const asFieldOrValue = (v) => valueIsField ? columns[v] : v;
@@ -2046,7 +2049,7 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
2046
2049
  case "atmost":
2047
2050
  case "exactly": {
2048
2051
  const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
2049
- return threshold > 0 && threshold < 1 ? sql`(select count(*) / array_length(${column}, 1) from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)}) ${sql.raw(`${op} ${threshold}`)}` : sql`(select count(*) from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)}) ${sql.raw(`${op} ${threshold}`)}`;
2052
+ return threshold > 0 && threshold < 1 ? sql`(select count(*)::float / array_length(${column}, 1) from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)}) ${sql.raw(`${op} ${threshold}`)}` : sql`(select count(*) from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)}) ${sql.raw(`${op} ${threshold}`)}`;
2050
2053
  }
2051
2054
  }
2052
2055
  }
@@ -2394,7 +2397,7 @@ const defaultRuleGroupProcessorMongoDB = (ruleGroup, options, meta) => {
2394
2397
  const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
2395
2398
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, translations, validateRule, validationMap } = options;
2396
2399
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
2397
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
2400
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
2398
2401
  const rg2 = isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && lc(r) === "xor") ? convertFromIC(rg) : rg;
2399
2402
  const processedRules = [];
2400
2403
  let precedingCombinator = "";
@@ -2492,7 +2495,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
2492
2495
  return sql;
2493
2496
  };
2494
2497
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
2495
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
2498
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
2496
2499
  const processedRules = [];
2497
2500
  let precedingCombinator = "";
2498
2501
  let firstRule = true;
@@ -2685,7 +2688,7 @@ const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
2685
2688
  const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
2686
2689
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
2687
2690
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
2688
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
2691
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
2689
2692
  const processedRules = [];
2690
2693
  let precedingCombinator = "";
2691
2694
  let firstRule = true;
@@ -3889,7 +3892,7 @@ const defaultRuleProcessorSQL = (rule, opts = {}) => {
3889
3892
  case "atmost":
3890
3893
  case "exactly": {
3891
3894
  const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
3892
- return `(select count(*)${threshold > 0 && threshold < 1 ? ` / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedArrayFilter}) ${op} ${threshold}`;
3895
+ return `(select count(*)${threshold > 0 && threshold < 1 ? `::float / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedArrayFilter}) ${op} ${threshold}`;
3893
3896
  }
3894
3897
  }
3895
3898
  }
@@ -3956,7 +3959,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
3956
3959
  case "atmost":
3957
3960
  case "exactly": {
3958
3961
  const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
3959
- return finalize(`(select count(*)${threshold > 0 && threshold < 1 ? ` / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedSQL}) ${op} ${threshold}`);
3962
+ return finalize(`(select count(*)${threshold > 0 && threshold < 1 ? `::float / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedSQL}) ${op} ${threshold}`);
3960
3963
  }
3961
3964
  }
3962
3965
  }
@@ -4458,6 +4461,8 @@ const generateValueProcessor = (vpbr) => (field, operator, value, valueSource) =
4458
4461
  /**
4459
4462
  * Default value processor used by {@link formatQuery} for "sql" format.
4460
4463
  *
4464
+ * @deprecated Prefer {@link defaultValueProcessorByRule}.
4465
+ *
4461
4466
  * @group Export
4462
4467
  */
4463
4468
  const defaultValueProcessor = generateValueProcessor(defaultValueProcessorByRule);