white-elephant

0.0.14 • Public • Published

White Elephant

Generate random data.

Synopsis

White Elephant is your friendly random data provider. It exports both functions and generators, allowing you to easily curate whatever random data suits your needs.

Why?

Random data is useful for testing. But you already know this or you wouldn't be here.

Install

npm i -D white-elephant

Usage

Functions

Functions for creating different types of random data.

const {
    randomNumber,
    randomBoolean,
    randomCharacter,
    randomString,
    randomArray,
    randomObject,
    randomData,
    randomFnCall
} = require('white-elephant');

randomNumber([min = -Number.MAX_SAFE_INTEGER], [max = Number.MAX_SAFE_INTEGER])

Note: Random numbers are generated on a curve in order to ensure you get a good mix of smaller and larger numbers.

randomNumber();
// => 875233846374802

randomNumber();
// => 5

randomNumber();
// => -25192091

randomNumber();
// => 354

randomNumber();
// => -7832096272493

randomNumber(10, 50);
// => 23

randomNumber(1, 10);
// => 9

randomCharacter()

randomCharacter();
// => 'D'

randomCharacter();
// => 'G'

randomCharacter();
// => '5'

randomCharacter();
// => 'q'

randomBoolean()

randomBoolean();
// => true

randomBoolean();
// => true

randomBoolean();
// => false

randomString([length = randomNumber(0, 32)])

randomString();
// => '7N4'

randomString();
// => 'hg8PS7h83ZxtQYN9N3o8BBtyPB4'

randomString();
// => 'Xncs'

randomString();
// => '6GM6VuJuQwUC1E55'

randomString(64);
// => '55ehKHkFKvtrf7f8jnjmuAMeNQqRCG86D826f8JKPb9jaHzwT3qXFtw8efk1FRWJ'

randomArray([maxDepth = 1], [baseLength = randomNumber(0, 16)], [uniformDepth = false], [uniformLength = false])

randomArray();
// => [ 953, 'Y3Q9g51uRTl4J29', 1549115, 95668689985324, null ]

randomArray();
// => [ 41810, 7858, 51256, false, 4750, true, 'JgSH8a49123', false ]

randomArray();
// => [ '7Cq6Iv59q1AiC5793y7odwG8k24GZW6v',
//      818085210,
//      'Ni7jmjS8oMv',
//      'TtT354Z',
//      8,
//      'E4JoDd3Z81zc',
//      '5EjEf93D1nda7ENO1r1iK',
//      'ngfloDt7',
//      'Dl94Ycy5Yn7ha5b',
//      4946,
//      '' ]

randomArray(2);
// => [ [ 5759018,
//        '6a61cX86tYo2lIf1N81ZP6n3874t6aSG',
//        'J7',
//        '3Hk954c',
//        4073,
//        '9zMbZq164xeM9IvA1wgC116',
//        1110,
//        '2Ft3862D4',
//        7381600,
//        225351,
//        702639441764,
//        732175665655 ],
//      [ '8B4l91s94SYh6nJ7erokUm3Im96i',
//        'Uq6pmqW1uw3dAR448g73',
//        91292589537,
//        '3fG6oS3NP7qH2PD9FXtZ846eoW' ],
//      '86S1fj58a93Ed1n7VEDy9RNC38i3gA',
//      { '1f9vPv5WL8O7EOfzG4N8u6o6ti': 82157197434031,
//        '5598Kq7Yyio135IuRsA': false,
//        B7AU44dI446Uv: 6507223558603845,
//        '66S44DIZH9SG4j': 'aShumeOsD9H6t7mOqbP',
//        C2W5W1L2ea429IxAoKAfVL41khk: '65qtccT1AG3I688kH3',
//        '3J4Ah7cKE1w15C': 5069279290 },
//      { '663cSZd5Dnj85R229b8y7HzKx9k': 4353244,
//        '31982h5': 422838,
//        OF4sE2njjpi7KOtj3j96G59qC: 'enICK41i9',
//        Sc4TI5e5L9z: 'fIBSy3o5l1Maoo',
//        '89F1f24A4Me6ao76Z9zKtA5pfXU239lL': 50,
//        '': 'rlL25yJ1N2gpE18w', // yes, empty string is a valid key
//        fYKY7e: 'Tw1F8jiCgiBTLf7',
//        LD1CyK9g32K6Hk14: 'o4b358nR1jzi6XTpTTJAN4' },
//      {} ]

