@budarin/pluggable-serviceworker 1.0.3 → 1.0.5

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 CHANGED
@@ -97,25 +97,60 @@ initializeServiceWorker([authPlugin, cachePlugin, loggingPlugin]);
97
97
 
98
98
  ### Обработка ошибок
99
99
 
100
+ Библиотека предоставляет единый обработчик для всех типов ошибок в Service Worker:
101
+
100
102
  ```typescript
101
- import { initializeServiceWorker } from '@budarin/pluggable-serviceworker';
103
+ import {
104
+ initializeServiceWorker,
105
+ ServiceWorkerErrorType,
106
+ } from '@budarin/pluggable-serviceworker';
102
107
 
103
108
  const config = {
104
- onError: (error, event) => {
105
- console.error('Ошибка в Service Worker:', error);
106
-
107
- // Отправка ошибки в аналитику
108
- if ('fetch' in event) {
109
- fetch('/api/errors', {
110
- method: 'POST',
111
- body: JSON.stringify({
112
- error: error.message,
113
- url: event.request?.url,
114
- timestamp: Date.now(),
115
- }),
116
- }).catch(() => {
117
- // Игнорируем ошибки отправки логов
118
- });
109
+ onError: (error, event, errorType) => {
110
+ console.log(`Ошибка типа "${errorType}":`, error);
111
+
112
+ switch (errorType) {
113
+ case ServiceWorkerErrorType.ERROR:
114
+ // JavaScript ошибки
115
+ console.error('JavaScript error:', error);
116
+ break;
117
+
118
+ case ServiceWorkerErrorType.MESSAGE_ERROR:
119
+ // Ошибки сообщений
120
+ console.error('Message error:', error);
121
+ break;
122
+
123
+ case ServiceWorkerErrorType.UNHANDLED_REJECTION:
124
+ // Необработанные Promise rejection
125
+ console.error('Unhandled promise rejection:', error);
126
+ break;
127
+
128
+ case ServiceWorkerErrorType.REJECTION_HANDLED:
129
+ // Обработанные Promise rejection
130
+ console.log('Promise rejection handled:', error);
131
+ break;
132
+
133
+ case ServiceWorkerErrorType.PLUGIN_ERROR:
134
+ // Ошибки в плагинах
135
+ console.error('Plugin error:', error);
136
+ break;
137
+
138
+ default:
139
+ // Ошибки в обработчиках событий (fetch, install, etc.)
140
+ console.error('Handler error in', event.type, ':', error);
141
+
142
+ // Отправка ошибки в аналитику
143
+ fetch('/api/errors', {
144
+ method: 'POST',
145
+ body: JSON.stringify({
146
+ error: error.message,
147
+ eventType: event.type,
148
+ url: event.request?.url,
149
+ timestamp: Date.now(),
150
+ }),
151
+ }).catch(() => {
152
+ // Игнорируем ошибки отправки логов
153
+ });
119
154
  }
120
155
  },
121
156
  };
@@ -128,8 +163,32 @@ initializeServiceWorker(
128
163
  );
129
164
  ```
130
165
 
166
+ #### Типы ошибок
167
+
168
+ Используйте enum `ServiceWorkerErrorType` для типизированной обработки ошибок:
169
+
170
+ - **`ServiceWorkerErrorType.ERROR`** - JavaScript ошибки (ErrorEvent)
171
+ - **`ServiceWorkerErrorType.MESSAGE_ERROR`** - Ошибки при обработке сообщений (MessageEvent)
172
+ - **`ServiceWorkerErrorType.UNHANDLED_REJECTION`** - Необработанные Promise rejection
173
+ - **`ServiceWorkerErrorType.REJECTION_HANDLED`** - Обработанные Promise rejection
174
+ - **`ServiceWorkerErrorType.PLUGIN_ERROR`** - Ошибки в обработчиках событий плагинов (fetch, install, etc.)
175
+
131
176
  ## 🔧 API
132
177
 
