-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathpassword.min.js
7 lines (7 loc) · 2.1 KB
/
password.min.js
1
2
3
4
5
6
7
/*!
* Name: password.js
* Version: 0.5.0
* License: MIT
* URL: https://github.com/Ptico/passwordjs.git
*/
!function(a){"use strict";function b(a,b,c){"undefined"==typeof b&&(b=0);var d="undefined"==typeof a?b:a;return d>c&&(d=c),d}function c(a,b){var c=a-b;return 0>c?0:c}function d(a){for(var b,c=a.split(""),d=c.length,e=0,f=0,h=0,i=0;b=c.pop();)g.charsLowerCase.indexOf(b)>-1?f++:g.charsUpperCase.indexOf(b)>-1?e++:isNaN(b)?i++:h++;return{uppers:e,lowers:f,nums:h,specials:i,total:d}}function e(a){var b=0;return a.lowers>0&&(b+=2),a.nums>0&&(b+=2),a.uppers>0&&(b+=3),a.specials>0&&(b+=5),b+=a.specials>3?3:a.specials,b+=a.nums>2?2:a.nums,b+=a.uppers>2?2:a.uppers}var f,g={};g.generate=function(a,d){var e,h,i,j,k=[],l=g.defaults;for("undefined"==typeof a&&(a=l.length),a instanceof Array&&(a=f.random(a[1],a[0])),d=d||{},h=b(d.specials,l.specials,a),a=c(a,h),e=b(d.nums,l.nums,a),a=c(a,e),i=b(d.uppers,l.uppers,a),a=c(a,i),j=b(d.lowers,l.lowers,a),a=c(a,j);h--;)k.push(f.special());for(;e--;)k.push(f.random(9).toString());for(;i--;)k.push(f.upperChar());for(;j--;)k.push(f.lowerChar());for(;a--;)k.push(f.anyChar());return f.shuffle(k).join("")},g.score=function(a){var b=d(a),c=e(b);return b.total+c},g.rank=function(a){var b=g.score(a);return 11>=b?0:15>b?1:19>b?2:23>b?3:28>b?4:5},g.Utils=f={shuffle:function(a){for(var b=a.length;b--;){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},upperChar:function(){return f.charFrom(g.charsUpperCase)},lowerChar:function(){return f.charFrom(g.charsLowerCase)},anyChar:function(){return f.charFrom(g.charsLowerCase+g.charsUpperCase)},special:function(){return f.charFrom(g.specials)},charFrom:function(a){return a.charAt(f.random(a.length-1))},random:function(a,b){return"undefined"==typeof b&&(b=0),Math.floor(Math.random()*(a-b+1)+b)}},g.specials="~@#$%^&*()_-+=",g.charsLowerCase="abcdefghijklmnopqrstuvwxyz",g.charsUpperCase="ABCDEFGHIJKLMNOPQRSTUVWXYZ",g.defaults={length:[7,10],specials:1,nums:2,uppers:2,lowers:3},"function"==typeof a.define&&a.define.amd?a.define(function(){return g}):"undefined"!=typeof module&&module.exports?module.exports=g:a.Password=g}(this);