randomArray(1, 10);
// => [ 1665829482979873,
//      'w39e4pnglqs',
//      'miXA9WMXIE8BVAHB24f7',
//      'mq8phtlbvagBCM38LPT6632aM7mRnTap',
//      10486479857,
//      '9z',
//      21499798965768,
//      '9R',
//      571,
//      5244060647 ]

// You can use the `uniformDepth` and `uniformLength` arguments to ensure even depth and even length.
randomArray(3, 1, true, true);
// => [ { O29yzg5dik54jIp6V2JN3kG3oSfFD843: [ 'F4t4j58Hw813QST9xGIts37Rl' ] } ]

randomObject([maxDepth = 1], [baseWidth = randomNumber(0, 16)], [uniformDepth = false], [uniformWidth = false])

randomObject();
// => { rdLn3lhRH5V3pO19LUUlNB2LZ598: '5Dg8v54wdQ4',
//      y4J6NCfH94n: 4977101846,
//      Xat7KPZ2L: 'f5E5M4PnV59i5w1F9ebt',
//      '9r648r8UJ59': 'm7R3kDGo6qVti119oKK4',
//      qvIaE98CN5e8U1k4R3l1hM: 'oE',
//      rxjK46dhn175132SzqlWTI9qvno1K: 'GU2d71',
//      '4rs76tH9Qfrld': false,
//      ZHlscuC5r2i8WHq7O5qEF4zjIYO7: false,
//      A1HwL4r94jkaEf15A213j2l: '3sBX26aKXI98pJK2ns3CCh' }

randomObject();
// => { '85jK8zRKm75ri2rDl8sJU3GIM8W74498': 543901, J98o94Z5: 3690 }

// Note that `maxDepth` doesn't guaranteed depth...
randomObject(2, 1);
// => { fh1PAw64rlpwEMvJDmG3rcA: 8911044642547903 }

// ...and even if the returned object has depth, the child object maybe empty.
randomObject(2, 1);
{ W33d7FHdCiApJ6E54Qk4744: {} }

// Also, note that child objects may be arrays.
randomObject(2, 1);
{ J65rcFwPd88l37682IiljsR6y:
   [ 'UJy9r55KoxXAFL7il37r83Gu',
     573402667,
     0,
     96,
     85130175878499,
     759054611,
     6895888562 ] }

// You can use the `uniformDepth` and `uniformWidth` arguments to ensure even depth and even property count.
randomObject(3, 1, true, true);
// => { IrA8N6pX1Tugm6o2: { k6Vn61b8W9OZKt3HsJLj78XM: [ 199 ] } }

randomData([maxDepth = 1])

randomData();
// => { '4ulpi9je': 'eJdh8S',
//      j9BeN41E9M7FnsCXowV7: 'gUh4W2pwnNrpHp6e8h',
//      EIKRXu2xcw: 'GV85poi12zjJ8CWvP4b5WaD8DIo7s',
//      LMn9R: '',
//      SuXn2nGvLh6z8: 211,
//      x2Ol: '21lr11gFlf9g4CL6z',
//      kDR85E9rr3TKxB2LTkkkyf: 223439547,
//      x6dtMkT85mW5846T4: 'VTGiK8XG9elGn',
//      '3wiC17h98': '4978oCv5qNk',
//      FERxQ4I1fZK721mNlC: 'rRoWqdX',
//      At88RfrZ2tO4Z12keBtA23n9E2Iu47: '69uo4XZNTTZ7SO',
//      L4Za117: 38 }

randomData();
// => [ 24,
//      'xCj4eHpG6HZB3Cupw2y',
//      48496399714921,
//      '78sKZ6jM4e6He39lyysv',
//      51378051,
//      64324900,
//      '2U21Dq4GLA5C1x91GUSPyq6MK9' ]

randomData();
// => '9AhTnj8Jrg864lIL24tcmAI39yK1IE'

randomData();
// => 83214652346

randomData();
// => 99

randomData();
// => '8j6'

randomData();
// => 'f3pq73uSHUyF97A'