178
+ ### ServiceWorkerErrorType
179
+
180
+ Перечисление типов ошибок Service Worker:
181
+
182
+ ```typescript
183
+ enum ServiceWorkerErrorType {
184
+ ERROR = 'error', // JavaScript ошибки
185
+ MESSAGE_ERROR = 'messageerror', // Ошибки сообщений
186
+ UNHANDLED_REJECTION = 'unhandledrejection', // Необработанные Promise rejection
187
+ REJECTION_HANDLED = 'rejectionhandled', // Обработанные Promise rejection
188
+ PLUGIN_ERROR = 'plugin_error', // Ошибки в плагинах
189
+ }
190
+ ```
191
+
133
192
  ### ServiceWorkerPlugin
134
193
 
135
194
  Интерфейс плагина:
@@ -166,7 +225,11 @@ function initializeServiceWorker(
166
225
  ```typescript
167
226
  interface ServiceWorkerConfig {
168
227
  plugins?: ServiceWorkerPlugin[];
169
- onError?: (error: Error, event: Event) => void;
228
+ onError?: (
229
+ error: Error | any,
230
+ event: Event,
231
+ errorType?: ServiceWorkerErrorType
232
+ ) => void;
170
233
  }
171
234
  ```
172
235
 
@@ -448,9 +511,11 @@ const analyticsPlugin = {
448
511
 
449
512
  ## 🛡️ Обработка ошибок
450
513
 
451
- - Ошибки в плагинах автоматически перехватываются
452
- - Можно настроить кастомный обработчик через `config.onError`
453
- - Ошибка в одном плагине не останавливает выполнение других
514
+ - **Единый обработчик** - все типы ошибок обрабатываются через `config.onError`
515
+ - **Типизированные ошибки** - третий параметр `errorType` указывает тип ошибки
516
+ - **Глобальные события** - автоматическая обработка `error`, `messageerror`, `unhandledrejection`, `rejectionhandled`
517
+ - **Изоляция ошибок** - ошибка в одном плагине не останавливает выполнение других
518
+ - **Безопасность** - ошибки в самих обработчиках ошибок логируются в консоль
454
519
 
455
520
  ## 📄 Лицензия
456
521
 
package/dist/index.d.ts CHANGED
@@ -1,3 +1,10 @@
1
+ export declare enum ServiceWorkerErrorType {
2
+ ERROR = "error",
3
+ MESSAGE_ERROR = "messageerror",
4
+ UNHANDLED_REJECTION = "unhandledrejection",
5
+ REJECTION_HANDLED = "rejectionhandled",
6
+ PLUGIN_ERROR = "plugin_error"
7
+ }
1
8
  interface SyncEvent extends ExtendableEvent {
2
9
  readonly tag: string;
3
10
  readonly lastChance: boolean;
@@ -26,7 +33,7 @@ interface ServiceWorkerPlugin extends ServiceWorkerEventHandlers {
26
33
  }
27
34
  interface ServiceWorkerConfig {
28
35
  plugins?: ServiceWorkerPlugin[];
29
- onError?: (error: Error, event: Event) => void;
36
+ onError?: (error: Error | any, event: Event, errorType?: ServiceWorkerErrorType) => void;
30
37
  }
31
38
  export declare function createEventHandlers(plugins: ServiceWorkerPlugin[], config?: ServiceWorkerConfig): {
32
39
  install: (event: ExtendableEvent) => void;
@@ -36,6 +43,10 @@ export declare function createEventHandlers(plugins: ServiceWorkerPlugin[], conf
36
43
  sync: (event: SyncEvent) => void;
37
44
  periodicsync: (event: PeriodicSyncEvent) => void;
38
45
  push: (event: PushEvent) => void;
46
+ error: (event: ErrorEvent) => void;
47
+ messageerror: (event: MessageEvent) => void;
48
+ unhandledrejection: (event: PromiseRejectionEvent) => void;
49
+ rejectionhandled: (event: PromiseRejectionEvent) => void;
39
50
  };
40
51
  export declare function initializeServiceWorker(plugins: ServiceWorkerPlugin[], config?: ServiceWorkerConfig): void;
41
52
  export {};
@@ -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;CAClD;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;CACpC,CAmIA;AAED,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,CAAC,EAAE,mBAAmB,GAC7B,IAAI,CAUN"}
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;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,CACN,KAAK,EAAE,KAAK,GAAG,GAAG,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,CAAC,EAAE,sBAAsB,KACjC,IAAI,CAAC;CACb;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,CA2MA;AAED,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,CAAC,EAAE,mBAAmB,GAC7B,IAAI,CAiBN"}
package/dist/index.js CHANGED
@@ -1,3 +1,11 @@
1
+ export var ServiceWorkerErrorType;
2
+ (function (ServiceWorkerErrorType) {
3
+ ServiceWorkerErrorType["ERROR"] = "error";
4
+ ServiceWorkerErrorType["MESSAGE_ERROR"] = "messageerror";
5
+ ServiceWorkerErrorType["UNHANDLED_REJECTION"] = "unhandledrejection";
6
+ ServiceWorkerErrorType["REJECTION_HANDLED"] = "rejectionhandled";
7
+ ServiceWorkerErrorType["PLUGIN_ERROR"] = "plugin_error";
8
+ })(ServiceWorkerErrorType || (ServiceWorkerErrorType = {}));
1
9
  export function createEventHandlers(plugins, config = {}) {
2
10
  const handlers = {
3
11
  install: [],
@@ -32,10 +40,10 @@ export function createEventHandlers(plugins, config = {}) {
32
40
  });
33
41
  return {
34
42
  install: (event) => {
35
- event.waitUntil(Promise.all(handlers.install.map((handler) => Promise.resolve(handler(event)).catch((error) => config.onError?.(error, event)))));
43
+ event.waitUntil(Promise.all(handlers.install.map((handler) => Promise.resolve(handler(event)).catch((error) => config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR)))));
36
44
  },
37
45
  activate: (event) => {
38
- event.waitUntil(Promise.all(handlers.activate.map((handler) => Promise.resolve(handler(event)).catch((error) => config.onError?.(error, event)))));
46
+ event.waitUntil(Promise.all(handlers.activate.map((handler) => Promise.resolve(handler(event)).catch((error) => config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR)))));
39
47
  },
40
48
  fetch: (event) => {
41
49
  event.respondWith((async () => {
@@ -47,7 +55,7 @@ export function createEventHandlers(plugins, config = {}) {
47
55
  }
48
56
  }
49
57
  catch (error) {
50
- config.onError?.(error, event);
58
+ config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR);
51
59
  }
52
60
  }
53
61
  return fetch(event.request);
@@ -64,10 +72,10 @@ export function createEventHandlers(plugins, config = {}) {
64
72
  });
65
73
  },
66
74
  sync: (event) => {
67
- event.waitUntil(Promise.all(handlers.sync.map((handler) => Promise.resolve(handler(event)).catch((error) => config.onError?.(error, event)))));
75
+ event.waitUntil(Promise.all(handlers.sync.map((handler) => Promise.resolve(handler(event)).catch((error) => config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR)))));
68
76
  },
69
77
  periodicsync: (event) => {
70
- event.waitUntil(Promise.all(handlers.periodicsync.map((handler) => Promise.resolve(handler(event)).catch((error) => config.onError?.(error, event)))));
78
+ event.waitUntil(Promise.all(handlers.periodicsync.map((handler) => Promise.resolve(handler(event)).catch((error) => config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR)))));
71
79
  },
72
80
  push: (event) => {
73
81
  event.waitUntil((async () => {
@@ -76,11 +84,43 @@ export function createEventHandlers(plugins, config = {}) {
76
84
  await Promise.resolve(handler(event));
77
85
  }
78
86
  catch (error) {
79
- config.onError?.(error, event);
87
+ config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR);
80
88
  }
81
89
  }
82
90
  })());
