@swoff/cli 0.3.12 → 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 (230) hide show
  1. package/README.md +32 -30
  2. package/dist/index.js +2 -32
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/cli/help.js +6 -16
  5. package/dist/lib/cli/help.js.map +1 -1
  6. package/dist/lib/cli/logger.js +1 -0
  7. package/dist/lib/cli/logger.js.map +1 -1
  8. package/dist/lib/commands/add.js +29 -87
  9. package/dist/lib/commands/add.js.map +1 -1
  10. package/dist/lib/commands/assets.js +11 -4
  11. package/dist/lib/commands/assets.js.map +1 -1
  12. package/dist/lib/commands/clean.js +2 -10
  13. package/dist/lib/commands/clean.js.map +1 -1
  14. package/dist/lib/commands/generate-guide.js +16 -30
  15. package/dist/lib/commands/generate-guide.js.map +1 -1
  16. package/dist/lib/commands/generate.js +55 -58
  17. package/dist/lib/commands/generate.js.map +1 -1
  18. package/dist/lib/commands/init.js +187 -31
  19. package/dist/lib/commands/init.js.map +1 -1
  20. package/dist/lib/commands/validate.js +2 -4
  21. package/dist/lib/commands/validate.js.map +1 -1
  22. package/dist/lib/config/loader.js +34 -25
  23. package/dist/lib/config/loader.js.map +1 -1
  24. package/dist/lib/config/validator.js +210 -89
  25. package/dist/lib/config/validator.js.map +1 -1
  26. package/dist/lib/generators/file-generators/api-config.js +1 -1
  27. package/dist/lib/generators/file-generators/api-config.js.map +1 -1
  28. package/dist/lib/generators/file-generators/auth-adapter.js +13 -0
  29. package/dist/lib/generators/file-generators/auth-adapter.js.map +1 -0
  30. package/dist/lib/generators/file-generators/auth-check.js +40 -0
  31. package/dist/lib/generators/file-generators/auth-check.js.map +1 -0
  32. package/dist/lib/generators/file-generators/auth-store.js +2 -5
  33. package/dist/lib/generators/file-generators/auth-store.js.map +1 -1
  34. package/dist/lib/generators/file-generators/background-sync.js +1 -1
  35. package/dist/lib/generators/file-generators/background-sync.js.map +1 -1
  36. package/dist/lib/generators/file-generators/cache.js +2 -1
  37. package/dist/lib/generators/file-generators/cache.js.map +1 -1
  38. package/dist/lib/generators/file-generators/client-injector-bundle.js +15 -0
  39. package/dist/lib/generators/file-generators/client-injector-bundle.js.map +1 -0
  40. package/dist/lib/generators/file-generators/client-injector.js +2 -1
  41. package/dist/lib/generators/file-generators/client-injector.js.map +1 -1
  42. package/dist/lib/generators/file-generators/connectivity-manager.js +12 -0
  43. package/dist/lib/generators/file-generators/connectivity-manager.js.map +1 -0
  44. package/dist/lib/generators/file-generators/connectivity.js +12 -0
  45. package/dist/lib/generators/file-generators/connectivity.js.map +1 -0
  46. package/dist/lib/generators/file-generators/context.js +7 -0
  47. package/dist/lib/generators/file-generators/context.js.map +1 -1
  48. package/dist/lib/generators/file-generators/fetch-wrapper.js +1 -1
  49. package/dist/lib/generators/file-generators/fetch-wrapper.js.map +1 -1
  50. package/dist/lib/generators/file-generators/generate-framework-adapters.js +29 -23
  51. package/dist/lib/generators/file-generators/generate-framework-adapters.js.map +1 -1
  52. package/dist/lib/generators/file-generators/gql-wrapper.js +2 -2
  53. package/dist/lib/generators/file-generators/gql-wrapper.js.map +1 -1
  54. package/dist/lib/generators/file-generators/guide-generator.js +57 -16
  55. package/dist/lib/generators/file-generators/guide-generator.js.map +1 -1
  56. package/dist/lib/generators/file-generators/invalidation-tags.js +2 -3
  57. package/dist/lib/generators/file-generators/invalidation-tags.js.map +1 -1
  58. package/dist/lib/generators/file-generators/mutation-queue.js +2 -2
  59. package/dist/lib/generators/file-generators/mutation-queue.js.map +1 -1
  60. package/dist/lib/generators/file-generators/mutation-state.js +1 -1
  61. package/dist/lib/generators/file-generators/mutation-state.js.map +1 -1
  62. package/dist/lib/generators/file-generators/notification-generator.js +6 -0
  63. package/dist/lib/generators/file-generators/notification-generator.js.map +1 -0
  64. package/dist/lib/generators/file-generators/open-db.js +6 -0
  65. package/dist/lib/generators/file-generators/open-db.js.map +1 -0
  66. package/dist/lib/generators/file-generators/push.js +1 -2
  67. package/dist/lib/generators/file-generators/push.js.map +1 -1
  68. package/dist/lib/generators/file-generators/pwa-install.js +2 -6
  69. package/dist/lib/generators/file-generators/pwa-install.js.map +1 -1
  70. package/dist/lib/generators/file-generators/server-push.js +1 -1
  71. package/dist/lib/generators/file-generators/server-push.js.map +1 -1
  72. package/dist/lib/generators/file-generators/storage-generator.js +6 -0
  73. package/dist/lib/generators/file-generators/storage-generator.js.map +1 -0
  74. package/dist/lib/generators/file-generators/storage-notify.js +6 -0
  75. package/dist/lib/generators/file-generators/storage-notify.js.map +1 -0
  76. package/dist/lib/generators/file-generators/storage.js +6 -0
  77. package/dist/lib/generators/file-generators/storage.js.map +1 -0
  78. package/dist/lib/generators/file-generators/sw-generator-build.js +96 -45
  79. package/dist/lib/generators/file-generators/sw-generator-build.js.map +1 -1
  80. package/dist/lib/generators/file-generators/sw-injector.js +1 -4
  81. package/dist/lib/generators/file-generators/sw-injector.js.map +1 -1
  82. package/dist/lib/generators/file-generators/sw-template.js +8 -9
  83. package/dist/lib/generators/file-generators/sw-template.js.map +1 -1
  84. package/dist/lib/generators/file-generators/sw-version-gen.js +32 -0
  85. package/dist/lib/generators/file-generators/sw-version-gen.js.map +1 -0
  86. package/dist/lib/generators/file-generators/swoff-api-bundle.js +51 -0
  87. package/dist/lib/generators/file-generators/swoff-api-bundle.js.map +1 -0
  88. package/dist/lib/generators/sw-build-utils.js +69 -0
  89. package/dist/lib/generators/sw-build-utils.js.map +1 -0
  90. package/dist/lib/generators/sw-generator.js +26 -45
  91. package/dist/lib/generators/sw-generator.js.map +1 -1
  92. package/dist/lib/generators/sw-sections/activate-handler.js +74 -23
  93. package/dist/lib/generators/sw-sections/activate-handler.js.map +1 -1
  94. package/dist/lib/generators/sw-sections/assemble-sw.js +15 -95
  95. package/dist/lib/generators/sw-sections/assemble-sw.js.map +1 -1
  96. package/dist/lib/generators/sw-sections/background-sync-handler.js +74 -72
  97. package/dist/lib/generators/sw-sections/background-sync-handler.js.map +1 -1
  98. package/dist/lib/generators/sw-sections/batch-refresh-queue.js +102 -0
  99. package/dist/lib/generators/sw-sections/batch-refresh-queue.js.map +1 -0
  100. package/dist/lib/generators/sw-sections/config-header.js +2 -3
  101. package/dist/lib/generators/sw-sections/config-header.js.map +1 -1
  102. package/dist/lib/generators/sw-sections/default-template.js +59 -6
  103. package/dist/lib/generators/sw-sections/default-template.js.map +1 -1
  104. package/dist/lib/generators/sw-sections/fetch-handler.js +621 -495
  105. package/dist/lib/generators/sw-sections/fetch-handler.js.map +1 -1
  106. package/dist/lib/generators/sw-sections/install-handler.js +40 -23
  107. package/dist/lib/generators/sw-sections/install-handler.js.map +1 -1
  108. package/dist/lib/generators/sw-sections/message-handler.js +25 -8
  109. package/dist/lib/generators/sw-sections/message-handler.js.map +1 -1
  110. package/dist/lib/generators/sw-sections/server-push-handler.js +10 -14
  111. package/dist/lib/generators/sw-sections/server-push-handler.js.map +1 -1
  112. package/dist/lib/generators/sw-sections/shared.js +68 -0
  113. package/dist/lib/generators/sw-sections/shared.js.map +1 -0
  114. package/dist/lib/generators/sw-sections/sw-push.js +2 -6
  115. package/dist/lib/generators/sw-sections/sw-push.js.map +1 -1
  116. package/dist/lib/generators/sw-sections/tag-management.js +55 -86
  117. package/dist/lib/generators/sw-sections/tag-management.js.map +1 -1
  118. package/dist/lib/generators/swoff-files-generator.js +185 -66
  119. package/dist/lib/generators/swoff-files-generator.js.map +1 -1
  120. package/dist/lib/shared/config-types.js +68 -72
  121. package/dist/lib/shared/config-types.js.map +1 -1
  122. package/dist/lib/shared/feature-registry.js +198 -0
  123. package/dist/lib/shared/feature-registry.js.map +1 -0
  124. package/dist/lib/utils/detect-framework.js +52 -9
  125. package/dist/lib/utils/detect-framework.js.map +1 -1
  126. package/dist/runtime/api-config.js +2 -2
  127. package/dist/runtime/api-config.js.map +1 -1
  128. package/dist/runtime/auth-adapter.js +179 -0
  129. package/dist/runtime/auth-adapter.js.map +1 -0
  130. package/dist/runtime/auth-state.js +16 -6
  131. package/dist/runtime/auth-state.js.map +1 -1
  132. package/dist/runtime/auth-store.js +219 -213
  133. package/dist/runtime/auth-store.js.map +1 -1
  134. package/dist/runtime/auth-user.js +5 -19
  135. package/dist/runtime/auth-user.js.map +1 -1
  136. package/dist/runtime/background-sync.js +5 -2
  137. package/dist/runtime/background-sync.js.map +1 -1
  138. package/dist/runtime/cache.js +91 -3
  139. package/dist/runtime/cache.js.map +1 -1
  140. package/dist/runtime/client-injector-bundle.js +314 -0
  141. package/dist/runtime/client-injector-bundle.js.map +1 -0
  142. package/dist/runtime/client-injector.js +173 -30
  143. package/dist/runtime/client-injector.js.map +1 -1
  144. package/dist/runtime/connectivity-manager.js +83 -0
  145. package/dist/runtime/connectivity-manager.js.map +1 -0
  146. package/dist/runtime/connectivity.js +83 -0
  147. package/dist/runtime/connectivity.js.map +1 -0
  148. package/dist/runtime/fetch-wrapper.js +26 -59
  149. package/dist/runtime/fetch-wrapper.js.map +1 -1
  150. package/dist/runtime/gql-wrapper.js +15 -9
  151. package/dist/runtime/gql-wrapper.js.map +1 -1
  152. package/dist/runtime/invalidation-tags.js +12 -89
  153. package/dist/runtime/invalidation-tags.js.map +1 -1
  154. package/dist/runtime/mutation-queue.js +83 -31
  155. package/dist/runtime/mutation-queue.js.map +1 -1
  156. package/dist/runtime/mutation-state.js +3 -3
  157. package/dist/runtime/mutation-state.js.map +1 -1
  158. package/dist/runtime/notification.js +65 -0
  159. package/dist/runtime/notification.js.map +1 -0
  160. package/dist/runtime/open-db.js +41 -0
  161. package/dist/runtime/open-db.js.map +1 -0
  162. package/dist/runtime/push.js +15 -27
  163. package/dist/runtime/push.js.map +1 -1
  164. package/dist/runtime/pwa-injector.js +3 -32
  165. package/dist/runtime/pwa-injector.js.map +1 -1
  166. package/dist/runtime/pwa-prompt.js +35 -3
  167. package/dist/runtime/pwa-prompt.js.map +1 -1
  168. package/dist/runtime/reset.js +39 -42
  169. package/dist/runtime/reset.js.map +1 -1
  170. package/dist/runtime/server-push.js +23 -13
  171. package/dist/runtime/server-push.js.map +1 -1
  172. package/dist/runtime/storage.js +32 -0
  173. package/dist/runtime/storage.js.map +1 -0
  174. package/dist/runtime/sw-injector.js +19 -178
  175. package/dist/runtime/sw-injector.js.map +1 -1
  176. package/dist/runtime/sw-version.js +13 -0
  177. package/dist/runtime/sw-version.js.map +1 -0
  178. package/dist/runtime/swoff-api-bundle.js +1491 -0
  179. package/dist/runtime/swoff-api-bundle.js.map +1 -0
  180. package/dist/runtime/type-definitions.js +8 -7
  181. package/dist/runtime/type-definitions.js.map +1 -1
  182. package/dist/runtime/utils.js +4 -0
  183. package/dist/runtime/utils.js.map +1 -1
  184. package/dist/swoff-nkdhhmw8. +18 -0
  185. package/dist/swoff.js +5 -0
  186. package/package.json +1 -3
  187. package/templates/react/useAuth.jsx +7 -4
  188. package/templates/react/useAuth.tsx +14 -14
  189. package/templates/react/useBackgroundSync.jsx +5 -4
  190. package/templates/react/useBackgroundSync.tsx +5 -4
  191. package/templates/react/useCachedFetch.jsx +8 -0
  192. package/templates/react/useCachedFetch.tsx +8 -0
  193. package/templates/react/useMutation.jsx +60 -56
  194. package/templates/react/useMutation.tsx +65 -64
  195. package/templates/react/useMutationQueue.jsx +5 -1
  196. package/templates/react/useMutationQueue.tsx +8 -2
  197. package/templates/react/useMutationState.jsx +3 -4
  198. package/templates/react/useMutationState.tsx +4 -8
  199. package/templates/react/useNetworkStatus.jsx +57 -17
  200. package/templates/react/useNetworkStatus.tsx +42 -20
  201. package/templates/react/useOfflineAnalytics.jsx +42 -0
  202. package/templates/react/useOfflineAnalytics.tsx +50 -0
  203. package/templates/react/usePwaInstall.jsx +26 -0
  204. package/templates/react/usePwaInstall.tsx +26 -0
  205. package/templates/react/useSWUpdate.jsx +7 -52
  206. package/templates/react/useSWUpdate.tsx +12 -51
  207. package/templates/react/useStorageEstimate.jsx +56 -0
  208. package/templates/react/useStorageEstimate.tsx +67 -0
  209. package/dist/__tests__/assemble-sw.test.js +0 -145
  210. package/dist/__tests__/assemble-sw.test.js.map +0 -1
  211. package/dist/__tests__/cli-integration.test.js +0 -231
  212. package/dist/__tests__/cli-integration.test.js.map +0 -1
  213. package/dist/__tests__/config-types.test.js +0 -124
  214. package/dist/__tests__/config-types.test.js.map +0 -1
  215. package/dist/__tests__/detect-language.test.js +0 -51
  216. package/dist/__tests__/detect-language.test.js.map +0 -1
  217. package/dist/__tests__/file-generators.test.js +0 -228
  218. package/dist/__tests__/file-generators.test.js.map +0 -1
  219. package/dist/__tests__/glob-matcher.test.js +0 -86
  220. package/dist/__tests__/glob-matcher.test.js.map +0 -1
  221. package/dist/__tests__/invalidation-tags.test.js +0 -283
  222. package/dist/__tests__/invalidation-tags.test.js.map +0 -1
  223. package/dist/__tests__/loader.test.js +0 -77
  224. package/dist/__tests__/loader.test.js.map +0 -1
  225. package/dist/__tests__/validator.test.js +0 -340
  226. package/dist/__tests__/validator.test.js.map +0 -1
  227. package/templates/react/useCacheInvalidation.jsx +0 -19
  228. package/templates/react/useCacheInvalidation.tsx +0 -52
  229. package/templates/react/useIsFetching.jsx +0 -32
  230. package/templates/react/useIsFetching.tsx +0 -32
