randex 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -1
- package/lib/basic/index.js +2 -5
- package/lib/basic/set.d.ts +1 -0
- package/lib/basic/set.js +3 -0
- package/lib/custom/array.d.ts +1 -0
- package/lib/custom/array.js +21 -0
- package/lib/custom/filename.js +2 -1
- package/lib/custom/index.d.ts +2 -0
- package/lib/custom/index.js +2 -0
- package/lib/custom/number-array.d.ts +2 -0
- package/lib/custom/number-array.js +30 -0
- package/lib/custom/number.d.ts +2 -0
- package/lib/custom/number.js +14 -0
- package/lib/test/array.test.d.ts +1 -0
- package/lib/test/array.test.js +26 -0
- package/lib/test/filename.test.js +1 -1
- package/lib/test/number-array.test.d.ts +1 -0
- package/lib/test/number-array.test.js +53 -0
- package/lib/test/number.test.d.ts +1 -0
- package/lib/test/number.test.js +38 -0
- package/lib/test/random.test.js +22 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Installation:
|
|
|
14
14
|
npm i randex
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Strings:
|
|
18
18
|
|
|
19
19
|
- [random](#random)
|
|
20
20
|
- [randomFileName](#randomfilename)
|
|
@@ -23,6 +23,13 @@ Functions:
|
|
|
23
23
|
- [randomName](#randomname)
|
|
24
24
|
- [randomFullName](#randomfullname)
|
|
25
25
|
|
|
26
|
+
Numbers:
|
|
27
|
+
- [randomNumber](#randomnumber)
|
|
28
|
+
- [randomNumberArray](#randomnumberarray)
|
|
29
|
+
|
|
30
|
+
Generic Type:
|
|
31
|
+
- [randomArray](#randomarray)
|
|
32
|
+
|
|
26
33
|
Deeps:
|
|
27
34
|
|
|
28
35
|
- [Customization](#customization)
|
|
@@ -293,6 +300,50 @@ Options:
|
|
|
293
300
|
|secondLength|[RandexLength](#randexlength) | Second name length of chars. Default: [2,10] |
|
|
294
301
|
|alphabet|[RandexAlphabet](#randexalphabet) | Defined alphabet. Default: `english` |
|
|
295
302
|
|
|
303
|
+
|
|
304
|
+
## randomNumber
|
|
305
|
+
|
|
306
|
+
Generates random number from a range of numbers.
|
|
307
|
+
|
|
308
|
+
```ts
|
|
309
|
+
import { randomNumber } from "randex";
|
|
310
|
+
|
|
311
|
+
// Generates a number from a range: [0, 3] (includes 0 and 3).
|
|
312
|
+
randomNumber(3);
|
|
313
|
+
|
|
314
|
+
// Generates a number from a specified range: [3, 7].
|
|
315
|
+
randomNumber([3, 7]);
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
## randomNumberArray
|
|
319
|
+
|
|
320
|
+
Generates random array with values from a range.
|
|
321
|
+
|
|
322
|
+
```ts
|
|
323
|
+
import { randomNumberArray } from "randex";
|
|
324
|
+
|
|
325
|
+
// Generates an array (with length equals 2) with unique numbers from a range: [0, 3].
|
|
326
|
+
randomNumberArray(3, 2);
|
|
327
|
+
|
|
328
|
+
// Generates an array (with length equals 3) with unique numbers from a range: [3, 7].
|
|
329
|
+
randomNumber([3, 7], 3);
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
## randomArray
|
|
333
|
+
|
|
334
|
+
Generates random array with values from defined array.
|
|
335
|
+
|
|
336
|
+
```ts
|
|
337
|
+
import { randomArray } from "randex";
|
|
338
|
+
|
|
339
|
+
// Generates an array (with length equals 2) with values picked from defined array as the first parameter.
|
|
340
|
+
randomArray([1, 2, 3, 4], 2);
|
|
341
|
+
// [2, 4]
|
|
342
|
+
randomArray(["1", "2", "3", "4"], 2);
|
|
343
|
+
// ["1", "3"]
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
|
|
296
347
|
## Customization
|
|
297
348
|
|
|
298
349
|
[random](#random) function is very flexible, there are many custom functions can be created.
|
package/lib/basic/index.js
CHANGED
|
@@ -3,9 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.random = void 0;
|
|
4
4
|
var set_1 = require("./set");
|
|
5
5
|
var type_1 = require("./type");
|
|
6
|
-
function randomInt(max) {
|
|
7
|
-
return Math.floor(Math.random() * max);
|
|
8
|
-
}
|
|
9
6
|
function randomString(params) {
|
|
10
7
|
var length = params.length, range = params.range;
|
|
11
8
|
var result = "";
|
|
@@ -15,10 +12,10 @@ function randomString(params) {
|
|
|
15
12
|
}
|
|
16
13
|
else if (Array.isArray(length)) {
|
|
17
14
|
var min = length[0], max = length[1];
|
|
18
|
-
currentLength = min +
|
|
15
|
+
currentLength = min + set_1.RandexSetUtil.randomNumber(max - min + 1);
|
|
19
16
|
}
|
|
20
17
|
for (var i = 0; i < currentLength; i++) {
|
|
21
|
-
var index =
|
|
18
|
+
var index = set_1.RandexSetUtil.randomNumber(range.length - 1);
|
|
22
19
|
if (range.length >= index || range.length <= index) {
|
|
23
20
|
result += range[index];
|
|
24
21
|
}
|
package/lib/basic/set.d.ts
CHANGED
|
@@ -11,4 +11,5 @@ export declare class RandexSetUtil {
|
|
|
11
11
|
private static toAlphabetRange;
|
|
12
12
|
static toRange(set: RandexSet): string;
|
|
13
13
|
static getLength(reservedChars: number, length: RandexLength | undefined, defaultLength: RandexLength): RandexLength;
|
|
14
|
+
static randomNumber(length: number): number;
|
|
14
15
|
}
|
package/lib/basic/set.js
CHANGED
|
@@ -94,6 +94,9 @@ var RandexSetUtil = /** @class */ (function () {
|
|
|
94
94
|
}
|
|
95
95
|
return result;
|
|
96
96
|
};
|
|
97
|
+
RandexSetUtil.randomNumber = function (length) {
|
|
98
|
+
return Math.floor(Math.random() * length);
|
|
99
|
+
};
|
|
97
100
|
RandexSetUtil.defaultFileNameLength = [3, 10];
|
|
98
101
|
RandexSetUtil.defaultExtensionLength = [2, 5];
|
|
99
102
|
RandexSetUtil.fileNameExtraChars = ""; //"-_.";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function randomArray<T>(array: T[], count: number): T[];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.randomArray = void 0;
|
|
4
|
+
var number_1 = require("./number");
|
|
5
|
+
function randomArray(array, count) {
|
|
6
|
+
var result = [];
|
|
7
|
+
var maxCount = array.length;
|
|
8
|
+
var uniqueArray = [];
|
|
9
|
+
for (var i = 0; i < array.length; i++) {
|
|
10
|
+
uniqueArray.push(array[i]);
|
|
11
|
+
}
|
|
12
|
+
for (var i = 0; i < count && i < maxCount; i++) {
|
|
13
|
+
var arrayCount = uniqueArray.length - 1;
|
|
14
|
+
var index = (0, number_1.randomNumber)(arrayCount);
|
|
15
|
+
var value = uniqueArray[index];
|
|
16
|
+
result.push(value);
|
|
17
|
+
uniqueArray.splice(index, 1);
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
exports.randomArray = randomArray;
|
package/lib/custom/filename.js
CHANGED
|
@@ -5,7 +5,7 @@ var basic_1 = require("../basic");
|
|
|
5
5
|
var set_1 = require("../basic/set");
|
|
6
6
|
var type_1 = require("../basic/type");
|
|
7
7
|
function randomFileName(p1, p2) {
|
|
8
|
-
var fileNameLength = set_1.RandexSetUtil.
|
|
8
|
+
var fileNameLength = set_1.RandexSetUtil.defaultFileNameLength;
|
|
9
9
|
var extensionLength = set_1.RandexSetUtil.defaultExtensionLength;
|
|
10
10
|
var extension = "";
|
|
11
11
|
if (type_1.RandexTypeParser.isLength(p1)) {
|
|
@@ -31,6 +31,7 @@ function randomFileName(p1, p2) {
|
|
|
31
31
|
extension = p1.extension;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
+
fileNameLength = set_1.RandexSetUtil.getLength(1, fileNameLength, fileNameLength);
|
|
34
35
|
if (!extension) {
|
|
35
36
|
extension = (0, basic_1.random)([["english", "l"], extensionLength]);
|
|
36
37
|
}
|
package/lib/custom/index.d.ts
CHANGED
package/lib/custom/index.js
CHANGED
|
@@ -19,3 +19,5 @@ __exportStar(require("./filename"), exports);
|
|
|
19
19
|
__exportStar(require("./name"), exports);
|
|
20
20
|
__exportStar(require("./username"), exports);
|
|
21
21
|
__exportStar(require("./fullname"), exports);
|
|
22
|
+
__exportStar(require("./number"), exports);
|
|
23
|
+
__exportStar(require("./number-array"), exports);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.randomNumberArray = void 0;
|
|
4
|
+
var number_1 = require("./number");
|
|
5
|
+
function randomNumberArray(length, count) {
|
|
6
|
+
var min = 0;
|
|
7
|
+
var max = 0;
|
|
8
|
+
var result = [];
|
|
9
|
+
if (typeof length === "number") {
|
|
10
|
+
max = length;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
min = length[0];
|
|
14
|
+
max = length[1];
|
|
15
|
+
}
|
|
16
|
+
var maxCount = max - min + 1;
|
|
17
|
+
var numberArray = [];
|
|
18
|
+
for (var i = min; i <= max; i++) {
|
|
19
|
+
numberArray.push(i);
|
|
20
|
+
}
|
|
21
|
+
for (var i = 0; i < count && i < maxCount; i++) {
|
|
22
|
+
var arrayCount = numberArray.length - 1;
|
|
23
|
+
var index = (0, number_1.randomNumber)(arrayCount);
|
|
24
|
+
var value = numberArray[index];
|
|
25
|
+
result.push(value);
|
|
26
|
+
numberArray.splice(index, 1);
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
exports.randomNumberArray = randomNumberArray;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.randomNumber = void 0;
|
|
4
|
+
var set_1 = require("../basic/set");
|
|
5
|
+
function randomNumber(length) {
|
|
6
|
+
if (typeof length === "number") {
|
|
7
|
+
return set_1.RandexSetUtil.randomNumber(length + 1);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
var min = length[0], max = length[1];
|
|
11
|
+
return set_1.RandexSetUtil.randomNumber(max - min + 1) + min;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.randomNumber = randomNumber;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var array_1 = require("../custom/array");
|
|
4
|
+
function testUniqueArray(array, count) {
|
|
5
|
+
var value = (0, array_1.randomArray)(array, count);
|
|
6
|
+
var uniqueResult = [];
|
|
7
|
+
var _loop_1 = function (i) {
|
|
8
|
+
var uniqueValue = value[i];
|
|
9
|
+
expect(uniqueResult.find(function (x) { return x === uniqueValue; })).toBeFalsy();
|
|
10
|
+
uniqueResult.push(uniqueValue);
|
|
11
|
+
};
|
|
12
|
+
for (var i = 0; i < count; i++) {
|
|
13
|
+
_loop_1(i);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
describe("randomNumberArray", function () {
|
|
17
|
+
it("param: number", function () {
|
|
18
|
+
testUniqueArray([1, 2, 3, 4, 5, 6], 6);
|
|
19
|
+
});
|
|
20
|
+
it("param: string", function () {
|
|
21
|
+
testUniqueArray(["1", "2", "3", "4", "5", "6"], 6);
|
|
22
|
+
});
|
|
23
|
+
it("max count - array count", function () {
|
|
24
|
+
testUniqueArray([1, 2, 3, 4, 5, 6], 8);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -49,7 +49,7 @@ describe("randomFileName", function () {
|
|
|
49
49
|
testFileName({ fullFileName: fullFileName, fileNameLength: r.defaultFileNameLength, extensionLength: extensionLength });
|
|
50
50
|
});
|
|
51
51
|
});
|
|
52
|
-
it("
|
|
52
|
+
it("params2: extension", function () {
|
|
53
53
|
var fileNameLength = [10, 15];
|
|
54
54
|
var extension = "xml";
|
|
55
55
|
test_util_1.TestUtil.loop(function () {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var number_array_1 = require("../custom/number-array");
|
|
4
|
+
function testNumber(min, max, count) {
|
|
5
|
+
var value = (0, number_array_1.randomNumberArray)([min, max], count);
|
|
6
|
+
var uniqueResult = [];
|
|
7
|
+
var _loop_1 = function (i) {
|
|
8
|
+
var uniqueValue = value[i];
|
|
9
|
+
expect(uniqueResult.find(function (x) { return x === uniqueValue; })).toBeFalsy();
|
|
10
|
+
expect(value[i]).toBeGreaterThanOrEqual(min);
|
|
11
|
+
expect(value[i]).toBeLessThanOrEqual(max);
|
|
12
|
+
uniqueResult.push(uniqueValue);
|
|
13
|
+
};
|
|
14
|
+
for (var i = 0; i < count; i++) {
|
|
15
|
+
_loop_1(i);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
describe("randomNumberArray", function () {
|
|
19
|
+
it("param: number", function () {
|
|
20
|
+
testNumber(0, 2, 0);
|
|
21
|
+
testNumber(1, 5, 1);
|
|
22
|
+
testNumber(5, 10, 2);
|
|
23
|
+
});
|
|
24
|
+
it("param: big number", function () {
|
|
25
|
+
testNumber(50, 500, 50);
|
|
26
|
+
});
|
|
27
|
+
it("max count - unique", function () {
|
|
28
|
+
testNumber(10, 20, 11);
|
|
29
|
+
});
|
|
30
|
+
it("count limit", function () {
|
|
31
|
+
var min = 5;
|
|
32
|
+
var max = 10;
|
|
33
|
+
var count = max - min + 1;
|
|
34
|
+
var value = (0, number_array_1.randomNumberArray)([min, max], count);
|
|
35
|
+
expect(value.length).toBe(count);
|
|
36
|
+
// max length limit
|
|
37
|
+
value = (0, number_array_1.randomNumberArray)([min, max], count + 10);
|
|
38
|
+
expect(value.length).toBe(count);
|
|
39
|
+
});
|
|
40
|
+
it("range: fill all possible values", function () {
|
|
41
|
+
var min = 5;
|
|
42
|
+
var max = 10;
|
|
43
|
+
var count = max - min + 1;
|
|
44
|
+
var value = (0, number_array_1.randomNumberArray)([min, max], count);
|
|
45
|
+
expect(value.length).toBe(count);
|
|
46
|
+
var _loop_2 = function (i) {
|
|
47
|
+
expect(value.find(function (x) { return x === i; })).toBeTruthy();
|
|
48
|
+
};
|
|
49
|
+
for (var i = min; i <= max; i++) {
|
|
50
|
+
_loop_2(i);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var number_1 = require("../custom/number");
|
|
4
|
+
var test_util_1 = require("./test-util");
|
|
5
|
+
function testNumber(max) {
|
|
6
|
+
var value = (0, number_1.randomNumber)(max);
|
|
7
|
+
expect(value).toBeGreaterThanOrEqual(0);
|
|
8
|
+
expect(value).toBeLessThanOrEqual(max);
|
|
9
|
+
}
|
|
10
|
+
function testNumberWithArray(range) {
|
|
11
|
+
var min = range[0], max = range[1];
|
|
12
|
+
var value = (0, number_1.randomNumber)(range);
|
|
13
|
+
expect(value).toBeGreaterThanOrEqual(min);
|
|
14
|
+
expect(value).toBeLessThanOrEqual(max);
|
|
15
|
+
}
|
|
16
|
+
describe("randomNumber", function () {
|
|
17
|
+
it("param: number", function () {
|
|
18
|
+
testNumber(0);
|
|
19
|
+
testNumber(1);
|
|
20
|
+
testNumber(5);
|
|
21
|
+
});
|
|
22
|
+
it("much range", function () {
|
|
23
|
+
var max = 4;
|
|
24
|
+
var result = {};
|
|
25
|
+
test_util_1.TestUtil.loop(function () {
|
|
26
|
+
var value = (0, number_1.randomNumber)(max);
|
|
27
|
+
result[value] = (result[value] || 0) + 1;
|
|
28
|
+
});
|
|
29
|
+
for (var i = 0; i <= max; i++) {
|
|
30
|
+
expect(result[i]).toBeGreaterThan(0);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
it("param: number array", function () {
|
|
34
|
+
test_util_1.TestUtil.loop(function () {
|
|
35
|
+
testNumberWithArray([10, 15]);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
});
|
package/lib/test/random.test.js
CHANGED
|
@@ -26,6 +26,28 @@ describe("random", function () {
|
|
|
26
26
|
inRange("abc", 3);
|
|
27
27
|
inRange("1234abc!@#", 3);
|
|
28
28
|
});
|
|
29
|
+
it("result 1: number", function () {
|
|
30
|
+
var length = [0, 4];
|
|
31
|
+
var result = {};
|
|
32
|
+
test_util_1.TestUtil.loop(function () {
|
|
33
|
+
var l = (0, basic_1.random)({ set: "english", length: length }).length;
|
|
34
|
+
result[l] = (result[l] || 0) + 1;
|
|
35
|
+
});
|
|
36
|
+
for (var i = 0; i <= 4; i++) {
|
|
37
|
+
expect(result[i]).toBeGreaterThan(0);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
it("result 2: number range", function () {
|
|
41
|
+
var length = [5, 8];
|
|
42
|
+
var result = {};
|
|
43
|
+
test_util_1.TestUtil.loop(function () {
|
|
44
|
+
var l = (0, basic_1.random)({ set: "english", length: length }).length;
|
|
45
|
+
result[l] = (result[l] || 0) + 1;
|
|
46
|
+
});
|
|
47
|
+
for (var i = 5; i <= 8; i++) {
|
|
48
|
+
expect(result[i]).toBeGreaterThan(0);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
29
51
|
it("length: alphabet", function () {
|
|
30
52
|
inSet("english", 0);
|
|
31
53
|
inSet("english", [0, 0]);
|