Home / File/ index.ts — astro Source File

index.ts — astro Source File

Architecture documentation for index.ts, a typescript file in the astro codebase. 2 imports, 0 dependents.

Entity Profile

Dependency Diagram

graph LR
  76f011f1_a2d3_4582_43a6_a49689b75157["index.ts"]
  ecbf8c7e_1e7c_bbc1_bb90_f11927786610["../types/astro.js"]
  76f011f1_a2d3_4582_43a6_a49689b75157 --> ecbf8c7e_1e7c_bbc1_bb90_f11927786610
  c37acbe0_a1f7_8d3e_adac_72ec13ae7735["vite"]
  76f011f1_a2d3_4582_43a6_a49689b75157 --> c37acbe0_a1f7_8d3e_adac_72ec13ae7735
  style 76f011f1_a2d3_4582_43a6_a49689b75157 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { Plugin as VitePlugin } from 'vite';
import type { AstroSettings } from '../types/astro.js';

export const ASTRO_RENDERERS_MODULE_ID = 'virtual:astro:renderers';
const RESOLVED_ASTRO_RENDERERS_MODULE_ID = `\0${ASTRO_RENDERERS_MODULE_ID}`;

interface PluginOptions {
	settings: AstroSettings;
}

export default function vitePluginRenderers(options: PluginOptions): VitePlugin {
	const renderers = options.settings.renderers;

	return {
		name: 'astro:plugin-renderers',
		enforce: 'pre',

		resolveId: {
			filter: {
				id: new RegExp(`^${ASTRO_RENDERERS_MODULE_ID}$`),
			},
			handler() {
				return RESOLVED_ASTRO_RENDERERS_MODULE_ID;
			},
		},

		load: {
			filter: {
				id: new RegExp(`^${RESOLVED_ASTRO_RENDERERS_MODULE_ID}$`),
			},
			handler() {
				if (renderers.length > 0) {
					const imports: string[] = [];
					const exports: string[] = [];
					let i = 0;
					let rendererItems = '';

					for (const renderer of renderers) {
						const variable = `_renderer${i}`;
						imports.push(`import ${variable} from ${JSON.stringify(renderer.serverEntrypoint)};`);
						rendererItems += `Object.assign(${JSON.stringify(renderer)}, { ssr: ${variable} }),`;
						i++;
					}

					exports.push(`export const renderers = [${rendererItems}];`);

					return { code: `${imports.join('\n')}\n${exports.join('\n')}` };
				}
				return { code: `export const renderers = [];` };
			},
		},
	};
}

Subdomains

Dependencies

  • ../types/astro.js
  • vite

Frequently Asked Questions

What does index.ts do?
index.ts is a source file in the astro codebase, written in typescript. It belongs to the MultiFrameworkAdapters domain, AstroRenderer subdomain.
What functions are defined in index.ts?
index.ts defines 1 function(s): vitePluginRenderers.
What does index.ts depend on?
index.ts imports 2 module(s): ../types/astro.js, vite.
Where is index.ts in the architecture?
index.ts is located at packages/astro/src/vite-plugin-renderers/index.ts (domain: MultiFrameworkAdapters, subdomain: AstroRenderer, directory: packages/astro/src/vite-plugin-renderers).

Analyze Your Own Codebase

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

Try Supermodel Free