@react-querybuilder/core 8.16.0 → 8.16.2
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.
- package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +43 -4
- package/dist/cjs/react-querybuilder_core.cjs.development.js +182 -18
- package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +43 -4
- package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
- package/dist/convertQuery-BeJJH9BI.mjs.map +1 -1
- package/dist/convertQuery-Lx2HQa0m.js.map +1 -1
- package/dist/formatQuery.d.mts +42 -3
- package/dist/formatQuery.d.ts +42 -3
- package/dist/formatQuery.js +182 -18
- package/dist/formatQuery.js.map +1 -1
- package/dist/formatQuery.mjs +180 -19
- package/dist/formatQuery.mjs.map +1 -1
- package/dist/{import-BHlzBLM_.d.mts → import-BXXgiPlr.d.mts} +2 -2
- package/dist/{import-C6imciDf.d.ts → import-DqzM2MBd.d.ts} +2 -2
- package/dist/{index-D-Iej37L.d.mts → index-CR-tk4Ci.d.mts} +3 -3
- package/dist/{index-Cjapnb-H.d.ts → index-NSVgGj45.d.ts} +3 -3
- package/dist/objectUtils-Bzug_QfX.js.map +1 -1
- package/dist/objectUtils-D96eEEzL.mjs.map +1 -1
- package/dist/parseCEL.d.mts +2 -2
- package/dist/parseCEL.d.ts +2 -2
- package/dist/parseCEL.js.map +1 -1
- package/dist/parseCEL.mjs.map +1 -1
- package/dist/parseCypher.d.mts +1 -1
- package/dist/parseCypher.d.ts +1 -1
- package/dist/parseCypher.js.map +1 -1
- package/dist/parseCypher.mjs.map +1 -1
- package/dist/parseGremlin.d.mts +1 -1
- package/dist/parseGremlin.d.ts +1 -1
- package/dist/parseGremlin.js.map +1 -1
- package/dist/parseGremlin.mjs.map +1 -1
- package/dist/parseJSONata.d.mts +2 -2
- package/dist/parseJSONata.d.ts +2 -2
- package/dist/parseJSONata.js.map +1 -1
- package/dist/parseJSONata.mjs.map +1 -1
- package/dist/parseJsonLogic.d.mts +2 -2
- package/dist/parseJsonLogic.d.ts +2 -2
- package/dist/parseJsonLogic.js.map +1 -1
- package/dist/parseJsonLogic.mjs.map +1 -1
- package/dist/parseMongoDB.d.mts +2 -2
- package/dist/parseMongoDB.d.ts +2 -2
- package/dist/parseMongoDB.js.map +1 -1
- package/dist/parseMongoDB.mjs.map +1 -1
- package/dist/parseSPARQL.d.mts +1 -1
- package/dist/parseSPARQL.d.ts +1 -1
- package/dist/parseSPARQL.js.map +1 -1
- package/dist/parseSPARQL.mjs.map +1 -1
- package/dist/parseSQL.d.mts +2 -2
- package/dist/parseSQL.d.ts +2 -2
- package/dist/parseSQL.js.map +1 -1
- package/dist/parseSQL.mjs.map +1 -1
- package/dist/parseSpEL.d.mts +2 -2
- package/dist/parseSpEL.d.ts +2 -2
- package/dist/parseSpEL.js.map +1 -1
- package/dist/parseSpEL.mjs.map +1 -1
- package/dist/prepareQueryObjects-BoG5Rt8z.js.map +1 -1
- package/dist/prepareQueryObjects-uA10ZpZX.mjs.map +1 -1
- package/dist/react-querybuilder_core.d.mts +43 -4
- package/dist/react-querybuilder_core.legacy-esm.d.ts +43 -4
- package/dist/react-querybuilder_core.legacy-esm.js +192 -31
- package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_core.mjs +180 -19
- package/dist/react-querybuilder_core.mjs.map +1 -1
- package/dist/react-querybuilder_core.production.d.mts +43 -4
- package/dist/react-querybuilder_core.production.mjs +1 -1
- package/dist/react-querybuilder_core.production.mjs.map +1 -1
- package/dist/transformQuery.d.mts +1 -1
- package/dist/transformQuery.d.ts +1 -1
- package/dist/transformQuery.js.map +1 -1
- package/dist/transformQuery.mjs.map +1 -1
- package/dist/utils-ChLG90DP.mjs.map +1 -1
- package/dist/utils-Qwkq2Q0F.js.map +1 -1
- package/package.json +19 -15
|
@@ -1922,7 +1922,7 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
|
|
|
1922
1922
|
valsOneAndTwoOnly[0] = secondNum;
|
|
1923
1923
|
valsOneAndTwoOnly[1] = firstNum;
|
|
1924
1924
|
}
|
|
1925
|
-
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"} `);
|
|
1925
|
+
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"} `);
|
|
1926
1926
|
}
|
|
1927
1927
|
case "contains":
|
|
1928
1928
|
case "doesnotcontain": return valueIsField ? concat(quoteValue("%"), wrapFieldName(value), quoteValue("%")) : quoteValue(`%${escapeValue(value)}%`);
|
|
@@ -2017,6 +2017,10 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
|
2017
2017
|
const operatorLC = lc(operator);
|
|
2018
2018
|
const valueIsField = valueSource === "field";
|
|
2019
2019
|
const asFieldOrValue = (v) => valueIsField ? columns[v] : v;
|
|
2020
|
+
const maybeParseNumber = (v) => {
|
|
2021
|
+
if (valueIsField || !parseNumbers) return asFieldOrValue(v);
|
|
2022
|
+
return shouldRenderAsNumber(v, true) ? parseNumber(v, { parseNumbers: true }) : v;
|
|
2023
|
+
};
|
|
2020
2024
|
if (!column) return void 0;
|
|
2021
2025
|
const matchEval = processMatchMode(rule);
|
|
2022
2026
|
if (matchEval === false) return;
|
|
@@ -2047,12 +2051,12 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
|
2047
2051
|
}
|
|
2048
2052
|
}
|
|
2049
2053
|
switch (operatorLC) {
|
|
2050
|
-
case "=": return eq(column,
|
|
2051
|
-
case "!=": return ne(column,
|
|
2052
|
-
case ">": return gt(column,
|
|
2053
|
-
case "<": return lt(column,
|
|
2054
|
-
case ">=": return gte(column,
|
|
2055
|
-
case "<=": return lte(column,
|
|
2054
|
+
case "=": return eq(column, maybeParseNumber(value));
|
|
2055
|
+
case "!=": return ne(column, maybeParseNumber(value));
|
|
2056
|
+
case ">": return gt(column, maybeParseNumber(value));
|
|
2057
|
+
case "<": return lt(column, maybeParseNumber(value));
|
|
2058
|
+
case ">=": return gte(column, maybeParseNumber(value));
|
|
2059
|
+
case "<=": return lte(column, maybeParseNumber(value));
|
|
2056
2060
|
case "beginswith":
|
|
2057
2061
|
case "doesnotbeginwith": return (operatorLC === "doesnotbeginwith" ? notLike : like)(column, valueIsField ? sql`${asFieldOrValue(value)} || '%'` : `${value}%`);
|
|
2058
2062
|
case "contains":
|
|
@@ -2063,7 +2067,7 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
|
2063
2067
|
case "notnull": return isNotNull(column);
|
|
2064
2068
|
case "in":
|
|
2065
2069
|
case "notin": {
|
|
2066
|
-
const valueAsArray = toArray(value).map((v) =>
|
|
2070
|
+
const valueAsArray = toArray(value).map((v) => maybeParseNumber(v));
|
|
2067
2071
|
return operatorLC === "notin" ? notInArray(column, valueAsArray) : inArray(column, valueAsArray);
|
|
2068
2072
|
}
|
|
2069
2073
|
case "between":
|
|
@@ -2397,7 +2401,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
2397
2401
|
let firstRule = true;
|
|
2398
2402
|
for (const rule of rg2.rules) {
|
|
2399
2403
|
if (typeof rule === "string") {
|
|
2400
|
-
precedingCombinator =
|
|
2404
|
+
precedingCombinator = `${translations.ruleSeparator ?? ", "}${translations[rule] ?? rule} `;
|
|
2401
2405
|
continue;
|
|
2402
2406
|
}
|
|
2403
2407
|
if (isRuleGroup(rule)) {
|
|
@@ -2439,7 +2443,8 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
2439
2443
|
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));
|
|
2440
2444
|
const prefix = mustWrap ? `${prefixTL} (`.trim() : "";
|
|
2441
2445
|
const suffix = mustWrap ? `) ${suffixTL}`.trim() : "";
|
|
2442
|
-
|
|
2446
|
+
const sep = translations.ruleSeparator ?? ", ";
|
|
2447
|
+
return `${prefix}${processedRules.join(isRuleGroupType(rg2) ? `${sep}${translations[combinator] ?? combinator} ` : "")}${suffix}`;
|
|
2443
2448
|
};
|
|
2444
2449
|
return processRuleGroup(ruleGroup, true);
|
|
2445
2450
|
};
|
|
@@ -2727,6 +2732,142 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
|
|
|
2727
2732
|
return processRuleGroup(ruleGroup, true);
|
|
2728
2733
|
};
|
|
2729
2734
|
//#endregion
|
|
2735
|
+
//#region src/utils/formatQuery/defaultRuleProcessorTanStackDB.ts
|
|
2736
|
+
/**
|
|
2737
|
+
* Default rule processor used by {@link formatQuery} for the "tanstack_db" format.
|
|
2738
|
+
*
|
|
2739
|
+
* @group Export
|
|
2740
|
+
*/
|
|
2741
|
+
const defaultRuleProcessorTanStackDB = (rule, _options) => {
|
|
2742
|
+
const { parseNumbers, preserveValueOrder, context = {} } = _options ?? ( /* v8 ignore start -- @preserve */ {});
|
|
2743
|
+
const ops = context.tanStackDbOperators;
|
|
2744
|
+
const refs = context._tanstackDbRefs;
|
|
2745
|
+
const primaryRef = context._tanstackDbPrimaryRef;
|
|
2746
|
+
if (!ops || !refs || !primaryRef) return void 0;
|
|
2747
|
+
const { and, eq, gt, gte, inArray, isNull, like, lt, lte, not } = ops;
|
|
2748
|
+
const resolveField = (fieldName) => {
|
|
2749
|
+
const dotIdx = fieldName.indexOf(".");
|
|
2750
|
+
if (dotIdx > 0) {
|
|
2751
|
+
const prefix = fieldName.slice(0, dotIdx);
|
|
2752
|
+
const rest = fieldName.slice(dotIdx + 1);
|
|
2753
|
+
if (refs[prefix]) return refs[prefix][rest];
|
|
2754
|
+
}
|
|
2755
|
+
return refs[primaryRef][fieldName];
|
|
2756
|
+
};
|
|
2757
|
+
const { field, operator, value, valueSource } = rule;
|
|
2758
|
+
const column = resolveField(field);
|
|
2759
|
+
const operatorLC = lc(operator);
|
|
2760
|
+
const valueIsField = valueSource === "field";
|
|
2761
|
+
const asFieldOrValue = (v) => valueIsField ? resolveField(v) : v;
|
|
2762
|
+
const maybeParseNumber = (v) => {
|
|
2763
|
+
if (valueIsField || !parseNumbers) return asFieldOrValue(v);
|
|
2764
|
+
return shouldRenderAsNumber(v, true) ? parseNumber(v, { parseNumbers: true }) : v;
|
|
2765
|
+
};
|
|
2766
|
+
switch (operatorLC) {
|
|
2767
|
+
case "=": return eq(column, maybeParseNumber(value));
|
|
2768
|
+
case "!=": return not(eq(column, maybeParseNumber(value)));
|
|
2769
|
+
case ">": return gt(column, maybeParseNumber(value));
|
|
2770
|
+
case "<": return lt(column, maybeParseNumber(value));
|
|
2771
|
+
case ">=": return gte(column, maybeParseNumber(value));
|
|
2772
|
+
case "<=": return lte(column, maybeParseNumber(value));
|
|
2773
|
+
case "beginswith":
|
|
2774
|
+
case "doesnotbeginwith": {
|
|
2775
|
+
const expr = like(column, valueIsField ? void 0 : `${value}%`);
|
|
2776
|
+
return operatorLC === "doesnotbeginwith" ? not(expr) : expr;
|
|
2777
|
+
}
|
|
2778
|
+
case "contains":
|
|
2779
|
+
case "doesnotcontain": {
|
|
2780
|
+
const expr = like(column, valueIsField ? void 0 : `%${value}%`);
|
|
2781
|
+
return operatorLC === "doesnotcontain" ? not(expr) : expr;
|
|
2782
|
+
}
|
|
2783
|
+
case "endswith":
|
|
2784
|
+
case "doesnotendwith": {
|
|
2785
|
+
const expr = like(column, valueIsField ? void 0 : `%${value}`);
|
|
2786
|
+
return operatorLC === "doesnotendwith" ? not(expr) : expr;
|
|
2787
|
+
}
|
|
2788
|
+
case "null": return isNull(column);
|
|
2789
|
+
case "notnull": return not(isNull(column));
|
|
2790
|
+
case "in":
|
|
2791
|
+
case "notin": {
|
|
2792
|
+
const expr = inArray(column, toArray(value).map((v) => maybeParseNumber(v)));
|
|
2793
|
+
return operatorLC === "notin" ? not(expr) : expr;
|
|
2794
|
+
}
|
|
2795
|
+
case "between":
|
|
2796
|
+
case "notbetween": {
|
|
2797
|
+
const valueAsArray = toArray(value);
|
|
2798
|
+
if (valueAsArray.length >= 2 && isValidValue(valueAsArray[0]) && isValidValue(valueAsArray[1])) {
|
|
2799
|
+
let [first, second] = valueAsArray;
|
|
2800
|
+
const shouldParseNumbers = !(parseNumbers === false);
|
|
2801
|
+
if (!valueIsField && shouldRenderAsNumber(first, shouldParseNumbers) && shouldRenderAsNumber(second, shouldParseNumbers)) {
|
|
2802
|
+
const firstNum = parseNumber(first, { parseNumbers: shouldParseNumbers });
|
|
2803
|
+
const secondNum = parseNumber(second, { parseNumbers: shouldParseNumbers });
|
|
2804
|
+
if (!preserveValueOrder && secondNum < firstNum) {
|
|
2805
|
+
const tempNum = secondNum;
|
|
2806
|
+
second = firstNum;
|
|
2807
|
+
first = tempNum;
|
|
2808
|
+
} else {
|
|
2809
|
+
first = firstNum;
|
|
2810
|
+
second = secondNum;
|
|
2811
|
+
}
|
|
2812
|
+
} else if (valueIsField) {
|
|
2813
|
+
first = asFieldOrValue(first);
|
|
2814
|
+
second = asFieldOrValue(second);
|
|
2815
|
+
}
|
|
2816
|
+
const expr = and(gte(column, first), lte(column, second));
|
|
2817
|
+
return operatorLC === "notbetween" ? not(expr) : expr;
|
|
2818
|
+
}
|
|
2819
|
+
return;
|
|
2820
|
+
}
|
|
2821
|
+
default: return;
|
|
2822
|
+
}
|
|
2823
|
+
};
|
|
2824
|
+
//#endregion
|
|
2825
|
+
//#region src/utils/formatQuery/defaultRuleGroupProcessorTanStackDB.ts
|
|
2826
|
+
/**
|
|
2827
|
+
* Default rule group processor used by {@link formatQuery} for the "tanstack_db" format.
|
|
2828
|
+
* Returns a `WhereCallback` suitable for TanStack DB's `.where()` method.
|
|
2829
|
+
*
|
|
2830
|
+
* @example
|
|
2831
|
+
* const where = formatQuery(query, { format: 'tanstack_db', context: { tanstackDb: tsdb } });
|
|
2832
|
+
* const results = useLiveQuery(q => q.from({ todo: todosCollection }).where(where));
|
|
2833
|
+
*
|
|
2834
|
+
* @group Export
|
|
2835
|
+
*/
|
|
2836
|
+
const defaultRuleGroupProcessorTanStackDB = (ruleGroup, options) => (refs) => {
|
|
2837
|
+
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap, context = {} } = options;
|
|
2838
|
+
const ops = context.tanStackDbOperators;
|
|
2839
|
+
if (!ops) return void 0;
|
|
2840
|
+
const { and, eq, not, or } = ops;
|
|
2841
|
+
const fallback = eq(1, 1);
|
|
2842
|
+
const refKeys = Object.keys(refs);
|
|
2843
|
+
/* v8 ignore next -- @preserve */
|
|
2844
|
+
if (refKeys.length === 0) return fallback;
|
|
2845
|
+
const ruleProcessor = defaultRuleProcessorTanStackDB;
|
|
2846
|
+
const processRuleGroup = (rg) => {
|
|
2847
|
+
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return;
|
|
2848
|
+
const processedRules = rg.rules.map((rule) => {
|
|
2849
|
+
if (isRuleGroup(rule)) return processRuleGroup(rule);
|
|
2850
|
+
const [validationResult, fieldValidator] = validateRule(rule);
|
|
2851
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
|
|
2852
|
+
const fieldData = getOption(fields, rule.field);
|
|
2853
|
+
return ruleProcessor(rule, {
|
|
2854
|
+
...options,
|
|
2855
|
+
parseNumbers: getParseNumberBoolean(fieldData?.inputType),
|
|
2856
|
+
fieldData,
|
|
2857
|
+
context: {
|
|
2858
|
+
...context,
|
|
2859
|
+
_tanstackDbRefs: refs,
|
|
2860
|
+
_tanstackDbPrimaryRef: refKeys[0]
|
|
2861
|
+
}
|
|
2862
|
+
});
|
|
2863
|
+
}).filter(Boolean);
|
|
2864
|
+
if (processedRules.length === 0) return fallback;
|
|
2865
|
+
const ruleGroupExpr = processedRules.length === 1 ? processedRules[0] : rg.combinator === "or" ? or(...processedRules) : and(...processedRules);
|
|
2866
|
+
return rg.not ? not(ruleGroupExpr) : ruleGroupExpr;
|
|
2867
|
+
};
|
|
2868
|
+
return processRuleGroup(convertFromIC(ruleGroup)) ?? fallback;
|
|
2869
|
+
};
|
|
2870
|
+
//#endregion
|
|
2730
2871
|
//#region src/utils/formatQuery/defaultRuleGroupProcessorDiagnostics.ts
|
|
2731
2872
|
const numericInputTypes = new Set([
|
|
2732
2873
|
"number",
|
|
@@ -3566,6 +3707,8 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
|
|
|
3566
3707
|
const orTL = t.or ?? "or";
|
|
3567
3708
|
const trueTL = t.true ?? "true";
|
|
3568
3709
|
const falseTL = t.false ?? "false";
|
|
3710
|
+
const listSep = t.listSeparator ?? ", ";
|
|
3711
|
+
const useOxfordComma = !t.listSeparator;
|
|
3569
3712
|
switch (operatorLowerCase) {
|
|
3570
3713
|
case "null":
|
|
3571
3714
|
case "notnull": return "";
|
|
@@ -3585,7 +3728,8 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
|
|
|
3585
3728
|
if (valueAsArray.length === 0) return "";
|
|
3586
3729
|
const valStringArray = valueAsArray.map((v) => valueIsField ? wrapFieldName(getOption(fields ?? [], v)?.label ?? v) : shouldRenderAsNumber(v, parseNumbers) ? `${trimIfString(v)}` : `${wrapAndEscape(v)}`);
|
|
3587
3730
|
if (valStringArray.length === 1) return valStringArray[0];
|
|
3588
|
-
|
|
3731
|
+
const oxfordComma = useOxfordComma && valStringArray.length > 2 ? "," : "";
|
|
3732
|
+
return `(${`${valStringArray.slice(0, -1).join(listSep)}${oxfordComma} ${orTL} ${valStringArray.at(-1)}`})`;
|
|
3589
3733
|
}
|
|
3590
3734
|
}
|
|
3591
3735
|
if (typeof rule.value === "boolean") return rule.value ? trueTL : falseTL;
|
|
@@ -3698,7 +3842,14 @@ const defaultRuleProcessorNL = (rule, opts) => {
|
|
|
3698
3842
|
V: operatorProcessor(rule, opts),
|
|
3699
3843
|
O: value
|
|
3700
3844
|
};
|
|
3701
|
-
|
|
3845
|
+
const translations = opts?.translations ?? {};
|
|
3846
|
+
const suffixMap = {
|
|
3847
|
+
S: translations.afterSubject ?? " ",
|
|
3848
|
+
V: translations.afterVerb ?? " ",
|
|
3849
|
+
O: translations.afterObject ?? " "
|
|
3850
|
+
};
|
|
3851
|
+
const wordOrderTuple = normalizeConstituentWordOrder(wordOrder).filter((term) => wordOrderMap[term] !== "");
|
|
3852
|
+
return wordOrderTuple.map((term, i) => `${wordOrderMap[term]}${i < wordOrderTuple.length - 1 ? suffixMap[term] : ""}`).join("").trim();
|
|
3702
3853
|
};
|
|
3703
3854
|
//#endregion
|
|
3704
3855
|
//#region src/utils/formatQuery/defaultRuleProcessorSQL.ts
|
|
@@ -3992,6 +4143,11 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
|
|
|
3992
4143
|
//#endregion
|
|
3993
4144
|
//#region src/utils/formatQuery/defaultRuleProcessorSPARQL.ts
|
|
3994
4145
|
const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
|
|
4146
|
+
/** Auto-prefix a SPARQL variable name with `?` unless it's already prefixed, a URI, or a prefixed name.
|
|
4147
|
+
*
|
|
4148
|
+
* @group Export
|
|
4149
|
+
*/
|
|
4150
|
+
const sparqlVar = (name) => /^[?<]/.test(name) || name.includes(":") ? name : `?${name}`;
|
|
3995
4151
|
/**
|
|
3996
4152
|
* Default rule processor used by {@link formatQuery} for "sparql" format.
|
|
3997
4153
|
*
|
|
@@ -3999,14 +4155,15 @@ const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escape
|
|
|
3999
4155
|
*/
|
|
4000
4156
|
const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
|
|
4001
4157
|
const { escapeQuotes, parseNumbers } = opts;
|
|
4002
|
-
const { field, operator, value, valueSource } = rule;
|
|
4158
|
+
const { field: rawField, operator, value, valueSource } = rule;
|
|
4003
4159
|
const valueIsField = valueSource === "field";
|
|
4004
4160
|
const operatorTL = operator.toLowerCase();
|
|
4161
|
+
const field = sparqlVar(rawField);
|
|
4005
4162
|
const fmtVal = (v) => {
|
|
4006
4163
|
if (v === null || v === void 0) return "\"\"";
|
|
4007
4164
|
if (typeof v === "boolean") return `"${v}"^^xsd:boolean`;
|
|
4008
4165
|
if (typeof v === "bigint") return String(v);
|
|
4009
|
-
if (valueIsField) return trimIfString(v);
|
|
4166
|
+
if (valueIsField) return sparqlVar(trimIfString(v));
|
|
4010
4167
|
if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
|
|
4011
4168
|
const s = typeof v === "string" ? v : JSON.stringify(v) ?? "";
|
|
4012
4169
|
if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
|
|
@@ -4031,12 +4188,12 @@ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
|
|
|
4031
4188
|
case "in": {
|
|
4032
4189
|
const items = toArray(value).map(fmtVal);
|
|
4033
4190
|
if (!items.length) return "";
|
|
4034
|
-
return
|
|
4191
|
+
return `${field} IN (${items.join(", ")})`;
|
|
4035
4192
|
}
|
|
4036
4193
|
case "notin": {
|
|
4037
4194
|
const items = toArray(value).map(fmtVal);
|
|
4038
4195
|
if (!items.length) return "";
|
|
4039
|
-
return
|
|
4196
|
+
return `${field} NOT IN (${items.join(", ")})`;
|
|
4040
4197
|
}
|
|
4041
4198
|
case "between": {
|
|
4042
4199
|
const arr = toArray(value);
|
|
@@ -4099,6 +4256,7 @@ const defaultRuleProcessors = {
|
|
|
4099
4256
|
sequelize: defaultRuleProcessorSequelize,
|
|
4100
4257
|
spel: defaultRuleProcessorSpEL,
|
|
4101
4258
|
sql: defaultRuleProcessorSQL,
|
|
4259
|
+
tanstack_db: defaultRuleProcessorTanStackDB,
|
|
4102
4260
|
cypher: defaultRuleProcessorCypher,
|
|
4103
4261
|
gql: defaultRuleProcessorCypher,
|
|
4104
4262
|
sparql: defaultRuleProcessorSPARQL,
|
|
@@ -4125,6 +4283,7 @@ const defaultOperatorProcessors = {
|
|
|
4125
4283
|
sequelize: defaultOperatorProcessor,
|
|
4126
4284
|
spel: defaultOperatorProcessor,
|
|
4127
4285
|
sql: defaultOperatorProcessorSQL,
|
|
4286
|
+
tanstack_db: defaultOperatorProcessor,
|
|
4128
4287
|
cypher: defaultOperatorProcessor,
|
|
4129
4288
|
gql: defaultOperatorProcessor,
|
|
4130
4289
|
sparql: defaultOperatorProcessor,
|
|
@@ -4171,7 +4330,8 @@ const valueProcessorCanActAsRuleProcessor = new Set([
|
|
|
4171
4330
|
"mongodb",
|
|
4172
4331
|
"prisma",
|
|
4173
4332
|
"sequelize",
|
|
4174
|
-
"spel"
|
|
4333
|
+
"spel",
|
|
4334
|
+
"tanstack_db"
|
|
4175
4335
|
]);
|
|
4176
4336
|
const sqlFormats = new Set([
|
|
4177
4337
|
"sql",
|
|
@@ -4217,7 +4377,7 @@ function formatQuery(ruleGroup, optionParam = {}) {
|
|
|
4217
4377
|
} : format === "parameterized_named" ? {
|
|
4218
4378
|
sql: fallbackExpression,
|
|
4219
4379
|
params: {}
|
|
4220
|
-
} : format === "mongodb" ? `{${fallbackExpression}}` : format === "mongodb_query" ? mongoDbFallback : format === "prisma" ? prismaFallback : format === "jsonlogic" ? false : format === "elasticsearch" ? {} : format === "drizzle" || format === "sequelize" ? void 0 : fallbackExpression;
|
|
4380
|
+
} : format === "mongodb" ? `{${fallbackExpression}}` : format === "mongodb_query" ? mongoDbFallback : format === "prisma" ? prismaFallback : format === "jsonlogic" ? false : format === "elasticsearch" ? {} : format === "drizzle" || format === "sequelize" || format === "tanstack_db" ? void 0 : fallbackExpression;
|
|
4221
4381
|
}
|
|
4222
4382
|
} else validationMap = validationResult;
|
|
4223
4383
|
}
|
|
@@ -4277,6 +4437,7 @@ function formatQuery(ruleGroup, optionParam = {}) {
|
|
|
4277
4437
|
case "ldap": return defaultRuleGroupProcessorLDAP(ruleGroup, finalOptions);
|
|
4278
4438
|
case "prisma": return defaultRuleGroupProcessorPrisma(ruleGroup, finalOptions);
|
|
4279
4439
|
case "drizzle": return defaultRuleGroupProcessorDrizzle(ruleGroup, finalOptions);
|
|
4440
|
+
case "tanstack_db": return defaultRuleGroupProcessorTanStackDB(ruleGroup, finalOptions);
|
|
4280
4441
|
case "sequelize": return defaultRuleGroupProcessorSequelize(ruleGroup, finalOptions);
|
|
4281
4442
|
case "cypher":
|
|
4282
4443
|
case "gql": return defaultRuleGroupProcessorCypher(ruleGroup, finalOptions);
|
|
@@ -4994,6 +5155,6 @@ const groupInPlace = (query, sourcePathOrID, targetPathOrID, options = {}) => {
|
|
|
4994
5155
|
return query;
|
|
4995
5156
|
};
|
|
4996
5157
|
//#endregion
|
|
4997
|
-
export { LogType, TestID, add, addInPlace, bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, clsx, convertFromIC, convertQuery, convertToIC, cypherCombinatorMap, defaultCELValueProcessor, defaultCombinatorLabelMap, defaultCombinators, defaultCombinatorsExtended, defaultControlClassnames, defaultExportOperatorMap, defaultJoinChar, defaultMatchModes, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorLabelMap, defaultOperatorNegationMap, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, defaultOperators, defaultPlaceholderFieldGroupLabel, defaultPlaceholderFieldLabel, defaultPlaceholderFieldName, defaultPlaceholderLabel, defaultPlaceholderName, defaultPlaceholderOperatorGroupLabel, defaultPlaceholderOperatorLabel, defaultPlaceholderOperatorName, defaultPlaceholderValueGroupLabel, defaultPlaceholderValueLabel, defaultPlaceholderValueName, 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, defaultTranslations, defaultValidator, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, filterFieldsByComparator, findID, findPath, formatQuery, formatQueryOptionPresets, generateAccessibleDescription, generateID, getCommonAncestorPath, getFirstOption, getMatchModesUtil, getNLTranslataion, getOption, getParentPath, getParseNumberMethod, getPathOfID, getQuoteFieldNamesWithArray, getQuotedFieldName, getValidationClassNames, getValueSourcesUtil, group, groupInPlace, groupInvalidReasons, insert, insertInPlace, isAncestor, isFlexibleOptionArray, isFlexibleOptionGroupArray, isFullOptionArray, isFullOptionGroupArray, isOptionGroupArray, isPojo, isRuleGroup, isRuleGroupType, isRuleGroupTypeIC, isRuleOrGroupValid, isRuleType, isUnsafeKey, isValidValue, isValidationResult, isValueProcessorLegacy, joinWith, jsonLogicAdditionalOperators, lc, mapSQLOperator, mergeAnyTranslation, mergeAnyTranslations, mergeClassnames, mongoDbFallback, mongoOperators, move, moveInPlace, normalizeConstituentWordOrder, nullFreeArray, nullOrUndefinedOrEmpty, numericRegex, numerifyValues, objectEntries, objectKeys, parseNumber, pathIsDisabled, pathsAreEqual, preferAnyProp, preferFlagProps, preferProp, prepareOptionList, prepareRule, prepareRuleGroup, prepareRuleOrGroup, prismaFallback, prismaOperators, processMatchMode, queryBuilderFlagDefaults, regenerateID, regenerateIDs, remove, removeInPlace, rootPath, shouldRenderAsNumber, splitBy, sqlDialectPresets, standardClassnames, toArray, toFlatOptionArray, toFullOption, toFullOptionList, toFullOptionMap, transformQuery, trimIfString, uniqByIdentifier, uniqByName, uniqOptGroups, uniqOptList, update, updateInPlace, uuidV4regex };
|
|
5158
|
+
export { LogType, TestID, add, addInPlace, bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, clsx, convertFromIC, convertQuery, convertToIC, cypherCombinatorMap, defaultCELValueProcessor, defaultCombinatorLabelMap, defaultCombinators, defaultCombinatorsExtended, defaultControlClassnames, defaultExportOperatorMap, defaultJoinChar, defaultMatchModes, defaultMongoDBValueProcessor, defaultNLTranslations, defaultOperatorLabelMap, defaultOperatorNegationMap, defaultOperatorProcessorNL, defaultOperatorProcessorSQL, defaultOperators, defaultPlaceholderFieldGroupLabel, defaultPlaceholderFieldLabel, defaultPlaceholderFieldName, defaultPlaceholderLabel, defaultPlaceholderName, defaultPlaceholderOperatorGroupLabel, defaultPlaceholderOperatorLabel, defaultPlaceholderOperatorName, defaultPlaceholderValueGroupLabel, defaultPlaceholderValueLabel, defaultPlaceholderValueName, defaultRuleGroupProcessorCEL, defaultRuleGroupProcessorCypher, defaultRuleGroupProcessorDiagnostics, defaultRuleGroupProcessorDrizzle, defaultRuleGroupProcessorElasticSearch, defaultRuleGroupProcessorGremlin, defaultRuleGroupProcessorJSONata, defaultRuleGroupProcessorJsonLogic, defaultRuleGroupProcessorLDAP, defaultRuleGroupProcessorMongoDB, defaultRuleGroupProcessorMongoDBQuery, defaultRuleGroupProcessorNL, defaultRuleGroupProcessorParameterized, defaultRuleGroupProcessorPrisma, defaultRuleGroupProcessorSPARQL, defaultRuleGroupProcessorSQL, defaultRuleGroupProcessorSequelize, defaultRuleGroupProcessorSpEL, defaultRuleGroupProcessorTanStackDB, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultRuleProcessorTanStackDB, defaultSpELValueProcessor, defaultTranslations, defaultValidator, defaultValueProcessor, defaultValueProcessorByRule, defaultValueProcessorCELByRule, defaultValueProcessorMongoDBByRule, defaultValueProcessorNL, defaultValueProcessorSpELByRule, filterFieldsByComparator, findID, findPath, formatQuery, formatQueryOptionPresets, generateAccessibleDescription, generateID, getCommonAncestorPath, getFirstOption, getMatchModesUtil, getNLTranslataion, getOption, getParentPath, getParseNumberMethod, getPathOfID, getQuoteFieldNamesWithArray, getQuotedFieldName, getValidationClassNames, getValueSourcesUtil, group, groupInPlace, groupInvalidReasons, insert, insertInPlace, isAncestor, isFlexibleOptionArray, isFlexibleOptionGroupArray, isFullOptionArray, isFullOptionGroupArray, isOptionGroupArray, isPojo, isRuleGroup, isRuleGroupType, isRuleGroupTypeIC, isRuleOrGroupValid, isRuleType, isUnsafeKey, isValidValue, isValidationResult, isValueProcessorLegacy, joinWith, jsonLogicAdditionalOperators, lc, mapSQLOperator, mergeAnyTranslation, mergeAnyTranslations, mergeClassnames, mongoDbFallback, mongoOperators, move, moveInPlace, normalizeConstituentWordOrder, nullFreeArray, nullOrUndefinedOrEmpty, numericRegex, numerifyValues, objectEntries, objectKeys, parseNumber, pathIsDisabled, pathsAreEqual, preferAnyProp, preferFlagProps, preferProp, prepareOptionList, prepareRule, prepareRuleGroup, prepareRuleOrGroup, prismaFallback, prismaOperators, processMatchMode, queryBuilderFlagDefaults, regenerateID, regenerateIDs, remove, removeInPlace, rootPath, shouldRenderAsNumber, sparqlVar, splitBy, sqlDialectPresets, standardClassnames, toArray, toFlatOptionArray, toFullOption, toFullOptionList, toFullOptionMap, transformQuery, trimIfString, uniqByIdentifier, uniqByName, uniqOptGroups, uniqOptList, update, updateInPlace, uuidV4regex };
|
|
4998
5159
|
|
|
4999
5160
|
//# sourceMappingURL=react-querybuilder_core.mjs.map
|