Home / File/ runner.ts — astro Source File

runner.ts — astro Source File

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

File typescript CoreAstro RenderingEngine 4 imports 8 functions

Entity Profile

Dependency Diagram

graph LR
  58abb67e_f385_ecd0_f6d1_c515d265bf85["runner.ts"]
  d6a87075_d364_3cda_ef2a_653417e58f07["../../types/typed-emitter.js"]
  58abb67e_f385_ecd0_f6d1_c515d265bf85 --> d6a87075_d364_3cda_ef2a_653417e58f07
  fc0217ba_5b68_32cc_f77d_49b4596e615e["node:events"]
  58abb67e_f385_ecd0_f6d1_c515d265bf85 --> fc0217ba_5b68_32cc_f77d_49b4596e615e
  e16a223b_37f3_6b25_1ee1_2b7bcb9d9415["node:fs"]
  58abb67e_f385_ecd0_f6d1_c515d265bf85 --> e16a223b_37f3_6b25_1ee1_2b7bcb9d9415
  263e522e_1aa5_ebc3_e7d6_45ebc51671f7["vite"]
  58abb67e_f385_ecd0_f6d1_c515d265bf85 --> 263e522e_1aa5_ebc3_e7d6_45ebc51671f7
  style 58abb67e_f385_ecd0_f6d1_c515d265bf85 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { EventEmitter } from 'node:events';
import type * as fs from 'node:fs';
import type { EnvironmentModuleNode, RunnableDevEnvironment } from 'vite';
import type { TypedEventEmitter } from '../../types/typed-emitter.js';

// This is a generic interface for a module loader. In the astro cli this is
// fulfilled by Vite, see vite.ts

export type LoaderEvents = {
	'file-add': (msg: [path: string, stats?: fs.Stats | undefined]) => void;
	'file-change': (msg: [path: string, stats?: fs.Stats | undefined]) => void;
	'file-unlink': (msg: [path: string, stats?: fs.Stats | undefined]) => void;
	'hmr-error': (msg: {
		type: 'error';
		err: {
			message: string;
			stack: string;
		};
	}) => void;
};

export type ModuleLoaderEventEmitter = TypedEventEmitter<LoaderEvents>;

export interface ModuleLoader {
	import: (src: string) => Promise<Record<string, any>>;
	resolveId: (specifier: string, parentId: string | undefined) => Promise<string | undefined>;
	getModuleById: (id: string) => EnvironmentModuleNode | undefined;
	getModulesByFile: (file: string) => Set<EnvironmentModuleNode> | undefined;
	getModuleInfo: (id: string) => ModuleInfo | null;

	eachModule(
		callbackfn: (
			value: EnvironmentModuleNode,
			key: string,
			map: Map<string, EnvironmentModuleNode>,
		) => void,
	): void;
	invalidateModule(mod: EnvironmentModuleNode): void;

	fixStacktrace: (error: Error) => void;

	clientReload: () => void;
	webSocketSend: (msg: any) => void;
	isHttps: () => boolean;
	events: TypedEventEmitter<LoaderEvents>;
	getSSREnvironment: () => RunnableDevEnvironment;
}

export interface ModuleInfo {
	id: string;
	meta?: Record<string, any>;
}

export function createLoader(overrides: Partial<ModuleLoader>): ModuleLoader {
	return {
		import() {
			throw new Error(`Not implemented`);
		},
		resolveId(id) {
			return Promise.resolve(id);
		},
		getModuleById() {
			return undefined;
		},
		getModulesByFile() {
			return undefined;
		},
		getModuleInfo() {
			return null;
		},
		eachModule() {
			throw new Error(`Not implemented`);
		},
		invalidateModule() {},
		fixStacktrace() {},
		clientReload() {},
		webSocketSend() {},
		isHttps() {
			return true;
		},
		getSSREnvironment() {
			throw new Error('Not implemented');
		},
		events: new EventEmitter() as ModuleLoaderEventEmitter,

		...overrides,
	};
}

Domain

Subdomains

Dependencies

  • ../../types/typed-emitter.js
  • node:events
  • node:fs
  • vite

Frequently Asked Questions

What does runner.ts do?
runner.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RenderingEngine subdomain.
What functions are defined in runner.ts?
runner.ts defines 8 function(s): RunnableDevEnvironment, createLoader, error, file, id, msg, specifier, src.
What does runner.ts depend on?
runner.ts imports 4 module(s): ../../types/typed-emitter.js, node:events, node:fs, vite.
Where is runner.ts in the architecture?
runner.ts is located at packages/astro/src/core/module-loader/runner.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/core/module-loader).

Analyze Your Own Codebase

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

Try Supermodel Free