node-elizabeth
Version:

1,812 lines (1,449 loc) • 81.7 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Structured = exports.UnitSystem = exports.Path = exports.Transport = exports.Internet = exports.ClothingSizes = exports.Hardware = exports.Food = exports.Development = exports.Science = exports.File = exports.Personal = exports.Business = exports.Address = exports.Text = exports.Code = exports.DateTime = undefined;
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _os = require('os');
var _os2 = _interopRequireDefault(_os);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _stringTemplate = require('string-template');
var _stringTemplate2 = _interopRequireDefault(_stringTemplate);
var _creditcardGenerator = require('creditcard-generator');
var _creditcardGenerator2 = _interopRequireDefault(_creditcardGenerator);
var _util = require('./util');
var _address = require('./locales/int/address');
var ADDRESS = _interopRequireWildcard(_address);
var _business = require('./locales/int/business');
var BUSINESS = _interopRequireWildcard(_business);
var _code = require('./locales/int/code');
var CODE = _interopRequireWildcard(_code);
var _datetime = require('./locales/int/datetime');
var DATETIME = _interopRequireWildcard(_datetime);
var _development = require('./locales/int/development');
var DEVELOPMENT = _interopRequireWildcard(_development);
var _personal = require('./locales/int/personal');
var PERSONAL = _interopRequireWildcard(_personal);
var _file = require('./locales/int/file');
var FILE = _interopRequireWildcard(_file);
var _hardware = require('./locales/int/hardware');
var HARDWARE = _interopRequireWildcard(_hardware);
var _network = require('./locales/int/network');
var NETWORK = _interopRequireWildcard(_network);
var _scientific = require('./locales/int/scientific');
var SCIENTIFIC = _interopRequireWildcard(_scientific);
var _transport = require('./locales/int/transport');
var TRANSPORT = _interopRequireWildcard(_transport);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var DateTime = exports.DateTime = function () {
/**
* Class for generate the fake data that you can use for
* working with date and time.
* @param opts {object} Options
* @param [opts.locale=en] {string} Provider locale
*/
function DateTime() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, DateTime);
var _opts$locale = opts.locale,
locale = _opts$locale === undefined ? 'en' : _opts$locale;
this.locale = locale;
this.data = (0, _util.pull)('datetime.json', locale);
}
/**
* Get a random day of week.
* @param opts {object} Options
* @param [opts.abbr=false] {boolean} Abbreviated name of the day.
*/
_createClass(DateTime, [{
key: 'dayOfWeek',
value: function dayOfWeek() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$abbr = opts.abbr,
abbr = _opts$abbr === undefined ? false : _opts$abbr;
var key = abbr ? 'abbr' : 'name';
return _lodash2.default.sample(this.data.day[key]);
}
/**
* Get a random month.
* @param opts {object} Options
* @param [opts.abbr=false] {boolean} if True then will be returned abbreviated month name.
*/
}, {
key: 'month',
value: function month() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$abbr2 = opts.abbr,
abbr = _opts$abbr2 === undefined ? false : _opts$abbr2;
var key = abbr ? 'abbr' : 'name';
return _lodash2.default.sample(this.data.month[key]);
}
/**
* Generate a random year.
* @param opts {object} Options
* @param [opts.minimum=1990] {number} Minimum value.
* @param [opts.maximum=2050] {number} Maximum value
*/
}, {
key: 'year',
value: function year() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$minimum = opts.minimum,
minimum = _opts$minimum === undefined ? 1990 : _opts$minimum,
_opts$maximum = opts.maximum,
maximum = _opts$maximum === undefined ? 2050 : _opts$maximum;
return _lodash2.default.random(minimum, maximum);
}
/**
* Get a random value from list of centuries (roman format).
*/
}, {
key: 'century',
value: function century() {
return _lodash2.default.sample(DATETIME.ROMAN_NUMS);
}
/**
* Get a random periodicity string.
*/
}, {
key: 'periodicity',
value: function periodicity() {
return _lodash2.default.sample(this.data.periodicity);
}
}]);
return DateTime;
}();
var Code = exports.Code = function () {
/**
* Class for generating codes;
* @param opts {object} Options
* @param [opts.locale=en] {string} Current locale
*/
function Code() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Code);
var _opts$locale2 = opts.locale,
locale = _opts$locale2 === undefined ? 'en' : _opts$locale2;
this.locale = locale;
}
/**
* Generate custom code using ascii uppercase and random integers.
* @param opts {object} Options;
* @param [opts.mask=@###] {string} Mask of code.
* @param [opts.char=@] {string} Placeholder for characters.
* @param [opts.digit=#] {string} Placeholder for digits.
*/
_createClass(Code, [{
key: 'customCode',
value: function customCode() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$mask = opts.mask,
mask = _opts$mask === undefined ? '@###' : _opts$mask,
_opts$char = opts.char,
char = _opts$char === undefined ? '@' : _opts$char,
_opts$digit = opts.digit,
digit = _opts$digit === undefined ? '#' : _opts$digit;
return mask.split('').map(function (character) {
if (character === char) {
return _lodash2.default.sample(_util.asciiUpperCase);
} else if (character === digit) {
return _lodash2.default.sample(_util.digits);
} else {
return character;
}
}).join('');
}
/**
* Get a random locale code (MS-LCID).
* See Windows Language Code Identifier Reference for more information.
*/
}, {
key: 'localeCode',
value: function localeCode() {
return _lodash2.default.sample(CODE.LOCALE_CODES);
}
/**
* Generate a random International Standard Serial Number (ISSN).
* @param opts {object} Options
* @param [opts.mask=####-####] {string} Code mask
*/
}, {
key: 'issn',
value: function issn() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$mask2 = opts.mask,
mask = _opts$mask2 === undefined ? '####-####' : _opts$mask2;
return this.customCode({ mask: mask });
}
/**
* Generate ISBN for current locale. Default is ISBN 10,
* but you also can use ISBN-13
* @param opts {object} Options
* @param [opts.format=isbn-10] {string} ISBN format.
*/
}, {
key: 'isbn',
value: function isbn() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$format = opts.format,
format = _opts$format === undefined ? 'isbn-10' : _opts$format;
var groups = CODE.ISBN_GROUPS;
var mask = format === 'isbn-13' ? '###-{0}-#####-###-#' : '{0}-#####-###-#';
if (Object.keys(groups).includes(this.locale)) {
mask = (0, _stringTemplate2.default)(mask, groups[this.locale]);
} else {
mask = (0, _stringTemplate2.default)(mask, groups.default);
}
return this.customCode({ mask: mask });
}
/**
* Generate EAN (European Article Number) code. Default is
* EAN-13, but you also can use EAN-8.
* @param opts {object} Options
* @param [opts.format=ean-13] {string} Format of EAN.
*/
}, {
key: 'ean',
value: function ean() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$format2 = opts.format,
format = _opts$format2 === undefined ? 'ean-13' : _opts$format2;
var mask = format === 'ean-8' ? '########' : '#############';
return this.customCode({ mask: mask });
}
/**
* Generate a random IMEI (International Mobile Station Equipment Identity).
*/
}, {
key: 'imei',
value: function imei() {
var num = _lodash2.default.sample(CODE.IMEI_TACS) + this.customCode({ mask: '######' });
return num + (0, _util.luhnChecksum)(num);
}
/**
* Generate a random PIN code.
* @param opts {object} Options
* @param [opts.mask=####] {string} Mask for PIN code.
*/
}, {
key: 'pin',
value: function pin() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$mask3 = opts.mask,
mask = _opts$mask3 === undefined ? '####' : _opts$mask3;
return this.customCode({ mask: mask });
}
}]);
return Code;
}();
var Text = exports.Text = function () {
/**
* Class for generate text data, i.e text, lorem ipsum and another.
* @param opts {object} Options
* @param [opts.locale=en] {string} Current locale
*/
function Text() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Text);
var _opts$locale3 = opts.locale,
locale = _opts$locale3 === undefined ? 'en' : _opts$locale3;
this.locale = locale;
this.data = (0, _util.pull)('text.json', locale);
}
/**
* Get an alphabet for current locale.
* @param opts {object} Options
* @param [opts.letterCase=uppercase] {string}
*/
_createClass(Text, [{
key: 'alphabet',
value: function alphabet() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$letterCase = opts.letterCase,
letterCase = _opts$letterCase === undefined ? 'uppercase' : _opts$letterCase;
return this.data.alphabet[letterCase];
}
/**
* Generate a random level of danger or something else.
*/
}, {
key: 'level',
value: function level() {
return _lodash2.default.sample(this.data.level);
}
/**
* Generate the text.
* @param opts {object} Options
* @param [opts.quantity=5] {number} Quantity of sentences.
*/
}, {
key: 'text',
value: function text() {
var _this = this;
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$quantity = opts.quantity,
quantity = _opts$quantity === undefined ? 5 : _opts$quantity;
var text = '';
[].concat(_toConsumableArray(Array(quantity))).forEach(function () {
text += _lodash2.default.sample(_this.data.text);
});
return text;
}
/**
* Get a random sentence from text.
*/
}, {
key: 'sentence',
value: function sentence() {
return this.text(1);
}
/**
* Get the random words.
* @param opts {object} Options
* @param [opts.quantity=5] {number} Quantity of words. Default is 5.
*/
}, {
key: 'words',
value: function words() {
var _this2 = this;
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$quantity2 = opts.quantity,
quantity = _opts$quantity2 === undefined ? 5 : _opts$quantity2;
return [].concat(_toConsumableArray(Array(quantity))).map(function () {
return _lodash2.default.sample(_this2.data.words.normal);
});
}
/**
* Get a random word.
*/
}, {
key: 'word',
value: function word() {
return this.words(1)[0];
}
/**
* Get a random swear word.
*/
}, {
key: 'swearWord',
value: function swearWord() {
return _lodash2.default.sample(this.data.words.bad);
}
/**
* Get a random quote.
*/
}, {
key: 'quote',
value: function quote() {
return _lodash2.default.sample(this.data.quotes);
}
/**
* Get a random color
*/
}, {
key: 'color',
value: function color() {
return _lodash2.default.sample(this.data.color);
}
/**
* Generate a random hex color.
*/
}, {
key: 'hexColor',
value: function hexColor() {
var letters = '0123456789ABCDEF';
return '#' + _lodash2.default.sampleSize(letters, 6).join('');
}
/**
* Get a random answer in current language.
*/
}, {
key: 'answer',
value: function answer() {
return _lodash2.default.sample(this.data.answers);
}
}]);
return Text;
}();
var Address = exports.Address = function () {
/**
* Class for generate fake address data.
* @param opts {object} Options
* @param [opts.locale=en] {string} Current locale
*/
function Address() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Address);
var _opts$locale4 = opts.locale,
locale = _opts$locale4 === undefined ? 'en' : _opts$locale4;
this.locale = locale;
this.data = (0, _util.pull)('address.json', locale);
}
/**
* Generate a random street number.
*/
_createClass(Address, [{
key: 'streetNumber',
value: function streetNumber() {
return _lodash2.default.random(1, 1400);
}
/**
* Get a random street name.
*/
}, {
key: 'streetName',
value: function streetName() {
return _lodash2.default.sample(this.data.street.name);
}
/**
* Get a random street suffix.
*/
}, {
key: 'streetSuffix',
value: function streetSuffix() {
return _lodash2.default.sample(this.data.street.suffix);
}
/**
* Get a random full address (include Street number, suffix and name).
*/
}, {
key: 'address',
value: function address() {
if (ADDRESS.SHORTENED_ADDRESS_FMT.includes(this.locale)) {
if (this.locale !== 'ko') {
return (0, _stringTemplate2.default)(this.data.address_fmt, {
st_num: this.streetNumber(),
st_name: this.streetName()
});
}
}
if (this.locale === 'ja') {
var cities = this.data.city;
return (0, _stringTemplate2.default)(this.data.address_fmt, {
city: _lodash2.default.sample(cities),
n: _lodash2.default.random(1, 100),
nn: _lodash2.default.random(1, 100),
nnn: _lodash2.default.random(1, 100)
});
}
return (0, _stringTemplate2.default)(this.data.address_fmt, {
st_num: this.streetNumber(),
st_name: this.streetName(),
st_sfx: this.streetSuffix()
});
}
/**
* Get a random states or subject of country.
* @param opts {object} Options
* @param [opts.abbr=false] If True then return ISO (ISO 3166-2)
* code of state/region/province/subject.
*/
}, {
key: 'state',
value: function state() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$abbr3 = opts.abbr,
abbr = _opts$abbr3 === undefined ? false : _opts$abbr3;
var key = abbr ? 'abbr' : 'name';
return _lodash2.default.sample(this.data.state[key]);
}
/**
* Get a random ISO code of country.
* @param opts {object} Options
* @param [opts.format=iso2] {boolean} Format of code (iso2, iso3, numeric).
*/
}, {
key: 'countryISO',
value: function countryISO() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$format3 = opts.format,
format = _opts$format3 === undefined ? 'iso2' : _opts$format3;
var supported = Object.keys(ADDRESS.COUNTRIES_ISO);
if (!supported.includes(format)) {
throw new Error((0, _stringTemplate2.default)('Unsupported format. Use: {0}', supported.toString()));
}
return _lodash2.default.sample(ADDRESS.COUNTRIES_ISO[format]);
}
/**
* Get a random country.
*/
}, {
key: 'country',
value: function country() {
return _lodash2.default.sample(this.data.country.name);
}
/**
* Get a random city for current locale.
*/
}, {
key: 'city',
value: function city() {
return _lodash2.default.sample(this.data.city);
}
/**
* Generate a random value of latitude (-90 to +90).
*/
}, {
key: 'latitude',
value: function latitude() {
return (0, _util.uniform)(-90, 90, 10);
}
/**
* Generate a random value of longitude (-180 to +180).
*/
}, {
key: 'longitude',
value: function longitude() {
return (0, _util.uniform)(-180, 180, 10);
}
/**
* Generate random geo coordinates.
*/
}, {
key: 'coordinates',
value: function coordinates() {
return {
latitude: this.latitude(),
longitude: this.longitude()
};
}
/**
* Get a random continent name or continent
* code (code in international format)
* @param opts {object} Options
* @param [opts.code=false] {boolean} If true returns code.
*/
}, {
key: 'continent',
value: function continent() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$code = opts.code,
code = _opts$code === undefined ? false : _opts$code;
if (code) {
return _lodash2.default.sample(ADDRESS.CONTINENT_CODES);
}
return _lodash2.default.sample(this.data.continent);
}
}]);
return Address;
}();
var Business = exports.Business = function () {
/**
* Class for generating data for business.
* @param opts {object} Options
* @param [opts.locale=en] {string} Current locale
*/
function Business() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Business);
var _opts$locale5 = opts.locale,
locale = _opts$locale5 === undefined ? 'en' : _opts$locale5;
this.locale = locale;
this.data = (0, _util.pull)('business.json', locale);
}
/**
* Get a random type of business entity.
* @param opts {object} Options
* @param [opts.abbr=false] {boolean} If True then return abbreviated company type.
*/
_createClass(Business, [{
key: 'companyType',
value: function companyType() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$abbr4 = opts.abbr,
abbr = _opts$abbr4 === undefined ? false : _opts$abbr4;
var key = abbr ? 'abbr' : 'title';
return _lodash2.default.sample(this.data.company.type[key]);
}
/**
* Get a random company name.
*/
}, {
key: 'company',
value: function company() {
return _lodash2.default.sample(this.data.company.name);
}
/**
* Generate a random copyright.
*/
}, {
key: 'copyright',
value: function copyright() {
return '\xA9 ' + this.company() + ', ' + this.companyType({ abbr: true });
}
/**
* Get a currency code. ISO 4217 format.
*/
}, {
key: 'currencyISO',
value: function currencyISO() {
return _lodash2.default.sample(BUSINESS.CURRENCIES);
}
/**
* Generate a random price.
* @param opts {object} Options
* @param [opts.minimum=10] {number}
* @param [opts.maximum=1000] {number}
*/
}, {
key: 'price',
value: function price() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$minimum2 = opts.minimum,
minimum = _opts$minimum2 === undefined ? 10 : _opts$minimum2,
_opts$maximum2 = opts.maximum,
maximum = _opts$maximum2 === undefined ? 1000 : _opts$maximum2;
var currencies = BUSINESS.CURRENCY_SYMBOLS;
if (Object.keys(currencies).includes(this.locale)) {
return (0, _util.uniform)(minimum, maximum, 2) + ' ' + currencies[this.locale];
}
return (0, _util.uniform)(minimum, maximum, 2) + ' ' + currencies.default;
}
}]);
return Business;
}();
var Personal = exports.Personal = function () {
/**
* Class for generate personal data, i.e names, surnames,
* age and another.
* @param opts {object} Options
* @param [opts.locale=en] {string} Current locale
*/
function Personal() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Personal);
var _opts$locale6 = opts.locale,
locale = _opts$locale6 === undefined ? 'en' : _opts$locale6;
this.locale = locale;
this.data = (0, _util.pull)('personal.json', locale);
this.userNames = (0, _util.pull)('personal.json', 'en').names;
this._store = {
age: 0
};
this.customCode = new Code({ locale: 'en' }).customCode;
}
/**
* Get a random integer value.
* @param opts {object} Options
* @param [opts.minimum=16] {number} Minimum value
* @param [opts.maximum=66] {number} Maximum value
*/
_createClass(Personal, [{
key: 'age',
value: function age() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$minimum3 = opts.minimum,
minimum = _opts$minimum3 === undefined ? 16 : _opts$minimum3,
_opts$maximum3 = opts.maximum,
maximum = _opts$maximum3 === undefined ? 66 : _opts$maximum3;
var num = _lodash2.default.random(minimum, maximum);
this._store.age = num;
return num;
}
/**
* Get a count of child's. Depend on previous generated age.
* @param opts {object} Options
* @param [opts.maxChildren=5] {number} Maximum count of child's.
*/
}, {
key: 'childCount',
value: function childCount() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$maxChildren = opts.maxChildren,
maxChildren = _opts$maxChildren === undefined ? 5 : _opts$maxChildren;
var age = this._store.age || this.age();
return age < 18 ? 0 : _lodash2.default.random(0, maxChildren);
}
/**
* Get a work experience. Depend on previous generated age.
* @param opts {object} Options
* @param [opts.startFrom=22] {number} Age then person start to work.
*/
}, {
key: 'workExperience',
value: function workExperience() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$startFrom = opts.startFrom,
startFrom = _opts$startFrom === undefined ? 22 : _opts$startFrom;
var age = this._store.age || this.age();
var experience = age - startFrom;
return experience < 0 ? 0 : experience;
}
/**
* Get a random name.
* @param opts {object} Options
* @param [opts.gender=female] {string} Person gender;
*/
}, {
key: 'name',
value: function name() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$gender = opts.gender,
gender = _opts$gender === undefined ? 'female' : _opts$gender;
return _lodash2.default.sample(this.data.names[gender]);
}
/**
* Get a random surname.
* @param opts {object} Options
* @param [opts.gender=female] {string} Person gender;
*/
}, {
key: 'surname',
value: function surname() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$gender2 = opts.gender,
gender = _opts$gender2 === undefined ? 'female' : _opts$gender2;
if (['ru', 'is', 'uk'].includes(this.locale)) {
return _lodash2.default.sample(this.data.surnames[gender]);
}
return _lodash2.default.sample(this.data.surnames);
}
/**
* Get a random title (prefix/suffix) for name.
* @param opts {object} Options
* @param [opts.gender=female] {string} Person gender;
* @param [opts.titleType=typical] {string} The type of title ('typical' and 'academic').
*/
}, {
key: 'title',
value: function title() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$gender3 = opts.gender,
gender = _opts$gender3 === undefined ? 'female' : _opts$gender3,
_opts$titleType = opts.titleType,
titleType = _opts$titleType === undefined ? 'typical' : _opts$titleType;
return _lodash2.default.sample(this.data.title[gender][titleType]);
}
/**
* Generate a random full name.
* @param opts {object} Options
* @param [opts.gender=female] {string}
* @param [opts.reversed=false] {boolean} if true: surname/name else name/surname
* @returns {*}
*/
}, {
key: 'fullName',
value: function fullName() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$gender4 = opts.gender,
gender = _opts$gender4 === undefined ? 'female' : _opts$gender4,
_opts$reversed = opts.reversed,
reversed = _opts$reversed === undefined ? false : _opts$reversed;
var string = reversed ? '{1} {0}' : '{0} {1}';
return (0, _stringTemplate2.default)(string, this.name({ gender: gender }), this.surname({ gender: gender }));
}
/**
* Get a random username with digits. Username generated
* from names (en) for all locales.
* @param opts {object} Options
* @param [opts.gender=female] {string} Person gender;
*/
}, {
key: 'username',
value: function username() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$gender5 = opts.gender,
gender = _opts$gender5 === undefined ? 'female' : _opts$gender5;
var formats = ['{0}{1}', '{0}_{1}', '{0}-{1}'];
return (0, _stringTemplate2.default)(_lodash2.default.sample(formats), _lodash2.default.sample(this.userNames[gender]).toLowerCase(), _lodash2.default.random(1, 9999));
}
}, {
key: 'email',
/**
* Generate a random email.
* @param opts {object} Options
* @param [opts.gender=female] Person gender;
* @param [opts.domains] {string} Domains list; Default is gmail, yandex, yahoo, outlook, live;
*/
value: function email() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$gender6 = opts.gender,
gender = _opts$gender6 === undefined ? 'female' : _opts$gender6,
_opts$domains = opts.domains,
domains = _opts$domains === undefined ? NETWORK.EMAIL_DOMAINS : _opts$domains;
return '' + this.username({ gender: gender }) + _lodash2.default.sample(domains);
}
}, {
key: 'bitcoin',
/**
* Generate a random bitcoin address. Currently supported only two
* address formats that are most popular: 'P2PKH' and 'P2SH'
*/
value: function bitcoin() {
var type = _lodash2.default.sample(['1', '3']);
var lettersAndDigits = [].concat(_toConsumableArray(_util.digits), _toConsumableArray(_util.asciiLetters));
return '' + type + [].concat(_toConsumableArray(Array(33))).map(function () {
return _lodash2.default.sample(lettersAndDigits);
}).join('');
}
/**
* Generate a random card verification value (CVV).
*/
}, {
key: 'cvv',
value: function cvv() {
return _lodash2.default.random(100, 999);
}
// TODO: Implement w/o external lib;
/**
* Generate a random credit card number.
* @param opts {object} Options
* @param [opts.cardType=visa] {string} Issuing Network. Default is Visa.
*/
}, {
key: 'creditCardNumber',
value: function creditCardNumber() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$cardType = opts.cardType,
cardType = _opts$cardType === undefined ? 'visa' : _opts$cardType;
if (['visa', 'vi', 'v'].includes(cardType)) {
return _creditcardGenerator2.default.GenCC('VISA')[0];
}
if (['mastercard', 'm', 'mc', 'master'].includes(cardType)) {
return _creditcardGenerator2.default.GenCC('Mastercard')[0];
}
if (['american_express', 'amex', 'ax', 'a'].includes(cardType)) {
return _creditcardGenerator2.default.GenCC('Amex')[0];
}
throw new Error('Unsupported card type');
}
/**
* Generate a random expiration date for credit card.
* @param opts {object} Options
* @param [opts.minimum=16] {number} Date of issue.
* @param [opts.maximum=25] {number} Maximum of expiration_date.
*/
}, {
key: 'creditCardExpirationDate',
value: function creditCardExpirationDate() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$minimum4 = opts.minimum,
minimum = _opts$minimum4 === undefined ? 16 : _opts$minimum4,
_opts$maximum4 = opts.maximum,
maximum = _opts$maximum4 === undefined ? 25 : _opts$maximum4;
var month = _lodash2.default.random(1, 12);
var year = _lodash2.default.random(minimum, maximum);
return (month < 10 ? '0' + month : month) + '/' + year;
}
/**
* Generate a random CID code.
*/
}, {
key: 'cid',
value: function cid() {
return _lodash2.default.random(1000, 9999);
}
/**
* Generate a random PayPal account.
*/
}, {
key: 'paypal',
value: function paypal() {
return this.email();
}
// TODO : Add more socials;
/**
* Generate profile for random social network.
* @param opts {object} Options
* @param [opts.gender=female] {string} Gender of user.
*/
}, {
key: 'socialMediaProfile',
value: function socialMediaProfile() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$gender7 = opts.gender,
gender = _opts$gender7 === undefined ? 'female' : _opts$gender7;
var urls = ['http://facebook.com/{0}', 'http://twitter.com/{0}', 'http://medium.com/@{0}'];
return (0, _stringTemplate2.default)(_lodash2.default.sample(urls), this.username(gender));
}
/**
* Get a random title of gender, code for the representation
* of human sexes is an international standard that defines a
* representation of human sexes through a language-neutral single-digit
* code or symbol of gender.
* @param opts {object} Options
* @param [opts.iso5218=false] {boolean}
* @param [opts.symbol=false] {boolean}
*/
}, {
key: 'gender',
value: function gender() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$iso = opts.iso5218,
iso5218 = _opts$iso === undefined ? false : _opts$iso,
_opts$symbol = opts.symbol,
symbol = _opts$symbol === undefined ? false : _opts$symbol;
// The four codes specified in ISO/IEC 5218 are:
// 0 = not known,
// 1 = male,
// 2 = female,
// 9 = not applicable.
if (iso5218) {
return _lodash2.default.sample([0, 1, 2, 9]);
}
if (symbol) {
return _lodash2.default.sample(PERSONAL.GENDER_SYMBOLS);
}
return _lodash2.default.sample(this.data.gender);
}
/**
* Generate a random height in M (Meter).
* @param opts {object} Options
* @param [opts.minimum=1.5] {number}
* @param [opts.maximum=2] {number}
*/
}, {
key: 'height',
value: function height() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$minimum5 = opts.minimum,
minimum = _opts$minimum5 === undefined ? 1.5 : _opts$minimum5,
_opts$maximum5 = opts.maximum,
maximum = _opts$maximum5 === undefined ? 2 : _opts$maximum5;
return (0, _util.uniform)(minimum, maximum, 2);
}
/**
* Generate a random weight in Kg.
* @param opts {object} Options
* @param [opts.minimum=38] {number}
* @param [opts.maximum=90] {number}
*/
}, {
key: 'weight',
value: function weight() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$minimum6 = opts.minimum,
minimum = _opts$minimum6 === undefined ? 38 : _opts$minimum6,
_opts$maximum6 = opts.maximum,
maximum = _opts$maximum6 === undefined ? 90 : _opts$maximum6;
return (0, _util.uniform)(minimum, maximum, 2);
}
/**
* Get a random blood type.
*/
}, {
key: 'bloodType',
value: function bloodType() {
return _lodash2.default.sample(PERSONAL.BLOOD_GROUPS);
}
/**
* Get a random (LOL) sexual orientation.
* @param opts {object} Options
* @param [opts.symbol=false] {boolean} Unicode symbol.
*/
}, {
key: 'sexualOrientation',
value: function sexualOrientation() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$symbol2 = opts.symbol,
symbol = _opts$symbol2 === undefined ? false : _opts$symbol2;
if (symbol) {
return _lodash2.default.sample(PERSONAL.SEXUALITY_SYMBOLS);
}
return _lodash2.default.sample(this.data.sexuality);
}
/**
* Get a random job.
*/
}, {
key: 'occupation',
value: function occupation() {
return _lodash2.default.sample(this.data.occupation);
}
/**
* Get a random political views.
*/
}, {
key: 'politicalViews',
value: function politicalViews() {
return _lodash2.default.sample(this.data.political_views);
}
/**
* Get a random worldview.
*/
}, {
key: 'worldView',
value: function worldView() {
return _lodash2.default.sample(this.data.worldview);
}
/**
* Get a random view on.
*/
}, {
key: 'viewOn',
value: function viewOn() {
return _lodash2.default.sample(this.data.views_on);
}
/**
* Get a random nationality.
* @param opts {object} Options
* @param [opts.gender=female] {string} Person gender;
*/
}, {
key: 'nationality',
value: function nationality() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$gender8 = opts.gender,
gender = _opts$gender8 === undefined ? 'female' : _opts$gender8;
var separatedLocales = ['ru', 'uk'];
if (separatedLocales.includes(this.locale)) {
return _lodash2.default.sample(this.data.nationality[gender]);
}
return _lodash2.default.sample(this.data.nationality);
}
/**
* Get a random university.
*/
}, {
key: 'university',
value: function university() {
return _lodash2.default.sample(this.data.university);
}
/**
* Get a random academic degree.
*/
}, {
key: 'academicDegree',
value: function academicDegree() {
return _lodash2.default.sample(this.data.academic_degree);
}
/**
* Get a random language.
*/
}, {
key: 'language',
value: function language() {
return _lodash2.default.sample(this.data.language);
}
/**
* Get a random movie for current locale.
*/
}, {
key: 'favoriteMovie',
value: function favoriteMovie() {
return _lodash2.default.sample(this.data.favorite_movie);
}
/**
* Get a random music genre.
*/
}, {
key: 'favoriteMusicGenre',
value: function favoriteMusicGenre() {
return _lodash2.default.sample(PERSONAL.FAVORITE_MUSIC_GENRE);
}
/**
* Generate a random phone number.
*/
}, {
key: 'telephone',
value: function telephone() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$mask4 = opts.mask,
mask = _opts$mask4 === undefined ? null : _opts$mask4,
_opts$placeholder = opts.placeholder,
placeholder = _opts$placeholder === undefined ? '#' : _opts$placeholder;
if (!mask) {
mask = _lodash2.default.sample(this.data.telephone_fmt);
}
return this.customCode({ mask: mask, digit: placeholder });
}
/**
* Generate a random identifier by mask. With this method you can generate
* any identifiers that you need. Simply select the mask that you need.
* @param opts {object} Options
* @param [opts.mask=##-##/##] {string}
*/
}, {
key: 'identifier',
value: function identifier() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$mask5 = opts.mask,
mask = _opts$mask5 === undefined ? '##-##/##' : _opts$mask5;
return this.customCode({ mask: mask });
}
/**
* Get a random level of English.
*/
}, {
key: 'levelOfEnglish',
value: function levelOfEnglish() {
return _lodash2.default.sample(PERSONAL.ENGLISH_LEVEL);
}
}]);
return Personal;
}();
var File = exports.File = function () {
function File() {
_classCallCheck(this, File);
}
_createClass(File, [{
key: 'extension',
/**
* Get a random file extension from list.
* @param opts {object} Options
* @param [opts.fileType=text] {string} File type (source, text, data, audio, video, image,
* executable, compressed).
*/
value: function extension() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$fileType = opts.fileType,
fileType = _opts$fileType === undefined ? 'text' : _opts$fileType;
return _lodash2.default.sample(FILE.EXTENSIONS[fileType]);
}
/**
* Get a random mime type from list.
* @param opts {object} Options
* @param [opts.type=application] {string} Type of media: (application,
* image, video, audio, text, message).
*/
}, {
key: 'mimeType',
value: function mimeType() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$type = opts.type,
type = _opts$type === undefined ? 'application' : _opts$type;
if (!Object.keys(FILE.MIME_TYPES).includes(type)) {
throw new Error('Unsupported mime type!');
}
return _lodash2.default.sample(FILE.MIME_TYPES[type]);
}
}]);
return File;
}();
var Science = exports.Science = function () {
/**
* Class for getting scientific data
* @param opts {object} Options
* @param [opts.locale=en] {string} Current locale
*/
function Science() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Science);
var _opts$locale7 = opts.locale,
locale = _opts$locale7 === undefined ? 'en' : _opts$locale7;
this.locale = locale;
this.data = (0, _util.pull)('science.json', locale);
}
/**
* Get a random mathematical formula.
*/
_createClass(Science, [{
key: 'mathFormula',
value: function mathFormula() {
return _lodash2.default.sample(SCIENTIFIC.MATH_FORMULAS);
}
/**
* Generate a random chemical element.
* @param opts {object} Options
* @param [opts.nameOnly=true] {boolean} If false then will be returned dict.
*/
}, {
key: 'chemicalElement',
value: function chemicalElement() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$nameOnly = opts.nameOnly,
nameOnly = _opts$nameOnly === undefined ? true : _opts$nameOnly;
var _$sample$split = _lodash2.default.sample(this.data.chemical_element).split('|'),
_$sample$split2 = _slicedToArray(_$sample$split, 3),
name = _$sample$split2[0],
symbol = _$sample$split2[1],
number = _$sample$split2[2];
if (!nameOnly) {
return { name: name, symbol: symbol, number: number };
}
return name;
}
/**
* Generate a random link to scientific article on Wikipedia.
*/
}, {
key: 'scientificArticle',
value: function scientificArticle() {
return _lodash2.default.sample(this.data.article);
}
}]);
return Science;
}();
var Development = exports.Development = function () {
function Development() {
_classCallCheck(this, Development);
}
_createClass(Development, [{
key: 'softwareLicense',
value: function softwareLicense() {
return _lodash2.default.sample(DEVELOPMENT.LICENSES);
}
/**
* Generate a random version information.
*/
}, {
key: 'version',
value: function version() {
return (0, _stringTemplate2.default)('{0}.{1}.{2}', _lodash2.default.random(0, 11), _lodash2.default.random(0, 11), _lodash2.default.random(0, 11));
}
/**
* Get a random database name.
* @param opts {object} Options
* @param [opts.noSQL=false] {boolean} only NoSQL databases.
*/
}, {
key: 'database',
value: function database() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$noSQL = opts.noSQL,
noSQL = _opts$noSQL === undefined ? false : _opts$noSQL;
if (noSQL) {
return _lodash2.default.sample(DEVELOPMENT.NOSQL);
}
return _lodash2.default.sample(DEVELOPMENT.SQL);
}
/**
* Get a random containerization system.
*/
}, {
key: 'container',
value: function container() {
return _lodash2.default.sample(DEVELOPMENT.CONTAINER);
}
/**
* Get a random version control system.
*/
}, {
key: 'versionControlSystem',
value: function versionControlSystem() {
return _lodash2.default.sample(['Git', 'Subversion']);
}
/**
* Get a random programming language from the list.
*/
}, {
key: 'programmingLanguage',
value: function programmingLanguage() {
return _lodash2.default.sample(DEVELOPMENT.PROGRAMMING_LANGS);
}
/**
* Get a random backend stack.
*/
}, {
key: 'backend',
value: function backend() {
return _lodash2.default.sample(DEVELOPMENT.BACKEND);
}
/**
* Get a random frontend stack.
*/
}, {
key: 'frontend',
value: function frontend() {
return _lodash2.default.sample(DEVELOPMENT.FRONTEND);
}
/**
* Get a random operating system or distributive name.
*/
}, {
key: 'os',
value: function os() {
return _lodash2.default.sample(DEVELOPMENT.OS);
}
/**
* Generate a random question id for StackOverFlow
* and return url to a question.
*/
}, {
key: 'stackOverflowQuestion',
value: function stackOverflowQuestion() {
return 'http://stackoverflow.com/questions/' + _lodash2.default.random(1000000, 9999999);
}
}]);
return Development;
}();
var Food = exports.Food = function () {
/**
* Class for Food, i.e fruits, vegetables, berries and other.
* @param opts {object} Options
* @param [opts.locale=en] {string} Current locale
*/
function Food() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Food);
var _opts$locale8 = opts.locale,
locale = _opts$locale8 === undefined ? 'en' : _opts$locale8;
this.locale = locale;
this.data = (0, _util.pull)('food.json', locale);
}
/**
* Get a random vegetable.
*/
_createClass(Food, [{
key: 'vegetable',
value: function vegetable() {
return _lodash2.default.sample(this.data.vegetables);
}
/**
* Get a random name of fruit or berry .
*/
}, {
key: 'fruit',
value: function fruit() {
return _lodash2.default.sample(this.data.fruits);
}
/**
* Get a random dish for current locale.
*/
}, {
key: 'dish',
value: function dish() {
return _lodash2.default.sample(this.data.dishes);
}
/**
* Get a random spices or herbs.
*/
}, {
key: 'spices',
value: function spices() {
return _lodash2.default.sample(this.data.spices);
}
/**
* Get a random alcoholic drink.
*/
}, {
key: 'drink',
value: function drink() {
return _lodash2.default.sample(this.data.drinks);
}
}]);
return Food;
}();
var Hardware = exports.Hardware = function () {
function Hardware() {
_classCallCheck(this, Hardware);
}
_createClass(Hardware, [{
key: 'resolution',
/**
* Get a random screen resolution.
*/
value: function resolution() {
return _lodash2.default.sample(HARDWARE.RESOLUTIONS);
}
/**
* Get a random size of screen in inch.
*/
}, {
key: 'screenSize',
value: function screenSize() {
return _lodash2.default.sample(HARDWARE.SCREEN_SIZES);
}
/**
* Get a random CPU name.
*/
}, {
key: 'cpu',
value: function cpu() {
return _lodash2.default.sample(HARDWARE.CPU);
}
/**
* Get a random frequency of CPU.
*/
}, {
key: 'cpuFrequency',
value: function cpuFrequency() {
return (0, _util.uniform)(1.5, 4.3, 1) + 'GHz';
}
/**
* Get a random generation.
* @param opts {object} Options
* @param [opts.abbr=false] {boolean} {boolean}
*/
}, {
key: 'generation',
value: function generation() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _opts$abbr5 = opts.abbr,
abbr = _opts$abbr5 === undefined ? false : _opts$abbr5;
if (abbr) {
return _lodash2.default.sample(HARDWARE.GENERATION_ABBR);
}
return _lodash2.default.sample(HARDWARE.GENERATION);
}
/**
* Get a random CPU code name.
*/
}, {
key: 'cpuCodename',
value: function cpuCodename() {
return _lodash2.default.sample(HARDWARE.CPU_CODENAMES);
}
/**
* Get a random RAM type.
*/
}, {
key: 'ramType',
value: function ramType() {
return _lodash2.default.sample(['DDR2', 'DDR3', 'DDR4']);
}
/**
* Get a random size of RAM.
*/
}, {
key: 'ramSize',
value: function ramSize() {
return _lodash2.default.sample(['4', '6', '8', '16', '32', '64']) + 'GB';
}
/**
* Get a random value from list.
*/
}, {
key: 'ssdOrHdd',
value: function ssdOrHdd() {
return _lodash2.default.sample(HARDWARE.HDD_SSD);
}
/**
* Get a random graphics.
*/
}, {
key: 'graphics',
value: function graphics() {
return _lodash2.default.sample(HARDWARE.GRAPHICS);
}
/**
* Get a random manufacturer.
*/
}, {
key: 'manufacturer',
value: function manufacturer() {
return _lodash2.default.sample(HARDWARE.MANUFACTURERS);
}
/**
* Get a random phone model.
*/
}, {
key: 'phoneModel',
value: function phoneModel() {
return _lodash2.default.sample(HARDWARE.PHONE_MODELS);
}
}]);
return Hardware;
}();
var ClothingSizes = exports.ClothingSizes = function () {
function ClothingSizes() {
_classCallCheck(this, ClothingSizes);
}
_createClass(ClothingSizes, [{
key: 'international',
/**
* Get a random size in international format.
*/
value: function international() {
return _lodash2.default.sample(['L', 'M', 'S', 'XL', 'XS', 'XXL', 'XXS', 'XXXL']);
}
/**
* Generate a random clothing size in European format.
*/