{"_id":"@ahilko/localstorage-database","_rev":"2-74bbef34ada91b3b18bdadc821114635","name":"@ahilko/localstorage-database","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@ahilko/localstorage-database","version":"1.0.0","keywords":["localStorage","database","storage","browser","client-side","crud","indexing","optimization"],"author":{"name":"Your Name"},"license":"MIT","_id":"@ahilko/localstorage-database@1.0.0","maintainers":[{"name":"ahilko","email":"pwplains911@gmail.com"}],"homepage":"https://github.com/yourusername/localstorage-database#readme","bugs":{"url":"https://github.com/yourusername/localstorage-database/issues"},"dist":{"shasum":"b62cfac48b2960410f05d34d67f8c34fc0326570","tarball":"https://registry.npmjs.org/@ahilko/localstorage-database/-/localstorage-database-1.0.0.tgz","fileCount":17,"integrity":"sha512-19AjBKTkaOpCHol+6JrO6NPUEnwZDnIxa1MSPnsvVZTBvJdqPoBfzbt3CxYdZMUh4cDSa7HA1TMYvmRhEhuH6w==","signatures":[{"sig":"MEUCIQCATqJO3qzK3LfW+5NUXD5GG1bSPwKB0nSXFH2ARGDDdQIgKIW+oVTWBv3zuGZrbkX1V0xchv/V3VTx4xnV9x7cjs0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48675},"main":"index.js","types":"index.d.ts","gitHead":"a4e66a2c8415b3b2c3a78ca4f8006ab6026f1bde","_npmUser":{"name":"ahilko","email":"pwplains911@gmail.com"},"repository":{"url":"git+https://github.com/yourusername/localstorage-database.git","type":"git"},"_npmVersion":"10.9.2","description":"A powerful localStorage-based database with full CRUD operations, indexing, and optimization","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/localstorage-database_1.0.0_1759132313326_0.5742062299846773","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ahilko/localstorage-database","version":"1.0.1","description":"A powerful localStorage-based database with full CRUD operations, indexing, and optimization","main":"index.js","types":"index.d.ts","keywords":["localStorage","database","storage","browser","client-side","crud","indexing","optimization"],"author":{"name":"Your Name"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/pwplains9/localstorage-database.git"},"bugs":{"url":"https://github.com/pwplains9/localstorage-database/issues"},"homepage":"https://github.com/pwplains9/localstorage-database#readme","_id":"@ahilko/localstorage-database@1.0.1","gitHead":"f2a97762302f523383130db9b969338ead8a1704","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-PFh2ZHOoEhp6nzbb0KfrFFbBy/M39Fbg+jO1NIPIOgV9yQgnGHqPn4ODVBdsHNdJjDJMehSCw8Dwioy5mBMPeQ==","shasum":"b12d8ad0d28bb0ae93db8d3e5b6b68c7156a37b1","tarball":"https://registry.npmjs.org/@ahilko/localstorage-database/-/localstorage-database-1.0.1.tgz","fileCount":20,"unpackedSize":76978,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDbsTQ1ff8CmT/I1b9ZPtuwgYe+bzkNP3ZK5wBeahbcYAIhANq/IMFZ5CM50ip2Lm7d7qvRkRz6Zux5bgSH8330YNC6"}]},"_npmUser":{"name":"ahilko","email":"pwplains911@gmail.com"},"directories":{},"maintainers":[{"name":"ahilko","email":"pwplains911@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/localstorage-database_1.0.1_1759132537073_0.48873630028561266"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-29T07:51:53.226Z","modified":"2025-09-29T07:55:37.450Z","1.0.0":"2025-09-29T07:51:53.702Z","1.0.1":"2025-09-29T07:55:37.260Z"},"bugs":{"url":"https://github.com/pwplains9/localstorage-database/issues"},"author":{"name":"Your Name"},"license":"MIT","homepage":"https://github.com/pwplains9/localstorage-database#readme","keywords":["localStorage","database","storage","browser","client-side","crud","indexing","optimization"],"repository":{"type":"git","url":"git+https://github.com/pwplains9/localstorage-database.git"},"description":"A powerful localStorage-based database with full CRUD operations, indexing, and optimization","maintainers":[{"name":"ahilko","email":"pwplains911@gmail.com"}],"readme":"# LocalStorage Database\r\n\r\nПотужна, оптимізована база даних на основі localStorage для браузерів з повними CRUD операціями, індексуванням, кешуванням та стисненням.\r\n\r\n## Можливості\r\n\r\n- 🚀 **Повні CRUD Операції** - Створення, Читання, Оновлення, Видалення з розширеними запитами\r\n- 📊 **Розширене Індексування** - Створення індексів для швидких запитів\r\n- 💾 **Розумне Кешування** - LRU кеш для покращення продуктивності\r\n- 🗜️ **Стиснення Даних** - Автоматичне стиснення даних для економії місця\r\n- 📈 **Оптимізація Запитів** - Ефективний пошук та фільтрація\r\n- 🎯 **Система Подій** - Прослуховування змін бази даних\r\n- 📦 **Імпорт/Експорт** - Функціональність резервного копіювання та відновлення\r\n- 🔧 **Підтримка TypeScript** - Повні визначення типів включені\r\n- 🌐 **Сумісність з Браузерами** - Працює у всіх сучасних браузерах\r\n\r\n## Встановлення\r\n\r\n```bash\r\nnpm install localstorage-database\r\n```\r\n\r\n## Швидкий Старт\r\n\r\n```typescript\r\nimport { LocalStorageDB } from 'localstorage-database';\r\n\r\n// Створити нову базу даних\r\nconst db = new LocalStorageDB({\r\n  name: 'my-database',\r\n  enableIndexing: true,\r\n  enableCompression: true,\r\n  enableCache: true\r\n});\r\n\r\n// Створити новий запис\r\nconst user = db.create({\r\n  name: 'Іван Іванов',\r\n  email: 'ivan@example.com',\r\n  age: 30\r\n});\r\n\r\n// Прочитати запис\r\nconst retrievedUser = db.read(user.id);\r\n\r\n// Оновити запис\r\ndb.update(user.id, { age: 31 });\r\n\r\n// Видалити запис\r\ndb.delete(user.id);\r\n```\r\n\r\n## Довідник API\r\n\r\n### Конструктор\r\n\r\n```typescript\r\nnew LocalStorageDB(config: DatabaseConfig)\r\n```\r\n\r\n#### Опції DatabaseConfig\r\n\r\n| Опція | Тип | За замовчуванням | Опис |\r\n|-------|-----|------------------|------|\r\n| `name` | string | - | Ім'я бази даних (обов'язково) |\r\n| `version` | number | 1 | Версія бази даних |\r\n| `enableIndexing` | boolean | true | Увімкнути індексування для швидких запитів |\r\n| `enableCompression` | boolean | true | Увімкнути стиснення даних |\r\n| `maxSize` | number | 5MB | Максимальний розмір сховища |\r\n| `enableCache` | boolean | true | Увімкнути LRU кешування |\r\n| `cacheSize` | number | 100 | Максимальний розмір кешу |\r\n\r\n### Основні Методи\r\n\r\n#### Створення\r\n```typescript\r\ncreate<T>(data: T): StorageItem<T>\r\n```\r\nСтворює новий запис і повертає збережений елемент з метаданими.\r\n\r\n#### Читання\r\n```typescript\r\nread<T>(id: string): StorageItem<T> | null\r\n```\r\nОтримує запис за ID.\r\n\r\n#### Оновлення\r\n```typescript\r\nupdate<T>(id: string, data: Partial<T>): StorageItem<T> | null\r\n```\r\nОновлює існуючий запис частковими даними.\r\n\r\n#### Видалення\r\n```typescript\r\ndelete(id: string): boolean\r\n```\r\nВидаляє запис за ID.\r\n\r\n### Методи Запитів\r\n\r\n#### Знайти Всі\r\n```typescript\r\nfindAll<T>(options?: QueryOptions): QueryResult<T>\r\n```\r\n\r\n#### Знайти за Ключем\r\n```typescript\r\nfindByKey<T>(key: string, value: any, options?: QueryOptions): QueryResult<T>\r\n```\r\n\r\n#### Знайти за Значенням\r\n```typescript\r\nfindByValue<T>(value: any, options?: QueryOptions): QueryResult<T>\r\n```\r\n\r\n#### Опції Запиту\r\n```typescript\r\ninterface QueryOptions {\r\n  limit?: number;      // Максимальна кількість результатів\r\n  offset?: number;     // Кількість результатів для пропуску\r\n  sortBy?: string;     // Поле для сортування\r\n  sortOrder?: 'asc' | 'desc';  // Напрямок сортування\r\n}\r\n```\r\n\r\n### Індексування\r\n\r\n#### Створити Індекс\r\n```typescript\r\ncreateIndex(field: string, config?: IndexConfig): void\r\n```\r\n\r\n#### Конфігурація Індексу\r\n```typescript\r\ninterface IndexConfig {\r\n  fields: string[];    // Поля для індексування\r\n  unique?: boolean;     // Чи повинен індекс бути унікальним\r\n}\r\n```\r\n\r\n### Події\r\n\r\n#### Додати Обробник Події\r\n```typescript\r\non(eventType: StorageEventType, listener: StorageEventListener): void\r\n```\r\n\r\n#### Видалити Обробник Події\r\n```typescript\r\noff(eventType: StorageEventType, listener: StorageEventListener): void\r\n```\r\n\r\n#### Типи Подій\r\n- `create` - Коли створюється новий запис\r\n- `update` - Коли запис оновлюється\r\n- `delete` - Коли запис видаляється\r\n- `clear` - Коли база даних очищується\r\n\r\n### Управління Базою Даних\r\n\r\n#### Очистити Базу Даних\r\n```typescript\r\nclear(): void\r\n```\r\n\r\n#### Отримати Статистику\r\n```typescript\r\ngetStats(): {\r\n  totalItems: number;\r\n  storageSize: number;\r\n  cacheSize: number;\r\n  indexesCount: number;\r\n}\r\n```\r\n\r\n#### Експорт Бази Даних\r\n```typescript\r\nexport(): string\r\n```\r\n\r\n#### Імпорт Бази Даних\r\n```typescript\r\nimport(jsonData: string): number\r\n```\r\n\r\n## Розширене Використання\r\n\r\n### Створення Індексів для Кращої Продуктивності\r\n\r\n```typescript\r\n// Створити індекс за полем 'email'\r\ndb.createIndex('email');\r\n\r\n// Тепер запити за email будуть набагато швидшими\r\nconst user = db.findByKey('email', 'ivan@example.com');\r\n```\r\n\r\n### Обробка Подій\r\n\r\n```typescript\r\n// Слухати всі події створення\r\ndb.on('create', (event) => {\r\n  console.log('Новий запис створено:', event.item);\r\n});\r\n\r\n// Слухати події оновлення\r\ndb.on('update', (event) => {\r\n  console.log('Запис оновлено:', event.item);\r\n  console.log('Попередня версія:', event.oldItem);\r\n});\r\n```\r\n\r\n### Складні Запити\r\n\r\n```typescript\r\n// Знайти всіх користувачів з пагінацією та сортуванням\r\nconst result = db.findAll({\r\n  limit: 10,\r\n  offset: 0,\r\n  sortBy: 'age',\r\n  sortOrder: 'desc'\r\n});\r\n\r\n// Знайти користувачів за містом\r\nconst kyivUsers = db.findByKey('city', 'Київ');\r\n\r\n// Знайти користувачів, що містять певний текст\r\nconst ivanUsers = db.findByValue('Іван');\r\n```\r\n\r\n### Статистика Бази Даних\r\n\r\n```typescript\r\nconst stats = db.getStats();\r\nconsole.log(`Всього записів: ${stats.totalItems}`);\r\nconsole.log(`Розмір сховища: ${stats.storageSize} байт`);\r\nconsole.log(`Розмір кешу: ${stats.cacheSize} елементів`);\r\nconsole.log(`Індекси: ${stats.indexesCount}`);\r\n```\r\n\r\n## Поради з Продуктивності\r\n\r\n1. **Використовуйте Індекси**: Створюйте індекси для полів, які часто запитуєте\r\n2. **Увімкніть Кешування**: Залишайте кешування увімкненим для кращої продуктивності\r\n3. **Використовуйте Стиснення**: Увімкніть стиснення для економії місця в сховищі\r\n4. **Пакетні Операції**: Для масових операцій розгляньте пакетування\r\n5. **Моніторинг Розміру**: Відстежуйте використання сховища за допомогою `getStats()`\r\n\r\n## Підтримка Браузерів\r\n\r\n- Chrome 4+\r\n- Firefox 3.5+\r\n- Safari 4+\r\n- Edge 12+\r\n- Internet Explorer 8+\r\n\r\n## Ліцензія\r\n\r\nMIT\r\n\r\n## Участь у Розробці\r\n\r\nВнесок у проект вітається! Будь ласка, не соромтеся надсилати Pull Request.\r\n\r\n## Історія Змін\r\n\r\n### 1.0.0\r\n- Перший реліз\r\n- Повні CRUD операції\r\n- Підтримка індексування\r\n- Система кешування\r\n- Стиснення\r\n- Система подій\r\n- Функціональність імпорту/експорту\r\n","readmeFilename":"README.ua.md"}