1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-immortaldb

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ImmortalDB

ImmortalDB — это надёжное хранилище типа «ключ-значение» для браузера.

ImmortalDB является лучшим способом хранения постоянных данных типа «ключ-значение» в браузере. Данные, сохранённые в ImmortalDB, избыточно хранятся в файлах cookie, IndexedDB и LocalStorage и постоянно самовосстанавливаются при удалении или повреждении данных.

Например, очистка файлов cookie является обычным действием пользователя, даже для нетехнических пользователей. И браузеры бесцеремонно удаляют файлы IndexedDB, LocalStorage и/или SessionStorage без предупреждения при нехватке памяти.

ImmortalDB устойчив к таким событиям.

Таким образом, ImmortalDB похож на Evercookie, но:

  1. Активно поддерживается и хорошо документирован.
  2. Предоставляет простой, современный API на основе Promise.
  3. Устанавливает справедливый баланс между надёжностью и уважением к пользователю. Данные хранятся надёжно, но также могут быть добровольно удалены, если пользователь намеренно очищает файлы cookie и хранилище приложения.
  4. Не использует вредоносные эксплойты или устаревшие сторонние плагины, такие как Flash, SilverLight или Java. Используются только стандартные, утверждённые HTML5 API.
  5. Не ухудшает производительность или пользовательский опыт. Например, CSS History Knocking от Evercookie может вызвать поток фоновых HTTP-запросов, а загрузка SilverLight или Flash может вызвать нежелательные модальные окна разрешений или перегрузить диск пользователя.

Как работает ImmortalDB

Когда вы сохраняете пару «ключ-значение» в ImmortalDB, этот ключ и значение сохраняются избыточно в файлах cookies, IndexedDB и хранилищах данных LocalStorage браузера.

При извлечении значения по его ключу ImmortalDB:

  1. Ищет этот ключ в каждом хранилище данных.
  2. Подсчитывает каждое уникальное возвращённое значение.
  3. Определяет наиболее часто возвращаемое уникальное значение как «правильное» значение.
  4. Возвращает это правильное значение.

Затем ImmortalDB самовосстанавливается: если какое-либо хранилище данных вернуло значение, отличное от определённого правильного значения, или вообще не вернуло никакого значения, правильное значение перезаписывается в это хранилище. Таким образом поддерживается консенсус, надёжность и избыточность.

API

  • Set API ImmortalDB прост. Чтобы сохранить значение, используйте set(key, value):
import { ImmortalDB } from 'immortal-db'
await ImmortalDB.set('key', 'value')

key и value должны быть DOMStrings. ImmortalDB.set(key, value) также всегда возвращает value, поэтому его можно связать или внедрить, например:

const countPlusOne = (await ImmortalDB.set('count', numberOfClowns)) + 1
  • Get Чтобы получить значение, используйте get(key, default=null):
const value = await ImmortalDB.get('key', default=null)

get() возвращает значение, связанное с key, если key существует. Если key не существует, возвращается default. key должен быть DOMString.

  • Remove Наконец, чтобы удалить ключ, используйте remove(key):
ImmortalDB.set('hi', 'bonjour')
console.log(await ImmortalDB.get('hi'))  // Prints 'bonjour'.
await ImmortalDB.remove('hi')
console.log(await ImmortalDB.get('hi'))  // Prints 'null'.

key должен быть DOMString.

  • Хранилища данных Хранилища данных, в которых ImmortalDB хранит данные, также можно настроить. Например, вот как надёжно хранить данные только в файлах cookie и LocalStorage:
import { ImmortalStorage, CookieStore, LocalStorageStore } from 'immortal-db'
const stores = [await CookieStore(), await LocalStorageStore()]
const immortalDB = new ImmortalStorage(stores)
``` ```
const db = new ImmortalStorage(stores)

await db.set(key, JSON.stringify({1:1}))

По умолчанию ImmortalDB использует следующие хранилища:

  • CookieStore — ключи и значения хранятся в document.cookie.
  • IndexedDbStore — ключи и значения хранятся в window.indexedDB.
  • LocalStorageStore — ключи и значения хранятся в window.localStorage.

Также доступны дополнительные хранилища:

  • SessionStorageStore — ключи и значения хранятся в window.sessionStorage.

Можно легко добавить новые реализации хранилищ; для этого необходимо реализовать асинхронные методы get(key, default), set(key, value) и remove(key).

Установка

Установить ImmortalDB с помощью npm просто.

$ npm install immortal-db

Или включите dist/immortal-db[.min].js и используйте window.ImmortalDB напрямую.

<html>
  <head>
    <script src="immortal-db.min.js"></script>
    <script>
      ;(async () => {
        const db = ImmortalDB.ImmortalDB
        await db.set('hi', 'lolsup')
      })()
    </script>
  </head>

  ...
</html>

Разработка

Чтобы протестировать ImmortalDB, выполните команду:

npm run start

Это запустит сервер разработки webpack и откроет тестовый веб-сайт ImmortalDB:

http://localhost:9234/.

После тестирования для создания новых готовых к производству файлов immortal-db.js и immortal-db.min.js в папке dist/ выполните команду:

npm run build

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-immortaldb.git
git@api.gitlife.ru:oschina-mirror/mirrors-immortaldb.git
oschina-mirror
mirrors-immortaldb
mirrors-immortaldb
master