83
91
  },
92
+ error: (event) => {
93
+ try {
94
+ config.onError?.(event.error, event, ServiceWorkerErrorType.ERROR);
95
+ }
96
+ catch (error) {
97
+ console.error('Error in error handler:', error);
98
+ }
99
+ },
100
+ messageerror: (event) => {
101
+ try {
102
+ config.onError?.(event.data, event, ServiceWorkerErrorType.MESSAGE_ERROR);
103
+ }
104
+ catch (error) {
105
+ console.error('Error in messageerror handler:', error);
106
+ }
107
+ },
108
+ unhandledrejection: (event) => {
109
+ try {
110
+ config.onError?.(event.reason, event, ServiceWorkerErrorType.UNHANDLED_REJECTION);
111
+ }
112
+ catch (error) {
113
+ console.error('Error in unhandledrejection handler:', error);
114
+ }
115
+ },
116
+ rejectionhandled: (event) => {
117
+ try {
118
+ config.onError?.(event.reason, event, ServiceWorkerErrorType.REJECTION_HANDLED);
119
+ }
120
+ catch (error) {
121
+ console.error('Error in rejectionhandled handler:', error);
122
+ }
123
+ },
84
124
  };
85
125
  }
86
126
  export function initializeServiceWorker(plugins, config) {
@@ -92,5 +132,9 @@ export function initializeServiceWorker(plugins, config) {
92
132
  self.addEventListener('sync', handlers.sync);
93
133
  self.addEventListener('periodicsync', handlers.periodicsync);
94
134
  self.addEventListener('push', handlers.push);
135
+ self.addEventListener('error', handlers.error);
136
+ self.addEventListener('messageerror', handlers.messageerror);
137
+ self.addEventListener('unhandledrejection', handlers.unhandledrejection);
138
+ self.addEventListener('rejectionhandled', handlers.rejectionhandled);
95
139
  }
96
140
  //# 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@budarin/pluggable-serviceworker",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Extensible via plugins service worker",
5
5
  "keywords": [
6
6
  "serviceworker",
package/src/index.ts CHANGED
@@ -1,3 +1,11 @@
1
+ export enum ServiceWorkerErrorType {
2
+ ERROR = 'error',
3
+ MESSAGE_ERROR = 'messageerror',
4
+ UNHANDLED_REJECTION = 'unhandledrejection',
5
+ REJECTION_HANDLED = 'rejectionhandled',
6
+ PLUGIN_ERROR = 'plugin_error',
7
+ }
8
+
1
9
  interface SyncEvent extends ExtendableEvent {
2
10
  readonly tag: string;
3
11
  readonly lastChance: boolean;
@@ -32,7 +40,11 @@ interface ServiceWorkerPlugin extends ServiceWorkerEventHandlers {
32
40
 
33
41
  interface ServiceWorkerConfig {
34
42
  plugins?: ServiceWorkerPlugin[];
35
- onError?: (error: Error, event: Event) => void;
43
+ onError?: (
44
+ error: Error | any,
45
+ event: Event,
46
+ errorType?: ServiceWorkerErrorType
47
+ ) => void;
36
48
  }
37
49
 
38
50
  type FetchResponse = Promise<Response | null>;
@@ -48,6 +60,10 @@ export function createEventHandlers(
48
60
  sync: (event: SyncEvent) => void;
49
61
  periodicsync: (event: PeriodicSyncEvent) => void;
50
62
  push: (event: PushEvent) => void;
63
+ error: (event: ErrorEvent) => void;
64
+ messageerror: (event: MessageEvent) => void;
65
+ unhandledrejection: (event: PromiseRejectionEvent) => void;
66
+ rejectionhandled: (event: PromiseRejectionEvent) => void;
51
67
  } {
52
68
  const handlers = {
53
69
  install: [] as ((event: ExtendableEvent) => void | Promise<void>)[],
@@ -91,7 +107,11 @@ export function createEventHandlers(
91
107
  handlers.install.map((handler) =>
92
108
  Promise.resolve(handler(event)).catch(
93
109
  (error: unknown) =>
94
- config.onError?.(error as Error, event)
110
+ config.onError?.(
111
+ error as Error,
112
+ event,
113
+ ServiceWorkerErrorType.PLUGIN_ERROR
114
+ )
95
115
  )
96
116
  )
97
117
  )
@@ -104,7 +124,11 @@ export function createEventHandlers(
104
124
  handlers.activate.map((handler) =>
105
125
  Promise.resolve(handler(event)).catch(
106
126
  (error: unknown) =>
107
- config.onError?.(error as Error, event)
127
+ config.onError?.(
128
+ error as Error,
129
+ event,
130
+ ServiceWorkerErrorType.PLUGIN_ERROR
131
+ )
108
132
  )
109
133
  )
110
134
  )
@@ -121,7 +145,11 @@ export function createEventHandlers(
121
145
  return result;
122
146
  }
123
147
  } catch (error) {
124
- config.onError?.(error as Error, event);
148
+ config.onError?.(
149
+ error as Error,
150
+ event,
151
+ ServiceWorkerErrorType.PLUGIN_ERROR
152
+ );
125
153
  }
126
154
  }
127
155
  return fetch(event.request);
@@ -145,7 +173,11 @@ export function createEventHandlers(
145
173
  handlers.sync.map((handler) =>
146
174
  Promise.resolve(handler(event)).catch(
147
175
  (error: unknown) =>
148
- config.onError?.(error as Error, event)
176
+ config.onError?.(
177
+ error as Error,
178
+ event,
179
+ ServiceWorkerErrorType.PLUGIN_ERROR
180
+ )
149
181
  )
150
182
  )
151
183
  )
@@ -158,7 +190,11 @@ export function createEventHandlers(
158
190
  handlers.periodicsync.map((handler) =>
159
191
  Promise.resolve(handler(event)).catch(
160
192
  (error: unknown) =>
161
- config.onError?.(error as Error, event)
193
+ config.onError?.(
194
+ error as Error,
195
+ event,
196
+ ServiceWorkerErrorType.PLUGIN_ERROR
197
+ )
162
198
  )
163
199
  )
164
200
  )
@@ -172,12 +208,64 @@ export function createEventHandlers(
172
208
  try {
173
209
  await Promise.resolve(handler(event));
174
210
  } catch (error) {
175
- config.onError?.(error as Error, event);
211
+ config.onError?.(
212
+ error as Error,
213
+ event,
214
+ ServiceWorkerErrorType.PLUGIN_ERROR
215
+ );
176
216
  }
177
217
  }
178
218
  })()
179
219
  );
180
220
  },
