# IndexedDB Workspace Provider

O `IndexedDBWorkspaceProvider` permite integração do `IndexedDBFileSystem` com o `@workspace-fs/core`.

## Instalação

```bash
pnpm add @firesystem/indexeddb @workspace-fs/core
```

## Uso

### Standalone (sem workspace)

```typescript
import { IndexedDBFileSystem } from "@firesystem/indexeddb";

const fs = new IndexedDBFileSystem({ dbName: "my-app" });
await fs.initialize();
await fs.writeFile("/test.txt", "Hello World");
```

### Com Workspace

```typescript
import { WorkspaceFileSystem } from "@workspace-fs/core";
import { indexedDBProvider } from "@firesystem/indexeddb/provider";

const workspace = new WorkspaceFileSystem();
workspace.registerProvider(indexedDBProvider);

// Criar projeto persistente
const project = await workspace.loadProject({
  id: "persistent-project",
  name: "My Persistent Project",
  source: {
    type: "indexeddb",
    config: {
      dbName: "my-project-db",
      version: 1,
      storeName: "files",
      enableExternalSync: true,
    },
  },
});

// Trabalhar com o projeto
await workspace.writeFile("/src/app.js", "// My application code");
// Dados são persistidos automaticamente no IndexedDB
```

## Configuração

```typescript
interface IndexedDBConfig {
  // Nome do banco de dados (padrão: firesystem-{timestamp})
  dbName?: string;

  // Versão do banco (padrão: 1)
  version?: number;

  // Nome do object store (padrão: "files")
  storeName?: string;

  // Habilitar detecção de mudanças externas (padrão: true)
  enableExternalSync?: boolean;

  // Detecção profunda de mudanças (padrão: false)
  deepChangeDetection?: boolean;
}
```

## Características

- **Persistente**: Dados sobrevivem ao reload da página
- **Multi-tab**: Sincronização entre abas do navegador
- **Grande capacidade**: Suporta arquivos até ~500MB
- **Transacional**: Operações atômicas garantidas
- **Auto-recovery**: Recupera de bancos corrompidos
