@libs-ui/utils 0.2.246 → 0.2.247

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/helpers.d.ts CHANGED
@@ -1,16 +1,152 @@
1
1
  import { TYPE_OBJECT } from "@libs-ui/interfaces-types";
2
2
  /**Các hàm tương tự thư viện lodash */
3
+ /**
4
+ * Kiểm tra xem một giá trị có phải là null hoặc undefined hay không
5
+ * @param value Giá trị cần kiểm tra
6
+ * @returns true nếu giá trị là null hoặc undefined, false nếu không
7
+ * @example
8
+ * isNil(null); // true
9
+ * isNil(undefined); // true
10
+ * isNil(0); // false
11
+ * isNil('hello'); // false
12
+ */
3
13
  export declare const isNil: (value: unknown) => value is null | undefined;
14
+ /**
15
+ * Kiểm tra xem một giá trị có phải là rỗng hay không
16
+ * @param value Giá trị cần kiểm tra
17
+ * @returns true nếu giá trị là null, rỗng hoặc undefined, false nếu không
18
+ * @example
19
+ * isEmpty(null); // true
20
+ * isEmpty(''); // true
21
+ * isEmpty(undefined); // true
22
+ * isEmpty({}); // true
23
+ * isEmpty([]); // true
24
+ * isEmpty([1, 2, 3]); // false
25
+ * isEmpty({ a: 1 }); // false
26
+ */
4
27
  export declare const isEmpty: (value: unknown) => boolean;
28
+ /**
29
+ * Loại bỏ các thuộc tính của đối tượng dựa trên một hàm điều kiện
30
+ * @param objData Đối tượng cần xử lý
31
+ * @param predicate Hàm điều kiện để kiểm tra giá trị của thuộc tính. Nếu hàm trả về true thì thuộc tính đó sẽ bị loại bỏ
32
+ * @returns Đối tượng mới sau khi đã loại bỏ các thuộc tính thỏa mãn điều kiện
33
+ * @example
34
+ * const obj = { a: 1, b: null, c: 3, d: undefined };
35
+ * omitBy(obj, isNil); // { a: 1, c: 3 }
36
+ */
5
37
  export declare const omitBy: <T>(objData: Record<string, any>, predicate: (val: any) => boolean) => T;
6
38
  export declare const get: <T = any>(obj: any, path: string | string[], defaultValue?: any, keepLastValueIfSignal?: boolean) => T;
39
+ /**
40
+ * Thiết lập giá trị cho một thuộc tính trong đối tượng theo đường dẫn chỉ định
41
+ * @param obj Đối tượng cần thiết lập giá trị
42
+ * @param path Đường dẫn đến thuộc tính, có thể là chuỗi (vd: 'a.b.c') hoặc mảng (vd: ['a', 'b', 'c'])
43
+ * @param value Giá trị cần thiết lập
44
+ * @returns Đối tượng sau khi đã thiết lập giá trị
45
+ * @throws Error nếu tham số đầu tiên không phải là đối tượng
46
+ * @example
47
+ * const obj = { a: { b: 1 } };
48
+ * set(obj, 'a.b', 2); // { a: { b: 2 } }
49
+ */
7
50
  export declare const set: <T = any>(obj: any, path: string | string[], value: any) => T;
51
+ /**
52
+ * Tạo một bản sao sâu của một đối tượng hoặc giá trị bất kỳ
53
+ * @param data Dữ liệu cần sao chép
54
+ * @param options Tùy chọn cấu hình
55
+ * @param options.ignoreSignal Nếu true, sẽ không sao chép các signal mà trả về signal gốc
56
+ * @param seen WeakMap để theo dõi các tham chiếu đã được sao chép, tránh lặp vô hạn với các tham chiếu vòng
57
+ * @returns Bản sao sâu của dữ liệu đầu vào
58
+ * @example
59
+ * const obj = {
60
+ * a: 1,
61
+ * b: { c: 2 },
62
+ * d: [1, 2, 3]
63
+ * };
64
+ * const clone = cloneDeep(obj);
65
+ * // clone là một bản sao hoàn toàn độc lập của obj
66
+ */
8
67
  export declare const cloneDeep: <T = any>(data: any, options?: {
9
68
  ignoreSignal: boolean;
10
69
  }, seen?: WeakMap<object, any>) => T;
70
+ /**
71
+ * Chuyển đổi một mảng các đối tượng thành một đối tượng với khóa được chỉ định
72
+ * @param data Mảng các đối tượng cần chuyển đổi
73
+ * @param key Tên thuộc tính được sử dụng làm khóa trong đối tượng kết quả
74
+ * @returns Đối tượng với các giá trị từ mảng được đánh key theo thuộc tính đã chỉ định
75
+ * @example
76
+ * const data = [
77
+ * { id: 1, name: 'John' },
78
+ * { id: 2, name: 'Jane' }
79
+ * ];
80
+ * keyBy(data, 'id');
81
+ * // Kết quả: {
82
+ * // '1': { id: 1, name: 'John' },
83
+ * // '2': { id: 2, name: 'Jane' }
84
+ * // }
85
+ */
11
86
  export declare const keyBy: (data: Array<TYPE_OBJECT>, key: string) => TYPE_OBJECT;
