@swoff/cli 0.3.15 → 0.4.1

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.
Files changed (61) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/commands/generate-guide.js +4 -6
  3. package/dist/lib/commands/generate-guide.js.map +1 -1
  4. package/dist/lib/commands/generate.js +6 -5
  5. package/dist/lib/commands/generate.js.map +1 -1
  6. package/dist/lib/commands/init.js +13 -38
  7. package/dist/lib/commands/init.js.map +1 -1
  8. package/dist/lib/config/minimal-config.js +1 -1
  9. package/dist/lib/config/minimal-config.js.map +1 -1
  10. package/dist/lib/config/validator.js +24 -4
  11. package/dist/lib/config/validator.js.map +1 -1
  12. package/dist/lib/generators/file-generators/client-injector-bundle.js +1 -1
  13. package/dist/lib/generators/file-generators/client-injector-bundle.js.map +1 -1
  14. package/dist/lib/generators/file-generators/context.js +3 -2
  15. package/dist/lib/generators/file-generators/context.js.map +1 -1
  16. package/dist/lib/generators/file-generators/generate-framework-adapters.js +1 -1
  17. package/dist/lib/generators/file-generators/generate-framework-adapters.js.map +1 -1
  18. package/dist/lib/generators/file-generators/sw-generator-build.js +24 -10
  19. package/dist/lib/generators/file-generators/sw-generator-build.js.map +1 -1
  20. package/dist/lib/generators/file-generators/sw-injector.js +1 -0
  21. package/dist/lib/generators/file-generators/sw-injector.js.map +1 -1
  22. package/dist/lib/generators/file-generators/sw-template.js +1 -1
  23. package/dist/lib/generators/sw-build-utils.js +17 -3
  24. package/dist/lib/generators/sw-build-utils.js.map +1 -1
  25. package/dist/lib/generators/sw-generator.js +5 -5
  26. package/dist/lib/generators/sw-generator.js.map +1 -1
  27. package/dist/lib/generators/sw-sections/activate-handler.js +5 -3
  28. package/dist/lib/generators/sw-sections/activate-handler.js.map +1 -1
  29. package/dist/lib/generators/sw-sections/assemble-sw.js +0 -1
  30. package/dist/lib/generators/sw-sections/assemble-sw.js.map +1 -1
  31. package/dist/lib/generators/sw-sections/background-precache.js +58 -31
  32. package/dist/lib/generators/sw-sections/background-precache.js.map +1 -1
  33. package/dist/lib/generators/sw-sections/default-template.js +7 -3
  34. package/dist/lib/generators/sw-sections/default-template.js.map +1 -1
  35. package/dist/lib/generators/sw-sections/fetch-handler.js +1 -0
  36. package/dist/lib/generators/sw-sections/fetch-handler.js.map +1 -1
  37. package/dist/lib/generators/sw-sections/message-handler.js +5 -4
  38. package/dist/lib/generators/sw-sections/message-handler.js.map +1 -1
  39. package/dist/lib/generators/sw-sections/shared.js +0 -2
  40. package/dist/lib/generators/sw-sections/shared.js.map +1 -1
  41. package/dist/lib/generators/swoff-files-generator.js +2 -2
  42. package/dist/lib/generators/swoff-files-generator.js.map +1 -1
  43. package/dist/lib/shared/config-types.js +3 -2
  44. package/dist/lib/shared/config-types.js.map +1 -1
  45. package/dist/lib/utils/detect-framework.js +3 -27
  46. package/dist/lib/utils/detect-framework.js.map +1 -1
  47. package/dist/runtime/client-injector-bundle.js +16 -23
  48. package/dist/runtime/client-injector-bundle.js.map +1 -1
  49. package/dist/runtime/client-injector.js +0 -2
  50. package/dist/runtime/client-injector.js.map +1 -1
  51. package/dist/runtime/sw-injector.js +6 -19
  52. package/dist/runtime/sw-injector.js.map +1 -1
  53. package/dist/runtime/type-definitions.js +0 -5
  54. package/dist/runtime/type-definitions.js.map +1 -1
  55. package/package.json +1 -1
  56. package/templates/react/usePrecacheProgress.jsx +20 -0
  57. package/templates/react/usePrecacheProgress.tsx +20 -0
  58. package/dist/lib/generators/sw-sections/install-handler.js +0 -55
  59. package/dist/lib/generators/sw-sections/install-handler.js.map +0 -1
  60. package/templates/react/useSWUpdate.jsx +0 -31
  61. package/templates/react/useSWUpdate.tsx +0 -37
