UNPKG

@firesystem/indexeddb

Version:

IndexedDB implementation of Virtual File System

80 lines (59 loc) 1.94 kB
# 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