@budarin/pluggable-serviceworker 1.5.1 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,39 +6,59 @@
|
|
|
6
6
|
|
|
7
7
|
## 🚀 Почему этот пакет облегчает разработку?
|
|
8
8
|
|
|
9
|
-
Разработка Service Worker'ов традиционно сложна из-за необходимости вручную управлять множественными обработчиками событий, обработкой ошибок и порядком
|
|
9
|
+
Разработка Service Worker'ов традиционно сложна из-за необходимости вручную управлять множественными обработчиками событий, обработкой ошибок и порядком выполнения или изучать сложные и большие библиотеки. Этот пакет решает эти проблемы:
|
|
10
10
|
|
|
11
11
|
### 🔌 **Модульная архитектура**
|
|
12
12
|
|
|
13
13
|
- **Плагинная система** позволяет разбивать функциональность на независимые модули
|
|
14
14
|
- Каждый плагин отвечает за свою задачу (кеширование, аутентификация, уведомления)
|
|
15
15
|
- Легко добавлять/удалять функциональность без изменения основного кода
|
|
16
|
-
- Не нужно думать об инфраструктурном коде в обработчиках событий
|
|
16
|
+
- Не нужно думать об инфраструктурном коде в обработчиках событий — пишите простой код, не думая о сложностях самого сервис-воркера
|
|
17
17
|
|
|
18
|
-
### 🎯
|
|
18
|
+
### 🎯 **Предсказуемый порядок выполнения**
|
|
19
19
|
|
|
20
|
-
- **Предсказуемый порядок**
|
|
21
|
-
- **Гибкость**
|
|
22
|
-
-
|
|
20
|
+
- **Предсказуемый порядок** — плагины без `order` выполняются первыми, затем по возрастанию/убыванию `order`
|
|
21
|
+
- **Гибкость** — можно контролировать последовательность инициализации
|
|
22
|
+
- **Параллельно** для `install`, `activate`, `message`, `sync` — независимые задачи выполняются одновременно
|
|
23
|
+
- **Последовательно** для `fetch` — первый вернувший ответ завершает цепочку; для `push` вызываются все плагины
|
|
24
|
+
- Легко добавлять новые плагины в нужное место
|
|
23
25
|
|
|
24
|
-
###
|
|
26
|
+
### 📖 **Легко изучить и понять**
|
|
25
27
|
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
28
|
+
- Один контракт — плагин с опциональными хуками, без отдельной модели роутинга и стратегий
|
|
29
|
+
- Мало сущностей: плагин, фабрика плагина, `initServiceWorker`, опции
|
|
30
|
+
- Низкая когнитивная нагрузка: цепочка плагинов и возвращаемые значения задают всё поведение
|
|
31
|
+
- Быстро войти в проект по примерам и типу `ServiceWorkerPlugin`
|
|
32
|
+
|
|
33
|
+
### 📦 **Маленький размер**
|
|
34
|
+
|
|
35
|
+
- Минимум зависимостей, только рантайм плагинов
|
|
36
|
+
- Нет встроенной сборки и тяжёлых модулей — в бандл попадает только то, что вы подключаете
|
|
37
|
+
- Подходит для проектов, где важен размер бандла и простота зависимостей
|
|
38
|
+
|
|
39
|
+
### 🎛 **Полный контроль над кодом**
|
|
40
|
+
|
|
41
|
+
- Список кешируемых ассетов и стратегии задаёте вы — в коде или конфиге
|
|
42
|
+
- Порядок плагинов, обработка ошибок и логгер полностью в ваших руках
|
|
43
|
+
- Любая кастомная логика в `fetch`, `push`, `sync` — через свои плагины, без обхода чужих абстракций
|
|
29
44
|
|
|
30
45
|
### 🛡️ **Централизованная обработка ошибок**
|
|
31
46
|
|
|
32
|
-
- **Единый обработчик** для всех типов ошибок
|
|
33
|
-
- **Типизированные ошибки**
|
|
34
|
-
- **Изоляция**
|
|
47
|
+
- **Единый обработчик** `onError` для всех типов ошибок в сервис-воркере с определение места возникновения ошибки в коде
|
|
48
|
+
- **Типизированные ошибки** — знаешь, что именно сломалось
|
|
49
|
+
- **Изоляция** — ошибка в одном плагине не ломает остальные
|
|
35
50
|
- **Автоматическая обработка** глобальных событий ошибок
|
|
36
51
|
|
|
37
52
|
### 📝 **Удобное логирование**
|
|
38
53
|
|
|
39
|
-
- **Настраиваемый логгер** с разными уровнями
|
|
40
|
-
-
|
|
41
|
-
-
|
|
54
|
+
- **Настраиваемый логгер** с разными уровнями (`trace`, `debug`, `info`, `warn`, `error`)
|
|
55
|
+
- Во все обработчики плагинов передаётся один и тот же `logger` — контекстная отладка
|
|
56
|
+
- При желании можно подставить любой объект с этим интерфейсом
|
|
57
|
+
|
|
58
|
+
### ✅ **Готовые решения из коробки**
|
|
59
|
+
|
|
60
|
+
- Пресет **offlineFirst** — precache при установке и отдача из кеша при запросах
|
|
61
|
+
- Готовые сервисворкеры: **activateOnSignal**, **activateImmediately**, **activateOnNextVisit** — рабочий типовой сервис-воркер в несколько строк без написания плагинов
|
|
42
62
|
|
|
43
63
|
## 📦 Установка
|
|
44
64
|
|