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
@@ -0,0 +1,91 @@
1
+ import { shouldAppendTrailingSlash } from "virtual:astro:actions/options";
2
+ import { internalFetchHeaders } from "virtual:astro:adapter-config/client";
3
+ import {
4
+ ActionError,
5
+ createActionsProxy,
6
+ createGetActionPath,
7
+ deserializeActionResult,
8
+ getActionPathFromString,
9
+ getActionQueryString
10
+ } from "../client.js";
11
+ import { ACTION_QUERY_PARAMS } from "../../consts.js";
12
+ import {
13
+ ActionError as ActionError2,
14
+ isActionError,
15
+ isInputError
16
+ } from "../client.js";
17
+ function defineAction() {
18
+ throw new Error("[astro:actions] `defineAction()` unexpectedly used on the client.");
19
+ }
20
+ function getActionContext() {
21
+ throw new Error("[astro:actions] `getActionContext()` unexpectedly used on the client.");
22
+ }
23
+ const getActionPath = createGetActionPath({
24
+ baseUrl: import.meta.env.BASE_URL,
25
+ shouldAppendTrailingSlash
26
+ });
27
+ const actions = createActionsProxy({
28
+ handleAction: async (param, path) => {
29
+ const headers = new Headers();
30
+ headers.set("Accept", "application/json");
31
+ for (const [key, value] of Object.entries(internalFetchHeaders)) {
32
+ headers.set(key, value);
33
+ }
34
+ let body = param;
35
+ if (!(body instanceof FormData)) {
36
+ try {
37
+ body = JSON.stringify(param);
38
+ } catch (e) {
39
+ throw new ActionError({
40
+ code: "BAD_REQUEST",
41
+ message: `Failed to serialize request body to JSON. Full error: ${e.message}`
42
+ });
43
+ }
44
+ if (body) {
45
+ headers.set("Content-Type", "application/json");
46
+ } else {
47
+ headers.set("Content-Length", "0");
48
+ }
49
+ }
50
+ const rawResult = await fetch(
51
+ getActionPathFromString({
52
+ baseUrl: import.meta.env.BASE_URL,
53
+ shouldAppendTrailingSlash,
54
+ path: getActionQueryString(path)
55
+ }),
56
+ {
57
+ method: "POST",
58
+ body,
59
+ headers
60
+ }
61
+ );
62
+ if (rawResult.status === 204) {
63
+ return deserializeActionResult({ type: "empty", status: 204 });
64
+ }
65
+ const bodyText = await rawResult.text();
66
+ if (rawResult.ok) {
67
+ return deserializeActionResult({
68
+ type: "data",
69
+ body: bodyText,
70
+ status: 200,
71
+ contentType: "application/json+devalue"
72
+ });
73
+ }
74
+ return deserializeActionResult({
75
+ type: "error",
76
+ body: bodyText,
77
+ status: rawResult.status,
78
+ contentType: "application/json"
79
+ });
80
+ }
81
+ });
82
+ export {
83
+ ACTION_QUERY_PARAMS,
84
+ ActionError2 as ActionError,
85
+ actions,
86
+ defineAction,
87
+ getActionContext,
88
+ getActionPath,
89
+ isActionError,
90
+ isInputError
91
+ };
@@ -0,0 +1,2 @@
1
+ import type { APIRoute } from '../../../types/public/common.js';
2
+ export declare const POST: APIRoute;
@@ -1,4 +1,4 @@
1
- import { getActionContext } from "./server.js";
1
+ import { getActionContext } from "../server.js";
2
2
  const POST = async (context) => {
3
3
  const { action, serializeActionResult } = getActionContext(context);
4
4
  if (action?.calledFrom !== "rpc") {
@@ -0,0 +1,6 @@
1
+ export { ACTION_QUERY_PARAMS } from '../../consts.js';
2
+ export { ActionError, isActionError, isInputError } from '../client.js';
3
+ export { defineAction, getActionContext } from '../server.js';
4
+ export type { ActionAPIContext, ActionClient, ActionErrorCode, ActionInputSchema, ActionReturnType, SafeResult, } from '../types.js';
5
+ export declare const getActionPath: (action: import("../types.js").ActionClient<any, any, any>) => string;
6
+ export declare const actions: Record<string | symbol, any>;
@@ -0,0 +1,33 @@
1
+ import { pipelineSymbol } from "../../../core/constants.js";
2
+ import { ActionCalledFromServerError } from "../../../core/errors/errors-data.js";
3
+ import { AstroError } from "../../../core/errors/errors.js";
4
+ import { createGetActionPath, createActionsProxy } from "../client.js";
5
+ import { shouldAppendTrailingSlash } from "virtual:astro:actions/options";
6
+ import { ACTION_QUERY_PARAMS } from "../../consts.js";
7
+ import { ActionError, isActionError, isInputError } from "../client.js";
8
+ import { defineAction, getActionContext } from "../server.js";
9
+ const getActionPath = createGetActionPath({
10
+ baseUrl: import.meta.env.BASE_URL,
11
+ shouldAppendTrailingSlash
12
+ });
13
+ const actions = createActionsProxy({
14
+ handleAction: async (param, path, context) => {
15
+ const pipeline = context ? Reflect.get(context, pipelineSymbol) : void 0;
16
+ if (!pipeline) {
17
+ throw new AstroError(ActionCalledFromServerError);
18
+ }
19
+ const action = await pipeline.getAction(path);
20
+ if (!action) throw new Error(`Action not found: ${path}`);
21
+ return action.bind(context)(param);
22
+ }
23
+ });
24
+ export {
25
+ ACTION_QUERY_PARAMS,
26
+ ActionError,
27
+ actions,
28
+ defineAction,
29
+ getActionContext,
30
+ getActionPath,
31
+ isActionError,
32
+ isInputError
33
+ };
@@ -1,36 +1,13 @@
1
- import { z } from 'zod';
1
+ import * as z from 'zod/v4/core';
2
2
  import type { APIContext } from '../../types/public/index.js';
3
- import { deserializeActionResult, type SafeResult, type SerializedActionResult, serializeActionResult } from './shared.js';
4
- import { type ActionAPIContext, type ErrorInferenceObject, type MaybePromise } from './utils.js';
5
- export * from './shared.js';
6
- export type ActionAccept = 'form' | 'json';
7
- export type ActionHandler<TInputSchema, TOutput> = TInputSchema extends z.ZodType ? (input: z.infer<TInputSchema>, context: ActionAPIContext) => MaybePromise<TOutput> : (input: any, context: ActionAPIContext) => MaybePromise<TOutput>;
8
- export type ActionReturnType<T extends ActionHandler<any, any>> = Awaited<ReturnType<T>>;
9
- export type InferKey = '__internalInfer';
10
- /**
11
- * Infers the type of an action's input based on its Zod schema
12
- *
13
- * @see https://docs.astro.build/en/reference/modules/astro-actions/#actioninputschema
14
- */
15
- export type ActionInputSchema<T extends ActionClient<any, any, any>> = T extends {
16
- [key in InferKey]: any;
17
- } ? T[InferKey] : never;
18
- export type ActionClient<TOutput, TAccept extends ActionAccept | undefined, TInputSchema extends z.ZodType | undefined> = TInputSchema extends z.ZodType ? ((input: TAccept extends 'form' ? FormData : z.input<TInputSchema>) => Promise<SafeResult<z.input<TInputSchema> extends ErrorInferenceObject ? z.input<TInputSchema> : ErrorInferenceObject, Awaited<TOutput>>>) & {
19
- queryString: string;
20
- orThrow: (input: TAccept extends 'form' ? FormData : z.input<TInputSchema>) => Promise<Awaited<TOutput>>;
21
- } & {
22
- [key in InferKey]: TInputSchema;
23
- } : ((input?: any) => Promise<SafeResult<never, Awaited<TOutput>>>) & {
24
- orThrow: (input?: any) => Promise<Awaited<TOutput>>;
25
- };
26
- export declare function defineAction<TOutput, TAccept extends ActionAccept | undefined = undefined, TInputSchema extends z.ZodType | undefined = TAccept extends 'form' ? z.ZodType<FormData> : undefined>({ accept, input: inputSchema, handler, }: {
3
+ import { deserializeActionResult } from './client.js';
4
+ import type { ActionAccept, ActionClient, ActionHandler, SafeResult, SerializedActionResult } from './types.js';
5
+ export declare function defineAction<TOutput, TAccept extends ActionAccept | undefined = undefined, TInputSchema extends z.$ZodType | undefined = TAccept extends 'form' ? z.$ZodType<FormData> : undefined>({ accept, input: inputSchema, handler, }: {
27
6
  input?: TInputSchema;
28
7
  accept?: TAccept;
29
8
  handler: ActionHandler<TInputSchema, TOutput>;
30
9
  }): ActionClient<TOutput, TAccept, TInputSchema> & string;
31
- /** Transform form data to an object based on a Zod schema. */
32
- export declare function formDataToObject<T extends z.AnyZodObject>(formData: FormData, schema: T): Record<string, unknown>;
33
- export type AstroActionContext = {
10
+ interface AstroActionContext {
34
11
  /** Information about an incoming action request. */
35
12
  action?: {
36
13
  /** Whether an action was called using an RPC function or by using an HTML form action. */
@@ -54,8 +31,13 @@ export type AstroActionContext = {
54
31
  * Deserialize an action result to access data and error objects.
55
32
  */
56
33
  deserializeActionResult: typeof deserializeActionResult;
57
- };
34
+ }
58
35
  /**
59
36
  * Access information about Action requests from middleware.
60
37
  */
61
38
  export declare function getActionContext(context: APIContext): AstroActionContext;
39
+ export declare const ACTION_API_CONTEXT_SYMBOL: unique symbol;
40
+ /** Transform form data to an object based on a Zod schema. */
41
+ export declare function formDataToObject<T extends z.$ZodObject>(formData: FormData, schema: T): Record<string, unknown>;
42
+ export declare function serializeActionResult(res: SafeResult<any, any>): SerializedActionResult;
43
+ export {};
@@ -1,25 +1,21 @@
1
- import { z } from "zod";
1
+ import { stringify as devalueStringify } from "devalue";
2
+ import * as z from "zod/v4/core";
2
3
  import { shouldAppendForwardSlash } from "../../core/build/util.js";
4
+ import { pipelineSymbol, REDIRECT_STATUS_CODES } from "../../core/constants.js";
5
+ import {
6
+ ActionCalledFromServerError,
7
+ ActionNotFoundError,
8
+ ActionsReturnedInvalidDataError
9
+ } from "../../core/errors/errors-data.js";
3
10
  import { AstroError } from "../../core/errors/errors.js";
4
- import { ActionCalledFromServerError, ActionNotFoundError } from "../../core/errors/errors-data.js";
5
11
  import { removeTrailingForwardSlash } from "../../core/path.js";
6
- import { apiContextRoutesSymbol } from "../../core/render-context.js";
7
- import { ACTION_RPC_ROUTE_PATTERN } from "../consts.js";
12
+ import { ACTION_QUERY_PARAMS, ACTION_RPC_ROUTE_PATTERN } from "../consts.js";
8
13
  import {
9
- ACTION_QUERY_PARAMS,
10
14
  ActionError,
11
15
  ActionInputError,
12
- callSafely,
13
- deserializeActionResult,
14
- serializeActionResult
15
- } from "./shared.js";
16
- import {
17
- ACTION_API_CONTEXT_SYMBOL,
18
- formContentTypes,
19
- hasContentType,
20
- isActionAPIContext
21
- } from "./utils.js";
22
- export * from "./shared.js";
16
+ actionResultErrorStack,
17
+ deserializeActionResult
18
+ } from "./client.js";
23
19
  function defineAction({
24
20
  accept,
25
21
  input: inputSchema,
@@ -51,16 +47,19 @@ function getFormServerHandler(handler, inputSchema) {
51
47
  });
52
48
  }
53
49
  if (!inputSchema) return await handler(unparsedInput, context);
54
- const baseSchema = unwrapBaseObjectSchema(inputSchema, unparsedInput);
55
- const parsed = await inputSchema.safeParseAsync(
56
- baseSchema instanceof z.ZodObject ? formDataToObject(unparsedInput, baseSchema) : unparsedInput
57
- );
50
+ const parsed = await parseFormInput(inputSchema, unparsedInput);
58
51
  if (!parsed.success) {
59
52
  throw new ActionInputError(parsed.error.issues);
60
53
  }
61
54
  return await handler(parsed.data, context);
62
55
  };
63
56
  }
57
+ async function parseFormInput(inputSchema, unparsedInput) {
58
+ const baseSchema = unwrapBaseZ4ObjectSchema(inputSchema, unparsedInput);
59
+ const input = baseSchema instanceof z.$ZodObject ? formDataToObject(unparsedInput, baseSchema) : unparsedInput;
60
+ const parsed = await z.safeParseAsync(inputSchema, input);
61
+ return parsed;
62
+ }
64
63
  function getJsonServerHandler(handler, inputSchema) {
65
64
  return async (unparsedInput, context) => {
66
65
  if (unparsedInput instanceof FormData) {
@@ -70,72 +69,13 @@ function getJsonServerHandler(handler, inputSchema) {
70
69
  });
71
70
  }
72
71
  if (!inputSchema) return await handler(unparsedInput, context);
73
- const parsed = await inputSchema.safeParseAsync(unparsedInput);
72
+ const parsed = await z.safeParseAsync(inputSchema, unparsedInput);
74
73
  if (!parsed.success) {
75
74
  throw new ActionInputError(parsed.error.issues);
76
75
  }
77
76
  return await handler(parsed.data, context);
78
77
  };
79
78
  }
80
- function formDataToObject(formData, schema) {
81
- const obj = schema._def.unknownKeys === "passthrough" ? Object.fromEntries(formData.entries()) : {};
82
- for (const [key, baseValidator] of Object.entries(schema.shape)) {
83
- let validator = baseValidator;
84
- while (validator instanceof z.ZodOptional || validator instanceof z.ZodNullable || validator instanceof z.ZodDefault) {
85
- if (validator instanceof z.ZodDefault && !formData.has(key)) {
86
- obj[key] = validator._def.defaultValue();
87
- }
88
- validator = validator._def.innerType;
89
- }
90
- if (!formData.has(key) && key in obj) {
91
- continue;
92
- } else if (validator instanceof z.ZodBoolean) {
93
- const val = formData.get(key);
94
- obj[key] = val === "true" ? true : val === "false" ? false : formData.has(key);
95
- } else if (validator instanceof z.ZodArray) {
96
- obj[key] = handleFormDataGetAll(key, formData, validator);
97
- } else {
98
- obj[key] = handleFormDataGet(key, formData, validator, baseValidator);
99
- }
100
- }
101
- return obj;
102
- }
103
- function handleFormDataGetAll(key, formData, validator) {
104
- const entries = Array.from(formData.getAll(key));
105
- const elementValidator = validator._def.type;
106
- if (elementValidator instanceof z.ZodNumber) {
107
- return entries.map(Number);
108
- } else if (elementValidator instanceof z.ZodBoolean) {
109
- return entries.map(Boolean);
110
- }
111
- return entries;
112
- }
113
- function handleFormDataGet(key, formData, validator, baseValidator) {
114
- const value = formData.get(key);
115
- if (!value) {
116
- return baseValidator instanceof z.ZodOptional ? void 0 : null;
117
- }
118
- return validator instanceof z.ZodNumber ? Number(value) : value;
119
- }
120
- function unwrapBaseObjectSchema(schema, unparsedInput) {
121
- while (schema instanceof z.ZodEffects || schema instanceof z.ZodPipeline) {
122
- if (schema instanceof z.ZodEffects) {
123
- schema = schema._def.schema;
124
- }
125
- if (schema instanceof z.ZodPipeline) {
126
- schema = schema._def.in;
127
- }
128
- }
129
- if (schema instanceof z.ZodDiscriminatedUnion) {
130
- const typeKey = schema._def.discriminator;
131
- const typeValue = unparsedInput.get(typeKey);
132
- if (typeof typeValue !== "string") return schema;
133
- const objSchema = schema._def.optionsMap.get(typeValue);
134
- if (!objSchema) return schema;
135
- return objSchema;
136
- }
137
- return schema;
138
- }
139
79
  function getActionContext(context) {
140
80
  const callerInfo = getCallerInfo(context);
141
81
  const actionResultAlreadySet = Boolean(context.locals._actionPayload);
@@ -145,7 +85,7 @@ function getActionContext(context) {
145
85
  calledFrom: callerInfo.from,
146
86
  name: callerInfo.name,
147
87
  handler: async () => {
148
- const pipeline = Reflect.get(context, apiContextRoutesSymbol);
88
+ const pipeline = Reflect.get(context, pipelineSymbol);
149
89
  const callerInfoName = shouldAppendForwardSlash(
150
90
  pipeline.manifest.trailingSlash,
151
91
  pipeline.manifest.buildFormat
@@ -218,8 +158,148 @@ async function parseRequestBody(request) {
218
158
  }
219
159
  throw new TypeError("Unsupported content type");
220
160
  }
161
+ const ACTION_API_CONTEXT_SYMBOL = Symbol.for("astro.actionAPIContext");
162
+ const formContentTypes = ["application/x-www-form-urlencoded", "multipart/form-data"];
163
+ function hasContentType(contentType, expected) {
164
+ const type = contentType.split(";")[0].toLowerCase();
165
+ return expected.some((t) => type === t);
166
+ }
167
+ function isActionAPIContext(ctx) {
168
+ const symbol = Reflect.get(ctx, ACTION_API_CONTEXT_SYMBOL);
169
+ return symbol === true;
170
+ }
171
+ function formDataToObject(formData, schema) {
172
+ const obj = schema._zod.def.catchall ? Object.fromEntries(formData.entries()) : {};
173
+ for (const [key, baseValidator] of Object.entries(schema._zod.def.shape)) {
174
+ let validator = baseValidator;
175
+ while (validator instanceof z.$ZodOptional || validator instanceof z.$ZodNullable || validator instanceof z.$ZodDefault) {
176
+ if (validator instanceof z.$ZodDefault && !formData.has(key)) {
177
+ obj[key] = validator._zod.def.defaultValue instanceof Function ? validator._zod.def.defaultValue() : validator._zod.def.defaultValue;
178
+ }
179
+ validator = validator._zod.def.innerType;
180
+ }
181
+ if (!formData.has(key) && key in obj) {
182
+ continue;
183
+ } else if (validator instanceof z.$ZodBoolean) {
184
+ const val = formData.get(key);
185
+ obj[key] = val === "true" ? true : val === "false" ? false : formData.has(key);
186
+ } else if (validator instanceof z.$ZodArray) {
187
+ obj[key] = handleFormDataGetAll(key, formData, validator);
188
+ } else {
189
+ obj[key] = handleFormDataGet(key, formData, validator, baseValidator);
190
+ }
191
+ }
192
+ return obj;
193
+ }
194
+ function handleFormDataGetAll(key, formData, validator) {
195
+ const entries = Array.from(formData.getAll(key));
196
+ const elementValidator = validator._zod.def.element;
197
+ if (elementValidator instanceof z.$ZodNumber) {
198
+ return entries.map(Number);
199
+ } else if (elementValidator instanceof z.$ZodBoolean) {
200
+ return entries.map(Boolean);
201
+ }
202
+ return entries;
203
+ }
204
+ function handleFormDataGet(key, formData, validator, baseValidator) {
205
+ const value = formData.get(key);
206
+ if (!value) {
207
+ return baseValidator instanceof z.$ZodOptional ? void 0 : null;
208
+ }
209
+ return validator instanceof z.$ZodNumber ? Number(value) : value;
210
+ }
211
+ function unwrapBaseZ4ObjectSchema(schema, unparsedInput) {
212
+ if (schema instanceof z.$ZodPipe) {
213
+ return unwrapBaseZ4ObjectSchema(schema._zod.def.in, unparsedInput);
214
+ }
215
+ if (schema instanceof z.$ZodDiscriminatedUnion) {
216
+ const typeKey = schema._zod.def.discriminator;
217
+ const typeValue = unparsedInput.get(typeKey);
218
+ if (typeof typeValue !== "string") return schema;
219
+ const objSchema = schema._zod.def.options.find(
220
+ (option) => option.def.shape[typeKey].values.has(typeValue)
221
+ );
222
+ if (!objSchema) return schema;
223
+ return objSchema;
224
+ }
225
+ return schema;
226
+ }
227
+ async function callSafely(handler) {
228
+ try {
229
+ const data = await handler();
230
+ return { data, error: void 0 };
231
+ } catch (e) {
232
+ if (e instanceof ActionError) {
233
+ return { data: void 0, error: e };
234
+ }
235
+ return {
236
+ data: void 0,
237
+ error: new ActionError({
238
+ message: e instanceof Error ? e.message : "Unknown error",
239
+ code: "INTERNAL_SERVER_ERROR"
240
+ })
241
+ };
242
+ }
243
+ }
244
+ function serializeActionResult(res) {
245
+ if (res.error) {
246
+ if (import.meta.env?.DEV) {
247
+ actionResultErrorStack.set(res.error.stack);
248
+ }
249
+ let body2;
250
+ if (res.error instanceof ActionInputError) {
251
+ body2 = {
252
+ type: res.error.type,
253
+ issues: res.error.issues,
254
+ fields: res.error.fields
255
+ };
256
+ } else {
257
+ body2 = {
258
+ ...res.error,
259
+ message: res.error.message
260
+ };
261
+ }
262
+ return {
263
+ type: "error",
264
+ status: res.error.status,
265
+ contentType: "application/json",
266
+ body: JSON.stringify(body2)
267
+ };
268
+ }
269
+ if (res.data === void 0) {
270
+ return {
271
+ type: "empty",
272
+ status: 204
273
+ };
274
+ }
275
+ let body;
276
+ try {
277
+ body = devalueStringify(res.data, {
278
+ // Add support for URL objects
279
+ URL: (value) => value instanceof URL && value.href
280
+ });
281
+ } catch (e) {
282
+ let hint = ActionsReturnedInvalidDataError.hint;
283
+ if (res.data instanceof Response) {
284
+ hint = REDIRECT_STATUS_CODES.includes(res.data.status) ? "If you need to redirect when the action succeeds, trigger a redirect where the action is called. See the Actions guide for server and client redirect examples: https://docs.astro.build/en/guides/actions." : "If you need to return a Response object, try using a server endpoint instead. See https://docs.astro.build/en/guides/endpoints/#server-endpoints-api-routes";
285
+ }
286
+ throw new AstroError({
287
+ ...ActionsReturnedInvalidDataError,
288
+ message: ActionsReturnedInvalidDataError.message(String(e)),
289
+ hint
290
+ });
291
+ }
292
+ return {
293
+ type: "data",
294
+ status: 200,
295
+ contentType: "application/json+devalue",
296
+ body
297
+ };
298
+ }
221
299
  export {
300
+ ACTION_API_CONTEXT_SYMBOL,
222
301
  defineAction,
223
302
  formDataToObject,
224
- getActionContext
303
+ getActionContext,
304
+ serializeActionResult
225
305
  };
@@ -0,0 +1,64 @@
1
+ import type * as z from 'zod/v4/core';
2
+ import type { APIContext } from '../../types/public/index.js';
3
+ import type { ActionError, codeToStatusMap } from './client.js';
4
+ export type ActionErrorCode = keyof typeof codeToStatusMap;
5
+ export type ActionAccept = 'form' | 'json';
6
+ export type ActionHandler<TInputSchema, TOutput> = TInputSchema extends z.$ZodType ? (input: z.infer<TInputSchema>, context: ActionAPIContext) => MaybePromise<TOutput> : (input: any, context: ActionAPIContext) => MaybePromise<TOutput>;
7
+ export type ActionReturnType<T extends ActionHandler<any, any>> = Awaited<ReturnType<T>>;
8
+ type InferKey = '__internalInfer';
9
+ /**
10
+ * Infers the type of an action's input based on its Zod schema
11
+ *
12
+ * @see https://docs.astro.build/en/reference/modules/astro-actions/#actioninputschema
13
+ */
14
+ export type ActionInputSchema<T extends ActionClient<any, any, any>> = T extends {
15
+ [key in InferKey]: any;
16
+ } ? T[InferKey] : never;
17
+ export type ActionClient<TOutput, TAccept extends ActionAccept | undefined, TInputSchema extends z.$ZodType | undefined> = TInputSchema extends z.$ZodType ? ((input: TAccept extends 'form' ? FormData : z.input<TInputSchema>) => Promise<SafeResult<z.input<TInputSchema> extends ErrorInferenceObject ? z.input<TInputSchema> : ErrorInferenceObject, Awaited<TOutput>>>) & {
18
+ queryString: string;
19
+ orThrow: (input: TAccept extends 'form' ? FormData : z.input<TInputSchema>) => Promise<Awaited<TOutput>>;
20
+ } & {
21
+ [key in InferKey]: TInputSchema;
22
+ } : ((input?: any) => Promise<SafeResult<never, Awaited<TOutput>>>) & {
23
+ orThrow: (input?: any) => Promise<Awaited<TOutput>>;
24
+ };
25
+ export type SafeResult<TInput extends ErrorInferenceObject, TOutput> = {
26
+ data: TOutput;
27
+ error: undefined;
28
+ } | {
29
+ data: undefined;
30
+ error: ActionError<TInput>;
31
+ };
32
+ export type SerializedActionResult = {
33
+ type: 'data';
34
+ contentType: 'application/json+devalue';
35
+ status: 200;
36
+ body: string;
37
+ } | {
38
+ type: 'error';
39
+ contentType: 'application/json';
40
+ status: number;
41
+ body: string;
42
+ } | {
43
+ type: 'empty';
44
+ status: 204;
45
+ };
46
+ export interface ActionsLocals {
47
+ _actionPayload: {
48
+ actionResult: SerializedActionResult;
49
+ actionName: string;
50
+ };
51
+ }
52
+ export type ActionAPIContext = Pick<APIContext, 'request' | 'url' | 'isPrerendered' | 'locals' | 'clientAddress' | 'cookies' | 'currentLocale' | 'generator' | 'routePattern' | 'site' | 'params' | 'preferredLocale' | 'preferredLocaleList' | 'originPathname' | 'session' | 'csp'>;
53
+ export type MaybePromise<T> = T | Promise<T>;
54
+ /**
55
+ * Used to preserve the input schema type in the error object.
56
+ * This allows for type inference on the `fields` property
57
+ * when type narrowed to an `ActionInputError`.
58
+ *
59
+ * Example: Action has an input schema of `{ name: z.string() }`.
60
+ * When calling the action and checking `isInputError(result.error)`,
61
+ * `result.error.fields` will be typed with the `name` field.
62
+ */
63
+ export type ErrorInferenceObject = Record<string, any>;
64
+ export {};
File without changes
@@ -1,7 +1,7 @@
1
1
  import type fsMod from 'node:fs';
2
2
  import type { APIContext } from '../types/public/context.js';
3
- import { type ActionAPIContext, type Locals } from './runtime/utils.js';
4
- export declare function hasActionPayload(locals: APIContext['locals']): locals is Locals;
3
+ import type { ActionAPIContext, ActionsLocals } from './runtime/types.js';
4
+ export declare function hasActionPayload(locals: APIContext['locals']): locals is ActionsLocals;
5
5
  export declare function createGetActionResult(locals: APIContext['locals']): APIContext['getActionResult'];
6
6
  export declare function createCallAction(context: ActionAPIContext): APIContext['callAction'];
7
7
  /**
@@ -1,6 +1,6 @@
1
1
  import * as eslexer from "es-module-lexer";
2
- import { deserializeActionResult, getActionQueryString } from "./runtime/shared.js";
3
- import { ACTION_API_CONTEXT_SYMBOL } from "./runtime/utils.js";
2
+ import { deserializeActionResult, getActionQueryString } from "./runtime/client.js";
3
+ import { ACTION_API_CONTEXT_SYMBOL } from "./runtime/server.js";
4
4
  function hasActionPayload(locals) {
5
5
  return "_actionPayload" in locals;
6
6
  }
@@ -1,27 +1,25 @@
1
- import { addRollupInput } from "../core/build/add-rollup-input.js";
2
1
  import { shouldAppendForwardSlash } from "../core/build/util.js";
3
2
  import { getServerOutputDirectory } from "../prerender/utils.js";
4
3
  import {
5
- ENTRYPOINT_VIRTUAL_MODULE_ID,
4
+ ACTIONS_ENTRYPOINT_VIRTUAL_MODULE_ID,
5
+ ACTIONS_RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID,
6
6
  OPTIONS_VIRTUAL_MODULE_ID,
7
- RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID,
8
7
  RESOLVED_NOOP_ENTRYPOINT_VIRTUAL_MODULE_ID,
9
8
  RESOLVED_OPTIONS_VIRTUAL_MODULE_ID,
10
- RESOLVED_RUNTIME_VIRTUAL_MODULE_ID,
11
9
  RESOLVED_VIRTUAL_MODULE_ID,
12
- RUNTIME_VIRTUAL_MODULE_ID,
13
10
  VIRTUAL_MODULE_ID
14
11
  } from "./consts.js";
15
12
  import { isActionsFilePresent } from "./utils.js";
13
+ import { ASTRO_VITE_ENVIRONMENT_NAMES } from "../core/constants.js";
16
14
  function vitePluginActionsBuild(opts, internals) {
17
15
  return {
18
16
  name: "@astro/plugin-actions-build",
19
- options(options) {
20
- return addRollupInput(options, [ENTRYPOINT_VIRTUAL_MODULE_ID]);
17
+ applyToEnvironment(environment) {
18
+ return environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.ssr || environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.prerender || environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.astro;
21
19
  },
22
20
  writeBundle(_, bundle) {
23
21
  for (const [chunkName, chunk] of Object.entries(bundle)) {
24
- if (chunk.type !== "asset" && chunk.facadeModuleId === RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID) {
22
+ if (chunk.type !== "asset" && chunk.facadeModuleId === ACTIONS_RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID) {
25
23
  const outputDirectory = getServerOutputDirectory(opts.settings);
26
24
  internals.astroActionsEntryPoint = new URL(chunkName, outputDirectory);
27
25
  }
@@ -41,13 +39,10 @@ function vitePluginActions({
41
39
  if (id === VIRTUAL_MODULE_ID) {
42
40
  return RESOLVED_VIRTUAL_MODULE_ID;
43
41
  }
44
- if (id === RUNTIME_VIRTUAL_MODULE_ID) {
45
- return RESOLVED_RUNTIME_VIRTUAL_MODULE_ID;
46
- }
47
42
  if (id === OPTIONS_VIRTUAL_MODULE_ID) {
48
43
  return RESOLVED_OPTIONS_VIRTUAL_MODULE_ID;
49
44
  }
50
- if (id === ENTRYPOINT_VIRTUAL_MODULE_ID) {
45
+ if (id === ACTIONS_ENTRYPOINT_VIRTUAL_MODULE_ID) {
51
46
  const resolvedModule = await this.resolve(
52
47
  `${decodeURI(new URL("actions", settings.config.srcDir).pathname)}`
53
48
  );
@@ -55,7 +50,7 @@ function vitePluginActions({
55
50
  return RESOLVED_NOOP_ENTRYPOINT_VIRTUAL_MODULE_ID;
56
51
  }
57
52
  resolvedActionsId = resolvedModule.id;
58
- return RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID;
53
+ return ACTIONS_RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID;
59
54
  }
60
55
  },
61
56
  async configureServer(server) {
@@ -69,21 +64,23 @@ function vitePluginActions({
69
64
  server.watcher.on("add", watcherCallback);
70
65
  server.watcher.on("change", watcherCallback);
71
66
  },
72
- async load(id, opts) {
67
+ async load(id) {
73
68
  if (id === RESOLVED_VIRTUAL_MODULE_ID) {
74
- return { code: `export * from 'astro/actions/runtime/virtual.js';` };
69
+ if (this.environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.client) {
70
+ return {
71
+ code: `export * from 'astro/actions/runtime/entrypoints/client.js';`
72
+ };
73
+ }
74
+ return {
75
+ code: `export * from 'astro/actions/runtime/entrypoints/server.js';`
76
+ };
75
77
  }
76
78
  if (id === RESOLVED_NOOP_ENTRYPOINT_VIRTUAL_MODULE_ID) {
77
79
  return { code: "export const server = {}" };
78
80
  }
79
- if (id === RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID) {
81
+ if (id === ACTIONS_RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID) {
80
82
  return { code: `export { server } from ${JSON.stringify(resolvedActionsId)};` };
81
83
  }
82
- if (id === RESOLVED_RUNTIME_VIRTUAL_MODULE_ID) {
83
- return {
84
- code: `export * from 'astro/actions/runtime/${opts?.ssr ? "server" : "client"}.js';`
85
- };
86
- }
87
84
  if (id === RESOLVED_OPTIONS_VIRTUAL_MODULE_ID) {
88
85
  return {
89
86
  code: `