UNPKG

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
# 🚀 CSElement - Advanced Reactive Data Management Library [![npm version](https://badge.fury.io/js/cs-element.svg)](https://badge.fury.io/js/cs-element) [![TypeScript](https://img.shields.io/badge/TypeScript-5.2-blue.svg)](https://www.typescriptlang.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Test Coverage](https://img.shields.io/badge/coverage-95%25-brightgreen.svg)](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 🚀