🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

randomatic

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

randomatic - npm Package Compare versions

Comparing version

to
1.0.0

.editorconfig

8

bower.json
{
"name": "randomatic",
"version": "0.1.4",
"version": "1.0.0",
"main": [
"index.js"
],
"authors": [
{
"name": "Jon Schlinkert",
"homepage": "https://github.com/jonschlinkert"
}
]
}

86

index.js

@@ -1,8 +0,16 @@

/**
* randomatic
* Inspired by http://stackoverflow.com/a/10727155/1267639
/*!
* randomatic <https://github.com/jonschlinkert/randomatic>
*
* Copyright (c) 2014 Jon Schlinkert
* Licensed under the MIT License (MIT).
* Licensed under the MIT License (MIT)
*
* Originally inspired by <http://stackoverflow.com/a/10727155/1267639>
*/
var isNumber = require('is-number');
/**
* Available mask characters
*/
var type = {

@@ -15,34 +23,60 @@ lower: 'abcdefghijklmnopqrstuvwxyz',

module.exports = function (chars, length, opts) {
opts = opts || {};
/**
* Generate random character sequences of a specified `length`,
* based on the given `pattern`.
*
* @param {String} `pattern` The pattern to use for generating the random string.
* @param {String} `length` The length of the string to generate.
* @param {String} `options`
* @return {String}
* @api public
*/
module.exports = function randomatic(pattern, length, options) {
if (arguments.length === 1 && typeof pattern === 'number') {
options = length;
length = pattern;
pattern = '*';
}
var opts = options || {};
var mask = '';
var res = '';
opts.chars = opts.chars || '';
// if `length` is an object, since `chars` is currently the only
// option, use the length of the special chars as `length`
if(typeof length === 'object') {
opts = length;
length = opts.chars.length;
if (isNumber(pattern)) {
length = pattern;
} else {
length = opts.chars.length;
}
pattern = opts.chars;
}
// if no `length` is defined, use the length of the pattern
if(typeof length === 'undefined') {
length = chars.length;
length = pattern.length;
}
type.custom = opts.chars;
type.all = Object.keys(type).map(function (key) {
return type[key];
}).join('');
// Characters to be used
if (pattern.indexOf('?') > -1) mask += opts.chars;
if (pattern.indexOf('a') > -1) mask += type.lower;
if (pattern.indexOf('A') > -1) mask += type.upper;
if (pattern.indexOf('0') > -1) mask += type.numeric;
if (pattern.indexOf('!') > -1) mask += type.special;
if (pattern.indexOf('*') > -1) mask += type.all;
var mask = '';
var result = [];
if (mask.length === 0 || mask == null) {
mask += pattern;
}
// Allow a custom string to be randomized (opts.chars)
if (chars.indexOf('?') > -1) {mask += type.custom;}
if (chars.indexOf('a') > -1) {mask += type.lower; }
if (chars.indexOf('A') > -1) {mask += type.upper; }
if (chars.indexOf('0') > -1) {mask += type.numeric; }
if (chars.indexOf('!') > -1) {mask += type.special; }
if (chars.indexOf('*') > -1) {mask += type.all; }
for (var i = length; i > 0; --i) {
result.push(mask[Math.round(Math.random() * (mask.length - 1))]);
var len = mask.length - 1;
while (length--) {
res += mask[parseInt(Math.random() * len)];
}
return result.join('');
};
return res;
};
{
"name": "randomatic",
"description": "Generate randomized strings of a specified length from patterns of numeric, alpha-numeric, alphabetical, special or custom characters.",
"version": "0.1.4",
"description": "Generate randomized strings of a specified length, fast. Only the length is necessary, but you can optionally generate patterns using any combination of numeric, alpha-numeric, alphabetical, special or custom characters.",
"version": "1.0.0",
"homepage": "https://github.com/jonschlinkert/randomatic",

@@ -17,9 +17,11 @@ "author": {

},
"licenses": [
{
"type": "MIT",
"url": "https://github.com/jonschlinkert/randomatic/blob/master/LICENSE-MIT"
}
],
"license": {
"type": "MIT",
"url": "https://github.com/jonschlinkert/randomatic/blob/master/LICENSE-MIT"
},
"main": "index.js",
"devDependencies": {
"mocha": "^2.0.1",
"should": "^4.4.1"
},
"keywords": [

@@ -37,7 +39,5 @@ "alpha",

],
"devDependencies": {
"chai": "~1.9.1",
"mocha": "~1.18.2",
"verb": "~0.2.5"
"dependencies": {
"is-number": "^0.1.1"
}
}

@@ -1,15 +0,12 @@

# randomatic [![NPM version](https://badge.fury.io/js/randomatic.png)](http://badge.fury.io/js/randomatic)
# randomatic [![NPM version](https://badge.fury.io/js/randomatic.svg)](http://badge.fury.io/js/randomatic)
> Generate randomized strings of a specified length from patterns of numeric, alpha-numeric, alphabetical, special or custom characters.
> Generate randomized strings of a specified length, fast. Only the length is necessary, but you can optionally generate patterns using any combination of numeric, alpha-numeric, alphabetical, special or custom characters.
## Quickstart
## Install with [npm](npmjs.org)
### [npm](https://npmjs.org/)
```bash
npm i randomatic --save
```
### Install with [bower](https://github.com/bower/bower)
### [bower](https://github.com/bower/bower)
```bash

@@ -19,25 +16,38 @@ bower install randomatic --save

## Tests
Run the tests
## Usage
```bash
mocha
```js
var randomize = require('randomatic');
```
## Documentation
```js
var randomize = require('randomatic');
## API
```
randomize(pattern, length, options);
```
### Params
- `pattern` **{String}**: The pattern to use for randomizing
- `length` **{Object}**: The length of the string to generate
The following parameters can be passed (`randomize(Pattern, Length, Options)`)
#### pattern
Type: `String` (required)
### pattern
Default: `undefined`
> The pattern to use for randomizing
Patterns can contain any combination of the below characters, specified in any order.
**Example:**
To generate a 10-character randomized string using all available characters:
```js
randomize('*', 10);
//=>
randomize('Aa0!', 10);
//=>
```
* `a`: Lowercase alpha characters (`abcdefghijklmnopqrstuvwxyz'`)

@@ -50,13 +60,9 @@ * `A`: Uppercase alpha characters (`ABCDEFGHIJKLMNOPQRSTUVWXYZ'`)

Patterns can contain any combination of the above characters, in any order. For example, `randomize('Aa0!', 10)` will generate a 10-character randomized string with all of the specified patterns.
#### length
Type: `Number` (optional)
### length
Default: `undefined`
> the length of the string to generate
Specify the number of characters/digits to generate in the output.
**Examples:**
Examples:
* `randomize('A', 5)` will generate a 5-character, uppercase, alphabetical, randomized string, e.g. `KDJWJ`.

@@ -75,11 +81,17 @@ * `randomize('0', 2)` will generate a 2-digit random number

...and so on.
These are just examples, [see the tests](./test.js) for more use cases and examples.
#### options
Type: `Object` (optional)
## options
#### chars
Type: `String`
Default: `undefined`
Currently the only option is `chars`, which allows you to define a custom string to be randomized. For example:
Define a custom string to be randomized.
**Example:**
* `randomize('?', 20, {chars: 'jonschlinkert'})` will generate a 20-character randomized string from the letters contained in `jonschlinkert`.

@@ -89,5 +101,6 @@ * `randomize('?', {chars: 'jonschlinkert'})` will generate a 13-character randomized string from the letters contained in `jonschlinkert`.

## Usage Examples
* `randomize('A', 4)` (_whitespace insenstive_) would result in randomized 4-digit uppercase letters, like, `ZAKH`, `UJSL`... and so on.
* `randomize('A', 4)` (_whitespace insenstive_) would result in randomized 4-digit uppercase letters, like, `ZAKH`, `UJSL`... etc.
* `randomize('AAAA')` is equivelant to `randomize('A', 4)`

@@ -101,21 +114,26 @@ * `randomize('AAA0')` and `randomize('AA00')` and `randomize('A0A0')` are equivelant to `randomize('A0', 4)`

_The order in which the characters are provided has no impact on the outcome._
_The order in which the characters are defined is insignificant._
## Contributing
Find a bug? Have a feature request? Please [create an Issue](https://github.com/jonschlinkert/randomatic/issues).
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality,
and run `docs` in the command line to build the docs with [Verb](https://github.com/assemble/verb).
Pull requests are also encouraged, and if you find this project useful please consider "starring" it to show your support! Thanks!
## Running tests
## Authors
Install dev dependencies:
```bash
npm install -d && mocha
```
## Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/randomatic/issues)
## Author
**Jon Schlinkert**
+ [github/jonschlinkert](https://github.com/jonschlinkert)
+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
## License
Copyright (c) 2014 Jon Schlinkert, contributors.
Copyright (c) 2014 Jon Schlinkert
Released under the MIT license

@@ -125,2 +143,2 @@

_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 19, 2014._
_This file was generated by [verb](https://github.com/assemble/verb) on December 13, 2014. To update, run `npm i -g verb && verb`._

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet