UNPKG

3.65 kBJavaScriptView Raw
1/**
2 * @file Define many util functions for eval'd code
3 */
4'use strict'
5
6var ObjectID = require('mongodb').ObjectID
7
8/**
9 * Generate a random mongo objectId
10 * @returns {ObjectId}
11 */
12module.exports.randomId = function () {
13 return new ObjectID()
14}
15
16/**
17 * MongoId constructor
18 */
19module.exports.ObjectId = module.exports.ObjectID = ObjectID
20
21/**
22 * Generate a random string with base64 chars (A-Za-z0-9+/)
23 * @param {number} [len=7]
24 * @param {string} [alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/']
25 * @returns {string}
26 */
27module.exports.randomStr = function (len, alphabet) {
28 var i, str = ''
29 len = len || 7
30 alphabet = alphabet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
31 for (i = 0; i < len; i++) {
32 str += alphabet[Math.floor(Math.random() * alphabet.length)]
33 }
34 return str
35}
36
37/**
38 * Generate a random string with hex chars (0-9a-f)
39 * @param {number} [len=7]
40 * @returns {string}
41 */
42module.exports.randomHex = function (len) {
43 return module.exports.randomStr(len, '0123456789abcdef')
44}
45
46/**
47 * Generate a random string with digits (0-9)
48 * @param {number} [len=7]
49 * @returns {string}
50 */
51module.exports.randomCode = function (len) {
52 return module.exports.randomStr(len, '0123456789')
53}
54
55/**
56 * Generate a random valid email address
57 * @param {string} [domain='example.com']
58 * @returns {string}
59 */
60module.exports.randomEmail = function (domain) {
61 domain = domain || 'example.com'
62 return 'test-' + module.exports.randomId() + '@' + domain
63}
64
65/**
66 * Generate a random valid url
67 * @param {string} [base='http://example.com']
68 * @returns {string}
69 */
70module.exports.randomUrl = function (base) {
71 base = base || 'http://example.com'
72 return base + '/' + module.exports.randomId()
73}
74
75/**
76 * Generate a random number
77 * random() is the same as Math.random(): 0 <= x < 1
78 * random(N) returns a number 0 <= x < N
79 * random(M, N) returns M <= x < N
80 * @param {number} [min=0]
81 * @param {number} [max=1]
82 * @returns {number}
83 */
84module.exports.random = function (min, max) {
85 if (min === undefined && max === undefined) {
86 return Math.random()
87 } else if (max === undefined) {
88 return Math.random() * min
89 } else {
90 return min + Math.random() * (max - min)
91 }
92}
93
94/**
95 * Generate a random int min <= x < max
96 * randomInt() is equal to randomInt(0, 100)
97 * randomInt(N) is equal to randomInt(0, N)
98 * @param {number} [min=0]
99 * @param {number} [max=100]
100 * @returns {number}
101 */
102module.exports.randomInt = function (min, max) {
103 if (min === undefined && max === undefined) {
104 return module.exports.randomInt(0, 100)
105 } else if (max === undefined) {
106 return module.exports.randomInt(0, min)
107 } else {
108 return Math.floor(module.exports.random(min, max))
109 }
110}
111
112/**
113 * @returns {boolean}
114 */
115module.exports.randomBool = function () {
116 return Math.random() < 0.5
117}
118
119/**
120 * Generate a random Date previous from a given Date
121 * @param {number} [interval=86.4e6]
122 * @param {Date} [baseDate=new Date]
123 * @returns {Date}
124 */
125module.exports.randomDate = function (interval, baseDate) {
126 if (interval instanceof Date) {
127 baseDate = interval
128 interval = 86.4e6
129 } else {
130 interval = interval || 86.4e6
131 baseDate = baseDate || new Date
132 }
133 return new Date(baseDate.getTime() - Math.random() * interval)
134}
135
136/**
137 * Return one of its arguments
138 * @param {...*} value
139 * @returns {*}
140 */
141module.exports.randomOf = function () {
142 return arguments[Math.floor(Math.random() * arguments.length)]
143}
144
145/**
146 * The empty object
147 */
148module.exports.empty = {}
\No newline at end of file