# Что означает: options.routes = cloneDeep(options.routes);

Эта строка означает:  
👉 **создаётся глубокая копия массива маршрутов, и она записывается обратно в `options.routes`**.

## Строка целиком

```ts
options.routes = cloneDeep(options.routes);

```

---

## Что такое `cloneDeep`

`cloneDeep` — обычно функция из **lodash**:

```ts
import { cloneDeep } from 'lodash-es';

```

Она:

- создаёт **полную (глубокую) копию** объекта
- копирует **все вложенные объекты и массивы**
- не оставляет ссылок на оригинал

---

## Почему нельзя просто так

### ❌ Поверхностная копия

```ts
const copy = [...options.routes];

```

Проблема:

- вложенные объекты (`children`, `meta`) остаются **общими по ссылке**

```ts
copy[0].meta.title = 'New';
// изменится и в original ❌

```

---

### ✅ `cloneDeep`

```ts
const copy = cloneDeep(options.routes);

```

Теперь:

```ts
copy[0].meta.title = 'New';
// original НЕ изменится ✅

```

---

## Что реально происходит пошагово

1️⃣ Берётся `options.routes`  
2️⃣ Создаётся **полный клон** всей структуры маршрутов  
3️⃣ `options.routes` теперь указывает **на новую копию**  
4️⃣ Оригинальные маршруты остаются нетронутыми

---

## Зачем это делают (очень важно)

В коде генерации роутов обычно:

- добавляют `children`
- фильтруют по ролям
- меняют `meta`
- добавляют layout

❗ Если менять оригинал:

- можно сломать повторную генерацию
- получить дубликаты
- испортить базовую конфигурацию

---

## Типичный кейс из твоего контекста

```ts
options.routes = cloneDeep(options.routes);

// дальше
options.routes.forEach(route => {
  route.children?.push(dynamicRoute)
})

```

👉 изменения **безопасны**  
👉 исходные `routes` не портятся

---

## Аналогия 🧠

- Без `cloneDeep` — ты редактируешь **оригинал**
- С `cloneDeep` — работаешь с **копией документа**

---

## Коротко

> Эта строка **защищает исходные маршруты**,  
> создавая их **полную независимую копию** перед изменениями.