@swoff/cli 0.0.1 → 0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,621 @@
1
+ /**
2
+ * Swoff Service Worker Generator
3
+ *
4
+ * Generates a service worker based on swoff.config.json configuration.
5
+ * Can be run as CLI or imported as a module.
6
+ *
7
+ * CLI Usage:
8
+ * node sw-generator.js [--project-root <path>] [--package-dir <path>] [--config-path <path>]
9
+ *
10
+ * Module Usage:
11
+ * import { generate } from './sw-generator.js';
12
+ * generate({ projectRoot: '/path/to/project' });
13
+ */
14
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
15
+ import { fileURLToPath } from "url";
16
+ import { join, dirname } from "path";
17
+ const args = process.argv.slice(2);
18
+ const projectRootArg = args.findIndex((arg) => arg === "--project-root");
19
+ const packageDirArg = args.findIndex((arg) => arg === "--package-dir");
20
+ const configPathArg = args.findIndex((arg) => arg === "--config-path");
21
+ const passedProjectRoot = projectRootArg !== -1 ? args[projectRootArg + 1] : null;
22
+ const passedPackageDir = packageDirArg !== -1 ? args[packageDirArg + 1] : null;
23
+ const passedConfigPath = configPathArg !== -1 ? args[configPathArg + 1] : null;
24
+ const scriptDir = dirname(fileURLToPath(import.meta.url));
25
+ const packageDir = passedPackageDir || join(scriptDir, "..");
26
+ const projectRoot = passedProjectRoot || process.cwd();
27
+ const defaultConfig = {
28
+ enabled: true,
29
+ version: "from-package",
30
+ minSupportedVersion: "0.0.0",
31
+ serviceWorker: {
32
+ autoRegister: true,
33
+ autoUpdate: false,
34
+ defaultStrategy: "cache-first",
35
+ strategies: {},
36
+ },
37
+ features: {
38
+ versionedSw: true,
39
+ offlineReads: true,
40
+ mutationQueue: false,
41
+ backgroundSync: false,
42
+ pwa: true,
43
+ auth: false,
44
+ crossTabSync: true,
45
+ tagInvalidation: true,
46
+ clientRegistration: true,
47
+ indexeddb: false,
48
+ },
49
+ build: {
50
+ outputDir: "dist",
51
+ swFilename: "sw",
52
+ },
53
+ };
54
+ export async function generate(options = {}) {
55
+ const optProjectRoot = options.projectRoot || projectRoot;
56
+ const optPackageDir = options.packageDir || packageDir;
57
+ const optConfigPath = options.configPath || passedConfigPath;
58
+ const pkgPath = join(optProjectRoot, "package.json");
59
+ let pkg = { version: "1.0.0" };
60
+ if (existsSync(pkgPath)) {
61
+ try {
62
+ pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
63
+ }
64
+ catch {
65
+ console.warn("Could not read package.json, using default version");
66
+ }
67
+ }
68
+ const templatePath = join(optPackageDir, "src/lib/templates/sw-template.js");
69
+ let template;
70
+ if (existsSync(templatePath)) {
71
+ template = readFileSync(templatePath, "utf8");
72
+ }
73
+ else {
74
+ template = getDefaultTemplate();
75
+ }
76
+ let userConfig = {};
77
+ let configSource = "defaults";
78
+ const resolvedConfigPath = optConfigPath || join(optProjectRoot, "swoff.config.json");
79
+ if (existsSync(resolvedConfigPath)) {
80
+ try {
81
+ userConfig = JSON.parse(readFileSync(resolvedConfigPath, "utf8"));
82
+ configSource = "JSON";
83
+ }
84
+ catch {
85
+ console.warn("Could not parse swoff.config.json, using defaults");
86
+ }
87
+ }
88
+ else {
89
+ const jsConfigPath = join(optProjectRoot, "swoff.config.js");
90
+ if (existsSync(jsConfigPath)) {
91
+ try {
92
+ const mod = await import(jsConfigPath);
93
+ userConfig = (mod.default || mod);
94
+ configSource = "JavaScript";
95
+ }
96
+ catch {
97
+ console.warn("Could not load swoff.config.js, using defaults");
98
+ }
99
+ }
100
+ }
101
+ const config = { ...defaultConfig, ...userConfig };
102
+ if (!config.enabled) {
103
+ console.log("Swoff config generation disabled. Using custom code mode.");
104
+ return;
105
+ }
106
+ const version = config.version === "from-package" ? pkg.version || "1.0.0" : config.version;
107
+ const sw = generateServiceWorker(config, version);
108
+ const outputDir = join(optProjectRoot, config.build.outputDir);
109
+ const swFilename = config.build.swFilename;
110
+ if (!existsSync(outputDir)) {
111
+ mkdirSync(outputDir, { recursive: true });
112
+ }
113
+ try {
114
+ writeFileSync(join(outputDir, `${swFilename}-v${version}.js`), sw);
115
+ writeFileSync(join(outputDir, "version.json"), JSON.stringify({
116
+ version: version,
117
+ minSupportedVersion: config.minSupportedVersion,
118
+ generatedAt: new Date().toISOString(),
119
+ configEnabled: config.enabled,
120
+ configSource: configSource,
121
+ }, null, 2));
122
+ console.log(`Service worker generated successfully.`);
123
+ console.log(`Output: ${outputDir}/${swFilename}-v${version}.js`);
124
+ console.log(`Version info: ${outputDir}/version.json`);
125
+ console.log(`Configuration source: ${configSource}`);
126
+ }
127
+ catch (err) {
128
+ console.error(`Error writing files: ${err instanceof Error ? err.message : String(err)}`);
129
+ console.log("Make sure the output directory exists:");
130
+ console.log(` mkdir -p ${outputDir}`);
131
+ }
132
+ }
133
+ function generateServiceWorker(config, version) {
134
+ const { serviceWorker, features } = config;
135
+ const baseAssets = ["/", "/index.html"];
136
+ const pwaAssets = features.pwa ? ["/manifest.json"] : [];
137
+ const assetsToCache = [...baseAssets, ...pwaAssets];
138
+ let sw = getDefaultTemplate();
139
+ sw = sw.replace("// [[CACHE_NAME]]", `CACHE_NAME = 'sw-v${version}'`);
140
+ sw = sw.replace("// [[ASSETS_LIST]]", `ASSETS_TO_CACHE = ${JSON.stringify(assetsToCache.map((url) => ({ url, options: {} })), null, 2)}`);
141
+ sw = sw.replace("// [[AUTO_SKIP_WAITING]]", `const AUTO_SKIP_WAITING = ${config.serviceWorker.autoUpdate};`);
142
+ sw = sw.replace("// [[FETCH_HANDLER]]", generateFetchHandler(serviceWorker, features));
143
+ sw = sw.replace("// [[ACTIVATE_HANDLER]]", generateActivateHandler(features.versionedSw));
144
+ sw = sw.replace("// [[INSTALL_HANDLER]]", generateInstallHandler(features));
145
+ sw = sw.replace("// [[MESSAGE_HANDLER]]", generateMessageHandler(features));
146
+ if (features.tagInvalidation) {
147
+ sw = sw.replace("// [[TAG_MANAGEMENT]]", generateTagManagement());
148
+ }
149
+ else {
150
+ sw = sw.replace("// [[TAG_MANAGEMENT]]", "");
151
+ }
152
+ sw = `// [[CONFIG_HEADER]]\n\n${sw}`;
153
+ sw = sw.replace("// [[CONFIG_HEADER]]", generateConfigHeader(config));
154
+ if (features.backgroundSync) {
155
+ sw += `\n\n${generateBackgroundSyncHandler()}`;
156
+ }
157
+ return sw;
158
+ }
159
+ function generateFetchHandler(swConfig, features) {
160
+ const { defaultStrategy, strategies } = swConfig;
161
+ const tagInvalidationCode = features.tagInvalidation ? `
162
+ const tagsHeader = event.request.headers.get("X-SW-Cache-Tags");
163
+ if (tagsHeader) {
164
+ const url = new URL(event.request.url).href;
165
+ const tags = tagsHeader.split(",").map((t) => t.trim());
166
+ await cacheTagUrl(url, tags);
167
+ }` : "";
168
+ const staleTagCode = features.tagInvalidation ? `
169
+ const tagsHeader = request.headers.get("X-SW-Cache-Tags");
170
+ if (tagsHeader) {
171
+ const url = new URL(request.url).href;
172
+ const tags = tagsHeader.split(",").map((t) => t.trim());
173
+ await cacheTagUrl(url, tags);
174
+ }` : "";
175
+ return `
176
+ function isReadRequest(request) {
177
+ const strategy = request.headers.get("X-SW-Cache-Strategy");
178
+ if (strategy === "read") return true;
179
+ if (strategy === "mutation") return false;
180
+ return request.method === "GET" || request.method === "HEAD";
181
+ }
182
+
183
+ function determineCacheStrategy(request, customStrategies, defaultStrategy) {
184
+ const url = request.url;
185
+ for (const [pattern, strategy] of Object.entries(customStrategies)) {
186
+ if (url.includes(pattern.replace("*", ""))) return strategy;
187
+ }
188
+ return defaultStrategy;
189
+ }
190
+
191
+ self.addEventListener("fetch", (event) => {
192
+ if (!isReadRequest(event.request)) return;
193
+
194
+ const strategy = determineCacheStrategy(event.request, ${JSON.stringify(strategies)}, "${defaultStrategy}");
195
+
196
+ if (strategy === "stale-while-revalidate" || event.request.headers.get("X-SW-Stale") === "true") {
197
+ event.respondWith(staleWhileRevalidate(event, event.request));
198
+ return;
199
+ }
200
+
201
+ if (strategy === "network-first") {
202
+ event.respondWith(networkFirst(event, event.request));
203
+ return;
204
+ }
205
+
206
+ if (strategy === "cache-only") {
207
+ event.respondWith(cacheOnly(event, event.request));
208
+ return;
209
+ }
210
+
211
+ if (strategy === "network-only") {
212
+ event.respondWith(networkOnly(event, event.request));
213
+ return;
214
+ }
215
+
216
+ // cache-first (default)
217
+ event.respondWith(cacheFirst(event, event.request));
218
+ });
219
+
220
+ async function cacheFirst(event, request) {
221
+ const cache = await caches.open(CACHE_NAME);
222
+ const runtimeCache = await caches.open(CACHE_NAME_RUNTIME);
223
+ const url = new URL(request.url);
224
+
225
+ const byPath = await cache.match(url.pathname);
226
+ if (byPath) return byPath;
227
+
228
+ const byRequest = await runtimeCache.match(request);
229
+ if (byRequest) return byRequest;
230
+
231
+ if (request.mode === "navigate") {
232
+ const spa = await cache.match("/index.html");
233
+ if (spa) return spa;
234
+ }
235
+
236
+ try {
237
+ const response = await fetch(request);
238
+ if (response.ok) {
239
+ const cloned = response.clone();
240
+ event.waitUntil(
241
+ (async () => {
242
+ await runtimeCache.put(request, cloned);${tagInvalidationCode}
243
+ })(),
244
+ );
245
+ }
246
+ return response;
247
+ } catch {
248
+ return new Response("Offline: content not available", { status: 503 });
249
+ }
250
+ }
251
+
252
+ async function networkFirst(event, request) {
253
+ const runtimeCache = await caches.open(CACHE_NAME_RUNTIME);
254
+
255
+ try {
256
+ const response = await fetch(request);
257
+ if (response.ok) {
258
+ const cloned = response.clone();
259
+ event.waitUntil(
260
+ (async () => {
261
+ await runtimeCache.put(request, cloned);${tagInvalidationCode}
262
+ })(),
263
+ );
264
+ }
265
+ return response;
266
+ } catch {
267
+ const cached = await runtimeCache.match(request);
268
+ if (cached) return cached;
269
+
270
+ if (request.mode === "navigate") {
271
+ const cache = await caches.open(CACHE_NAME);
272
+ const spa = await cache.match("/index.html");
273
+ if (spa) return spa;
274
+ }
275
+
276
+ return new Response("Offline: content not available", { status: 503 });
277
+ }
278
+ }
279
+
280
+ async function staleWhileRevalidate(event, request) {
281
+ const runtimeCache = await caches.open(CACHE_NAME_RUNTIME);
282
+ const cached = await runtimeCache.match(request);
283
+
284
+ if (cached) {
285
+ event.waitUntil(refreshCache(runtimeCache, request));
286
+ return cached;
287
+ }
288
+
289
+ try {
290
+ const response = await fetch(request);
291
+ if (response.ok) {
292
+ await runtimeCache.put(request, response.clone());${staleTagCode}
293
+ }
294
+ return response;
295
+ } catch {
296
+ return new Response("Offline: content not available", { status: 503 });
297
+ }
298
+ }
299
+
300
+ async function refreshCache(cache, request) {
301
+ try {
302
+ const response = await fetch(request);
303
+ if (response.ok) {
304
+ await cache.put(request, response.clone());
305
+ }
306
+ } catch {
307
+ // Background refresh failed - stale cache remains usable
308
+ }
309
+ }
310
+
311
+ async function cacheOnly(event, request) {
312
+ const cache = await caches.open(CACHE_NAME);
313
+ const runtimeCache = await caches.open(CACHE_NAME_RUNTIME);
314
+
315
+ const byPath = await cache.match(new URL(request.url).pathname);
316
+ if (byPath) return byPath;
317
+
318
+ const byRequest = await runtimeCache.match(request);
319
+ if (byRequest) return byRequest;
320
+
321
+ return new Response("Not in cache", { status: 404 });
322
+ }
323
+
324
+ async function networkOnly(event, request) {
325
+ try {
326
+ return await fetch(request);
327
+ } catch {
328
+ return new Response("Network error", { status: 503 });
329
+ }
330
+ }`;
331
+ }
332
+ function generateActivateHandler(versionedSw) {
333
+ return `
334
+ self.addEventListener("activate", (event) => {
335
+ event.waitUntil(
336
+ caches.keys().then((keys) =>
337
+ Promise.all(
338
+ keys.filter((key) => key !== CACHE_NAME && key !== CACHE_NAME_RUNTIME).map((key) => caches.delete(key))
339
+ )
340
+ )
341
+ );
342
+ });`;
343
+ }
344
+ function generateInstallHandler(features) {
345
+ return `
346
+ self.addEventListener("install", (event) => {
347
+ event.waitUntil(
348
+ (async () => {
349
+ const cache = await caches.open(CACHE_NAME);
350
+ let downloaded = 0;
351
+ for (const asset of ASSETS_TO_CACHE) {
352
+ try {
353
+ const request = new Request(asset.url, asset.options);
354
+ await cache.add(request);
355
+ downloaded++;
356
+ const percent = Math.round((downloaded / ASSETS_TO_CACHE.length) * 100);
357
+ const clients = await self.clients.matchAll({ includeUncontrolled: true });
358
+ clients.forEach((client) => {
359
+ client.postMessage({
360
+ type: "SW_PROGRESS",
361
+ percent,
362
+ downloaded,
363
+ total: ASSETS_TO_CACHE.length,
364
+ });
365
+ });
366
+ } catch (err) {
367
+ console.error(\`Failed to cache \${asset.url}:\`, err);
368
+ }
369
+ }
370
+ if (AUTO_SKIP_WAITING) self.skipWaiting();
371
+ })(),
372
+ );
373
+ });`;
374
+ }
375
+ function generateMessageHandler(features) {
376
+ let code = `
377
+ self.addEventListener("message", (event) => {
378
+ if (event.data.type === "SKIP_WAITING") {
379
+ self.skipWaiting();
380
+ }`;
381
+ if (features.tagInvalidation) {
382
+ code += `
383
+ if (event.data.type === "INVALIDATE_TAG" && event.data.tag) {
384
+ event.waitUntil(invalidateByTag(event.data.tag));
385
+ }`;
386
+ }
387
+ code += `
388
+ });`;
389
+ return code;
390
+ }
391
+ function generateTagManagement() {
392
+ return `
393
+ const TAG_DB_NAME = "swoff-cache-tags";
394
+ const TAG_STORE_NAME = "tags";
395
+
396
+ function openTagDB() {
397
+ return new Promise((resolve, reject) => {
398
+ const request = indexedDB.open(TAG_DB_NAME, 1);
399
+ request.onupgradeneeded = (e) => {
400
+ const db = e.target.result;
401
+ if (!db.objectStoreNames.contains(TAG_STORE_NAME)) {
402
+ const store = db.createObjectStore(TAG_STORE_NAME, { keyPath: "url" });
403
+ store.createIndex("by-tag", "tags", { multiEntry: true });
404
+ }
405
+ };
406
+ request.onsuccess = (e) => resolve(e.target.result);
407
+ request.onerror = (e) => reject(e.target.error);
408
+ });
409
+ }
410
+
411
+ async function cacheTagUrl(url, tags) {
412
+ const db = await openTagDB();
413
+ const tx = db.transaction(TAG_STORE_NAME, "readwrite");
414
+ const store = tx.objectStore(TAG_STORE_NAME);
415
+ store.put({ url, tags });
416
+ await new Promise((resolve, reject) => {
417
+ tx.oncomplete = () => resolve();
418
+ tx.onerror = () => reject(tx.error);
419
+ });
420
+ }
421
+
422
+ async function invalidateByTag(tag) {
423
+ const db = await openTagDB();
424
+ const tx = db.transaction(TAG_STORE_NAME, "readonly");
425
+ const store = tx.objectStore(TAG_STORE_NAME);
426
+ const index = store.index("by-tag");
427
+ const entries = await new Promise((resolve, reject) => {
428
+ const request = index.getAll(tag);
429
+ request.onsuccess = () => resolve(request.result);
430
+ request.onerror = () => reject(request.error);
431
+ });
432
+ await db.close();
433
+
434
+ const runtimeCache = await caches.open(CACHE_NAME_RUNTIME);
435
+ for (const entry of entries) {
436
+ await runtimeCache.delete(entry.url);
437
+ }
438
+
439
+ const writeDb = await openTagDB();
440
+ const writeTx = writeDb.transaction(TAG_STORE_NAME, "readwrite");
441
+ const writeStore = writeTx.objectStore(TAG_STORE_NAME);
442
+ for (const entry of entries) {
443
+ writeStore.delete(entry.url);
444
+ }
445
+ await new Promise((resolve, reject) => {
446
+ writeTx.oncomplete = () => resolve();
447
+ writeTx.onerror = () => reject(writeTx.error);
448
+ });
449
+
450
+ const clients = await self.clients.matchAll();
451
+ clients.forEach((client) => {
452
+ client.postMessage({ type: "TAG_INVALIDATED", tag });
453
+ });
454
+ }`;
455
+ }
456
+ function generateBackgroundSyncHandler() {
457
+ return `
458
+ self.addEventListener("sync", (event) => {
459
+ if (event.tag === "sync-mutations") {
460
+ event.waitUntil(processMutationQueueInSW());
461
+ }
462
+ });
463
+
464
+ async function processMutationQueueInSW() {
465
+ const SW_DB_NAME = "swoff-queue";
466
+ const SW_STORE_NAME = "mutations";
467
+ const SW_MAX_RETRIES = 5;
468
+
469
+ let succeeded = 0;
470
+ let failed = 0;
471
+ const tagsToInvalidate = new Set();
472
+
473
+ try {
474
+ const db = await new Promise((resolve, reject) => {
475
+ const request = indexedDB.open(SW_DB_NAME, 1);
476
+ request.onupgradeneeded = (e) => {
477
+ const db = e.target.result;
478
+ if (!db.objectStoreNames.contains(SW_STORE_NAME)) {
479
+ const store = db.createObjectStore(SW_STORE_NAME, { keyPath: "id" });
480
+ store.createIndex("by-timestamp", "timestamp");
481
+ }
482
+ };
483
+ request.onsuccess = (e) => resolve(e.target.result);
484
+ request.onerror = (e) => reject(e.target.error);
485
+ });
486
+
487
+ const tx = db.transaction(SW_STORE_NAME, "readonly");
488
+ const store = tx.objectStore(SW_STORE_NAME);
489
+ const index = store.index("by-timestamp");
490
+ const queue = await new Promise((resolve, reject) => {
491
+ const request = index.getAll();
492
+ request.onsuccess = () => resolve(request.result);
493
+ request.onerror = () => reject(request.error);
494
+ });
495
+
496
+ for (const item of queue) {
497
+ if (item.retryCount >= SW_MAX_RETRIES) {
498
+ await removeFromSWQueue(db, item.id);
499
+ failed++;
500
+ continue;
501
+ }
502
+ try {
503
+ const response = await fetch(item.url, {
504
+ method: item.method,
505
+ headers: { "Content-Type": "application/json", ...item.headers },
506
+ body: JSON.stringify(item.body),
507
+ });
508
+ if (!response.ok) throw new Error(\`HTTP \${response.status}\`);
509
+
510
+ if (item.tags) {
511
+ item.tags.forEach((tag) => tagsToInvalidate.add(tag));
512
+ }
513
+
514
+ await removeFromSWQueue(db, item.id);
515
+ succeeded++;
516
+ } catch {
517
+ item.retryCount++;
518
+ await updateInSWQueue(db, item);
519
+ failed++;
520
+ }
521
+ }
522
+ } catch (err) {
523
+ console.error("Background sync failed:", err);
524
+ }
525
+
526
+ for (const tag of tagsToInvalidate) {
527
+ await invalidateByTag(tag);
528
+ }
529
+
530
+ const clients = await self.clients.matchAll();
531
+ for (const client of clients) {
532
+ client.postMessage({
533
+ type: "BACKGROUND_SYNC_COMPLETE",
534
+ detail: { succeeded, failed, tags: [...tagsToInvalidate] },
535
+ });
536
+ }
537
+ }
538
+
539
+ async function removeFromSWQueue(db, id) {
540
+ const tx = db.transaction(SW_STORE_NAME, "readwrite");
541
+ tx.objectStore(SW_STORE_NAME).delete(id);
542
+ await new Promise((resolve, reject) => {
543
+ tx.oncomplete = () => resolve();
544
+ tx.onerror = () => reject(tx.error);
545
+ });
546
+ }
547
+
548
+ async function updateInSWQueue(db, item) {
549
+ const tx = db.transaction(SW_STORE_NAME, "readwrite");
550
+ tx.objectStore(SW_STORE_NAME).put(item);
551
+ await new Promise((resolve, reject) => {
552
+ tx.oncomplete = () => resolve();
553
+ tx.onerror = () => reject(tx.error);
554
+ });
555
+ }`;
556
+ }
557
+ function generateConfigHeader(config) {
558
+ return `/**
559
+ * Swoff Service Worker - Auto-Generated
560
+ * Generated from swoff.config.json
561
+ * DO NOT EDIT MANUALLY
562
+ * Version: ${config.version}
563
+ * Features: versionedSw=${config.features.versionedSw}, offlineReads=${config.features.offlineReads}, mutationQueue=${config.features.mutationQueue}, backgroundSync=${config.features.backgroundSync}, tagInvalidation=${config.features.tagInvalidation}
564
+ * Default Strategy: ${config.serviceWorker.defaultStrategy}
565
+ * See: https://swoff.netlify.app/docs
566
+ */`;
567
+ }
568
+ function getDefaultTemplate() {
569
+ return `let CACHE_NAME = "";
570
+ let ASSETS_TO_CACHE = [];
571
+
572
+ // [[CACHE_NAME]]
573
+ // [[ASSETS_LIST]]
574
+ // [[AUTO_SKIP_WAITING]]
575
+
576
+ const CACHE_NAME_RUNTIME = "swoff-runtime";
577
+
578
+ // [[INSTALL_HANDLER]]
579
+ // [[ACTIVATE_HANDLER]]
580
+ // [[MESSAGE_HANDLER]]
581
+ // [[FETCH_HANDLER]]
582
+ // [[TAG_MANAGEMENT]]
583
+
584
+ const SWOFF = {
585
+ cache: {
586
+ async get(key) {
587
+ const cache = await caches.open(CACHE_NAME);
588
+ return cache.match(key);
589
+ },
590
+ async put(request, response) {
591
+ const cache = await caches.open(CACHE_NAME);
592
+ await cache.put(request, response);
593
+ },
594
+ async delete(request) {
595
+ const cache = await caches.open(CACHE_NAME);
596
+ return cache.delete(request);
597
+ }
598
+ },
599
+ network: {
600
+ async fetch(request, options = {}) {
601
+ try {
602
+ return await fetch(request, options);
603
+ } catch (error) {
604
+ throw new Error(\`Network request failed: \${error.message}\`);
605
+ }
606
+ }
607
+ }
608
+ };
609
+
610
+ if (typeof self !== 'undefined') {
611
+ self.SWOFF = SWOFF;
612
+ }`;
613
+ }
614
+ if (import.meta.url === `file://${process.argv[1]}`) {
615
+ generate().catch((err) => {
616
+ console.error(err);
617
+ process.exit(1);
618
+ });
619
+ }
620
+ export default { generate };
621
+ //# sourceMappingURL=sw-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-generator.js","sourceRoot":"","sources":["../../../src/lib/generators/sw-generator.ts"],"names":[],"mappings":"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"}