@budarin/pluggable-serviceworker 1.0.31 → 1.1.0
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 +45 -23
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -16
- package/dist/index.js.map +1 -1
- package/package.json +12 -5
package/README.md
CHANGED
|
@@ -58,7 +58,7 @@ pnpm add @budarin/pluggable-serviceworker
|
|
|
58
58
|
|
|
59
59
|
```typescript
|
|
60
60
|
// sw.js
|
|
61
|
-
import {
|
|
61
|
+
import { initServiceWorker } from '@budarin/pluggable-serviceworker';
|
|
62
62
|
|
|
63
63
|
// Простой плагин для кеширования
|
|
64
64
|
const cachePlugin = {
|
|
@@ -76,17 +76,16 @@ const cachePlugin = {
|
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
// Инициализация Service Worker с плагинами
|
|
79
|
-
|
|
79
|
+
initServiceWorker([cachePlugin], { logger: console });
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
## ⚙️ Конфигурация
|
|
83
83
|
|
|
84
|
-
Функция `
|
|
84
|
+
Функция `initServiceWorker` принимает второй параметр `config` типа `ServiceWorkerConfig`:
|
|
85
85
|
|
|
86
86
|
```typescript
|
|
87
87
|
interface ServiceWorkerConfig {
|
|
88
|
-
logger
|
|
89
|
-
// Опциональное поле
|
|
88
|
+
logger?: Logger; // Опционально, по умолчанию console
|
|
90
89
|
onError?: (
|
|
91
90
|
error: Error | any,
|
|
92
91
|
event: Event,
|
|
@@ -97,9 +96,9 @@ interface ServiceWorkerConfig {
|
|
|
97
96
|
|
|
98
97
|
### Поля конфигурации
|
|
99
98
|
|
|
100
|
-
#### `logger
|
|
99
|
+
#### `logger?: Logger` (опциональное)
|
|
101
100
|
|
|
102
|
-
Объект для логирования с методами `info`, `warn`, `error`, `debug`.
|
|
101
|
+
Объект для логирования с методами `info`, `warn`, `error`, `debug`. По умолчанию используется `console`. Может быть передан любой объект, реализующий интерфейс `Logger`.
|
|
103
102
|
|
|
104
103
|
```typescript
|
|
105
104
|
interface Logger {
|
|
@@ -113,8 +112,10 @@ interface Logger {
|
|
|
113
112
|
**Пример:**
|
|
114
113
|
|
|
115
114
|
```typescript
|
|
115
|
+
const logger = console; // Использование стандартного console
|
|
116
|
+
|
|
116
117
|
const config = {
|
|
117
|
-
logger
|
|
118
|
+
logger,
|
|
118
119
|
// или
|
|
119
120
|
logger: {
|
|
120
121
|
info: (...data) => customLog('INFO', ...data),
|
|
@@ -141,13 +142,15 @@ const config = {
|
|
|
141
142
|
|
|
142
143
|
```typescript
|
|
143
144
|
// Без onError - ошибки будут проигнорированы
|
|
144
|
-
|
|
145
|
+
initServiceWorker([cachePlugin], { logger: console });
|
|
145
146
|
|
|
146
147
|
// С onError - ошибки будут обработаны
|
|
147
|
-
|
|
148
|
-
|
|
148
|
+
const logger = console; // Использование стандартного console
|
|
149
|
+
|
|
150
|
+
initServiceWorker([cachePlugin], {
|
|
151
|
+
logger,
|
|
149
152
|
onError: (error, event, errorType) => {
|
|
150
|
-
|
|
153
|
+
logger.error('Service Worker error:', error, errorType);
|
|
151
154
|
},
|
|
152
155
|
});
|
|
153
156
|
```
|
|
@@ -158,45 +161,48 @@ initializeServiceWorker([cachePlugin], {
|
|
|
158
161
|
|
|
159
162
|
```typescript
|
|
160
163
|
import {
|
|
161
|
-
|
|
164
|
+
initServiceWorker,
|
|
162
165
|
ServiceWorkerErrorType,
|
|
163
166
|
} from '@budarin/pluggable-serviceworker';
|
|
164
167
|
|
|
168
|
+
const logger = console; // или свой объект с методами info, warn, error, debug
|
|
169
|
+
|
|
165
170
|
const config = {
|
|
171
|
+
logger,
|
|
166
172
|
onError: (error, event, errorType) => {
|
|
167
|
-
|
|
173
|
+
logger.info(`Ошибка типа "${errorType}":`, error);
|
|
168
174
|
|
|
169
175
|
switch (errorType) {
|
|
170
176
|
case ServiceWorkerErrorType.ERROR:
|
|
171
177
|
// JavaScript ошибки
|
|
172
|
-
|
|
178
|
+
logger.error('JavaScript error:', error);
|
|
173
179
|
break;
|
|
174
180
|
|
|
175
181
|
case ServiceWorkerErrorType.MESSAGE_ERROR:
|
|
176
182
|
// Ошибки сообщений
|
|
177
|
-
|
|
183
|
+
logger.error('Message error:', error);
|
|
178
184
|
break;
|
|
179
185
|
|
|
180
186
|
case ServiceWorkerErrorType.UNHANDLED_REJECTION:
|
|
181
187
|
// Необработанные Promise rejection
|
|
182
|
-
|
|
188
|
+
logger.error('Unhandled promise rejection:', error);
|
|
183
189
|
break;
|
|
184
190
|
|
|
185
191
|
case ServiceWorkerErrorType.REJECTION_HANDLED:
|
|
186
192
|
// Обработанные Promise rejection
|
|
187
|
-
|
|
193
|
+
logger.info('Promise rejection handled:', error);
|
|
188
194
|
break;
|
|
189
195
|
|
|
190
196
|
case ServiceWorkerErrorType.PLUGIN_ERROR:
|
|
191
197
|
// Ошибки в плагинах
|
|
192
|
-
|
|
198
|
+
logger.error('Plugin error:', error);
|
|
193
199
|
break;
|
|
194
200
|
|
|
195
201
|
default:
|
|
196
202
|
// Неизвестные типы ошибок
|
|
197
|
-
|
|
203
|
+
logger.error('Unknown error type:', error);
|
|
198
204
|
|
|
199
|
-
//
|
|
205
|
+
// можно даже так - отправка ошибки в аналитику
|
|
200
206
|
fetch('/api/errors', {
|
|
201
207
|
method: 'POST',
|
|
202
208
|
body: JSON.stringify({
|
|
@@ -212,7 +218,7 @@ const config = {
|
|
|
212
218
|
},
|
|
213
219
|
};
|
|
214
220
|
|
|
215
|
-
|
|
221
|
+
initServiceWorker(
|
|
216
222
|
[
|
|
217
223
|
/* ваши плагины */
|
|
218
224
|
],
|
|
@@ -244,7 +250,7 @@ interface ServiceWorkerPlugin {
|
|
|
244
250
|
) => Promise<Response | undefined> | Response | undefined;
|
|
245
251
|
|
|
246
252
|
/** Обработчик события message */
|
|
247
|
-
message?: (event:
|
|
253
|
+
message?: (event: SwMessageEvent) => void;
|
|
248
254
|
|
|
249
255
|
/** Обработчик события sync */
|
|
250
256
|
sync?: (event: SyncEvent) => Promise<void> | void;
|
|
@@ -275,6 +281,22 @@ interface ServiceWorkerPlugin {
|
|
|
275
281
|
- **Остальные**: Не возвращают значения, выполняются для всех плагинов
|
|
276
282
|
- **Все методы опциональны** - реализуйте только нужные события
|
|
277
283
|
|
|
284
|
+
### 🔄 Обновление Service Worker (skipWaiting / clients.claim)
|
|
285
|
+
|
|
286
|
+
Библиотека **не вызывает** `skipWaiting()` и `clients.claim()` — это поведение задаётся индивидуально в каждом проекте и оставлено на усмотрение плагинов. При необходимости вызывайте их в своих обработчиках `install` и `activate`:
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
const updatePlugin = {
|
|
290
|
+
name: 'update-plugin',
|
|
291
|
+
install: (event) => {
|
|
292
|
+
self.skipWaiting();
|
|
293
|
+
},
|
|
294
|
+
activate: (event) => {
|
|
295
|
+
event.waitUntil(self.clients.claim());
|
|
296
|
+
},
|
|
297
|
+
};
|
|
298
|
+
```
|
|
299
|
+
|
|
278
300
|
## 🎯 Порядок выполнения
|
|
279
301
|
|
|
280
302
|
Плагины выполняются в следующем порядке:
|
package/dist/index.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export interface Logger {
|
|
|
29
29
|
error: (...data: unknown[]) => void;
|
|
30
30
|
debug: (...data: unknown[]) => void;
|
|
31
31
|
}
|
|
32
|
+
export declare function __resetServiceWorkerState(): void;
|
|
32
33
|
interface ServiceWorkerEventHandlers {
|
|
33
34
|
install?: (event: ExtendableEvent) => void | Promise<void>;
|
|
34
35
|
activate?: (event: ExtendableEvent) => void | Promise<void>;
|
|
@@ -42,9 +43,9 @@ export interface ServiceWorkerPlugin extends ServiceWorkerEventHandlers {
|
|
|
42
43
|
name: string;
|
|
43
44
|
order?: number;
|
|
44
45
|
}
|
|
45
|
-
interface ServiceWorkerConfig {
|
|
46
|
-
logger
|
|
47
|
-
onError?: (error: Error |
|
|
46
|
+
export interface ServiceWorkerConfig {
|
|
47
|
+
logger?: Logger;
|
|
48
|
+
onError?: (error: Error | unknown, event: Event, errorType?: ServiceWorkerErrorType) => void;
|
|
48
49
|
}
|
|
49
50
|
export type FetchResponse = Promise<Response | undefined>;
|
|
50
51
|
export declare function createEventHandlers(plugins: ServiceWorkerPlugin[], config: ServiceWorkerConfig): {
|
|
@@ -60,6 +61,6 @@ export declare function createEventHandlers(plugins: ServiceWorkerPlugin[], conf
|
|
|
60
61
|
unhandledrejection: (event: PromiseRejectionEvent) => void;
|
|
61
62
|
rejectionhandled: (event: PromiseRejectionEvent) => void;
|
|
62
63
|
};
|
|
63
|
-
export declare function
|
|
64
|
+
export declare function initServiceWorker(plugins: ServiceWorkerPlugin[], config?: ServiceWorkerConfig): void;
|
|
64
65
|
export {};
|
|
65
66
|
//# 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":"AAcA,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,MAAM,WAAW,MAAM;IACnB,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACvC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,10 @@ export var ServiceWorkerErrorType;
|
|
|
8
8
|
ServiceWorkerErrorType["PLUGIN_ERROR"] = "plugin_error";
|
|
9
9
|
})(ServiceWorkerErrorType || (ServiceWorkerErrorType = {}));
|
|
10
10
|
const sw = self;
|
|
11
|
+
let serviceWorkerInitialized = false;
|
|
12
|
+
export function __resetServiceWorkerState() {
|
|
13
|
+
serviceWorkerInitialized = false;
|
|
14
|
+
}
|
|
11
15
|
export function createEventHandlers(plugins, config) {
|
|
12
16
|
const handlers = {
|
|
13
17
|
install: [],
|
|
@@ -42,10 +46,14 @@ export function createEventHandlers(plugins, config) {
|
|
|
42
46
|
});
|
|
43
47
|
return {
|
|
44
48
|
install: (event) => {
|
|
45
|
-
event.waitUntil(Promise.all(handlers.install.map((handler) => Promise.resolve(
|
|
49
|
+
event.waitUntil(Promise.all(handlers.install.map((handler) => Promise.resolve()
|
|
50
|
+
.then(() => handler(event))
|
|
51
|
+
.catch((error) => config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR)))));
|
|
46
52
|
},
|
|
47
53
|
activate: (event) => {
|
|
48
|
-
event.waitUntil(Promise.all(handlers.activate.map((handler) => Promise.resolve(
|
|
54
|
+
event.waitUntil(Promise.all(handlers.activate.map((handler) => Promise.resolve()
|
|
55
|
+
.then(() => handler(event))
|
|
56
|
+
.catch((error) => config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR)))));
|
|
49
57
|
},
|
|
50
58
|
fetch: (event) => {
|
|
51
59
|
event.respondWith((async () => {
|
|
@@ -69,15 +77,19 @@ export function createEventHandlers(plugins, config) {
|
|
|
69
77
|
handler(event);
|
|
70
78
|
}
|
|
71
79
|
catch (error) {
|
|
72
|
-
config.onError?.(error, event);
|
|
80
|
+
config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR);
|
|
73
81
|
}
|
|
74
82
|
});
|
|
75
83
|
},
|
|
76
84
|
sync: (event) => {
|
|
77
|
-
event.waitUntil(Promise.all(handlers.sync.map((handler) => Promise.resolve(
|
|
85
|
+
event.waitUntil(Promise.all(handlers.sync.map((handler) => Promise.resolve()
|
|
86
|
+
.then(() => handler(event))
|
|
87
|
+
.catch((error) => config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR)))));
|
|
78
88
|
},
|
|
79
89
|
periodicsync: (event) => {
|
|
80
|
-
event.waitUntil(Promise.all(handlers.periodicsync.map((handler) => Promise.resolve(
|
|
90
|
+
event.waitUntil(Promise.all(handlers.periodicsync.map((handler) => Promise.resolve()
|
|
91
|
+
.then(() => handler(event))
|
|
92
|
+
.catch((error) => config.onError?.(error, event, ServiceWorkerErrorType.PLUGIN_ERROR)))));
|
|
81
93
|
},
|
|
82
94
|
push: (event) => {
|
|
83
95
|
event.waitUntil((async () => {
|
|
@@ -96,7 +108,7 @@ export function createEventHandlers(plugins, config) {
|
|
|
96
108
|
config.onError?.(event.error, event, ServiceWorkerErrorType.ERROR);
|
|
97
109
|
}
|
|
98
110
|
catch (error) {
|
|
99
|
-
sw.logger.error('Error in error handler:', error);
|
|
111
|
+
(sw.logger ?? console).error('Error in error handler:', error);
|
|
100
112
|
}
|
|
101
113
|
},
|
|
102
114
|
messageerror: (event) => {
|
|
@@ -104,7 +116,7 @@ export function createEventHandlers(plugins, config) {
|
|
|
104
116
|
config.onError?.(event.data, event, ServiceWorkerErrorType.MESSAGE_ERROR);
|
|
105
117
|
}
|
|
106
118
|
catch (error) {
|
|
107
|
-
sw.logger.error('Error in messageerror handler:', error);
|
|
119
|
+
(sw.logger ?? console).error('Error in messageerror handler:', error);
|
|
108
120
|
}
|
|
109
121
|
},
|
|
110
122
|
unhandledrejection: (event) => {
|
|
@@ -112,7 +124,7 @@ export function createEventHandlers(plugins, config) {
|
|
|
112
124
|
config.onError?.(event.reason, event, ServiceWorkerErrorType.UNHANDLED_REJECTION);
|
|
113
125
|
}
|
|
114
126
|
catch (error) {
|
|
115
|
-
sw.logger.error('Error in unhandledrejection handler:', error);
|
|
127
|
+
(sw.logger ?? console).error('Error in unhandledrejection handler:', error);
|
|
116
128
|
}
|
|
117
129
|
},
|
|
118
130
|
rejectionhandled: (event) => {
|
|
@@ -120,14 +132,29 @@ export function createEventHandlers(plugins, config) {
|
|
|
120
132
|
config.onError?.(event.reason, event, ServiceWorkerErrorType.REJECTION_HANDLED);
|
|
121
133
|
}
|
|
122
134
|
catch (error) {
|
|
123
|
-
sw.logger.error('Error in rejectionhandled handler:', error);
|
|
135
|
+
(sw.logger ?? console).error('Error in rejectionhandled handler:', error);
|
|
124
136
|
}
|
|
125
137
|
},
|
|
126
138
|
};
|
|
127
139
|
}
|
|
128
|
-
export function
|
|
129
|
-
|
|
130
|
-
|
|
140
|
+
export function initServiceWorker(plugins, config) {
|
|
141
|
+
if (serviceWorkerInitialized) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
serviceWorkerInitialized = true;
|
|
145
|
+
sw.logger = config?.logger ?? console;
|
|
146
|
+
const names = new Set();
|
|
147
|
+
for (const plugin of plugins) {
|
|
148
|
+
if (names.has(plugin.name)) {
|
|
149
|
+
(sw.logger ?? console).warn(`Duplicate plugin name: "${plugin.name}"`);
|
|
150
|
+
}
|
|
151
|
+
names.add(plugin.name);
|
|
152
|
+
}
|
|
153
|
+
const handlers = createEventHandlers(plugins, config ?? {});
|
|
154
|
+
self.addEventListener(SW_EVENT_ERROR, handlers.error);
|
|
155
|
+
self.addEventListener(SW_EVENT_MESSAGEERROR, handlers.messageerror);
|
|
156
|
+
self.addEventListener(SW_EVENT_UNHANDLEDREJECTION, handlers.unhandledrejection);
|
|
157
|
+
self.addEventListener(SW_EVENT_REJECTIONHANDLED, handlers.rejectionhandled);
|
|
131
158
|
self.addEventListener(SW_EVENT_INSTALL, handlers.install);
|
|
132
159
|
self.addEventListener(SW_EVENT_ACTIVATE, handlers.activate);
|
|
133
160
|
self.addEventListener(SW_EVENT_FETCH, handlers.fetch);
|
|
@@ -135,9 +162,5 @@ export function initializeServiceWorker(plugins, config) {
|
|
|
135
162
|
self.addEventListener(SW_EVENT_SYNC, handlers.sync);
|
|
136
163
|
self.addEventListener(SW_EVENT_PERIODICSYNC, handlers.periodicsync);
|
|
137
164
|
self.addEventListener(SW_EVENT_PUSH, handlers.push);
|
|
138
|
-
self.addEventListener(SW_EVENT_ERROR, handlers.error);
|
|
139
|
-
self.addEventListener(SW_EVENT_MESSAGEERROR, handlers.messageerror);
|
|
140
|
-
self.addEventListener(SW_EVENT_UNHANDLEDREJECTION, handlers.unhandledrejection);
|
|
141
|
-
self.addEventListener(SW_EVENT_REJECTIONHANDLED, handlers.rejectionhandled);
|
|
142
165
|
}
|
|
143
166
|
//# 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":"AAAA,OAAO,EACH,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,yBAAyB,EACzB,aAAa,EACb,2BAA2B,GAC9B,MAAM,yBAAyB,CAAC;AAEjC,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;AA+BD,MAAM,EAAE,GAAG,IAEV,CAAC;
|
|
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
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Extensible via plugins service worker",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"serviceworker",
|
|
@@ -14,22 +14,29 @@
|
|
|
14
14
|
"main": "dist/index.js",
|
|
15
15
|
"types": "dist/index.d.ts",
|
|
16
16
|
"type": "module",
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"LICENSE",
|
|
20
|
+
"README.md"
|
|
21
|
+
],
|
|
17
22
|
"exports": {
|
|
18
|
-
".": "./dist/index.js"
|
|
19
|
-
"./types": "./dist/index.d.ts"
|
|
23
|
+
".": "./dist/index.js"
|
|
20
24
|
},
|
|
21
25
|
"devDependencies": {
|
|
22
|
-
"@types/node": "^24.10.
|
|
26
|
+
"@types/node": "^24.10.1",
|
|
23
27
|
"@types/serviceworker": "^0.0.153",
|
|
24
28
|
"@types/web": "^0.0.269",
|
|
25
29
|
"prettier": "^3.6.2",
|
|
26
|
-
"typescript": "^5.9.3"
|
|
30
|
+
"typescript": "^5.9.3",
|
|
31
|
+
"vitest": "^3.2.4"
|
|
27
32
|
},
|
|
28
33
|
"dependencies": {
|
|
29
34
|
"@budarin/http-constants": "^1.0.16"
|
|
30
35
|
},
|
|
31
36
|
"scripts": {
|
|
32
37
|
"build": "tsc",
|
|
38
|
+
"test": "vitest run",
|
|
39
|
+
"test:watch": "vitest",
|
|
33
40
|
"pnpm-install": "pnpm install",
|
|
34
41
|
"upgrade-deps": "pnpm upgrade -i",
|
|
35
42
|
"publish-package": "pnpm build && pnpm publish --access=public"
|