randomData();
// => undefined

randomData();
// => [ 'L3nTPr15g', 7850103 ]

// Note that specifying `maxDepth` doesn't mean you're doing to get an object or
// an array.
randomData(2);
// => '5pg92e67W2el847wIdJL'

// `maxDepth` will be respected IF you do happen to get an object or array.
randomData(2);
// => { '6y58UNbm5To4tW98EQMF93IE': null,
//      IZAPlUt46uqwBBa7: 2031,
//      Q18r655aGw2U8xphU7s2jr6twsIk51d:
//       { '7OqRlCbGqJ5t2787Q6f': 'ROoe98dwflwpakN5hk1M7',
//         '85l': 45252516,
//         M61vj3drzrd7tGT: 'venQA3IN583v',
//         Lj53j5uGUX8hBGlh5frGlyuwP8: 'QX5Hu2TK',
//         ev: 31251584100959,
//         g9RNSYxx6954v: 'pfhwSH99tZf3C9IlD',
//         '9TA9': 3114349071344711,
//         TpfaH6awGBFg: 'N11yw5',
//         cdVyXCeeVUUf4Plx13yu8lQ7: 9733019751816,
//         ueq8Ct8mHyv8J1iO4I1dqL: 6366129389963073,
//         P5t6f668Nmegy: 81241,
//         w92LmJx12wuKBzBdz8VNbnofdXTR: '95c9M9HN9A9e8Q953Ac',
//         '4DYq71u51nho7okO922a26uu1uC': '333QdqNEs6OB72KcJ2Eh6' },
//      mbp2DPx3Sz8WKjUIj77of19f3j1go4UT: undefined,
//      '92Pvgfn':
//       { '5': 'i5tVd5iFGSdn2aw4MF62hltD',
//         '4v5398WJX8561O7': 972610848141,
//         '7R5TGR3c1AR39hhdF1PqwgN6841': '15X6o9l8p1QiUc6',
//         '4idcQB2YZ8ZSphB4b6OhJ2': 'aas1432zD',
//         Uvm4Eljrx21: 25170462,
//         '5TZpY5CwY8Db3PH8mWF3UkaDZ3QcYh6O': 324061,
//         qQ2h658XM9mG5p23: 8,
//         Rp: '1A',
//         '29OT61M8fZd': 399222,
//         A5jlhL5p: 'c3E8q7O',
//         b1C4ey313oHG2Y8: 9,
//         X54fj98: 37086961,
//         RJ6ZX8NbubM1b99D2y3hz57huhTu6: 'd7a5E1zK8iXW5p9a5Ltruq4M13HLum9',
//         '5NkyZlxrYmT7aIdv2xiBHATr9Z8HXL': 1,
//         B73QkEN55R75cCZoMmfBdH6fwx72P6g: 29258350068 },
//      '4Jh3r2dD4QD6hoI6SnCW43uT8M36ol': [ 915407 ] }

randomFnCall(...fns)

Sometimes you want to call a random function...

randomFnCall(() => randomString(3), () => randomNumber(1, 10));
// => '18q'
randomFnCall(() => randomString(3), () => randomNumber(1, 10));
// => 2
randomFnCall(() => randomString(3), () => randomNumber(1, 10));
// => 1
randomFnCall(() => randomString(3), () => randomNumber(1, 10));
// => 'bP8'

Generators

With these random data generators in hand, you are unstoppable.

Unfamiliar with generators? RTFM here.

const {
    generateRandomNumber,
    generateRandomNumber,
    generateRandomCharacter,
    generateRandomString,
    generateRandomArray,
    generateRandomObject,
    generateRandomData
} = require('white-elephant');

generateRandomNumber([count = 1], [min = -Number.MAX_SAFE_INTEGER], [max = Number.MAX_SAFE_INTEGER])

[ ...generateRandomNumber(10) ];
// => [ 37950, 606631, -6927, 43318, 8216136320, 358043333367, 4119147, 38, 4659302, -32240908 ]

[ ...generateRandomNumber(10, 1, 3) ];
// => [ 1, 3, 2, 2, 2, 1, 2, 2, 3, 1 ]

generateRandomNumber().next().value;
// => 1058

generateRandomBoolean([count = 1])