@@ -1 +1 @@
1
- {"version":3,"file":"config-types.js","sourceRoot":"","sources":["../../../src/lib/shared/config-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-types.js","sourceRoot":"","sources":["../../../src/lib/shared/config-types.ts"],"names":[],"mappings":"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"}
@@ -21,32 +21,10 @@ const BASE_FRAMEWORKS = [
21
21
  ["vue", "vue"],
22
22
  ["svelte", "svelte"],
23
23
  ];
24
- function probeBackend(projectRoot) {
25
- if (existsSync(join(projectRoot, "composer.json")))
26
- return "laravel";
27
- if (existsSync(join(projectRoot, "manage.py")))
28
- return "django";
29
- if (existsSync(join(projectRoot, "app.py")))
30
- return "flask";
31
- const reqPath = join(projectRoot, "requirements.txt");
32
- if (existsSync(reqPath)) {
33
- const req = readFileSync(reqPath, "utf8");
34
- if (/^flask\b/im.test(req))
35
- return "flask";
36
- if (/^django\b/im.test(req))
37
- return "django";
38
- }
39
- if (existsSync(join(projectRoot, "Gemfile")))
40
- return "rails";
41
- if (existsSync(join(projectRoot, "go.mod")))
42
- return "go";
43
- return null;
44
- }
45
24
  export function detectFramework(projectRoot) {
46
25
  const pkgPath = join(projectRoot, "package.json");
47
26
  if (!existsSync(pkgPath)) {
48
- const backend = probeBackend(projectRoot);
49
- return backend ?? "vanilla";
27
+ return "no-bundler";
50
28
  }
51
29
  let deps = {};
52
30
  let devDeps = {};
@@ -56,8 +34,7 @@ export function detectFramework(projectRoot) {
56
34
  devDeps = pkg.devDependencies || {};
57
35
  }
58
36
  catch {
59
- const backend = probeBackend(projectRoot);
60
- return backend ?? "vanilla";
37
+ return "no-bundler";
61
38
  }
62
39
  const allDeps = { ...deps, ...devDeps };
63
40
  for (const [dep, name] of META_FRAMEWORKS) {
@@ -70,7 +47,6 @@ export function detectFramework(projectRoot) {
70
47
  }
71
48
  if (REACT_DEPS.some((d) => allDeps[d]))
72
49
  return "react-spa";
73
- const backend = probeBackend(projectRoot);
74
- return backend ?? "vanilla";
50
+ return "vanilla";
75
51
  }
76
52
  //# sourceMappingURL=detect-framework.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect-framework.js","sourceRoot":"","sources":["../../../src/lib/utils/detect-framework.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect-framework.js","sourceRoot":"","sources":["../../../src/lib/utils/detect-framework.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,UAAU,GAAG;IACjB,OAAO;IACP,WAAW;IACX,kBAAkB;IAClB,wBAAwB;IACxB,OAAO;IACP,kBAAkB;CACnB,CAAC;AAeF,MAAM,eAAe,GAA8B;IACjD,CAAC,MAAM,EAAE,QAAQ,CAAC;IAClB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,uBAAuB,EAAE,sBAAsB,CAAC;IACjD,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,eAAe,EAAE,WAAW,CAAC;CAC/B,CAAC;AAEF,MAAM,eAAe,GAA8B;IACjD,CAAC,KAAK,EAAE,KAAK,CAAC;IACd,CAAC,QAAQ,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,IAAI,GAA2B,EAAE,CAAC;IACtC,IAAI,OAAO,GAA2B,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAC9B,OAAO,GAAG,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAExC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAChC,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,WAAW,CAAC;IAE3D,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,4 +1,4 @@
1
- export function generateClientInjectorBundleCode(ctx, autoActivate, swFilename, pwaEnabled, navMode, authEnabled, mutationQueueEnabled) {
1
+ export function generateClientInjectorBundleCode(ctx, autoActivate, swFilename, swUrl, pwaEnabled, navMode, authEnabled, mutationQueueEnabled, connectivityEnabled, tagInvalidationEnabled) {
2
2
  const pwaCode = pwaEnabled ? `
3
3
  // ── PWA Install Prompt ──
4
4
  function setupPwaInstall() {
@@ -60,33 +60,23 @@ export function generateClientInjectorBundleCode(ctx, autoActivate, swFilename,
60
60
  return;
61
61
  }
62
62
  try {
63
- var registration = await navigator.serviceWorker.register("/${swFilename}.js");
64
- var swReadyDispatched = false;
63
+ var registration = await navigator.serviceWorker.register("${swUrl || '/' + swFilename + '.js'}");
65
64
  if (registration.installing) {
66
- var installingWorker = registration.installing;
67
- installingWorker.addEventListener("statechange", function () {
68
- if (installingWorker.state === "installed") {
69
- if (AUTO_ACTIVATE) {
70
- if (registration.waiting) {
71
- registration.waiting.postMessage({ type: "SKIP_WAITING" });
72
- }
65
+ registration.installing.addEventListener("statechange", function () {
66
+ if (registration.installing?.state === "installed" && AUTO_ACTIVATE) {
67
+ if (registration.waiting) {
68
+ registration.waiting.postMessage({ type: "SKIP_WAITING" });
73
69
  }
74
- swReadyDispatched = true;
75
- window.dispatchEvent(new CustomEvent("sw-ready"));
76
70
  }
77
71
  });
78
72
  }
79
73
  await waitForController();
80
- if (!swReadyDispatched) {
81
- window.dispatchEvent(new CustomEvent("sw-ready"));
82
- }
83
74
  } catch (error) {
84
75
  console.error("Service Worker registration failed:", error);
85
- window.swError = true;
86
- window.dispatchEvent(new CustomEvent("sw-error"));
87
76
  }
88
77
  }
89
78
 
79
+ ${connectivityEnabled ? `
90
80
  // ── Connectivity ──
91
81
  var CONNECTIVITY_EVENT = "app-connectivity-change";
92
82
  var heartbeatIntervalId = null;
@@ -202,8 +192,8 @@ export function generateClientInjectorBundleCode(ctx, autoActivate, swFilename,
202
192
  } else {
203
193
  queueMicrotask(function () { dispatchState(false); });
204
194
  }
205
- }
206
-
195
+ }` : ""}
196
+ ${tagInvalidationEnabled ? `
207
197
  // ── Focus Listener (reactive strategy) ──
208
198
  if (typeof document !== "undefined") {
209
199
  document.addEventListener("visibilitychange", function () {
@@ -211,7 +201,7 @@ export function generateClientInjectorBundleCode(ctx, autoActivate, swFilename,
211
201
  navigator.serviceWorker.controller.postMessage({ type: "FOCUS" });
212
202
  }
213
203
  });
214
- }
204
+ }` : ""}
215
205
  ${pwaCode}${ssrPrefetch}
216
206
  // ── SW Message Listener ──
217
207
  if (typeof window !== "undefined" && "serviceWorker" in navigator) {
@@ -274,17 +264,19 @@ ${authEnabled ? `
274
264
  }
