@swoff/cli 0.3.13 → 0.3.14

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 (224) hide show
  1. package/README.md +28 -32
  2. package/dist/index.js +2 -13
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/cli/help.js +3 -8
  5. package/dist/lib/cli/help.js.map +1 -1
  6. package/dist/lib/commands/add.js +29 -87
  7. package/dist/lib/commands/add.js.map +1 -1
  8. package/dist/lib/commands/generate-guide.js +16 -30
  9. package/dist/lib/commands/generate-guide.js.map +1 -1
  10. package/dist/lib/commands/generate.js +31 -6
  11. package/dist/lib/commands/generate.js.map +1 -1
  12. package/dist/lib/commands/init.js +188 -11
  13. package/dist/lib/commands/init.js.map +1 -1
  14. package/dist/lib/commands/validate.js +2 -4
  15. package/dist/lib/commands/validate.js.map +1 -1
  16. package/dist/lib/config/loader.js +34 -25
  17. package/dist/lib/config/loader.js.map +1 -1
  18. package/dist/lib/config/validator.js +202 -96
  19. package/dist/lib/config/validator.js.map +1 -1
  20. package/dist/lib/generators/file-generators/api-config.js +1 -1
  21. package/dist/lib/generators/file-generators/api-config.js.map +1 -1
  22. package/dist/lib/generators/file-generators/auth-adapter.js +13 -0
  23. package/dist/lib/generators/file-generators/auth-adapter.js.map +1 -0
  24. package/dist/lib/generators/file-generators/auth-check.js +40 -0
  25. package/dist/lib/generators/file-generators/auth-check.js.map +1 -0
  26. package/dist/lib/generators/file-generators/auth-store.js +2 -5
  27. package/dist/lib/generators/file-generators/auth-store.js.map +1 -1
  28. package/dist/lib/generators/file-generators/background-sync.js +1 -1
  29. package/dist/lib/generators/file-generators/background-sync.js.map +1 -1
  30. package/dist/lib/generators/file-generators/cache.js +2 -1
  31. package/dist/lib/generators/file-generators/cache.js.map +1 -1
  32. package/dist/lib/generators/file-generators/client-injector-bundle.js +15 -0
  33. package/dist/lib/generators/file-generators/client-injector-bundle.js.map +1 -0
  34. package/dist/lib/generators/file-generators/client-injector.js +2 -1
  35. package/dist/lib/generators/file-generators/client-injector.js.map +1 -1
  36. package/dist/lib/generators/file-generators/connectivity-manager.js +12 -0
  37. package/dist/lib/generators/file-generators/connectivity-manager.js.map +1 -0
  38. package/dist/lib/generators/file-generators/connectivity.js +12 -0
  39. package/dist/lib/generators/file-generators/connectivity.js.map +1 -0
  40. package/dist/lib/generators/file-generators/context.js +7 -0
  41. package/dist/lib/generators/file-generators/context.js.map +1 -1
  42. package/dist/lib/generators/file-generators/fetch-wrapper.js +1 -1
  43. package/dist/lib/generators/file-generators/fetch-wrapper.js.map +1 -1
  44. package/dist/lib/generators/file-generators/generate-framework-adapters.js +29 -20
  45. package/dist/lib/generators/file-generators/generate-framework-adapters.js.map +1 -1
  46. package/dist/lib/generators/file-generators/gql-wrapper.js +2 -2
  47. package/dist/lib/generators/file-generators/gql-wrapper.js.map +1 -1
  48. package/dist/lib/generators/file-generators/guide-generator.js +51 -1
  49. package/dist/lib/generators/file-generators/guide-generator.js.map +1 -1
  50. package/dist/lib/generators/file-generators/invalidation-tags.js +2 -3
  51. package/dist/lib/generators/file-generators/invalidation-tags.js.map +1 -1
  52. package/dist/lib/generators/file-generators/mutation-queue.js +2 -2
  53. package/dist/lib/generators/file-generators/mutation-queue.js.map +1 -1
  54. package/dist/lib/generators/file-generators/mutation-state.js +1 -1
  55. package/dist/lib/generators/file-generators/mutation-state.js.map +1 -1
  56. package/dist/lib/generators/file-generators/notification-generator.js +6 -0
  57. package/dist/lib/generators/file-generators/notification-generator.js.map +1 -0
  58. package/dist/lib/generators/file-generators/open-db.js +6 -0
  59. package/dist/lib/generators/file-generators/open-db.js.map +1 -0
  60. package/dist/lib/generators/file-generators/push.js +1 -2
  61. package/dist/lib/generators/file-generators/push.js.map +1 -1
  62. package/dist/lib/generators/file-generators/pwa-install.js +2 -6
  63. package/dist/lib/generators/file-generators/pwa-install.js.map +1 -1
  64. package/dist/lib/generators/file-generators/server-push.js +1 -1
  65. package/dist/lib/generators/file-generators/server-push.js.map +1 -1
  66. package/dist/lib/generators/file-generators/storage-generator.js +6 -0
  67. package/dist/lib/generators/file-generators/storage-generator.js.map +1 -0
  68. package/dist/lib/generators/file-generators/storage-notify.js +6 -0
  69. package/dist/lib/generators/file-generators/storage-notify.js.map +1 -0
  70. package/dist/lib/generators/file-generators/storage.js +6 -0
  71. package/dist/lib/generators/file-generators/storage.js.map +1 -0
  72. package/dist/lib/generators/file-generators/sw-generator-build.js +96 -45
  73. package/dist/lib/generators/file-generators/sw-generator-build.js.map +1 -1
  74. package/dist/lib/generators/file-generators/sw-injector.js +0 -4
  75. package/dist/lib/generators/file-generators/sw-injector.js.map +1 -1
  76. package/dist/lib/generators/file-generators/sw-template.js +8 -9
  77. package/dist/lib/generators/file-generators/sw-template.js.map +1 -1
  78. package/dist/lib/generators/file-generators/sw-version-gen.js +32 -0
  79. package/dist/lib/generators/file-generators/sw-version-gen.js.map +1 -0
  80. package/dist/lib/generators/file-generators/swoff-api-bundle.js +51 -0
  81. package/dist/lib/generators/file-generators/swoff-api-bundle.js.map +1 -0
  82. package/dist/lib/generators/sw-build-utils.js +69 -0
  83. package/dist/lib/generators/sw-build-utils.js.map +1 -0
  84. package/dist/lib/generators/sw-generator.js +23 -34
  85. package/dist/lib/generators/sw-generator.js.map +1 -1
  86. package/dist/lib/generators/sw-sections/activate-handler.js +74 -23
  87. package/dist/lib/generators/sw-sections/activate-handler.js.map +1 -1
  88. package/dist/lib/generators/sw-sections/assemble-sw.js +15 -94
  89. package/dist/lib/generators/sw-sections/assemble-sw.js.map +1 -1
  90. package/dist/lib/generators/sw-sections/background-sync-handler.js +74 -72
  91. package/dist/lib/generators/sw-sections/background-sync-handler.js.map +1 -1
  92. package/dist/lib/generators/sw-sections/batch-refresh-queue.js +102 -0
  93. package/dist/lib/generators/sw-sections/batch-refresh-queue.js.map +1 -0
  94. package/dist/lib/generators/sw-sections/config-header.js +2 -3
  95. package/dist/lib/generators/sw-sections/config-header.js.map +1 -1
  96. package/dist/lib/generators/sw-sections/default-template.js +59 -6
  97. package/dist/lib/generators/sw-sections/default-template.js.map +1 -1
  98. package/dist/lib/generators/sw-sections/fetch-handler.js +621 -495
  99. package/dist/lib/generators/sw-sections/fetch-handler.js.map +1 -1
  100. package/dist/lib/generators/sw-sections/install-handler.js +40 -23
  101. package/dist/lib/generators/sw-sections/install-handler.js.map +1 -1
  102. package/dist/lib/generators/sw-sections/message-handler.js +25 -8
  103. package/dist/lib/generators/sw-sections/message-handler.js.map +1 -1
  104. package/dist/lib/generators/sw-sections/server-push-handler.js +10 -14
  105. package/dist/lib/generators/sw-sections/server-push-handler.js.map +1 -1
  106. package/dist/lib/generators/sw-sections/shared.js +68 -0
  107. package/dist/lib/generators/sw-sections/shared.js.map +1 -0
  108. package/dist/lib/generators/sw-sections/sw-push.js +2 -6
  109. package/dist/lib/generators/sw-sections/sw-push.js.map +1 -1
  110. package/dist/lib/generators/sw-sections/tag-management.js +55 -86
  111. package/dist/lib/generators/sw-sections/tag-management.js.map +1 -1
  112. package/dist/lib/generators/swoff-files-generator.js +183 -59
  113. package/dist/lib/generators/swoff-files-generator.js.map +1 -1
  114. package/dist/lib/shared/config-types.js +67 -63
  115. package/dist/lib/shared/config-types.js.map +1 -1
  116. package/dist/lib/shared/feature-registry.js +198 -0
  117. package/dist/lib/shared/feature-registry.js.map +1 -0
  118. package/dist/lib/utils/detect-framework.js +52 -9
  119. package/dist/lib/utils/detect-framework.js.map +1 -1
  120. package/dist/runtime/api-config.js +2 -2
  121. package/dist/runtime/api-config.js.map +1 -1
  122. package/dist/runtime/auth-adapter.js +179 -0
  123. package/dist/runtime/auth-adapter.js.map +1 -0
  124. package/dist/runtime/auth-state.js +16 -6
  125. package/dist/runtime/auth-state.js.map +1 -1
  126. package/dist/runtime/auth-store.js +219 -213
  127. package/dist/runtime/auth-store.js.map +1 -1
  128. package/dist/runtime/auth-user.js +5 -19
  129. package/dist/runtime/auth-user.js.map +1 -1
  130. package/dist/runtime/background-sync.js +5 -2
  131. package/dist/runtime/background-sync.js.map +1 -1
  132. package/dist/runtime/cache.js +91 -3
  133. package/dist/runtime/cache.js.map +1 -1
  134. package/dist/runtime/client-injector-bundle.js +314 -0
  135. package/dist/runtime/client-injector-bundle.js.map +1 -0
  136. package/dist/runtime/client-injector.js +173 -30
  137. package/dist/runtime/client-injector.js.map +1 -1
  138. package/dist/runtime/connectivity-manager.js +83 -0
  139. package/dist/runtime/connectivity-manager.js.map +1 -0
  140. package/dist/runtime/connectivity.js +83 -0
  141. package/dist/runtime/connectivity.js.map +1 -0
  142. package/dist/runtime/fetch-wrapper.js +26 -59
  143. package/dist/runtime/fetch-wrapper.js.map +1 -1
  144. package/dist/runtime/gql-wrapper.js +15 -9
  145. package/dist/runtime/gql-wrapper.js.map +1 -1
  146. package/dist/runtime/invalidation-tags.js +12 -89
  147. package/dist/runtime/invalidation-tags.js.map +1 -1
  148. package/dist/runtime/mutation-queue.js +83 -31
  149. package/dist/runtime/mutation-queue.js.map +1 -1
  150. package/dist/runtime/mutation-state.js +3 -3
  151. package/dist/runtime/mutation-state.js.map +1 -1
  152. package/dist/runtime/notification.js +65 -0
  153. package/dist/runtime/notification.js.map +1 -0
  154. package/dist/runtime/open-db.js +41 -0
  155. package/dist/runtime/open-db.js.map +1 -0
  156. package/dist/runtime/push.js +15 -27
  157. package/dist/runtime/push.js.map +1 -1
  158. package/dist/runtime/pwa-injector.js +3 -32
  159. package/dist/runtime/pwa-injector.js.map +1 -1
  160. package/dist/runtime/pwa-prompt.js +35 -3
  161. package/dist/runtime/pwa-prompt.js.map +1 -1
  162. package/dist/runtime/reset.js +39 -42
  163. package/dist/runtime/reset.js.map +1 -1
  164. package/dist/runtime/server-push.js +23 -13
  165. package/dist/runtime/server-push.js.map +1 -1
  166. package/dist/runtime/storage.js +32 -0
  167. package/dist/runtime/storage.js.map +1 -0
  168. package/dist/runtime/sw-injector.js +19 -178
  169. package/dist/runtime/sw-injector.js.map +1 -1
  170. package/dist/runtime/sw-version.js +13 -0
  171. package/dist/runtime/sw-version.js.map +1 -0
  172. package/dist/runtime/swoff-api-bundle.js +1491 -0
  173. package/dist/runtime/swoff-api-bundle.js.map +1 -0
  174. package/dist/runtime/type-definitions.js +8 -7
  175. package/dist/runtime/type-definitions.js.map +1 -1
  176. package/dist/runtime/utils.js +4 -0
  177. package/dist/runtime/utils.js.map +1 -1
  178. package/dist/swoff-nkdhhmw8. +18 -0
  179. package/dist/swoff.js +5 -0
  180. package/package.json +1 -1
  181. package/templates/react/useAuth.jsx +7 -4
  182. package/templates/react/useAuth.tsx +14 -14
  183. package/templates/react/useBackgroundSync.jsx +5 -4
  184. package/templates/react/useBackgroundSync.tsx +5 -4
  185. package/templates/react/useCachedFetch.jsx +8 -0
  186. package/templates/react/useCachedFetch.tsx +8 -0
  187. package/templates/react/useMutation.jsx +60 -56
  188. package/templates/react/useMutation.tsx +65 -64
  189. package/templates/react/useMutationQueue.jsx +5 -1
  190. package/templates/react/useMutationQueue.tsx +8 -2
  191. package/templates/react/useMutationState.jsx +3 -4
  192. package/templates/react/useMutationState.tsx +4 -8
  193. package/templates/react/useNetworkStatus.jsx +57 -17
  194. package/templates/react/useNetworkStatus.tsx +42 -20
  195. package/templates/react/useOfflineAnalytics.jsx +42 -0
  196. package/templates/react/useOfflineAnalytics.tsx +50 -0
  197. package/templates/react/usePwaInstall.jsx +26 -0
  198. package/templates/react/usePwaInstall.tsx +26 -0
  199. package/templates/react/useSWUpdate.jsx +7 -52
  200. package/templates/react/useSWUpdate.tsx +12 -51
  201. package/templates/react/useStorageEstimate.jsx +56 -0
  202. package/templates/react/useStorageEstimate.tsx +67 -0
  203. package/dist/__tests__/assemble-sw.test.js +0 -145
  204. package/dist/__tests__/assemble-sw.test.js.map +0 -1
  205. package/dist/__tests__/cli-integration.test.js +0 -231
  206. package/dist/__tests__/cli-integration.test.js.map +0 -1
  207. package/dist/__tests__/config-types.test.js +0 -124
  208. package/dist/__tests__/config-types.test.js.map +0 -1
  209. package/dist/__tests__/detect-language.test.js +0 -51
  210. package/dist/__tests__/detect-language.test.js.map +0 -1
  211. package/dist/__tests__/file-generators.test.js +0 -228
  212. package/dist/__tests__/file-generators.test.js.map +0 -1
  213. package/dist/__tests__/glob-matcher.test.js +0 -86
  214. package/dist/__tests__/glob-matcher.test.js.map +0 -1
  215. package/dist/__tests__/invalidation-tags.test.js +0 -283
  216. package/dist/__tests__/invalidation-tags.test.js.map +0 -1
  217. package/dist/__tests__/loader.test.js +0 -77
  218. package/dist/__tests__/loader.test.js.map +0 -1
  219. package/dist/__tests__/validator.test.js +0 -340
  220. package/dist/__tests__/validator.test.js.map +0 -1
  221. package/templates/react/useCacheInvalidation.jsx +0 -19
  222. package/templates/react/useCacheInvalidation.tsx +0 -52
  223. package/templates/react/useIsFetching.jsx +0 -32
  224. package/templates/react/useIsFetching.tsx +0 -32
