Home / Function/ vitePluginActions() — astro Function Reference

vitePluginActions() — astro Function Reference

Architecture documentation for the vitePluginActions() function in vite-plugin-actions.ts from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  c149abc4_3572_5d1a_b8c8_0d6c5d987c65["vitePluginActions()"]
  c764e5f3_4c84_7ed2_850a_416ea85094cd["vite-plugin-actions.ts"]
  c149abc4_3572_5d1a_b8c8_0d6c5d987c65 -->|defined in| c764e5f3_4c84_7ed2_850a_416ea85094cd
  style c149abc4_3572_5d1a_b8c8_0d6c5d987c65 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/astro/src/actions/vite-plugin-actions.ts lines 54–141

export function vitePluginActions({
	fs,
	settings,
}: {
	fs: typeof fsMod;
	settings: AstroSettings;
}): VitePlugin {
	let resolvedActionsId: string;

	return {
		name: VIRTUAL_MODULE_ID,
		enforce: 'pre',
		resolveId: {
			filter: {
				id: new RegExp(
					`^(${VIRTUAL_MODULE_ID}|${OPTIONS_VIRTUAL_MODULE_ID}|${ACTIONS_ENTRYPOINT_VIRTUAL_MODULE_ID})$`,
				),
			},
			async handler(id) {
				if (id === VIRTUAL_MODULE_ID) {
					return RESOLVED_VIRTUAL_MODULE_ID;
				}
				if (id === OPTIONS_VIRTUAL_MODULE_ID) {
					return RESOLVED_OPTIONS_VIRTUAL_MODULE_ID;
				}
				if (id === ACTIONS_ENTRYPOINT_VIRTUAL_MODULE_ID) {
					const resolvedModule = await this.resolve(
						`${decodeURI(new URL('actions', settings.config.srcDir).pathname)}`,
					);
					if (!resolvedModule) {
						return RESOLVED_NOOP_ENTRYPOINT_VIRTUAL_MODULE_ID;
					}
					resolvedActionsId = resolvedModule.id;
					return ACTIONS_RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID;
				}
			},
		},
		async configureServer(server) {
			const filePresentOnStartup = await isActionsFilePresent(fs, settings.config.srcDir);
			// Watch for the actions file to be created.
			async function watcherCallback() {
				const filePresent = await isActionsFilePresent(fs, settings.config.srcDir);
				if (filePresentOnStartup !== filePresent) {
					server.restart();
				}
			}
			server.watcher.on('add', watcherCallback);
			server.watcher.on('change', watcherCallback);
		},
		load: {
			filter: {
				id: new RegExp(
					`^(${RESOLVED_VIRTUAL_MODULE_ID}|${RESOLVED_NOOP_ENTRYPOINT_VIRTUAL_MODULE_ID}|${ACTIONS_RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID}|${RESOLVED_OPTIONS_VIRTUAL_MODULE_ID})$`,
				),
			},
			async handler(id) {
				if (id === RESOLVED_VIRTUAL_MODULE_ID) {
					if (this.environment.name === ASTRO_VITE_ENVIRONMENT_NAMES.client) {
						return {
							code: `export * from 'astro/actions/runtime/entrypoints/client.js';`,
						};
					}
					return {
						code: `export * from 'astro/actions/runtime/entrypoints/server.js';`,
					};
				}

				if (id === RESOLVED_NOOP_ENTRYPOINT_VIRTUAL_MODULE_ID) {
					return { code: 'export const server = {}' };
				}

				if (id === ACTIONS_RESOLVED_ENTRYPOINT_VIRTUAL_MODULE_ID) {
					return { code: `export { server } from ${JSON.stringify(resolvedActionsId)};` };
				}

				if (id === RESOLVED_OPTIONS_VIRTUAL_MODULE_ID) {
					return {
						code: `
						export const shouldAppendTrailingSlash = ${JSON.stringify(
							shouldAppendForwardSlash(settings.config.trailingSlash, settings.config.build.format),
						)};

Domain

Subdomains

Frequently Asked Questions

What does vitePluginActions() do?
vitePluginActions() is a function in the astro codebase, defined in packages/astro/src/actions/vite-plugin-actions.ts.
Where is vitePluginActions() defined?
vitePluginActions() is defined in packages/astro/src/actions/vite-plugin-actions.ts at line 54.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free