@react-querybuilder/core 8.16.0 → 8.16.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 (74) hide show
  1. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +7 -2
  2. package/dist/cjs/react-querybuilder_core.cjs.development.js +27 -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 +7 -2
  5. package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
  6. package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
  7. package/dist/convertQuery-BeJJH9BI.mjs.map +1 -1
  8. package/dist/convertQuery-Lx2HQa0m.js.map +1 -1
  9. package/dist/formatQuery.d.mts +7 -2
  10. package/dist/formatQuery.d.ts +7 -2
  11. package/dist/formatQuery.js +27 -9
  12. package/dist/formatQuery.js.map +1 -1
  13. package/dist/formatQuery.mjs +27 -10
  14. package/dist/formatQuery.mjs.map +1 -1
  15. package/dist/{import-BHlzBLM_.d.mts → import-BC_bAKQ8.d.mts} +2 -2
  16. package/dist/{import-C6imciDf.d.ts → import-D1KnXhkQ.d.ts} +2 -2
  17. package/dist/{index-D-Iej37L.d.mts → index-AAZg4Uh1.d.mts} +2 -2
  18. package/dist/{index-Cjapnb-H.d.ts → index-Ds06V0zO.d.ts} +2 -2
  19. package/dist/objectUtils-Bzug_QfX.js.map +1 -1
  20. package/dist/objectUtils-D96eEEzL.mjs.map +1 -1
  21. package/dist/parseCEL.d.mts +2 -2
  22. package/dist/parseCEL.d.ts +2 -2
  23. package/dist/parseCEL.js.map +1 -1
  24. package/dist/parseCEL.mjs.map +1 -1
  25. package/dist/parseCypher.d.mts +1 -1
  26. package/dist/parseCypher.d.ts +1 -1
  27. package/dist/parseCypher.js.map +1 -1
  28. package/dist/parseCypher.mjs.map +1 -1
  29. package/dist/parseGremlin.d.mts +1 -1
  30. package/dist/parseGremlin.d.ts +1 -1
  31. package/dist/parseGremlin.js.map +1 -1
  32. package/dist/parseGremlin.mjs.map +1 -1
  33. package/dist/parseJSONata.d.mts +2 -2
  34. package/dist/parseJSONata.d.ts +2 -2
  35. package/dist/parseJSONata.js.map +1 -1
  36. package/dist/parseJSONata.mjs.map +1 -1
  37. package/dist/parseJsonLogic.d.mts +2 -2
  38. package/dist/parseJsonLogic.d.ts +2 -2
  39. package/dist/parseJsonLogic.js.map +1 -1
  40. package/dist/parseJsonLogic.mjs.map +1 -1
  41. package/dist/parseMongoDB.d.mts +2 -2
  42. package/dist/parseMongoDB.d.ts +2 -2
  43. package/dist/parseMongoDB.js.map +1 -1
  44. package/dist/parseMongoDB.mjs.map +1 -1
  45. package/dist/parseSPARQL.d.mts +1 -1
  46. package/dist/parseSPARQL.d.ts +1 -1
  47. package/dist/parseSPARQL.js.map +1 -1
  48. package/dist/parseSPARQL.mjs.map +1 -1
  49. package/dist/parseSQL.d.mts +2 -2
  50. package/dist/parseSQL.d.ts +2 -2
  51. package/dist/parseSQL.js.map +1 -1
  52. package/dist/parseSQL.mjs.map +1 -1
  53. package/dist/parseSpEL.d.mts +2 -2
  54. package/dist/parseSpEL.d.ts +2 -2
  55. package/dist/parseSpEL.js.map +1 -1
  56. package/dist/parseSpEL.mjs.map +1 -1
  57. package/dist/prepareQueryObjects-BoG5Rt8z.js.map +1 -1
  58. package/dist/prepareQueryObjects-uA10ZpZX.mjs.map +1 -1
  59. package/dist/react-querybuilder_core.d.mts +7 -2
  60. package/dist/react-querybuilder_core.legacy-esm.d.ts +7 -2
  61. package/dist/react-querybuilder_core.legacy-esm.js +39 -22
  62. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  63. package/dist/react-querybuilder_core.mjs +27 -10
  64. package/dist/react-querybuilder_core.mjs.map +1 -1
  65. package/dist/react-querybuilder_core.production.d.mts +7 -2
  66. package/dist/react-querybuilder_core.production.mjs +1 -1
  67. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  68. package/dist/transformQuery.d.mts +1 -1
  69. package/dist/transformQuery.d.ts +1 -1
  70. package/dist/transformQuery.js.map +1 -1
  71. package/dist/transformQuery.mjs.map +1 -1
  72. package/dist/utils-ChLG90DP.mjs.map +1 -1
  73. package/dist/utils-Qwkq2Q0F.js.map +1 -1
  74. package/package.json +9 -9
