@react-querybuilder/core 8.9.2 → 8.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{arrayUtils-BF1P8iHS.mjs → arrayUtils-A_OXU9W1.mjs} +3 -75
- package/dist/arrayUtils-A_OXU9W1.mjs.map +1 -0
- package/dist/arrayUtils-QxZOZTf6.js +73 -0
- package/dist/arrayUtils-QxZOZTf6.js.map +1 -0
- package/dist/basic-DEc65Kng.d.mts +363 -0
- package/dist/basic-Dd_M2f3M.d.ts +363 -0
- package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +806 -1366
- package/dist/cjs/react-querybuilder_core.cjs.development.js +455 -116
- package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +806 -1366
- 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-H7RhQiIc.mjs → convertQuery-CqX3rPvj.mjs} +3 -3
- package/dist/{convertQuery-H7RhQiIc.mjs.map → convertQuery-CqX3rPvj.mjs.map} +1 -1
- package/dist/{export-DyrnTh6K.d.ts → export-Dy4FckB-.d.ts} +7 -6
- package/dist/{export-r-V7bU31.d.mts → export-t1V2N8pz.d.mts} +7 -6
- package/dist/formatQuery.d.mts +3 -2
- package/dist/formatQuery.d.ts +3 -2
- package/dist/formatQuery.js +217 -87
- package/dist/formatQuery.js.map +1 -1
- package/dist/formatQuery.mjs +217 -87
- package/dist/formatQuery.mjs.map +1 -1
- package/dist/{import-Cksobmln.d.ts → import-Cz8canKo.d.mts} +3 -3
- package/dist/{import-BwbbP4oU.d.mts → import-DtS9Ocx5.d.ts} +3 -3
- package/dist/{isRuleGroup-CnhYpLOM.mjs → isRuleGroup-CYcfPgbg.mjs} +2 -2
- package/dist/{isRuleGroup-CnhYpLOM.mjs.map → isRuleGroup-CYcfPgbg.mjs.map} +1 -1
- package/dist/lexer-C53tqS2p.js +406 -0
- package/dist/lexer-C53tqS2p.js.map +1 -0
- package/dist/{optGroupUtils-CXLgyg2i.js → optGroupUtils-B0hTpodo.js} +114 -1
- package/dist/optGroupUtils-B0hTpodo.js.map +1 -0
- package/dist/{optGroupUtils-Duv-M8rf.mjs → optGroupUtils-VeZ3k7-1.mjs} +86 -3
- package/dist/optGroupUtils-VeZ3k7-1.mjs.map +1 -0
- package/dist/parseCEL.d.mts +292 -11
- package/dist/parseCEL.d.ts +292 -11
- package/dist/parseCEL.js +874 -1125
- package/dist/parseCEL.js.map +1 -1
- package/dist/parseCEL.mjs +828 -1126
- package/dist/parseCEL.mjs.map +1 -1
- package/dist/parseJSONata.d.mts +3 -2
- package/dist/parseJSONata.d.ts +3 -2
- package/dist/parseJSONata.js +49 -77
- package/dist/parseJSONata.js.map +1 -1
- package/dist/parseJSONata.mjs +4 -5
- package/dist/parseJSONata.mjs.map +1 -1
- package/dist/parseJsonLogic.d.mts +4 -3
- package/dist/parseJsonLogic.d.ts +4 -3
- package/dist/parseJsonLogic.js +5 -6
- package/dist/parseJsonLogic.js.map +1 -1
- package/dist/parseJsonLogic.mjs +5 -6
- package/dist/parseJsonLogic.mjs.map +1 -1
- package/dist/parseMongoDB.d.mts +3 -2
- package/dist/parseMongoDB.d.ts +3 -2
- package/dist/parseMongoDB.js +15 -16
- package/dist/parseMongoDB.js.map +1 -1
- package/dist/parseMongoDB.mjs +5 -6
- package/dist/parseMongoDB.mjs.map +1 -1
- package/dist/{parseNumber-BtGKa58z.mjs → parseNumber-CXdMVNFx.mjs} +2 -2
- package/dist/{parseNumber-BtGKa58z.mjs.map → parseNumber-CXdMVNFx.mjs.map} +1 -1
- package/dist/{parseNumber-Bcys1kOH.js → parseNumber-D4iQDxK-.js} +1 -1
- package/dist/{parseNumber-Bcys1kOH.js.map → parseNumber-D4iQDxK-.js.map} +1 -1
- package/dist/parseSQL.d.mts +3 -2
- package/dist/parseSQL.d.ts +3 -2
- package/dist/parseSQL.js +2691 -3036
- package/dist/parseSQL.js.map +1 -1
- package/dist/parseSQL.mjs +2691 -3037
- package/dist/parseSQL.mjs.map +1 -1
- package/dist/parseSpEL.d.mts +3 -2
- package/dist/parseSpEL.d.ts +3 -2
- package/dist/parseSpEL.js +7 -9
- package/dist/parseSpEL.js.map +1 -1
- package/dist/parseSpEL.mjs +5 -6
- package/dist/parseSpEL.mjs.map +1 -1
- package/dist/{prepareQueryObjects-BqFEs4eV.js → prepareQueryObjects-BOUWfel5.js} +4 -5
- package/dist/prepareQueryObjects-BOUWfel5.js.map +1 -0
- package/dist/{prepareQueryObjects-CS6Wmhmf.mjs → prepareQueryObjects-DPCC-iHp.mjs} +6 -7
- package/dist/prepareQueryObjects-DPCC-iHp.mjs.map +1 -0
- package/dist/query-builder-layout.css +1 -1
- package/dist/query-builder-layout.css.map +1 -1
- package/dist/query-builder.css +1 -1
- package/dist/query-builder.css.map +1 -1
- package/dist/react-querybuilder_core.d.mts +806 -1366
- package/dist/react-querybuilder_core.legacy-esm.d.ts +806 -1366
- package/dist/react-querybuilder_core.legacy-esm.js +455 -114
- package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_core.mjs +448 -117
- package/dist/react-querybuilder_core.mjs.map +1 -1
- package/dist/react-querybuilder_core.production.d.mts +806 -1366
- package/dist/react-querybuilder_core.production.mjs +1 -1
- package/dist/react-querybuilder_core.production.mjs.map +1 -1
- package/dist/styles/_layout.scss +61 -17
- package/dist/styles/_main.scss +22 -4
- package/dist/{transformQuery-FL_nlpp5.js → transformQuery-CWDPogO5.js} +1 -1
- package/dist/{transformQuery-FL_nlpp5.js.map → transformQuery-CWDPogO5.js.map} +1 -1
- package/dist/{transformQuery-DdMvmrCh.mjs → transformQuery-DCCpjtyq.mjs} +3 -3
- package/dist/{transformQuery-DdMvmrCh.mjs.map → transformQuery-DCCpjtyq.mjs.map} +1 -1
- package/dist/transformQuery.d.mts +1 -1
- package/dist/transformQuery.d.ts +1 -1
- package/dist/transformQuery.js +1 -1
- package/dist/transformQuery.mjs +2 -2
- package/package.json +14 -12
- package/dist/arrayUtils-BF1P8iHS.mjs.map +0 -1
- package/dist/arrayUtils-D5EoIsKP.js +0 -164
- package/dist/arrayUtils-D5EoIsKP.js.map +0 -1
- package/dist/basic-BfD-7CN3.d.mts +0 -1235
- package/dist/basic-C8xXKHIA.d.ts +0 -1235
- package/dist/objectUtils-BBZSfZJz.js +0 -17
- package/dist/objectUtils-BBZSfZJz.js.map +0 -1
- package/dist/objectUtils-BtWdcZVG.mjs +0 -11
- package/dist/objectUtils-BtWdcZVG.mjs.map +0 -1
- package/dist/optGroupUtils-CXLgyg2i.js.map +0 -1
- package/dist/optGroupUtils-Duv-M8rf.mjs.map +0 -1
- package/dist/prepareQueryObjects-BqFEs4eV.js.map +0 -1
- package/dist/prepareQueryObjects-CS6Wmhmf.mjs.map +0 -1
package/dist/formatQuery.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const require_isRuleGroup = require('./isRuleGroup-DqAs2x4E.js');
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
2
|
+
const require_optGroupUtils = require('./optGroupUtils-B0hTpodo.js');
|
|
3
|
+
const require_arrayUtils = require('./arrayUtils-QxZOZTf6.js');
|
|
4
|
+
const require_parseNumber = require('./parseNumber-D4iQDxK-.js');
|
|
5
|
+
const require_transformQuery = require('./transformQuery-CWDPogO5.js');
|
|
6
6
|
const require_convertQuery = require('./convertQuery-DAqoID3O.js');
|
|
7
7
|
let immer = require("immer");
|
|
8
8
|
immer = require_isRuleGroup.__toESM(immer);
|
|
@@ -14,9 +14,11 @@ immer = require_isRuleGroup.__toESM(immer);
|
|
|
14
14
|
const isValidationResult = (vr) => require_isRuleGroup.isPojo(vr) && typeof vr.valid === "boolean";
|
|
15
15
|
/**
|
|
16
16
|
* Determines if a rule or group is valid based on a validation result (if defined)
|
|
17
|
-
* or a validator function. Returns `true` if neither are defined
|
|
17
|
+
* or a validator function. Returns `true` if neither are defined and the `muted`
|
|
18
|
+
* property is not `true`.
|
|
18
19
|
*/
|
|
19
20
|
const isRuleOrGroupValid = (rg, validationResult, validator) => {
|
|
21
|
+
if (rg.muted) return false;
|
|
20
22
|
if (typeof validationResult === "boolean") return validationResult;
|
|
21
23
|
if (isValidationResult(validationResult)) return validationResult.valid;
|
|
22
24
|
if (typeof validator === "function" && !require_isRuleGroup.isRuleGroup(rg)) {
|
|
@@ -290,19 +292,45 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
|
|
|
290
292
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
291
293
|
const processRuleGroup = (rg, outermost) => {
|
|
292
294
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
|
|
293
|
-
const
|
|
294
|
-
|
|
295
|
-
|
|
295
|
+
const processedRules = [];
|
|
296
|
+
let precedingCombinator = "";
|
|
297
|
+
let firstRule = true;
|
|
298
|
+
for (const rule of rg.rules) {
|
|
299
|
+
if (typeof rule === "string") {
|
|
300
|
+
precedingCombinator = celCombinatorMap[rule];
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
if (require_isRuleGroup.isRuleGroup(rule)) {
|
|
304
|
+
const processedGroup = processRuleGroup(rule);
|
|
305
|
+
if (processedGroup) {
|
|
306
|
+
if (!firstRule && precedingCombinator) {
|
|
307
|
+
processedRules.push(precedingCombinator);
|
|
308
|
+
precedingCombinator = "";
|
|
309
|
+
}
|
|
310
|
+
firstRule = false;
|
|
311
|
+
processedRules.push(processedGroup);
|
|
312
|
+
}
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
296
315
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
297
|
-
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName)
|
|
316
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
|
|
298
317
|
const fieldData = require_optGroupUtils.getOption(fields, rule.field);
|
|
299
|
-
|
|
318
|
+
const processedRule = ruleProcessor(rule, {
|
|
300
319
|
...options,
|
|
301
320
|
parseNumbers: getParseNumberBoolean(fieldData?.inputType),
|
|
302
321
|
escapeQuotes: (rule.valueSource ?? "value") === "value",
|
|
303
322
|
fieldData
|
|
304
323
|
});
|
|
305
|
-
|
|
324
|
+
if (processedRule) {
|
|
325
|
+
if (!firstRule && precedingCombinator) {
|
|
326
|
+
processedRules.push(precedingCombinator);
|
|
327
|
+
precedingCombinator = "";
|
|
328
|
+
}
|
|
329
|
+
firstRule = false;
|
|
330
|
+
processedRules.push(processedRule);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
const expression = processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${celCombinatorMap[rg.combinator]} ` : " ");
|
|
306
334
|
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
|
|
307
335
|
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
308
336
|
};
|
|
@@ -329,11 +357,10 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
|
|
|
329
357
|
else if (matchEval) {
|
|
330
358
|
const { mode, threshold } = matchEval;
|
|
331
359
|
const arrayElementAlias = "elem_alias";
|
|
332
|
-
const
|
|
360
|
+
const nestedArrayFilter = defaultRuleGroupProcessorCEL(require_transformQuery.transformQuery(rule.value, { ruleProcessor: (r) => ({
|
|
333
361
|
...r,
|
|
334
362
|
field: `${arrayElementAlias}${r.field ? `.${r.field}` : ""}`
|
|
335
|
-
}) });
|
|
336
|
-
const nestedArrayFilter = defaultRuleGroupProcessorCEL(celQuery, opts);
|
|
363
|
+
}) }), opts);
|
|
337
364
|
switch (mode) {
|
|
338
365
|
case "all": return `${field}.all(${arrayElementAlias}, ${nestedArrayFilter})`;
|
|
339
366
|
case "none":
|
|
@@ -367,8 +394,7 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
|
|
|
367
394
|
case "in":
|
|
368
395
|
case "notin": {
|
|
369
396
|
const [prefix, suffix] = shouldNegate$2(operatorTL) ? ["!(", ")"] : ["", ""];
|
|
370
|
-
|
|
371
|
-
return `${prefix}${field} in [${valueAsArray.map((val) => valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${require_arrayUtils.trimIfString(val)}` : `"${escapeDoubleQuotes(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
|
|
397
|
+
return `${prefix}${field} in [${require_arrayUtils.toArray(value).map((val) => valueIsField || shouldRenderAsNumber(val, parseNumbers) ? `${require_arrayUtils.trimIfString(val)}` : `"${escapeDoubleQuotes(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
|
|
372
398
|
}
|
|
373
399
|
case "between":
|
|
374
400
|
case "notbetween": {
|
|
@@ -588,19 +614,45 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
|
|
|
588
614
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
589
615
|
const processRuleGroup = (rg, outermost) => {
|
|
590
616
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
|
|
591
|
-
const
|
|
592
|
-
|
|
593
|
-
|
|
617
|
+
const processedRules = [];
|
|
618
|
+
let precedingCombinator = "";
|
|
619
|
+
let firstRule = true;
|
|
620
|
+
for (const rule of rg.rules) {
|
|
621
|
+
if (typeof rule === "string") {
|
|
622
|
+
precedingCombinator = rule;
|
|
623
|
+
continue;
|
|
624
|
+
}
|
|
625
|
+
if (require_isRuleGroup.isRuleGroup(rule)) {
|
|
626
|
+
const processedGroup = processRuleGroup(rule);
|
|
627
|
+
if (processedGroup) {
|
|
628
|
+
if (!firstRule && precedingCombinator) {
|
|
629
|
+
processedRules.push(precedingCombinator);
|
|
630
|
+
precedingCombinator = "";
|
|
631
|
+
}
|
|
632
|
+
firstRule = false;
|
|
633
|
+
processedRules.push(processedGroup);
|
|
634
|
+
}
|
|
635
|
+
continue;
|
|
636
|
+
}
|
|
594
637
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
595
|
-
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName)
|
|
638
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
|
|
596
639
|
const fieldData = require_optGroupUtils.getOption(fields, rule.field);
|
|
597
|
-
|
|
640
|
+
const processedRule = ruleProcessor(rule, {
|
|
598
641
|
...options,
|
|
599
642
|
parseNumbers: getParseNumberBoolean(fieldData?.inputType),
|
|
600
643
|
escapeQuotes: (rule.valueSource ?? "value") === "value",
|
|
601
644
|
fieldData
|
|
602
645
|
});
|
|
603
|
-
|
|
646
|
+
if (processedRule) {
|
|
647
|
+
if (!firstRule && precedingCombinator) {
|
|
648
|
+
processedRules.push(precedingCombinator);
|
|
649
|
+
precedingCombinator = "";
|
|
650
|
+
}
|
|
651
|
+
firstRule = false;
|
|
652
|
+
processedRules.push(processedRule);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
const expression = processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ");
|
|
604
656
|
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
|
|
605
657
|
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
606
658
|
};
|
|
@@ -656,15 +708,9 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
|
|
|
656
708
|
case "contains":
|
|
657
709
|
case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? require_arrayUtils.trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
658
710
|
case "beginswith":
|
|
659
|
-
case "doesnotbeginwith": {
|
|
660
|
-
const valueTL = valueIsField ? `'^'.concat(${require_arrayUtils.trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes(value, escapeQuotes)}'`;
|
|
661
|
-
return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
|
|
662
|
-
}
|
|
711
|
+
case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${require_arrayUtils.trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
663
712
|
case "endswith":
|
|
664
|
-
case "doesnotendwith": {
|
|
665
|
-
const valueTL = valueIsField ? `${require_arrayUtils.trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`;
|
|
666
|
-
return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate$1(operatorTL));
|
|
667
|
-
}
|
|
713
|
+
case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${require_arrayUtils.trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
|
|
668
714
|
case "null": return `${field} == null`;
|
|
669
715
|
case "notnull": return `${field} != null`;
|
|
670
716
|
case "in":
|
|
@@ -777,11 +823,10 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
|
777
823
|
if (opts.preset !== "postgresql") return;
|
|
778
824
|
const { mode, threshold } = matchEval;
|
|
779
825
|
const arrayElementAlias = "elem_alias";
|
|
780
|
-
const
|
|
826
|
+
const nestedArrayFilter = defaultRuleGroupProcessorDrizzle(require_transformQuery.transformQuery(rule.value, { ruleProcessor: (r) => ({
|
|
781
827
|
...r,
|
|
782
828
|
field: arrayElementAlias
|
|
783
|
-
}) })
|
|
784
|
-
const nestedArrayFilter = defaultRuleGroupProcessorDrizzle(sqlQuery, {
|
|
829
|
+
}) }), {
|
|
785
830
|
...opts,
|
|
786
831
|
context: {
|
|
787
832
|
...opts.context,
|
|
@@ -867,7 +912,6 @@ const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns
|
|
|
867
912
|
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, validateRule, validationMap } = options;
|
|
868
913
|
if (!columns || !drizzleOperators) return;
|
|
869
914
|
const { and, not, or } = drizzleOperators;
|
|
870
|
-
const query = require_isRuleGroup.isRuleGroupType(ruleGroup) ? ruleGroup : require_convertQuery.convertFromIC(ruleGroup);
|
|
871
915
|
const ruleProcessor = defaultRuleProcessorDrizzle;
|
|
872
916
|
const processRuleGroup = (rg, _outermost) => {
|
|
873
917
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return;
|
|
@@ -891,7 +935,7 @@ const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns
|
|
|
891
935
|
const ruleGroupSQL = rg.combinator === "or" ? or(...processedRules) : and(...processedRules);
|
|
892
936
|
return rg.not ? not(ruleGroupSQL) : ruleGroupSQL;
|
|
893
937
|
};
|
|
894
|
-
return processRuleGroup(
|
|
938
|
+
return processRuleGroup(require_convertQuery.convertFromIC(ruleGroup), true);
|
|
895
939
|
};
|
|
896
940
|
|
|
897
941
|
//#endregion
|
|
@@ -903,7 +947,6 @@ const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns
|
|
|
903
947
|
*/
|
|
904
948
|
const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
|
|
905
949
|
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
906
|
-
const query = require_convertQuery.convertFromIC(ruleGroup);
|
|
907
950
|
const processRuleGroup = (rg) => {
|
|
908
951
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return false;
|
|
909
952
|
const processedRules = rg.rules.map((rule) => {
|
|
@@ -920,7 +963,7 @@ const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
|
|
|
920
963
|
if (processedRules.length === 0) return false;
|
|
921
964
|
return { bool: rg.not ? { must_not: /^or$/i.test(rg.combinator) ? { bool: { should: processedRules } } : processedRules } : { [/^or$/i.test(rg.combinator) ? "should" : "must"]: processedRules } };
|
|
922
965
|
};
|
|
923
|
-
const processedRuleGroup = processRuleGroup(
|
|
966
|
+
const processedRuleGroup = processRuleGroup(require_convertQuery.convertFromIC(ruleGroup));
|
|
924
967
|
return processedRuleGroup === false ? {} : processedRuleGroup;
|
|
925
968
|
};
|
|
926
969
|
|
|
@@ -935,19 +978,45 @@ const defaultRuleGroupProcessorJSONata = (ruleGroup, options) => {
|
|
|
935
978
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
936
979
|
const processRuleGroup = (rg, outermost) => {
|
|
937
980
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
|
|
938
|
-
const
|
|
939
|
-
|
|
940
|
-
|
|
981
|
+
const processedRules = [];
|
|
982
|
+
let precedingCombinator = "";
|
|
983
|
+
let firstRule = true;
|
|
984
|
+
for (const rule of rg.rules) {
|
|
985
|
+
if (typeof rule === "string") {
|
|
986
|
+
precedingCombinator = rule;
|
|
987
|
+
continue;
|
|
988
|
+
}
|
|
989
|
+
if (require_isRuleGroup.isRuleGroup(rule)) {
|
|
990
|
+
const processedGroup = processRuleGroup(rule);
|
|
991
|
+
if (processedGroup) {
|
|
992
|
+
if (!firstRule && precedingCombinator) {
|
|
993
|
+
processedRules.push(precedingCombinator);
|
|
994
|
+
precedingCombinator = "";
|
|
995
|
+
}
|
|
996
|
+
firstRule = false;
|
|
997
|
+
processedRules.push(processedGroup);
|
|
998
|
+
}
|
|
999
|
+
continue;
|
|
1000
|
+
}
|
|
941
1001
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
942
|
-
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName)
|
|
1002
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
|
|
943
1003
|
const fieldData = require_optGroupUtils.getOption(fields, rule.field);
|
|
944
|
-
|
|
1004
|
+
const processedRule = ruleProcessor(rule, {
|
|
945
1005
|
...options,
|
|
946
1006
|
parseNumbers: getParseNumberBoolean(fieldData?.inputType),
|
|
947
1007
|
escapeQuotes: (rule.valueSource ?? "value") === "value",
|
|
948
1008
|
fieldData
|
|
949
1009
|
});
|
|
950
|
-
|
|
1010
|
+
if (processedRule) {
|
|
1011
|
+
if (!firstRule && precedingCombinator) {
|
|
1012
|
+
processedRules.push(precedingCombinator);
|
|
1013
|
+
precedingCombinator = "";
|
|
1014
|
+
}
|
|
1015
|
+
firstRule = false;
|
|
1016
|
+
processedRules.push(processedRule);
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
const expression = processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ");
|
|
951
1020
|
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "$not" : ""}(`, ")"] : ["", ""];
|
|
952
1021
|
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
953
1022
|
};
|
|
@@ -993,7 +1062,6 @@ const defaultRuleGroupProcessorJsonLogic = (ruleGroup, options) => {
|
|
|
993
1062
|
*/
|
|
994
1063
|
const defaultRuleGroupProcessorLDAP = (ruleGroup, options) => {
|
|
995
1064
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
996
|
-
const query = require_convertQuery.convertFromIC(ruleGroup);
|
|
997
1065
|
const processRuleGroup = (rg, outermost) => {
|
|
998
1066
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
|
|
999
1067
|
const rules = rg.rules.map((rule) => {
|
|
@@ -1013,7 +1081,7 @@ const defaultRuleGroupProcessorLDAP = (ruleGroup, options) => {
|
|
|
1013
1081
|
const [prefix, suffix] = rules.length > 1 ? [`${notPrefix}(${rg.combinator === "or" ? "|" : "&"}`, `)${notSuffix}`] : [notPrefix, notSuffix];
|
|
1014
1082
|
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
1015
1083
|
};
|
|
1016
|
-
return processRuleGroup(
|
|
1084
|
+
return processRuleGroup(require_convertQuery.convertFromIC(ruleGroup), true);
|
|
1017
1085
|
};
|
|
1018
1086
|
|
|
1019
1087
|
//#endregion
|
|
@@ -1068,20 +1136,46 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
1068
1136
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
1069
1137
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
1070
1138
|
const rg2 = require_isRuleGroup.isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && require_isRuleGroup.lc(r) === "xor") ? require_convertQuery.convertFromIC(rg) : rg;
|
|
1071
|
-
const processedRules =
|
|
1072
|
-
|
|
1073
|
-
|
|
1139
|
+
const processedRules = [];
|
|
1140
|
+
let precedingCombinator = "";
|
|
1141
|
+
let firstRule = true;
|
|
1142
|
+
for (const rule of rg2.rules) {
|
|
1143
|
+
if (typeof rule === "string") {
|
|
1144
|
+
precedingCombinator = `, ${translations[rule] ?? rule} `;
|
|
1145
|
+
continue;
|
|
1146
|
+
}
|
|
1147
|
+
if (require_isRuleGroup.isRuleGroup(rule)) {
|
|
1148
|
+
const processedGroup = processRuleGroup(rule, rg2.rules.length === 1 && !(rg2.not || /^xor$/i.test(rg2.combinator ?? "")));
|
|
1149
|
+
// istanbul ignore else
|
|
1150
|
+
if (processedGroup) {
|
|
1151
|
+
if (!firstRule && precedingCombinator) {
|
|
1152
|
+
processedRules.push(precedingCombinator);
|
|
1153
|
+
precedingCombinator = "";
|
|
1154
|
+
}
|
|
1155
|
+
firstRule = false;
|
|
1156
|
+
processedRules.push(processedGroup);
|
|
1157
|
+
}
|
|
1158
|
+
continue;
|
|
1159
|
+
}
|
|
1074
1160
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
1075
|
-
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName)
|
|
1161
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
|
|
1076
1162
|
const escapeQuotes = (rule.valueSource ?? "value") === "value";
|
|
1077
1163
|
const fieldData = require_optGroupUtils.getOption(fields, rule.field);
|
|
1078
|
-
|
|
1164
|
+
const processedRule = ruleProcessor(rule, {
|
|
1079
1165
|
...options,
|
|
1080
1166
|
parseNumbers: getParseNumberBoolean(fieldData?.inputType),
|
|
1081
1167
|
escapeQuotes,
|
|
1082
1168
|
fieldData
|
|
1083
1169
|
});
|
|
1084
|
-
|
|
1170
|
+
if (processedRule) {
|
|
1171
|
+
if (!firstRule && precedingCombinator) {
|
|
1172
|
+
processedRules.push(precedingCombinator);
|
|
1173
|
+
precedingCombinator = "";
|
|
1174
|
+
}
|
|
1175
|
+
firstRule = false;
|
|
1176
|
+
processedRules.push(processedRule);
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1085
1179
|
if (processedRules.length === 0) return fallbackExpression;
|
|
1086
1180
|
const isXOR = require_isRuleGroup.lc(rg2.combinator ?? "") === "xor";
|
|
1087
1181
|
const combinator = isXOR ? rg2.combinator.slice(1) : rg2.combinator;
|
|
@@ -1089,7 +1183,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
1089
1183
|
const [prefixTL, suffixTL] = ["groupPrefix", "groupSuffix"].map((key) => rg2.not ? isXOR ? getNLTranslataion(key, translations, ["not", "xor"]) : getNLTranslataion(key, translations, ["not"]) : isXOR ? getNLTranslataion(key, translations, ["xor"]) : getNLTranslataion(key, translations));
|
|
1090
1184
|
const prefix = mustWrap ? `${prefixTL} (`.trim() : "";
|
|
1091
1185
|
const suffix = mustWrap ? `) ${suffixTL}`.trim() : "";
|
|
1092
|
-
return `${prefix}${processedRules.
|
|
1186
|
+
return `${prefix}${processedRules.join(require_isRuleGroup.isRuleGroupType(rg2) ? `, ${translations[combinator] ?? combinator} ` : "")}${suffix}`;
|
|
1093
1187
|
};
|
|
1094
1188
|
return processRuleGroup(ruleGroup, true);
|
|
1095
1189
|
};
|
|
@@ -1139,11 +1233,37 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
|
|
|
1139
1233
|
};
|
|
1140
1234
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
1141
1235
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
1142
|
-
const processedRules =
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1236
|
+
const processedRules = [];
|
|
1237
|
+
let precedingCombinator = "";
|
|
1238
|
+
let firstRule = true;
|
|
1239
|
+
for (const rule of rg.rules) {
|
|
1240
|
+
if (typeof rule === "string") {
|
|
1241
|
+
precedingCombinator = rule;
|
|
1242
|
+
continue;
|
|
1243
|
+
}
|
|
1244
|
+
if (require_isRuleGroup.isRuleGroup(rule)) {
|
|
1245
|
+
const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
|
|
1246
|
+
// istanbul ignore else
|
|
1247
|
+
if (processedGroup) {
|
|
1248
|
+
if (!firstRule && precedingCombinator) {
|
|
1249
|
+
processedRules.push(precedingCombinator);
|
|
1250
|
+
precedingCombinator = "";
|
|
1251
|
+
}
|
|
1252
|
+
firstRule = false;
|
|
1253
|
+
processedRules.push(processedGroup);
|
|
1254
|
+
}
|
|
1255
|
+
continue;
|
|
1256
|
+
}
|
|
1257
|
+
const processedRule = processRule(rule);
|
|
1258
|
+
if (processedRule) {
|
|
1259
|
+
if (!firstRule && precedingCombinator) {
|
|
1260
|
+
processedRules.push(precedingCombinator);
|
|
1261
|
+
precedingCombinator = "";
|
|
1262
|
+
}
|
|
1263
|
+
firstRule = false;
|
|
1264
|
+
processedRules.push(processedRule);
|
|
1265
|
+
}
|
|
1266
|
+
}
|
|
1147
1267
|
if (processedRules.length === 0) return fallbackExpression;
|
|
1148
1268
|
return `${rg.not ? "NOT " : ""}(${processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ")})`;
|
|
1149
1269
|
};
|
|
@@ -1252,20 +1372,46 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
|
|
|
1252
1372
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
1253
1373
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
1254
1374
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
1255
|
-
const processedRules =
|
|
1256
|
-
|
|
1257
|
-
|
|
1375
|
+
const processedRules = [];
|
|
1376
|
+
let precedingCombinator = "";
|
|
1377
|
+
let firstRule = true;
|
|
1378
|
+
for (const rule of rg.rules) {
|
|
1379
|
+
if (typeof rule === "string") {
|
|
1380
|
+
precedingCombinator = rule;
|
|
1381
|
+
continue;
|
|
1382
|
+
}
|
|
1383
|
+
if (require_isRuleGroup.isRuleGroup(rule)) {
|
|
1384
|
+
const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
|
|
1385
|
+
// istanbul ignore else
|
|
1386
|
+
if (processedGroup) {
|
|
1387
|
+
if (!firstRule && precedingCombinator) {
|
|
1388
|
+
processedRules.push(precedingCombinator);
|
|
1389
|
+
precedingCombinator = "";
|
|
1390
|
+
}
|
|
1391
|
+
firstRule = false;
|
|
1392
|
+
processedRules.push(processedGroup);
|
|
1393
|
+
}
|
|
1394
|
+
continue;
|
|
1395
|
+
}
|
|
1258
1396
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
1259
|
-
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName)
|
|
1397
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
|
|
1260
1398
|
const escapeQuotes = (rule.valueSource ?? "value") === "value";
|
|
1261
1399
|
const fieldData = require_optGroupUtils.getOption(fields, rule.field);
|
|
1262
|
-
|
|
1400
|
+
const processedRule = ruleProcessor(rule, {
|
|
1263
1401
|
...options,
|
|
1264
1402
|
parseNumbers: getParseNumberBoolean(fieldData?.inputType),
|
|
1265
1403
|
escapeQuotes,
|
|
1266
1404
|
fieldData
|
|
1267
1405
|
});
|
|
1268
|
-
|
|
1406
|
+
if (processedRule) {
|
|
1407
|
+
if (!firstRule && precedingCombinator) {
|
|
1408
|
+
processedRules.push(precedingCombinator);
|
|
1409
|
+
precedingCombinator = "";
|
|
1410
|
+
}
|
|
1411
|
+
firstRule = false;
|
|
1412
|
+
processedRules.push(processedRule);
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1269
1415
|
if (processedRules.length === 0) return fallbackExpression;
|
|
1270
1416
|
return `${rg.not ? "NOT " : ""}(${processedRules.join(require_isRuleGroup.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ")})`;
|
|
1271
1417
|
};
|
|
@@ -1543,10 +1689,7 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
|
|
|
1543
1689
|
case "null":
|
|
1544
1690
|
case "notnull": return { [`${operatorLC === "notnull" ? "!" : "="}=`]: [fieldObject, null] };
|
|
1545
1691
|
case "in":
|
|
1546
|
-
case "notin": {
|
|
1547
|
-
const valueAsArray = require_arrayUtils.toArray(value).map((v) => fieldOrNumberRenderer(v));
|
|
1548
|
-
return negateIfNotOp(operatorLC, { in: [fieldObject, valueAsArray] });
|
|
1549
|
-
}
|
|
1692
|
+
case "notin": return negateIfNotOp(operatorLC, { in: [fieldObject, require_arrayUtils.toArray(value).map((v) => fieldOrNumberRenderer(v))] });
|
|
1550
1693
|
case "between":
|
|
1551
1694
|
case "notbetween": {
|
|
1552
1695
|
const valueAsArray = require_arrayUtils.toArray(value);
|
|
@@ -1577,20 +1720,11 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
|
|
|
1577
1720
|
return false;
|
|
1578
1721
|
}
|
|
1579
1722
|
case "contains":
|
|
1580
|
-
case "doesnotcontain": {
|
|
1581
|
-
const jsonRule = { in: [fieldOrNumberRenderer(value), fieldObject] };
|
|
1582
|
-
return negateIfNotOp(operatorLC, jsonRule);
|
|
1583
|
-
}
|
|
1723
|
+
case "doesnotcontain": return negateIfNotOp(operatorLC, { in: [fieldOrNumberRenderer(value), fieldObject] });
|
|
1584
1724
|
case "beginswith":
|
|
1585
|
-
case "doesnotbeginwith": {
|
|
1586
|
-
const jsonRule = { startsWith: [fieldObject, fieldOrNumberRenderer(value)] };
|
|
1587
|
-
return negateIfNotOp(operatorLC, jsonRule);
|
|
1588
|
-
}
|
|
1725
|
+
case "doesnotbeginwith": return negateIfNotOp(operatorLC, { startsWith: [fieldObject, fieldOrNumberRenderer(value)] });
|
|
1589
1726
|
case "endswith":
|
|
1590
|
-
case "doesnotendwith": {
|
|
1591
|
-
const jsonRule = { endsWith: [fieldObject, fieldOrNumberRenderer(value)] };
|
|
1592
|
-
return negateIfNotOp(operatorLC, jsonRule);
|
|
1593
|
-
}
|
|
1727
|
+
case "doesnotendwith": return negateIfNotOp(operatorLC, { endsWith: [fieldObject, fieldOrNumberRenderer(value)] });
|
|
1594
1728
|
}
|
|
1595
1729
|
return false;
|
|
1596
1730
|
};
|
|
@@ -1625,10 +1759,7 @@ const defaultRuleProcessorLDAP = (rule, options = {}) => {
|
|
|
1625
1759
|
case "null":
|
|
1626
1760
|
case "notnull": return negateIf(`(${field}=*)`, operatorLC === "notnull");
|
|
1627
1761
|
case "in":
|
|
1628
|
-
case "notin": {
|
|
1629
|
-
const valueAsArray = require_arrayUtils.toArray(value);
|
|
1630
|
-
return negateIf(`(|${valueAsArray.map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
|
|
1631
|
-
}
|
|
1762
|
+
case "notin": return negateIf(`(|${require_arrayUtils.toArray(value).map((val) => `(${field}=${ldapEscape(val)})`).join("")})`, operatorLC === "notin");
|
|
1632
1763
|
case "between":
|
|
1633
1764
|
case "notbetween": {
|
|
1634
1765
|
const valueAsArray = require_arrayUtils.toArray(value);
|
|
@@ -1796,10 +1927,9 @@ const defaultRuleProcessorNL = (rule, opts) => {
|
|
|
1796
1927
|
});
|
|
1797
1928
|
const operatorLC = require_isRuleGroup.lc(operator);
|
|
1798
1929
|
if ((operatorLC === "in" || operatorLC === "notin" || operatorLC === "between" || operatorLC === "notbetween") && !value) return "";
|
|
1799
|
-
const processedOperator = operatorProcessor(rule, opts);
|
|
1800
1930
|
const wordOrderMap = {
|
|
1801
1931
|
S: processedField,
|
|
1802
|
-
V:
|
|
1932
|
+
V: operatorProcessor(rule, opts),
|
|
1803
1933
|
O: value
|
|
1804
1934
|
};
|
|
1805
1935
|
return normalizeConstituentWordOrder(wordOrder).map((term) => `${wordOrderMap[term]}`).join(" ").trim();
|
|
@@ -2182,8 +2312,8 @@ const defaultFormatQueryOptions = {
|
|
|
2182
2312
|
paramsKeepPrefix: false,
|
|
2183
2313
|
numberedParams: false,
|
|
2184
2314
|
preserveValueOrder: false,
|
|
2185
|
-
placeholderFieldName:
|
|
2186
|
-
placeholderOperatorName:
|
|
2315
|
+
placeholderFieldName: require_optGroupUtils.defaultPlaceholderFieldName,
|
|
2316
|
+
placeholderOperatorName: require_optGroupUtils.defaultPlaceholderOperatorName,
|
|
2187
2317
|
quoteValuesWith: "'",
|
|
2188
2318
|
concatOperator: "||",
|
|
2189
2319
|
preset: "ansi",
|