hs-password-validator
Version:
> A complete and comprehensive password validator
3 lines (2 loc) • 4.79 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e,a=(e=require("password-validator"))&&"object"==typeof e&&"default"in e?e.default:e,n=require("ramda");function t(e){var a=0,t=0,s=0,r=0,o=0,i=0,l=0,u=0,c=0,g=0,m=0,d=0,f=0,p=0,h=0,v=0,w=0,b=4,x="",L="",y="";if(e){a=4*e.length,t=e.length;for(var q=e.replace(/\s+/g,"").split(/\s*/),A=q.length,M=0;M<A;M++){q[M].match(/[A-Z]/g)?(""!==x&&x===q[M]&&d++,x=q[M],s++):q[M].match(/[a-z]/g)?(""!==L&&L===q[M]&&f++,L=q[M],r++):q[M].match(/[0-9]/g)?(M>0&&M<A-1&&l++,""!==y&&y===q[M]&&p++,y=q[M],o++):q[M].match(/[^a-zA-Z0-9_]/g)&&(M>0&&M<A-1&&l++,i++);for(var C=!1,P=0;P<A;P++)q[M]===q[P]&&M!==P&&(C=!0,m+=Math.abs(A/(P-M)));C&&(m=(c=A-++g)?Math.ceil(m/c):Math.ceil(m))}for(var S=0;S<23;S++){var j="abcdefghijklmnopqrstuvwxyz".substring(S,S+3),k=n.reverse(j);(e.toLowerCase().includes(j)||e.toLowerCase().includes(k))&&h++}for(var z=0;z<8;z++){var D="01234567890".substring(z,z+3),E=n.reverse(D);(e.toLowerCase().includes(D)||e.toLowerCase().includes(E))&&v++}for(var O=0;O<8;O++){var _=")!@#$%^&*()".substring(O,O+3),F=n.reverse(_);(e.toLowerCase().includes(_)||e.toLowerCase().includes(F))&&w++}return s>0&&s<t&&(a+=2*(t-s)),r>0&&r<t&&(a+=2*(t-r)),o>0&&o<t&&(a+=4*o),i>0&&(a+=6*i),l>0&&(a+=2*l),(r>0||s>0)&&0===i&&0===o&&(a-=t),0===r&&0===s&&0===i&&o>0&&(a-=t),g>0&&(a-=m),d>0&&(a-=2*d),f>0&&(a-=2*f),p>0&&(a-=2*p),h>0&&(a-=3*h),v>0&&(a-=3*v),w>0&&(a-=3*w),e.length>=8&&(b=3),(u=0)>b&&(a+=2*u),a<0?0:a}return 0}var s=n.pipe(n.defaultTo(""),t,n.cond([[n.equals(0),function(e){return[e,"empty",""]}],[n.gt(28),function(e){return[e,"worst","Please create a stronger password!"]}],[n.gt(35),function(e){return[e,"bad","Please create a stronger password!"]}],[n.gt(59),function(e){return[e,"weak","Good password, but can be better!"]}],[n.gt(85),function(e){return[e,"good","Very good!"]}],[n.lte(85),function(e){return[e,"strong","Excellent!"]}]])),r={"en-US":{min:"Must contain as least {0} characters",max:"Must contain as most {0} characters",uppercase:"At least one uppercase letter",lowercase:"At least one lowercase letter",space:"Can not contain spaces",symbol:"At least one special character",number:"Must contain numbers",hasSequential:"Must not contain sequential characters",strength:"Password strength: {0}"},"pt-BR":{min:"Deve conter no mínimo {0} caracteres",max:"Deve conter no máximo {0} caracteres",uppercase:"Pelo menos uma letra maiúscula",lowercase:"Pelo menos uma letra minúscula",space:"Não pode conter espaços",symbol:"Pelo menos um caractere especial",number:"Deve conter números",hasSequential:"Não pode conter sequências de caracteres",strength:"Força da senha: {0}"}},o=function(e){for(var a=arguments.length,n=new Array(a>1?a-1:0),t=1;t<a;t++)n[t-1]=arguments[t];return e.replace(/{(\d+)}/g,(function(e,a){return n[a]}))},i=["worst","bad","weak","good","strong"],l=new Map([["min",function(e,n){return{validation:"min",arguments:n.minLength,message:o(r[n.lang].min,n.minLength.toString()),satisfied:(new a).min(n.minLength).validate(e)}}],["max",function(e,n){return{validation:"max",arguments:n.maxLength,message:o(r[n.lang].max,n.maxLength.toString()),satisfied:(new a).max(n.maxLength).validate(e)}}],["uppercase",function(e,n){return{validation:"uppercase",message:r[n.lang].uppercase,satisfied:(new a).uppercase().validate(e)}}],["lowercase",function(e,n){return{validation:"lowercase",message:r[n.lang].lowercase,satisfied:(new a).has().lowercase().validate(e)}}],["symbol",function(e,n){return{validation:"symbol",message:r[n.lang].symbol,satisfied:(new a).has().symbols().validate(e)}}],["number",function(e,n){return{validation:"number",message:r[n.lang].number,satisfied:(new a).has().digits().validate(e)}}],["space",function(e,n){return{validation:"space",message:r[n.lang].space,satisfied:(new a).has().not().spaces().validate(e)}}],["sequential",function(e,a){return{validation:"sequential",message:r[a.lang].hasSequential,satisfied:!/(\w)\1+/.test(e)}}],["strength",function(e,a){var n=s(e),t=0===n[0]?"worst":n[1];return{validation:"strength",tag:t,message:o(r[a.lang].strength,t),satisfied:i.indexOf(t)>=i.indexOf(a.minAcceptable)}}]]);exports.default=function(e){var a,n,t,s,r,o,i,u,c=e.password,g=e.options,m=e.config,d={minLength:null!=(a=null==m||null==(n=m.length)?void 0:n.minLength)?a:10,maxLength:null!=(t=null==m||null==(s=m.length)?void 0:s.maxLength)?t:128,minAcceptable:null!=(r=null==m||null==(o=m.scoreConfig)?void 0:o.minAcceptable)?r:"strong",lang:null!=(i=null==m?void 0:m.lang)?i:"en-US"},f=[];return g?g.forEach((function(e){var a=l.get(e);a&&f.push(a(c,d))})):l.forEach((function(e){f.push(e(c,d))})),{hasInvalidFields:(u=f,u.some((function(e){return!1===e.satisfied}))),data:f}};
//# sourceMappingURL=hs-password-validator.cjs.production.min.js.map