# Biblioteca `Purge` da Azion

import DocButton from '~/components/webkit/DocButton.vue';

A biblioteca **Purge** fornece métodos para interagir com a API de **Cache Purge**, permitindo que você exclua URLs, chaves de cache e expressões wildcard do cache. Esse cliente é configurável e suporta tanto o modo de debug quanto a configuração baseada em variáveis de ambiente.

<DocButton href="/pt-br/documentacao/produtos/azion-lib/visao-geral/" label="Saiba mais sobre as Azion Libraries" kind="secondary" size="medium" />

Você pode interagir com a API usando um `client` ou chamando os métodos diretamente da biblioteca. Ao fazer chamadas diretas, você pode usar as variáveis de ambiente para configurar o `client` sem passar os parâmetros de token e debug diretamente.

Este é um exemplo de como um arquivo `.env` com suas variáveis de ambiente poderia ser:

```sh
AZION_TOKEN=<your-api-token>
AZION_DEBUG=true
```

| Variável | Descrição |
|----------|-------------|
| `AZION_TOKEN` | Seu token de API da Azion. |
| `AZION_DEBUG` | Ativa o modo de debug (true/false). |

:::tip
Defina `AZION_DEBUG` como `true` para ativar o **modo de debug**. Nesse modo, as solicitações de API e respostas são registradas em detalhes.
:::

Se você quiser criar um `client` específico para interagir com o **Purge**, faça isso chamando o método `createClient` da biblioteca:

```typescript
import { createClient } from 'azion/purge';
import type { AzionPurgeClient, AzionPurgeResponse, AzionPurge } from 'azion/purge';

const client: AzionPurgeClient = createClient({ token: 'your-api-token', options: { debug: true } });

const { data: purgeURLResponse, error }: AzionPurgeResponse<AzionPurge> = await client.purgeURL([
  'http://www.domain.com/path/image.jpg',
]);
if (purgeURLResponse) {
  console.log('Purge successful:', purgeURLResponse);
} else {
  console.error('Purge failed', error);
}
```

O método `createClient` tem os seguintes **parâmetros** e **valor de retorno**:

**Parâmetros**:

| Parâmetro | Tipo | Descrição |
|-----------|------|-------------|
| `config` | `Partial<{ token: string; options?: OptionsParams }>` | Opções de configuração para o cliente de Purge. |

**Retorno**:

| Tipo de retorno | Descrição |
|-------------|-------------|
| `AzionPurgeClient` | Um objeto com métodos para interagir com o Purge. |

:::tip
Nos exemplos a seguir, os métodos são chamados diretamente sem a criação de um `client`. Para obter mais informações sobre como interagir com serviços e produtos usando um `client`, verifique a [documentação do Azion Lib Client](/pt-br/documentacao/produtos/azion-lib/client/).
:::

---

## Uso

### `purgeURL`

Exclui uma URL do Cache.

Exemplo:

```typescript
import { purgeURL } from 'azion/purge';
import type { AzionPurgeResponse, AzionPurge } from 'azion/purge';

const url: string[] = ['http://www.domain.com/path/image.jpg'];
const { data: response, error }: AzionPurgeResponse<AzionPurge> = await purgeURL(url, { debug: true });
if (response) {
  console.log('Purge successful:', response);
} else {
  console.error('Purge failed', error);
}
```

**Parâmetros**:

| Parâmetro | Tipo | Descrição |
|-----------|------|-------------|
| `url` | `string[]` | URL(s) para limpar do cache. |
| `options` | `AzionClientOptions` (opcional) | Opções do cliente, incluindo modo de debug. |

**Retorno**:

| Tipo de retorno | Descrição |
|-------------|-------------|
| `Promise<AzionPurgeResponse<AzionPurge>>` | A resposta da limpeza ou o erro em caso de falha. |

### `purgeCacheKey`

Limpa uma chave de cache do Cache.

Exemplo:

```typescript
import { purgeCacheKey } from 'azion/purge';
import type { AzionPurgeResponse, AzionPurge } from 'azion/purge';

const cacheKey: string[] = ['http://www.domain.com/path/image.jpg'];
const { data: response, error }: AzionPurgeResponse<AzionPurge> = await purgeCacheKey(cacheKey, { debug: true });
if (response) {
  console.log('Purge successful:', response);
} else {
  console.error('Purge failed', error);
}
```
**Parâmetros**:

| Parâmetro | Tipo | Descrição |
|-----------|------|-------------|
| `cacheKey` | `string[]` | Chave(s) de cache para limpar. |
| `options` | `AzionClientOptions` (opcional) | Opções do `client`, incluindo modo de debug. |

**Retorno**:

| Tipo de retorno | Descrição |
|-------------|-------------|
| `Promise<AzionPurgeResponse<AzionPurge>>` | A resposta da limpeza ou o erro em caso de falha. |

### `purgeWildCard`

Limpa usando uma expressão wildcard do Cache.

Exemplo:

```typescript
import { purgeWildCard } from 'azion/purge';
import type { AzionPurgeResponse, AzionPurge } from 'azion/purge';

const wildcard: string[] = ['http://www.domain.com/path/image.jpg*'];
const { data: response, error }: AzionPurgeResponse<AzionPurge> = await purgeWildCard(wildcard, { debug: true });
if (response) {
  console.log('Purge successful:', response);
} else {
  console.error('Purge failed', error);
}
```
**Parâmetros**:

| Parâmetro | Tipo | Descrição |
|-----------|------|-------------|
| `wildcard` | `string[]` | Expressão(ões) wildcard para limpar. |
| `options` | `AzionClientOptions` (opcional) | Opções do `client`, incluindo modo de debug. |

**Retorno**:

| Tipo de Retorno | Descrição |
|-------------|-------------|
| `Promise<AzionPurgeResponse<AzionPurge>>` | A resposta da limpeza ou o erro em caso de falha. |

---

## Tipos

Essa seção define os vários tipos e interfaces usados na biblioteca **Purge**.

### `ClientConfig`

Opções de configuração para o cliente de Purge.

| Parâmetro | Tipo | Descrição |
|-----------|------|-------------|
| `token` | `string` (opcional) | Seu token de API da Azion. |
| `options` | `AzionClientOptions` (opcional) | Opções adicionais para o cliente. |

### `PurgeClient`

Um objeto com métodos para interagir com o Purge.

| Método | Parâmetros | Tipo de retorno |
|--------|------------|-------------|
| `purgeURL` | `urls: string[]`, `options?: AzionClientOptions` | `Promise<AzionPurgeResponse<AzionPurge>>` |
| `purgeCacheKey` | `cacheKeys: string[]`, `options?: AzionClientOptions` | `Promise<AzionPurgeResponse<AzionPurge>>` |
| `purgeWildCard` | `wildcards: string[]`, `options?: AzionClientOptions` | `Promise<AzionPurgeResponse<AzionPurge>>` |

### `Purge`

O objeto de resposta de uma requisição de purge.

| Propriedade | Tipo | Descrição |
|----------|------|-------------|
| `state` | `'executed' \| 'pending'` | O estado da requisição de purge. |
| `items` | `string[]` | Os itens que foram purgados. |