@swoff/cli 0.3.8 → 0.3.10

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 (228) hide show
  1. package/README.md +47 -33
  2. package/dist/__tests__/assemble-sw.test.js +14 -53
  3. package/dist/__tests__/assemble-sw.test.js.map +1 -1
  4. package/dist/__tests__/cli-integration.test.js +119 -11
  5. package/dist/__tests__/cli-integration.test.js.map +1 -1
  6. package/dist/__tests__/config-types.test.js +44 -17
  7. package/dist/__tests__/config-types.test.js.map +1 -1
  8. package/dist/__tests__/file-generators.test.js +3 -3
  9. package/dist/__tests__/file-generators.test.js.map +1 -1
  10. package/dist/__tests__/glob-matcher.test.js +86 -0
  11. package/dist/__tests__/glob-matcher.test.js.map +1 -0
  12. package/dist/__tests__/invalidation-tags.test.js +207 -23
  13. package/dist/__tests__/invalidation-tags.test.js.map +1 -1
  14. package/dist/__tests__/loader.test.js +16 -12
  15. package/dist/__tests__/loader.test.js.map +1 -1
  16. package/dist/__tests__/validator.test.js +140 -100
  17. package/dist/__tests__/validator.test.js.map +1 -1
  18. package/dist/index.js +39 -34
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib/cli/help.js +12 -12
  21. package/dist/lib/cli/help.js.map +1 -1
  22. package/dist/lib/commands/add.js +84 -36
  23. package/dist/lib/commands/add.js.map +1 -1
  24. package/dist/lib/commands/assets.js +37 -0
  25. package/dist/lib/commands/assets.js.map +1 -0
  26. package/dist/lib/commands/clean.js +32 -30
  27. package/dist/lib/commands/clean.js.map +1 -1
  28. package/dist/lib/commands/generate-assets.js +44 -0
  29. package/dist/lib/commands/generate-assets.js.map +1 -0
  30. package/dist/lib/commands/generate-guide.js +22 -29
  31. package/dist/lib/commands/generate-guide.js.map +1 -1
  32. package/dist/lib/commands/generate.js +17 -24
  33. package/dist/lib/commands/generate.js.map +1 -1
  34. package/dist/lib/commands/info.js +41 -48
  35. package/dist/lib/commands/info.js.map +1 -1
  36. package/dist/lib/commands/init.js +27 -13
  37. package/dist/lib/commands/init.js.map +1 -1
  38. package/dist/lib/commands/validate.js +4 -4
  39. package/dist/lib/commands/validate.js.map +1 -1
  40. package/dist/lib/config/loader.js +25 -23
  41. package/dist/lib/config/loader.js.map +1 -1
  42. package/dist/lib/config/validator.js +169 -91
  43. package/dist/lib/config/validator.js.map +1 -1
  44. package/dist/lib/generators/asset-generator/dependency-resolver.js +76 -0
  45. package/dist/lib/generators/asset-generator/dependency-resolver.js.map +1 -0
  46. package/dist/lib/generators/asset-generator/generate.js +111 -0
  47. package/dist/lib/generators/asset-generator/generate.js.map +1 -0
  48. package/dist/lib/generators/asset-generator/guide.js +43 -0
  49. package/dist/lib/generators/asset-generator/guide.js.map +1 -0
  50. package/dist/lib/generators/asset-generator/html-patcher.js +65 -0
  51. package/dist/lib/generators/asset-generator/html-patcher.js.map +1 -0
  52. package/dist/lib/generators/asset-generator/ico-encoder.js +29 -0
  53. package/dist/lib/generators/asset-generator/ico-encoder.js.map +1 -0
  54. package/dist/lib/generators/asset-generator/manifest-patcher.js +23 -0
  55. package/dist/lib/generators/asset-generator/manifest-patcher.js.map +1 -0
  56. package/dist/lib/generators/asset-generator/maskable.js +15 -0
  57. package/dist/lib/generators/asset-generator/maskable.js.map +1 -0
  58. package/dist/lib/generators/asset-generator/rasterize.js +32 -0
  59. package/dist/lib/generators/asset-generator/rasterize.js.map +1 -0
  60. package/dist/lib/generators/asset-generator/sizes.js +25 -0
  61. package/dist/lib/generators/asset-generator/sizes.js.map +1 -0
  62. package/dist/lib/generators/file-generators/api-config.js +6 -0
  63. package/dist/lib/generators/file-generators/api-config.js.map +1 -0
  64. package/dist/lib/generators/file-generators/auth-state.js +2 -34
  65. package/dist/lib/generators/file-generators/auth-state.js.map +1 -1
  66. package/dist/lib/generators/file-generators/auth-store.js +2 -250
  67. package/dist/lib/generators/file-generators/auth-store.js.map +1 -1
  68. package/dist/lib/generators/file-generators/auth-user.js +3 -81
  69. package/dist/lib/generators/file-generators/auth-user.js.map +1 -1
  70. package/dist/lib/generators/file-generators/background-sync.js +2 -57
  71. package/dist/lib/generators/file-generators/background-sync.js.map +1 -1
  72. package/dist/lib/generators/file-generators/cache.js +2 -38
  73. package/dist/lib/generators/file-generators/cache.js.map +1 -1
  74. package/dist/lib/generators/file-generators/client-injector.js +2 -91
  75. package/dist/lib/generators/file-generators/client-injector.js.map +1 -1
  76. package/dist/lib/generators/file-generators/fetch-state.js +6 -0
  77. package/dist/lib/generators/file-generators/fetch-state.js.map +1 -0
  78. package/dist/lib/generators/file-generators/fetch-wrapper.js +3 -267
  79. package/dist/lib/generators/file-generators/fetch-wrapper.js.map +1 -1
  80. package/dist/lib/generators/file-generators/generate-framework-adapters.js +56 -0
  81. package/dist/lib/generators/file-generators/generate-framework-adapters.js.map +1 -0
  82. package/dist/lib/generators/file-generators/generate-hooks.js +4 -3
  83. package/dist/lib/generators/file-generators/generate-hooks.js.map +1 -1
  84. package/dist/lib/generators/file-generators/gql-wrapper.js +3 -145
  85. package/dist/lib/generators/file-generators/gql-wrapper.js.map +1 -1
  86. package/dist/lib/generators/file-generators/guide-generator.js +24 -630
  87. package/dist/lib/generators/file-generators/guide-generator.js.map +1 -1
  88. package/dist/lib/generators/file-generators/invalidation-tags.js +18 -86
  89. package/dist/lib/generators/file-generators/invalidation-tags.js.map +1 -1
  90. package/dist/lib/generators/file-generators/manifest.js +15 -5
  91. package/dist/lib/generators/file-generators/manifest.js.map +1 -1
  92. package/dist/lib/generators/file-generators/mutation-queue.js +3 -285
  93. package/dist/lib/generators/file-generators/mutation-queue.js.map +1 -1
  94. package/dist/lib/generators/file-generators/mutation-state.js +2 -117
  95. package/dist/lib/generators/file-generators/mutation-state.js.map +1 -1
  96. package/dist/lib/generators/file-generators/push.js +6 -139
  97. package/dist/lib/generators/file-generators/push.js.map +1 -1
  98. package/dist/lib/generators/file-generators/pwa-install.js +11 -84
  99. package/dist/lib/generators/file-generators/pwa-install.js.map +1 -1
  100. package/dist/lib/generators/file-generators/quick-readme.js +8 -125
  101. package/dist/lib/generators/file-generators/quick-readme.js.map +1 -1
  102. package/dist/lib/generators/file-generators/reset.js +6 -0
  103. package/dist/lib/generators/file-generators/reset.js.map +1 -0
  104. package/dist/lib/generators/file-generators/server-push.js +3 -124
  105. package/dist/lib/generators/file-generators/server-push.js.map +1 -1
  106. package/dist/lib/generators/file-generators/sw-generator-build.js +8 -9
  107. package/dist/lib/generators/file-generators/sw-generator-build.js.map +1 -1
  108. package/dist/lib/generators/file-generators/sw-injector.js +10 -230
  109. package/dist/lib/generators/file-generators/sw-injector.js.map +1 -1
  110. package/dist/lib/generators/file-generators/type-definitions.js +2 -114
  111. package/dist/lib/generators/file-generators/type-definitions.js.map +1 -1
  112. package/dist/lib/generators/sw-generator.js +10 -20
  113. package/dist/lib/generators/sw-generator.js.map +1 -1
  114. package/dist/lib/generators/sw-sections/activate-handler.js +25 -3
  115. package/dist/lib/generators/sw-sections/activate-handler.js.map +1 -1
  116. package/dist/lib/generators/sw-sections/assemble-sw.js +20 -16
  117. package/dist/lib/generators/sw-sections/assemble-sw.js.map +1 -1
  118. package/dist/lib/generators/sw-sections/background-sync-handler.js +68 -19
  119. package/dist/lib/generators/sw-sections/background-sync-handler.js.map +1 -1
  120. package/dist/lib/generators/sw-sections/config-header.js +2 -2
  121. package/dist/lib/generators/sw-sections/config-header.js.map +1 -1
  122. package/dist/lib/generators/sw-sections/fetch-handler.js +506 -144
  123. package/dist/lib/generators/sw-sections/fetch-handler.js.map +1 -1
  124. package/dist/lib/generators/sw-sections/glob-matcher-code.js.map +1 -0
  125. package/dist/lib/generators/sw-sections/message-handler.js +55 -15
  126. package/dist/lib/generators/sw-sections/message-handler.js.map +1 -1
  127. package/dist/lib/generators/sw-sections/server-push-handler.js +12 -0
  128. package/dist/lib/generators/sw-sections/server-push-handler.js.map +1 -1
  129. package/dist/lib/generators/sw-sections/sw-push.js +67 -0
  130. package/dist/lib/generators/sw-sections/sw-push.js.map +1 -0
  131. package/dist/lib/generators/sw-sections/tag-management.js +65 -23
  132. package/dist/lib/generators/sw-sections/tag-management.js.map +1 -1
  133. package/dist/lib/generators/swoff-files-generator.js +66 -45
  134. package/dist/lib/generators/swoff-files-generator.js.map +1 -1
  135. package/dist/lib/shared/config-types.js +182 -71
  136. package/dist/lib/shared/config-types.js.map +1 -1
  137. package/dist/lib/shared/glob-matcher.js +77 -0
  138. package/dist/lib/shared/glob-matcher.js.map +1 -0
  139. package/dist/lib/utils/tty-status.js +21 -0
  140. package/dist/lib/utils/tty-status.js.map +1 -0
  141. package/dist/runtime/api-config.js +18 -0
  142. package/dist/runtime/api-config.js.map +1 -0
  143. package/dist/runtime/auth-state.js +35 -0
  144. package/dist/runtime/auth-state.js.map +1 -0
  145. package/dist/runtime/auth-store.js +273 -0
  146. package/dist/runtime/auth-store.js.map +1 -0
  147. package/dist/runtime/auth-user.js +168 -0
  148. package/dist/runtime/auth-user.js.map +1 -0
  149. package/dist/runtime/background-sync.js +59 -0
  150. package/dist/runtime/background-sync.js.map +1 -0
  151. package/dist/runtime/cache.js +30 -0
  152. package/dist/runtime/cache.js.map +1 -0
  153. package/dist/runtime/client-injector.js +136 -0
  154. package/dist/runtime/client-injector.js.map +1 -0
  155. package/dist/runtime/fetch-state.js +42 -0
  156. package/dist/runtime/fetch-state.js.map +1 -0
  157. package/dist/runtime/fetch-wrapper.js +355 -0
  158. package/dist/runtime/fetch-wrapper.js.map +1 -0
  159. package/dist/runtime/gql-wrapper.js +135 -0
  160. package/dist/runtime/gql-wrapper.js.map +1 -0
  161. package/dist/runtime/invalidation-tags.js +260 -0
  162. package/dist/runtime/invalidation-tags.js.map +1 -0
  163. package/dist/runtime/mutation-queue.js +304 -0
  164. package/dist/runtime/mutation-queue.js.map +1 -0
  165. package/dist/runtime/mutation-state.js +117 -0
  166. package/dist/runtime/mutation-state.js.map +1 -0
  167. package/dist/runtime/push.js +138 -0
  168. package/dist/runtime/push.js.map +1 -0
  169. package/dist/runtime/pwa-index.js +11 -0
  170. package/dist/runtime/pwa-index.js.map +1 -0
  171. package/dist/runtime/pwa-injector.js +44 -0
  172. package/dist/runtime/pwa-injector.js.map +1 -0
  173. package/dist/runtime/pwa-install.js +83 -0
  174. package/dist/runtime/pwa-install.js.map +1 -0
  175. package/dist/runtime/pwa-prompt.js +54 -0
  176. package/dist/runtime/pwa-prompt.js.map +1 -0
  177. package/dist/runtime/reset.js +148 -0
  178. package/dist/runtime/reset.js.map +1 -0
  179. package/dist/runtime/server-push.js +148 -0
  180. package/dist/runtime/server-push.js.map +1 -0
  181. package/dist/runtime/sw-injector.js +236 -0
  182. package/dist/runtime/sw-injector.js.map +1 -0
  183. package/dist/runtime/type-definitions.js +138 -0
  184. package/dist/runtime/type-definitions.js.map +1 -0
  185. package/dist/runtime/utils.js +27 -0
  186. package/dist/runtime/utils.js.map +1 -0
  187. package/package.json +3 -1
  188. package/templates/react/useAuth.jsx +106 -0
  189. package/templates/react/useAuth.tsx +118 -0
  190. package/templates/{hooks → react}/useBackgroundSync.jsx +6 -4
  191. package/templates/{hooks → react}/useBackgroundSync.tsx +6 -4
  192. package/templates/{hooks → react}/useCacheInvalidation.jsx +2 -2
  193. package/templates/react/useCacheInvalidation.tsx +52 -0
  194. package/templates/react/useCachedFetch.jsx +140 -0
  195. package/templates/react/useCachedFetch.tsx +160 -0
  196. package/templates/react/useIsFetching.jsx +32 -0
  197. package/templates/react/useIsFetching.tsx +32 -0
  198. package/templates/react/useMutation.jsx +141 -0
  199. package/templates/react/useMutation.tsx +180 -0
  200. package/templates/react/useMutationQueue.jsx +69 -0
  201. package/templates/react/useMutationQueue.tsx +83 -0
  202. package/templates/react/useMutationState.jsx +13 -0
  203. package/templates/react/useMutationState.tsx +25 -0
  204. package/templates/react/useNetworkStatus.jsx +61 -0
  205. package/templates/react/useNetworkStatus.tsx +76 -0
  206. package/templates/react/usePrefetch.jsx +32 -0
  207. package/templates/react/usePrefetch.tsx +42 -0
  208. package/templates/{hooks → react}/usePushSubscription.jsx +7 -7
  209. package/templates/{hooks → react}/usePushSubscription.tsx +7 -7
  210. package/templates/{hooks → react}/useSWUpdate.jsx +3 -3
  211. package/templates/{hooks → react}/useSWUpdate.tsx +4 -4
  212. package/templates/react/useSwoffReset.jsx +32 -0
  213. package/templates/react/useSwoffReset.tsx +39 -0
  214. package/templates/hooks/useAuth.jsx +0 -30
  215. package/templates/hooks/useAuth.tsx +0 -30
  216. package/templates/hooks/useCacheInvalidation.tsx +0 -19
  217. package/templates/hooks/useCachedFetch.jsx +0 -94
  218. package/templates/hooks/useCachedFetch.tsx +0 -112
  219. package/templates/hooks/useMutation.jsx +0 -76
  220. package/templates/hooks/useMutation.tsx +0 -97
  221. package/templates/hooks/useMutationQueue.jsx +0 -42
  222. package/templates/hooks/useMutationQueue.tsx +0 -49
  223. package/templates/hooks/useMutationState.jsx +0 -27
  224. package/templates/hooks/useMutationState.tsx +0 -41
  225. package/templates/hooks/useNetworkStatus.jsx +0 -19
  226. package/templates/hooks/useNetworkStatus.tsx +0 -19
  227. package/templates/hooks/usePrefetch.jsx +0 -10
  228. package/templates/hooks/usePrefetch.tsx +0 -25
