@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
@@ -1,81 +1,204 @@
1
- /**
2
- * Swoff Files Generator
3
- *
4
- * Generates framework-agnostic pattern files based on swoff.config.json features.
5
- * Thin orchestrator - delegates to file-generators for each template.
6
- *
7
- * CLI Usage:
8
- * node swoff-files-generator.js --project-root <path> --language <ts|js> --config-path <path>
9
- *
10
- * Module Usage:
11
- * import { generateFiles } from './swoff-files-generator.js';
12
- * const files = generateFiles(ctx, (name) => { ... });
13
- */
14
1
  import { join } from "path";
15
2
  import { fileURLToPath } from "url";
16
3
  import { loadConfigAsync } from "../config/loader.js";
17
- import { statusLine, clearStatusLine } from "../utils/tty-status.js";
18
4
  import { generateApiConfig } from "./file-generators/api-config.js";
19
5
  import { generateSwTemplate } from "./file-generators/sw-template.js";
20
6
  import { generateSwInjector } from "./file-generators/sw-injector.js";
21
7
  import { generateClientInjector } from "./file-generators/client-injector.js";
8
+ import { generateClientInjectorBundle } from "./file-generators/client-injector-bundle.js";
22
9
  import { generateFetchWrapper } from "./file-generators/fetch-wrapper.js";
23
10
  import { generateCache } from "./file-generators/cache.js";
24
11
  import { generateMutationQueue } from "./file-generators/mutation-queue.js";
12
+ import { shouldIncludeBackgroundSync, shouldIncludeServerPush } from "./sw-sections/shared.js";
25
13
  import { generateBackgroundSync } from "./file-generators/background-sync.js";
26
14
  import { generatePwaInstall } from "./file-generators/pwa-install.js";
27
- import { generateManifest } from "./file-generators/manifest.js";
28
15
  import { generateInvalidationTags } from "./file-generators/invalidation-tags.js";
29
16
  import { generatePush } from "./file-generators/push.js";
30
17
  import { generateMutationState } from "./file-generators/mutation-state.js";
31
18
  import { generateServerPush } from "./file-generators/server-push.js";
32
19
  import { generateAuthStore } from "./file-generators/auth-store.js";
33
- import { generateAuthUser } from "./file-generators/auth-user.js";
20
+ import { generateAuthAdapter } from "./file-generators/auth-adapter.js";
34
21
  import { generateAuthState } from "./file-generators/auth-state.js";
35
22
  import { generateSwGeneratorBuild } from "./file-generators/sw-generator-build.js";
36
23
  import { generateGqlWrapper } from "./file-generators/gql-wrapper.js";
37
24
  import { generateTypeDefinitions } from "./file-generators/type-definitions.js";
38
25
  import { generateFrameworkAdapters } from "./file-generators/generate-framework-adapters.js";
39
- import { generateGuide } from "./file-generators/guide-generator.js";
26
+ import { generateSwoffApiBundle } from "./file-generators/swoff-api-bundle.js";
40
27
  import { generateReset } from "./file-generators/reset.js";
