Home / File/ vite.ts — astro Source File

vite.ts — astro Source File

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

File typescript CoreAstro CoreMiddleware 10 imports 4 functions

Entity Profile

Dependency Diagram

graph LR
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b["vite.ts"]
  10d4e39f_edb6_3e34_aa93_ae1211e7da05["../types/public/internal.js"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> 10d4e39f_edb6_3e34_aa93_ae1211e7da05
  32f8c7d4_d66e_e0cf_b019_46ec3f2fea31["../core/module-loader/index.js"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> 32f8c7d4_d66e_e0cf_b019_46ec3f2fea31
  dd6187d6_53c4_ce90_a1d1_3a0b5e7e7d3f["../../core/errors/errors.js"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> dd6187d6_53c4_ce90_a1d1_3a0b5e7e7d3f
  8df634da_0f30_1e1f_1314_2439b0c9baab["../core/errors/errors-data.js"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> 8df634da_0f30_1e1f_1314_2439b0c9baab
  91e2aae7_9271_3bbb_4d0e_63fd50e547d0["./utils.js"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> 91e2aae7_9271_3bbb_4d0e_63fd50e547d0
  a3b7cd6b_b8c4_2fd6_1aee_ff353dd9b119["./runtime.js"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> a3b7cd6b_b8c4_2fd6_1aee_ff353dd9b119
  e16a223b_37f3_6b25_1ee1_2b7bcb9d9415["node:fs"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> e16a223b_37f3_6b25_1ee1_2b7bcb9d9415
  d9a92db9_c95e_9165_13ac_24b3d859d946["node:url"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> d9a92db9_c95e_9165_13ac_24b3d859d946
  0302dbcf_dad6_6bb1_3d2f_5c90fa9a96d4["shiki"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> 0302dbcf_dad6_6bb1_3d2f_5c90fa9a96d4
  263e522e_1aa5_ebc3_e7d6_45ebc51671f7["vite"]
  35a0af3d_ab30_11cd_b3ee_bae2c089e53b --> 263e522e_1aa5_ebc3_e7d6_45ebc51671f7
  style 35a0af3d_ab30_11cd_b3ee_bae2c089e53b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import * as fs from 'node:fs';
import { fileURLToPath } from 'node:url';
import type { ShikiTransformer } from 'shiki';
import { codeToHtml, createCssVariablesTheme } from 'shiki';
import type { ErrorPayload } from 'vite';
import type { SSRLoadedRenderer } from '../../../types/public/internal.js';
import type { ModuleLoader } from '../../module-loader/index.js';
import { AstroError, type ErrorWithMetadata } from '../errors.js';
import { FailedToLoadModuleSSR, MdxIntegrationMissingError } from '../errors-data.js';
import { createSafeError } from '../utils.js';
import { getDocsForError, renderErrorMarkdown } from './runtime.js';

export function enhanceViteSSRError({
	error,
	filePath,
	loader,
	renderers,
}: {
	error: unknown;
	filePath?: URL;
	loader?: ModuleLoader;
	renderers?: SSRLoadedRenderer[];
}): Error {
	// NOTE: We don't know where the error that's coming here comes from, so we need to be defensive regarding what we do
	// to it to make sure we keep as much information as possible. It's very possible that we receive an error that does not
	// follow any kind of standard formats (ex: a number, a string etc)
	let safeError = createSafeError(error) as ErrorWithMetadata;

	// Vite will give you better stacktraces, using sourcemaps.
	if (loader) {
		try {
			loader.fixStacktrace(safeError as Error);
		} catch {}
	}

	if (filePath) {
		const path = fileURLToPath(filePath);
		const content = fs.readFileSync(path).toString();
		const lns = content.split('\n');

		// Vite has a fairly generic error message when it fails to load a module, let's try to enhance it a bit
		// https://github.com/vitejs/vite/blob/ee7c28a46a6563d54b828af42570c55f16b15d2c/packages/vite/src/node/ssr/ssrModuleLoader.ts#L91
		let importName: string | undefined;
		if ((importName = /Failed to load url (.*?) \(resolved id:/.exec(safeError.message)?.[1])) {
			safeError.title = FailedToLoadModuleSSR.title;
			safeError.name = 'FailedToLoadModuleSSR';
			safeError.message = FailedToLoadModuleSSR.message(importName);
			safeError.hint = FailedToLoadModuleSSR.hint;
			const line = lns.findIndex((ln) => ln.includes(importName!));

			if (line !== -1) {
				const column = lns[line]?.indexOf(importName);

				safeError.loc = {
					file: path,
					line: line + 1,
					column,
				};
			}
		}
// ... (131 more lines)

Domain

Subdomains

Dependencies

  • ../../core/errors/errors.js
  • ../core/errors/errors-data.js
  • ../core/module-loader/index.js
  • ../types/public/internal.js
  • ./runtime.js
  • ./utils.js
  • node:fs
  • node:url
  • shiki
  • vite

Frequently Asked Questions

What does vite.ts do?
vite.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, CoreMiddleware subdomain.
What functions are defined in vite.ts?
vite.ts defines 4 function(s): cssVariablesTheme, enhanceViteSSRError, getViteErrorPayload, transformerCompactLineOptions.
What does vite.ts depend on?
vite.ts imports 10 module(s): ../../core/errors/errors.js, ../core/errors/errors-data.js, ../core/module-loader/index.js, ../types/public/internal.js, ./runtime.js, ./utils.js, node:fs, node:url, and 2 more.
Where is vite.ts in the architecture?
vite.ts is located at packages/astro/src/core/errors/dev/vite.ts (domain: CoreAstro, subdomain: CoreMiddleware, directory: packages/astro/src/core/errors/dev).

Analyze Your Own Codebase

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

Try Supermodel Free