[ ...generateRandomBoolean(10) ];
// => [ false, true, false, true, true, true, true, true, false, true ]

generateRandomBoolean().next().value;
// => false

generateRandomCharacter([count = 1])

[ ...generateRandomCharacter(10) ];
// => [ 'a', 'v', 'l', 'e', 'B', 'H', 'h', 'z', 'd', 't' ]

generateRandomCharacter().next().value;
// => '6'

generateRandomString([count = 1], [length = randomNumber(0, 32)])

[ ...generateRandomString(3) ];
// => [ 'jtbc', '7gyw2lg2o3Q243o', '6885yhdaW3dRihM' ]

[ ...generateRandomString(4, 4) ];
// => [ 'm6QB', 'wb4O', 'Q6Ti', 'N58k' ]

generateRandomString().next().value;
// => '1Kq4'

generateRandomArray([count = 1], [maxDepth = 1], [baseLength = randomNumber(0, 16)], [uniformDepth = false], [uniformLength = false])

[ ...generateRandomArray(4, 1, 1) ];
// => [ [ true ], [ 7077968 ], [ 8266812682 ], [ true ] ]

generateRandomArray().next().value;
// => [ 'cj2v953528j', 86088975, 'KWxJ49bL', true, false, true, false ]

[ ...generateRandomArray(1, 2, 1, true, true) ];
// => [ [ [ 'sn1sVY91lF86' ] ] ]

generateRandomObject([count = 1], [maxDepth = 1], [baseWidth = randomNumber(0, 16)], [uniformDepth = false], [uniformWidth = false])

[ ...generateRandomObject() ];
// => [ { gIWD: 'e7U972',
//        u1v: '7r24h5Q57fJI9cQwPZhq46o567OhK',
//        p1rFQXORmE8Eai7LsJX8LA17r: 66234848 } ]

[ ...generateRandomObject(4, 1, 1) ];
// => [ { x3Eo: 1019277164868 },
//      { JDf88w7814fV3ELG2QosRdB77f: 55257 },
//      { pl46FD1ebuPkUC48TXyQcz5K5jrKa: 16333186 },
//      { '6v9J': false } ]

[ ...generateRandomObject(2, 2, 2) ];
// => [ { kmcuQr3d38z52a4KeN5kET9GKpnyS: '819oCYKK9vMU52k5',
//        s8H6YJr:
//         [ 38155,
//           628608,
//           'eL',
//           793809,
//           false,
//           'pKS5ahuv9w59s2DNZjB9PqmTT3o',
//           348996,
//           true,
//           4602,
//           true,
//           false,
//           true ] },
//      { '17135NVrKJh8': 881,
//        '739p32':
//         { '6LrGZ465B9k': false,
//           EG4726w5: 'JPR7g5312L212bK',
//           bnLygWBXY92Oy41Bf: 'v768xMSO5n62E5T',
//           hZ5H: false,
//           n6OLrEwC9tP6X9b: true,
//           y2V517CEDu36EUyAc8q3lE5B47xi: 'nhtCE7Ey76',
//           '2YDZtSS6R4oT1SyI5YPRj3fA7E6r1b': true,
//           bLFsYTjOPON3ydH5CTQ5: 0,
//           jlIWlwVkjIn51NjHs68AZ: false,
//           qnLlFthMWIg7m8IeTKz348qua4x3h: 7973 } } ]

[ ...generateRandomObject(1, 3, 1, true, true) ]
// => [ { GylvgG8Ptn75IH: { '5nZb9589VSn5Yr1Mc1D7': { Y5O6LOx: 896 } } } ]

generateRandomData([count = 1], [maxDepth = 1])

By now, you get the idea...

Random Other Stuff...

Just for fun...

const { inspect } = require('util');
const log = v => console.log(inspect(v, { depth: null, colors: true }));
log([ ...generateRandomParagraph(10, letterFrequencyInGeneralFiction) ].join(''));
log([ ...generateRandomPerson(10) ]);

Check the source for more.

License

MIT

Package Sidebar

Install

npm i white-elephant

Weekly Downloads

0

Version

0.0.14

License

MIT

Unpacked Size

234 kB

Total Files

9

Last publish

Collaborators

  • machellerogden