UNPKG

userface

Version:

Universal Data-Driven UI Engine with live data, validation, and multi-platform support

237 lines (196 loc) 10.9 kB
# История изменений ## [1.0.7] - 2025-07-28 ### 🚀 MAJOR RELEASE - Data-Driven UI Engine **UserFace превращается в полноценный data-driven движок для создания живых интерфейсов!** ### ✨ Добавлено #### 🎯 **Data Layer - Живые данные** -**Источники данных:** API, WebSocket, файлы, локальное хранилище -**Умное кэширование:** 50x быстрее повторных запросов -**Реактивные подписки:** Автоматические обновления при изменении данных -**Трансформации:** Автоматические преобразования данных -**Polling и real-time:** Автоматические обновления #### 🛡️ **Validation Engine - Валидация данных** -**Валидация UserFace:** Проверка данных в реальном времени -**Проверка схем:** Валидация пропов и событий компонентов -**Детальные ошибки:** Подробные сообщения об ошибках -**Типобезопасность:** Полная TypeScript поддержка #### 🔧 **Error Recovery - Восстановление ошибок** -**Автоматическое восстановление:** Обработка ошибок компонентов -**Fallback компоненты:** Резервные компоненты при сбоях -**Стратегии восстановления:** Различные подходы к восстановлению -**Graceful degradation:** Плавная деградация функциональности #### 🔌 **Plugin System - Расширяемость** -**Регистрация плагинов:** Управление плагинами -**Установка/удаление:** Полный жизненный цикл плагинов -**Включение/отключение:** Гибкое управление -**Типизированные плагины:** TypeScript поддержка #### 🧪 **Testing Infrastructure - Тестирование** -**Создание тестов:** Инфраструктура для тестирования -**Мок компоненты:** Создание тестовых компонентов -**Генерация данных:** Автоматическая генерация тестовых данных -**Отчеты:** Детальные отчеты о результатах #### 📊 **Мониторинг и статистика** -**Системная статистика:** Метрики производительности -**Data Layer статистика:** Статистика работы с данными -**Health checks:** Проверка состояния системы -**Логирование:** Структурированное логирование ### 🔄 Изменено #### 🏗️ **Архитектура движка** - 🔄 **Централизация:** Registry стал центральным оркестратором - 🔄 **Модульность:** Разделение на специализированные модули - 🔄 **Оптимизация:** Сокращение дублирования кода - 🔄 **Производительность:** Улучшение скорости работы #### 📁 **Структура проекта** ``` userface/ ├── src/ │ ├── core/ │ │ ├── registry.ts # 🎯 Центральный оркестратор │ │ ├── data-layer.ts # 🚀 Живые данные │ │ ├── validation.ts # 🛡️ Валидация │ │ ├── error-recovery.ts # 🔧 Восстановление │ │ ├── plugin-system.ts # 🔌 Плагины │ │ ├── analyzer.ts # 🔍 Анализ │ │ ├── testing-infrastructure.ts # 🧪 Тестирование │ │ ├── types.ts # 📝 Типы │ │ ├── schema.ts # 📋 Схемы │ │ ├── errors.ts # ❌ Ошибки │ │ ├── api.ts # 🔗 API │ │ ├── adapter-manager.ts # 🎨 Адаптеры │ │ ├── initializer.ts # 🚀 Инициализация │ │ ├── monitor.ts # 📊 Мониторинг │ │ ├── scanner.ts # 🔍 Сканирование │ │ ├── logger.ts # 📝 Логирование │ │ └── render-*.ts # 🎨 Рендереры │ └── index.ts # 📦 Публичный API ├── test-data-layer.js # 🧪 Data Layer тесты ├── test-comprehensive.js # 🧪 Комплексные тесты └── package.json ``` #### 🎯 **API изменения** - 🔄 **UserFace расширен:** Добавлена поддержка живых данных - 🔄 **Registry API:** Новые методы для работы с данными - 🔄 **Рендеринг:** Асинхронный рендеринг с данными - 🔄 **Валидация:** Интегрированная валидация ### 📊 Производительность #### Метрики - **Размер сборки:** 85.12 KB (gzip: 23.21 KB) - **Кэширование:** 50x быстрее повторных запросов - **Рендеринг:** < 1ms для простых компонентов - **Валидация:** < 0.1ms на компонент - **Тесты:** 37 тестов за ~2 секунды #### Покрытие тестами - **Всего тестов:** 37 - **Покрытие:** 100% - **Модули:** Все протестированы - **Интеграция:** Полная проверка ### 🎯 Использование #### Базовое использование с данными ```typescript import { Registry, UserFace } from 'userface'; const registry = new Registry(); // Создание UserFace с живыми данными const userFace: UserFace = { component: 'my-button', text: 'Click me!', data: { user: { source: '/api/user/123', config: { cache: true, realtime: true, transform: (data) => ({ name: data.fullName }) } } } }; // Рендеринг с живыми данными const result = await registry.renderWithData(userFace, 'react'); ``` #### Data Layer ```typescript import { dataLayer } from 'userface'; // Регистрация источника данных dataLayer.registerDataSource('/api/users', { type: 'api', url: 'https://api.example.com/users', cache: true, polling: 30000 }); // Подписка на изменения const subscription = dataLayer.subscribe('/api/users', (data, state) => { console.log('Данные обновились:', data); }); ``` #### Plugin System ```typescript import { pluginSystem } from 'userface'; const myPlugin = { id: 'my-plugin', name: 'My Custom Plugin', version: '1.0.0', type: 'custom' as const, install: async () => console.log('Плагин установлен'), uninstall: async () => console.log('Плагин удален') }; await pluginSystem.registerPlugin(myPlugin); await pluginSystem.installPlugin('my-plugin'); ``` ### 🧪 Тестирование #### Запуск тестов ```bash # Data Layer тесты node test-data-layer.js # Комплексные тесты движка node test-comprehensive.js ``` ### 🔄 Обратная совместимость -**Старые API работают:** Все предыдущие методы сохранены -**Постепенная миграция:** Новые возможности опциональны -**Документация обновлена:** Полные примеры использования --- ## [1.0.0] - 2025-07-20 ### Добавлено - ✅ Автоматическая генерация типов из компонентов в папке `src/library/` - ✅ Система сканирования TypeScript файлов и извлечения интерфейсов - ✅ Автоматическая регистрация компонентов в реестре - ✅ Watch режим для автоматической регенерации типов - ✅ Полная поддержка TypeScript с автокомплитом и валидацией - ✅ Интеграция с внешними библиотеками компонентов (feld) ### Изменено - 🔄 Переименована папка `src/components/` в `src/library/` - 🔄 Обновлены все скрипты и документация для работы с новой структурой - 🔄 README полностью переведен на русский язык ### Структура проекта ``` userface/ ├── src/ │ ├── library/ # 🎯 Библиотека компонентов │ │ ├── Button.tsx # ✅ Автоматически регистрируется │ │ ├── Card.tsx # ✅ Автоматически регистрируется │ │ └── index.ts # ✅ Автогенерируемые экспорты │ ├── core/ │ │ ├── reestr.ts # ✅ Автогенерируемый реестр │ │ └── generated-types.ts # ✅ Автогенерируемые типы │ └── index.ts └── scripts/ └── generate-types-from-components.ts # 🔧 Скрипт генерации ``` ### Использование ```typescript // 1. Добавьте компонент в src/library/ export interface ButtonProps { text: string; variant?: 'primary' | 'secondary'; } export const Button: React.FC<ButtonProps> = ({ text, variant }) => ( <button className={`btn btn-${variant}`}>{text}</button> ); // 2. Типы генерируются автоматически! const spec: UserFace = { id: 'my-button', component: 'button', // ✅ TypeScript автодополнение text: 'Нажми меня', // ✅ TypeScript валидация variant: 'primary' // ✅ TypeScript проверка значений }; ```