@swoff/cli 0.3.13 → 0.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/README.md +28 -32
  2. package/dist/index.js +2 -13
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/cli/help.js +3 -8
  5. package/dist/lib/cli/help.js.map +1 -1
  6. package/dist/lib/commands/add.js +29 -87
  7. package/dist/lib/commands/add.js.map +1 -1
  8. package/dist/lib/commands/generate-guide.js +16 -30
  9. package/dist/lib/commands/generate-guide.js.map +1 -1
  10. package/dist/lib/commands/generate.js +31 -6
  11. package/dist/lib/commands/generate.js.map +1 -1
  12. package/dist/lib/commands/init.js +188 -11
  13. package/dist/lib/commands/init.js.map +1 -1
  14. package/dist/lib/commands/validate.js +2 -4
  15. package/dist/lib/commands/validate.js.map +1 -1
  16. package/dist/lib/config/loader.js +34 -25
  17. package/dist/lib/config/loader.js.map +1 -1
  18. package/dist/lib/config/validator.js +202 -96
  19. package/dist/lib/config/validator.js.map +1 -1
  20. package/dist/lib/generators/file-generators/api-config.js +1 -1
  21. package/dist/lib/generators/file-generators/api-config.js.map +1 -1
  22. package/dist/lib/generators/file-generators/auth-adapter.js +13 -0
  23. package/dist/lib/generators/file-generators/auth-adapter.js.map +1 -0
  24. package/dist/lib/generators/file-generators/auth-check.js +40 -0
  25. package/dist/lib/generators/file-generators/auth-check.js.map +1 -0
  26. package/dist/lib/generators/file-generators/auth-store.js +2 -5
  27. package/dist/lib/generators/file-generators/auth-store.js.map +1 -1
  28. package/dist/lib/generators/file-generators/background-sync.js +1 -1
  29. package/dist/lib/generators/file-generators/background-sync.js.map +1 -1
  30. package/dist/lib/generators/file-generators/cache.js +2 -1
  31. package/dist/lib/generators/file-generators/cache.js.map +1 -1
  32. package/dist/lib/generators/file-generators/client-injector-bundle.js +15 -0
  33. package/dist/lib/generators/file-generators/client-injector-bundle.js.map +1 -0
  34. package/dist/lib/generators/file-generators/client-injector.js +2 -1
  35. package/dist/lib/generators/file-generators/client-injector.js.map +1 -1
  36. package/dist/lib/generators/file-generators/connectivity-manager.js +12 -0
  37. package/dist/lib/generators/file-generators/connectivity-manager.js.map +1 -0
  38. package/dist/lib/generators/file-generators/connectivity.js +12 -0
  39. package/dist/lib/generators/file-generators/connectivity.js.map +1 -0
  40. package/dist/lib/generators/file-generators/context.js +7 -0
  41. package/dist/lib/generators/file-generators/context.js.map +1 -1
  42. package/dist/lib/generators/file-generators/fetch-wrapper.js +1 -1
  43. package/dist/lib/generators/file-generators/fetch-wrapper.js.map +1 -1
  44. package/dist/lib/generators/file-generators/generate-framework-adapters.js +29 -20
  45. package/dist/lib/generators/file-generators/generate-framework-adapters.js.map +1 -1
  46. package/dist/lib/generators/file-generators/gql-wrapper.js +2 -2
  47. package/dist/lib/generators/file-generators/gql-wrapper.js.map +1 -1
  48. package/dist/lib/generators/file-generators/guide-generator.js +51 -1
  49. package/dist/lib/generators/file-generators/guide-generator.js.map +1 -1
  50. package/dist/lib/generators/file-generators/invalidation-tags.js +2 -3
  51. package/dist/lib/generators/file-generators/invalidation-tags.js.map +1 -1
  52. package/dist/lib/generators/file-generators/mutation-queue.js +2 -2
  53. package/dist/lib/generators/file-generators/mutation-queue.js.map +1 -1
  54. package/dist/lib/generators/file-generators/mutation-state.js +1 -1
  55. package/dist/lib/generators/file-generators/mutation-state.js.map +1 -1
  56. package/dist/lib/generators/file-generators/notification-generator.js +6 -0
  57. package/dist/lib/generators/file-generators/notification-generator.js.map +1 -0
  58. package/dist/lib/generators/file-generators/open-db.js +6 -0
  59. package/dist/lib/generators/file-generators/open-db.js.map +1 -0
  60. package/dist/lib/generators/file-generators/push.js +1 -2
  61. package/dist/lib/generators/file-generators/push.js.map +1 -1
  62. package/dist/lib/generators/file-generators/pwa-install.js +2 -6
  63. package/dist/lib/generators/file-generators/pwa-install.js.map +1 -1
  64. package/dist/lib/generators/file-generators/server-push.js +1 -1
  65. package/dist/lib/generators/file-generators/server-push.js.map +1 -1
  66. package/dist/lib/generators/file-generators/storage-generator.js +6 -0
  67. package/dist/lib/generators/file-generators/storage-generator.js.map +1 -0
  68. package/dist/lib/generators/file-generators/storage-notify.js +6 -0
  69. package/dist/lib/generators/file-generators/storage-notify.js.map +1 -0
  70. package/dist/lib/generators/file-generators/storage.js +6 -0
  71. package/dist/lib/generators/file-generators/storage.js.map +1 -0
  72. package/dist/lib/generators/file-generators/sw-generator-build.js +96 -45
  73. package/dist/lib/generators/file-generators/sw-generator-build.js.map +1 -1
  74. package/dist/lib/generators/file-generators/sw-injector.js +0 -4
  75. package/dist/lib/generators/file-generators/sw-injector.js.map +1 -1
  76. package/dist/lib/generators/file-generators/sw-template.js +8 -9
  77. package/dist/lib/generators/file-generators/sw-template.js.map +1 -1
  78. package/dist/lib/generators/file-generators/sw-version-gen.js +32 -0
  79. package/dist/lib/generators/file-generators/sw-version-gen.js.map +1 -0
  80. package/dist/lib/generators/file-generators/swoff-api-bundle.js +51 -0
  81. package/dist/lib/generators/file-generators/swoff-api-bundle.js.map +1 -0
  82. package/dist/lib/generators/sw-build-utils.js +69 -0
  83. package/dist/lib/generators/sw-build-utils.js.map +1 -0
  84. package/dist/lib/generators/sw-generator.js +23 -34
  85. package/dist/lib/generators/sw-generator.js.map +1 -1
  86. package/dist/lib/generators/sw-sections/activate-handler.js +74 -23
  87. package/dist/lib/generators/sw-sections/activate-handler.js.map +1 -1
  88. package/dist/lib/generators/sw-sections/assemble-sw.js +15 -94
  89. package/dist/lib/generators/sw-sections/assemble-sw.js.map +1 -1
  90. package/dist/lib/generators/sw-sections/background-sync-handler.js +74 -72
  91. package/dist/lib/generators/sw-sections/background-sync-handler.js.map +1 -1
  92. package/dist/lib/generators/sw-sections/batch-refresh-queue.js +102 -0
  93. package/dist/lib/generators/sw-sections/batch-refresh-queue.js.map +1 -0
  94. package/dist/lib/generators/sw-sections/config-header.js +2 -3
  95. package/dist/lib/generators/sw-sections/config-header.js.map +1 -1
  96. package/dist/lib/generators/sw-sections/default-template.js +59 -6
  97. package/dist/lib/generators/sw-sections/default-template.js.map +1 -1
  98. package/dist/lib/generators/sw-sections/fetch-handler.js +621 -495
  99. package/dist/lib/generators/sw-sections/fetch-handler.js.map +1 -1
  100. package/dist/lib/generators/sw-sections/install-handler.js +40 -23
  101. package/dist/lib/generators/sw-sections/install-handler.js.map +1 -1
  102. package/dist/lib/generators/sw-sections/message-handler.js +25 -8
  103. package/dist/lib/generators/sw-sections/message-handler.js.map +1 -1
  104. package/dist/lib/generators/sw-sections/server-push-handler.js +10 -14
  105. package/dist/lib/generators/sw-sections/server-push-handler.js.map +1 -1
  106. package/dist/lib/generators/sw-sections/shared.js +68 -0
  107. package/dist/lib/generators/sw-sections/shared.js.map +1 -0
  108. package/dist/lib/generators/sw-sections/sw-push.js +2 -6
  109. package/dist/lib/generators/sw-sections/sw-push.js.map +1 -1
  110. package/dist/lib/generators/sw-sections/tag-management.js +55 -86
  111. package/dist/lib/generators/sw-sections/tag-management.js.map +1 -1
  112. package/dist/lib/generators/swoff-files-generator.js +183 -59
  113. package/dist/lib/generators/swoff-files-generator.js.map +1 -1
  114. package/dist/lib/shared/config-types.js +67 -63
  115. package/dist/lib/shared/config-types.js.map +1 -1
  116. package/dist/lib/shared/feature-registry.js +198 -0
  117. package/dist/lib/shared/feature-registry.js.map +1 -0
  118. package/dist/lib/utils/detect-framework.js +52 -9
  119. package/dist/lib/utils/detect-framework.js.map +1 -1
  120. package/dist/runtime/api-config.js +2 -2
  121. package/dist/runtime/api-config.js.map +1 -1
  122. package/dist/runtime/auth-adapter.js +179 -0
  123. package/dist/runtime/auth-adapter.js.map +1 -0
  124. package/dist/runtime/auth-state.js +16 -6
  125. package/dist/runtime/auth-state.js.map +1 -1
  126. package/dist/runtime/auth-store.js +219 -213
  127. package/dist/runtime/auth-store.js.map +1 -1
  128. package/dist/runtime/auth-user.js +5 -19
  129. package/dist/runtime/auth-user.js.map +1 -1
  130. package/dist/runtime/background-sync.js +5 -2
  131. package/dist/runtime/background-sync.js.map +1 -1
  132. package/dist/runtime/cache.js +91 -3
  133. package/dist/runtime/cache.js.map +1 -1
  134. package/dist/runtime/client-injector-bundle.js +314 -0
  135. package/dist/runtime/client-injector-bundle.js.map +1 -0
  136. package/dist/runtime/client-injector.js +173 -30
  137. package/dist/runtime/client-injector.js.map +1 -1
  138. package/dist/runtime/connectivity-manager.js +83 -0
  139. package/dist/runtime/connectivity-manager.js.map +1 -0
  140. package/dist/runtime/connectivity.js +83 -0
  141. package/dist/runtime/connectivity.js.map +1 -0
  142. package/dist/runtime/fetch-wrapper.js +26 -59
  143. package/dist/runtime/fetch-wrapper.js.map +1 -1
  144. package/dist/runtime/gql-wrapper.js +15 -9
  145. package/dist/runtime/gql-wrapper.js.map +1 -1
  146. package/dist/runtime/invalidation-tags.js +12 -89
  147. package/dist/runtime/invalidation-tags.js.map +1 -1
  148. package/dist/runtime/mutation-queue.js +83 -31
  149. package/dist/runtime/mutation-queue.js.map +1 -1
  150. package/dist/runtime/mutation-state.js +3 -3
  151. package/dist/runtime/mutation-state.js.map +1 -1
  152. package/dist/runtime/notification.js +65 -0
  153. package/dist/runtime/notification.js.map +1 -0
  154. package/dist/runtime/open-db.js +41 -0
  155. package/dist/runtime/open-db.js.map +1 -0
  156. package/dist/runtime/push.js +15 -27
  157. package/dist/runtime/push.js.map +1 -1
  158. package/dist/runtime/pwa-injector.js +3 -32
  159. package/dist/runtime/pwa-injector.js.map +1 -1
  160. package/dist/runtime/pwa-prompt.js +35 -3
  161. package/dist/runtime/pwa-prompt.js.map +1 -1
  162. package/dist/runtime/reset.js +39 -42
  163. package/dist/runtime/reset.js.map +1 -1
  164. package/dist/runtime/server-push.js +23 -13
  165. package/dist/runtime/server-push.js.map +1 -1
  166. package/dist/runtime/storage.js +32 -0
  167. package/dist/runtime/storage.js.map +1 -0
  168. package/dist/runtime/sw-injector.js +19 -178
  169. package/dist/runtime/sw-injector.js.map +1 -1
  170. package/dist/runtime/sw-version.js +13 -0
  171. package/dist/runtime/sw-version.js.map +1 -0
  172. package/dist/runtime/swoff-api-bundle.js +1491 -0
  173. package/dist/runtime/swoff-api-bundle.js.map +1 -0
  174. package/dist/runtime/type-definitions.js +8 -7
  175. package/dist/runtime/type-definitions.js.map +1 -1
  176. package/dist/runtime/utils.js +4 -0
  177. package/dist/runtime/utils.js.map +1 -1
  178. package/dist/swoff-nkdhhmw8. +18 -0
  179. package/dist/swoff.js +5 -0
  180. package/package.json +1 -1
  181. package/templates/react/useAuth.jsx +7 -4
  182. package/templates/react/useAuth.tsx +14 -14
  183. package/templates/react/useBackgroundSync.jsx +5 -4
  184. package/templates/react/useBackgroundSync.tsx +5 -4
  185. package/templates/react/useCachedFetch.jsx +8 -0
  186. package/templates/react/useCachedFetch.tsx +8 -0
  187. package/templates/react/useMutation.jsx +60 -56
  188. package/templates/react/useMutation.tsx +65 -64
  189. package/templates/react/useMutationQueue.jsx +5 -1
  190. package/templates/react/useMutationQueue.tsx +8 -2
  191. package/templates/react/useMutationState.jsx +3 -4
  192. package/templates/react/useMutationState.tsx +4 -8
  193. package/templates/react/useNetworkStatus.jsx +57 -17
  194. package/templates/react/useNetworkStatus.tsx +42 -20
  195. package/templates/react/useOfflineAnalytics.jsx +42 -0
  196. package/templates/react/useOfflineAnalytics.tsx +50 -0
  197. package/templates/react/usePwaInstall.jsx +26 -0
  198. package/templates/react/usePwaInstall.tsx +26 -0
  199. package/templates/react/useSWUpdate.jsx +7 -52
  200. package/templates/react/useSWUpdate.tsx +12 -51
  201. package/templates/react/useStorageEstimate.jsx +56 -0
  202. package/templates/react/useStorageEstimate.tsx +67 -0
  203. package/dist/__tests__/assemble-sw.test.js +0 -145
  204. package/dist/__tests__/assemble-sw.test.js.map +0 -1
  205. package/dist/__tests__/cli-integration.test.js +0 -231
  206. package/dist/__tests__/cli-integration.test.js.map +0 -1
  207. package/dist/__tests__/config-types.test.js +0 -124
  208. package/dist/__tests__/config-types.test.js.map +0 -1
  209. package/dist/__tests__/detect-language.test.js +0 -51
  210. package/dist/__tests__/detect-language.test.js.map +0 -1
  211. package/dist/__tests__/file-generators.test.js +0 -228
  212. package/dist/__tests__/file-generators.test.js.map +0 -1
  213. package/dist/__tests__/glob-matcher.test.js +0 -86
  214. package/dist/__tests__/glob-matcher.test.js.map +0 -1
  215. package/dist/__tests__/invalidation-tags.test.js +0 -283
  216. package/dist/__tests__/invalidation-tags.test.js.map +0 -1
  217. package/dist/__tests__/loader.test.js +0 -77
  218. package/dist/__tests__/loader.test.js.map +0 -1
  219. package/dist/__tests__/validator.test.js +0 -340
  220. package/dist/__tests__/validator.test.js.map +0 -1
  221. package/templates/react/useCacheInvalidation.jsx +0 -19
  222. package/templates/react/useCacheInvalidation.tsx +0 -52
  223. package/templates/react/useIsFetching.jsx +0 -32
  224. package/templates/react/useIsFetching.tsx +0 -32
