{"version":3,"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 = ComparisonCondition | LogicalCondition | 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 ? getValueFromPath(value, condition.path) : value;\n\n  switch (condition.rule) {\n    // Logical\n    case \"AND\":\n      return (condition as LogicalCondition).conditions.every((c) => executeCondition(c, value));\n    case \"OR\":\n      return (condition as LogicalCondition).conditions.some((c) => executeCondition(c, value));\n    case \"NOT\":\n      return !(condition as LogicalCondition).conditions.every((c) => executeCondition(c, value));\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) && 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(String(targetValue));\n    case \"STARTS_WITH\":\n      return String(targetValue).startsWith((condition as ComparisonCondition).value);\n    case \"ENDS_WITH\":\n      return String(targetValue).endsWith((condition as ComparisonCondition).value);\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":";AAoCO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAGY;AAEV,MAAI,EAAC,yCAAY;AAAQ,WAAO;AAGhC,SAAO,WAAW,MAAM,CAAC,cAAc,iBAAiB,WAAW,KAAK,CAAC;AAC3E;AAEA,SAAS,iBAAiB,WAAsB,OAAqB;AACnE,QAAM,cAAc,UAAU,OAAO,iBAAiB,OAAO,UAAU,IAAI,IAAI;AAE/E,UAAQ,UAAU,MAAM;AAAA,IAEtB,KAAK;AACH,aAAQ,UAA+B,WAAW,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAAA,IAC3F,KAAK;AACH,aAAQ,UAA+B,WAAW,KAAK,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAAA,IAC1F,KAAK;AACH,aAAO,CAAE,UAA+B,WAAW,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAAA,IAG5F,KAAK;AACH,aAAO,gBAAiB,UAAkC;AAAA,IAC5D,KAAK;AACH,aAAO,gBAAiB,UAAkC;AAAA,IAC5D,KAAK;AACH,aAAO,cAAe,UAAkC;AAAA,IAC1D,KAAK;AACH,aAAO,cAAe,UAAkC;AAAA,IAC1D,KAAK;AACH,aACE,MAAM,QAAQ,WAAW,KAAK,YAAY,SAAU,UAAkC,KAAK;AAAA,IAE/F,KAAK;AACH,aACE,MAAM,QAAQ,WAAW,KACzB,CAAC,YAAY,SAAU,UAAkC,KAAK;AAAA,IAElE,KAAK;AACH,aAAO,IAAI,OAAQ,UAAkC,KAAK,EAAE,KAAK,OAAO,WAAW,CAAC;AAAA,IACtF,KAAK;AACH,aAAO,OAAO,WAAW,EAAE,WAAY,UAAkC,KAAK;AAAA,IAChF,KAAK;AACH,aAAO,OAAO,WAAW,EAAE,SAAU,UAAkC,KAAK;AAAA,IAG9E,KAAK;AACH,aAAO,gBAAgB,UAAa,gBAAgB;AAAA,IACtD,KAAK;AACH,aAAO,gBAAgB,UAAa,gBAAgB;AAAA,EACxD;AACF;AAEA,SAAS,iBAAiB,KAAU,MAAmB;AACrD,SAAO,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,KAAK,SAAS,2BAAM,OAAO,GAAG;AAC/D;","names":[]}