randex 0.11.0 → 0.12.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 +32 -0
- 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/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/filename.test.js +1 -1
- package/lib/test/number-array.test.d.ts +1 -0
- package/lib/test/number-array.test.js +52 -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
|
@@ -22,6 +22,8 @@ Functions:
|
|
|
22
22
|
- [randomEmail](#randomemail)
|
|
23
23
|
- [randomName](#randomname)
|
|
24
24
|
- [randomFullName](#randomfullname)
|
|
25
|
+
- [randomNumber](#randomnumber)
|
|
26
|
+
- [randomNumberArray](#randomnumberarray)
|
|
25
27
|
|
|
26
28
|
Deeps:
|
|
27
29
|
|
|
@@ -293,6 +295,36 @@ Options:
|
|
|
293
295
|
|secondLength|[RandexLength](#randexlength) | Second name length of chars. Default: [2,10] |
|
|
294
296
|
|alphabet|[RandexAlphabet](#randexalphabet) | Defined alphabet. Default: `english` |
|
|
295
297
|
|
|
298
|
+
|
|
299
|
+
## randomNumber
|
|
300
|
+
|
|
301
|
+
Generates random number from a range of numbers.
|
|
302
|
+
|
|
303
|
+
```ts
|
|
304
|
+
import { randomNumber } from "randex";
|
|
305
|
+
|
|
306
|
+
// Generates a number from a range: [0, 3] (includes 0 and 3).
|
|
307
|
+
randomNumber(3);
|
|
308
|
+
|
|
309
|
+
// Generates a number from a specified range: [3, 7].
|
|
310
|
+
randomNumber([3, 7]);
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## randomNumberArray
|
|
314
|
+
|
|
315
|
+
Generates random array with values from from a range.
|
|
316
|
+
|
|
317
|
+
```ts
|
|
318
|
+
import { randomNumberArray } from "randex";
|
|
319
|
+
|
|
320
|
+
// Generates an array (with length equals 2) with unique numbers from a range: [0, 3].
|
|
321
|
+
randomNumberArray(3, 2);
|
|
322
|
+
|
|
323
|
+
// Generates an array (with length equals 3) with unique numbers from a range: [3, 7].
|
|
324
|
+
randomNumber([3, 7], 3);
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
|
|
296
328
|
## Customization
|
|
297
329
|
|
|
298
330
|
[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 = ""; //"-_.";
|
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;
|
|
@@ -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,52 @@
|
|
|
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
|
+
};
|
|
13
|
+
for (var i = 0; i < count; i++) {
|
|
14
|
+
_loop_1(i);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
describe("randomNumberArray", function () {
|
|
18
|
+
it("param: number", function () {
|
|
19
|
+
testNumber(0, 2, 0);
|
|
20
|
+
testNumber(1, 5, 1);
|
|
21
|
+
testNumber(5, 10, 2);
|
|
22
|
+
});
|
|
23
|
+
it("param: big number", function () {
|
|
24
|
+
testNumber(50, 500, 50);
|
|
25
|
+
});
|
|
26
|
+
it("max count - unique", function () {
|
|
27
|
+
testNumber(10, 20, 11);
|
|
28
|
+
});
|
|
29
|
+
it("count limit", function () {
|
|
30
|
+
var min = 5;
|
|
31
|
+
var max = 10;
|
|
32
|
+
var count = max - min + 1;
|
|
33
|
+
var value = (0, number_array_1.randomNumberArray)([min, max], count);
|
|
34
|
+
expect(value.length).toBe(count);
|
|
35
|
+
// max length limit
|
|
36
|
+
value = (0, number_array_1.randomNumberArray)([min, max], count + 10);
|
|
37
|
+
expect(value.length).toBe(count);
|
|
38
|
+
});
|
|
39
|
+
it("range: fill all possible values", function () {
|
|
40
|
+
var min = 5;
|
|
41
|
+
var max = 10;
|
|
42
|
+
var count = max - min + 1;
|
|
43
|
+
var value = (0, number_array_1.randomNumberArray)([min, max], count);
|
|
44
|
+
expect(value.length).toBe(count);
|
|
45
|
+
var _loop_2 = function (i) {
|
|
46
|
+
expect(value.find(function (x) { return x === i; })).toBeTruthy();
|
|
47
|
+
};
|
|
48
|
+
for (var i = min; i <= max; i++) {
|
|
49
|
+
_loop_2(i);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
@@ -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]);
|