@analogjs/platform 3.0.0-alpha.7 → 3.0.0-alpha.71

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 (386) hide show
  1. package/migrations/migration.json +7 -1
  2. package/package.json +37 -23
  3. package/src/index.d.ts +11 -2
  4. package/src/index.js +12 -3
  5. package/src/index.js.map +1 -0
  6. package/src/lib/clear-client-page-endpoint.d.ts +1 -1
  7. package/src/lib/clear-client-page-endpoint.js +44 -32
  8. package/src/lib/clear-client-page-endpoint.js.map +1 -0
  9. package/src/lib/content/marked/index.d.ts +5 -5
  10. package/src/lib/content/marked/index.js +10 -6
  11. package/src/lib/content/marked/index.js.map +1 -0
  12. package/src/lib/content/marked/marked-content-highlighter.d.ts +2 -2
  13. package/src/lib/content/marked/marked-content-highlighter.js +6 -3
  14. package/src/lib/content/marked/marked-content-highlighter.js.map +1 -0
  15. package/src/lib/content/marked/marked-setup.service.d.ts +8 -8
  16. package/src/lib/content/marked/marked-setup.service.js +44 -54
  17. package/src/lib/content/marked/marked-setup.service.js.map +1 -0
  18. package/src/lib/content/prism/angular.js +18 -19
  19. package/src/lib/content/prism/angular.js.map +1 -0
  20. package/src/lib/content/prism/index.d.ts +1 -1
  21. package/src/lib/content/prism/index.js +10 -7
  22. package/src/lib/content/prism/index.js.map +1 -0
  23. package/src/lib/content/prism/options.d.ts +1 -1
  24. package/src/lib/content/prism/prism-highlighter.d.ts +5 -5
  25. package/src/lib/content/prism/prism-highlighter.js +33 -33
  26. package/src/lib/content/prism/prism-highlighter.js.map +1 -0
  27. package/src/lib/content/shiki/index.d.ts +3 -3
  28. package/src/lib/content/shiki/index.js +22 -28
  29. package/src/lib/content/shiki/index.js.map +1 -0
  30. package/src/lib/content/shiki/options.d.ts +8 -7
  31. package/src/lib/content/shiki/shiki-highlighter.d.ts +14 -13
  32. package/src/lib/content/shiki/shiki-highlighter.js +49 -43
  33. package/src/lib/content/shiki/shiki-highlighter.js.map +1 -0
  34. package/src/lib/content-plugin.d.ts +19 -19
  35. package/src/lib/content-plugin.js +181 -196
  36. package/src/lib/content-plugin.js.map +1 -0
  37. package/src/lib/deps-plugin.d.ts +2 -2
  38. package/src/lib/deps-plugin.js +84 -82
  39. package/src/lib/deps-plugin.js.map +1 -0
  40. package/src/lib/discover-library-routes.d.ts +22 -0
  41. package/src/lib/discover-library-routes.js +75 -0
  42. package/src/lib/discover-library-routes.js.map +1 -0
  43. package/src/lib/i18n-component-registry-plugin.d.ts +17 -0
  44. package/src/lib/i18n-component-registry-plugin.js +100 -0
  45. package/src/lib/i18n-component-registry-plugin.js.map +1 -0
  46. package/src/lib/i18n-extract-plugin.d.ts +33 -0
  47. package/src/lib/inject-server-fn-ids.d.ts +17 -0
  48. package/src/lib/inject-server-fn-ids.js +94 -0
  49. package/src/lib/inject-server-fn-ids.js.map +1 -0
  50. package/src/lib/json-ld-manifest-plugin.d.ts +41 -0
  51. package/src/lib/json-ld-manifest-plugin.js +84 -0
  52. package/src/lib/json-ld-manifest-plugin.js.map +1 -0
  53. package/src/lib/nitro/analog-nitro-plugin.d.ts +18 -0
  54. package/src/lib/nitro/analog-nitro-plugin.js +555 -0
  55. package/src/lib/nitro/analog-nitro-plugin.js.map +1 -0
  56. package/src/lib/nitro/angular-linker-plugin.d.ts +17 -0
  57. package/src/lib/nitro/angular-linker-plugin.js +51 -0
  58. package/src/lib/nitro/angular-linker-plugin.js.map +1 -0
  59. package/src/lib/nitro/build-sitemap.d.ts +23 -0
  60. package/src/lib/nitro/build-sitemap.js +137 -0
  61. package/src/lib/nitro/build-sitemap.js.map +1 -0
  62. package/src/lib/nitro/debug.d.ts +5 -0
  63. package/src/lib/nitro/debug.js +11 -0
  64. package/src/lib/nitro/debug.js.map +1 -0
  65. package/src/lib/nitro/get-content-files.d.ts +13 -0
  66. package/src/lib/nitro/get-content-files.js +52 -0
  67. package/src/lib/nitro/get-content-files.js.map +1 -0
  68. package/src/lib/nitro/get-page-handlers.d.ts +22 -0
  69. package/src/lib/nitro/get-page-handlers.js +33 -0
  70. package/src/lib/nitro/get-page-handlers.js.map +1 -0
  71. package/src/lib/nitro/i18n-prerender.d.ts +29 -0
  72. package/src/lib/nitro/i18n-prerender.js +61 -0
  73. package/src/lib/nitro/i18n-prerender.js.map +1 -0
  74. package/src/lib/nitro/page-endpoints-plugin.d.ts +7 -0
  75. package/src/lib/nitro/page-endpoints-plugin.js +72 -0
  76. package/src/lib/nitro/page-endpoints-plugin.js.map +1 -0
  77. package/src/lib/nitro/post-rendering-hook.d.ts +2 -0
  78. package/src/lib/nitro/post-rendering-hook.js +10 -0
  79. package/src/lib/nitro/post-rendering-hook.js.map +1 -0
  80. package/src/lib/nitro/renderers.d.ts +33 -0
  81. package/src/lib/nitro/renderers.js +22 -0
  82. package/src/lib/nitro/renderers.js.map +1 -0
  83. package/src/lib/nitro/types.d.ts +122 -0
  84. package/src/lib/nx-plugin/_virtual/_rolldown/runtime.js +23 -0
  85. package/src/lib/nx-plugin/builders.json +15 -0
  86. package/src/lib/nx-plugin/executors.json +13 -5
  87. package/src/lib/nx-plugin/generators.json +25 -0
  88. package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/camelCase.js +13 -0
  89. package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/camelCase.js.map +1 -0
  90. package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/capitalize.js +8 -0
  91. package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/capitalize.js.map +1 -0
  92. package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/words.js +9 -0
  93. package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/words.js.map +1 -0
  94. package/src/lib/nx-plugin/package.json +1 -5
  95. package/src/lib/nx-plugin/src/builders/vite/schema.json +39 -0
  96. package/src/lib/nx-plugin/src/builders/vite/vite-build.d.ts +11 -0
  97. package/src/lib/nx-plugin/src/builders/vite/vite-build.js +18 -0
  98. package/src/lib/nx-plugin/src/builders/vite/vite-build.js.map +1 -0
  99. package/src/lib/nx-plugin/src/builders/vite-dev-server/dev-server.d.ts +7 -0
  100. package/src/lib/nx-plugin/src/builders/vite-dev-server/dev-server.js +14 -0
  101. package/src/lib/nx-plugin/src/builders/vite-dev-server/dev-server.js.map +1 -0
  102. package/src/lib/nx-plugin/src/builders/vite-dev-server/schema.json +27 -0
  103. package/src/lib/nx-plugin/src/executors/vite-dev-server/compat.d.ts +1 -1
  104. package/src/lib/nx-plugin/src/executors/vite-dev-server/compat.js +7 -7
  105. package/src/lib/nx-plugin/src/executors/vite-dev-server/compat.js.map +1 -1
  106. package/src/lib/nx-plugin/src/executors/vite-dev-server/schema.d.ts +1 -1
  107. package/src/lib/nx-plugin/src/executors/vite-dev-server/vite-dev-server.impl.d.ts +1 -1
  108. package/src/lib/nx-plugin/src/executors/vite-dev-server/vite-dev-server.impl.js +6 -4
  109. package/src/lib/nx-plugin/src/executors/vite-dev-server/vite-dev-server.impl.js.map +1 -1
  110. package/src/lib/nx-plugin/src/executors/vitest/compat.d.ts +1 -1
  111. package/src/lib/nx-plugin/src/executors/vitest/compat.js +7 -7
  112. package/src/lib/nx-plugin/src/executors/vitest/compat.js.map +1 -1
  113. package/src/lib/nx-plugin/src/executors/vitest/schema.d.ts +1 -1
  114. package/src/lib/nx-plugin/src/executors/vitest/vitest.impl.d.ts +1 -1
  115. package/src/lib/nx-plugin/src/executors/vitest/vitest.impl.js +6 -4
  116. package/src/lib/nx-plugin/src/executors/vitest/vitest.impl.js.map +1 -1
  117. package/src/lib/nx-plugin/src/generators/app/compat.d.ts +9 -3
  118. package/src/lib/nx-plugin/src/generators/app/compat.js +18 -7
  119. package/src/lib/nx-plugin/src/generators/app/compat.js.map +1 -1
  120. package/src/lib/nx-plugin/src/generators/app/files/agents/AGENTS.md +11 -0
  121. package/src/lib/nx-plugin/src/generators/app/files/agents/CLAUDE.md +1 -0
  122. package/src/lib/nx-plugin/src/generators/app/files/root/tsconfig.base.json +3 -6
  123. package/src/lib/nx-plugin/src/generators/app/files/template-angular/src/test-setup.ts__template__ +1 -0
  124. package/src/lib/nx-plugin/src/generators/app/files/template-angular/tsconfig.app.json__template__ +1 -3
  125. package/src/lib/nx-plugin/src/generators/app/files/template-angular/tsconfig.json__template__ +2 -1
  126. package/src/lib/nx-plugin/src/generators/app/files/template-angular/vite.config.ts__template__ +6 -2
  127. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v17/src/app/app.config.ts__template__ +0 -6
  128. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v17/tsconfig.json__template__ +4 -2
  129. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v17/vite.config.ts__template__ +1 -21
  130. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v18/src/app/app.config.ts__template__ +0 -6
  131. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v18/tsconfig.json__template__ +4 -2
  132. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v18/vite.config.ts__template__ +2 -22
  133. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v19/src/app/app.config.ts__template__ +0 -6
  134. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v19/tsconfig.app.json__template__ +1 -3
  135. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v19/tsconfig.json__template__ +4 -2
  136. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v19/vite.config.ts__template__ +1 -12
  137. package/src/lib/nx-plugin/src/generators/app/generator.d.ts +11 -11
  138. package/src/lib/nx-plugin/src/generators/app/generator.js +81 -92
  139. package/src/lib/nx-plugin/src/generators/app/generator.js.map +1 -1
  140. package/src/lib/nx-plugin/src/generators/app/lib/add-agent-context.d.ts +2 -0
  141. package/src/lib/nx-plugin/src/generators/app/lib/add-agent-context.js +16 -0
  142. package/src/lib/nx-plugin/src/generators/app/lib/add-agent-context.js.map +1 -0
  143. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.d.ts +1 -1
  144. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.d.ts +1 -1
  145. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js +73 -81
  146. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js.map +1 -1
  147. package/src/lib/nx-plugin/src/generators/app/lib/add-angular-app.d.ts +2 -2
  148. package/src/lib/nx-plugin/src/generators/app/lib/add-angular-app.js +25 -58
  149. package/src/lib/nx-plugin/src/generators/app/lib/add-angular-app.js.map +1 -1
  150. package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.d.ts +2 -2
  151. package/src/lib/nx-plugin/src/generators/app/lib/add-files.d.ts +2 -2
  152. package/src/lib/nx-plugin/src/generators/app/lib/add-files.js +16 -16
  153. package/src/lib/nx-plugin/src/generators/app/lib/add-files.js.map +1 -1
  154. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.d.ts +2 -2
  155. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js +15 -13
  156. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js.map +1 -1
  157. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.d.ts +7 -7
  158. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.js +19 -29
  159. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.js.map +1 -1
  160. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-helpers.d.ts +4 -5
  161. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-helpers.js +61 -103
  162. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-helpers.js.map +1 -1
  163. package/src/lib/nx-plugin/src/generators/app/lib/add-vite-plugin.d.ts +1 -1
  164. package/src/lib/nx-plugin/src/generators/app/lib/cleanup-files.d.ts +2 -2
  165. package/src/lib/nx-plugin/src/generators/app/lib/cleanup-files.js +17 -20
  166. package/src/lib/nx-plugin/src/generators/app/lib/cleanup-files.js.map +1 -1
  167. package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.d.ts +2 -2
  168. package/src/lib/nx-plugin/src/generators/app/lib/update-index-html.d.ts +1 -1
  169. package/src/lib/nx-plugin/src/generators/app/lib/update-index-html.js +15 -18
  170. package/src/lib/nx-plugin/src/generators/app/lib/update-index-html.js.map +1 -1
  171. package/src/lib/nx-plugin/src/generators/app/schema.d.ts +2 -0
  172. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.d.ts +2 -3
  173. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js +7 -10
  174. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js.map +1 -1
  175. package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.d.ts +0 -3
  176. package/src/lib/nx-plugin/src/generators/app/versions/nx_17_X/versions.d.ts +1 -6
  177. package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.d.ts +12 -17
  178. package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.js +11 -37
  179. package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.js.map +1 -1
  180. package/src/lib/nx-plugin/src/generators/app/versions/tailwind-dependencies.d.ts +1 -1
  181. package/src/lib/nx-plugin/src/generators/app/versions/tailwind-dependencies.js +11 -15
  182. package/src/lib/nx-plugin/src/generators/app/versions/tailwind-dependencies.js.map +1 -1
  183. package/src/lib/nx-plugin/src/generators/app/versions.d.ts +0 -28
  184. package/src/lib/nx-plugin/src/generators/init/compat.d.ts +9 -3
  185. package/src/lib/nx-plugin/src/generators/init/compat.js +18 -7
  186. package/src/lib/nx-plugin/src/generators/init/compat.js.map +1 -1
  187. package/src/lib/nx-plugin/src/generators/init/files/vite.config.ts__template__ +2 -6
  188. package/src/lib/nx-plugin/src/generators/init/generator.d.ts +3 -3
  189. package/src/lib/nx-plugin/src/generators/init/generator.js +55 -65
  190. package/src/lib/nx-plugin/src/generators/init/generator.js.map +1 -1
  191. package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.d.ts +1 -1
  192. package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.js +20 -20
  193. package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.js.map +1 -1
  194. package/src/lib/nx-plugin/src/generators/init/lib/update-app-tsconfig.d.ts +2 -2
  195. package/src/lib/nx-plugin/src/generators/init/lib/update-app-tsconfig.js +21 -21
  196. package/src/lib/nx-plugin/src/generators/init/lib/update-app-tsconfig.js.map +1 -1
  197. package/src/lib/nx-plugin/src/generators/init/lib/update-build-target.d.ts +2 -2
  198. package/src/lib/nx-plugin/src/generators/init/lib/update-build-target.js +57 -66
  199. package/src/lib/nx-plugin/src/generators/init/lib/update-build-target.js.map +1 -1
  200. package/src/lib/nx-plugin/src/generators/init/lib/update-git-ignore.d.ts +1 -1
  201. package/src/lib/nx-plugin/src/generators/init/lib/update-git-ignore.js +12 -11
  202. package/src/lib/nx-plugin/src/generators/init/lib/update-git-ignore.js.map +1 -1
  203. package/src/lib/nx-plugin/src/generators/init/lib/update-index-html.d.ts +2 -2
  204. package/src/lib/nx-plugin/src/generators/init/lib/update-index-html.js +18 -21
  205. package/src/lib/nx-plugin/src/generators/init/lib/update-index-html.js.map +1 -1
  206. package/src/lib/nx-plugin/src/generators/init/lib/update-main.d.ts +2 -2
  207. package/src/lib/nx-plugin/src/generators/init/lib/update-main.js +13 -15
  208. package/src/lib/nx-plugin/src/generators/init/lib/update-main.js.map +1 -1
  209. package/src/lib/nx-plugin/src/generators/init/lib/update-package-json.d.ts +2 -2
  210. package/src/lib/nx-plugin/src/generators/init/lib/update-package-json.js +20 -31
  211. package/src/lib/nx-plugin/src/generators/init/lib/update-package-json.js.map +1 -1
  212. package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.d.ts +2 -2
  213. package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.js +44 -51
  214. package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.js.map +1 -1
  215. package/src/lib/nx-plugin/src/generators/init/lib/update-test-target.d.ts +2 -2
  216. package/src/lib/nx-plugin/src/generators/init/lib/update-test-target.js +28 -34
  217. package/src/lib/nx-plugin/src/generators/init/lib/update-test-target.js.map +1 -1
  218. package/src/lib/nx-plugin/src/generators/init/lib/update-test-tsconfig.d.ts +2 -2
  219. package/src/lib/nx-plugin/src/generators/init/lib/update-test-tsconfig.js +20 -20
  220. package/src/lib/nx-plugin/src/generators/init/lib/update-test-tsconfig.js.map +1 -1
  221. package/src/lib/nx-plugin/src/generators/init/test-files/src/test-setup.ts__template__ +1 -0
  222. package/src/lib/nx-plugin/src/generators/page/__snapshots__/generator.spec.ts.snap +0 -7
  223. package/src/lib/nx-plugin/src/generators/page/compat.d.ts +9 -0
  224. package/src/lib/nx-plugin/src/generators/page/compat.js +19 -0
  225. package/src/lib/nx-plugin/src/generators/page/compat.js.map +1 -0
  226. package/src/lib/nx-plugin/src/generators/page/files/__fileName__.page.ts__template__ +0 -1
  227. package/src/lib/nx-plugin/src/generators/page/generator.d.ts +3 -4
  228. package/src/lib/nx-plugin/src/generators/page/generator.js +35 -44
  229. package/src/lib/nx-plugin/src/generators/page/generator.js.map +1 -1
  230. package/src/lib/nx-plugin/src/generators/preset/__snapshots__/generator.spec.ts.snap +8 -7
  231. package/src/lib/nx-plugin/src/generators/preset/generator.d.ts +3 -3
  232. package/src/lib/nx-plugin/src/generators/preset/generator.js +24 -43
  233. package/src/lib/nx-plugin/src/generators/preset/generator.js.map +1 -1
  234. package/src/lib/nx-plugin/src/generators/setup-vitest/compat.d.ts +9 -3
  235. package/src/lib/nx-plugin/src/generators/setup-vitest/compat.js +18 -7
  236. package/src/lib/nx-plugin/src/generators/setup-vitest/compat.js.map +1 -1
  237. package/src/lib/nx-plugin/src/generators/setup-vitest/files/src/test-setup.ts__template__ +1 -0
  238. package/src/lib/nx-plugin/src/generators/setup-vitest/files/vite.config.mts__template__ +0 -6
  239. package/src/lib/nx-plugin/src/generators/setup-vitest/generator.d.ts +3 -3
  240. package/src/lib/nx-plugin/src/generators/setup-vitest/generator.js +33 -42
  241. package/src/lib/nx-plugin/src/generators/setup-vitest/generator.js.map +1 -1
  242. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/add-analog-dependencies.d.ts +1 -1
  243. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/add-analog-dependencies.js +8 -7
  244. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/add-analog-dependencies.js.map +1 -1
  245. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-test-target.d.ts +2 -2
  246. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-test-target.js +21 -27
  247. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-test-target.js.map +1 -1
  248. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-tsconfig.d.ts +2 -2
  249. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-tsconfig.js +20 -22
  250. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-tsconfig.js.map +1 -1
  251. package/src/lib/nx-plugin/src/index.js +0 -2
  252. package/src/lib/nx-plugin/src/utils/version-utils.d.ts +1 -1
  253. package/src/lib/nx-plugin/src/utils/version-utils.js +21 -27
  254. package/src/lib/nx-plugin/src/utils/version-utils.js.map +1 -1
  255. package/src/lib/nx-plugin/src/utils/versions/dependencies.js +43 -62
  256. package/src/lib/nx-plugin/src/utils/versions/dependencies.js.map +1 -1
  257. package/src/lib/nx-plugin/src/utils/versions/dev-dependencies.js +50 -83
  258. package/src/lib/nx-plugin/src/utils/versions/dev-dependencies.js.map +1 -1
  259. package/src/lib/nx-plugin/src/utils/versions/ng_17_X/versions.d.ts +1 -1
  260. package/src/lib/nx-plugin/src/utils/versions/ng_17_X/versions.js +33 -20
  261. package/src/lib/nx-plugin/src/utils/versions/ng_17_X/versions.js.map +1 -1
  262. package/src/lib/nx-plugin/src/utils/versions/ng_18_X/versions.d.ts +1 -1
  263. package/src/lib/nx-plugin/src/utils/versions/ng_18_X/versions.js +33 -20
  264. package/src/lib/nx-plugin/src/utils/versions/ng_18_X/versions.js.map +1 -1
  265. package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.d.ts +9 -8
  266. package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js +39 -23
  267. package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js.map +1 -1
  268. package/src/lib/options.d.ts +175 -80
  269. package/src/lib/platform-plugin.d.ts +2 -2
  270. package/src/lib/platform-plugin.js +48 -62
  271. package/src/lib/platform-plugin.js.map +1 -0
  272. package/src/lib/route-file-discovery.d.ts +23 -0
  273. package/src/lib/route-file-discovery.js +114 -0
  274. package/src/lib/route-file-discovery.js.map +1 -0
  275. package/src/lib/route-generation-plugin.d.ts +3 -0
  276. package/src/lib/route-generation-plugin.js +45 -0
  277. package/src/lib/route-generation-plugin.js.map +1 -0
  278. package/src/lib/route-idiom-diagnostics.d.ts +13 -0
  279. package/src/lib/route-idiom-diagnostics.js +160 -0
  280. package/src/lib/route-idiom-diagnostics.js.map +1 -0
  281. package/src/lib/route-manifest.d.ts +122 -0
  282. package/src/lib/route-manifest.js +431 -0
  283. package/src/lib/route-manifest.js.map +1 -0
  284. package/src/lib/router-plugin.d.ts +19 -19
  285. package/src/lib/router-plugin.js +234 -176
  286. package/src/lib/router-plugin.js.map +1 -0
  287. package/src/lib/server-fn-client-transform.d.ts +26 -0
  288. package/src/lib/server-fn-client-transform.js +97 -0
  289. package/src/lib/server-fn-client-transform.js.map +1 -0
  290. package/src/lib/server-fn-id.d.ts +25 -0
  291. package/src/lib/server-fn-id.js +37 -0
  292. package/src/lib/server-fn-id.js.map +1 -0
  293. package/src/lib/ssr/defer-streaming-plugin.d.ts +65 -0
  294. package/src/lib/ssr/inject-html-plugin.d.ts +1 -1
  295. package/src/lib/ssr/inject-html-plugin.js +25 -25
  296. package/src/lib/ssr/inject-html-plugin.js.map +1 -0
  297. package/src/lib/ssr/ssr-build-plugin.d.ts +26 -2
  298. package/src/lib/ssr/ssr-build-plugin.js +38 -30
  299. package/src/lib/ssr/ssr-build-plugin.js.map +1 -0
  300. package/src/lib/style-pipeline.d.ts +33 -0
  301. package/src/lib/style-pipeline.js +32 -0
  302. package/src/lib/style-pipeline.js.map +1 -0
  303. package/src/lib/style-preprocessor.d.ts +28 -0
  304. package/src/lib/style-preprocessor.js +35 -0
  305. package/src/lib/style-preprocessor.js.map +1 -0
  306. package/src/lib/tailwind-preprocessor.d.ts +23 -0
  307. package/src/lib/tailwind-preprocessor.js +153 -0
  308. package/src/lib/tailwind-preprocessor.js.map +1 -0
  309. package/src/lib/typed-routes-plugin.d.ts +50 -0
  310. package/src/lib/typed-routes-plugin.js +234 -0
  311. package/src/lib/typed-routes-plugin.js.map +1 -0
  312. package/src/lib/utils/debug-harness.d.ts +23 -0
  313. package/src/lib/utils/debug-harness.js +88 -0
  314. package/src/lib/utils/debug-harness.js.map +1 -0
  315. package/src/lib/utils/debug-log-file.d.ts +5 -0
  316. package/src/lib/utils/debug-log-file.js +56 -0
  317. package/src/lib/utils/debug-log-file.js.map +1 -0
  318. package/src/lib/utils/debug.d.ts +22 -0
  319. package/src/lib/utils/debug.js +27 -0
  320. package/src/lib/utils/debug.js.map +1 -0
  321. package/src/lib/utils/rolldown.d.ts +3 -0
  322. package/src/lib/utils/rolldown.js +15 -0
  323. package/src/lib/utils/rolldown.js.map +1 -0
  324. package/src/server-mode-plugin.d.ts +6 -6
  325. package/src/server-mode-plugin.js +16 -18
  326. package/src/server-mode-plugin.js.map +1 -0
  327. package/src/style-pipeline.d.ts +1 -0
  328. package/src/style-pipeline.js +2 -0
  329. package/src/style-preprocessor.d.ts +1 -0
  330. package/src/style-preprocessor.js +2 -0
  331. package/README.md +0 -5
  332. package/src/lib/content/prism/options.js +0 -1
  333. package/src/lib/content/shiki/options.js +0 -1
  334. package/src/lib/nx-plugin/README.md +0 -23
  335. package/src/lib/nx-plugin/src/executors/vite/compat.d.ts +0 -3
  336. package/src/lib/nx-plugin/src/executors/vite/compat.js +0 -8
  337. package/src/lib/nx-plugin/src/executors/vite/compat.js.map +0 -1
  338. package/src/lib/nx-plugin/src/executors/vite/schema.d.ts +0 -2
  339. package/src/lib/nx-plugin/src/executors/vite/schema.json +0 -147
  340. package/src/lib/nx-plugin/src/executors/vite/vite.impl.d.ts +0 -2
  341. package/src/lib/nx-plugin/src/executors/vite/vite.impl.js +0 -5
  342. package/src/lib/nx-plugin/src/executors/vite/vite.impl.js.map +0 -1
  343. package/src/lib/nx-plugin/src/generators/app/files/tailwind/v4/.postcssrc.json +0 -5
  344. package/src/lib/nx-plugin/src/generators/app/files/tailwind/v4/tailwind.config.ts__template__ +0 -14
  345. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/index.html__template__ +0 -15
  346. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/app/app.component.spec.ts__template__ +0 -17
  347. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/app/app.component.ts__template__ +0 -10
  348. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/favicon.ico__template__ +0 -0
  349. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/main.providers.ts__template__ +0 -5
  350. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/main.server.ts__template__ +0 -23
  351. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/main.ts__template__ +0 -17
  352. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/public/assets/.gitkeep__template__ +0 -0
  353. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/public/assets/analog.svg__template__ +0 -1
  354. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/public/assets/vite.svg__template__ +0 -1
  355. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/server/routes/v1/hello.ts__template__ +0 -3
  356. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/styles.css__template__ +0 -4
  357. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/test-setup.ts__template__ +0 -12
  358. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/vite-env.d.ts__template__ +0 -1
  359. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.app.json__template__ +0 -16
  360. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.editor.json__template__ +0 -7
  361. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.json__template__ +0 -32
  362. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.spec.json__template__ +0 -14
  363. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/vite.config.ts__template__ +0 -69
  364. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.js +0 -15
  365. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.js.map +0 -1
  366. package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.js +0 -58
  367. package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.js.map +0 -1
  368. package/src/lib/nx-plugin/src/generators/app/lib/add-vite-plugin.js +0 -47
  369. package/src/lib/nx-plugin/src/generators/app/lib/add-vite-plugin.js.map +0 -1
  370. package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js +0 -110
  371. package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js.map +0 -1
  372. package/src/lib/nx-plugin/src/generators/app/versions/dependencies.js +0 -56
  373. package/src/lib/nx-plugin/src/generators/app/versions/dependencies.js.map +0 -1
  374. package/src/lib/nx-plugin/src/generators/app/versions/dev-dependencies.js +0 -72
  375. package/src/lib/nx-plugin/src/generators/app/versions/dev-dependencies.js.map +0 -1
  376. package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.js +0 -46
  377. package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.js.map +0 -1
  378. package/src/lib/nx-plugin/src/generators/app/versions/nx_17_X/versions.js +0 -37
  379. package/src/lib/nx-plugin/src/generators/app/versions/nx_17_X/versions.js.map +0 -1
  380. package/src/lib/nx-plugin/src/generators/app/versions.js +0 -43
  381. package/src/lib/nx-plugin/src/generators/app/versions.js.map +0 -1
  382. package/src/lib/nx-plugin/src/index.d.ts +0 -0
  383. package/src/lib/nx-plugin/src/index.js.map +0 -1
  384. package/src/lib/options.js +0 -1
  385. package/src/lib/ssr/ssr-xhr-plugin.d.ts +0 -2
  386. package/src/lib/ssr/ssr-xhr-plugin.js +0 -28
