@budarin/pluggable-serviceworker 1.0.4 → 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 +39 -11
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +63 -11
package/README.md
CHANGED
|
@@ -100,33 +100,41 @@ initializeServiceWorker([authPlugin, cachePlugin, loggingPlugin]);
|
|
|
100
100
|
Библиотека предоставляет единый обработчик для всех типов ошибок в Service Worker:
|
|
101
101
|
|
|
102
102
|
```typescript
|
|
103
|
-
import {
|
|
103
|
+
import {
|
|
104
|
+
initializeServiceWorker,
|
|
105
|
+
ServiceWorkerErrorType,
|
|
106
|
+
} from '@budarin/pluggable-serviceworker';
|
|
104
107
|
|
|
105
108
|
const config = {
|
|
106
109
|
onError: (error, event, errorType) => {
|
|
107
110
|
console.log(`Ошибка типа "${errorType}":`, error);
|
|
108
111
|
|
|
109
112
|
switch (errorType) {
|
|
110
|
-
case
|
|
113
|
+
case ServiceWorkerErrorType.ERROR:
|
|
111
114
|
// JavaScript ошибки
|
|
112
115
|
console.error('JavaScript error:', error);
|
|
113
116
|
break;
|
|
114
117
|
|
|
115
|
-
case
|
|
118
|
+
case ServiceWorkerErrorType.MESSAGE_ERROR:
|
|
116
119
|
// Ошибки сообщений
|
|
117
120
|
console.error('Message error:', error);
|
|
118
121
|
break;
|
|
119
122
|
|
|
120
|
-
case
|
|
123
|
+
case ServiceWorkerErrorType.UNHANDLED_REJECTION:
|
|
121
124
|
// Необработанные Promise rejection
|
|
122
125
|
console.error('Unhandled promise rejection:', error);
|
|
123
126
|
break;
|
|
124
127
|
|
|
125
|
-
case
|
|
128
|
+
case ServiceWorkerErrorType.REJECTION_HANDLED:
|
|
126
129
|
// Обработанные Promise rejection
|
|
127
130
|
console.log('Promise rejection handled:', error);
|
|
128
131
|
break;
|
|
129
132
|
|
|
133
|
+
case ServiceWorkerErrorType.PLUGIN_ERROR:
|
|
134
|
+
// Ошибки в плагинах
|
|
135
|
+
console.error('Plugin error:', error);
|
|
136
|
+
break;
|
|
137
|
+
|
|
130
138
|
default:
|
|
131
139
|
// Ошибки в обработчиках событий (fetch, install, etc.)
|
|
132
140
|
console.error('Handler error in', event.type, ':', error);
|
|
@@ -157,14 +165,30 @@ initializeServiceWorker(
|
|
|
157
165
|
|
|
158
166
|
#### Типы ошибок
|
|
159
167
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
- **`
|
|
163
|
-
- **`
|
|
164
|
-
- **`
|
|
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.)
|
|
165
175
|
|
|
166
176
|
## 🔧 API
|
|
167
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
|
+
|
|
168
192
|
### ServiceWorkerPlugin
|
|
169
193
|
|
|
170
194
|
Интерфейс плагина:
|
|
@@ -201,7 +225,11 @@ function initializeServiceWorker(
|
|
|
201
225
|
```typescript
|
|
202
226
|
interface ServiceWorkerConfig {
|
|
203
227
|
plugins?: ServiceWorkerPlugin[];
|
|
204
|
-
onError?: (
|
|
228
|
+
onError?: (
|
|
229
|
+
error: Error | any,
|
|
230
|
+
event: Event,
|
|
231
|
+
errorType?: ServiceWorkerErrorType
|
|
232
|
+
) => void;
|
|
205
233
|
}
|
|
206
234
|
```
|
|
207
235
|
|
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 | any, event: Event, errorType?:
|
|
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;
|
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,
|
|
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,14 +84,14 @@ 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
|
},
|
|
84
92
|
error: (event) => {
|
|
85
93
|
try {
|
|
86
|
-
config.onError?.(event.error, event,
|
|
94
|
+
config.onError?.(event.error, event, ServiceWorkerErrorType.ERROR);
|
|
87
95
|
}
|
|
88
96
|
catch (error) {
|
|
89
97
|
console.error('Error in error handler:', error);
|
|
@@ -91,7 +99,7 @@ export function createEventHandlers(plugins, config = {}) {
|
|
|
91
99
|
},
|
|
92
100
|
messageerror: (event) => {
|
|
93
101
|
try {
|
|
94
|
-
config.onError?.(event.data, event,
|
|
102
|
+
config.onError?.(event.data, event, ServiceWorkerErrorType.MESSAGE_ERROR);
|
|
95
103
|
}
|
|
96
104
|
catch (error) {
|
|
97
105
|
console.error('Error in messageerror handler:', error);
|
|
@@ -99,7 +107,7 @@ export function createEventHandlers(plugins, config = {}) {
|
|
|
99
107
|
},
|
|
100
108
|
unhandledrejection: (event) => {
|
|
101
109
|
try {
|
|
102
|
-
config.onError?.(event.reason, event,
|
|
110
|
+
config.onError?.(event.reason, event, ServiceWorkerErrorType.UNHANDLED_REJECTION);
|
|
103
111
|
}
|
|
104
112
|
catch (error) {
|
|
105
113
|
console.error('Error in unhandledrejection handler:', error);
|
|
@@ -107,7 +115,7 @@ export function createEventHandlers(plugins, config = {}) {
|
|
|
107
115
|
},
|
|
108
116
|
rejectionhandled: (event) => {
|
|
109
117
|
try {
|
|
110
|
-
config.onError?.(event.reason, event,
|
|
118
|
+
config.onError?.(event.reason, event, ServiceWorkerErrorType.REJECTION_HANDLED);
|
|
111
119
|
}
|
|
112
120
|
catch (error) {
|
|
113
121
|
console.error('Error in rejectionhandled handler:', error);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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
|
@@ -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?: (
|
|
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>;
|
|
@@ -95,7 +107,11 @@ export function createEventHandlers(
|
|
|
95
107
|
handlers.install.map((handler) =>
|
|
96
108
|
Promise.resolve(handler(event)).catch(
|
|
97
109
|
(error: unknown) =>
|
|
98
|
-
config.onError?.(
|
|
110
|
+
config.onError?.(
|
|
111
|
+
error as Error,
|
|
112
|
+
event,
|
|
113
|
+
ServiceWorkerErrorType.PLUGIN_ERROR
|
|
114
|
+
)
|
|
99
115
|
)
|
|
100
116
|
)
|
|
101
117
|
)
|
|
@@ -108,7 +124,11 @@ export function createEventHandlers(
|
|
|
108
124
|
handlers.activate.map((handler) =>
|
|
109
125
|
Promise.resolve(handler(event)).catch(
|
|
110
126
|
(error: unknown) =>
|
|
111
|
-
config.onError?.(
|
|
127
|
+
config.onError?.(
|
|
128
|
+
error as Error,
|
|
129
|
+
event,
|
|
130
|
+
ServiceWorkerErrorType.PLUGIN_ERROR
|
|
131
|
+
)
|
|
112
132
|
)
|
|
113
133
|
)
|
|
114
134
|
)
|
|
@@ -125,7 +145,11 @@ export function createEventHandlers(
|
|
|
125
145
|
return result;
|
|
126
146
|
}
|
|
127
147
|
} catch (error) {
|
|
128
|
-
config.onError?.(
|
|
148
|
+
config.onError?.(
|
|
149
|
+
error as Error,
|
|
150
|
+
event,
|
|
151
|
+
ServiceWorkerErrorType.PLUGIN_ERROR
|
|
152
|
+
);
|
|
129
153
|
}
|
|
130
154
|
}
|
|
131
155
|
return fetch(event.request);
|
|
@@ -149,7 +173,11 @@ export function createEventHandlers(
|
|
|
149
173
|
handlers.sync.map((handler) =>
|
|
150
174
|
Promise.resolve(handler(event)).catch(
|
|
151
175
|
(error: unknown) =>
|
|
152
|
-
config.onError?.(
|
|
176
|
+
config.onError?.(
|
|
177
|
+
error as Error,
|
|
178
|
+
event,
|
|
179
|
+
ServiceWorkerErrorType.PLUGIN_ERROR
|
|
180
|
+
)
|
|
153
181
|
)
|
|
154
182
|
)
|
|
155
183
|
)
|
|
@@ -162,7 +190,11 @@ export function createEventHandlers(
|
|
|
162
190
|
handlers.periodicsync.map((handler) =>
|
|
163
191
|
Promise.resolve(handler(event)).catch(
|
|
164
192
|
(error: unknown) =>
|
|
165
|
-
config.onError?.(
|
|
193
|
+
config.onError?.(
|
|
194
|
+
error as Error,
|
|
195
|
+
event,
|
|
196
|
+
ServiceWorkerErrorType.PLUGIN_ERROR
|
|
197
|
+
)
|
|
166
198
|
)
|
|
167
199
|
)
|
|
168
200
|
)
|
|
@@ -176,7 +208,11 @@ export function createEventHandlers(
|
|
|
176
208
|
try {
|
|
177
209
|
await Promise.resolve(handler(event));
|
|
178
210
|
} catch (error) {
|
|
179
|
-
config.onError?.(
|
|
211
|
+
config.onError?.(
|
|
212
|
+
error as Error,
|
|
213
|
+
event,
|
|
214
|
+
ServiceWorkerErrorType.PLUGIN_ERROR
|
|
215
|
+
);
|
|
180
216
|
}
|
|
181
217
|
}
|
|
182
218
|
})()
|
|
@@ -185,7 +221,11 @@ export function createEventHandlers(
|
|
|
185
221
|
|
|
186
222
|
error: (event: ErrorEvent): void => {
|
|
187
223
|
try {
|
|
188
|
-
config.onError?.(
|
|
224
|
+
config.onError?.(
|
|
225
|
+
event.error,
|
|
226
|
+
event,
|
|
227
|
+
ServiceWorkerErrorType.ERROR
|
|
228
|
+
);
|
|
189
229
|
} catch (error) {
|
|
190
230
|
console.error('Error in error handler:', error);
|
|
191
231
|
}
|
|
@@ -193,7 +233,11 @@ export function createEventHandlers(
|
|
|
193
233
|
|
|
194
234
|
messageerror: (event: MessageEvent): void => {
|
|
195
235
|
try {
|
|
196
|
-
config.onError?.(
|
|
236
|
+
config.onError?.(
|
|
237
|
+
event.data,
|
|
238
|
+
event,
|
|
239
|
+
ServiceWorkerErrorType.MESSAGE_ERROR
|
|
240
|
+
);
|
|
197
241
|
} catch (error) {
|
|
198
242
|
console.error('Error in messageerror handler:', error);
|
|
199
243
|
}
|
|
@@ -201,7 +245,11 @@ export function createEventHandlers(
|
|
|
201
245
|
|
|
202
246
|
unhandledrejection: (event: PromiseRejectionEvent): void => {
|
|
203
247
|
try {
|
|
204
|
-
config.onError?.(
|
|
248
|
+
config.onError?.(
|
|
249
|
+
event.reason,
|
|
250
|
+
event,
|
|
251
|
+
ServiceWorkerErrorType.UNHANDLED_REJECTION
|
|
252
|
+
);
|
|
205
253
|
} catch (error) {
|
|
206
254
|
console.error('Error in unhandledrejection handler:', error);
|
|
207
255
|
}
|
|
@@ -209,7 +257,11 @@ export function createEventHandlers(
|
|
|
209
257
|
|
|
210
258
|
rejectionhandled: (event: PromiseRejectionEvent): void => {
|
|
211
259
|
try {
|
|
212
|
-
config.onError?.(
|
|
260
|
+
config.onError?.(
|
|
261
|
+
event.reason,
|
|
262
|
+
event,
|
|
263
|
+
ServiceWorkerErrorType.REJECTION_HANDLED
|
|
264
|
+
);
|
|
213
265
|
} catch (error) {
|
|
214
266
|
console.error('Error in rejectionhandled handler:', error);
|
|
215
267
|
}
|