import { AstroError } from "../core/errors/errors.js"; import { ActionsWithoutServerOutputError } from "../core/errors/errors-data.js"; import { hasNonPrerenderedRoute } from "../core/routing/helpers.js"; import { viteID } from "../core/util.js"; import { ACTION_RPC_ROUTE_PATTERN, ACTIONS_TYPES_FILE, VIRTUAL_MODULE_ID } from "./consts.js"; function astroIntegrationActionsRouteHandler({ settings, filename }) { return { name: VIRTUAL_MODULE_ID, hooks: { async "astro:config:setup"() { settings.injectedRoutes.push({ pattern: ACTION_RPC_ROUTE_PATTERN, entrypoint: "astro/actions/runtime/entrypoints/route.js", prerender: false, origin: "internal" }); }, "astro:config:done": async (params) => { const stringifiedActionsImport = JSON.stringify( viteID(new URL(`./${filename}`, params.config.srcDir)) ); settings.injectedTypes.push({ filename: ACTIONS_TYPES_FILE, content: `declare module "astro:actions" { export const actions: typeof import(${stringifiedActionsImport})["server"]; }` }); }, "astro:routes:resolved": ({ routes }) => { if (!settings.config.adapter && !hasNonPrerenderedRoute(routes)) { const error = new AstroError(ActionsWithoutServerOutputError); error.stack = void 0; throw error; } } } }; } export { astroIntegrationActionsRouteHandler as default };