@@ -1,21 +1,8 @@
1
- import { KNOWN_FEATURES, OBJECT_FEATURES, VALID_STRATEGIES, REACTIVE_FIELDS, CONFIG_VERSION } from "../shared/config-types.js";
1
+ import { KNOWN_FEATURES, OBJECT_FEATURES, VALID_STRATEGIES, REACTIVE_FIELDS } from "../shared/config-types.js";
2
+ import { FEATURES } from "../shared/feature-registry.js";
2
3
  export function validateConfig(config) {
3
4
  const errors = [];
4
- if (config.enabled !== undefined && typeof config.enabled !== "boolean") {
5
- errors.push("enabled must be a boolean");
6
- }
7
- if (config.configVersion !== undefined) {
8
- if (typeof config.configVersion !== "number") {
9
- errors.push("configVersion must be a number");
10
- }
11
- else if (config.configVersion !== CONFIG_VERSION) {
12
- errors.push(`configVersion must be ${CONFIG_VERSION}, got ${config.configVersion}`);
13
- }
14
- }
15
- if (config.apiBaseUrl !== undefined && typeof config.apiBaseUrl !== "string") {
16
- errors.push("apiBaseUrl must be a string");
17
- }
18
- const requiredFields = ["enabled", "features", "build"];
5
+ const requiredFields = ["features", "build"];
19
6
  const missingFields = requiredFields.filter((field) => config[field] === undefined || config[field] === null);
20
7
  if (missingFields.length > 0) {
21
8
  errors.push(`Missing required fields: ${missingFields.join(", ")}`);
@@ -29,7 +16,12 @@ export function validateConfig(config) {
29
16
  continue;
30
17
  }
31
18
  }
32
- else if (key !== "backgroundSync" && key !== "crossTabSync") {
19
+ else if (key === "requestBatchWindowMs") {
20
+ if (typeof value !== "number" || value < 0 || !Number.isInteger(value)) {
21
+ errors.push("features.requestBatchWindowMs must be a non-negative integer");
22
+ }
23
+ }
24
+ else {
33
25
  if (!KNOWN_FEATURES.includes(key)) {
34
26
  errors.push(`Unknown feature "${key}"`);
35
27
  continue;
@@ -50,37 +42,26 @@ export function validateConfig(config) {
50
42
  }
51
43
  const sw = features.serviceWorker;
52
44
  if (sw) {
53
- const ver = sw.version;
54
- if (typeof ver !== "string") {
55
- errors.push('features.serviceWorker.version must be a string');
56
- }
57
- else {
58
- const isSemver = /^\d+\.\d+\.\d+$/.test(ver);
59
- const isPackage = ver === "package";
60
- const isHash = ver === "hash";
61
- if (!isSemver && !isPackage && !isHash) {
62
- errors.push(`features.serviceWorker.version must be "package", "hash", or a semver string (e.g. "1.0.0")`);
63
- }
64
- }
65
- if (sw.minSupportedVersion !== undefined && typeof sw.minSupportedVersion === "string") {
66
- if (!/^\d+\.\d+\.\d+$/.test(sw.minSupportedVersion)) {
67
- errors.push(`Invalid minSupportedVersion "${sw.minSupportedVersion}". Must be semver (e.g., "1.0.0")`);
68
- }
69
- }
70
- if (sw.autoUpdate !== undefined && typeof sw.autoUpdate !== "boolean") {
71
- errors.push("features.serviceWorker.autoUpdate must be a boolean");
72
- }
73
45
  if (sw.autoActivate !== undefined && typeof sw.autoActivate !== "boolean") {
74
46
  errors.push("features.serviceWorker.autoActivate must be a boolean");
75
47
  }
76
48
  const strategy = sw.strategy;
77
49
  if (strategy && typeof strategy === "object") {
78
- if (strategy.default && !VALID_STRATEGIES.includes(strategy.default)) {
50
+ if (strategy.default !== undefined && !VALID_STRATEGIES.includes(strategy.default)) {
79
51
  errors.push(`Invalid features.serviceWorker.strategy.default "${strategy.default}". Must be one of: ${VALID_STRATEGIES.join(", ")}`);
80
52
  }
81
53
  const patterns = strategy.patterns;
82
54
  if (patterns && typeof patterns === "object") {
83
55
  for (const [pattern, entry] of Object.entries(patterns)) {
56
+ if (typeof pattern !== "string" || pattern.trim() === "") {
57
+ errors.push("features.serviceWorker.strategy.patterns keys must be non-empty strings");
58
+ continue;
59
+ }
60
+ const opens = (pattern.match(/\{/g) || []).length;
61
+ const closes = (pattern.match(/\}/g) || []).length;
62
+ if (opens !== closes) {
63
+ errors.push(`features.serviceWorker.strategy.patterns["${pattern}"] has unbalanced braces`);
64
+ }
84
65
  if (typeof entry === "string") {
85
66
  if (!VALID_STRATEGIES.includes(entry)) {
86
67
  errors.push(`Invalid strategy "${entry}" for pattern "${pattern}". Must be one of: ${VALID_STRATEGIES.join(", ")}`);
@@ -119,12 +100,6 @@ export function validateConfig(config) {
119
100
  }
120
101
  }
121
102
  }
122
- if (strategy.clearRuntimeOnUpdate !== undefined && typeof strategy.clearRuntimeOnUpdate !== "boolean") {
123
- errors.push("features.serviceWorker.strategy.clearRuntimeOnUpdate must be a boolean");
124
- }
125
- if (strategy.mode !== undefined && !["all", "explicit-only"].includes(strategy.mode)) {
126
- errors.push('features.serviceWorker.strategy.mode must be "all" or "explicit-only"');
127
- }
128
103
  if (strategy.normalizeKey !== undefined && typeof strategy.normalizeKey !== "boolean") {
129
104
  errors.push("features.serviceWorker.strategy.normalizeKey must be a boolean");
130
105
  }
@@ -134,6 +109,9 @@ export function validateConfig(config) {
134
109
  if (strategy.ignoreQueryParams !== undefined && (!Array.isArray(strategy.ignoreQueryParams) || !strategy.ignoreQueryParams.every((p) => typeof p === "string"))) {
135
110
  errors.push("features.serviceWorker.strategy.ignoreQueryParams must be an array of strings");
136
111
  }
112
+ if (strategy.timeout !== undefined && (typeof strategy.timeout !== "number" || strategy.timeout <= 0)) {
113
+ errors.push("features.serviceWorker.strategy.timeout must be a positive number");
114
+ }
137
115
  const reactive = strategy.reactive;
138
116
  if (reactive && typeof reactive === "object") {
139
117
  const defaults = reactive.defaults;
@@ -155,8 +133,8 @@ export function validateConfig(config) {
155
133
  }
156
134
  const navigation = sw.navigation;
157
135
  if (navigation && typeof navigation === "object") {
158
- if (navigation.mode !== undefined && !["spa", "default"].includes(navigation.mode)) {
159
- errors.push('features.serviceWorker.navigation.mode must be "spa" or "default"');
136
+ if (navigation.mode !== undefined && !["spa", "default", "ssr"].includes(navigation.mode)) {
137
+ errors.push('features.serviceWorker.navigation.mode must be "spa", "default", or "ssr"');
160
138
  }
161
139
  if (navigation.fallback !== undefined && typeof navigation.fallback !== "string") {
162
140
  errors.push("features.serviceWorker.navigation.fallback must be a string");
@@ -164,9 +142,36 @@ export function validateConfig(config) {
164
142
  if (navigation.preload !== undefined && typeof navigation.preload !== "boolean") {
165
143
  errors.push("features.serviceWorker.navigation.preload must be a boolean");
166
144
  }
167
- }
168
- if (sw.requestBatchWindowMs !== undefined && (typeof sw.requestBatchWindowMs !== "number" || sw.requestBatchWindowMs < 0 || !Number.isInteger(sw.requestBatchWindowMs))) {
169
- errors.push("features.serviceWorker.requestBatchWindowMs must be a non-negative integer");
145
+ if (navigation.precacheRoutes !== undefined) {
146
+ if (!Array.isArray(navigation.precacheRoutes) || !navigation.precacheRoutes.every((r) => typeof r === "string")) {
147
+ errors.push("features.serviceWorker.navigation.precacheRoutes must be an array of strings");
148
+ }
149
+ }
150
+ const rules = navigation.rules;
151
+ if (rules !== undefined) {
152
+ if (!Array.isArray(rules)) {
153
+ errors.push("features.serviceWorker.navigation.rules must be an array");
154
+ }
155
+ else {
156
+ for (let i = 0; i < rules.length; i++) {
157
+ const rule = rules[i];
158
+ if (!rule || typeof rule !== "object") {
159
+ errors.push(`features.serviceWorker.navigation.rules[${i}] must be an object`);
160
+ continue;
161
+ }
162
+ if (typeof rule.match !== "string" || rule.match.trim() === "") {
163
+ errors.push(`features.serviceWorker.navigation.rules[${i}].match must be a non-empty string`);
164
+ }
165
+ if (rule.fallback !== undefined && typeof rule.fallback !== "string") {
166
+ errors.push(`features.serviceWorker.navigation.rules[${i}].fallback must be a string`);
167
+ }
168
+ }
169
+ }
170
+ }
171
+ const retry = navigation.retry;
172
+ if (retry !== undefined) {
173
+ // navigation.retry is deprecated and ignored
174
+ }
170
175
  }
171
176
  }
172
177
  const refetchQueue = features.refetchQueue;
@@ -177,18 +182,35 @@ export function validateConfig(config) {
177
182
  if (refetchQueue.batchDelayMs !== undefined && (typeof refetchQueue.batchDelayMs !== "number" || refetchQueue.batchDelayMs < 0 || !Number.isInteger(refetchQueue.batchDelayMs))) {
178
183
  errors.push("features.refetchQueue.batchDelayMs must be a non-negative integer");
179
184
  }
180
- if (refetchQueue.maxRetries !== undefined && (typeof refetchQueue.maxRetries !== "number" || refetchQueue.maxRetries < 0 || !Number.isInteger(refetchQueue.maxRetries))) {
181
- errors.push("features.refetchQueue.maxRetries must be a non-negative integer");
182
- }
183
- if (refetchQueue.retryDelayMs !== undefined && (typeof refetchQueue.retryDelayMs !== "number" || refetchQueue.retryDelayMs < 0 || !Number.isInteger(refetchQueue.retryDelayMs))) {
184
- errors.push("features.refetchQueue.retryDelayMs must be a non-negative integer");
185
+ const retry = refetchQueue.retry;
186
+ if (retry !== undefined) {
187
+ if (typeof retry !== "object" || retry === null) {
188
+ errors.push("features.refetchQueue.retry must be an object");
189
+ }
190
+ else {
191
+ if (retry.maxRetries !== undefined && (typeof retry.maxRetries !== "number" || retry.maxRetries < 0 || !Number.isInteger(retry.maxRetries))) {
192
+ errors.push("features.refetchQueue.retry.maxRetries must be a non-negative integer");
193
+ }
194
+ if (retry.backoffMs !== undefined && (typeof retry.backoffMs !== "number" || retry.backoffMs < 0 || !Number.isInteger(retry.backoffMs))) {
195
+ errors.push("features.refetchQueue.retry.backoffMs must be a non-negative integer");
196
+ }
197
+ if (retry.maxBackoffMs !== undefined && (typeof retry.maxBackoffMs !== "number" || retry.maxBackoffMs < 0 || !Number.isInteger(retry.maxBackoffMs))) {
198
+ errors.push("features.refetchQueue.retry.maxBackoffMs must be a non-negative integer");
199
+ }
200
+ if (retry.jitterMs !== undefined && (typeof retry.jitterMs !== "number" || retry.jitterMs < 0 || !Number.isInteger(retry.jitterMs))) {
201
+ errors.push("features.refetchQueue.retry.jitterMs must be a non-negative integer");
202
+ }
203
+ }
185
204
  }
186
205
  }
187
206
  const tagInvalidationVal = features.tagInvalidation;
188
207
  if (tagInvalidationVal && typeof tagInvalidationVal === "object") {
189
208
  const ti = tagInvalidationVal;
190
- if (ti.prefixes !== undefined && (!Array.isArray(ti.prefixes) || !ti.prefixes.every((p) => typeof p === "string"))) {
191
- errors.push("features.tagInvalidation.prefixes must be an array of strings");
209
+ if (ti.debounceMs !== undefined && (typeof ti.debounceMs !== "number" || ti.debounceMs < 0 || !Number.isInteger(ti.debounceMs))) {
210
+ errors.push("features.tagInvalidation.debounceMs must be a non-negative integer");
211
+ }
212
+ if (ti.skipPrefixes !== undefined && (!Array.isArray(ti.skipPrefixes) || !ti.skipPrefixes.every((p) => typeof p === "string"))) {
213
+ errors.push("features.tagInvalidation.skipPrefixes must be an array of strings");
192
214
  }
193
215
  if (ti.patterns !== undefined && (typeof ti.patterns !== "object" || ti.patterns === null)) {
194
216
  errors.push("features.tagInvalidation.patterns must be an object");
@@ -200,7 +222,6 @@ export function validateConfig(config) {
200
222
  errors.push("features.tagInvalidation.cascading must be an object");
201
223
  }
202
224
  }
203
- const backgroundSyncVal = features.backgroundSync;
204
225
  const mutationQueueVal = features.mutationQueue;
205
226
  if (mutationQueueVal && typeof mutationQueueVal === "object") {
206
227
  const mq = mutationQueueVal;
@@ -213,36 +234,53 @@ export function validateConfig(config) {
213
234
  if (mq.batchDelayMs !== undefined && (typeof mq.batchDelayMs !== "number" || mq.batchDelayMs < 0 || !Number.isInteger(mq.batchDelayMs))) {
214
235
  errors.push("features.mutationQueue.batchDelayMs must be a non-negative integer");
215
236
  }
216
- if (mq.maxRetries !== undefined && (typeof mq.maxRetries !== "number" || mq.maxRetries < 1 || !Number.isInteger(mq.maxRetries))) {
217
- errors.push("features.mutationQueue.maxRetries must be a positive integer");
237
+ const mqRetry = mq.retry;
238
+ if (mqRetry !== undefined) {
239
+ if (typeof mqRetry !== "object" || mqRetry === null) {
240
+ errors.push("features.mutationQueue.retry must be an object");
241
+ }
242
+ else {
243
+ if (mqRetry.maxRetries !== undefined && (typeof mqRetry.maxRetries !== "number" || mqRetry.maxRetries < 0 || !Number.isInteger(mqRetry.maxRetries))) {
244
+ errors.push("features.mutationQueue.retry.maxRetries must be a non-negative integer");
245
+ }
246
+ if (mqRetry.backoffMs !== undefined && (typeof mqRetry.backoffMs !== "number" || mqRetry.backoffMs < 0 || !Number.isInteger(mqRetry.backoffMs))) {
247
+ errors.push("features.mutationQueue.retry.backoffMs must be a non-negative integer");
248
+ }
249
+ if (mqRetry.maxBackoffMs !== undefined && (typeof mqRetry.maxBackoffMs !== "number" || mqRetry.maxBackoffMs < 0 || !Number.isInteger(mqRetry.maxBackoffMs))) {
250
+ errors.push("features.mutationQueue.retry.maxBackoffMs must be a non-negative integer");
251
+ }
252
+ if (mqRetry.jitterMs !== undefined && (typeof mqRetry.jitterMs !== "number" || mqRetry.jitterMs < 0 || !Number.isInteger(mqRetry.jitterMs))) {
253
+ errors.push("features.mutationQueue.retry.jitterMs must be a non-negative integer");
254
+ }
255
+ }
218
256
  }
219
- if (mq.retryBackoffMs !== undefined && (typeof mq.retryBackoffMs !== "number" || mq.retryBackoffMs < 0 || !Number.isInteger(mq.retryBackoffMs))) {
220
- errors.push("features.mutationQueue.retryBackoffMs must be a non-negative integer");
257
+ if (mq.backgroundSync !== undefined && typeof mq.backgroundSync !== "boolean") {
258
+ errors.push("features.mutationQueue.backgroundSync must be a boolean");
221
259
  }
222
- }
223
- const mqEnabled = mutationQueueVal?.enabled === true;
224
- if (backgroundSyncVal === true && !mqEnabled) {
225
- errors.push("backgroundSync requires mutationQueue to be enabled");
226
- }
227
- if (backgroundSyncVal === true) {
228
- const authBg = features.auth;
229
- if (authBg?.enabled === true && authBg?.type !== "cookie") {
230
- errors.push("backgroundSync is not supported with auth type \"bearer\" or \"custom\" — tokens must not be stored in IndexedDB");
260
+ const backgroundSyncVal = mq.backgroundSync === true;
261
+ if (backgroundSyncVal && mq.enabled !== true) {
262
+ errors.push("features.mutationQueue.backgroundSync requires mutationQueue to be enabled");
263
+ }
264
+ if (backgroundSyncVal) {
265
+ const authBg = features.auth;
266
+ if (authBg?.enabled === true && authBg?.type !== "cookie") {
267
+ errors.push("features.mutationQueue.backgroundSync is only supported with auth type \"cookie\" — the service worker cannot access bearer tokens");
268
+ }
231
269
  }
232
270
  }
271
+ const VALID_AUTH_TYPES = ["cookie", "bearer", "custom"];
233
272
  const auth = features.auth;
234
273
  if (auth && typeof auth === "object") {
235
274
  if (auth.enabled !== undefined && typeof auth.enabled !== "boolean") {
236
275
  errors.push("features.auth.enabled must be a boolean");
237
276
  }
238
- if (auth.type !== undefined && !["cookie", "bearer", "custom"].includes(auth.type)) {
239
- errors.push('features.auth.type must be "cookie", "bearer", or "custom"');
277
+ if (auth.type !== undefined && !VALID_AUTH_TYPES.includes(auth.type)) {
278
+ errors.push(`features.auth.type must be one of: ${VALID_AUTH_TYPES.join(", ")}`);
240
279
  }
241
- if (auth.refreshPath !== undefined && typeof auth.refreshPath !== "string") {
242
- errors.push("features.auth.refreshPath must be a string");
243
- }
244
- if (auth.userEndpoint !== undefined && typeof auth.userEndpoint !== "string") {
245
- errors.push("features.auth.userEndpoint must be a string");
280
+ if (auth.routePaths !== undefined) {
281
+ if (!Array.isArray(auth.routePaths) || !auth.routePaths.every((p) => typeof p === "string")) {
282
+ errors.push("features.auth.routePaths must be an array of strings");
283
+ }
246
284
  }
247
285
  }
248
286
  const graphql = features.graphql;
@@ -250,38 +288,52 @@ export function validateConfig(config) {
250
288
  if (graphql.enabled !== undefined && typeof graphql.enabled !== "boolean") {
251
289
  errors.push("features.graphql.enabled must be a boolean");
252
290
  }
253
- if (graphql.endpoint !== undefined && typeof graphql.endpoint !== "string") {
254
- errors.push("features.graphql.endpoint must be a string");
291
+ if (graphql.endpoints !== undefined) {
292
+ if (!Array.isArray(graphql.endpoints) || !graphql.endpoints.every((e) => typeof e === "string")) {
293
+ errors.push("features.graphql.endpoints must be an array of strings");
294
+ }
255
295
  }
256
296
  }
257
- const serverPush = features.serverPush;
258
- if (serverPush && typeof serverPush === "object") {
259
- if (serverPush.enabled !== undefined && typeof serverPush.enabled !== "boolean") {
297
+ if (features.pushNotifications !== undefined && typeof features.pushNotifications !== "boolean") {
298
+ errors.push("features.pushNotifications must be a boolean");
299
+ }
300
+ const sp = features.serverPush;
301
+ if (sp && typeof sp === "object") {
302
+ if (sp.enabled !== undefined && typeof sp.enabled !== "boolean") {
260
303
  errors.push("features.serverPush.enabled must be a boolean");
261
304
  }
262
- if (serverPush.type !== undefined && !["sse", "websocket"].includes(serverPush.type)) {
305
+ if (sp.enabled && features.auth && typeof features.auth === "object" && features.auth.enabled && features.auth.type === "bearer") {
306
+ errors.push("features.serverPush is not supported with bearer auth — use cookie auth instead");
307
+ }
308
+ if (sp.enabled) {
309
+ const ti = features.tagInvalidation;
310
+ if (ti && typeof ti === "object" && ti.enabled === false) {
311
+ errors.push("features.serverPush requires features.tagInvalidation to be enabled");
312
+ }
313
+ }
314
+ if (sp.type !== undefined && !["sse", "websocket"].includes(sp.type)) {
263
315
  errors.push('features.serverPush.type must be "sse" or "websocket"');
264
316
  }
265
- if (serverPush.endpoint !== undefined && typeof serverPush.endpoint !== "string") {
317
+ if (sp.endpoint !== undefined && typeof sp.endpoint !== "string") {
266
318
  errors.push("features.serverPush.endpoint must be a string");
267
319
  }
268
- if (serverPush.reconnectDelayMs !== undefined && (typeof serverPush.reconnectDelayMs !== "number" || serverPush.reconnectDelayMs < 0)) {
269
- errors.push("features.serverPush.reconnectDelayMs must be a non-negative number");
270
- }
271
- }
272
- const pushNotifications = features.pushNotifications;
273
- if (pushNotifications && typeof pushNotifications === "object") {
274
- if (pushNotifications.enabled !== undefined && typeof pushNotifications.enabled !== "boolean") {
275
- errors.push("features.pushNotifications.enabled must be a boolean");
320
+ if (sp.reconnectDelayMs !== undefined && (typeof sp.reconnectDelayMs !== "number" || sp.reconnectDelayMs < 0 || !Number.isInteger(sp.reconnectDelayMs))) {
321
+ errors.push("features.serverPush.reconnectDelayMs must be a non-negative integer (capped at 30000ms)");
276
322
  }
277
- if (pushNotifications.vapidPublicKey !== undefined && typeof pushNotifications.vapidPublicKey !== "string") {
278
- errors.push("features.pushNotifications.vapidPublicKey must be a string");
323
+ if (sp.reconnectDelayMs !== undefined && typeof sp.reconnectDelayMs === "number" && sp.reconnectDelayMs > 30000) {
324
+ errors.push("features.serverPush.reconnectDelayMs is capped at 30000ms (30s)");
279
325
  }
280
326
  }
281
327
  }
282
328
  const fw = config.framework;
283
- if (fw !== undefined && typeof fw === "string" && !["react", "vue", "svelte", "vanilla"].includes(fw)) {
284
- errors.push('framework must be "react", "vue", "svelte", or "vanilla"');
329
+ const VALID_FRAMEWORKS = ["nextjs", "remix", "tanstack-start-react", "astro", "nuxt", "sveltekit", "react-spa", "vue", "svelte", "vanilla"];
330
+ if (fw !== undefined) {
331
+ if (typeof fw !== "string") {
332
+ errors.push(`framework must be a string, got ${typeof fw}`);
333
+ }
334
+ else if (!VALID_FRAMEWORKS.includes(fw)) {
335
+ errors.push(`framework must be one of: ${VALID_FRAMEWORKS.join(", ")}`);
336
+ }
285
337
  }
286
338
  if (config.build) {
287
339
  const build = config.build;
@@ -295,6 +347,60 @@ export function validateConfig(config) {
295
347
  errors.push("build.swFilename must be a non-empty string");
296
348
  }
297
349
  }
350
+ if (build.precacheDirs !== undefined) {
351
+ if (typeof build.precacheDirs !== "object" || build.precacheDirs === null || Array.isArray(build.precacheDirs)) {
352
+ errors.push("build.precacheDirs must be an object");
353
+ }
354
+ else {
355
+ for (const [dir, value] of Object.entries(build.precacheDirs)) {
356
+ if (typeof dir !== "string" || !dir) {
357
+ errors.push("build.precacheDirs keys must be non-empty strings");
358
+ continue;
359
+ }
360
+ if (typeof value !== "object" || value === null) {
361
+ errors.push(`build.precacheDirs["${dir}"] must be an object`);
362
+ continue;
363
+ }
364
+ const obj = value;
365
+ if (typeof obj.prefix !== "string") {
366
+ errors.push(`build.precacheDirs["${dir}"].prefix must be a string`);
367
+ }
368
+ if (obj.matchExtensions !== undefined) {
369
+ if (!Array.isArray(obj.matchExtensions) || !obj.matchExtensions.every((e) => typeof e === "string")) {
370
+ errors.push(`build.precacheDirs["${dir}"].matchExtensions must be an array of strings`);
371
+ }
372
+ }
373
+ if (obj.stripExtensions !== undefined) {
374
+ if (!Array.isArray(obj.stripExtensions) || !obj.stripExtensions.every((e) => typeof e === "string")) {
375
+ errors.push(`build.precacheDirs["${dir}"].stripExtensions must be an array of strings`);
376
+ }
377
+ }
378
+ if (obj.stripSuffixes !== undefined) {
379
+ if (!Array.isArray(obj.stripSuffixes) || !obj.stripSuffixes.every((s) => typeof s === "string")) {
380
+ errors.push(`build.precacheDirs["${dir}"].stripSuffixes must be an array of strings`);
381
+ }
382
+ }
383
+ }
384
+ }
385
+ }
386
+ }
387
+ const swoffConfig = config;
388
+ if (swoffConfig.features) {
389
+ const auth = swoffConfig.features.auth;
390
+ for (const [, feature] of Object.entries(FEATURES)) {
391
+ if (!feature.checkEnabled(swoffConfig))
392
+ continue;
393
+ const missing = feature.requires.filter((depId) => {
394
+ const dep = FEATURES[depId];
395
+ return dep && !dep.checkEnabled(swoffConfig);
396
+ });
397
+ for (const depId of missing) {
398
+ errors.push(`"${feature.label}" requires "${FEATURES[depId]?.label ?? depId}" to be enabled`);
399
+ }
400
+ if (auth?.enabled && feature.incompatibleAuthTypes.includes(auth.type)) {
401
+ errors.push(`"${feature.label}" is not compatible with auth type "${auth.type}" — use "cookie" instead`);
402
+ }
403
+ }
298
404
  }
299
405
  return errors;
300
406
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/lib/config/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/lib/config/validator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { writeFile } from "./context.js";
2
2
  import { generateApiConfigCode } from "../../../runtime/api-config.js";
3
3
  export function generateApiConfig(ctx) {
4
- writeFile(ctx, `config.${ctx.ext}`, generateApiConfigCode(ctx.config.apiBaseUrl || ""));
4
+ writeFile(ctx, `config.${ctx.ext}`, generateApiConfigCode());
5
5
  }
6
6
  //# sourceMappingURL=api-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-config.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/api-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1F,CAAC"}
1
+ {"version":3,"file":"api-config.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/api-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,GAAG,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Generates auth/adapter.ts/js — maps Swoff auth infrastructure to the user's auth provider.
3
+ */
4
+ import { writeFile } from "./context.js";
5
+ import { generateAuthAdapterCode } from "../../../runtime/auth-adapter.js";
6
+ export function generateAuthAdapter(ctx) {
7
+ const ext = ctx.ext;
8
+ const ts = ext === "ts";
9
+ const authConfig = ctx.config.features.auth;
10
+ const code = generateAuthAdapterCode({ ts, ext }, authConfig.type);
11
+ writeFile(ctx, `auth/adapter.${ext}`, code);
12
+ }
13
+ //# sourceMappingURL=auth-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-adapter.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/auth-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,MAAM,UAAU,mBAAmB,CAAC,GAAqB;IACvD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC;IACxB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAE5C,MAAM,IAAI,GAAG,uBAAuB,CAClC,EAAE,EAAE,EAAE,GAAG,EAAE,EACX,UAAU,CAAC,IAAI,CAChB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Generates swoff/auth/check.{ts|js} — user-editable auth failure predicate.
3
+ * Used by the SW (at build time) and client (at runtime) as the single
4
+ * source of truth for detecting auth failures.
5
+ */
6
+ import { writeFile } from "./context.js";
7
+ export function generateAuthCheck(ctx) {
8
+ const ts = ctx.ext === "ts";
9
+ const typeAnnotations = ts ? ": Response" : "";
10
+ const returnType = ts ? ": Promise<boolean>" : "";
11
+ const code = `/**
12
+ * Auth failure check — single source of truth for both SW and client.
13
+ *
14
+ * Return true when the response indicates the user's session is no longer
15
+ * valid (e.g. status 401, or a custom error body on 200).
16
+ *
17
+ * Used by:
18
+ * - Service Worker: called for every network response to detect session expiry
19
+ * - Client store: validates refresh() and fetchUser() adapter responses
20
+ *
21
+ * Must clone response before reading the body if body is needed.
22
+ *
23
+ * Examples:
24
+ * // Default: 401 status
25
+ * return response.status === 401;
26
+ *
27
+ * // Custom header
28
+ * return response.headers.get("X-Auth-Status") === "expired";
29
+ *
30
+ * // JSON body (must clone first)
31
+ * const data = await response.clone().json();
32
+ * return data.error === "unauthorized";
33
+ */
34
+ export async function isAuthFailureResponse(response${typeAnnotations})${returnType} {
35
+ return response.status === 401;
36
+ }
37
+ `;
38
+ writeFile(ctx, `auth/check.${ctx.ext}`, code);
39
+ }
40
+ //# sourceMappingURL=auth-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-check.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/auth-check.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC;IAE5B,MAAM,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IAElD,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;sDAuBuC,eAAe,IAAI,UAAU;;;CAGlF,CAAC;IAEA,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC"}
@@ -2,10 +2,6 @@
2
2
  * Generates auth-store.ts/js — token storage, auth headers, auth URL detection,
3
3
  * and token refresh. All auth logic lives here so fetch-wrapper can import it
4
4
  * without circular dependencies.
5
- *
6
- * Security: the Bearer token lives in memory only and is cleared on page
7
- * refresh. Only { user, expiresAt } is persisted to IndexedDB for offline
8
- * user display. After a page refresh, re-login is required.
9
5
  */
10
6
  import { writeFile } from "./context.js";
11
7
  import { generateAuthStoreCode } from "../../../runtime/auth-store.js";
@@ -13,7 +9,8 @@ export function generateAuthStore(ctx) {
13
9
  const ext = ctx.ext;
14
10
  const ts = ext === "ts";
15
11
  const authConfig = ctx.config.features.auth;
16
- const code = generateAuthStoreCode({ ts, ext }, authConfig.type, authConfig.refreshPath, authConfig.userEndpoint);
12
+ const mutationQueueEnabled = ctx.config.features.mutationQueue.enabled;
13
+ const code = generateAuthStoreCode({ ts, ext }, authConfig.type, authConfig.routePaths, mutationQueueEnabled);
17
14
  writeFile(ctx, `auth/store.${ext}`, code);
18
15
  }
19
16
  //# sourceMappingURL=auth-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/auth-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC;IACxB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAE5C,MAAM,IAAI,GAAG,qBAAqB,CAChC,EAAE,EAAE,EAAE,GAAG,EAAE,EACX,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,YAAY,CACxB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/auth-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC;IACxB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5C,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IAEvE,MAAM,IAAI,GAAG,qBAAqB,CAChC,EAAE,EAAE,EAAE,GAAG,EAAE,EACX,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,UAAU,EACrB,oBAAoB,CACrB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC"}
@@ -4,6 +4,6 @@
4
4
  import { writeFile } from "./context.js";
5
5
  import { generateBackgroundSyncCode } from "../../../runtime/background-sync.js";
6
6
  export function generateBackgroundSync(ctx) {
7
- writeFile(ctx, `offline/sync.${ctx.ext}`, generateBackgroundSyncCode({ ts: ctx.ext === "ts", ext: ctx.ext }));
7
+ writeFile(ctx, `mutation/sync.${ctx.ext}`, generateBackgroundSyncCode({ ts: ctx.ext === "ts", ext: ctx.ext }));
8
8
  }
9
9
  //# sourceMappingURL=background-sync.js.map