UNPKG

node-elizabeth

Version:
1,812 lines (1,449 loc) 81.7 kB
'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. */