275
265
  })();
276
266
  }` : ""}
267
+ ${tagInvalidationEnabled ? `
277
268
  if (event.data.type === "TAG_INVALIDATED" && event.data.tag) {
278
269
  window.dispatchEvent(new CustomEvent("cache-invalidated", {
279
270
  detail: { tags: [event.data.tag] },
280
271
  }));
281
- }
272
+ }` : ""}
282
273
  });
283
274
  }
284
275
 
285
276
  // ── Main Entry ──
286
277
  async function initServiceWorker() {
287
278
  await registerSW();
279
+ ${connectivityEnabled ? `
288
280
  var storage = await getStorageEstimate();
289
281
  if (storage.percentUsed > 80) {
290
282
  window.dispatchEvent(new CustomEvent("swoff:notification", {
@@ -294,13 +286,14 @@ ${authEnabled ? `
294
286
  message: "Storage at " + storage.percentUsed + "% capacity (" + formatBytes(storage.usage) + " / " + formatBytes(storage.quota) + ")",
295
287
  },
296
288
  }));
297
- }
289
+ }` : ""}
298
290
  }
299
291
 
292
+ ${connectivityEnabled ? `
300
293
  // ── Bridge for swoff-api-bundle ──
301
294
  if (typeof window !== "undefined") {
302
295
  window.__SWOFF_FORCE_RETRY = forceRetry;
303
- }
296
+ }` : ""}
304
297
 
305
298
  // ── Auto-initialize ──
306
299
  if (typeof window !== "undefined" && "serviceWorker" in navigator) {
@@ -1 +1 @@
1
- {"version":3,"file":"client-injector-bundle.js","sourceRoot":"","sources":["../../src/runtime/client-injector-bundle.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gCAAgC,CAC9C,GAAmB,EACnB,YAAqB,EACrB,UAAkB,EAClB,UAAmB,EACnB,OAAgB,EAChB,WAAqB,EACrB,oBAA8B;IAE9B,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;+FAegE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnG,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;IAkBtC,CAAC,CAAC,CAAC,EAAE,CAAC;IAER,OAAO;;;;wBAIe,YAAY;;;;;;;;;;;;;;;;;;;;;;oEAsBgC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwJ5E,OAAO,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;;;EAuBrB,oBAAoB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;QAcjB,CAAC,CAAC,CAAC,EAAE;EACX,WAAW,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;QAuBR,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCZ,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"client-injector-bundle.js","sourceRoot":"","sources":["../../src/runtime/client-injector-bundle.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gCAAgC,CAC9C,GAAmB,EACnB,YAAqB,EACrB,UAAkB,EAClB,KAAyB,EACzB,UAAmB,EACnB,OAAgB,EAChB,WAAqB,EACrB,oBAA8B,EAC9B,mBAA6B,EAC7B,sBAAgC;IAEhC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;+FAegE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnG,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;IAkBtC,CAAC,CAAC,CAAC,EAAE,CAAC;IAER,OAAO;;;;wBAIe,YAAY;;;;;;;;;;;;;;;;;;;;;;mEAsB+B,KAAK,IAAI,GAAG,GAAG,UAAU,GAAG,KAAK;;;;;;;;;;;;;;;;EAgBlG,mBAAmB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoHpB,CAAC,CAAC,CAAC,EAAE;EACP,sBAAsB,CAAC,CAAC,CAAC;;;;;;;;IAQvB,CAAC,CAAC,CAAC,EAAE;EACP,OAAO,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;;;EAuBrB,oBAAoB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;QAcjB,CAAC,CAAC,CAAC,EAAE;EACX,WAAW,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;QAuBR,CAAC,CAAC,CAAC,EAAE;EACX,sBAAsB,CAAC,CAAC,CAAC;;;;;QAKnB,CAAC,CAAC,CAAC,EAAE;;;;;;;EAOX,mBAAmB,CAAC,CAAC,CAAC;;;;;;;;;;MAUlB,CAAC,CAAC,CAAC,EAAE;;;EAGT,mBAAmB,CAAC,CAAC,CAAC;;;;IAIpB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;CASR,CAAC;AACF,CAAC"}
@@ -153,8 +153,6 @@ if (typeof history !== "undefined") {
153
153
  *
154
154
  * Window events (dispatched by this module):
155
155
  * sw-progress - Download progress (detail: { percent, downloaded, total })
156
- * sw-ready - SW active and controlling page
157
- * sw-error - SW registration failed
158
156
  * cache-invalidated - Cache entries cleared on SW confirmation (detail: { tags })
159
157
  * swoff:cache-updated - Background refresh completed (detail: { url })
160
158
  * swoff:offline-fallback - Offline fallback page served (detail: { route, fallbackLevel, timestamp })
@@ -1 +1 @@
1
- {"version":3,"file":"client-injector.js","sourceRoot":"","sources":["../../src/runtime/client-injector.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CACxC,GAAmB,EACnB,UAAmB,EACnB,oBAA6B,EAC7B,iBAA0B,EAC1B,OAAgB,EAChB,WAAqB,EACrB,mBAA6B,EAC7B,sBAAgC;IAEhC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC;IACxB,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,IAAI,sBAAsB,CAAC;IAE3D,MAAM,SAAS,GAAG,UAAU;QAC1B,CAAC,CAAC,iDAAiD,GAAG;CACzD;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG,UAAU;QACxB,CAAC,CAAC,gGAAgG;QAClG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,iBAAiB;QAClC,CAAC,CAAC,yDAAyD,GAAG;CACjE;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,QAAQ,GAAG,iBAAiB;QAChC,CAAC,CAAC,gGAAgG;QAClG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAAG,oBAAoB;QACzC,CAAC,CAAC,sEAAsE,GAAG;CAC9E;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW;QAC5B,CAAC,CAAC,kEAAkE,GAAG;CAC1E;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,mBAAmB;QACvC,CAAC,CAAC,8DAA8D,GAAG;CACtE;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,kBAAkB,GAAG,mBAAmB;QAC5C,CAAC,CAAC;;;;;yBAKmB,GAAG;CAC3B;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAAG,mBAAmB;QACxC,CAAC,CAAC;;;;;;;;QAQE,oBAAoB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAyB3D;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,sBAAsB;QAC1C,CAAC,CAAC;;;;;;;;;;;CAWL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,mBAAmB,GAAG,sBAAsB;QAChD,CAAC,CAAC;;;;;;;;CAQL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,QAAQ,GAAG,8DAA8D,GAAG;CACnF,CAAC;IAEA,MAAM,kBAAkB,GAAG,MAAM;QAC/B,CAAC,CAAC,+CAA+C,GAAG;CACvD;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,gBAAgB,GAAG,MAAM;QAC7B,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;CAoBL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,mBAAmB;QACrC,CAAC,CAAC;;;;;;;;;;;;;CAaL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;kEAMyD,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBnE,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,kBAAkB,GAAG,UAAU,GAAG,kBAAkB;EACzH,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiGjE,mBAAmB;;;;;;;;;;;;;;;;;;;2CAmBiB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG;mBACpD,WAAW;;CAE7B,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"client-injector.js","sourceRoot":"","sources":["../../src/runtime/client-injector.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CACxC,GAAmB,EACnB,UAAmB,EACnB,oBAA6B,EAC7B,iBAA0B,EAC1B,OAAgB,EAChB,WAAqB,EACrB,mBAA6B,EAC7B,sBAAgC;IAEhC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC;IACxB,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,IAAI,sBAAsB,CAAC;IAE3D,MAAM,SAAS,GAAG,UAAU;QAC1B,CAAC,CAAC,iDAAiD,GAAG;CACzD;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG,UAAU;QACxB,CAAC,CAAC,gGAAgG;QAClG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,iBAAiB;QAClC,CAAC,CAAC,yDAAyD,GAAG;CACjE;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,QAAQ,GAAG,iBAAiB;QAChC,CAAC,CAAC,gGAAgG;QAClG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAAG,oBAAoB;QACzC,CAAC,CAAC,sEAAsE,GAAG;CAC9E;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW;QAC5B,CAAC,CAAC,kEAAkE,GAAG;CAC1E;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,mBAAmB;QACvC,CAAC,CAAC,8DAA8D,GAAG;CACtE;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,kBAAkB,GAAG,mBAAmB;QAC5C,CAAC,CAAC;;;;;yBAKmB,GAAG;CAC3B;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAAG,mBAAmB;QACxC,CAAC,CAAC;;;;;;;;QAQE,oBAAoB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAyB3D;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,sBAAsB;QAC1C,CAAC,CAAC;;;;;;;;;;;CAWL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,mBAAmB,GAAG,sBAAsB;QAChD,CAAC,CAAC;;;;;;;;CAQL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,QAAQ,GAAG,8DAA8D,GAAG;CACnF,CAAC;IAEA,MAAM,kBAAkB,GAAG,MAAM;QAC/B,CAAC,CAAC,+CAA+C,GAAG;CACvD;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,gBAAgB,GAAG,MAAM;QAC7B,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;CAoBL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,mBAAmB;QACrC,CAAC,CAAC;;;;;;;;;;;;;CAaL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;kEAMyD,GAAG;;;;;;;;;;;;;;;;;;;EAmBnE,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,kBAAkB,GAAG,UAAU,GAAG,kBAAkB;EACzH,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiGjE,mBAAmB;;;;;;;;;;;;;;;;;;;2CAmBiB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG;mBACpD,WAAW;;CAE7B,CAAC;AACF,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { R } from "./utils.js";
2
2
  export function generateSwInjectorCode(ctx) {
3
- const { ext, ts, autoActivate, swFilename } = ctx;
3
+ const { ext, ts, autoActivate, swFilename, swUrl } = ctx;
4
4
  return `/**
5
5
  * Swoff SW Injector
6
- * Registers the service worker and tracks installation progress.
6
+ * Registers the service worker.
7
7
  *
8
8
  * Usage:
9
9
  * import { initServiceWorker } from './swoff/sw/injector.${ext}';
@@ -11,8 +11,6 @@ export function generateSwInjectorCode(ctx) {
11
11
  *
12
12
  * Window events:
13
13
  * sw-progress - Download progress (detail: { percent, downloaded, total })
14
- * sw-ready - SW active and controlling page
15
- * sw-error - SW registration failed
16
14
  */
17
15
  const AUTO_ACTIVATE = ${autoActivate};
18
16
 
@@ -38,30 +36,19 @@ export async function initServiceWorker()${R(ts, "Promise<void>")}{
38
36
  }
39
37
 
40
38
  try {
41
- const registration = await navigator.serviceWorker.register("/${swFilename}.js");
39
+ const registration = await navigator.serviceWorker.register("${swUrl || '/' + swFilename + '.js'}");
42
40
 
43
- var swReadyDispatched = false;
44
41
  if (registration.installing) {
45
- const installingWorker = registration.installing;
46
- installingWorker.addEventListener("statechange", () => {
47
- if (installingWorker.state === "installed") {
48
- if (AUTO_ACTIVATE) {
49
- registration.waiting?.postMessage({ type: "SKIP_WAITING" });
50
- }
51
- swReadyDispatched = true;
52
- window.dispatchEvent(new CustomEvent("sw-ready"));
42
+ registration.installing.addEventListener("statechange", () => {
43
+ if (registration.installing?.state === "installed" && AUTO_ACTIVATE) {
44
+ registration.waiting?.postMessage({ type: "SKIP_WAITING" });
53
45
  }
54
46
  });
55
47
  }
56
48
 
57
49
  await waitForController();
58
- if (!swReadyDispatched) {
59
- window.dispatchEvent(new CustomEvent("sw-ready"));
60
- }
61
50
  } catch (error) {
62
51
  console.error("Service Worker registration failed:", error);
63
- window.swError = true;
64
- window.dispatchEvent(new CustomEvent("sw-error"));
65
52
  }
66
53
  }
67
54
 
@@ -1 +1 @@
1
- {"version":3,"file":"sw-injector.js","sourceRoot":"","sources":["../../src/runtime/sw-injector.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,CAAC,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,UAAU,sBAAsB,CACpC,GAAmE;IAEnE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAElD,OAAO;;;;;8DAKqD,GAAG;;;;;;;;wBAQzC,YAAY;;oCAEA,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;;;;;;;;;;2CAef,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;;oEAOG,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA4BzC,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;CAM1D,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"sw-injector.js","sourceRoot":"","sources":["../../src/runtime/sw-injector.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,CAAC,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,UAAU,sBAAsB,CACpC,GAAmF;IAEnF,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAEzD,OAAO;;;;;8DAKqD,GAAG;;;;;;wBAMzC,YAAY;;oCAEA,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;;;;;;;;;;2CAef,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;;mEAOE,KAAK,IAAI,GAAG,GAAG,UAAU,GAAG,KAAK;;;;;;;;;;;;;;;;;qCAiB/D,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;CAM1D,CAAC;AACF,CAAC"}
@@ -39,9 +39,6 @@ declare global {
39
39
  interface WindowEventMap {
40
40
  beforeinstallprompt: BeforeInstallPromptEvent;
41
41
  "sw-progress": CustomEvent<{ percent: number; downloaded: number; total: number }>;
42
- "sw-ready": CustomEvent;
43
- "sw-error": CustomEvent;
44
- "sw-version-detected": CustomEvent;
45
42
  "sw-auth-state-change": CustomEvent;
46
43
  "mutation-sync-complete": CustomEvent<{ succeeded: number; failed: number }>;
47
44
  "mutation-queue-changed": CustomEvent;
@@ -67,8 +64,6 @@ declare global {
67
64
  pwaInstallable?: boolean;
68
65
  latestSWVersion?: string;
69
66
  currentSWVersion?: string;
70
- swReady?: boolean;
71
- swError?: boolean;
72
67
  swAuthState?: "authenticated" | "unauthenticated" | "loading";
73
68
  SyncManager?: { new(): SyncManager };
74
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"type-definitions.js","sourceRoot":"","sources":["../../src/runtime/type-definitions.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuIR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"type-definitions.js","sourceRoot":"","sources":["../../src/runtime/type-definitions.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkIR,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swoff/cli",
3
- "version": "0.3.15",
3
+ "version": "0.4.1",
4
4
  "type": "module",
5
5
  "description": "CLI for Swoff - Offline Infrastructure Platform",
6
6
  "bin": {
@@ -0,0 +1,20 @@
1
+ import { useState, useEffect } from "react";
2
+
3
+ export function usePrecacheProgress() {
4
+ const [state, setState] = useState(() => ({
5
+ status: "idle",
6
+ progress: 0,
7
+ }));
8
+
9
+ useEffect(() => {
10
+ const onProgress = (e) =>
11
+ setState({ status: "installing", progress: e.detail.percent });
12
+
13
+ window.addEventListener("sw-progress", onProgress);
14
+ return () => {
15
+ window.removeEventListener("sw-progress", onProgress);
16
+ };
17
+ }, []);
18
+
19
+ return state;
20
+ }
@@ -0,0 +1,20 @@
1
+ import { useState, useEffect } from "react";
2
+
3
+ export function usePrecacheProgress() {
4
+ const [state, setState] = useState(() => ({
5
+ status: "idle" as "idle" | "installing",
6
+ progress: 0,
7
+ }));
8
+
9
+ useEffect(() => {
10
+ const onProgress = (e: WindowEventMap["sw-progress"]) =>
11
+ setState({ status: "installing", progress: e.detail.percent });
12
+
13
+ window.addEventListener("sw-progress", onProgress);
14
+ return () => {
15
+ window.removeEventListener("sw-progress", onProgress);
16
+ };
17
+ }, []);
18
+
19
+ return state;
20
+ }
@@ -1,55 +0,0 @@
1
- /**
2
- * Generates the SW install event handler (asset pre-caching with progress).
3
- * Also exports a reusable precacheAssets() function used by both install and
4
- * the RESET_CACHE message handler.
5
- */
6
- export function generateInstallHandler() {
7
- return `
8
- async function precacheAssets() {
9
- const cache = await caches.open("precache");
10
- const stale = await cache.keys();
11
- await Promise.all(stale.map(function(req) { return cache.delete(req); }));
12
- let downloaded = 0;
13
- let attempted = 0;
14
- const total = PRECACHE_FALLBACKS.length;
15
- if (total === 0) return;
16
- const allClients = await self.clients.matchAll({ includeUncontrolled: true });
17
- for (const url of PRECACHE_FALLBACKS) {
18
- attempted++;
19
- try {
20
- const request = new Request(url);
21
- await cache.add(request);
22
- downloaded++;
23
- } catch (err) {
24
- console.error(\`Failed to cache \${url}:\`, err);
25
- allClients.forEach((client) => {
26
- client.postMessage({
27
- type: "SW_NOTIFICATION",
28
- level: "warn",
29
- code: "PRECACHE_FAILED",
30
- message: \`Failed to precache \${url}\`,
31
- });
32
- });
33
- }
34
- const percent = Math.round((attempted / total) * 100);
35
- allClients.forEach((client) => {
36
- client.postMessage({
37
- type: "SW_PROGRESS",
38
- percent,
39
- downloaded,
40
- total,
41
- });
42
- });
43
- }
44
- }
45
-
46
- self.addEventListener("install", (event) => {
47
- event.waitUntil(
48
- (async () => {
49
- await precacheAssets();
50
- if (AUTO_SKIP_WAITING) self.skipWaiting();
51
- })(),
52
- );
53
- });`;
54
- }
55
- //# sourceMappingURL=install-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-handler.js","sourceRoot":"","sources":["../../../../src/lib/generators/sw-sections/install-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8CL,CAAC;AACL,CAAC"}
@@ -1,31 +0,0 @@
1
- import { useState, useEffect } from "react";
2
-
3
- export function useSWUpdate() {
4
- const [state, setState] = useState(() => ({
5
- status: "idle",
6
- progress: 0,
7
- error: null,
8
- }));
9
-
10
- useEffect(() => {
11
- const onProgress = (e) =>
12
- setState((s) => ({ ...s, status: "installing", progress: e.detail.percent }));
13
-
14
- const onReady = () =>
15
- setState({ status: "idle", progress: 0, error: null });
16
-
17
- const onError = () =>
18
- setState({ status: "idle", progress: 0, error: "SW registration failed" });
19
-
20
- window.addEventListener("sw-progress", onProgress);
21
- window.addEventListener("sw-ready", onReady);
22
- window.addEventListener("sw-error", onError);
23
- return () => {
24
- window.removeEventListener("sw-progress", onProgress);
25
- window.removeEventListener("sw-ready", onReady);
26
- window.removeEventListener("sw-error", onError);
27
- };
28
- }, []);
29
-
30
- return state;
31
- }
@@ -1,37 +0,0 @@
1
- import { useState, useEffect } from "react";
2
-
3
- type UpdateStatus = "idle" | "installing";
4
-
5
- export function useSWUpdate() {
6
- const [state, setState] = useState(() => ({
7
- status: "idle" as UpdateStatus,
8
- progress: 0,
9
- error: null as string | null,
10
- }));
11
-
12
- useEffect(() => {
13
- const onProgress = (e: WindowEventMap["sw-progress"]) =>
14
- setState((s) => ({
15
- ...s,
16
- status: "installing",
17
- progress: e.detail.percent,
18
- }));
19
-
20
- const onReady = () =>
21
- setState({ status: "idle", progress: 0, error: null });
22
-
23
- const onError = () =>
24
- setState({ status: "idle", progress: 0, error: "SW registration failed" });
25
-
26
- window.addEventListener("sw-progress", onProgress);
27
- window.addEventListener("sw-ready", onReady);
28
- window.addEventListener("sw-error", onError);
29
- return () => {
30
- window.removeEventListener("sw-progress", onProgress);
31
- window.removeEventListener("sw-ready", onReady);
32
- window.removeEventListener("sw-error", onError);
33
- };
34
- }, []);
35
-
36
- return state;
37
- }