querier-ts 2.0.2 → 2.1.1
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 +132 -78
- package/lib/__tests__/query.spec.d.ts +1 -0
- package/lib/__tests__/query.spec.d.ts.map +1 -0
- package/lib/__tests__/query.spec.js +193 -87
- package/lib/__tests__/query.spec.js.map +1 -0
- package/lib/core/errors/__tests__/invalid-argument-error.spec.d.ts +1 -0
- package/lib/core/errors/__tests__/invalid-argument-error.spec.d.ts.map +1 -0
- package/lib/core/errors/__tests__/invalid-argument-error.spec.js +7 -45
- package/lib/core/errors/__tests__/invalid-argument-error.spec.js.map +1 -0
- package/lib/core/errors/invalid-argument-error.d.ts +1 -12
- package/lib/core/errors/invalid-argument-error.d.ts.map +1 -1
- package/lib/core/errors/invalid-argument-error.js +2 -8
- package/lib/core/errors/invalid-argument-error.js.map +1 -1
- package/lib/core/types/nullable-condition.d.ts +2 -0
- package/lib/core/types/nullable-condition.d.ts.map +1 -0
- package/lib/core/types/nullable-condition.js +2 -0
- package/lib/core/types/nullable-condition.js.map +1 -0
- package/lib/core/types/query-conditions-group-nullable.d.ts +2 -1
- package/lib/core/types/query-conditions-group-nullable.d.ts.map +1 -1
- package/lib/core/types/validation-options.d.ts +4 -0
- package/lib/core/types/validation-options.d.ts.map +1 -0
- package/lib/core/types/validation-options.js +2 -0
- package/lib/core/types/validation-options.js.map +1 -0
- package/lib/core/validation/__tests__/query-row-validator.spec.d.ts +1 -0
- package/lib/core/validation/__tests__/query-row-validator.spec.d.ts.map +1 -0
- package/lib/core/validation/__tests__/query-row-validator.spec.js +48 -87
- package/lib/core/validation/__tests__/query-row-validator.spec.js.map +1 -0
- package/lib/core/validation/decorators/__tests__/number-validation.spec.d.ts +2 -1
- package/lib/core/validation/decorators/__tests__/number-validation.spec.d.ts.map +1 -0
- package/lib/core/validation/decorators/__tests__/number-validation.spec.js +40 -24
- package/lib/core/validation/decorators/__tests__/number-validation.spec.js.map +1 -0
- package/lib/core/validation/decorators/number-validaton.d.ts.map +1 -1
- package/lib/core/validation/decorators/number-validaton.js +6 -18
- package/lib/core/validation/decorators/number-validaton.js.map +1 -1
- package/lib/core/validation/query-row-validator.d.ts +6 -40
- package/lib/core/validation/query-row-validator.d.ts.map +1 -1
- package/lib/core/validation/query-row-validator.js +22 -44
- package/lib/core/validation/query-row-validator.js.map +1 -1
- package/lib/query.d.ts +18 -17
- package/lib/query.d.ts.map +1 -1
- package/lib/query.js +57 -59
- package/lib/query.js.map +1 -1
- package/lib/utils/functions/generic/__tests__/compare-arrays.spec.d.ts +1 -0
- package/lib/utils/functions/generic/__tests__/compare-arrays.spec.d.ts.map +1 -0
- package/lib/utils/functions/generic/__tests__/compare-arrays.spec.js +6 -7
- package/lib/utils/functions/generic/__tests__/compare-arrays.spec.js.map +1 -0
- package/lib/utils/functions/generic/__tests__/deep-equal.spec.d.ts +1 -0
- package/lib/utils/functions/generic/__tests__/deep-equal.spec.d.ts.map +1 -0
- package/lib/utils/functions/generic/__tests__/deep-equal.spec.js +25 -26
- package/lib/utils/functions/generic/__tests__/deep-equal.spec.js.map +1 -0
- package/lib/utils/functions/generic/__tests__/get-entries.spec.d.ts +1 -0
- package/lib/utils/functions/generic/__tests__/get-entries.spec.d.ts.map +1 -0
- package/lib/utils/functions/generic/__tests__/get-entries.spec.js +7 -8
- package/lib/utils/functions/generic/__tests__/get-entries.spec.js.map +1 -0
- package/lib/utils/functions/generic/__tests__/get-object-property-names.spec.d.ts +2 -0
- package/lib/utils/functions/generic/__tests__/get-object-property-names.spec.d.ts.map +1 -0
- package/lib/utils/functions/generic/__tests__/get-object-property-names.spec.js +82 -0
- package/lib/utils/functions/generic/__tests__/get-object-property-names.spec.js.map +1 -0
- package/lib/utils/functions/sort/__tests__/sort-by-properties.spec.d.ts +1 -0
- package/lib/utils/functions/sort/__tests__/sort-by-properties.spec.d.ts.map +1 -0
- package/lib/utils/functions/sort/__tests__/sort-by-properties.spec.js +10 -11
- package/lib/utils/functions/sort/__tests__/sort-by-properties.spec.js.map +1 -0
- package/lib/utils/functions/sort/__tests__/sort-by-property.spec.d.ts +1 -0
- package/lib/utils/functions/sort/__tests__/sort-by-property.spec.d.ts.map +1 -0
- package/lib/utils/functions/sort/__tests__/sort-by-property.spec.js +24 -12
- package/lib/utils/functions/sort/__tests__/sort-by-property.spec.js.map +1 -0
- package/lib/utils/functions/type-guards/__tests__/is-function.spec.d.ts +1 -0
- package/lib/utils/functions/type-guards/__tests__/is-function.spec.d.ts.map +1 -0
- package/lib/utils/functions/type-guards/__tests__/is-function.spec.js +14 -15
- package/lib/utils/functions/type-guards/__tests__/is-function.spec.js.map +1 -0
- package/lib/utils/functions/type-guards/__tests__/is-number.spec.d.ts +1 -0
- package/lib/utils/functions/type-guards/__tests__/is-number.spec.d.ts.map +1 -0
- package/lib/utils/functions/type-guards/__tests__/is-number.spec.js +19 -20
- package/lib/utils/functions/type-guards/__tests__/is-number.spec.js.map +1 -0
- package/lib/utils/functions/type-guards/__tests__/is-object.spec.d.ts +1 -0
- package/lib/utils/functions/type-guards/__tests__/is-object.spec.d.ts.map +1 -0
- package/lib/utils/functions/type-guards/__tests__/is-object.spec.js +19 -20
- package/lib/utils/functions/type-guards/__tests__/is-object.spec.js.map +1 -0
- package/package.json +15 -13
|
@@ -1,82 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const deep_equal_1 = require("../deep-equal");
|
|
1
|
+
import { deepEqual } from '../deep-equal';
|
|
4
2
|
describe('deepEqual', () => {
|
|
5
3
|
describe('primitive values', () => {
|
|
6
4
|
it('returns true for strictly equal primitives', () => {
|
|
7
|
-
expect(
|
|
8
|
-
expect(
|
|
9
|
-
expect(
|
|
10
|
-
expect(
|
|
11
|
-
expect(
|
|
5
|
+
expect(deepEqual(1, 1)).toBe(true);
|
|
6
|
+
expect(deepEqual('a', 'a')).toBe(true);
|
|
7
|
+
expect(deepEqual(true, true)).toBe(true);
|
|
8
|
+
expect(deepEqual(null, null)).toBe(true);
|
|
9
|
+
expect(deepEqual(undefined, undefined)).toBe(true);
|
|
12
10
|
});
|
|
13
11
|
it('returns false for different primitive values', () => {
|
|
14
|
-
expect(
|
|
15
|
-
expect(
|
|
16
|
-
expect(
|
|
17
|
-
expect(
|
|
12
|
+
expect(deepEqual(1, 2)).toBe(false);
|
|
13
|
+
expect(deepEqual('a', 'b')).toBe(false);
|
|
14
|
+
expect(deepEqual(true, false)).toBe(false);
|
|
15
|
+
expect(deepEqual(null, undefined)).toBe(false);
|
|
18
16
|
});
|
|
19
17
|
});
|
|
20
18
|
describe('objects', () => {
|
|
21
19
|
it('returns true for deeply equal plain objects', () => {
|
|
22
20
|
const a = { x: 1, y: 2 };
|
|
23
21
|
const b = { x: 1, y: 2 };
|
|
24
|
-
expect(
|
|
22
|
+
expect(deepEqual(a, b)).toBe(true);
|
|
25
23
|
});
|
|
26
24
|
it('returns false for objects with different keys', () => {
|
|
27
|
-
expect(
|
|
25
|
+
expect(deepEqual({ x: 1 }, { y: 1 })).toBe(false);
|
|
28
26
|
});
|
|
29
27
|
it('returns false for objects with same keys but different values', () => {
|
|
30
|
-
expect(
|
|
28
|
+
expect(deepEqual({ x: 1 }, { x: 2 })).toBe(false);
|
|
31
29
|
});
|
|
32
30
|
it('returns false when one object has extra keys', () => {
|
|
33
|
-
expect(
|
|
31
|
+
expect(deepEqual({ x: 1 }, { x: 1, y: 2 })).toBe(false);
|
|
34
32
|
});
|
|
35
33
|
});
|
|
36
34
|
describe('nested structures', () => {
|
|
37
35
|
it('returns true for deeply nested objects', () => {
|
|
38
36
|
const a = { x: { y: { z: 1 } } };
|
|
39
37
|
const b = { x: { y: { z: 1 } } };
|
|
40
|
-
expect(
|
|
38
|
+
expect(deepEqual(a, b)).toBe(true);
|
|
41
39
|
});
|
|
42
40
|
it('returns false for deeply nested differences', () => {
|
|
43
41
|
const a = { x: { y: { z: 1 } } };
|
|
44
42
|
const b = { x: { y: { z: 2 } } };
|
|
45
|
-
expect(
|
|
43
|
+
expect(deepEqual(a, b)).toBe(false);
|
|
46
44
|
});
|
|
47
45
|
});
|
|
48
46
|
describe('arrays', () => {
|
|
49
47
|
it('returns true for deeply equal arrays', () => {
|
|
50
|
-
expect(
|
|
48
|
+
expect(deepEqual([1, 2, 3], [1, 2, 3])).toBe(true);
|
|
51
49
|
});
|
|
52
50
|
it('returns false for arrays with different order', () => {
|
|
53
|
-
expect(
|
|
51
|
+
expect(deepEqual([1, 2, 3], [3, 2, 1])).toBe(false);
|
|
54
52
|
});
|
|
55
53
|
it('returns true for arrays with nested objects', () => {
|
|
56
54
|
const a = [{ x: 1 }, { y: 2 }];
|
|
57
55
|
const b = [{ x: 1 }, { y: 2 }];
|
|
58
|
-
expect(
|
|
56
|
+
expect(deepEqual(a, b)).toBe(true);
|
|
59
57
|
});
|
|
60
58
|
it('returns false for arrays with different lengths', () => {
|
|
61
|
-
expect(
|
|
59
|
+
expect(deepEqual([1, 2], [1, 2, 3])).toBe(false);
|
|
62
60
|
});
|
|
63
61
|
});
|
|
64
62
|
describe('mixed and edge cases', () => {
|
|
65
63
|
it('returns false when comparing array and object', () => {
|
|
66
|
-
expect(
|
|
64
|
+
expect(deepEqual([], {})).toBe(false);
|
|
67
65
|
});
|
|
68
66
|
it('returns false when one value is object and the other is primitive', () => {
|
|
69
|
-
expect(
|
|
67
|
+
expect(deepEqual({ x: 1 }, 1)).toBe(false);
|
|
70
68
|
});
|
|
71
69
|
it('returns true for same object reference', () => {
|
|
72
70
|
const obj = { x: 1 };
|
|
73
|
-
expect(
|
|
71
|
+
expect(deepEqual(obj, obj)).toBe(true);
|
|
74
72
|
});
|
|
75
73
|
it('returns false for Date objects with same value (by design)', () => {
|
|
76
74
|
const a = new Date(2020, 1, 1);
|
|
77
75
|
const b = new Date(2020, 1, 1);
|
|
78
76
|
// Date has no enumerable keys, so this documents the limitation
|
|
79
|
-
expect(
|
|
77
|
+
expect(deepEqual(a, b)).toBe(true);
|
|
80
78
|
});
|
|
81
79
|
});
|
|
82
80
|
});
|
|
81
|
+
//# sourceMappingURL=deep-equal.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-equal.spec.js","sourceRoot":"","sources":["../../../../../src/utils/functions/generic/__tests__/deep-equal.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-entries.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/functions/generic/__tests__/get-entries.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const get_entries_1 = require("../get-entries");
|
|
1
|
+
import { getEntries } from '../get-entries';
|
|
4
2
|
describe('getEntries', () => {
|
|
5
3
|
it('should return entries for a simple object', () => {
|
|
6
4
|
const obj = {
|
|
7
5
|
a: 1,
|
|
8
6
|
b: 2,
|
|
9
7
|
};
|
|
10
|
-
const entries =
|
|
8
|
+
const entries = getEntries(obj);
|
|
11
9
|
expect(entries).toEqual([
|
|
12
10
|
['a', 1],
|
|
13
11
|
['b', 2],
|
|
@@ -15,7 +13,7 @@ describe('getEntries', () => {
|
|
|
15
13
|
});
|
|
16
14
|
it('should return an empty array for an empty object', () => {
|
|
17
15
|
const obj = {};
|
|
18
|
-
const entries =
|
|
16
|
+
const entries = getEntries(obj);
|
|
19
17
|
expect(entries).toEqual([]);
|
|
20
18
|
});
|
|
21
19
|
it('should work with different value types', () => {
|
|
@@ -24,7 +22,7 @@ describe('getEntries', () => {
|
|
|
24
22
|
age: 30,
|
|
25
23
|
active: true,
|
|
26
24
|
};
|
|
27
|
-
const entries =
|
|
25
|
+
const entries = getEntries(obj);
|
|
28
26
|
expect(entries).toEqual([
|
|
29
27
|
['name', 'Alice'],
|
|
30
28
|
['age', 30],
|
|
@@ -36,7 +34,7 @@ describe('getEntries', () => {
|
|
|
36
34
|
x: 10,
|
|
37
35
|
y: 20,
|
|
38
36
|
};
|
|
39
|
-
const entries =
|
|
37
|
+
const entries = getEntries(obj);
|
|
40
38
|
for (const [key, value] of entries) {
|
|
41
39
|
expect(obj[key]).toBe(value);
|
|
42
40
|
}
|
|
@@ -46,10 +44,11 @@ describe('getEntries', () => {
|
|
|
46
44
|
id: 1,
|
|
47
45
|
title: 'Post',
|
|
48
46
|
};
|
|
49
|
-
const entries =
|
|
47
|
+
const entries = getEntries(obj);
|
|
50
48
|
const key = 'id';
|
|
51
49
|
const value = obj[key];
|
|
52
50
|
expect(key).toBe('id');
|
|
53
51
|
expect(value).toBe(1);
|
|
54
52
|
});
|
|
55
53
|
});
|
|
54
|
+
//# sourceMappingURL=get-entries.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-entries.spec.js","sourceRoot":"","sources":["../../../../../src/utils/functions/generic/__tests__/get-entries.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,GAAG,GAAG;YACV,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YACtB,CAAC,GAAG,EAAE,CAAC,CAAC;YACR,CAAC,GAAG,EAAE,CAAC,CAAC;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG,EAAE,CAAC;QAEf,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YACtB,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,KAAK,EAAE,EAAE,CAAC;YACX,CAAC,QAAQ,EAAE,IAAI,CAAC;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,GAAG,GAAG;YACV,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;SACN,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAEhC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,GAAG,GAAG;YACV,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,MAAM;SACd,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAKhC,MAAM,GAAG,GAAa,IAAI,CAAC;QAC3B,MAAM,KAAK,GAAa,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-object-property-names.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/functions/generic/__tests__/get-object-property-names.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { getObjectPropertyNames } from '../get-object-property-names';
|
|
2
|
+
class User {
|
|
3
|
+
constructor(id, name, active) {
|
|
4
|
+
this.id = id;
|
|
5
|
+
this.name = name;
|
|
6
|
+
this.active = active;
|
|
7
|
+
}
|
|
8
|
+
isAdmin() {
|
|
9
|
+
return this.id === 1;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
describe('getObjectPropertyNames', () => {
|
|
13
|
+
it('should return only data properties from a plain object', () => {
|
|
14
|
+
const obj = {
|
|
15
|
+
id: 1,
|
|
16
|
+
name: 'John',
|
|
17
|
+
active: true,
|
|
18
|
+
};
|
|
19
|
+
const result = getObjectPropertyNames(obj);
|
|
20
|
+
expect(result).toEqual(['id', 'name', 'active']);
|
|
21
|
+
});
|
|
22
|
+
it('should exclude function properties', () => {
|
|
23
|
+
const obj = {
|
|
24
|
+
id: 1,
|
|
25
|
+
name: 'John',
|
|
26
|
+
greet: () => 'hello',
|
|
27
|
+
};
|
|
28
|
+
const result = getObjectPropertyNames(obj);
|
|
29
|
+
expect(result).toEqual(['id', 'name']);
|
|
30
|
+
});
|
|
31
|
+
it('should not include class prototype methods', () => {
|
|
32
|
+
const user = new User(1, 'John', true);
|
|
33
|
+
const result = getObjectPropertyNames(user);
|
|
34
|
+
expect(result).toEqual(['id', 'name', 'active']);
|
|
35
|
+
expect(result.includes('isAdmin')).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
it('should return empty array for object with only methods', () => {
|
|
38
|
+
const obj = {
|
|
39
|
+
fn1: () => 1,
|
|
40
|
+
fn2: () => 2,
|
|
41
|
+
};
|
|
42
|
+
const result = getObjectPropertyNames(obj);
|
|
43
|
+
expect(result).toEqual([]);
|
|
44
|
+
});
|
|
45
|
+
it('should return empty array for empty object', () => {
|
|
46
|
+
const obj = {};
|
|
47
|
+
const result = getObjectPropertyNames(obj);
|
|
48
|
+
expect(result).toEqual([]);
|
|
49
|
+
});
|
|
50
|
+
it('should handle mixed value types correctly', () => {
|
|
51
|
+
const obj = {
|
|
52
|
+
str: 'text',
|
|
53
|
+
num: 123,
|
|
54
|
+
bool: true,
|
|
55
|
+
nil: null,
|
|
56
|
+
undef: undefined,
|
|
57
|
+
obj: { nested: true },
|
|
58
|
+
arr: [1, 2, 3],
|
|
59
|
+
fn: () => { },
|
|
60
|
+
};
|
|
61
|
+
const result = getObjectPropertyNames(obj);
|
|
62
|
+
expect(result).toEqual([
|
|
63
|
+
'str',
|
|
64
|
+
'num',
|
|
65
|
+
'bool',
|
|
66
|
+
'nil',
|
|
67
|
+
'undef',
|
|
68
|
+
'obj',
|
|
69
|
+
'arr',
|
|
70
|
+
]);
|
|
71
|
+
});
|
|
72
|
+
it('should preserve key order', () => {
|
|
73
|
+
const obj = {
|
|
74
|
+
a: 1,
|
|
75
|
+
b: 2,
|
|
76
|
+
c: 3,
|
|
77
|
+
};
|
|
78
|
+
const result = getObjectPropertyNames(obj);
|
|
79
|
+
expect(result).toEqual(['a', 'b', 'c']);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=get-object-property-names.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-object-property-names.spec.js","sourceRoot":"","sources":["../../../../../src/utils/functions/generic/__tests__/get-object-property-names.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-by-properties.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/functions/sort/__tests__/sort-by-properties.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const sort_by_properties_1 = require("../sort-by-properties");
|
|
1
|
+
import { sortByProperties } from '../sort-by-properties';
|
|
4
2
|
describe('sortByProperties', () => {
|
|
5
3
|
it('sorts by a single property', () => {
|
|
6
4
|
const data = [
|
|
7
5
|
{ id: 2, name: 'B' },
|
|
8
6
|
{ id: 1, name: 'A' },
|
|
9
7
|
];
|
|
10
|
-
data.sort(
|
|
8
|
+
data.sort(sortByProperties('id'));
|
|
11
9
|
expect(data).toEqual([
|
|
12
10
|
{ id: 1, name: 'A' },
|
|
13
11
|
{ id: 2, name: 'B' },
|
|
@@ -19,7 +17,7 @@ describe('sortByProperties', () => {
|
|
|
19
17
|
{ id: 2, name: 'Alice', age: 30 },
|
|
20
18
|
{ id: 3, name: 'Alice', age: 25 },
|
|
21
19
|
];
|
|
22
|
-
data.sort(
|
|
20
|
+
data.sort(sortByProperties('name', 'age'));
|
|
23
21
|
expect(data).toEqual([
|
|
24
22
|
{ id: 3, name: 'Alice', age: 25 },
|
|
25
23
|
{ id: 2, name: 'Alice', age: 30 },
|
|
@@ -32,7 +30,7 @@ describe('sortByProperties', () => {
|
|
|
32
30
|
{ id: 2, name: 'Alice', age: 30 },
|
|
33
31
|
{ id: 3, name: 'Alice', age: 25 },
|
|
34
32
|
];
|
|
35
|
-
data.sort(
|
|
33
|
+
data.sort(sortByProperties('name', '-age'));
|
|
36
34
|
expect(data).toEqual([
|
|
37
35
|
{ id: 2, name: 'Alice', age: 30 },
|
|
38
36
|
{ id: 3, name: 'Alice', age: 25 },
|
|
@@ -45,7 +43,7 @@ describe('sortByProperties', () => {
|
|
|
45
43
|
{ id: 2, name: 'Alice', age: 20 },
|
|
46
44
|
{ id: 3, name: 'Alice', age: 10 },
|
|
47
45
|
];
|
|
48
|
-
data.sort(
|
|
46
|
+
data.sort(sortByProperties('name', 'age'));
|
|
49
47
|
expect(data).toEqual([
|
|
50
48
|
{ id: 3, name: 'Alice', age: 10 },
|
|
51
49
|
{ id: 2, name: 'Alice', age: 20 },
|
|
@@ -53,17 +51,18 @@ describe('sortByProperties', () => {
|
|
|
53
51
|
]);
|
|
54
52
|
});
|
|
55
53
|
it('returns 0 when all compared properties are equal', () => {
|
|
56
|
-
const comparator =
|
|
54
|
+
const comparator = sortByProperties('name', 'age');
|
|
57
55
|
expect(comparator({ id: 1, name: 'Alice', age: 20 }, { id: 2, name: 'Alice', age: 20 })).toBe(0);
|
|
58
56
|
});
|
|
59
57
|
it('returns 0 when no properties are provided', () => {
|
|
60
|
-
const comparator =
|
|
58
|
+
const comparator = sortByProperties();
|
|
61
59
|
expect(comparator({ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' })).toBe(0);
|
|
62
60
|
});
|
|
63
61
|
it('enforces type safety at compile time', () => {
|
|
64
62
|
// @ts-expect-error
|
|
65
|
-
|
|
63
|
+
sortByProperties('invalid');
|
|
66
64
|
// @ts-expect-error
|
|
67
|
-
|
|
65
|
+
sortByProperties('-invalid');
|
|
68
66
|
});
|
|
69
67
|
});
|
|
68
|
+
//# sourceMappingURL=sort-by-properties.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-by-properties.spec.js","sourceRoot":"","sources":["../../../../../src/utils/functions/sort/__tests__/sort-by-properties.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-by-property.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/functions/sort/__tests__/sort-by-property.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const sort_by_property_1 = require("../sort-by-property");
|
|
1
|
+
import { sortByProperty } from '../sort-by-property';
|
|
4
2
|
describe('sortByProperty (improved)', () => {
|
|
5
3
|
describe('ascending order', () => {
|
|
6
4
|
it('sorts by numeric property', () => {
|
|
7
5
|
const data = [{ id: 3 }, { id: 1 }, { id: 2 }];
|
|
8
|
-
data.sort(
|
|
6
|
+
data.sort(sortByProperty('id'));
|
|
9
7
|
expect(data).toEqual([{ id: 1 }, { id: 2 }, { id: 3 }]);
|
|
10
8
|
});
|
|
11
9
|
it('sorts by string property', () => {
|
|
12
10
|
const data = [{ name: 'Charlie' }, { name: 'Alice' }, { name: 'Bob' }];
|
|
13
|
-
data.sort(
|
|
11
|
+
data.sort(sortByProperty('name'));
|
|
14
12
|
expect(data).toEqual([
|
|
15
13
|
{ name: 'Alice' },
|
|
16
14
|
{ name: 'Bob' },
|
|
@@ -21,12 +19,12 @@ describe('sortByProperty (improved)', () => {
|
|
|
21
19
|
describe('descending order', () => {
|
|
22
20
|
it('sorts by numeric property descending', () => {
|
|
23
21
|
const data = [{ score: 10 }, { score: 30 }, { score: 20 }];
|
|
24
|
-
data.sort(
|
|
22
|
+
data.sort(sortByProperty('-score'));
|
|
25
23
|
expect(data).toEqual([{ score: 30 }, { score: 20 }, { score: 10 }]);
|
|
26
24
|
});
|
|
27
25
|
it('sorts by string property descending', () => {
|
|
28
26
|
const data = [{ name: 'Alice' }, { name: 'Charlie' }, { name: 'Bob' }];
|
|
29
|
-
data.sort(
|
|
27
|
+
data.sort(sortByProperty('-name'));
|
|
30
28
|
expect(data).toEqual([
|
|
31
29
|
{ name: 'Charlie' },
|
|
32
30
|
{ name: 'Bob' },
|
|
@@ -37,27 +35,41 @@ describe('sortByProperty (improved)', () => {
|
|
|
37
35
|
describe('null and undefined handling', () => {
|
|
38
36
|
it('places undefined values last', () => {
|
|
39
37
|
const data = [{ value: 2 }, { value: undefined }, { value: 1 }];
|
|
40
|
-
data.sort(
|
|
38
|
+
data.sort(sortByProperty('value'));
|
|
41
39
|
expect(data).toEqual([{ value: 1 }, { value: 2 }, { value: undefined }]);
|
|
42
40
|
});
|
|
43
41
|
it('places null values last', () => {
|
|
44
42
|
const data = [{ value: 2 }, { value: null }, { value: 1 }];
|
|
45
|
-
data.sort(
|
|
43
|
+
data.sort(sortByProperty('value'));
|
|
46
44
|
expect(data).toEqual([{ value: 1 }, { value: 2 }, { value: null }]);
|
|
47
45
|
});
|
|
46
|
+
it('returns 0 when both values are null', () => {
|
|
47
|
+
const comparator = sortByProperty('value');
|
|
48
|
+
expect(comparator({ value: null }, { value: null })).toBe(0);
|
|
49
|
+
});
|
|
50
|
+
it('returns 0 when both values are undefined', () => {
|
|
51
|
+
const comparator = sortByProperty('value');
|
|
52
|
+
expect(comparator({ value: undefined }, { value: undefined })).toBe(0);
|
|
53
|
+
});
|
|
54
|
+
it('returns 0 when both values are nullish (null vs undefined)', () => {
|
|
55
|
+
const comparator = sortByProperty('value');
|
|
56
|
+
expect(comparator({ value: null }, { value: undefined })).toBe(0);
|
|
57
|
+
expect(comparator({ value: undefined }, { value: null })).toBe(0);
|
|
58
|
+
});
|
|
48
59
|
});
|
|
49
60
|
describe('equal values', () => {
|
|
50
61
|
it('returns 0 for equal property values', () => {
|
|
51
|
-
const comparator =
|
|
62
|
+
const comparator = sortByProperty('id');
|
|
52
63
|
expect(comparator({ id: 1 }, { id: 1 })).toBe(0);
|
|
53
64
|
});
|
|
54
65
|
});
|
|
55
66
|
describe('type safety (compile-time)', () => {
|
|
56
67
|
it('does not allow invalid properties', () => {
|
|
57
68
|
// @ts-expect-error
|
|
58
|
-
|
|
69
|
+
sortByProperty('invalid');
|
|
59
70
|
// @ts-expect-error
|
|
60
|
-
|
|
71
|
+
sortByProperty('-invalid');
|
|
61
72
|
});
|
|
62
73
|
});
|
|
63
74
|
});
|
|
75
|
+
//# sourceMappingURL=sort-by-property.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-by-property.spec.js","sourceRoot":"","sources":["../../../../../src/utils/functions/sort/__tests__/sort-by-property.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-function.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/functions/type-guards/__tests__/is-function.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,38 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const is_function_1 = require("../is-function");
|
|
1
|
+
import { isFunction } from '../is-function';
|
|
4
2
|
describe('isFunction', () => {
|
|
5
3
|
it('should return true for regular functions', () => {
|
|
6
4
|
const fn = () => { };
|
|
7
|
-
expect(
|
|
5
|
+
expect(isFunction(fn)).toBe(true);
|
|
8
6
|
});
|
|
9
7
|
it('should return true for async functions', () => {
|
|
10
8
|
const fn = async () => { };
|
|
11
|
-
expect(
|
|
9
|
+
expect(isFunction(fn)).toBe(true);
|
|
12
10
|
});
|
|
13
11
|
it('should return true for class constructors', () => {
|
|
14
12
|
class Test {
|
|
15
13
|
}
|
|
16
|
-
expect(
|
|
14
|
+
expect(isFunction(Test)).toBe(true);
|
|
17
15
|
});
|
|
18
16
|
it('should return false for non-function values', () => {
|
|
19
|
-
expect(
|
|
20
|
-
expect(
|
|
21
|
-
expect(
|
|
22
|
-
expect(
|
|
23
|
-
expect(
|
|
24
|
-
expect(
|
|
25
|
-
expect(
|
|
17
|
+
expect(isFunction(123)).toBe(false);
|
|
18
|
+
expect(isFunction('string')).toBe(false);
|
|
19
|
+
expect(isFunction(null)).toBe(false);
|
|
20
|
+
expect(isFunction(undefined)).toBe(false);
|
|
21
|
+
expect(isFunction({})).toBe(false);
|
|
22
|
+
expect(isFunction([])).toBe(false);
|
|
23
|
+
expect(isFunction(true)).toBe(false);
|
|
26
24
|
});
|
|
27
25
|
it('should narrow the type when returning true (type guard)', () => {
|
|
28
26
|
const value = () => 'hello';
|
|
29
|
-
if (
|
|
27
|
+
if (isFunction(value)) {
|
|
30
28
|
// If this compiles, the type guard works
|
|
31
29
|
const result = value();
|
|
32
30
|
expect(result).toBe('hello');
|
|
33
31
|
}
|
|
34
32
|
else {
|
|
35
|
-
|
|
33
|
+
throw new Error('Expected value to be a function');
|
|
36
34
|
}
|
|
37
35
|
});
|
|
38
36
|
});
|
|
37
|
+
//# sourceMappingURL=is-function.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-function.spec.js","sourceRoot":"","sources":["../../../../../src/utils/functions/type-guards/__tests__/is-function.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,EAAE,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACpB,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;QAC1B,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,IAAI;SAAG;QACb,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QAE5B,IAAI,UAAU,CAAe,KAAK,CAAC,EAAE,CAAC;YACpC,yCAAyC;YACzC,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;YACvB,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-number.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/functions/type-guards/__tests__/is-number.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,35 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const is_number_1 = require("../is-number");
|
|
1
|
+
import { isNumber } from '../is-number';
|
|
4
2
|
describe('isNumber', () => {
|
|
5
3
|
it('should return true for valid numbers', () => {
|
|
6
|
-
expect(
|
|
7
|
-
expect(
|
|
8
|
-
expect(
|
|
9
|
-
expect(
|
|
10
|
-
expect(
|
|
11
|
-
expect(
|
|
12
|
-
expect(
|
|
4
|
+
expect(isNumber(0)).toBe(true);
|
|
5
|
+
expect(isNumber(42)).toBe(true);
|
|
6
|
+
expect(isNumber(-10)).toBe(true);
|
|
7
|
+
expect(isNumber(3.14)).toBe(true);
|
|
8
|
+
expect(isNumber(NaN)).toBe(true); // typeof NaN === 'number'
|
|
9
|
+
expect(isNumber(Infinity)).toBe(true);
|
|
10
|
+
expect(isNumber(-Infinity)).toBe(true);
|
|
13
11
|
});
|
|
14
12
|
it('should return false for non-number values', () => {
|
|
15
|
-
expect(
|
|
16
|
-
expect(
|
|
17
|
-
expect(
|
|
18
|
-
expect(
|
|
19
|
-
expect(
|
|
20
|
-
expect(
|
|
21
|
-
expect(
|
|
22
|
-
expect(
|
|
13
|
+
expect(isNumber('123')).toBe(false);
|
|
14
|
+
expect(isNumber(null)).toBe(false);
|
|
15
|
+
expect(isNumber(undefined)).toBe(false);
|
|
16
|
+
expect(isNumber({})).toBe(false);
|
|
17
|
+
expect(isNumber([])).toBe(false);
|
|
18
|
+
expect(isNumber(true)).toBe(false);
|
|
19
|
+
expect(isNumber(false)).toBe(false);
|
|
20
|
+
expect(isNumber(() => 1)).toBe(false);
|
|
23
21
|
});
|
|
24
22
|
it('should narrow the type when returning true (type guard)', () => {
|
|
25
23
|
const value = 123;
|
|
26
|
-
if (
|
|
24
|
+
if (isNumber(value)) {
|
|
27
25
|
// If this compiles, the type guard works
|
|
28
26
|
const result = value + 1;
|
|
29
27
|
expect(result).toBe(124);
|
|
30
28
|
}
|
|
31
29
|
else {
|
|
32
|
-
|
|
30
|
+
throw new Error('Expected value to be a number');
|
|
33
31
|
}
|
|
34
32
|
});
|
|
35
33
|
});
|
|
34
|
+
//# sourceMappingURL=is-number.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-number.spec.js","sourceRoot":"","sources":["../../../../../src/utils/functions/type-guards/__tests__/is-number.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B;QAC5D,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,KAAK,GAAY,GAAG,CAAC;QAE3B,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,yCAAyC;YACzC,MAAM,MAAM,GAAW,KAAK,GAAG,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-object.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/functions/type-guards/__tests__/is-object.spec.ts"],"names":[],"mappings":""}
|