@react-querybuilder/core 8.14.1 → 8.14.3-alpha.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.
Files changed (56) hide show
  1. package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +6 -1
  2. package/dist/cjs/react-querybuilder_core.cjs.development.js +18 -7
  3. package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
  4. package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +6 -1
  5. package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
  6. package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
  7. package/dist/{convertQuery-B5Qm_6ut.mjs → convertQuery-CeJSNn37.mjs} +2 -2
  8. package/dist/{convertQuery-B5Qm_6ut.mjs.map → convertQuery-CeJSNn37.mjs.map} +1 -1
  9. package/dist/{convertQuery-DfZehtnd.js → convertQuery-J8LpTG-7.js} +8 -8
  10. package/dist/{convertQuery-DfZehtnd.js.map → convertQuery-J8LpTG-7.js.map} +1 -1
  11. package/dist/formatQuery.js +60 -60
  12. package/dist/formatQuery.mjs +3 -3
  13. package/dist/{isRuleGroup-BCwaLzDj.js → objectUtils-ButT0Mng.js} +26 -1
  14. package/dist/objectUtils-ButT0Mng.js.map +1 -0
  15. package/dist/{isRuleGroup-LzP0HCKh.mjs → objectUtils-C0WB-8ex.mjs} +15 -2
  16. package/dist/objectUtils-C0WB-8ex.mjs.map +1 -0
  17. package/dist/parseCEL.js +8 -8
  18. package/dist/parseCEL.mjs +3 -3
  19. package/dist/parseJSONata.js +6 -6
  20. package/dist/parseJSONata.mjs +2 -2
  21. package/dist/parseJsonLogic.js +34 -34
  22. package/dist/parseJsonLogic.js.map +1 -1
  23. package/dist/parseJsonLogic.mjs +4 -4
  24. package/dist/parseMongoDB.js +23 -23
  25. package/dist/parseMongoDB.js.map +1 -1
  26. package/dist/parseMongoDB.mjs +4 -4
  27. package/dist/parseSQL.js +7 -7
  28. package/dist/parseSQL.mjs +3 -3
  29. package/dist/parseSpEL.js +5 -5
  30. package/dist/parseSpEL.mjs +3 -3
  31. package/dist/{prepareQueryObjects-tMukQHT9.mjs → prepareQueryObjects-BfMlS4ql.mjs} +3 -3
  32. package/dist/{prepareQueryObjects-tMukQHT9.mjs.map → prepareQueryObjects-BfMlS4ql.mjs.map} +1 -1
  33. package/dist/{prepareQueryObjects-Dc8rqsYM.js → prepareQueryObjects-DO3qXriW.js} +5 -5
  34. package/dist/{prepareQueryObjects-Dc8rqsYM.js.map → prepareQueryObjects-DO3qXriW.js.map} +1 -1
  35. package/dist/react-querybuilder_core.d.mts +6 -1
  36. package/dist/react-querybuilder_core.legacy-esm.d.ts +6 -1
  37. package/dist/react-querybuilder_core.legacy-esm.js +15 -5
  38. package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
  39. package/dist/react-querybuilder_core.mjs +18 -8
  40. package/dist/react-querybuilder_core.mjs.map +1 -1
  41. package/dist/react-querybuilder_core.production.d.mts +6 -1
  42. package/dist/react-querybuilder_core.production.mjs +1 -1
  43. package/dist/react-querybuilder_core.production.mjs.map +1 -1
  44. package/dist/transformQuery.js +5 -4
  45. package/dist/transformQuery.js.map +1 -1
  46. package/dist/transformQuery.mjs +3 -2
  47. package/dist/transformQuery.mjs.map +1 -1
  48. package/dist/{utils-DQoYnxpa.mjs → utils-BlMGIhvx.mjs} +3 -11
  49. package/dist/utils-BlMGIhvx.mjs.map +1 -0
  50. package/dist/{utils-EsYRkPtf.js → utils-CZRhzje-.js} +12 -26
  51. package/dist/utils-CZRhzje-.js.map +1 -0
  52. package/package.json +2 -2
  53. package/dist/isRuleGroup-BCwaLzDj.js.map +0 -1
  54. package/dist/isRuleGroup-LzP0HCKh.mjs.map +0 -1
  55. package/dist/utils-DQoYnxpa.mjs.map +0 -1
  56. package/dist/utils-EsYRkPtf.js.map +0 -1
@@ -34,6 +34,19 @@ const isRuleGroupType = (rg) => isRuleGroup(rg) && typeof rg.combinator === "str
34
34
  */
35
35
  const isRuleGroupTypeIC = (rg) => isRuleGroup(rg) && rg.combinator === void 0;
36
36
  //#endregion
