gnablib
Version:
A lean, zero dependency library to provide a useful base for your project.
2 lines • 468 B
JavaScript
/*! Copyright 2023-2024 the gnablib contributors MPL-1.1 */
import{utf8 as t}from"../codec/Utf8.js";import{sNum as o}from"../safe/safe.js";export function luhnStr(e){const r=t.toBytes(e);let n=r.length-1,s=0,f=2;for(;n>=0;){let t=r[n--]-48;o(`str-bytes[${n+1}]`,t).unsigned().atMost(9).throwNot(),t*=f,s+=t%10+t/10|0,f=1+f%2}return(10-s%10)%10}export function luhnInt(t){let o=0,e=2;for(;t>0;){let r=t%10;t=(t-r)/10,r*=e,o+=r%10+r/10|0,e=1+e%2}return o=(10-o%10)%10,o}