@equinor/cpl-utils 0.2.2 → 0.3.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/dist/index.d.mts +33 -1
- package/dist/index.d.ts +33 -1
- package/dist/index.js +36 -0
- package/dist/index.mjs +34 -0
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,3 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a sort function that orders items by a numeric property
|
|
3
|
+
*
|
|
4
|
+
* @param key - The property key to sort by (must be a number type)
|
|
5
|
+
* @param order - Sort order: 'asc' for ascending, 'desc' for descending
|
|
6
|
+
* @returns A comparator function for use with Array.sort()
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const users = [{ age: 30 }, { age: 25 }, { age: 35 }]
|
|
10
|
+
* users.sort(buildObjectNumberCompareFn('age', 'asc')) // 25, 30, 35
|
|
11
|
+
* users.sort(buildObjectNumberCompareFn('age', 'desc')) // 35, 30, 25
|
|
12
|
+
*/
|
|
13
|
+
declare function buildObjectNumberCompareFn<T>(key: {
|
|
14
|
+
[K in keyof T]: T[K] extends number | undefined | null ? K : never;
|
|
15
|
+
}[keyof T], order?: 'asc' | 'desc'): (a: T, b: T) => number;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Creates a sort function that orders items by a string property
|
|
19
|
+
*
|
|
20
|
+
* @param key - The property key to sort by (must be a string type)
|
|
21
|
+
* @param order - Sort order: 'asc' for ascending, 'desc' for descending
|
|
22
|
+
* @returns A comparator function for use with Array.sort()
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const users = [{ name: 'John' }, { name: 'Alice' }]
|
|
26
|
+
* users.sort(buildObjectStringCompareFn('name', 'asc')) // Alice, John
|
|
27
|
+
* users.sort(buildObjectStringCompareFn('name', 'desc')) // John, Alice
|
|
28
|
+
*/
|
|
29
|
+
declare function buildObjectStringCompareFn<T>(key: {
|
|
30
|
+
[K in keyof T]: T[K] extends string | undefined | null ? K : never;
|
|
31
|
+
}[keyof T], order?: 'asc' | 'desc'): (a: T, b: T) => number;
|
|
32
|
+
|
|
1
33
|
type TreeNode<T> = T & {
|
|
2
34
|
children?: TreeNode<T>[];
|
|
3
35
|
};
|
|
@@ -205,4 +237,4 @@ declare function objectHasOwnNestedProperty<K extends readonly string[]>(object:
|
|
|
205
237
|
*/
|
|
206
238
|
declare function objectHasOwnProperty<Key extends PropertyKey>(object: object, key: Key): object is Record<Key, unknown>;
|
|
207
239
|
|
|
208
|
-
export { type TreeNode, buildTreeNodes, hasCircularDependency, itemIsDefined, objectHasOwnNestedProperty, objectHasOwnProperty };
|
|
240
|
+
export { type TreeNode, buildObjectNumberCompareFn, buildObjectStringCompareFn, buildTreeNodes, hasCircularDependency, itemIsDefined, objectHasOwnNestedProperty, objectHasOwnProperty };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a sort function that orders items by a numeric property
|
|
3
|
+
*
|
|
4
|
+
* @param key - The property key to sort by (must be a number type)
|
|
5
|
+
* @param order - Sort order: 'asc' for ascending, 'desc' for descending
|
|
6
|
+
* @returns A comparator function for use with Array.sort()
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const users = [{ age: 30 }, { age: 25 }, { age: 35 }]
|
|
10
|
+
* users.sort(buildObjectNumberCompareFn('age', 'asc')) // 25, 30, 35
|
|
11
|
+
* users.sort(buildObjectNumberCompareFn('age', 'desc')) // 35, 30, 25
|
|
12
|
+
*/
|
|
13
|
+
declare function buildObjectNumberCompareFn<T>(key: {
|
|
14
|
+
[K in keyof T]: T[K] extends number | undefined | null ? K : never;
|
|
15
|
+
}[keyof T], order?: 'asc' | 'desc'): (a: T, b: T) => number;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Creates a sort function that orders items by a string property
|
|
19
|
+
*
|
|
20
|
+
* @param key - The property key to sort by (must be a string type)
|
|
21
|
+
* @param order - Sort order: 'asc' for ascending, 'desc' for descending
|
|
22
|
+
* @returns A comparator function for use with Array.sort()
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const users = [{ name: 'John' }, { name: 'Alice' }]
|
|
26
|
+
* users.sort(buildObjectStringCompareFn('name', 'asc')) // Alice, John
|
|
27
|
+
* users.sort(buildObjectStringCompareFn('name', 'desc')) // John, Alice
|
|
28
|
+
*/
|
|
29
|
+
declare function buildObjectStringCompareFn<T>(key: {
|
|
30
|
+
[K in keyof T]: T[K] extends string | undefined | null ? K : never;
|
|
31
|
+
}[keyof T], order?: 'asc' | 'desc'): (a: T, b: T) => number;
|
|
32
|
+
|
|
1
33
|
type TreeNode<T> = T & {
|
|
2
34
|
children?: TreeNode<T>[];
|
|
3
35
|
};
|
|
@@ -205,4 +237,4 @@ declare function objectHasOwnNestedProperty<K extends readonly string[]>(object:
|
|
|
205
237
|
*/
|
|
206
238
|
declare function objectHasOwnProperty<Key extends PropertyKey>(object: object, key: Key): object is Record<Key, unknown>;
|
|
207
239
|
|
|
208
|
-
export { type TreeNode, buildTreeNodes, hasCircularDependency, itemIsDefined, objectHasOwnNestedProperty, objectHasOwnProperty };
|
|
240
|
+
export { type TreeNode, buildObjectNumberCompareFn, buildObjectStringCompareFn, buildTreeNodes, hasCircularDependency, itemIsDefined, objectHasOwnNestedProperty, objectHasOwnProperty };
|
package/dist/index.js
CHANGED
|
@@ -34,6 +34,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
34
34
|
// src/index.ts
|
|
35
35
|
var index_exports = {};
|
|
36
36
|
__export(index_exports, {
|
|
37
|
+
buildObjectNumberCompareFn: () => buildObjectNumberCompareFn,
|
|
38
|
+
buildObjectStringCompareFn: () => buildObjectStringCompareFn,
|
|
37
39
|
buildTreeNodes: () => buildTreeNodes,
|
|
38
40
|
hasCircularDependency: () => hasCircularDependency,
|
|
39
41
|
itemIsDefined: () => itemIsDefined,
|
|
@@ -42,6 +44,38 @@ __export(index_exports, {
|
|
|
42
44
|
});
|
|
43
45
|
module.exports = __toCommonJS(index_exports);
|
|
44
46
|
|
|
47
|
+
// src/build-object-number-compare-fn.ts
|
|
48
|
+
function buildObjectNumberCompareFn(key, order = "asc") {
|
|
49
|
+
return (a, b) => {
|
|
50
|
+
const aValue = Number(a[key] || 0);
|
|
51
|
+
const bValue = Number(b[key] || 0);
|
|
52
|
+
const aNum = isNaN(aValue) ? 0 : aValue;
|
|
53
|
+
const bNum = isNaN(bValue) ? 0 : bValue;
|
|
54
|
+
if (aNum < bNum) {
|
|
55
|
+
return order === "asc" ? -1 : 1;
|
|
56
|
+
}
|
|
57
|
+
if (aNum > bNum) {
|
|
58
|
+
return order === "asc" ? 1 : -1;
|
|
59
|
+
}
|
|
60
|
+
return 0;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// src/build-object-string-compare-fn.ts
|
|
65
|
+
function buildObjectStringCompareFn(key, order = "asc") {
|
|
66
|
+
return (a, b) => {
|
|
67
|
+
const aValue = String(a[key] || "").toLowerCase();
|
|
68
|
+
const bValue = String(b[key] || "").toLowerCase();
|
|
69
|
+
if (aValue < bValue) {
|
|
70
|
+
return order === "asc" ? -1 : 1;
|
|
71
|
+
}
|
|
72
|
+
if (aValue > bValue) {
|
|
73
|
+
return order === "asc" ? 1 : -1;
|
|
74
|
+
}
|
|
75
|
+
return 0;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
45
79
|
// src/has-circular-dependency.ts
|
|
46
80
|
function hasCircularDependency(items, idKey, parentIdKey) {
|
|
47
81
|
const parentMap = /* @__PURE__ */ new Map();
|
|
@@ -140,6 +174,8 @@ function objectHasOwnNestedProperty(object, ...keys) {
|
|
|
140
174
|
}
|
|
141
175
|
// Annotate the CommonJS export names for ESM import in node:
|
|
142
176
|
0 && (module.exports = {
|
|
177
|
+
buildObjectNumberCompareFn,
|
|
178
|
+
buildObjectStringCompareFn,
|
|
143
179
|
buildTreeNodes,
|
|
144
180
|
hasCircularDependency,
|
|
145
181
|
itemIsDefined,
|
package/dist/index.mjs
CHANGED
|
@@ -15,6 +15,38 @@ var __spreadValues = (a, b) => {
|
|
|
15
15
|
return a;
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
+
// src/build-object-number-compare-fn.ts
|
|
19
|
+
function buildObjectNumberCompareFn(key, order = "asc") {
|
|
20
|
+
return (a, b) => {
|
|
21
|
+
const aValue = Number(a[key] || 0);
|
|
22
|
+
const bValue = Number(b[key] || 0);
|
|
23
|
+
const aNum = isNaN(aValue) ? 0 : aValue;
|
|
24
|
+
const bNum = isNaN(bValue) ? 0 : bValue;
|
|
25
|
+
if (aNum < bNum) {
|
|
26
|
+
return order === "asc" ? -1 : 1;
|
|
27
|
+
}
|
|
28
|
+
if (aNum > bNum) {
|
|
29
|
+
return order === "asc" ? 1 : -1;
|
|
30
|
+
}
|
|
31
|
+
return 0;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// src/build-object-string-compare-fn.ts
|
|
36
|
+
function buildObjectStringCompareFn(key, order = "asc") {
|
|
37
|
+
return (a, b) => {
|
|
38
|
+
const aValue = String(a[key] || "").toLowerCase();
|
|
39
|
+
const bValue = String(b[key] || "").toLowerCase();
|
|
40
|
+
if (aValue < bValue) {
|
|
41
|
+
return order === "asc" ? -1 : 1;
|
|
42
|
+
}
|
|
43
|
+
if (aValue > bValue) {
|
|
44
|
+
return order === "asc" ? 1 : -1;
|
|
45
|
+
}
|
|
46
|
+
return 0;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
18
50
|
// src/has-circular-dependency.ts
|
|
19
51
|
function hasCircularDependency(items, idKey, parentIdKey) {
|
|
20
52
|
const parentMap = /* @__PURE__ */ new Map();
|
|
@@ -112,6 +144,8 @@ function objectHasOwnNestedProperty(object, ...keys) {
|
|
|
112
144
|
return true;
|
|
113
145
|
}
|
|
114
146
|
export {
|
|
147
|
+
buildObjectNumberCompareFn,
|
|
148
|
+
buildObjectStringCompareFn,
|
|
115
149
|
buildTreeNodes,
|
|
116
150
|
hasCircularDependency,
|
|
117
151
|
itemIsDefined,
|