{"version":3,"sources":["../src/validators/index.ts"],"sourcesContent":["function digitsOnly(value: string): string {\n  return (value ?? \"\").replace(/\\D/g, \"\");\n}\n\nexport function luhn(value: string): boolean {\n  const digits = digitsOnly(value);\n  if (digits.length === 0) {\n    return false;\n  }\n  let sum = 0;\n  let double = false;\n  for (let i = digits.length - 1; i >= 0; i--) {\n    let d = digits.charCodeAt(i) - 48;\n    if (double) {\n      d *= 2;\n      if (d > 9) {\n        d -= 9;\n      }\n    }\n    sum += d;\n    double = !double;\n  }\n  return sum % 10 === 0;\n}\n\nconst IIN_W1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\nconst IIN_W2 = [3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 2];\n\nfunction iinBinChecksum(value: string): boolean {\n  const digits = digitsOnly(value);\n  if (digits.length !== 12) {\n    return false;\n  }\n  const d = digits.split(\"\").map(c => c.charCodeAt(0) - 48);\n  const weighted = (w: number[]): number =>\n    w.reduce((sum, wi, i) => sum + wi * d[i], 0) % 11;\n  let control = weighted(IIN_W1);\n  if (control === 10) {\n    control = weighted(IIN_W2);\n    if (control === 10) {\n      return false;\n    }\n  }\n  return control === d[11];\n}\n\nexport function isValidIin(value: string): boolean {\n  return iinBinChecksum(value);\n}\n\nexport function isValidBin(value: string): boolean {\n  return iinBinChecksum(value);\n}\n\nexport function isValidKzIban(value: string): boolean {\n  const s = (value ?? \"\").replace(/\\s+/g, \"\").toUpperCase();\n  if (s.length !== 20 || !s.startsWith(\"KZ\") || !/^[0-9A-Z]+$/.test(s)) {\n    return false;\n  }\n  const rearranged = s.slice(4) + s.slice(0, 4);\n  let remainder = 0;\n  for (let i = 0; i < rearranged.length; i++) {\n    const ch = rearranged[i];\n    // A→10 … Z→35, digits stay as-is\n    const chunk = ch >= \"A\" && ch <= \"Z\" ? String(ch.charCodeAt(0) - 55) : ch;\n    for (let j = 0; j < chunk.length; j++) {\n      remainder = (remainder * 10 + (chunk.charCodeAt(j) - 48)) % 97;\n    }\n  }\n  return remainder === 1;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,WAAW,OAAuB;AACzC,UAAQ,wBAAS,IAAI,QAAQ,OAAO,EAAE;AACxC;AAEO,SAAS,KAAK,OAAwB;AAC3C,QAAM,SAAS,WAAW,KAAK;AAC/B,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AACA,MAAI,MAAM;AACV,MAAI,SAAS;AACb,WAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AAC3C,QAAI,IAAI,OAAO,WAAW,CAAC,IAAI;AAC/B,QAAI,QAAQ;AACV,WAAK;AACL,UAAI,IAAI,GAAG;AACT,aAAK;AAAA,MACP;AAAA,IACF;AACA,WAAO;AACP,aAAS,CAAC;AAAA,EACZ;AACA,SAAO,MAAM,OAAO;AACtB;AAEA,IAAM,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE;AACjD,IAAM,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC;AAEjD,SAAS,eAAe,OAAwB;AAC9C,QAAM,SAAS,WAAW,KAAK;AAC/B,MAAI,OAAO,WAAW,IAAI;AACxB,WAAO;AAAA,EACT;AACA,QAAM,IAAI,OAAO,MAAM,EAAE,EAAE,IAAI,OAAK,EAAE,WAAW,CAAC,IAAI,EAAE;AACxD,QAAM,WAAW,CAAC,MAChB,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI;AACjD,MAAI,UAAU,SAAS,MAAM;AAC7B,MAAI,YAAY,IAAI;AAClB,cAAU,SAAS,MAAM;AACzB,QAAI,YAAY,IAAI;AAClB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,YAAY,EAAE,EAAE;AACzB;AAEO,SAAS,WAAW,OAAwB;AACjD,SAAO,eAAe,KAAK;AAC7B;AAEO,SAAS,WAAW,OAAwB;AACjD,SAAO,eAAe,KAAK;AAC7B;AAEO,SAAS,cAAc,OAAwB;AACpD,QAAM,KAAK,wBAAS,IAAI,QAAQ,QAAQ,EAAE,EAAE,YAAY;AACxD,MAAI,EAAE,WAAW,MAAM,CAAC,EAAE,WAAW,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,GAAG;AACpE,WAAO;AAAA,EACT;AACA,QAAM,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC;AAC5C,MAAI,YAAY;AAChB,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,UAAM,KAAK,WAAW,CAAC;AAEvB,UAAM,QAAQ,MAAM,OAAO,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI;AACvE,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,mBAAa,YAAY,MAAM,MAAM,WAAW,CAAC,IAAI,OAAO;AAAA,IAC9D;AAAA,EACF;AACA,SAAO,cAAc;AACvB;","names":[]}