import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/functional-basic/Classes/CookieBlockInstance - Экземпляр статуса доступа к куки'/>

# Класс CookieBlockInstance

Класс `CookieBlockInstance` отвечает за управление статусом доступа к куки на уровне экземпляра. Предоставляет локализованное состояние для блокировки или разрешения операций с куки, что необходимо для изоляции запросов в Server-Side Rendering (SSR) или когда требуются несколько независимых контекстов.

Включает тесную интеграцию с `DataStorage` для надежного сохранения статуса.

## Ключевые особенности

- **На основе экземпляров** — позволяет создавать отдельные экземпляры с их собственным статусом блокировки
- **Интеграция с DataStorage** — автоматически сохраняет статус блокировки, используя класс `DataStorage`
- **Совместимость с SSR** — разработан для бесшовной работы в серверных средах, используя паттерн "один экземпляр на запрос" при использовании через обертку `CookieBlock`

## Методы

### Действие

#### `set`

Обновляет статус доступа к куки. При значении `true` блокирует все операции записи с куки в контексте этого экземпляра.

**Параметры:**
- `value: boolean` — новый статус для установки

### Проверка

- `get(): boolean` — Возвращает текущий статус доступа к куки. `true`, если куки заблокированы, иначе `false`

## Примеры

### Базовое использование

```typescript
import { CookieBlockInstance } from '@dxtmisha/functional-basic'

const cookieBlock = new CookieBlockInstance()

// Получить текущий статус
console.log(cookieBlock.get()) // false (по умолчанию)

// Заблокировать куки
cookieBlock.set(true)

console.log(cookieBlock.get()) // true

// Разблокировать куки
cookieBlock.set(false)

console.log(cookieBlock.get()) // false
```

### Использование через CookieBlock

Хотя `CookieBlockInstance` можно использовать напрямую, обычно к нему обращаются через статическую обертку `CookieBlock`:

```typescript
import { CookieBlock } from '@dxtmisha/functional-basic'

// CookieBlock автоматически создает изолированный экземпляр для каждого запроса
CookieBlock.set(true)

// Статус доступен через статические методы
if (CookieBlock.get()) {
  console.log('Куки заблокированы в текущем контексте')
}
```

### Независимые контексты

```typescript
import { CookieBlockInstance } from '@dxtmisha/functional-basic'

// Создание независимых экземпляров
const block1 = new CookieBlockInstance()
const block2 = new CookieBlockInstance()

block1.set(true)

console.log(block1.get()) // true
console.log(block2.get()) // false (независимый экземпляр)
```
