@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
@@ -0,0 +1,43 @@
1
+ import { log } from "../../cli/logger.js";
2
+ export function printAssetGuide(opts) {
3
+ log.normal("");
4
+ log.help("To use these assets, add the following to your app:");
5
+ if (opts.outputDir === "public") {
6
+ log.normal("");
7
+ log.help("In your HTML <head>:");
8
+ log.help(` <link rel="icon" type="image/x-icon" href="/favicon.ico">`);
9
+ log.help(` <link rel="apple-touch-icon" href="/apple-touch-icon.png">`);
10
+ log.help(` <link rel="manifest" href="/manifest.json">`);
11
+ log.help(` <meta name="theme-color" content="${opts.themeColor}">`);
12
+ log.help(` <meta name="apple-mobile-web-app-capable" content="yes">`);
13
+ log.normal("");
14
+ log.help("Open Graph / social sharing:");
15
+ log.help(` <meta property="og:image" content="/og-image.png">`);
16
+ log.help(` <meta property="og:image:width" content="1200">`);
17
+ log.help(` <meta property="og:image:height" content="630">`);
18
+ log.help(` <meta name="twitter:card" content="summary_large_image">`);
19
+ if (opts.hasSplash) {
20
+ log.normal("");
21
+ log.help("Apple splash screens (add to <head>):");
22
+ log.help(' <!-- iPad Pro 12.9" -->');
23
+ log.help(' <link rel="apple-touch-startup-image" href="/splash-2048x2732.png" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2)">');
24
+ log.help(' <!-- iPad Pro 10.5" -->');
25
+ log.help(' <link rel="apple-touch-startup-image" href="/splash-1668x2224.png" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2)">');
26
+ log.help(' <!-- iPad Mini / Air -->');
27
+ log.help(' <link rel="apple-touch-startup-image" href="/splash-1536x2048.png" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2)">');
28
+ log.help(' <!-- iPhone X/XS/11 Pro -->');
29
+ log.help(' <link rel="apple-touch-startup-image" href="/splash-1125x2436.png" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)">');
30
+ log.help(' <!-- iPhone 6/7/8 Plus -->');
31
+ log.help(' <link rel="apple-touch-startup-image" href="/splash-1242x2208.png" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3)">');
32
+ log.help(' <!-- iPhone 6/7/8 -->');
33
+ log.help(' <link rel="apple-touch-startup-image" href="/splash-750x1334.png" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)">');
34
+ log.help(' <!-- iPhone 5/SE -->');
35
+ log.help(' <link rel="apple-touch-startup-image" href="/splash-640x1136.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)">');
36
+ }
37
+ }
38
+ else {
39
+ log.normal("");
40
+ log.help(`Assets written to "${opts.outputDir}/". Adapt the paths above to match your setup.`);
41
+ }
42
+ }
43
+ //# sourceMappingURL=guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guide.js","sourceRoot":"","sources":["../../../../src/lib/generators/asset-generator/guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAU1C,MAAM,UAAU,eAAe,CAAC,IAAuB;IACrD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAEhE,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QACzE,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC,uCAAuC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrE,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAEvE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAEvE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,sKAAsK,CAAC,CAAC;YACjL,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,qKAAqK,CAAC,CAAC;YAChL,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,qKAAqK,CAAC,CAAC;YAChL,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,oKAAoK,CAAC,CAAC;YAC/K,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,oKAAoK,CAAC,CAAC;YAC/K,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,mKAAmK,CAAC,CAAC;YAC9K,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,mKAAmK,CAAC,CAAC;QAChL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC;IACjG,CAAC;AACH,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { readFileSync, writeFileSync, existsSync } from "fs";
2
+ const SPLASH_MEDIA = {
3
+ "splash-2048x2732": "(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2)",
4
+ "splash-1668x2224": "(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2)",
5
+ "splash-1536x2048": "(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2)",
6
+ "splash-1125x2436": "(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)",
7
+ "splash-1242x2208": "(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3)",
8
+ "splash-750x1334": "(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)",
9
+ "splash-640x1136": "(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)",
10
+ };
11
+ export function patchHtml(htmlPath, meta) {
12
+ if (!existsSync(htmlPath))
13
+ return;
14
+ let html = readFileSync(htmlPath, "utf-8");
15
+ const insertBefore = "</head>";
16
+ if (!html.includes(insertBefore))
17
+ return;
18
+ const tags = [];
19
+ if (meta.faviconIcoPath && !html.includes("favicon.ico")) {
20
+ tags.push(` <link rel="icon" type="image/x-icon" href="${meta.faviconIcoPath}">`);
21
+ }
22
+ if (meta.appleTouchIconPath && !html.includes("apple-touch-icon")) {
23
+ tags.push(` <link rel="apple-touch-icon" href="${meta.appleTouchIconPath}">`);
24
+ }
25
+ if (!html.includes("apple-mobile-web-app-capable")) {
26
+ tags.push(` <meta name="apple-mobile-web-app-capable" content="yes">`);
27
+ }
28
+ if (meta.themeColor && !html.includes('name="theme-color"') && !html.includes("name='theme-color'")) {
29
+ tags.push(` <meta name="theme-color" content="${meta.themeColor}">`);
30
+ }
31
+ if (meta.bgColor && !html.includes('name="background-color"')) {
32
+ tags.push(` <meta name="background-color" content="${meta.bgColor}">`);
33
+ }
34
+ if (meta.ogImagePath) {
35
+ if (!html.includes('property="og:image"')) {
36
+ tags.push(` <meta property="og:image" content="${meta.ogImagePath}">`);
37
+ tags.push(` <meta property="og:image:width" content="1200">`);
38
+ tags.push(` <meta property="og:image:height" content="630">`);
39
+ }
40
+ if (!html.includes('name="twitter:card"') && !html.includes("name='twitter:card'")) {
41
+ tags.push(` <meta name="twitter:card" content="summary_large_image">`);
42
+ }
43
+ if (!html.includes('name="twitter:image"')) {
44
+ tags.push(` <meta name="twitter:image" content="${meta.ogImagePath}">`);
45
+ }
46
+ }
47
+ if (meta.appName) {
48
+ if (!html.includes('property="og:title"') && !html.includes("name='twitter:title'")) {
49
+ tags.push(` <meta property="og:title" content="${meta.appName}">`);
50
+ tags.push(` <meta name="twitter:title" content="${meta.appName}">`);
51
+ }
52
+ }
53
+ for (const splash of meta.splashPaths) {
54
+ const name = splash.replace(/\.png$/, "").replace(/^\//, "");
55
+ const media = SPLASH_MEDIA[name];
56
+ if (media && !html.includes(name)) {
57
+ tags.push(` <link rel="apple-touch-startup-image" href="${splash}" media="${media}">`);
58
+ }
59
+ }
60
+ if (tags.length > 0) {
61
+ html = html.replace(insertBefore, `${tags.join("\n")}\n${insertBefore}`);
62
+ writeFileSync(htmlPath, html);
63
+ }
64
+ }
65
+ //# sourceMappingURL=html-patcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-patcher.js","sourceRoot":"","sources":["../../../../src/lib/generators/asset-generator/html-patcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export function encodeIco(pngBuffers) {
2
+ const count = pngBuffers.length;
3
+ const headerSize = 6;
4
+ const dirEntrySize = 16;
5
+ const totalDataSize = pngBuffers.reduce((a, b) => a + b.length, 0);
6
+ const buf = Buffer.alloc(headerSize + count * dirEntrySize + totalDataSize);
7
+ buf.writeUInt16LE(0, 0);
8
+ buf.writeUInt16LE(1, 2);
9
+ buf.writeUInt16LE(count, 4);
10
+ let offset = headerSize + count * dirEntrySize;
11
+ for (let i = 0; i < count; i++) {
12
+ const png = pngBuffers[i];
13
+ const w = png.readUInt32BE(16);
14
+ const h = png.readUInt32BE(20);
15
+ const pos = headerSize + i * dirEntrySize;
16
+ buf.writeUInt8(w === 256 ? 0 : w, pos);
17
+ buf.writeUInt8(h === 256 ? 0 : h, pos + 1);
18
+ buf.writeUInt8(0, pos + 2);
19
+ buf.writeUInt8(0, pos + 3);
20
+ buf.writeUInt16LE(1, pos + 4);
21
+ buf.writeUInt16LE(32, pos + 6);
22
+ buf.writeUInt32LE(png.length, pos + 8);
23
+ buf.writeUInt32LE(offset, pos + 12);
24
+ png.copy(buf, offset);
25
+ offset += png.length;
26
+ }
27
+ return buf;
28
+ }
29
+ //# sourceMappingURL=ico-encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ico-encoder.js","sourceRoot":"","sources":["../../../../src/lib/generators/asset-generator/ico-encoder.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,UAAoB;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;IAChC,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,GAAG,YAAY,GAAG,aAAa,CAAC,CAAC;IAE5E,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE5B,IAAI,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,YAAY,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC;QAC1C,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3C,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC9B,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QACvC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { readFileSync, writeFileSync } from "fs";
2
+ export function patchManifest(manifestPath, assets) {
3
+ let manifest;
4
+ try {
5
+ manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));
6
+ }
7
+ catch {
8
+ manifest = {
9
+ name: "App", short_name: "App", description: "",
10
+ start_url: "/", display: "standalone",
11
+ background_color: "#ffffff", theme_color: "#000000",
12
+ icons: [],
13
+ };
14
+ }
15
+ manifest.icons = assets.icons.map((ic) => ({
16
+ src: `/${ic.name}.png`,
17
+ sizes: `${ic.width}x${ic.height}`,
18
+ type: "image/png",
19
+ ...(ic.purpose ? { purpose: ic.purpose } : {}),
20
+ }));
21
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
22
+ }
23
+ //# sourceMappingURL=manifest-patcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-patcher.js","sourceRoot":"","sources":["../../../../src/lib/generators/asset-generator/manifest-patcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AASjD,MAAM,UAAU,aAAa,CAAC,YAAoB,EAAE,MAAuB;IACzE,IAAI,QAAa,CAAC;IAClB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG;YACT,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;YAC/C,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY;YACrC,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;YACnD,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM;QACtB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE;QACjC,IAAI,EAAE,WAAW;QACjB,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/C,CAAC,CAAC,CAAC;IAEJ,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { resolveJimp } from "./dependency-resolver.js";
2
+ const MASKABLE_SAFE_ZONE = 0.8;
3
+ export async function createMaskable(sourceBuffer, size, bgColor) {
4
+ const { Jimp } = await resolveJimp();
5
+ const image = await Jimp.read(sourceBuffer);
6
+ const canvas = new Jimp({ width: size, height: size, color: bgColor });
7
+ const logoSize = Math.round(size * MASKABLE_SAFE_ZONE);
8
+ image.resize({ w: logoSize, h: logoSize });
9
+ const scale = logoSize / Math.max(image.bitmap.width, image.bitmap.height);
10
+ const newW = Math.round(image.bitmap.width * scale);
11
+ const newH = Math.round(image.bitmap.height * scale);
12
+ canvas.composite(image, Math.round((size - newW) / 2), Math.round((size - newH) / 2));
13
+ return canvas.getBuffer("image/png");
14
+ }
15
+ //# sourceMappingURL=maskable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maskable.js","sourceRoot":"","sources":["../../../../src/lib/generators/asset-generator/maskable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,YAAoB,EAAE,IAAY,EAAE,OAAe;IACtF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC;IACvD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACrD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { readFileSync } from "fs";
2
+ import { resolveJimp, resolveResvg } from "./dependency-resolver.js";
3
+ export async function rasterizeSource(sourcePath, targetSize) {
4
+ const ext = sourcePath.toLowerCase().split(".").pop() || "";
5
+ if (ext === "svg")
6
+ return rasterizeSvg(sourcePath, targetSize);
7
+ return rasterizeRaster(sourcePath, targetSize);
8
+ }
9
+ async function rasterizeSvg(sourcePath, targetSize) {
10
+ const { initWasm, Resvg, wasmBuffer } = await resolveResvg();
11
+ await initWasm(wasmBuffer);
12
+ const svg = readFileSync(sourcePath, "utf-8");
13
+ const resvg = new Resvg(svg, {
14
+ fitTo: { mode: "width", value: targetSize },
15
+ background: "rgba(0,0,0,0)",
16
+ });
17
+ return Buffer.from(resvg.render().asPng());
18
+ }
19
+ async function rasterizeRaster(sourcePath, targetSize) {
20
+ const { Jimp } = await resolveJimp();
21
+ const image = await Jimp.read(sourcePath);
22
+ const w = image.bitmap.width;
23
+ const h = image.bitmap.height;
24
+ const scale = targetSize / Math.max(w, h);
25
+ const newW = Math.round(w * scale);
26
+ const newH = Math.round(h * scale);
27
+ image.resize({ w: newW, h: newH });
28
+ const canvas = new Jimp({ width: targetSize, height: targetSize, color: 0x00000000 });
29
+ canvas.composite(image, Math.round((targetSize - newW) / 2), Math.round((targetSize - newH) / 2));
30
+ return canvas.getBuffer("image/png");
31
+ }
32
+ //# sourceMappingURL=rasterize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rasterize.js","sourceRoot":"","sources":["../../../../src/lib/generators/asset-generator/rasterize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,UAAkB;IAElB,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/D,OAAO,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,UAAkB,EAAE,UAAkB;IAChE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;IAC7D,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE3B,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;QAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,UAAU,EAAE;QACpD,UAAU,EAAE,eAAe;KAC5B,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,UAAkB,EAAE,UAAkB;IACnE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,MAAM,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACnC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACtF,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClG,OAAO,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,25 @@
1
+ export const PWA_ICONS = [
2
+ { name: "icon-64", width: 64, height: 64, purpose: "any" },
3
+ { name: "icon-192", width: 192, height: 192, purpose: "any" },
4
+ { name: "icon-512", width: 512, height: 512, purpose: "any" },
5
+ { name: "maskable-icon-512", width: 512, height: 512, purpose: "maskable" },
6
+ ];
7
+ export const APPLE_ICONS = [
8
+ { name: "apple-touch-icon", width: 180, height: 180 },
9
+ ];
10
+ export const APPLE_SPLASH_SCREENS = [
11
+ { name: "splash-2048x2732", width: 2048, height: 2732 },
12
+ { name: "splash-1668x2224", width: 1668, height: 2224 },
13
+ { name: "splash-1536x2048", width: 1536, height: 2048 },
14
+ { name: "splash-1125x2436", width: 1125, height: 2436 },
15
+ { name: "splash-1242x2208", width: 1242, height: 2208 },
16
+ { name: "splash-750x1334", width: 750, height: 1334 },
17
+ { name: "splash-640x1136", width: 640, height: 1136 },
18
+ ];
19
+ export const FAVICON_SIZES = [
20
+ { name: "favicon-16", width: 16, height: 16 },
21
+ { name: "favicon-32", width: 32, height: 32 },
22
+ { name: "favicon-48", width: 48, height: 48 },
23
+ ];
24
+ export const OG_IMAGE = { name: "og-image", width: 1200, height: 630 };
25
+ //# sourceMappingURL=sizes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sizes.js","sourceRoot":"","sources":["../../../../src/lib/generators/asset-generator/sizes.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,SAAS,GAAgB;IACpC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;IAC1D,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAC7D,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAC7D,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE;CAC5E,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACvD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACvD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACvD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACvD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACvD,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACrD,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAc,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { writeFile } from "./context.js";
2
+ import { generateApiConfigCode } from "../../../runtime/api-config.js";
3
+ export function generateApiConfig(ctx) {
4
+ writeFile(ctx, `config.${ctx.ext}`, generateApiConfigCode(ctx.config.apiBaseUrl || ""));
5
+ }
6
+ //# sourceMappingURL=api-config.js.map
@@ -0,0 +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"}
@@ -2,40 +2,8 @@
2
2
  * Generates auth-state.ts/js — auth state detection for the 4-state matrix.
