UNPKG

random-world

Version:

Nodejs. module to generate random collections of data.

243 lines (180 loc) 8.01 kB
![NPM Stats](https://nodei.co/npm/random-world.png?downloads=true&downloadRank=true&stars=true) [![Build Status](https://travis-ci.org/drb/random-world.svg)](https://travis-ci.org/drb/random-world) [![npm version](https://badge.fury.io/js/random-world.svg)](http://badge.fury.io/js/random-world) # Random World Node module for generating random data - built for usage with a [RAML-based API mocking server](https://www.npmjs.com/package/raml-mock-server) to generate collections of complex data structures with more realistic values. ## Installation `npm install random-world` ## Instantiation ```javascript var random = require('random-world'); ``` ## Modules These are a work in progress and are added to as the parent project evolves. Method names and options are likely to change. * [Places](#places) * [Collections](#collections) * [Dates & Times](#dates) * [Files](#files) * [Geography](#geography) * [Names](#names) * [Network](#network) * [Numbers](#numbers) * [Strings](#strings) * [Truth (Booleans)](#truth) * [Money](#money) * [Complex Structures](#objects) ### Places Location-specific methods. * `random.city()` - Generate a random city name. * `country` - String representing the country to restrict the city to. * `random.country()` - Generate a random country name. * `random.countrycode()` - Generate a random country code. --- ### Collections Arrays of random data. * `random.array()` - Generate an array up 12 items long, filled with random numbers between 1-200. * `limit` - Explicit length of the array * `random.pickone()` - Returns a random item from a pre-defined list of values, separated by a delimiter. Delimter is defaulted to pipe (|) but can be specified in the options. * `delimiter` - The custom delimiter separating the values --- ### Dates * `random.now()` - The date and time right now. * `random.unixtimestamp()` - A date and time in UNIX timestamp format. * `format` - UK date format is only supported * `start` - Minimum bound the randomisation should start from. * `end` - Maximum bound the randomisation should end at. * `random.date()` - A random date * `format` - UK date format is only supported * `start` - Minimum bound the randomisation should start from. * `end` - Maximum bound the randomisation should end at. * `random.dayofweek()` - A random day of the week. * `short` - Short 3 character format (i.e. Mon vs Monday). * `random.year()` - A random year * `format` - UK date format is only supported * `start` - Minimum bound the year randomisation should start from. * `end` - Maximum bound the year randomisation should end at. * `random.month()` - A random day of the week. * `short` - Short 3 character format (i.e. Jul vs July). --- ### Files Returns random file extensions * `random.extension()` - A random file extension. * `includeDot` - Returns a dot prefix for the extension (i.e. .png vs png). --- ### Geography Generate randomised lat/long sets. * `random.latlong()` - Object containing a longitude and latitude. * `random.lat()` - A random latitude. * `random.long()` - A random longitude. --- ### Names Returns names for people using a dictionary of popular first and last names - only data from the USA is supported at the moment. * `random.firstname()` - Returns a person's first name. * `gender` - Limit result to male or female names. * `male|female` * `startsWith` - Return names starting with the supplied substring. * `charCase` - Transform the name to upper or lowercase. * `upper|lower * `random.lastname()` - Returns a person's last name (surname). * `startsWith` - Return names starting with the supplied substring. * `charCase` - Transform the name to upper or lowercase. * `upper|lower * `random.fullname()` - Returns a person's first name. * `gender` - Limit result to male or female names. * `male|female` * `startsWith` - Return names starting with the supplied substring. * `charCase` - Transform the name to upper or lowercase. * `upper|lower * `random.title()` - Returns a random title. * `random.email()` - Returns a person's first name. * `hasDot` - Split name section of address (before @) with a dot. * `hasPlusAddress` - Include a plus address in the name section. * `charCase` - Transform the address to upper or lowercase. * `upper|lower * `standard` - Limit the TLDs to a standard set (.com, .org, .co.uk etc). --- ### Network Network specific values. * `random.domain()` - Returns a mock domain name. * `random.ip()` - Returns an IPv4 IP address. * `random.ipv6()` - Returns an IPv6 IP address. Not yet implemented. * `random.tld()` - Returns a top level domain. * `standard` - Limit the TLDs to a standard set (.com, .org, .co.uk etc). --- ### Numbers Integers and floats. * `random.integer()` - Returns a random integer. * `min` - Minimum value to return. * `max` - Maximum value to return. * `round` - Round the value (to nearest whole number). * `padding` - Zero-pads value up to the length specified. * `random.number()` - Alias for `integer()`. * `random.float()` - Returns a random float. * `random.sum()` - Returns an array of X values that add up to the target value. --- ### Strings String patterns. * `random.sentence()` - Returns a sentence retrieved from Lorem Ipsum strings. * `random.block()` - Creates a string made up of blocks of characters. * `blockSize` - Length of each block. * `delimiter` - Split each block with specific delimiter. * `chars` - Limit blocks to defined characters. Defaults to A-Z. * `random.random()` - A random string created from the default characters, or the supplied chars. * `chars` - Limit string to defined characters. Defaults to A-Za-z0-9. * `len` - Length of the string. Defaults to 16. * `random.word()` - A random dictionary word. * `charCase` - Transform the word to upper or lowercase. * `upper|lower` * `limit` - Number of words to return. Defaults to 1. * `random.uuid()` - A v4 UUID. --- ### Truth Randomised boolean values. * `random.boolean()` - Returns a random true or false. --- ### Money Credit card data specific methods. * `random.ccnumber()` - Returns a random (valid, MOD10 checked) credit card number. * `shortName` - Limits the returned card number to a specific card type. See following table for supported types. * `hasHyphens` - Boolean. Formats credit card number with a hypen very 4 characters. * `random.ccstart()` - Returns a random start date in MM/YY format. * `random.ccexpiry()` - Returns a random expiry in MM/YY format. * `random.cctype()` - Returns a random credit card type. e.g. MasterCard, VISA etc * `random.cvv()` - Returns a random 3 digit CVV value. * `random.cv2()` - Alias to `cvv()` method. Supported card types. |Card Type|Short Code| |---|---| | American Express |AE | | Diners Club - Carte Blanche | DC-CB | | Diners Club - International | DC-I | | Diners Club - USA & Canada | DC | | Discover | D | | InstaPayment | IP | | JCB | JCB | |Laser | L | | Maestro | MA | | MasterCard | MC | | Visa | V | | Visa Electron | VE | --- ### Objects * `random.fromObject()` - Parses an object for placeholders that represent `random-world` methods. ``` { "struct": { "name": "$fullname", "addressId": "$number{\"min\": 100, \"max\": 2000, \"round\": true}", "description": "$word{\"charCase\": \"upper\"} Office", "addressLine1": "$word", "city": "$city", "postcode": "$postcode", "country": "$country", "isDeleted": "$boolean" } } ``` Nested object parser takes a complex object and converts all placeholders for `random-world` methods to a randomly assigned value. Documentation for this is covered in [more detail here](https://www.npmjs.com/package/raml-mock-server). --- ## Running Tests `npm test` [![Build Status](https://travis-ci.org/drb/random-world.svg)](https://travis-ci.org/drb/random-world) [![npm version](https://badge.fury.io/js/random-world.svg)](http://badge.fury.io/js/random-world)