{"version":3,"file":"conditions.cjs","names":[],"sources":["../../src/utils/conditions.ts"],"sourcesContent":["export type ComparisonRule =\n  | \"EQUALS\"\n  | \"NOT_EQUALS\"\n  | \"GREATER_THAN\"\n  | \"LESS_THAN\"\n  | \"CONTAINS\"\n  | \"NOT_CONTAINS\"\n  | \"MATCHES\"\n  | \"STARTS_WITH\"\n  | \"ENDS_WITH\";\nexport type LogicalRule = \"AND\" | \"OR\" | \"NOT\";\nexport type ExistenceRule = \"EXISTS\" | \"NOT_EXISTS\";\n\nexport type Rule = ComparisonRule | LogicalRule | ExistenceRule;\n\nexport interface BaseCondition {\n  rule: Rule;\n  path?: string;\n}\n\nexport interface ComparisonCondition extends BaseCondition {\n  rule: ComparisonRule;\n  value: any;\n}\n\nexport interface LogicalCondition extends BaseCondition {\n  rule: LogicalRule;\n  conditions: Condition[];\n}\n\nexport interface ExistenceCondition extends BaseCondition {\n  rule: ExistenceRule;\n}\n\nexport type Condition =\n  | ComparisonCondition\n  | LogicalCondition\n  | ExistenceCondition;\n\nexport function executeConditions({\n  conditions,\n  value,\n}: {\n  conditions?: Condition[];\n  value: any;\n}): boolean {\n  // If no conditions, consider it a pass\n  if (!conditions?.length) return true;\n\n  // Run all conditions (implicit AND)\n  return conditions.every((condition) => executeCondition(condition, value));\n}\n\nfunction executeCondition(condition: Condition, value: any): boolean {\n  const targetValue = condition.path\n    ? getValueFromPath(value, condition.path)\n    : value;\n\n  switch (condition.rule) {\n    // Logical\n    case \"AND\":\n      return (condition as LogicalCondition).conditions.every((c) =>\n        executeCondition(c, value),\n      );\n    case \"OR\":\n      return (condition as LogicalCondition).conditions.some((c) =>\n        executeCondition(c, value),\n      );\n    case \"NOT\":\n      return !(condition as LogicalCondition).conditions.every((c) =>\n        executeCondition(c, value),\n      );\n\n    // Comparison\n    case \"EQUALS\":\n      return targetValue === (condition as ComparisonCondition).value;\n    case \"NOT_EQUALS\":\n      return targetValue !== (condition as ComparisonCondition).value;\n    case \"GREATER_THAN\":\n      return targetValue > (condition as ComparisonCondition).value;\n    case \"LESS_THAN\":\n      return targetValue < (condition as ComparisonCondition).value;\n    case \"CONTAINS\":\n      return (\n        Array.isArray(targetValue) &&\n        targetValue.includes((condition as ComparisonCondition).value)\n      );\n    case \"NOT_CONTAINS\":\n      return (\n        Array.isArray(targetValue) &&\n        !targetValue.includes((condition as ComparisonCondition).value)\n      );\n    case \"MATCHES\":\n      return new RegExp((condition as ComparisonCondition).value).test(\n        String(targetValue),\n      );\n    case \"STARTS_WITH\":\n      return String(targetValue).startsWith(\n        (condition as ComparisonCondition).value,\n      );\n    case \"ENDS_WITH\":\n      return String(targetValue).endsWith(\n        (condition as ComparisonCondition).value,\n      );\n\n    // Existence\n    case \"EXISTS\":\n      return targetValue !== undefined && targetValue !== null;\n    case \"NOT_EXISTS\":\n      return targetValue === undefined || targetValue === null;\n  }\n}\n\nfunction getValueFromPath(obj: any, path: string): any {\n  return path.split(\".\").reduce((acc, part) => acc?.[part], obj);\n}\n"],"mappings":";;AAuCA,SAAgB,kBAAkB,EAChC,YACA,SAIU;AAEV,KAAI,CAAC,YAAY,OAAQ,QAAO;AAGhC,QAAO,WAAW,OAAO,cAAc,iBAAiB,WAAW,MAAM,CAAC;;AAG5E,SAAS,iBAAiB,WAAsB,OAAqB;CACnE,MAAM,cAAc,UAAU,OAC1B,iBAAiB,OAAO,UAAU,KAAK,GACvC;AAEJ,SAAQ,UAAU,MAAlB;EAEE,KAAK,MACH,QAAQ,UAA+B,WAAW,OAAO,MACvD,iBAAiB,GAAG,MAAM,CAC3B;EACH,KAAK,KACH,QAAQ,UAA+B,WAAW,MAAM,MACtD,iBAAiB,GAAG,MAAM,CAC3B;EACH,KAAK,MACH,QAAO,CAAE,UAA+B,WAAW,OAAO,MACxD,iBAAiB,GAAG,MAAM,CAC3B;EAGH,KAAK,SACH,QAAO,gBAAiB,UAAkC;EAC5D,KAAK,aACH,QAAO,gBAAiB,UAAkC;EAC5D,KAAK,eACH,QAAO,cAAe,UAAkC;EAC1D,KAAK,YACH,QAAO,cAAe,UAAkC;EAC1D,KAAK,WACH,QACE,MAAM,QAAQ,YAAY,IAC1B,YAAY,SAAU,UAAkC,MAAM;EAElE,KAAK,eACH,QACE,MAAM,QAAQ,YAAY,IAC1B,CAAC,YAAY,SAAU,UAAkC,MAAM;EAEnE,KAAK,UACH,QAAO,IAAI,OAAQ,UAAkC,MAAM,CAAC,KAC1D,OAAO,YAAY,CACpB;EACH,KAAK,cACH,QAAO,OAAO,YAAY,CAAC,WACxB,UAAkC,MACpC;EACH,KAAK,YACH,QAAO,OAAO,YAAY,CAAC,SACxB,UAAkC,MACpC;EAGH,KAAK,SACH,QAAO,gBAAgB,UAAa,gBAAgB;EACtD,KAAK,aACH,QAAO,gBAAgB,UAAa,gBAAgB;;;AAI1D,SAAS,iBAAiB,KAAU,MAAmB;AACrD,QAAO,KAAK,MAAM,IAAI,CAAC,QAAQ,KAAK,SAAS,MAAM,OAAO,IAAI"}