3
3
  */
4
4
  import { writeFile } from "./context.js";
5
+ import { generateAuthStateCode } from "../../../runtime/auth-state.js";
5
6
  export function generateAuthState(ctx) {
6
- const ext = ctx.ext;
7
- const ts = ext === "ts";
8
- const R = (type) => (ts ? `: ${type} ` : " ");
9
- const code = `/**
10
- * Auth State — detect the four auth states for offline/online handling.
11
- *
12
- * States:
13
- * 1. Online + Authenticated → Normal (fresh data, full UI)
14
- * 2. Online + Unauthenticated → Login prompt
15
- * 3. Offline + Authenticated → Offline access (cached data)
16
- * 4. Offline + Unauthenticated → Strict offline (public content only)
17
- *
18
- * Usage:
19
- * import { getAuthState } from "./auth/state.${ext}";
20
- * const { authenticated, user, online } = await getAuthState();
21
- */
22
-
23
- import { getAuth, isAuthValid } from "./store.${ext}";
24
- import { getCachedUser } from "./user.${ext}";
25
-
26
- /** Detect current auth state across the 4-state matrix (online/offline × authenticated/not). */
27
- export async function getAuthState()${R("Promise<{ authenticated: boolean; user: Record<string, unknown> | null; online: boolean }>")}{
28
- const auth = await getAuth();
29
- const valid = isAuthValid(auth);
30
- const user = valid ? await getCachedUser() : null;
31
-
32
- return {
33
- authenticated: valid,
34
- user,
35
- online: navigator.onLine,
36
- };
37
- }
38
- `;
39
- writeFile(ctx, `auth/state.${ext}`, code);
7
+ writeFile(ctx, `auth/state.${ctx.ext}`, generateAuthStateCode({ ts: ctx.ext === "ts", ext: ctx.ext }));
40
8
  }
