@react-querybuilder/core 8.14.1 → 8.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +6 -1
- package/dist/cjs/react-querybuilder_core.cjs.development.js +18 -7
- package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +6 -1
- 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-B5Qm_6ut.mjs → convertQuery-CeJSNn37.mjs} +2 -2
- package/dist/{convertQuery-B5Qm_6ut.mjs.map → convertQuery-CeJSNn37.mjs.map} +1 -1
- package/dist/{convertQuery-DfZehtnd.js → convertQuery-J8LpTG-7.js} +8 -8
- package/dist/{convertQuery-DfZehtnd.js.map → convertQuery-J8LpTG-7.js.map} +1 -1
- package/dist/formatQuery.js +60 -60
- package/dist/formatQuery.mjs +3 -3
- package/dist/{isRuleGroup-BCwaLzDj.js → objectUtils-ButT0Mng.js} +26 -1
- package/dist/objectUtils-ButT0Mng.js.map +1 -0
- package/dist/{isRuleGroup-LzP0HCKh.mjs → objectUtils-C0WB-8ex.mjs} +15 -2
- package/dist/objectUtils-C0WB-8ex.mjs.map +1 -0
- package/dist/parseCEL.js +8 -8
- package/dist/parseCEL.mjs +3 -3
- package/dist/parseJSONata.js +6 -6
- package/dist/parseJSONata.mjs +2 -2
- package/dist/parseJsonLogic.js +34 -34
- package/dist/parseJsonLogic.js.map +1 -1
- package/dist/parseJsonLogic.mjs +4 -4
- package/dist/parseMongoDB.js +23 -23
- package/dist/parseMongoDB.js.map +1 -1
- package/dist/parseMongoDB.mjs +4 -4
- package/dist/parseSQL.js +7 -7
- package/dist/parseSQL.mjs +3 -3
- package/dist/parseSpEL.js +5 -5
- package/dist/parseSpEL.mjs +3 -3
- package/dist/{prepareQueryObjects-tMukQHT9.mjs → prepareQueryObjects-BfMlS4ql.mjs} +3 -3
- package/dist/{prepareQueryObjects-tMukQHT9.mjs.map → prepareQueryObjects-BfMlS4ql.mjs.map} +1 -1
- package/dist/{prepareQueryObjects-Dc8rqsYM.js → prepareQueryObjects-DO3qXriW.js} +5 -5
- package/dist/{prepareQueryObjects-Dc8rqsYM.js.map → prepareQueryObjects-DO3qXriW.js.map} +1 -1
- package/dist/react-querybuilder_core.d.mts +6 -1
- package/dist/react-querybuilder_core.legacy-esm.d.ts +6 -1
- package/dist/react-querybuilder_core.legacy-esm.js +15 -5
- package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_core.mjs +18 -8
- package/dist/react-querybuilder_core.mjs.map +1 -1
- package/dist/react-querybuilder_core.production.d.mts +6 -1
- package/dist/react-querybuilder_core.production.mjs +1 -1
- package/dist/react-querybuilder_core.production.mjs.map +1 -1
- package/dist/transformQuery.js +5 -4
- package/dist/transformQuery.js.map +1 -1
- package/dist/transformQuery.mjs +3 -2
- package/dist/transformQuery.mjs.map +1 -1
- package/dist/{utils-DQoYnxpa.mjs → utils-BlMGIhvx.mjs} +3 -11
- package/dist/utils-BlMGIhvx.mjs.map +1 -0
- package/dist/{utils-EsYRkPtf.js → utils-CZRhzje-.js} +12 -26
- package/dist/utils-CZRhzje-.js.map +1 -0
- package/package.json +2 -2
- package/dist/isRuleGroup-BCwaLzDj.js.map +0 -1
- package/dist/isRuleGroup-LzP0HCKh.mjs.map +0 -1
- package/dist/utils-DQoYnxpa.mjs.map +0 -1
- package/dist/utils-EsYRkPtf.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as isRuleGroupTypeIC, i as isRuleGroupType, r as isRuleGroup, s as lc } from "./objectUtils-C0WB-8ex.mjs";
|
|
2
2
|
//#region src/utils/convertQuery.ts
|
|
3
3
|
const combinatorLevels = [
|
|
4
4
|
"or",
|
|
@@ -80,4 +80,4 @@ const convertToIC = (rg) => {
|
|
|
80
80
|
//#endregion
|
|
81
81
|
export { convertToIC as n, convertFromIC as t };
|
|
82
82
|
|
|
83
|
-
//# sourceMappingURL=convertQuery-
|
|
83
|
+
//# sourceMappingURL=convertQuery-CeJSNn37.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertQuery-
|
|
1
|
+
{"version":3,"file":"convertQuery-CeJSNn37.mjs","names":[],"sources":["../src/utils/convertQuery.ts"],"sourcesContent":["import type {\n RuleGroupArray,\n RuleGroupICArray,\n RuleGroupType,\n RuleGroupTypeAny,\n RuleGroupTypeIC,\n RuleType,\n} from '../types';\nimport { isRuleGroup, isRuleGroupType, isRuleGroupTypeIC } from './isRuleGroup';\nimport { lc } from './misc';\n\nconst combinatorLevels = ['or', 'xor', 'and'] as const;\n\nconst isSameString = (a: unknown, b: string) => lc(a) === b;\n\nconst generateRuleGroupICWithConsistentCombinators = (\n rg: RuleGroupTypeIC,\n baseCombinatorLevel: number = 0\n): RuleGroupTypeIC => {\n const baseCombinator = combinatorLevels[baseCombinatorLevel];\n\n // oxlint-disable-next-line typescript/no-explicit-any\n if (!rg.rules.includes(baseCombinator as any)) {\n // No instances of this combinator, so group based on the next\n // combinator level if at least two levels remain\n return baseCombinatorLevel < combinatorLevels.length - 2\n ? generateRuleGroupICWithConsistentCombinators(rg, baseCombinatorLevel + 1)\n : rg;\n }\n\n const newRules = [...rg.rules] as RuleGroupICArray;\n let cursor = 0;\n\n // Group all chains of combinators in the rule array that are not the base combinator\n while (cursor < newRules.length - 2) {\n if (isSameString(newRules[cursor + 1], baseCombinator)) {\n cursor += 2;\n continue;\n }\n\n let nextBaseCombinatorIndex = -1;\n for (let i = cursor + 2; i < newRules.length; i++) {\n if (typeof newRules[i] === 'string' && lc(newRules[i]) === baseCombinator) {\n nextBaseCombinatorIndex = i;\n break;\n }\n }\n\n if (nextBaseCombinatorIndex === -1) {\n // No more instances of this combinator, so group all remaining rules and exit the loop\n newRules.splice(\n cursor,\n newRules.length,\n generateRuleGroupICWithConsistentCombinators(\n // oxlint-disable-next-line typescript/no-explicit-any\n { rules: newRules.slice(cursor) as any },\n baseCombinatorLevel + 1\n )\n );\n break;\n } else {\n // Group all rules between the current cursor and the next instance of the base combinator\n newRules.splice(\n cursor,\n nextBaseCombinatorIndex - cursor,\n generateRuleGroupICWithConsistentCombinators(\n // oxlint-disable-next-line typescript/no-explicit-any\n { rules: newRules.slice(cursor, nextBaseCombinatorIndex) as any },\n baseCombinatorLevel + 1\n )\n );\n }\n }\n\n return { ...rg, rules: newRules };\n};\n\n/**\n * Converts a {@link RuleGroupTypeIC} to {@link RuleGroupType}.\n *\n * This function is idempotent: {@link RuleGroupType} queries will be\n * returned as-is.\n *\n * @group Query Tools\n */\nexport const convertFromIC = <RG extends RuleGroupType = RuleGroupType>(\n rg: RuleGroupTypeAny\n): RG => {\n if (isRuleGroupType(rg)) {\n return rg as RG;\n }\n const processedRG = generateRuleGroupICWithConsistentCombinators(rg);\n const rules: RuleGroupArray = [];\n let combinator = 'and';\n for (const [idx, r] of processedRG.rules.entries()) {\n if (typeof r === 'string') {\n if (idx === 1) combinator = r;\n } else {\n rules.push(isRuleGroup(r) ? convertFromIC(r) : r);\n }\n }\n return { ...processedRG, combinator, rules } as RG;\n};\n\n/**\n * Converts a {@link RuleGroupType} to {@link RuleGroupTypeIC}.\n *\n * This function is idempotent: {@link RuleGroupTypeIC} queries will be\n * returned as-is.\n *\n * @group Query Tools\n */\nexport const convertToIC = <RGIC extends RuleGroupTypeIC = RuleGroupTypeIC>(\n rg: RuleGroupTypeAny\n): RGIC => {\n if (isRuleGroupTypeIC(rg)) {\n return rg as RGIC;\n }\n const { combinator, ...queryWithoutCombinator } = rg;\n const rules: (RuleGroupTypeIC | RuleType | string)[] = [];\n const { length } = rg.rules;\n for (let idx = 0; idx < length; idx++) {\n const r = rg.rules[idx];\n if (isRuleGroup(r)) {\n rules.push(convertToIC(r));\n } else {\n rules.push(r);\n }\n if (combinator && idx < length - 1) {\n rules.push(combinator);\n }\n }\n return { ...queryWithoutCombinator, rules } as RGIC;\n};\n\n/**\n * Converts a {@link RuleGroupType} to {@link RuleGroupTypeIC}. For a more explicit\n * operation, use {@link convertToIC}.\n *\n * @group Query Tools\n */\nfunction convertQuery(query: RuleGroupType): RuleGroupTypeIC;\n/**\n * Converts a {@link RuleGroupTypeIC} to {@link RuleGroupType}. For a more explicit\n * operation, use {@link convertFromIC}.\n *\n * @group Query Tools\n */\nfunction convertQuery(query: RuleGroupTypeIC): RuleGroupType;\nfunction convertQuery(query: RuleGroupType | RuleGroupTypeIC): RuleGroupType | RuleGroupTypeIC {\n return isRuleGroupTypeIC(query) ? convertFromIC(query) : convertToIC(query);\n}\n\nexport { convertQuery };\n"],"mappings":";;AAWA,MAAM,mBAAmB;CAAC;CAAM;CAAO;CAAM;AAE7C,MAAM,gBAAgB,GAAY,MAAc,GAAG,EAAE,KAAK;AAE1D,MAAM,gDACJ,IACA,sBAA8B,MACV;CACpB,MAAM,iBAAiB,iBAAiB;AAGxC,KAAI,CAAC,GAAG,MAAM,SAAS,eAAsB,CAG3C,QAAO,sBAAsB,iBAAiB,SAAS,IACnD,6CAA6C,IAAI,sBAAsB,EAAE,GACzE;CAGN,MAAM,WAAW,CAAC,GAAG,GAAG,MAAM;CAC9B,IAAI,SAAS;AAGb,QAAO,SAAS,SAAS,SAAS,GAAG;AACnC,MAAI,aAAa,SAAS,SAAS,IAAI,eAAe,EAAE;AACtD,aAAU;AACV;;EAGF,IAAI,0BAA0B;AAC9B,OAAK,IAAI,IAAI,SAAS,GAAG,IAAI,SAAS,QAAQ,IAC5C,KAAI,OAAO,SAAS,OAAO,YAAY,GAAG,SAAS,GAAG,KAAK,gBAAgB;AACzE,6BAA0B;AAC1B;;AAIJ,MAAI,4BAA4B,IAAI;AAElC,YAAS,OACP,QACA,SAAS,QACT,6CAEE,EAAE,OAAO,SAAS,MAAM,OAAO,EAAS,EACxC,sBAAsB,EACvB,CACF;AACD;QAGA,UAAS,OACP,QACA,0BAA0B,QAC1B,6CAEE,EAAE,OAAO,SAAS,MAAM,QAAQ,wBAAwB,EAAS,EACjE,sBAAsB,EACvB,CACF;;AAIL,QAAO;EAAE,GAAG;EAAI,OAAO;EAAU;;;;;;;;;;AAWnC,MAAa,iBACX,OACO;AACP,KAAI,gBAAgB,GAAG,CACrB,QAAO;CAET,MAAM,cAAc,6CAA6C,GAAG;CACpE,MAAM,QAAwB,EAAE;CAChC,IAAI,aAAa;AACjB,MAAK,MAAM,CAAC,KAAK,MAAM,YAAY,MAAM,SAAS,CAChD,KAAI,OAAO,MAAM;MACX,QAAQ,EAAG,cAAa;OAE5B,OAAM,KAAK,YAAY,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;AAGrD,QAAO;EAAE,GAAG;EAAa;EAAY;EAAO;;;;;;;;;;AAW9C,MAAa,eACX,OACS;AACT,KAAI,kBAAkB,GAAG,CACvB,QAAO;CAET,MAAM,EAAE,YAAY,GAAG,2BAA2B;CAClD,MAAM,QAAiD,EAAE;CACzD,MAAM,EAAE,WAAW,GAAG;AACtB,MAAK,IAAI,MAAM,GAAG,MAAM,QAAQ,OAAO;EACrC,MAAM,IAAI,GAAG,MAAM;AACnB,MAAI,YAAY,EAAE,CAChB,OAAM,KAAK,YAAY,EAAE,CAAC;MAE1B,OAAM,KAAK,EAAE;AAEf,MAAI,cAAc,MAAM,SAAS,EAC/B,OAAM,KAAK,WAAW;;AAG1B,QAAO;EAAE,GAAG;EAAwB;EAAO"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const
|
|
1
|
+
const require_objectUtils = require("./objectUtils-ButT0Mng.js");
|
|
2
2
|
//#region src/utils/convertQuery.ts
|
|
3
3
|
const combinatorLevels = [
|
|
4
4
|
"or",
|
|
5
5
|
"xor",
|
|
6
6
|
"and"
|
|
7
7
|
];
|
|
8
|
-
const isSameString = (a, b) =>
|
|
8
|
+
const isSameString = (a, b) => require_objectUtils.lc(a) === b;
|
|
9
9
|
const generateRuleGroupICWithConsistentCombinators = (rg, baseCombinatorLevel = 0) => {
|
|
10
10
|
const baseCombinator = combinatorLevels[baseCombinatorLevel];
|
|
11
11
|
if (!rg.rules.includes(baseCombinator)) return baseCombinatorLevel < combinatorLevels.length - 2 ? generateRuleGroupICWithConsistentCombinators(rg, baseCombinatorLevel + 1) : rg;
|
|
@@ -17,7 +17,7 @@ const generateRuleGroupICWithConsistentCombinators = (rg, baseCombinatorLevel =
|
|
|
17
17
|
continue;
|
|
18
18
|
}
|
|
19
19
|
let nextBaseCombinatorIndex = -1;
|
|
20
|
-
for (let i = cursor + 2; i < newRules.length; i++) if (typeof newRules[i] === "string" &&
|
|
20
|
+
for (let i = cursor + 2; i < newRules.length; i++) if (typeof newRules[i] === "string" && require_objectUtils.lc(newRules[i]) === baseCombinator) {
|
|
21
21
|
nextBaseCombinatorIndex = i;
|
|
22
22
|
break;
|
|
23
23
|
}
|
|
@@ -40,13 +40,13 @@ const generateRuleGroupICWithConsistentCombinators = (rg, baseCombinatorLevel =
|
|
|
40
40
|
* @group Query Tools
|
|
41
41
|
*/
|
|
42
42
|
const convertFromIC = (rg) => {
|
|
43
|
-
if (
|
|
43
|
+
if (require_objectUtils.isRuleGroupType(rg)) return rg;
|
|
44
44
|
const processedRG = generateRuleGroupICWithConsistentCombinators(rg);
|
|
45
45
|
const rules = [];
|
|
46
46
|
let combinator = "and";
|
|
47
47
|
for (const [idx, r] of processedRG.rules.entries()) if (typeof r === "string") {
|
|
48
48
|
if (idx === 1) combinator = r;
|
|
49
|
-
} else rules.push(
|
|
49
|
+
} else rules.push(require_objectUtils.isRuleGroup(r) ? convertFromIC(r) : r);
|
|
50
50
|
return {
|
|
51
51
|
...processedRG,
|
|
52
52
|
combinator,
|
|
@@ -62,13 +62,13 @@ const convertFromIC = (rg) => {
|
|
|
62
62
|
* @group Query Tools
|
|
63
63
|
*/
|
|
64
64
|
const convertToIC = (rg) => {
|
|
65
|
-
if (
|
|
65
|
+
if (require_objectUtils.isRuleGroupTypeIC(rg)) return rg;
|
|
66
66
|
const { combinator, ...queryWithoutCombinator } = rg;
|
|
67
67
|
const rules = [];
|
|
68
68
|
const { length } = rg.rules;
|
|
69
69
|
for (let idx = 0; idx < length; idx++) {
|
|
70
70
|
const r = rg.rules[idx];
|
|
71
|
-
if (
|
|
71
|
+
if (require_objectUtils.isRuleGroup(r)) rules.push(convertToIC(r));
|
|
72
72
|
else rules.push(r);
|
|
73
73
|
if (combinator && idx < length - 1) rules.push(combinator);
|
|
74
74
|
}
|
|
@@ -91,4 +91,4 @@ Object.defineProperty(exports, "convertToIC", {
|
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
93
|
|
|
94
|
-
//# sourceMappingURL=convertQuery-
|
|
94
|
+
//# sourceMappingURL=convertQuery-J8LpTG-7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertQuery-
|
|
1
|
+
{"version":3,"file":"convertQuery-J8LpTG-7.js","names":["lc","isRuleGroupType","isRuleGroup","isRuleGroupTypeIC"],"sources":["../src/utils/convertQuery.ts"],"sourcesContent":["import type {\n RuleGroupArray,\n RuleGroupICArray,\n RuleGroupType,\n RuleGroupTypeAny,\n RuleGroupTypeIC,\n RuleType,\n} from '../types';\nimport { isRuleGroup, isRuleGroupType, isRuleGroupTypeIC } from './isRuleGroup';\nimport { lc } from './misc';\n\nconst combinatorLevels = ['or', 'xor', 'and'] as const;\n\nconst isSameString = (a: unknown, b: string) => lc(a) === b;\n\nconst generateRuleGroupICWithConsistentCombinators = (\n rg: RuleGroupTypeIC,\n baseCombinatorLevel: number = 0\n): RuleGroupTypeIC => {\n const baseCombinator = combinatorLevels[baseCombinatorLevel];\n\n // oxlint-disable-next-line typescript/no-explicit-any\n if (!rg.rules.includes(baseCombinator as any)) {\n // No instances of this combinator, so group based on the next\n // combinator level if at least two levels remain\n return baseCombinatorLevel < combinatorLevels.length - 2\n ? generateRuleGroupICWithConsistentCombinators(rg, baseCombinatorLevel + 1)\n : rg;\n }\n\n const newRules = [...rg.rules] as RuleGroupICArray;\n let cursor = 0;\n\n // Group all chains of combinators in the rule array that are not the base combinator\n while (cursor < newRules.length - 2) {\n if (isSameString(newRules[cursor + 1], baseCombinator)) {\n cursor += 2;\n continue;\n }\n\n let nextBaseCombinatorIndex = -1;\n for (let i = cursor + 2; i < newRules.length; i++) {\n if (typeof newRules[i] === 'string' && lc(newRules[i]) === baseCombinator) {\n nextBaseCombinatorIndex = i;\n break;\n }\n }\n\n if (nextBaseCombinatorIndex === -1) {\n // No more instances of this combinator, so group all remaining rules and exit the loop\n newRules.splice(\n cursor,\n newRules.length,\n generateRuleGroupICWithConsistentCombinators(\n // oxlint-disable-next-line typescript/no-explicit-any\n { rules: newRules.slice(cursor) as any },\n baseCombinatorLevel + 1\n )\n );\n break;\n } else {\n // Group all rules between the current cursor and the next instance of the base combinator\n newRules.splice(\n cursor,\n nextBaseCombinatorIndex - cursor,\n generateRuleGroupICWithConsistentCombinators(\n // oxlint-disable-next-line typescript/no-explicit-any\n { rules: newRules.slice(cursor, nextBaseCombinatorIndex) as any },\n baseCombinatorLevel + 1\n )\n );\n }\n }\n\n return { ...rg, rules: newRules };\n};\n\n/**\n * Converts a {@link RuleGroupTypeIC} to {@link RuleGroupType}.\n *\n * This function is idempotent: {@link RuleGroupType} queries will be\n * returned as-is.\n *\n * @group Query Tools\n */\nexport const convertFromIC = <RG extends RuleGroupType = RuleGroupType>(\n rg: RuleGroupTypeAny\n): RG => {\n if (isRuleGroupType(rg)) {\n return rg as RG;\n }\n const processedRG = generateRuleGroupICWithConsistentCombinators(rg);\n const rules: RuleGroupArray = [];\n let combinator = 'and';\n for (const [idx, r] of processedRG.rules.entries()) {\n if (typeof r === 'string') {\n if (idx === 1) combinator = r;\n } else {\n rules.push(isRuleGroup(r) ? convertFromIC(r) : r);\n }\n }\n return { ...processedRG, combinator, rules } as RG;\n};\n\n/**\n * Converts a {@link RuleGroupType} to {@link RuleGroupTypeIC}.\n *\n * This function is idempotent: {@link RuleGroupTypeIC} queries will be\n * returned as-is.\n *\n * @group Query Tools\n */\nexport const convertToIC = <RGIC extends RuleGroupTypeIC = RuleGroupTypeIC>(\n rg: RuleGroupTypeAny\n): RGIC => {\n if (isRuleGroupTypeIC(rg)) {\n return rg as RGIC;\n }\n const { combinator, ...queryWithoutCombinator } = rg;\n const rules: (RuleGroupTypeIC | RuleType | string)[] = [];\n const { length } = rg.rules;\n for (let idx = 0; idx < length; idx++) {\n const r = rg.rules[idx];\n if (isRuleGroup(r)) {\n rules.push(convertToIC(r));\n } else {\n rules.push(r);\n }\n if (combinator && idx < length - 1) {\n rules.push(combinator);\n }\n }\n return { ...queryWithoutCombinator, rules } as RGIC;\n};\n\n/**\n * Converts a {@link RuleGroupType} to {@link RuleGroupTypeIC}. For a more explicit\n * operation, use {@link convertToIC}.\n *\n * @group Query Tools\n */\nfunction convertQuery(query: RuleGroupType): RuleGroupTypeIC;\n/**\n * Converts a {@link RuleGroupTypeIC} to {@link RuleGroupType}. For a more explicit\n * operation, use {@link convertFromIC}.\n *\n * @group Query Tools\n */\nfunction convertQuery(query: RuleGroupTypeIC): RuleGroupType;\nfunction convertQuery(query: RuleGroupType | RuleGroupTypeIC): RuleGroupType | RuleGroupTypeIC {\n return isRuleGroupTypeIC(query) ? convertFromIC(query) : convertToIC(query);\n}\n\nexport { convertQuery };\n"],"mappings":";;AAWA,MAAM,mBAAmB;CAAC;CAAM;CAAO;CAAM;AAE7C,MAAM,gBAAgB,GAAY,MAAcA,oBAAAA,GAAG,EAAE,KAAK;AAE1D,MAAM,gDACJ,IACA,sBAA8B,MACV;CACpB,MAAM,iBAAiB,iBAAiB;AAGxC,KAAI,CAAC,GAAG,MAAM,SAAS,eAAsB,CAG3C,QAAO,sBAAsB,iBAAiB,SAAS,IACnD,6CAA6C,IAAI,sBAAsB,EAAE,GACzE;CAGN,MAAM,WAAW,CAAC,GAAG,GAAG,MAAM;CAC9B,IAAI,SAAS;AAGb,QAAO,SAAS,SAAS,SAAS,GAAG;AACnC,MAAI,aAAa,SAAS,SAAS,IAAI,eAAe,EAAE;AACtD,aAAU;AACV;;EAGF,IAAI,0BAA0B;AAC9B,OAAK,IAAI,IAAI,SAAS,GAAG,IAAI,SAAS,QAAQ,IAC5C,KAAI,OAAO,SAAS,OAAO,YAAYA,oBAAAA,GAAG,SAAS,GAAG,KAAK,gBAAgB;AACzE,6BAA0B;AAC1B;;AAIJ,MAAI,4BAA4B,IAAI;AAElC,YAAS,OACP,QACA,SAAS,QACT,6CAEE,EAAE,OAAO,SAAS,MAAM,OAAO,EAAS,EACxC,sBAAsB,EACvB,CACF;AACD;QAGA,UAAS,OACP,QACA,0BAA0B,QAC1B,6CAEE,EAAE,OAAO,SAAS,MAAM,QAAQ,wBAAwB,EAAS,EACjE,sBAAsB,EACvB,CACF;;AAIL,QAAO;EAAE,GAAG;EAAI,OAAO;EAAU;;;;;;;;;;AAWnC,MAAa,iBACX,OACO;AACP,KAAIC,oBAAAA,gBAAgB,GAAG,CACrB,QAAO;CAET,MAAM,cAAc,6CAA6C,GAAG;CACpE,MAAM,QAAwB,EAAE;CAChC,IAAI,aAAa;AACjB,MAAK,MAAM,CAAC,KAAK,MAAM,YAAY,MAAM,SAAS,CAChD,KAAI,OAAO,MAAM;MACX,QAAQ,EAAG,cAAa;OAE5B,OAAM,KAAKC,oBAAAA,YAAY,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;AAGrD,QAAO;EAAE,GAAG;EAAa;EAAY;EAAO;;;;;;;;;;AAW9C,MAAa,eACX,OACS;AACT,KAAIC,oBAAAA,kBAAkB,GAAG,CACvB,QAAO;CAET,MAAM,EAAE,YAAY,GAAG,2BAA2B;CAClD,MAAM,QAAiD,EAAE;CACzD,MAAM,EAAE,WAAW,GAAG;AACtB,MAAK,IAAI,MAAM,GAAG,MAAM,QAAQ,OAAO;EACrC,MAAM,IAAI,GAAG,MAAM;AACnB,MAAID,oBAAAA,YAAY,EAAE,CAChB,OAAM,KAAK,YAAY,EAAE,CAAC;MAE1B,OAAM,KAAK,EAAE;AAEf,MAAI,cAAc,MAAM,SAAS,EAC/B,OAAM,KAAK,WAAW;;AAG1B,QAAO;EAAE,GAAG;EAAwB;EAAO"}
|
package/dist/formatQuery.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_utils = require("./utils-
|
|
3
|
-
const
|
|
2
|
+
const require_utils = require("./utils-CZRhzje-.js");
|
|
3
|
+
const require_objectUtils = require("./objectUtils-ButT0Mng.js");
|
|
4
4
|
const require_transformQuery = require("./transformQuery.js");
|
|
5
|
-
const require_convertQuery = require("./convertQuery-
|
|
5
|
+
const require_convertQuery = require("./convertQuery-J8LpTG-7.js");
|
|
6
6
|
//#region src/utils/isRuleOrGroupValid.ts
|
|
7
7
|
/**
|
|
8
8
|
* Determines if an object is useful as a validation result.
|
|
9
9
|
*/
|
|
10
|
-
const isValidationResult = (vr) =>
|
|
10
|
+
const isValidationResult = (vr) => require_objectUtils.isPojo(vr) && typeof vr.valid === "boolean";
|
|
11
11
|
/**
|
|
12
12
|
* Determines if a rule or group is valid based on a validation result (if defined)
|
|
13
13
|
* or a validator function. Returns `true` if neither are defined and the `muted`
|
|
@@ -17,7 +17,7 @@ const isRuleOrGroupValid = (rg, validationResult, validator) => {
|
|
|
17
17
|
if (rg.muted) return false;
|
|
18
18
|
if (typeof validationResult === "boolean") return validationResult;
|
|
19
19
|
if (isValidationResult(validationResult)) return validationResult.valid;
|
|
20
|
-
if (typeof validator === "function" && !
|
|
20
|
+
if (typeof validator === "function" && !require_objectUtils.isRuleGroup(rg)) {
|
|
21
21
|
const vr = validator(rg);
|
|
22
22
|
if (typeof vr === "boolean") return vr;
|
|
23
23
|
// istanbul ignore else
|
|
@@ -44,7 +44,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
|
|
|
44
44
|
precedingCombinator = require_utils.celCombinatorMap[rule];
|
|
45
45
|
continue;
|
|
46
46
|
}
|
|
47
|
-
if (
|
|
47
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
48
48
|
const processedGroup = processRuleGroup(rule);
|
|
49
49
|
if (processedGroup) {
|
|
50
50
|
if (!firstRule && precedingCombinator) {
|
|
@@ -74,7 +74,7 @@ const defaultRuleGroupProcessorCEL = (ruleGroup, options) => {
|
|
|
74
74
|
processedRules.push(processedRule);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
const expression = processedRules.join(
|
|
77
|
+
const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${require_utils.celCombinatorMap[rg.combinator]} ` : " ");
|
|
78
78
|
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
|
|
79
79
|
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
80
80
|
};
|
|
@@ -93,7 +93,7 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
|
|
|
93
93
|
const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
|
|
94
94
|
const { field, operator, value, valueSource } = rule;
|
|
95
95
|
const valueIsField = valueSource === "field";
|
|
96
|
-
const operatorTL =
|
|
96
|
+
const operatorTL = require_objectUtils.lc(operator === "=" ? "==" : operator);
|
|
97
97
|
const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || require_utils.shouldRenderAsNumber(value, parseNumbers);
|
|
98
98
|
const matchEval = require_utils.processMatchMode(rule);
|
|
99
99
|
if (matchEval === false) return "";
|
|
@@ -142,7 +142,7 @@ const defaultRuleProcessorCEL = (rule, opts = {}) => {
|
|
|
142
142
|
case "between":
|
|
143
143
|
case "notbetween": {
|
|
144
144
|
const valueAsArray = require_utils.toArray(value);
|
|
145
|
-
if (valueAsArray.length >= 2 && !
|
|
145
|
+
if (valueAsArray.length >= 2 && !require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[0]) && !require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[1])) {
|
|
146
146
|
const [first, second] = valueAsArray;
|
|
147
147
|
const shouldParseNumbers = !(parseNumbers === false);
|
|
148
148
|
const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
@@ -177,10 +177,10 @@ const defaultRuleGroupProcessorMongoDBQuery = (ruleGroup, options, meta) => {
|
|
|
177
177
|
const { fields, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
178
178
|
const processRuleGroup = (rg, outermost) => {
|
|
179
179
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? mongoDbFallback : false;
|
|
180
|
-
const combinator = `$${
|
|
180
|
+
const combinator = `$${require_objectUtils.lc(rg.combinator)}`;
|
|
181
181
|
let hasChildRules = false;
|
|
182
182
|
const expressions = rg.rules.map((rule) => {
|
|
183
|
-
if (
|
|
183
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
184
184
|
const processedRuleGroup = processRuleGroup(rule);
|
|
185
185
|
if (processedRuleGroup) {
|
|
186
186
|
hasChildRules = true;
|
|
@@ -261,7 +261,7 @@ const defaultRuleProcessorMongoDBQuery = (rule, options = {}) => {
|
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
if (operator === "=" && !valueIsField) return avoidFieldsAsKeys ? { $eq: [`$${field}`, processNumber$1(value, value, parseNumbers)] } : { [field]: processNumber$1(value, value, parseNumbers) };
|
|
264
|
-
const operatorLC =
|
|
264
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
265
265
|
switch (operatorLC) {
|
|
266
266
|
case "<":
|
|
267
267
|
case "<=":
|
|
@@ -362,7 +362,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
|
|
|
362
362
|
precedingCombinator = rule;
|
|
363
363
|
continue;
|
|
364
364
|
}
|
|
365
|
-
if (
|
|
365
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
366
366
|
const processedGroup = processRuleGroup(rule);
|
|
367
367
|
if (processedGroup) {
|
|
368
368
|
if (!firstRule && precedingCombinator) {
|
|
@@ -392,7 +392,7 @@ const defaultRuleGroupProcessorSpEL = (ruleGroup, options) => {
|
|
|
392
392
|
processedRules.push(processedRule);
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
|
-
const expression = processedRules.join(
|
|
395
|
+
const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ");
|
|
396
396
|
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "!" : ""}(`, ")"] : ["", ""];
|
|
397
397
|
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
398
398
|
};
|
|
@@ -412,7 +412,7 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
|
|
|
412
412
|
const { field, operator, value, valueSource } = rule;
|
|
413
413
|
const { escapeQuotes, parseNumbers, preserveValueOrder } = opts;
|
|
414
414
|
const valueIsField = valueSource === "field";
|
|
415
|
-
const operatorTL =
|
|
415
|
+
const operatorTL = require_objectUtils.lc(operator === "=" ? "==" : operator);
|
|
416
416
|
const useBareValue = typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || require_utils.shouldRenderAsNumber(value, parseNumbers);
|
|
417
417
|
const matchEval = require_utils.processMatchMode(rule);
|
|
418
418
|
if (matchEval === false) return "";
|
|
@@ -461,7 +461,7 @@ const defaultRuleProcessorSpEL = (rule, opts = {}) => {
|
|
|
461
461
|
case "between":
|
|
462
462
|
case "notbetween": {
|
|
463
463
|
const valueAsArray = require_utils.toArray(value);
|
|
464
|
-
if (valueAsArray.length >= 2 && !
|
|
464
|
+
if (valueAsArray.length >= 2 && !require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[0]) && !require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[1])) {
|
|
465
465
|
const [first, second] = valueAsArray;
|
|
466
466
|
const shouldParseNumbers = !(parseNumbers === false);
|
|
467
467
|
const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
@@ -489,7 +489,7 @@ const escapeStringValueQuotes$1 = (v, quoteChar, escapeQuotes) => escapeQuotes &
|
|
|
489
489
|
*/
|
|
490
490
|
const defaultValueProcessorByRule = ({ operator, value, valueSource }, { escapeQuotes, parseNumbers, preserveValueOrder, quoteFieldNamesWith, quoteValuesWith, concatOperator = "||", fieldIdentifierSeparator, wrapValueWith = ["", ""], translations } = {}) => {
|
|
491
491
|
const valueIsField = valueSource === "field";
|
|
492
|
-
const operatorLowerCase =
|
|
492
|
+
const operatorLowerCase = require_objectUtils.lc(operator);
|
|
493
493
|
const quoteChar = quoteValuesWith || "'";
|
|
494
494
|
const quoteValue = (v) => `${wrapValueWith[0]}${quoteChar}${v}${quoteChar}${wrapValueWith[1]}`;
|
|
495
495
|
const escapeValue = (v) => escapeStringValueQuotes$1(v, quoteChar, escapeQuotes);
|
|
@@ -550,7 +550,7 @@ const defaultRuleProcessorDrizzle = (rule, _options) => {
|
|
|
550
550
|
const { between, eq, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, notBetween, notInArray, notLike, sql } = drizzleOperators;
|
|
551
551
|
const { field, operator, value, valueSource } = rule;
|
|
552
552
|
const column = useRawFields && /[a-z][a-z0-9]*/i.test(field) ? sql.raw(field) : columns[field];
|
|
553
|
-
const operatorLC =
|
|
553
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
554
554
|
const valueIsField = valueSource === "field";
|
|
555
555
|
const asFieldOrValue = (v) => valueIsField ? columns[v] : v;
|
|
556
556
|
if (!column) return;
|
|
@@ -652,7 +652,7 @@ const defaultRuleGroupProcessorDrizzle = (ruleGroup, options, _meta) => (columns
|
|
|
652
652
|
const processRuleGroup = (rg, _outermost) => {
|
|
653
653
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return;
|
|
654
654
|
const processedRules = rg.rules.map((rule) => {
|
|
655
|
-
if (
|
|
655
|
+
if (require_objectUtils.isRuleGroup(rule)) return processRuleGroup(rule);
|
|
656
656
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
657
657
|
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return;
|
|
658
658
|
const fieldData = require_utils.getOption(fields, rule.field);
|
|
@@ -685,7 +685,7 @@ const defaultRuleGroupProcessorElasticSearch = (ruleGroup, options) => {
|
|
|
685
685
|
const processRuleGroup = (rg) => {
|
|
686
686
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return false;
|
|
687
687
|
const processedRules = rg.rules.map((rule) => {
|
|
688
|
-
if (
|
|
688
|
+
if (require_objectUtils.isRuleGroup(rule)) return processRuleGroup(rule);
|
|
689
689
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
690
690
|
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return false;
|
|
691
691
|
const fieldData = require_utils.getOption(fields, rule.field);
|
|
@@ -720,7 +720,7 @@ const defaultRuleGroupProcessorJSONata = (ruleGroup, options) => {
|
|
|
720
720
|
precedingCombinator = rule;
|
|
721
721
|
continue;
|
|
722
722
|
}
|
|
723
|
-
if (
|
|
723
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
724
724
|
const processedGroup = processRuleGroup(rule);
|
|
725
725
|
if (processedGroup) {
|
|
726
726
|
if (!firstRule && precedingCombinator) {
|
|
@@ -750,7 +750,7 @@ const defaultRuleGroupProcessorJSONata = (ruleGroup, options) => {
|
|
|
750
750
|
processedRules.push(processedRule);
|
|
751
751
|
}
|
|
752
752
|
}
|
|
753
|
-
const expression = processedRules.join(
|
|
753
|
+
const expression = processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ");
|
|
754
754
|
const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? "$not" : ""}(`, ")"] : ["", ""];
|
|
755
755
|
return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;
|
|
756
756
|
};
|
|
@@ -769,7 +769,7 @@ const defaultRuleGroupProcessorJsonLogic = (ruleGroup, options) => {
|
|
|
769
769
|
const processRuleGroup = (rg, _outermost) => {
|
|
770
770
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return false;
|
|
771
771
|
const processedRules = rg.rules.map((rule) => {
|
|
772
|
-
if (
|
|
772
|
+
if (require_objectUtils.isRuleGroup(rule)) return processRuleGroup(rule);
|
|
773
773
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
774
774
|
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return false;
|
|
775
775
|
const fieldData = require_utils.getOption(fields, rule.field);
|
|
@@ -797,7 +797,7 @@ const defaultRuleGroupProcessorLDAP = (ruleGroup, options) => {
|
|
|
797
797
|
const processRuleGroup = (rg, outermost) => {
|
|
798
798
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
|
|
799
799
|
const rules = rg.rules.map((rule) => {
|
|
800
|
-
if (
|
|
800
|
+
if (require_objectUtils.isRuleGroup(rule)) return processRuleGroup(rule);
|
|
801
801
|
const [validationResult, fieldValidator] = validateRule(rule);
|
|
802
802
|
if (!isRuleOrGroupValid(rule, validationResult, fieldValidator) || rule.field === placeholderFieldName || rule.operator === placeholderOperatorName || placeholderValueName !== void 0 && rule.value === placeholderValueName) return "";
|
|
803
803
|
const fieldData = require_utils.getOption(fields, rule.field);
|
|
@@ -829,10 +829,10 @@ const defaultRuleGroupProcessorMongoDB = (ruleGroup, options, meta) => {
|
|
|
829
829
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, validateRule, validationMap } = options;
|
|
830
830
|
const processRuleGroup = (rg, outermost) => {
|
|
831
831
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermost ? fallbackExpression : "";
|
|
832
|
-
const combinator = `"$${
|
|
832
|
+
const combinator = `"$${require_objectUtils.lc(rg.combinator)}"`;
|
|
833
833
|
let hasChildRules = false;
|
|
834
834
|
const expressions = rg.rules.map((rule) => {
|
|
835
|
-
if (
|
|
835
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
836
836
|
const processedRuleGroup = processRuleGroup(rule);
|
|
837
837
|
if (processedRuleGroup) {
|
|
838
838
|
hasChildRules = true;
|
|
@@ -866,7 +866,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
866
866
|
const { fields, fallbackExpression, getParseNumberBoolean, placeholderFieldName, placeholderOperatorName, placeholderValueName, ruleProcessor, translations, validateRule, validationMap } = options;
|
|
867
867
|
const processRuleGroup = (rg, outermostOrLonelyInGroup) => {
|
|
868
868
|
if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? ""])) return outermostOrLonelyInGroup ? fallbackExpression : "";
|
|
869
|
-
const rg2 =
|
|
869
|
+
const rg2 = require_objectUtils.isRuleGroupTypeIC(rg) && rg.rules.some((r) => typeof r === "string" && require_objectUtils.lc(r) === "xor") ? require_convertQuery.convertFromIC(rg) : rg;
|
|
870
870
|
const processedRules = [];
|
|
871
871
|
let precedingCombinator = "";
|
|
872
872
|
let firstRule = true;
|
|
@@ -875,7 +875,7 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
875
875
|
precedingCombinator = `, ${translations[rule] ?? rule} `;
|
|
876
876
|
continue;
|
|
877
877
|
}
|
|
878
|
-
if (
|
|
878
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
879
879
|
const processedGroup = processRuleGroup(rule, rg2.rules.length === 1 && !(rg2.not || /^xor$/i.test(rg2.combinator ?? "")));
|
|
880
880
|
// istanbul ignore else
|
|
881
881
|
if (processedGroup) {
|
|
@@ -908,13 +908,13 @@ const defaultRuleGroupProcessorNL = (ruleGroup, options) => {
|
|
|
908
908
|
}
|
|
909
909
|
}
|
|
910
910
|
if (processedRules.length === 0) return fallbackExpression;
|
|
911
|
-
const isXOR =
|
|
911
|
+
const isXOR = require_objectUtils.lc(rg2.combinator ?? "") === "xor";
|
|
912
912
|
const combinator = isXOR ? rg2.combinator.slice(1) : rg2.combinator;
|
|
913
913
|
const mustWrap = rg2.not || !outermostOrLonelyInGroup || isXOR && processedRules.length > 1;
|
|
914
914
|
const [prefixTL, suffixTL] = ["groupPrefix", "groupSuffix"].map((key) => rg2.not ? isXOR ? require_utils.getNLTranslataion(key, translations, ["not", "xor"]) : require_utils.getNLTranslataion(key, translations, ["not"]) : isXOR ? require_utils.getNLTranslataion(key, translations, ["xor"]) : require_utils.getNLTranslataion(key, translations));
|
|
915
915
|
const prefix = mustWrap ? `${prefixTL} (`.trim() : "";
|
|
916
916
|
const suffix = mustWrap ? `) ${suffixTL}`.trim() : "";
|
|
917
|
-
return `${prefix}${processedRules.join(
|
|
917
|
+
return `${prefix}${processedRules.join(require_objectUtils.isRuleGroupType(rg2) ? `, ${translations[combinator] ?? combinator} ` : "")}${suffix}`;
|
|
918
918
|
};
|
|
919
919
|
return processRuleGroup(ruleGroup, true);
|
|
920
920
|
};
|
|
@@ -950,12 +950,12 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
|
|
|
950
950
|
fieldParamNames,
|
|
951
951
|
fieldData
|
|
952
952
|
}, { processedParams: params });
|
|
953
|
-
if (!
|
|
953
|
+
if (!require_objectUtils.isPojo(processedRule)) return "";
|
|
954
954
|
const { sql, params: customParams } = processedRule;
|
|
955
955
|
if (typeof sql !== "string" || !sql) return "";
|
|
956
956
|
// istanbul ignore else
|
|
957
957
|
if (format === "parameterized" && Array.isArray(customParams)) params.push(...customParams);
|
|
958
|
-
else if (format === "parameterized_named" &&
|
|
958
|
+
else if (format === "parameterized_named" && require_objectUtils.isPojo(customParams)) {
|
|
959
959
|
Object.assign(paramsNamed, customParams);
|
|
960
960
|
for (const p of Object.keys(customParams)) fieldParams.get(rule.field)?.add(p);
|
|
961
961
|
}
|
|
@@ -971,7 +971,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
|
|
|
971
971
|
precedingCombinator = rule;
|
|
972
972
|
continue;
|
|
973
973
|
}
|
|
974
|
-
if (
|
|
974
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
975
975
|
const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
|
|
976
976
|
// istanbul ignore else
|
|
977
977
|
if (processedGroup) {
|
|
@@ -995,7 +995,7 @@ const defaultRuleGroupProcessorParameterized = (ruleGroup, options) => {
|
|
|
995
995
|
}
|
|
996
996
|
}
|
|
997
997
|
if (processedRules.length === 0) return fallbackExpression;
|
|
998
|
-
return `${rg.not ? "NOT " : ""}(${processedRules.join(
|
|
998
|
+
return `${rg.not ? "NOT " : ""}(${processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ")})`;
|
|
999
999
|
};
|
|
1000
1000
|
if (parameterized) return {
|
|
1001
1001
|
sql: processRuleGroup(ruleGroup, true),
|
|
@@ -1026,7 +1026,7 @@ const defaultRuleGroupProcessorPrisma = (ruleGroup, options) => {
|
|
|
1026
1026
|
const combinator = rg.combinator.toUpperCase();
|
|
1027
1027
|
let hasChildRules = false;
|
|
1028
1028
|
const expressions = rg.rules.map((rule) => {
|
|
1029
|
-
if (
|
|
1029
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
1030
1030
|
const processedRuleGroup = processRuleGroup(rule);
|
|
1031
1031
|
if (processedRuleGroup) {
|
|
1032
1032
|
hasChildRules = true;
|
|
@@ -1065,7 +1065,7 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
|
|
|
1065
1065
|
const combinator = rg.combinator.toUpperCase();
|
|
1066
1066
|
let hasChildRules = false;
|
|
1067
1067
|
const expressions = rg.rules.map((rule) => {
|
|
1068
|
-
if (
|
|
1068
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
1069
1069
|
const processedRuleGroup = processRuleGroup(rule);
|
|
1070
1070
|
if (processedRuleGroup) {
|
|
1071
1071
|
hasChildRules = true;
|
|
@@ -1083,7 +1083,7 @@ const defaultRuleGroupProcessorSequelize = (ruleGroup, options) => {
|
|
|
1083
1083
|
});
|
|
1084
1084
|
}).filter(Boolean);
|
|
1085
1085
|
if (expressions.length === 0) return;
|
|
1086
|
-
const result = expressions.length === 1 && !hasChildRules ? expressions[0] : { [
|
|
1086
|
+
const result = expressions.length === 1 && !hasChildRules ? expressions[0] : { [require_objectUtils.lc(combinator) === "or" ? Op.or : Op.and]: expressions };
|
|
1087
1087
|
return rg.not ? { [Op.not]: result } : result;
|
|
1088
1088
|
};
|
|
1089
1089
|
return processRuleGroup(require_convertQuery.convertFromIC(ruleGroup), true);
|
|
@@ -1107,7 +1107,7 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
|
|
|
1107
1107
|
precedingCombinator = rule;
|
|
1108
1108
|
continue;
|
|
1109
1109
|
}
|
|
1110
|
-
if (
|
|
1110
|
+
if (require_objectUtils.isRuleGroup(rule)) {
|
|
1111
1111
|
const processedGroup = processRuleGroup(rule, rg.rules.length === 1);
|
|
1112
1112
|
// istanbul ignore else
|
|
1113
1113
|
if (processedGroup) {
|
|
@@ -1140,7 +1140,7 @@ const defaultRuleGroupProcessorSQL = (ruleGroup, options) => {
|
|
|
1140
1140
|
}
|
|
1141
1141
|
}
|
|
1142
1142
|
if (processedRules.length === 0) return fallbackExpression;
|
|
1143
|
-
return `${rg.not ? "NOT " : ""}(${processedRules.join(
|
|
1143
|
+
return `${rg.not ? "NOT " : ""}(${processedRules.join(require_objectUtils.isRuleGroupType(rg) ? ` ${rg.combinator} ` : " ")})`;
|
|
1144
1144
|
};
|
|
1145
1145
|
return processRuleGroup(ruleGroup, true);
|
|
1146
1146
|
};
|
|
@@ -1174,7 +1174,7 @@ const valueRenderer = (v, parseNumbers) => typeof v === "boolean" ? v : require_
|
|
|
1174
1174
|
const defaultRuleProcessorElasticSearch = (rule, options = {}) => {
|
|
1175
1175
|
const { field, operator, value, valueSource } = rule;
|
|
1176
1176
|
const { parseNumbers, preserveValueOrder } = options;
|
|
1177
|
-
const operatorLC =
|
|
1177
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
1178
1178
|
const matchEval = require_utils.processMatchMode(rule);
|
|
1179
1179
|
if (matchEval === false) return false;
|
|
1180
1180
|
else if (matchEval) {
|
|
@@ -1337,7 +1337,7 @@ const defaultRuleProcessorJSONata = (rule, options = {}) => {
|
|
|
1337
1337
|
}
|
|
1338
1338
|
}
|
|
1339
1339
|
}
|
|
1340
|
-
const operatorLC =
|
|
1340
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
1341
1341
|
switch (operatorLC) {
|
|
1342
1342
|
case "<":
|
|
1343
1343
|
case "<=":
|
|
@@ -1361,7 +1361,7 @@ const defaultRuleProcessorJSONata = (rule, options = {}) => {
|
|
|
1361
1361
|
case "between":
|
|
1362
1362
|
case "notbetween": {
|
|
1363
1363
|
const valueAsArray = require_utils.toArray(value);
|
|
1364
|
-
if (valueAsArray.length < 2 ||
|
|
1364
|
+
if (valueAsArray.length < 2 || require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[0]) || require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[1])) return "";
|
|
1365
1365
|
const [first, second] = valueAsArray;
|
|
1366
1366
|
const shouldParseNumbers = !(parseNumbers === false);
|
|
1367
1367
|
const firstNum = require_utils.shouldRenderAsNumber(first, shouldParseNumbers) ? require_utils.parseNumber(first, { parseNumbers: shouldParseNumbers }) : NaN;
|
|
@@ -1403,13 +1403,13 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
|
|
|
1403
1403
|
switch (mode) {
|
|
1404
1404
|
case "all":
|
|
1405
1405
|
case "none":
|
|
1406
|
-
case "some": return { [mode]: [{ var: field }, value.rules.length === 1 && !
|
|
1406
|
+
case "some": return { [mode]: [{ var: field }, value.rules.length === 1 && !require_objectUtils.isRuleGroup(value.rules[0]) ? defaultRuleProcessorJsonLogic(value.rules[0], options) : defaultRuleGroupProcessorJsonLogic(value, options)] };
|
|
1407
1407
|
case "atleast":
|
|
1408
1408
|
case "atmost":
|
|
1409
1409
|
case "exactly": {
|
|
1410
1410
|
const op = mode === "atleast" ? ">=" : mode === "atmost" ? "<=" : "==";
|
|
1411
1411
|
const filteredCount = { reduce: [
|
|
1412
|
-
{ filter: [{ var: field }, value.rules.length === 1 && !
|
|
1412
|
+
{ filter: [{ var: field }, value.rules.length === 1 && !require_objectUtils.isRuleGroup(value.rules[0]) ? defaultRuleProcessorJsonLogic(value.rules[0], options) : defaultRuleGroupProcessorJsonLogic(value, options)] },
|
|
1413
1413
|
{ "+": [1, { var: "accumulator" }] },
|
|
1414
1414
|
0
|
|
1415
1415
|
] };
|
|
@@ -1425,7 +1425,7 @@ const defaultRuleProcessorJsonLogic = (rule, options = {}) => {
|
|
|
1425
1425
|
}
|
|
1426
1426
|
}
|
|
1427
1427
|
}
|
|
1428
|
-
const operatorLC =
|
|
1428
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
1429
1429
|
switch (operatorLC) {
|
|
1430
1430
|
case "<":
|
|
1431
1431
|
case "<=":
|
|
@@ -1487,8 +1487,8 @@ const ldapEscape = (s) => `${require_utils.trimIfString(s)}`.replaceAll(/[()&|=<
|
|
|
1487
1487
|
const defaultRuleProcessorLDAP = (rule, options = {}) => {
|
|
1488
1488
|
const { field, operator, value, valueSource } = rule;
|
|
1489
1489
|
const { preserveValueOrder } = options;
|
|
1490
|
-
const operatorLC =
|
|
1491
|
-
if (valueSource === "field" ||
|
|
1490
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
1491
|
+
if (valueSource === "field" || require_objectUtils.nullOrUndefinedOrEmpty(value) && operatorLC !== "null" && operatorLC !== "notnull" || require_utils.processMatchMode(rule)) return "";
|
|
1492
1492
|
switch (operatorLC) {
|
|
1493
1493
|
case "=":
|
|
1494
1494
|
case "!=": return negateIf(`(${field}=${ldapEscape(value)})`, operatorLC === "!=");
|
|
@@ -1509,7 +1509,7 @@ const defaultRuleProcessorLDAP = (rule, options = {}) => {
|
|
|
1509
1509
|
case "between":
|
|
1510
1510
|
case "notbetween": {
|
|
1511
1511
|
const valueAsArray = require_utils.toArray(value);
|
|
1512
|
-
if (valueAsArray.length < 2 ||
|
|
1512
|
+
if (valueAsArray.length < 2 || require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[0]) || require_objectUtils.nullOrUndefinedOrEmpty(valueAsArray[1])) return "";
|
|
1513
1513
|
const [first, second] = valueAsArray;
|
|
1514
1514
|
const firstNum = require_utils.shouldRenderAsNumber(first, true) ? require_utils.parseNumber(first, { parseNumbers: true }) : NaN;
|
|
1515
1515
|
const secondNum = require_utils.shouldRenderAsNumber(second, true) ? require_utils.parseNumber(second, { parseNumbers: true }) : NaN;
|
|
@@ -1537,7 +1537,7 @@ const escapeStringValueQuotes = (v, quoteChar, escapeQuotes) => escapeQuotes &&
|
|
|
1537
1537
|
const defaultValueProcessorNL = (rule, opts = {}) => {
|
|
1538
1538
|
const { escapeQuotes, fields, parseNumbers, quoteFieldNamesWith, quoteValuesWith, fieldIdentifierSeparator, translations } = opts;
|
|
1539
1539
|
const valueIsField = rule.valueSource === "field";
|
|
1540
|
-
const operatorLowerCase =
|
|
1540
|
+
const operatorLowerCase = require_objectUtils.lc(rule.operator);
|
|
1541
1541
|
const quoteChar = quoteValuesWith || "'";
|
|
1542
1542
|
const quoteValue = (v) => `${quoteChar}${v}${quoteChar}`;
|
|
1543
1543
|
const escapeValue = (v) => escapeStringValueQuotes(v, quoteChar, escapeQuotes);
|
|
@@ -1614,9 +1614,9 @@ const defaultOperatorProcessorNL = (rule, opts = {}) => {
|
|
|
1614
1614
|
// istanbul ignore next
|
|
1615
1615
|
const { getOperators = defaultGetOperators, operatorMap: operatorMapParam = defaultExportOperatorMap } = opts;
|
|
1616
1616
|
const mergedOperatorMap = new Map(Object.entries(defaultExportOperatorMap));
|
|
1617
|
-
for (const [key, value] of Object.entries(operatorMapParam)) mergedOperatorMap.set(
|
|
1617
|
+
for (const [key, value] of Object.entries(operatorMapParam)) mergedOperatorMap.set(require_objectUtils.lc(key), value);
|
|
1618
1618
|
const operatorMap = Object.fromEntries(mergedOperatorMap);
|
|
1619
|
-
const operatorLC =
|
|
1619
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
1620
1620
|
var normalizedOperator = operator;
|
|
1621
1621
|
const hasSingleValue = require_utils.toArray(rule.value).length === 1;
|
|
1622
1622
|
if (operatorLC === "in" && hasSingleValue) normalizedOperator = "=";
|
|
@@ -1630,7 +1630,7 @@ const defaultOperatorProcessorNL = (rule, opts = {}) => {
|
|
|
1630
1630
|
value: normalizedOperator,
|
|
1631
1631
|
label: normalizedOperator
|
|
1632
1632
|
};
|
|
1633
|
-
const operatorTL = operatorMap[operatorNL] ?? operatorMap[
|
|
1633
|
+
const operatorTL = operatorMap[operatorNL] ?? operatorMap[require_objectUtils.lc(operatorNL)] ?? [label, label];
|
|
1634
1634
|
return typeof operatorTL === "string" ? operatorTL : operatorTL[valueSource === "field" ? 1 : 0];
|
|
1635
1635
|
};
|
|
1636
1636
|
/**
|
|
@@ -1675,7 +1675,7 @@ const defaultRuleProcessorNL = (rule, opts) => {
|
|
|
1675
1675
|
quoteValuesWith,
|
|
1676
1676
|
concatOperator
|
|
1677
1677
|
});
|
|
1678
|
-
const operatorLC =
|
|
1678
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
1679
1679
|
if ((operatorLC === "in" || operatorLC === "notin" || operatorLC === "between" || operatorLC === "notbetween") && !value) return "";
|
|
1680
1680
|
const wordOrderMap = {
|
|
1681
1681
|
S: processedField,
|
|
@@ -1691,7 +1691,7 @@ const defaultRuleProcessorNL = (rule, opts) => {
|
|
|
1691
1691
|
*
|
|
1692
1692
|
* @group Export
|
|
1693
1693
|
*/
|
|
1694
|
-
const defaultOperatorProcessorSQL = (rule) =>
|
|
1694
|
+
const defaultOperatorProcessorSQL = (rule) => require_objectUtils.lc(require_utils.mapSQLOperator(rule.operator));
|
|
1695
1695
|
/**
|
|
1696
1696
|
* Default rule processor used by {@link formatQuery} for "sql" format.
|
|
1697
1697
|
*
|
|
@@ -1734,7 +1734,7 @@ const defaultRuleProcessorSQL = (rule, opts = {}) => {
|
|
|
1734
1734
|
concatOperator
|
|
1735
1735
|
});
|
|
1736
1736
|
const operator = operatorProcessor(rule, opts);
|
|
1737
|
-
const operatorLowerCase =
|
|
1737
|
+
const operatorLowerCase = require_objectUtils.lc(operator);
|
|
1738
1738
|
if ((operatorLowerCase === "in" || operatorLowerCase === "not in" || operatorLowerCase === "between" || operatorLowerCase === "not between") && !value) return "";
|
|
1739
1739
|
return `${ruleField} ${operator} ${value}`.trim();
|
|
1740
1740
|
};
|
|
@@ -1801,7 +1801,7 @@ const defaultRuleProcessorParameterized = (rule, opts, meta) => {
|
|
|
1801
1801
|
format
|
|
1802
1802
|
});
|
|
1803
1803
|
const sqlOperator = operatorProcessor(rule, opts);
|
|
1804
|
-
const sqlOperatorLowerCase =
|
|
1804
|
+
const sqlOperatorLowerCase = require_objectUtils.lc(sqlOperator);
|
|
1805
1805
|
const [qPre, qPost] = quoteFieldNamesWith;
|
|
1806
1806
|
if ((sqlOperatorLowerCase === "in" || sqlOperatorLowerCase === "not in" || sqlOperatorLowerCase === "between" || sqlOperatorLowerCase === "not between") && !value) return finalize("");
|
|
1807
1807
|
else if (sqlOperatorLowerCase === "is null" || sqlOperatorLowerCase === "is not null") return finalize(`${qPre}${rule.field}${qPost} ${sqlOperator}`);
|
|
@@ -1855,7 +1855,7 @@ const defaultRuleProcessorPrisma = (rule, options = {}) => {
|
|
|
1855
1855
|
// istanbul ignore next
|
|
1856
1856
|
const { parseNumbers, preserveValueOrder } = options;
|
|
1857
1857
|
if (valueSource === "field" || require_utils.processMatchMode(rule)) return;
|
|
1858
|
-
const operatorLC =
|
|
1858
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
1859
1859
|
switch (operatorLC) {
|
|
1860
1860
|
case "=": return { [field]: processNumber(value, value, parseNumbers) };
|
|
1861
1861
|
case "!=":
|
|
@@ -1915,7 +1915,7 @@ const defaultRuleProcessorSequelize = (rule, { parseNumbers, preserveValueOrder,
|
|
|
1915
1915
|
if (require_utils.processMatchMode(rule)) return;
|
|
1916
1916
|
const { field, operator, value, valueSource } = rule;
|
|
1917
1917
|
const valueIsField = valueSource === "field";
|
|
1918
|
-
const operatorLC =
|
|
1918
|
+
const operatorLC = require_objectUtils.lc(operator);
|
|
1919
1919
|
if (!Op || valueIsField && (!col || !fn && [
|
|
1920
1920
|
"doesnotcontain",
|
|
1921
1921
|
"doesnotbeginwith",
|
|
@@ -2088,14 +2088,14 @@ const sqlFormats = new Set([
|
|
|
2088
2088
|
"sequelize"
|
|
2089
2089
|
]);
|
|
2090
2090
|
function formatQuery(ruleGroup, optionParam = {}) {
|
|
2091
|
-
const options = typeof optionParam === "string" ? { format:
|
|
2091
|
+
const options = typeof optionParam === "string" ? { format: require_objectUtils.lc(optionParam) } : optionParam;
|
|
2092
2092
|
const optObj = {
|
|
2093
2093
|
...defaultFormatQueryOptions,
|
|
2094
2094
|
...!options.format || sqlFormats.has(options.format) ? sqlDialectPresets[options.preset ?? "ansi"] ?? null : null,
|
|
2095
2095
|
...options,
|
|
2096
2096
|
...!options.format && (Object.keys(sqlDialectPresets).includes(options.preset ?? "") ? { format: "sql" } : null)
|
|
2097
2097
|
};
|
|
2098
|
-
const format =
|
|
2098
|
+
const format = require_objectUtils.lc(optObj.format);
|
|
2099
2099
|
const { fallbackExpression: fallbackExpression_option, getOperators: getOperators_option, operatorProcessor: operatorProcessor_option, parseNumbers, quoteFieldNamesWith: quoteFieldNamesWith_option, ruleGroupProcessor: ruleGroupProcessor_option, ruleProcessor: ruleProcessor_option, validator, valueProcessor: valueProcessor_option, context } = optObj;
|
|
2100
2100
|
const getParseNumberBoolean = (inputType) => {
|
|
2101
2101
|
return typeof require_utils.getParseNumberMethod({
|
package/dist/formatQuery.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as
|
|
1
|
+
import { D as toArray, O as trimIfString, S as toFlatOptionArray, T as parseNumber, _ as shouldRenderAsNumber, a as getNLTranslataion, c as isValidValue, d as mapSQLOperator, f as mongoOperators, g as processMatchMode, h as prismaOperators, i as defaultNLTranslations, l as isValueProcessorLegacy, m as numerifyValues, n as bigIntJsonStringifyReplacer, o as getQuoteFieldNamesWithArray, p as normalizeConstituentWordOrder, r as celCombinatorMap, s as getQuotedFieldName, t as bigIntJsonParseReviver, u as jsonLogicAdditionalOperators, v as getParseNumberMethod, w as toFullOptionList, y as getOption } from "./utils-BlMGIhvx.mjs";
|
|
2
|
+
import { a as isRuleGroupTypeIC, c as nullOrUndefinedOrEmpty, i as isRuleGroupType, o as isPojo, r as isRuleGroup, s as lc } from "./objectUtils-C0WB-8ex.mjs";
|
|
3
3
|
import { transformQuery } from "./transformQuery.mjs";
|
|
4
|
-
import { t as convertFromIC } from "./convertQuery-
|
|
4
|
+
import { t as convertFromIC } from "./convertQuery-CeJSNn37.mjs";
|
|
5
5
|
//#region src/utils/isRuleOrGroupValid.ts
|
|
6
6
|
/**
|
|
7
7
|
* Determines if an object is useful as a validation result.
|