@budarin/pluggable-serviceworker 1.0.16 → 1.0.18
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 +75 -2
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
- 🔌 **Система плагинов** - модульная архитектура для расширения функциональности
|
|
10
10
|
- 📊 **Порядок выполнения** - предсказуемый контроль порядка выполнения плагинов
|
|
11
11
|
- 🛡️ **Обработка ошибок** - централизованная обработка ошибок
|
|
12
|
+
- 📝 **Логирование** - настраиваемое логирование с поддержкой различных уровней
|
|
12
13
|
- 🎯 **TypeScript** - полная поддержка типов
|
|
13
14
|
- 🚀 **Простота использования** - минимальная настройка
|
|
14
15
|
|
|
@@ -48,7 +49,7 @@ const cachePlugin = {
|
|
|
48
49
|
};
|
|
49
50
|
|
|
50
51
|
// Инициализация Service Worker с плагинами
|
|
51
|
-
initializeServiceWorker([cachePlugin]);
|
|
52
|
+
initializeServiceWorker([cachePlugin], { logger: console });
|
|
52
53
|
```
|
|
53
54
|
|
|
54
55
|
### Использование с порядком выполнения
|
|
@@ -124,6 +125,12 @@ import {
|
|
|
124
125
|
} from '@budarin/pluggable-serviceworker';
|
|
125
126
|
|
|
126
127
|
const config = {
|
|
128
|
+
logger: {
|
|
129
|
+
info: (...data) => console.log('[SW INFO]', ...data),
|
|
130
|
+
warn: (...data) => console.warn('[SW WARN]', ...data),
|
|
131
|
+
error: (...data) => console.error('[SW ERROR]', ...data),
|
|
132
|
+
debug: (...data) => console.debug('[SW DEBUG]', ...data),
|
|
133
|
+
},
|
|
127
134
|
onError: (error, event, errorType) => {
|
|
128
135
|
console.log(`Ошибка типа "${errorType}":`, error);
|
|
129
136
|
|
|
@@ -181,6 +188,59 @@ initializeServiceWorker(
|
|
|
181
188
|
);
|
|
182
189
|
```
|
|
183
190
|
|
|
191
|
+
### Логирование
|
|
192
|
+
|
|
193
|
+
Библиотека поддерживает настраиваемое логирование через параметр `logger`:
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
import { initializeServiceWorker } from '@budarin/pluggable-serviceworker';
|
|
197
|
+
|
|
198
|
+
// Простой logger с префиксами
|
|
199
|
+
const logger = {
|
|
200
|
+
info: (...data) => console.log('[SW INFO]', ...data),
|
|
201
|
+
warn: (...data) => console.warn('[SW WARN]', ...data),
|
|
202
|
+
error: (...data) => console.error('[SW ERROR]', ...data),
|
|
203
|
+
debug: (...data) => console.debug('[SW DEBUG]', ...data),
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
// Logger с отправкой в аналитику
|
|
207
|
+
const analyticsLogger = {
|
|
208
|
+
info: (...data) => {
|
|
209
|
+
console.log('[SW INFO]', ...data);
|
|
210
|
+
// Отправка в аналитику для важных событий
|
|
211
|
+
},
|
|
212
|
+
warn: (...data) => {
|
|
213
|
+
console.warn('[SW WARN]', ...data);
|
|
214
|
+
sendToAnalytics('warning', data);
|
|
215
|
+
},
|
|
216
|
+
error: (...data) => {
|
|
217
|
+
console.error('[SW ERROR]', ...data);
|
|
218
|
+
sendToAnalytics('error', data);
|
|
219
|
+
},
|
|
220
|
+
debug: (...data) => {
|
|
221
|
+
if (process.env.NODE_ENV === 'development') {
|
|
222
|
+
console.debug('[SW DEBUG]', ...data);
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
const config = {
|
|
228
|
+
logger: analyticsLogger,
|
|
229
|
+
onError: (error, event, errorType) => {
|
|
230
|
+
// Обработка ошибок
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
initializeServiceWorker(
|
|
235
|
+
[
|
|
236
|
+
/* плагины */
|
|
237
|
+
],
|
|
238
|
+
config
|
|
239
|
+
);
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Logger используется внутри библиотеки для логирования ошибок в обработчиках ошибок, что предотвращает бесконечные циклы при ошибках в самих обработчиках ошибок.
|
|
243
|
+
|
|
184
244
|
#### Типы ошибок
|
|
185
245
|
|
|
186
246
|
Используйте enum `ServiceWorkerErrorType` для типизированной обработки ошибок:
|
|
@@ -279,13 +339,26 @@ function initializeServiceWorker(
|
|
|
279
339
|
): void;
|
|
280
340
|
```
|
|
281
341
|
|
|
342
|
+
### Logger
|
|
343
|
+
|
|
344
|
+
Интерфейс для логирования:
|
|
345
|
+
|
|
346
|
+
```typescript
|
|
347
|
+
interface Logger {
|
|
348
|
+
info: (...data: unknown[]) => void;
|
|
349
|
+
warn: (...data: unknown[]) => void;
|
|
350
|
+
error: (...data: unknown[]) => void;
|
|
351
|
+
debug: (...data: unknown[]) => void;
|
|
352
|
+
}
|
|
353
|
+
```
|
|
354
|
+
|
|
282
355
|
### ServiceWorkerConfig
|
|
283
356
|
|
|
284
357
|
Конфигурация Service Worker:
|
|
285
358
|
|
|
286
359
|
```typescript
|
|
287
360
|
interface ServiceWorkerConfig {
|
|
288
|
-
|
|
361
|
+
logger?: Logger;
|
|
289
362
|
onError?: (
|
|
290
363
|
error: Error | any,
|
|
291
364
|
event: Event,
|
package/dist/index.d.ts
CHANGED
|
@@ -23,6 +23,12 @@ export interface SwMessageEvent extends Omit<ExtendableMessageEvent, 'data'> {
|
|
|
23
23
|
type: string;
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
+
export interface Logger {
|
|
27
|
+
info: (...data: unknown[]) => void;
|
|
28
|
+
warn: (...data: unknown[]) => void;
|
|
29
|
+
error: (...data: unknown[]) => void;
|
|
30
|
+
debug: (...data: unknown[]) => void;
|
|
31
|
+
}
|
|
26
32
|
interface ServiceWorkerEventHandlers {
|
|
27
33
|
install?: (event: ExtendableEvent) => void | Promise<void>;
|
|
28
34
|
activate?: (event: ExtendableEvent) => void | Promise<void>;
|
|
@@ -37,11 +43,11 @@ export interface ServiceWorkerPlugin extends ServiceWorkerEventHandlers {
|
|
|
37
43
|
order?: number;
|
|
38
44
|
}
|
|
39
45
|
interface ServiceWorkerConfig {
|
|
40
|
-
|
|
46
|
+
logger: Logger;
|
|
41
47
|
onError?: (error: Error | any, event: Event, errorType?: ServiceWorkerErrorType) => void;
|
|
42
48
|
}
|
|
43
49
|
export type FetchResponse = Promise<Response | undefined>;
|
|
44
|
-
export declare function createEventHandlers(plugins: ServiceWorkerPlugin[], config
|
|
50
|
+
export declare function createEventHandlers(plugins: ServiceWorkerPlugin[], config: ServiceWorkerConfig): {
|
|
45
51
|
install: (event: ExtendableEvent) => void;
|
|
46
52
|
activate: (event: ExtendableEvent) => void;
|
|
47
53
|
fetch: (event: FetchEvent) => void;
|
|
@@ -54,6 +60,6 @@ export declare function createEventHandlers(plugins: ServiceWorkerPlugin[], conf
|
|
|
54
60
|
unhandledrejection: (event: PromiseRejectionEvent) => void;
|
|
55
61
|
rejectionhandled: (event: PromiseRejectionEvent) => void;
|
|
56
62
|
};
|
|
57
|
-
export declare function initializeServiceWorker(plugins: ServiceWorkerPlugin[], config
|
|
63
|
+
export declare function initializeServiceWorker(plugins: ServiceWorkerPlugin[], config: ServiceWorkerConfig): void;
|
|
58
64
|
export {};
|
|
59
65
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oBAAY,sBAAsB;IAC9B,KAAK,UAAU;IACf,aAAa,iBAAiB;IAC9B,mBAAmB,uBAAuB;IAC1C,iBAAiB,qBAAqB;IACtC,YAAY,iBAAiB;CAChC;AAED,UAAU,SAAU,SAAQ,eAAe;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAChC;AAED,UAAU,iBAAkB,SAAQ,eAAe;IAC/C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,gCAAgC;QACtC,IAAI,EAAE,SAAS,CAAC;QAChB,YAAY,EAAE,iBAAiB,CAAC;KACnC;CACJ;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxE,IAAI,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC;CACL;AAED,UAAU,0BAA0B;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,mBAAoB,SAAQ,0BAA0B;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,mBAAmB;IACzB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,8 @@ export var ServiceWorkerErrorType;
|
|
|
6
6
|
ServiceWorkerErrorType["REJECTION_HANDLED"] = "rejectionhandled";
|
|
7
7
|
ServiceWorkerErrorType["PLUGIN_ERROR"] = "plugin_error";
|
|
8
8
|
})(ServiceWorkerErrorType || (ServiceWorkerErrorType = {}));
|
|
9
|
-
|
|
9
|
+
const sw = self;
|
|
10
|
+
export function createEventHandlers(plugins, config) {
|
|
10
11
|
const handlers = {
|
|
11
12
|
install: [],
|
|
12
13
|
activate: [],
|
|
@@ -94,7 +95,7 @@ export function createEventHandlers(plugins, config = {}) {
|
|
|
94
95
|
config.onError?.(event.error, event, ServiceWorkerErrorType.ERROR);
|
|
95
96
|
}
|
|
96
97
|
catch (error) {
|
|
97
|
-
|
|
98
|
+
sw.logger.error('Error in error handler:', error);
|
|
98
99
|
}
|
|
99
100
|
},
|
|
100
101
|
messageerror: (event) => {
|
|
@@ -102,7 +103,7 @@ export function createEventHandlers(plugins, config = {}) {
|
|
|
102
103
|
config.onError?.(event.data, event, ServiceWorkerErrorType.MESSAGE_ERROR);
|
|
103
104
|
}
|
|
104
105
|
catch (error) {
|
|
105
|
-
|
|
106
|
+
sw.logger.error('Error in messageerror handler:', error);
|
|
106
107
|
}
|
|
107
108
|
},
|
|
108
109
|
unhandledrejection: (event) => {
|
|
@@ -110,7 +111,7 @@ export function createEventHandlers(plugins, config = {}) {
|
|
|
110
111
|
config.onError?.(event.reason, event, ServiceWorkerErrorType.UNHANDLED_REJECTION);
|
|
111
112
|
}
|
|
112
113
|
catch (error) {
|
|
113
|
-
|
|
114
|
+
sw.logger.error('Error in unhandledrejection handler:', error);
|
|
114
115
|
}
|
|
115
116
|
},
|
|
116
117
|
rejectionhandled: (event) => {
|
|
@@ -118,12 +119,13 @@ export function createEventHandlers(plugins, config = {}) {
|
|
|
118
119
|
config.onError?.(event.reason, event, ServiceWorkerErrorType.REJECTION_HANDLED);
|
|
119
120
|
}
|
|
120
121
|
catch (error) {
|
|
121
|
-
|
|
122
|
+
sw.logger.error('Error in rejectionhandled handler:', error);
|
|
122
123
|
}
|
|
123
124
|
},
|
|
124
125
|
};
|
|
125
126
|
}
|
|
126
127
|
export function initializeServiceWorker(plugins, config) {
|
|
128
|
+
sw.logger = config.logger;
|
|
127
129
|
const handlers = createEventHandlers(plugins, config);
|
|
128
130
|
self.addEventListener('install', handlers.install);
|
|
129
131
|
self.addEventListener('activate', handlers.activate);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAC9B,yCAAe,CAAA;IACf,wDAA8B,CAAA;IAC9B,oEAA0C,CAAA;IAC1C,gEAAsC,CAAA;IACtC,uDAA6B,CAAA;AACjC,CAAC,EANW,sBAAsB,KAAtB,sBAAsB,QAMjC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|