astro 5.16.5 → 6.0.0-alpha.1

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 (393) hide show
  1. package/{astro.js → bin/astro.mjs} +7 -8
  2. package/client.d.ts +19 -45
  3. package/components/ClientRouter.astro +0 -5
  4. package/components/Code.astro +2 -2
  5. package/components/Image.astro +2 -2
  6. package/components/Picture.astro +1 -1
  7. package/dist/actions/consts.d.ts +2 -5
  8. package/dist/actions/consts.js +4 -8
  9. package/dist/actions/integration.js +2 -4
  10. package/dist/actions/runtime/client.d.ts +84 -3
  11. package/dist/actions/runtime/client.js +238 -7
  12. package/dist/actions/runtime/entrypoints/client.d.ts +7 -0
  13. package/dist/actions/runtime/entrypoints/client.js +91 -0
  14. package/dist/actions/runtime/entrypoints/route.d.ts +2 -0
  15. package/dist/actions/runtime/{route.js → entrypoints/route.js} +1 -1
  16. package/dist/actions/runtime/entrypoints/server.d.ts +6 -0
  17. package/dist/actions/runtime/entrypoints/server.js +33 -0
  18. package/dist/actions/runtime/server.d.ts +11 -29
  19. package/dist/actions/runtime/server.js +162 -82
  20. package/dist/actions/runtime/types.d.ts +64 -0
  21. package/dist/actions/runtime/types.js +0 -0
  22. package/dist/actions/utils.d.ts +2 -2
  23. package/dist/actions/utils.js +2 -2
  24. package/dist/actions/vite-plugin-actions.js +18 -21
  25. package/dist/assets/build/generate.d.ts +2 -2
  26. package/dist/assets/build/generate.js +11 -9
  27. package/dist/assets/build/remote.js +4 -14
  28. package/dist/assets/endpoint/config.js +2 -2
  29. package/dist/assets/endpoint/dev.js +7 -6
  30. package/dist/assets/fonts/config.d.ts +86 -174
  31. package/dist/assets/fonts/config.js +15 -17
  32. package/dist/assets/fonts/infra/dev-remote-font-provider-mod-resolver.d.ts +3 -3
  33. package/dist/assets/fonts/infra/dev-remote-font-provider-mod-resolver.js +4 -4
  34. package/dist/assets/fonts/types.d.ts +1 -1
  35. package/dist/assets/fonts/vite-plugin-fonts.js +6 -3
  36. package/dist/assets/services/sharp.js +5 -6
  37. package/dist/assets/utils/index.d.ts +0 -6
  38. package/dist/assets/utils/index.js +0 -9
  39. package/dist/assets/utils/{transformToPath.d.ts → node.d.ts} +15 -1
  40. package/dist/assets/utils/{node/emitAsset.js → node.js} +34 -56
  41. package/dist/assets/vite-plugin-assets.js +9 -14
  42. package/dist/cli/index.js +0 -2
  43. package/dist/cli/infra/build-time-astro-version-provider.js +1 -1
  44. package/dist/cli/preferences/index.js +5 -1
  45. package/dist/config/index.js +11 -16
  46. package/dist/container/index.d.ts +0 -1
  47. package/dist/container/index.js +19 -14
  48. package/dist/container/pipeline.d.ts +2 -1
  49. package/dist/container/pipeline.js +4 -11
  50. package/dist/content/config.d.ts +34 -40
  51. package/dist/content/config.js +17 -13
  52. package/dist/content/content-layer.js +14 -21
  53. package/dist/content/data-store.d.ts +0 -2
  54. package/dist/content/loaders/errors.d.ts +3 -3
  55. package/dist/content/loaders/errors.js +5 -2
  56. package/dist/content/loaders/glob.d.ts +0 -5
  57. package/dist/content/loaders/glob.js +3 -30
  58. package/dist/content/loaders/types.d.ts +11 -4
  59. package/dist/content/mutable-data-store.js +1 -14
  60. package/dist/content/runtime-assets.d.ts +4 -4
  61. package/dist/content/runtime-assets.js +4 -7
  62. package/dist/content/runtime.d.ts +35 -73
  63. package/dist/content/runtime.js +63 -231
  64. package/dist/content/server-listeners.js +25 -88
  65. package/dist/content/types-generator.d.ts +1 -6
  66. package/dist/content/types-generator.js +87 -156
  67. package/dist/content/utils.d.ts +47 -412
  68. package/dist/content/utils.js +88 -203
  69. package/dist/content/vite-plugin-content-assets.d.ts +12 -4
  70. package/dist/content/vite-plugin-content-assets.js +100 -56
  71. package/dist/content/vite-plugin-content-imports.js +10 -8
  72. package/dist/content/vite-plugin-content-virtual-mod.js +13 -131
  73. package/dist/core/app/app.d.ts +5 -0
  74. package/dist/core/app/app.js +13 -0
  75. package/dist/core/app/base.d.ts +132 -0
  76. package/dist/core/app/base.js +448 -0
  77. package/dist/core/app/common.d.ts +6 -2
  78. package/dist/core/app/common.js +60 -33
  79. package/dist/core/app/dev/app.d.ts +15 -0
  80. package/dist/core/app/dev/app.js +86 -0
  81. package/dist/core/app/dev/pipeline.d.ts +13 -0
  82. package/dist/core/app/dev/pipeline.js +123 -0
  83. package/dist/core/app/entrypoint.d.ts +2 -0
  84. package/dist/core/app/entrypoint.js +15 -0
  85. package/dist/core/app/index.d.ts +7 -114
  86. package/dist/core/app/index.js +20 -557
  87. package/dist/core/app/logging.d.ts +3 -0
  88. package/dist/core/app/logging.js +11 -0
  89. package/dist/core/app/manifest.d.ts +9 -0
  90. package/dist/core/app/manifest.js +107 -0
  91. package/dist/core/app/middlewares.js +1 -1
  92. package/dist/core/app/node.d.ts +2 -8
  93. package/dist/core/app/node.js +8 -9
  94. package/dist/core/app/pipeline.d.ts +6 -5
  95. package/dist/core/app/pipeline.js +65 -49
  96. package/dist/core/app/types.d.ts +58 -22
  97. package/dist/core/app/validate-forwarded-headers.d.ts +16 -0
  98. package/dist/core/app/validate-forwarded-headers.js +60 -0
  99. package/dist/core/base-pipeline.d.ts +22 -14
  100. package/dist/core/base-pipeline.js +54 -6
  101. package/dist/core/build/app.d.ts +13 -0
  102. package/dist/core/build/app.js +38 -0
  103. package/dist/core/build/common.d.ts +1 -1
  104. package/dist/core/build/common.js +2 -2
  105. package/dist/core/build/generate.d.ts +1 -1
  106. package/dist/core/build/generate.js +95 -204
  107. package/dist/core/build/graph.js +2 -2
  108. package/dist/core/build/index.js +11 -19
  109. package/dist/core/build/internal.d.ts +3 -29
  110. package/dist/core/build/internal.js +1 -45
  111. package/dist/core/build/pipeline.d.ts +15 -26
  112. package/dist/core/build/pipeline.js +106 -170
  113. package/dist/core/build/plugins/index.d.ts +4 -2
  114. package/dist/core/build/plugins/index.js +17 -23
  115. package/dist/core/build/plugins/plugin-analyzer.d.ts +2 -2
  116. package/dist/core/build/plugins/plugin-analyzer.js +5 -13
  117. package/dist/core/build/plugins/plugin-component-entry.d.ts +7 -2
  118. package/dist/core/build/plugins/plugin-component-entry.js +5 -13
  119. package/dist/core/build/plugins/plugin-css.d.ts +2 -2
  120. package/dist/core/build/plugins/plugin-css.js +86 -41
  121. package/dist/core/build/plugins/plugin-internals.d.ts +2 -2
  122. package/dist/core/build/plugins/plugin-internals.js +24 -18
  123. package/dist/core/build/plugins/plugin-manifest.d.ts +33 -5
  124. package/dist/core/build/plugins/plugin-manifest.js +89 -131
  125. package/dist/core/build/plugins/plugin-middleware.d.ts +2 -2
  126. package/dist/core/build/plugins/plugin-middleware.js +5 -7
  127. package/dist/core/build/plugins/plugin-noop.d.ts +3 -0
  128. package/dist/core/build/plugins/plugin-noop.js +29 -0
  129. package/dist/core/build/plugins/plugin-prerender.d.ts +2 -2
  130. package/dist/core/build/plugins/plugin-prerender.js +7 -64
  131. package/dist/core/build/plugins/plugin-scripts.d.ts +5 -2
  132. package/dist/core/build/plugins/plugin-scripts.js +5 -13
  133. package/dist/core/build/plugins/plugin-ssr.d.ts +2 -2
  134. package/dist/core/build/plugins/plugin-ssr.js +60 -132
  135. package/dist/core/build/plugins/util.d.ts +1 -25
  136. package/dist/core/build/plugins/util.js +0 -47
  137. package/dist/core/build/runtime.d.ts +26 -0
  138. package/dist/core/build/runtime.js +45 -0
  139. package/dist/core/build/static-build.d.ts +2 -2
  140. package/dist/core/build/static-build.js +180 -154
  141. package/dist/core/build/types.d.ts +1 -2
  142. package/dist/core/build/util.d.ts +0 -1
  143. package/dist/core/build/util.js +0 -7
  144. package/dist/core/compile/compile.d.ts +2 -3
  145. package/dist/core/compile/compile.js +2 -4
  146. package/dist/core/config/config.js +2 -2
  147. package/dist/core/config/index.d.ts +0 -1
  148. package/dist/core/config/index.js +0 -2
  149. package/dist/core/config/schemas/base.d.ts +330 -1463
  150. package/dist/core/config/schemas/base.js +40 -56
  151. package/dist/core/config/schemas/refined.d.ts +2 -2
  152. package/dist/core/config/schemas/refined.js +8 -1
  153. package/dist/core/config/schemas/relative.d.ts +607 -1737
  154. package/dist/core/config/schemas/relative.js +4 -4
  155. package/dist/core/config/settings.d.ts +3 -3
  156. package/dist/core/config/settings.js +5 -6
  157. package/dist/core/config/validate.js +13 -2
  158. package/dist/core/config/vite-load.js +12 -3
  159. package/dist/core/constants.d.ts +12 -0
  160. package/dist/core/constants.js +22 -1
  161. package/dist/core/create-vite.d.ts +2 -6
  162. package/dist/core/create-vite.js +36 -47
  163. package/dist/core/csp/common.d.ts +1 -1
  164. package/dist/core/csp/common.js +1 -1
  165. package/dist/core/csp/config.d.ts +8 -4
  166. package/dist/core/csp/config.js +1 -1
  167. package/dist/core/dev/container.js +13 -9
  168. package/dist/core/dev/dev.js +1 -1
  169. package/dist/core/dev/restart.js +15 -6
  170. package/dist/core/errors/dev/runtime.d.ts +6 -0
  171. package/dist/core/errors/dev/runtime.js +27 -0
  172. package/dist/core/errors/dev/vite.js +2 -19
  173. package/dist/core/errors/errors-data.d.ts +85 -57
  174. package/dist/core/errors/errors-data.js +40 -28
  175. package/dist/core/errors/errors.d.ts +3 -3
  176. package/dist/core/errors/errors.js +1 -1
  177. package/dist/core/errors/overlay.js +1 -1
  178. package/dist/core/errors/zod-error-map.d.ts +2 -2
  179. package/dist/core/errors/zod-error-map.js +26 -24
  180. package/dist/core/messages.d.ts +2 -2
  181. package/dist/core/messages.js +2 -2
  182. package/dist/core/middleware/callMiddleware.js +1 -1
  183. package/dist/core/middleware/defineMiddleware.d.ts +2 -0
  184. package/dist/core/middleware/defineMiddleware.js +6 -0
  185. package/dist/core/middleware/index.d.ts +4 -4
  186. package/dist/core/middleware/index.js +6 -12
  187. package/dist/core/middleware/sequence.js +4 -4
  188. package/dist/core/middleware/vite-plugin.d.ts +1 -1
  189. package/dist/core/middleware/vite-plugin.js +18 -7
  190. package/dist/core/module-loader/index.d.ts +2 -2
  191. package/dist/core/module-loader/index.js +1 -1
  192. package/dist/core/module-loader/{loader.d.ts → runner.d.ts} +6 -17
  193. package/dist/core/module-loader/{loader.js → runner.js} +3 -0
  194. package/dist/core/module-loader/vite.d.ts +3 -2
  195. package/dist/core/module-loader/vite.js +17 -13
  196. package/dist/core/preview/index.js +20 -5
  197. package/dist/core/preview/static-preview-server.js +1 -0
  198. package/dist/core/redirects/component.js +1 -2
  199. package/dist/core/redirects/index.d.ts +0 -1
  200. package/dist/core/redirects/index.js +1 -3
  201. package/dist/core/redirects/render.js +5 -2
  202. package/dist/core/render/paginate.d.ts +1 -1
  203. package/dist/core/render/paginate.js +8 -6
  204. package/dist/core/render/params-and-props.d.ts +2 -0
  205. package/dist/core/render/params-and-props.js +19 -7
  206. package/dist/core/render/route-cache.d.ts +3 -3
  207. package/dist/core/render/route-cache.js +7 -7
  208. package/dist/core/render-context.d.ts +9 -7
  209. package/dist/core/render-context.js +46 -47
  210. package/dist/core/routing/astro-designed-error-pages.js +2 -2
  211. package/dist/core/routing/default.js +1 -1
  212. package/dist/core/routing/helpers.d.ts +22 -0
  213. package/dist/core/routing/helpers.js +25 -0
  214. package/dist/core/routing/index.d.ts +1 -1
  215. package/dist/core/routing/index.js +2 -2
  216. package/dist/core/routing/manifest/create.d.ts +6 -1
  217. package/dist/core/routing/manifest/create.js +9 -13
  218. package/dist/core/routing/manifest/generator.d.ts +3 -1
  219. package/dist/core/routing/params.d.ts +2 -1
  220. package/dist/core/routing/params.js +8 -8
  221. package/dist/core/routing/validation.d.ts +1 -2
  222. package/dist/core/routing/validation.js +2 -18
  223. package/dist/core/server-islands/endpoint.d.ts +1 -2
  224. package/dist/core/server-islands/endpoint.js +5 -4
  225. package/dist/core/server-islands/vite-plugin-server-islands.d.ts +1 -1
  226. package/dist/core/server-islands/vite-plugin-server-islands.js +89 -44
  227. package/dist/core/session/vite-plugin.d.ts +6 -0
  228. package/dist/core/session/vite-plugin.js +53 -0
  229. package/dist/core/session.d.ts +4 -2
  230. package/dist/core/session.js +8 -48
  231. package/dist/core/sync/index.d.ts +2 -5
  232. package/dist/core/sync/index.js +19 -34
  233. package/dist/core/util.d.ts +2 -2
  234. package/dist/core/util.js +3 -3
  235. package/dist/entrypoints/legacy.d.ts +2 -0
  236. package/dist/entrypoints/legacy.js +12 -0
  237. package/dist/entrypoints/prerender.d.ts +4 -0
  238. package/dist/entrypoints/prerender.js +7 -0
  239. package/dist/env/env-loader.d.ts +0 -1
  240. package/dist/env/env-loader.js +4 -17
  241. package/dist/env/schema.d.ts +21 -251
  242. package/dist/env/schema.js +6 -3
  243. package/dist/env/vite-plugin-env.js +3 -2
  244. package/dist/env/vite-plugin-import-meta-env.js +3 -2
  245. package/dist/environments.d.ts +3 -0
  246. package/dist/environments.js +11 -0
  247. package/dist/events/error.d.ts +2 -2
  248. package/dist/i18n/index.d.ts +2 -2
  249. package/dist/i18n/index.js +0 -3
  250. package/dist/i18n/utils.d.ts +1 -6
  251. package/dist/i18n/utils.js +1 -63
  252. package/dist/i18n/vite-plugin-i18n.d.ts +0 -5
  253. package/dist/i18n/vite-plugin-i18n.js +1 -22
  254. package/dist/integrations/hooks.d.ts +2 -3
  255. package/dist/integrations/hooks.js +9 -33
  256. package/dist/manifest/serialized.d.ts +9 -0
  257. package/dist/manifest/serialized.js +144 -0
  258. package/dist/manifest/virtual-module.d.ts +1 -4
  259. package/dist/manifest/virtual-module.js +77 -80
  260. package/dist/preferences/index.d.ts +1 -2
  261. package/dist/prefetch/index.d.ts +0 -10
  262. package/dist/prefetch/index.js +1 -1
  263. package/dist/prerender/routing.d.ts +5 -7
  264. package/dist/prerender/routing.js +6 -17
  265. package/dist/runtime/server/astro-global.d.ts +2 -2
  266. package/dist/runtime/server/astro-global.js +86 -24
  267. package/dist/runtime/server/render/server-islands.js +2 -2
  268. package/dist/runtime/server/transition.d.ts +1 -0
  269. package/dist/transitions/events.d.ts +7 -0
  270. package/dist/transitions/router.js +7 -3
  271. package/dist/transitions/vite-plugin-transitions.js +1 -4
  272. package/dist/types/astro.d.ts +10 -8
  273. package/dist/types/public/common.d.ts +1 -3
  274. package/dist/types/public/config.d.ts +364 -415
  275. package/dist/types/public/context.d.ts +21 -52
  276. package/dist/types/public/index.d.ts +2 -1
  277. package/dist/types/public/integrations.d.ts +23 -18
  278. package/dist/types/public/internal.d.ts +3 -18
  279. package/dist/types/public/preview.d.ts +6 -0
  280. package/dist/virtual-modules/i18n.d.ts +10 -2
  281. package/dist/virtual-modules/i18n.js +16 -7
  282. package/dist/virtual-modules/live-config.d.ts +1 -3
  283. package/dist/virtual-modules/live-config.js +1 -5
  284. package/dist/virtual-modules/middleware.d.ts +2 -1
  285. package/dist/virtual-modules/middleware.js +2 -1
  286. package/dist/vite-plugin-adapter-config/index.js +3 -2
  287. package/dist/vite-plugin-app/app.d.ts +47 -0
  288. package/dist/vite-plugin-app/app.js +410 -0
  289. package/dist/vite-plugin-app/createAstroServerApp.d.ts +8 -0
  290. package/dist/vite-plugin-app/createAstroServerApp.js +56 -0
  291. package/dist/vite-plugin-app/index.d.ts +3 -0
  292. package/dist/vite-plugin-app/index.js +16 -0
  293. package/dist/{vite-plugin-astro-server → vite-plugin-app}/pipeline.d.ts +5 -7
  294. package/dist/vite-plugin-app/pipeline.js +166 -0
  295. package/dist/vite-plugin-astro/index.js +11 -13
  296. package/dist/vite-plugin-astro-server/controller.d.ts +1 -1
  297. package/dist/vite-plugin-astro-server/error.d.ts +3 -4
  298. package/dist/vite-plugin-astro-server/error.js +2 -5
  299. package/dist/vite-plugin-astro-server/index.d.ts +1 -2
  300. package/dist/vite-plugin-astro-server/index.js +6 -4
  301. package/dist/vite-plugin-astro-server/metadata.js +1 -1
  302. package/dist/vite-plugin-astro-server/plugin.d.ts +4 -7
  303. package/dist/vite-plugin-astro-server/plugin.js +53 -96
  304. package/dist/vite-plugin-astro-server/server-state.d.ts +1 -1
  305. package/dist/vite-plugin-astro-server/util.d.ts +0 -2
  306. package/dist/vite-plugin-astro-server/util.js +1 -2
  307. package/dist/vite-plugin-astro-server/vite.d.ts +2 -2
  308. package/dist/vite-plugin-astro-server/vite.js +7 -7
  309. package/dist/vite-plugin-config-alias/index.js +40 -32
  310. package/dist/vite-plugin-css/index.d.ts +18 -0
  311. package/dist/vite-plugin-css/index.js +134 -0
  312. package/dist/vite-plugin-css/util.d.ts +5 -0
  313. package/dist/vite-plugin-css/util.js +8 -0
  314. package/dist/vite-plugin-environment/index.d.ts +15 -0
  315. package/dist/vite-plugin-environment/index.js +77 -0
  316. package/dist/vite-plugin-head/index.d.ts +1 -2
  317. package/dist/vite-plugin-head/index.js +42 -58
  318. package/dist/vite-plugin-hmr-reload/index.js +2 -1
  319. package/dist/vite-plugin-markdown/index.js +0 -1
  320. package/dist/vite-plugin-pages/const.d.ts +2 -0
  321. package/dist/vite-plugin-pages/const.js +6 -0
  322. package/dist/vite-plugin-pages/index.d.ts +2 -0
  323. package/dist/vite-plugin-pages/index.js +7 -0
  324. package/dist/vite-plugin-pages/page.d.ts +7 -0
  325. package/dist/vite-plugin-pages/page.js +48 -0
  326. package/dist/vite-plugin-pages/pages.d.ts +8 -0
  327. package/dist/vite-plugin-pages/pages.js +57 -0
  328. package/dist/vite-plugin-pages/util.d.ts +8 -0
  329. package/dist/vite-plugin-pages/util.js +15 -0
  330. package/dist/vite-plugin-renderers/index.d.ts +9 -0
  331. package/dist/vite-plugin-renderers/index.js +40 -0
  332. package/dist/vite-plugin-routes/index.d.ts +14 -0
  333. package/dist/vite-plugin-routes/index.js +177 -0
  334. package/dist/vite-plugin-scripts/index.js +2 -6
  335. package/dist/vite-plugin-scripts/page-ssr.js +3 -2
  336. package/dist/zod.d.ts +2 -2
  337. package/dist/zod.js +2 -2
  338. package/package.json +14 -15
  339. package/templates/content/module.mjs +9 -63
  340. package/templates/content/types.d.ts +32 -78
  341. package/types/actions.d.ts +1 -5
  342. package/types/content.d.ts +9 -11
  343. package/types/transitions.d.ts +25 -0
  344. package/dist/actions/loadActions.d.ts +0 -8
  345. package/dist/actions/loadActions.js +0 -13
  346. package/dist/actions/runtime/route.d.ts +0 -2
  347. package/dist/actions/runtime/shared.d.ts +0 -60
  348. package/dist/actions/runtime/shared.js +0 -296
  349. package/dist/actions/runtime/utils.d.ts +0 -31
  350. package/dist/actions/runtime/utils.js +0 -16
  351. package/dist/actions/runtime/virtual.d.ts +0 -4
  352. package/dist/actions/runtime/virtual.js +0 -127
  353. package/dist/assets/utils/node/emitAsset.d.ts +0 -29
  354. package/dist/assets/utils/transformToPath.js +0 -32
  355. package/dist/config/vite-plugin-content-listen.d.ts +0 -17
  356. package/dist/config/vite-plugin-content-listen.js +0 -26
  357. package/dist/container/polyfill.d.ts +0 -1
  358. package/dist/container/polyfill.js +0 -2
  359. package/dist/core/build/css-asset-name.d.ts +0 -9
  360. package/dist/core/build/css-asset-name.js +0 -89
  361. package/dist/core/build/plugin.d.ts +0 -43
  362. package/dist/core/build/plugin.js +0 -61
  363. package/dist/core/build/plugins/plugin-actions.d.ts +0 -4
  364. package/dist/core/build/plugins/plugin-actions.js +0 -16
  365. package/dist/core/build/plugins/plugin-chunks.d.ts +0 -2
  366. package/dist/core/build/plugins/plugin-chunks.js +0 -33
  367. package/dist/core/build/plugins/plugin-pages.d.ts +0 -6
  368. package/dist/core/build/plugins/plugin-pages.js +0 -66
  369. package/dist/core/build/plugins/plugin-renderers.d.ts +0 -5
  370. package/dist/core/build/plugins/plugin-renderers.js +0 -54
  371. package/dist/core/middleware/loadMiddleware.d.ts +0 -7
  372. package/dist/core/middleware/loadMiddleware.js +0 -14
  373. package/dist/core/polyfill.d.ts +0 -5
  374. package/dist/core/polyfill.js +0 -17
  375. package/dist/core/redirects/helpers.d.ts +0 -7
  376. package/dist/core/redirects/helpers.js +0 -10
  377. package/dist/core/routing/manifest/serialization.d.ts +0 -5
  378. package/dist/core/routing/manifest/serialization.js +0 -37
  379. package/dist/prerender/metadata.d.ts +0 -8
  380. package/dist/prerender/metadata.js +0 -18
  381. package/dist/vite-plugin-astro-postprocess/index.d.ts +0 -2
  382. package/dist/vite-plugin-astro-postprocess/index.js +0 -48
  383. package/dist/vite-plugin-astro-server/css.d.ts +0 -13
  384. package/dist/vite-plugin-astro-server/css.js +0 -48
  385. package/dist/vite-plugin-astro-server/pipeline.js +0 -166
  386. package/dist/vite-plugin-astro-server/request.d.ts +0 -14
  387. package/dist/vite-plugin-astro-server/request.js +0 -73
  388. package/dist/vite-plugin-astro-server/route.d.ts +0 -25
  389. package/dist/vite-plugin-astro-server/route.js +0 -283
  390. package/dist/vite-plugin-scanner/index.d.ts +0 -10
  391. package/dist/vite-plugin-scanner/index.js +0 -87
  392. package/dist/vite-plugin-ssr-manifest/index.d.ts +0 -2
  393. package/dist/vite-plugin-ssr-manifest/index.js +0 -26
