@libs-ui/pipes-clone-object 0.2.357-7 → 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.
- package/README.md +3 -11
- 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)`
|
|
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`
|
|
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
|
|
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-
|
|
3
|
+
"version": "0.2.357-9",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": ">=18.0.0",
|
|
6
|
-
"@libs-ui/utils": "0.2.357-
|
|
6
|
+
"@libs-ui/utils": "0.2.357-9"
|
|
7
7
|
},
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"module": "fesm2022/libs-ui-pipes-clone-object.mjs",
|