@@ -1 +1 @@
1
- {"version":3,"file":"guide-generator.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/guide-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guide-generator.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/guide-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,UAAU,aAAa,CAAC,GAAqB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvC,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CACC,8EAA8E,CAC/E,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,CAAC;IAEN,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7E,CAAC,CAAC,eAAe,CAAC,CAAC;QACnB,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,mFAAmF,CAAC,CAAC;QACvF,CAAC,CAAC,yCAAyC,CAAC,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,yBAAyB,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,gCAAgC,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,yBAAyB,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,wDAAwD,CAAC,CAAC;QAC5D,CAAC,CAAC,6BAA6B,CAAC,CAAC;QACjC,CAAC,CAAC,gDAAgD,CAAC,CAAC;QACpD,CAAC,CAAC,4CAA4C,CAAC,CAAC;QAChD,CAAC,CAAC,mDAAmD,CAAC,CAAC;QACvD,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,mJAAmJ,CAAC,CAAC;QACvJ,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAClC,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,gEAAgE,CAAC,CAAC;QACpE,CAAC,CAAC,oDAAoD,CAAC,CAAC;QACxD,CAAC,CAAC,mCAAmC,CAAC,CAAC;QACvC,CAAC,CAAC,uDAAuD,CAAC,CAAC;QAC3D,CAAC,CAAC,EAAE,CAAC,CAAC;IACR,CAAC;IAED,CAAC,CAAC,oCAAoC,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,8CAA8C,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,uFAAuF,CAAC,CAAC;IAC3F,CAAC,CAAC,EAAE,CAAC,CAAC;IAEN,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,94 +1,26 @@
1
1
  /**
2
- * Generates invalidation-tags.js - URL-based tag generation helper.
2
+ * Generates invalidation-tags.{js|ts} pattern-based tag generation with
3
+ * configurable glob patterns, prefix skipping, singularization, and cascading.
3
4
  */
4
5
  import { writeFile } from "./context.js";
6
+ import { generateInvalidationTagsCode } from "../../../runtime/invalidation-tags.js";
5
7
  export function generateInvalidationTags(ctx) {
6
8
  const ext = ctx.ext;
7
9
  const ts = ext === "ts";
8
- const T = (type) => (ts ? `: ${type}` : "");
9
- const R = (type) => (ts ? `: ${type} ` : " ");
10
- const code = `/**
11
- * Swoff Invalidation Tags Helper
12
- * URL-based tag generation from REST endpoints for automatic cache invalidation.
13
- *
14
- * Usage:
15
- * import { generateTags, invalidateUrl } from './swoff/invalidation-tags.${ext}';
16
- *
17
- * // Generate tags from URL
18
- * generateTags("/api/todos"); // ["todos"]
19
- * generateTags("/api/todos/42"); // ["todos", "todo:42"]
20
- * generateTags("/api/todos/42/comments"); // ["todos", "todo:42", "comments"]
21
- *
22
- * // Use with fetch wrapper
23
- * const data = await fetchWithCache("/api/todos", {
24
- * tags: generateTags("/api/todos"),
25
- * });
26
- *
27
- * // Invalidate after mutation
28
- * await invalidateUrl("/api/todos/42");
29
- */
30
-
31
- import { invalidateByTags } from "./cache.${ext}";
32
-
33
- /** Generate cache invalidation tags from a URL path. e.g. /api/todos/42 → ["todos", "todo:42"]. Used with fetchWithCache's tags option. */
34
- export function generateTags(url${T("string | URL")})${R("string[]")}{
35
- const parsed = typeof url === "string" ? new URL(url, window.location.origin) : url;
36
- const segments = parsed.pathname.split("/").filter(Boolean);
37
-
38
- if (segments.length === 0) return ["root"];
39
-
40
- const skipPrefixes = ["api", "v1", "v2", "v3", "rest", "graphql", "gql"];
41
- let startIdx = 0;
42
- while (startIdx < segments.length && skipPrefixes.includes(segments[startIdx])) {
43
- startIdx++;
44
- }
45
-
46
- const resourceSegments = segments.slice(startIdx);
47
- if (resourceSegments.length === 0) return ["root"];
48
-
49
- const tags = [];
50
-
51
- tags.push(resourceSegments[0]);
52
-
53
- if (resourceSegments.length >= 2 && !isNaN(Number(resourceSegments[1]))) {
54
- const collection = resourceSegments[0];
55
- const id = resourceSegments[1];
56
- const singular = collection.replace(/s$/, "");
57
- tags.push(\`\${singular}:\${id}\`);
58
- }
59
-
60
- for (let i = 2; i < resourceSegments.length; i++) {
61
- if (isNaN(Number(resourceSegments[i]))) {
62
- tags.push(resourceSegments[i]);
63
- }
64
- }
65
-
66
- return tags;
67
- }
68
-
69
- /** Generate tags prefixed by HTTP method. e.g. POST /api/todos → ["post-todos"]. Useful for invalidating only mutation-tagged caches. */
70
- export function generateTagsFromMethod(method${T("string")}, url${T("string | URL")})${R("string[]")}{
71
- const tags = generateTags(url);
72
-
73
- if (method === "GET" || method === "HEAD") {
74
- return tags;
75
- }
76
-
77
- return tags.map((tag) => \`\${method.toLowerCase()}-\${tag}\`);
78
- }
79
-
80
- /** Invalidate cached responses related to a URL (extracts tags from the URL then calls invalidateByTags). */
81
- export async function invalidateUrl(url${T("string | URL")})${R("Promise<void>")}{
82
- const tags = generateTags(url);
83
- await invalidateByTags(tags);
84
- }
85
-
86
- /** Invalidate cached responses tagged with method-prefixed tags from a URL. */
87
- export async function invalidateByMethod(method${T("string")}, url${T("string | URL")})${R("Promise<void>")}{
88
- const tags = generateTagsFromMethod(method, url);
89
- await invalidateByTags(tags);
90
- }
91
- `;
92
- writeFile(ctx, `invalidation-tags.${ext}`, code);
10
+ const tiConfig = ctx.config.features.tagInvalidation;
11
+ const prefixes = tiConfig.prefixes ?? [
12
+ "api",
13
+ "v1",
14
+ "v2",
15
+ "v3",
16
+ "rest",
17
+ "graphql",
18
+ "gql",
19
+ ];
20
+ const patterns = tiConfig.patterns ?? {};
21
+ const singularization = tiConfig.singularization ?? {};
22
+ const cascading = tiConfig.cascading ?? {};
23
+ const code = generateInvalidationTagsCode({ ts, ext }, prefixes, patterns, singularization, cascading);
24
+ writeFile(ctx, `cache/tags.${ext}`, code);
93
25
  }
94
26
  //# sourceMappingURL=invalidation-tags.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invalidation-tags.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/invalidation-tags.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,UAAU,wBAAwB,CAAC,GAAqB;IAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC;IACxB,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAG;;;;;8EAK+D,GAAG;;;;;;;;;;;;;;;;4CAgBrC,GAAG;;;kCAGb,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAoCrB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;;;;;;;;;;;yCAW3D,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC;;;;;;iDAM/B,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC;;;;CAI1G,CAAC;IAEA,SAAS,CAAC,GAAG,EAAE,qBAAqB,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"invalidation-tags.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/invalidation-tags.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAErF,MAAM,UAAU,wBAAwB,CAAC,GAAqB;IAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC;IAExB,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;IAErD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI;QACpC,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,SAAS;QACT,KAAK;KACN,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;IACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;IAE3C,MAAM,IAAI,GAAG,4BAA4B,CACvC,EAAE,EAAE,EAAE,GAAG,EAAE,EACX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,SAAS,CACV,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,23 +1,26 @@
1
1
  /**
2
2
  * Generates manifest.json - PWA web app manifest.
3
+ * Reads icon paths from config if assets were generated, otherwise uses defaults.
3
4
  */
5
+ import { ensureDir } from "./context.js";
4
6
  import { existsSync, writeFileSync } from "fs";
5
7
  import { join } from "path";
6
8
  export function generateManifest(ctx) {
7
9
  const outputDir = join(ctx.projectRoot, "public");
8
- if (!existsSync(outputDir))
9
- return;
10
+ ensureDir(outputDir);
10
11
  const manifestPath = join(outputDir, "manifest.json");
11
12
  if (existsSync(manifestPath))
12
13
  return;
14
+ const pwaAssets = ctx.config.features.pwa.assets;
15
+ const hasGeneratedSplash = pwaAssets.source && pwaAssets.generated;
13
16
  const manifest = {
14
17
  name: "Swoff App",
15
18
  short_name: "Swoff",
16
19
  description: "Offline-first web application",
17
20
  start_url: "/",
18
21
  display: "standalone",
19
- background_color: "#ffffff",
20
- theme_color: "#000000",
22
+ background_color: pwaAssets.bgColor || "#ffffff",
23
+ theme_color: pwaAssets.themeColor || "#000000",
21
24
  orientation: "portrait-primary",
22
25
  scope: "/",
23
26
  lang: "en-US",
@@ -25,11 +28,18 @@ export function generateManifest(ctx) {
25
28
  prefer_related_applications: false,
26
29
  display_override: ["window-controls-overlay", "standalone", "browser"],
27
30
  icons: [
31
+ { src: "/icon-64.png", sizes: "64x64", type: "image/png", purpose: "any" },
28
32
  { src: "/icon-192.png", sizes: "192x192", type: "image/png", purpose: "any" },
29
- { src: "/icon-512.png", sizes: "512x512", type: "image/png", purpose: "any maskable" },
33
+ { src: "/icon-512.png", sizes: "512x512", type: "image/png", purpose: "any" },
34
+ { src: "/maskable-icon-512.png", sizes: "512x512", type: "image/png", purpose: "maskable" },
30
35
  ],
31
36
  screenshots: [],
32
37
  };
38
+ if (hasGeneratedSplash) {
39
+ manifest.screenshots = [
40
+ { src: "/og-image.png", sizes: "1200x630", type: "image/png", form_factor: "narrow", label: "App screenshot" },
41
+ ];
42
+ }
33
43
  writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
34
44
  ctx.generatedFiles.push("public/manifest.json");
35
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/manifest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,UAAU,gBAAgB,CAAC,GAAqB;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO;IAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO;IAErC,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,+BAA+B;QAC5C,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,YAAY;QACrB,gBAAgB,EAAE,SAAS;QAC3B,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,kBAAkB;QAC/B,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;QAChC,2BAA2B,EAAE,KAAK;QAClC,gBAAgB,EAAE,CAAC,yBAAyB,EAAE,YAAY,EAAE,SAAS,CAAC;QACtE,KAAK,EAAE;YACL,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;YAC7E,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE;SACvF;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;IAEF,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,UAAU,gBAAgB,CAAC,GAAqB;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAClD,SAAS,CAAC,SAAS,CAAC,CAAC;IAErB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO;IAErC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;IACjD,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC;IAEnE,MAAM,QAAQ,GAA4B;QACxC,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,+BAA+B;QAC5C,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,YAAY;QACrB,gBAAgB,EAAE,SAAS,CAAC,OAAO,IAAI,SAAS;QAChD,WAAW,EAAE,SAAS,CAAC,UAAU,IAAI,SAAS;QAC9C,WAAW,EAAE,kBAAkB;QAC/B,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;QAChC,2BAA2B,EAAE,KAAK;QAClC,gBAAgB,EAAE,CAAC,yBAAyB,EAAE,YAAY,EAAE,SAAS,CAAC;QACtE,KAAK,EAAE;YACL,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;YAC1E,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;YAC7E,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;YAC7E,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE;SAC5F;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;IAEF,IAAI,kBAAkB,EAAE,CAAC;QACvB,QAAQ,CAAC,WAAW,GAAG;YACrB,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;SAC/G,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClD,CAAC"}
@@ -1,293 +1,11 @@
1
1
  import { writeFile } from "./context.js";
2
+ import { generateMutationQueueCode } from "../../../runtime/mutation-queue.js";
2
3
  export function generateMutationQueue(ctx) {
3
4
  const ext = ctx.ext;
4
5
  const ts = ext === "ts";
5
- const T = (type) => (ts ? `: ${type}` : "");
6
- const R = (type) => (ts ? `: ${type} ` : " ");
7
- const PT = (type) => (ts ? `<${type}>` : "");
8
- const AS = (type) => (ts ? ` as ${type}` : "");
9
6
  const authEnabled = ctx.config.features.auth.enabled;
10
7
  const mqConfig = ctx.config.features.mutationQueue;
11
- const batchSize = mqConfig.batchSize;
12
- const batchDelayMs = mqConfig.batchDelayMs;
13
- const maxRetries = mqConfig.maxRetries;
14
- const retryBackoffMs = mqConfig.retryBackoffMs;
15
- const importLines = authEnabled
16
- ? `import { getAuth } from "./auth/store.${ext}";
17
- `
18
- : "";
19
- const additionalImports = `import { invalidateByTags } from "./cache.${ext}";
20
- ${ts
21
- ? `import type { MutationQueueItem } from "./swoff.d.ts";
22
- `
23
- : ""}`;
24
- const authReplayHeaders = authEnabled
25
- ? ` const auth = await getAuth();
26
- const authHeader${T("Record<string, string>")} = auth?.token ? { Authorization: \`Bearer \${auth.token}\` } : {};
27
- `
28
- : "";
29
- const authHeaderSpread = authEnabled
30
- ? ` ...authHeader,\n`
31
- : " ";
32
- const code = `/**
33
- * Swoff Mutation Queue
34
- * Queue offline writes and sync when connection returns.
35
- * Supports configurable batch size, rate limiting, and exponential backoff.
36
- *
37
- * Usage:
38
- * import { queueMutation, processMutationQueue, flushMutations, getPendingCount } from './swoff/mutation-queue.${ext}';
39
- *
40
- * // Queue a mutation
41
- * await queueMutation({
42
- * method: "POST",
43
- * url: "/api/todos",
44
- * body: { title: "Grocery" },
45
- * tags: ["todos"],
46
- * });
47
- *
48
- * // Flush queued mutations (e.g., after login)
49
- * await flushMutations();
50
- *
51
- * // Auto-processes on online event
52
- *
53
- * Config:
54
- * batchSize: ${batchSize} — mutations per progress event
55
- * batchDelayMs: ${batchDelayMs} — delay between mutations (rate limiting)
56
- * maxRetries: ${maxRetries} — max retries before dropping
57
- * retryBackoffMs: ${retryBackoffMs} — exponential backoff base
58
- */
59
-
60
- ${importLines}${additionalImports}const DB_NAME = "swoff-queue";
61
- const STORE_NAME = "mutations";
62
- const BATCH_SIZE = ${batchSize};
63
- const BATCH_DELAY_MS = ${batchDelayMs};
64
- const MAX_RETRIES = ${maxRetries};
65
- const RETRY_BACKOFF_MS = ${retryBackoffMs};
66
-
67
- function sleep(ms${T("number")})${R("Promise<void>")}{
68
- return new Promise((r) => setTimeout(r, ms));
69
- }
70
-
71
- function openQueueDB()${R("Promise<IDBDatabase>")}{
72
- return new Promise${PT("IDBDatabase")}((resolve, reject) => {
73
- const request = indexedDB.open(DB_NAME, 1);
74
- request.onupgradeneeded = (e) => {
75
- const db = (e.target${AS("IDBOpenDBRequest")}).result;
76
- if (!db.objectStoreNames.contains(STORE_NAME)) {
77
- const store = db.createObjectStore(STORE_NAME, { keyPath: "id" });
78
- store.createIndex("by-timestamp", "timestamp");
79
- }
80
- };
81
- request.onsuccess = (e) => resolve((e.target${AS("IDBOpenDBRequest")}).result);
82
- request.onerror = (e) => reject((e.target${AS("IDBRequest")}).error);
83
- });
84
- }
85
-
86
- let isSyncing = false;
87
-
88
- /** Store a write operation in IndexedDB for later sync. Works offline — use it for POST/PUT/PATCH/DELETE when the user might be offline. */
89
- export async function queueMutation(mutation${T("Partial<MutationQueueItem>")})${R("Promise<void>")}{
90
- const db = await openQueueDB();
91
- const tx = db.transaction(STORE_NAME, "readwrite");
92
- const store = tx.objectStore(STORE_NAME);
93
-
94
- let body = mutation.body;
95
- let bodyType = "json";
96
- if (body instanceof FormData) {
97
- bodyType = "formdata";
98
- body = [...body.entries()];
99
- } else if (body instanceof Blob) {
100
- bodyType = "blob";
101
- } else if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {
102
- bodyType = "buffer";
103
- }
104
-
105
- store.add({
106
- id: crypto.randomUUID(),
107
- method: mutation.method,
108
- url: mutation.url,
109
- body,
110
- bodyType,
111
- headers: mutation.headers || {},
112
- timestamp: Date.now(),
113
- retryCount: 0,
114
- nextRetryAt: 0,
115
- tags: mutation.tags || [],
116
- });
117
-
118
- await new Promise<void>((resolve, reject) => {
119
- tx.oncomplete = () => resolve();
120
- tx.onerror = () => reject(tx.error);
121
- });
122
-
123
- window.dispatchEvent(new CustomEvent("mutation-queue-changed"));
124
- }
125
-
126
- /** Replay a single queued mutation. Returns true on success, false on failure. */
127
- async function replayMutation(item${T("MutationQueueItem")})${R("Promise<boolean>")}{
128
- try {
129
- ${authReplayHeaders} let replayBody${T("BodyInit | null")}${ts ? " = null" : ""};
130
- let contentType${T("string | undefined")};
131
- const bt = item.bodyType || "json";
132
- if (bt === "formdata") {
133
- replayBody = new FormData();
134
- for (const [key, value] of (item.body || [])${AS("[string, FormDataEntryValue][]")}) {
135
- replayBody.append(key, value);
136
- }
137
- } else if (bt === "blob") {
138
- replayBody = item.body${AS("BodyInit | null")};
139
- } else if (bt === "buffer") {
140
- replayBody = item.body instanceof ArrayBuffer ? new Uint8Array(item.body)${AS("BodyInit")} : item.body${AS("BodyInit")};
141
- } else {
142
- replayBody = JSON.stringify(item.body);
143
- contentType = "application/json";
144
- }
145
- const response = await fetch(item.url, {
146
- method: item.method,
147
- headers: {
148
- ...(contentType ? { "Content-Type": contentType } : {}),
149
- ${authHeaderSpread} ...item.headers,
150
- },
151
- body: replayBody,
152
- });
153
-
154
- if (!response.ok) throw new Error(\`HTTP \${response.status}\`);
155
-
156
- if (item.tags && item.tags.length > 0) {
157
- await invalidateByTags(item.tags);
158
- }
159
-
160
- await removeFromQueue(item.id);
161
- return true;
162
- } catch {
163
- item.retryCount++;
164
- item.nextRetryAt = Date.now() + RETRY_BACKOFF_MS * Math.pow(2, item.retryCount - 1);
165
- await updateInQueue(item);
166
- return false;
167
- }
168
- }
169
-
170
- /** Process all queued mutations in order. Sends them to the server. Runs automatically on the online event. Respects batchSize for progress reporting and batchDelayMs for rate limiting. */
171
- export async function processMutationQueue()${R("Promise<void>")}{
172
- if (!navigator.onLine || isSyncing) return;
173
- isSyncing = true;
174
-
175
- try {
176
- const db = await openQueueDB();
177
- const tx = db.transaction(STORE_NAME, "readonly");
178
- const store = tx.objectStore(STORE_NAME);
179
- const index = store.index("by-timestamp");
180
- const queue${T("MutationQueueItem[]")} = await new Promise${PT("MutationQueueItem[]")}((resolve, reject) => {
181
- const request = index.getAll();
182
- request.onsuccess = () => resolve(request.result);
183
- request.onerror = () => reject(request.error);
184
- });
185
-
186
- let succeeded = 0;
187
- let failed = 0;
188
- const total = queue.length;
189
-
190
- for (const item of queue) {
191
- if (item.retryCount >= MAX_RETRIES) {
192
- await removeFromQueue(item.id);
193
- failed++;
194
- continue;
195
- }
196
-
197
- // Skip items whose backoff delay hasn't elapsed yet
198
- if (item.nextRetryAt && Date.now() < item.nextRetryAt) {
199
- continue;
200
- }
201
-
202
- const ok = await replayMutation(item);
203
- if (ok) {
204
- succeeded++;
205
- } else {
206
- failed++;
207
- }
208
-
209
- // Rate limiting delay between mutations
210
- if (BATCH_DELAY_MS > 0 && succeeded + (failed - succeeded) < total) {
211
- await sleep(BATCH_DELAY_MS);
212
- }
213
-
214
- // Emit progress after every BATCH_SIZE mutations
215
- if ((succeeded + failed) % BATCH_SIZE === 0 || succeeded + failed === total) {
216
- window.dispatchEvent(
217
- new CustomEvent("mutation-sync-complete", {
218
- detail: { succeeded, failed, total, current: succeeded + failed },
219
- })
220
- );
221
- }
222
- }
223
-
224
- window.dispatchEvent(
225
- new CustomEvent("mutation-sync-complete", {
226
- detail: { succeeded, failed, total },
227
- })
228
- );
229
- } finally {
230
- isSyncing = false;
231
- window.dispatchEvent(new CustomEvent("mutation-queue-changed"));
232
- }
233
- }
234
-
235
- /** Immediately process all queued mutations. Call this after re-login to flush mutations that failed due to auth expiry. */
236
- export async function flushMutations()${R("Promise<void>")}{
237
- await processMutationQueue();
238
- }
239
- `;
240
- const helpers = `
241
- async function removeFromQueue(id${T("string")})${R("Promise<void>")}{
242
- const db = await openQueueDB();
243
- const tx = db.transaction(STORE_NAME, "readwrite");
244
- tx.objectStore(STORE_NAME).delete(id);
245
- await new Promise${PT("void")}((resolve, reject) => {
246
- tx.oncomplete = () => resolve();
247
- tx.onerror = () => reject(tx.error);
248
- });
249
- }
250
-
251
- async function updateInQueue(item${T("MutationQueueItem")})${R("Promise<void>")}{
252
- const db = await openQueueDB();
253
- const tx = db.transaction(STORE_NAME, "readwrite");
254
- tx.objectStore(STORE_NAME).put(item);
255
- await new Promise${PT("void")}((resolve, reject) => {
256
- tx.oncomplete = () => resolve();
257
- tx.onerror = () => reject(tx.error);
258
- });
259
- }
260
-
261
- /** Get the number of queued mutations waiting to be synced. Useful for showing a sync badge. */
262
- export async function getPendingCount()${R("Promise<number>")}{
263
- const db = await openQueueDB();
264
- return new Promise${PT("number")}((resolve, reject) => {
265
- const tx = db.transaction(STORE_NAME, "readonly");
266
- const request = tx.objectStore(STORE_NAME).count();
267
- request.onsuccess = () => resolve((request${AS("IDBRequest<number>")}).result);
268
- request.onerror = () => reject((request${AS("IDBRequest")}).error);
269
- });
270
- }
271
-
272
- /** Get the position of a mutation in the queue (0-based). Returns -1 if not found. */
273
- export async function getQueuePosition(id${T("string")})${R("Promise<number>")}{
274
- const items = await getQueueItems();
275
- return items.findIndex((item) => item.id === id);
276
- }
277
-
278
- /** Get all pending queue items with their details. */
279
- export async function getQueueItems()${R("Promise<MutationQueueItem[]>")}{
280
- const db = await openQueueDB();
281
- const tx = db.transaction(STORE_NAME, "readonly");
282
- const store = tx.objectStore(STORE_NAME);
283
- const index = store.index("by-timestamp");
284
- return new Promise${PT("MutationQueueItem[]")}((resolve, reject) => {
285
- const request = index.getAll();
286
- request.onsuccess = () => resolve(request.result);
287
- request.onerror = () => reject(request.error);
288
- });
289
- }
290
- `;
291
- writeFile(ctx, `mutation-queue.${ext}`, code + helpers);
8
+ const code = generateMutationQueueCode({ ts, ext }, authEnabled, mqConfig.batchSize, mqConfig.batchDelayMs, mqConfig.maxRetries, mqConfig.retryBackoffMs);
9
+ writeFile(ctx, `offline/queue.${ext}`, code);
292
10
  }
293
11
  //# sourceMappingURL=mutation-queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-queue.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/mutation-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation-queue.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/mutation-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,MAAM,UAAU,qBAAqB,CAAC,GAAqB;IACzD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC;IACxB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;IAEnD,MAAM,IAAI,GAAG,yBAAyB,CACpC,EAAE,EAAE,EAAE,GAAG,EAAE,EACX,WAAW,EACX,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,cAAc,CACxB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC"}