@swoff/cli 0.0.2 → 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.
package/bin/swoff CHANGED
File without changes
package/dist/index.js CHANGED
@@ -10,13 +10,22 @@
10
10
  * swoff add <feature> Add specific feature files
11
11
  * swoff --help Show help
12
12
  */
13
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
13
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync } from "fs";
14
14
  import { join, dirname } from "path";
15
15
  import { fileURLToPath } from "url";
16
16
  import { spawn } from "child_process";
17
17
  const __dirname = dirname(fileURLToPath(import.meta.url));
18
18
  const packageDir = join(__dirname, "..");
19
19
  const projectRoot = process.cwd();
20
+ const cliVersion = (() => {
21
+ try {
22
+ const pkg = JSON.parse(readFileSync(join(packageDir, "package.json"), "utf8"));
23
+ return pkg.version || "unknown";
24
+ }
25
+ catch {
26
+ return "unknown";
27
+ }
28
+ })();
20
29
  const colors = {
21
30
  reset: "\x1b[0m",
22
31
  bright: "\x1b[1m",
@@ -59,6 +68,16 @@ const commands = {
59
68
  usage: "swoff add <feature>",
60
69
  examples: ["swoff add offline", "swoff add pwa", "swoff add mutation-queue"],
61
70
  },
71
+ info: {
72
+ description: "Show Swoff configuration summary",
73
+ usage: "swoff info",
74
+ examples: ["swoff info"],
75
+ },
76
+ clean: {
77
+ description: "Remove old versioned service worker files",
78
+ usage: "swoff clean",
79
+ examples: ["swoff clean"],
80
+ },
62
81
  help: {
63
82
  description: "Show help information",
64
83
  usage: "swoff help [command]",
@@ -100,6 +119,7 @@ async function initCommand(framework) {
100
119
  version: "from-package",
101
120
  minSupportedVersion: "1.0.0",
102
121
  serviceWorker: {
122
+ autoRegister: true,
103
123
  autoUpdate: false,
104
124
  defaultStrategy: "cache-first",
105
125
  strategies: {
@@ -117,13 +137,17 @@ async function initCommand(framework) {
117
137
  crossTabSync: true,
118
138
  tagInvalidation: true,
119
139
  clientRegistration: true,
140
+ indexeddb: false,
141
+ },
142
+ pwa: {
143
+ preventDefaultInstall: false,
120
144
  },
121
145
  build: {
122
146
  outputDir: "dist",
123
147
  swFilename: "sw",
124
148
  },
125
149
  };
126
- if (framework === "react-vite" || framework === "react-nextjs") {
150
+ if (framework === "react-vite" || framework === "nextjs") {
127
151
  defaultConfig.features.mutationQueue = true;
128
152
  defaultConfig.serviceWorker.strategies = {
129
153
  "/api/*": "network-first",
@@ -142,7 +166,7 @@ async function initCommand(framework) {
142
166
  const configPath = join(projectRoot, "swoff.config.json");
143
167
  writeFileSync(configPath, JSON.stringify(defaultConfig, null, 2));
144
168
  log.success(`Created swoff.config.json`);
145
- const dirs = ["src/hooks", "src/components", "src/utils", "swoff"];
169
+ const dirs = ["swoff"];
146
170
  for (const dir of dirs) {
147
171
  const dirPath = join(projectRoot, dir);
148
172
  if (!existsSync(dirPath)) {
@@ -151,11 +175,13 @@ async function initCommand(framework) {
151
175
  }
152
176
  }
153
177
  log.success("Swoff initialized successfully!");
154
- await generateCommand({ swOnly: false, filesOnly: false });
155
- log.info(`\nNext steps:`);
178
+ log.info(`Next steps:`);
156
179
  log.help("1. Review swoff.config.json and customize as needed");
157
180
  log.help("2. Run: swoff generate");
158
- log.help("3. Read the docs: https://swoff.netlify.app/docs");
181
+ log.help("3. Import the SW injector in your app entry point:");
182
+ log.help(" import { initServiceWorker, shouldRegisterSW } from './swoff/sw-injector.js';");
183
+ log.help(" if (shouldRegisterSW()) initServiceWorker();");
184
+ log.help("4. Read the docs: https://swoff.netlify.app/docs");
159
185
  }
160
186
  async function generateCommand(options = {}) {
161
187
  const { swOnly = false, filesOnly = false, language } = options;
@@ -183,7 +209,11 @@ async function generateCommand(options = {}) {
183
209
  if (!filesOnly) {
184
210
  log.info("Generating service worker...");
185
211
  try {
186
- await runGenerator("sw-generator.js");
212
+ await runGenerator("sw-generator.js", [
213
+ "--project-root", projectRoot,
214
+ "--package-dir", packageDir,
215
+ "--config-path", configPath,
216
+ ]);
187
217
  }
188
218
  catch (err) {
189
219
  log.error(`Service worker generation failed: ${err instanceof Error ? err.message : String(err)}`);
@@ -204,6 +234,16 @@ async function generateCommand(options = {}) {
204
234
  }
205
235
  }
206
236
  log.success("Generation complete!");
237
+ log.info(`Next steps:`);
238
+ log.help("1. Import the SW injector in your app entry point:");
239
+ log.help(" import { initServiceWorker, shouldRegisterSW } from './swoff/sw-injector.js';");
240
+ log.help(" if (shouldRegisterSW()) initServiceWorker();");
241
+ log.help("2. Use the fetch wrapper for API calls:");
242
+ log.help(" import { fetchWithCache } from './swoff/fetch-wrapper.js';");
243
+ log.help(" const data = await fetchWithCache('/api/data', { tags: ['data'] }).then(r => r.json());");
244
+ log.help("3. Add to your build script:");
245
+ log.help(" \"build\": \"your-build && node swoff/sw-generator.js\"");
246
+ log.help("4. Read the docs: https://swoff.netlify.app/docs");
207
247
  }
208
248
  function runGenerator(generatorName, extraArgs = []) {
209
249
  return new Promise((resolve, reject) => {
@@ -251,10 +291,98 @@ async function validateCommand() {
251
291
  return;
252
292
  }
253
293
  log.info(`Validating ${configPath}...`);
294
+ const errors = [];
254
295
  const requiredFields = ["enabled", "version", "serviceWorker", "features", "build"];
255
- const missingFields = requiredFields.filter((field) => !config[field]);
296
+ const missingFields = requiredFields.filter((field) => config[field] === undefined || config[field] === null);
256
297
  if (missingFields.length > 0) {
257
- log.error(`Missing required fields: ${missingFields.join(", ")}`);
298
+ errors.push(`Missing required fields: ${missingFields.join(", ")}`);
299
+ }
300
+ if (config.serviceWorker) {
301
+ const sw = config.serviceWorker;
302
+ const validStrategies = ["cache-first", "network-first", "stale-while-revalidate", "cache-only", "network-only"];
303
+ if (sw.autoRegister !== undefined && typeof sw.autoRegister !== "boolean") {
304
+ errors.push(`serviceWorker.autoRegister must be a boolean`);
305
+ }
306
+ if (sw.autoUpdate !== undefined && typeof sw.autoUpdate !== "boolean") {
307
+ errors.push(`serviceWorker.autoUpdate must be a boolean`);
308
+ }
309
+ if (sw.defaultStrategy && !validStrategies.includes(sw.defaultStrategy)) {
310
+ errors.push(`Invalid defaultStrategy "${sw.defaultStrategy}". Must be one of: ${validStrategies.join(", ")}`);
311
+ }
312
+ if (sw.strategies && typeof sw.strategies === "object") {
313
+ const strategies = sw.strategies;
314
+ for (const [pattern, strategy] of Object.entries(strategies)) {
315
+ if (!validStrategies.includes(strategy)) {
316
+ errors.push(`Invalid strategy "${strategy}" for pattern "${pattern}". Must be one of: ${validStrategies.join(", ")}`);
317
+ }
318
+ }
319
+ }
320
+ }
321
+ if (config.features) {
322
+ const features = config.features;
323
+ const knownFeatures = ["versionedSw", "offlineReads", "mutationQueue", "backgroundSync", "pwa", "auth", "crossTabSync", "tagInvalidation", "clientRegistration", "indexeddb"];
324
+ for (const [key, value] of Object.entries(features)) {
325
+ if (!knownFeatures.includes(key)) {
326
+ errors.push(`Unknown feature "${key}"`);
327
+ }
328
+ if (typeof value !== "boolean") {
329
+ errors.push(`Feature "${key}" must be a boolean, got ${typeof value}`);
330
+ }
331
+ }
332
+ }
333
+ if (config.version && typeof config.version === "string" && config.version !== "from-package") {
334
+ const semverRegex = /^\d+\.\d+\.\d+$/;
335
+ if (!semverRegex.test(config.version)) {
336
+ errors.push(`Invalid version "${config.version}". Must be "from-package" or semver (e.g., "1.0.0")`);
337
+ }
338
+ }
339
+ if (config.minSupportedVersion && typeof config.minSupportedVersion === "string") {
340
+ const semverRegex = /^\d+\.\d+\.\d+$/;
341
+ if (!semverRegex.test(config.minSupportedVersion)) {
342
+ errors.push(`Invalid minSupportedVersion "${config.minSupportedVersion}". Must be semver (e.g., "1.0.0")`);
343
+ }
344
+ }
345
+ if (config.build) {
346
+ const build = config.build;
347
+ if (build.outputDir && typeof build.outputDir !== "string") {
348
+ errors.push(`build.outputDir must be a string`);
349
+ }
350
+ if (build.swFilename && typeof build.swFilename !== "string") {
351
+ errors.push(`build.swFilename must be a string`);
352
+ }
353
+ }
354
+ if (config.pwa) {
355
+ const pwa = config.pwa;
356
+ if (pwa.preventDefaultInstall !== undefined && typeof pwa.preventDefaultInstall !== "boolean") {
357
+ errors.push(`pwa.preventDefaultInstall must be a boolean`);
358
+ }
359
+ }
360
+ if (config.database) {
361
+ const db = config.database;
362
+ if (db.name && typeof db.name !== "string") {
363
+ errors.push(`database.name must be a string`);
364
+ }
365
+ if (db.name && typeof db.name === "string" && !/^[a-zA-Z0-9-_]+$/.test(db.name)) {
366
+ errors.push(`database.name "${db.name}" must match pattern ^[a-zA-Z0-9-_]+$`);
367
+ }
368
+ if (db.stores && !Array.isArray(db.stores)) {
369
+ errors.push(`database.stores must be an array`);
370
+ }
371
+ if (db.stores && Array.isArray(db.stores)) {
372
+ for (const store of db.stores) {
373
+ if (typeof store !== "string") {
374
+ errors.push(`database.stores must contain only strings`);
375
+ break;
376
+ }
377
+ if (!/^[a-zA-Z0-9-_]+$/.test(store)) {
378
+ errors.push(`database.store "${store}" must match pattern ^[a-zA-Z0-9-_]+$`);
379
+ }
380
+ }
381
+ }
382
+ }
383
+ if (errors.length > 0) {
384
+ log.error(`Validation failed with ${errors.length} error(s):`);
385
+ errors.forEach((e) => log.help(` - ${e}`));
258
386
  return;
259
387
  }
260
388
  log.success("Configuration is valid!");
@@ -276,11 +404,16 @@ async function addCommand(feature) {
276
404
  "cross-tab": { crossTabSync: true },
277
405
  crosstab: { crossTabSync: true },
278
406
  auth: { auth: true },
407
+ "tag-invalidation": { tagInvalidation: true },
408
+ taginvalidation: { tagInvalidation: true },
409
+ "background-sync": { backgroundSync: true },
410
+ backgroundsync: { backgroundSync: true },
411
+ indexeddb: { indexeddb: true },
279
412
  };
280
413
  const configUpdate = featureMap[feature.toLowerCase()];
281
414
  if (!configUpdate) {
282
415
  log.error(`Unknown feature: ${feature}`);
283
- log.info(`Available features: offline, mutation-queue, pwa, cross-tab, auth`);
416
+ log.info(`Available features: offline, mutation-queue, pwa, cross-tab, auth, tag-invalidation, background-sync, indexeddb`);
284
417
  return;
285
418
  }
286
419
  let config = null;
@@ -303,6 +436,7 @@ async function addCommand(feature) {
303
436
  version: "from-package",
304
437
  minSupportedVersion: "0.0.0",
305
438
  serviceWorker: {
439
+ autoRegister: true,
306
440
  autoUpdate: false,
307
441
  defaultStrategy: "cache-first",
308
442
  strategies: {},
@@ -317,6 +451,10 @@ async function addCommand(feature) {
317
451
  crossTabSync: false,
318
452
  tagInvalidation: true,
319
453
  clientRegistration: true,
454
+ indexeddb: false,
455
+ },
456
+ pwa: {
457
+ preventDefaultInstall: false,
320
458
  },
321
459
  build: {
322
460
  outputDir: "dist",
@@ -346,7 +484,6 @@ function detectProjectLanguage() {
346
484
  if (existsSync(srcDir)) {
347
485
  const tsFiles = ["ts", "tsx"].some((ext) => {
348
486
  try {
349
- const { readdirSync } = require("fs");
350
487
  return readdirSync(srcDir, { withFileTypes: true }).some((entry) => entry.isFile() && entry.name.endsWith(`.${ext}`));
351
488
  }
352
489
  catch {
@@ -358,7 +495,115 @@ function detectProjectLanguage() {
358
495
  }
359
496
  return "js";
360
497
  }
498
+ async function infoCommand() {
499
+ log.header("Swoff Configuration Summary");
500
+ const configFiles = ["swoff.config.json", "swoff.config.js"];
501
+ let config = null;
502
+ for (const file of configFiles) {
503
+ const path = join(projectRoot, file);
504
+ if (existsSync(path)) {
505
+ if (file.endsWith(".json")) {
506
+ config = JSON.parse(readFileSync(path, "utf8"));
507
+ }
508
+ break;
509
+ }
510
+ }
511
+ if (!config) {
512
+ log.warn('No swoff.config.json found. Run "swoff init" first.');
513
+ return;
514
+ }
515
+ const sw = config.serviceWorker;
516
+ const features = config.features;
517
+ const build = config.build;
518
+ log.info(`Version: ${config.version}`);
519
+ log.info(`SW Version: ${config.version === "from-package" ? "(from package.json)" : config.version}`);
520
+ log.info(`Default Strategy: ${sw.defaultStrategy}`);
521
+ log.info(`Auto Register: ${sw.autoRegister}`);
522
+ log.info(`Auto Update: ${sw.autoUpdate}`);
523
+ const enabledFeatures = Object.entries(features)
524
+ .filter(([_, v]) => v)
525
+ .map(([k]) => k);
526
+ log.info(`\nFeatures Enabled:`);
527
+ enabledFeatures.forEach((f) => log.help(` ${f}`));
528
+ log.info(`\nGenerated Files:`);
529
+ const swoffDir = join(projectRoot, "swoff");
530
+ if (existsSync(swoffDir)) {
531
+ const files = readdirSync(swoffDir);
532
+ files.forEach((f) => log.help(` swoff/${f}`));
533
+ }
534
+ const manifestPath = join(projectRoot, "public", "manifest.json");
535
+ if (existsSync(manifestPath)) {
536
+ log.help(" public/manifest.json");
537
+ }
538
+ const outputDir = build.outputDir || "dist";
539
+ const swFilename = build.swFilename || "sw";
540
+ const versionPath = join(projectRoot, outputDir, "version.json");
541
+ if (existsSync(versionPath)) {
542
+ const versionInfo = JSON.parse(readFileSync(versionPath, "utf8"));
543
+ log.info(`\nService Worker: ${outputDir}/${swFilename}-v${versionInfo.version}.js`);
544
+ log.info(`Version Info: ${outputDir}/version.json`);
545
+ }
546
+ }
547
+ async function cleanCommand() {
548
+ log.header("Cleaning Old Service Worker Files");
549
+ const configFiles = ["swoff.config.json", "swoff.config.js"];
550
+ let config = null;
551
+ for (const file of configFiles) {
552
+ const path = join(projectRoot, file);
553
+ if (existsSync(path)) {
554
+ if (file.endsWith(".json")) {
555
+ config = JSON.parse(readFileSync(path, "utf8"));
556
+ }
557
+ break;
558
+ }
559
+ }
560
+ if (!config) {
561
+ log.warn('No swoff.config.json found. Run "swoff init" first.');
562
+ return;
563
+ }
564
+ const build = config.build;
565
+ const outputDir = build.outputDir || "dist";
566
+ const swFilename = build.swFilename || "sw";
567
+ const distPath = join(projectRoot, outputDir);
568
+ if (!existsSync(distPath)) {
569
+ log.info(`No ${outputDir}/ directory found. Nothing to clean.`);
570
+ return;
571
+ }
572
+ const currentVersionPath = join(distPath, "version.json");
573
+ let currentVersion = null;
574
+ if (existsSync(currentVersionPath)) {
575
+ const versionInfo = JSON.parse(readFileSync(currentVersionPath, "utf8"));
576
+ currentVersion = versionInfo.version;
577
+ }
578
+ const files = readdirSync(distPath);
579
+ const swPattern = new RegExp(`^${swFilename}-v\\d+\\.\\d+\\.\\d+\\.js$`);
580
+ const swFiles = files.filter((f) => swPattern.test(f));
581
+ if (swFiles.length === 0) {
582
+ log.info("No versioned service worker files found.");
583
+ return;
584
+ }
585
+ let deleted = 0;
586
+ for (const file of swFiles) {
587
+ const versionMatch = file.match(/v(\d+\.\d+\.\d+)\.js$/);
588
+ if (versionMatch && versionMatch[1] !== currentVersion) {
589
+ const filePath = join(distPath, file);
590
+ import("fs").then((fs) => fs.unlinkSync(filePath));
591
+ log.info(`Deleted: ${outputDir}/${file}`);
592
+ deleted++;
593
+ }
594
+ }
595
+ if (deleted === 0) {
596
+ log.info("No old service worker files to clean.");
597
+ }
598
+ else {
599
+ log.success(`Cleaned ${deleted} old service worker file(s).`);
600
+ }
601
+ }
361
602
  async function main() {
603
+ if (command === "--version" || command === "-v") {
604
+ console.log(cliVersion);
605
+ process.exit(0);
606
+ }
362
607
  if (!command) {
363
608
  showHelp();
364
609
  process.exit(0);
@@ -384,7 +629,7 @@ async function main() {
384
629
  if (!feature) {
385
630
  log.error("Please specify a feature to add");
386
631
  log.info("Usage: swoff add <feature>");
387
- log.info("Features: offline, mutation-queue, pwa, cross-tab, auth");
632
+ log.info("Features: offline, mutation-queue, pwa, cross-tab, auth, tag-invalidation, background-sync, indexeddb");
388
633
  process.exit(1);
389
634
  }
390
635
  await addCommand(feature);
@@ -395,6 +640,12 @@ async function main() {
395
640
  case "-h":
396
641
  showHelp(options[0]);
397
642
  break;
643
+ case "info":
644
+ await infoCommand();
645
+ break;
646
+ case "clean":
647
+ await cleanCommand();
648
+ break;
398
649
  default:
399
650
  log.error(`Unknown command: ${command}`);
400
651
  log.info(`Run "swoff help" for available commands`);
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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"}