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 CHANGED
@@ -14,7 +14,7 @@ Installation:
14
14
  npm i randex
15
15
  ```
16
16
 
17
- Functions:
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.
@@ -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 + randomInt(max - 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 = randomInt(range.length - 1);
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
  }
@@ -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;
@@ -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.getLength(1, set_1.RandexSetUtil.defaultFileNameLength, set_1.RandexSetUtil.defaultFileNameLength);
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
  }
@@ -3,3 +3,5 @@ export * from "./filename";
3
3
  export * from "./name";
4
4
  export * from "./username";
5
5
  export * from "./fullname";
6
+ export * from "./number";
7
+ export * from "./number-array";
@@ -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,2 @@
1
+ import { RandexLength } from "../interfaces";
2
+ export declare function randomNumberArray(length: RandexLength, count: number): number[];
@@ -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,2 @@
1
+ import { RandexLength } from "../interfaces";
2
+ export declare function randomNumber(length: RandexLength): number;
@@ -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("params: extension", function () {
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
+ });
@@ -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]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "randex",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",