@libs-ui/pipes-clone-object 0.2.357-8 → 0.2.357-9

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.
Files changed (2) hide show
  1. package/README.md +3 -11
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -217,7 +217,7 @@ Pipe dùng `isSignal()` từ `@angular/core` để detect Signal tại runtime.
217
217
 
218
218
  | Tiêu chí | Shallow (`false`) | Deep (`true`) |
219
219
  |---|---|---|
220
- | Cách thực hiện | `{ ...obj }` hoặc `[ ...arr ]` | `cloneDeep(obj)` từ lodash |
220
+ | Cách thực hiện | `{ ...obj }` hoặc `[ ...arr ]` | `cloneDeep(obj)` implementation nội bộ của `@libs-ui/utils` (không phải lodash) |
221
221
  | Tốc độ | Nhanh | Chậm hơn |
222
222
  | Memory | Ít | Nhiều hơn |
223
223
  | An toàn nested | Không — nested share reference | Có — toàn bộ cây object mới |
@@ -239,16 +239,8 @@ transform(false) => defaultData ?? {}
239
239
 
240
240
  ⚠️ **Shallow clone không bảo vệ nested objects**: Khi dùng shallow clone (mặc định), chỉ các property ở cấp đầu tiên là độc lập. Nested object vẫn dùng chung reference với original. Nếu cần chỉnh sửa property lồng sâu, bắt buộc dùng `isCloneDeep = true`.
241
241
 
242
- ⚠️ **Deep clone tốn tài nguyên hơn**: `cloneDeep` từ lodash clone toàn bộ cây object. Tránh dùng trong vòng lặp lớn hoặc với object cực kỳ lớn. Với list, cân nhắc chỉ clone khi thực sự cần thay đổi nested data.
242
+ ⚠️ **Deep clone tốn tài nguyên hơn**: `cloneDeep` (hàm nội bộ của `@libs-ui/utils`, không phải lodash) clone toàn bộ cây object, xử lý cả `Date`, `RegExp`, `Map`, `Set`, dayjs object và circular reference (qua `WeakMap`). Tránh dùng trong vòng lặp lớn hoặc với object cực kỳ lớn. Với list, cân nhắc chỉ clone khi thực sự cần thay đổi nested data.
243
243
 
244
- ⚠️ **Signal unwrap xảy ra trước khi clone**: Nếu input `Signal<Signal<T>>` (signal lồng signal), chỉ cấp ngoài cùng được unwrap. Pipe không đệ quy unwrap nhiều cấp signal.
244
+ ⚠️ **Signal unwrap pipe chỉ 1 cấp — nhưng `cloneDeep` nội bộ đệ quy được cả signal lồng nhau**: Bước unwrap của pipe (`if (isSignal(data)) data = data()`) chỉ bóc 1 lớp Signal ngoài cùng trước khi clone. Tuy nhiên nếu bật `isCloneDeep = true`, hàm `cloneDeep` bên trong vẫn tự phát hiện và clone đúng các Signal còn lồng bên trong object/array (tạo Signal mới bọc giá trị đã clone). Với shallow clone (`isCloneDeep = false`), Signal lồng bên trong KHÔNG được clone — vẫn giữ nguyên reference gốc.
245
245
 
246
246
  ⚠️ **Không dùng `@libs-ui/exports`**: BẮT BUỘC import từ entrypoint cụ thể `@libs-ui/pipes-clone-object`, không import từ `@libs-ui/exports`.
247
-
248
- ## Demo
249
-
250
- ```bash
251
- npx nx serve core-ui
252
- ```
253
-
254
- Truy cập: http://localhost:4500/pipes/clone-object
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@libs-ui/pipes-clone-object",
3
- "version": "0.2.357-8",
3
+ "version": "0.2.357-9",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=18.0.0",
6
- "@libs-ui/utils": "0.2.357-8"
6
+ "@libs-ui/utils": "0.2.357-9"
7
7
  },
8
8
  "sideEffects": false,
9
9
  "module": "fesm2022/libs-ui-pipes-clone-object.mjs",