@react-querybuilder/core 8.14.4 → 8.16.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/README.md +114 -53
- package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +288 -22
- package/dist/cjs/react-querybuilder_core.cjs.development.js +796 -77
- package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +288 -22
- 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-CeJSNn37.mjs → convertQuery-BeJJH9BI.mjs} +2 -2
- package/dist/convertQuery-BeJJH9BI.mjs.map +1 -0
- package/dist/{convertQuery-J8LpTG-7.js → convertQuery-Lx2HQa0m.js} +2 -2
- package/dist/convertQuery-Lx2HQa0m.js.map +1 -0
- package/dist/formatQuery.d.mts +89 -2
- package/dist/formatQuery.d.ts +89 -2
- package/dist/formatQuery.js +775 -66
- package/dist/formatQuery.js.map +1 -1
- package/dist/formatQuery.mjs +768 -67
- package/dist/formatQuery.mjs.map +1 -1
- package/dist/{import-BwQqExpO.d.mts → import-BHlzBLM_.d.mts} +2 -2
- package/dist/{import-CrJf23Nf.d.ts → import-C6imciDf.d.ts} +2 -2
- package/dist/{index-CYT4Saz-.d.mts → index-Cjapnb-H.d.ts} +161 -10
- package/dist/{index-DBlQeLax.d.ts → index-D-Iej37L.d.mts} +161 -10
- package/dist/{objectUtils-ButT0Mng.js → objectUtils-Bzug_QfX.js} +2 -2
- package/dist/objectUtils-Bzug_QfX.js.map +1 -0
- package/dist/{objectUtils-C0WB-8ex.mjs → objectUtils-D96eEEzL.mjs} +2 -2
- package/dist/objectUtils-D96eEEzL.mjs.map +1 -0
- package/dist/parseCEL.d.mts +2 -2
- package/dist/parseCEL.d.ts +2 -2
- package/dist/parseCEL.js +35 -35
- package/dist/parseCEL.js.map +1 -1
- package/dist/parseCEL.mjs +35 -35
- package/dist/parseCEL.mjs.map +1 -1
- package/dist/parseCypher.d.mts +49 -0
- package/dist/parseCypher.d.ts +49 -0
- package/dist/parseCypher.js +578 -0
- package/dist/parseCypher.js.map +1 -0
- package/dist/parseCypher.mjs +575 -0
- package/dist/parseCypher.mjs.map +1 -0
- package/dist/parseGremlin.d.mts +35 -0
- package/dist/parseGremlin.d.ts +35 -0
- package/dist/parseGremlin.js +192 -0
- package/dist/parseGremlin.js.map +1 -0
- package/dist/parseGremlin.mjs +191 -0
- package/dist/parseGremlin.mjs.map +1 -0
- package/dist/parseJSONata.d.mts +2 -2
- package/dist/parseJSONata.d.ts +2 -2
- package/dist/parseJSONata.js +11 -11
- package/dist/parseJSONata.js.map +1 -1
- package/dist/parseJSONata.mjs +11 -11
- 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 +6 -6
- package/dist/parseJsonLogic.js.map +1 -1
- package/dist/parseJsonLogic.mjs +6 -6
- 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 +6 -6
- package/dist/parseMongoDB.js.map +1 -1
- package/dist/parseMongoDB.mjs +6 -6
- package/dist/parseMongoDB.mjs.map +1 -1
- package/dist/parseSPARQL.d.mts +34 -0
- package/dist/parseSPARQL.d.ts +34 -0
- package/dist/parseSPARQL.js +253 -0
- package/dist/parseSPARQL.js.map +1 -0
- package/dist/parseSPARQL.mjs +251 -0
- package/dist/parseSPARQL.mjs.map +1 -0
- package/dist/parseSQL.d.mts +2 -2
- package/dist/parseSQL.d.ts +2 -2
- package/dist/parseSQL.js +16 -16
- package/dist/parseSQL.js.map +1 -1
- package/dist/parseSQL.mjs +16 -16
- 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 +10 -10
- package/dist/parseSpEL.js.map +1 -1
- package/dist/parseSpEL.mjs +10 -10
- package/dist/parseSpEL.mjs.map +1 -1
- package/dist/{prepareQueryObjects-DO3qXriW.js → prepareQueryObjects-BoG5Rt8z.js} +6 -6
- package/dist/prepareQueryObjects-BoG5Rt8z.js.map +1 -0
- package/dist/{prepareQueryObjects-BfMlS4ql.mjs → prepareQueryObjects-uA10ZpZX.mjs} +6 -6
- package/dist/prepareQueryObjects-uA10ZpZX.mjs.map +1 -0
- package/dist/query-builder.css +1 -1
- package/dist/query-builder.css.map +1 -1
- package/dist/react-querybuilder_core.d.mts +288 -22
- package/dist/react-querybuilder_core.legacy-esm.d.ts +288 -22
- package/dist/react-querybuilder_core.legacy-esm.js +833 -108
- package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_core.mjs +788 -78
- package/dist/react-querybuilder_core.mjs.map +1 -1
- package/dist/react-querybuilder_core.production.d.mts +288 -22
- package/dist/react-querybuilder_core.production.mjs +1 -1
- package/dist/react-querybuilder_core.production.mjs.map +1 -1
- package/dist/styles/_main.scss +4 -0
- 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-BlMGIhvx.mjs → utils-ChLG90DP.mjs} +3 -3
- package/dist/utils-ChLG90DP.mjs.map +1 -0
- package/dist/{utils-CZRhzje-.js → utils-Qwkq2Q0F.js} +3 -3
- package/dist/utils-Qwkq2Q0F.js.map +1 -0
- package/formatQuery/package.json +1 -1
- package/package.json +53 -14
- package/parseCEL/package.json +1 -1
- package/parseCypher/package.json +4 -0
- package/parseGremlin/package.json +4 -0
- package/parseJSONata/package.json +1 -1
- package/parseJsonLogic/package.json +1 -1
- package/parseMongoDB/package.json +1 -1
- package/parseSPARQL/package.json +4 -0
- package/parseSQL/package.json +1 -1
- package/parseSpEL/package.json +1 -1
- package/transformQuery/package.json +1 -1
- package/dist/convertQuery-CeJSNn37.mjs.map +0 -1
- package/dist/convertQuery-J8LpTG-7.js.map +0 -1
- package/dist/objectUtils-ButT0Mng.js.map +0 -1
- package/dist/objectUtils-C0WB-8ex.mjs.map +0 -1
- package/dist/prepareQueryObjects-BfMlS4ql.mjs.map +0 -1
- package/dist/prepareQueryObjects-DO3qXriW.js.map +0 -1
- package/dist/utils-BlMGIhvx.mjs.map +0 -1
- package/dist/utils-CZRhzje-.js.map +0 -1
|
@@ -412,6 +412,8 @@ const standardClassnames = {
|
|
|
412
412
|
dndCopy: "dndCopy",
|
|
413
413
|
dndGroup: "dndGroup",
|
|
414
414
|
dndDropNotAllowed: "dndDropNotAllowed",
|
|
415
|
+
dndPreviewPosition: "dndPreviewPosition",
|
|
416
|
+
dndHidden: "dndHidden",
|
|
415
417
|
dragHandle: "queryBuilder-dragHandle",
|
|
416
418
|
disabled: "queryBuilder-disabled",
|
|
417
419
|
muted: "queryBuilder-muted",
|
|
@@ -468,6 +470,8 @@ const defaultControlClassnames = {
|
|
|
468
470
|
dndGroup: "",
|
|
469
471
|
dndCopy: "",
|
|
470
472
|
dndDropNotAllowed: "",
|
|
473
|
+
dndPreviewPosition: "",
|
|
474
|
+
dndHidden: "",
|
|
471
475
|
disabled: "",
|
|
472
476
|
valueListItem: "",
|
|
473
477
|
branches: "",
|
|
@@ -612,7 +616,7 @@ const toArray = (a, { retainEmptyStrings } = {}) => Array.isArray(a) ? a.map((v)
|
|
|
612
616
|
const nullFreeArray = (arr) => arr.every((el) => el === false || (el !== null && el !== void 0 ? el : false) !== false);
|
|
613
617
|
//#endregion
|
|
614
618
|
//#region src/utils/clsx.ts
|
|
615
|
-
|
|
619
|
+
/* v8 ignore start -- @preserve */
|
|
616
620
|
function toVal(mix) {
|
|
617
621
|
let k;
|
|
618
622
|
let y;
|
|
@@ -632,12 +636,13 @@ function toVal(mix) {
|
|
|
632
636
|
}
|
|
633
637
|
return str;
|
|
634
638
|
}
|
|
639
|
+
/* v8 ignore stop -- @preserve */
|
|
635
640
|
/**
|
|
636
641
|
* Vendored/adapted version of the `clsx` package.
|
|
637
642
|
*
|
|
638
643
|
* **NOTE:** Prefer the official package from npm outside the context of React Query Builder.
|
|
639
644
|
*/
|
|
640
|
-
//
|
|
645
|
+
// v8 ignore next
|
|
641
646
|
function clsx(...args) {
|
|
642
647
|
let i = 0;
|
|
643
648
|
let tmp;
|
|
@@ -655,7 +660,7 @@ function clsx(...args) {
|
|
|
655
660
|
/**
|
|
656
661
|
* Converts a value to lowercase if it's a string, otherwise returns the value as is.
|
|
657
662
|
*/
|
|
658
|
-
//
|
|
663
|
+
// v8 ignore next
|
|
659
664
|
const lc = (v) => typeof v === "string" ? v.toLowerCase() : v;
|
|
660
665
|
/**
|
|
661
666
|
* Regex matching numeric strings. Passes for positive/negative integers, decimals,
|
|
@@ -689,7 +694,7 @@ const isRuleGroupType = (rg) => isRuleGroup(rg) && typeof rg.combinator === "str
|
|
|
689
694
|
*/
|
|
690
695
|
const isRuleGroupTypeIC = (rg) => isRuleGroup(rg) && rg.combinator === void 0;
|
|
691
696
|
//#endregion
|
|
692
|
-
//#region \0@oxc-project+runtime@0.
|
|
697
|
+
//#region \0@oxc-project+runtime@0.127.0/helpers/typeof.js
|
|
693
698
|
function _typeof(o) {
|
|
694
699
|
"@babel/helpers - typeof";
|
|
695
700
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -699,7 +704,7 @@ function _typeof(o) {
|
|
|
699
704
|
}, _typeof(o);
|
|
700
705
|
}
|
|
701
706
|
//#endregion
|
|
702
|
-
//#region \0@oxc-project+runtime@0.
|
|
707
|
+
//#region \0@oxc-project+runtime@0.127.0/helpers/toPrimitive.js
|
|
703
708
|
function toPrimitive(t, r) {
|
|
704
709
|
if ("object" != _typeof(t) || !t) return t;
|
|
705
710
|
var e = t[Symbol.toPrimitive];
|
|
@@ -711,13 +716,13 @@ function toPrimitive(t, r) {
|
|
|
711
716
|
return ("string" === r ? String : Number)(t);
|
|
712
717
|
}
|
|
713
718
|
//#endregion
|
|
714
|
-
//#region \0@oxc-project+runtime@0.
|
|
719
|
+
//#region \0@oxc-project+runtime@0.127.0/helpers/toPropertyKey.js
|
|
715
720
|
function toPropertyKey(t) {
|
|
716
721
|
var i = toPrimitive(t, "string");
|
|
717
722
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
718
723
|
}
|
|
719
724
|
//#endregion
|
|
720
|
-
//#region \0@oxc-project+runtime@0.
|
|
725
|
+
//#region \0@oxc-project+runtime@0.127.0/helpers/defineProperty.js
|
|
721
726
|
function _defineProperty(e, r, t) {
|
|
722
727
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
723
728
|
value: t,
|
|
@@ -727,7 +732,7 @@ function _defineProperty(e, r, t) {
|
|
|
727
732
|
}) : e[r] = t, e;
|
|
728
733
|
}
|
|
729
734
|
//#endregion
|
|
730
|
-
//#region \0@oxc-project+runtime@0.
|
|
735
|
+
//#region \0@oxc-project+runtime@0.127.0/helpers/objectSpread2.js
|
|
731
736
|
function ownKeys(e, r) {
|
|
732
737
|
var t = Object.keys(e);
|
|
733
738
|
if (Object.getOwnPropertySymbols) {
|
|
@@ -750,7 +755,7 @@ function _objectSpread2(e) {
|
|
|
750
755
|
return e;
|
|
751
756
|
}
|
|
752
757
|
//#endregion
|
|
753
|
-
//#region \0@oxc-project+runtime@0.
|
|
758
|
+
//#region \0@oxc-project+runtime@0.127.0/helpers/objectWithoutPropertiesLoose.js
|
|
754
759
|
function _objectWithoutPropertiesLoose(r, e) {
|
|
755
760
|
if (null == r) return {};
|
|
756
761
|
var t = {};
|
|
@@ -761,7 +766,7 @@ function _objectWithoutPropertiesLoose(r, e) {
|
|
|
761
766
|
return t;
|
|
762
767
|
}
|
|
763
768
|
//#endregion
|
|
764
|
-
//#region \0@oxc-project+runtime@0.
|
|
769
|
+
//#region \0@oxc-project+runtime@0.127.0/helpers/objectWithoutProperties.js
|
|
765
770
|
function _objectWithoutProperties(e, t) {
|
|
766
771
|
if (null == e) return {};
|
|
767
772
|
var o, r, i = _objectWithoutPropertiesLoose(e, t);
|
|
@@ -860,8 +865,9 @@ const defaultValidator = (query) => {
|
|
|
860
865
|
* Replace this with your custom rule validator.
|
|
861
866
|
*/
|
|
862
867
|
const validateRule = (rule) => {
|
|
863
|
-
|
|
868
|
+
/* v8 ignore start -- @preserve */
|
|
864
869
|
if (rule.id) result[rule.id];
|
|
870
|
+
/* v8 ignore stop -- @preserve */
|
|
865
871
|
};
|
|
866
872
|
const validateGroup = (rg) => {
|
|
867
873
|
const reasons = [];
|
|
@@ -872,7 +878,7 @@ const defaultValidator = (query) => {
|
|
|
872
878
|
if (invalidICs) reasons.push(groupInvalidReasons.invalidIndependentCombinators);
|
|
873
879
|
}
|
|
874
880
|
if (isRuleGroupType(rg) && !defaultCombinators.map((c) => c.name).includes(rg.combinator) && rg.rules.length > 1) reasons.push(groupInvalidReasons.invalidCombinator);
|
|
875
|
-
/*
|
|
881
|
+
/* v8 ignore else -- @preserve */
|
|
876
882
|
if (rg.id) result[rg.id] = reasons.length > 0 ? {
|
|
877
883
|
valid: false,
|
|
878
884
|
reasons
|
|
@@ -1040,7 +1046,7 @@ function getFirstOption(arr) {
|
|
|
1040
1046
|
var _og$options$0$value;
|
|
1041
1047
|
return (_og$options$0$value = og.options[0].value) !== null && _og$options$0$value !== void 0 ? _og$options$0$value : og.options[0].name;
|
|
1042
1048
|
}
|
|
1043
|
-
//
|
|
1049
|
+
// v8 ignore next
|
|
1044
1050
|
return null;
|
|
1045
1051
|
}
|
|
1046
1052
|
return (_arr$0$value = arr[0].value) !== null && _arr$0$value !== void 0 ? _arr$0$value : arr[0].name;
|
|
@@ -1088,7 +1094,7 @@ const uniqOptList = (originalArray) => {
|
|
|
1088
1094
|
return uniqByIdentifier(originalArray.map((o) => toFullOption(o)));
|
|
1089
1095
|
};
|
|
1090
1096
|
const prepareOptionList = (props) => {
|
|
1091
|
-
//
|
|
1097
|
+
// v8 ignore next
|
|
1092
1098
|
const { optionList: optionListPropOriginal, baseOption = {}, labelMap = {}, placeholder: { placeholderName = "~", placeholderLabel = defaultPlaceholderLabel, placeholderGroupLabel = defaultPlaceholderLabel } = {}, autoSelectOption = true } = props;
|
|
1093
1099
|
const defaultOption = {
|
|
1094
1100
|
id: placeholderName,
|
|
@@ -1113,11 +1119,13 @@ const prepareOptionList = (props) => {
|
|
|
1113
1119
|
optionsMap = autoSelectOption ? op : _objectSpread2(_objectSpread2({}, op), {}, { [placeholderName]: defaultOption });
|
|
1114
1120
|
} else if (isFlexibleOptionGroupArray(optionList)) for (const og of optionList) for (const opt of og.options) {
|
|
1115
1121
|
var _opt$value3;
|
|
1116
|
-
optionsMap[(_opt$value3 = opt.value) !== null && _opt$value3 !== void 0 ? _opt$value3 :
|
|
1122
|
+
optionsMap[(_opt$value3 = opt.value) !== null && _opt$value3 !== void 0 ? _opt$value3 :
|
|
1123
|
+
/* v8 ignore start -- @preserve */ opt.name] = toFullOption(opt, baseOption);
|
|
1117
1124
|
}
|
|
1118
1125
|
else for (const opt of optionList) {
|
|
1119
1126
|
var _opt$value4;
|
|
1120
|
-
optionsMap[(_opt$value4 = opt.value) !== null && _opt$value4 !== void 0 ? _opt$value4 :
|
|
1127
|
+
optionsMap[(_opt$value4 = opt.value) !== null && _opt$value4 !== void 0 ? _opt$value4 :
|
|
1128
|
+
/* v8 ignore start -- @preserve */ opt.name] = toFullOption(opt, baseOption);
|
|
1121
1129
|
}
|
|
1122
1130
|
return {
|
|
1123
1131
|
defaultOption,
|
|
@@ -1133,7 +1141,8 @@ const filterByComparator = (field, operator, fieldToCompare) => {
|
|
|
1133
1141
|
const fullFieldToCompare = toFullOption(fieldToCompare);
|
|
1134
1142
|
if (fullField.value === fullFieldToCompare.value) return false;
|
|
1135
1143
|
if (typeof fullField.comparator === "string") return fullField[fullField.comparator] === fullFieldToCompare[fullField.comparator];
|
|
1136
|
-
return (_fullField$comparator = (_fullField$comparator2 = fullField.comparator) === null || _fullField$comparator2 === void 0 ? void 0 : _fullField$comparator2.call(fullField, fullFieldToCompare, operator)) !== null && _fullField$comparator !== void 0 ? _fullField$comparator :
|
|
1144
|
+
return (_fullField$comparator = (_fullField$comparator2 = fullField.comparator) === null || _fullField$comparator2 === void 0 ? void 0 : _fullField$comparator2.call(fullField, fullFieldToCompare, operator)) !== null && _fullField$comparator !== void 0 ? _fullField$comparator :
|
|
1145
|
+
/* v8 ignore start -- @preserve */ false;
|
|
1137
1146
|
};
|
|
1138
1147
|
/**
|
|
1139
1148
|
* For a given {@link FullField}, returns the `fields` list filtered for
|
|
@@ -1150,7 +1159,8 @@ const filterFieldsByComparator = (field, fields, operator) => {
|
|
|
1150
1159
|
if (!field.comparator) {
|
|
1151
1160
|
const filterOutSameField = (f) => {
|
|
1152
1161
|
var _f$value, _field$value;
|
|
1153
|
-
return ((_f$value = f.value) !== null && _f$value !== void 0 ? _f$value : f.name) !== ((_field$value = field.value) !== null && _field$value !== void 0 ? _field$value :
|
|
1162
|
+
return ((_f$value = f.value) !== null && _f$value !== void 0 ? _f$value : /* v8 ignore start -- @preserve */ f.name) !== ((_field$value = field.value) !== null && _field$value !== void 0 ? _field$value :
|
|
1163
|
+
/* v8 ignore start -- @preserve */ field.name);
|
|
1154
1164
|
};
|
|
1155
1165
|
if (isFlexibleOptionGroupArray(fields)) return fields.map((og) => _objectSpread2(_objectSpread2({}, og), {}, { options: og.options.filter((v) => filterOutSameField(v)) }));
|
|
1156
1166
|
return fields.filter((v) => filterOutSameField(v));
|
|
@@ -1226,7 +1236,7 @@ const isRuleOrGroupValid = (rg, validationResult, validator) => {
|
|
|
1226
1236
|
if (typeof validator === "function" && !isRuleGroup(rg)) {
|
|
1227
1237
|
const vr = validator(rg);
|
|
1228
1238
|
if (typeof vr === "boolean") return vr;
|
|
1229
|
-
//
|
|
1239
|
+
// v8 ignore else
|
|
1230
1240
|
if (isValidationResult(vr)) return vr.valid;
|
|
1231
1241
|
}
|
|
1232
1242
|
return true;
|
|
@@ -1340,7 +1350,7 @@ const numerifyValues = (rg, options) => _objectSpread2(_objectSpread2({}, rg), {
|
|
|
1340
1350
|
if (Array.isArray(r.value)) return _objectSpread2(_objectSpread2({}, r), {}, { value: r.value.map((v) => parseNumber(v, { parseNumbers })) });
|
|
1341
1351
|
const valAsArray = toArray(r.value, { retainEmptyStrings: true }).map((v) => parseNumber(v, { parseNumbers }));
|
|
1342
1352
|
if (valAsArray.every((v) => typeof v === "number")) {
|
|
1343
|
-
//
|
|
1353
|
+
// v8 ignore else
|
|
1344
1354
|
if (valAsArray.length > 1) return _objectSpread2(_objectSpread2({}, r), {}, { value: valAsArray });
|
|
1345
1355
|
else if (valAsArray.length === 1) return _objectSpread2(_objectSpread2({}, r), {}, { value: valAsArray[0] });
|
|
1346
1356
|
}
|
|
@@ -1441,7 +1451,9 @@ const translationMatchFilter = (key, keyToTest, conditions) => keyToTest.startsW
|
|
|
1441
1451
|
*/
|
|
1442
1452
|
const getNLTranslataion = (key, translations, conditions = []) => {
|
|
1443
1453
|
var _ref, _translations$key, _ref2, _ref3, _Object$entries$find$, _Object$entries$find, _Object$entries$find2;
|
|
1444
|
-
return conditions.length === 0 ? (_ref = (_translations$key = translations[key]) !== null && _translations$key !== void 0 ? _translations$key : defaultNLTranslations[key]) !== null && _ref !== void 0 ? _ref :
|
|
1454
|
+
return conditions.length === 0 ? (_ref = (_translations$key = translations[key]) !== null && _translations$key !== void 0 ? _translations$key : defaultNLTranslations[key]) !== null && _ref !== void 0 ? _ref :
|
|
1455
|
+
/* v8 ignore start -- @preserve */ "" : (_ref2 = (_ref3 = (_Object$entries$find$ = (_Object$entries$find = Object.entries(translations).find(([keyToTest]) => translationMatchFilter(key, keyToTest, conditions))) === null || _Object$entries$find === void 0 ? void 0 : _Object$entries$find[1]) !== null && _Object$entries$find$ !== void 0 ? _Object$entries$find$ : (_Object$entries$find2 = Object.entries(defaultNLTranslations).find(([keyToTest]) => translationMatchFilter(key, keyToTest, conditions))) === null || _Object$entries$find2 === void 0 ? void 0 : _Object$entries$find2[1]) !== null && _ref3 !== void 0 ? _ref3 : defaultNLTranslations[key]) !== null && _ref2 !== void 0 ? _ref2 :
|
|
1456
|
+
/* v8 ignore next -- @preserve */ "";
|
|
1445
1457
|
};
|
|
1446
1458
|
/**
|
|
1447
1459
|
* Transforms
|
|
@@ -1498,7 +1510,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
|
|
|
1498
1510
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
1499
1511
|
const processRuleGroup = (rg, outermost) => {
|
|
1500
1512
|
var _rg$id;
|
|
1501
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermost ? fallbackExpression : "";
|
|
1513
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
|
|
1502
1514
|
const processedRules = [];
|
|
1503
1515
|
let precedingCombinator = "";
|
|
1504
1516
|
let firstRule = true;
|
|
@@ -1546,7 +1558,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
|
|
|
1546
1558
|
//#endregion
|
|
1547
1559
|
//#region src/utils/formatQuery/defaultRuleProcessorCEL.ts
|
|
1548
1560
|
const shouldNegate$2 = (op) => op.startsWith("not") || op.startsWith("doesnot");
|
|
1549
|
-
const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
|
|
1561
|
+
const escapeDoubleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
|
|
1550
1562
|
/**
|
|
1551
1563
|
* Default rule processor used by {@link formatQuery} for "cel" format.
|
|
1552
1564
|
*
|
|
@@ -1585,19 +1597,19 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
|
|
|
1585
1597
|
case "==":
|
|
1586
1598
|
case "!=":
|
|
1587
1599
|
case ">":
|
|
1588
|
-
case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`}`;
|
|
1600
|
+
case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`}`;
|
|
1589
1601
|
case "contains":
|
|
1590
|
-
case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
|
|
1602
|
+
case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
|
|
1591
1603
|
case "beginswith":
|
|
1592
|
-
case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
|
|
1604
|
+
case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
|
|
1593
1605
|
case "endswith":
|
|
1594
|
-
case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
|
|
1606
|
+
case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
|
|
1595
1607
|
case "null": return `${field} == null`;
|
|
1596
1608
|
case "notnull": return `${field} != null`;
|
|
1597
1609
|
case "in":
|
|
1598
1610
|
case "notin": {
|
|
1599
1611
|
const [prefix, suffix] = shouldNegate$2(operatorTL) ? ["!(", ")"] : ["", ""];
|
|
1600
|
-
return `${prefix}${field} in [${toArray(value).map((val) => valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `"${escapeDoubleQuotes(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
|
|
1612
|
+
return `${prefix}${field} in [${toArray(value).map((val) => valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `"${escapeDoubleQuotes$1(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
|
|
1601
1613
|
}
|
|
1602
1614
|
case "between":
|
|
1603
1615
|
case "notbetween": {
|
|
@@ -1607,8 +1619,8 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
|
|
|
1607
1619
|
const shouldParseNumbers = !(parseNumbers === false);
|
|
1608
1620
|
const firstNum = shouldRenderAsNumber(first, shouldParseNumbers) ? parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
1609
1621
|
const secondNum = shouldRenderAsNumber(second, shouldParseNumbers) ? parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
1610
|
-
let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes(first, escapeQuotes)}"` : firstNum;
|
|
1611
|
-
let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes(second, escapeQuotes)}"` : secondNum;
|
|
1622
|
+
let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes$1(first, escapeQuotes)}"` : firstNum;
|
|
1623
|
+
let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes$1(second, escapeQuotes)}"` : secondNum;
|
|
1612
1624
|
if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
|
|
1613
1625
|
const tempNum = secondNum;
|
|
1614
1626
|
secondValue = firstNum;
|
|
@@ -1638,7 +1650,7 @@ const defaultRuleGroupProcessorMongoDBQuery = (ruleGroup, options, meta) => {
|
|
|
1638
1650
|
const { inExpressionContext } = context !== null && context !== void 0 ? context : {};
|
|
1639
1651
|
const processRuleGroup = (rg, outermost) => {
|
|
1640
1652
|
var _rg$id;
|
|
1641
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermost ? mongoDbFallback : false;
|
|
1653
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? mongoDbFallback : false;
|
|
1642
1654
|
const combinator = `$${lc(rg.combinator)}`;
|
|
1643
1655
|
let hasChildRules = false;
|
|
1644
1656
|
const expressions = rg.rules.map((rule) => {
|
|
@@ -1804,7 +1816,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
|
|
|
1804
1816
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
1805
1817
|
const processRuleGroup = (rg, outermost) => {
|
|
1806
1818
|
var _rg$id;
|
|
1807
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermost ? fallbackExpression : "";
|
|
1819
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
|
|
1808
1820
|
const processedRules = [];
|
|
1809
1821
|
let precedingCombinator = "";
|
|
1810
1822
|
let firstRule = true;
|
|
@@ -1853,7 +1865,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
|
|
|
1853
1865
|
//#region src/utils/formatQuery/defaultRuleProcessorSpEL.ts
|
|
1854
1866
|
const shouldNegate$1 = (op) => op.startsWith("not") || op.startsWith("doesnot");
|
|
1855
1867
|
const wrapInNegation = (clause, negate) => negate ? `!(${clause})` : clause;
|
|
1856
|
-
const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
|
|
1868
|
+
const escapeSingleQuotes$2 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
|
|
1857
1869
|
/**
|
|
1858
1870
|
* Default rule processor used by {@link formatQuery} for "spel" format.
|
|
1859
1871
|
*
|
|
@@ -1891,20 +1903,20 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
|
|
|
1891
1903
|
case "==":
|
|
1892
1904
|
case "!=":
|
|
1893
1905
|
case ">":
|
|
1894
|
-
case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`;
|
|
1906
|
+
case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`;
|
|
1895
1907
|
case "contains":
|
|
1896
|
-
case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
1908
|
+
case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
1897
1909
|
case "beginswith":
|
|
1898
|
-
case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
1910
|
+
case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
1899
1911
|
case "endswith":
|
|
1900
|
-
case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
|
|
1912
|
+
case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
|
|
1901
1913
|
case "null": return `${field} == null`;
|
|
1902
1914
|
case "notnull": return `${field} != null`;
|
|
1903
1915
|
case "in":
|
|
1904
1916
|
case "notin": {
|
|
1905
1917
|
const negate = shouldNegate$1(operatorTL) ? "!" : "";
|
|
1906
1918
|
const valueAsArray = toArray(value);
|
|
1907
|
-
return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `'${escapeSingleQuotes(val, escapeQuotes)}'`}`).join(" or ")})` : "";
|
|
1919
|
+
return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${trimIfString(val)}` : `'${escapeSingleQuotes$2(val, escapeQuotes)}'`}`).join(" or ")})` : "";
|
|
1908
1920
|
}
|
|
1909
1921
|
case "between":
|
|
1910
1922
|
case "notbetween": {
|
|
@@ -1914,8 +1926,8 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
|
|
|
1914
1926
|
const shouldParseNumbers = !(parseNumbers === false);
|
|
1915
1927
|
const firstNum = shouldRenderAsNumber(first, shouldParseNumbers) ? parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
1916
1928
|
const secondNum = shouldRenderAsNumber(second, shouldParseNumbers) ? parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
1917
|
-
let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes(first, escapeQuotes)}'` : firstNum;
|
|
1918
|
-
let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes(second, escapeQuotes)}'` : secondNum;
|
|
1929
|
+
let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes$2(first, escapeQuotes)}'` : firstNum;
|
|
1930
|
+
let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes$2(second, escapeQuotes)}'` : secondNum;
|
|
1919
1931
|
if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
|
|
1920
1932
|
const tempNum = secondNum;
|
|
1921
1933
|
secondValue = firstNum;
|
|
@@ -1984,6 +1996,71 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
|
|
|
1984
1996
|
return valueIsField ? wrapFieldName(value) : shouldRenderAsNumber(value, parseNumbers) ? `${trimIfString(value)}` : `${wrapAndEscape(value)}`;
|
|
1985
1997
|
};
|
|
1986
1998
|
//#endregion
|
|
1999
|
+
//#region src/utils/formatQuery/defaultRuleGroupProcessorCypher.ts
|
|
2000
|
+
/**
|
|
2001
|
+
* Maps a {@link DefaultCombinatorName} to a Cypher combinator keyword.
|
|
2002
|
+
*
|
|
2003
|
+
* @group Export
|
|
2004
|
+
*/
|
|
2005
|
+
const cypherCombinatorMap = {
|
|
2006
|
+
and: "AND",
|
|
2007
|
+
or: "OR"
|
|
2008
|
+
};
|
|
2009
|
+
/**
|
|
2010
|
+
* Rule group processor used by {@link formatQuery} for "cypher" and "gql" formats.
|
|
2011
|
+
*
|
|
2012
|
+
* @group Export
|
|
2013
|
+
*/
|
|
2014
|
+
const defaultRuleGroupProcessorCypher = (ruleGroup, options) => {
|
|
2015
|
+
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2016
|
+
const processRuleGroup = (rg, outermost) => {
|
|
2017
|
+
var _rg$id;
|
|
2018
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
|
|
2019
|
+
const processedRules = [];
|
|
2020
|
+
let precedingCombinator = "";
|
|
2021
|
+
let firstRule = true;
|
|
2022
|
+
for (const rule of rg.rules) {
|
|
2023
|
+
var _rule$valueSource;
|
|
2024
|
+
if (typeof rule === "string") {
|
|
2025
|
+
precedingCombinator = cypherCombinatorMap[rule];
|
|
2026
|
+
continue;
|
|
2027
|
+
}
|
|
2028
|
+
if (isRuleGroup(rule)) {
|
|
2029
|
+
const processedGroup = processRuleGroup(rule);
|
|
2030
|
+
if (processedGroup) {
|
|
2031
|
+
if (!firstRule && precedingCombinator) {
|
|
2032
|
+
processedRules.push(precedingCombinator);
|
|
2033
|
+
precedingCombinator = "";
|
|
2034
|
+
}
|
|
2035
|
+
firstRule = false;
|
|
2036
|
+
processedRules.push(processedGroup);
|
|
2037
|
+
}
|
|
2038
|
+
continue;
|
|
2039
|
+
}
|
|
2040
|
+
const [validationResult, fieldValidator] = validateRule(rule);
|
|
2041
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
|
|
2042
|
+
const fieldData = getOption(fields, rule.field);
|
|
2043
|
+
const processedRule = ruleProcessor(rule, _objectSpread2(_objectSpread2({}, options), {}, {
|
|
2044
|
+
parseNumbers: getParseNumberBoolean(fieldData === null || fieldData === void 0 ? void 0 : fieldData.inputType),
|
|
2045
|
+
escapeQuotes: ((_rule$valueSource = rule.valueSource) !== null && _rule$valueSource !== void 0 ? _rule$valueSource : "value") === "value",
|
|
2046
|
+
fieldData
|
|
2047
|
+
}));
|
|
2048
|
+
if (processedRule) {
|
|
2049
|
+
if (!firstRule && precedingCombinator) {
|
|
2050
|
+
processedRules.push(precedingCombinator);
|
|
2051
|
+
precedingCombinator = "";
|
|
2052
|
+
}
|
|
2053
|
+
firstRule = false;
|
|
2054
|
+
processedRules.push(processedRule);
|
|
2055
|
+
}
|
|
2056
|
+
}
|
|
2057
|
+
const expression = processedRules.join(isRuleGroupType(rg) ? ` ${cypherCombinatorMap[rg.combinator]} ` : " ");
|
|
2058
|
+
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "NOT " : ""}(`, ")"] : ["", ""];
|
|
2059
|
+
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
2060
|
+
};
|
|
2061
|
+
return processRuleGroup(ruleGroup, true);
|
|
2062
|
+
};
|
|
2063
|
+
//#endregion
|
|
1987
2064
|
//#region src/utils/formatQuery/defaultRuleProcessorDrizzle.ts
|
|
1988
2065
|
/**
|
|
1989
2066
|
* Default rule processor used by {@link formatQuery} for the "drizzle" format.
|
|
@@ -1991,22 +2068,22 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
|
|
|
1991
2068
|
* @group Export
|
|
1992
2069
|
*/
|
|
1993
2070
|
const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
1994
|
-
const opts = _options !== null && _options !== void 0 ? _options :
|
|
1995
|
-
//
|
|
2071
|
+
const opts = _options !== null && _options !== void 0 ? _options : /* v8 ignore start -- @preserve */ {};
|
|
2072
|
+
// v8 ignore next
|
|
1996
2073
|
const { parseNumbers, preserveValueOrder, context = {} } = opts;
|
|
1997
2074
|
const { columns, drizzleOperators, useRawFields } = context;
|
|
1998
|
-
if (!columns || !drizzleOperators) return;
|
|
2075
|
+
if (!columns || !drizzleOperators) return void 0;
|
|
1999
2076
|
const { between, eq, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, notBetween, notInArray, notLike, sql } = drizzleOperators;
|
|
2000
2077
|
const { field, operator, value, valueSource } = rule;
|
|
2001
2078
|
const column = useRawFields && /[a-z][a-z0-9]*/i.test(field) ? sql.raw(field) : columns[field];
|
|
2002
2079
|
const operatorLC = lc(operator);
|
|
2003
2080
|
const valueIsField = valueSource === "field";
|
|
2004
2081
|
const asFieldOrValue = (v) => valueIsField ? columns[v] : v;
|
|
2005
|
-
if (!column) return;
|
|
2082
|
+
if (!column) return void 0;
|
|
2006
2083
|
const matchEval = processMatchMode(rule);
|
|
2007
2084
|
if (matchEval === false) return;
|
|
2008
2085
|
else if (matchEval) {
|
|
2009
|
-
if (opts.preset !== "postgresql") return;
|
|
2086
|
+
if (opts.preset !== "postgresql") return void 0;
|
|
2010
2087
|
const { mode, threshold } = matchEval;
|
|
2011
2088
|
const arrayElementAlias = "elem_alias";
|
|
2012
2089
|
const nestedArrayFilter = defaultRuleGroupProcessorDrizzle(transformQuery(rule.value, { ruleProcessor: (r) => _objectSpread2(_objectSpread2({}, r), {}, { field: arrayElementAlias }) }), _objectSpread2(_objectSpread2({}, opts), {}, { context: _objectSpread2(_objectSpread2({}, opts.context), {}, { useRawFields: true }) }));
|
|
@@ -2086,12 +2163,12 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
|
2086
2163
|
*/
|
|
2087
2164
|
const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns, drizzleOperators) => {
|
|
2088
2165
|
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap } = options;
|
|
2089
|
-
if (!columns || !drizzleOperators) return;
|
|
2166
|
+
if (!columns || !drizzleOperators) return void 0;
|
|
2090
2167
|
const { and, not, or } = drizzleOperators;
|
|
2091
2168
|
const ruleProcessor = defaultRuleProcessorDrizzle;
|
|
2092
2169
|
const processRuleGroup = (rg, _outermost) => {
|
|
2093
2170
|
var _rg$id;
|
|
2094
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return;
|
|
2171
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return;
|
|
2095
2172
|
const processedRules = rg.rules.map((rule) => {
|
|
2096
2173
|
if (isRuleGroup(rule)) return processRuleGroup(rule);
|
|
2097
2174
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
@@ -2123,7 +2200,7 @@ const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
|
|
|
2123
2200
|
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2124
2201
|
const processRuleGroup = (rg) => {
|
|
2125
2202
|
var _rg$id;
|
|
2126
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return false;
|
|
2203
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return false;
|
|
2127
2204
|
const processedRules = rg.rules.map((rule) => {
|
|
2128
2205
|
if (isRuleGroup(rule)) return processRuleGroup(rule);
|
|
2129
2206
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
@@ -2141,6 +2218,69 @@ const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
|
|
|
2141
2218
|
return processedRuleGroup === false ? {} : processedRuleGroup;
|
|
2142
2219
|
};
|
|
2143
2220
|
//#endregion
|
|
2221
|
+
//#region src/utils/formatQuery/defaultRuleGroupProcessorGremlin.ts
|
|
2222
|
+
/**
|
|
2223
|
+
* Rule group processor used by {@link formatQuery} for "gremlin" format.
|
|
2224
|
+
*
|
|
2225
|
+
* At the top level, filter rules produce chained `.has()` steps (implicit AND).
|
|
2226
|
+
* Nested groups use `.and()` / `.or()` / `.not()` compound traversals with
|
|
2227
|
+
* `__` anonymous traversal prefixes.
|
|
2228
|
+
*
|
|
2229
|
+
* @group Export
|
|
2230
|
+
*/
|
|
2231
|
+
const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
|
|
2232
|
+
var _ruleGroup$id;
|
|
2233
|
+
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2234
|
+
const validateAndProcess = (rule) => {
|
|
2235
|
+
var _rule$valueSource;
|
|
2236
|
+
// v8 ignore next -- @preserve
|
|
2237
|
+
if (typeof rule === "string" || isRuleGroup(rule)) return void 0;
|
|
2238
|
+
const [validationResult, fieldValidator] = validateRule(rule);
|
|
2239
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
|
|
2240
|
+
const fieldData = getOption(fields, rule.field);
|
|
2241
|
+
return ruleProcessor(rule, _objectSpread2(_objectSpread2({}, options), {}, {
|
|
2242
|
+
parseNumbers: getParseNumberBoolean(fieldData === null || fieldData === void 0 ? void 0 : fieldData.inputType),
|
|
2243
|
+
escapeQuotes: ((_rule$valueSource = rule.valueSource) !== null && _rule$valueSource !== void 0 ? _rule$valueSource : "value") === "value",
|
|
2244
|
+
fieldData
|
|
2245
|
+
}));
|
|
2246
|
+
};
|
|
2247
|
+
/** Recursively processes a nested group into `.and()`/`.or()`/`.not()` form. */
|
|
2248
|
+
const processNested = (rg) => {
|
|
2249
|
+
var _rg$id, _combinator;
|
|
2250
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return "";
|
|
2251
|
+
const predicates = [];
|
|
2252
|
+
for (const rule of rg.rules) {
|
|
2253
|
+
if (typeof rule === "string") continue;
|
|
2254
|
+
if (isRuleGroup(rule)) {
|
|
2255
|
+
const nested = processNested(rule);
|
|
2256
|
+
if (nested) predicates.push(nested);
|
|
2257
|
+
continue;
|
|
2258
|
+
}
|
|
2259
|
+
const processed = validateAndProcess(rule);
|
|
2260
|
+
if (processed) predicates.push(processed);
|
|
2261
|
+
}
|
|
2262
|
+
if (predicates.length === 0) return "";
|
|
2263
|
+
const combinator = (_combinator = rg.combinator) !== null && _combinator !== void 0 ? _combinator : "and";
|
|
2264
|
+
const prefix = rg.not ? "not" : combinator;
|
|
2265
|
+
if (predicates.length === 1 && !rg.not) return predicates[0];
|
|
2266
|
+
return `.${prefix}(${predicates.map((p) => p.startsWith(".") ? `__${p}` : p).join(", ")})`;
|
|
2267
|
+
};
|
|
2268
|
+
if (!isRuleOrGroupValid(ruleGroup, validationMap[(_ruleGroup$id = ruleGroup.id) !== null && _ruleGroup$id !== void 0 ? _ruleGroup$id : /* v8 ignore start -- @preserve */ ""])) return fallbackExpression;
|
|
2269
|
+
const steps = [];
|
|
2270
|
+
for (const rule of ruleGroup.rules) {
|
|
2271
|
+
if (typeof rule === "string") continue;
|
|
2272
|
+
if (isRuleGroup(rule)) {
|
|
2273
|
+
const compound = processNested(rule);
|
|
2274
|
+
if (compound) steps.push(compound);
|
|
2275
|
+
continue;
|
|
2276
|
+
}
|
|
2277
|
+
const processed = validateAndProcess(rule);
|
|
2278
|
+
if (processed) steps.push(processed);
|
|
2279
|
+
}
|
|
2280
|
+
if (steps.length === 0) return fallbackExpression;
|
|
2281
|
+
return steps.join("");
|
|
2282
|
+
};
|
|
2283
|
+
//#endregion
|
|
2144
2284
|
//#region src/utils/formatQuery/defaultRuleGroupProcessorJSONata.ts
|
|
2145
2285
|
/**
|
|
2146
2286
|
* Rule group processor used by {@link formatQuery} for "jsonata" format.
|
|
@@ -2151,7 +2291,7 @@ const defaultRuleGroupProcessorJSONata = (ruleGroup, options) => {
|
|
|
2151
2291
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2152
2292
|
const processRuleGroup = (rg, outermost) => {
|
|
2153
2293
|
var _rg$id;
|
|
2154
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermost ? fallbackExpression : "";
|
|
2294
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
|
|
2155
2295
|
const processedRules = [];
|
|
2156
2296
|
let precedingCombinator = "";
|
|
2157
2297
|
let firstRule = true;
|
|
@@ -2208,7 +2348,7 @@ const defaultRuleGroupProcessorJsonLogic = (ruleGroup, options) => {
|
|
|
2208
2348
|
const query = convertFromIC(ruleGroup);
|
|
2209
2349
|
const processRuleGroup = (rg, _outermost) => {
|
|
2210
2350
|
var _rg$id;
|
|
2211
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return false;
|
|
2351
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return false;
|
|
2212
2352
|
const processedRules = rg.rules.map((rule) => {
|
|
2213
2353
|
if (isRuleGroup(rule)) return processRuleGroup(rule);
|
|
2214
2354
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
@@ -2236,7 +2376,7 @@ const defaultRuleGroupProcessorLDAP = (ruleGroup, options) => {
|
|
|
2236
2376
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2237
2377
|
const processRuleGroup = (rg, outermost) => {
|
|
2238
2378
|
var _rg$id;
|
|
2239
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermost ? fallbackExpression : "";
|
|
2379
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
|
|
2240
2380
|
const rules = rg.rules.map((rule) => {
|
|
2241
2381
|
var _rule$valueSource;
|
|
2242
2382
|
if (isRuleGroup(rule)) return processRuleGroup(rule);
|
|
@@ -2270,7 +2410,7 @@ const defaultRuleGroupProcessorMongoDB = (ruleGroup, options, meta) => {
|
|
|
2270
2410
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2271
2411
|
const processRuleGroup = (rg, outermost) => {
|
|
2272
2412
|
var _rg$id;
|
|
2273
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermost ? fallbackExpression : "";
|
|
2413
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
|
|
2274
2414
|
const combinator = `"$${lc(rg.combinator)}"`;
|
|
2275
2415
|
let hasChildRules = false;
|
|
2276
2416
|
const expressions = rg.rules.map((rule) => {
|
|
@@ -2307,7 +2447,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
2307
2447
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, translations, validateRule, validationMap } = options;
|
|
2308
2448
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
2309
2449
|
var _rg$id, _rg2$combinator2, _translations2;
|
|
2310
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
2450
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
|
|
2311
2451
|
const rg2 = isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && lc(r) === "xor") ? convertFromIC(rg) : rg;
|
|
2312
2452
|
const processedRules = [];
|
|
2313
2453
|
let precedingCombinator = "";
|
|
@@ -2321,8 +2461,9 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
2321
2461
|
}
|
|
2322
2462
|
if (isRuleGroup(rule)) {
|
|
2323
2463
|
var _rg2$combinator;
|
|
2324
|
-
const processedGroup = processRuleGroup(rule, rg2.rules.length === 1 && !(rg2.not || /^xor$/i.test((_rg2$combinator = rg2.combinator) !== null && _rg2$combinator !== void 0 ? _rg2$combinator :
|
|
2325
|
-
|
|
2464
|
+
const processedGroup = processRuleGroup(rule, rg2.rules.length === 1 && !(rg2.not || /^xor$/i.test((_rg2$combinator = rg2.combinator) !== null && _rg2$combinator !== void 0 ? _rg2$combinator :
|
|
2465
|
+
/* v8 ignore start -- @preserve */ "")));
|
|
2466
|
+
// v8 ignore else
|
|
2326
2467
|
if (processedGroup) {
|
|
2327
2468
|
if (!firstRule && precedingCombinator) {
|
|
2328
2469
|
processedRules.push(precedingCombinator);
|
|
@@ -2396,7 +2537,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
|
|
|
2396
2537
|
if (!isPojo(processedRule)) return "";
|
|
2397
2538
|
const { sql, params: customParams } = processedRule;
|
|
2398
2539
|
if (typeof sql !== "string" || !sql) return "";
|
|
2399
|
-
//
|
|
2540
|
+
// v8 ignore else
|
|
2400
2541
|
if (format === "parameterized" && Array.isArray(customParams)) params.push(...customParams);
|
|
2401
2542
|
else if (format === "parameterized_named" && isPojo(customParams)) {
|
|
2402
2543
|
var _fieldParams$get;
|
|
@@ -2407,7 +2548,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
|
|
|
2407
2548
|
};
|
|
2408
2549
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
2409
2550
|
var _rg$id;
|
|
2410
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
2551
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
|
|
2411
2552
|
const processedRules = [];
|
|
2412
2553
|
let precedingCombinator = "";
|
|
2413
2554
|
let firstRule = true;
|
|
@@ -2418,7 +2559,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
|
|
|
2418
2559
|
}
|
|
2419
2560
|
if (isRuleGroup(rule)) {
|
|
2420
2561
|
const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
|
|
2421
|
-
//
|
|
2562
|
+
// v8 ignore else
|
|
2422
2563
|
if (processedGroup) {
|
|
2423
2564
|
if (!firstRule && precedingCombinator) {
|
|
2424
2565
|
processedRules.push(precedingCombinator);
|
|
@@ -2468,7 +2609,7 @@ const defaultRuleGroupProcessorPrisma = (ruleGroup, options) => {
|
|
|
2468
2609
|
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2469
2610
|
const processRuleGroup = (rg, outermost) => {
|
|
2470
2611
|
var _rg$id;
|
|
2471
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermost ? prismaFallback : void 0;
|
|
2612
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? prismaFallback : void 0;
|
|
2472
2613
|
const combinator = rg.combinator.toUpperCase();
|
|
2473
2614
|
let hasChildRules = false;
|
|
2474
2615
|
const expressions = rg.rules.map((rule) => {
|
|
@@ -2501,13 +2642,13 @@ const defaultRuleGroupProcessorPrisma = (ruleGroup, options) => {
|
|
|
2501
2642
|
* @group Export
|
|
2502
2643
|
*/
|
|
2503
2644
|
const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
|
|
2504
|
-
//
|
|
2645
|
+
// v8 ignore next
|
|
2505
2646
|
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap, context = {} } = options;
|
|
2506
2647
|
const { sequelizeOperators: Op } = context;
|
|
2507
|
-
if (!Op) return;
|
|
2648
|
+
if (!Op) return void 0;
|
|
2508
2649
|
const processRuleGroup = (rg, _outermost) => {
|
|
2509
2650
|
var _rg$id;
|
|
2510
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return;
|
|
2651
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return;
|
|
2511
2652
|
const combinator = rg.combinator.toUpperCase();
|
|
2512
2653
|
let hasChildRules = false;
|
|
2513
2654
|
const expressions = rg.rules.map((rule) => {
|
|
@@ -2527,13 +2668,71 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
|
|
|
2527
2668
|
fieldData
|
|
2528
2669
|
}));
|
|
2529
2670
|
}).filter(Boolean);
|
|
2530
|
-
if (expressions.length === 0) return;
|
|
2671
|
+
if (expressions.length === 0) return void 0;
|
|
2531
2672
|
const result = expressions.length === 1 && !hasChildRules ? expressions[0] : { [lc(combinator) === "or" ? Op.or : Op.and]: expressions };
|
|
2532
2673
|
return rg.not ? { [Op.not]: result } : result;
|
|
2533
2674
|
};
|
|
2534
2675
|
return processRuleGroup(convertFromIC(ruleGroup), true);
|
|
2535
2676
|
};
|
|
2536
2677
|
//#endregion
|
|
2678
|
+
//#region src/utils/formatQuery/defaultRuleGroupProcessorSPARQL.ts
|
|
2679
|
+
/**
|
|
2680
|
+
* Rule group processor used by {@link formatQuery} for "sparql" format.
|
|
2681
|
+
*
|
|
2682
|
+
* SPARQL uses the same combinators as CEL (`&&` / `||`) and `!()` for negation.
|
|
2683
|
+
*
|
|
2684
|
+
* @group Export
|
|
2685
|
+
*/
|
|
2686
|
+
const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
|
|
2687
|
+
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2688
|
+
const processRuleGroup = (rg, outermost) => {
|
|
2689
|
+
var _rg$id;
|
|
2690
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermost ? fallbackExpression : "";
|
|
2691
|
+
const processedRules = [];
|
|
2692
|
+
let precedingCombinator = "";
|
|
2693
|
+
let firstRule = true;
|
|
2694
|
+
for (const rule of rg.rules) {
|
|
2695
|
+
var _rule$valueSource;
|
|
2696
|
+
if (typeof rule === "string") {
|
|
2697
|
+
precedingCombinator = celCombinatorMap[rule];
|
|
2698
|
+
continue;
|
|
2699
|
+
}
|
|
2700
|
+
if (isRuleGroup(rule)) {
|
|
2701
|
+
const processedGroup = processRuleGroup(rule);
|
|
2702
|
+
if (processedGroup) {
|
|
2703
|
+
if (!firstRule && precedingCombinator) {
|
|
2704
|
+
processedRules.push(precedingCombinator);
|
|
2705
|
+
precedingCombinator = "";
|
|
2706
|
+
}
|
|
2707
|
+
firstRule = false;
|
|
2708
|
+
processedRules.push(processedGroup);
|
|
2709
|
+
}
|
|
2710
|
+
continue;
|
|
2711
|
+
}
|
|
2712
|
+
const [validationResult, fieldValidator] = validateRule(rule);
|
|
2713
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
|
|
2714
|
+
const fieldData = getOption(fields, rule.field);
|
|
2715
|
+
const processedRule = ruleProcessor(rule, _objectSpread2(_objectSpread2({}, options), {}, {
|
|
2716
|
+
parseNumbers: getParseNumberBoolean(fieldData === null || fieldData === void 0 ? void 0 : fieldData.inputType),
|
|
2717
|
+
escapeQuotes: ((_rule$valueSource = rule.valueSource) !== null && _rule$valueSource !== void 0 ? _rule$valueSource : "value") === "value",
|
|
2718
|
+
fieldData
|
|
2719
|
+
}));
|
|
2720
|
+
if (processedRule) {
|
|
2721
|
+
if (!firstRule && precedingCombinator) {
|
|
2722
|
+
processedRules.push(precedingCombinator);
|
|
2723
|
+
precedingCombinator = "";
|
|
2724
|
+
}
|
|
2725
|
+
firstRule = false;
|
|
2726
|
+
processedRules.push(processedRule);
|
|
2727
|
+
}
|
|
2728
|
+
}
|
|
2729
|
+
const expression = processedRules.join(isRuleGroupType(rg) ? ` ${celCombinatorMap[rg.combinator]} ` : " ");
|
|
2730
|
+
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
|
|
2731
|
+
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
2732
|
+
};
|
|
2733
|
+
return processRuleGroup(ruleGroup, true);
|
|
2734
|
+
};
|
|
2735
|
+
//#endregion
|
|
2537
2736
|
//#region src/utils/formatQuery/defaultRuleGroupProcessorSQL.ts
|
|
2538
2737
|
/**
|
|
2539
2738
|
* Default rule processor used by {@link formatQuery} for "sql" format.
|
|
@@ -2544,7 +2743,7 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
|
|
|
2544
2743
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
2545
2744
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
2546
2745
|
var _rg$id;
|
|
2547
|
-
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
2746
|
+
if (!isRuleOrGroupValid(rg, validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : /* v8 ignore start -- @preserve */ ""])) return outermostOrLonelyInGroup ? fallbackExpression : /* v8 ignore next -- @preserve */ "";
|
|
2548
2747
|
const processedRules = [];
|
|
2549
2748
|
let precedingCombinator = "";
|
|
2550
2749
|
let firstRule = true;
|
|
@@ -2556,7 +2755,7 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
|
|
|
2556
2755
|
}
|
|
2557
2756
|
if (isRuleGroup(rule)) {
|
|
2558
2757
|
const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
|
|
2559
|
-
//
|
|
2758
|
+
// v8 ignore else
|
|
2560
2759
|
if (processedGroup) {
|
|
2561
2760
|
if (!firstRule && precedingCombinator) {
|
|
2562
2761
|
processedRules.push(precedingCombinator);
|
|
@@ -2591,6 +2790,377 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
|
|
|
2591
2790
|
return processRuleGroup(ruleGroup, true);
|
|
2592
2791
|
};
|
|
2593
2792
|
//#endregion
|
|
2793
|
+
//#region src/utils/formatQuery/defaultRuleGroupProcessorDiagnostics.ts
|
|
2794
|
+
const numericInputTypes = new Set([
|
|
2795
|
+
"number",
|
|
2796
|
+
"range",
|
|
2797
|
+
"bigint"
|
|
2798
|
+
]);
|
|
2799
|
+
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
|
|
2800
|
+
const timeRegex = /^\d{2}:\d{2}(:\d{2}(\.\d+)?)?$/;
|
|
2801
|
+
const monthRegex = /^\d{4}-\d{2}$/;
|
|
2802
|
+
const weekRegex = /^\d{4}-W\d{2}$/;
|
|
2803
|
+
const colorRegex = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
2804
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
2805
|
+
const isValidDateComponents = (y, m, d) => {
|
|
2806
|
+
const date = new Date(Date.UTC(y, m - 1, d));
|
|
2807
|
+
return date.getUTCFullYear() === y && date.getUTCMonth() === m - 1 && date.getUTCDate() === d;
|
|
2808
|
+
};
|
|
2809
|
+
const isValidTimeComponents = (s) => {
|
|
2810
|
+
const parts = s.split(":");
|
|
2811
|
+
const h = Number(parts[0]);
|
|
2812
|
+
const m = Number(parts[1]);
|
|
2813
|
+
const sec = parts[2] ? Number.parseFloat(parts[2]) : 0;
|
|
2814
|
+
return h >= 0 && h <= 23 && m >= 0 && m <= 59 && sec >= 0 && sec < 60;
|
|
2815
|
+
};
|
|
2816
|
+
/**
|
|
2817
|
+
* Checks whether a value is compatible with the given {@link FullField.inputType}.
|
|
2818
|
+
* Returns a diagnostic code string if there is a mismatch, or `undefined` if OK.
|
|
2819
|
+
*/
|
|
2820
|
+
const checkValueTypeMismatch = (value, inputType) => {
|
|
2821
|
+
if (value === null || value === void 0 || value === "") return void 0;
|
|
2822
|
+
if (numericInputTypes.has(inputType)) {
|
|
2823
|
+
const v = typeof value === "string" ? value.trim() : value;
|
|
2824
|
+
if (typeof v === "number" || typeof v === "bigint") return void 0;
|
|
2825
|
+
if (typeof v === "string" && numericRegex.test(v)) return void 0;
|
|
2826
|
+
return "VALUE_TYPE_MISMATCH";
|
|
2827
|
+
}
|
|
2828
|
+
if (inputType === "date") {
|
|
2829
|
+
if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
|
|
2830
|
+
const v = value.trim();
|
|
2831
|
+
if (!dateRegex.test(v)) return "VALUE_TYPE_MISMATCH";
|
|
2832
|
+
const [y, m, d] = v.split("-").map(Number);
|
|
2833
|
+
return isValidDateComponents(y, m, d) ? void 0 : "VALUE_TYPE_MISMATCH";
|
|
2834
|
+
}
|
|
2835
|
+
if (inputType === "datetime-local") {
|
|
2836
|
+
if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
|
|
2837
|
+
const base = value.trim().replace(/(Z|[+-]\d{2}:?\d{2}|[+-]\d{2})$/, "");
|
|
2838
|
+
const tIndex = base.indexOf("T");
|
|
2839
|
+
if (tIndex === -1) return "VALUE_TYPE_MISMATCH";
|
|
2840
|
+
const datePart = base.slice(0, tIndex);
|
|
2841
|
+
const timePart = base.slice(tIndex + 1);
|
|
2842
|
+
if (!dateRegex.test(datePart) || !timeRegex.test(timePart)) return "VALUE_TYPE_MISMATCH";
|
|
2843
|
+
const [y, m, d] = datePart.split("-").map(Number);
|
|
2844
|
+
if (!isValidDateComponents(y, m, d)) return "VALUE_TYPE_MISMATCH";
|
|
2845
|
+
return isValidTimeComponents(timePart) ? void 0 : "VALUE_TYPE_MISMATCH";
|
|
2846
|
+
}
|
|
2847
|
+
if (inputType === "time") {
|
|
2848
|
+
if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
|
|
2849
|
+
const v = value.trim();
|
|
2850
|
+
if (!timeRegex.test(v)) return "VALUE_TYPE_MISMATCH";
|
|
2851
|
+
return isValidTimeComponents(v) ? void 0 : "VALUE_TYPE_MISMATCH";
|
|
2852
|
+
}
|
|
2853
|
+
if (inputType === "month") {
|
|
2854
|
+
if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
|
|
2855
|
+
const v = value.trim();
|
|
2856
|
+
if (!monthRegex.test(v)) return "VALUE_TYPE_MISMATCH";
|
|
2857
|
+
const m = Number(v.slice(5));
|
|
2858
|
+
return m >= 1 && m <= 12 ? void 0 : "VALUE_TYPE_MISMATCH";
|
|
2859
|
+
}
|
|
2860
|
+
if (inputType === "week") {
|
|
2861
|
+
if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
|
|
2862
|
+
const v = value.trim();
|
|
2863
|
+
if (!weekRegex.test(v)) return "VALUE_TYPE_MISMATCH";
|
|
2864
|
+
const w = Number(v.slice(6));
|
|
2865
|
+
return w >= 1 && w <= 53 ? void 0 : "VALUE_TYPE_MISMATCH";
|
|
2866
|
+
}
|
|
2867
|
+
if (inputType === "color") {
|
|
2868
|
+
if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
|
|
2869
|
+
return colorRegex.test(value.trim()) ? void 0 : "VALUE_TYPE_MISMATCH";
|
|
2870
|
+
}
|
|
2871
|
+
if (inputType === "url") {
|
|
2872
|
+
if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
|
|
2873
|
+
try {
|
|
2874
|
+
new URL(value.trim());
|
|
2875
|
+
return;
|
|
2876
|
+
} catch (_unused) {
|
|
2877
|
+
return "VALUE_TYPE_MISMATCH";
|
|
2878
|
+
}
|
|
2879
|
+
}
|
|
2880
|
+
if (inputType === "email") {
|
|
2881
|
+
if (typeof value !== "string") return "VALUE_TYPE_MISMATCH";
|
|
2882
|
+
return emailRegex.test(value.trim()) ? void 0 : "VALUE_TYPE_MISMATCH";
|
|
2883
|
+
}
|
|
2884
|
+
};
|
|
2885
|
+
/**
|
|
2886
|
+
* Rule group processor used by {@link formatQuery} for "diagnostics" format.
|
|
2887
|
+
*
|
|
2888
|
+
* Produces a {@link DiagnosticsResult} containing an annotated copy of the query
|
|
2889
|
+
* tree (`query`) with `valid`, `reasons`, `path`, and `level` properties on every
|
|
2890
|
+
* rule and group; a flat `diagnostics` array; aggregate `stats`; and a per-field
|
|
2891
|
+
* `fieldSummary`.
|
|
2892
|
+
*
|
|
2893
|
+
* @group Export
|
|
2894
|
+
*/
|
|
2895
|
+
const defaultRuleGroupProcessorDiagnostics = (ruleGroup, options) => {
|
|
2896
|
+
const { fields: fieldsOption, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap } = options;
|
|
2897
|
+
const diagnostics = [];
|
|
2898
|
+
const stats = {
|
|
2899
|
+
totalRules: 0,
|
|
2900
|
+
totalGroups: 0,
|
|
2901
|
+
validRules: 0,
|
|
2902
|
+
invalidRules: 0,
|
|
2903
|
+
validGroups: 0,
|
|
2904
|
+
invalidGroups: 0
|
|
2905
|
+
};
|
|
2906
|
+
const fieldSummary = {};
|
|
2907
|
+
const uniqueFields = toFlatOptionArray(fieldsOption);
|
|
2908
|
+
const fieldsByName = /* @__PURE__ */ new Map();
|
|
2909
|
+
for (const f of uniqueFields) fieldsByName.set(f.name, f);
|
|
2910
|
+
const hasFieldsConfig = fieldsByName.size > 0;
|
|
2911
|
+
const processRuleGroup = (rg, path) => {
|
|
2912
|
+
var _rg$id;
|
|
2913
|
+
stats.totalGroups++;
|
|
2914
|
+
const level = path.length;
|
|
2915
|
+
const groupValidationEntry = validationMap[(_rg$id = rg.id) !== null && _rg$id !== void 0 ? _rg$id : ""];
|
|
2916
|
+
const groupSelfValid = isRuleOrGroupValid(rg, groupValidationEntry);
|
|
2917
|
+
const groupReasons = getReasons(groupValidationEntry);
|
|
2918
|
+
if (rg.muted) {
|
|
2919
|
+
var _rg$id2;
|
|
2920
|
+
diagnostics.push({
|
|
2921
|
+
id: (_rg$id2 = rg.id) !== null && _rg$id2 !== void 0 ? _rg$id2 : "",
|
|
2922
|
+
path,
|
|
2923
|
+
code: "MUTED",
|
|
2924
|
+
message: "Group is muted",
|
|
2925
|
+
source: "muted"
|
|
2926
|
+
});
|
|
2927
|
+
} else if (!groupSelfValid && groupValidationEntry !== void 0) {
|
|
2928
|
+
var _rg$id3;
|
|
2929
|
+
diagnostics.push({
|
|
2930
|
+
id: (_rg$id3 = rg.id) !== null && _rg$id3 !== void 0 ? _rg$id3 : "",
|
|
2931
|
+
path,
|
|
2932
|
+
code: "CUSTOM_VALIDATOR",
|
|
2933
|
+
message: groupReasons ? `Invalid: ${groupReasons.join(", ")}` : "Group failed validation",
|
|
2934
|
+
source: "query-validator"
|
|
2935
|
+
});
|
|
2936
|
+
}
|
|
2937
|
+
let allChildrenValid = true;
|
|
2938
|
+
let ruleIndex = 0;
|
|
2939
|
+
const annotatedRules = [];
|
|
2940
|
+
for (const rule of rg.rules) {
|
|
2941
|
+
var _getReasons;
|
|
2942
|
+
if (typeof rule === "string") {
|
|
2943
|
+
annotatedRules.push(rule);
|
|
2944
|
+
ruleIndex++;
|
|
2945
|
+
continue;
|
|
2946
|
+
}
|
|
2947
|
+
const childPath = [...path, ruleIndex];
|
|
2948
|
+
if (isRuleGroup(rule)) {
|
|
2949
|
+
const annotatedGroup = processRuleGroup(rule, childPath);
|
|
2950
|
+
if (!annotatedGroup.valid) allChildrenValid = false;
|
|
2951
|
+
annotatedRules.push(annotatedGroup);
|
|
2952
|
+
ruleIndex++;
|
|
2953
|
+
continue;
|
|
2954
|
+
}
|
|
2955
|
+
stats.totalRules++;
|
|
2956
|
+
const childLevel = childPath.length;
|
|
2957
|
+
const [validationResult, fieldValidator] = validateRule(rule);
|
|
2958
|
+
const ruleValid = isRuleOrGroupValid(rule, validationResult, fieldValidator) && rule.field !== placeholderFieldName && rule.operator !== placeholderOperatorName && !(placeholderValueName !== void 0 && rule.value === placeholderValueName);
|
|
2959
|
+
collectRuleDiagnostics(rule, childPath, validationResult, fieldValidator, ruleValid, diagnostics, placeholderFieldName, placeholderOperatorName, placeholderValueName, hasFieldsConfig, fieldsByName);
|
|
2960
|
+
if (!ruleValid) {
|
|
2961
|
+
allChildrenValid = false;
|
|
2962
|
+
stats.invalidRules++;
|
|
2963
|
+
} else stats.validRules++;
|
|
2964
|
+
const fieldName = rule.field;
|
|
2965
|
+
if (!fieldSummary[fieldName]) fieldSummary[fieldName] = {
|
|
2966
|
+
ruleCount: 0,
|
|
2967
|
+
invalidCount: 0
|
|
2968
|
+
};
|
|
2969
|
+
fieldSummary[fieldName].ruleCount++;
|
|
2970
|
+
if (!ruleValid) fieldSummary[fieldName].invalidCount++;
|
|
2971
|
+
const ruleReasons = (_getReasons = getReasons(validationResult)) !== null && _getReasons !== void 0 ? _getReasons : getFieldValidatorReasons(rule, fieldValidator);
|
|
2972
|
+
const annotatedRule = _objectSpread2(_objectSpread2(_objectSpread2({}, rule), {}, { valid: ruleValid }, ruleReasons ? { reasons: ruleReasons } : null), {}, {
|
|
2973
|
+
path: childPath,
|
|
2974
|
+
level: childLevel
|
|
2975
|
+
});
|
|
2976
|
+
annotatedRules.push(annotatedRule);
|
|
2977
|
+
ruleIndex++;
|
|
2978
|
+
}
|
|
2979
|
+
const groupValid = groupSelfValid && allChildrenValid;
|
|
2980
|
+
if (groupValid) stats.validGroups++;
|
|
2981
|
+
else stats.invalidGroups++;
|
|
2982
|
+
if (isRuleGroupType(rg)) return _objectSpread2(_objectSpread2(_objectSpread2({}, rg), {}, { valid: groupValid }, groupReasons ? { reasons: groupReasons } : null), {}, {
|
|
2983
|
+
path,
|
|
2984
|
+
level,
|
|
2985
|
+
rules: annotatedRules
|
|
2986
|
+
});
|
|
2987
|
+
return _objectSpread2(_objectSpread2(_objectSpread2({}, rg), {}, { valid: groupValid }, groupReasons ? { reasons: groupReasons } : null), {}, {
|
|
2988
|
+
path,
|
|
2989
|
+
level,
|
|
2990
|
+
rules: annotatedRules
|
|
2991
|
+
});
|
|
2992
|
+
};
|
|
2993
|
+
const query = processRuleGroup(ruleGroup, []);
|
|
2994
|
+
if (hasFieldsConfig) {
|
|
2995
|
+
const referencedFields = new Set(Object.keys(fieldSummary));
|
|
2996
|
+
for (const [fieldName] of fieldsByName) if (!referencedFields.has(fieldName)) diagnostics.push({
|
|
2997
|
+
id: "",
|
|
2998
|
+
path: [],
|
|
2999
|
+
code: "UNREFERENCED_FIELD",
|
|
3000
|
+
message: `Field "${fieldName}" is defined in the fields config but not used in the query`,
|
|
3001
|
+
source: "field-check"
|
|
3002
|
+
});
|
|
3003
|
+
}
|
|
3004
|
+
return {
|
|
3005
|
+
query,
|
|
3006
|
+
diagnostics,
|
|
3007
|
+
stats,
|
|
3008
|
+
fieldSummary
|
|
3009
|
+
};
|
|
3010
|
+
};
|
|
3011
|
+
/**
|
|
3012
|
+
* Collects diagnostic entries for a single rule.
|
|
3013
|
+
*/
|
|
3014
|
+
const collectRuleDiagnostics = (rule, path, validationResult, fieldValidator, ruleValid, diagnostics, placeholderFieldName, placeholderOperatorName, placeholderValueName, hasFieldsConfig, fieldsByName) => {
|
|
3015
|
+
var _rule$id;
|
|
3016
|
+
const id = (_rule$id = rule.id) !== null && _rule$id !== void 0 ? _rule$id : "";
|
|
3017
|
+
if (rule.muted) diagnostics.push({
|
|
3018
|
+
id,
|
|
3019
|
+
path,
|
|
3020
|
+
code: "MUTED",
|
|
3021
|
+
message: "Rule is muted",
|
|
3022
|
+
source: "muted"
|
|
3023
|
+
});
|
|
3024
|
+
if (rule.field === placeholderFieldName) diagnostics.push({
|
|
3025
|
+
id,
|
|
3026
|
+
path,
|
|
3027
|
+
code: "PLACEHOLDER_FIELD",
|
|
3028
|
+
message: "Rule has a placeholder field",
|
|
3029
|
+
source: "placeholder"
|
|
3030
|
+
});
|
|
3031
|
+
if (rule.operator === placeholderOperatorName) diagnostics.push({
|
|
3032
|
+
id,
|
|
3033
|
+
path,
|
|
3034
|
+
code: "PLACEHOLDER_OPERATOR",
|
|
3035
|
+
message: "Rule has a placeholder operator",
|
|
3036
|
+
source: "placeholder"
|
|
3037
|
+
});
|
|
3038
|
+
if (placeholderValueName !== void 0 && rule.value === placeholderValueName) diagnostics.push({
|
|
3039
|
+
id,
|
|
3040
|
+
path,
|
|
3041
|
+
code: "PLACEHOLDER_VALUE",
|
|
3042
|
+
message: "Rule has a placeholder value",
|
|
3043
|
+
source: "placeholder"
|
|
3044
|
+
});
|
|
3045
|
+
if (!rule.muted && rule.field !== placeholderFieldName && rule.operator !== placeholderOperatorName && !(placeholderValueName !== void 0 && rule.value === placeholderValueName)) {
|
|
3046
|
+
if (typeof validationResult === "boolean" && !validationResult) diagnostics.push({
|
|
3047
|
+
id,
|
|
3048
|
+
path,
|
|
3049
|
+
code: "CUSTOM_VALIDATOR",
|
|
3050
|
+
message: "Rule failed validation",
|
|
3051
|
+
source: "query-validator"
|
|
3052
|
+
});
|
|
3053
|
+
else if (typeof validationResult !== "boolean" && isValidationResult(validationResult) && !validationResult.valid) {
|
|
3054
|
+
const reasons = validationResult.reasons;
|
|
3055
|
+
diagnostics.push({
|
|
3056
|
+
id,
|
|
3057
|
+
path,
|
|
3058
|
+
code: "CUSTOM_VALIDATOR",
|
|
3059
|
+
message: reasons ? `Invalid: ${reasons.join(", ")}` : "Rule failed validation",
|
|
3060
|
+
source: "query-validator"
|
|
3061
|
+
});
|
|
3062
|
+
} else if (!ruleValid && typeof fieldValidator === "function") {
|
|
3063
|
+
const vr = fieldValidator(rule);
|
|
3064
|
+
const reasons = typeof vr !== "boolean" && isValidationResult(vr) && !vr.valid ? vr.reasons : void 0;
|
|
3065
|
+
diagnostics.push({
|
|
3066
|
+
id,
|
|
3067
|
+
path,
|
|
3068
|
+
code: "CUSTOM_VALIDATOR",
|
|
3069
|
+
message: reasons ? `Invalid: ${reasons.join(", ")}` : "Rule failed field validation",
|
|
3070
|
+
source: "field-validator"
|
|
3071
|
+
});
|
|
3072
|
+
}
|
|
3073
|
+
}
|
|
3074
|
+
if (hasFieldsConfig && !fieldsByName.has(rule.field) && rule.field !== placeholderFieldName) diagnostics.push({
|
|
3075
|
+
id,
|
|
3076
|
+
path,
|
|
3077
|
+
code: "UNDEFINED_FIELD",
|
|
3078
|
+
message: `Field "${rule.field}" is not defined in the fields config`,
|
|
3079
|
+
source: "field-check"
|
|
3080
|
+
});
|
|
3081
|
+
if (hasFieldsConfig) {
|
|
3082
|
+
const fieldDef = fieldsByName.get(rule.field);
|
|
3083
|
+
if (fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.inputType) {
|
|
3084
|
+
const mismatchCode = checkValueTypeMismatch(rule.value, fieldDef.inputType);
|
|
3085
|
+
if (mismatchCode) diagnostics.push({
|
|
3086
|
+
id,
|
|
3087
|
+
path,
|
|
3088
|
+
code: mismatchCode,
|
|
3089
|
+
message: `Value "${rule.value}" is not compatible with input type "${fieldDef.inputType}"`,
|
|
3090
|
+
source: "type-check"
|
|
3091
|
+
});
|
|
3092
|
+
}
|
|
3093
|
+
}
|
|
3094
|
+
};
|
|
3095
|
+
/**
|
|
3096
|
+
* Extracts `reasons` from a validation result, if present.
|
|
3097
|
+
*/
|
|
3098
|
+
const getReasons = (validationResult) => {
|
|
3099
|
+
if (typeof validationResult !== "boolean" && isValidationResult(validationResult) && !validationResult.valid && validationResult.reasons) return validationResult.reasons;
|
|
3100
|
+
};
|
|
3101
|
+
/**
|
|
3102
|
+
* Runs a field-level validator and extracts `reasons` if present.
|
|
3103
|
+
*/
|
|
3104
|
+
const getFieldValidatorReasons = (rule, fieldValidator) => {
|
|
3105
|
+
if (typeof fieldValidator === "function") {
|
|
3106
|
+
const vr = fieldValidator(rule);
|
|
3107
|
+
if (typeof vr !== "boolean" && isValidationResult(vr) && !vr.valid && vr.reasons) return vr.reasons;
|
|
3108
|
+
}
|
|
3109
|
+
};
|
|
3110
|
+
//#endregion
|
|
3111
|
+
//#region src/utils/formatQuery/defaultRuleProcessorCypher.ts
|
|
3112
|
+
const escapeSingleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
|
|
3113
|
+
/**
|
|
3114
|
+
* Default rule processor used by {@link formatQuery} for "cypher" and "gql" formats.
|
|
3115
|
+
*
|
|
3116
|
+
* @group Export
|
|
3117
|
+
*/
|
|
3118
|
+
const defaultRuleProcessorCypher = (rule, opts = {}) => {
|
|
3119
|
+
const { escapeQuotes, parseNumbers } = opts;
|
|
3120
|
+
const { field, operator, value, valueSource } = rule;
|
|
3121
|
+
const valueIsField = valueSource === "field";
|
|
3122
|
+
const operatorTL = operator.toLowerCase();
|
|
3123
|
+
const fmtVal = (v) => {
|
|
3124
|
+
if (v === null || v === void 0) return "null";
|
|
3125
|
+
if (typeof v === "boolean" || typeof v === "bigint") return String(v);
|
|
3126
|
+
if (valueIsField) return trimIfString(v);
|
|
3127
|
+
if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
|
|
3128
|
+
return `'${escapeSingleQuotes$1(v, escapeQuotes)}'`;
|
|
3129
|
+
};
|
|
3130
|
+
switch (operatorTL) {
|
|
3131
|
+
case "=": return `${field} = ${fmtVal(value)}`;
|
|
3132
|
+
case "!=":
|
|
3133
|
+
case "<>": return `${field} <> ${fmtVal(value)}`;
|
|
3134
|
+
case "<":
|
|
3135
|
+
case ">":
|
|
3136
|
+
case "<=":
|
|
3137
|
+
case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
|
|
3138
|
+
case "contains": return `${field} CONTAINS ${fmtVal(value)}`;
|
|
3139
|
+
case "doesnotcontain": return `NOT ${field} CONTAINS ${fmtVal(value)}`;
|
|
3140
|
+
case "beginswith": return `${field} STARTS WITH ${fmtVal(value)}`;
|
|
3141
|
+
case "doesnotbeginwith": return `NOT ${field} STARTS WITH ${fmtVal(value)}`;
|
|
3142
|
+
case "endswith": return `${field} ENDS WITH ${fmtVal(value)}`;
|
|
3143
|
+
case "doesnotendwith": return `NOT ${field} ENDS WITH ${fmtVal(value)}`;
|
|
3144
|
+
case "null": return `${field} IS NULL`;
|
|
3145
|
+
case "notnull": return `${field} IS NOT NULL`;
|
|
3146
|
+
case "in":
|
|
3147
|
+
case "notin": {
|
|
3148
|
+
const values = toArray(value).map(fmtVal);
|
|
3149
|
+
if (!values.length) return "";
|
|
3150
|
+
return `${operatorTL === "notin" ? "NOT " : ""}${field} IN [${values.join(", ")}]`;
|
|
3151
|
+
}
|
|
3152
|
+
case "between":
|
|
3153
|
+
case "notbetween": {
|
|
3154
|
+
const arr = toArray(value);
|
|
3155
|
+
if (arr.length < 2) return "";
|
|
3156
|
+
const [low, high] = [fmtVal(arr[0]), fmtVal(arr[1])];
|
|
3157
|
+
const expr = `${low} <= ${field} AND ${field} <= ${high}`;
|
|
3158
|
+
return operatorTL === "notbetween" ? `NOT (${expr})` : expr;
|
|
3159
|
+
}
|
|
3160
|
+
default: return `${field} ${operator} ${fmtVal(value)}`;
|
|
3161
|
+
}
|
|
3162
|
+
};
|
|
3163
|
+
//#endregion
|
|
2594
3164
|
//#region src/utils/formatQuery/defaultRuleProcessorElasticSearch.ts
|
|
2595
3165
|
const rangeOperatorMap = {
|
|
2596
3166
|
"<": "lt",
|
|
@@ -2740,6 +3310,68 @@ const defaultRuleProcessorElasticSearch = (rule, options = {}) => {
|
|
|
2740
3310
|
return false;
|
|
2741
3311
|
};
|
|
2742
3312
|
//#endregion
|
|
3313
|
+
//#region src/utils/formatQuery/defaultRuleProcessorGremlin.ts
|
|
3314
|
+
const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
|
|
3315
|
+
/**
|
|
3316
|
+
* Default rule processor used by {@link formatQuery} for "gremlin" format.
|
|
3317
|
+
*
|
|
3318
|
+
* Each rule becomes a `.has()` step (or `.hasNot()`/`.has()` for null checks).
|
|
3319
|
+
*
|
|
3320
|
+
* @group Export
|
|
3321
|
+
*/
|
|
3322
|
+
const defaultRuleProcessorGremlin = (rule, opts = {}) => {
|
|
3323
|
+
const { escapeQuotes, parseNumbers } = opts;
|
|
3324
|
+
const { field, operator, value, valueSource } = rule;
|
|
3325
|
+
const valueIsField = valueSource === "field";
|
|
3326
|
+
const operatorTL = operator.toLowerCase();
|
|
3327
|
+
const prop = field.includes(".") ? field.split(".").pop() : field;
|
|
3328
|
+
const fmtVal = (v) => {
|
|
3329
|
+
if (v === null || v === void 0) return "null";
|
|
3330
|
+
if (typeof v === "boolean" || typeof v === "bigint") return String(v);
|
|
3331
|
+
if (valueIsField) return trimIfString(v);
|
|
3332
|
+
if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
|
|
3333
|
+
return `'${escapeSingleQuotes(v, escapeQuotes)}'`;
|
|
3334
|
+
};
|
|
3335
|
+
switch (operatorTL) {
|
|
3336
|
+
case "=": return `.has('${prop}', ${fmtVal(value)})`;
|
|
3337
|
+
case "!=":
|
|
3338
|
+
case "<>": return `.has('${prop}', neq(${fmtVal(value)}))`;
|
|
3339
|
+
case "<": return `.has('${prop}', lt(${fmtVal(value)}))`;
|
|
3340
|
+
case ">": return `.has('${prop}', gt(${fmtVal(value)}))`;
|
|
3341
|
+
case "<=": return `.has('${prop}', lte(${fmtVal(value)}))`;
|
|
3342
|
+
case ">=": return `.has('${prop}', gte(${fmtVal(value)}))`;
|
|
3343
|
+
case "contains": return `.has('${prop}', containing(${fmtVal(value)}))`;
|
|
3344
|
+
case "doesnotcontain": return `.has('${prop}', notContaining(${fmtVal(value)}))`;
|
|
3345
|
+
case "beginswith": return `.has('${prop}', startingWith(${fmtVal(value)}))`;
|
|
3346
|
+
case "doesnotbeginwith": return `.has('${prop}', notStartingWith(${fmtVal(value)}))`;
|
|
3347
|
+
case "endswith": return `.has('${prop}', endingWith(${fmtVal(value)}))`;
|
|
3348
|
+
case "doesnotendwith": return `.has('${prop}', notEndingWith(${fmtVal(value)}))`;
|
|
3349
|
+
case "null": return `.hasNot('${prop}')`;
|
|
3350
|
+
case "notnull": return `.has('${prop}')`;
|
|
3351
|
+
case "in": {
|
|
3352
|
+
const items = toArray(value).map(fmtVal);
|
|
3353
|
+
if (!items.length) return "";
|
|
3354
|
+
return `.has('${prop}', within(${items.join(", ")}))`;
|
|
3355
|
+
}
|
|
3356
|
+
case "notin": {
|
|
3357
|
+
const items = toArray(value).map(fmtVal);
|
|
3358
|
+
if (!items.length) return "";
|
|
3359
|
+
return `.has('${prop}', without(${items.join(", ")}))`;
|
|
3360
|
+
}
|
|
3361
|
+
case "between": {
|
|
3362
|
+
const arr = toArray(value);
|
|
3363
|
+
if (arr.length < 2) return "";
|
|
3364
|
+
return `.has('${prop}', between(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
|
|
3365
|
+
}
|
|
3366
|
+
case "notbetween": {
|
|
3367
|
+
const arr = toArray(value);
|
|
3368
|
+
if (arr.length < 2) return "";
|
|
3369
|
+
return `.has('${prop}', outside(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
|
|
3370
|
+
}
|
|
3371
|
+
default: return `.has('${prop}', ${fmtVal(value)})`;
|
|
3372
|
+
}
|
|
3373
|
+
};
|
|
3374
|
+
//#endregion
|
|
2743
3375
|
//#region src/utils/formatQuery/defaultRuleProcessorJSONata.ts
|
|
2744
3376
|
const shouldNegate = (op) => op.startsWith("not") || op.startsWith("doesnot");
|
|
2745
3377
|
const quote = (v, escapeQuotes) => `"${typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`)}"`;
|
|
@@ -2964,12 +3596,12 @@ const defaultRuleProcessorLDAP = (rule, options = {}) => {
|
|
|
2964
3596
|
return negateIf(`(&(${field}>=${ldapEscape(firstValue)})(${field}<=${ldapEscape(secondValue)}))`, operatorLC === "notbetween");
|
|
2965
3597
|
}
|
|
2966
3598
|
}
|
|
2967
|
-
//
|
|
3599
|
+
// v8 ignore next
|
|
2968
3600
|
return "";
|
|
2969
3601
|
};
|
|
2970
3602
|
//#endregion
|
|
2971
3603
|
//#region src/utils/formatQuery/defaultValueProcessorNL.ts
|
|
2972
|
-
const escapeStringValueQuotes = (v, quoteChar, escapeQuotes) => escapeQuotes && typeof v === "string" ? v.replaceAll(`${quoteChar}`, `${quoteChar}${quoteChar}`) : v;
|
|
3604
|
+
const escapeStringValueQuotes = (v, quoteChar, escapeQuotes) => escapeQuotes && typeof v === "string" ? v.replaceAll(`${quoteChar}`, `${quoteChar}${quoteChar}`) : /* v8 ignore next -- @preserve */ v;
|
|
2973
3605
|
/**
|
|
2974
3606
|
* Default value processor used by {@link formatQuery} for "natural_language" format.
|
|
2975
3607
|
*
|
|
@@ -2988,7 +3620,7 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
|
|
|
2988
3620
|
quoteFieldNamesWith,
|
|
2989
3621
|
fieldIdentifierSeparator
|
|
2990
3622
|
});
|
|
2991
|
-
const t = translations !== null && translations !== void 0 ? translations :
|
|
3623
|
+
const t = translations !== null && translations !== void 0 ? translations : /* v8 ignore start -- @preserve */ {};
|
|
2992
3624
|
const orTL = (_t$or = t.or) !== null && _t$or !== void 0 ? _t$or : "or";
|
|
2993
3625
|
const trueTL = (_t$true = t.true) !== null && _t$true !== void 0 ? _t$true : "true";
|
|
2994
3626
|
const falseTL = (_t$false = t.false) !== null && _t$false !== void 0 ? _t$false : "false";
|
|
@@ -3000,7 +3632,8 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
|
|
|
3000
3632
|
if (!valueIsField) return defaultValueProcessorByRule(rule, opts);
|
|
3001
3633
|
const valueAsArray = toArray(rule.value, { retainEmptyStrings: true }).slice(0, 2).map((v) => {
|
|
3002
3634
|
var _getOption$label, _getOption, _ref;
|
|
3003
|
-
return wrapFieldName((_getOption$label = (_getOption = getOption((_ref = fields) !== null && _ref !== void 0 ? _ref :
|
|
3635
|
+
return wrapFieldName((_getOption$label = (_getOption = getOption((_ref = fields) !== null && _ref !== void 0 ? _ref :
|
|
3636
|
+
/* v8 ignore start -- @preserve */ [], v)) === null || _getOption === void 0 ? void 0 : _getOption.label) !== null && _getOption$label !== void 0 ? _getOption$label : v);
|
|
3004
3637
|
});
|
|
3005
3638
|
if (valueAsArray.length < 2 || !isValidValue(valueAsArray[0]) || !isValidValue(valueAsArray[1])) return "";
|
|
3006
3639
|
return defaultValueProcessorByRule(_objectSpread2(_objectSpread2({}, rule), {}, { value: valueAsArray }), opts);
|
|
@@ -3011,14 +3644,16 @@ const defaultValueProcessorNL = (rule, opts = {}) => {
|
|
|
3011
3644
|
if (valueAsArray.length === 0) return "";
|
|
3012
3645
|
const valStringArray = valueAsArray.map((v) => {
|
|
3013
3646
|
var _getOption$label2, _getOption2, _ref2;
|
|
3014
|
-
return valueIsField ? wrapFieldName((_getOption$label2 = (_getOption2 = getOption((_ref2 = fields) !== null && _ref2 !== void 0 ? _ref2 :
|
|
3647
|
+
return valueIsField ? wrapFieldName((_getOption$label2 = (_getOption2 = getOption((_ref2 = fields) !== null && _ref2 !== void 0 ? _ref2 :
|
|
3648
|
+
/* v8 ignore start -- @preserve */ [], v)) === null || _getOption2 === void 0 ? void 0 : _getOption2.label) !== null && _getOption$label2 !== void 0 ? _getOption$label2 : v) : shouldRenderAsNumber(v, parseNumbers) ? `${trimIfString(v)}` : `${wrapAndEscape(v)}`;
|
|
3015
3649
|
});
|
|
3016
3650
|
if (valStringArray.length === 1) return valStringArray[0];
|
|
3017
3651
|
return `(${`${valStringArray.slice(0, -1).join(", ")}${valStringArray.length > 2 ? "," : ""} ${orTL} ${valStringArray.at(-1)}`})`;
|
|
3018
3652
|
}
|
|
3019
3653
|
}
|
|
3020
3654
|
if (typeof rule.value === "boolean") return rule.value ? trueTL : falseTL;
|
|
3021
|
-
return valueIsField ? wrapFieldName((_getOption$label3 = (_getOption3 = getOption((_ref3 = fields) !== null && _ref3 !== void 0 ? _ref3 :
|
|
3655
|
+
return valueIsField ? wrapFieldName((_getOption$label3 = (_getOption3 = getOption((_ref3 = fields) !== null && _ref3 !== void 0 ? _ref3 :
|
|
3656
|
+
/* v8 ignore start -- @preserve */ [], rule.value)) === null || _getOption3 === void 0 ? void 0 : _getOption3.label) !== null && _getOption$label3 !== void 0 ? _getOption$label3 : rule.value) : shouldRenderAsNumber(rule.value, parseNumbers) ? `${trimIfString(rule.value)}` : `${wrapAndEscape(rule.value)}`;
|
|
3022
3657
|
};
|
|
3023
3658
|
//#endregion
|
|
3024
3659
|
//#region src/utils/formatQuery/defaultRuleProcessorNL.ts
|
|
@@ -3047,7 +3682,7 @@ const defaultExportOperatorMap = {
|
|
|
3047
3682
|
between: ["is between", "is between the values in"],
|
|
3048
3683
|
notbetween: ["is not between", "is not between the values in"]
|
|
3049
3684
|
};
|
|
3050
|
-
/*
|
|
3685
|
+
/* v8 ignore next -- @preserve */
|
|
3051
3686
|
const defaultGetOperators = () => [];
|
|
3052
3687
|
/**
|
|
3053
3688
|
* Default operator processor used by {@link formatQuery} for "natural_language" format.
|
|
@@ -3057,7 +3692,7 @@ const defaultGetOperators = () => [];
|
|
|
3057
3692
|
const defaultOperatorProcessorNL = (rule, opts = {}) => {
|
|
3058
3693
|
var _getOption, _getOperators, _opts$fieldData, _ref, _operatorMap;
|
|
3059
3694
|
const { field, operator, valueSource = "value" } = rule;
|
|
3060
|
-
//
|
|
3695
|
+
// v8 ignore next
|
|
3061
3696
|
const { getOperators = defaultGetOperators, operatorMap: operatorMapParam = defaultExportOperatorMap } = opts;
|
|
3062
3697
|
const mergedOperatorMap = new Map(Object.entries(defaultExportOperatorMap));
|
|
3063
3698
|
for (const [key, value] of Object.entries(operatorMapParam)) mergedOperatorMap.set(lc(key), value);
|
|
@@ -3071,7 +3706,7 @@ const defaultOperatorProcessorNL = (rule, opts = {}) => {
|
|
|
3071
3706
|
name: field,
|
|
3072
3707
|
value: field,
|
|
3073
3708
|
label: field
|
|
3074
|
-
} })) !== null && _getOperators !== void 0 ? _getOperators : []), normalizedOperator)) !== null && _getOption !== void 0 ? _getOption : {
|
|
3709
|
+
} })) !== null && _getOperators !== void 0 ? _getOperators : /* v8 ignore start -- @preserve */ []), normalizedOperator)) !== null && _getOption !== void 0 ? _getOption : {
|
|
3075
3710
|
name: normalizedOperator,
|
|
3076
3711
|
value: normalizedOperator,
|
|
3077
3712
|
label: normalizedOperator
|
|
@@ -3087,8 +3722,8 @@ const defaultOperatorProcessorNL = (rule, opts = {}) => {
|
|
|
3087
3722
|
const defaultRuleProcessorNL = (rule, opts) => {
|
|
3088
3723
|
var _fieldData$label;
|
|
3089
3724
|
const { field, operator } = rule;
|
|
3090
|
-
//
|
|
3091
|
-
const { fieldData, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", quoteValuesWith = `'`, operatorProcessor = defaultOperatorProcessorNL, valueProcessor = defaultValueProcessorNL, concatOperator = "||", wordOrder = "SVO" } = opts !== null && opts !== void 0 ? opts :
|
|
3725
|
+
// v8 ignore next
|
|
3726
|
+
const { fieldData, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", quoteValuesWith = `'`, operatorProcessor = defaultOperatorProcessorNL, valueProcessor = defaultValueProcessorNL, concatOperator = "||", wordOrder = "SVO" } = opts !== null && opts !== void 0 ? opts : /* v8 ignore start -- @preserve */ {};
|
|
3092
3727
|
const processedField = getQuotedFieldName((_fieldData$label = fieldData === null || fieldData === void 0 ? void 0 : fieldData.label) !== null && _fieldData$label !== void 0 ? _fieldData$label : field, {
|
|
3093
3728
|
quoteFieldNamesWith,
|
|
3094
3729
|
fieldIdentifierSeparator
|
|
@@ -3187,7 +3822,7 @@ const defaultRuleProcessorSQL = (rule, opts = {}) => {
|
|
|
3187
3822
|
* @group Export
|
|
3188
3823
|
*/
|
|
3189
3824
|
const defaultRuleProcessorParameterized = (rule, opts, meta) => {
|
|
3190
|
-
//
|
|
3825
|
+
// v8 ignore next
|
|
3191
3826
|
const { fieldData, format, getNextNamedParam, parseNumbers, paramPrefix, paramsKeepPrefix, numberedParams, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator, concatOperator, operatorProcessor = defaultOperatorProcessorSQL, valueProcessor = defaultValueProcessorByRule } = opts !== null && opts !== void 0 ? opts : {};
|
|
3192
3827
|
const { processedParams = [] } = meta !== null && meta !== void 0 ? meta : {};
|
|
3193
3828
|
const parameterized = format === "parameterized";
|
|
@@ -3206,13 +3841,13 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
|
|
|
3206
3841
|
});
|
|
3207
3842
|
const ruleField = wrapFieldName(rule.field);
|
|
3208
3843
|
const matchEval = processMatchMode(rule);
|
|
3844
|
+
/* v8 ignore start -- @preserve */
|
|
3209
3845
|
if (matchEval === false) return;
|
|
3210
3846
|
else if (matchEval) {
|
|
3211
3847
|
if ((opts === null || opts === void 0 ? void 0 : opts.preset) !== "postgresql") return finalize("");
|
|
3212
3848
|
const { mode, threshold } = matchEval;
|
|
3213
3849
|
const arrayElementAlias = "elem_alias";
|
|
3214
3850
|
const { sql: nestedSQL, params: nestedParams } = defaultRuleGroupProcessorParameterized(transformQuery(rule.value, { ruleProcessor: (r) => _objectSpread2(_objectSpread2({}, r), {}, { field: arrayElementAlias }) }), _objectSpread2(_objectSpread2({}, opts), {}, { fields: [] }));
|
|
3215
|
-
// istanbul ignore else
|
|
3216
3851
|
if (Array.isArray(nestedParams)) params.push(...nestedParams);
|
|
3217
3852
|
else Object.assign(paramsNamed, nestedParams);
|
|
3218
3853
|
switch (mode) {
|
|
@@ -3227,6 +3862,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
|
|
|
3227
3862
|
}
|
|
3228
3863
|
}
|
|
3229
3864
|
}
|
|
3865
|
+
/* v8 ignore stop -- @preserve */
|
|
3230
3866
|
const value = valueProcessor(rule, {
|
|
3231
3867
|
parseNumbers,
|
|
3232
3868
|
quoteFieldNamesWith,
|
|
@@ -3267,7 +3903,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
|
|
|
3267
3903
|
}
|
|
3268
3904
|
let paramValue = rule.value;
|
|
3269
3905
|
if (typeof rule.value === "string") if (shouldRenderAsNumber(rule.value, parseNumbers)) paramValue = parseNumber(rule.value, { parseNumbers });
|
|
3270
|
-
else paramValue = /^'.*'$/g.test(value) ? value.replaceAll(/(^'|'$)/g, "") : value;
|
|
3906
|
+
else paramValue = /^'.*'$/g.test(value) ? value.replaceAll(/(^'|'$)/g, "") : /* v8 ignore next -- @preserve */ value;
|
|
3271
3907
|
let paramName = "";
|
|
3272
3908
|
if (parameterized) params.push(paramValue);
|
|
3273
3909
|
else {
|
|
@@ -3286,9 +3922,9 @@ const processNumber = (value, fallback, parseNumbers) => shouldRenderAsNumber(va
|
|
|
3286
3922
|
*/
|
|
3287
3923
|
const defaultRuleProcessorPrisma = (rule, options = {}) => {
|
|
3288
3924
|
const { field, operator, value, valueSource } = rule;
|
|
3289
|
-
//
|
|
3925
|
+
// v8 ignore next
|
|
3290
3926
|
const { parseNumbers, preserveValueOrder } = options;
|
|
3291
|
-
if (valueSource === "field" || processMatchMode(rule)) return;
|
|
3927
|
+
if (valueSource === "field" || processMatchMode(rule)) return void 0;
|
|
3292
3928
|
const operatorLC = lc(operator);
|
|
3293
3929
|
switch (operatorLC) {
|
|
3294
3930
|
case "=": return { [field]: processNumber(value, value, parseNumbers) };
|
|
@@ -3346,13 +3982,16 @@ const defaultRuleProcessorPrisma = (rule, options = {}) => {
|
|
|
3346
3982
|
*/
|
|
3347
3983
|
const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder, context = {} } = {}) => {
|
|
3348
3984
|
const { sequelizeOperators: Op, sequelizeCol: col, sequelizeFn: fn } = context;
|
|
3349
|
-
if (processMatchMode(rule)) return;
|
|
3985
|
+
if (processMatchMode(rule)) return void 0;
|
|
3350
3986
|
const { field, operator, value, valueSource } = rule;
|
|
3351
3987
|
const valueIsField = valueSource === "field";
|
|
3352
3988
|
const operatorLC = lc(operator);
|
|
3353
3989
|
if (!Op || valueIsField && (!col || !fn && [
|
|
3990
|
+
"contains",
|
|
3354
3991
|
"doesnotcontain",
|
|
3992
|
+
"beginswith",
|
|
3355
3993
|
"doesnotbeginwith",
|
|
3994
|
+
"endswith",
|
|
3356
3995
|
"doesnotendwith"
|
|
3357
3996
|
].includes(operatorLC))) return;
|
|
3358
3997
|
switch (operatorLC) {
|
|
@@ -3372,9 +4011,9 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
|
|
|
3372
4011
|
}[operatorLC];
|
|
3373
4012
|
return { [field]: valueIsField && operatorLC === "=" ? { [Op.col]: value } : { [sequelizeOperator]: valueIsField ? col(value) : shouldRenderAsNumber(value, parseNumbers) ? parseNumber(value, { parseNumbers: "strict" }) : value } };
|
|
3374
4013
|
}
|
|
3375
|
-
case "contains": return { [field]: { [Op.substring]: valueIsField ? col(value) : `${value}` } };
|
|
3376
|
-
case "beginswith": return { [field]: { [Op.startsWith]: valueIsField ? col(value) : `${value}` } };
|
|
3377
|
-
case "endswith": return { [field]: { [Op.endsWith]: valueIsField ? col(value) : `${value}` } };
|
|
4014
|
+
case "contains": return { [field]: { [valueIsField ? Op.like : Op.substring]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `${value}` } };
|
|
4015
|
+
case "beginswith": return { [field]: { [valueIsField ? Op.like : Op.startsWith]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}` } };
|
|
4016
|
+
case "endswith": return { [field]: { [valueIsField ? Op.like : Op.endsWith]: valueIsField ? fn("CONCAT", "%", col(value)) : `${value}` } };
|
|
3378
4017
|
case "doesnotcontain": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `%${value}%` } };
|
|
3379
4018
|
case "doesnotbeginwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}%` } };
|
|
3380
4019
|
case "doesnotendwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value)) : `%${value}` } };
|
|
@@ -3404,6 +4043,69 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
|
|
|
3404
4043
|
}
|
|
3405
4044
|
};
|
|
3406
4045
|
//#endregion
|
|
4046
|
+
//#region src/utils/formatQuery/defaultRuleProcessorSPARQL.ts
|
|
4047
|
+
const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
|
|
4048
|
+
/**
|
|
4049
|
+
* Default rule processor used by {@link formatQuery} for "sparql" format.
|
|
4050
|
+
*
|
|
4051
|
+
* @group Export
|
|
4052
|
+
*/
|
|
4053
|
+
const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
|
|
4054
|
+
const { escapeQuotes, parseNumbers } = opts;
|
|
4055
|
+
const { field, operator, value, valueSource } = rule;
|
|
4056
|
+
const valueIsField = valueSource === "field";
|
|
4057
|
+
const operatorTL = operator.toLowerCase();
|
|
4058
|
+
const fmtVal = (v) => {
|
|
4059
|
+
var _JSON$stringify;
|
|
4060
|
+
if (v === null || v === void 0) return "\"\"";
|
|
4061
|
+
if (typeof v === "boolean") return `"${v}"^^xsd:boolean`;
|
|
4062
|
+
if (typeof v === "bigint") return String(v);
|
|
4063
|
+
if (valueIsField) return trimIfString(v);
|
|
4064
|
+
if (typeof v === "number" || shouldRenderAsNumber(v, parseNumbers)) return trimIfString(v);
|
|
4065
|
+
const s = typeof v === "string" ? v : (_JSON$stringify = JSON.stringify(v)) !== null && _JSON$stringify !== void 0 ? _JSON$stringify : "";
|
|
4066
|
+
if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
|
|
4067
|
+
return `"${escapeDoubleQuotes(s, escapeQuotes)}"`;
|
|
4068
|
+
};
|
|
4069
|
+
switch (operatorTL) {
|
|
4070
|
+
case "=":
|
|
4071
|
+
case "!=":
|
|
4072
|
+
case "<":
|
|
4073
|
+
case ">":
|
|
4074
|
+
case "<=":
|
|
4075
|
+
case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
|
|
4076
|
+
case "<>": return `${field} != ${fmtVal(value)}`;
|
|
4077
|
+
case "contains": return `CONTAINS(${field}, ${fmtVal(value)})`;
|
|
4078
|
+
case "doesnotcontain": return `!CONTAINS(${field}, ${fmtVal(value)})`;
|
|
4079
|
+
case "beginswith": return `STRSTARTS(${field}, ${fmtVal(value)})`;
|
|
4080
|
+
case "doesnotbeginwith": return `!STRSTARTS(${field}, ${fmtVal(value)})`;
|
|
4081
|
+
case "endswith": return `STRENDS(${field}, ${fmtVal(value)})`;
|
|
4082
|
+
case "doesnotendwith": return `!STRENDS(${field}, ${fmtVal(value)})`;
|
|
4083
|
+
case "null": return `!BOUND(${field})`;
|
|
4084
|
+
case "notnull": return `BOUND(${field})`;
|
|
4085
|
+
case "in": {
|
|
4086
|
+
const items = toArray(value).map(fmtVal);
|
|
4087
|
+
if (!items.length) return "";
|
|
4088
|
+
return items.map((item) => `${field} = ${item}`).join(" || ");
|
|
4089
|
+
}
|
|
4090
|
+
case "notin": {
|
|
4091
|
+
const items = toArray(value).map(fmtVal);
|
|
4092
|
+
if (!items.length) return "";
|
|
4093
|
+
return items.map((item) => `${field} != ${item}`).join(" && ");
|
|
4094
|
+
}
|
|
4095
|
+
case "between": {
|
|
4096
|
+
const arr = toArray(value);
|
|
4097
|
+
if (arr.length < 2) return "";
|
|
4098
|
+
return `${field} >= ${fmtVal(arr[0])} && ${field} <= ${fmtVal(arr[1])}`;
|
|
4099
|
+
}
|
|
4100
|
+
case "notbetween": {
|
|
4101
|
+
const arr = toArray(value);
|
|
4102
|
+
if (arr.length < 2) return "";
|
|
4103
|
+
return `(${field} < ${fmtVal(arr[0])} || ${field} > ${fmtVal(arr[1])})`;
|
|
4104
|
+
}
|
|
4105
|
+
default: return `${field} ${operator} ${fmtVal(value)}`;
|
|
4106
|
+
}
|
|
4107
|
+
};
|
|
4108
|
+
//#endregion
|
|
3407
4109
|
//#region src/utils/formatQuery/formatQuery.ts
|
|
3408
4110
|
/**
|
|
3409
4111
|
* A collection of option presets for {@link formatQuery}, specifically for SQL-based formats.
|
|
@@ -3450,9 +4152,14 @@ const defaultRuleProcessors = {
|
|
|
3450
4152
|
prisma: defaultRuleProcessorPrisma,
|
|
3451
4153
|
sequelize: defaultRuleProcessorSequelize,
|
|
3452
4154
|
spel: defaultRuleProcessorSpEL,
|
|
3453
|
-
sql: defaultRuleProcessorSQL
|
|
4155
|
+
sql: defaultRuleProcessorSQL,
|
|
4156
|
+
cypher: defaultRuleProcessorCypher,
|
|
4157
|
+
gql: defaultRuleProcessorCypher,
|
|
4158
|
+
sparql: defaultRuleProcessorSPARQL,
|
|
4159
|
+
gremlin: defaultRuleProcessorGremlin,
|
|
4160
|
+
diagnostics: defaultRuleProcessorSQL
|
|
3454
4161
|
};
|
|
3455
|
-
/*
|
|
4162
|
+
/* v8 ignore next -- @preserve */
|
|
3456
4163
|
const defaultOperatorProcessor = (r) => r.operator;
|
|
3457
4164
|
const defaultOperatorProcessors = {
|
|
3458
4165
|
cel: defaultOperatorProcessor,
|
|
@@ -3471,13 +4178,20 @@ const defaultOperatorProcessors = {
|
|
|
3471
4178
|
prisma: defaultOperatorProcessor,
|
|
3472
4179
|
sequelize: defaultOperatorProcessor,
|
|
3473
4180
|
spel: defaultOperatorProcessor,
|
|
3474
|
-
sql: defaultOperatorProcessorSQL
|
|
4181
|
+
sql: defaultOperatorProcessorSQL,
|
|
4182
|
+
cypher: defaultOperatorProcessor,
|
|
4183
|
+
gql: defaultOperatorProcessor,
|
|
4184
|
+
sparql: defaultOperatorProcessor,
|
|
4185
|
+
gremlin: defaultOperatorProcessor,
|
|
4186
|
+
diagnostics: defaultOperatorProcessor
|
|
3475
4187
|
};
|
|
3476
4188
|
const defaultFallbackExpressions = {
|
|
3477
4189
|
cel: "1 == 1",
|
|
3478
4190
|
ldap: "",
|
|
3479
4191
|
mongodb: "\"$and\":[{\"$expr\":true}]",
|
|
3480
4192
|
natural_language: "1 is 1",
|
|
4193
|
+
sparql: "1 = 1",
|
|
4194
|
+
gremlin: "",
|
|
3481
4195
|
spel: "1 == 1",
|
|
3482
4196
|
sql: "(1 = 1)"
|
|
3483
4197
|
};
|
|
@@ -3540,31 +4254,34 @@ function formatQuery(ruleGroup, optionParam = {}) {
|
|
|
3540
4254
|
const fields = toFullOptionList(optObj.fields);
|
|
3541
4255
|
const getOperators = (f, m) => {
|
|
3542
4256
|
var _getOperators_option;
|
|
3543
|
-
return toFullOptionList((_getOperators_option = getOperators_option(f, m)) !== null && _getOperators_option !== void 0 ? _getOperators_option :
|
|
4257
|
+
return toFullOptionList((_getOperators_option = getOperators_option(f, m)) !== null && _getOperators_option !== void 0 ? _getOperators_option :
|
|
4258
|
+
/* v8 ignore start -- @preserve */ []);
|
|
3544
4259
|
};
|
|
3545
4260
|
const fallbackExpression = (_ref4 = fallbackExpression_option !== null && fallbackExpression_option !== void 0 ? fallbackExpression_option : defaultFallbackExpressions[format]) !== null && _ref4 !== void 0 ? _ref4 : defaultFallbackExpressions.sql;
|
|
3546
4261
|
let validationMap = {};
|
|
3547
|
-
//
|
|
4262
|
+
// v8 ignore else
|
|
3548
4263
|
if (typeof validator === "function") {
|
|
3549
4264
|
const validationResult = validator(ruleGroup);
|
|
3550
4265
|
if (typeof validationResult === "boolean") {
|
|
3551
|
-
//
|
|
3552
|
-
if (!validationResult)
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
4266
|
+
// v8 ignore else
|
|
4267
|
+
if (!validationResult) {
|
|
4268
|
+
if (format !== "diagnostics") return format === "parameterized" ? {
|
|
4269
|
+
sql: fallbackExpression,
|
|
4270
|
+
params: []
|
|
4271
|
+
} : format === "parameterized_named" ? {
|
|
4272
|
+
sql: fallbackExpression,
|
|
4273
|
+
params: {}
|
|
4274
|
+
} : format === "mongodb" ? `{${fallbackExpression}}` : format === "mongodb_query" ? mongoDbFallback : format === "prisma" ? prismaFallback : format === "jsonlogic" ? false : format === "elasticsearch" ? {} : format === "drizzle" || format === "sequelize" ? void 0 : fallbackExpression;
|
|
4275
|
+
}
|
|
3559
4276
|
} else validationMap = validationResult;
|
|
3560
4277
|
}
|
|
3561
4278
|
const validatorMap = {};
|
|
3562
4279
|
const uniqueFields = toFlatOptionArray(fields);
|
|
3563
4280
|
for (const f of uniqueFields)
|
|
3564
|
-
//
|
|
4281
|
+
// v8 ignore else
|
|
3565
4282
|
if (typeof f.validator === "function") {
|
|
3566
4283
|
var _f$value;
|
|
3567
|
-
validatorMap[(_f$value = f.value) !== null && _f$value !== void 0 ? _f$value : f.name] = f.validator;
|
|
4284
|
+
validatorMap[(_f$value = f.value) !== null && _f$value !== void 0 ? _f$value : /* v8 ignore start -- @preserve */ f.name] = f.validator;
|
|
3568
4285
|
}
|
|
3569
4286
|
const validateRule = (rule) => {
|
|
3570
4287
|
let validationResult;
|
|
@@ -3574,7 +4291,7 @@ function formatQuery(ruleGroup, optionParam = {}) {
|
|
|
3574
4291
|
const fieldArr = uniqueFields.filter((f) => f.name === rule.field);
|
|
3575
4292
|
if (fieldArr.length > 0) {
|
|
3576
4293
|
const field = fieldArr[0];
|
|
3577
|
-
//
|
|
4294
|
+
// v8 ignore else
|
|
3578
4295
|
if (typeof field.validator === "function") fieldValidator = field.validator;
|
|
3579
4296
|
}
|
|
3580
4297
|
}
|
|
@@ -3617,6 +4334,11 @@ function formatQuery(ruleGroup, optionParam = {}) {
|
|
|
3617
4334
|
case "prisma": return defaultRuleGroupProcessorPrisma(ruleGroup, finalOptions);
|
|
3618
4335
|
case "drizzle": return defaultRuleGroupProcessorDrizzle(ruleGroup, finalOptions);
|
|
3619
4336
|
case "sequelize": return defaultRuleGroupProcessorSequelize(ruleGroup, finalOptions);
|
|
4337
|
+
case "cypher":
|
|
4338
|
+
case "gql": return defaultRuleGroupProcessorCypher(ruleGroup, finalOptions);
|
|
4339
|
+
case "sparql": return defaultRuleGroupProcessorSPARQL(ruleGroup, finalOptions);
|
|
4340
|
+
case "gremlin": return defaultRuleGroupProcessorGremlin(ruleGroup, finalOptions);
|
|
4341
|
+
case "diagnostics": return defaultRuleGroupProcessorDiagnostics(ruleGroup, finalOptions);
|
|
3620
4342
|
default: return "";
|
|
3621
4343
|
}
|
|
3622
4344
|
}
|
|
@@ -3767,6 +4489,7 @@ const generateAccessibleDescription = (params) => pathsAreEqual([], params.path)
|
|
|
3767
4489
|
//#endregion
|
|
3768
4490
|
//#region src/utils/generateID.ts
|
|
3769
4491
|
const cryptoModule = globalThis.crypto;
|
|
4492
|
+
const uuidV4regex = /^[\da-f]{8}-[\da-f]{4}-4[\da-f]{3}-[89ab][\da-f]{3}-[\da-f]{12}$/i;
|
|
3770
4493
|
/**
|
|
3771
4494
|
* Default `id` generator. Generates a valid v4 UUID. Uses `crypto.randomUUID()`
|
|
3772
4495
|
* when available, otherwise uses an alternate method based on `getRandomValues`.
|
|
@@ -3776,11 +4499,11 @@ const cryptoModule = globalThis.crypto;
|
|
|
3776
4499
|
* ```
|
|
3777
4500
|
* @returns Valid v4 UUID
|
|
3778
4501
|
*/
|
|
3779
|
-
//
|
|
4502
|
+
// v8 ignore next
|
|
3780
4503
|
let generateID = () => "00-0-4-2-000".replaceAll(/[^-]/g, (s) => ((Math.random() + Math.trunc(s)) * 65536 >> Number.parseInt(s)).toString(16).padStart(4, "0"));
|
|
3781
|
-
//
|
|
4504
|
+
// v8 ignore else
|
|
3782
4505
|
if (cryptoModule) {
|
|
3783
|
-
//
|
|
4506
|
+
// v8 ignore else
|
|
3784
4507
|
if (typeof cryptoModule.randomUUID === "function") generateID = () => cryptoModule.randomUUID();
|
|
3785
4508
|
else if (typeof cryptoModule.getRandomValues === "function") {
|
|
3786
4509
|
const position19vals = "89ab";
|
|
@@ -3814,7 +4537,7 @@ const dummyFD$1 = {
|
|
|
3814
4537
|
*/
|
|
3815
4538
|
const getMatchModesUtil = (fieldData, getMatchModes) => {
|
|
3816
4539
|
var _fd$matchModes, _matchModes$map;
|
|
3817
|
-
const fd = fieldData ? toFullOption(fieldData) : dummyFD$1;
|
|
4540
|
+
const fd = fieldData ? toFullOption(fieldData) : /* v8 ignore next -- @preserve */ dummyFD$1;
|
|
3818
4541
|
let matchModes = (_fd$matchModes = fd.matchModes) !== null && _fd$matchModes !== void 0 ? _fd$matchModes : false;
|
|
3819
4542
|
if (!matchModes && getMatchModes) matchModes = getMatchModes(fd.value, { fieldData: fd });
|
|
3820
4543
|
if (matchModes === true) return defaultMatchModes;
|
|
@@ -3883,7 +4606,7 @@ const getValueSourcesUtil = (fieldData, operator, getValueSources) => {
|
|
|
3883
4606
|
const mergeAnyTranslations = (base, ...otherTranslations) => {
|
|
3884
4607
|
const result = _objectSpread2({}, base);
|
|
3885
4608
|
for (const translations of otherTranslations)
|
|
3886
|
-
//
|
|
4609
|
+
// v8 ignore else
|
|
3887
4610
|
if (translations) for (const key of objectKeys(translations)) {
|
|
3888
4611
|
if (isUnsafeKey(key)) continue;
|
|
3889
4612
|
if (result[key]) result[key] = _objectSpread2(_objectSpread2({}, result[key]), translations[key]);
|
|
@@ -3945,6 +4668,8 @@ const mergeClassnames = (...args) => ({
|
|
|
3945
4668
|
dndCopy: joinClassnamesByName("dndCopy", args),
|
|
3946
4669
|
dndGroup: joinClassnamesByName("dndGroup", args),
|
|
3947
4670
|
dndDropNotAllowed: joinClassnamesByName("dndDropNotAllowed", args),
|
|
4671
|
+
dndPreviewPosition: joinClassnamesByName("dndPreviewPosition", args),
|
|
4672
|
+
dndHidden: joinClassnamesByName("dndHidden", args),
|
|
3948
4673
|
disabled: joinClassnamesByName("disabled", args),
|
|
3949
4674
|
valueListItem: joinClassnamesByName("valueListItem", args),
|
|
3950
4675
|
matchMode: joinClassnamesByName("matchMode", args),
|
|
@@ -4023,7 +4748,7 @@ const regenerateIDs = (subject, { idGenerator = generateID } = {}) => {
|
|
|
4023
4748
|
if (!isPojo(subject)) return subject;
|
|
4024
4749
|
if (!isRuleGroup(subject)) return structuredClone(_objectSpread2(_objectSpread2({}, subject), {}, { id: idGenerator() }));
|
|
4025
4750
|
const newGroup = _objectSpread2(_objectSpread2({}, subject), {}, { id: idGenerator() });
|
|
4026
|
-
//
|
|
4751
|
+
// v8 ignore else
|
|
4027
4752
|
if (Array.isArray(newGroup.rules)) newGroup.rules = subject.rules.map((r) => typeof r === "string" ? r : isRuleGroup(r) ? regenerateIDs(r, { idGenerator }) : regenerateID(r, { idGenerator }));
|
|
4028
4753
|
return newGroup;
|
|
4029
4754
|
};
|
|
@@ -4332,6 +5057,6 @@ const groupInPlace = (query, sourcePathOrID, targetPathOrID, options = {}) => {
|
|
|
4332
5057
|
return query;
|
|
4333
5058
|
};
|
|
4334
5059
|
//#endregion
|
|
4335
|
-
export { LogType, TestID, add, addInPlace, bigIntJsonParseReviver, bigIntJsonStringifyReplacer, celCombinatorMap, clsx, convertFromIC, convertQuery, convertToIC, 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, defaultRuleGroupProcessorDrizzle, defaultRuleGroupProcessorElasticSearch, defaultRuleGroupProcessorJSONata, defaultRuleGroupProcessorJsonLogic, defaultRuleGroupProcessorLDAP, defaultRuleGroupProcessorMongoDB, defaultRuleGroupProcessorMongoDBQuery, defaultRuleGroupProcessorNL, defaultRuleGroupProcessorParameterized, defaultRuleGroupProcessorPrisma, defaultRuleGroupProcessorSQL, defaultRuleGroupProcessorSequelize, defaultRuleGroupProcessorSpEL, defaultRuleProcessorCEL, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorJSONata, defaultRuleProcessorJsonLogic, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDB, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, 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 };
|
|
5060
|
+
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 };
|
|
4336
5061
|
|
|
4337
5062
|
//# sourceMappingURL=react-querybuilder_core.legacy-esm.js.map
|