221
+
222
+ error: (event: ErrorEvent): void => {
223
+ try {
224
+ config.onError?.(
225
+ event.error,
226
+ event,
227
+ ServiceWorkerErrorType.ERROR
228
+ );
229
+ } catch (error) {
230
+ console.error('Error in error handler:', error);
231
+ }
232
+ },
233
+
234
+ messageerror: (event: MessageEvent): void => {
235
+ try {
236
+ config.onError?.(
237
+ event.data,
238
+ event,
239
+ ServiceWorkerErrorType.MESSAGE_ERROR
240
+ );
241
+ } catch (error) {
242
+ console.error('Error in messageerror handler:', error);
243
+ }
244
+ },
245
+
246
+ unhandledrejection: (event: PromiseRejectionEvent): void => {
247
+ try {
248
+ config.onError?.(
249
+ event.reason,
250
+ event,
251
+ ServiceWorkerErrorType.UNHANDLED_REJECTION
252
+ );
253
+ } catch (error) {
254
+ console.error('Error in unhandledrejection handler:', error);
255
+ }
256
+ },
257
+
258
+ rejectionhandled: (event: PromiseRejectionEvent): void => {
259
+ try {
260
+ config.onError?.(
261
+ event.reason,
262
+ event,
263
+ ServiceWorkerErrorType.REJECTION_HANDLED
264
+ );
265
+ } catch (error) {
266
+ console.error('Error in rejectionhandled handler:', error);
267
+ }
268
+ },
181
269
  };
182
270
  }
183
271
 
@@ -187,6 +275,7 @@ export function initializeServiceWorker(
187
275
  ): void {
188
276
  const handlers = createEventHandlers(plugins, config);
189
277
 
278
+ // Регистрируем стандартные обработчики событий Service Worker
190
279
  self.addEventListener('install', handlers.install);
191
280
  self.addEventListener('activate', handlers.activate);
192
281
  self.addEventListener('fetch', handlers.fetch);
@@ -194,4 +283,10 @@ export function initializeServiceWorker(
194
283
  self.addEventListener('sync', handlers.sync);
195
284
  self.addEventListener('periodicsync', handlers.periodicsync);
196
285
  self.addEventListener('push', handlers.push);
286
+
287
+ // Регистрируем глобальные обработчики ошибок
288
+ self.addEventListener('error', handlers.error);
289
+ self.addEventListener('messageerror', handlers.messageerror);
290
+ self.addEventListener('unhandledrejection', handlers.unhandledrejection);
291
+ self.addEventListener('rejectionhandled', handlers.rejectionhandled);
197
292
  }