@@ -1,85 +1,180 @@
1
- import type { PluginOptions } from '@analogjs/vite-plugin-angular';
2
- import type { NitroConfig, PrerenderRoute } from 'nitro/types';
3
- import type { SitemapConfig, PrerenderContentDir, PrerenderContentFile, PrerenderRouteConfig } from '@analogjs/vite-plugin-nitro';
4
- import { ContentPluginOptions } from './content-plugin.js';
5
- declare module 'nitro/types' {
6
- interface NitroRouteConfig {
7
- ssr?: boolean;
8
- }
9
- interface NitroRouteRules {
10
- ssr?: boolean;
11
- }
1
+ import type { PrerenderRoute } from "nitro/types";
2
+ import type { SitemapConfig, SitemapEntry, SitemapExcludeRule, SitemapPriority, SitemapRouteDefinition, SitemapRouteInput, SitemapRouteSource, SitemapTransform, PrerenderContentDir, PrerenderContentFile, PrerenderSitemapConfig, PrerenderRouteConfig } from "./nitro/types.js";
3
+ import type { ContentPluginOptions } from "./content-plugin.js";
4
+ import type { DebugOption } from "./utils/debug.js";
5
+ import type { StylePipelineOptions } from "./style-pipeline.js";
6
+ declare module "nitro/types" {
7
+ interface NitroRouteConfig {
8
+ ssr?: boolean;
9
+ /**
10
+ * Disable progressive streaming SSR for matching routes (falls back to a
11
+ * buffered render). Only meaningful when `experimental.streaming` is on.
12
+ */
13
+ streaming?: boolean;
14
+ }
15
+ interface NitroRouteRules {
16
+ ssr?: boolean;
17
+ streaming?: boolean;
18
+ }
12
19
  }
13
20
  export interface PrerenderOptions {
14
- /**
15
- * Add additional routes to prerender through crawling page links.
16
- */
17
- discover?: boolean;
18
- /**
19
- * List of routes to prerender resolved statically or dynamically.
20
- */
21
- routes?: (string | PrerenderContentDir | PrerenderRouteConfig)[] | (() => Promise<(string | PrerenderContentDir | PrerenderRouteConfig | undefined)[]>);
22
- sitemap?: SitemapConfig;
23
- /** List of functions that run for each route after pre-rendering is complete. */
24
- postRenderingHooks?: ((routes: PrerenderRoute) => Promise<void>)[];
21
+ /**
22
+ * Add additional routes to prerender through crawling page links.
23
+ */
24
+ discover?: boolean;
25
+ /**
26
+ * List of routes to prerender resolved statically or dynamically.
27
+ */
28
+ routes?: (string | PrerenderContentDir | PrerenderRouteConfig)[] | (() => Promise<(string | PrerenderContentDir | PrerenderRouteConfig | undefined)[]>);
29
+ sitemap?: SitemapConfig;
30
+ /** List of functions that run for each route after pre-rendering is complete. */
31
+ postRenderingHooks?: ((routes: PrerenderRoute) => Promise<void>)[];
32
+ }
33
+ export interface I18nOptions {
34
+ /**
35
+ * The default/source locale for the application.
36
+ */
37
+ defaultLocale: string;
38
+ /**
39
+ * List of supported locale identifiers (e.g. ['en', 'fr', 'de']).
40
+ */
41
+ locales: string[];
42
+ /**
43
+ * Extract i18n messages from the build output.
44
+ * When enabled, writes a translation source file after the client build.
45
+ */
46
+ extract?: {
47
+ /**
48
+ * Output format for extracted messages.
49
+ * @default 'json'
50
+ */
51
+ format?: "json" | "xliff" | "xliff2" | "xmb";
52
+ /**
53
+ * Output file path for extracted messages, relative to project root.
54
+ * @default 'src/i18n/messages.{format extension}'
55
+ */
56
+ outFile?: string;
57
+ };
25
58
  }
26
59
  export interface Options {
27
- ssr?: boolean;
28
- ssrBuildDir?: string;
29
- /**
30
- * Prerender the static pages without producing the server output.
31
- */
32
- static?: boolean;
33
- prerender?: PrerenderOptions;
34
- entryServer?: string;
35
- /**
36
- * Pass configuration options to the internal `@analogjs/vite-plugin-angular`
37
- * plugin. Set to false to disable the internal vite plugin.
38
- */
39
- vite?: PluginOptions | false;
40
- nitro?: NitroConfig;
41
- apiPrefix?: string;
42
- jit?: boolean;
43
- index?: string;
44
- workspaceRoot?: string;
45
- content?: ContentPluginOptions;
46
- /**
47
- * Extension applied for inline styles
48
- */
49
- inlineStylesExtension?: string;
50
- /**
51
- * Enables Angular's HMR during development
52
- */
53
- liveReload?: boolean;
54
- /**
55
- * Additional page paths to include
56
- */
57
- additionalPagesDirs?: string[];
58
- /**
59
- * Additional page paths to include
60
- */
61
- additionalContentDirs?: string[];
62
- /**
63
- * Additional API paths to include
64
- */
65
- additionalAPIDirs?: string[];
66
- /**
67
- * Additional files to include in compilation
68
- */
69
- include?: string[];
70
- /**
71
- * Toggles internal API middleware.
72
- * If disabled, a proxy request is used to route /api
73
- * requests to / in the production server build.
74
- */
75
- useAPIMiddleware?: boolean;
76
- /**
77
- * Disable type checking diagnostics by the Angular compiler
78
- */
79
- disableTypeChecking?: boolean;
80
- /**
81
- * File replacements
82
- */
83
- fileReplacements?: PluginOptions['fileReplacements'];
60
+ ssr?: boolean;
61
+ /**
62
+ * Prerender the static pages without producing the server output.
63
+ */
64
+ static?: boolean;
65
+ prerender?: PrerenderOptions;
66
+ entryServer?: string;
67
+ apiPrefix?: string;
68
+ index?: string;
69
+ workspaceRoot?: string;
70
+ content?: ContentPluginOptions;
71
+ /**
72
+ * Enable debug logging for the `analog:platform:*` and `analog:nitro:*`
73
+ * scopes.
74
+ *
75
+ * - `true` → enables all platform + nitro scopes
76
+ * - `string[]` → enables listed namespaces
77
+ * - `{ scopes?, mode? }` → object form with optional `mode: 'build' | 'dev'`
78
+ * to restrict output to a specific Vite command (omit for both)
79
+ *
80
+ * Angular scopes (`analog:angular:*`) are owned by
81
+ * `@analogjs/vite-plugin-angular` — pass `debug` to `angular()` directly
82
+ * to enable them.
83
+ *
84
+ * Also responds to the `DEBUG` env var (Node.js) or `localStorage.debug`
85
+ * (browser), using the `obug` convention.
86
+ */
87
+ debug?: DebugOption;
88
+ /**
89
+ * Additional page paths to include
90
+ */
91
+ additionalPagesDirs?: string[];
92
+ /**
93
+ * Additional page paths to include
94
+ */
95
+ additionalContentDirs?: string[];
96
+ /**
97
+ * Additional API paths to include
98
+ */
99
+ additionalAPIDirs?: string[];
100
+ /**
101
+ * Generate routes from the app's route directories.
102
+ *
103
+ * Workspace library route directories are opt-in. Use
104
+ * `discoverLibraryRoutes()` and pass its result to `additionalPagesDirs`,
105
+ * `additionalContentDirs`, and `additionalAPIDirs` when an app should
106
+ * include routes from shared libraries.
107
+ *
108
+ * @default false
109
+ */
110
+ discoverRoutes?: boolean;
111
+ /**
112
+ * Configuration for runtime i18n support.
113
+ * When set, enables locale detection on SSR and provides
114
+ * the LOCALE injection token.
115
+ */
116
+ i18n?: I18nOptions;
117
+ /**
118
+ * Experimental features. These APIs are subject to change.
119
+ *
120
+ * `@analogjs/platform` is the default rollout and orchestration surface for
121
+ * Analog-owned experiments. These flags may delegate to dedicated feature
122
+ * plugins or forward options into lower-level integrations while preserving
123
+ * a single Analog-first authoring surface.
124
+ */
125
+ experimental?: {
126
+ /**
127
+ * Enable typed route table generation for type-safe navigation.
128
+ *
129
+ * When enabled, `@analogjs/platform` generates a single route module
130
+ * that augments `AnalogRouteTable` with typed params and query for each
131
+ * file-based route. JSON-LD manifest generation is configured on the same
132
+ * object so both codegen features share one generated file.
133
+ *
134
+ * - `true` — generates `src/routeTree.gen.ts` with `routeJsonLdManifest`
135
+ * - `TypedRouterOptions` — customize output path or disable just the
136
+ * JSON-LD manifest piece
137
+ *
138
+ * Unlocks type-safe usage of:
139
+ * - `routePath()` — build route link objects for `[routerLink]`
140
+ * - `injectNavigate()` — typed navigation
141
+ * - `injectParams(from)` — typed params signal
142
+ * - `injectQuery(from)` — typed query signal
143
+ *
144
+ * Inspired by TanStack Router's `routeTree.gen.ts` codegen.
145
+ */
146
+ typedRouter?: boolean | TypedRouterOptions;
147
+ /**
148
+ * Experimental slot for community-maintained style-pipeline integrations.
149
+ *
150
+ * This keeps Analog's core surface intentionally narrow: community
151
+ * packages can register Vite plugins through an Analog-first config shape
152
+ * without requiring Analog itself to own design-token engines, library
153
+ * target contracts, or framework-specific theming semantics.
154
+ */
155
+ stylePipeline?: StylePipelineOptions | false;
156
+ };
157
+ }
158
+ export interface TypedRouterOptions {
159
+ /**
160
+ * Output path for the single generated route module,
161
+ * relative to the app root.
162
+ *
163
+ * @default 'src/routeTree.gen.ts'
164
+ */
165
+ outFile?: string;
166
+ /**
167
+ * Include generated `routeJsonLdManifest` data in the generated route file.
168
+ *
169
+ * @default true
170
+ */
171
+ jsonLdManifest?: boolean;
172
+ /**
173
+ * Fail production builds after regenerating a stale checked-in route file.
174
+ * Development and watch mode continue to update the file automatically.
175
+ *
176
+ * @default true
177
+ */
178
+ verifyOnBuild?: boolean;
84
179
  }
85
- export { PrerenderContentDir, PrerenderContentFile };
180
+ export type { PrerenderContentDir, PrerenderContentFile, PrerenderSitemapConfig, SitemapConfig, SitemapEntry, SitemapExcludeRule, SitemapPriority, SitemapRouteDefinition, SitemapRouteInput, SitemapRouteSource, SitemapTransform };
@@ -1,3 +1,3 @@
1
- import { Plugin } from 'vite';
2
- import { Options } from './options.js';
1
+ import { Plugin } from "vite";
2
+ import { Options } from "./options.js";
3
3
  export declare function platformPlugin(opts?: Options): Plugin[];
@@ -1,63 +1,49 @@
1
- // eslint-disable-next-line @nx/enforce-module-boundaries -- spec uses dynamic import() for vi.mock(), not lazy-loading
2
- import viteNitroPlugin from '@analogjs/vite-plugin-nitro';
3
- import angular from '@analogjs/vite-plugin-angular';
4
- import { routerPlugin } from './router-plugin.js';
5
- import { ssrBuildPlugin } from './ssr/ssr-build-plugin.js';
6
- import { contentPlugin } from './content-plugin.js';
7
- import { clearClientPageEndpointsPlugin } from './clear-client-page-endpoint.js';
8
- import { ssrXhrBuildPlugin } from './ssr/ssr-xhr-plugin.js';
9
- import { depsPlugin } from './deps-plugin.js';
10
- import { injectHTMLPlugin } from './ssr/inject-html-plugin.js';
11
- import { serverModePlugin } from '../server-mode-plugin.js';
12
- export function platformPlugin(opts = {}) {
13
- const isTest = process.env['NODE_ENV'] === 'test' || !!process.env['VITEST'];
14
- const { ...platformOptions } = {
15
- ssr: true,
16
- ...opts,
17
- };
18
- let nitroOptions = platformOptions?.nitro;
19
- if (nitroOptions?.routeRules) {
20
- nitroOptions = {
21
- ...nitroOptions,
22
- routeRules: Object.keys(nitroOptions.routeRules).reduce((config, curr) => {
23
- return {
24
- ...config,
25
- [curr]: {
26
- ...config[curr],
27
- headers: {
28
- ...config[curr].headers,
29
- 'x-analog-no-ssr': config[curr]?.ssr === false ? 'true' : undefined,
30
- },
31
- },
32
- };
33
- }, nitroOptions.routeRules),
34
- };
35
- }
36
- return [
37
- ...viteNitroPlugin(platformOptions, nitroOptions),
38
- ...(platformOptions.ssr ? [ssrBuildPlugin(), ...injectHTMLPlugin()] : []),
39
- ...(!isTest ? depsPlugin(platformOptions) : []),
40
- ...routerPlugin(platformOptions),
41
- ...contentPlugin(platformOptions?.content, platformOptions),
42
- ...(opts?.vite === false
43
- ? []
44
- : angular({
45
- jit: platformOptions.jit,
46
- workspaceRoot: platformOptions.workspaceRoot,
47
- disableTypeChecking: platformOptions.disableTypeChecking ?? false,
48
- include: [
49
- ...(platformOptions.include ?? []),
50
- ...(platformOptions.additionalPagesDirs ?? []).map((pageDir) => `${pageDir}/**/*.page.ts`),
51
- ],
52
- additionalContentDirs: platformOptions.additionalContentDirs,
53
- liveReload: platformOptions.liveReload,
54
- inlineStylesExtension: platformOptions.inlineStylesExtension,
55
- fileReplacements: platformOptions.fileReplacements,
56
- ...(opts?.vite ?? {}),
57
- })),
58
- serverModePlugin(),
59
- ssrXhrBuildPlugin(),
60
- clearClientPageEndpointsPlugin(),
61
- ];
1
+ import { activateDeferredDebug, applyDebugOption, debugPlatform } from "./utils/debug.js";
2
+ import { routerPlugin } from "./router-plugin.js";
3
+ import { ssrBuildPlugin } from "./ssr/ssr-build-plugin.js";
4
+ import { contentPlugin } from "./content-plugin.js";
5
+ import { clearClientPageEndpointsPlugin } from "./clear-client-page-endpoint.js";
6
+ import { depsPlugin } from "./deps-plugin.js";
7
+ import { injectHTMLPlugin } from "./ssr/inject-html-plugin.js";
8
+ import { serverModePlugin } from "../server-mode-plugin.js";
9
+ import { routeGenerationPlugin } from "./route-generation-plugin.js";
10
+ import { resolveStylePipelinePlugins } from "./style-pipeline.js";
11
+ import { i18nComponentRegistryPlugin } from "./i18n-component-registry-plugin.js";
12
+ import { analogNitroPlugin } from "./nitro/analog-nitro-plugin.js";
13
+ import "node:module";
14
+ import "node:path";
15
+ //#region packages/platform/src/lib/platform-plugin.ts
16
+ function platformPlugin(opts = {}) {
17
+ applyDebugOption(opts.debug, opts.workspaceRoot);
18
+ const isTest = process.env.NODE_ENV === "test" || !!process.env["VITEST"];
19
+ const { ...platformOptions } = {
20
+ ssr: true,
21
+ ...opts
22
+ };
23
+ debugPlatform("experimental options resolved", {
24
+ typedRouter: platformOptions.experimental?.typedRouter,
25
+ stylePipeline: !!platformOptions.experimental?.stylePipeline
26
+ });
27
+ return [
28
+ {
29
+ name: "analogjs-debug-activate",
30
+ config(_, { command }) {
31
+ activateDeferredDebug(command);
32
+ }
33
+ },
34
+ analogNitroPlugin(platformOptions),
35
+ ...platformOptions.ssr ? [...ssrBuildPlugin(), ...injectHTMLPlugin()] : [],
36
+ ...!isTest ? depsPlugin(platformOptions) : [],
37
+ ...resolveStylePipelinePlugins(platformOptions.experimental?.stylePipeline, platformOptions.workspaceRoot),
38
+ ...routerPlugin(platformOptions),
39
+ routeGenerationPlugin(platformOptions),
40
+ ...contentPlugin(platformOptions?.content, platformOptions),
41
+ ...platformOptions.i18n ? [i18nComponentRegistryPlugin()] : [],
42
+ ...serverModePlugin(),
43
+ clearClientPageEndpointsPlugin()
44
+ ];
62
45
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0vc3JjL2xpYi9wbGF0Zm9ybS1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsdUhBQXVIO0FBQ3ZILE9BQU8sZUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sT0FBTyxNQUFNLCtCQUErQixDQUFDO0FBR3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQWdCLEVBQUU7SUFDL0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0UsTUFBTSxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUc7UUFDN0IsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLElBQUk7S0FDUixDQUFDO0lBRUYsSUFBSSxZQUFZLEdBQUcsZUFBZSxFQUFFLEtBQUssQ0FBQztJQUUxQyxJQUFJLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUM3QixZQUFZLEdBQUc7WUFDYixHQUFHLFlBQVk7WUFDZixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUNyRCxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDZixPQUFPO29CQUNMLEdBQUcsTUFBTTtvQkFDVCxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNOLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQzt3QkFDZixPQUFPLEVBQUU7NEJBQ1AsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTzs0QkFDdkIsaUJBQWlCLEVBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUzt5QkFDNUM7cUJBQ1Q7aUJBQ0YsQ0FBQztZQUNKLENBQUMsRUFDRCxZQUFZLENBQUMsVUFBVSxDQUN4QjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7UUFDakQsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9DLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxHQUFHLGFBQWEsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQztRQUMzRCxHQUFJLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxLQUFLO1lBQ3ZCLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDTixHQUFHLEVBQUUsZUFBZSxDQUFDLEdBQUc7Z0JBQ3hCLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFBYTtnQkFDNUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLG1CQUFtQixJQUFJLEtBQUs7Z0JBQ2pFLE9BQU8sRUFBRTtvQkFDUCxHQUFHLENBQUMsZUFBZSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQ2xDLEdBQUcsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUNoRCxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLGVBQWUsQ0FDdkM7aUJBQ0Y7Z0JBQ0QscUJBQXFCLEVBQUUsZUFBZSxDQUFDLHFCQUFxQjtnQkFDNUQsVUFBVSxFQUFFLGVBQWUsQ0FBQyxVQUFVO2dCQUN0QyxxQkFBcUIsRUFBRSxlQUFlLENBQUMscUJBQXFCO2dCQUM1RCxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsZ0JBQWdCO2dCQUNsRCxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7YUFDdEIsQ0FBQyxDQUFTO1FBQ2YsZ0JBQWdCLEVBQUU7UUFDbEIsaUJBQWlCLEVBQVk7UUFDN0IsOEJBQThCLEVBQVk7S0FDM0MsQ0FBQztBQUNKLENBQUMifQ==
46
+ //#endregion
47
+ export { platformPlugin };
48
+
49
+ //# sourceMappingURL=platform-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-plugin.js","names":[],"sources":["../../../src/lib/platform-plugin.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { join } from 'node:path';\nimport { Plugin } from 'vite';\n\nimport { Options } from './options.js';\nimport {\n activateDeferredDebug,\n applyDebugOption,\n debugPlatform,\n} from './utils/debug.js';\nimport { routerPlugin } from './router-plugin.js';\nimport { ssrBuildPlugin } from './ssr/ssr-build-plugin.js';\nimport { contentPlugin } from './content-plugin.js';\nimport { clearClientPageEndpointsPlugin } from './clear-client-page-endpoint.js';\nimport { depsPlugin } from './deps-plugin.js';\nimport { injectHTMLPlugin } from './ssr/inject-html-plugin.js';\nimport { serverModePlugin } from '../server-mode-plugin.js';\nimport { routeGenerationPlugin } from './route-generation-plugin.js';\nimport { resolveStylePipelinePlugins } from './style-pipeline.js';\nimport { i18nComponentRegistryPlugin } from './i18n-component-registry-plugin.js';\nimport { analogNitroPlugin } from './nitro/analog-nitro-plugin.js';\n\n/**\n * The installed `@angular/core` major version, resolved from the workspace root\n * (where the app's Angular is installed). Returns `null` when it cannot be\n * detected, in which case streaming is not blocked and the build-time\n * anchor-drift detection is relied on instead.\n */\nfunction getAngularCoreMajor(workspaceRoot: string): number | null {\n try {\n const req = createRequire(join(workspaceRoot, 'noop.js'));\n const { version } = req('@angular/core/package.json') as {\n version: string;\n };\n const major = Number.parseInt(version.split('.')[0], 10);\n return Number.isNaN(major) ? null : major;\n } catch {\n return null;\n }\n}\n\nexport function platformPlugin(opts: Options = {}): Plugin[] {\n applyDebugOption(opts.debug, opts.workspaceRoot);\n\n const isTest = process.env['NODE_ENV'] === 'test' || !!process.env['VITEST'];\n const { ...platformOptions } = {\n ssr: true,\n ...opts,\n };\n\n debugPlatform('experimental options resolved', {\n typedRouter: platformOptions.experimental?.typedRouter,\n stylePipeline: !!platformOptions.experimental?.stylePipeline,\n });\n\n return [\n {\n name: 'analogjs-debug-activate',\n config(_, { command }) {\n activateDeferredDebug(command);\n },\n },\n analogNitroPlugin(platformOptions),\n ...(platformOptions.ssr\n ? [...ssrBuildPlugin(), ...injectHTMLPlugin()]\n : []),\n ...(!isTest ? depsPlugin(platformOptions) : []),\n ...resolveStylePipelinePlugins(\n platformOptions.experimental?.stylePipeline,\n platformOptions.workspaceRoot,\n ),\n ...routerPlugin(platformOptions),\n routeGenerationPlugin(platformOptions),\n ...contentPlugin(platformOptions?.content, platformOptions),\n ...(platformOptions.i18n ? [i18nComponentRegistryPlugin()] : []),\n ...serverModePlugin(),\n clearClientPageEndpointsPlugin(),\n ];\n}\n"],"mappings":";;;;;;;;;;;;;;;AAyCA,SAAgB,eAAe,OAAgB,EAAE,EAAY;AAC3D,kBAAiB,KAAK,OAAO,KAAK,cAAc;CAEhD,MAAM,SAAA,QAAA,IAAA,aAAqC,UAAU,CAAC,CAAC,QAAQ,IAAI;CACnE,MAAM,EAAE,GAAG,oBAAoB;EAC7B,KAAK;EACL,GAAG;EACJ;AAED,eAAc,iCAAiC;EAC7C,aAAa,gBAAgB,cAAc;EAC3C,eAAe,CAAC,CAAC,gBAAgB,cAAc;EAChD,CAAC;AAEF,QAAO;EACL;GACE,MAAM;GACN,OAAO,GAAG,EAAE,WAAW;AACrB,0BAAsB,QAAQ;;GAEjC;EACD,kBAAkB,gBAAgB;EAClC,GAAI,gBAAgB,MAChB,CAAC,GAAG,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,GAC5C,EAAE;EACN,GAAI,CAAC,SAAS,WAAW,gBAAgB,GAAG,EAAE;EAC9C,GAAG,4BACD,gBAAgB,cAAc,eAC9B,gBAAgB,cACjB;EACD,GAAG,aAAa,gBAAgB;EAChC,sBAAsB,gBAAgB;EACtC,GAAG,cAAc,iBAAiB,SAAS,gBAAgB;EAC3D,GAAI,gBAAgB,OAAO,CAAC,6BAA6B,CAAC,GAAG,EAAE;EAC/D,GAAG,kBAAkB;EACrB,gCAAgC;EACjC"}
@@ -0,0 +1,23 @@
1
+ export interface RouteFileDiscoveryOptions {
2
+ root: string;
3
+ workspaceRoot: string;
4
+ additionalPagesDirs: string[];
5
+ additionalContentDirs: string[];
6
+ }
7
+ export interface RouteFileDiscovery {
8
+ getRouteFiles(): string[];
9
+ getContentFiles(): string[];
10
+ getDiscoveredFileKind(path: string): "route" | "content" | null;
11
+ updateDiscoveredFile(path: string, event: "add" | "change" | "unlink"): void;
12
+ /**
13
+ * Returns true if the normalized filename was discovered from an app-local
14
+ * glob (under the configured root) rather than from an additional directory.
15
+ *
16
+ * Used by collision priority to prefer app-local routes over shared/external
17
+ * routes based on actual configured roots instead of hard-coded path
18
+ * substrings.
19
+ */
20
+ isAppLocal(normalizedFilename: string): boolean;
21
+ reset(): void;
22
+ }
23
+ export declare function createRouteFileDiscovery(options: RouteFileDiscoveryOptions): RouteFileDiscovery;
@@ -0,0 +1,114 @@
1
+ import { resolve } from "node:path";
2
+ import { normalizePath } from "vite";
3
+ import { globSync } from "tinyglobby";
4
+ //#region packages/platform/src/lib/route-file-discovery.ts
5
+ function createRouteFileDiscovery(options) {
6
+ const { root, workspaceRoot, additionalPagesDirs, additionalContentDirs } = options;
7
+ let routeFilesCache = /* @__PURE__ */ new Set();
8
+ let contentFilesCache = /* @__PURE__ */ new Set();
9
+ let appLocalFilesCache = /* @__PURE__ */ new Set();
10
+ let initialized = false;
11
+ const joinDir = (dir) => dir.startsWith(workspaceRoot) ? normalizePath(dir) : dir.startsWith("/") ? normalizePath(`${workspaceRoot}${dir}`) : normalizePath(resolve(workspaceRoot, dir));
12
+ const additionalPagesRoots = additionalPagesDirs.map(joinDir);
13
+ const additionalContentRoots = additionalContentDirs.map(joinDir);
14
+ function normalizePath_(absolutePath) {
15
+ const normalized = normalizePath(absolutePath);
16
+ if (normalized.startsWith(root)) return normalized.slice(root.length);
17
+ if (normalized.startsWith(workspaceRoot)) return normalized.slice(workspaceRoot.length);
18
+ return normalized;
19
+ }
20
+ function isWithinDir(path, dir) {
21
+ return path === dir || path.startsWith(`${dir}/`);
22
+ }
23
+ function getDiscoveredFileKind(path) {
24
+ const normalized = normalizePath(path);
25
+ if (normalized.endsWith(".md") && (normalized.includes("/src/app/routes/") || normalized.includes("/src/app/pages/") || normalized.includes("/src/content/") || additionalContentRoots.some((dir) => isWithinDir(normalized, dir)))) return "content";
26
+ if ((normalized.includes("/app/routes/") || normalized.includes("/src/app/routes/")) && normalized.endsWith(".ts")) return "route";
27
+ if (normalized.endsWith(".page.ts") && (normalized.includes("/src/app/pages/") || additionalPagesRoots.some((dir) => isWithinDir(normalized, dir)))) return "route";
28
+ return null;
29
+ }
30
+ function scanRouteFiles() {
31
+ const appLocalGlobs = [
32
+ `${root}/app/routes/**/*.ts`,
33
+ `${root}/src/app/routes/**/*.ts`,
34
+ `${root}/src/app/pages/**/*.page.ts`
35
+ ];
36
+ const additionalGlobs = additionalPagesDirs.map((dir) => `${joinDir(dir)}/**/*.page.ts`);
37
+ const appLocal = globSync(appLocalGlobs, {
38
+ dot: true,
39
+ absolute: true
40
+ }).map(normalizePath_);
41
+ const additional = globSync(additionalGlobs, {
42
+ dot: true,
43
+ absolute: true
44
+ }).map(normalizePath_);
45
+ for (const f of appLocal) appLocalFilesCache.add(f);
46
+ return [...appLocal, ...additional];
47
+ }
48
+ function scanContentFiles() {
49
+ const appLocalGlobs = [
50
+ `${root}/src/app/routes/**/*.md`,
51
+ `${root}/src/app/pages/**/*.md`,
52
+ `${root}/src/content/**/*.md`
53
+ ];
54
+ const additionalGlobs = additionalContentDirs.map((dir) => `${joinDir(dir)}/**/*.md`);
55
+ const appLocal = globSync(appLocalGlobs, {
56
+ dot: true,
57
+ absolute: true
58
+ }).map(normalizePath_);
59
+ const additional = globSync(additionalGlobs, {
60
+ dot: true,
61
+ absolute: true
62
+ }).map(normalizePath_);
63
+ for (const f of appLocal) appLocalFilesCache.add(f);
64
+ return [...appLocal, ...additional];
65
+ }
66
+ function isAppLocalByPath(absolutePath) {
67
+ return normalizePath(absolutePath).startsWith(root);
68
+ }
69
+ function ensureInitialized() {
70
+ if (initialized) return;
71
+ routeFilesCache = new Set(scanRouteFiles());
72
+ contentFilesCache = new Set(scanContentFiles());
73
+ initialized = true;
74
+ }
75
+ return {
76
+ getRouteFiles() {
77
+ ensureInitialized();
78
+ return [...routeFilesCache].sort();
79
+ },
80
+ getContentFiles() {
81
+ ensureInitialized();
82
+ return [...contentFilesCache].sort();
83
+ },
84
+ getDiscoveredFileKind(path) {
85
+ return getDiscoveredFileKind(path);
86
+ },
87
+ updateDiscoveredFile(path, event) {
88
+ ensureInitialized();
89
+ const kind = getDiscoveredFileKind(path);
90
+ if (!kind) return;
91
+ const normalizedPath = normalizePath_(path);
92
+ const targetCache = kind === "content" ? contentFilesCache : routeFilesCache;
93
+ if (event === "unlink") {
94
+ targetCache.delete(normalizedPath);
95
+ appLocalFilesCache.delete(normalizedPath);
96
+ return;
97
+ }
98
+ targetCache.add(normalizedPath);
99
+ if (isAppLocalByPath(path)) appLocalFilesCache.add(normalizedPath);
100
+ },
101
+ isAppLocal(normalizedFilename) {
102
+ ensureInitialized();
103
+ return appLocalFilesCache.has(normalizedFilename);
104
+ },
105
+ reset() {
106
+ initialized = false;
107
+ appLocalFilesCache = /* @__PURE__ */ new Set();
108
+ }
109
+ };
110
+ }
111
+ //#endregion
112
+ export { createRouteFileDiscovery };
113
+
114
+ //# sourceMappingURL=route-file-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-file-discovery.js","names":[],"sources":["../../../src/lib/route-file-discovery.ts"],"sourcesContent":["import { normalizePath } from 'vite';\nimport { resolve } from 'node:path';\nimport { globSync } from 'tinyglobby';\n\nexport interface RouteFileDiscoveryOptions {\n root: string;\n workspaceRoot: string;\n additionalPagesDirs: string[];\n additionalContentDirs: string[];\n}\n\nexport interface RouteFileDiscovery {\n getRouteFiles(): string[];\n getContentFiles(): string[];\n getDiscoveredFileKind(path: string): 'route' | 'content' | null;\n updateDiscoveredFile(path: string, event: 'add' | 'change' | 'unlink'): void;\n /**\n * Returns true if the normalized filename was discovered from an app-local\n * glob (under the configured root) rather than from an additional directory.\n *\n * Used by collision priority to prefer app-local routes over shared/external\n * routes based on actual configured roots instead of hard-coded path\n * substrings.\n */\n isAppLocal(normalizedFilename: string): boolean;\n reset(): void;\n}\n\nexport function createRouteFileDiscovery(\n options: RouteFileDiscoveryOptions,\n): RouteFileDiscovery {\n const { root, workspaceRoot, additionalPagesDirs, additionalContentDirs } =\n options;\n\n let routeFilesCache = new Set<string>();\n let contentFilesCache = new Set<string>();\n let appLocalFilesCache = new Set<string>();\n let initialized = false;\n const joinDir = (dir: string) =>\n dir.startsWith(workspaceRoot)\n ? normalizePath(dir)\n : dir.startsWith('/')\n ? normalizePath(`${workspaceRoot}${dir}`)\n : normalizePath(resolve(workspaceRoot, dir));\n const additionalPagesRoots = additionalPagesDirs.map(joinDir);\n const additionalContentRoots = additionalContentDirs.map(joinDir);\n\n function normalizePath_(absolutePath: string): string {\n const normalized = normalizePath(absolutePath);\n if (normalized.startsWith(root)) {\n return normalized.slice(root.length);\n }\n if (normalized.startsWith(workspaceRoot)) {\n return normalized.slice(workspaceRoot.length);\n }\n return normalized;\n }\n\n function isWithinDir(path: string, dir: string): boolean {\n return path === dir || path.startsWith(`${dir}/`);\n }\n\n function getDiscoveredFileKind(path: string): 'route' | 'content' | null {\n const normalized = normalizePath(path);\n\n if (\n normalized.endsWith('.md') &&\n (normalized.includes('/src/app/routes/') ||\n normalized.includes('/src/app/pages/') ||\n normalized.includes('/src/content/') ||\n additionalContentRoots.some((dir) => isWithinDir(normalized, dir)))\n ) {\n return 'content';\n }\n\n if (\n (normalized.includes('/app/routes/') ||\n normalized.includes('/src/app/routes/')) &&\n normalized.endsWith('.ts')\n ) {\n return 'route';\n }\n\n // Keep the dev watcher aligned with the build-time route scan. In\n // particular, `src/server/routes/**` must stay out of typed route codegen\n // because Nitro API handlers are not client-navigable pages.\n if (\n normalized.endsWith('.page.ts') &&\n (normalized.includes('/src/app/pages/') ||\n additionalPagesRoots.some((dir) => isWithinDir(normalized, dir)))\n ) {\n return 'route';\n }\n\n return null;\n }\n\n function scanRouteFiles(): string[] {\n const appLocalGlobs = [\n `${root}/app/routes/**/*.ts`,\n `${root}/src/app/routes/**/*.ts`,\n `${root}/src/app/pages/**/*.page.ts`,\n ];\n const additionalGlobs = additionalPagesDirs.map(\n (dir) => `${joinDir(dir)}/**/*.page.ts`,\n );\n\n const appLocal = globSync(appLocalGlobs, {\n dot: true,\n absolute: true,\n }).map(normalizePath_);\n\n const additional = globSync(additionalGlobs, {\n dot: true,\n absolute: true,\n }).map(normalizePath_);\n\n for (const f of appLocal) {\n appLocalFilesCache.add(f);\n }\n\n return [...appLocal, ...additional];\n }\n\n function scanContentFiles(): string[] {\n const appLocalGlobs = [\n `${root}/src/app/routes/**/*.md`,\n `${root}/src/app/pages/**/*.md`,\n `${root}/src/content/**/*.md`,\n ];\n const additionalGlobs = additionalContentDirs.map(\n (dir) => `${joinDir(dir)}/**/*.md`,\n );\n\n const appLocal = globSync(appLocalGlobs, {\n dot: true,\n absolute: true,\n }).map(normalizePath_);\n\n const additional = globSync(additionalGlobs, {\n dot: true,\n absolute: true,\n }).map(normalizePath_);\n\n for (const f of appLocal) {\n appLocalFilesCache.add(f);\n }\n\n return [...appLocal, ...additional];\n }\n\n function isAppLocalByPath(absolutePath: string): boolean {\n const normalized = normalizePath(absolutePath);\n return normalized.startsWith(root);\n }\n\n function ensureInitialized(): void {\n if (initialized) {\n return;\n }\n\n routeFilesCache = new Set(scanRouteFiles());\n contentFilesCache = new Set(scanContentFiles());\n initialized = true;\n }\n\n return {\n getRouteFiles(): string[] {\n ensureInitialized();\n return [...routeFilesCache].sort();\n },\n\n getContentFiles(): string[] {\n ensureInitialized();\n return [...contentFilesCache].sort();\n },\n\n getDiscoveredFileKind(path: string): 'route' | 'content' | null {\n return getDiscoveredFileKind(path);\n },\n\n updateDiscoveredFile(\n path: string,\n event: 'add' | 'change' | 'unlink',\n ): void {\n ensureInitialized();\n const kind = getDiscoveredFileKind(path);\n if (!kind) {\n return;\n }\n\n const normalizedPath = normalizePath_(path);\n const targetCache =\n kind === 'content' ? contentFilesCache : routeFilesCache;\n\n if (event === 'unlink') {\n targetCache.delete(normalizedPath);\n appLocalFilesCache.delete(normalizedPath);\n return;\n }\n\n targetCache.add(normalizedPath);\n if (isAppLocalByPath(path)) {\n appLocalFilesCache.add(normalizedPath);\n }\n },\n\n isAppLocal(normalizedFilename: string): boolean {\n ensureInitialized();\n return appLocalFilesCache.has(normalizedFilename);\n },\n\n reset(): void {\n initialized = false;\n appLocalFilesCache = new Set<string>();\n },\n };\n}\n"],"mappings":";;;;AA4BA,SAAgB,yBACd,SACoB;CACpB,MAAM,EAAE,MAAM,eAAe,qBAAqB,0BAChD;CAEF,IAAI,kCAAkB,IAAI,KAAa;CACvC,IAAI,oCAAoB,IAAI,KAAa;CACzC,IAAI,qCAAqB,IAAI,KAAa;CAC1C,IAAI,cAAc;CAClB,MAAM,WAAW,QACf,IAAI,WAAW,cAAc,GACzB,cAAc,IAAI,GAClB,IAAI,WAAW,IAAI,GACjB,cAAc,GAAG,gBAAgB,MAAM,GACvC,cAAc,QAAQ,eAAe,IAAI,CAAC;CAClD,MAAM,uBAAuB,oBAAoB,IAAI,QAAQ;CAC7D,MAAM,yBAAyB,sBAAsB,IAAI,QAAQ;CAEjE,SAAS,eAAe,cAA8B;EACpD,MAAM,aAAa,cAAc,aAAa;AAC9C,MAAI,WAAW,WAAW,KAAK,CAC7B,QAAO,WAAW,MAAM,KAAK,OAAO;AAEtC,MAAI,WAAW,WAAW,cAAc,CACtC,QAAO,WAAW,MAAM,cAAc,OAAO;AAE/C,SAAO;;CAGT,SAAS,YAAY,MAAc,KAAsB;AACvD,SAAO,SAAS,OAAO,KAAK,WAAW,GAAG,IAAI,GAAG;;CAGnD,SAAS,sBAAsB,MAA0C;EACvE,MAAM,aAAa,cAAc,KAAK;AAEtC,MACE,WAAW,SAAS,MAAM,KACzB,WAAW,SAAS,mBAAmB,IACtC,WAAW,SAAS,kBAAkB,IACtC,WAAW,SAAS,gBAAgB,IACpC,uBAAuB,MAAM,QAAQ,YAAY,YAAY,IAAI,CAAC,EAEpE,QAAO;AAGT,OACG,WAAW,SAAS,eAAe,IAClC,WAAW,SAAS,mBAAmB,KACzC,WAAW,SAAS,MAAM,CAE1B,QAAO;AAMT,MACE,WAAW,SAAS,WAAW,KAC9B,WAAW,SAAS,kBAAkB,IACrC,qBAAqB,MAAM,QAAQ,YAAY,YAAY,IAAI,CAAC,EAElE,QAAO;AAGT,SAAO;;CAGT,SAAS,iBAA2B;EAClC,MAAM,gBAAgB;GACpB,GAAG,KAAK;GACR,GAAG,KAAK;GACR,GAAG,KAAK;GACT;EACD,MAAM,kBAAkB,oBAAoB,KACzC,QAAQ,GAAG,QAAQ,IAAI,CAAC,eAC1B;EAED,MAAM,WAAW,SAAS,eAAe;GACvC,KAAK;GACL,UAAU;GACX,CAAC,CAAC,IAAI,eAAe;EAEtB,MAAM,aAAa,SAAS,iBAAiB;GAC3C,KAAK;GACL,UAAU;GACX,CAAC,CAAC,IAAI,eAAe;AAEtB,OAAK,MAAM,KAAK,SACd,oBAAmB,IAAI,EAAE;AAG3B,SAAO,CAAC,GAAG,UAAU,GAAG,WAAW;;CAGrC,SAAS,mBAA6B;EACpC,MAAM,gBAAgB;GACpB,GAAG,KAAK;GACR,GAAG,KAAK;GACR,GAAG,KAAK;GACT;EACD,MAAM,kBAAkB,sBAAsB,KAC3C,QAAQ,GAAG,QAAQ,IAAI,CAAC,UAC1B;EAED,MAAM,WAAW,SAAS,eAAe;GACvC,KAAK;GACL,UAAU;GACX,CAAC,CAAC,IAAI,eAAe;EAEtB,MAAM,aAAa,SAAS,iBAAiB;GAC3C,KAAK;GACL,UAAU;GACX,CAAC,CAAC,IAAI,eAAe;AAEtB,OAAK,MAAM,KAAK,SACd,oBAAmB,IAAI,EAAE;AAG3B,SAAO,CAAC,GAAG,UAAU,GAAG,WAAW;;CAGrC,SAAS,iBAAiB,cAA+B;AAEvD,SADmB,cAAc,aAAa,CAC5B,WAAW,KAAK;;CAGpC,SAAS,oBAA0B;AACjC,MAAI,YACF;AAGF,oBAAkB,IAAI,IAAI,gBAAgB,CAAC;AAC3C,sBAAoB,IAAI,IAAI,kBAAkB,CAAC;AAC/C,gBAAc;;AAGhB,QAAO;EACL,gBAA0B;AACxB,sBAAmB;AACnB,UAAO,CAAC,GAAG,gBAAgB,CAAC,MAAM;;EAGpC,kBAA4B;AAC1B,sBAAmB;AACnB,UAAO,CAAC,GAAG,kBAAkB,CAAC,MAAM;;EAGtC,sBAAsB,MAA0C;AAC9D,UAAO,sBAAsB,KAAK;;EAGpC,qBACE,MACA,OACM;AACN,sBAAmB;GACnB,MAAM,OAAO,sBAAsB,KAAK;AACxC,OAAI,CAAC,KACH;GAGF,MAAM,iBAAiB,eAAe,KAAK;GAC3C,MAAM,cACJ,SAAS,YAAY,oBAAoB;AAE3C,OAAI,UAAU,UAAU;AACtB,gBAAY,OAAO,eAAe;AAClC,uBAAmB,OAAO,eAAe;AACzC;;AAGF,eAAY,IAAI,eAAe;AAC/B,OAAI,iBAAiB,KAAK,CACxB,oBAAmB,IAAI,eAAe;;EAI1C,WAAW,oBAAqC;AAC9C,sBAAmB;AACnB,UAAO,mBAAmB,IAAI,mBAAmB;;EAGnD,QAAc;AACZ,iBAAc;AACd,wCAAqB,IAAI,KAAa;;EAEzC"}
@@ -0,0 +1,3 @@
1
+ import type { Plugin } from "vite";
2
+ import type { Options } from "./options.js";
3
+ export declare function routeGenerationPlugin(options?: Options): Plugin;
@@ -0,0 +1,45 @@
1
+ import { debugTypedRouter } from "./utils/debug.js";
2
+ import { typedRoutes } from "./typed-routes-plugin.js";
3
+ //#region packages/platform/src/lib/route-generation-plugin.ts
4
+ function resolveTypedRouterOptions(experimental) {
5
+ const typedRouter = experimental?.typedRouter;
6
+ if (!typedRouter) return {
7
+ enabled: false,
8
+ options: {}
9
+ };
10
+ if (typedRouter === true) return {
11
+ enabled: true,
12
+ options: { jsonLdManifest: true }
13
+ };
14
+ return {
15
+ enabled: true,
16
+ options: {
17
+ ...typedRouter,
18
+ jsonLdManifest: typedRouter.jsonLdManifest ?? true
19
+ }
20
+ };
21
+ }
22
+ function routeGenerationPlugin(options) {
23
+ const { enabled, options: typedRouterOptions } = resolveTypedRouterOptions(options?.experimental);
24
+ if (!enabled) {
25
+ debugTypedRouter("disabled by experimental.typedRouter === false");
26
+ return { name: "analog-route-generation-disabled" };
27
+ }
28
+ const pluginOptions = {
29
+ ...typedRouterOptions,
30
+ workspaceRoot: options?.workspaceRoot,
31
+ additionalPagesDirs: options?.additionalPagesDirs,
32
+ additionalContentDirs: options?.additionalContentDirs
33
+ };
34
+ debugTypedRouter("enabled", {
35
+ outFile: pluginOptions.outFile,
36
+ jsonLdManifest: pluginOptions.jsonLdManifest,
37
+ additionalPagesDirs: pluginOptions.additionalPagesDirs,
38
+ additionalContentDirs: pluginOptions.additionalContentDirs
39
+ });
40
+ return typedRoutes(pluginOptions);
41
+ }
42
+ //#endregion
43
+ export { routeGenerationPlugin };
44
+
45
+ //# sourceMappingURL=route-generation-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-generation-plugin.js","names":[],"sources":["../../../src/lib/route-generation-plugin.ts"],"sourcesContent":["import type { Plugin } from 'vite';\n\nimport type { Options, TypedRouterOptions } from './options.js';\nimport {\n typedRoutes,\n type TypedRoutesPluginOptions,\n} from './typed-routes-plugin.js';\nimport { debugTypedRouter } from './utils/debug.js';\n\nfunction resolveTypedRouterOptions(experimental: Options['experimental']): {\n enabled: boolean;\n options: TypedRouterOptions;\n} {\n const typedRouter = experimental?.typedRouter;\n if (!typedRouter) {\n return { enabled: false, options: {} };\n }\n if (typedRouter === true) {\n return { enabled: true, options: { jsonLdManifest: true } };\n }\n return {\n enabled: true,\n options: {\n ...typedRouter,\n jsonLdManifest: typedRouter.jsonLdManifest ?? true,\n },\n };\n}\n\nexport function routeGenerationPlugin(options?: Options): Plugin {\n const { enabled, options: typedRouterOptions } = resolveTypedRouterOptions(\n options?.experimental,\n );\n\n if (!enabled) {\n debugTypedRouter('disabled by experimental.typedRouter === false');\n return {\n name: 'analog-route-generation-disabled',\n };\n }\n\n const pluginOptions: TypedRoutesPluginOptions = {\n ...typedRouterOptions,\n workspaceRoot: options?.workspaceRoot,\n additionalPagesDirs: options?.additionalPagesDirs,\n additionalContentDirs: options?.additionalContentDirs,\n };\n debugTypedRouter('enabled', {\n outFile: pluginOptions.outFile,\n jsonLdManifest: pluginOptions.jsonLdManifest,\n additionalPagesDirs: pluginOptions.additionalPagesDirs,\n additionalContentDirs: pluginOptions.additionalContentDirs,\n });\n\n return typedRoutes(pluginOptions);\n}\n"],"mappings":";;;AASA,SAAS,0BAA0B,cAGjC;CACA,MAAM,cAAc,cAAc;AAClC,KAAI,CAAC,YACH,QAAO;EAAE,SAAS;EAAO,SAAS,EAAE;EAAE;AAExC,KAAI,gBAAgB,KAClB,QAAO;EAAE,SAAS;EAAM,SAAS,EAAE,gBAAgB,MAAM;EAAE;AAE7D,QAAO;EACL,SAAS;EACT,SAAS;GACP,GAAG;GACH,gBAAgB,YAAY,kBAAkB;GAC/C;EACF;;AAGH,SAAgB,sBAAsB,SAA2B;CAC/D,MAAM,EAAE,SAAS,SAAS,uBAAuB,0BAC/C,SAAS,aACV;AAED,KAAI,CAAC,SAAS;AACZ,mBAAiB,iDAAiD;AAClE,SAAO,EACL,MAAM,oCACP;;CAGH,MAAM,gBAA0C;EAC9C,GAAG;EACH,eAAe,SAAS;EACxB,qBAAqB,SAAS;EAC9B,uBAAuB,SAAS;EACjC;AACD,kBAAiB,WAAW;EAC1B,SAAS,cAAc;EACvB,gBAAgB,cAAc;EAC9B,qBAAqB,cAAc;EACnC,uBAAuB,cAAc;EACtC,CAAC;AAEF,QAAO,YAAY,cAAc"}
@@ -0,0 +1,13 @@
1
+ export interface AnalogRouteIdiomDiagnostic {
2
+ code: string;
3
+ severity: "error" | "warning";
4
+ message: string;
5
+ details?: string;
6
+ }
7
+ export interface AnalyzeAnalogRouteFileOptions {
8
+ filename: string;
9
+ code: string;
10
+ routeFiles?: string[];
11
+ }
12
+ export declare function analyzeAnalogRouteFile(options: AnalyzeAnalogRouteFileOptions): AnalogRouteIdiomDiagnostic[];
13
+ export declare function formatAnalogRouteIdiomDiagnostic(diagnostic: AnalogRouteIdiomDiagnostic, filename: string, workspaceRoot: string): string;