41
- import { generateFetchState } from "./file-generators/fetch-state.js";
42
- export function generateFiles(ctx, onFile) {
28
+ import { generateOpenDB } from "./file-generators/open-db.js";
29
+ import { generateStorage } from "./file-generators/storage.js";
30
+ import { generateConnectivity } from "./file-generators/connectivity.js";
31
+ import { generateAuthCheck } from "./file-generators/auth-check.js";
32
+ import { hasBundler } from "./file-generators/context.js";
33
+ function resolveFeatures(config) {
34
+ const auth = config.features.auth.enabled;
35
+ const mutationQueue = config.features.mutationQueue.enabled;
36
+ const tagInvalidation = config.features.tagInvalidation.enabled || mutationQueue || config.features.graphql.enabled;
37
+ const connectivity = config.features.connectivity.enabled || auth;
38
+ const push = config.features.pushNotifications;
39
+ const graphql = config.features.graphql.enabled;
40
+ const pwa = config.features.pwa.enabled;
41
+ const serverPush = shouldIncludeServerPush(config);
42
+ const backgroundSync = shouldIncludeBackgroundSync(config);
43
+ return {
44
+ connectivity,
45
+ tagInvalidation,
46
+ auth,
47
+ mutationQueue,
48
+ backgroundSync,
49
+ push,
50
+ graphql,
51
+ pwa,
52
+ serverPush,
53
+ needDb: auth || mutationQueue || push,
54
+ };
55
+ }
56
+ export function generateFiles(ctx) {
57
+ const bundler = ctx.hasBundler;
58
+ const f = resolveFeatures(ctx.config);
59
+ if (!bundler) {
60
+ ctx.hasBundler = false;
61
+ const hasApiFeatures = f.tagInvalidation || f.auth || f.mutationQueue || f.graphql || f.push;
62
+ const bundleSteps = [
63
+ { name: "sw-template", gen: () => generateSwTemplate(ctx), enabled: true },
64
+ { name: "sw-generator", gen: () => generateSwGeneratorBuild(ctx), enabled: true },
65
+ {
66
+ name: "client-injector-bundle",
67
+ gen: () => generateClientInjectorBundle(ctx),
68
+ enabled: true,
69
+ },
70
+ {
71
+ name: "swoff-api-bundle",
72
+ gen: () => generateSwoffApiBundle(ctx),
73
+ enabled: hasApiFeatures,
74
+ },
75
+ ];
76
+ for (const step of bundleSteps) {
77
+ if (!step.enabled)
78
+ continue;
79
+ step.gen();
80
+ }
81
+ return ctx.generatedFiles;
82
+ }
43
83
  const steps = [
44
- { name: "api-config", gen: () => generateApiConfig(ctx), enabled: true },
84
+ { name: "api-config", gen: () => generateApiConfig(ctx), enabled: f.serverPush },
45
85
  { name: "sw-template", gen: () => generateSwTemplate(ctx), enabled: true },
46
86
  { name: "sw-injector", gen: () => generateSwInjector(ctx), enabled: true },
47
- { name: "client-injector", gen: () => generateClientInjector(ctx), enabled: true },
48
- { name: "fetch/core", gen: () => generateFetchWrapper(ctx), enabled: true },
49
- { name: "cache/index", gen: () => generateCache(ctx), enabled: true },
50
- { name: "fetch/state", gen: () => generateFetchState(ctx), enabled: true },
87
+ {
88
+ name: "client-injector",
89
+ gen: () => generateClientInjector(ctx),
90
+ enabled: true,
91
+ },
92
+ {
93
+ name: "connectivity",
94
+ gen: () => generateConnectivity(ctx),
95
+ enabled: f.connectivity,
96
+ },
97
+ { name: "storage", gen: () => generateStorage(ctx), enabled: true },
51
98
  { name: "reset", gen: () => generateReset(ctx), enabled: true },
52
- { name: "offline/queue", gen: () => generateMutationQueue(ctx), enabled: ctx.config.features.mutationQueue.enabled },
53
- { name: "offline/state", gen: () => generateMutationState(ctx), enabled: ctx.config.features.mutationQueue.enabled },
54
- { name: "offline/sync", gen: () => generateBackgroundSync(ctx), enabled: ctx.config.features.backgroundSync && ctx.config.features.mutationQueue.enabled && !(ctx.config.features.auth.enabled && ctx.config.features.auth.type !== "cookie") },
55
- { name: "auth-store", gen: () => generateAuthStore(ctx), enabled: ctx.config.features.auth.enabled },
56
- { name: "auth-user", gen: () => generateAuthUser(ctx), enabled: ctx.config.features.auth.enabled },
57
- { name: "auth-state", gen: () => generateAuthState(ctx), enabled: ctx.config.features.auth.enabled },
58
- { name: "sw-generator", gen: () => generateSwGeneratorBuild(ctx), enabled: true },
59
- { name: "swoff.d.ts", gen: () => generateTypeDefinitions(ctx), enabled: ctx.ext === "ts" },
60
- { name: "pwa/injector", gen: () => generatePwaInstall(ctx), enabled: ctx.config.features.pwa.enabled },
61
- { name: "manifest.json", gen: () => generateManifest(ctx), enabled: ctx.config.features.pwa.enabled },
62
- { name: "cache/tags", gen: () => generateInvalidationTags(ctx), enabled: true },
63
- { name: "graphql/index", gen: () => generateGqlWrapper(ctx), enabled: ctx.config.features.graphql.enabled },
64
- { name: "realtime/notifications", gen: () => generatePush(ctx), enabled: ctx.config.features.pushNotifications?.enabled ?? false },
65
- { name: "realtime/server-push", gen: () => generateServerPush(ctx), enabled: ctx.config.features.serverPush.enabled },
66
- { name: "framework-adapters", gen: () => generateFrameworkAdapters(ctx), enabled: true },
67
- { name: "GUIDE.md", gen: () => generateGuide(ctx), enabled: true },
99
+ { name: "db", gen: () => generateOpenDB(ctx), enabled: f.needDb },
100
+ {
101
+ name: "fetch/core",
102
+ gen: () => generateFetchWrapper(ctx),
103
+ enabled: f.tagInvalidation,
104
+ },
105
+ {
106
+ name: "cache/tags",
107
+ gen: () => generateInvalidationTags(ctx),
108
+ enabled: f.tagInvalidation,
109
+ },
110
+ {
111
+ name: "cache/invalidate",
112
+ gen: () => generateCache(ctx),
113
+ enabled: f.tagInvalidation,
114
+ },
115
+ {
116
+ name: "mutation/queue",
117
+ gen: () => generateMutationQueue(ctx),
118
+ enabled: f.mutationQueue,
119
+ },
120
+ {
121
+ name: "mutation/state",
122
+ gen: () => generateMutationState(ctx),
123
+ enabled: f.mutationQueue,
124
+ },
125
+ {
126
+ name: "mutation/sync",
127
+ gen: () => generateBackgroundSync(ctx),
128
+ enabled: f.backgroundSync,
129
+ },
130
+ {
131
+ name: "auth/adapter",
132
+ gen: () => generateAuthAdapter(ctx),
133
+ enabled: f.auth,
134
+ },
135
+ {
136
+ name: "auth-store",
137
+ gen: () => generateAuthStore(ctx),
138
+ enabled: f.auth,
139
+ },
140
+ {
141
+ name: "auth-state",
142
+ gen: () => generateAuthState(ctx),
143
+ enabled: f.auth,
144
+ },
145
+ {
146
+ name: "auth/check",
147
+ gen: () => generateAuthCheck(ctx),
148
+ enabled: f.auth,
149
+ },
150
+ {
151
+ name: "sw-generator",
152
+ gen: () => generateSwGeneratorBuild(ctx),
153
+ enabled: true,
154
+ },
155
+ {
156
+ name: "swoff.d.ts",
157
+ gen: () => generateTypeDefinitions(ctx),
158
+ enabled: ctx.ext === "ts",
159
+ },
160
+ {
161
+ name: "pwa/prompt",
162
+ gen: () => generatePwaInstall(ctx),
163
+ enabled: f.pwa,
164
+ },
165
+ {
166
+ name: "graphql/index",
167
+ gen: () => generateGqlWrapper(ctx),
168
+ enabled: f.graphql,
169
+ },
170
+ {
171
+ name: "push-notification/index",
172
+ gen: () => generatePush(ctx),
173
+ enabled: f.push,
174
+ },
175
+ {
176
+ name: "server-push/client",
177
+ gen: () => generateServerPush(ctx),
178
+ enabled: f.serverPush,
179
+ },
180
+ {
181
+ name: "framework-adapters",
182
+ gen: () => generateFrameworkAdapters(ctx),
183
+ enabled: [
184
+ "react-spa",
185
+ "nextjs",
186
+ "remix",
187
+ "tanstack-start-react",
188
+ "astro",
189
+ ].includes(ctx.frameworkName),
190
+ },
68
191
  ];
69
192
  for (const step of steps) {
70
193
  if (!step.enabled)
71
194
  continue;
72
- onFile?.(step.name);
73
195
  step.gen();
74
196
  }
75
197
  return ctx.generatedFiles;
76
198
  }
77
199
  // --- CLI entry point ---
78
- if (fileURLToPath(import.meta.url) === fileURLToPath(new URL(process.argv[1], "file:"))) {
200
+ if (fileURLToPath(import.meta.url) ===
201
+ fileURLToPath(new URL(process.argv[1], "file:"))) {
79
202
  const args = process.argv.slice(2);
80
203
  const getArg = (name) => {
81
204
  const idx = args.indexOf(`--${name}`);
@@ -84,51 +207,47 @@ if (fileURLToPath(import.meta.url) === fileURLToPath(new URL(process.argv[1], "f
84
207
  const projectRoot = getArg("project-root") || process.cwd();
85
208
  const language = getArg("language") || "ts";
86
209
  const configPath = getArg("config-path") || join(projectRoot, "swoff.config.json");
87
- loadConfigAsync(projectRoot, configPath).then(({ config }) => {
88
- if (!config.enabled) {
89
- console.log("Config generation disabled");
90
- process.exit(0);
91
- }
210
+ const debug = getArg("debug") === "true";
211
+ loadConfigAsync(projectRoot, configPath)
212
+ .then(({ config }) => {
92
213
  const ext = language === "ts" ? "ts" : "js";
93
214
  const swoffDir = join(projectRoot, "swoff");
94
215
  const generatedFiles = [];
216
+ const fwName = config.framework ?? "vanilla";
95
217
  const ctx = {
96
218
  config,
97
219
  projectRoot,
98
220
  swoffDir,
99
221
  ext,
100
222
  generatedFiles,
101
- frameworkName: config.framework ?? "vanilla",
223
+ frameworkName: fwName,
224
+ hasBundler: hasBundler(fwName),
225
+ debug,
102
226
  };
103
227
  console.log(`Generating Swoff files (${language})...`);
104
- generateFiles(ctx, (name) => statusLine(`→ ${name}...`));
105
- clearStatusLine();
228
+ generateFiles(ctx);
106
229
  console.log("Generated files:");
107
230
  generatedFiles.forEach((file) => console.log(` ${file}`));
108
231
  console.log(`\nTotal: ${generatedFiles.length} files`);
109
232
  if (config.features.auth.enabled) {
110
233
  const authType = config.features.auth.type;
111
234
  console.log(`\n--- Auth Setup ---`);
112
- console.log(` Auth type: ${authType}`);
113
- console.log(` 1. Edit swoff/auth/user.ts to match your backend:`);
114
- if (authType === "cookie") {
115
- console.log(` - refreshSession(): adjust method, URL, or body if your refresh endpoint differs`);
116
- console.log(` - fetchCurrentUser(): adjust method or URL for your /api/me endpoint`);
117
- console.log(` Cookie auth uses credentials: "include" no token management needed.`);
235
+ console.log(` Auth adapter: ${authType}`);
236
+ console.log(` 1. Edit swoff/auth/adapter.ts to match your backend:`);
237
+ if (authType === "cookie" || authType === "bearer" || authType === "custom") {
238
+ console.log(` - getHeaders(): return auth headers for fetch requests`);
239
+ console.log(` - refresh(): implement token/session refresh`);
240
+ console.log(` - fetchUser(): implement fetching current user`);
118
241
  }
119
242
  else {
120
- console.log(` - refreshSession(): add token header or body logic for your server`);
121
- console.log(` - fetchCurrentUser(): add the Authorization header using the user's token`);
122
- console.log(` Get the token from auth/store.ts via getAuth().`);
243
+ console.log(` - Review the import path and defaults for your auth provider.`);
123
244
  }
124
- console.log(` 2. Edit swoff/auth/store.ts to match your login response shape:`);
125
- console.log(` - createAuthFromResponse(): map your backend's JSON fields to AuthData`);
126
- console.log(` 3. Edit swoff/fetch-wrapper.ts options per-request as needed:`);
127
- console.log(` - Use { auth: true } for authenticated requests`);
128
- console.log(` - Use { invalidate: [...] } for custom cache invalidation`);
245
+ console.log(` 2. Use { auth: true } in fetchWithCache for authenticated requests`);
246
+ console.log(` 3. Use setAuth()/clearAuth() from auth/store.ts in login/logout handlers`);
129
247
  }
130
- }).catch((err) => {
131
- console.error("Failed to load config:", err.message);
248
+ })
249
+ .catch((err) => {
250
+ console.error("Failed to load config:", err instanceof Error ? err.message : String(err));
132
251
  process.exit(1);
133
252
  });
134
253
  }
@@ -1 +1 @@
1
- {"version":3,"file":"swoff-files-generator.js","sourceRoot":"","sources":["../../../src/lib/generators/swoff-files-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swoff-files-generator.js","sourceRoot":"","sources":["../../../src/lib/generators/swoff-files-generator.ts"],"names":[],"mappings":"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"}
@@ -4,28 +4,23 @@ export const REACTIVE_FIELDS = [
4
4
  "refetchOnReconnect",
5
5
  "refetchOnFocus",
6
6
  ];
7
- export const CONFIG_VERSION = 1;
8
7
  export const KNOWN_FEATURES = [
9
8
  "refetchQueue",
10
9
  "mutationQueue",
11
- "backgroundSync",
12
10
  "auth",
13
- "crossTabSync",
14
- "tagInvalidation",
15
11
  "graphql",
16
12
  "pushNotifications",
17
- "serverPush",
18
13
  ];
19
14
  export const OBJECT_FEATURES = [
20
15
  "pwa",
21
16
  "serviceWorker",
22
17
  "auth",
23
- "pushNotifications",
24
18
  "graphql",
25
- "serverPush",
26
19
  "tagInvalidation",
27
20
  "mutationQueue",
28
21
  "refetchQueue",
22
+ "serverPush",
23
+ "connectivity",
29
24
  ];
30
25
  export const VALID_STRATEGIES = [
31
26
  "cache-first",
@@ -38,63 +33,74 @@ export const VALID_STRATEGIES = [
38
33
  export const API_PREFIXES = ["api", "v1", "v2", "v3", "rest", "graphql", "gql"];
39
34
  export const defaultAuth = {
40
35
  enabled: false,
41
- type: "bearer",
42
- refreshPath: "/api/refresh",
43
- userEndpoint: "/api/me",
36
+ type: "cookie",
37
+ routePaths: ["/login", "/logout", "/register", "/api/login", "/api/logout", "/api/register", "/api/refresh", "/api/me"],
44
38
  };
45
39
  export const defaultGql = {
46
40
  enabled: false,
47
- endpoint: "/graphql",
41
+ endpoints: ["/graphql"],
48
42
  };
49
43
  export const defaultMutationQueue = {
50
44
  enabled: false,
51
45
  batchSize: 1,
52
46
  batchDelayMs: 0,
53
- maxRetries: 5,
54
- retryBackoffMs: 1000,
55
- };
56
- export const defaultPwaAssets = {
57
- source: "",
58
- outputDir: "public",
59
- themeColor: "#000000",
60
- bgColor: "#ffffff",
61
- generated: false,
47
+ backgroundSync: false,
48
+ retry: { maxRetries: 5, backoffMs: 1000, maxBackoffMs: 30000, jitterMs: 250 },
62
49
  };
63
50
  export const defaultRefetchQueue = {
64
51
  batchSize: 5,
65
52
  batchDelayMs: 1000,
66
- maxRetries: 3,
67
- retryDelayMs: 1000,
53
+ retry: { maxRetries: 3, backoffMs: 1000, maxBackoffMs: 10000, jitterMs: 100 },
68
54
  };
69
- export const defaultServerPush = {
55
+ export const defaultServerPushConfig = {
70
56
  enabled: false,
71
57
  type: "sse",
72
58
  endpoint: "/api/events",
73
59
  reconnectDelayMs: 5000,
74
60
  };
61
+ export const defaultConnectivity = {
62
+ enabled: false,
63
+ heartbeatIntervalMs: 30000,
64
+ };
75
65
  export const defaultTagInvalidation = {
66
+ enabled: false,
76
67
  debounceMs: 0,
77
- prefixes: [...API_PREFIXES],
68
+ skipPrefixes: [...API_PREFIXES],
78
69
  patterns: {},
79
70
  singularization: {},
80
71
  cascading: {},
81
72
  };
73
+ export function deepMerge(base, override) {
74
+ const result = { ...base };
75
+ for (const key of Object.keys(override)) {
76
+ const baseVal = base[key];
77
+ const overrideVal = override[key];
78
+ if (typeof baseVal === "object" && baseVal !== null &&
79
+ typeof overrideVal === "object" && overrideVal !== null &&
80
+ !Array.isArray(baseVal) &&
81
+ !Array.isArray(overrideVal)) {
82
+ result[key] = deepMerge(baseVal, overrideVal);
83
+ }
84
+ else {
85
+ result[key] = overrideVal ?? baseVal;
86
+ }
87
+ }
88
+ return result;
89
+ }
82
90
  export function mergeConfigs(base, override) {
83
91
  return {
84
92
  ...base,
85
93
  ...override,
86
- apiBaseUrl: override.apiBaseUrl ?? base.apiBaseUrl,
94
+ build: { ...base.build, ...override.build },
87
95
  features: {
88
96
  ...base.features,
89
97
  ...override.features,
90
- pwa: { ...base.features.pwa, ...override.features?.pwa, assets: { ...defaultPwaAssets, ...base.features.pwa.assets, ...override.features?.pwa?.assets } },
98
+ requestBatchWindowMs: override.features?.requestBatchWindowMs ??
99
+ base.features.requestBatchWindowMs,
100
+ pwa: { ...base.features.pwa, ...override.features?.pwa },
91
101
  serviceWorker: {
92
102
  ...base.features.serviceWorker,
93
103
  ...override.features?.serviceWorker,
94
- version: override.features?.serviceWorker?.version ??
95
- base.features.serviceWorker.version ?? "package",
96
- minSupportedVersion: override.features?.serviceWorker?.minSupportedVersion ??
97
- base.features.serviceWorker.minSupportedVersion,
98
104
  strategy: {
99
105
  ...base.features.serviceWorker.strategy,
100
106
  ...override.features?.serviceWorker?.strategy,
@@ -130,47 +136,46 @@ export function mergeConfigs(base, override) {
130
136
  ...base.features.graphql,
131
137
  ...override.features?.graphql,
132
138
  },
139
+ connectivity: {
140
+ ...defaultConnectivity,
141
+ ...base.features.connectivity,
142
+ ...override.features?.connectivity,
143
+ },
133
144
  tagInvalidation: {
134
145
  ...defaultTagInvalidation,
135
146
  ...base.features.tagInvalidation,
136
147
  ...override.features?.tagInvalidation,
137
148
  },
138
- pushNotifications: {
139
- ...base.features.pushNotifications,
140
- ...override.features?.pushNotifications,
141
- },
149
+ pushNotifications: override.features?.pushNotifications ??
150
+ base.features.pushNotifications,
142
151
  serverPush: {
143
- ...defaultServerPush,
152
+ ...defaultServerPushConfig,
144
153
  ...base.features.serverPush,
145
154
  ...override.features?.serverPush,
146
155
  },
147
156
  },
148
- build: { ...base.build, ...override.build },
149
157
  };
150
158
  }
151
159
  export const defaultConfig = {
152
- configVersion: CONFIG_VERSION,
153
- enabled: true,
154
- apiBaseUrl: "",
160
+ build: {
161
+ outputDir: "dist",
162
+ swFilename: "sw",
163
+ precacheDirs: {},
164
+ },
155
165
  features: {
166
+ requestBatchWindowMs: 50,
156
167
  pwa: {
157
- enabled: true,
168
+ enabled: false,
158
169
  preventDefaultInstall: false,
159
- assets: { ...defaultPwaAssets },
160
170
  },
161
171
  serviceWorker: {
162
- version: "package",
163
- minSupportedVersion: "0.0.0",
164
- autoUpdate: true,
165
172
  autoActivate: false,
166
- requestBatchWindowMs: 50,
167
173
  strategy: {
168
174
  default: "cache-first",
169
- mode: "all",
170
- clearRuntimeOnUpdate: false,
171
175
  maxRuntimeCacheAge: 2592000,
172
176
  normalizeKey: false,
173
177
  ignoreQueryParams: [],
178
+ timeout: 10,
174
179
  patterns: {},
175
180
  reactive: {
176
181
  defaults: {
@@ -184,50 +189,42 @@ export const defaultConfig = {
184
189
  navigation: {
185
190
  mode: "spa",
186
191
  preload: true,
187
- fallback: "/index.html",
192
+ fallback: "",
193
+ precacheRoutes: [],
194
+ rules: [],
188
195
  },
189
196
  },
190
197
  refetchQueue: { ...defaultRefetchQueue },
191
198
  mutationQueue: { ...defaultMutationQueue },
192
- backgroundSync: false,
193
199
  auth: { ...defaultAuth },
194
- crossTabSync: true,
200
+ connectivity: { ...defaultConnectivity },
195
201
  tagInvalidation: { ...defaultTagInvalidation },
196
202
  graphql: { ...defaultGql },
197
- pushNotifications: { enabled: false },
198
- serverPush: { ...defaultServerPush },
199
- },
200
- build: {
201
- outputDir: "dist",
202
- swFilename: "sw",
203
+ pushNotifications: false,
204
+ serverPush: { ...defaultServerPushConfig },
203
205
  },
204
206
  };
205
207
  export const defaultInitConfig = {
206
208
  $schema: "https://swoff.netlify.app/schema/v1.json",
207
- configVersion: CONFIG_VERSION,
208
- enabled: true,
209
209
  framework: "vanilla",
210
- apiBaseUrl: "",
211
210
  features: {
212
- pwa: { enabled: true, preventDefaultInstall: false, assets: { ...defaultPwaAssets } },
211
+ requestBatchWindowMs: 50,
212
+ pwa: { enabled: false, preventDefaultInstall: false },
213
213
  serviceWorker: {
214
- version: "package",
215
- minSupportedVersion: "0.0.0",
216
- autoUpdate: true,
217
214
  autoActivate: false,
218
- requestBatchWindowMs: 50,
219
215
  navigation: {
220
216
  mode: "spa",
221
217
  preload: true,
222
- fallback: "/index.html",
218
+ fallback: "",
219
+ precacheRoutes: [],
220
+ rules: [],
223
221
  },
224
222
  strategy: {
225
223
  default: "cache-first",
226
- mode: "all",
227
- clearRuntimeOnUpdate: false,
228
224
  maxRuntimeCacheAge: 2592000,
229
225
  normalizeKey: false,
230
226
  ignoreQueryParams: [],
227
+ timeout: 10,
231
228
  patterns: {
232
229
  "/api/*": "network-first",
233
230
  "/static/*": "cache-first",
@@ -244,14 +241,13 @@ export const defaultInitConfig = {
244
241
  },
245
242
  refetchQueue: { ...defaultRefetchQueue },
246
243
  mutationQueue: { ...defaultMutationQueue },
247
- backgroundSync: false,
248
244
  auth: { ...defaultAuth },
249
- crossTabSync: true,
245
+ connectivity: { ...defaultConnectivity },
250
246
  tagInvalidation: { ...defaultTagInvalidation },
251
247
  graphql: { ...defaultGql },
252
- pushNotifications: { enabled: false },
253
- serverPush: { ...defaultServerPush },
248
+ pushNotifications: false,
249
+ serverPush: { ...defaultServerPushConfig },
254
250
  },
255
- build: { outputDir: "dist", swFilename: "sw" },
251
+ build: { outputDir: "dist", swFilename: "sw", precacheDirs: {} },
256
252
  };
257
253
  //# sourceMappingURL=config-types.js.map