@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
@@ -871,7 +871,36 @@ type Result = ApplyDefaultOptions<PathsOptions, DefaultPathsOptions, SpecifiedOp
871
871
  // Types of property 'leavesOnly' are incompatible. Type 'string' is not assignable to type 'boolean'.
872
872
  ```
873
873
  */
874
- type ApplyDefaultOptions<Options extends object, Defaults extends Simplify<Omit<Required<Options>, RequiredKeysOf<Options>> & Partial<Record<RequiredKeysOf<Options>, never>>>, SpecifiedOptions extends Options> = If<IsAny<SpecifiedOptions>, Defaults, If<IsNever<SpecifiedOptions>, Defaults, Simplify<Merge<Defaults, { [Key in keyof SpecifiedOptions as Key extends OptionalKeysOf<Options> ? undefined extends SpecifiedOptions[Key] ? never : Key : Key]: SpecifiedOptions[Key] }> & Required<Options>>>>;
874
+ type ApplyDefaultOptions<Options extends object, Defaults extends Simplify<Omit<Required<Options>, RequiredKeysOf<Options>> & Partial<Record<RequiredKeysOf<Options>, never>>>, SpecifiedOptions extends Options> = _ApplyDefaultOptions<Options, Defaults, SpecifiedOptions> extends infer Result extends Required<Options> // `extends Required<Options>` ensures that `ApplyDefaultOptions<SomeOption, ...>` is always assignable to `Required<SomeOption>`
875
+ ? Result : never;
876
+ type _ApplyDefaultOptions<Options, Defaults, SpecifiedOptions> = If<IsAny<SpecifiedOptions>, Defaults, If<IsNever<SpecifiedOptions>, Defaults, Merge<Defaults, { [Key in keyof SpecifiedOptions as undefined extends Required<Options>[Key & keyof Options] ? Key : undefined extends SpecifiedOptions[Key] ? never : Key]: SpecifiedOptions[Key] }>>>;
877
+ /**
878
+ Collapses literal types in a union into their corresponding primitive types, when possible. For example, `CollapseLiterals<'foo' | 'bar' | (string & {})>` returns `string`.
879
+
880
+ Note: This doesn't collapse literals within tagged types. For example, `CollapseLiterals<Tagged<'foo' | (string & {}), 'Tag'>>` returns `("foo" & Tag<"Tag", never>) | (string & Tag<"Tag", never>)` and not `string & Tag<"Tag", never>`.
881
+
882
+ Use-case: For collapsing unions created using {@link LiteralUnion}.
883
+
884
+ @example
885
+ ```
886
+ import type {LiteralUnion} from 'type-fest';
887
+
888
+ type A = CollapseLiterals<'foo' | 'bar' | (string & {})>;
889
+ //=> string
890
+
891
+ type B = CollapseLiterals<LiteralUnion<1 | 2 | 3, number>>;
892
+ //=> number
893
+
894
+ type C = CollapseLiterals<LiteralUnion<'onClick' | 'onChange', `on${string}`>>;
895
+ //=> `on${string}`
896
+
897
+ type D = CollapseLiterals<'click' | 'change' | (`on${string}` & {})>;
898
+ //=> 'click' | 'change' | `on${string}`
899
+
900
+ type E = CollapseLiterals<LiteralUnion<'foo' | 'bar', string> | null | undefined>;
901
+ //=> string | null | undefined
902
+ ```
903
+ */
875
904
  //#endregion
876
905
  //#region ../../node_modules/type-fest/source/except.d.ts
877
906
  /**
@@ -1119,7 +1148,7 @@ type SetArrayRequired<TArray extends UnknownArray, Keys, Counter extends any[] =
1119
1148
  : never; // Should never happen
1120
1149
  //#endregion
1121
1150
  //#region src/types/options.d.ts
1122
- type RequireAtLeastOne<ObjectType, KeysType extends keyof ObjectType> = { [Key in KeysType]-?: Required<Pick<ObjectType, Key>> & Partial<Pick<ObjectType, Exclude<KeysType, Key>>> }[KeysType] & Except<ObjectType, KeysType>;
1151
+ type RequireAtLeastOne<O, K extends keyof O> = { [P in K]-?: Required<Pick<O, P>> & Partial<Pick<O, Exclude<K, P>>> }[K] & Except<O, K>;
1123
1152
  type StringUnionToFlexibleOptionArray<Op extends string> = Array<Op extends unknown ? FlexibleOption<Op> : never>;
1124
1153
  type StringUnionToFullOptionArray<Op extends string> = Array<Op extends unknown ? FullOption<Op> : never>;
1125
1154
  /**
@@ -2607,7 +2636,9 @@ interface BaseTranslations<LabelType = string> {
2607
2636
  operators: BaseTranslationWithPlaceholders;
2608
2637
  values: BaseTranslationWithPlaceholders;
2609
2638
  matchMode: BaseTranslation;
2610
- matchThreshold: BaseTranslation;
2639
+ matchThreshold: BaseTranslation & {
2640
+ placeholderName?: string;
2641
+ };
2611
2642
  value: BaseTranslation;
2612
2643
  removeRule: BaseTranslationWithLabel<LabelType>;
2613
2644
  removeGroup: BaseTranslationWithLabel<LabelType>;
@@ -3868,6 +3899,8 @@ declare const bigIntJsonParseReviver: (_key: string, value: unknown) => unknown;
3868
3899
  /**
3869
3900
  * Default value processor used by {@link formatQuery} for "sql" format.
3870
3901
  *
3902
+ * @deprecated Prefer {@link defaultValueProcessorByRule}.
3903
+ *
3871
3904
  * @group Export
3872
3905
  */
3873
3906
  declare const defaultValueProcessor: ValueProcessorLegacy;
@@ -89,7 +89,10 @@ const defaultTranslations = {
89
89
  placeholderGroupLabel: defaultPlaceholderValueGroupLabel
90
90
  },
91
91
  matchMode: { title: "Match mode" },
92
- matchThreshold: { title: "Match threshold" },
92
+ matchThreshold: {
93
+ title: "Match threshold",
94
+ placeholderName: "#"
95
+ },
93
96
  value: { title: "Value" },
94
97
  removeRule: {
95
98
  label: "⨯",
@@ -1513,7 +1516,7 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
1513
1516
  const totalCount = `double(${field}.size())`;
1514
1517
  const filteredCount = `${field}.filter(${arrayElementAlias}, ${nestedArrayFilter}).size()`;
1515
1518
  const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "==";
1516
- if (threshold > 0 && threshold < 1) return `${filteredCount} ${op} (${totalCount} * ${threshold})`;
1519
+ if (threshold > 0 && threshold < 1) return `double(${filteredCount}) ${op} (${totalCount} * ${threshold})`;
1517
1520
  return `${filteredCount} ${op} ${threshold}`;
1518
1521
  }
1519
1522
  }
@@ -2014,7 +2017,7 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
2014
2017
  if (!columns || !drizzleOperators) return void 0;
2015
2018
  const { between, eq, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, notBetween, notInArray, notLike, sql } = drizzleOperators;
2016
2019
  const { field, operator, value, valueSource } = rule;
2017
- const column = useRawFields && /[a-z][a-z0-9]*/i.test(field) ? sql.raw(field) : columns[field];
2020
+ const column = useRawFields && /^[a-z_][a-z0-9_.]*$/i.test(field) ? sql.raw(field) : columns[field];
2018
2021
  const operatorLC = lc(operator);
2019
2022
  const valueIsField = valueSource === "field";
2020
2023
  const asFieldOrValue = (v) => valueIsField ? columns[v] : v;
@@ -2047,7 +2050,7 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
2047
2050
  case "atmost":
2048
2051
  case "exactly": {
2049
2052
  const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
2050
- 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}`)}`;
2053
+ 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}`)}`;
2051
2054
  }
2052
2055
  }
2053
2056
  }
@@ -2395,7 +2398,7 @@ const defaultRuleGroupProcessorMongoDB = (ruleGroup, options, meta) => {
2395
2398
  const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
2396
2399
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, translations, validateRule, validationMap } = options;
2397
2400
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
2398
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
2401
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
2399
2402
  const rg2 = isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && lc(r) === "xor") ? convertFromIC(rg) : rg;
2400
2403
  const processedRules = [];
2401
2404
  let precedingCombinator = "";
@@ -2493,7 +2496,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
2493
2496
  return sql;
2494
2497
  };
2495
2498
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
2496
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
2499
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
2497
2500
  const processedRules = [];
2498
2501
  let precedingCombinator = "";
2499
2502
  let firstRule = true;
@@ -2686,7 +2689,7 @@ const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
2686
2689
  const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
2687
2690
  const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
2688
2691
  const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
2689
- if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
2692
+ if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
2690
2693
  const processedRules = [];
2691
2694
  let precedingCombinator = "";
2692
2695
  let firstRule = true;
@@ -3890,7 +3893,7 @@ const defaultRuleProcessorSQL = (rule, opts = {}) => {
3890
3893
  case "atmost":
3891
3894
  case "exactly": {
3892
3895
  const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
3893
- return `(select count(*)${threshold > 0 && threshold < 1 ? ` / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedArrayFilter}) ${op} ${threshold}`;
3896
+ return `(select count(*)${threshold > 0 && threshold < 1 ? `::float / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedArrayFilter}) ${op} ${threshold}`;
3894
3897
  }
3895
3898
  }
3896
3899
  }
@@ -3957,7 +3960,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
3957
3960
  case "atmost":
3958
3961
  case "exactly": {
3959
3962
  const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
3960
- return finalize(`(select count(*)${threshold > 0 && threshold < 1 ? ` / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedSQL}) ${op} ${threshold}`);
3963
+ return finalize(`(select count(*)${threshold > 0 && threshold < 1 ? `::float / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedSQL}) ${op} ${threshold}`);
3961
3964
  }
3962
3965
  }
3963
3966
  }
@@ -4459,6 +4462,8 @@ const generateValueProcessor = (vpbr) => (field, operator, value, valueSource) =
4459
4462
  /**
4460
4463
  * Default value processor used by {@link formatQuery} for "sql" format.
4461
4464
  *
4465
+ * @deprecated Prefer {@link defaultValueProcessorByRule}.
4466
+ *
4462
4467
  * @group Export
4463
4468
  */
4464
4469
  const defaultValueProcessor = generateValueProcessor(defaultValueProcessorByRule);