@lowentry/utils 2.0.3 → 2.0.6
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/dist/index.d.ts +1183 -0
- package/dist/index.js +3101 -0
- package/dist/index.js.map +1 -0
- package/package.json +3 -2
- package/dist/src/LeTypes.d.ts +0 -73
- package/dist/src/LeTypes.d.ts.map +0 -1
- package/dist/src/LeTypes.js +0 -235
- package/dist/src/LeTypes.js.map +0 -1
- package/dist/src/LeUtils.d.ts +0 -745
- package/dist/src/LeUtils.d.ts.map +0 -1
- package/dist/src/LeUtils.js +0 -3168
- package/dist/src/LeUtils.js.map +0 -1
- package/dist/src/classes/EventEmitter.d.ts +0 -51
- package/dist/src/classes/EventEmitter.d.ts.map +0 -1
- package/dist/src/classes/EventEmitter.js +0 -94
- package/dist/src/classes/EventEmitter.js.map +0 -1
- package/dist/src/classes/LinkedList.d.ts +0 -35
- package/dist/src/classes/LinkedList.d.ts.map +0 -1
- package/dist/src/classes/LinkedList.js +0 -99
- package/dist/src/classes/LinkedList.js.map +0 -1
- package/dist/src/classes/SerializableMap.d.ts +0 -14
- package/dist/src/classes/SerializableMap.d.ts.map +0 -1
- package/dist/src/classes/SerializableMap.js +0 -27
- package/dist/src/classes/SerializableMap.js.map +0 -1
- package/dist/src/classes/TreeSet.d.ts +0 -123
- package/dist/src/classes/TreeSet.d.ts.map +0 -1
- package/dist/src/classes/TreeSet.js +0 -210
- package/dist/src/classes/TreeSet.js.map +0 -1
- package/dist/src/index.d.ts +0 -148
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -13
- package/dist/src/index.js.map +0 -1
- package/dist/tests/CustomClasses.test.d.ts +0 -2
- package/dist/tests/CustomClasses.test.d.ts.map +0 -1
- package/dist/tests/CustomClasses.test.js +0 -138
- package/dist/tests/CustomClasses.test.js.map +0 -1
- package/dist/tests/LeClasses.EventEmitter.test.d.ts +0 -2
- package/dist/tests/LeClasses.EventEmitter.test.d.ts.map +0 -1
- package/dist/tests/LeClasses.EventEmitter.test.js +0 -39
- package/dist/tests/LeClasses.EventEmitter.test.js.map +0 -1
- package/dist/tests/LeClasses.LinkedList.test.d.ts +0 -2
- package/dist/tests/LeClasses.LinkedList.test.d.ts.map +0 -1
- package/dist/tests/LeClasses.LinkedList.test.js +0 -36
- package/dist/tests/LeClasses.LinkedList.test.js.map +0 -1
- package/dist/tests/LeClasses.SerializableMap.test.d.ts +0 -2
- package/dist/tests/LeClasses.SerializableMap.test.d.ts.map +0 -1
- package/dist/tests/LeClasses.SerializableMap.test.js +0 -25
- package/dist/tests/LeClasses.SerializableMap.test.js.map +0 -1
- package/dist/tests/LeClasses.TreeSet.test.d.ts +0 -2
- package/dist/tests/LeClasses.TreeSet.test.d.ts.map +0 -1
- package/dist/tests/LeClasses.TreeSet.test.js +0 -28
- package/dist/tests/LeClasses.TreeSet.test.js.map +0 -1
- package/dist/tests/LeTypes.ARRAY.test.d.ts +0 -2
- package/dist/tests/LeTypes.ARRAY.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.ARRAY.test.js +0 -103
- package/dist/tests/LeTypes.ARRAY.test.js.map +0 -1
- package/dist/tests/LeTypes.BOOL.test.d.ts +0 -2
- package/dist/tests/LeTypes.BOOL.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.BOOL.test.js +0 -138
- package/dist/tests/LeTypes.BOOL.test.js.map +0 -1
- package/dist/tests/LeTypes.FLOAT.test.d.ts +0 -2
- package/dist/tests/LeTypes.FLOAT.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.FLOAT.test.js +0 -120
- package/dist/tests/LeTypes.FLOAT.test.js.map +0 -1
- package/dist/tests/LeTypes.FLOAT_ANY.test.d.ts +0 -2
- package/dist/tests/LeTypes.FLOAT_ANY.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.FLOAT_ANY.test.js +0 -47
- package/dist/tests/LeTypes.FLOAT_ANY.test.js.map +0 -1
- package/dist/tests/LeTypes.INT.test.d.ts +0 -2
- package/dist/tests/LeTypes.INT.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.INT.test.js +0 -80
- package/dist/tests/LeTypes.INT.test.js.map +0 -1
- package/dist/tests/LeTypes.INT_ANY.test.d.ts +0 -2
- package/dist/tests/LeTypes.INT_ANY.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.INT_ANY.test.js +0 -37
- package/dist/tests/LeTypes.INT_ANY.test.js.map +0 -1
- package/dist/tests/LeTypes.ISSET.test.d.ts +0 -2
- package/dist/tests/LeTypes.ISSET.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.ISSET.test.js +0 -113
- package/dist/tests/LeTypes.ISSET.test.js.map +0 -1
- package/dist/tests/LeTypes.IS_ARRAY.test.d.ts +0 -2
- package/dist/tests/LeTypes.IS_ARRAY.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.IS_ARRAY.test.js +0 -81
- package/dist/tests/LeTypes.IS_ARRAY.test.js.map +0 -1
- package/dist/tests/LeTypes.IS_OBJECT.test.d.ts +0 -2
- package/dist/tests/LeTypes.IS_OBJECT.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.IS_OBJECT.test.js +0 -98
- package/dist/tests/LeTypes.IS_OBJECT.test.js.map +0 -1
- package/dist/tests/LeTypes.LAX.test.d.ts +0 -2
- package/dist/tests/LeTypes.LAX.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.LAX.test.js +0 -89
- package/dist/tests/LeTypes.LAX.test.js.map +0 -1
- package/dist/tests/LeTypes.OBJECT.test.d.ts +0 -2
- package/dist/tests/LeTypes.OBJECT.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.OBJECT.test.js +0 -81
- package/dist/tests/LeTypes.OBJECT.test.js.map +0 -1
- package/dist/tests/LeTypes.STRING.test.d.ts +0 -2
- package/dist/tests/LeTypes.STRING.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.STRING.test.js +0 -204
- package/dist/tests/LeTypes.STRING.test.js.map +0 -1
- package/dist/tests/LeTypes.STRING_ANY.test.d.ts +0 -2
- package/dist/tests/LeTypes.STRING_ANY.test.d.ts.map +0 -1
- package/dist/tests/LeTypes.STRING_ANY.test.js +0 -58
- package/dist/tests/LeTypes.STRING_ANY.test.js.map +0 -1
- package/dist/tests/LeUtils.clone.test.d.ts +0 -2
- package/dist/tests/LeUtils.clone.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.clone.test.js +0 -180
- package/dist/tests/LeUtils.clone.test.js.map +0 -1
- package/dist/tests/LeUtils.collections.test.d.ts +0 -2
- package/dist/tests/LeUtils.collections.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.collections.test.js +0 -149
- package/dist/tests/LeUtils.collections.test.js.map +0 -1
- package/dist/tests/LeUtils.comparison.test.d.ts +0 -2
- package/dist/tests/LeUtils.comparison.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.comparison.test.js +0 -125
- package/dist/tests/LeUtils.comparison.test.js.map +0 -1
- package/dist/tests/LeUtils.contains.test.d.ts +0 -2
- package/dist/tests/LeUtils.contains.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.contains.test.js +0 -52
- package/dist/tests/LeUtils.contains.test.js.map +0 -1
- package/dist/tests/LeUtils.each.test.d.ts +0 -2
- package/dist/tests/LeUtils.each.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.each.test.js +0 -267
- package/dist/tests/LeUtils.each.test.js.map +0 -1
- package/dist/tests/LeUtils.eachAsync.test.d.ts +0 -2
- package/dist/tests/LeUtils.eachAsync.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.eachAsync.test.js +0 -80
- package/dist/tests/LeUtils.eachAsync.test.js.map +0 -1
- package/dist/tests/LeUtils.encoding.test.d.ts +0 -2
- package/dist/tests/LeUtils.encoding.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.encoding.test.js +0 -45
- package/dist/tests/LeUtils.encoding.test.js.map +0 -1
- package/dist/tests/LeUtils.equals.test.d.ts +0 -2
- package/dist/tests/LeUtils.equals.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.equals.test.js +0 -328
- package/dist/tests/LeUtils.equals.test.js.map +0 -1
- package/dist/tests/LeUtils.flatten.test.d.ts +0 -2
- package/dist/tests/LeUtils.flatten.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.flatten.test.js +0 -30
- package/dist/tests/LeUtils.flatten.test.js.map +0 -1
- package/dist/tests/LeUtils.misc.test.d.ts +0 -2
- package/dist/tests/LeUtils.misc.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.misc.test.js +0 -50
- package/dist/tests/LeUtils.misc.test.js.map +0 -1
- package/dist/tests/LeUtils.misc2.test.d.ts +0 -2
- package/dist/tests/LeUtils.misc2.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.misc2.test.js +0 -58
- package/dist/tests/LeUtils.misc2.test.js.map +0 -1
- package/dist/tests/LeUtils.newlyAdded.test.d.ts +0 -2
- package/dist/tests/LeUtils.newlyAdded.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.newlyAdded.test.js +0 -121
- package/dist/tests/LeUtils.newlyAdded.test.js.map +0 -1
- package/dist/tests/LeUtils.strings.test.d.ts +0 -2
- package/dist/tests/LeUtils.strings.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.strings.test.js +0 -125
- package/dist/tests/LeUtils.strings.test.js.map +0 -1
- package/dist/tests/LeUtils.timing.test.d.ts +0 -2
- package/dist/tests/LeUtils.timing.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.timing.test.js +0 -72
- package/dist/tests/LeUtils.timing.test.js.map +0 -1
- package/dist/tests/LeUtils.transactional.test.d.ts +0 -2
- package/dist/tests/LeUtils.transactional.test.d.ts.map +0 -1
- package/dist/tests/LeUtils.transactional.test.js +0 -39
- package/dist/tests/LeUtils.transactional.test.js.map +0 -1
- package/dist/tests/setup.d.ts +0 -2
- package/dist/tests/setup.d.ts.map +0 -1
- package/dist/tests/setup.js +0 -6
- package/dist/tests/setup.js.map +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -21
- package/dist/vitest.config.js.map +0 -1
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A TreeSet is a set of elements, sorted by a comparator.
|
|
3
|
-
* Binary search is used to find elements, which makes it very fast to find elements.
|
|
4
|
-
*
|
|
5
|
-
* The comparator is also used to determine if two values are equal to each other.
|
|
6
|
-
* This way, you can have values that aren't the same be treated as if they are. This can be used to deal with issues such as floating point errors for example.
|
|
7
|
-
*/
|
|
8
|
-
export declare class TreeSet<T> {
|
|
9
|
-
#private;
|
|
10
|
-
/**
|
|
11
|
-
* Creates a new TreeSet with the given elements and comparator.
|
|
12
|
-
*
|
|
13
|
-
* @param {*[]} [elements=[]] - The initial elements of the set.
|
|
14
|
-
* @param {(valueA:*, valueB:*) => number} [comparator=defaultCompare] - The comparator function to use for sorting.
|
|
15
|
-
*/
|
|
16
|
-
constructor(elements?: T[], comparator?: (valueA: T, valueB: T) => number);
|
|
17
|
-
/**
|
|
18
|
-
* @param {*} value - The value to search for in the set.
|
|
19
|
-
* @returns {{found:boolean, index:number, value:*|undefined}} - An object containing whether the value was found, the index where it would be inserted, and the value at that index (if found).
|
|
20
|
-
* @private
|
|
21
|
-
*/
|
|
22
|
-
private binarySearch;
|
|
23
|
-
/**
|
|
24
|
-
* Returns the elements of the set.
|
|
25
|
-
*/
|
|
26
|
-
getElements(): T[];
|
|
27
|
-
/**
|
|
28
|
-
* Returns the comparator of the set.
|
|
29
|
-
*
|
|
30
|
-
* @returns {(valueA:*, valueB:*) => number}
|
|
31
|
-
*/
|
|
32
|
-
getComparator(): (valueA: T, valueB: T) => number;
|
|
33
|
-
/**
|
|
34
|
-
* Returns the size of the set.
|
|
35
|
-
*
|
|
36
|
-
* @returns {number}
|
|
37
|
-
*/
|
|
38
|
-
size(): number;
|
|
39
|
-
/**
|
|
40
|
-
* Returns true if the set is empty, false otherwise.
|
|
41
|
-
*
|
|
42
|
-
* @returns {boolean}
|
|
43
|
-
*/
|
|
44
|
-
isEmpty(): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Returns true if the set contains a value that is equal to the given value, returns false otherwise.
|
|
47
|
-
*
|
|
48
|
-
* @param {*} value - The value to check for in the set.
|
|
49
|
-
* @return {boolean} - True if the set contains the value, false otherwise.
|
|
50
|
-
*/
|
|
51
|
-
contains(value: T): boolean;
|
|
52
|
-
/**
|
|
53
|
-
* Returns the first element of the set, or undefined if it is empty.
|
|
54
|
-
*
|
|
55
|
-
* @return {*|undefined} - The first element of the set, or undefined if it is empty.
|
|
56
|
-
*/
|
|
57
|
-
first(): T | undefined;
|
|
58
|
-
/**
|
|
59
|
-
* Returns the last element of the set, or undefined if it is empty.
|
|
60
|
-
*
|
|
61
|
-
* @return {*|undefined} - The last element of the set, or undefined if it is empty.
|
|
62
|
-
*/
|
|
63
|
-
last(): T | undefined;
|
|
64
|
-
/**
|
|
65
|
-
* Removes and returns the first element of the set, or undefined if it is empty.
|
|
66
|
-
*
|
|
67
|
-
* @returns {*|undefined} - The first element of the set, or undefined if it is empty.
|
|
68
|
-
*/
|
|
69
|
-
pollFirst(): T | undefined;
|
|
70
|
-
/**
|
|
71
|
-
* Removes and returns the last element of the set, or undefined if it is empty.
|
|
72
|
-
*
|
|
73
|
-
* @returns {*|undefined} - The last element of the set, or undefined if it is empty.
|
|
74
|
-
*/
|
|
75
|
-
pollLast(): T | undefined;
|
|
76
|
-
/**
|
|
77
|
-
* Adds the given value to the set. Will only do so if no equal value already exists.
|
|
78
|
-
* @param {*} value - The value to add to the set.
|
|
79
|
-
*/
|
|
80
|
-
add(value: T): void;
|
|
81
|
-
/**
|
|
82
|
-
* Removes the given value from the set.
|
|
83
|
-
* @param value - The value to remove
|
|
84
|
-
* @returns true if removed
|
|
85
|
-
*/
|
|
86
|
-
remove(value: T): boolean;
|
|
87
|
-
/**
|
|
88
|
-
* Adds all the given values to the set. Will only do so if no equal value already exists.
|
|
89
|
-
*
|
|
90
|
-
* @param {unknown} values - The values to add to the set.
|
|
91
|
-
*/
|
|
92
|
-
addAll(values: unknown): void;
|
|
93
|
-
/**
|
|
94
|
-
* Returns an equal value that's already in the tree set, or undefined if no equal values in it exist.
|
|
95
|
-
*
|
|
96
|
-
* @param {*} value - The value to search for in the set.
|
|
97
|
-
* @return {*|undefined} - The equal value if found, or undefined if not found.
|
|
98
|
-
*/
|
|
99
|
-
getEqualValue(value: T): T | undefined;
|
|
100
|
-
/**
|
|
101
|
-
* Returns an equal value that's already in the tree set. If no equal values in it exist, the given value will be added and returned.
|
|
102
|
-
*
|
|
103
|
-
* @param {*} value - The value to search for in the set.
|
|
104
|
-
* @return {*} - The equal value if found, or the added value if not found.
|
|
105
|
-
*/
|
|
106
|
-
getEqualValueOrAdd(value: T): T;
|
|
107
|
-
/**
|
|
108
|
-
* Returns a string representation of the TreeSet.
|
|
109
|
-
*
|
|
110
|
-
* @returns {string} - A string representation of the TreeSet, including its elements and comparator.
|
|
111
|
-
*/
|
|
112
|
-
toString(): string;
|
|
113
|
-
/**
|
|
114
|
-
* Returns a JSON representation of the TreeSet.
|
|
115
|
-
*
|
|
116
|
-
* @returns {Object} - An object containing the elements and comparator of the TreeSet.
|
|
117
|
-
*/
|
|
118
|
-
toJSON(): {
|
|
119
|
-
elements: T[];
|
|
120
|
-
comparator: string;
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=TreeSet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TreeSet.d.ts","sourceRoot":"","sources":["../../../src/classes/TreeSet.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qBAAa,OAAO,CAAC,CAAC;;IAKrB;;;;;OAKG;gBACS,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,MAAM;IAOzE;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,WAAW,IAAI,CAAC,EAAE;IAKlB;;;;OAIG;IACH,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,MAAM;IAKjD;;;;OAIG;IACH,IAAI,IAAI,MAAM;IAKd;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAKlB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAK3B;;;;OAIG;IACH,KAAK,IAAI,CAAC,GAAG,SAAS;IAKtB;;;;OAIG;IACH,IAAI,IAAI,CAAC,GAAG,SAAS;IAKrB;;;;OAIG;IACH,SAAS,IAAI,CAAC,GAAG,SAAS;IAK1B;;;;OAIG;IACH,QAAQ,IAAI,CAAC,GAAG,SAAS;IAKzB;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAUnB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAWzB;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAoB7B;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAUtC;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC;IAW/B;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAKlB;;;;OAIG;IACH,MAAM,IAAI;QAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC;CAO7C"}
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import { compare as defaultCompare, each } from '../LeUtils';
|
|
2
|
-
/**
|
|
3
|
-
* A TreeSet is a set of elements, sorted by a comparator.
|
|
4
|
-
* Binary search is used to find elements, which makes it very fast to find elements.
|
|
5
|
-
*
|
|
6
|
-
* The comparator is also used to determine if two values are equal to each other.
|
|
7
|
-
* This way, you can have values that aren't the same be treated as if they are. This can be used to deal with issues such as floating point errors for example.
|
|
8
|
-
*/
|
|
9
|
-
export class TreeSet {
|
|
10
|
-
#elements;
|
|
11
|
-
#comparator;
|
|
12
|
-
/**
|
|
13
|
-
* Creates a new TreeSet with the given elements and comparator.
|
|
14
|
-
*
|
|
15
|
-
* @param {*[]} [elements=[]] - The initial elements of the set.
|
|
16
|
-
* @param {(valueA:*, valueB:*) => number} [comparator=defaultCompare] - The comparator function to use for sorting.
|
|
17
|
-
*/
|
|
18
|
-
constructor(elements, comparator) {
|
|
19
|
-
this.#comparator = comparator || defaultCompare;
|
|
20
|
-
this.#elements = elements ? [...elements] : [];
|
|
21
|
-
this.#elements.sort(this.#comparator);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* @param {*} value - The value to search for in the set.
|
|
25
|
-
* @returns {{found:boolean, index:number, value:*|undefined}} - An object containing whether the value was found, the index where it would be inserted, and the value at that index (if found).
|
|
26
|
-
* @private
|
|
27
|
-
*/
|
|
28
|
-
binarySearch(value) {
|
|
29
|
-
let low = 0;
|
|
30
|
-
let high = this.#elements.length - 1;
|
|
31
|
-
while (low <= high) {
|
|
32
|
-
const mid = Math.floor((low + high) / 2);
|
|
33
|
-
const midValue = this.#elements[mid];
|
|
34
|
-
const cmp = this.#comparator(midValue, value);
|
|
35
|
-
if (cmp < 0) {
|
|
36
|
-
low = mid + 1;
|
|
37
|
-
}
|
|
38
|
-
else if (cmp > 0) {
|
|
39
|
-
high = mid - 1;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
return { found: true, index: mid, value: midValue };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return { found: false, index: low, value: undefined };
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Returns the elements of the set.
|
|
49
|
-
*/
|
|
50
|
-
getElements() {
|
|
51
|
-
return this.#elements;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Returns the comparator of the set.
|
|
55
|
-
*
|
|
56
|
-
* @returns {(valueA:*, valueB:*) => number}
|
|
57
|
-
*/
|
|
58
|
-
getComparator() {
|
|
59
|
-
return this.#comparator;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Returns the size of the set.
|
|
63
|
-
*
|
|
64
|
-
* @returns {number}
|
|
65
|
-
*/
|
|
66
|
-
size() {
|
|
67
|
-
return this.#elements.length;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Returns true if the set is empty, false otherwise.
|
|
71
|
-
*
|
|
72
|
-
* @returns {boolean}
|
|
73
|
-
*/
|
|
74
|
-
isEmpty() {
|
|
75
|
-
return this.#elements.length <= 0;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Returns true if the set contains a value that is equal to the given value, returns false otherwise.
|
|
79
|
-
*
|
|
80
|
-
* @param {*} value - The value to check for in the set.
|
|
81
|
-
* @return {boolean} - True if the set contains the value, false otherwise.
|
|
82
|
-
*/
|
|
83
|
-
contains(value) {
|
|
84
|
-
return this.binarySearch(value).found;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Returns the first element of the set, or undefined if it is empty.
|
|
88
|
-
*
|
|
89
|
-
* @return {*|undefined} - The first element of the set, or undefined if it is empty.
|
|
90
|
-
*/
|
|
91
|
-
first() {
|
|
92
|
-
return this.#elements.length > 0 ? this.#elements[0] : undefined;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Returns the last element of the set, or undefined if it is empty.
|
|
96
|
-
*
|
|
97
|
-
* @return {*|undefined} - The last element of the set, or undefined if it is empty.
|
|
98
|
-
*/
|
|
99
|
-
last() {
|
|
100
|
-
return this.#elements.length > 0 ? this.#elements[this.#elements.length - 1] : undefined;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Removes and returns the first element of the set, or undefined if it is empty.
|
|
104
|
-
*
|
|
105
|
-
* @returns {*|undefined} - The first element of the set, or undefined if it is empty.
|
|
106
|
-
*/
|
|
107
|
-
pollFirst() {
|
|
108
|
-
return this.#elements.length > 0 ? this.#elements.splice(0, 1)[0] : undefined;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Removes and returns the last element of the set, or undefined if it is empty.
|
|
112
|
-
*
|
|
113
|
-
* @returns {*|undefined} - The last element of the set, or undefined if it is empty.
|
|
114
|
-
*/
|
|
115
|
-
pollLast() {
|
|
116
|
-
return this.#elements.length > 0 ? this.#elements.splice(this.#elements.length - 1, 1)[0] : undefined;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Adds the given value to the set. Will only do so if no equal value already exists.
|
|
120
|
-
* @param {*} value - The value to add to the set.
|
|
121
|
-
*/
|
|
122
|
-
add(value) {
|
|
123
|
-
const result = this.binarySearch(value);
|
|
124
|
-
if (result.found) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
this.#elements.splice(result.index, 0, value);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Removes the given value from the set.
|
|
131
|
-
* @param value - The value to remove
|
|
132
|
-
* @returns true if removed
|
|
133
|
-
*/
|
|
134
|
-
remove(value) {
|
|
135
|
-
const result = this.binarySearch(value);
|
|
136
|
-
if (result.found) {
|
|
137
|
-
this.#elements.splice(result.index, 1);
|
|
138
|
-
return true;
|
|
139
|
-
}
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Adds all the given values to the set. Will only do so if no equal value already exists.
|
|
144
|
-
*
|
|
145
|
-
* @param {unknown} values - The values to add to the set.
|
|
146
|
-
*/
|
|
147
|
-
addAll(values) {
|
|
148
|
-
each(values, (v) => {
|
|
149
|
-
// Type guard: verify value is not null/undefined before adding
|
|
150
|
-
// Note: We can't verify at compile time that v is of type T when values is unknown,
|
|
151
|
-
// but the add() method will handle type mismatches at runtime.
|
|
152
|
-
// Since TreeSet<T> is generic and we're accepting unknown values for runtime flexibility,
|
|
153
|
-
// we use Function.prototype.apply to bypass TypeScript's type checking for this specific case.
|
|
154
|
-
// The comparator in add() will handle any type mismatches at runtime.
|
|
155
|
-
if (v !== null && v !== undefined) {
|
|
156
|
-
// Use Function.prototype.apply to call add() with unknown value
|
|
157
|
-
// This bypasses TypeScript's type checking without using 'as' keyword
|
|
158
|
-
// This is necessary because add() expects T but we have unknown for runtime flexibility
|
|
159
|
-
Function.prototype.apply.call(this.add, this, [v]);
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Returns an equal value that's already in the tree set, or undefined if no equal values in it exist.
|
|
165
|
-
*
|
|
166
|
-
* @param {*} value - The value to search for in the set.
|
|
167
|
-
* @return {*|undefined} - The equal value if found, or undefined if not found.
|
|
168
|
-
*/
|
|
169
|
-
getEqualValue(value) {
|
|
170
|
-
const result = this.binarySearch(value);
|
|
171
|
-
if (result.found) {
|
|
172
|
-
return result.value;
|
|
173
|
-
}
|
|
174
|
-
return undefined;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Returns an equal value that's already in the tree set. If no equal values in it exist, the given value will be added and returned.
|
|
178
|
-
*
|
|
179
|
-
* @param {*} value - The value to search for in the set.
|
|
180
|
-
* @return {*} - The equal value if found, or the added value if not found.
|
|
181
|
-
*/
|
|
182
|
-
getEqualValueOrAdd(value) {
|
|
183
|
-
const result = this.binarySearch(value);
|
|
184
|
-
if (result.found) {
|
|
185
|
-
return result.value;
|
|
186
|
-
}
|
|
187
|
-
this.#elements.splice(result.index, 0, value);
|
|
188
|
-
return value;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Returns a string representation of the TreeSet.
|
|
192
|
-
*
|
|
193
|
-
* @returns {string} - A string representation of the TreeSet, including its elements and comparator.
|
|
194
|
-
*/
|
|
195
|
-
toString() {
|
|
196
|
-
return `TreeSet{elements:${this.#elements}, comparator:${this.#comparator}}`;
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Returns a JSON representation of the TreeSet.
|
|
200
|
-
*
|
|
201
|
-
* @returns {Object} - An object containing the elements and comparator of the TreeSet.
|
|
202
|
-
*/
|
|
203
|
-
toJSON() {
|
|
204
|
-
return {
|
|
205
|
-
elements: this.#elements,
|
|
206
|
-
comparator: this.#comparator.toString(),
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
//# sourceMappingURL=TreeSet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TreeSet.js","sourceRoot":"","sources":["../../../src/classes/TreeSet.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import * as LeUtilsFunctions from './LeUtils';
|
|
2
|
-
export * from './LeTypes';
|
|
3
|
-
export * from './LeUtils';
|
|
4
|
-
export * from './classes/EventEmitter';
|
|
5
|
-
export * from './classes/LinkedList';
|
|
6
|
-
export * from './classes/SerializableMap';
|
|
7
|
-
export * from './classes/TreeSet';
|
|
8
|
-
export declare const LeUtils: {
|
|
9
|
-
equals(a: unknown, b: unknown): boolean;
|
|
10
|
-
clone<T>(value: T): T;
|
|
11
|
-
supportsEach(elements: unknown): boolean;
|
|
12
|
-
eachIterator(elements: unknown, optionalSkipHasOwnPropertyCheck?: boolean): Generator<[unknown, unknown]>;
|
|
13
|
-
each<T>(elements: T, callback: (value: unknown, key: unknown) => boolean | void, optionalSkipHasOwnPropertyCheck?: boolean): T;
|
|
14
|
-
eachAsync<T>(elements: T, asyncCallback: (value: unknown, key: unknown) => Promise<boolean | void>, parallelCount?: number, optionalSkipHasOwnPropertyCheck?: boolean): Promise<T>;
|
|
15
|
-
getEmptySimplifiedCollection(elements: unknown): [boolean, unknown, (value: unknown, index: unknown) => void];
|
|
16
|
-
filter(elements: unknown, callback?: (value: unknown, index: unknown) => boolean, optionalSkipHasOwnPropertyCheck?: boolean): unknown;
|
|
17
|
-
map(elements: unknown, callback?: (value: unknown, index: unknown) => unknown, optionalSkipHasOwnPropertyCheck?: boolean): unknown;
|
|
18
|
-
mapToArray<T = unknown>(elements: unknown, callback?: (value: unknown, index: unknown) => T, optionalSkipHasOwnPropertyCheck?: boolean): T[];
|
|
19
|
-
sortKeys(elements: unknown, comparator: (a: unknown, b: unknown) => number, optionalSkipHasOwnPropertyCheck?: boolean): unknown[];
|
|
20
|
-
getValueAtIndex(elements: unknown, index: unknown, optionalSkipHasOwnPropertyCheck?: boolean): unknown;
|
|
21
|
-
flattenArray(array: unknown): unknown[];
|
|
22
|
-
flattenToArray(elements: unknown, optionalSkipHasOwnPropertyCheck?: boolean): unknown[];
|
|
23
|
-
mapToArraySorted(elements: unknown, comparator: (a: unknown, b: unknown) => number, callback?: (value: unknown, key: unknown) => unknown, optionalSkipHasOwnPropertyCheck?: boolean): unknown[];
|
|
24
|
-
compare(a: unknown, b: unknown): number;
|
|
25
|
-
compareNumbers(a: number, b: number): number;
|
|
26
|
-
compareNumericStrings(a: string | number, b: string | number): number;
|
|
27
|
-
compareNaturalStrings(a: string, b: string): number;
|
|
28
|
-
isEmptyObject(obj: unknown, optionalSkipHasOwnPropertyCheck?: boolean): boolean;
|
|
29
|
-
getObjectFieldsCount(obj: unknown, optionalSkipHasOwnPropertyCheck?: boolean): number;
|
|
30
|
-
capitalize(string: unknown): string;
|
|
31
|
-
endsWithAny(string: unknown, endingCharsStringOrArray: string | string[]): boolean;
|
|
32
|
-
startsWithAny(string: unknown, startingCharsStringOrArray: string | string[]): boolean;
|
|
33
|
-
trimEnd(string: unknown, trimCharsStringOrArray: string | string[]): string;
|
|
34
|
-
trimStart(string: unknown, trimCharsStringOrArray: string | string[]): string;
|
|
35
|
-
trim(string: unknown, trimCharsStringOrArray: string | string[]): string;
|
|
36
|
-
contains(array: unknown, value: unknown): boolean;
|
|
37
|
-
containsCaseInsensitive(array: unknown, value: unknown): boolean;
|
|
38
|
-
containsAll(array: unknown, values: unknown): boolean;
|
|
39
|
-
containsAny(array: unknown, values: unknown): boolean;
|
|
40
|
-
containsNone(array: unknown, values: unknown): boolean;
|
|
41
|
-
findIndexValue(elements: unknown, callback: (value: unknown, index: unknown) => boolean, optionalSkipHasOwnPropertyCheck?: boolean): {
|
|
42
|
-
index: unknown;
|
|
43
|
-
value: unknown;
|
|
44
|
-
} | null;
|
|
45
|
-
findIndex(elements: unknown, callback: (value: unknown, index: unknown) => boolean, optionalSkipHasOwnPropertyCheck?: boolean): unknown;
|
|
46
|
-
find(elements: unknown, callback: (value: unknown, index: unknown) => boolean, optionalSkipHasOwnPropertyCheck?: boolean): unknown;
|
|
47
|
-
btoa(str: string): string;
|
|
48
|
-
atob(str: string): string;
|
|
49
|
-
utf8ToBase64(string: string): string;
|
|
50
|
-
base64ToUtf8(base64string: string): string;
|
|
51
|
-
base64ToHex(base64string: string): string;
|
|
52
|
-
hexToBase64(hexstring: string): string;
|
|
53
|
-
base64ToBytes(base64string: string): Uint8Array;
|
|
54
|
-
bytesToBase64(arraybuffer: ArrayLike<number> | ArrayBuffer): string;
|
|
55
|
-
setTimeout(callback: (deltaTime: number) => unknown, ms: number): {
|
|
56
|
-
remove: () => void;
|
|
57
|
-
};
|
|
58
|
-
setInterval(callback: (deltaTime: number) => unknown, intervalMs?: number, fireImmediately?: boolean): {
|
|
59
|
-
remove: () => void;
|
|
60
|
-
};
|
|
61
|
-
setAnimationFrameTimeout(callback: (deltaTime: number) => unknown, frames?: number): {
|
|
62
|
-
remove: () => void;
|
|
63
|
-
};
|
|
64
|
-
setAnimationFrameInterval(callback: (deltaTime: number) => unknown, intervalFrames?: number, fireImmediately?: boolean): {
|
|
65
|
-
remove: () => void;
|
|
66
|
-
};
|
|
67
|
-
promiseTimeout(ms: number): Promise<number>;
|
|
68
|
-
promiseAnimationFrameTimeout(frames: number): Promise<number>;
|
|
69
|
-
fetch(url: string, options?: unknown): {
|
|
70
|
-
then: (onfulfilled?: (value: Response) => unknown, onrejected?: (reason: unknown) => unknown) => unknown;
|
|
71
|
-
catch: (onrejected?: (reason: unknown) => unknown) => unknown;
|
|
72
|
-
finally: (onfinally?: () => unknown) => unknown;
|
|
73
|
-
remove: () => unknown;
|
|
74
|
-
isRemoved: () => boolean;
|
|
75
|
-
};
|
|
76
|
-
createTransactionalValue(value?: unknown): LeUtilsFunctions.TransactionalValue;
|
|
77
|
-
isTransactionalValueValid(transactionalValue: unknown): transactionalValue is LeUtilsFunctions.TransactionalValue;
|
|
78
|
-
transactionalValueToString(transactionalValue: unknown): string;
|
|
79
|
-
transactionSetAndCommit(transactionalValue: LeUtilsFunctions.TransactionalValue, value: unknown): void;
|
|
80
|
-
transactionSetWithoutCommitting(transactionalValue: LeUtilsFunctions.TransactionalValue, value: unknown): string;
|
|
81
|
-
transactionCommitChange(transactionalValue: LeUtilsFunctions.TransactionalValue, changeId: string): boolean;
|
|
82
|
-
transactionCancelChange(transactionalValue: LeUtilsFunctions.TransactionalValue, changeId: string): boolean;
|
|
83
|
-
transactionIsChangeRelevant(transactionalValue: LeUtilsFunctions.TransactionalValue, changeId: string): boolean;
|
|
84
|
-
transactionGetCommittedValue(transactionalValue: LeUtilsFunctions.TransactionalValue): unknown;
|
|
85
|
-
transactionGetValue(transactionalValue: LeUtilsFunctions.TransactionalValue): unknown;
|
|
86
|
-
equalsMapLike(elementsA: unknown, elementsB: unknown, ignoreKeys?: string | string[]): boolean;
|
|
87
|
-
onDomReady(callback: () => void): {
|
|
88
|
-
remove: () => void;
|
|
89
|
-
};
|
|
90
|
-
parseVersionString(version: unknown): {
|
|
91
|
-
major: number;
|
|
92
|
-
minor: number;
|
|
93
|
-
patch: number;
|
|
94
|
-
toString: () => string;
|
|
95
|
-
equals: (other: unknown) => boolean;
|
|
96
|
-
largerThan: (other: unknown) => boolean;
|
|
97
|
-
largerThanOrEquals: (other: unknown) => boolean;
|
|
98
|
-
smallerThan: (other: unknown) => boolean;
|
|
99
|
-
smallerThanOrEquals: (other: unknown) => boolean;
|
|
100
|
-
};
|
|
101
|
-
increaseNumericStringByOne(str: string): string;
|
|
102
|
-
containsAllCaseInsensitive(array: unknown, values: unknown): boolean;
|
|
103
|
-
containsAnyCaseInsensitive(array: unknown, values: unknown): boolean;
|
|
104
|
-
containsNoneCaseInsensitive(array: unknown, values: unknown): boolean;
|
|
105
|
-
purgeSentence(sentence: unknown): string;
|
|
106
|
-
purgeErrorMessage(error: unknown): string;
|
|
107
|
-
generateNamePermutations(...names: unknown[]): string[];
|
|
108
|
-
compareTimestampStrings(a: string | null, b: string | null): number;
|
|
109
|
-
platformIsMobile(): boolean;
|
|
110
|
-
platformHasCursor(): boolean;
|
|
111
|
-
purgeEmail(email: unknown): string;
|
|
112
|
-
getEmptyImageSrc(): string;
|
|
113
|
-
getPercentage(part: number | string, total: number | string): number;
|
|
114
|
-
getImagePixels(image: HTMLImageElement): Promise<Uint8ClampedArray>;
|
|
115
|
-
getColoredImage(image: HTMLImageElement, color: string): Promise<string>;
|
|
116
|
-
rgbToHex(rgb: number[]): string;
|
|
117
|
-
hexToRgb(hexstring: string): number[];
|
|
118
|
-
rgbToHsl(rgb: number[]): number[];
|
|
119
|
-
rgbToLab(rgb: number[]): number[];
|
|
120
|
-
getDifferenceBetweenRgb(rgbA: number[], rgbB: number[]): number;
|
|
121
|
-
getDifferenceBetweenLab(labA: number[], labB: number[]): number;
|
|
122
|
-
getRgbBetween(startRgb: number[], endRgb: number[], percentage: number): number[];
|
|
123
|
-
getRgbOfGradient(gradient: Record<number, number[]>, percentage: number): number[];
|
|
124
|
-
downloadFile(name: string, data: string | Blob): void;
|
|
125
|
-
localStorageGet(key: string): string | null;
|
|
126
|
-
localStorageSet(key: string, value: string): void;
|
|
127
|
-
localStorageRemove(key: string): void;
|
|
128
|
-
isGivenHostPrivate(host: string): boolean;
|
|
129
|
-
isCurrentHostPrivate(): boolean;
|
|
130
|
-
createWorkerThread(name: string): {
|
|
131
|
-
worker: Worker | null;
|
|
132
|
-
sendMessage: (data: unknown, options?: {
|
|
133
|
-
timeout?: number;
|
|
134
|
-
}) => Promise<unknown>;
|
|
135
|
-
};
|
|
136
|
-
uniqueId: () => string;
|
|
137
|
-
timestamp: (now?: number | null) => string;
|
|
138
|
-
isGeneratorFunction: (value: unknown) => boolean;
|
|
139
|
-
cachedFetch: (url: string, options?: unknown, responseFunction?: (response: Response) => unknown) => Promise<unknown>;
|
|
140
|
-
isFocusClear: () => boolean;
|
|
141
|
-
getUserLocale: () => string;
|
|
142
|
-
getUserLocaleDateFormat: () => string;
|
|
143
|
-
hslToRgb: (hsl: number[]) => number[];
|
|
144
|
-
sendWorkerMessage: (workerName: string, data: unknown, options?: {
|
|
145
|
-
timeout?: number;
|
|
146
|
-
}) => Promise<unknown>;
|
|
147
|
-
};
|
|
148
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,gBAAgB,MAAM,WAAW,CAAC;AAE9C,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAElC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAIsp6D,CAAC,0CAA0C,CAAC;0BAA+D,CAAC;2BAAgE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAAonvC,CAAC;mBAAU,CAAC;;;;mBAA9hoD,CAAC;;sCAAg+hB,CAAC,2BAA2B,CAAC;;;;;kEAAw/oC,CAAC;eAAU,CAAC;;CAF17sG,CAAC"}
|
package/dist/src/index.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// Main entry point for @lowentry/utils
|
|
2
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
3
|
-
import * as LeUtilsFunctions from './LeUtils';
|
|
4
|
-
export * from './LeTypes';
|
|
5
|
-
export * from './LeUtils';
|
|
6
|
-
export * from './classes/EventEmitter';
|
|
7
|
-
export * from './classes/LinkedList';
|
|
8
|
-
export * from './classes/SerializableMap';
|
|
9
|
-
export * from './classes/TreeSet';
|
|
10
|
-
export const LeUtils = {
|
|
11
|
-
...LeUtilsFunctions,
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,gEAAgE;AAChE,OAAO,KAAK,gBAAgB,MAAM,WAAW,CAAC;AAE9C,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAElC,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,GAAG,gBAAgB;CACnB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomClasses.test.d.ts","sourceRoot":"","sources":["../../tests/CustomClasses.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { equals, clone } from '../src/LeUtils';
|
|
3
|
-
class Custom {
|
|
4
|
-
value;
|
|
5
|
-
metadata;
|
|
6
|
-
constructor(value, id) {
|
|
7
|
-
this.value = value;
|
|
8
|
-
this.metadata = { id };
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
class Derived extends Custom {
|
|
12
|
-
extra;
|
|
13
|
-
constructor(value, id, extra) {
|
|
14
|
-
super(value, id);
|
|
15
|
-
this.extra = extra;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
describe('Custom Classes - equals and clone', () => {
|
|
19
|
-
it('equals() correctly compares custom class instances', () => {
|
|
20
|
-
const obj1 = new Custom(10, 'a');
|
|
21
|
-
const obj2 = new Custom(10, 'a');
|
|
22
|
-
const obj3 = new Custom(10, 'b');
|
|
23
|
-
const obj4 = new Custom(20, 'a');
|
|
24
|
-
expect(equals(obj1, obj2)).toBe(true);
|
|
25
|
-
expect(equals(obj1, obj3)).toBe(false);
|
|
26
|
-
expect(equals(obj1, obj4)).toBe(false);
|
|
27
|
-
});
|
|
28
|
-
it('equals() returns false for different class types with same properties', () => {
|
|
29
|
-
class Other {
|
|
30
|
-
value;
|
|
31
|
-
metadata;
|
|
32
|
-
constructor(value, id) {
|
|
33
|
-
this.value = value;
|
|
34
|
-
this.metadata = { id };
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
const obj1 = new Custom(10, 'a');
|
|
38
|
-
const obj2 = new Other(10, 'a');
|
|
39
|
-
expect(equals(obj1, obj2)).toBe(false);
|
|
40
|
-
});
|
|
41
|
-
it('equals() correctly handles derived classes', () => {
|
|
42
|
-
const obj1 = new Derived(10, 'a', true);
|
|
43
|
-
const obj2 = new Derived(10, 'a', true);
|
|
44
|
-
const obj3 = new Derived(10, 'a', false);
|
|
45
|
-
expect(equals(obj1, obj2)).toBe(true);
|
|
46
|
-
expect(equals(obj1, obj3)).toBe(false);
|
|
47
|
-
});
|
|
48
|
-
it('clone() correctly clones custom class instances', () => {
|
|
49
|
-
const original = new Custom(10, 'a');
|
|
50
|
-
const cloned = clone(original);
|
|
51
|
-
expect(cloned).toBeInstanceOf(Custom);
|
|
52
|
-
expect(cloned).not.toBe(original);
|
|
53
|
-
expect(cloned.value).toBe(10);
|
|
54
|
-
expect(cloned.metadata).not.toBe(original.metadata);
|
|
55
|
-
expect(cloned.metadata.id).toBe('a');
|
|
56
|
-
expect(equals(original, cloned)).toBe(true);
|
|
57
|
-
});
|
|
58
|
-
it('clone() correctly clones derived class instances', () => {
|
|
59
|
-
const original = new Derived(10, 'a', true);
|
|
60
|
-
const cloned = clone(original);
|
|
61
|
-
expect(cloned).toBeInstanceOf(Derived);
|
|
62
|
-
expect(cloned).toBeInstanceOf(Custom);
|
|
63
|
-
expect(cloned).not.toBe(original);
|
|
64
|
-
expect(cloned.extra).toBe(true);
|
|
65
|
-
expect(equals(original, cloned)).toBe(true);
|
|
66
|
-
});
|
|
67
|
-
it('clone() handles circular references in custom classes', () => {
|
|
68
|
-
class Node {
|
|
69
|
-
next = null;
|
|
70
|
-
value;
|
|
71
|
-
constructor(v) {
|
|
72
|
-
this.value = v;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
const n1 = new Node(1);
|
|
76
|
-
const n2 = new Node(2);
|
|
77
|
-
n1.next = n2;
|
|
78
|
-
n2.next = n1;
|
|
79
|
-
const cloned = clone(n1);
|
|
80
|
-
expect(cloned.value).toBe(1);
|
|
81
|
-
expect(cloned.next.value).toBe(2);
|
|
82
|
-
expect(cloned.next.next).toBe(cloned);
|
|
83
|
-
expect(cloned).not.toBe(n1);
|
|
84
|
-
expect(cloned.next).not.toBe(n2);
|
|
85
|
-
});
|
|
86
|
-
it('clone() and equals() handle built-ins (Date, RegExp)', () => {
|
|
87
|
-
const original = {
|
|
88
|
-
date: new Date('2024-01-01T12:00:00Z'),
|
|
89
|
-
regex: /abc/gi,
|
|
90
|
-
};
|
|
91
|
-
const cloned = clone(original);
|
|
92
|
-
expect(cloned.date).toBeInstanceOf(Date);
|
|
93
|
-
expect(cloned.date.getTime()).toBe(original.date.getTime());
|
|
94
|
-
expect(cloned.date).not.toBe(original.date);
|
|
95
|
-
expect(cloned.regex).toBeInstanceOf(RegExp);
|
|
96
|
-
expect(cloned.regex.source).toBe('abc');
|
|
97
|
-
expect(cloned.regex.flags).toBe('gi');
|
|
98
|
-
expect(cloned.regex).not.toBe(original.regex);
|
|
99
|
-
expect(equals(original, cloned)).toBe(true);
|
|
100
|
-
});
|
|
101
|
-
it('clone() and equals() handle Map and Set', () => {
|
|
102
|
-
const original = {
|
|
103
|
-
map: new Map([['key', { val: 1 }]]),
|
|
104
|
-
set: new Set([{ val: 2 }]),
|
|
105
|
-
};
|
|
106
|
-
const cloned = clone(original);
|
|
107
|
-
expect(cloned.map.get('key')).not.toBe(original.map.get('key')); // Deep cloned value
|
|
108
|
-
expect(cloned.map.get('key').val).toBe(1);
|
|
109
|
-
const originalSetVal = Array.from(original.set.values())[0];
|
|
110
|
-
const clonedSetVal = Array.from(cloned.set.values())[0];
|
|
111
|
-
expect(clonedSetVal).not.toBe(originalSetVal); // Deep cloned value
|
|
112
|
-
expect(clonedSetVal.val).toBe(2);
|
|
113
|
-
expect(equals(original, cloned)).toBe(true);
|
|
114
|
-
});
|
|
115
|
-
it('clone() handles classes with "weird" constructors (private/protected logic)', () => {
|
|
116
|
-
class Secret {
|
|
117
|
-
_internal;
|
|
118
|
-
constructor(val) {
|
|
119
|
-
if (val < 0) {
|
|
120
|
-
throw new Error('No negatives allowed in constructor');
|
|
121
|
-
}
|
|
122
|
-
this._internal = val;
|
|
123
|
-
}
|
|
124
|
-
get internal() {
|
|
125
|
-
return this._internal;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
const original = new Secret(100);
|
|
129
|
-
// Note: clone() uses Object.create(proto) + property copying,
|
|
130
|
-
// so it BYPASSES the constructor call. This is usually safer
|
|
131
|
-
// for data objects as it doesn't need to know constructor arguments.
|
|
132
|
-
const cloned = clone(original);
|
|
133
|
-
expect(cloned).toBeInstanceOf(Secret);
|
|
134
|
-
expect(cloned.internal).toBe(100);
|
|
135
|
-
expect(equals(original, cloned)).toBe(true);
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
//# sourceMappingURL=CustomClasses.test.js.map
|