41
9
  //# sourceMappingURL=auth-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-state.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/auth-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,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,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAG;;;;;;;;;;kDAUmC,GAAG;;;;gDAIL,GAAG;wCACX,GAAG;;;sCAGL,CAAC,CAAC,4FAA4F,CAAC;;;;;;;;;;;CAWpI,CAAC;IAEA,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"auth-state.js","sourceRoot":"","sources":["../../../../src/lib/generators/file-generators/auth-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,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,cAAc,GAAG,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACzG,CAAC"}
@@ -8,260 +8,12 @@
8
8
  * user display. After a page refresh, re-login is required.
9
9
  */
10
10
  import { writeFile } from "./context.js";
11
- function generateWithAuthHeaders(authType, ts, R, T) {
12
- const a = T("AuthData | null");
13
- const h = T("Headers");
14
- const hd = T("Headers");
15
- switch (authType) {
16
- case "cookie":
17
- return `/** Inject auth headers. For cookie auth, credentials are handled via AUTH_WITH_CREDENTIALS. */
18
- export function withAuthHeaders(headers${hd}, _auth${a})${h}{
19
- return headers;
20
- }`;
21
- case "bearer":
22
- return `/** Inject Bearer token into request headers. */
23
- export function withAuthHeaders(headers${hd}, auth${a})${h}{
24
- if (auth?.token) {
25
- headers.set("Authorization", \`Bearer \${auth.token}\`);
26
- }
27
- return headers;
28
- }`;
29
- case "custom":
30
- return `/** Inject custom auth headers. Edit this function to match your backend. */
31
- export function withAuthHeaders(headers${hd}, auth${a})${h}{
32
- // --- EDIT THIS BLOCK FOR YOUR BACKEND ---
33
- // if (auth?.token) {
34
- // headers.set("X-Auth-Token", auth.token);
35
- // }
36
- // --- END OF EDITABLE BLOCK ---
37
- return headers;
38
- }`;
39
- default:
40
- return `export function withAuthHeaders(headers${hd}, auth${a})${h}{
41
- if (auth?.token) {
42
- headers.set("Authorization", \`Bearer \${auth.token}\`);
43
- }
44
- return headers;
45
- }`;
46
- }
47
- }
48
- function generateIsAuthUrl(refreshPath, userEndpoint, ts, R, T) {
49
- return `/** Check if a URL is an auth endpoint that should bypass the SW cache. */
50
- export function isAuthUrl(url${T("string")})${R("boolean")}{
51
- const authPaths = [
52
- "/login",
53
- "/logout",
54
- "/register",
55
- "/api/login",
56
- "/api/logout",
57
- "/api/register",
58
- "${refreshPath}",
59
- "${userEndpoint}",
60
- ];
61
- return authPaths.some((path) => url.includes(path));
62
- }`;
63
- }
64
- function generateEnsureValidAuth(cookieAuth, ts, R, T, PT, refreshPath, ext) {
65
- const cr = cookieAuth ? ` credentials: "include" as RequestCredentials,` : "";
66
- return `/** Refresh the auth token via the refresh endpoint. Uses plain fetch to bypass SW cache. */
67
- let refreshPromise${T("Promise<AuthData | null> | null")} = null;
68
-
69
- export async function ensureValidAuth()${R("Promise<AuthData | null>")}{
70
- const auth = await getAuth();
71
- if (!auth) return null;
72
- if (!auth.expiresAt || Date.now() < auth.expiresAt) return auth;
73
-
74
- if (!refreshPromise) {
75
- refreshPromise = (async () => {
76
- const headers = new Headers({ "Content-Type": "application/json" });
77
- withAuthHeaders(headers, auth);
78
- try {
79
- const response = await fetch("${refreshPath}", {
80
- method: "POST",
81
- headers,
82
- ${cr} });
83
-
84
- if (!response.ok) {
85
- await clearAuth();
86
- window.dispatchEvent(new CustomEvent("sw-auth-unauthorized"));
87
- return null;
88
- }
89
-
90
- const data = await response.json();
91
- const updated = { ...auth, token: data.token, expiresAt: data.expiresAt };
92
- await setAuth(updated);
93
- return updated;
94
- } catch {
95
- await clearAuth();
96
- window.dispatchEvent(new CustomEvent("sw-auth-unauthorized"));
97
- return null;
98
- }
99
- })();
100
- }
101
-
102
- try {
103
- return await refreshPromise;
104
- } finally {
105
- refreshPromise = null;
106
- }
107
- }`;
108
- }
11
+ import { generateAuthStoreCode } from "../../../runtime/auth-store.js";
109
12
  export function generateAuthStore(ctx) {
110
13
  const ext = ctx.ext;
111
14
  const ts = ext === "ts";
112
- const T = (type) => (ts ? `: ${type}` : "");
113
- const R = (type) => (ts ? `: ${type} ` : " ");
114
- const PT = (type) => (ts ? `<${type}>` : "");
115
- const AS = (type) => (ts ? ` as ${type}` : "");
116
15
  const authConfig = ctx.config.features.auth;
117
- const { refreshPath, userEndpoint, type } = authConfig;
118
- const authDataInterface = ts
119
- ? `export interface AuthData {
120
- token?: string;
121
- user?: Record<string, unknown>;
122
- expiresAt?: number;
123
- }
124
-
125
- export interface AuthResponse extends Record<string, unknown> {
126
- // Uncomment and type the fields your backend's login response returns:
127
- // token: string;
128
- // user: Record<string, unknown>;
129
- // expiresAt?: number;
130
- }
131
-
132
- `
133
- : "";
134
- const createAuthFromResponseBlock = ts
135
- ? `/** Extract AuthData from your backend's login response. Edit this function to match your backend's response shape. */
136
- export function createAuthFromResponse(response: AuthResponse): AuthData {
137
- // --- EDIT THIS TO MATCH YOUR BACKEND ---
138
- const data = response as Record<string, unknown>;
139
- return {
140
- token: data.token as string,
141
- user: data.user as Record<string, unknown> | undefined,
142
- expiresAt: data.expiresAt as number | undefined,
143
- };
144
- // --- END OF EDITABLE BLOCK ---
145
- }
146
- `
147
- : `/** Extract AuthData from your backend's login response. Edit this function to match your backend's response shape. */
148
- export function createAuthFromResponse(response) {
149
- // --- EDIT THIS TO MATCH YOUR BACKEND ---
150
- return {
151
- token: response.token,
152
- user: response.user,
153
- expiresAt: response.expiresAt,
154
- };
155
- // --- END OF EDITABLE BLOCK ---
156
- }
157
- `;
158
- const code = `/**
159
- * Auth Store — Token in memory only; user info in IndexedDB for offline access.
160
- *
161
- * Security:
162
- * The Bearer token lives in JavaScript memory and is cleared on page refresh.
163
- * Only { user, expiresAt } is persisted to IndexedDB so the app can display
164
- * user info offline. After a page refresh, re-login is required.
165
- *
166
- * Usage:
167
- * import { setAuth, getAuth, clearAuth, isAuthValid } from "./auth/store.${ext}";
168
- *
169
- * await setAuth({ token, user, expiresAt });
170
- * const auth = await getAuth();
171
- * await clearAuth();
172
- */
173
-
174
- ${authDataInterface}const DB_NAME = "swoff-auth";
175
- const STORE_NAME = "auth";
176
-
177
- let memoryAuth${T("AuthData | null")} = null;
178
-
179
- ${createAuthFromResponseBlock}
180
- function openAuthDB()${R("Promise<IDBDatabase>")}{
181
- return new Promise${PT("IDBDatabase")}((resolve, reject) => {
182
- const request = indexedDB.open(DB_NAME, 1);
183
- request.onupgradeneeded = (e) => {
184
- const db = (e.target${AS("IDBOpenDBRequest")}).result;
185
- if (!db.objectStoreNames.contains(STORE_NAME)) {
186
- db.createObjectStore(STORE_NAME, { keyPath: "key" });
187
- }
188
- };
189
- request.onsuccess = (e) => resolve((e.target${AS("IDBOpenDBRequest")}).result);
190
- request.onerror = (e) => reject((e.target${AS("IDBRequest")}).error);
191
- });
192
- }
193
-
194
- async function persistUserData(authData${T("AuthData | null")})${R("Promise<void>")}{
195
- // Only persist { user, expiresAt } — never the token
196
- const userData = { user: authData?.user, expiresAt: authData?.expiresAt };
197
- const db = await openAuthDB();
198
- return new Promise${PT("void")}((resolve, reject) => {
199
- const tx = db.transaction(STORE_NAME, "readwrite");
200
- const store = tx.objectStore(STORE_NAME);
201
- const request = store.put({ key: "session", value: userData });
202
- request.onsuccess = () => resolve();
203
- request.onerror = () => reject((request${AS("IDBRequest")}).error);
204
- });
205
- }
206
-
207
- async function loadUserData()${R("Promise<{ user?: Record<string, unknown>; expiresAt?: number } | null>")}{
208
- const db = await openAuthDB();
209
- return new Promise((resolve, reject) => {
210
- const tx = db.transaction(STORE_NAME, "readonly");
211
- const store = tx.objectStore(STORE_NAME);
212
- const request = store.get("session");
213
- request.onsuccess = () => resolve((request${AS("IDBRequest")}).result?.value ?? null);
214
- request.onerror = () => reject((request${AS("IDBRequest")}).error);
215
- });
216
- }
217
-
218
- async function clearPersistedData()${R("Promise<void>")}{
219
- const db = await openAuthDB();
220
- return new Promise${PT("void")}((resolve, reject) => {
221
- const tx = db.transaction(STORE_NAME, "readwrite");
222
- const store = tx.objectStore(STORE_NAME);
223
- const request = store.delete("session");
224
- request.onsuccess = () => resolve();
225
- request.onerror = () => reject((request${AS("IDBRequest")}).error);
226
- });
227
- }
228
-
229
- /** Store auth data in memory and persist user info to IndexedDB for offline access. */
230
- export async function setAuth(authData${T("AuthData")})${R("Promise<void>")}{
231
- memoryAuth = authData;
232
- await persistUserData(authData);
233
- }
234
-
235
- /** Get auth data from memory (or IndexedDB if memory is empty after page refresh). */
236
- export async function getAuth()${R("Promise<AuthData | null>")}{
237
- if (memoryAuth) return memoryAuth;
238
-
239
- const userData = await loadUserData();
240
- if (userData) {
241
- memoryAuth = userData;
242
- }
243
- return memoryAuth;
244
- }
245
-
246
- /** Clear auth from memory and IndexedDB. Call on logout or 401. */
247
- export async function clearAuth()${R("Promise<void>")}{
248
- memoryAuth = null;
249
- await clearPersistedData();
250
- }
251
-
252
- /** Check if auth exists and has not expired. Returns true if no expiresAt is set. */
253
- export function isAuthValid(auth${T("AuthData | null")})${R("boolean")}{
254
- if (!auth) return false;
255
- if (!auth.expiresAt) return true;
256
- return Date.now() < auth.expiresAt;
257
- }
258
-
259
- ${type === "cookie" ? `export const AUTH_WITH_CREDENTIALS = true;` : `export const AUTH_WITH_CREDENTIALS = false;`}
260
-
261
- ${generateWithAuthHeaders(type, ts, R, T)}
262
- ${generateIsAuthUrl(refreshPath, userEndpoint, ts, R, T)}
263
- ${generateEnsureValidAuth(type === "cookie", ts, R, T, PT, refreshPath, ext)}
264
- `;
16
+ const code = generateAuthStoreCode({ ts, ext }, authConfig.type, authConfig.refreshPath, authConfig.userEndpoint);
265
17
  writeFile(ctx, `auth/store.${ext}`, code);
266
18
  }
267
19
  //# 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":"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"}
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"}