UNPKG

@lytrax/afm

Version:

Greek AFM (TIN) validator and generator

3 lines (2 loc) 1.33 kB
"use strict";(function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):(a=a||self,b(a.LytraxAFM={}))})(void 0,function(a){'use strict';function b(a,b,c=null){var d=Math.floor;let e;a=Math.ceil(a),b=d(b);do e=d(Math.random()*(b-a+1))+a;while(null!==c&&e===c);return e}function c({forceFirstDigit:a,pre99:d=!1,individual:e=!1,legalEntity:f=!1,repeatTolerance:c,valid:g=!0}={}){const h=f?7:1,i=e?4:9,j=c||0===c?c:null;let k=a===void 0||null===a||isNaN(a)?d?0:b(h,i):a,l=k,m=0,n=k.toString(),o=256*k;for(let h=7;1<=h;h--)k=b(0,9,null!==j&&m>=j?l:null),n+=k.toString(),o+=k<<h,k===l?m++:m=0,l=k;const p=o%11,q=10<=p?0:p,r=g?q:b(0,9,q);return`${n}${r}`}a.generateAFM=c,a.generateInvalidAFM=function(a={}){return c({...a,valid:!1})},a.generateValidAFM=function(a={}){return c({...a,valid:!0})},a.validateAFM=function(a,{extendedResult:b=!1}={}){if(9!=a.length)return!!b&&{valid:!1,error:"length"};if(!/^\d+$/.test(a))return!!b&&{valid:!1,error:"nan"};if(a==="0".repeat(9))return!!b&&{valid:!1,error:"zero"};const c=a.substring(0,8).split("").reduce((a,b,c)=>a+(parseInt(b)<<8-c),0),d=parseInt(a[8]),e=c%11%10===d;return b?e?{valid:e}:{valid:e,error:"invalid"}:e},Object.defineProperty(a,"__esModule",{value:!0})}); //# sourceMappingURL=lytrax-afm.js.map