{"version":3,"file":"credit-card.mjs","names":[],"sources":["../../../../../../../../@warlock.js/seal/src/rules/string/credit-card.ts"],"sourcesContent":["import { invalidRule, VALID_RULE } from \"../../helpers\";\r\nimport type { SchemaRule } from \"../../types\";\r\n\r\n/**\r\n * Credit card rule - validates credit card number\r\n */\r\nexport const isCreditCardRule: SchemaRule = {\r\n  name: \"creditCard\",\r\n  defaultErrorMessage: \"The :input must be a valid credit card number\",\r\n  async validate(value: any, context) {\r\n    // Luhn algorithm for credit card validation\r\n    const cardNumber = String(value).replace(/\\s/g, \"\");\r\n\r\n    if (!/^\\d+$/.test(cardNumber)) {\r\n      return invalidRule(this, context);\r\n    }\r\n\r\n    let sum = 0;\r\n    let isEven = false;\r\n\r\n    for (let i = cardNumber.length - 1; i >= 0; i--) {\r\n      let digit = parseInt(cardNumber[i], 10);\r\n\r\n      if (isEven) {\r\n        digit *= 2;\r\n        if (digit > 9) {\r\n          digit -= 9;\r\n        }\r\n      }\r\n\r\n      sum += digit;\r\n      isEven = !isEven;\r\n    }\r\n\r\n    if (sum % 10 === 0) {\r\n      return VALID_RULE;\r\n    }\r\n\r\n    return invalidRule(this, context);\r\n  },\r\n};\r\n"],"mappings":";;;;;;;AAMA,MAAa,mBAA+B;CAC1C,MAAM;CACN,qBAAqB;CACrB,MAAM,SAAS,OAAY,SAAS;EAElC,MAAM,aAAa,OAAO,KAAK,CAAC,CAAC,QAAQ,OAAO,EAAE;EAElD,IAAI,CAAC,QAAQ,KAAK,UAAU,GAC1B,OAAO,YAAY,MAAM,OAAO;EAGlC,IAAI,MAAM;EACV,IAAI,SAAS;EAEb,KAAK,IAAI,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;GAC/C,IAAI,QAAQ,SAAS,WAAW,IAAI,EAAE;GAEtC,IAAI,QAAQ;IACV,SAAS;IACT,IAAI,QAAQ,GACV,SAAS;GAEb;GAEA,OAAO;GACP,SAAS,CAAC;EACZ;EAEA,IAAI,MAAM,OAAO,GACf,OAAO;EAGT,OAAO,YAAY,MAAM,OAAO;CAClC;AACF"}