@@ -523,7 +523,7 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
523
523
  valsOneAndTwoOnly[0] = secondNum;
524
524
  valsOneAndTwoOnly[1] = firstNum;
525
525
  }
526
- 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?.and ?? "and"} `);
526
+ 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
527
  }
528
528
  case "contains":
529
529
  case "doesnotcontain": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value), quoteValue("%")) : quoteValue(`%${escapeValue(value)}%`);
@@ -998,7 +998,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
998
998
  let firstRule = true;
999
999
  for (const rule of rg2.rules) {
1000
1000
  if (typeof rule === "string") {
1001
- precedingCombinator = `, ${translations[rule] ?? rule} `;
1001
+ precedingCombinator = `${translations.ruleSeparator ?? ", "}${translations[rule] ?? rule} `;
1002
1002
  continue;
1003
1003
  }
1004
1004
  if (isRuleGroup(rule)) {
@@ -1040,7 +1040,8 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
1040
1040
  const [prefixTL, suffixTL] = ["groupPrefix", "groupSuffix"].map((key) => rg2.not ? isXOR ? getNLTranslataion(key, translations, ["not", "xor"]) : getNLTranslataion(key, translations, ["not"]) : isXOR ? getNLTranslataion(key, translations, ["xor"]) : getNLTranslataion(key, translations));
1041
1041
  const prefix = mustWrap ? `${prefixTL} (`.trim() : "";
1042
1042
  const suffix = mustWrap ? `) ${suffixTL}`.trim() : "";
1043
- return `${prefix}${processedRules.join(isRuleGroupType(rg2) ? `, ${translations[combinator] ?? combinator} ` : "")}${suffix}`;
1043
+ const sep = translations.ruleSeparator ?? ", ";
1044
+ return `${prefix}${processedRules.join(isRuleGroupType(rg2) ? `${sep}${translations[combinator] ?? combinator} ` : "")}${suffix}`;
1044
1045
  };
1045
1046
  return processRuleGroup(ruleGroup, true);
1046
1047
  };
@@ -2167,6 +2168,8 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
2167
2168
  const orTL = t.or ?? "or";
2168
2169
  const trueTL = t.true ?? "true";
2169
2170
  const falseTL = t.false ?? "false";
2171
+ const listSep = t.listSeparator ?? ", ";
2172
+ const useOxfordComma = !t.listSeparator;
2170
2173
  switch (operatorLowerCase) {
2171
2174
  case "null":
2172
2175
  case "notnull": return "";
@@ -2186,7 +2189,8 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
2186
2189
  if (valueAsArray.length === 0) return "";
2187
2190
  const valStringArray = valueAsArray.map((v) => valueIsField ? wrapFieldName(getOption(fields ?? [], v)?.label ?? v) : shouldRenderAsNumber(v, parseNumbers) ? `${trimIfString(v)}` : `${wrapAndEscape(v)}`);
2188
2191
  if (valStringArray.length === 1) return valStringArray[0];
2189
- return `(${`${valStringArray.slice(0, -1).join(", ")}${valStringArray.length > 2 ? "," : ""} ${orTL} ${valStringArray.at(-1)}`})`;
2192
+ const oxfordComma = useOxfordComma && valStringArray.length > 2 ? "," : "";
2193
+ return `(${`${valStringArray.slice(0, -1).join(listSep)}${oxfordComma} ${orTL} ${valStringArray.at(-1)}`})`;
2190
2194
  }
2191
2195
  }
2192
2196
  if (typeof rule.value === "boolean") return rule.value ? trueTL : falseTL;
@@ -2299,7 +2303,14 @@ const defaultRuleProcessorNL = (rule, opts) => {
2299
2303
  V: operatorProcessor(rule, opts),
2300
2304
  O: value
2301
2305
  };
2302
- return normalizeConstituentWordOrder(wordOrder).map((term) => `${wordOrderMap[term]}`).join(" ").trim();
2306
+ const translations = opts?.translations ?? {};
2307
+ const suffixMap = {
2308
+ S: translations.afterSubject ?? " ",
2309
+ V: translations.afterVerb ?? " ",
2310
+ O: translations.afterObject ?? " "
2311
+ };
2312
+ const wordOrderTuple = normalizeConstituentWordOrder(wordOrder).filter((term) => wordOrderMap[term] !== "");
2313
+ return wordOrderTuple.map((term, i) => `${wordOrderMap[term]}${i < wordOrderTuple.length - 1 ? suffixMap[term] : ""}`).join("").trim();
2303
2314
  };
2304
2315
  //#endregion
2305
2316
  //#region src/utils/formatQuery/defaultRuleProcessorSQL.ts
@@ -2593,6 +2604,11 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
2593
2604
  //#endregion
2594
2605
  //#region src/utils/formatQuery/defaultRuleProcessorSPARQL.ts
2595
2606
  const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
2607
+ /** Auto-prefix a SPARQL variable name with `?` unless it's already prefixed, a URI, or a prefixed name.
2608
+ *
2609
+ * @group Export
2610
+ */
2611
+ const sparqlVar = (name) => /^[?<]/.test(name) || name.includes(":") ? name : `?${name}`;
2596
2612
  /**
2597
2613
  * Default rule processor used by {@link formatQuery} for "sparql" format.
2598
2614
  *
@@ -2600,14 +2616,15 @@ const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escape
2600
2616
  */
2601
2617
  const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
2602
2618
  const { escapeQuotes, parseNumbers } = opts;
2603
- const { field, operator, value, valueSource } = rule;
2619
+ const { field: rawField, operator, value, valueSource } = rule;
2604
2620
  const valueIsField = valueSource === "field";
2605
2621
  const operatorTL = operator.toLowerCase();
2622
+ const field = sparqlVar(rawField);
2606
2623
  const fmtVal = (v) => {
2607
2624
  if (v === null || v === void 0) return "\"\"";
2608
2625
  if (typeof v === "boolean") return `"${v}"^^xsd:boolean`;
2609
2626
  if (typeof v === "bigint") return String(v);
2610
- if (valueIsField) return trimIfString(v);
2627
+ if (valueIsField) return sparqlVar(trimIfString(v));
2611
2628
  if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
2612
2629
  const s = typeof v === "string" ? v : JSON.stringify(v) ?? "";
2613
2630
  if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
@@ -2632,12 +2649,12 @@ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
2632
2649
  case "in": {
2633
2650
  const items = toArray(value).map(fmtVal);
2634
2651
  if (!items.length) return "";
2635
- return items.map((item) => `${field} = ${item}`).join(" || ");
2652
+ return `${field} IN (${items.join(", ")})`;
2636
2653
  }
2637
2654
  case "notin": {
2638
2655
  const items = toArray(value).map(fmtVal);
2639
2656
  if (!items.length) return "";
2640
- return items.map((item) => `${field} != ${item}`).join(" && ");
2657
+ return `${field} NOT IN (${items.join(", ")})`;
2641
2658
  }
2642
2659
  case "between": {
2643
2660
  const arr = toArray(value);
@@ -2938,6 +2955,6 @@ const defaultValueProcessorMongoDBByRule = defaultRuleProcessorMongoDB;
2938
2955
  */
2939
2956
  const defaultValueProcessorSpELByRule = defaultRuleProcessorSpEL;
2940
2957
  //#endregion
2941
- 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, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultSpELValueProcessor, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, formatQuery, formatQueryOptionPresets, getNLTranslataion, getQuoteFieldNamesWithArray, getQuotedFieldName, isValidValue, isValueProcessorLegacy, jsonLogicAdditionalOperators, mapSQLOperator, mongoDbFallback, mongoOperators, normalizeConstituentWordOrder, numerifyValues, prismaFallback, prismaOperators, processMatchMode, shouldRenderAsNumber, sqlDialectPresets };
2958
+ 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, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultSpELValueProcessor, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, formatQuery, formatQueryOptionPresets, getNLTranslataion, getQuoteFieldNamesWithArray, getQuotedFieldName, isValidValue, isValueProcessorLegacy, jsonLogicAdditionalOperators, mapSQLOperator, mongoDbFallback, mongoOperators, normalizeConstituentWordOrder, numerifyValues, prismaFallback, prismaOperators, processMatchMode, shouldRenderAsNumber, sparqlVar, sqlDialectPresets };
2942
2959
 
2943
2960
  //# sourceMappingURL=formatQuery.mjs.map