@react-querybuilder/core 8.17.0 → 8.19.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.
- package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +57 -16
- package/dist/cjs/react-querybuilder_core.cjs.development.js +212 -206
- package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +57 -16
- 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-BoMPXL7_.js → convertQuery-BJKNgecE.js} +2 -2
- package/dist/{convertQuery-BoMPXL7_.js.map → convertQuery-BJKNgecE.js.map} +1 -1
- package/dist/{convertQuery-CQwOrjQr.mjs → convertQuery-J1CaoDxe.mjs} +2 -2
- package/dist/{convertQuery-CQwOrjQr.mjs.map → convertQuery-J1CaoDxe.mjs.map} +1 -1
- package/dist/formatQuery.d.mts +5 -3
- package/dist/formatQuery.d.ts +5 -3
- package/dist/formatQuery.js +203 -203
- package/dist/formatQuery.js.map +1 -1
- package/dist/formatQuery.mjs +203 -203
- package/dist/formatQuery.mjs.map +1 -1
- package/dist/{import-CSHMjlid.d.ts → import-Qs1-kgv5.d.ts} +2 -2
- package/dist/{import-BQ5xaW6i.d.mts → import-ShTj5IdB.d.mts} +2 -2
- package/dist/{index-CREDWM32.d.ts → index-DlVg-QXo.d.mts} +32 -3
- package/dist/{index-CREDWM32.d.mts → index-DlVg-QXo.d.ts} +32 -3
- package/dist/{objectUtils-DxVaGCdg.js → objectUtils-DBJI82bl.js} +2 -2
- package/dist/objectUtils-DBJI82bl.js.map +1 -0
- package/dist/{objectUtils-D-w8MzpZ.mjs → objectUtils-ZvPkF6u6.mjs} +2 -2
- package/dist/objectUtils-ZvPkF6u6.mjs.map +1 -0
- package/dist/parseCEL.d.mts +7 -7
- package/dist/parseCEL.d.ts +7 -7
- package/dist/parseCEL.js +6 -6
- package/dist/parseCEL.js.map +1 -1
- package/dist/parseCEL.mjs +6 -6
- 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 +2 -2
- package/dist/parseJSONata.js.map +1 -1
- package/dist/parseJSONata.mjs +2 -2
- 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 +11 -11
- package/dist/parseJsonLogic.js.map +1 -1
- package/dist/parseJsonLogic.mjs +11 -11
- 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 +4 -4
- package/dist/parseMongoDB.js.map +1 -1
- package/dist/parseMongoDB.mjs +4 -4
- 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 +3 -3
- package/dist/parseSQL.js.map +1 -1
- package/dist/parseSQL.mjs +3 -3
- 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 +3 -3
- package/dist/parseSpEL.js.map +1 -1
- package/dist/parseSpEL.mjs +3 -3
- package/dist/parseSpEL.mjs.map +1 -1
- package/dist/{prepareQueryObjects-BXf5aV-A.mjs → prepareQueryObjects-Cd_tt4oy.mjs} +3 -3
- package/dist/{prepareQueryObjects-BXf5aV-A.mjs.map → prepareQueryObjects-Cd_tt4oy.mjs.map} +1 -1
- package/dist/{prepareQueryObjects-gRQqiBPR.js → prepareQueryObjects-DaAXX792.js} +3 -3
- package/dist/{prepareQueryObjects-gRQqiBPR.js.map → prepareQueryObjects-DaAXX792.js.map} +1 -1
- package/dist/react-querybuilder_core.d.mts +57 -16
- package/dist/react-querybuilder_core.legacy-esm.d.ts +57 -16
- package/dist/react-querybuilder_core.legacy-esm.js +210 -204
- package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_core.mjs +212 -206
- package/dist/react-querybuilder_core.mjs.map +1 -1
- package/dist/react-querybuilder_core.production.d.mts +57 -16
- 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 +1 -1
- package/dist/transformQuery.mjs +1 -1
- package/dist/{utils-ZlKseh1X.js → utils-BpaOtylk.js} +3 -3
- package/dist/utils-BpaOtylk.js.map +1 -0
- package/dist/{utils-01WaTGBL.mjs → utils-CJRGiPb-.mjs} +3 -3
- package/dist/utils-CJRGiPb-.mjs.map +1 -0
- package/package.json +12 -12
- package/dist/objectUtils-D-w8MzpZ.mjs.map +0 -1
- package/dist/objectUtils-DxVaGCdg.js.map +0 -1
- package/dist/utils-01WaTGBL.mjs.map +0 -1
- package/dist/utils-ZlKseh1X.js.map +0 -1
|
@@ -88,7 +88,10 @@ const defaultTranslations = {
|
|
|
88
88
|
placeholderGroupLabel: defaultPlaceholderValueGroupLabel
|
|
89
89
|
},
|
|
90
90
|
matchMode: { title: "Match mode" },
|
|
91
|
-
matchThreshold: {
|
|
91
|
+
matchThreshold: {
|
|
92
|
+
title: "Match threshold",
|
|
93
|
+
placeholderName: "#"
|
|
94
|
+
},
|
|
92
95
|
value: { title: "Value" },
|
|
93
96
|
removeRule: {
|
|
94
97
|
label: "⨯",
|
|
@@ -426,7 +429,8 @@ const standardClassnames = {
|
|
|
426
429
|
branches: "queryBuilder-branches",
|
|
427
430
|
justified: "queryBuilder-justified",
|
|
428
431
|
hasSubQuery: "rule-hasSubQuery",
|
|
429
|
-
loading: "queryBuilder-loading"
|
|
432
|
+
loading: "queryBuilder-loading",
|
|
433
|
+
valueDateTimeRelative: "rule-value-dateTimeRelative"
|
|
430
434
|
};
|
|
431
435
|
/**
|
|
432
436
|
* Default classnames for each component.
|
|
@@ -476,7 +480,8 @@ const defaultControlClassnames = {
|
|
|
476
480
|
valueListItem: "",
|
|
477
481
|
branches: "",
|
|
478
482
|
hasSubQuery: "",
|
|
479
|
-
loading: ""
|
|
483
|
+
loading: "",
|
|
484
|
+
valueDateTimeRelative: ""
|
|
480
485
|
};
|
|
481
486
|
/**
|
|
482
487
|
* Default reason codes for a group being invalid.
|
|
@@ -609,7 +614,7 @@ const trimIfString = (val) => typeof val === "string" ? val.trim() : val;
|
|
|
609
614
|
* Splits a string by comma then trims each element. Arrays are returned as is except
|
|
610
615
|
* any string elements are trimmed.
|
|
611
616
|
*/
|
|
612
|
-
const toArray = (a, { retainEmptyStrings } = {}) => Array.isArray(a) ? a.map(
|
|
617
|
+
const toArray = (a, { retainEmptyStrings } = {}) => Array.isArray(a) ? a.map(trimIfString) : typeof a === "string" ? splitBy(a, ",").filter(retainEmptyStrings ? () => true : (s) => !/^\s*$/.test(s)).map((s) => s.trim()) : typeof a === "number" ? [a] : [];
|
|
613
618
|
/**
|
|
614
619
|
* Determines if an array is free of `null`/`undefined`.
|
|
615
620
|
*/
|
|
@@ -670,7 +675,7 @@ const numericRegex = new RegExp(numericRegex$1.source.replace(/^\^/, String.raw`
|
|
|
670
675
|
/**
|
|
671
676
|
* Determines if a variable is a plain old JavaScript object, aka POJO.
|
|
672
677
|
*/
|
|
673
|
-
const isPojo = (obj) => obj
|
|
678
|
+
const isPojo = (obj) => obj !== null && typeof obj === "object" && Object.getPrototypeOf(obj) === Object.prototype;
|
|
674
679
|
/**
|
|
675
680
|
* Simple helper to determine whether a value is null, undefined, or an empty string.
|
|
676
681
|
*/
|
|
@@ -694,7 +699,7 @@ const isRuleGroupType = (rg) => isRuleGroup(rg) && typeof rg.combinator === "str
|
|
|
694
699
|
*/
|
|
695
700
|
const isRuleGroupTypeIC = (rg) => isRuleGroup(rg) && rg.combinator === void 0;
|
|
696
701
|
//#endregion
|
|
697
|
-
//#region \0@oxc-project+runtime@0.
|
|
702
|
+
//#region \0@oxc-project+runtime@0.134.0/helpers/esm/typeof.js
|
|
698
703
|
function _typeof(o) {
|
|
699
704
|
"@babel/helpers - typeof";
|
|
700
705
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -704,7 +709,7 @@ function _typeof(o) {
|
|
|
704
709
|
}, _typeof(o);
|
|
705
710
|
}
|
|
706
711
|
//#endregion
|
|
707
|
-
//#region \0@oxc-project+runtime@0.
|
|
712
|
+
//#region \0@oxc-project+runtime@0.134.0/helpers/esm/toPrimitive.js
|
|
708
713
|
function toPrimitive(t, r) {
|
|
709
714
|
if ("object" != _typeof(t) || !t) return t;
|
|
710
715
|
var e = t[Symbol.toPrimitive];
|
|
@@ -716,13 +721,13 @@ function toPrimitive(t, r) {
|
|
|
716
721
|
return ("string" === r ? String : Number)(t);
|
|
717
722
|
}
|
|
718
723
|
//#endregion
|
|
719
|
-
//#region \0@oxc-project+runtime@0.
|
|
724
|
+
//#region \0@oxc-project+runtime@0.134.0/helpers/esm/toPropertyKey.js
|
|
720
725
|
function toPropertyKey(t) {
|
|
721
726
|
var i = toPrimitive(t, "string");
|
|
722
727
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
723
728
|
}
|
|
724
729
|
//#endregion
|
|
725
|
-
//#region \0@oxc-project+runtime@0.
|
|
730
|
+
//#region \0@oxc-project+runtime@0.134.0/helpers/esm/defineProperty.js
|
|
726
731
|
function _defineProperty(e, r, t) {
|
|
727
732
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
728
733
|
value: t,
|
|
@@ -732,7 +737,7 @@ function _defineProperty(e, r, t) {
|
|
|
732
737
|
}) : e[r] = t, e;
|
|
733
738
|
}
|
|
734
739
|
//#endregion
|
|
735
|
-
//#region \0@oxc-project+runtime@0.
|
|
740
|
+
//#region \0@oxc-project+runtime@0.134.0/helpers/esm/objectSpread2.js
|
|
736
741
|
function ownKeys(e, r) {
|
|
737
742
|
var t = Object.keys(e);
|
|
738
743
|
if (Object.getOwnPropertySymbols) {
|
|
@@ -755,7 +760,7 @@ function _objectSpread2(e) {
|
|
|
755
760
|
return e;
|
|
756
761
|
}
|
|
757
762
|
//#endregion
|
|
758
|
-
//#region \0@oxc-project+runtime@0.
|
|
763
|
+
//#region \0@oxc-project+runtime@0.134.0/helpers/esm/objectWithoutPropertiesLoose.js
|
|
759
764
|
function _objectWithoutPropertiesLoose(r, e) {
|
|
760
765
|
if (null == r) return {};
|
|
761
766
|
var t = {};
|
|
@@ -766,7 +771,7 @@ function _objectWithoutPropertiesLoose(r, e) {
|
|
|
766
771
|
return t;
|
|
767
772
|
}
|
|
768
773
|
//#endregion
|
|
769
|
-
//#region \0@oxc-project+runtime@0.
|
|
774
|
+
//#region \0@oxc-project+runtime@0.134.0/helpers/esm/objectWithoutProperties.js
|
|
770
775
|
function _objectWithoutProperties(e, t) {
|
|
771
776
|
if (null == e) return {};
|
|
772
777
|
var o, r, i = _objectWithoutPropertiesLoose(e, t);
|
|
@@ -1586,7 +1591,7 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
|
|
|
1586
1591
|
const totalCount = `double(${field}.size())`;
|
|
1587
1592
|
const filteredCount = `${field}.filter(${arrayElementAlias}, ${nestedArrayFilter}).size()`;
|
|
1588
1593
|
const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "==";
|
|
1589
|
-
if (threshold > 0 && threshold < 1) return
|
|
1594
|
+
if (threshold > 0 && threshold < 1) return `double(${filteredCount}) ${op} (${totalCount} * ${threshold})`;
|
|
1590
1595
|
return `${filteredCount} ${op} ${threshold}`;
|
|
1591
1596
|
}
|
|
1592
1597
|
}
|
|
@@ -2061,97 +2066,6 @@ const defaultRuleGroupProcessorCypher = (ruleGroup, options) => {
|
|
|
2061
2066
|
return processRuleGroup(ruleGroup, true);
|
|
2062
2067
|
};
|
|
2063
2068
|
//#endregion
|
|
2064
|
-
//#region src/utils/formatQuery/defaultRuleProcessorDrizzle.ts
|
|
2065
|
-
/**
|
|
2066
|
-
* Default rule processor used by {@link formatQuery} for the "drizzle" format.
|
|
2067
|
-
*
|
|
2068
|
-
* @group Export
|
|
2069
|
-
*/
|
|
2070
|
-
const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
2071
|
-
const opts = _options !== null && _options !== void 0 ? _options : /* v8 ignore start -- @preserve */ {};
|
|
2072
|
-
// v8 ignore next
|
|
2073
|
-
const { parseNumbers, preserveValueOrder, context = {} } = opts;
|
|
2074
|
-
const { columns, drizzleOperators, useRawFields } = context;
|
|
2075
|
-
if (!columns || !drizzleOperators) return void 0;
|
|
2076
|
-
const { between, eq, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, notBetween, notInArray, notLike, sql } = drizzleOperators;
|
|
2077
|
-
const { field, operator, value, valueSource } = rule;
|
|
2078
|
-
const column = useRawFields && /[a-z][a-z0-9]*/i.test(field) ? sql.raw(field) : columns[field];
|
|
2079
|
-
const operatorLC = lc(operator);
|
|
2080
|
-
const valueIsField = valueSource === "field";
|
|
2081
|
-
const asFieldOrValue = (v) => valueIsField ? columns[v] : v;
|
|
2082
|
-
const maybeParseNumber = (v) => {
|
|
2083
|
-
if (valueIsField || !parseNumbers) return asFieldOrValue(v);
|
|
2084
|
-
return shouldRenderAsNumber(v, true) ? parseNumber(v, { parseNumbers: true }) : v;
|
|
2085
|
-
};
|
|
2086
|
-
if (!column) return void 0;
|
|
2087
|
-
const matchEval = processMatchMode(rule);
|
|
2088
|
-
if (matchEval === false) return;
|
|
2089
|
-
else if (matchEval) {
|
|
2090
|
-
if (opts.preset !== "postgresql") return void 0;
|
|
2091
|
-
const { mode, threshold } = matchEval;
|
|
2092
|
-
const arrayElementAlias = "elem_alias";
|
|
2093
|
-
const nestedArrayFilter = defaultRuleGroupProcessorDrizzle(transformQuery(rule.value, { ruleProcessor: (r) => _objectSpread2(_objectSpread2({}, r), {}, { field: arrayElementAlias }) }), _objectSpread2(_objectSpread2({}, opts), {}, { context: _objectSpread2(_objectSpread2({}, opts.context), {}, { useRawFields: true }) }));
|
|
2094
|
-
switch (mode) {
|
|
2095
|
-
case "all": return sql`(select count(*) from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)}) = array_length(${column}, 1)`;
|
|
2096
|
-
case "none": return sql`not exists (select 1 from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)})`;
|
|
2097
|
-
case "some": return sql`exists (select 1 from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)})`;
|
|
2098
|
-
case "atleast":
|
|
2099
|
-
case "atmost":
|
|
2100
|
-
case "exactly": {
|
|
2101
|
-
const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
|
|
2102
|
-
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}`)}`;
|
|
2103
|
-
}
|
|
2104
|
-
}
|
|
2105
|
-
}
|
|
2106
|
-
switch (operatorLC) {
|
|
2107
|
-
case "=": return eq(column, maybeParseNumber(value));
|
|
2108
|
-
case "!=": return ne(column, maybeParseNumber(value));
|
|
2109
|
-
case ">": return gt(column, maybeParseNumber(value));
|
|
2110
|
-
case "<": return lt(column, maybeParseNumber(value));
|
|
2111
|
-
case ">=": return gte(column, maybeParseNumber(value));
|
|
2112
|
-
case "<=": return lte(column, maybeParseNumber(value));
|
|
2113
|
-
case "beginswith":
|
|
2114
|
-
case "doesnotbeginwith": return (operatorLC === "doesnotbeginwith" ? notLike : like)(column, valueIsField ? sql`${asFieldOrValue(value)} || '%'` : `${value}%`);
|
|
2115
|
-
case "contains":
|
|
2116
|
-
case "doesnotcontain": return (operatorLC === "doesnotcontain" ? notLike : like)(column, valueIsField ? sql`'%' || ${asFieldOrValue(value)} || '%'` : `%${value}%`);
|
|
2117
|
-
case "endswith":
|
|
2118
|
-
case "doesnotendwith": return (operatorLC === "doesnotendwith" ? notLike : like)(column, valueIsField ? sql`'%' || ${asFieldOrValue(value)}` : `%${value}`);
|
|
2119
|
-
case "null": return isNull(column);
|
|
2120
|
-
case "notnull": return isNotNull(column);
|
|
2121
|
-
case "in":
|
|
2122
|
-
case "notin": {
|
|
2123
|
-
const valueAsArray = toArray(value).map((v) => maybeParseNumber(v));
|
|
2124
|
-
return operatorLC === "notin" ? notInArray(column, valueAsArray) : inArray(column, valueAsArray);
|
|
2125
|
-
}
|
|
2126
|
-
case "between":
|
|
2127
|
-
case "notbetween": {
|
|
2128
|
-
const valueAsArray = toArray(value);
|
|
2129
|
-
if (valueAsArray.length >= 2 && isValidValue(valueAsArray[0]) && isValidValue(valueAsArray[1])) {
|
|
2130
|
-
let [first, second] = valueAsArray;
|
|
2131
|
-
const shouldParseNumbers = !(parseNumbers === false);
|
|
2132
|
-
if (!valueIsField && shouldRenderAsNumber(first, shouldParseNumbers) && shouldRenderAsNumber(second, shouldParseNumbers)) {
|
|
2133
|
-
const firstNum = parseNumber(first, { parseNumbers: shouldParseNumbers });
|
|
2134
|
-
const secondNum = parseNumber(second, { parseNumbers: shouldParseNumbers });
|
|
2135
|
-
if (!preserveValueOrder && secondNum < firstNum) {
|
|
2136
|
-
const tempNum = secondNum;
|
|
2137
|
-
second = firstNum;
|
|
2138
|
-
first = tempNum;
|
|
2139
|
-
} else {
|
|
2140
|
-
first = firstNum;
|
|
2141
|
-
second = secondNum;
|
|
2142
|
-
}
|
|
2143
|
-
} else if (valueIsField) {
|
|
2144
|
-
first = asFieldOrValue(first);
|
|
2145
|
-
second = asFieldOrValue(second);
|
|
2146
|
-
}
|
|
2147
|
-
return operatorLC === "notbetween" ? notBetween(column, first, second) : between(column, first, second);
|
|
2148
|
-
}
|
|
2149
|
-
return;
|
|
2150
|
-
}
|
|
2151
|
-
default: return;
|
|
2152
|
-
}
|
|
2153
|
-
};
|
|
2154
|
-
//#endregion
|
|
2155
2069
|
//#region src/utils/formatQuery/defaultRuleGroupProcessorDrizzle.ts
|
|
2156
2070
|
/**
|
|
2157
2071
|
* Default rule group processor used by {@link formatQuery} for the "drizzle" format. The returned
|
|
@@ -2166,10 +2080,9 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
|
2166
2080
|
* @group Export
|
|
2167
2081
|
*/
|
|
2168
2082
|
const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns, drizzleOperators) => {
|
|
2169
|
-
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap } = options;
|
|
2083
|
+
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap, ruleProcessor } = options;
|
|
2170
2084
|
if (!columns || !drizzleOperators) return void 0;
|
|
2171
2085
|
const { and, not, or } = drizzleOperators;
|
|
2172
|
-
const ruleProcessor = defaultRuleProcessorDrizzle;
|
|
2173
2086
|
const processRuleGroup = (rg, _outermost) => {
|
|
2174
2087
|
var _rg$id;
|
|
2175
2088
|
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return;
|
|
@@ -2451,7 +2364,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
2451
2364
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, translations, validateRule, validationMap } = options;
|
|
2452
2365
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
2453
2366
|
var _rg$id, _rg2$combinator2, _translations$ruleSep2, _translations2;
|
|
2454
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression :
|
|
2367
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
2455
2368
|
const rg2 = isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && lc(r) === "xor") ? convertFromIC(rg) : rg;
|
|
2456
2369
|
const processedRules = [];
|
|
2457
2370
|
let precedingCombinator = "";
|
|
@@ -2553,7 +2466,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
|
|
|
2553
2466
|
};
|
|
2554
2467
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
2555
2468
|
var _rg$id;
|
|
2556
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression :
|
|
2469
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
2557
2470
|
const processedRules = [];
|
|
2558
2471
|
let precedingCombinator = "";
|
|
2559
2472
|
let firstRule = true;
|
|
@@ -2748,7 +2661,7 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
|
|
|
2748
2661
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2749
2662
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
2750
2663
|
var _rg$id;
|
|
2751
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression :
|
|
2664
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
2752
2665
|
const processedRules = [];
|
|
2753
2666
|
let precedingCombinator = "";
|
|
2754
2667
|
let firstRule = true;
|
|
@@ -2795,96 +2708,6 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
|
|
|
2795
2708
|
return processRuleGroup(ruleGroup, true);
|
|
2796
2709
|
};
|
|
2797
2710
|
//#endregion
|
|
2798
|
-
//#region src/utils/formatQuery/defaultRuleProcessorTanStackDB.ts
|
|
2799
|
-
/**
|
|
2800
|
-
* Default rule processor used by {@link formatQuery} for the "tanstack_db" format.
|
|
2801
|
-
*
|
|
2802
|
-
* @group Export
|
|
2803
|
-
*/
|
|
2804
|
-
const defaultRuleProcessorTanStackDB = (rule, _options) => {
|
|
2805
|
-
const { parseNumbers, preserveValueOrder, context = {} } = _options !== null && _options !== void 0 ? _options : /* v8 ignore start -- @preserve */ {};
|
|
2806
|
-
const ops = context.tanStackDbOperators;
|
|
2807
|
-
const refs = context._tanstackDbRefs;
|
|
2808
|
-
const primaryRef = context._tanstackDbPrimaryRef;
|
|
2809
|
-
if (!ops || !refs || !primaryRef) return void 0;
|
|
2810
|
-
const { and, eq, gt, gte, inArray, isNull, like, lt, lte, not } = ops;
|
|
2811
|
-
const resolveField = (fieldName) => {
|
|
2812
|
-
const dotIdx = fieldName.indexOf(".");
|
|
2813
|
-
if (dotIdx > 0) {
|
|
2814
|
-
const prefix = fieldName.slice(0, dotIdx);
|
|
2815
|
-
const rest = fieldName.slice(dotIdx + 1);
|
|
2816
|
-
if (refs[prefix]) return refs[prefix][rest];
|
|
2817
|
-
}
|
|
2818
|
-
return refs[primaryRef][fieldName];
|
|
2819
|
-
};
|
|
2820
|
-
const { field, operator, value, valueSource } = rule;
|
|
2821
|
-
const column = resolveField(field);
|
|
2822
|
-
const operatorLC = lc(operator);
|
|
2823
|
-
const valueIsField = valueSource === "field";
|
|
2824
|
-
const asFieldOrValue = (v) => valueIsField ? resolveField(v) : v;
|
|
2825
|
-
const maybeParseNumber = (v) => {
|
|
2826
|
-
if (valueIsField || !parseNumbers) return asFieldOrValue(v);
|
|
2827
|
-
return shouldRenderAsNumber(v, true) ? parseNumber(v, { parseNumbers: true }) : v;
|
|
2828
|
-
};
|
|
2829
|
-
switch (operatorLC) {
|
|
2830
|
-
case "=": return eq(column, maybeParseNumber(value));
|
|
2831
|
-
case "!=": return not(eq(column, maybeParseNumber(value)));
|
|
2832
|
-
case ">": return gt(column, maybeParseNumber(value));
|
|
2833
|
-
case "<": return lt(column, maybeParseNumber(value));
|
|
2834
|
-
case ">=": return gte(column, maybeParseNumber(value));
|
|
2835
|
-
case "<=": return lte(column, maybeParseNumber(value));
|
|
2836
|
-
case "beginswith":
|
|
2837
|
-
case "doesnotbeginwith": {
|
|
2838
|
-
const expr = like(column, valueIsField ? void 0 : `${value}%`);
|
|
2839
|
-
return operatorLC === "doesnotbeginwith" ? not(expr) : expr;
|
|
2840
|
-
}
|
|
2841
|
-
case "contains":
|
|
2842
|
-
case "doesnotcontain": {
|
|
2843
|
-
const expr = like(column, valueIsField ? void 0 : `%${value}%`);
|
|
2844
|
-
return operatorLC === "doesnotcontain" ? not(expr) : expr;
|
|
2845
|
-
}
|
|
2846
|
-
case "endswith":
|
|
2847
|
-
case "doesnotendwith": {
|
|
2848
|
-
const expr = like(column, valueIsField ? void 0 : `%${value}`);
|
|
2849
|
-
return operatorLC === "doesnotendwith" ? not(expr) : expr;
|
|
2850
|
-
}
|
|
2851
|
-
case "null": return isNull(column);
|
|
2852
|
-
case "notnull": return not(isNull(column));
|
|
2853
|
-
case "in":
|
|
2854
|
-
case "notin": {
|
|
2855
|
-
const expr = inArray(column, toArray(value).map((v) => maybeParseNumber(v)));
|
|
2856
|
-
return operatorLC === "notin" ? not(expr) : expr;
|
|
2857
|
-
}
|
|
2858
|
-
case "between":
|
|
2859
|
-
case "notbetween": {
|
|
2860
|
-
const valueAsArray = toArray(value);
|
|
2861
|
-
if (valueAsArray.length >= 2 && isValidValue(valueAsArray[0]) && isValidValue(valueAsArray[1])) {
|
|
2862
|
-
let [first, second] = valueAsArray;
|
|
2863
|
-
const shouldParseNumbers = !(parseNumbers === false);
|
|
2864
|
-
if (!valueIsField && shouldRenderAsNumber(first, shouldParseNumbers) && shouldRenderAsNumber(second, shouldParseNumbers)) {
|
|
2865
|
-
const firstNum = parseNumber(first, { parseNumbers: shouldParseNumbers });
|
|
2866
|
-
const secondNum = parseNumber(second, { parseNumbers: shouldParseNumbers });
|
|
2867
|
-
if (!preserveValueOrder && secondNum < firstNum) {
|
|
2868
|
-
const tempNum = secondNum;
|
|
2869
|
-
second = firstNum;
|
|
2870
|
-
first = tempNum;
|
|
2871
|
-
} else {
|
|
2872
|
-
first = firstNum;
|
|
2873
|
-
second = secondNum;
|
|
2874
|
-
}
|
|
2875
|
-
} else if (valueIsField) {
|
|
2876
|
-
first = asFieldOrValue(first);
|
|
2877
|
-
second = asFieldOrValue(second);
|
|
2878
|
-
}
|
|
2879
|
-
const expr = and(gte(column, first), lte(column, second));
|
|
2880
|
-
return operatorLC === "notbetween" ? not(expr) : expr;
|
|
2881
|
-
}
|
|
2882
|
-
return;
|
|
2883
|
-
}
|
|
2884
|
-
default: return;
|
|
2885
|
-
}
|
|
2886
|
-
};
|
|
2887
|
-
//#endregion
|
|
2888
2711
|
//#region src/utils/formatQuery/defaultRuleGroupProcessorTanStackDB.ts
|
|
2889
2712
|
/**
|
|
2890
2713
|
* Default rule group processor used by {@link formatQuery} for the "tanstack_db" format.
|
|
@@ -2898,7 +2721,7 @@ const defaultRuleProcessorTanStackDB = (rule, _options) => {
|
|
|
2898
2721
|
*/
|
|
2899
2722
|
const defaultRuleGroupProcessorTanStackDB = (ruleGroup, options) => (refs) => {
|
|
2900
2723
|
var _processRuleGroup;
|
|
2901
|
-
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap, context = {} } = options;
|
|
2724
|
+
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap, context = {}, ruleProcessor } = options;
|
|
2902
2725
|
const ops = context.tanStackDbOperators;
|
|
2903
2726
|
if (!ops) return void 0;
|
|
2904
2727
|
const { and, eq, not, or } = ops;
|
|
@@ -2906,7 +2729,6 @@ const defaultRuleGroupProcessorTanStackDB = (ruleGroup, options) => (refs) => {
|
|
|
2906
2729
|
const refKeys = Object.keys(refs);
|
|
2907
2730
|
/* v8 ignore next -- @preserve */
|
|
2908
2731
|
if (refKeys.length === 0) return fallback;
|
|
2909
|
-
const ruleProcessor = defaultRuleProcessorTanStackDB;
|
|
2910
2732
|
const processRuleGroup = (rg) => {
|
|
2911
2733
|
var _rg$id;
|
|
2912
2734
|
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return;
|
|
@@ -3302,6 +3124,97 @@ const defaultRuleProcessorCypher = (rule, opts = {}) => {
|
|
|
3302
3124
|
}
|
|
3303
3125
|
};
|
|
3304
3126
|
//#endregion
|
|
3127
|
+
//#region src/utils/formatQuery/defaultRuleProcessorDrizzle.ts
|
|
3128
|
+
/**
|
|
3129
|
+
* Default rule processor used by {@link formatQuery} for the "drizzle" format.
|
|
3130
|
+
*
|
|
3131
|
+
* @group Export
|
|
3132
|
+
*/
|
|
3133
|
+
const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
3134
|
+
const opts = _options !== null && _options !== void 0 ? _options : /* v8 ignore start -- @preserve */ {};
|
|
3135
|
+
// v8 ignore next
|
|
3136
|
+
const { parseNumbers, preserveValueOrder, context = {} } = opts;
|
|
3137
|
+
const { columns, drizzleOperators, useRawFields } = context;
|
|
3138
|
+
if (!columns || !drizzleOperators) return void 0;
|
|
3139
|
+
const { between, eq, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, notBetween, notInArray, notLike, sql } = drizzleOperators;
|
|
3140
|
+
const { field, operator, value, valueSource } = rule;
|
|
3141
|
+
const column = useRawFields && /^[a-z_][a-z0-9_.]*$/i.test(field) ? sql.raw(field) : columns[field];
|
|
3142
|
+
const operatorLC = lc(operator);
|
|
3143
|
+
const valueIsField = valueSource === "field";
|
|
3144
|
+
const asFieldOrValue = (v) => valueIsField ? columns[v] : v;
|
|
3145
|
+
const maybeParseNumber = (v) => {
|
|
3146
|
+
if (valueIsField || !parseNumbers) return asFieldOrValue(v);
|
|
3147
|
+
return shouldRenderAsNumber(v, true) ? parseNumber(v, { parseNumbers: true }) : v;
|
|
3148
|
+
};
|
|
3149
|
+
if (!column) return void 0;
|
|
3150
|
+
const matchEval = processMatchMode(rule);
|
|
3151
|
+
if (matchEval === false) return;
|
|
3152
|
+
else if (matchEval) {
|
|
3153
|
+
if (opts.preset !== "postgresql") return void 0;
|
|
3154
|
+
const { mode, threshold } = matchEval;
|
|
3155
|
+
const arrayElementAlias = "elem_alias";
|
|
3156
|
+
const nestedArrayFilter = defaultRuleGroupProcessorDrizzle(transformQuery(rule.value, { ruleProcessor: (r) => _objectSpread2(_objectSpread2({}, r), {}, { field: arrayElementAlias }) }), _objectSpread2(_objectSpread2({}, opts), {}, { context: _objectSpread2(_objectSpread2({}, opts.context), {}, { useRawFields: true }) }));
|
|
3157
|
+
switch (mode) {
|
|
3158
|
+
case "all": return sql`(select count(*) from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)}) = array_length(${column}, 1)`;
|
|
3159
|
+
case "none": return sql`not exists (select 1 from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)})`;
|
|
3160
|
+
case "some": return sql`exists (select 1 from unnest(${column}) as ${sql.raw(arrayElementAlias)} where ${nestedArrayFilter({}, drizzleOperators)})`;
|
|
3161
|
+
case "atleast":
|
|
3162
|
+
case "atmost":
|
|
3163
|
+
case "exactly": {
|
|
3164
|
+
const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
|
|
3165
|
+
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}`)}`;
|
|
3166
|
+
}
|
|
3167
|
+
}
|
|
3168
|
+
}
|
|
3169
|
+
switch (operatorLC) {
|
|
3170
|
+
case "=": return eq(column, maybeParseNumber(value));
|
|
3171
|
+
case "!=": return ne(column, maybeParseNumber(value));
|
|
3172
|
+
case ">": return gt(column, maybeParseNumber(value));
|
|
3173
|
+
case "<": return lt(column, maybeParseNumber(value));
|
|
3174
|
+
case ">=": return gte(column, maybeParseNumber(value));
|
|
3175
|
+
case "<=": return lte(column, maybeParseNumber(value));
|
|
3176
|
+
case "beginswith":
|
|
3177
|
+
case "doesnotbeginwith": return (operatorLC === "doesnotbeginwith" ? notLike : like)(column, valueIsField ? sql`${asFieldOrValue(value)} || '%'` : `${value}%`);
|
|
3178
|
+
case "contains":
|
|
3179
|
+
case "doesnotcontain": return (operatorLC === "doesnotcontain" ? notLike : like)(column, valueIsField ? sql`'%' || ${asFieldOrValue(value)} || '%'` : `%${value}%`);
|
|
3180
|
+
case "endswith":
|
|
3181
|
+
case "doesnotendwith": return (operatorLC === "doesnotendwith" ? notLike : like)(column, valueIsField ? sql`'%' || ${asFieldOrValue(value)}` : `%${value}`);
|
|
3182
|
+
case "null": return isNull(column);
|
|
3183
|
+
case "notnull": return isNotNull(column);
|
|
3184
|
+
case "in":
|
|
3185
|
+
case "notin": {
|
|
3186
|
+
const valueAsArray = toArray(value).map((v) => maybeParseNumber(v));
|
|
3187
|
+
return operatorLC === "notin" ? notInArray(column, valueAsArray) : inArray(column, valueAsArray);
|
|
3188
|
+
}
|
|
3189
|
+
case "between":
|
|
3190
|
+
case "notbetween": {
|
|
3191
|
+
const valueAsArray = toArray(value);
|
|
3192
|
+
if (valueAsArray.length >= 2 && isValidValue(valueAsArray[0]) && isValidValue(valueAsArray[1])) {
|
|
3193
|
+
let [first, second] = valueAsArray;
|
|
3194
|
+
const shouldParseNumbers = !(parseNumbers === false);
|
|
3195
|
+
if (!valueIsField && shouldRenderAsNumber(first, shouldParseNumbers) && shouldRenderAsNumber(second, shouldParseNumbers)) {
|
|
3196
|
+
const firstNum = parseNumber(first, { parseNumbers: shouldParseNumbers });
|
|
3197
|
+
const secondNum = parseNumber(second, { parseNumbers: shouldParseNumbers });
|
|
3198
|
+
if (!preserveValueOrder && secondNum < firstNum) {
|
|
3199
|
+
const tempNum = secondNum;
|
|
3200
|
+
second = firstNum;
|
|
3201
|
+
first = tempNum;
|
|
3202
|
+
} else {
|
|
3203
|
+
first = firstNum;
|
|
3204
|
+
second = secondNum;
|
|
3205
|
+
}
|
|
3206
|
+
} else if (valueIsField) {
|
|
3207
|
+
first = asFieldOrValue(first);
|
|
3208
|
+
second = asFieldOrValue(second);
|
|
3209
|
+
}
|
|
3210
|
+
return operatorLC === "notbetween" ? notBetween(column, first, second) : between(column, first, second);
|
|
3211
|
+
}
|
|
3212
|
+
return;
|
|
3213
|
+
}
|
|
3214
|
+
default: return;
|
|
3215
|
+
}
|
|
3216
|
+
};
|
|
3217
|
+
//#endregion
|
|
3305
3218
|
//#region src/utils/formatQuery/defaultRuleProcessorElasticSearch.ts
|
|
3306
3219
|
const rangeOperatorMap = {
|
|
3307
3220
|
"<": "lt",
|
|
@@ -3949,7 +3862,7 @@ const defaultRuleProcessorSQL = (rule, opts = {}) => {
|
|
|
3949
3862
|
case "atmost":
|
|
3950
3863
|
case "exactly": {
|
|
3951
3864
|
const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
|
|
3952
|
-
return `(select count(*)${threshold > 0 && threshold < 1 ?
|
|
3865
|
+
return `(select count(*)${threshold > 0 && threshold < 1 ? `::float / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedArrayFilter}) ${op} ${threshold}`;
|
|
3953
3866
|
}
|
|
3954
3867
|
}
|
|
3955
3868
|
}
|
|
@@ -4009,7 +3922,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
|
|
|
4009
3922
|
case "atmost":
|
|
4010
3923
|
case "exactly": {
|
|
4011
3924
|
const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "=";
|
|
4012
|
-
return finalize(`(select count(*)${threshold > 0 && threshold < 1 ?
|
|
3925
|
+
return finalize(`(select count(*)${threshold > 0 && threshold < 1 ? `::float / array_length(${ruleField}, 1)` : ""} from unnest(${ruleField}) as ${wrapFieldName(arrayElementAlias)} where ${nestedSQL}) ${op} ${threshold}`);
|
|
4013
3926
|
}
|
|
4014
3927
|
}
|
|
4015
3928
|
}
|
|
@@ -4263,6 +4176,96 @@ const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
|
|
|
4263
4176
|
}
|
|
4264
4177
|
};
|
|
4265
4178
|
//#endregion
|
|
4179
|
+
//#region src/utils/formatQuery/defaultRuleProcessorTanStackDB.ts
|
|
4180
|
+
/**
|
|
4181
|
+
* Default rule processor used by {@link formatQuery} for the "tanstack_db" format.
|
|
4182
|
+
*
|
|
4183
|
+
* @group Export
|
|
4184
|
+
*/
|
|
4185
|
+
const defaultRuleProcessorTanStackDB = (rule, _options) => {
|
|
4186
|
+
const { parseNumbers, preserveValueOrder, context = {} } = _options !== null && _options !== void 0 ? _options : /* v8 ignore start -- @preserve */ {};
|
|
4187
|
+
const ops = context.tanStackDbOperators;
|
|
4188
|
+
const refs = context._tanstackDbRefs;
|
|
4189
|
+
const primaryRef = context._tanstackDbPrimaryRef;
|
|
4190
|
+
if (!ops || !refs || !primaryRef) return void 0;
|
|
4191
|
+
const { and, eq, gt, gte, inArray, isNull, like, lt, lte, not } = ops;
|
|
4192
|
+
const resolveField = (fieldName) => {
|
|
4193
|
+
const dotIdx = fieldName.indexOf(".");
|
|
4194
|
+
if (dotIdx > 0) {
|
|
4195
|
+
const prefix = fieldName.slice(0, dotIdx);
|
|
4196
|
+
const rest = fieldName.slice(dotIdx + 1);
|
|
4197
|
+
if (refs[prefix]) return refs[prefix][rest];
|
|
4198
|
+
}
|
|
4199
|
+
return refs[primaryRef][fieldName];
|
|
4200
|
+
};
|
|
4201
|
+
const { field, operator, value, valueSource } = rule;
|
|
4202
|
+
const column = resolveField(field);
|
|
4203
|
+
const operatorLC = lc(operator);
|
|
4204
|
+
const valueIsField = valueSource === "field";
|
|
4205
|
+
const asFieldOrValue = (v) => valueIsField ? resolveField(v) : v;
|
|
4206
|
+
const maybeParseNumber = (v) => {
|
|
4207
|
+
if (valueIsField || !parseNumbers) return asFieldOrValue(v);
|
|
4208
|
+
return shouldRenderAsNumber(v, true) ? parseNumber(v, { parseNumbers: true }) : v;
|
|
4209
|
+
};
|
|
4210
|
+
switch (operatorLC) {
|
|
4211
|
+
case "=": return eq(column, maybeParseNumber(value));
|
|
4212
|
+
case "!=": return not(eq(column, maybeParseNumber(value)));
|
|
4213
|
+
case ">": return gt(column, maybeParseNumber(value));
|
|
4214
|
+
case "<": return lt(column, maybeParseNumber(value));
|
|
4215
|
+
case ">=": return gte(column, maybeParseNumber(value));
|
|
4216
|
+
case "<=": return lte(column, maybeParseNumber(value));
|
|
4217
|
+
case "beginswith":
|
|
4218
|
+
case "doesnotbeginwith": {
|
|
4219
|
+
const expr = like(column, valueIsField ? void 0 : `${value}%`);
|
|
4220
|
+
return operatorLC === "doesnotbeginwith" ? not(expr) : expr;
|
|
4221
|
+
}
|
|
4222
|
+
case "contains":
|
|
4223
|
+
case "doesnotcontain": {
|
|
4224
|
+
const expr = like(column, valueIsField ? void 0 : `%${value}%`);
|
|
4225
|
+
return operatorLC === "doesnotcontain" ? not(expr) : expr;
|
|
4226
|
+
}
|
|
4227
|
+
case "endswith":
|
|
4228
|
+
case "doesnotendwith": {
|
|
4229
|
+
const expr = like(column, valueIsField ? void 0 : `%${value}`);
|
|
4230
|
+
return operatorLC === "doesnotendwith" ? not(expr) : expr;
|
|
4231
|
+
}
|
|
4232
|
+
case "null": return isNull(column);
|
|
4233
|
+
case "notnull": return not(isNull(column));
|
|
4234
|
+
case "in":
|
|
4235
|
+
case "notin": {
|
|
4236
|
+
const expr = inArray(column, toArray(value).map((v) => maybeParseNumber(v)));
|
|
4237
|
+
return operatorLC === "notin" ? not(expr) : expr;
|
|
4238
|
+
}
|
|
4239
|
+
case "between":
|
|
4240
|
+
case "notbetween": {
|
|
4241
|
+
const valueAsArray = toArray(value);
|
|
4242
|
+
if (valueAsArray.length >= 2 && isValidValue(valueAsArray[0]) && isValidValue(valueAsArray[1])) {
|
|
4243
|
+
let [first, second] = valueAsArray;
|
|
4244
|
+
const shouldParseNumbers = !(parseNumbers === false);
|
|
4245
|
+
if (!valueIsField && shouldRenderAsNumber(first, shouldParseNumbers) && shouldRenderAsNumber(second, shouldParseNumbers)) {
|
|
4246
|
+
const firstNum = parseNumber(first, { parseNumbers: shouldParseNumbers });
|
|
4247
|
+
const secondNum = parseNumber(second, { parseNumbers: shouldParseNumbers });
|
|
4248
|
+
if (!preserveValueOrder && secondNum < firstNum) {
|
|
4249
|
+
const tempNum = secondNum;
|
|
4250
|
+
second = firstNum;
|
|
4251
|
+
first = tempNum;
|
|
4252
|
+
} else {
|
|
4253
|
+
first = firstNum;
|
|
4254
|
+
second = secondNum;
|
|
4255
|
+
}
|
|
4256
|
+
} else if (valueIsField) {
|
|
4257
|
+
first = asFieldOrValue(first);
|
|
4258
|
+
second = asFieldOrValue(second);
|
|
4259
|
+
}
|
|
4260
|
+
const expr = and(gte(column, first), lte(column, second));
|
|
4261
|
+
return operatorLC === "notbetween" ? not(expr) : expr;
|
|
4262
|
+
}
|
|
4263
|
+
return;
|
|
4264
|
+
}
|
|
4265
|
+
default: return;
|
|
4266
|
+
}
|
|
4267
|
+
};
|
|
4268
|
+
//#endregion
|
|
4266
4269
|
//#region src/utils/formatQuery/formatQuery.ts
|
|
4267
4270
|
/**
|
|
4268
4271
|
* A collection of option presets for {@link formatQuery}, specifically for SQL-based formats.
|
|
@@ -4514,6 +4517,8 @@ const generateValueProcessor = (vpbr) => (field, operator, value, valueSource) =
|
|
|
4514
4517
|
/**
|
|
4515
4518
|
* Default value processor used by {@link formatQuery} for "sql" format.
|
|
4516
4519
|
*
|
|
4520
|
+
* @deprecated Prefer {@link defaultValueProcessorByRule}.
|
|
4521
|
+
*
|
|
4517
4522
|
* @group Export
|
|
4518
4523
|
*/
|
|
4519
4524
|
const defaultValueProcessor = generateValueProcessor(defaultValueProcessorByRule);
|
|
@@ -4837,7 +4842,8 @@ const mergeClassnames = (...args) => ({
|
|
|
4837
4842
|
matchThreshold: joinClassnamesByName("matchThreshold", args),
|
|
4838
4843
|
branches: joinClassnamesByName("branches", args),
|
|
4839
4844
|
hasSubQuery: joinClassnamesByName("hasSubQuery", args),
|
|
4840
|
-
loading: joinClassnamesByName("loading", args)
|
|
4845
|
+
loading: joinClassnamesByName("loading", args),
|
|
4846
|
+
valueDateTimeRelative: joinClassnamesByName("valueDateTimeRelative", args)
|
|
4841
4847
|
});
|
|
4842
4848
|
//#endregion
|
|
4843
4849
|
//#region src/utils/preferProp.ts
|