37
+ //#region src/utils/objectUtils.ts
38
+ /**
39
+ * A strongly-typed version of `Object.keys()`.
40
+ *
41
+ * [Original source](https://github.com/sindresorhus/ts-extras/blob/44f57392c5f027268330771996c4fdf9260b22d6/source/object-keys.ts)
42
+ */
43
+ const objectKeys = Object.keys;
44
+ /**
45
+ * Returns `true` if the key could cause prototype pollution when used
46
+ * as a property name in bracket-notation assignment.
47
+ */
48
+ const isUnsafeKey = (key) => key === "__proto__" || key === "constructor" || key === "prototype";
49
+ //#endregion
37
50
  Object.defineProperty(exports, "isPojo", {
38
51
  enumerable: true,
39
52
  get: function() {
@@ -58,6 +71,12 @@ Object.defineProperty(exports, "isRuleGroupTypeIC", {
58
71
  return isRuleGroupTypeIC;
59
72
  }
60
73
  });
74
+ Object.defineProperty(exports, "isUnsafeKey", {
75
+ enumerable: true,
76
+ get: function() {
77
+ return isUnsafeKey;
78
+ }
79
+ });
61
80
  Object.defineProperty(exports, "lc", {
62
81
  enumerable: true,
63
82
  get: function() {
@@ -76,5 +95,11 @@ Object.defineProperty(exports, "numericRegex", {
76
95
  return numericRegex;
77
96
  }
78
97
  });
98
+ Object.defineProperty(exports, "objectKeys", {
99
+ enumerable: true,
100
+ get: function() {
101
+ return objectKeys;
102
+ }
103
+ });
79
104
 
80
- //# sourceMappingURL=isRuleGroup-BCwaLzDj.js.map
105
+ //# sourceMappingURL=objectUtils-ButT0Mng.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectUtils-ButT0Mng.js","names":["numericQuantityRegex"],"sources":["../src/utils/misc.ts","../src/utils/isRuleGroup.ts","../src/utils/objectUtils.ts"],"sourcesContent":["import { numericRegex as numericQuantityRegex } from 'numeric-quantity';\n\n/**\n * Converts a value to lowercase if it's a string, otherwise returns the value as is.\n */\n// istanbul ignore next\nexport const lc = <T>(v: T): T => (typeof v === 'string' ? (v.toLowerCase() as T) : v);\n\n/**\n * Regex matching numeric strings. Passes for positive/negative integers, decimals,\n * and E notation, with optional surrounding whitespace.\n */\nexport const numericRegex: RegExp = new RegExp(\n numericQuantityRegex.source.replace(/^\\^/, String.raw`^\\s*`).replace(/\\$$/, String.raw`\\s*$`)\n);\n\n/**\n * Determines if a variable is a plain old JavaScript object, aka POJO.\n */\n// oxlint-disable-next-line typescript/no-explicit-any\nexport const isPojo = (obj: any): obj is Record<string, any> =>\n obj === null || typeof obj !== 'object' ? false : Object.getPrototypeOf(obj) === Object.prototype;\n\n/**\n * Simple helper to determine whether a value is null, undefined, or an empty string.\n */\nexport const nullOrUndefinedOrEmpty = (value: unknown): value is null | undefined | '' =>\n value === null || value === undefined || value === '';\n","import type { RuleGroupType, RuleGroupTypeAny, RuleGroupTypeIC, RuleType } from '../types';\nimport { isPojo } from './misc';\n\n/**\n * Determines if an object is a {@link RuleType} (only checks for a `field` property).\n */\nexport const isRuleType = (s: unknown): s is RuleType =>\n isPojo(s) && 'field' in s && typeof s.field === 'string';\n\n/**\n * Determines if an object is a {@link RuleGroupType} or {@link RuleGroupTypeIC}.\n */\nexport const isRuleGroup = (rg: unknown): rg is RuleGroupTypeAny =>\n isPojo(rg) && Array.isArray(rg.rules);\n\n/**\n * Determines if an object is a {@link RuleGroupType}.\n */\nexport const isRuleGroupType = (rg: unknown): rg is RuleGroupType =>\n isRuleGroup(rg) && typeof rg.combinator === 'string';\n\n/**\n * Determines if an object is a {@link RuleGroupTypeIC}.\n */\nexport const isRuleGroupTypeIC = (rg: unknown): rg is RuleGroupTypeIC =>\n isRuleGroup(rg) && rg.combinator === undefined;\n","// All code in this file is adapted from:\n// npm: https://www.npmjs.com/package/ts-extras\n// src: https://github.com/sindresorhus/ts-extras\n\n/**\n * Original looked like this (not sure why template string is used):\n * ```\n * type ObjectKeys<T extends object> = `${Exclude<keyof T, symbol>}`;\n * ```\n */\ntype ObjectKeys<T extends object> = Exclude<keyof T, symbol>;\n\n/**\n * A strongly-typed version of `Object.keys()`.\n *\n * [Original source](https://github.com/sindresorhus/ts-extras/blob/44f57392c5f027268330771996c4fdf9260b22d6/source/object-keys.ts)\n */\nexport const objectKeys = Object.keys as <Type extends object>(\n value: Type\n) => Array<ObjectKeys<Type>>;\n\n/**\n * A strongly-typed version of `Object.entries()`.\n *\n * [Original source](https://github.com/sindresorhus/ts-extras/blob/44f57392c5f027268330771996c4fdf9260b22d6/source/object-entries.ts)\n */\nexport const objectEntries = Object.entries as <Type extends Record<PropertyKey, unknown>>(\n value: Type\n) => Array<[ObjectKeys<Type>, Type[ObjectKeys<Type>]]>;\n\n/**\n * Returns `true` if the key could cause prototype pollution when used\n * as a property name in bracket-notation assignment.\n */\nexport const isUnsafeKey = (key: unknown): boolean =>\n key === '__proto__' || key === 'constructor' || key === 'prototype';\n"],"mappings":";;;;;;;AAMA,MAAa,MAAS,MAAa,OAAO,MAAM,WAAY,EAAE,aAAa,GAAS;;;;;AAMpF,MAAa,eAAuB,IAAI,OACtCA,iBAAAA,aAAqB,OAAO,QAAQ,OAAO,OAAO,GAAG,OAAO,CAAC,QAAQ,OAAO,OAAO,GAAG,OAAO,CAC9F;;;;AAMD,MAAa,UAAU,QACrB,QAAQ,QAAQ,OAAO,QAAQ,WAAW,QAAQ,OAAO,eAAe,IAAI,KAAK,OAAO;;;;AAK1F,MAAa,0BAA0B,UACrC,UAAU,QAAQ,UAAU,KAAA,KAAa,UAAU;;;;;;ACfrD,MAAa,eAAe,OAC1B,OAAO,GAAG,IAAI,MAAM,QAAQ,GAAG,MAAM;;;;AAKvC,MAAa,mBAAmB,OAC9B,YAAY,GAAG,IAAI,OAAO,GAAG,eAAe;;;;AAK9C,MAAa,qBAAqB,OAChC,YAAY,GAAG,IAAI,GAAG,eAAe,KAAA;;;;;;;;ACRvC,MAAa,aAAa,OAAO;;;;;AAiBjC,MAAa,eAAe,QAC1B,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ"}
@@ -33,6 +33,19 @@ const isRuleGroupType = (rg) => isRuleGroup(rg) && typeof rg.combinator === "str
33
33
  */
34
34
  const isRuleGroupTypeIC = (rg) => isRuleGroup(rg) && rg.combinator === void 0;
35
35
  //#endregion
36
- export { lc as a, isPojo as i, isRuleGroupType as n, nullOrUndefinedOrEmpty as o, isRuleGroupTypeIC as r, numericRegex$1 as s, isRuleGroup as t };
36
+ //#region src/utils/objectUtils.ts
37
+ /**
38
+ * A strongly-typed version of `Object.keys()`.
39
+ *
40
+ * [Original source](https://github.com/sindresorhus/ts-extras/blob/44f57392c5f027268330771996c4fdf9260b22d6/source/object-keys.ts)
41
+ */
42
+ const objectKeys = Object.keys;
43
+ /**
44
+ * Returns `true` if the key could cause prototype pollution when used
45
+ * as a property name in bracket-notation assignment.
46
+ */
47
+ const isUnsafeKey = (key) => key === "__proto__" || key === "constructor" || key === "prototype";
48
+ //#endregion
49
+ export { isRuleGroupTypeIC as a, nullOrUndefinedOrEmpty as c, isRuleGroupType as i, numericRegex$1 as l, objectKeys as n, isPojo as o, isRuleGroup as r, lc as s, isUnsafeKey as t };
37
50
 
38
- //# sourceMappingURL=isRuleGroup-LzP0HCKh.mjs.map
51
+ //# sourceMappingURL=objectUtils-C0WB-8ex.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectUtils-C0WB-8ex.mjs","names":["numericRegex","numericQuantityRegex"],"sources":["../src/utils/misc.ts","../src/utils/isRuleGroup.ts","../src/utils/objectUtils.ts"],"sourcesContent":["import { numericRegex as numericQuantityRegex } from 'numeric-quantity';\n\n/**\n * Converts a value to lowercase if it's a string, otherwise returns the value as is.\n */\n// istanbul ignore next\nexport const lc = <T>(v: T): T => (typeof v === 'string' ? (v.toLowerCase() as T) : v);\n\n/**\n * Regex matching numeric strings. Passes for positive/negative integers, decimals,\n * and E notation, with optional surrounding whitespace.\n */\nexport const numericRegex: RegExp = new RegExp(\n numericQuantityRegex.source.replace(/^\\^/, String.raw`^\\s*`).replace(/\\$$/, String.raw`\\s*$`)\n);\n\n/**\n * Determines if a variable is a plain old JavaScript object, aka POJO.\n */\n// oxlint-disable-next-line typescript/no-explicit-any\nexport const isPojo = (obj: any): obj is Record<string, any> =>\n obj === null || typeof obj !== 'object' ? false : Object.getPrototypeOf(obj) === Object.prototype;\n\n/**\n * Simple helper to determine whether a value is null, undefined, or an empty string.\n */\nexport const nullOrUndefinedOrEmpty = (value: unknown): value is null | undefined | '' =>\n value === null || value === undefined || value === '';\n","import type { RuleGroupType, RuleGroupTypeAny, RuleGroupTypeIC, RuleType } from '../types';\nimport { isPojo } from './misc';\n\n/**\n * Determines if an object is a {@link RuleType} (only checks for a `field` property).\n */\nexport const isRuleType = (s: unknown): s is RuleType =>\n isPojo(s) && 'field' in s && typeof s.field === 'string';\n\n/**\n * Determines if an object is a {@link RuleGroupType} or {@link RuleGroupTypeIC}.\n */\nexport const isRuleGroup = (rg: unknown): rg is RuleGroupTypeAny =>\n isPojo(rg) && Array.isArray(rg.rules);\n\n/**\n * Determines if an object is a {@link RuleGroupType}.\n */\nexport const isRuleGroupType = (rg: unknown): rg is RuleGroupType =>\n isRuleGroup(rg) && typeof rg.combinator === 'string';\n\n/**\n * Determines if an object is a {@link RuleGroupTypeIC}.\n */\nexport const isRuleGroupTypeIC = (rg: unknown): rg is RuleGroupTypeIC =>\n isRuleGroup(rg) && rg.combinator === undefined;\n","// All code in this file is adapted from:\n// npm: https://www.npmjs.com/package/ts-extras\n// src: https://github.com/sindresorhus/ts-extras\n\n/**\n * Original looked like this (not sure why template string is used):\n * ```\n * type ObjectKeys<T extends object> = `${Exclude<keyof T, symbol>}`;\n * ```\n */\ntype ObjectKeys<T extends object> = Exclude<keyof T, symbol>;\n\n/**\n * A strongly-typed version of `Object.keys()`.\n *\n * [Original source](https://github.com/sindresorhus/ts-extras/blob/44f57392c5f027268330771996c4fdf9260b22d6/source/object-keys.ts)\n */\nexport const objectKeys = Object.keys as <Type extends object>(\n value: Type\n) => Array<ObjectKeys<Type>>;\n\n/**\n * A strongly-typed version of `Object.entries()`.\n *\n * [Original source](https://github.com/sindresorhus/ts-extras/blob/44f57392c5f027268330771996c4fdf9260b22d6/source/object-entries.ts)\n */\nexport const objectEntries = Object.entries as <Type extends Record<PropertyKey, unknown>>(\n value: Type\n) => Array<[ObjectKeys<Type>, Type[ObjectKeys<Type>]]>;\n\n/**\n * Returns `true` if the key could cause prototype pollution when used\n * as a property name in bracket-notation assignment.\n */\nexport const isUnsafeKey = (key: unknown): boolean =>\n key === '__proto__' || key === 'constructor' || key === 'prototype';\n"],"mappings":";;;;;;AAMA,MAAa,MAAS,MAAa,OAAO,MAAM,WAAY,EAAE,aAAa,GAAS;;;;;AAMpF,MAAaA,iBAAuB,IAAI,OACtCC,aAAqB,OAAO,QAAQ,OAAO,OAAO,GAAG,OAAO,CAAC,QAAQ,OAAO,OAAO,GAAG,OAAO,CAC9F;;;;AAMD,MAAa,UAAU,QACrB,QAAQ,QAAQ,OAAO,QAAQ,WAAW,QAAQ,OAAO,eAAe,IAAI,KAAK,OAAO;;;;AAK1F,MAAa,0BAA0B,UACrC,UAAU,QAAQ,UAAU,KAAA,KAAa,UAAU;;;;;;ACfrD,MAAa,eAAe,OAC1B,OAAO,GAAG,IAAI,MAAM,QAAQ,GAAG,MAAM;;;;AAKvC,MAAa,mBAAmB,OAC9B,YAAY,GAAG,IAAI,OAAO,GAAG,eAAe;;;;AAK9C,MAAa,qBAAqB,OAChC,YAAY,GAAG,IAAI,GAAG,eAAe,KAAA;;;;;;;;ACRvC,MAAa,aAAa,OAAO;;;;;AAiBjC,MAAa,eAAe,QAC1B,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ"}
package/dist/parseCEL.js CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_utils = require("./utils-EsYRkPtf.js");
3
- const require_isRuleGroup = require("./isRuleGroup-BCwaLzDj.js");
4
- const require_prepareQueryObjects = require("./prepareQueryObjects-Dc8rqsYM.js");
2
+ const require_utils = require("./utils-CZRhzje-.js");
3
+ const require_objectUtils = require("./objectUtils-ButT0Mng.js");
4
+ const require_prepareQueryObjects = require("./prepareQueryObjects-DO3qXriW.js");
5
5
  require("./parseJSONata.js");
6
6
  let _ts_jison_parser = require("@ts-jison/parser");
7
7
  let _ts_jison_lexer = require("@ts-jison/lexer");
@@ -2282,7 +2282,7 @@ function parseCEL(cel, options = {}) {
2282
2282
  });
2283
2283
  if (negatedExpr) {
2284
2284
  if (isCELNegatedLikeExpression(expr) || isCELNegation(expr) && isCELExpressionGroup(expr.value) && isCELRelation(expr.value.value)) return negatedExpr;
2285
- else if (!negate || negate && !require_isRuleGroup.isRuleGroup(negatedExpr) && negatedExpr.operator.startsWith("doesNot")) return ic ? { rules: [negatedExpr] } : {
2285
+ else if (!negate || negate && !require_objectUtils.isRuleGroup(negatedExpr) && negatedExpr.operator.startsWith("doesNot")) return ic ? { rules: [negatedExpr] } : {
2286
2286
  combinator: "and",
2287
2287
  rules: [negatedExpr]
2288
2288
  };
@@ -2298,7 +2298,7 @@ function parseCEL(cel, options = {}) {
2298
2298
  } else if (isCELExpressionGroup(expr)) {
2299
2299
  const rule = processCELExpression(expr.value, { groupOnlyIfNecessary: true });
2300
2300
  if (rule) {
2301
- if (require_isRuleGroup.isRuleGroup(rule) || groupOnlyIfNecessary && isCELExpressionGroup(expr.value)) return rule;
2301
+ if (require_objectUtils.isRuleGroup(rule) || groupOnlyIfNecessary && isCELExpressionGroup(expr.value)) return rule;
2302
2302
  return ic ? { rules: [rule] } : {
2303
2303
  combinator: "and",
2304
2304
  rules: [rule]
@@ -2353,7 +2353,7 @@ function parseCEL(cel, options = {}) {
2353
2353
  const matchMode = method === "all" ? "all" : "some";
2354
2354
  const subqueryValue = processCELExpression(transformAliasInExpression(condition, alias));
2355
2355
  if (subqueryValue && fieldIsValid(field, "=")) {
2356
- const ruleGroupValue = require_isRuleGroup.isRuleGroup(subqueryValue) ? subqueryValue : ic ? { rules: [subqueryValue] } : {
2356
+ const ruleGroupValue = require_objectUtils.isRuleGroup(subqueryValue) ? subqueryValue : ic ? { rules: [subqueryValue] } : {
2357
2357
  combinator: "and",
2358
2358
  rules: [subqueryValue]
2359
2359
  };
@@ -2372,7 +2372,7 @@ function parseCEL(cel, options = {}) {
2372
2372
  const subqueryValue = processCELExpression(transformAliasInExpression(conditionExpr, isCELIdentifier(aliasExpr) ? aliasExpr.value : null));
2373
2373
  // istanbul ignore else
2374
2374
  if (subqueryValue && fieldIsValid(field, "=")) {
2375
- const ruleGroupValue = require_isRuleGroup.isRuleGroup(subqueryValue) ? subqueryValue : ic ? { rules: [subqueryValue] } : {
2375
+ const ruleGroupValue = require_objectUtils.isRuleGroup(subqueryValue) ? subqueryValue : ic ? { rules: [subqueryValue] } : {
2376
2376
  combinator: "and",
2377
2377
  rules: [subqueryValue]
2378
2378
  };
@@ -2446,7 +2446,7 @@ function parseCEL(cel, options = {}) {
2446
2446
  }
2447
2447
  const result = processCELExpression(processedCEL);
2448
2448
  if (result) {
2449
- if (require_isRuleGroup.isRuleGroup(result)) return prepare(result);
2449
+ if (require_objectUtils.isRuleGroup(result)) return prepare(result);
2450
2450
  return prepare({
2451
2451
  rules: [result],
2452
2452
  ...ic ? {} : { combinator: "and" }
package/dist/parseCEL.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { A as defaultOperatorNegationMap, D as joinWith } from "./utils-DQoYnxpa.mjs";
2
- import { t as isRuleGroup } from "./isRuleGroup-LzP0HCKh.mjs";
3
- import { n as fieldIsValidUtil, r as getFieldsArray, t as prepareRuleGroup } from "./prepareQueryObjects-tMukQHT9.mjs";
1
+ import { E as joinWith, k as defaultOperatorNegationMap } from "./utils-BlMGIhvx.mjs";
2
+ import { r as isRuleGroup } from "./objectUtils-C0WB-8ex.mjs";
3
+ import { n as fieldIsValidUtil, r as getFieldsArray, t as prepareRuleGroup } from "./prepareQueryObjects-BfMlS4ql.mjs";
4
4
  import { JisonParser } from "@ts-jison/parser";
5
5
  import { JisonLexer } from "@ts-jison/lexer";
6
6
  //#region src/utils/parseCEL/celParser.ts
@@ -21,8 +21,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  enumerable: true
22
22
  }) : target, mod));
23
23
  //#endregion
24
- const require_isRuleGroup = require("./isRuleGroup-BCwaLzDj.js");
25
- const require_prepareQueryObjects = require("./prepareQueryObjects-Dc8rqsYM.js");
24
+ const require_objectUtils = require("./objectUtils-ButT0Mng.js");
25
+ const require_prepareQueryObjects = require("./prepareQueryObjects-DO3qXriW.js");
26
26
  let jsonata = require("jsonata");
27
27
  jsonata = __toESM(jsonata);
28
28
  //#region src/utils/parseJSONata/utils.ts
@@ -156,7 +156,7 @@ function parseJSONata(jsonataInput, options = {}) {
156
156
  return parseJSONataAST(v);
157
157
  });
158
158
  if (!rules.every(Boolean)) return null;
159
- if (((rs) => rs.length === 3 && (rs[1] === "and" || rs[1] === "or") && !require_isRuleGroup.isRuleGroup(rs[0]) && !require_isRuleGroup.isRuleGroup(rs[2]))(rules) && rules[0].field === rules[2].field && (rules[0].valueSource ?? "value") === (rules[2].valueSource ?? "value") && (rules[1] === "and" && (rules[0].operator === ">=" && rules[2].operator === "<=" || rules[0].operator === "<=" && rules[2].operator === ">=") || rules[1] === "or" && (rules[0].operator === ">" && rules[2].operator === "<" || rules[0].operator === "<" && rules[2].operator === ">"))) return {
159
+ if (((rs) => rs.length === 3 && (rs[1] === "and" || rs[1] === "or") && !require_objectUtils.isRuleGroup(rs[0]) && !require_objectUtils.isRuleGroup(rs[2]))(rules) && rules[0].field === rules[2].field && (rules[0].valueSource ?? "value") === (rules[2].valueSource ?? "value") && (rules[1] === "and" && (rules[0].operator === ">=" && rules[2].operator === "<=" || rules[0].operator === "<=" && rules[2].operator === ">=") || rules[1] === "or" && (rules[0].operator === ">" && rules[2].operator === "<" || rules[0].operator === "<" && rules[2].operator === ">"))) return {
160
160
  field: rules[0].field,
161
161
  operator: rules[1] === "and" ? "between" : "notBetween",
162
162
  value: rules[1] === "and" && rules[0].operator === "<=" || rules[1] === "or" && rules[0].operator === ">" ? [rules[2].value, rules[0].value] : [rules[0].value, rules[2].value],
@@ -173,7 +173,7 @@ function parseJSONata(jsonataInput, options = {}) {
173
173
  };
174
174
  return parseJSONataAST(exp);
175
175
  }).filter(Boolean);
176
- if (((rs) => rs.length === 2 && !require_isRuleGroup.isRuleGroup(rs[0]) && !require_isRuleGroup.isRuleGroup(rs[1]))(rules) && rules[0].field === rules[1].field && (rules[0].valueSource ?? "value") === (rules[1].valueSource ?? "value") && (combinator === "and" && (rules[0].operator === ">=" && rules[1].operator === "<=" || rules[0].operator === "<=" && rules[1].operator === ">=") || combinator === "or" && (rules[0].operator === ">" && rules[1].operator === "<" || rules[0].operator === "<" && rules[1].operator === ">"))) return {
176
+ if (((rs) => rs.length === 2 && !require_objectUtils.isRuleGroup(rs[0]) && !require_objectUtils.isRuleGroup(rs[1]))(rules) && rules[0].field === rules[1].field && (rules[0].valueSource ?? "value") === (rules[1].valueSource ?? "value") && (combinator === "and" && (rules[0].operator === ">=" && rules[1].operator === "<=" || rules[0].operator === "<=" && rules[1].operator === ">=") || combinator === "or" && (rules[0].operator === ">" && rules[1].operator === "<" || rules[0].operator === "<" && rules[1].operator === ">"))) return {
177
177
  field: rules[0].field,
178
178
  operator: combinator === "and" ? "between" : "notBetween",
179
179
  value: combinator === "and" && rules[0].operator === "<=" || combinator === "or" && rules[0].operator === ">" ? [rules[1].value, rules[0].value] : [rules[0].value, rules[1].value],
@@ -188,7 +188,7 @@ function parseJSONata(jsonataInput, options = {}) {
188
188
  const negatedExpr = parseJSONataAST(expr.arguments[0]);
189
189
  // istanbul ignore else
190
190
  if (negatedExpr) {
191
- if (!require_isRuleGroup.isRuleGroup(negatedExpr) && (negatedExpr.operator === "contains" || negatedExpr.operator === "beginsWith" || negatedExpr.operator === "endsWith")) return {
191
+ if (!require_objectUtils.isRuleGroup(negatedExpr) && (negatedExpr.operator === "contains" || negatedExpr.operator === "beginsWith" || negatedExpr.operator === "endsWith")) return {
192
192
  ...negatedExpr,
193
193
  operator: negatedLikeOperators[negatedExpr.operator]
194
194
  };
@@ -274,7 +274,7 @@ function parseJSONata(jsonataInput, options = {}) {
274
274
  }
275
275
  const result = parseJSONataAST(jsonataExpr.ast());
276
276
  if (result) {
277
- if (require_isRuleGroup.isRuleGroup(result)) return prepare(result);
277
+ if (require_objectUtils.isRuleGroup(result)) return prepare(result);
278
278
  return prepare({
279
279
  rules: [result],
280
280
  ...ic ? {} : { combinator: "and" }
@@ -1,5 +1,5 @@
1
- import { t as isRuleGroup } from "./isRuleGroup-LzP0HCKh.mjs";
2
- import { n as fieldIsValidUtil, r as getFieldsArray, t as prepareRuleGroup } from "./prepareQueryObjects-tMukQHT9.mjs";
1
+ import { r as isRuleGroup } from "./objectUtils-C0WB-8ex.mjs";
2
+ import { n as fieldIsValidUtil, r as getFieldsArray, t as prepareRuleGroup } from "./prepareQueryObjects-BfMlS4ql.mjs";
3
3
  import jsonata from "jsonata";
4
4
  //#region src/utils/parseJSONata/utils.ts
5
5
  const isJSONataExprNode = (expr) => {
@@ -1,32 +1,32 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_utils = require("./utils-EsYRkPtf.js");
3
- const require_isRuleGroup = require("./isRuleGroup-BCwaLzDj.js");
4
- const require_convertQuery = require("./convertQuery-DfZehtnd.js");
5
- const require_prepareQueryObjects = require("./prepareQueryObjects-Dc8rqsYM.js");
2
+ const require_utils = require("./utils-CZRhzje-.js");
3
+ const require_objectUtils = require("./objectUtils-ButT0Mng.js");
4
+ const require_convertQuery = require("./convertQuery-J8LpTG-7.js");
5
+ const require_prepareQueryObjects = require("./prepareQueryObjects-DO3qXriW.js");
6
6
  //#region src/utils/parseJsonLogic/utils.ts
7
- const isJsonLogicVar = (logic) => require_isRuleGroup.isPojo(logic) && "var" in logic;
7
+ const isJsonLogicVar = (logic) => require_objectUtils.isPojo(logic) && "var" in logic;
8
8
  const isRQBJsonLogicVar = (logic) => isJsonLogicVar(logic) && typeof logic.var === "string";
9
- const isJsonLogicEqual = (logic) => require_isRuleGroup.isPojo(logic) && "==" in logic;
10
- const isJsonLogicStrictEqual = (logic) => require_isRuleGroup.isPojo(logic) && "===" in logic;
11
- const isJsonLogicNotEqual = (logic) => require_isRuleGroup.isPojo(logic) && "!=" in logic;
12
- const isJsonLogicStrictNotEqual = (logic) => require_isRuleGroup.isPojo(logic) && "!==" in logic;
13
- const isJsonLogicNegation = (logic) => require_isRuleGroup.isPojo(logic) && "!" in logic;
14
- const isJsonLogicDoubleNegation = (logic) => require_isRuleGroup.isPojo(logic) && "!!" in logic;
15
- const isJsonLogicOr = (logic) => require_isRuleGroup.isPojo(logic) && "or" in logic;
16
- const isJsonLogicAnd = (logic) => require_isRuleGroup.isPojo(logic) && "and" in logic;
17
- const isJsonLogicGreaterThan = (logic) => require_isRuleGroup.isPojo(logic) && ">" in logic;
18
- const isJsonLogicGreaterThanOrEqual = (logic) => require_isRuleGroup.isPojo(logic) && ">=" in logic;
19
- const isJsonLogicLessThan = (logic) => require_isRuleGroup.isPojo(logic) && "<" in logic && logic["<"].length === 2;
20
- const isJsonLogicLessThanOrEqual = (logic) => require_isRuleGroup.isPojo(logic) && "<=" in logic && logic["<="].length === 2;
21
- const isJsonLogicInArray = (logic) => require_isRuleGroup.isPojo(logic) && "in" in logic && Array.isArray(logic.in[1]);
22
- const isJsonLogicInString = (logic) => require_isRuleGroup.isPojo(logic) && "in" in logic && !Array.isArray(logic.in[1]);
23
- const isJsonLogicAll = (logic) => require_isRuleGroup.isPojo(logic) && "all" in logic;
24
- const isJsonLogicNone = (logic) => require_isRuleGroup.isPojo(logic) && "none" in logic;
25
- const isJsonLogicSome = (logic) => require_isRuleGroup.isPojo(logic) && "some" in logic;
26
- const isJsonLogicBetweenExclusive = (logic) => require_isRuleGroup.isPojo(logic) && "<" in logic && Array.isArray(logic["<"]) && logic["<"].length === 3;
27
- const isJsonLogicBetweenInclusive = (logic) => require_isRuleGroup.isPojo(logic) && "<=" in logic && Array.isArray(logic["<="]) && logic["<="].length === 3;
28
- const isRQBJsonLogicStartsWith = (logic) => require_isRuleGroup.isPojo(logic) && "startsWith" in logic;
29
- const isRQBJsonLogicEndsWith = (logic) => require_isRuleGroup.isPojo(logic) && "endsWith" in logic;
9
+ const isJsonLogicEqual = (logic) => require_objectUtils.isPojo(logic) && "==" in logic;
10
+ const isJsonLogicStrictEqual = (logic) => require_objectUtils.isPojo(logic) && "===" in logic;
11
+ const isJsonLogicNotEqual = (logic) => require_objectUtils.isPojo(logic) && "!=" in logic;
12
+ const isJsonLogicStrictNotEqual = (logic) => require_objectUtils.isPojo(logic) && "!==" in logic;
13
+ const isJsonLogicNegation = (logic) => require_objectUtils.isPojo(logic) && "!" in logic;
14
+ const isJsonLogicDoubleNegation = (logic) => require_objectUtils.isPojo(logic) && "!!" in logic;
15
+ const isJsonLogicOr = (logic) => require_objectUtils.isPojo(logic) && "or" in logic;
16
+ const isJsonLogicAnd = (logic) => require_objectUtils.isPojo(logic) && "and" in logic;
17
+ const isJsonLogicGreaterThan = (logic) => require_objectUtils.isPojo(logic) && ">" in logic;
18
+ const isJsonLogicGreaterThanOrEqual = (logic) => require_objectUtils.isPojo(logic) && ">=" in logic;
19
+ const isJsonLogicLessThan = (logic) => require_objectUtils.isPojo(logic) && "<" in logic && logic["<"].length === 2;
20
+ const isJsonLogicLessThanOrEqual = (logic) => require_objectUtils.isPojo(logic) && "<=" in logic && logic["<="].length === 2;
21
+ const isJsonLogicInArray = (logic) => require_objectUtils.isPojo(logic) && "in" in logic && Array.isArray(logic.in[1]);
22
+ const isJsonLogicInString = (logic) => require_objectUtils.isPojo(logic) && "in" in logic && !Array.isArray(logic.in[1]);
23
+ const isJsonLogicAll = (logic) => require_objectUtils.isPojo(logic) && "all" in logic;
24
+ const isJsonLogicNone = (logic) => require_objectUtils.isPojo(logic) && "none" in logic;
25
+ const isJsonLogicSome = (logic) => require_objectUtils.isPojo(logic) && "some" in logic;
26
+ const isJsonLogicBetweenExclusive = (logic) => require_objectUtils.isPojo(logic) && "<" in logic && Array.isArray(logic["<"]) && logic["<"].length === 3;
27
+ const isJsonLogicBetweenInclusive = (logic) => require_objectUtils.isPojo(logic) && "<=" in logic && Array.isArray(logic["<="]) && logic["<="].length === 3;
28
+ const isRQBJsonLogicStartsWith = (logic) => require_objectUtils.isPojo(logic) && "startsWith" in logic;
29
+ const isRQBJsonLogicEndsWith = (logic) => require_objectUtils.isPojo(logic) && "endsWith" in logic;
30
30
  //#endregion
31
31
  //#region src/utils/parseJsonLogic/parseJsonLogic.ts
32
32
  const emptyRuleGroup = {
@@ -44,11 +44,11 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
44
44
  getValueSources
45
45
  });
46
46
  function processLogic(logic, outermost) {
47
- if (outermost && !require_isRuleGroup.isPojo(logic)) return false;
47
+ if (outermost && !require_objectUtils.isPojo(logic)) return false;
48
48
  const [key, keyValue] = Object.entries(logic || {})?.[0] ?? [];
49
- if (jsonLogicOperations && require_utils.objectKeys(jsonLogicOperations).includes(key)) {
49
+ if (jsonLogicOperations && require_objectUtils.objectKeys(jsonLogicOperations).includes(key)) {
50
50
  const rule = jsonLogicOperations[key](keyValue);
51
- return rule ? outermost && !require_isRuleGroup.isRuleGroup(rule) ? {
51
+ return rule ? outermost && !require_objectUtils.isRuleGroup(rule) ? {
52
52
  combinator: "and",
53
53
  rules: [rule]
54
54
  } : rule : false;
@@ -64,7 +64,7 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
64
64
  else if (isJsonLogicNegation(logic)) {
65
65
  const rule = processLogic(logic["!"]);
66
66
  if (rule) {
67
- if (!require_isRuleGroup.isRuleGroupType(rule) && (rule.operator === "between" || rule.operator === "in" || rule.operator === "contains" || rule.operator === "beginsWith" || rule.operator === "endsWith")) {
67
+ if (!require_objectUtils.isRuleGroupType(rule) && (rule.operator === "between" || rule.operator === "in" || rule.operator === "contains" || rule.operator === "beginsWith" || rule.operator === "endsWith")) {
68
68
  const newRule = {
69
69
  ...rule,
70
70
  operator: require_utils.defaultOperatorNegationMap[rule.operator]
@@ -74,7 +74,7 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
74
74
  rules: [newRule]
75
75
  };
76
76
  return newRule;
77
- } else if (isJsonLogicBetweenExclusive(logic["!"]) || require_isRuleGroup.isRuleGroupType(rule)) return {
77
+ } else if (isJsonLogicBetweenExclusive(logic["!"]) || require_objectUtils.isRuleGroupType(rule)) return {
78
78
  ...rule,
79
79
  not: true
80
80
  };
@@ -93,10 +93,10 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
93
93
  let valueSource = void 0;
94
94
  if (isJsonLogicEqual(logic) || isJsonLogicStrictEqual(logic) || isJsonLogicNotEqual(logic) || isJsonLogicStrictNotEqual(logic) || isJsonLogicGreaterThan(logic) || isJsonLogicGreaterThanOrEqual(logic) || isJsonLogicLessThan(logic) || isJsonLogicLessThanOrEqual(logic) || isJsonLogicInString(logic) || isRQBJsonLogicStartsWith(logic) || isRQBJsonLogicEndsWith(logic)) {
95
95
  const [first, second] = keyValue;
96
- if (isRQBJsonLogicVar(first) && !require_isRuleGroup.isPojo(second)) {
96
+ if (isRQBJsonLogicVar(first) && !require_objectUtils.isPojo(second)) {
97
97
  field = first.var;
98
98
  value = second;
99
- } else if (!require_isRuleGroup.isPojo(first) && isRQBJsonLogicVar(second)) {
99
+ } else if (!require_objectUtils.isPojo(first) && isRQBJsonLogicVar(second)) {
100
100
  field = second.var;
101
101
  value = first;
102
102
  } else if (isRQBJsonLogicVar(first) && isRQBJsonLogicVar(second)) {
@@ -125,7 +125,7 @@ function parseJsonLogic(rqbJsonLogic, options = {}) {
125
125
  field: fld,
126
126
  operator: "=",
127
127
  match,
128
- value: require_isRuleGroup.isRuleGroup(matcher) ? matcher : {
128
+ value: require_objectUtils.isRuleGroup(matcher) ? matcher : {
129
129
  combinator: "and",
130
130
  rules: [matcher]
131
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parseJsonLogic.js","names":["isPojo","getFieldsArray","fieldIsValidUtil","isPojo","objectKeys","isRuleGroup","isRuleGroupType","defaultOperatorNegationMap","joinWith","prepareRuleGroup","convertToIC"],"sources":["../src/utils/parseJsonLogic/utils.ts","../src/utils/parseJsonLogic/parseJsonLogic.ts"],"sourcesContent":["import type {\n JsonLogicAll,\n JsonLogicAnd,\n JsonLogicDoubleNegation,\n JsonLogicEqual,\n JsonLogicGreaterThan,\n JsonLogicGreaterThanOrEqual,\n JsonLogicInArray,\n JsonLogicInString,\n JsonLogicLessThan,\n JsonLogicLessThanOrEqual,\n JsonLogicNegation,\n JsonLogicNone,\n JsonLogicNotEqual,\n JsonLogicOr,\n JsonLogicSome,\n JsonLogicStrictEqual,\n JsonLogicStrictNotEqual,\n JsonLogicVar,\n RQBJsonLogicEndsWith,\n RQBJsonLogicStartsWith,\n RQBJsonLogicVar,\n} from '../../types';\nimport { isPojo } from '../misc';\nimport type { JsonLogicBetweenExclusive, JsonLogicBetweenInclusive } from './types';\n\n// Standard JsonLogic operations\nexport const isJsonLogicVar = (\n logic: unknown\n): logic is JsonLogicVar<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'var' in logic;\nexport const isRQBJsonLogicVar = (logic: unknown): logic is RQBJsonLogicVar =>\n isJsonLogicVar(logic) && typeof logic.var === 'string';\nexport const isJsonLogicEqual = (logic: unknown): logic is JsonLogicEqual =>\n isPojo(logic) && '==' in logic;\nexport const isJsonLogicStrictEqual = (logic: unknown): logic is JsonLogicStrictEqual =>\n isPojo(logic) && '===' in logic;\nexport const isJsonLogicNotEqual = (logic: unknown): logic is JsonLogicNotEqual =>\n isPojo(logic) && '!=' in logic;\nexport const isJsonLogicStrictNotEqual = (logic: unknown): logic is JsonLogicStrictNotEqual =>\n isPojo(logic) && '!==' in logic;\nexport const isJsonLogicNegation = (logic: unknown): logic is JsonLogicNegation =>\n isPojo(logic) && '!' in logic;\nexport const isJsonLogicDoubleNegation = (logic: unknown): logic is JsonLogicDoubleNegation =>\n isPojo(logic) && '!!' in logic;\nexport const isJsonLogicOr = (\n logic: unknown\n): logic is JsonLogicOr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'or' in logic;\nexport const isJsonLogicAnd = (\n logic: unknown\n): logic is JsonLogicAnd<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'and' in logic;\nexport const isJsonLogicGreaterThan = (\n logic: unknown\n): logic is JsonLogicGreaterThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '>' in logic;\nexport const isJsonLogicGreaterThanOrEqual = (\n logic: unknown\n): logic is JsonLogicGreaterThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '>=' in logic;\nexport const isJsonLogicLessThan = (\n logic: unknown\n): logic is JsonLogicLessThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '<' in logic && logic['<'].length === 2;\nexport const isJsonLogicLessThanOrEqual = (\n logic: unknown\n): logic is JsonLogicLessThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '<=' in logic && logic['<='].length === 2;\nexport const isJsonLogicInArray = (\n logic: unknown\n): logic is JsonLogicInArray<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'in' in logic && Array.isArray(logic.in[1]);\nexport const isJsonLogicInString = (\n logic: unknown\n): logic is JsonLogicInString<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'in' in logic && !Array.isArray(logic.in[1]);\nexport const isJsonLogicAll = (\n logic: unknown\n): logic is JsonLogicAll<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'all' in logic;\nexport const isJsonLogicNone = (\n logic: unknown\n): logic is JsonLogicNone<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'none' in logic;\nexport const isJsonLogicSome = (\n logic: unknown\n): logic is JsonLogicSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'some' in logic;\n\n// \"Between\" operations are special cases of '<' and '<='\nexport const isJsonLogicBetweenExclusive = (logic: unknown): logic is JsonLogicBetweenExclusive =>\n isPojo(logic) && '<' in logic && Array.isArray(logic['<']) && logic['<'].length === 3;\nexport const isJsonLogicBetweenInclusive = (logic: unknown): logic is JsonLogicBetweenInclusive =>\n isPojo(logic) && '<=' in logic && Array.isArray(logic['<=']) && logic['<='].length === 3;\n\n// RQB extensions\nexport const isRQBJsonLogicStartsWith = (logic: unknown): logic is RQBJsonLogicStartsWith =>\n isPojo(logic) && 'startsWith' in logic;\nexport const isRQBJsonLogicEndsWith = (logic: unknown): logic is RQBJsonLogicEndsWith =>\n isPojo(logic) && 'endsWith' in logic;\n\n// Type guards for unused JsonLogic operations\n\n// import type {\n// JsonLogicCat,\n// JsonLogicDifference,\n// JsonLogicFilter,\n// JsonLogicIf,\n// JsonLogicLog,\n// JsonLogicMap,\n// JsonLogicMax,\n// JsonLogicMerge,\n// JsonLogicMin,\n// JsonLogicMissing,\n// JsonLogicMissingSome,\n// JsonLogicProduct,\n// JsonLogicQuotient,\n// JsonLogicReduce,\n// JsonLogicRemainder,\n// JsonLogicSubstr,\n// JsonLogicSum,\n// } from '../../types';\n//\n// export const isJsonLogicMissing = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMissing<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'missing' in logic;\n// export const isJsonLogicMissingSome = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMissingSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'missing_some' in logic;\n// export const isJsonLogicIf = (logic: RQBJsonLogic): logic is JsonLogicIf =>\n// isPojo(logic) && 'if' in logic;\n// export const isJsonLogicMax = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMax<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'max' in logic;\n// export const isJsonLogicMin = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMin<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'min' in logic;\n// export const isJsonLogicSum = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicSum<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '+' in logic;\n// export const isJsonLogicDifference = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicDifference<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '-' in logic;\n// export const isJsonLogicProduct = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicProduct<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '*' in logic;\n// export const isJsonLogicQuotient = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicQuotient<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '/' in logic;\n// export const isJsonLogicRemainder = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicRemainder<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '%' in logic;\n// export const isJsonLogicMap = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMap<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'map' in logic;\n// export const isJsonLogicFilter = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicFilter<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'filter' in logic;\n// export const isJsonLogicReduce = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicReduce<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'reduce' in logic;\n// export const isJsonLogicMerge = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMerge<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'merge' in logic;\n// export const isJsonLogicCat = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicCat<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'cat' in logic;\n// export const isJsonLogicSubstr = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicSubstr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'substr' in logic;\n// export const isJsonLogicLog = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicLog<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'log' in logic;\n","import type { Except } from 'type-fest';\nimport { defaultOperatorNegationMap } from '../../defaults';\nimport type {\n DefaultOperatorName,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n MatchConfig,\n RQBJsonLogic,\n RQBJsonLogicVar,\n RuleGroupTypeAny,\n RuleType,\n ValueSource,\n} from '../../types';\nimport type { ParserCommonOptions } from '../../types/import';\nimport { joinWith } from '../arrayUtils';\nimport { convertToIC } from '../convertQuery';\nimport { isRuleGroup, isRuleGroupType } from '../isRuleGroup';\nimport { isPojo } from '../misc';\nimport { objectKeys } from '../objectUtils';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { prepareRuleGroup } from '../prepareQueryObjects';\nimport {\n isJsonLogicAll,\n isJsonLogicAnd,\n isJsonLogicBetweenExclusive,\n isJsonLogicBetweenInclusive,\n isJsonLogicDoubleNegation,\n isJsonLogicEqual,\n isJsonLogicGreaterThan,\n isJsonLogicGreaterThanOrEqual,\n isJsonLogicInArray,\n isJsonLogicInString,\n isJsonLogicLessThan,\n isJsonLogicLessThanOrEqual,\n isJsonLogicNegation,\n isJsonLogicNone,\n isJsonLogicNotEqual,\n isJsonLogicOr,\n isJsonLogicSome,\n isJsonLogicStrictEqual,\n isJsonLogicStrictNotEqual,\n isRQBJsonLogicEndsWith,\n isRQBJsonLogicStartsWith,\n isRQBJsonLogicVar,\n} from './utils';\n\n/**\n * Options object for {@link parseJsonLogic}.\n */\nexport interface ParseJsonLogicOptions extends ParserCommonOptions {\n // oxlint-disable-next-line typescript/no-explicit-any\n jsonLogicOperations?: Record<string, (value: any) => RuleType | RuleGroupTypeAny | false>;\n}\n\nconst emptyRuleGroup: DefaultRuleGroupType = { combinator: 'and', rules: [] };\n\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJsonLogic(rqbJsonLogic: string | RQBJsonLogic): DefaultRuleGroupType;\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: Except<ParseJsonLogicOptions, 'independentCombinators'> & {\n independentCombinators?: false;\n }\n): DefaultRuleGroupType;\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupTypeIC DefaultRuleGroupTypeIC}).\n */\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: Except<ParseJsonLogicOptions, 'independentCombinators'> & {\n independentCombinators: true;\n }\n): DefaultRuleGroupTypeIC;\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: ParseJsonLogicOptions = {}\n): DefaultRuleGroupTypeAny {\n const fieldsFlat = getFieldsArray(options.fields);\n const { getValueSources, listsAsArrays, jsonLogicOperations } = options;\n\n const fieldIsValid = (\n fieldName: string,\n operator: DefaultOperatorName,\n subordinateFieldName?: string\n ) =>\n fieldIsValidUtil({\n fieldName,\n fieldsFlat,\n operator,\n subordinateFieldName,\n getValueSources,\n });\n\n // Overload 1: Always return a rule group or false for the outermost logic object\n function processLogic(logic: RQBJsonLogic, outermost: true): DefaultRuleGroupType | false;\n // Overload 2: If not the outermost object, return value could also be a rule\n function processLogic(\n logic: RQBJsonLogic,\n outermost?: false\n ): DefaultRuleGroupType | DefaultRuleType | false;\n // Implementation\n function processLogic(\n logic: RQBJsonLogic,\n outermost?: boolean\n ): DefaultRuleGroupType | DefaultRuleType | false {\n // Bail if the outermost logic is not a plain object\n if (outermost && !isPojo(logic)) {\n return false;\n }\n const [key, keyValue] = Object.entries(logic || {})?.[0] ?? [];\n\n // Custom operations process logic\n if (jsonLogicOperations && objectKeys(jsonLogicOperations).includes(key)) {\n const rule = jsonLogicOperations[key](keyValue) as DefaultRuleType;\n return rule\n ? outermost && !isRuleGroup(rule)\n ? { combinator: 'and', rules: [rule] }\n : rule\n : false;\n }\n\n // Rule groups\n if (isJsonLogicAnd(logic)) {\n return {\n combinator: 'and',\n rules: logic.and.map(l => processLogic(l)).filter(Boolean) as (\n | DefaultRuleType\n | DefaultRuleGroupType\n )[],\n };\n } else if (isJsonLogicOr(logic)) {\n return {\n combinator: 'or',\n rules: logic.or.map(l => processLogic(l)).filter(Boolean) as (\n | DefaultRuleType\n | DefaultRuleGroupType\n )[],\n };\n } else if (isJsonLogicNegation(logic)) {\n const rule = processLogic(logic['!']);\n if (rule) {\n if (\n !isRuleGroupType(rule) &&\n (rule.operator === 'between' ||\n rule.operator === 'in' ||\n rule.operator === 'contains' ||\n rule.operator === 'beginsWith' ||\n rule.operator === 'endsWith')\n ) {\n const newRule = { ...rule, operator: defaultOperatorNegationMap[rule.operator] };\n if (outermost) {\n return { combinator: 'and', rules: [newRule] };\n }\n return newRule;\n } else if (isJsonLogicBetweenExclusive(logic['!']) || isRuleGroupType(rule)) {\n return { ...rule, not: true };\n }\n return { combinator: 'and', rules: [rule], not: true };\n }\n return false;\n } else if (isJsonLogicDoubleNegation(logic)) {\n const rule = processLogic(logic['!!']);\n return rule || false;\n }\n\n // All other keys represent rules\n let rule: DefaultRuleType | false = false;\n let field = '';\n let operator: DefaultOperatorName = '=';\n // oxlint-disable-next-line typescript/no-explicit-any\n let value: any = '';\n let valueSource: ValueSource | undefined = undefined;\n\n if (\n // Basic boolean operations\n isJsonLogicEqual(logic) ||\n isJsonLogicStrictEqual(logic) ||\n isJsonLogicNotEqual(logic) ||\n isJsonLogicStrictNotEqual(logic) ||\n isJsonLogicGreaterThan(logic) ||\n isJsonLogicGreaterThanOrEqual(logic) ||\n isJsonLogicLessThan(logic) ||\n isJsonLogicLessThanOrEqual(logic) ||\n isJsonLogicInString(logic) ||\n isRQBJsonLogicStartsWith(logic) ||\n isRQBJsonLogicEndsWith(logic)\n ) {\n const [first, second] = keyValue;\n if (isRQBJsonLogicVar(first) && !isPojo(second)) {\n field = first.var;\n value = second;\n } else if (!isPojo(first) && isRQBJsonLogicVar(second)) {\n field = second.var;\n value = first;\n } else if (isRQBJsonLogicVar(first) && isRQBJsonLogicVar(second)) {\n field = first.var;\n value = second.var;\n valueSource = 'field';\n } else {\n return false;\n }\n\n // Translate operator if necessary\n if (isJsonLogicEqual(logic) || isJsonLogicStrictEqual(logic)) {\n operator = value === null ? 'null' : '=';\n } else if (isJsonLogicNotEqual(logic) || isJsonLogicStrictNotEqual(logic)) {\n operator = value === null ? 'notNull' : '!=';\n } else if (isJsonLogicInString(logic)) {\n operator = 'contains';\n } else if (isRQBJsonLogicStartsWith(logic)) {\n operator = 'beginsWith';\n } else if (isRQBJsonLogicEndsWith(logic)) {\n operator = 'endsWith';\n } else {\n operator = key as DefaultOperatorName;\n }\n\n if (fieldIsValid(field, operator, valueSource === 'field' ? value : undefined)) {\n rule = { field, operator, value, valueSource };\n }\n } else if (\n (isJsonLogicAll(logic) && isRQBJsonLogicVar(logic['all'][0])) ||\n (isJsonLogicNone(logic) && isRQBJsonLogicVar(logic['none'][0])) ||\n (isJsonLogicSome(logic) && isRQBJsonLogicVar(logic['some'][0]))\n ) {\n // The array coverage functions must have a field as their first element.\n // Otherwise we'd be comparing values to values, which is not supported.\n const match: MatchConfig = {\n mode: isJsonLogicNone(logic) ? 'none' : isJsonLogicSome(logic) ? 'some' : 'all',\n };\n\n // oxlint-disable-next-line typescript/no-explicit-any\n const [{ var: fld }, operation] = (logic as any)[match.mode];\n const matcher = processLogic(operation);\n\n // TODO: Support operations that evaluate array member properties\n if (!matcher) return false;\n\n rule = {\n field: fld,\n operator: '=',\n match,\n value: isRuleGroup(matcher) ? matcher : { combinator: 'and', rules: [matcher] },\n };\n } else if (isJsonLogicBetweenExclusive(logic) && isRQBJsonLogicVar(logic['<'][1])) {\n field = logic['<'][1].var;\n const values = [logic['<'][0], logic['<'][2]];\n // istanbul ignore else\n if (\n values.every(v => isRQBJsonLogicVar(v)) ||\n values.every(el => typeof el === 'string') ||\n values.every(el => typeof el === 'number') ||\n values.every(el => typeof el === 'boolean')\n ) {\n return (\n processLogic({\n and: [{ '>': [{ var: field }, values[0]] }, { '<': [{ var: field }, values[1]] }],\n }) || /* istanbul ignore next */ false\n );\n }\n } else if (isJsonLogicBetweenInclusive(logic) && isRQBJsonLogicVar(logic['<='][1])) {\n field = logic['<='][1].var;\n operator = 'between';\n const values = [logic['<='][0], logic['<='][2]];\n if (logic['<='].every(v => isRQBJsonLogicVar(v))) {\n const vars = values as RQBJsonLogicVar[];\n valueSource = 'field';\n const fieldList = vars.map(el => el.var).filter(sf => fieldIsValid(field, operator, sf));\n value = listsAsArrays ? fieldList : joinWith(fieldList, ',');\n } else {\n // istanbul ignore else\n if (\n values.every(el => typeof el === 'string') ||\n values.every(el => typeof el === 'number') ||\n values.every(el => typeof el === 'boolean')\n ) {\n value = listsAsArrays\n ? values\n : joinWith(\n values.map(el => `${el}`),\n ','\n );\n }\n }\n\n if (fieldIsValid(field, operator) && value.length >= 2) {\n rule = { field, operator, value, valueSource };\n }\n } else if (isJsonLogicInArray(logic) && isRQBJsonLogicVar(keyValue[0])) {\n field = keyValue[0].var;\n operator = 'in';\n if (logic.in[1].every(v => isRQBJsonLogicVar(v))) {\n valueSource = 'field';\n const fieldList = logic.in[1]\n .map(el => el.var)\n .filter(sf => fieldIsValid(field, operator, sf));\n value = listsAsArrays ? fieldList : joinWith(fieldList, ',');\n } else {\n // istanbul ignore else\n if (\n logic.in[1].every(el => typeof el === 'string') ||\n logic.in[1].every(el => typeof el === 'number') ||\n logic.in[1].every(el => typeof el === 'boolean')\n ) {\n value = listsAsArrays\n ? logic.in[1]\n : joinWith(\n logic.in[1].map(el => `${el}`),\n ','\n );\n }\n }\n\n // istanbul ignore else\n if (value.length > 0) {\n rule = { field, operator, value, valueSource };\n }\n }\n\n return rule ? (outermost ? { combinator: 'and', rules: [rule] } : rule) : false;\n }\n\n const prepare = options.generateIDs ? prepareRuleGroup : <T>(g: T) => g;\n\n let logicRoot = rqbJsonLogic;\n if (typeof rqbJsonLogic === 'string') {\n try {\n logicRoot = JSON.parse(rqbJsonLogic);\n } catch {\n return prepare(emptyRuleGroup);\n }\n }\n\n const result = processLogic(logicRoot, true);\n const finalQuery: DefaultRuleGroupType = result || emptyRuleGroup;\n return prepare(\n options.independentCombinators ? convertToIC<DefaultRuleGroupTypeIC>(finalQuery) : finalQuery\n );\n}\n\nexport { parseJsonLogic };\n"],"mappings":"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"}
1
+ {"version":3,"file":"parseJsonLogic.js","names":["isPojo","getFieldsArray","fieldIsValidUtil","isPojo","objectKeys","isRuleGroup","isRuleGroupType","defaultOperatorNegationMap","joinWith","prepareRuleGroup","convertToIC"],"sources":["../src/utils/parseJsonLogic/utils.ts","../src/utils/parseJsonLogic/parseJsonLogic.ts"],"sourcesContent":["import type {\n JsonLogicAll,\n JsonLogicAnd,\n JsonLogicDoubleNegation,\n JsonLogicEqual,\n JsonLogicGreaterThan,\n JsonLogicGreaterThanOrEqual,\n JsonLogicInArray,\n JsonLogicInString,\n JsonLogicLessThan,\n JsonLogicLessThanOrEqual,\n JsonLogicNegation,\n JsonLogicNone,\n JsonLogicNotEqual,\n JsonLogicOr,\n JsonLogicSome,\n JsonLogicStrictEqual,\n JsonLogicStrictNotEqual,\n JsonLogicVar,\n RQBJsonLogicEndsWith,\n RQBJsonLogicStartsWith,\n RQBJsonLogicVar,\n} from '../../types';\nimport { isPojo } from '../misc';\nimport type { JsonLogicBetweenExclusive, JsonLogicBetweenInclusive } from './types';\n\n// Standard JsonLogic operations\nexport const isJsonLogicVar = (\n logic: unknown\n): logic is JsonLogicVar<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'var' in logic;\nexport const isRQBJsonLogicVar = (logic: unknown): logic is RQBJsonLogicVar =>\n isJsonLogicVar(logic) && typeof logic.var === 'string';\nexport const isJsonLogicEqual = (logic: unknown): logic is JsonLogicEqual =>\n isPojo(logic) && '==' in logic;\nexport const isJsonLogicStrictEqual = (logic: unknown): logic is JsonLogicStrictEqual =>\n isPojo(logic) && '===' in logic;\nexport const isJsonLogicNotEqual = (logic: unknown): logic is JsonLogicNotEqual =>\n isPojo(logic) && '!=' in logic;\nexport const isJsonLogicStrictNotEqual = (logic: unknown): logic is JsonLogicStrictNotEqual =>\n isPojo(logic) && '!==' in logic;\nexport const isJsonLogicNegation = (logic: unknown): logic is JsonLogicNegation =>\n isPojo(logic) && '!' in logic;\nexport const isJsonLogicDoubleNegation = (logic: unknown): logic is JsonLogicDoubleNegation =>\n isPojo(logic) && '!!' in logic;\nexport const isJsonLogicOr = (\n logic: unknown\n): logic is JsonLogicOr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'or' in logic;\nexport const isJsonLogicAnd = (\n logic: unknown\n): logic is JsonLogicAnd<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'and' in logic;\nexport const isJsonLogicGreaterThan = (\n logic: unknown\n): logic is JsonLogicGreaterThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '>' in logic;\nexport const isJsonLogicGreaterThanOrEqual = (\n logic: unknown\n): logic is JsonLogicGreaterThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '>=' in logic;\nexport const isJsonLogicLessThan = (\n logic: unknown\n): logic is JsonLogicLessThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '<' in logic && logic['<'].length === 2;\nexport const isJsonLogicLessThanOrEqual = (\n logic: unknown\n): logic is JsonLogicLessThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && '<=' in logic && logic['<='].length === 2;\nexport const isJsonLogicInArray = (\n logic: unknown\n): logic is JsonLogicInArray<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'in' in logic && Array.isArray(logic.in[1]);\nexport const isJsonLogicInString = (\n logic: unknown\n): logic is JsonLogicInString<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'in' in logic && !Array.isArray(logic.in[1]);\nexport const isJsonLogicAll = (\n logic: unknown\n): logic is JsonLogicAll<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'all' in logic;\nexport const isJsonLogicNone = (\n logic: unknown\n): logic is JsonLogicNone<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'none' in logic;\nexport const isJsonLogicSome = (\n logic: unknown\n): logic is JsonLogicSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n isPojo(logic) && 'some' in logic;\n\n// \"Between\" operations are special cases of '<' and '<='\nexport const isJsonLogicBetweenExclusive = (logic: unknown): logic is JsonLogicBetweenExclusive =>\n isPojo(logic) && '<' in logic && Array.isArray(logic['<']) && logic['<'].length === 3;\nexport const isJsonLogicBetweenInclusive = (logic: unknown): logic is JsonLogicBetweenInclusive =>\n isPojo(logic) && '<=' in logic && Array.isArray(logic['<=']) && logic['<='].length === 3;\n\n// RQB extensions\nexport const isRQBJsonLogicStartsWith = (logic: unknown): logic is RQBJsonLogicStartsWith =>\n isPojo(logic) && 'startsWith' in logic;\nexport const isRQBJsonLogicEndsWith = (logic: unknown): logic is RQBJsonLogicEndsWith =>\n isPojo(logic) && 'endsWith' in logic;\n\n// Type guards for unused JsonLogic operations\n\n// import type {\n// JsonLogicCat,\n// JsonLogicDifference,\n// JsonLogicFilter,\n// JsonLogicIf,\n// JsonLogicLog,\n// JsonLogicMap,\n// JsonLogicMax,\n// JsonLogicMerge,\n// JsonLogicMin,\n// JsonLogicMissing,\n// JsonLogicMissingSome,\n// JsonLogicProduct,\n// JsonLogicQuotient,\n// JsonLogicReduce,\n// JsonLogicRemainder,\n// JsonLogicSubstr,\n// JsonLogicSum,\n// } from '../../types';\n//\n// export const isJsonLogicMissing = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMissing<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'missing' in logic;\n// export const isJsonLogicMissingSome = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMissingSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'missing_some' in logic;\n// export const isJsonLogicIf = (logic: RQBJsonLogic): logic is JsonLogicIf =>\n// isPojo(logic) && 'if' in logic;\n// export const isJsonLogicMax = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMax<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'max' in logic;\n// export const isJsonLogicMin = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMin<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'min' in logic;\n// export const isJsonLogicSum = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicSum<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '+' in logic;\n// export const isJsonLogicDifference = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicDifference<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '-' in logic;\n// export const isJsonLogicProduct = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicProduct<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '*' in logic;\n// export const isJsonLogicQuotient = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicQuotient<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '/' in logic;\n// export const isJsonLogicRemainder = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicRemainder<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && '%' in logic;\n// export const isJsonLogicMap = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMap<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'map' in logic;\n// export const isJsonLogicFilter = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicFilter<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'filter' in logic;\n// export const isJsonLogicReduce = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicReduce<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'reduce' in logic;\n// export const isJsonLogicMerge = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicMerge<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'merge' in logic;\n// export const isJsonLogicCat = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicCat<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'cat' in logic;\n// export const isJsonLogicSubstr = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicSubstr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'substr' in logic;\n// export const isJsonLogicLog = (\n// logic: RQBJsonLogic\n// ): logic is JsonLogicLog<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n// isPojo(logic) && 'log' in logic;\n","import type { Except } from 'type-fest';\nimport { defaultOperatorNegationMap } from '../../defaults';\nimport type {\n DefaultOperatorName,\n DefaultRuleGroupType,\n DefaultRuleGroupTypeAny,\n DefaultRuleGroupTypeIC,\n DefaultRuleType,\n MatchConfig,\n RQBJsonLogic,\n RQBJsonLogicVar,\n RuleGroupTypeAny,\n RuleType,\n ValueSource,\n} from '../../types';\nimport type { ParserCommonOptions } from '../../types/import';\nimport { joinWith } from '../arrayUtils';\nimport { convertToIC } from '../convertQuery';\nimport { isRuleGroup, isRuleGroupType } from '../isRuleGroup';\nimport { isPojo } from '../misc';\nimport { objectKeys } from '../objectUtils';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { prepareRuleGroup } from '../prepareQueryObjects';\nimport {\n isJsonLogicAll,\n isJsonLogicAnd,\n isJsonLogicBetweenExclusive,\n isJsonLogicBetweenInclusive,\n isJsonLogicDoubleNegation,\n isJsonLogicEqual,\n isJsonLogicGreaterThan,\n isJsonLogicGreaterThanOrEqual,\n isJsonLogicInArray,\n isJsonLogicInString,\n isJsonLogicLessThan,\n isJsonLogicLessThanOrEqual,\n isJsonLogicNegation,\n isJsonLogicNone,\n isJsonLogicNotEqual,\n isJsonLogicOr,\n isJsonLogicSome,\n isJsonLogicStrictEqual,\n isJsonLogicStrictNotEqual,\n isRQBJsonLogicEndsWith,\n isRQBJsonLogicStartsWith,\n isRQBJsonLogicVar,\n} from './utils';\n\n/**\n * Options object for {@link parseJsonLogic}.\n */\nexport interface ParseJsonLogicOptions extends ParserCommonOptions {\n // oxlint-disable-next-line typescript/no-explicit-any\n jsonLogicOperations?: Record<string, (value: any) => RuleType | RuleGroupTypeAny | false>;\n}\n\nconst emptyRuleGroup: DefaultRuleGroupType = { combinator: 'and', rules: [] };\n\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJsonLogic(rqbJsonLogic: string | RQBJsonLogic): DefaultRuleGroupType;\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupType DefaultRuleGroupType}).\n */\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: Except<ParseJsonLogicOptions, 'independentCombinators'> & {\n independentCombinators?: false;\n }\n): DefaultRuleGroupType;\n/**\n * Converts a JsonLogic object into a query suitable for the\n * {@link index!QueryBuilder QueryBuilder} component's `query` or `defaultQuery` props\n * ({@link index!DefaultRuleGroupTypeIC DefaultRuleGroupTypeIC}).\n */\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: Except<ParseJsonLogicOptions, 'independentCombinators'> & {\n independentCombinators: true;\n }\n): DefaultRuleGroupTypeIC;\nfunction parseJsonLogic(\n rqbJsonLogic: string | RQBJsonLogic,\n options: ParseJsonLogicOptions = {}\n): DefaultRuleGroupTypeAny {\n const fieldsFlat = getFieldsArray(options.fields);\n const { getValueSources, listsAsArrays, jsonLogicOperations } = options;\n\n const fieldIsValid = (\n fieldName: string,\n operator: DefaultOperatorName,\n subordinateFieldName?: string\n ) =>\n fieldIsValidUtil({\n fieldName,\n fieldsFlat,\n operator,\n subordinateFieldName,\n getValueSources,\n });\n\n // Overload 1: Always return a rule group or false for the outermost logic object\n function processLogic(logic: RQBJsonLogic, outermost: true): DefaultRuleGroupType | false;\n // Overload 2: If not the outermost object, return value could also be a rule\n function processLogic(\n logic: RQBJsonLogic,\n outermost?: false\n ): DefaultRuleGroupType | DefaultRuleType | false;\n // Implementation\n function processLogic(\n logic: RQBJsonLogic,\n outermost?: boolean\n ): DefaultRuleGroupType | DefaultRuleType | false {\n // Bail if the outermost logic is not a plain object\n if (outermost && !isPojo(logic)) {\n return false;\n }\n const [key, keyValue] = Object.entries(logic || {})?.[0] ?? [];\n\n // Custom operations process logic\n if (jsonLogicOperations && objectKeys(jsonLogicOperations).includes(key)) {\n const rule = jsonLogicOperations[key](keyValue) as DefaultRuleType;\n return rule\n ? outermost && !isRuleGroup(rule)\n ? { combinator: 'and', rules: [rule] }\n : rule\n : false;\n }\n\n // Rule groups\n if (isJsonLogicAnd(logic)) {\n return {\n combinator: 'and',\n rules: logic.and.map(l => processLogic(l)).filter(Boolean) as (\n | DefaultRuleType\n | DefaultRuleGroupType\n )[],\n };\n } else if (isJsonLogicOr(logic)) {\n return {\n combinator: 'or',\n rules: logic.or.map(l => processLogic(l)).filter(Boolean) as (\n | DefaultRuleType\n | DefaultRuleGroupType\n )[],\n };\n } else if (isJsonLogicNegation(logic)) {\n const rule = processLogic(logic['!']);\n if (rule) {\n if (\n !isRuleGroupType(rule) &&\n (rule.operator === 'between' ||\n rule.operator === 'in' ||\n rule.operator === 'contains' ||\n rule.operator === 'beginsWith' ||\n rule.operator === 'endsWith')\n ) {\n const newRule = { ...rule, operator: defaultOperatorNegationMap[rule.operator] };\n if (outermost) {\n return { combinator: 'and', rules: [newRule] };\n }\n return newRule;\n } else if (isJsonLogicBetweenExclusive(logic['!']) || isRuleGroupType(rule)) {\n return { ...rule, not: true };\n }\n return { combinator: 'and', rules: [rule], not: true };\n }\n return false;\n } else if (isJsonLogicDoubleNegation(logic)) {\n const rule = processLogic(logic['!!']);\n return rule || false;\n }\n\n // All other keys represent rules\n let rule: DefaultRuleType | false = false;\n let field = '';\n let operator: DefaultOperatorName = '=';\n // oxlint-disable-next-line typescript/no-explicit-any\n let value: any = '';\n let valueSource: ValueSource | undefined = undefined;\n\n if (\n // Basic boolean operations\n isJsonLogicEqual(logic) ||\n isJsonLogicStrictEqual(logic) ||\n isJsonLogicNotEqual(logic) ||\n isJsonLogicStrictNotEqual(logic) ||\n isJsonLogicGreaterThan(logic) ||\n isJsonLogicGreaterThanOrEqual(logic) ||\n isJsonLogicLessThan(logic) ||\n isJsonLogicLessThanOrEqual(logic) ||\n isJsonLogicInString(logic) ||\n isRQBJsonLogicStartsWith(logic) ||\n isRQBJsonLogicEndsWith(logic)\n ) {\n const [first, second] = keyValue;\n if (isRQBJsonLogicVar(first) && !isPojo(second)) {\n field = first.var;\n value = second;\n } else if (!isPojo(first) && isRQBJsonLogicVar(second)) {\n field = second.var;\n value = first;\n } else if (isRQBJsonLogicVar(first) && isRQBJsonLogicVar(second)) {\n field = first.var;\n value = second.var;\n valueSource = 'field';\n } else {\n return false;\n }\n\n // Translate operator if necessary\n if (isJsonLogicEqual(logic) || isJsonLogicStrictEqual(logic)) {\n operator = value === null ? 'null' : '=';\n } else if (isJsonLogicNotEqual(logic) || isJsonLogicStrictNotEqual(logic)) {\n operator = value === null ? 'notNull' : '!=';\n } else if (isJsonLogicInString(logic)) {\n operator = 'contains';\n } else if (isRQBJsonLogicStartsWith(logic)) {\n operator = 'beginsWith';\n } else if (isRQBJsonLogicEndsWith(logic)) {\n operator = 'endsWith';\n } else {\n operator = key as DefaultOperatorName;\n }\n\n if (fieldIsValid(field, operator, valueSource === 'field' ? value : undefined)) {\n rule = { field, operator, value, valueSource };\n }\n } else if (\n (isJsonLogicAll(logic) && isRQBJsonLogicVar(logic['all'][0])) ||\n (isJsonLogicNone(logic) && isRQBJsonLogicVar(logic['none'][0])) ||\n (isJsonLogicSome(logic) && isRQBJsonLogicVar(logic['some'][0]))\n ) {\n // The array coverage functions must have a field as their first element.\n // Otherwise we'd be comparing values to values, which is not supported.\n const match: MatchConfig = {\n mode: isJsonLogicNone(logic) ? 'none' : isJsonLogicSome(logic) ? 'some' : 'all',\n };\n\n // oxlint-disable-next-line typescript/no-explicit-any\n const [{ var: fld }, operation] = (logic as any)[match.mode];\n const matcher = processLogic(operation);\n\n // TODO: Support operations that evaluate array member properties\n if (!matcher) return false;\n\n rule = {\n field: fld,\n operator: '=',\n match,\n value: isRuleGroup(matcher) ? matcher : { combinator: 'and', rules: [matcher] },\n };\n } else if (isJsonLogicBetweenExclusive(logic) && isRQBJsonLogicVar(logic['<'][1])) {\n field = logic['<'][1].var;\n const values = [logic['<'][0], logic['<'][2]];\n // istanbul ignore else\n if (\n values.every(v => isRQBJsonLogicVar(v)) ||\n values.every(el => typeof el === 'string') ||\n values.every(el => typeof el === 'number') ||\n values.every(el => typeof el === 'boolean')\n ) {\n return (\n processLogic({\n and: [{ '>': [{ var: field }, values[0]] }, { '<': [{ var: field }, values[1]] }],\n }) || /* istanbul ignore next */ false\n );\n }\n } else if (isJsonLogicBetweenInclusive(logic) && isRQBJsonLogicVar(logic['<='][1])) {\n field = logic['<='][1].var;\n operator = 'between';\n const values = [logic['<='][0], logic['<='][2]];\n if (logic['<='].every(v => isRQBJsonLogicVar(v))) {\n const vars = values as RQBJsonLogicVar[];\n valueSource = 'field';\n const fieldList = vars.map(el => el.var).filter(sf => fieldIsValid(field, operator, sf));\n value = listsAsArrays ? fieldList : joinWith(fieldList, ',');\n } else {\n // istanbul ignore else\n if (\n values.every(el => typeof el === 'string') ||\n values.every(el => typeof el === 'number') ||\n values.every(el => typeof el === 'boolean')\n ) {\n value = listsAsArrays\n ? values\n : joinWith(\n values.map(el => `${el}`),\n ','\n );\n }\n }\n\n if (fieldIsValid(field, operator) && value.length >= 2) {\n rule = { field, operator, value, valueSource };\n }\n } else if (isJsonLogicInArray(logic) && isRQBJsonLogicVar(keyValue[0])) {\n field = keyValue[0].var;\n operator = 'in';\n if (logic.in[1].every(v => isRQBJsonLogicVar(v))) {\n valueSource = 'field';\n const fieldList = logic.in[1]\n .map(el => el.var)\n .filter(sf => fieldIsValid(field, operator, sf));\n value = listsAsArrays ? fieldList : joinWith(fieldList, ',');\n } else {\n // istanbul ignore else\n if (\n logic.in[1].every(el => typeof el === 'string') ||\n logic.in[1].every(el => typeof el === 'number') ||\n logic.in[1].every(el => typeof el === 'boolean')\n ) {\n value = listsAsArrays\n ? logic.in[1]\n : joinWith(\n logic.in[1].map(el => `${el}`),\n ','\n );\n }\n }\n\n // istanbul ignore else\n if (value.length > 0) {\n rule = { field, operator, value, valueSource };\n }\n }\n\n return rule ? (outermost ? { combinator: 'and', rules: [rule] } : rule) : false;\n }\n\n const prepare = options.generateIDs ? prepareRuleGroup : <T>(g: T) => g;\n\n let logicRoot = rqbJsonLogic;\n if (typeof rqbJsonLogic === 'string') {\n try {\n logicRoot = JSON.parse(rqbJsonLogic);\n } catch {\n return prepare(emptyRuleGroup);\n }\n }\n\n const result = processLogic(logicRoot, true);\n const finalQuery: DefaultRuleGroupType = result || emptyRuleGroup;\n return prepare(\n options.independentCombinators ? convertToIC<DefaultRuleGroupTypeIC>(finalQuery) : finalQuery\n );\n}\n\nexport { parseJsonLogic };\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { A as defaultOperatorNegationMap, D as joinWith, T as objectKeys } from "./utils-DQoYnxpa.mjs";
2
- import { i as isPojo, n as isRuleGroupType, t as isRuleGroup } from "./isRuleGroup-LzP0HCKh.mjs";
3
- import { n as convertToIC } from "./convertQuery-B5Qm_6ut.mjs";
4
- import { n as fieldIsValidUtil, r as getFieldsArray, t as prepareRuleGroup } from "./prepareQueryObjects-tMukQHT9.mjs";
1
+ import { E as joinWith, k as defaultOperatorNegationMap } from "./utils-BlMGIhvx.mjs";
2
+ import { i as isRuleGroupType, n as objectKeys, o as isPojo, r as isRuleGroup } from "./objectUtils-C0WB-8ex.mjs";
3
+ import { n as convertToIC } from "./convertQuery-CeJSNn37.mjs";
4
+ import { n as fieldIsValidUtil, r as getFieldsArray, t as prepareRuleGroup } from "./prepareQueryObjects-BfMlS4ql.mjs";
5
5
  //#region src/utils/parseJsonLogic/utils.ts
6
6
  const isJsonLogicVar = (logic) => isPojo(logic) && "var" in logic;
7
7
  const isRQBJsonLogicVar = (logic) => isJsonLogicVar(logic) && typeof logic.var === "string";