@gkucmierz/utils 1.28.1 → 1.28.3

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/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@gkucmierz/utils",
3
- "version": "1.28.1",
3
+ "version": "1.28.3",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@gkucmierz/utils",
9
- "version": "1.28.1",
9
+ "version": "1.28.3",
10
10
  "license": "MIT",
11
11
  "devDependencies": {
12
12
  "docdash": "^2.0.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gkucmierz/utils",
3
- "version": "1.28.1",
3
+ "version": "1.28.3",
4
4
  "description": "Usefull functions for solving programming tasks",
5
5
  "main": "main.mjs",
6
6
  "scripts": {
@@ -28,5 +28,19 @@ describe('memoize', () => {
28
28
  expect(fn(1, 2)).toBe(2);
29
29
  expect(fn(1, 2, 3)).toBe(3);
30
30
  });
31
+
32
+ it('different empty object arrays', () => {
33
+ let cnt = 0;
34
+ const fn = memoize(() => ++cnt);
35
+ const emptyArr = [];
36
+ fn(emptyArr);
37
+ expect(cnt).toBe(1);
38
+ fn(emptyArr);
39
+ expect(cnt).toBe(1);
40
+ fn([]);
41
+ expect(cnt).toBe(2);
42
+ fn([]);
43
+ expect(cnt).toBe(3);
44
+ });
31
45
  });
32
46
 
package/src/copy-case.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
 
2
2
  /**
3
3
  * Copy the case of a string into another.
4
+ * @method
4
5
  * @param {string} target String to change the case.
5
6
  * @param {string} source Source of case pattern.
6
7
  * @return {string} Converted string.
package/src/gcd.mjs CHANGED
@@ -17,6 +17,7 @@ const getGCD = ZERO => {
17
17
 
18
18
  /**
19
19
  * Calculate GCD - Greatest Common Divisor
20
+ * @method
20
21
  * @param {Number} Natural number
21
22
  * @return {Number} GCD
22
23
  */
@@ -24,6 +25,7 @@ export const gcd = getGCD(0);
24
25
 
25
26
  /**
26
27
  * Calculate GCD - Greatest Common Divisor (BigInt version)
28
+ * @method
27
29
  * @param {BigInt} Natural BigInt number
28
30
  * @return {BigInt} GCD
29
31
  */
package/src/memoize.mjs CHANGED
@@ -1,4 +1,11 @@
1
1
 
2
+ /**
3
+ * Memoize function, that builds tree structure for arguments
4
+ * and compares arguments by reference
5
+ * @method
6
+ * @param {Function} Function to memoize
7
+ * @return {Function} Memoized function
8
+ */
2
9
  export const memoize = fn => {
3
10
  const maps = [];
4
11
 
package/src/mod.mjs CHANGED
@@ -1,6 +1,4 @@
1
1
 
2
- // python like mod implementation
3
-
4
2
  const getMod = ZERO => {
5
3
  return (dividend, divisor) => {
6
4
  if ((dividend < ZERO) ^ (divisor < ZERO)) {
@@ -11,5 +9,24 @@ const getMod = ZERO => {
11
9
  };
12
10
  };
13
11
 
12
+ /**
13
+ * Python like modulo implementation.
14
+ * It behaves different than JavaScript %
15
+ * with negative values
16
+ * @method
17
+ * @param {Number} Dividend
18
+ * @param {Number} Divisor
19
+ * @return {Number} Modulus
20
+ */
14
21
  export const mod = getMod(0);
22
+
23
+ /**
24
+ * Python like modulo implementation.
25
+ * It behaves different than JavaScript %
26
+ * with negative values
27
+ * @method
28
+ * @param {BigInt} Dividend
29
+ * @param {BigInt} Divisor
30
+ * @return {BigInt} Modulus
31
+ */
15
32
  export const modBI = getMod(0n);
package/src/pow-mod.mjs CHANGED
@@ -18,6 +18,22 @@ const getPowMod = (ZERO, ONE, TWO, floor) => {
18
18
  };
19
19
  };
20
20
 
21
+ /**
22
+ * Power like python implementation with optional modulus
23
+ * @method
24
+ * @param {Number} Base
25
+ * @param {Number} Exponent
26
+ * @param [Number] Modulus
27
+ * @return {Number} Power
28
+ */
21
29
  export const powMod = getPowMod(0, 1, 2, n => Math.floor(n));
22
30
 
31
+ /**
32
+ * Power like python implementation with optional modulus
33
+ * @method
34
+ * @param {BigInt} Base
35
+ * @param {BigInt} Exponent
36
+ * @param [BigInt] Modulus
37
+ * @return {BigInt} Power
38
+ */
23
39
  export const powModBI = getPowMod(0n, 1n, 2n, n => n);