87
+ /**
88
+ * Nhóm các đối tượng trong một mảng thành các nhóm dựa trên một thuộc tính cụ thể
89
+ * @param data Mảng các đối tượng cần nhóm
90
+ * @param key Tên thuộc tính được sử dụng làm khóa nhóm
91
+ * @returns Đối tượng với các giá trị từ mảng được nhóm theo thuộc tính đã chỉ định
92
+ * @example
93
+ * const data = [
94
+ * { id: 1, name: 'John' },
95
+ * { id: 2, name: 'Jane' },
96
+ * { id: 1, name: 'John' }
97
+ * ];
98
+ * groupBy(data, 'id');
99
+ * // Kết quả: {
100
+ * // '1': [
101
+ * // { id: 1, name: 'John' },
102
+ * // { id: 1, name: 'John' }
103
+ * // ],
104
+ * // '2': [
105
+ * // { id: 2, name: 'Jane' }
106
+ * // }
107
+ */
12
108
  export declare const groupBy: (data: Array<TYPE_OBJECT>, key: string) => TYPE_OBJECT;
109
+ /**
110
+ * Tạo một mảng các số từ giá trị bắt đầu đến giá trị kết thúc với bước nhảy tùy chọn
111
+ * @param start Giá trị bắt đầu của dãy số. Nếu chỉ có một tham số, đây sẽ là giá trị kết thúc và giá trị bắt đầu sẽ là 0
112
+ * @param end Giá trị kết thúc của dãy số (tùy chọn)
113
+ * @param step Bước nhảy giữa các số trong dãy (tùy chọn). Mặc định là 1 nếu end > start, -1 nếu end < start
114
+ * @returns Mảng các số từ start đến end với bước nhảy step
115
+ * @example
116
+ * range(4); // [0, 1, 2, 3]
117
+ * range(1, 5); // [1, 2, 3, 4]
118
+ * range(0, 20, 5); // [0, 5, 10, 15]
119
+ * range(5, 2); // [5, 4, 3]
120
+ */
13
121
  export declare const range: (start: number, end?: number, step?: number) => Array<number>;
122
+ /**
123
+ * So sánh hai giá trị bất kỳ có bằng nhau hay không
124
+ * @param value1 Giá trị thứ nhất cần so sánh
125
+ * @param value2 Giá trị thứ hai cần so sánh
126
+ * @param exactlyPosition Có so sánh chính xác vị trí các phần tử trong mảng hay không
127
+ * @returns true nếu hai giá trị bằng nhau, false nếu không bằng nhau
128
+ * @example
129
+ * isEqual([1,2,3], [1,2,3]); // true
130
+ * isEqual([1,2,3], [3,2,1]); // true khi exactlyPosition = false
131
+ * isEqual([1,2,3], [3,2,1]); // false khi exactlyPosition = true
132
+ * isEqual({a:1}, {a:1}); // true
133
+ */
14
134
  export declare const isEqual: (value1: any, value2: any, exactlyPosition?: boolean) => boolean;
135
+ /**
136
+ * Loại bỏ các phần tử trùng lặp trong mảng dựa trên một thuộc tính chỉ định
137
+ * @param data Mảng dữ liệu cần xử lý
138
+ * @param key Tên thuộc tính dùng để so sánh trùng lặp. Nếu không có key thì so sánh trực tiếp giá trị
139
+ * @returns Mảng mới chứa các phần tử không trùng lặp
140
+ * @example
141
+ * const arr = [
142
+ * { id: 1, name: 'A' },
143
+ * { id: 2, name: 'B' },
144
+ * { id: 1, name: 'C' }
145
+ * ];
146
+ * uniqBy(arr, 'id'); // [{ id: 1, name: 'A' }, { id: 2, name: 'B' }]
147
+ *
148
+ * const numbers = [1, 2, 2, 3, 3];
149
+ * uniqBy(numbers); // [1, 2, 3]
150
+ */
15
151
  export declare const uniqBy: <T>(data: Array<T>, key?: string) => Array<T>;
16
152
  export declare const generateInterface: (obj: any, interfaceName: string) => string;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@libs-ui/utils",
3
- "version": "0.2.246",
3
+ "version": "0.2.247",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0",
7
7
  "crypto-es": "^2.1.0",
8
8
  "dayjs": "1.11.5",
9
- "@libs-ui/interfaces-types": "^0.2.246",
9
+ "@libs-ui/interfaces-types": "^0.2.247",
10
10
  "rxjs": "~7.8.0"
11
11
  },
12
12
  "sideEffects": false,