@@ -1,23 +1,24 @@
1
- import type { ActionAPIContext } from '../actions/runtime/utils.js';
1
+ import type { ActionAPIContext } from '../actions/runtime/types.js';
2
2
  import type { ComponentInstance } from '../types/astro.js';
3
3
  import type { MiddlewareHandler, Props } from '../types/public/common.js';
4
- import type { APIContext, AstroGlobal, AstroGlobalPartial } from '../types/public/context.js';
4
+ import type { APIContext, AstroGlobal } from '../types/public/context.js';
5
5
  import type { RouteData, SSRResult } from '../types/public/internal.js';
6
- import type { SSRActions } from './app/types.js';
6
+ import type { ServerIslandMappings, SSRActions } from './app/types.js';
7
7
  import { AstroCookies } from './cookies/index.js';
8
8
  import { type Pipeline } from './render/index.js';
9
9
  import { AstroSession } from './session.js';
10
- export declare const apiContextRoutesSymbol: unique symbol;
11
10
  /**
12
11
  * Each request is rendered using a `RenderContext`.
13
12
  * It contains data unique to each request. It is responsible for executing middleware, calling endpoints, and rendering the page by gathering necessary data from a `Pipeline`.
14
13
  */
14
+ export type CreateRenderContext = Pick<RenderContext, 'pathname' | 'pipeline' | 'request' | 'routeData' | 'clientAddress'> & Partial<Pick<RenderContext, 'locals' | 'status' | 'props' | 'partial' | 'actions' | 'shouldInjectCspMetaTags' | 'skipMiddleware'>>;
15
15
  export declare class RenderContext {
16
16
  #private;
17
17
  readonly pipeline: Pipeline;
18
18
  locals: App.Locals;
19
19
  readonly middleware: MiddlewareHandler;
20
20
  readonly actions: SSRActions;
21
+ readonly serverIslands: ServerIslandMappings;
21
22
  pathname: string;
22
23
  request: Request;
23
24
  routeData: RouteData;
@@ -30,6 +31,7 @@ export declare class RenderContext {
30
31
  partial: undefined | boolean;
31
32
  shouldInjectCspMetaTags: boolean;
32
33
  session: AstroSession | undefined;
34
+ skipMiddleware: boolean;
33
35
  private constructor();
34
36
  /**
35
37
  * A flag that tells the render content if the rewriting was triggered
@@ -40,7 +42,7 @@ export declare class RenderContext {
40
42
  */
41
43
  counter: number;
42
44
  result: SSRResult | undefined;
43
- static create({ locals, middleware, pathname, pipeline, request, routeData, clientAddress, status, props, partial, actions, shouldInjectCspMetaTags, }: Pick<RenderContext, 'pathname' | 'pipeline' | 'request' | 'routeData' | 'clientAddress'> & Partial<Pick<RenderContext, 'locals' | 'middleware' | 'status' | 'props' | 'partial' | 'actions' | 'shouldInjectCspMetaTags'>>): Promise<RenderContext>;
45
+ static create({ locals, pathname, pipeline, request, routeData, clientAddress, status, props, partial, shouldInjectCspMetaTags, skipMiddleware, }: CreateRenderContext): Promise<RenderContext>;
44
46
  /**
45
47
  * The main function of the RenderContext.
46
48
  *
@@ -64,8 +66,8 @@ export declare class RenderContext {
64
66
  *
65
67
  * The page level partial is used as the prototype of the user-visible `Astro` global object, which is instantiated once per use of a component.
66
68
  */
67
- createAstro(result: SSRResult, astroStaticPartial: AstroGlobalPartial, props: Record<string, any>, slotValues: Record<string, any> | null, apiContext: ActionAPIContext): AstroGlobal;
68
- createAstroPagePartial(result: SSRResult, astroStaticPartial: AstroGlobalPartial, apiContext: ActionAPIContext): Omit<AstroGlobal, 'props' | 'self' | 'slots'>;
69
+ createAstro(result: SSRResult, props: Record<string, any>, slotValues: Record<string, any> | null, apiContext: ActionAPIContext): AstroGlobal;
70
+ createAstroPagePartial(result: SSRResult, apiContext: ActionAPIContext): Omit<AstroGlobal, 'props' | 'self' | 'slots'>;
69
71
  getClientAddress(): string;
70
72
  computeCurrentLocale(): string | undefined;
71
73
  computePreferredLocale(): string | undefined;
@@ -1,6 +1,6 @@
1
1
  import colors from "piccolore";
2
+ import { deserializeActionResult } from "../actions/runtime/client.js";
2
3
  import { getActionContext } from "../actions/runtime/server.js";
3
- import { deserializeActionResult } from "../actions/runtime/shared.js";
4
4
  import { createCallAction, createGetActionResult, hasActionPayload } from "../actions/utils.js";
5
5
  import {
6
6
  computeCurrentLocale,
@@ -10,12 +10,12 @@ import {
10
10
  import { renderEndpoint } from "../runtime/server/endpoint.js";
11
11
  import { renderPage } from "../runtime/server/index.js";
12
12
  import {
13
- ASTRO_VERSION,
14
- clientAddressSymbol,
13
+ ASTRO_GENERATOR,
15
14
  REROUTE_DIRECTIVE_HEADER,
16
15
  REWRITE_DIRECTIVE_HEADER_KEY,
17
16
  REWRITE_DIRECTIVE_HEADER_VALUE,
18
17
  ROUTE_TYPE_HEADER,
18
+ pipelineSymbol,
19
19
  responseSentSymbol
20
20
  } from "./constants.js";
21
21
  import { AstroCookies, attachCookiesToResponse } from "./cookies/index.js";
@@ -32,13 +32,13 @@ import { isRoute404or500, isRouteExternalRedirect, isRouteServerIsland } from ".
32
32
  import { copyRequest, getOriginPathname, setOriginPathname } from "./routing/rewrite.js";
33
33
  import { AstroSession } from "./session.js";
34
34
  import { validateAndDecodePathname } from "./util/pathname.js";
35
- const apiContextRoutesSymbol = Symbol.for("context.routes");
36
35
  class RenderContext {
37
- constructor(pipeline, locals, middleware, actions, pathname, request, routeData, status, clientAddress, cookies = new AstroCookies(request), params = getParams(routeData, pathname), url = RenderContext.#createNormalizedUrl(request.url), props = {}, partial = void 0, shouldInjectCspMetaTags = !!pipeline.manifest.csp, session = pipeline.manifest.sessionConfig ? new AstroSession(cookies, pipeline.manifest.sessionConfig, pipeline.runtimeMode) : void 0) {
36
+ constructor(pipeline, locals, middleware, actions, serverIslands, pathname, request, routeData, status, clientAddress, cookies = new AstroCookies(request), params = getParams(routeData, pathname), url = RenderContext.#createNormalizedUrl(request.url), props = {}, partial = void 0, shouldInjectCspMetaTags = !!pipeline.manifest.csp, session = void 0, skipMiddleware = false) {
38
37
  this.pipeline = pipeline;
39
38
  this.locals = locals;
40
39
  this.middleware = middleware;
41
40
  this.actions = actions;
41
+ this.serverIslands = serverIslands;
42
42
  this.pathname = pathname;
43
43
  this.request = request;
44
44
  this.routeData = routeData;
@@ -51,6 +51,7 @@ class RenderContext {
51
51
  this.partial = partial;
52
52
  this.shouldInjectCspMetaTags = shouldInjectCspMetaTags;
53
53
  this.session = session;
54
+ this.skipMiddleware = skipMiddleware;
54
55
  }
55
56
  static #createNormalizedUrl(requestUrl) {
56
57
  const url = new URL(requestUrl);
@@ -75,7 +76,6 @@ class RenderContext {
75
76
  result = void 0;
76
77
  static async create({
77
78
  locals = {},
78
- middleware,
79
79
  pathname,
80
80
  pipeline,
81
81
  request,
@@ -84,33 +84,45 @@ class RenderContext {
84
84
  status = 200,
85
85
  props,
86
86
  partial = void 0,
87
- actions,
88
- shouldInjectCspMetaTags
87
+ shouldInjectCspMetaTags,
88
+ skipMiddleware = false
89
89
  }) {
90
90
  const pipelineMiddleware = await pipeline.getMiddleware();
91
- const pipelineActions = actions ?? await pipeline.getActions();
91
+ const pipelineActions = await pipeline.getActions();
92
+ const pipelineSessionDriver = await pipeline.getSessionDriver();
93
+ const serverIslands = await pipeline.getServerIslands();
92
94
  setOriginPathname(
93
95
  request,
94
96
  pathname,
95
97
  pipeline.manifest.trailingSlash,
96
98
  pipeline.manifest.buildFormat
97
99
  );
100
+ const cookies = new AstroCookies(request);
101
+ const session = pipeline.manifest.sessionConfig && pipelineSessionDriver ? new AstroSession(
102
+ cookies,
103
+ pipeline.manifest.sessionConfig,
104
+ pipeline.runtimeMode,
105
+ pipelineSessionDriver
106
+ ) : void 0;
98
107
  return new RenderContext(
99
108
  pipeline,
100
109
  locals,
101
- sequence(...pipeline.internalMiddleware, middleware ?? pipelineMiddleware),
110
+ sequence(...pipeline.internalMiddleware, pipelineMiddleware),
102
111
  pipelineActions,
112
+ serverIslands,
103
113
  pathname,
104
114
  request,
105
115
  routeData,
106
116
  status,
107
117
  clientAddress,
108
- void 0,
118
+ cookies,
109
119
  void 0,
110
120
  void 0,
111
121
  props,
112
122
  partial,
113
- shouldInjectCspMetaTags ?? !!pipeline.manifest.csp
123
+ shouldInjectCspMetaTags ?? !!pipeline.manifest.csp,
124
+ session,
125
+ skipMiddleware
114
126
  );
115
127
  }
116
128
  /**
@@ -126,15 +138,16 @@ class RenderContext {
126
138
  */
127
139
  async render(componentInstance, slots = {}) {
128
140
  const { middleware, pipeline } = this;
129
- const { logger, serverLike, streaming, manifest } = pipeline;
141
+ const { logger, streaming, manifest } = pipeline;
130
142
  const props = Object.keys(this.props).length > 0 ? this.props : await getProps({
131
143
  mod: componentInstance,
132
144
  routeData: this.routeData,
133
145
  routeCache: this.pipeline.routeCache,
134
146
  pathname: this.pathname,
135
147
  logger,
136
- serverLike,
137
- base: manifest.base
148
+ serverLike: manifest.serverLike,
149
+ base: manifest.base,
150
+ trailingSlash: manifest.trailingSlash
138
151
  });
139
152
  const actionApiContext = this.createActionAPIContext();
140
153
  const apiContext = this.createAPIContext(props, actionApiContext);
@@ -156,7 +169,7 @@ class RenderContext {
156
169
  pathname,
157
170
  newUrl
158
171
  } = await pipeline.tryRewrite(payload, this.request);
159
- if (this.pipeline.serverLike === true && this.routeData.prerender === false && routeData.prerender === true) {
172
+ if (this.pipeline.manifest.serverLike === true && this.routeData.prerender === false && routeData.prerender === true) {
160
173
  throw new AstroError({
161
174
  ...ForbiddenRewrite,
162
175
  message: ForbiddenRewrite.message(this.pathname, pathname, routeData.component),
@@ -246,7 +259,7 @@ class RenderContext {
246
259
  if (isRouteExternalRedirect(this.routeData)) {
247
260
  return renderRedirect(this);
248
261
  }
249
- const response = await callMiddleware(middleware, apiContext, lastNext);
262
+ const response = this.skipMiddleware ? await lastNext(apiContext) : await callMiddleware(middleware, apiContext, lastNext);
250
263
  if (response.headers.get(ROUTE_TYPE_HEADER)) {
251
264
  response.headers.delete(ROUTE_TYPE_HEADER);
252
265
  }
@@ -255,10 +268,14 @@ class RenderContext {
255
268
  }
256
269
  createAPIContext(props, context) {
257
270
  const redirect = (path, status = 302) => new Response(null, { status, headers: { Location: path } });
258
- Reflect.set(context, apiContextRoutesSymbol, this.pipeline);
271
+ const rewrite = async (reroutePayload) => {
272
+ return await this.#executeRewrite(reroutePayload);
273
+ };
274
+ Reflect.set(context, pipelineSymbol, this.pipeline);
259
275
  return Object.assign(context, {
260
276
  props,
261
277
  redirect,
278
+ rewrite,
262
279
  getActionResult: createGetActionResult(context.locals),
263
280
  callAction: createCallAction(context)
264
281
  });
@@ -271,7 +288,7 @@ class RenderContext {
271
288
  this.request
272
289
  );
273
290
  const isI18nFallback = routeData.fallbackRoutes && routeData.fallbackRoutes.length > 0;
274
- if (this.pipeline.serverLike && !this.routeData.prerender && routeData.prerender && !isI18nFallback) {
291
+ if (this.pipeline.manifest.serverLike && !this.routeData.prerender && routeData.prerender && !isI18nFallback) {
275
292
  throw new AstroError({
276
293
  ...ForbiddenRewrite,
277
294
  message: ForbiddenRewrite.message(this.pathname, pathname, routeData.component),
@@ -312,10 +329,6 @@ class RenderContext {
312
329
  createActionAPIContext() {
313
330
  const renderContext = this;
314
331
  const { params, pipeline, url } = this;
315
- const generator = `Astro v${ASTRO_VERSION}`;
316
- const rewrite = async (reroutePayload) => {
317
- return await this.#executeRewrite(reroutePayload);
318
- };
319
332
  return {
320
333
  // Don't allow reassignment of cookies because it doesn't work
321
334
  get cookies() {
@@ -329,7 +342,7 @@ class RenderContext {
329
342
  get currentLocale() {
330
343
  return renderContext.computeCurrentLocale();
331
344
  },
332
- generator,
345
+ generator: ASTRO_GENERATOR,
333
346
  get locals() {
334
347
  return renderContext.locals;
335
348
  },
@@ -343,7 +356,6 @@ class RenderContext {
343
356
  get preferredLocaleList() {
344
357
  return renderContext.computePreferredLocaleList();
345
358
  },
346
- rewrite,
347
359
  request: this.request,
348
360
  site: pipeline.site,
349
361
  url,
@@ -451,7 +463,7 @@ class RenderContext {
451
463
  compressHTML,
452
464
  cookies,
453
465
  /** This function returns the `Astro` faux-global */
454
- createAstro: (astroGlobal, props, slots) => this.createAstro(result, astroGlobal, props, slots, ctx),
466
+ createAstro: (props, slots) => this.createAstro(result, props, slots, ctx),
455
467
  links,
456
468
  params: this.params,
457
469
  partial,
@@ -463,7 +475,7 @@ class RenderContext {
463
475
  scripts,
464
476
  styles,
465
477
  actionResult,
466
- serverIslandNameMap: manifest.serverIslandNameMap ?? /* @__PURE__ */ new Map(),
478
+ serverIslandNameMap: this.serverIslands.serverIslandNameMap ?? /* @__PURE__ */ new Map(),
467
479
  key: manifest.key,
468
480
  trailingSlash: manifest.trailingSlash,
469
481
  _metadata: {
@@ -502,20 +514,12 @@ class RenderContext {
502
514
  *
503
515
  * The page level partial is used as the prototype of the user-visible `Astro` global object, which is instantiated once per use of a component.
504
516
  */
505
- createAstro(result, astroStaticPartial, props, slotValues, apiContext) {
517
+ createAstro(result, props, slotValues, apiContext) {
506
518
  let astroPagePartial;
507
519
  if (this.isRewriting) {
508
- astroPagePartial = this.#astroPagePartial = this.createAstroPagePartial(
509
- result,
510
- astroStaticPartial,
511
- apiContext
512
- );
520
+ astroPagePartial = this.#astroPagePartial = this.createAstroPagePartial(result, apiContext);
513
521
  } else {
514
- astroPagePartial = this.#astroPagePartial ??= this.createAstroPagePartial(
515
- result,
516
- astroStaticPartial,
517
- apiContext
518
- );
522
+ astroPagePartial = this.#astroPagePartial ??= this.createAstroPagePartial(result, apiContext);
519
523
  }
520
524
  const astroComponentPartial = { props, self: null };
521
525
  const Astro = Object.assign(
@@ -537,7 +541,7 @@ class RenderContext {
537
541
  });
538
542
  return Astro;
539
543
  }
540
- createAstroPagePartial(result, astroStaticPartial, apiContext) {
544
+ createAstroPagePartial(result, apiContext) {
541
545
  const renderContext = this;
542
546
  const { cookies, locals, params, pipeline, url } = this;
543
547
  const { response } = result;
@@ -554,8 +558,7 @@ class RenderContext {
554
558
  };
555
559
  const callAction = createCallAction(apiContext);
556
560
  return {
557
- generator: astroStaticPartial.generator,
558
- glob: astroStaticPartial.glob,
561
+ generator: ASTRO_GENERATOR,
559
562
  routePattern: this.routeData.route,
560
563
  isPrerendered: this.routeData.prerender,
561
564
  cookies,
@@ -647,7 +650,7 @@ class RenderContext {
647
650
  };
648
651
  }
649
652
  getClientAddress() {
650
- const { pipeline, request, routeData, clientAddress } = this;
653
+ const { pipeline, routeData, clientAddress } = this;
651
654
  if (routeData.prerender) {
652
655
  throw new AstroError({
653
656
  ...AstroErrorData.PrerenderClientAddressNotAvailable,
@@ -657,9 +660,6 @@ class RenderContext {
657
660
  if (clientAddress) {
658
661
  return clientAddress;
659
662
  }
660
- if (clientAddressSymbol in request) {
661
- return Reflect.get(request, clientAddressSymbol);
662
- }
663
663
  if (pipeline.adapterName) {
664
664
  throw new AstroError({
665
665
  ...AstroErrorData.ClientAddressNotAvailable,
@@ -730,6 +730,5 @@ class RenderContext {
730
730
  }
731
731
  }
732
732
  export {
733
- RenderContext,
734
- apiContextRoutesSymbol
733
+ RenderContext
735
734
  };
@@ -2,7 +2,6 @@ import notFoundTemplate from "../../template/4xx.js";
2
2
  import { DEFAULT_404_COMPONENT } from "../constants.js";
3
3
  const DEFAULT_404_ROUTE = {
4
4
  component: DEFAULT_404_COMPONENT,
5
- generate: () => "",
6
5
  params: [],
7
6
  pattern: /^\/404\/?$/,
8
7
  prerender: false,
@@ -12,7 +11,8 @@ const DEFAULT_404_ROUTE = {
12
11
  route: "/404",
13
12
  fallbackRoutes: [],
14
13
  isIndex: false,
15
- origin: "internal"
14
+ origin: "internal",
15
+ distURL: []
16
16
  };
17
17
  function ensure404Route(manifest) {
18
18
  if (!manifest.routes.some((route) => route.route === "/404")) {
@@ -7,7 +7,7 @@ import {
7
7
  import { DEFAULT_404_ROUTE, default404Instance } from "./astro-designed-error-pages.js";
8
8
  const DEFAULT_COMPONENTS = [DEFAULT_404_COMPONENT, SERVER_ISLAND_COMPONENT];
9
9
  function createDefaultRoutes(manifest) {
10
- const root = new URL(manifest.hrefRoot);
10
+ const root = new URL(manifest.rootDir);
11
11
  return [
12
12
  {
13
13
  instance: default404Instance,
@@ -0,0 +1,22 @@
1
+ import type { RouteData } from '../../types/public/internal.js';
2
+ import type { RouteInfo } from '../app/types.js';
3
+ type RedirectRouteData = RouteData & {
4
+ redirect: string;
5
+ };
6
+ /**
7
+ * Function guard that checks if a route is redirect. If so, `RouteData.redirectRoute` and
8
+ * `RouteData.redirect` aren't `undefined` anymore
9
+ * @param route
10
+ */
11
+ export declare function routeIsRedirect(route: RouteData | undefined): route is RedirectRouteData;
12
+ export declare function routeIsFallback(route: RouteData | undefined): boolean;
13
+ /**
14
+ * Give a route, it returns its fallback routes from a `list` of `RouteInfo[]`.
15
+ *
16
+ * It throws an error if no fallback routes were found. This means there's an error
17
+ * when we construct the list of routes
18
+ * @param route
19
+ * @param routeList
20
+ */
21
+ export declare function getFallbackRoute(route: RouteData, routeList: RouteInfo[]): RouteData;
22
+ export {};
@@ -0,0 +1,25 @@
1
+ function routeIsRedirect(route) {
2
+ return route?.type === "redirect";
3
+ }
4
+ function routeIsFallback(route) {
5
+ return route?.type === "fallback";
6
+ }
7
+ function getFallbackRoute(route, routeList) {
8
+ const fallbackRoute = routeList.find((r) => {
9
+ if (route.route === "/" && r.routeData.route === "/") {
10
+ return true;
11
+ }
12
+ return r.routeData.fallbackRoutes.find((f) => {
13
+ return f.route === route.route;
14
+ });
15
+ });
16
+ if (!fallbackRoute) {
17
+ throw new Error(`No fallback route found for route ${route.route}`);
18
+ }
19
+ return fallbackRoute.routeData;
20
+ }
21
+ export {
22
+ getFallbackRoute,
23
+ routeIsFallback,
24
+ routeIsRedirect
25
+ };
@@ -1,3 +1,3 @@
1
+ export { routeIsRedirect } from './helpers.js';
1
2
  export { createRoutesList } from './manifest/create.js';
2
- export { serializeRouteData } from './manifest/serialization.js';
3
3
  export { matchAllRoutes } from './match.js';
@@ -1,8 +1,8 @@
1
+ import { routeIsRedirect } from "./helpers.js";
1
2
  import { createRoutesList } from "./manifest/create.js";
2
- import { serializeRouteData } from "./manifest/serialization.js";
3
3
  import { matchAllRoutes } from "./match.js";
4
4
  export {
5
5
  createRoutesList,
6
6
  matchAllRoutes,
7
- serializeRouteData
7
+ routeIsRedirect
8
8
  };
@@ -10,8 +10,13 @@ interface CreateRouteManifestParams {
10
10
  fsMod?: typeof nodeFs;
11
11
  }
12
12
  /** Create manifest of all static routes */
13
- export declare function createRoutesList(params: CreateRouteManifestParams, logger: Logger, { dev }?: {
13
+ export declare function createRoutesList(params: CreateRouteManifestParams, logger: Logger, { dev, skipBuildOutputAssignment, }?: {
14
14
  dev?: boolean;
15
+ /**
16
+ * When `true`, the assignment of `settings.buildOutput` is skipped.
17
+ * Usually, that's needed when this function has already been called.
18
+ */
19
+ skipBuildOutputAssignment?: boolean;
15
20
  }): Promise<RoutesList>;
16
21
  export declare function resolveInjectedRoute(entrypoint: string, root: URL, cwd?: string): {
17
22
  resolved: string;
@@ -5,9 +5,9 @@ import { fileURLToPath } from "node:url";
5
5
  import pLimit from "p-limit";
6
6
  import colors from "piccolore";
7
7
  import { injectImageEndpoint } from "../../../assets/endpoint/config.js";
8
- import { toRoutingStrategy } from "../../../i18n/utils.js";
9
8
  import { runHookRoutesResolved } from "../../../integrations/hooks.js";
10
9
  import { getPrerenderDefault } from "../../../prerender/utils.js";
10
+ import { toRoutingStrategy } from "../../app/index.js";
11
11
  import { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from "../../constants.js";
12
12
  import {
13
13
  MissingIndexForInternationalization,
@@ -19,7 +19,6 @@ import { injectServerIslandRoute } from "../../server-islands/endpoint.js";
19
19
  import { resolvePages } from "../../util.js";
20
20
  import { ensure404Route } from "../astro-designed-error-pages.js";
21
21
  import { routeComparator } from "../priority.js";
22
- import { getRouteGenerator } from "./generator.js";
23
22
  import { getPattern } from "./pattern.js";
24
23
  import { getRoutePrerenderOption } from "./prerender.js";
25
24
  import { validateSegment } from "./segment.js";
@@ -148,7 +147,6 @@ function createFileBasedRoutes({ settings, cwd, fsMod }, logger) {
148
147
  const pathname = segments.every((segment) => segment.length === 1 && !segment[0].dynamic) ? `/${segments.map((segment) => segment[0].content).join("/")}` : null;
149
148
  const trailingSlash = trailingSlashForPath(pathname, settings.config);
150
149
  const pattern = getPattern(segments, settings.config.base, trailingSlash);
151
- const generate = getRouteGenerator(segments, trailingSlash);
152
150
  const route = joinSegments(segments);
153
151
  routes.push({
154
152
  route,
@@ -158,7 +156,6 @@ function createFileBasedRoutes({ settings, cwd, fsMod }, logger) {
158
156
  segments,
159
157
  params,
160
158
  component,
161
- generate,
162
159
  pathname: pathname || void 0,
163
160
  prerender,
164
161
  fallbackRoutes: [],
@@ -178,7 +175,7 @@ function createFileBasedRoutes({ settings, cwd, fsMod }, logger) {
178
175
  }
179
176
  return routes;
180
177
  }
181
- const trailingSlashForPath = (pathname, config) => pathname && hasFileExtension(pathname) ? "ignore" : config.trailingSlash;
178
+ const trailingSlashForPath = (pathname, config) => pathname && hasFileExtension(pathname) ? "never" : config.trailingSlash;
182
179
  function createInjectedRoutes({ settings, cwd }) {
183
180
  const { config } = settings;
184
181
  const prerender = getPrerenderDefault(config);
@@ -194,7 +191,6 @@ function createInjectedRoutes({ settings, cwd }) {
194
191
  const pathname = segments.every((segment) => segment.length === 1 && !segment[0].dynamic) ? `/${segments.map((segment) => segment[0].content).join("/")}` : null;
195
192
  const trailingSlash = trailingSlashForPath(pathname, config);
196
193
  const pattern = getPattern(segments, settings.config.base, trailingSlash);
197
- const generate = getRouteGenerator(segments, trailingSlash);
198
194
  const params = segments.flat().filter((p) => p.dynamic).map((p) => p.content);
199
195
  const route = joinSegments(segments);
200
196
  routes.push({
@@ -206,7 +202,6 @@ function createInjectedRoutes({ settings, cwd }) {
206
202
  segments,
207
203
  params,
208
204
  component,
209
- generate,
210
205
  pathname: pathname || void 0,
211
206
  prerender: prerenderInjected ?? prerender,
212
207
  fallbackRoutes: [],
@@ -226,7 +221,6 @@ function createRedirectRoutes({ settings }, routeMap) {
226
221
  return getParts(s, from);
227
222
  });
228
223
  const pattern = getPattern(segments, settings.config.base, trailingSlash);
229
- const generate = getRouteGenerator(segments, trailingSlash);
230
224
  const pathname = segments.every((segment) => segment.length === 1 && !segment[0].dynamic) ? `/${segments.map((segment) => segment[0].content).join("/")}` : null;
231
225
  const params = segments.flat().filter((p) => p.dynamic).map((p) => p.content);
232
226
  const route = joinSegments(segments);
@@ -251,7 +245,6 @@ function createRedirectRoutes({ settings }, routeMap) {
251
245
  segments,
252
246
  params,
253
247
  component: from,
254
- generate,
255
248
  pathname: pathname || void 0,
256
249
  prerender: getPrerenderDefault(config),
257
250
  redirect: to,
@@ -301,7 +294,10 @@ function detectRouteCollision(a, b, _config, logger) {
301
294
  );
302
295
  logger.warn("router", "A collision will result in an hard error in following versions of Astro.");
303
296
  }
304
- async function createRoutesList(params, logger, { dev = false } = {}) {
297
+ async function createRoutesList(params, logger, {
298
+ dev = false,
299
+ skipBuildOutputAssignment = false
300
+ } = {}) {
305
301
  const { settings } = params;
306
302
  const { config } = settings;
307
303
  const routeMap = /* @__PURE__ */ new Map();
@@ -321,7 +317,9 @@ async function createRoutesList(params, logger, { dev = false } = {}) {
321
317
  const routes = [
322
318
  ...[...filteredFiledBasedRoutes, ...injectedRoutes, ...redirectRoutes].sort(routeComparator)
323
319
  ];
324
- settings.buildOutput = getPrerenderDefault(config) ? "static" : "server";
320
+ if (skipBuildOutputAssignment !== true) {
321
+ settings.buildOutput = getPrerenderDefault(config) ? "static" : "server";
322
+ }
325
323
  const limit = pLimit(10);
326
324
  let promises = [];
327
325
  for (const route of routes) {
@@ -472,7 +470,6 @@ async function createRoutesList(params, logger, { dev = false } = {}) {
472
470
  validateSegment(s);
473
471
  return getParts(s, route);
474
472
  });
475
- const generate = getRouteGenerator(segments, config.trailingSlash);
476
473
  const index = routes.findIndex((r) => r === fallbackToRoute);
477
474
  if (index >= 0) {
478
475
  const fallbackRoute = {
@@ -480,7 +477,6 @@ async function createRoutesList(params, logger, { dev = false } = {}) {
480
477
  pathname,
481
478
  route,
482
479
  segments,
483
- generate,
484
480
  pattern: getPattern(segments, config.base, config.trailingSlash),
485
481
  type: "fallback",
486
482
  fallbackRoutes: []
@@ -1,3 +1,5 @@
1
1
  import type { AstroConfig } from '../../../types/public/config.js';
2
2
  import type { RoutePart } from '../../../types/public/internal.js';
3
- export declare function getRouteGenerator(segments: RoutePart[][], addTrailingSlash: AstroConfig['trailingSlash']): (params: Record<string, string | number>) => string;
3
+ type RouteGenerator = (data?: any) => string;
4
+ export declare function getRouteGenerator(segments: RoutePart[][], addTrailingSlash: AstroConfig['trailingSlash']): RouteGenerator;
5
+ export {};
@@ -1,8 +1,9 @@
1
1
  import type { GetStaticPathsItem } from '../../types/public/common.js';
2
+ import type { AstroConfig } from '../../types/public/index.js';
2
3
  import type { RouteData } from '../../types/public/internal.js';
3
4
  /**
4
5
  * given a route's Params object, validate parameter
5
6
  * values and create a stringified key for the route
6
7
  * that can be used to match request routes
7
8
  */
8
- export declare function stringifyParams(params: GetStaticPathsItem['params'], route: RouteData): string;
9
+ export declare function stringifyParams(params: GetStaticPathsItem['params'], route: RouteData, trailingSlash: AstroConfig['trailingSlash']): string;
@@ -1,15 +1,15 @@
1
1
  import { trimSlashes } from "../path.js";
2
+ import { getRouteGenerator } from "./manifest/generator.js";
2
3
  import { validateGetStaticPathsParameter } from "./validation.js";
3
- function stringifyParams(params, route) {
4
- const validatedParams = Object.entries(params).reduce((acc, next) => {
5
- validateGetStaticPathsParameter(next, route.component);
6
- const [key, value] = next;
4
+ function stringifyParams(params, route, trailingSlash) {
5
+ const validatedParams = {};
6
+ for (const [key, value] of Object.entries(params)) {
7
+ validateGetStaticPathsParameter([key, value], route.component);
7
8
  if (value !== void 0) {
8
- acc[key] = typeof value === "string" ? trimSlashes(value) : value.toString();
9
+ validatedParams[key] = trimSlashes(value);
9
10
  }
10
- return acc;
11
- }, {});
12
- return route.generate(validatedParams);
11
+ }
12
+ return getRouteGenerator(route.segments, trailingSlash)(validatedParams);
13
13
  }
14
14
  export {
15
15
  stringifyParams
@@ -1,7 +1,6 @@
1
1
  import type { ComponentInstance } from '../../types/astro.js';
2
2
  import type { GetStaticPathsResult } from '../../types/public/common.js';
3
3
  import type { RouteData } from '../../types/public/internal.js';
4
- import type { Logger } from '../logger/core.js';
5
4
  /** Throws error for invalid parameter in getStaticPaths() response */
6
5
  export declare function validateGetStaticPathsParameter([key, value]: [string, any], route: string): void;
7
6
  /** Error for deprecated or malformed route components */
@@ -10,4 +9,4 @@ export declare function validateDynamicRouteModule(mod: ComponentInstance, { ssr
10
9
  route: RouteData;
11
10
  }): void;
12
11
  /** Throw error and log warnings for malformed getStaticPaths() response */
13
- export declare function validateGetStaticPathsResult(result: GetStaticPathsResult, logger: Logger, route: RouteData): void;
12
+ export declare function validateGetStaticPathsResult(result: GetStaticPathsResult, route: RouteData): void;
@@ -1,5 +1,5 @@
1
1
  import { AstroError, AstroErrorData } from "../errors/index.js";
2
- const VALID_PARAM_TYPES = ["string", "number", "undefined"];
2
+ const VALID_PARAM_TYPES = ["string", "undefined"];
3
3
  function validateGetStaticPathsParameter([key, value], route) {
4
4
  if (!VALID_PARAM_TYPES.includes(typeof value)) {
5
5
  throw new AstroError({
@@ -22,7 +22,7 @@ function validateDynamicRouteModule(mod, {
22
22
  });
23
23
  }
24
24
  }
25
- function validateGetStaticPathsResult(result, logger, route) {
25
+ function validateGetStaticPathsResult(result, route) {
26
26
  if (!Array.isArray(result)) {
27
27
  throw new AstroError({
28
28
  ...AstroErrorData.InvalidGetStaticPathsReturn,
@@ -49,22 +49,6 @@ function validateGetStaticPathsResult(result, logger, route) {
49
49
  }
50
50
  });
51
51
  }
52
- for (const [key, val] of Object.entries(pathObject.params)) {
53
- if (!(typeof val === "undefined" || typeof val === "string" || typeof val === "number")) {
54
- logger.warn(
55
- "router",
56
- `getStaticPaths() returned an invalid path param: "${key}". A string, number or undefined value was expected, but got \`${JSON.stringify(
57
- val
58
- )}\`.`
59
- );
60
- }
61
- if (typeof val === "string" && val === "") {
62
- logger.warn(
63
- "router",
64
- `getStaticPaths() returned an invalid path param: "${key}". \`undefined\` expected for an optional param, but got empty string.`
65
- );
66
- }
67
- }
68
52
  });
69
53
  }
70
54
  export {