cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
975 lines (782 loc) • 29.2 kB
Markdown
# 🚀 CSElement - Advanced Reactive Data Management Library
[](https://badge.fury.io/js/cs-element)
[](https://www.typescriptlang.org/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/dev/cs-element)
**Status:** 🎯 **Production Ready** - Fully tested and ready for production use!
CSElement is a powerful TypeScript library for building reactive data structures with advanced features including persistence, serialization, compression, networking, state machines, blueprints, and multithreading support.
🌐 **Browser Compatible** - Works seamlessly in both Node.js and browser environments without any configuration!
## 🎯 Modular Architecture
CSElement v1.0.2 introduces a clean modular architecture:
- **🌐 Core Library** - Browser-compatible, no Node.js dependencies
- **🖥️ Node.js Plugins** - Separate imports for Node.js-specific features
- **📦 Tree-shakable** - Import only what you need
- **⚡ Zero Configuration** - Works out of the box in any environment
## ✨ Key Features
### 🔄 Reactivity System
- **Live Queries** - Automatic updates when data changes
- **Computed Properties** - Cached computed values with dependency tracking
- **Event System** - Powerful event-driven architecture
- **Reactive Watchers** - Watch for data changes with callbacks
- **Auto-Dispose** - Automatic memory cleanup and lifecycle management
### 💾 Persistence & Storage
- **IndexedDB Adapter** - High-performance browser storage
- **LocalForage Adapter** - Universal adapter supporting multiple drivers
- **Memory Storage** - Fast in-memory caching
- **Auto-save** - Automatic data persistence with configurable intervals
### 🗜️ Compression & Serialization
- **Multiple Compression** - Gzip, LZ4, Brotli algorithms
- **Serialization Formats** - JSON, YAML, MessagePack support
- **AES Encryption** - Secure data storage with encryption
- **Custom Serializers** - Extensible serialization system
### 🌐 Networking & Sync
- **HTTP/HTTPS Client** - Reliable requests with retry mechanism
- **WebSocket Support** - Real-time communication
- **Auto Synchronization** - Automatic data synchronization
- **Offline Support** - Work offline with sync when online
### ⚡ Performance & Workers
- **Web Workers** - Background processing for heavy operations
- **Worker Manager** - Advanced worker pool with cross-platform support
- **Batch Operations** - Optimized bulk operations with multiple execution strategies
- **Smart Caching** - Intelligent data caching
- **Memory Management** - Automatic memory optimization
- **Performance Profiling** - Built-in performance monitoring and analysis
### 🛡️ Reliability & Safety
- **ACID Transactions** - Atomic operations with locking
- **History System** - Undo/Redo with snapshots and operation tracking
- **State Machines** - Complex state management
- **Automatic Backups** - Scheduled backup creation
- **Schema Validation** - Strong typing with schema validation
- **Migration System** - Version-based data migrations
### 🏗️ Advanced Systems
- **Blueprint System** - Template-based structure generation
- **Plugin Ecosystem** - 13+ built-in plugins with advanced middleware
- **DevTools Integration** - Browser extension for debugging
- **TypeScript Generator** - Generate types from schemas
- **Graph Algorithms** - Advanced graph traversal and analysis
- **Diff Engine** - Sophisticated comparison with multiple algorithms
### 🔍 Visualization & Analysis
- **Visualization Manager** - Multi-format visualization (ASCII, SVG, HTML)
- **Element Inspector** - Deep element structure inspection
- **Graph Analysis** - Path finding, cycle detection, connectivity analysis
- **Diff Visualization** - Visual comparison of element changes
### 🎯 Type Safety & Validation
- **Typed Elements** - Strongly typed element system with inheritance
- **Schema Management** - JSON Schema-based validation
- **Runtime Type Checking** - Dynamic type validation
- **TypeScript Integration** - Full TypeScript support with generated types
### 🔧 Development Tools
- **Service Registry** - Dependency injection and service management
- **Element Registry** - Global element management and lookup
- **Navigation System** - Advanced element traversal and search
- **Auto-Dispose Scopes** - Memory leak prevention with automatic cleanup
## 🚀 Quick Start
### Installation
```bash
npm install cs-element
```
### 🌐 Browser Usage
**Via UMD (CDN):**
```html
<!DOCTYPE html>
<html>
<head>
<title>CSElement App</title>
</head>
<body>
<!-- Dependencies -->
<script src="https://unpkg.com/eventemitter3@latest/dist/eventemitter3.umd.min.js"></script>
<script src="https://unpkg.com/dexie@latest/dist/dexie.min.js"></script>
<script src="https://unpkg.com/localforage@latest/dist/localforage.min.js"></script>
<!-- CSElement -->
<script src="https://unpkg.com/cs-element@latest/dist/index.umd.js"></script>
<script>
// Available as CSElement
const element = new CSElement.CSElement('my-element');
element.setData('name', 'John').then(() => {
console.log('Data saved:', element.getData('name'));
});
</script>
</body>
</html>
```
**Via ES Modules:**
```javascript
import { CSElement } from 'cs-element';
const element = new CSElement('my-element');
await element.setData('name', 'John');
console.log('Data:', element.getData('name'));
```
### 🖥️ Node.js Usage
**Core functionality:**
```javascript
import { CSElement } from 'cs-element';
const element = new CSElement('my-element');
await element.setData('name', 'John');
```
**Node.js specific features:**
```javascript
// Separate imports for Node.js-only features
import { BackupPlugin } from 'cs-element/plugins/backup';
import { CompressionPlugin } from 'cs-element/plugins/compression';
import { SecurityPlugin } from 'cs-element/plugins/security';
import { NetworkPlugin } from 'cs-element/plugins/network';
import { SerializationPlugin } from 'cs-element/plugins/serialization';
import { WorkerManager } from 'cs-element/workers/nodejs';
// File operations, compression, etc.
const backup = new BackupPlugin();
const compression = new CompressionPlugin();
```
### 📱 Framework Integration
**React/Vue/Angular:**
```javascript
import { CSElement } from 'cs-element';
// Tree-shaking automatically includes only what you use
const element = new CSElement('my-element');
```
### Basic Example
```javascript
import { CSElement } from 'cs-element';
// Create an element
const user = new CSElement('user-1');
await user.setData('name', 'John Doe');
await user.setData('email', 'john@example.com');
// Reactive queries
const activeUsers = CSElement.query()
.where('active', true)
.live();
activeUsers.subscribe(users => {
console.log(`Active users: ${users.length}`);
});
```
### Browser Example with Persistence
```javascript
import {
CSElement,
PersistenceManagerImpl,
MemoryStorageAdapter, // ✅ Универсальный адаптер
} from 'cs-element';
// 🌐 Импорт ТОЛЬКО для браузера
import { IndexedDBAdapter } from 'cs-element/browser';
// Универсальный адаптер (работает везде)
const memoryAdapter = new MemoryStorageAdapter({
name: 'my-app-storage'
});
// IndexedDB адаптер (только браузер)
const indexedAdapter = new IndexedDBAdapter('MyAppDB');
// Инициализация
await memoryAdapter.initialize();
await indexedAdapter.initialize();
// Создание элемента
const document = new CSElement({ data: { title: 'My Document' } });
// Сохранение в память (работает везде)
const saveResult = await memoryAdapter.save(document.id, document.serialize());
// Сохранение в IndexedDB (только браузер)
await indexedAdapter.save([document]);
```
### Node.js Example with File Operations
```javascript
import { CSElement } from 'cs-element';
import { BackupPlugin } from 'cs-element/plugins/backup';
import { CompressionPlugin } from 'cs-element/plugins/compression';
// Node.js specific functionality
const backup = new BackupPlugin({
backupPath: './backups',
maxBackups: 10
});
const compression = new CompressionPlugin({
defaultAlgorithm: 'gzip'
});
// Create elements
const project = new CSElement('project-1');
await project.setData('name', 'My Project');
// Create backup (Node.js only)
await backup.createBackup([project], {
name: 'Project Backup',
compression: true
});
```
## 🌐 Browser vs Node.js Features
### ✅ Available Everywhere (Browser + Node.js + SSR)
- **Core Elements** - `CSElement`, data management, events
- **Memory Storage** - `MemoryStorageAdapter` (универсальный)
- **Reactivity** - Live queries, computed properties, watchers
- **Visualization** - ASCII, SVG, HTML rendering
- **State Management** - State machines, history, transactions
- **Type Safety** - Typed elements, validation, schemas
- **Graph Algorithms** - Path finding, analysis, navigation
- **Batch Operations** - Parallel/sequential execution
- **Service Registry** - Dependency injection
### 🌐 Browser Only Features
- **IndexedDB Storage** - `IndexedDBAdapter` (высокопроизводительное хранилище)
- **LocalForage Storage** - `LocalForageAdapter` (универсальный браузерный адаптер)
- **Web Workers** - Фоновая обработка данных
- **DOM Integration** - Прямая работа с DOM элементами
### 🖥️ Node.js Only Features
- **File Operations** - Backup/restore, archiving
- **Advanced Compression** - Gzip, LZ4, Brotli
- **Network Operations** - HTTP client, WebSocket server
- **Security** - Encryption, hashing, authentication
- **Worker Threads** - CPU-intensive background tasks
- **Serialization** - YAML, MessagePack, custom formats
### 📦 Import Examples
```javascript
// ✅ Works everywhere (Browser + Node.js + SSR)
import {
CSElement,
PersistenceManagerImpl,
MemoryStorageAdapter, // ✅ Универсальный адаптер
VisualizationManager,
StateMachine,
GraphAlgorithms
} from 'cs-element';
// 🌐 Browser only
import {
IndexedDBAdapter, // 🌐 Только для браузера
LocalForageAdapter // 🌐 Только для браузера
} from 'cs-element/browser';
// 🖥️ Node.js only
import { BackupPlugin } from 'cs-element/plugins/backup';
import { CompressionPlugin } from 'cs-element/plugins/compression';
import { SecurityPlugin } from 'cs-element/plugins/security';
import { NetworkPlugin } from 'cs-element/plugins/network';
import { SerializationPlugin } from 'cs-element/plugins/serialization';
import { WorkerManager } from 'cs-element/workers/nodejs';
```
## 🛠️ Core Systems
### 🔌 Plugin System (13 Built-in Plugins)
- **SerializationPlugin** - Data serialization with compression
- **CompressionPlugin** - Gzip, LZ4, Brotli compression
- **NetworkPlugin** - HTTP client and WebSocket support
- **BackupPlugin** - Automated backup creation
- **ValidationPlugin** - Schema validation and type checking
- **SecurityPlugin** - Encryption and access control
- **MetricsPlugin** - Performance monitoring
- **AnalyticsPlugin** - Usage analytics and tracking
- **CachePlugin** - Intelligent caching system
- **TransformPlugin** - Data transformation pipelines
- **VisualizationPlugin** - Data visualization
- **DevToolsPlugin** - Development tools integration
- **LoggingPlugin** - Comprehensive logging system
### 🔄 State Machine System
```typescript
import { StateMachine } from 'cs-element';
const element = new CSElement('order');
const stateMachine = element.createStateMachine({
initialState: 'pending',
states: {
pending: { canTransitionTo: ['processing', 'cancelled'] },
processing: { canTransitionTo: ['completed', 'failed'] },
completed: { canTransitionTo: [] },
cancelled: { canTransitionTo: [] },
failed: { canTransitionTo: ['pending'] }
},
transitions: {
process: { from: 'pending', to: 'processing' },
complete: { from: 'processing', to: 'completed' },
cancel: { from: ['pending', 'processing'], to: 'cancelled' },
fail: { from: 'processing', to: 'failed' },
retry: { from: 'failed', to: 'pending' }
}
});
await stateMachine.sendEvent('process');
console.log(stateMachine.currentState); // 'processing'
```
### 🏗️ Blueprint System
```typescript
import { Blueprint, BlueprintManager } from 'cs-element';
const projectBlueprint = new Blueprint({
id: 'project-template',
name: 'Project Template',
parameters: [
{ id: 'name', type: 'string', required: true },
{ id: 'teamSize', type: 'number', default: 5 }
],
generator: async (context) => {
const project = new CSElement(context.parameters.name);
// Generate team members
for (let i = 0; i < context.parameters.teamSize; i++) {
const member = new CSElement(`member-${i}`);
await member.setData('role', 'developer');
await project.addElement(member);
}
return { elements: [project] };
}
});
const manager = new BlueprintManager();
manager.register(projectBlueprint);
const result = await manager.generate('project-template', {
name: 'My Project',
teamSize: 3
});
```
### 📊 Live Queries & Reactivity
```typescript
// Live queries with automatic updates
const liveQuery = CSElement.query()
.where('status', 'active')
.where('priority', '>', 5)
.orderBy('createdAt', 'desc')
.limit(10)
.live();
liveQuery.subscribe(results => {
console.log('Updated results:', results);
});
// Computed properties
const totalValue = CSElement.computed(() => {
return elements
.filter(e => e.getData('active'))
.reduce((sum, e) => sum + e.getData('value'), 0);
});
totalValue.subscribe(value => {
console.log('Total value:', value);
});
```
### 🔒 Transactions & Locking
```typescript
// ACID transactions
await CSElement.transaction(async (tx) => {
const user = await tx.getElementById('user-1');
const account = await tx.getElementById('account-1');
const currentBalance = account.getData('balance');
const transferAmount = 100;
if (currentBalance >= transferAmount) {
await account.setData('balance', currentBalance - transferAmount);
await user.setData('credits', user.getData('credits') + transferAmount);
} else {
throw new Error('Insufficient funds');
}
});
```
### 📚 History System (Undo/Redo)
```typescript
import { HistoryManagerImpl } from 'cs-element';
// Configure history tracking
const historyManager = new HistoryManagerImpl({
maxOperations: 100,
snapshotInterval: 10,
autoCleanup: true,
compression: true
});
// Track operations automatically
const element = new CSElement('document');
await element.setData('title', 'Original Title');
// Manual operation tracking
historyManager.addOperation({
type: 'update',
description: 'Changed document title',
before: { title: 'Original Title' },
after: { title: 'New Title' },
canUndo: true,
canRedo: true
});
// Undo/Redo operations
await historyManager.undo(); // Reverts to 'Original Title'
await historyManager.redo(); // Back to 'New Title'
// Create snapshots
const snapshot = historyManager.createSnapshot(
element.export(),
'Document checkpoint'
);
// History events
historyManager.on('undo-performed', (data) => {
console.log('Undo performed:', data.operation.description);
});
// Get history state
const state = historyManager.getState();
console.log(`Can undo: ${state.canUndo}, Can redo: ${state.canRedo}`);
```
### 🔄 Migration System
```typescript
import { MigrationBuilder, MigrationManager } from 'cs-element';
// Create migration
const migration = new MigrationBuilder()
.version('1.1.0')
.description('Add user preferences')
.up(async (context) => {
const users = context.query('user');
for (const user of users) {
await user.setData('preferences', {
theme: 'light',
notifications: true
});
}
})
.down(async (context) => {
const users = context.query('user');
for (const user of users) {
await user.deleteData('preferences');
}
})
.build();
const migrationManager = new MigrationManager();
await migrationManager.register(migration);
await migrationManager.migrate('1.1.0');
```
### 📈 Advanced Features Examples
### 🗑️ Auto-Dispose System
Automatic memory cleanup prevents memory leaks:
```typescript
import { CSElement } from 'cs-element';
// Enable auto-dispose globally
CSElement.configureReactivity({
autoDispose: true,
debug: true
});
// Create scope for automatic cleanup
const scope = CSElement.createScope();
CSElement.runInScope(scope.id, () => {
const parent = CSElement.computed(() => data.value * 2);
const child1 = CSElement.computed(() => data.value * 2);
const child2 = CSElement.computed(() => data.value * 3);
return child1.value + child2.value;
});
// Cleanup entire scope
CSElement.disposeScope(scope.id);
```
### 🔧 Advanced Middleware System
Sophisticated middleware with priorities and conditions:
```typescript
import { CSElement, MiddlewarePriority } from 'cs-element';
// Add high-priority validation middleware
CSElement.plugins.addAdvancedMiddleware('setData', {
name: 'validation-middleware',
priority: MiddlewarePriority.HIGH,
condition: (context) => context.args.key === 'email',
timeout: 1000,
middleware: async (context, next) => {
const { key, value } = context.args;
if (key === 'email' && !isValidEmail(value)) {
throw new Error('Invalid email format');
}
return await next();
}
});
// Add logging middleware with metadata
CSElement.plugins.addAdvancedMiddleware('setData', {
name: 'audit-logger',
priority: MiddlewarePriority.LOW,
middleware: async (context, next) => {
const startTime = Date.now();
const result = await next();
console.log(`Operation ${context.operation} took ${Date.now() - startTime}ms`);
return result;
}
});
```
### 🚀 Batch Operations Manager
Efficient bulk operations with different strategies:
```typescript
import { BatchManager, BatchExecutionStrategy, BatchPriority } from 'cs-element';
const batchManager = new BatchManager();
// Create batch with parallel execution
const batchId = batchManager.createBatch({
executionStrategy: BatchExecutionStrategy.PARALLEL,
maxConcurrency: 5,
errorMode: 'COLLECT_ERRORS'
});
// Add operations with priorities and dependencies
batchManager.addOperation(batchId, {
id: 'create-users',
priority: BatchPriority.HIGH,
execute: async (context) => {
const users = await createMultipleUsers(userData);
return users;
},
validate: async (context) => ({ valid: true, errors: [] }),
maxRetries: 3
});
batchManager.addOperation(batchId, {
id: 'send-notifications',
priority: BatchPriority.NORMAL,
dependencies: ['create-users'], // Wait for users to be created
execute: async (context) => {
const users = context.previousResults.get('create-users');
return await sendWelcomeEmails(users);
}
});
// Execute batch with progress monitoring
const result = await batchManager.executeBatch(batchId);
console.log(`Batch completed: ${result.successCount}/${result.totalOperations}`);
```
### 📊 Visualization System
Multi-format visualization with interactive features:
```typescript
import { VisualizationManager, VisualizationFormat } from 'cs-element';
const visualizer = new VisualizationManager();
// Generate interactive HTML visualization
const htmlViz = await visualizer.visualize(rootElement, {
format: VisualizationFormat.HTML,
layout: 'tree',
interactive: true,
showData: true,
animations: true,
width: 1200,
height: 800,
theme: 'dark'
});
// Generate SVG for documentation
const svgViz = await visualizer.visualize(rootElement, {
format: VisualizationFormat.SVG,
layout: 'circular',
nodeStyle: {
backgroundColor: '#3498db',
textColor: '#ffffff',
borderRadius: 8
},
edgeStyle: {
color: '#2c3e50',
thickness: 2,
style: 'dashed'
}
});
// ASCII visualization for console output
const asciiViz = await visualizer.visualize(rootElement, {
format: VisualizationFormat.ASCII,
maxDepth: 5,
showIds: true,
showIndices: true
});
console.log(asciiViz.content);
```
### 🔍 Graph Algorithms
Advanced graph analysis and pathfinding:
```typescript
import { CSElement } from 'cs-element';
// Configure graph algorithms
CSElement.configureGraphAlgorithms({
defaultTimeout: 5000,
enableCaching: true,
enableEvents: true
});
// Find shortest path between elements
const path = await CSElement.findShortestPath(sourceElement, targetElement, {
algorithm: 'dijkstra',
weightFunction: (from, to) => calculateDistance(from, to),
maxDepth: 10
});
// Detect cycles in the graph
const cycleResult = await CSElement.detectCycles(rootElement, {
algorithm: 'dfs',
includeVisualization: true
});
if (cycleResult.hasCycles) {
console.log(`Found ${cycleResult.cycles.length} cycles`);
cycleResult.cycles.forEach(cycle => {
console.log(`Cycle: ${cycle.path.join(' -> ')}`);
});
}
// Analyze graph connectivity
const components = await CSElement.findConnectedComponents(rootElement);
console.log(`Graph has ${components.componentCount} connected components`);
// Calculate node centrality
const centrality = await CSElement.calculateCentrality(rootElement);
const mostCentralNode = Array.from(centrality.entries())
.sort(([,a], [,b]) => b - a)[0];
console.log(`Most central node: ${mostCentralNode[0]} (${mostCentralNode[1]})`);
```
### 🔄 Diff Engine
Sophisticated comparison with multiple algorithms:
```typescript
import { DiffEngine, DiffAlgorithm, MergeStrategy } from 'cs-element';
const diffEngine = new DiffEngine();
// Compare elements with different algorithms
const myersDiff = diffEngine.computeDiff(sourceElement, targetElement, {
algorithm: DiffAlgorithm.MYERS,
contextLines: 5,
includeVisualization: true
});
const patienceDiff = diffEngine.computeDiff(sourceElement, targetElement, {
algorithm: DiffAlgorithm.PATIENCE,
ignoreWhitespace: true
});
// Three-way merge for conflict resolution
const mergeResult = diffEngine.threeWayMerge(
baseElement,
branchAElement,
branchBElement,
{
strategy: MergeStrategy.AUTO,
conflictResolution: 'auto',
autoResolveThreshold: 0.8
}
);
if (mergeResult.success) {
console.log('Merge completed successfully');
} else {
console.log(`${mergeResult.conflicts.length} conflicts need manual resolution`);
mergeResult.conflicts.forEach(conflict => {
console.log(`Conflict at ${conflict.path.join('.')}: ${conflict.type}`);
});
}
```
### 🎯 Typed Elements
Strongly typed elements with inheritance:
```typescript
import { TypedElementManager, TypedElement } from 'cs-element';
const manager = new TypedElementManager();
// Define base schema
const baseSchema = {
name: 'BaseEntity',
version: '1.0.0',
fields: [
{ name: 'id', type: 'number', required: true },
{ name: 'createdAt', type: 'date', defaultValue: () => new Date() },
{ name: 'updatedAt', type: 'date', nullable: true }
]
};
// Define inherited schema
const userSchema = manager.createInheritedSchema(
'User',
'1.0.0',
'BaseEntity',
[
{ name: 'email', type: 'string', required: true, validation: isValidEmail },
{ name: 'name', type: 'string', required: true },
{ name: 'role', type: 'enum', values: ['user', 'admin'], defaultValue: 'user' }
]
);
manager.registerSchema(baseSchema);
manager.registerSchema(userSchema);
// Create typed element
const user = await manager.createElement('User', {
id: 1,
email: 'john@example.com',
name: 'John Doe',
role: 'admin'
});
// Type-safe field access
const email: string = user.getField('email');
await user.setField('role', 'user'); // Type-checked
```
### 🔧 Service Registry & DI
Dependency injection and service management:
```typescript
import { services } from 'cs-element';
// Access built-in services
const persistenceManager = services.persistence;
const reactivityManager = services.reactivity;
const historyManager = services.history;
// Configure services
services.configureHistory({
maxHistorySize: 1000,
enableCompression: true,
autoSnapshot: true,
snapshotInterval: 5000
});
services.configureReactivity({
autoDispose: true,
debug: false,
warnMemoryLeaks: true,
maxComputedDepth: 50
});
// Access global element registry
const allElements = services.registry.getAllElements();
const userElements = services.registry.getElementsByName('User');
const specificElement = services.registry.getElementById('element-123');
```
## ⚛️ React Integration
```typescript
import { useCSElement } from 'cs-element/react';
function MyComponent() {
const {
root,
createElement,
query,
connected,
stats
} = useCSElement({
autoConnect: true,
enableReactivity: true,
enablePersistence: true
});
const handleCreateUser = () => {
const user = createElement('user', {
name: 'New User',
email: 'user@example.com'
});
};
const users = query('user[active=true]');
return (
<div>
<h1>Users ({stats.elementCount})</h1>
<button onClick={handleCreateUser}>Add User</button>
{users.map(user => (
<div key={user.id}>{user.getData('name')}</div>
))}
</div>
);
}
```
## 📊 Performance & Testing
### Test Coverage
- **Test Suites**: 31/31 (100%)
- **Tests**: 717/717 (100%)
- **Code Coverage**: 95%+
- **All stubs replaced** with real implementations
### Performance Features
- **Web Workers** for background processing
- **Batch operations** for bulk updates
- **Memory pooling** for object reuse
- **Lazy loading** for large datasets
- **Compression** for storage optimization
## 🎯 Use Cases
### Enterprise Applications
- **Document Management Systems**
- **Project Management Tools**
- **CRM/ERP Systems**
- **Workflow Automation**
### Real-time Applications
- **Collaborative Editors**
- **Chat Applications**
- **Live Dashboards**
- **Gaming Systems**
### Data-heavy Applications
- **Analytics Platforms**
- **Scientific Computing**
- **Financial Systems**
- **IoT Data Processing**
## 📚 Documentation
### Core Concepts
- [Quick Start](./docs/01-quickstart.md)
- [Collections & Elements](./docs/02-collections.md)
- [Reactivity System](./docs/03-reactivity.md)
- [Typed Elements](./docs/04-typed-elements.md)
- [Batch Operations](./docs/05-batching.md)
- [React Integration](./docs/06-react-integration.md)
### Advanced Features
- [Plugin System & Middleware](./docs/07-advanced-features.md)
- [Workers & Performance](./docs/08-workers-and-performance.md)
- [Transactions & Locks](./docs/09-transactions-and-locks.md)
- [Persistence & Adapters](./docs/10-persistence-and-adapters.md)
- [State Machine](./docs/11-state-machine.md)
- [Diff Engine](./docs/12-diff-engine.md)
- [Blueprint System](./docs/13-blueprint-system.md)
- [History System](./docs/14-history-system.md)
### Specialized Systems
- [**Auto-Dispose & Memory Management**](./docs/15-auto-dispose-system.md) - Automatic cleanup and lifecycle management
- [**Visualization System**](./docs/16-visualization-system.md) - Multi-format visualization with ASCII, SVG, and HTML engines
- [**Graph Algorithms**](./docs/17-graph-algorithms.md) - Advanced pathfinding, cycle detection, and connectivity analysis
- [**Typed Elements Advanced**](./docs/18-typed-elements-advanced.md) - Strongly typed element system with inheritance and validation
- [**Batch Operations Advanced**](./docs/19-batch-operations-advanced.md) - Advanced mass operations with multiple execution strategies
- **Service Registry** - Dependency injection and global service management
- **Element Navigation** - Advanced traversal and search capabilities
- **TypeScript Generator** - Automatic type generation from JSON schemas
## 🔧 Browser Extension
CSElement includes a powerful browser extension for debugging and visualization:
- **Element Inspector** - Inspect element hierarchies
- **Performance Profiler** - Monitor performance metrics
- **State Visualization** - Visualize state machines
- **Live Query Monitor** - Track live query updates
- **Memory Usage** - Monitor memory consumption
## 🤝 Contributing
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## 🙏 Acknowledgments
- Built with TypeScript for type safety
- Uses EventEmitter3 for high-performance events
- Inspired by modern reactive frameworks
- Designed for enterprise-scale applications
---
**CSElement** - Building the future of reactive data management 🚀