@@ -1,103 +1,21 @@
1
- import { T, R } from "./utils.js";
1
+ import { R } from "./utils.js";
2
2
  export function generateSwInjectorCode(ctx) {
3
- const { ext, ts, autoUpdate, autoActivate, versionEnabled, swFilename } = ctx;
4
- if (!versionEnabled) {
5
- return `/**
6
- * Swoff SW Injector (Simple Mode)
7
- * Fixed SW URL with hash-based cache name — no versioned URLs or update events.
8
- *
9
- * Usage:
10
- * import { initServiceWorker } from './swoff/sw/injector.${ext}';
11
- * initServiceWorker();
12
- *
13
- * Window events:
14
- * sw-ready - SW active and controlling page
15
- * sw-error - SW registration failed
16
- *
17
- * Window properties:
18
- * window.currentSWVersion - "simple"
19
- * window.swReady - SW is active
20
- * window.swError - Registration failed
21
- */
22
- async function waitForController()${R(ts, "Promise<void>")}{
23
- return new Promise<void>((resolve) => {
24
- if (navigator.serviceWorker.controller) {
25
- resolve();
26
- } else {
27
- const timeout = setTimeout(() => resolve(), 30000);
28
- navigator.serviceWorker.addEventListener("controllerchange", () => {
29
- clearTimeout(timeout);
30
- resolve();
31
- }, { once: true });
32
- }
33
- });
34
- }
35
-
36
- /** Register the SW with a fixed URL (non-versioned mode). Dispatches sw-ready/sw-error. */
37
- export async function initServiceWorker()${R(ts, "Promise<void>")}{
38
- if (!("serviceWorker" in navigator)) {
39
- console.warn("Service Workers not supported");
40
- return;
41
- }
42
- try {
43
- const registration = await navigator.serviceWorker.register("/${swFilename}.js");
44
- window.currentSWVersion = "simple";
45
- window.dispatchEvent(new CustomEvent("sw-version-detected"));
46
- await waitForController();
47
- window.dispatchEvent(new CustomEvent("sw-ready"));
48
- } catch (error) {
49
- console.error("Service Worker registration failed:", error);
50
- window.swError = true;
51
- window.dispatchEvent(new CustomEvent("sw-error"));
52
- }
53
- }
54
- `;
55
- }
3
+ const { ext, ts, autoActivate, swFilename } = ctx;
56
4
  return `/**
57
5
  * Swoff SW Injector
58
- * Framework-agnostic SW registration with versioned URLs and update flow.
6
+ * Registers the service worker and tracks installation progress.
59
7
  *
60
8
  * Usage:
61
9
  * import { initServiceWorker } from './swoff/sw/injector.${ext}';
62
10
  * initServiceWorker();
63
11
  *
64
12
  * Window events:
65
- * sw-version-detected - Version info available on window
66
- * sw-update-available - New version ready for user consent (detail: { version })
67
13
  * sw-progress - Download progress (detail: { percent, downloaded, total })
68
14
  * sw-ready - SW active and controlling page
69
15
  * sw-error - SW registration failed
70
- *
71
- * Window properties:
72
- * window.latestSWVersion - Latest version from version.json
73
- * window.currentSWVersion - Active SW version
74
- * window.swAvailableVersion - Pending update version
75
- * window.swUpdateRequired - Forced update needed (version < minSupportedVersion)
76
- * window.swMinSupportedVersion - Minimum supported version
77
- * window.swReady - SW is active
78
- * window.swError - Registration failed
79
16
  */
80
- const AUTO_UPDATE = ${autoUpdate};
81
17
  const AUTO_ACTIVATE = ${autoActivate};
82
18
 
83
- function semverCompare(a${T(ts, "string")}, b${T(ts, "string")})${R(ts, "number")}{
84
- const pa = a.split('.').map(Number);
85
- const pb = b.split('.').map(Number);
86
- for (let i = 0; i < 3; i++) {
87
- if (pa[i] > pb[i]) return 1;
88
- if (pa[i] < pb[i]) return -1;
89
- }
90
- return 0;
91
- }
92
-
93
- async function checkForUpdate() {
94
- const response = await fetch("/version.json?t=" + Date.now());
95
- if (!response.ok) {
96
- throw new Error("Failed to fetch version.json");
97
- }
98
- return response.json();
99
- }
100
-
101
19
  async function waitForController()${R(ts, "Promise<void>")}{
102
20
  return new Promise<void>((resolve) => {
103
21
  if (navigator.serviceWorker.controller) {
@@ -112,19 +30,7 @@ async function waitForController()${R(ts, "Promise<void>")}{
112
30
  });
113
31
  }
114
32
 
115
- async function doRegisterServiceWorker(version${T(ts, "string")})${R(ts, "Promise<ServiceWorkerRegistration>")}{
116
- const swUrl = \`/sw-v\${version}.js\`;
117
- const registration = await navigator.serviceWorker.register(swUrl);
118
- localStorage.setItem("swRegisteredVersion", version);
119
- window.currentSWVersion = version;
120
- window.swRegisteredVersion = version;
121
- window.dispatchEvent(new CustomEvent("sw-version-detected"));
122
- await waitForController();
123
- window.dispatchEvent(new CustomEvent("sw-ready"));
124
- return registration;
125
- }
126
-
127
- /** Register the SW with version checking and update flow. Checks version.json, handles updates, and dispatches sw-ready/sw-error events. */
33
+ /** Register the SW. The browser detects updates by comparing SW file bytes. */
128
34
  export async function initServiceWorker()${R(ts, "Promise<void>")}{
129
35
  if (!("serviceWorker" in navigator)) {
130
36
  console.warn("Service Workers not supported");
@@ -132,98 +38,33 @@ export async function initServiceWorker()${R(ts, "Promise<void>")}{
132
38
  }
133
39
 
134
40
  try {
135
- const manifest = await checkForUpdate();
136
- const currentVersion = localStorage.getItem("swRegisteredVersion");
137
- window.latestSWVersion = manifest.version;
138
- window.swMinSupportedVersion = manifest.minSupportedVersion || "0.0.0";
139
-
140
- if (currentVersion === manifest.version) {
141
- const registration = await navigator.serviceWorker.getRegistration();
142
- if (registration && registration.active) {
143
- window.currentSWVersion = currentVersion ?? undefined;
144
- window.dispatchEvent(new CustomEvent("sw-version-detected"));
145
- await waitForController();
146
- if (!window.swReady) {
147
- window.dispatchEvent(new CustomEvent("sw-ready"));
148
- }
149
- }
150
- } else if (currentVersion && currentVersion !== manifest.version) {
151
- window.swAvailableVersion = manifest.version;
152
- window.swUpdateRequired =
153
- semverCompare(currentVersion, manifest.minSupportedVersion || "0.0.0") < 0;
41
+ const registration = await navigator.serviceWorker.register("/${swFilename}.js");
154
42
 
155
- if (AUTO_UPDATE) {
156
- const registration = await navigator.serviceWorker.getRegistration();
157
- if (registration && registration.waiting) {
43
+ var swReadyDispatched = false;
44
+ if (registration.installing) {
45
+ const installingWorker = registration.installing;
46
+ installingWorker.addEventListener("statechange", () => {
47
+ if (installingWorker.state === "installed") {
158
48
  if (AUTO_ACTIVATE) {
159
- registration.waiting.postMessage({ type: "SKIP_WAITING" });
160
- } else {
161
- window.dispatchEvent(
162
- new CustomEvent("sw-update-available", {
163
- detail: { version: manifest.version },
164
- })
165
- );
166
- }
167
- } else {
168
- const newReg = await doRegisterServiceWorker(manifest.version);
169
- if (AUTO_ACTIVATE && newReg.waiting) {
170
- newReg.waiting.postMessage({ type: "SKIP_WAITING" });
171
- } else {
172
- window.dispatchEvent(
173
- new CustomEvent("sw-update-available", {
174
- detail: { version: manifest.version },
175
- })
176
- );
49
+ registration.waiting?.postMessage({ type: "SKIP_WAITING" });
177
50
  }
178
- }
179
- } else {
180
- window.dispatchEvent(
181
- new CustomEvent("sw-update-available", {
182
- detail: { version: manifest.version },
183
- })
184
- );
185
- }
186
- } else {
187
- await doRegisterServiceWorker(manifest.version);
188
- }
189
- } catch (error) {
190
- try {
191
- const existing = await navigator.serviceWorker.getRegistration();
192
- if (existing && existing.active) {
193
- window.currentSWVersion = localStorage.getItem("swRegisteredVersion") || "unknown";
194
- window.dispatchEvent(new CustomEvent("sw-version-detected"));
195
- await waitForController();
196
- if (!window.swReady) {
51
+ swReadyDispatched = true;
197
52
  window.dispatchEvent(new CustomEvent("sw-ready"));
198
53
  }
199
- return;
200
- }
201
- } catch {
202
- // Handle the case where no existing active registration is found
54
+ });
203
55
  }
204
56
 
205
- console.error("Service Worker initialization failed:", error);
57
+ await waitForController();
58
+ if (!swReadyDispatched) {
59
+ window.dispatchEvent(new CustomEvent("sw-ready"));
60
+ }
61
+ } catch (error) {
62
+ console.error("Service Worker registration failed:", error);
206
63
  window.swError = true;
207
64
  window.dispatchEvent(new CustomEvent("sw-error"));
208
65
  }
209
66
  }
210
67
 
211
- /** Accept a pending SW update. Reloads the page once the new SW takes control. */
212
- export async function handleUpdateApproved(newVersion${T(ts, "string")})${R(ts, "Promise<void>")}{
213
- const registration = await navigator.serviceWorker.getRegistration();
214
- if (registration && registration.waiting) {
215
- registration.waiting.postMessage({ type: "SKIP_WAITING" });
216
- registration.addEventListener("controllerchange", () => {
217
- window.location.reload();
218
- });
219
- } else {
220
- await doRegisterServiceWorker(newVersion);
221
- navigator.serviceWorker.addEventListener("controllerchange", () => {
222
- window.location.reload();
223
- });
224
- }
225
- }
226
-
227
68
  /** Activate a waiting SW without reloading. Useful when you handle the transition yourself. */
228
69
  export async function skipWaiting()${R(ts, "Promise<void>")}{
229
70
  const registration = await navigator.serviceWorker.ready;
@@ -1 +1 @@
1
- {"version":3,"file":"sw-injector.js","sourceRoot":"","sources":["../../src/runtime/sw-injector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,UAAU,sBAAsB,CACpC,GAAiH;IAEjH,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAE9E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO;;;;;8DAKmD,GAAG;;;;;;;;;;;;oCAY7B,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;;;;;;;;;;2CAef,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;oEAMG,UAAU;;;;;;;;;;;CAW7E,CAAC;IACA,CAAC;IAED,OAAO;;;;;8DAKqD,GAAG;;;;;;;;;;;;;;;;;;;sBAmB3C,UAAU;wBACR,YAAY;;0BAEV,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC;;;;;;;;;;;;;;;;;;oCAkB7C,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;;;;;;;;;gDAcV,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,oCAAoC,CAAC;;;;;;;;;;;;;2CAanE,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAoFV,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;;;;;;;;;;;;;;;;qCAgB3D,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,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"}
@@ -0,0 +1,13 @@
1
+ export function generateSwVersionCode(ctx) {
2
+ return `/**
3
+ * Swoff SW Version
4
+ *
5
+ * Developer-editable version used for SW URL and cache naming.
6
+ * - "package" mode: The build script overwrites this from package.json
7
+ * - "manual" mode: Edit this file directly to bump the version
8
+ * - "hash" mode: Not used (SW URL is fixed, cache is content-addressed)
9
+ */
10
+ export const SW_VERSION = ${JSON.stringify(ctx.version)};
11
+ `;
12
+ }
13
+ //# sourceMappingURL=sw-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-version.js","sourceRoot":"","sources":["../../src/runtime/sw-version.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CACnC,GAAyC;IAEzC,OAAO;;;;;;;;4BAQmB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;CACtD,CAAC;AACF,CAAC"}