{"version":3,"file":"index.cjs","sources":["../node_modules/object-path/index.js","../src/businessRules.js"],"sourcesContent":["(function (root, factory) {\n  'use strict'\n\n  /*istanbul ignore next:cant test*/\n  if (typeof module === 'object' && typeof module.exports === 'object') {\n    module.exports = factory()\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define([], factory)\n  } else {\n    // Browser globals\n    root.objectPath = factory()\n  }\n})(this, function () {\n  'use strict'\n\n  var toStr = Object.prototype.toString\n\n  function hasOwnProperty (obj, prop) {\n    if (obj == null) {\n      return false\n    }\n    //to handle objects with null prototypes (too edge case?)\n    return Object.prototype.hasOwnProperty.call(obj, prop)\n  }\n\n  function isEmpty (value) {\n    if (!value) {\n      return true\n    }\n    if (isArray(value) && value.length === 0) {\n      return true\n    } else if (typeof value !== 'string') {\n      for (var i in value) {\n        if (hasOwnProperty(value, i)) {\n          return false\n        }\n      }\n      return true\n    }\n    return false\n  }\n\n  function toString (type) {\n    return toStr.call(type)\n  }\n\n  function isObject (obj) {\n    return typeof obj === 'object' && toString(obj) === '[object Object]'\n  }\n\n  var isArray = Array.isArray || function (obj) {\n    /*istanbul ignore next:cant test*/\n    return toStr.call(obj) === '[object Array]'\n  }\n\n  function isBoolean (obj) {\n    return typeof obj === 'boolean' || toString(obj) === '[object Boolean]'\n  }\n\n  function getKey (key) {\n    var intKey = parseInt(key)\n    if (intKey.toString() === key) {\n      return intKey\n    }\n    return key\n  }\n\n  function factory (options) {\n    options = options || {}\n\n    var objectPath = function (obj) {\n      return Object.keys(objectPath).reduce(function (proxy, prop) {\n        if (prop === 'create') {\n          return proxy\n        }\n\n        /*istanbul ignore else*/\n        if (typeof objectPath[prop] === 'function') {\n          proxy[prop] = objectPath[prop].bind(objectPath, obj)\n        }\n\n        return proxy\n      }, {})\n    }\n\n    var hasShallowProperty\n    if (options.includeInheritedProps) {\n      hasShallowProperty = function () {\n        return true\n      }\n    } else {\n      hasShallowProperty = function (obj, prop) {\n        return (typeof prop === 'number' && Array.isArray(obj)) || hasOwnProperty(obj, prop)\n      }\n    }\n\n    function getShallowProperty (obj, prop) {\n      if (hasShallowProperty(obj, prop)) {\n        return obj[prop]\n      }\n    }\n\n    var getShallowPropertySafely\n    if (options.includeInheritedProps) {\n      getShallowPropertySafely = function (obj, currentPath) {\n        if (typeof currentPath !== 'string' && typeof currentPath !== 'number') {\n          currentPath = String(currentPath)\n        }\n        var currentValue = getShallowProperty(obj, currentPath)\n        if (currentPath === '__proto__' || currentPath === 'prototype' ||\n          (currentPath === 'constructor' && typeof currentValue === 'function')) {\n          throw new Error('For security reasons, object\\'s magic properties cannot be set')\n        }\n        return currentValue\n      }\n    } else {\n      getShallowPropertySafely = function (obj, currentPath) {\n        return getShallowProperty(obj, currentPath)\n      }\n    }\n\n    function set (obj, path, value, doNotReplace) {\n      if (typeof path === 'number') {\n        path = [path]\n      }\n      if (!path || path.length === 0) {\n        return obj\n      }\n      if (typeof path === 'string') {\n        return set(obj, path.split('.').map(getKey), value, doNotReplace)\n      }\n      var currentPath = path[0]\n      var currentValue = getShallowPropertySafely(obj, currentPath)\n      if (path.length === 1) {\n        if (currentValue === void 0 || !doNotReplace) {\n          obj[currentPath] = value\n        }\n        return currentValue\n      }\n\n      if (currentValue === void 0) {\n        //check if we assume an array\n        if (typeof path[1] === 'number') {\n          obj[currentPath] = []\n        } else {\n          obj[currentPath] = {}\n        }\n      }\n\n      return set(obj[currentPath], path.slice(1), value, doNotReplace)\n    }\n\n    objectPath.has = function (obj, path) {\n      if (typeof path === 'number') {\n        path = [path]\n      } else if (typeof path === 'string') {\n        path = path.split('.')\n      }\n\n      if (!path || path.length === 0) {\n        return !!obj\n      }\n\n      for (var i = 0; i < path.length; i++) {\n        var j = getKey(path[i])\n\n        if ((typeof j === 'number' && isArray(obj) && j < obj.length) ||\n          (options.includeInheritedProps ? (j in Object(obj)) : hasOwnProperty(obj, j))) {\n          obj = obj[j]\n        } else {\n          return false\n        }\n      }\n\n      return true\n    }\n\n    objectPath.ensureExists = function (obj, path, value) {\n      return set(obj, path, value, true)\n    }\n\n    objectPath.set = function (obj, path, value, doNotReplace) {\n      return set(obj, path, value, doNotReplace)\n    }\n\n    objectPath.insert = function (obj, path, value, at) {\n      var arr = objectPath.get(obj, path)\n      at = ~~at\n      if (!isArray(arr)) {\n        arr = []\n        objectPath.set(obj, path, arr)\n      }\n      arr.splice(at, 0, value)\n    }\n\n    objectPath.empty = function (obj, path) {\n      if (isEmpty(path)) {\n        return void 0\n      }\n      if (obj == null) {\n        return void 0\n      }\n\n      var value, i\n      if (!(value = objectPath.get(obj, path))) {\n        return void 0\n      }\n\n      if (typeof value === 'string') {\n        return objectPath.set(obj, path, '')\n      } else if (isBoolean(value)) {\n        return objectPath.set(obj, path, false)\n      } else if (typeof value === 'number') {\n        return objectPath.set(obj, path, 0)\n      } else if (isArray(value)) {\n        value.length = 0\n      } else if (isObject(value)) {\n        for (i in value) {\n          if (hasShallowProperty(value, i)) {\n            delete value[i]\n          }\n        }\n      } else {\n        return objectPath.set(obj, path, null)\n      }\n    }\n\n    objectPath.push = function (obj, path /*, values */) {\n      var arr = objectPath.get(obj, path)\n      if (!isArray(arr)) {\n        arr = []\n        objectPath.set(obj, path, arr)\n      }\n\n      arr.push.apply(arr, Array.prototype.slice.call(arguments, 2))\n    }\n\n    objectPath.coalesce = function (obj, paths, defaultValue) {\n      var value\n\n      for (var i = 0, len = paths.length; i < len; i++) {\n        if ((value = objectPath.get(obj, paths[i])) !== void 0) {\n          return value\n        }\n      }\n\n      return defaultValue\n    }\n\n    objectPath.get = function (obj, path, defaultValue) {\n      if (typeof path === 'number') {\n        path = [path]\n      }\n      if (!path || path.length === 0) {\n        return obj\n      }\n      if (obj == null) {\n        return defaultValue\n      }\n      if (typeof path === 'string') {\n        return objectPath.get(obj, path.split('.'), defaultValue)\n      }\n\n      var currentPath = getKey(path[0])\n      var nextObj = getShallowPropertySafely(obj, currentPath)\n      if (nextObj === void 0) {\n        return defaultValue\n      }\n\n      if (path.length === 1) {\n        return nextObj\n      }\n\n      return objectPath.get(obj[currentPath], path.slice(1), defaultValue)\n    }\n\n    objectPath.del = function del (obj, path) {\n      if (typeof path === 'number') {\n        path = [path]\n      }\n\n      if (obj == null) {\n        return obj\n      }\n\n      if (isEmpty(path)) {\n        return obj\n      }\n      if (typeof path === 'string') {\n        return objectPath.del(obj, path.split('.'))\n      }\n\n      var currentPath = getKey(path[0])\n      getShallowPropertySafely(obj, currentPath)\n      if (!hasShallowProperty(obj, currentPath)) {\n        return obj\n      }\n\n      if (path.length === 1) {\n        if (isArray(obj)) {\n          obj.splice(currentPath, 1)\n        } else {\n          delete obj[currentPath]\n        }\n      } else {\n        return objectPath.del(obj[currentPath], path.slice(1))\n      }\n\n      return obj\n    }\n\n    return objectPath\n  }\n\n  var mod = factory()\n  mod.create = factory\n  mod.withInheritedProps = factory({includeInheritedProps: true})\n  return mod\n})\n","/* eslint-disable max-len */\r\nimport objectPath from 'object-path';\r\n\r\n/**\r\n * Validates a set of rules against a JSON document.\r\n * Now supports arrays referenced in both 'ref' and 'comparisonRef',\r\n * generating contexts for all possible combinations (cartesian product)\r\n * when necessary.\r\n *\r\n * Example with arrays in both fields:\r\n *   ref: 'clients[].age', comparisonRef: 'references[].minAge'\r\n *   => All combinations of clients and references will be evaluated.\r\n *\r\n * Example with only one array field:\r\n *   ref: 'clients[].age', comparisonRef: 'minAge'\r\n *   => Each client will be evaluated against the fixed minAge value.\r\n *\r\n * @param {object} documentJson The JSON document to validate.\r\n * @param {Array<object>} rules The array of rules to validate.\r\n * @param {object|null} contextObj Optional context object. If provided, rules can reference it using '_context.' in their paths.\r\n * @param {object} options Optional settings: { contextLimit: number (default 10000), timeLimit: number (seconds, default 200), returnAllContexts: boolean (default true) }\r\n * @return {Array<object>} An array of objects containing the IDs and types of the rules that passed, along with their contexts.\r\n */\r\nexport function validateRules(documentJson, rules, contextObj = null, options = {}) {\r\n  const rulesObj = JSON.parse(JSON.stringify(rules));\r\n  const contextLimit = options.contextLimit !== undefined ? options.contextLimit : 10000;\r\n  const timeLimit = options.timeLimit !== undefined ? options.timeLimit : 200; // seconds\r\n  const returnAllContexts = options.returnAllContexts !== undefined ? options.returnAllContexts : true;\r\n  const results = [];\r\n  const validRulesByDate = filterRulesByDate(rulesObj);\r\n  const startTime = Date.now();\r\n\r\n  validRulesByDate.forEach((rule) => {\r\n    try {\r\n      const loops = [];\r\n      rule.conditionResultContext = [];\r\n\r\n      processConditionsForLoops(rule, loops);\r\n\r\n      const sortedLoops = sortLoopsByPath(loops);\r\n      if (!validateArrayReferences(sortedLoops, rule)) return;\r\n\r\n      // CONTADOR DE CONTEXTOS E FLAGS DE LIMITE\r\n      const contextCounter = { count: 0, limitReached: false, timeReached: false };\r\n      rule.contexts = explodeContexts(documentJson, rule.conditions, loops, [], contextLimit, startTime, timeLimit, contextCounter);\r\n      rule.contextLimitReached = contextCounter.limitReached;\r\n      rule.timeLimitReached = contextCounter.timeReached;\r\n\r\n      if (rule.contexts.length === 0) {\r\n        rule.conditionsResult = evaluateSimpleConditions(documentJson, rule.conditions, contextObj);\r\n      } else {\r\n        rule.conditionResultContext = evaluateConditionsInContexts(documentJson, rule, loops, contextObj, returnAllContexts);\r\n      }\r\n\r\n      addRuleToResults(rule, results);\r\n      // Adiciona aviso se limite atingido\r\n      if (rule.contextLimitReached || rule.timeLimitReached) {\r\n        results.push({\r\n          id: rule.id,\r\n          type: rule.type,\r\n          message: rule.description,\r\n          keyword: 'context_limit',\r\n          errors: [\r\n            rule.contextLimitReached ? { cause: 'Context limit reached', context: `The number of contexts exceeded the limit (${contextLimit}).` } : null,\r\n            rule.timeLimitReached ? { cause: 'Time limit reached', context: `The time limit of ${timeLimit} seconds was exceeded during context generation.` } : null,\r\n          ].filter(Boolean),\r\n        });\r\n      }\r\n    } catch (error) {\r\n      logError(`Error processing rule [${rule.id}]`, error);\r\n      results.push({\r\n        id: rule.id,\r\n        type: rule.type,\r\n        message: rule.description,\r\n        conditions: rule.conditionsResult?.items || [],\r\n        keyword: 'conditional',\r\n        errors: [\r\n          {\r\n            cause: error.message,\r\n            context: `Error occurred while processing rule [${rule.id}]`,\r\n          },\r\n        ],\r\n      });\r\n    }\r\n  });\r\n\r\n  return results;\r\n}\r\n\r\n/**\r\n * Filters rules based on their validity dates.\r\n * @param {Array<object>} rules The array of rules.\r\n * @return {Array<object>} The filtered rules.\r\n */\r\nfunction filterRulesByDate(rules) {\r\n  return rules.filter((rule) => {\r\n    const isAfterStartDate = rule.initialDate ? new Date(rule.initialDate) <= new Date() : true;\r\n    const isBeforeEndDate = rule.endDate ? new Date(rule.endDate) >= new Date() : true;\r\n    return isAfterStartDate && isBeforeEndDate;\r\n  });\r\n}\r\n\r\n/**\r\n * Identifies and expands loops (arrays) in a rule's conditions.\r\n * Now analyzes both the 'ref' and 'comparisonRef' fields,\r\n * ensuring all referenced arrays are considered in context generation.\r\n *\r\n * Example: If 'ref' references 'clients[]' and 'comparisonRef' references 'references[]',\r\n * both will be considered and the cartesian product of indices will be generated.\r\n *\r\n * @param {object} rule The rule being processed.\r\n * @param {Array<object>} loops The array where identified loops will be stored.\r\n */\r\nfunction processConditionsForLoops(rule, loops) {\r\n  rule.conditions.forEach((condition, conditionIndex) => {\r\n    // Lista de campos a analisar: ref e comparisonRef\r\n    ['ref', 'comparisonRef'].forEach((field) => {\r\n      if (condition[field]) {\r\n        let refValue = condition[field];\r\n        while (refValue.includes('[]')) {\r\n          const {objectName, completeObjectPath} = extractLoopDetails(refValue);\r\n          // Evita duplicidade de loops\r\n          if (!loops.some(loop => loop.completeObjectPath === completeObjectPath)) {\r\n            loops.push({objectName, completeObjectPath, parm: `@${loops.length}`});\r\n          }\r\n          // Atualiza todos os campos ref e comparisonRef das condições\r\n          rule.conditions.forEach((innerCondition) => {\r\n            ['ref', 'comparisonRef'].forEach((innerField) => {\r\n              if (innerCondition[innerField] && innerCondition[innerField].includes(`${objectName}[]`)) {\r\n                innerCondition[innerField] = innerCondition[innerField].replaceAll(\r\n                  `${objectName}[]`,\r\n                  `${objectName}[@${loops.length - 1}]`,\r\n                );\r\n              }\r\n            });\r\n          });\r\n          // Atualiza o valor para continuar o while, se houver mais de um []\r\n          refValue = refValue.replace(`${objectName}[]`, `${objectName}[@${loops.length - 1}]`);\r\n        }\r\n      }\r\n    });\r\n  });\r\n}\r\n\r\n/**\r\n * Extracts details of a loop from a condition value.\r\n * @param {string} value The condition value.\r\n * @return {object} The extracted loop details.\r\n */\r\nfunction extractLoopDetails(value) {\r\n  const completeObjectPath = value.split('[]')[0];\r\n  const lastDotIndex = completeObjectPath.lastIndexOf('.');\r\n  const objectName = completeObjectPath.slice(lastDotIndex + 1);\r\n  return {objectName, completeObjectPath};\r\n}\r\n\r\n/**\r\n * Sorts loops by their complete object paths.\r\n * @param {Array<object>} loops The array of loops.\r\n * @return {Array<object>} The sorted loops.\r\n */\r\nfunction sortLoopsByPath(loops) {\r\n  return loops.sort((a, b) => a.completeObjectPath.localeCompare(b.completeObjectPath));\r\n}\r\n\r\n/**\r\n * Validates array references in loops.\r\n * Now allows any combination of arrays (cartesian product),\r\n * only issuing a warning if there are arrays with the same name but different paths.\r\n * Never blocks the rule.\r\n *\r\n * @param {Array<object>} sortedLoops The sorted loops.\r\n * @param {object} rule The rule being validated.\r\n * @return {boolean} Always returns true.\r\n */\r\nfunction validateArrayReferences(sortedLoops, rule) {\r\n  // Permitir qualquer combinação de arrays (produto cartesiano)\r\n  // Apenas emitir aviso se houver caminhos de array com o mesmo nome mas caminhos diferentes\r\n  const paths = sortedLoops.map(l => l.completeObjectPath);\r\n  const names = sortedLoops.map(l => l.objectName);\r\n  const duplicates = names.filter((name, idx) => names.indexOf(name) !== idx);\r\n  if (duplicates.length > 0) {\r\n    console.warn(\r\n      `Warning: Rule [${rule.id}] references multiple arrays with the same name (${duplicates.join(', ')}), but different paths: ${paths.join(', ')}`\r\n    );\r\n  }\r\n  return true;\r\n}\r\n\r\n/**\r\n * Generates all possible contexts of a JSON document based on conditions and loops.\r\n * Now always returns an array of contexts, even when there are no loops (returns [ [] ]).\r\n * This ensures rules with only one array field or different arrays are evaluated correctly.\r\n *\r\n * Example:\r\n *   loops: [clients[], references[]] => contexts: [ [0,0], [0,1], [1,0], [1,1] ]\r\n *\r\n * @param {object} documentJson The JSON document to explode.\r\n * @param {Array<object>} conditions The conditions to apply.\r\n * @param {Array<object>} existingLoops The identified loops.\r\n * @param {Array<number>} currentTuple The current tuple of indices (for recursion).\r\n * @param {number} contextLimit The maximum number of contexts allowed.\r\n * @param {number} startTime The start time of the operation.\r\n * @param {number} timeLimit The maximum time allowed for the operation.\r\n * @param {object} contextCounter An object to track context count and limits.\r\n * @return {Array<Array<number>>} Array of contexts (each context is an array of indices).\r\n */\r\nfunction explodeContexts(documentJson, conditions, existingLoops, currentTuple, contextLimit = 10000, startTime = Date.now(), timeLimit = 200, contextCounter = { count: 0, limitReached: false, timeReached: false }) {\r\n  const loops = [...existingLoops];\r\n  const totalTuples = [];\r\n  if (loops.length === 0) {\r\n    contextCounter.count++;\r\n    if (contextCounter.count > contextLimit) {\r\n      contextCounter.limitReached = true;\r\n      return [];\r\n    }\r\n    if ((Date.now() - startTime) / 1000 > timeLimit) {\r\n      contextCounter.timeReached = true;\r\n      return [];\r\n    }\r\n    return [currentTuple];\r\n  }\r\n  const currentLoop = JSON.parse(JSON.stringify(loops.shift()));\r\n  const loopItemsCount = objectPath.get(documentJson, currentLoop.completeObjectPath) ?? [];\r\n  for (let i = 0; i < loopItemsCount.length; i++) {\r\n    if (contextCounter.limitReached || contextCounter.timeReached) break;\r\n    if (loops.length > 0) {\r\n      const newLoops = loops.map((item) => {\r\n        return {\r\n          objectName: item.objectName,\r\n          completeObjectPath: item.completeObjectPath.replace(\r\n              `${currentLoop.completeObjectPath}[${currentLoop.parm}]`,\r\n              `${currentLoop.completeObjectPath}.${i}`,\r\n          ),\r\n        };\r\n      });\r\n      explodeContexts(documentJson, conditions, [...newLoops], [...currentTuple, i], contextLimit, startTime, timeLimit, contextCounter).forEach((tuple) => {\r\n        if (!contextCounter.limitReached && !contextCounter.timeReached) {\r\n          totalTuples.push(tuple);\r\n        }\r\n      });\r\n    } else {\r\n      contextCounter.count++;\r\n      if (contextCounter.count > contextLimit) {\r\n        contextCounter.limitReached = true;\r\n        break;\r\n      }\r\n      if ((Date.now() - startTime) / 1000 > timeLimit) {\r\n        contextCounter.timeReached = true;\r\n        break;\r\n      }\r\n      totalTuples.push([...currentTuple, i]);\r\n    }\r\n  }\r\n  return totalTuples;\r\n}\r\n\r\n/**\r\n * Evaluates simple conditions without contexts.\r\n * @param {object} documentJson The JSON document.\r\n * @param {Array<object>} conditions The conditions to evaluate.\r\n * @param {object|null} contextObj Optional context object. If provided, rules can reference it using '_context.' in their ref or comparisonRef paths.\r\n * @return {object} The result of the evaluation.\r\n */\r\nfunction evaluateSimpleConditions(documentJson, conditions, contextObj = null) {\r\n  return conditions.reduce(\r\n      (result, condition) => {\r\n        if (result.response) {\r\n          try {\r\n            // Suporte a comparisonRef\r\n            if (condition.comparisonValue !== undefined && condition.comparisonRef !== undefined) {\r\n              throw new Error('A condition cannot have both comparisonValue and comparisonRef.');\r\n            }\r\n            const leftValue = getValueWithContext(documentJson, condition.ref, contextObj);\r\n            let rightValue;\r\n            if (condition.comparisonRef !== undefined) {\r\n              rightValue = getValueWithContext(documentJson, condition.comparisonRef, contextObj);\r\n            } else {\r\n              rightValue = condition.comparisonValue;\r\n            }\r\n            const test = testCondition(leftValue, rightValue, condition.operator);\r\n            if (test) {\r\n              result.items.push({\r\n                instancePath: condition.ref,\r\n                instancePathValue: leftValue,\r\n                operator: condition.operator,\r\n                comparisonValue: rightValue,\r\n              });\r\n            }\r\n            return {response: test, items: result.items};\r\n          } catch (error) {\r\n            logError('Error in evaluateSimpleConditions', error);\r\n            throw new Error(`Failed to evaluate conditions in one context.`);\r\n          }\r\n        }\r\n        return {response: false, items: result.items};\r\n      },\r\n      {response: true, items: []},\r\n  );\r\n}\r\n\r\n/**\r\n * Evaluates conditions in multiple contexts.\r\n * @param {object} documentJson The JSON document.\r\n * @param {object} rule The rule being evaluated.\r\n * @param {Array<object>} loops The loops to consider.\r\n * @param {object|null} contextObj Optional context object. If provided, rules can reference it using '_context.' in their ref or comparisonRef paths.\r\n * @param {boolean} returnAllContexts Whether to return all contexts or stop at the first valid one.\r\n * @return {Array<object>} The results of the evaluation for each context.\r\n */\r\nfunction evaluateConditionsInContexts(documentJson, rule, loops, contextObj = null, returnAllContexts = true) {\r\n  const results = [];\r\n  for (const context of rule.contexts) {\r\n    const conditionsInContext = rule.conditions.map((condition) =>\r\n      replaceContextValues(condition, loops, context),\r\n    );\r\n\r\n    const evaluation = conditionsInContext.reduce(\r\n      (prevItem, condition) => {\r\n        if (prevItem.result) {\r\n          try {\r\n            if (condition.comparisonValue !== undefined && condition.comparisonRef !== undefined) {\r\n              throw new Error('A condition cannot have both comparisonValue and comparisonRef.');\r\n            }\r\n            const leftValue = getValueWithContext(documentJson, condition.ref, contextObj);\r\n            let rightValue;\r\n            if (condition.comparisonRef !== undefined) {\r\n              rightValue = getValueWithContext(documentJson, condition.comparisonRef, contextObj);\r\n            } else {\r\n              rightValue = condition.comparisonValue;\r\n            }\r\n            const test = testCondition(leftValue, rightValue, condition.operator);\r\n            if (test) {\r\n              prevItem.conditionValues.push({\r\n                instancePath: condition.ref,\r\n                instancePathValue: leftValue,\r\n                operator: condition.operator,\r\n                comparisonValue: rightValue,\r\n              });\r\n              return {result: true, conditionValues: prevItem.conditionValues};\r\n            }\r\n            return {result: false, conditionValues: prevItem.conditionValues};\r\n          } catch (error) {\r\n            logError('Error in evaluateConditionsInContexts', error);\r\n            throw new Error(`Failed to evaluate conditions in one context in rule [${rule.id}].`);\r\n          }\r\n        }\r\n        return {result: false, conditionValues: prevItem.conditionValues};\r\n      },\r\n      {result: true, conditionValues: []},\r\n    );\r\n\r\n    if (evaluation.result) {\r\n      results.push(evaluation);\r\n      if (!returnAllContexts) {\r\n        return results;\r\n      }\r\n    }\r\n  }\r\n  return results;\r\n}\r\n\r\n/**\r\n * Tests a condition against two values.\r\n * @param {any} leftValue The left-hand side value of the condition.\r\n * @param {any} rightValue The right-hand side value of the condition.\r\n * @param {string} operator The operator to use for the comparison.\r\n * @return {boolean} True if the condition is met, false otherwise.\r\n */\r\nfunction testCondition(leftValue, rightValue, operator) {\r\n  try {\r\n    if (operator === 'exists') return typeof leftValue !== 'undefined';\r\n    if (operator === 'does_not_exists') return typeof leftValue === 'undefined';\r\n    if (typeof leftValue === 'undefined') return false; // Avoids error when leftValue is undefined\r\n    if (operator === 'is_empty') return leftValue.length === 0;\r\n    if (operator === 'is_not_empty') return leftValue.length > 0;\r\n\r\n    if (typeof leftValue === 'string') leftValue = leftValue.toLowerCase();\r\n    if (typeof rightValue === 'string') rightValue = rightValue.toLowerCase();\r\n\r\n    if (operator === '=') return leftValue === rightValue;\r\n    if (operator === '<>') return leftValue !== rightValue;\r\n    if (operator === '<') return leftValue < rightValue;\r\n    if (operator === '<=') return leftValue <= rightValue;\r\n    if (operator === '>') return leftValue > rightValue;\r\n    if (operator === '>=') return leftValue >= rightValue;\r\n    if (operator === 'contains') return leftValue.includes(rightValue);\r\n    if (operator === 'does_not_contains') return !leftValue.includes(rightValue);\r\n    if (operator === 'is_contained') return rightValue.includes(leftValue);\r\n    if (operator === 'in') return rightValue.includes(leftValue);\r\n    if (operator === 'not_in') return !rightValue.includes(leftValue);\r\n\r\n    throw new Error(`Unsupported operator: ${operator}`);\r\n  } catch (error) {\r\n    logError(`Error in testCondition with operator [${operator}]`, error);\r\n    throw new Error(`Failed to test condition with operator [${operator}].`);\r\n  }\r\n}\r\n\r\n/**\r\n * Replaces context indices in both 'ref' and 'comparisonRef'.\r\n * This ensures that, for each context, the paths are correct for lookup in the JSON.\r\n *\r\n * Example:\r\n *   ref: 'clients[@0].age', comparisonRef: 'references[@1].minAge', context: [1,0]\r\n *   => ref: 'clients.1.age', comparisonRef: 'references.0.minAge'\r\n *\r\n * @param {object} condition The condition to be adjusted.\r\n * @param {Array<object>} loops The considered loops.\r\n * @param {Array<number>} context The context of indices.\r\n * @return {object} The condition with adjusted paths.\r\n */\r\nfunction replaceContextValues(condition, loops, context) {\r\n  let adjustedRef = condition.ref;\r\n  let adjustedComparisonRef = condition.comparisonRef;\r\n  loops.forEach((loop, loopIndex) => {\r\n    adjustedRef = adjustedRef?.replaceAll(`[@${loopIndex}]`, `.${context[loopIndex]}`);\r\n    if (adjustedComparisonRef) {\r\n      adjustedComparisonRef = adjustedComparisonRef.replaceAll(`[@${loopIndex}]`, `.${context[loopIndex]}`);\r\n    }\r\n  });\r\n  return {\r\n    ref: adjustedRef,\r\n    operator: condition.operator,\r\n    comparisonValue: condition.comparisonValue,\r\n    comparisonRef: adjustedComparisonRef,\r\n  };\r\n}\r\n\r\n/**\r\n * Adds a rule to the results if its conditions are met.\r\n * If an error occurs, it should be handled gracefully.\r\n * @param {object} rule The rule being processed.\r\n * @param {Array<object>} results The results array.\r\n */\r\nfunction addRuleToResults(rule, results) {\r\n  try {\r\n    if (rule.conditionResultContext && rule.conditionResultContext.length > 0) {\r\n      results.push({\r\n        id: rule.id,\r\n        type: rule.type,\r\n        message: rule.description,\r\n        conditions: rule.conditionResultContext,\r\n        keyword: 'conditional',\r\n      });\r\n    } else if (rule.conditionsResult && rule.conditionsResult.response && rule.conditionsResult.items && rule.conditionsResult.items.length > 0) {\r\n      results.push({\r\n        id: rule.id,\r\n        type: rule.type,\r\n        message: rule.description,\r\n        conditions: {result: true, conditionValues: rule.conditionsResult.items},\r\n        keyword: 'conditional',\r\n      });\r\n    }\r\n  } catch (error) {\r\n    logError(`Error adding rule [${rule.id}] to results`, error);\r\n    results.push({\r\n      id: rule.id,\r\n      type: rule.type,\r\n      message: rule.description,\r\n      conditions: [],\r\n      keyword: 'conditional',\r\n      errors: [\r\n        {\r\n          cause: error.message,\r\n          context: `Error occurred while adding rule [${rule.id}] to results`,\r\n        },\r\n      ],\r\n    });\r\n  }\r\n}\r\n\r\n/**\r\n * Logs an error with a detailed message.\r\n * @param {string} message The error message.\r\n * @param {Error} error The error object.\r\n */\r\nfunction logError(message, error) {\r\n  console.error(`[ERROR] ${message}:`, {\r\n    message: error.message,\r\n    stack: error.stack,\r\n  });\r\n}\r\n\r\n// Nova função utilitária para buscar valores considerando contextObj e _context prefix\r\nfunction getValueWithContext(documentJson, path, contextObj) {\r\n  if (typeof path === 'string' && path.startsWith('_context.') && contextObj) {\r\n    return objectPath.get(contextObj, path.replace('_context.', ''));\r\n  }\r\n  return objectPath.get(documentJson, path);\r\n}\r\n"],"names":["this"],"mappings":"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","x_google_ignoreList":[0]}