@budarin/pluggable-serviceworker 1.0.3 → 1.0.4
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 +56 -19
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +44 -1
package/README.md
CHANGED
|
@@ -97,25 +97,52 @@ initializeServiceWorker([authPlugin, cachePlugin, loggingPlugin]);
|
|
|
97
97
|
|
|
98
98
|
### Обработка ошибок
|
|
99
99
|
|
|
100
|
+
Библиотека предоставляет единый обработчик для всех типов ошибок в Service Worker:
|
|
101
|
+
|
|
100
102
|
```typescript
|
|
101
103
|
import { initializeServiceWorker } from '@budarin/pluggable-serviceworker';
|
|
102
104
|
|
|
103
105
|
const config = {
|
|
104
|
-
onError: (error, event) => {
|
|
105
|
-
console.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
106
|
+
onError: (error, event, errorType) => {
|
|
107
|
+
console.log(`Ошибка типа "${errorType}":`, error);
|
|
108
|
+
|
|
109
|
+
switch (errorType) {
|
|
110
|
+
case 'error':
|
|
111
|
+
// JavaScript ошибки
|
|
112
|
+
console.error('JavaScript error:', error);
|
|
113
|
+
break;
|
|
114
|
+
|
|
115
|
+
case 'messageerror':
|
|
116
|
+
// Ошибки сообщений
|
|
117
|
+
console.error('Message error:', error);
|
|
118
|
+
break;
|
|
119
|
+
|
|
120
|
+
case 'unhandledrejection':
|
|
121
|
+
// Необработанные Promise rejection
|
|
122
|
+
console.error('Unhandled promise rejection:', error);
|
|
123
|
+
break;
|
|
124
|
+
|
|
125
|
+
case 'rejectionhandled':
|
|
126
|
+
// Обработанные Promise rejection
|
|
127
|
+
console.log('Promise rejection handled:', error);
|
|
128
|
+
break;
|
|
129
|
+
|
|
130
|
+
default:
|
|
131
|
+
// Ошибки в обработчиках событий (fetch, install, etc.)
|
|
132
|
+
console.error('Handler error in', event.type, ':', error);
|
|
133
|
+
|
|
134
|
+
// Отправка ошибки в аналитику
|
|
135
|
+
fetch('/api/errors', {
|
|
136
|
+
method: 'POST',
|
|
137
|
+
body: JSON.stringify({
|
|
138
|
+
error: error.message,
|
|
139
|
+
eventType: event.type,
|
|
140
|
+
url: event.request?.url,
|
|
141
|
+
timestamp: Date.now(),
|
|
142
|
+
}),
|
|
143
|
+
}).catch(() => {
|
|
144
|
+
// Игнорируем ошибки отправки логов
|
|
145
|
+
});
|
|
119
146
|
}
|
|
120
147
|
},
|
|
121
148
|
};
|
|
@@ -128,6 +155,14 @@ initializeServiceWorker(
|
|
|
128
155
|
);
|
|
129
156
|
```
|
|
130
157
|
|
|
158
|
+
#### Типы ошибок
|
|
159
|
+
|
|
160
|
+
- **`'error'`** - JavaScript ошибки (ErrorEvent)
|
|
161
|
+
- **`'messageerror'`** - Ошибки при обработке сообщений (MessageEvent)
|
|
162
|
+
- **`'unhandledrejection'`** - Необработанные Promise rejection
|
|
163
|
+
- **`'rejectionhandled'`** - Обработанные Promise rejection
|
|
164
|
+
- **`undefined`** - Ошибки в обработчиках событий плагинов (fetch, install, etc.)
|
|
165
|
+
|
|
131
166
|
## 🔧 API
|
|
132
167
|
|
|
133
168
|
### ServiceWorkerPlugin
|
|
@@ -166,7 +201,7 @@ function initializeServiceWorker(
|
|
|
166
201
|
```typescript
|
|
167
202
|
interface ServiceWorkerConfig {
|
|
168
203
|
plugins?: ServiceWorkerPlugin[];
|
|
169
|
-
onError?: (error: Error, event: Event) => void;
|
|
204
|
+
onError?: (error: Error | any, event: Event, errorType?: string) => void;
|
|
170
205
|
}
|
|
171
206
|
```
|
|
172
207
|
|
|
@@ -448,9 +483,11 @@ const analyticsPlugin = {
|
|
|
448
483
|
|
|
449
484
|
## 🛡️ Обработка ошибок
|
|
450
485
|
|
|
451
|
-
-
|
|
452
|
-
-
|
|
453
|
-
-
|
|
486
|
+
- **Единый обработчик** - все типы ошибок обрабатываются через `config.onError`
|
|
487
|
+
- **Типизированные ошибки** - третий параметр `errorType` указывает тип ошибки
|
|
488
|
+
- **Глобальные события** - автоматическая обработка `error`, `messageerror`, `unhandledrejection`, `rejectionhandled`
|
|
489
|
+
- **Изоляция ошибок** - ошибка в одном плагине не останавливает выполнение других
|
|
490
|
+
- **Безопасность** - ошибки в самих обработчиках ошибок логируются в консоль
|
|
454
491
|
|
|
455
492
|
## 📄 Лицензия
|
|
456
493
|
|
package/dist/index.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ interface ServiceWorkerPlugin extends ServiceWorkerEventHandlers {
|
|
|
26
26
|
}
|
|
27
27
|
interface ServiceWorkerConfig {
|
|
28
28
|
plugins?: ServiceWorkerPlugin[];
|
|
29
|
-
onError?: (error: Error, event: Event) => void;
|
|
29
|
+
onError?: (error: Error | any, event: Event, errorType?: string) => void;
|
|
30
30
|
}
|
|
31
31
|
export declare function createEventHandlers(plugins: ServiceWorkerPlugin[], config?: ServiceWorkerConfig): {
|
|
32
32
|
install: (event: ExtendableEvent) => void;
|
|
@@ -36,6 +36,10 @@ export declare function createEventHandlers(plugins: ServiceWorkerPlugin[], conf
|
|
|
36
36
|
sync: (event: SyncEvent) => void;
|
|
37
37
|
periodicsync: (event: PeriodicSyncEvent) => void;
|
|
38
38
|
push: (event: PushEvent) => void;
|
|
39
|
+
error: (event: ErrorEvent) => void;
|
|
40
|
+
messageerror: (event: MessageEvent) => void;
|
|
41
|
+
unhandledrejection: (event: PromiseRejectionEvent) => void;
|
|
42
|
+
rejectionhandled: (event: PromiseRejectionEvent) => void;
|
|
39
43
|
};
|
|
40
44
|
export declare function initializeServiceWorker(plugins: ServiceWorkerPlugin[], config?: ServiceWorkerConfig): void;
|
|
41
45
|
export {};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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;AAGD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,gCAAgC;QACtC,IAAI,EAAE,SAAS,CAAC;QAChB,YAAY,EAAE,iBAAiB,CAAC;KACnC;CACJ;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,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,UAAU,mBAAoB,SAAQ,0BAA0B;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,mBAAmB;IACzB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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;AAGD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,gCAAgC;QACtC,IAAI,EAAE,SAAS,CAAC;QAChB,YAAY,EAAE,iBAAiB,CAAC;KACnC;CACJ;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,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,UAAU,mBAAoB,SAAQ,0BAA0B;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,mBAAmB;IACzB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5E;AAID,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,GAAE,mBAAwB,GACjC;IACC,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACjC,YAAY,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjD,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,kBAAkB,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC3D,gBAAgB,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC5D,CAmKA;AAED,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,CAAC,EAAE,mBAAmB,GAC7B,IAAI,CAiBN"}
|
package/dist/index.js
CHANGED
|
@@ -81,6 +81,38 @@ export function createEventHandlers(plugins, config = {}) {
|
|
|
81
81
|
}
|
|
82
82
|
})());
|
|
83
83
|
},
|
|
84
|
+
error: (event) => {
|
|
85
|
+
try {
|
|
86
|
+
config.onError?.(event.error, event, 'error');
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error('Error in error handler:', error);
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
messageerror: (event) => {
|
|
93
|
+
try {
|
|
94
|
+
config.onError?.(event.data, event, 'messageerror');
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
console.error('Error in messageerror handler:', error);
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
unhandledrejection: (event) => {
|
|
101
|
+
try {
|
|
102
|
+
config.onError?.(event.reason, event, 'unhandledrejection');
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error('Error in unhandledrejection handler:', error);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
rejectionhandled: (event) => {
|
|
109
|
+
try {
|
|
110
|
+
config.onError?.(event.reason, event, 'rejectionhandled');
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
console.error('Error in rejectionhandled handler:', error);
|
|
114
|
+
}
|
|
115
|
+
},
|
|
84
116
|
};
|
|
85
117
|
}
|
|
86
118
|
export function initializeServiceWorker(plugins, config) {
|
|
@@ -92,5 +124,9 @@ export function initializeServiceWorker(plugins, config) {
|
|
|
92
124
|
self.addEventListener('sync', handlers.sync);
|
|
93
125
|
self.addEventListener('periodicsync', handlers.periodicsync);
|
|
94
126
|
self.addEventListener('push', handlers.push);
|
|
127
|
+
self.addEventListener('error', handlers.error);
|
|
128
|
+
self.addEventListener('messageerror', handlers.messageerror);
|
|
129
|
+
self.addEventListener('unhandledrejection', handlers.unhandledrejection);
|
|
130
|
+
self.addEventListener('rejectionhandled', handlers.rejectionhandled);
|
|
95
131
|
}
|
|
96
132
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuCA,MAAM,UAAU,mBAAmB,CAC/B,OAA8B,EAC9B,SAA8B,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -32,7 +32,7 @@ interface ServiceWorkerPlugin extends ServiceWorkerEventHandlers {
|
|
|
32
32
|
|
|
33
33
|
interface ServiceWorkerConfig {
|
|
34
34
|
plugins?: ServiceWorkerPlugin[];
|
|
35
|
-
onError?: (error: Error, event: Event) => void;
|
|
35
|
+
onError?: (error: Error | any, event: Event, errorType?: string) => void;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
type FetchResponse = Promise<Response | null>;
|
|
@@ -48,6 +48,10 @@ export function createEventHandlers(
|
|
|
48
48
|
sync: (event: SyncEvent) => void;
|
|
49
49
|
periodicsync: (event: PeriodicSyncEvent) => void;
|
|
50
50
|
push: (event: PushEvent) => void;
|
|
51
|
+
error: (event: ErrorEvent) => void;
|
|
52
|
+
messageerror: (event: MessageEvent) => void;
|
|
53
|
+
unhandledrejection: (event: PromiseRejectionEvent) => void;
|
|
54
|
+
rejectionhandled: (event: PromiseRejectionEvent) => void;
|
|
51
55
|
} {
|
|
52
56
|
const handlers = {
|
|
53
57
|
install: [] as ((event: ExtendableEvent) => void | Promise<void>)[],
|
|
@@ -178,6 +182,38 @@ export function createEventHandlers(
|
|
|
178
182
|
})()
|
|
179
183
|
);
|
|
180
184
|
},
|
|
185
|
+
|
|
186
|
+
error: (event: ErrorEvent): void => {
|
|
187
|
+
try {
|
|
188
|
+
config.onError?.(event.error, event, 'error');
|
|
189
|
+
} catch (error) {
|
|
190
|
+
console.error('Error in error handler:', error);
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
|
|
194
|
+
messageerror: (event: MessageEvent): void => {
|
|
195
|
+
try {
|
|
196
|
+
config.onError?.(event.data, event, 'messageerror');
|
|
197
|
+
} catch (error) {
|
|
198
|
+
console.error('Error in messageerror handler:', error);
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
|
|
202
|
+
unhandledrejection: (event: PromiseRejectionEvent): void => {
|
|
203
|
+
try {
|
|
204
|
+
config.onError?.(event.reason, event, 'unhandledrejection');
|
|
205
|
+
} catch (error) {
|
|
206
|
+
console.error('Error in unhandledrejection handler:', error);
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
|
|
210
|
+
rejectionhandled: (event: PromiseRejectionEvent): void => {
|
|
211
|
+
try {
|
|
212
|
+
config.onError?.(event.reason, event, 'rejectionhandled');
|
|
213
|
+
} catch (error) {
|
|
214
|
+
console.error('Error in rejectionhandled handler:', error);
|
|
215
|
+
}
|
|
216
|
+
},
|
|
181
217
|
};
|
|
182
218
|
}
|
|
183
219
|
|
|
@@ -187,6 +223,7 @@ export function initializeServiceWorker(
|
|
|
187
223
|
): void {
|
|
188
224
|
const handlers = createEventHandlers(plugins, config);
|
|
189
225
|
|
|
226
|
+
// Регистрируем стандартные обработчики событий Service Worker
|
|
190
227
|
self.addEventListener('install', handlers.install);
|
|
191
228
|
self.addEventListener('activate', handlers.activate);
|
|
192
229
|
self.addEventListener('fetch', handlers.fetch);
|
|
@@ -194,4 +231,10 @@ export function initializeServiceWorker(
|
|
|
194
231
|
self.addEventListener('sync', handlers.sync);
|
|
195
232
|
self.addEventListener('periodicsync', handlers.periodicsync);
|
|
196
233
|
self.addEventListener('push', handlers.push);
|
|
234
|
+
|
|
235
|
+
// Регистрируем глобальные обработчики ошибок
|
|
236
|
+
self.addEventListener('error', handlers.error);
|
|
237
|
+
self.addEventListener('messageerror', handlers.messageerror);
|
|
238
|
+
self.addEventListener('unhandledrejection', handlers.unhandledrejection);
|
|
239
|
+
self.addEventListener('rejectionhandled', handlers.rejectionhandled);
|
|
197
240
|
}
|