@react-querybuilder/core 8.15.0 → 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 +89 -16
- package/dist/cjs/react-querybuilder_core.cjs.development.js +402 -19
- package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +89 -16
- package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
- package/dist/formatQuery.d.mts +67 -2
- package/dist/formatQuery.d.ts +67 -2
- package/dist/formatQuery.js +402 -19
- package/dist/formatQuery.js.map +1 -1
- package/dist/formatQuery.mjs +396 -20
- package/dist/formatQuery.mjs.map +1 -1
- package/dist/{import-0wp72lLT.d.mts → import-BHlzBLM_.d.mts} +2 -2
- package/dist/{import-yRVJh7E1.d.ts → import-C6imciDf.d.ts} +2 -2
- package/dist/{index-D5TXNIzF.d.ts → index-Cjapnb-H.d.ts} +14 -7
- package/dist/{index-Lht_Wq3V.d.mts → index-D-Iej37L.d.mts} +14 -7
- package/dist/parseCEL.d.mts +2 -2
- package/dist/parseCEL.d.ts +2 -2
- package/dist/parseCEL.js.map +1 -1
- package/dist/parseCEL.mjs.map +1 -1
- package/dist/parseCypher.d.mts +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.map +1 -1
- package/dist/parseJSONata.mjs.map +1 -1
- package/dist/parseJsonLogic.d.mts +2 -2
- package/dist/parseJsonLogic.d.ts +2 -2
- package/dist/parseJsonLogic.js.map +1 -1
- package/dist/parseJsonLogic.mjs.map +1 -1
- package/dist/parseMongoDB.d.mts +2 -2
- package/dist/parseMongoDB.d.ts +2 -2
- package/dist/parseMongoDB.js.map +1 -1
- package/dist/parseMongoDB.mjs.map +1 -1
- package/dist/parseSPARQL.d.mts +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.map +1 -1
- package/dist/parseSQL.mjs.map +1 -1
- package/dist/parseSpEL.d.mts +2 -2
- package/dist/parseSpEL.d.ts +2 -2
- package/dist/parseSpEL.js.map +1 -1
- package/dist/parseSpEL.mjs.map +1 -1
- package/dist/prepareQueryObjects-BoG5Rt8z.js.map +1 -1
- package/dist/prepareQueryObjects-uA10ZpZX.mjs.map +1 -1
- package/dist/react-querybuilder_core.d.mts +89 -16
- package/dist/react-querybuilder_core.legacy-esm.d.ts +89 -16
- package/dist/react-querybuilder_core.legacy-esm.js +408 -27
- package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_core.mjs +396 -20
- package/dist/react-querybuilder_core.mjs.map +1 -1
- package/dist/react-querybuilder_core.production.d.mts +89 -16
- package/dist/react-querybuilder_core.production.mjs +1 -1
- package/dist/react-querybuilder_core.production.mjs.map +1 -1
- package/dist/transformQuery.d.mts +1 -1
- package/dist/transformQuery.d.ts +1 -1
- package/formatQuery/package.json +1 -1
- package/package.json +47 -3
- 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/formatQuery.js
CHANGED
|
@@ -83,7 +83,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
|
|
|
83
83
|
//#endregion
|
|
84
84
|
//#region src/utils/formatQuery/defaultRuleProcessorCEL.ts
|
|
85
85
|
const shouldNegate$2 = (op) => op.startsWith("not") || op.startsWith("doesnot");
|
|
86
|
-
const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
|
|
86
|
+
const escapeDoubleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
|
|
87
87
|
/**
|
|
88
88
|
* Default rule processor used by {@link formatQuery} for "cel" format.
|
|
89
89
|
*
|
|
@@ -125,19 +125,19 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
|
|
|
125
125
|
case "==":
|
|
126
126
|
case "!=":
|
|
127
127
|
case ">":
|
|
128
|
-
case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`}`;
|
|
128
|
+
case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`}`;
|
|
129
129
|
case "contains":
|
|
130
|
-
case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
|
|
130
|
+
case "doesnotcontain": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.contains(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
|
|
131
131
|
case "beginswith":
|
|
132
|
-
case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
|
|
132
|
+
case "doesnotbeginwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.startsWith(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
|
|
133
133
|
case "endswith":
|
|
134
|
-
case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes(value, escapeQuotes)}"`})`;
|
|
134
|
+
case "doesnotendwith": return `${shouldNegate$2(operatorTL) ? "!" : ""}${field}.endsWith(${valueIsField ? require_utils.trimIfString(value) : `"${escapeDoubleQuotes$1(value, escapeQuotes)}"`})`;
|
|
135
135
|
case "null": return `${field} == null`;
|
|
136
136
|
case "notnull": return `${field} != null`;
|
|
137
137
|
case "in":
|
|
138
138
|
case "notin": {
|
|
139
139
|
const [prefix, suffix] = shouldNegate$2(operatorTL) ? ["!(", ")"] : ["", ""];
|
|
140
|
-
return `${prefix}${field} in [${require_utils.toArray(value).map((val) => valueIsField || require_utils.shouldRenderAsNumber(val, parseNumbers) ? `${require_utils.trimIfString(val)}` : `"${escapeDoubleQuotes(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
|
|
140
|
+
return `${prefix}${field} in [${require_utils.toArray(value).map((val) => valueIsField || require_utils.shouldRenderAsNumber(val, parseNumbers) ? `${require_utils.trimIfString(val)}` : `"${escapeDoubleQuotes$1(val, escapeQuotes)}"`).join(", ")}]${suffix}`;
|
|
141
141
|
}
|
|
142
142
|
case "between":
|
|
143
143
|
case "notbetween": {
|
|
@@ -147,8 +147,8 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
|
|
|
147
147
|
const shouldParseNumbers = !(parseNumbers === false);
|
|
148
148
|
const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
149
149
|
const secondNum = require_utils.shouldRenderAsNumber(second, shouldParseNumbers) ? require_utils.parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
150
|
-
let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes(first, escapeQuotes)}"` : firstNum;
|
|
151
|
-
let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes(second, escapeQuotes)}"` : secondNum;
|
|
150
|
+
let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `"${escapeDoubleQuotes$1(first, escapeQuotes)}"` : firstNum;
|
|
151
|
+
let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `"${escapeDoubleQuotes$1(second, escapeQuotes)}"` : secondNum;
|
|
152
152
|
if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
|
|
153
153
|
const tempNum = secondNum;
|
|
154
154
|
secondValue = firstNum;
|
|
@@ -404,7 +404,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
|
|
|
404
404
|
//#region src/utils/formatQuery/defaultRuleProcessorSpEL.ts
|
|
405
405
|
const shouldNegate$1 = (op) => op.startsWith("not") || op.startsWith("doesnot");
|
|
406
406
|
const wrapInNegation = (clause, negate) => negate ? `!(${clause})` : clause;
|
|
407
|
-
const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
|
|
407
|
+
const escapeSingleQuotes$2 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`'`, `\\'`);
|
|
408
408
|
/**
|
|
409
409
|
* Default rule processor used by {@link formatQuery} for "spel" format.
|
|
410
410
|
*
|
|
@@ -445,20 +445,20 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
|
|
|
445
445
|
case "==":
|
|
446
446
|
case "!=":
|
|
447
447
|
case ">":
|
|
448
|
-
case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`;
|
|
448
|
+
case ">=": return `${field} ${operatorTL} ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`;
|
|
449
449
|
case "contains":
|
|
450
|
-
case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
450
|
+
case "doesnotcontain": return wrapInNegation(`${field} matches ${valueIsField || useBareValue ? require_utils.trimIfString(value) : `'${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
451
451
|
case "beginswith":
|
|
452
|
-
case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${require_utils.trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
452
|
+
case "doesnotbeginwith": return wrapInNegation(`${field} matches ${valueIsField ? `'^'.concat(${require_utils.trimIfString(value)})` : `'${typeof value === "string" && !value.startsWith("^") || useBareValue ? "^" : ""}${escapeSingleQuotes$2(value, escapeQuotes)}'`}`, shouldNegate$1(operatorTL));
|
|
453
453
|
case "endswith":
|
|
454
|
-
case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${require_utils.trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
|
|
454
|
+
case "doesnotendwith": return wrapInNegation(`${field} matches ${valueIsField ? `${require_utils.trimIfString(value)}.concat('$')` : `'${escapeSingleQuotes$2(value, escapeQuotes)}${typeof value === "string" && !value.endsWith("$") || useBareValue ? "$" : ""}'`}`, shouldNegate$1(operatorTL));
|
|
455
455
|
case "null": return `${field} == null`;
|
|
456
456
|
case "notnull": return `${field} != null`;
|
|
457
457
|
case "in":
|
|
458
458
|
case "notin": {
|
|
459
459
|
const negate = shouldNegate$1(operatorTL) ? "!" : "";
|
|
460
460
|
const valueAsArray = require_utils.toArray(value);
|
|
461
|
-
return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || require_utils.shouldRenderAsNumber(val, parseNumbers) ? `${require_utils.trimIfString(val)}` : `'${escapeSingleQuotes(val, escapeQuotes)}'`}`).join(" or ")})` : "";
|
|
461
|
+
return valueAsArray.length > 0 ? `${negate}(${valueAsArray.map((val) => `${field} == ${valueIsField || require_utils.shouldRenderAsNumber(val, parseNumbers) ? `${require_utils.trimIfString(val)}` : `'${escapeSingleQuotes$2(val, escapeQuotes)}'`}`).join(" or ")})` : "";
|
|
462
462
|
}
|
|
463
463
|
case "between":
|
|
464
464
|
case "notbetween": {
|
|
@@ -468,8 +468,8 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
|
|
|
468
468
|
const shouldParseNumbers = !(parseNumbers === false);
|
|
469
469
|
const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
470
470
|
const secondNum = require_utils.shouldRenderAsNumber(second, shouldParseNumbers) ? require_utils.parseNumber(second, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
471
|
-
let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes(first, escapeQuotes)}'` : firstNum;
|
|
472
|
-
let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes(second, escapeQuotes)}'` : secondNum;
|
|
471
|
+
let firstValue = Number.isNaN(firstNum) ? valueIsField ? `${first}` : `'${escapeSingleQuotes$2(first, escapeQuotes)}'` : firstNum;
|
|
472
|
+
let secondValue = Number.isNaN(secondNum) ? valueIsField ? `${second}` : `'${escapeSingleQuotes$2(second, escapeQuotes)}'` : secondNum;
|
|
473
473
|
if (!preserveValueOrder && firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {
|
|
474
474
|
const tempNum = secondNum;
|
|
475
475
|
secondValue = firstNum;
|
|
@@ -537,6 +537,70 @@ const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQ
|
|
|
537
537
|
return valueIsField ? wrapFieldName(value) : require_utils.shouldRenderAsNumber(value, parseNumbers) ? `${require_utils.trimIfString(value)}` : `${wrapAndEscape(value)}`;
|
|
538
538
|
};
|
|
539
539
|
//#endregion
|
|
540
|
+
//#region src/utils/formatQuery/defaultRuleGroupProcessorCypher.ts
|
|
541
|
+
/**
|
|
542
|
+
* Maps a {@link DefaultCombinatorName} to a Cypher combinator keyword.
|
|
543
|
+
*
|
|
544
|
+
* @group Export
|
|
545
|
+
*/
|
|
546
|
+
const cypherCombinatorMap = {
|
|
547
|
+
and: "AND",
|
|
548
|
+
or: "OR"
|
|
549
|
+
};
|
|
550
|
+
/**
|
|
551
|
+
* Rule group processor used by {@link formatQuery} for "cypher" and "gql" formats.
|
|
552
|
+
*
|
|
553
|
+
* @group Export
|
|
554
|
+
*/
|
|
555
|
+
const defaultRuleGroupProcessorCypher = (ruleGroup, options) => {
|
|
556
|
+
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
557
|
+
const processRuleGroup = (rg, outermost) => {
|
|
558
|
+
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
|
|
559
|
+
const processedRules = [];
|
|
560
|
+
let precedingCombinator = "";
|
|
561
|
+
let firstRule = true;
|
|
562
|
+
for (const rule of rg.rules) {
|
|
563
|
+
if (typeof rule === "string") {
|
|
564
|
+
precedingCombinator = cypherCombinatorMap[rule];
|
|
565
|
+
continue;
|
|
566
|
+
}
|
|
567
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
568
|
+
const processedGroup = processRuleGroup(rule);
|
|
569
|
+
if (processedGroup) {
|
|
570
|
+
if (!firstRule && precedingCombinator) {
|
|
571
|
+
processedRules.push(precedingCombinator);
|
|
572
|
+
precedingCombinator = "";
|
|
573
|
+
}
|
|
574
|
+
firstRule = false;
|
|
575
|
+
processedRules.push(processedGroup);
|
|
576
|
+
}
|
|
577
|
+
continue;
|
|
578
|
+
}
|
|
579
|
+
const [validationResult, fieldValidator] = validateRule(rule);
|
|
580
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
|
|
581
|
+
const fieldData = require_utils.getOption(fields, rule.field);
|
|
582
|
+
const processedRule = ruleProcessor(rule, {
|
|
583
|
+
...options,
|
|
584
|
+
parseNumbers: getParseNumberBoolean(fieldData?.inputType),
|
|
585
|
+
escapeQuotes: (rule.valueSource ?? "value") === "value",
|
|
586
|
+
fieldData
|
|
587
|
+
});
|
|
588
|
+
if (processedRule) {
|
|
589
|
+
if (!firstRule && precedingCombinator) {
|
|
590
|
+
processedRules.push(precedingCombinator);
|
|
591
|
+
precedingCombinator = "";
|
|
592
|
+
}
|
|
593
|
+
firstRule = false;
|
|
594
|
+
processedRules.push(processedRule);
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${cypherCombinatorMap[rg.combinator]} ` : " ");
|
|
598
|
+
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "NOT " : ""}(`, ")"] : ["", ""];
|
|
599
|
+
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
600
|
+
};
|
|
601
|
+
return processRuleGroup(ruleGroup, true);
|
|
602
|
+
};
|
|
603
|
+
//#endregion
|
|
540
604
|
//#region src/utils/formatQuery/defaultRuleProcessorDrizzle.ts
|
|
541
605
|
/**
|
|
542
606
|
* Default rule processor used by {@link formatQuery} for the "drizzle" format.
|
|
@@ -704,6 +768,67 @@ const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
|
|
|
704
768
|
return processedRuleGroup === false ? {} : processedRuleGroup;
|
|
705
769
|
};
|
|
706
770
|
//#endregion
|
|
771
|
+
//#region src/utils/formatQuery/defaultRuleGroupProcessorGremlin.ts
|
|
772
|
+
/**
|
|
773
|
+
* Rule group processor used by {@link formatQuery} for "gremlin" format.
|
|
774
|
+
*
|
|
775
|
+
* At the top level, filter rules produce chained `.has()` steps (implicit AND).
|
|
776
|
+
* Nested groups use `.and()` / `.or()` / `.not()` compound traversals with
|
|
777
|
+
* `__` anonymous traversal prefixes.
|
|
778
|
+
*
|
|
779
|
+
* @group Export
|
|
780
|
+
*/
|
|
781
|
+
const defaultRuleGroupProcessorGremlin = (ruleGroup, options) => {
|
|
782
|
+
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
783
|
+
const validateAndProcess = (rule) => {
|
|
784
|
+
// v8 ignore next -- @preserve
|
|
785
|
+
if (typeof rule === "string" || require_objectUtils.isRuleGroup(rule)) return void 0;
|
|
786
|
+
const [validationResult, fieldValidator] = validateRule(rule);
|
|
787
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
|
|
788
|
+
const fieldData = require_utils.getOption(fields, rule.field);
|
|
789
|
+
return ruleProcessor(rule, {
|
|
790
|
+
...options,
|
|
791
|
+
parseNumbers: getParseNumberBoolean(fieldData?.inputType),
|
|
792
|
+
escapeQuotes: (rule.valueSource ?? "value") === "value",
|
|
793
|
+
fieldData
|
|
794
|
+
});
|
|
795
|
+
};
|
|
796
|
+
/** Recursively processes a nested group into `.and()`/`.or()`/`.not()` form. */
|
|
797
|
+
const processNested = (rg) => {
|
|
798
|
+
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return "";
|
|
799
|
+
const predicates = [];
|
|
800
|
+
for (const rule of rg.rules) {
|
|
801
|
+
if (typeof rule === "string") continue;
|
|
802
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
803
|
+
const nested = processNested(rule);
|
|
804
|
+
if (nested) predicates.push(nested);
|
|
805
|
+
continue;
|
|
806
|
+
}
|
|
807
|
+
const processed = validateAndProcess(rule);
|
|
808
|
+
if (processed) predicates.push(processed);
|
|
809
|
+
}
|
|
810
|
+
if (predicates.length === 0) return "";
|
|
811
|
+
const combinator = rg.combinator ?? "and";
|
|
812
|
+
const prefix = rg.not ? "not" : combinator;
|
|
813
|
+
if (predicates.length === 1 && !rg.not) return predicates[0];
|
|
814
|
+
return `.${prefix}(${predicates.map((p) => p.startsWith(".") ? `__${p}` : p).join(", ")})`;
|
|
815
|
+
};
|
|
816
|
+
if (!isRuleOrGroupValid(ruleGroup, validationMap[ruleGroup.id ?? ""])) return fallbackExpression;
|
|
817
|
+
const steps = [];
|
|
818
|
+
for (const rule of ruleGroup.rules) {
|
|
819
|
+
if (typeof rule === "string") continue;
|
|
820
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
821
|
+
const compound = processNested(rule);
|
|
822
|
+
if (compound) steps.push(compound);
|
|
823
|
+
continue;
|
|
824
|
+
}
|
|
825
|
+
const processed = validateAndProcess(rule);
|
|
826
|
+
if (processed) steps.push(processed);
|
|
827
|
+
}
|
|
828
|
+
if (steps.length === 0) return fallbackExpression;
|
|
829
|
+
return steps.join("");
|
|
830
|
+
};
|
|
831
|
+
//#endregion
|
|
707
832
|
//#region src/utils/formatQuery/defaultRuleGroupProcessorJSONata.ts
|
|
708
833
|
/**
|
|
709
834
|
* Rule group processor used by {@link formatQuery} for "jsonata" format.
|
|
@@ -1091,6 +1216,63 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
|
|
|
1091
1216
|
return processRuleGroup(require_convertQuery.convertFromIC(ruleGroup), true);
|
|
1092
1217
|
};
|
|
1093
1218
|
//#endregion
|
|
1219
|
+
//#region src/utils/formatQuery/defaultRuleGroupProcessorSPARQL.ts
|
|
1220
|
+
/**
|
|
1221
|
+
* Rule group processor used by {@link formatQuery} for "sparql" format.
|
|
1222
|
+
*
|
|
1223
|
+
* SPARQL uses the same combinators as CEL (`&&` / `||`) and `!()` for negation.
|
|
1224
|
+
*
|
|
1225
|
+
* @group Export
|
|
1226
|
+
*/
|
|
1227
|
+
const defaultRuleGroupProcessorSPARQL = (ruleGroup, options) => {
|
|
1228
|
+
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
1229
|
+
const processRuleGroup = (rg, outermost) => {
|
|
1230
|
+
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
|
|
1231
|
+
const processedRules = [];
|
|
1232
|
+
let precedingCombinator = "";
|
|
1233
|
+
let firstRule = true;
|
|
1234
|
+
for (const rule of rg.rules) {
|
|
1235
|
+
if (typeof rule === "string") {
|
|
1236
|
+
precedingCombinator = require_utils.celCombinatorMap[rule];
|
|
1237
|
+
continue;
|
|
1238
|
+
}
|
|
1239
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
1240
|
+
const processedGroup = processRuleGroup(rule);
|
|
1241
|
+
if (processedGroup) {
|
|
1242
|
+
if (!firstRule && precedingCombinator) {
|
|
1243
|
+
processedRules.push(precedingCombinator);
|
|
1244
|
+
precedingCombinator = "";
|
|
1245
|
+
}
|
|
1246
|
+
firstRule = false;
|
|
1247
|
+
processedRules.push(processedGroup);
|
|
1248
|
+
}
|
|
1249
|
+
continue;
|
|
1250
|
+
}
|
|
1251
|
+
const [validationResult, fieldValidator] = validateRule(rule);
|
|
1252
|
+
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) continue;
|
|
1253
|
+
const fieldData = require_utils.getOption(fields, rule.field);
|
|
1254
|
+
const processedRule = ruleProcessor(rule, {
|
|
1255
|
+
...options,
|
|
1256
|
+
parseNumbers: getParseNumberBoolean(fieldData?.inputType),
|
|
1257
|
+
escapeQuotes: (rule.valueSource ?? "value") === "value",
|
|
1258
|
+
fieldData
|
|
1259
|
+
});
|
|
1260
|
+
if (processedRule) {
|
|
1261
|
+
if (!firstRule && precedingCombinator) {
|
|
1262
|
+
processedRules.push(precedingCombinator);
|
|
1263
|
+
precedingCombinator = "";
|
|
1264
|
+
}
|
|
1265
|
+
firstRule = false;
|
|
1266
|
+
processedRules.push(processedRule);
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${require_utils.celCombinatorMap[rg.combinator]} ` : " ");
|
|
1270
|
+
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
|
|
1271
|
+
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
1272
|
+
};
|
|
1273
|
+
return processRuleGroup(ruleGroup, true);
|
|
1274
|
+
};
|
|
1275
|
+
//#endregion
|
|
1094
1276
|
//#region src/utils/formatQuery/defaultRuleGroupProcessorSQL.ts
|
|
1095
1277
|
/**
|
|
1096
1278
|
* Default rule processor used by {@link formatQuery} for "sql" format.
|
|
@@ -1466,6 +1648,59 @@ const getFieldValidatorReasons = (rule, fieldValidator) => {
|
|
|
1466
1648
|
}
|
|
1467
1649
|
};
|
|
1468
1650
|
//#endregion
|
|
1651
|
+
//#region src/utils/formatQuery/defaultRuleProcessorCypher.ts
|
|
1652
|
+
const escapeSingleQuotes$1 = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
|
|
1653
|
+
/**
|
|
1654
|
+
* Default rule processor used by {@link formatQuery} for "cypher" and "gql" formats.
|
|
1655
|
+
*
|
|
1656
|
+
* @group Export
|
|
1657
|
+
*/
|
|
1658
|
+
const defaultRuleProcessorCypher = (rule, opts = {}) => {
|
|
1659
|
+
const { escapeQuotes, parseNumbers } = opts;
|
|
1660
|
+
const { field, operator, value, valueSource } = rule;
|
|
1661
|
+
const valueIsField = valueSource === "field";
|
|
1662
|
+
const operatorTL = operator.toLowerCase();
|
|
1663
|
+
const fmtVal = (v) => {
|
|
1664
|
+
if (v === null || v === void 0) return "null";
|
|
1665
|
+
if (typeof v === "boolean" || typeof v === "bigint") return String(v);
|
|
1666
|
+
if (valueIsField) return require_utils.trimIfString(v);
|
|
1667
|
+
if (typeof v === "number" || require_utils.shouldRenderAsNumber(v, parseNumbers)) return require_utils.trimIfString(v);
|
|
1668
|
+
return `'${escapeSingleQuotes$1(v, escapeQuotes)}'`;
|
|
1669
|
+
};
|
|
1670
|
+
switch (operatorTL) {
|
|
1671
|
+
case "=": return `${field} = ${fmtVal(value)}`;
|
|
1672
|
+
case "!=":
|
|
1673
|
+
case "<>": return `${field} <> ${fmtVal(value)}`;
|
|
1674
|
+
case "<":
|
|
1675
|
+
case ">":
|
|
1676
|
+
case "<=":
|
|
1677
|
+
case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
|
|
1678
|
+
case "contains": return `${field} CONTAINS ${fmtVal(value)}`;
|
|
1679
|
+
case "doesnotcontain": return `NOT ${field} CONTAINS ${fmtVal(value)}`;
|
|
1680
|
+
case "beginswith": return `${field} STARTS WITH ${fmtVal(value)}`;
|
|
1681
|
+
case "doesnotbeginwith": return `NOT ${field} STARTS WITH ${fmtVal(value)}`;
|
|
1682
|
+
case "endswith": return `${field} ENDS WITH ${fmtVal(value)}`;
|
|
1683
|
+
case "doesnotendwith": return `NOT ${field} ENDS WITH ${fmtVal(value)}`;
|
|
1684
|
+
case "null": return `${field} IS NULL`;
|
|
1685
|
+
case "notnull": return `${field} IS NOT NULL`;
|
|
1686
|
+
case "in":
|
|
1687
|
+
case "notin": {
|
|
1688
|
+
const values = require_utils.toArray(value).map(fmtVal);
|
|
1689
|
+
if (!values.length) return "";
|
|
1690
|
+
return `${operatorTL === "notin" ? "NOT " : ""}${field} IN [${values.join(", ")}]`;
|
|
1691
|
+
}
|
|
1692
|
+
case "between":
|
|
1693
|
+
case "notbetween": {
|
|
1694
|
+
const arr = require_utils.toArray(value);
|
|
1695
|
+
if (arr.length < 2) return "";
|
|
1696
|
+
const [low, high] = [fmtVal(arr[0]), fmtVal(arr[1])];
|
|
1697
|
+
const expr = `${low} <= ${field} AND ${field} <= ${high}`;
|
|
1698
|
+
return operatorTL === "notbetween" ? `NOT (${expr})` : expr;
|
|
1699
|
+
}
|
|
1700
|
+
default: return `${field} ${operator} ${fmtVal(value)}`;
|
|
1701
|
+
}
|
|
1702
|
+
};
|
|
1703
|
+
//#endregion
|
|
1469
1704
|
//#region src/utils/formatQuery/defaultRuleProcessorElasticSearch.ts
|
|
1470
1705
|
const rangeOperatorMap = {
|
|
1471
1706
|
"<": "lt",
|
|
@@ -1617,6 +1852,68 @@ const defaultRuleProcessorElasticSearch = (rule, options = {}) => {
|
|
|
1617
1852
|
return false;
|
|
1618
1853
|
};
|
|
1619
1854
|
//#endregion
|
|
1855
|
+
//#region src/utils/formatQuery/defaultRuleProcessorGremlin.ts
|
|
1856
|
+
const escapeSingleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll("'", "\\'");
|
|
1857
|
+
/**
|
|
1858
|
+
* Default rule processor used by {@link formatQuery} for "gremlin" format.
|
|
1859
|
+
*
|
|
1860
|
+
* Each rule becomes a `.has()` step (or `.hasNot()`/`.has()` for null checks).
|
|
1861
|
+
*
|
|
1862
|
+
* @group Export
|
|
1863
|
+
*/
|
|
1864
|
+
const defaultRuleProcessorGremlin = (rule, opts = {}) => {
|
|
1865
|
+
const { escapeQuotes, parseNumbers } = opts;
|
|
1866
|
+
const { field, operator, value, valueSource } = rule;
|
|
1867
|
+
const valueIsField = valueSource === "field";
|
|
1868
|
+
const operatorTL = operator.toLowerCase();
|
|
1869
|
+
const prop = field.includes(".") ? field.split(".").pop() : field;
|
|
1870
|
+
const fmtVal = (v) => {
|
|
1871
|
+
if (v === null || v === void 0) return "null";
|
|
1872
|
+
if (typeof v === "boolean" || typeof v === "bigint") return String(v);
|
|
1873
|
+
if (valueIsField) return require_utils.trimIfString(v);
|
|
1874
|
+
if (typeof v === "number" || require_utils.shouldRenderAsNumber(v, parseNumbers)) return require_utils.trimIfString(v);
|
|
1875
|
+
return `'${escapeSingleQuotes(v, escapeQuotes)}'`;
|
|
1876
|
+
};
|
|
1877
|
+
switch (operatorTL) {
|
|
1878
|
+
case "=": return `.has('${prop}', ${fmtVal(value)})`;
|
|
1879
|
+
case "!=":
|
|
1880
|
+
case "<>": return `.has('${prop}', neq(${fmtVal(value)}))`;
|
|
1881
|
+
case "<": return `.has('${prop}', lt(${fmtVal(value)}))`;
|
|
1882
|
+
case ">": return `.has('${prop}', gt(${fmtVal(value)}))`;
|
|
1883
|
+
case "<=": return `.has('${prop}', lte(${fmtVal(value)}))`;
|
|
1884
|
+
case ">=": return `.has('${prop}', gte(${fmtVal(value)}))`;
|
|
1885
|
+
case "contains": return `.has('${prop}', containing(${fmtVal(value)}))`;
|
|
1886
|
+
case "doesnotcontain": return `.has('${prop}', notContaining(${fmtVal(value)}))`;
|
|
1887
|
+
case "beginswith": return `.has('${prop}', startingWith(${fmtVal(value)}))`;
|
|
1888
|
+
case "doesnotbeginwith": return `.has('${prop}', notStartingWith(${fmtVal(value)}))`;
|
|
1889
|
+
case "endswith": return `.has('${prop}', endingWith(${fmtVal(value)}))`;
|
|
1890
|
+
case "doesnotendwith": return `.has('${prop}', notEndingWith(${fmtVal(value)}))`;
|
|
1891
|
+
case "null": return `.hasNot('${prop}')`;
|
|
1892
|
+
case "notnull": return `.has('${prop}')`;
|
|
1893
|
+
case "in": {
|
|
1894
|
+
const items = require_utils.toArray(value).map(fmtVal);
|
|
1895
|
+
if (!items.length) return "";
|
|
1896
|
+
return `.has('${prop}', within(${items.join(", ")}))`;
|
|
1897
|
+
}
|
|
1898
|
+
case "notin": {
|
|
1899
|
+
const items = require_utils.toArray(value).map(fmtVal);
|
|
1900
|
+
if (!items.length) return "";
|
|
1901
|
+
return `.has('${prop}', without(${items.join(", ")}))`;
|
|
1902
|
+
}
|
|
1903
|
+
case "between": {
|
|
1904
|
+
const arr = require_utils.toArray(value);
|
|
1905
|
+
if (arr.length < 2) return "";
|
|
1906
|
+
return `.has('${prop}', between(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
|
|
1907
|
+
}
|
|
1908
|
+
case "notbetween": {
|
|
1909
|
+
const arr = require_utils.toArray(value);
|
|
1910
|
+
if (arr.length < 2) return "";
|
|
1911
|
+
return `.has('${prop}', outside(${fmtVal(arr[0])}, ${fmtVal(arr[1])}))`;
|
|
1912
|
+
}
|
|
1913
|
+
default: return `.has('${prop}', ${fmtVal(value)})`;
|
|
1914
|
+
}
|
|
1915
|
+
};
|
|
1916
|
+
//#endregion
|
|
1620
1917
|
//#region src/utils/formatQuery/defaultRuleProcessorJSONata.ts
|
|
1621
1918
|
const shouldNegate = (op) => op.startsWith("not") || op.startsWith("doesnot");
|
|
1622
1919
|
const quote = (v, escapeQuotes) => `"${typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`)}"`;
|
|
@@ -2239,8 +2536,11 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
|
|
|
2239
2536
|
const valueIsField = valueSource === "field";
|
|
2240
2537
|
const operatorLC = require_objectUtils.lc(operator);
|
|
2241
2538
|
if (!Op || valueIsField && (!col || !fn && [
|
|
2539
|
+
"contains",
|
|
2242
2540
|
"doesnotcontain",
|
|
2541
|
+
"beginswith",
|
|
2243
2542
|
"doesnotbeginwith",
|
|
2543
|
+
"endswith",
|
|
2244
2544
|
"doesnotendwith"
|
|
2245
2545
|
].includes(operatorLC))) return;
|
|
2246
2546
|
switch (operatorLC) {
|
|
@@ -2260,9 +2560,9 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
|
|
|
2260
2560
|
}[operatorLC];
|
|
2261
2561
|
return { [field]: valueIsField && operatorLC === "=" ? { [Op.col]: value } : { [sequelizeOperator]: valueIsField ? col(value) : require_utils.shouldRenderAsNumber(value, parseNumbers) ? require_utils.parseNumber(value, { parseNumbers: "strict" }) : value } };
|
|
2262
2562
|
}
|
|
2263
|
-
case "contains": return { [field]: { [Op.substring]: valueIsField ? col(value) : `${value}` } };
|
|
2264
|
-
case "beginswith": return { [field]: { [Op.startsWith]: valueIsField ? col(value) : `${value}` } };
|
|
2265
|
-
case "endswith": return { [field]: { [Op.endsWith]: valueIsField ? col(value) : `${value}` } };
|
|
2563
|
+
case "contains": return { [field]: { [valueIsField ? Op.like : Op.substring]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `${value}` } };
|
|
2564
|
+
case "beginswith": return { [field]: { [valueIsField ? Op.like : Op.startsWith]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}` } };
|
|
2565
|
+
case "endswith": return { [field]: { [valueIsField ? Op.like : Op.endsWith]: valueIsField ? fn("CONCAT", "%", col(value)) : `${value}` } };
|
|
2266
2566
|
case "doesnotcontain": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value), "%") : `%${value}%` } };
|
|
2267
2567
|
case "doesnotbeginwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", col(value), "%") : `${value}%` } };
|
|
2268
2568
|
case "doesnotendwith": return { [field]: { [Op.notLike]: valueIsField ? fn("CONCAT", "%", col(value)) : `%${value}` } };
|
|
@@ -2292,6 +2592,68 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
|
|
|
2292
2592
|
}
|
|
2293
2593
|
};
|
|
2294
2594
|
//#endregion
|
|
2595
|
+
//#region src/utils/formatQuery/defaultRuleProcessorSPARQL.ts
|
|
2596
|
+
const escapeDoubleQuotes = (v, escapeQuotes) => typeof v !== "string" || !escapeQuotes ? `${v}` : v.replaceAll(`"`, `\\"`);
|
|
2597
|
+
/**
|
|
2598
|
+
* Default rule processor used by {@link formatQuery} for "sparql" format.
|
|
2599
|
+
*
|
|
2600
|
+
* @group Export
|
|
2601
|
+
*/
|
|
2602
|
+
const defaultRuleProcessorSPARQL = (rule, opts = {}) => {
|
|
2603
|
+
const { escapeQuotes, parseNumbers } = opts;
|
|
2604
|
+
const { field, operator, value, valueSource } = rule;
|
|
2605
|
+
const valueIsField = valueSource === "field";
|
|
2606
|
+
const operatorTL = operator.toLowerCase();
|
|
2607
|
+
const fmtVal = (v) => {
|
|
2608
|
+
if (v === null || v === void 0) return "\"\"";
|
|
2609
|
+
if (typeof v === "boolean") return `"${v}"^^xsd:boolean`;
|
|
2610
|
+
if (typeof v === "bigint") return String(v);
|
|
2611
|
+
if (valueIsField) return require_utils.trimIfString(v);
|
|
2612
|
+
if (typeof v === "number" || require_utils.shouldRenderAsNumber(v, parseNumbers)) return require_utils.trimIfString(v);
|
|
2613
|
+
const s = typeof v === "string" ? v : JSON.stringify(v) ?? "";
|
|
2614
|
+
if (s.startsWith("?") || s.startsWith("<") || s.includes(":")) return s;
|
|
2615
|
+
return `"${escapeDoubleQuotes(s, escapeQuotes)}"`;
|
|
2616
|
+
};
|
|
2617
|
+
switch (operatorTL) {
|
|
2618
|
+
case "=":
|
|
2619
|
+
case "!=":
|
|
2620
|
+
case "<":
|
|
2621
|
+
case ">":
|
|
2622
|
+
case "<=":
|
|
2623
|
+
case ">=": return `${field} ${operatorTL} ${fmtVal(value)}`;
|
|
2624
|
+
case "<>": return `${field} != ${fmtVal(value)}`;
|
|
2625
|
+
case "contains": return `CONTAINS(${field}, ${fmtVal(value)})`;
|
|
2626
|
+
case "doesnotcontain": return `!CONTAINS(${field}, ${fmtVal(value)})`;
|
|
2627
|
+
case "beginswith": return `STRSTARTS(${field}, ${fmtVal(value)})`;
|
|
2628
|
+
case "doesnotbeginwith": return `!STRSTARTS(${field}, ${fmtVal(value)})`;
|
|
2629
|
+
case "endswith": return `STRENDS(${field}, ${fmtVal(value)})`;
|
|
2630
|
+
case "doesnotendwith": return `!STRENDS(${field}, ${fmtVal(value)})`;
|
|
2631
|
+
case "null": return `!BOUND(${field})`;
|
|
2632
|
+
case "notnull": return `BOUND(${field})`;
|
|
2633
|
+
case "in": {
|
|
2634
|
+
const items = require_utils.toArray(value).map(fmtVal);
|
|
2635
|
+
if (!items.length) return "";
|
|
2636
|
+
return items.map((item) => `${field} = ${item}`).join(" || ");
|
|
2637
|
+
}
|
|
2638
|
+
case "notin": {
|
|
2639
|
+
const items = require_utils.toArray(value).map(fmtVal);
|
|
2640
|
+
if (!items.length) return "";
|
|
2641
|
+
return items.map((item) => `${field} != ${item}`).join(" && ");
|
|
2642
|
+
}
|
|
2643
|
+
case "between": {
|
|
2644
|
+
const arr = require_utils.toArray(value);
|
|
2645
|
+
if (arr.length < 2) return "";
|
|
2646
|
+
return `${field} >= ${fmtVal(arr[0])} && ${field} <= ${fmtVal(arr[1])}`;
|
|
2647
|
+
}
|
|
2648
|
+
case "notbetween": {
|
|
2649
|
+
const arr = require_utils.toArray(value);
|
|
2650
|
+
if (arr.length < 2) return "";
|
|
2651
|
+
return `(${field} < ${fmtVal(arr[0])} || ${field} > ${fmtVal(arr[1])})`;
|
|
2652
|
+
}
|
|
2653
|
+
default: return `${field} ${operator} ${fmtVal(value)}`;
|
|
2654
|
+
}
|
|
2655
|
+
};
|
|
2656
|
+
//#endregion
|
|
2295
2657
|
//#region src/utils/formatQuery/formatQuery.ts
|
|
2296
2658
|
/**
|
|
2297
2659
|
* A collection of option presets for {@link formatQuery}, specifically for SQL-based formats.
|
|
@@ -2339,6 +2701,10 @@ const defaultRuleProcessors = {
|
|
|
2339
2701
|
sequelize: defaultRuleProcessorSequelize,
|
|
2340
2702
|
spel: defaultRuleProcessorSpEL,
|
|
2341
2703
|
sql: defaultRuleProcessorSQL,
|
|
2704
|
+
cypher: defaultRuleProcessorCypher,
|
|
2705
|
+
gql: defaultRuleProcessorCypher,
|
|
2706
|
+
sparql: defaultRuleProcessorSPARQL,
|
|
2707
|
+
gremlin: defaultRuleProcessorGremlin,
|
|
2342
2708
|
diagnostics: defaultRuleProcessorSQL
|
|
2343
2709
|
};
|
|
2344
2710
|
/* v8 ignore next -- @preserve */
|
|
@@ -2361,6 +2727,10 @@ const defaultOperatorProcessors = {
|
|
|
2361
2727
|
sequelize: defaultOperatorProcessor,
|
|
2362
2728
|
spel: defaultOperatorProcessor,
|
|
2363
2729
|
sql: defaultOperatorProcessorSQL,
|
|
2730
|
+
cypher: defaultOperatorProcessor,
|
|
2731
|
+
gql: defaultOperatorProcessor,
|
|
2732
|
+
sparql: defaultOperatorProcessor,
|
|
2733
|
+
gremlin: defaultOperatorProcessor,
|
|
2364
2734
|
diagnostics: defaultOperatorProcessor
|
|
2365
2735
|
};
|
|
2366
2736
|
const defaultFallbackExpressions = {
|
|
@@ -2368,6 +2738,8 @@ const defaultFallbackExpressions = {
|
|
|
2368
2738
|
ldap: "",
|
|
2369
2739
|
mongodb: "\"$and\":[{\"$expr\":true}]",
|
|
2370
2740
|
natural_language: "1 is 1",
|
|
2741
|
+
sparql: "1 = 1",
|
|
2742
|
+
gremlin: "",
|
|
2371
2743
|
spel: "1 == 1",
|
|
2372
2744
|
sql: "(1 = 1)"
|
|
2373
2745
|
};
|
|
@@ -2508,6 +2880,10 @@ function formatQuery(ruleGroup, optionParam = {}) {
|
|
|
2508
2880
|
case "prisma": return defaultRuleGroupProcessorPrisma(ruleGroup, finalOptions);
|
|
2509
2881
|
case "drizzle": return defaultRuleGroupProcessorDrizzle(ruleGroup, finalOptions);
|
|
2510
2882
|
case "sequelize": return defaultRuleGroupProcessorSequelize(ruleGroup, finalOptions);
|
|
2883
|
+
case "cypher":
|
|
2884
|
+
case "gql": return defaultRuleGroupProcessorCypher(ruleGroup, finalOptions);
|
|
2885
|
+
case "sparql": return defaultRuleGroupProcessorSPARQL(ruleGroup, finalOptions);
|
|
2886
|
+
case "gremlin": return defaultRuleGroupProcessorGremlin(ruleGroup, finalOptions);
|
|
2511
2887
|
case "diagnostics": return defaultRuleGroupProcessorDiagnostics(ruleGroup, finalOptions);
|
|
2512
2888
|
default: return "";
|
|
2513
2889
|
}
|
|
@@ -2566,6 +2942,7 @@ const defaultValueProcessorSpELByRule = defaultRuleProcessorSpEL;
|
|
|
2566
2942
|
exports.bigIntJsonParseReviver = require_utils.bigIntJsonParseReviver;
|
|
2567
2943
|
exports.bigIntJsonStringifyReplacer = require_utils.bigIntJsonStringifyReplacer;
|
|
2568
2944
|
exports.celCombinatorMap = require_utils.celCombinatorMap;
|
|
2945
|
+
exports.cypherCombinatorMap = cypherCombinatorMap;
|
|
2569
2946
|
exports.defaultCELValueProcessor = defaultCELValueProcessor;
|
|
2570
2947
|
exports.defaultExportOperatorMap = defaultExportOperatorMap;
|
|
2571
2948
|
exports.defaultMongoDBValueProcessor = defaultMongoDBValueProcessor;
|
|
@@ -2573,9 +2950,11 @@ exports.defaultNLTranslations = require_utils.defaultNLTranslations;
|
|
|
2573
2950
|
exports.defaultOperatorProcessorNL = defaultOperatorProcessorNL;
|
|
2574
2951
|
exports.defaultOperatorProcessorSQL = defaultOperatorProcessorSQL;
|
|
2575
2952
|
exports.defaultRuleGroupProcessorCEL = defaultRuleGroupProcessorCEL;
|
|
2953
|
+
exports.defaultRuleGroupProcessorCypher = defaultRuleGroupProcessorCypher;
|
|
2576
2954
|
exports.defaultRuleGroupProcessorDiagnostics = defaultRuleGroupProcessorDiagnostics;
|
|
2577
2955
|
exports.defaultRuleGroupProcessorDrizzle = defaultRuleGroupProcessorDrizzle;
|
|
2578
2956
|
exports.defaultRuleGroupProcessorElasticSearch = defaultRuleGroupProcessorElasticSearch;
|
|
2957
|
+
exports.defaultRuleGroupProcessorGremlin = defaultRuleGroupProcessorGremlin;
|
|
2579
2958
|
exports.defaultRuleGroupProcessorJSONata = defaultRuleGroupProcessorJSONata;
|
|
2580
2959
|
exports.defaultRuleGroupProcessorJsonLogic = defaultRuleGroupProcessorJsonLogic;
|
|
2581
2960
|
exports.defaultRuleGroupProcessorLDAP = defaultRuleGroupProcessorLDAP;
|
|
@@ -2584,12 +2963,15 @@ exports.defaultRuleGroupProcessorMongoDBQuery = defaultRuleGroupProcessorMongoDB
|
|
|
2584
2963
|
exports.defaultRuleGroupProcessorNL = defaultRuleGroupProcessorNL;
|
|
2585
2964
|
exports.defaultRuleGroupProcessorParameterized = defaultRuleGroupProcessorParameterized;
|
|
2586
2965
|
exports.defaultRuleGroupProcessorPrisma = defaultRuleGroupProcessorPrisma;
|
|
2966
|
+
exports.defaultRuleGroupProcessorSPARQL = defaultRuleGroupProcessorSPARQL;
|
|
2587
2967
|
exports.defaultRuleGroupProcessorSQL = defaultRuleGroupProcessorSQL;
|
|
2588
2968
|
exports.defaultRuleGroupProcessorSequelize = defaultRuleGroupProcessorSequelize;
|
|
2589
2969
|
exports.defaultRuleGroupProcessorSpEL = defaultRuleGroupProcessorSpEL;
|
|
2590
2970
|
exports.defaultRuleProcessorCEL = defaultRuleProcessorCEL;
|
|
2971
|
+
exports.defaultRuleProcessorCypher = defaultRuleProcessorCypher;
|
|
2591
2972
|
exports.defaultRuleProcessorDrizzle = defaultRuleProcessorDrizzle;
|
|
2592
2973
|
exports.defaultRuleProcessorElasticSearch = defaultRuleProcessorElasticSearch;
|
|
2974
|
+
exports.defaultRuleProcessorGremlin = defaultRuleProcessorGremlin;
|
|
2593
2975
|
exports.defaultRuleProcessorJSONata = defaultRuleProcessorJSONata;
|
|
2594
2976
|
exports.defaultRuleProcessorJsonLogic = defaultRuleProcessorJsonLogic;
|
|
2595
2977
|
exports.defaultRuleProcessorLDAP = defaultRuleProcessorLDAP;
|
|
@@ -2598,6 +2980,7 @@ exports.defaultRuleProcessorMongoDBQuery = defaultRuleProcessorMongoDBQuery;
|
|
|
2598
2980
|
exports.defaultRuleProcessorNL = defaultRuleProcessorNL;
|
|
2599
2981
|
exports.defaultRuleProcessorParameterized = defaultRuleProcessorParameterized;
|
|
2600
2982
|
exports.defaultRuleProcessorPrisma = defaultRuleProcessorPrisma;
|
|
2983
|
+
exports.defaultRuleProcessorSPARQL = defaultRuleProcessorSPARQL;
|
|
2601
2984
|
exports.defaultRuleProcessorSQL = defaultRuleProcessorSQL;
|
|
2602
2985
|
exports.defaultRuleProcessorSequelize = defaultRuleProcessorSequelize;
|
|
2603
2986
|
exports.defaultRuleProcessorSpEL = defaultRuleProcessorSpEL;
|