{"version":3,"file":"data-utilities.mjs","sources":["../../src/data-utilities.ts"],"sourcesContent":["import { randomUUID } from 'crypto'\n\n/**\n * Generates a random number between 0 or [Number.MIN_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER) when `allowNegative` is set\n * and [Number.MAX_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER).\n *\n * ```typescript\n *   const unsignedNumber = randomNumber()\n *   const signedNumber = randomNumber(true)\n * ```\n * @param {boolean} [allowNegative=false] A flag to allow negative numbers.\n */\nexport function randomNumber(allowNegative = false): number {\n  return randomNumberBetween(allowNegative ? Number.MIN_SAFE_INTEGER : 0, Number.MAX_SAFE_INTEGER)\n}\n\n/**\n * Generates a random number between `min` and `max`.\n *\n * ```typescript\n *   const number = randomNumber(10, 20)\n * ```\n *\n * @param {number} min The minimum (inclusive).\n * @param {number} max The maximum (inclusive).\n */\nexport function randomNumberBetween(min: number, max: number): number {\n  min = Math.ceil(min)\n  max = Math.floor(max)\n  return Math.floor(Math.random() * (max - min + 1) + min)\n}\n\n/**\n * Generates a float between `min` and `max`.\n *\n * ```typescript\n *   const number = randomFloatBetween(10, 20)\n * ```\n * @param {number} min The minimum (inclusive).\n * @param {number} max The maximum (inclusive).\n * @param {number} [decimals] The maximum amount of decimals.\n */\nexport function randomFloatBetween(min: number, max: number, decimals?: number) {\n  const float = Math.random() * (max - min) + min\n  return decimals ? parseFloat(float.toFixed(decimals)) : float\n}\n\n/**\n * Generates a random string with a length between `min` and `max`.\n *\n * ```typescript\n *   const string = randomString(5, 10)\n * ```\n *\n * @param {number} min The minimum length (inclusive).\n * @param {number} max The maximum length (inclusive).\n */\nexport function randomString(min: number, max: number): string {\n  let result = ''\n  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n  const charactersLength = characters.length\n  const length = randomNumberBetween(min, max)\n  for (let i = 0; i < length; i++) {\n    result += characters.charAt(Math.floor(Math.random() * charactersLength))\n  }\n  return result\n}\n\n/**\n * Generates a cryptographically random UUID in the form of 00000000-0000-0000-0000-000000000000.\n *\n * ```typescript\n *   const id = randomId()\n * ```\n */\nexport function randomId(): string {\n  return randomUUID()\n}\n\nexport const randomDateRangeMin = new Date(1980, 1, 1)\nexport const randomDateRangeMax = new Date(2050, 1, 1)\n\n/**\n * Generates a random date between {@linkplain randomDateRangeMin} and {@linkplain randomDateRangeMax}.\n *\n * ```typescript\n *   const date = randomDate()\n * ```\n */\nexport function randomDate(): Date {\n  return randomDateBetween(randomDateRangeMax, randomDateRangeMax)\n}\n\n/**\n * Generates a random date between `min` and `max`.\n *\n * ```typescript\n *   const date = randomDateBetween(new Date(2001, 1, 1), new Date(2030, 1, 1))\n * ```\n *\n * @param {Date} min The minimum date (inclusive).\n * @param {Date} max The maximum date (inclusive).\n */\nexport function randomDateBetween(min: Date, max: Date): Date {\n  return new Date(randomNumberBetween(new Date(min).getTime(), new Date(max).getTime()))\n}\n\n/**\n * Generates a random bool `true` or `false`\n *\n * ```typescript\n *   const bool = randomBoolean()\n * ```\n */\nexport function randomBoolean(): boolean {\n  return randomNumberBetween(0, 1) === 1\n}\n\nconst incrementedNumberMap = new Map<string, number>()\n\n/**\n * Resets the incremented counters set when called by {@linkplain incrementedNumber}.\n */\nexport function resetIncrementedNumbers() {\n  incrementedNumberMap.clear()\n}\n\n/**\n * Returns an incremented number or zero if be called with the `key` for the first time.\n *\n * ```typescript\n *   let countKey1 = incrementedNumber('key1')\n *   countKey1 = incrementedNumber('key1')\n *   console.log(countKey1) // Outputs 1\n *\n *   const countKey2 = incrementedNumber('key2')\n *   console.log(countKey2) // Outputs 0\n * ```\n *\n * @param {string} key The key to track the incremented counter against.\n */\nexport function incrementedNumber(key: string): number {\n  if (!incrementedNumberMap.has(key)) {\n    incrementedNumberMap.set(key, 0)\n  }\n  incrementedNumberMap.set(key, (incrementedNumberMap.get(key) ?? 0) + 1)\n  return incrementedNumberMap.get(key) ?? 0\n}\n\n/**\n * Returns a random element from the supplied collection.\n *\n * ```typescript\n *   const randomElement = randomElement([1, 2, 3, 4, 5])\n * ```\n *\n * @param {Array} elements The collection to select a random element from.\n */\nexport function randomElement<T>(elements: T[]): T {\n  return elements[randomNumberBetween(0, elements.length - 1)]\n}\n\n// prettier-ignore\nconst nouns = ['rock', 'plant', 'carrot', 'hamburger', 'pie', 'mood', 'caterpillar', 'grasshopper', 'lizard', 'monkey', 'table', 'tesla', 'dog', 'cat', 'rocket', 'moon', 'atom', 'art', 'map', 'music', 'policy', 'truth', 'ball', 'lamp', 'bike', 'bus', 'plane', 'ship', 'boat']\n// prettier-ignore\nconst adjectives = ['adorable', 'agreeable', 'adventurous', 'bewildered', 'blushing', 'brave', 'careful', 'clever', 'condemned', 'creepy', 'disturbed', 'doubtful', 'clever', 'smart', 'brainy', 'breakable', 'blushing', 'clumsy', 'crazy', 'exuberant', 'funny', 'hilarious', 'jealous', 'modern']\n// prettier-ignore\nconst adverb = ['really', 'madly', 'abnormally', 'always', 'anxiously', 'blissfully', 'frenetically', 'queasily', 'warmly', 'rightfully', 'generally', 'hopefully', 'wonderfully', 'gloomily', 'strictly', 'busily', 'terribly', 'mightily', 'sometimes', 'greatly', 'lazily', 'carelessly', 'rudely']\n// prettier-ignore\nconst mailProviders = ['gmail.com', 'outlook.com', 'yahoo.com', 'hotmail.com', 'aol.com', 'msn.com', 'hotmail.co.uk', 'web.de', 'me.com', 'mac.com']\n\n/**\n * Generates a random \"thing's\" name.\n *\n * ```text\n *   Examples:\n *\n *   1. really adorable rock\n *   2. madly agreeable plant\n *   3. abnormally adventurous hamburger\n * ```\n *\n * ```typescript\n *   const name = randomThingName()\n * ```\n */\nexport function randomThingName(): string {\n  const name = `${randomElement(adverb)} ${randomElement(adjectives)} ${randomElement(nouns)}`\n  return name[0].toUpperCase() + name.substring(1)\n}\n\n// prettier-ignore\nconst firstNames = [\n  'James', 'Robert', 'John', 'Michael', 'David', 'William', 'Richard', 'Joseph', 'Thomas', 'Charles', 'Christopher', 'Daniel', 'Matthew', 'Anthony', 'Mark', 'Donald', 'Steven', 'Paul', 'Andrew', 'Joshua', 'Kenneth', 'Kevin', 'Brian', 'George', 'Timothy', 'Ronald', 'Edward', 'Jason', 'Jeffrey', 'Ryan', 'Jacob', 'Gary', 'Nicholas', 'Eric', 'Jonathan', 'Stephen', 'Larry', 'Justin', 'Scott', 'Brandon', 'Benjamin', 'Samuel', 'Gregory', 'Alexander', 'Frank', 'Patrick', 'Raymond', 'Jack', 'Dennis', 'Jerry', 'Tyler', 'Aaron', 'Jose', 'Adam', 'Nathan', 'Henry', 'Douglas', 'Zachary', 'Peter', 'Kyle', 'Ethan', 'Walter', 'Noah', 'Jeremy', 'Christian', 'Keith', 'Roger', 'Terry', 'Gerald', 'Harold', 'Sean', 'Austin', 'Carl', 'Arthur', 'Lawrence', 'Dylan', 'Jesse', 'Jordan', 'Bryan', 'Billy', 'Joe', 'Bruce', 'Gabriel', 'Logan', 'Albert', 'Willie', 'Alan', 'Juan', 'Wayne', 'Elijah', 'Randy', 'Roy', 'Vincent', 'Ralph', 'Eugene', 'Russell', 'Bobby', 'Mason', 'Philip', 'Louis',\n  'Mary', 'Patricia', 'Jennifer', 'Linda', 'Elizabeth', 'Barbara', 'Susan', 'Jessica', 'Sarah', 'Karen', 'Lisa', 'Nancy', 'Betty', 'Margaret', 'Sandra', 'Ashley', 'Kimberly', 'Emily', 'Donna', 'Michelle', 'Carol', 'Amanda', 'Dorothy', 'Melissa', 'Deborah', 'Stephanie', 'Rebecca', 'Sharon', 'Laura', 'Cynthia', 'Kathleen', 'Amy', 'Angela', 'Shirley', 'Anna', 'Brenda', 'Pamela', 'Emma', 'Nicole', 'Helen', 'Samantha', 'Katherine', 'Christine', 'Debra', 'Rachel', 'Carolyn', 'Janet', 'Catherine', 'Maria', 'Heather', 'Diane', 'Ruth', 'Julie', 'Olivia', 'Joyce', 'Virginia', 'Victoria', 'Kelly', 'Lauren', 'Christina', 'Joan', 'Evelyn', 'Judith', 'Megan', 'Andrea', 'Cheryl', 'Hannah', 'Jacqueline', 'Martha', 'Gloria', 'Teresa', 'Ann', 'Sara', 'Madison', 'Frances', 'Kathryn', 'Janice', 'Jean', 'Abigail', 'Alice', 'Julia', 'Judy', 'Sophia', 'Grace', 'Denise', 'Amber', 'Doris', 'Marilyn', 'Danielle', 'Beverly', 'Isabella', 'Theresa', 'Diana', 'Natalie', 'Brittany', 'Charlotte', 'Marie', 'Kayla', 'Alexis', 'Lori']\n// prettier-ignore\nconst lastNames = ['Smith', 'Johnson', 'Williams', 'Brown', 'Jones', 'Garcia', 'Miller', 'Davis', 'Rodriguez', 'Martinez', 'Hernandez', 'Lopez', 'Gonzales', 'Wilson', 'Anderson', 'Thomas', 'Taylor', 'Moore', 'Jackson', 'Martin', 'Lee', 'Perez', 'Thompson', 'White', 'Harris', 'Sanchez', 'Clark', 'Ramirez', 'Lewis', 'Robinson', 'Walker', 'Young', 'Allen', 'King', 'Wright', 'Scott', 'Torres', 'Nguyen', 'Hill', 'Flores', 'Green', 'Adams', 'Nelson', 'Baker', 'Hall', 'Rivera', 'Campbell', 'Mitchell', 'Carter', 'Roberts', 'Gomez', 'Phillips', 'Evans', 'Turner', 'Diaz', 'Parker', 'Cruz', 'Edwards', 'Collins', 'Reyes', 'Stewart', 'Morris', 'Morales', 'Murphy', 'Cook', 'Rogers', 'Gutierrez', 'Ortiz', 'Morgan', 'Cooper', 'Peterson', 'Bailey', 'Reed', 'Kelly', 'Howard', 'Ramos', 'Kim', 'Cox', 'Ward', 'Richardson', 'Watson', 'Brooks', 'Chavez', 'Wood', 'James', 'Bennet', 'Gray', 'Mendoza', 'Ruiz', 'Hughes', 'Price', 'Alvarez', 'Castillo', 'Sanders', 'Patel', 'Long', 'Ross', 'Jimenez']\n\n/**\n * Generates a random person's name.\n *\n * ```text\n *   Examples:\n *\n *   1. James Smith\n *   2. Mary Johnson\n *   3. John Williams\n *   5. Patricia Brown\n * ```\n *\n * ```typescript\n *   const name = randomPersonName()\n * ```\n */\nexport function randomPersonName(): string {\n  return `${randomElement(firstNames)} ${randomElement(lastNames)}`\n}\n\n/**\n * Generates a random email address.\n *\n * ```text\n *   Examples:\n *\n *   1. really_adorable_rock@gmail.com\n *   2. madly_agreeable_plant@outlook.com\n *   3. abnormally_adventurous_hamburger@yahoo.com\n * ```\n *\n * ```typescript\n *   const name = randomEmail()\n * ```\n */\nexport function randomEmail(): string {\n  return `${randomElement(adverb)}_${randomElement(adjectives)}_${randomElement(nouns)}@${randomElement(mailProviders)}`\n}\n\n/**\n * Generates a random phone number.\n *\n * ```text\n *   Examples:\n *\n *   1. 1000000000\n *   2. 8974562314\n *   3. 9982214305\n * ```\n *\n * ```typescript\n *   const phoneNumber = randomPhoneNumber()\n * ```\n * @param {number} [length = 10] The length of the phone number.\n */\nexport function randomPhoneNumber(length = 10) {\n  return randomNumberBetween(parseInt('1'.padEnd(length, '0')), parseInt('9'.padEnd(length, '9')))\n}\n\nconst topLevelDomains = ['.com', '.com.au', 'co.uk', '.org', '.net', '.edu']\n\n/**\n * Generates a random url.\n *\n * ```text\n *   Examples:\n *\n *   1. really-adorable-rock.com\n *   2. madly-agreeable-plant.com.au\n *   3. abnormally-adventurous-hamburger.co.uk\n * ```\n *\n * ```typescript\n *   const name = randomUrl()\n * ```\n */\nexport function randomUrl() {\n  return `${randomElement(adverb)}-${randomElement(adjectives)}-${randomElement(nouns)}${randomElement(topLevelDomains)}`\n}\n"],"names":[],"mappings":"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,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;IAC18B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QA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"}