Socket
Socket
Sign inDemoInstall

xkpasswd

Package Overview
Dependencies
7
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.6 to 0.0.7

106

generate.js

@@ -1,63 +0,69 @@

var _ = require('lodash');
var randomWord = require('random-words');
var wordList = require('word-list-json');
/**
* Patterns can consist of any combination of the following:
* w: words
* d: digits
* s: separators
*/
// define helpers
var h = {
random: function (min, max) {
// Returns a random integer between min (included) and max (included)
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
return Math.floor(Math.random() * (max - min + 1)) + min;
},
/**
* Parse options to generate a pattern
*/
var processOpts = function (opts) {
// define defaults
if (!opts.complexity) opts.complexity = 3;
var defaultSeparators = '#.-=+';
var rtn = {};
getRandomWord: function () {
return wordList[h.random(0, wordList.length - 1)];
},
// check for complexity level
// TODO: Add some sensible patterns
if (opts.complexity === 1) rtn.pattern = 'wsw';
if (opts.complexity === 2) rtn.pattern = 'wswsdd';
if (opts.complexity === 3) rtn.pattern = 'wswswsdd';
if (opts.complexity === 4) rtn.pattern = 'swswswswswsdd';
resolveComplexity: function (complexity) {
// Patterns can consist of any combination of the following: (w)ords, (d)igits, (s)eparators
var rtn = {};
rtn.separators = '#.-=+';
if (complexity < 1) complexity = 1;
if (complexity > 6) complexity = 6;
if (opts.complexity === 5) {
rtn.pattern = 'swswswswswsdd'
defaultSeparators = '#!@$*+:|~?';
};
if (complexity === 1) rtn.pattern = 'wsw';
if (complexity === 2) rtn.pattern = 'wswsdd';
if (complexity === 3) rtn.pattern = 'wswswsdd';
if (complexity === 4) rtn.pattern = 'swswswswswsdd';
if (opts.complexity === 6) {
rtn.pattern = 'ddswswswswswsdd';
rtn.transform = 'alternate';
defaultSeparators = '!@$%^&*-_+=:|~?.;';
if (complexity === 5) {
rtn.pattern = 'swswswswswsdd'
rtn.separators = '#!@$*+:|~?';
};
if (complexity === 6) {
rtn.pattern = 'ddswswswswswsdd';
rtn.transform = 'alternate';
rtn.separators = '!@$%^&*-_+=:|~?.;';
}
return rtn;
},
processOpts: function (opts) {
if (!opts.complexity) opts.complexity = 3;
var predefined = h.resolveComplexity(opts.complexity);
var separators = (opts.separators || predefined.separators);
var rtn = {};
rtn.pattern = (opts.pattern || predefined.pattern);
rtn.separator = separators.split('')[h.random(0, separators.length - 1)];
if (predefined.transform) rtn.transform = predefined.transform;
return rtn;
}
// Pick a random separator from supplied list
separators = (opts.separators || defaultSeparators);
rtn.separator = separators.split('')[_.random(0, separators.length - 1)];
return rtn;
}
/**
* Put the password together
*/
var generate = function (opts) {
opts = processOpts(opts);
var pattern = opts.pattern;
var separator = opts.separator;
var uppercase = (opts.transform && opts.transform == 'uppercase');
module.exports = function (opts) {
o = h.processOpts(opts);
var pattern = o.pattern.split('');
var uppercase = (o.transform && o.transform == 'uppercase');
var password = [];
_.forEach(pattern, function (type) {
pattern.forEach(function (type) {
var value;
if (type === 'd') value = _.random(0, 9);
if (type === 's') value = separator;
if (type === 'd') value = h.random(0, 9);
if (type === 's') value = o.separator;
if (type === 'w') {
value = randomWord();
if (opts.transform && opts.transform == 'alternate') uppercase = !uppercase;
value = h.getRandomWord();
if (o.transform && o.transform == 'alternate') uppercase = !uppercase;
if (uppercase) {

@@ -75,3 +81,1 @@ value.toUpperCase();

};
module.exports = generate;
{
"name": "xkpasswd",
"version": "0.0.6",
"version": "0.0.7",
"description": "Memorable password generator, inspired by a PERL module powering xkpasswd.net/s/",

@@ -24,6 +24,5 @@ "main": "index.js",

"dependencies": {
"lodash": "^3.9.3",
"nomnom": "^1.8.1",
"random-words": "0.0.1"
"word-list-json": "^0.2.0"
}
}

@@ -52,2 +52,11 @@ *Memorable password generator, inspired by a PERL module powering xkpasswd.net/s/*

**EXAMPLE** Specify custom pattern
```
$ xkp -p wdwd
adjective3solar6
```
**EXAMPLE** Specify complexity, custom separators and number of passwords

@@ -70,2 +79,10 @@

## Release notes
v0.0.7
- replaced random-words module with a more custom solution using word-list-json module
- cleaned up a bit and made code slightly more modular and extensible
## Issues and requests

@@ -77,2 +94,2 @@

<br>
<br>
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc