@swoff/cli 0.3.13 → 0.3.15

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 (269) hide show
  1. package/README.md +28 -32
  2. package/dist/index.js +4 -15
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/cli/help.js +4 -9
  5. package/dist/lib/cli/help.js.map +1 -1
  6. package/dist/lib/commands/clean.js +8 -17
  7. package/dist/lib/commands/clean.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 +33 -7
  11. package/dist/lib/commands/generate.js.map +1 -1
  12. package/dist/lib/commands/init.js +259 -23
  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/minimal-config.js +64 -0
  19. package/dist/lib/config/minimal-config.js.map +1 -0
  20. package/dist/lib/config/validator.js +219 -110
  21. package/dist/lib/config/validator.js.map +1 -1
  22. package/dist/lib/generators/file-generators/api-config.js +1 -1
  23. package/dist/lib/generators/file-generators/api-config.js.map +1 -1
  24. package/dist/lib/generators/file-generators/auth-adapter.js +13 -0
  25. package/dist/lib/generators/file-generators/auth-adapter.js.map +1 -0
  26. package/dist/lib/generators/file-generators/auth-check.js +40 -0
  27. package/dist/lib/generators/file-generators/auth-check.js.map +1 -0
  28. package/dist/lib/generators/file-generators/auth-store.js +2 -5
  29. package/dist/lib/generators/file-generators/auth-store.js.map +1 -1
  30. package/dist/lib/generators/file-generators/background-sync.js +1 -1
  31. package/dist/lib/generators/file-generators/background-sync.js.map +1 -1
  32. package/dist/lib/generators/file-generators/cache.js +2 -1
  33. package/dist/lib/generators/file-generators/cache.js.map +1 -1
  34. package/dist/lib/generators/file-generators/client-injector-bundle.js +15 -0
  35. package/dist/lib/generators/file-generators/client-injector-bundle.js.map +1 -0
  36. package/dist/lib/generators/file-generators/client-injector.js +2 -1
  37. package/dist/lib/generators/file-generators/client-injector.js.map +1 -1
  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/open-db.js +6 -0
  57. package/dist/lib/generators/file-generators/open-db.js.map +1 -0
  58. package/dist/lib/generators/file-generators/push.js +1 -2
  59. package/dist/lib/generators/file-generators/push.js.map +1 -1
  60. package/dist/lib/generators/file-generators/pwa-install.js +2 -6
  61. package/dist/lib/generators/file-generators/pwa-install.js.map +1 -1
  62. package/dist/lib/generators/file-generators/server-push.js +1 -1
  63. package/dist/lib/generators/file-generators/server-push.js.map +1 -1
  64. package/dist/lib/generators/file-generators/storage.js +6 -0
  65. package/dist/lib/generators/file-generators/storage.js.map +1 -0
  66. package/dist/lib/generators/file-generators/sw-generator-build.js +105 -48
  67. package/dist/lib/generators/file-generators/sw-generator-build.js.map +1 -1
  68. package/dist/lib/generators/file-generators/sw-injector.js +0 -4
  69. package/dist/lib/generators/file-generators/sw-injector.js.map +1 -1
  70. package/dist/lib/generators/file-generators/sw-template.js +8 -9
  71. package/dist/lib/generators/file-generators/sw-template.js.map +1 -1
  72. package/dist/lib/generators/file-generators/swoff-api-bundle.js +51 -0
  73. package/dist/lib/generators/file-generators/swoff-api-bundle.js.map +1 -0
  74. package/dist/lib/generators/sw-build-utils.js +69 -0
  75. package/dist/lib/generators/sw-build-utils.js.map +1 -0
  76. package/dist/lib/generators/sw-generator.js +23 -34
  77. package/dist/lib/generators/sw-generator.js.map +1 -1
  78. package/dist/lib/generators/sw-sections/activate-handler.js +77 -23
  79. package/dist/lib/generators/sw-sections/activate-handler.js.map +1 -1
  80. package/dist/lib/generators/sw-sections/assemble-sw.js +20 -95
  81. package/dist/lib/generators/sw-sections/assemble-sw.js.map +1 -1
  82. package/dist/lib/generators/sw-sections/background-precache.js +126 -0
  83. package/dist/lib/generators/sw-sections/background-precache.js.map +1 -0
  84. package/dist/lib/generators/sw-sections/background-sync-handler.js +74 -72
  85. package/dist/lib/generators/sw-sections/background-sync-handler.js.map +1 -1
  86. package/dist/lib/generators/sw-sections/batch-refresh-queue.js +102 -0
  87. package/dist/lib/generators/sw-sections/batch-refresh-queue.js.map +1 -0
  88. package/dist/lib/generators/sw-sections/config-header.js +2 -3
  89. package/dist/lib/generators/sw-sections/config-header.js.map +1 -1
  90. package/dist/lib/generators/sw-sections/default-template.js +64 -7
  91. package/dist/lib/generators/sw-sections/default-template.js.map +1 -1
  92. package/dist/lib/generators/sw-sections/fetch-handler.js +621 -495
  93. package/dist/lib/generators/sw-sections/fetch-handler.js.map +1 -1
  94. package/dist/lib/generators/sw-sections/install-handler.js +41 -23
  95. package/dist/lib/generators/sw-sections/install-handler.js.map +1 -1
  96. package/dist/lib/generators/sw-sections/message-handler.js +34 -8
  97. package/dist/lib/generators/sw-sections/message-handler.js.map +1 -1
  98. package/dist/lib/generators/sw-sections/server-push-handler.js +10 -14
  99. package/dist/lib/generators/sw-sections/server-push-handler.js.map +1 -1
  100. package/dist/lib/generators/sw-sections/shared.js +70 -0
  101. package/dist/lib/generators/sw-sections/shared.js.map +1 -0
  102. package/dist/lib/generators/sw-sections/sw-push.js +2 -6
  103. package/dist/lib/generators/sw-sections/sw-push.js.map +1 -1
  104. package/dist/lib/generators/sw-sections/tag-management.js +55 -86
  105. package/dist/lib/generators/sw-sections/tag-management.js.map +1 -1
  106. package/dist/lib/generators/swoff-files-generator.js +183 -59
  107. package/dist/lib/generators/swoff-files-generator.js.map +1 -1
  108. package/dist/lib/shared/config-types.js +84 -79
  109. package/dist/lib/shared/config-types.js.map +1 -1
  110. package/dist/lib/shared/feature-registry.js +198 -0
  111. package/dist/lib/shared/feature-registry.js.map +1 -0
  112. package/dist/lib/utils/detect-framework.js +52 -9
  113. package/dist/lib/utils/detect-framework.js.map +1 -1
  114. package/dist/runtime/api-config.js +2 -2
  115. package/dist/runtime/api-config.js.map +1 -1
  116. package/dist/runtime/auth-adapter.js +179 -0
  117. package/dist/runtime/auth-adapter.js.map +1 -0
  118. package/dist/runtime/auth-state.js +16 -6
  119. package/dist/runtime/auth-state.js.map +1 -1
  120. package/dist/runtime/auth-store.js +219 -213
  121. package/dist/runtime/auth-store.js.map +1 -1
  122. package/dist/runtime/background-sync.js +5 -2
  123. package/dist/runtime/background-sync.js.map +1 -1
  124. package/dist/runtime/cache.js +91 -3
  125. package/dist/runtime/cache.js.map +1 -1
  126. package/dist/runtime/client-injector-bundle.js +314 -0
  127. package/dist/runtime/client-injector-bundle.js.map +1 -0
  128. package/dist/runtime/client-injector.js +188 -30
  129. package/dist/runtime/client-injector.js.map +1 -1
  130. package/dist/runtime/connectivity.js +83 -0
  131. package/dist/runtime/connectivity.js.map +1 -0
  132. package/dist/runtime/fetch-wrapper.js +26 -59
  133. package/dist/runtime/fetch-wrapper.js.map +1 -1
  134. package/dist/runtime/gql-wrapper.js +15 -9
  135. package/dist/runtime/gql-wrapper.js.map +1 -1
  136. package/dist/runtime/invalidation-tags.js +12 -89
  137. package/dist/runtime/invalidation-tags.js.map +1 -1
  138. package/dist/runtime/mutation-queue.js +83 -31
  139. package/dist/runtime/mutation-queue.js.map +1 -1
  140. package/dist/runtime/mutation-state.js +3 -3
  141. package/dist/runtime/mutation-state.js.map +1 -1
  142. package/dist/runtime/open-db.js +41 -0
  143. package/dist/runtime/open-db.js.map +1 -0
  144. package/dist/runtime/push.js +15 -27
  145. package/dist/runtime/push.js.map +1 -1
  146. package/dist/runtime/pwa-prompt.js +35 -3
  147. package/dist/runtime/pwa-prompt.js.map +1 -1
  148. package/dist/runtime/reset.js +39 -42
  149. package/dist/runtime/reset.js.map +1 -1
  150. package/dist/runtime/server-push.js +23 -13
  151. package/dist/runtime/server-push.js.map +1 -1
  152. package/dist/runtime/storage.js +32 -0
  153. package/dist/runtime/storage.js.map +1 -0
  154. package/dist/runtime/sw-injector.js +19 -178
  155. package/dist/runtime/sw-injector.js.map +1 -1
  156. package/dist/runtime/swoff-api-bundle.js +1491 -0
  157. package/dist/runtime/swoff-api-bundle.js.map +1 -0
  158. package/dist/runtime/type-definitions.js +8 -7
  159. package/dist/runtime/type-definitions.js.map +1 -1
  160. package/dist/runtime/utils.js +4 -0
  161. package/dist/runtime/utils.js.map +1 -1
  162. package/package.json +9 -3
  163. package/templates/react/useAuth.jsx +7 -4
  164. package/templates/react/useAuth.tsx +14 -14
  165. package/templates/react/useBackgroundSync.jsx +5 -4
  166. package/templates/react/useBackgroundSync.tsx +5 -4
  167. package/templates/react/useCachedFetch.jsx +8 -0
  168. package/templates/react/useCachedFetch.tsx +8 -0
  169. package/templates/react/useMutation.jsx +60 -56
  170. package/templates/react/useMutation.tsx +65 -64
  171. package/templates/react/useMutationQueue.jsx +5 -1
  172. package/templates/react/useMutationQueue.tsx +8 -2
  173. package/templates/react/useMutationState.jsx +3 -4
  174. package/templates/react/useMutationState.tsx +4 -8
  175. package/templates/react/useNetworkStatus.jsx +57 -17
  176. package/templates/react/useNetworkStatus.tsx +42 -20
  177. package/templates/react/useOfflineAnalytics.jsx +42 -0
  178. package/templates/react/useOfflineAnalytics.tsx +50 -0
  179. package/templates/react/usePwaInstall.jsx +26 -0
  180. package/templates/react/usePwaInstall.tsx +26 -0
  181. package/templates/react/useSWUpdate.jsx +7 -52
  182. package/templates/react/useSWUpdate.tsx +12 -51
  183. package/templates/react/useStorageEstimate.jsx +56 -0
  184. package/templates/react/useStorageEstimate.tsx +67 -0
  185. package/dist/__tests__/assemble-sw.test.js +0 -145
  186. package/dist/__tests__/assemble-sw.test.js.map +0 -1
  187. package/dist/__tests__/cli-integration.test.js +0 -231
  188. package/dist/__tests__/cli-integration.test.js.map +0 -1
  189. package/dist/__tests__/config-types.test.js +0 -124
  190. package/dist/__tests__/config-types.test.js.map +0 -1
  191. package/dist/__tests__/detect-language.test.js +0 -51
  192. package/dist/__tests__/detect-language.test.js.map +0 -1
  193. package/dist/__tests__/file-generators.test.js +0 -228
  194. package/dist/__tests__/file-generators.test.js.map +0 -1
  195. package/dist/__tests__/glob-matcher.test.js +0 -86
  196. package/dist/__tests__/glob-matcher.test.js.map +0 -1
  197. package/dist/__tests__/invalidation-tags.test.js +0 -283
  198. package/dist/__tests__/invalidation-tags.test.js.map +0 -1
  199. package/dist/__tests__/loader.test.js +0 -77
  200. package/dist/__tests__/loader.test.js.map +0 -1
  201. package/dist/__tests__/validator.test.js +0 -340
  202. package/dist/__tests__/validator.test.js.map +0 -1
  203. package/dist/lib/commands/add.js +0 -120
  204. package/dist/lib/commands/add.js.map +0 -1
  205. package/dist/lib/commands/assets.js +0 -45
  206. package/dist/lib/commands/assets.js.map +0 -1
  207. package/dist/lib/commands/generate-assets.js +0 -44
  208. package/dist/lib/commands/generate-assets.js.map +0 -1
  209. package/dist/lib/commands/info.js +0 -183
  210. package/dist/lib/commands/info.js.map +0 -1
  211. package/dist/lib/generators/asset-generator/dependency-resolver.js +0 -85
  212. package/dist/lib/generators/asset-generator/dependency-resolver.js.map +0 -1
  213. package/dist/lib/generators/asset-generator/generate.js +0 -111
  214. package/dist/lib/generators/asset-generator/generate.js.map +0 -1
  215. package/dist/lib/generators/asset-generator/guide.js +0 -43
  216. package/dist/lib/generators/asset-generator/guide.js.map +0 -1
  217. package/dist/lib/generators/asset-generator/html-patcher.js +0 -65
  218. package/dist/lib/generators/asset-generator/html-patcher.js.map +0 -1
  219. package/dist/lib/generators/asset-generator/ico-encoder.js +0 -29
  220. package/dist/lib/generators/asset-generator/ico-encoder.js.map +0 -1
  221. package/dist/lib/generators/asset-generator/manifest-patcher.js +0 -23
  222. package/dist/lib/generators/asset-generator/manifest-patcher.js.map +0 -1
  223. package/dist/lib/generators/asset-generator/maskable.js +0 -15
  224. package/dist/lib/generators/asset-generator/maskable.js.map +0 -1
  225. package/dist/lib/generators/asset-generator/rasterize.js +0 -32
  226. package/dist/lib/generators/asset-generator/rasterize.js.map +0 -1
  227. package/dist/lib/generators/asset-generator/sizes.js +0 -25
  228. package/dist/lib/generators/asset-generator/sizes.js.map +0 -1
  229. package/dist/lib/generators/file-generators/auth-fetch.js +0 -151
  230. package/dist/lib/generators/file-generators/auth-fetch.js.map +0 -1
  231. package/dist/lib/generators/file-generators/auth-user.js +0 -13
  232. package/dist/lib/generators/file-generators/auth-user.js.map +0 -1
  233. package/dist/lib/generators/file-generators/fetch-state.js +0 -6
  234. package/dist/lib/generators/file-generators/fetch-state.js.map +0 -1
  235. package/dist/lib/generators/file-generators/generate-hooks.js +0 -44
  236. package/dist/lib/generators/file-generators/generate-hooks.js.map +0 -1
  237. package/dist/lib/generators/file-generators/indexeddb.js +0 -74
  238. package/dist/lib/generators/file-generators/indexeddb.js.map +0 -1
  239. package/dist/lib/generators/file-generators/manifest.js +0 -46
  240. package/dist/lib/generators/file-generators/manifest.js.map +0 -1
  241. package/dist/lib/generators/file-generators/mutation-reconcile.js +0 -57
  242. package/dist/lib/generators/file-generators/mutation-reconcile.js.map +0 -1
  243. package/dist/lib/generators/file-generators/quick-readme.js +0 -21
  244. package/dist/lib/generators/file-generators/quick-readme.js.map +0 -1
  245. package/dist/lib/generators/file-generators/reconcile.js +0 -50
  246. package/dist/lib/generators/file-generators/reconcile.js.map +0 -1
  247. package/dist/lib/generators/file-generators/store.js +0 -86
  248. package/dist/lib/generators/file-generators/store.js.map +0 -1
  249. package/dist/lib/generators/file-generators/sw-push.js +0 -67
  250. package/dist/lib/generators/file-generators/sw-push.js.map +0 -1
  251. package/dist/lib/generators/sw-sections/glob-matcher-code.js.map +0 -1
  252. package/dist/lib/utils/build-script.js +0 -35
  253. package/dist/lib/utils/build-script.js.map +0 -1
  254. package/dist/lib/utils/tty-status.js +0 -21
  255. package/dist/lib/utils/tty-status.js.map +0 -1
  256. package/dist/runtime/auth-user.js +0 -168
  257. package/dist/runtime/auth-user.js.map +0 -1
  258. package/dist/runtime/fetch-state.js +0 -42
  259. package/dist/runtime/fetch-state.js.map +0 -1
  260. package/dist/runtime/pwa-index.js +0 -11
  261. package/dist/runtime/pwa-index.js.map +0 -1
  262. package/dist/runtime/pwa-injector.js +0 -44
  263. package/dist/runtime/pwa-injector.js.map +0 -1
  264. package/dist/runtime/pwa-install.js +0 -83
  265. package/dist/runtime/pwa-install.js.map +0 -1
  266. package/templates/react/useCacheInvalidation.jsx +0 -19
  267. package/templates/react/useCacheInvalidation.tsx +0 -52
  268. package/templates/react/useIsFetching.jsx +0 -32
  269. package/templates/react/useIsFetching.tsx +0 -32
@@ -1,36 +1,272 @@
1
- /**
2
- * init command - creates swoff.config.json.
3
- */
4
1
  import { writeFileSync, existsSync } from "fs";
5
2
  import { join } from "path";
6
- import { log } from "../cli/logger.js";
7
- import { defaultInitConfig } from "../shared/config-types.js";
3
+ import { intro, outro, text, confirm, select, isCancel, log } from "@clack/prompts";
8
4
  import { detectFramework } from "../utils/detect-framework.js";
9
- export async function initCommand(projectRoot, framework) {
10
- // log.header("Initializing Swoff");
5
+ import { buildMinimalConfig } from "../config/minimal-config.js";
6
+ const FRAMEWORK_PRESETS = {
7
+ nextjs: {
8
+ outputDir: "public",
9
+ navMode: "ssr",
10
+ defaultStrategy: "network-first",
11
+ patterns: { "/_next/static/*": "cache-first" },
12
+ ignoreQueryParams: ["_rsc"],
13
+ },
14
+ remix: {
15
+ navMode: "ssr",
16
+ defaultStrategy: "network-first",
17
+ ignoreQueryParams: ["_data"],
18
+ },
19
+ astro: {
20
+ navMode: "ssr",
21
+ },
22
+ nuxt: {
23
+ navMode: "ssr",
24
+ defaultStrategy: "network-first",
25
+ },
26
+ sveltekit: {
27
+ navMode: "ssr",
28
+ defaultStrategy: "network-first",
29
+ },
30
+ "react-spa": {
31
+ outputDir: "dist",
32
+ navMode: "spa",
33
+ },
34
+ "tanstack-start-react": {
35
+ outputDir: ".output/public",
36
+ navMode: "ssr",
37
+ defaultStrategy: "network-first",
38
+ patterns: { "/_serverFn/*": "network-only" },
39
+ },
40
+ laravel: {
41
+ outputDir: "public",
42
+ navMode: "ssr",
43
+ defaultStrategy: "network-first",
44
+ },
45
+ django: {
46
+ outputDir: "static",
47
+ navMode: "ssr",
48
+ defaultStrategy: "network-first",
49
+ },
50
+ flask: {
51
+ outputDir: "static",
52
+ navMode: "ssr",
53
+ defaultStrategy: "network-first",
54
+ },
55
+ rails: {
56
+ outputDir: "public",
57
+ navMode: "ssr",
58
+ defaultStrategy: "network-first",
59
+ },
60
+ go: {
61
+ outputDir: "static",
62
+ navMode: "ssr",
63
+ defaultStrategy: "network-first",
64
+ },
65
+ };
66
+ const STRATEGIES = [
67
+ { value: "cache-first", label: "Cache First" },
68
+ { value: "network-first", label: "Network First" },
69
+ { value: "stale-while-revalidate", label: "Stale While Revalidate" },
70
+ { value: "cache-only", label: "Cache Only" },
71
+ { value: "network-only", label: "Network Only" },
72
+ { value: "reactive", label: "Reactive" },
73
+ ];
74
+ const ALL_FRAMEWORKS = [
75
+ "nextjs", "remix", "tanstack-start-react", "astro", "nuxt",
76
+ "sveltekit", "react-spa", "vue", "svelte",
77
+ "laravel", "django", "flask", "rails", "go", "vanilla",
78
+ ];
79
+ export async function initCommand(projectRoot, yesMode, frameworkOverride) {
11
80
  const configFiles = ["swoff.config.json", "swoff.config.js"];
12
81
  const existingConfig = configFiles.find((f) => existsSync(join(projectRoot, f)));
13
82
  if (existingConfig) {
14
- log.warn(`Found existing ${existingConfig}. Skipping init.`);
15
- log.info("To reinitialize, delete the config file first.");
83
+ log.warn(`Found existing ${existingConfig}. Aborting.`);
84
+ log.info("Delete it first or run in a different directory.");
16
85
  return;
17
86
  }
18
- const detected = framework || detectFramework(projectRoot);
19
- const config = {
20
- $schema: defaultInitConfig.$schema,
21
- configVersion: defaultInitConfig.configVersion,
22
- enabled: defaultInitConfig.enabled,
23
- framework: detected,
24
- build: defaultInitConfig.build,
25
- features: defaultInitConfig.features,
87
+ const detected = frameworkOverride && ALL_FRAMEWORKS.includes(frameworkOverride)
88
+ ? frameworkOverride
89
+ : detectFramework(projectRoot);
90
+ if (frameworkOverride && detected === frameworkOverride) {
91
+ log.info(`Framework: ${detected} (override)`);
92
+ }
93
+ const preset = FRAMEWORK_PRESETS[detected] || {};
94
+ if (yesMode) {
95
+ const answers = {
96
+ framework: detected,
97
+ outputDir: preset.outputDir || "dist",
98
+ swFilename: "sw",
99
+ navMode: preset.navMode || "default",
100
+ fallback: "/offline",
101
+ defaultStrategy: preset.defaultStrategy || "cache-first",
102
+ patterns: preset.patterns,
103
+ pwaEnabled: false,
104
+ authEnabled: false,
105
+ mutationEnabled: false,
106
+ tagInvalidationEnabled: false,
107
+ graphqlEnabled: false,
108
+ serverPushEnabled: false,
109
+ pushNotificationsEnabled: false,
110
+ precacheDir: preset.outputDir ? preset.outputDir : "dist",
111
+ precachePrefix: "/",
112
+ };
113
+ writeConfig(projectRoot, answers);
114
+ return;
115
+ }
116
+ intro("swoff configuration");
117
+ const framework = await select({
118
+ message: "Framework",
119
+ options: ALL_FRAMEWORKS.map((f) => ({
120
+ value: f,
121
+ label: f === detected ? `${f} (detected)` : f,
122
+ })),
123
+ initialValue: detected,
124
+ });
125
+ if (isCancel(framework))
126
+ process.exit(0);
127
+ const activePreset = FRAMEWORK_PRESETS[framework] || {};
128
+ const outputDir = await text({
129
+ message: "Output directory",
130
+ initialValue: activePreset.outputDir || "dist",
131
+ });
132
+ if (isCancel(outputDir))
133
+ process.exit(0);
134
+ const swFilename = await text({
135
+ message: "Service worker filename",
136
+ initialValue: "sw",
137
+ });
138
+ if (isCancel(swFilename))
139
+ process.exit(0);
140
+ const navMode = await select({
141
+ message: "Navigation mode",
142
+ options: [
143
+ { value: "spa", label: "SPA" },
144
+ { value: "ssr", label: "SSR" },
145
+ { value: "default", label: "Default" },
146
+ ],
147
+ initialValue: activePreset.navMode || "default",
148
+ });
149
+ if (isCancel(navMode))
150
+ process.exit(0);
151
+ const fallback = await text({
152
+ message: "Offline fallback path",
153
+ initialValue: "/offline",
154
+ });
155
+ if (isCancel(fallback))
156
+ process.exit(0);
157
+ const defaultStrategy = await select({
158
+ message: "Default caching strategy",
159
+ options: [...STRATEGIES],
160
+ initialValue: activePreset.defaultStrategy || "cache-first",
161
+ });
162
+ if (isCancel(defaultStrategy))
163
+ process.exit(0);
164
+ const pwaEnabled = await confirm({ message: "Enable PWA install prompt?", initialValue: false });
165
+ if (isCancel(pwaEnabled))
166
+ process.exit(0);
167
+ let authType;
168
+ const authEnabled = await confirm({ message: "Enable authentication?", initialValue: false });
169
+ if (isCancel(authEnabled))
170
+ process.exit(0);
171
+ if (authEnabled) {
172
+ authType = (await select({
173
+ message: "Authentication type",
174
+ options: [
175
+ { value: "cookie", label: "Cookie" },
176
+ { value: "bearer", label: "Bearer" },
177
+ { value: "custom", label: "Custom" },
178
+ ],
179
+ initialValue: "cookie",
180
+ }));
181
+ if (isCancel(authType))
182
+ process.exit(0);
183
+ }
184
+ const mutationEnabled = await confirm({ message: "Enable mutation queue (offline mutations)?", initialValue: false });
185
+ if (isCancel(mutationEnabled))
186
+ process.exit(0);
187
+ const tagInvalidationEnabled = await confirm({ message: "Enable tag invalidation?", initialValue: false });
188
+ if (isCancel(tagInvalidationEnabled))
189
+ process.exit(0);
190
+ const graphqlEnabled = await confirm({ message: "Enable GraphQL support?", initialValue: false });
191
+ if (isCancel(graphqlEnabled))
192
+ process.exit(0);
193
+ const serverPushEnabled = await confirm({ message: "Enable server push?", initialValue: false });
194
+ if (isCancel(serverPushEnabled))
195
+ process.exit(0);
196
+ const pushNotificationsEnabled = await confirm({ message: "Enable push notifications?", initialValue: false });
197
+ if (isCancel(pushNotificationsEnabled))
198
+ process.exit(0);
199
+ const precacheDir = await text({
200
+ message: "Directory to precache (leave empty to skip)",
201
+ initialValue: activePreset.outputDir || "dist",
202
+ });
203
+ if (isCancel(precacheDir))
204
+ process.exit(0);
205
+ let precachePrefix = "/";
206
+ if (precacheDir) {
207
+ precachePrefix = (await text({
208
+ message: "Precache URL prefix",
209
+ initialValue: "/",
210
+ }));
211
+ if (isCancel(precachePrefix))
212
+ process.exit(0);
213
+ }
214
+ log.info("");
215
+ log.info("─".repeat(40));
216
+ log.info("Summary");
217
+ log.info(` Framework: ${framework}`);
218
+ log.info(` Output: ${outputDir}/${swFilename}.js`);
219
+ log.info(` Fallback: ${fallback}`);
220
+ log.info(` Navigation: ${navMode}`);
221
+ log.info(` Strategy: ${defaultStrategy}`);
222
+ if (pwaEnabled)
223
+ log.info(" PWA: enabled");
224
+ if (authEnabled)
225
+ log.info(` Auth: ${authType}`);
226
+ if (mutationEnabled)
227
+ log.info(" Mutation Q: enabled");
228
+ if (tagInvalidationEnabled)
229
+ log.info(" Tag Inval: enabled");
230
+ if (graphqlEnabled)
231
+ log.info(" GraphQL: enabled");
232
+ if (serverPushEnabled)
233
+ log.info(" Server Push: enabled");
234
+ if (pushNotificationsEnabled)
235
+ log.info(" Push Notif: enabled");
236
+ if (precacheDir)
237
+ log.info(` Precache: ${precacheDir} → ${precachePrefix}`);
238
+ log.info("─".repeat(40));
239
+ log.info("");
240
+ const write = await confirm({ message: "Write swoff.config.json?", initialValue: true });
241
+ if (isCancel(write) || !write) {
242
+ outro("Aborted.");
243
+ return;
244
+ }
245
+ const answers = {
246
+ framework: framework,
247
+ outputDir: outputDir,
248
+ swFilename: swFilename,
249
+ navMode: navMode,
250
+ fallback: fallback,
251
+ defaultStrategy: defaultStrategy,
252
+ patterns: activePreset.patterns,
253
+ pwaEnabled: pwaEnabled,
254
+ authEnabled: authEnabled,
255
+ authType,
256
+ mutationEnabled: mutationEnabled,
257
+ tagInvalidationEnabled: tagInvalidationEnabled,
258
+ graphqlEnabled: graphqlEnabled,
259
+ serverPushEnabled: serverPushEnabled,
260
+ pushNotificationsEnabled: pushNotificationsEnabled,
261
+ precacheDir: precacheDir,
262
+ precachePrefix: precachePrefix,
26
263
  };
264
+ writeConfig(projectRoot, answers);
265
+ }
266
+ function writeConfig(projectRoot, answers) {
267
+ const config = buildMinimalConfig(answers);
27
268
  const configPath = join(projectRoot, "swoff.config.json");
28
269
  writeFileSync(configPath, JSON.stringify(config, null, 2));
29
- log.info("Created swoff.config.json");
30
- log.success("Swoff initialized successfully!");
31
- log.normal("\nNext steps:");
32
- log.help("1. Review swoff.config.json and customize as needed");
33
- log.help("2. Run: npx @swoff/cli generate");
34
- log.help("3. Read the docs: https://swoff.netlify.app/docs");
270
+ outro(`Config written to swoff.config.json (${Object.keys(config).length} top-level keys)`);
35
271
  }
36
272
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/lib/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAoB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,SAAkB;IACvE,oCAAoC;IAEpC,MAAM,WAAW,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5C,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CACjC,CAAC;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC,kBAAkB,cAAc,kBAAkB,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,iBAAiB,CAAC,OAAO;QAClC,aAAa,EAAE,iBAAiB,CAAC,aAAa;QAC9C,OAAO,EAAE,iBAAiB,CAAC,OAAO;QAClC,SAAS,EAAE,QAAoC;QAC/C,KAAK,EAAE,iBAAiB,CAAC,KAAK;QAC9B,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;KACrC,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC1D,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAEtC,GAAG,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC/C,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC5B,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAChE,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC5C,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/lib/commands/init.ts"],"names":[],"mappings":"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"}
@@ -20,17 +20,15 @@ export async function validateCommand(projectRoot) {
20
20
  }
21
21
  log.success("Configuration is valid!");
22
22
  log.info("\nConfig summary:");
23
- log.help(`Version: ${config.features.serviceWorker.version}`);
24
- log.help(`Min supported version: ${config.features.serviceWorker.minSupportedVersion}`);
25
23
  log.help(`Default strategy: ${config.features.serviceWorker.strategy.default}`);
26
- log.help(`Auto update: ${config.features.serviceWorker.autoUpdate}`);
24
+ log.help(`Auto activate: ${config.features.serviceWorker.autoActivate}`);
27
25
  log.help(`Features enabled: ${Object.entries(config.features)
28
26
  .filter(([k, v]) => {
29
27
  if (k === "serviceWorker")
30
28
  return false;
31
29
  if (typeof v === "object" && v !== null)
32
30
  return v.enabled === true;
33
- return v === true;
31
+ return typeof v === "boolean" && v === true;
34
32
  })
35
33
  .map(([k]) => k)
36
34
  .join(", ")}`);
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/lib/commands/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,gDAAgD;IAEhD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GACxC,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAErC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,cAAc,UAAU,KAAK,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,cAAc,CAAC,MAA4C,CAAC,CAAC;IAE5E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACvC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC9B,GAAG,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,GAAG,CAAC,IAAI,CACN,0BAA0B,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAC9E,CAAC;IACF,GAAG,CAAC,IAAI,CACN,qBAAqB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,CACtE,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,GAAG,CAAC,IAAI,CACN,qBAAqB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;SACjD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACjB,IAAI,CAAC,KAAK,eAAe;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;YACrC,OAAQ,CAA6B,CAAC,OAAO,KAAK,IAAI,CAAC;QACzD,OAAO,CAAC,KAAK,IAAI,CAAC;IACpB,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/lib/commands/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,gDAAgD;IAEhD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GACxC,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAErC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,cAAc,UAAU,KAAK,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEtC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACvC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC9B,GAAG,CAAC,IAAI,CACN,qBAAqB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,CACtE,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC;IACzE,GAAG,CAAC,IAAI,CACN,qBAAqB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;SACjD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACjB,IAAI,CAAC,KAAK,eAAe;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;YACrC,OAAQ,CAA6B,CAAC,OAAO,KAAK,IAAI,CAAC;QACzD,OAAO,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;IAC9C,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;AACJ,CAAC"}
@@ -4,17 +4,9 @@
4
4
  */
5
5
  import { readFileSync, existsSync } from "fs";
6
6
  import { join } from "path";
7
- import { defaultConfig, mergeConfigs, CONFIG_VERSION } from "../shared/config-types.js";
8
- function checkConfigVersion(config) {
9
- if (config.configVersion === undefined) {
10
- console.warn("[swoff] Config is missing configVersion — the format may have changed since it was created.\n" +
11
- " Add \"configVersion\": 1 to your swoff.config.json to suppress this warning.");
12
- }
13
- else if (config.configVersion > CONFIG_VERSION) {
14
- console.warn(`[swoff] Config has configVersion ${config.configVersion}, but this CLI version supports up to ${CONFIG_VERSION}.\n` +
15
- " Some settings may not be recognized. Upgrade @swoff/cli for full compatibility.");
16
- }
17
- }
7
+ import { pathToFileURL } from "url";
8
+ import { defaultConfig, mergeConfigs } from "../shared/config-types.js";
9
+ import { log } from "../cli/logger.js";
18
10
  /**
19
11
  * Load config from project root. Tries JSON first, then JS.
20
12
  * Falls back to defaults if no config found or parse fails.
@@ -27,11 +19,10 @@ export function loadConfig(projectRoot, explicitPath) {
27
19
  try {
28
20
  const raw = JSON.parse(readFileSync(explicitPath, "utf8"));
29
21
  const config = mergeConfigs(defaultConfig, raw);
30
- checkConfigVersion(config);
31
22
  return { config, configPath: explicitPath, configSource: "JSON" };
32
23
  }
33
24
  catch {
34
- console.warn(`[swoff] Warning: Failed to parse explicit config "${explicitPath}" — falling back to defaults`);
25
+ log.warn(`Failed to parse explicit config "${explicitPath}" — falling back to defaults`);
35
26
  return { config: defaultConfig, configPath: null, configSource: "defaults" };
36
27
  }
37
28
  }
@@ -45,17 +36,12 @@ export function loadConfig(projectRoot, explicitPath) {
45
36
  try {
46
37
  const raw = JSON.parse(readFileSync(path, "utf8"));
47
38
  const config = mergeConfigs(defaultConfig, raw);
48
- checkConfigVersion(config);
49
39
  return { config, configPath: path, configSource: "JSON" };
50
40
  }
51
41
  catch {
52
- console.warn(`[swoff] Warning: Failed to parse "${path}" — falling back to defaults`);
42
+ log.warn(`Failed to parse "${path}" — falling back to defaults`);
53
43
  }
54
44
  }
55
- // JS configs require the async loader
56
- if (file.endsWith(".js")) {
57
- throw new Error(`JavaScript config files require the async loader. Use loadConfigAsync() instead of loadConfig() for "${path}".`);
58
- }
59
45
  }
60
46
  return { config: defaultConfig, configPath: null, configSource: "defaults" };
61
47
  }
@@ -63,20 +49,43 @@ export function loadConfig(projectRoot, explicitPath) {
63
49
  * Async version that also tries to load .js configs via dynamic import.
64
50
  */
65
51
  export async function loadConfigAsync(projectRoot, explicitPath) {
66
- const syncResult = loadConfig(projectRoot, explicitPath);
67
- if (syncResult.configPath && syncResult.configPath.endsWith(".js")) {
52
+ // Handle explicit JS path directly
53
+ if (explicitPath && existsSync(explicitPath) && explicitPath.endsWith(".js")) {
68
54
  try {
69
- const mod = await import(syncResult.configPath);
55
+ const fileUrl = pathToFileURL(explicitPath).href;
56
+ const mod = await import(fileUrl);
70
57
  const raw = (mod.default || mod);
71
58
  const config = mergeConfigs(defaultConfig, raw);
72
- checkConfigVersion(config);
73
- return { config, configPath: syncResult.configPath, configSource: "JavaScript" };
59
+ return { config, configPath: explicitPath, configSource: "JavaScript" };
74
60
  }
75
61
  catch {
76
- console.warn(`[swoff] Warning: Failed to load JS config "${syncResult.configPath}" — falling back to defaults`);
62
+ log.warn(`Failed to load JS config "${explicitPath}" — falling back to defaults`);
77
63
  return { config: defaultConfig, configPath: null, configSource: "defaults" };
78
64
  }
79
65
  }
66
+ // Try JSON via sync loader (handles explicit JSON and default JSON paths)
67
+ const syncResult = loadConfig(projectRoot, explicitPath);
68
+ if (syncResult.configPath) {
69
+ return syncResult;
70
+ }
71
+ // If an explicit path was given and sync loader didn't find it, stop here
72
+ if (explicitPath) {
73
+ return syncResult;
74
+ }
75
+ // No config found yet — try swoff.config.js
76
+ const jsPath = join(projectRoot, "swoff.config.js");
77
+ if (existsSync(jsPath)) {
78
+ try {
79
+ const fileUrl = pathToFileURL(jsPath).href;
80
+ const mod = await import(fileUrl);
81
+ const raw = (mod.default || mod);
82
+ const config = mergeConfigs(defaultConfig, raw);
83
+ return { config, configPath: jsPath, configSource: "JavaScript" };
84
+ }
85
+ catch {
86
+ log.warn(`Failed to load JS config "${jsPath}" — falling back to defaults`);
87
+ }
88
+ }
80
89
  return syncResult;
81
90
  }
82
91
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/lib/config/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/lib/config/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ export function buildMinimalConfig(answers) {
2
+ const features = {};
3
+ const sw = {
4
+ strategy: {
5
+ default: answers.defaultStrategy,
6
+ },
7
+ navigation: {
8
+ mode: answers.navMode,
9
+ fallback: answers.fallback,
10
+ },
11
+ };
12
+ if (answers.patterns && Object.keys(answers.patterns).length > 0) {
13
+ sw.strategy.patterns = answers.patterns;
14
+ }
15
+ features.serviceWorker = sw;
16
+ if (answers.pwaEnabled) {
17
+ features.pwa = { enabled: true };
18
+ }
19
+ if (answers.authEnabled) {
20
+ features.auth = {
21
+ enabled: true,
22
+ type: (answers.authType || "cookie"),
23
+ };
24
+ }
25
+ if (answers.mutationEnabled) {
26
+ const mq = { enabled: true };
27
+ if (answers.backgroundSync) {
28
+ mq.backgroundSync = true;
29
+ }
30
+ features.mutationQueue = mq;
31
+ }
32
+ if (answers.tagInvalidationEnabled) {
33
+ features.tagInvalidation = { enabled: true };
34
+ }
35
+ if (answers.graphqlEnabled) {
36
+ features.graphql = { enabled: true };
37
+ }
38
+ if (answers.serverPushEnabled) {
39
+ features.serverPush = {
40
+ enabled: true,
41
+ type: "sse",
42
+ endpoint: "/api/events",
43
+ };
44
+ }
45
+ if (answers.pushNotificationsEnabled) {
46
+ features.pushNotifications = true;
47
+ }
48
+ const build = {
49
+ outputDir: answers.outputDir,
50
+ swFilename: answers.swFilename,
51
+ };
52
+ if (answers.precacheDir) {
53
+ build.precacheDirs = {
54
+ [answers.precacheDir]: { prefix: answers.precachePrefix || "/" },
55
+ };
56
+ }
57
+ return {
58
+ $schema: "https://swoff.netlify.app/schema/v1.json",
59
+ framework: answers.framework,
60
+ features,
61
+ build,
62
+ };
63
+ }
64
+ //# sourceMappingURL=minimal-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimal-config.js","sourceRoot":"","sources":["../../../src/lib/config/minimal-config.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,MAAM,EAAE,GAA4B;QAClC,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,CAAC,eAAe;SACjC;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO,CAAC,OAAO;YACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,EAAE,CAAC,QAAoC,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACvE,CAAC;IAED,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,QAAQ,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,GAAG;YACd,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAa;SACjD,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,EAAE,GAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACnC,QAAQ,CAAC,eAAe,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,QAAQ,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,QAAQ,CAAC,UAAU,GAAG;YACpB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,aAAa;SACxB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;QACrC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,MAAM,KAAK,GAA4B;QACrC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,KAAK,CAAC,YAAY,GAAG;YACnB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,cAAc,IAAI,GAAG,EAAE;SACjE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,0CAA0C;QACnD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC"}