@firesystem/indexeddb
Version:
IndexedDB implementation of Virtual File System
80 lines (59 loc) • 1.94 kB
Markdown
# 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