@@ -3,17 +3,70 @@
3
3
  * Placeholders are replaced during generation with feature-specific code.
4
4
  */
5
5
  export function getDefaultTemplate() {
6
- return `let CACHE_NAME = "";
7
- let ASSETS_TO_CACHE = [];
6
+ return `let ASSETS_TO_CACHE = [];
7
+ let AUTO_SKIP_WAITING = false;
8
8
 
9
- // [[CACHE_NAME]]
10
- // [[ASSETS_LIST]]
11
- // [[AUTO_SKIP_WAITING]]
9
+ // --- Shared IndexedDB Utility ---
12
10
 
13
- const CACHE_NAME_RUNTIME = "swoff-runtime";
11
+ function openDB(dbName, version, onUpgrade) {
12
+ return new Promise(function(resolve, reject) {
13
+ if (typeof indexedDB === "undefined") {
14
+ reject(new Error("IndexedDB is not available (private browsing mode?)"));
15
+ return;
16
+ }
17
+ try {
18
+ var request = indexedDB.open(dbName, version);
19
+ request.onupgradeneeded = function(e) {
20
+ if (onUpgrade) onUpgrade(e.target.result);
21
+ };
22
+ request.onsuccess = function(e) { resolve(e.target.result); };
23
+ request.onerror = function(e) { reject(e.target.error); };
24
+ } catch (e) {
25
+ reject(e);
26
+ }
27
+ });
28
+ }
29
+
30
+ // --- Shared Reactive Intervals ---
31
+
32
+ var REACTIVE_ENTRIES = null;
33
+ var REACTIVE_INTERVALS = null;
34
+ var clearAllReactive = null;
35
+
36
+ // --- IDB Pruning Helper ---
37
+
38
+ function pruneStaleStore(db, storeName, cutoff, keyField) {
39
+ return new Promise(function(resolve, reject) {
40
+ var tx = db.transaction(storeName, "readwrite");
41
+ var store = tx.objectStore(storeName);
42
+ var req = store.getAll();
43
+ req.onsuccess = function() {
44
+ var entries = req.result;
45
+ for (var i = 0; i < entries.length; i++) {
46
+ if (entries[i].timestamp && entries[i].timestamp < cutoff) {
47
+ store.delete(entries[i][keyField || "url"]);
48
+ }
49
+ }
50
+ };
51
+ req.onerror = function() { reject(req.error); };
52
+ tx.oncomplete = function() { resolve(); };
53
+ tx.onerror = function() { reject(tx.error); };
54
+ });
55
+ }
56
+
57
+ // --- Broadcast Helper ---
58
+
59
+ function broadcastToClients(type, payload) {
60
+ return self.clients.matchAll().then(function(clients) {
61
+ clients.forEach(function(client) {
62
+ client.postMessage(Object.assign({ type: type }, payload || {}));
63
+ });
64
+ });
65
+ }
14
66
 
15
67
  // [[INSTALL_HANDLER]]
16
68
  // [[ACTIVATE_HANDLER]]
69
+ // [[BATCH_REFRESH_QUEUE]]
17
70
  // [[MESSAGE_HANDLER]]
18
71
  // [[FETCH_HANDLER]]
19
72
  // [[TAG_MANAGEMENT]]
@@ -1 +1 @@
1
- {"version":3,"file":"default-template.js","sourceRoot":"","sources":["../../../../src/lib/generators/sw-sections/default-template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;2BAekB,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"default-template.js","sourceRoot":"","sources":["../../../../src/lib/generators/sw-sections/default-template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAoEkB,CAAC;AAC5B,CAAC"}