import type { SSRManifest } from '../core/app/types.js'; import type { AstroTimer } from '../core/config/timer.js'; import type { TSConfig } from '../core/config/tsconfig.js'; import type { Logger } from '../core/logger/core.js'; import type { AstroPreferences } from '../preferences/index.js'; import type { AstroComponentFactory } from '../runtime/server/index.js'; import type { GetStaticPathsOptions, GetStaticPathsResult } from './public/common.js'; import type { AstroConfig } from './public/config.js'; import type { ContentEntryType, DataEntryType } from './public/content.js'; import type { AstroAdapter, AstroRenderer, InjectedScriptStage, InjectedType } from './public/integrations.js'; import type { InternalInjectedRoute, ResolvedInjectedRoute, RouteData } from './public/internal.js'; import type { DevToolbarAppEntry } from './public/toolbar.js'; export type SerializedRouteData = Omit<RouteData, 'generate' | 'pattern' | 'redirectRoute' | 'fallbackRoutes'> & { generate: undefined; pattern: string; redirectRoute: SerializedRouteData | undefined; fallbackRoutes: SerializedRouteData[]; _meta: { trailingSlash: AstroConfig['trailingSlash']; }; }; export interface AstroSettings { config: AstroConfig; adapter: AstroAdapter | undefined; preferences: AstroPreferences; injectedRoutes: InternalInjectedRoute[]; resolvedInjectedRoutes: ResolvedInjectedRoute[]; pageExtensions: string[]; contentEntryTypes: ContentEntryType[]; dataEntryTypes: DataEntryType[]; renderers: AstroRenderer[]; scripts: { stage: InjectedScriptStage; content: string; }[]; /** * Map of directive name (e.g. `load`) to the directive script code */ clientDirectives: Map<string, string>; devToolbarApps: (DevToolbarAppEntry | string)[]; middlewares: { pre: string[]; post: string[]; }; tsConfig: TSConfig | undefined; tsConfigPath: string | undefined; watchFiles: string[]; timer: AstroTimer; dotAstroDir: URL; /** * Latest version of Astro, will be undefined if: * - unable to check * - the user has disabled the check * - the check has not completed yet * - the user is on the latest version already */ latestAstroVersion: string | undefined; serverIslandMap: NonNullable<SSRManifest['serverIslandMap']>; serverIslandNameMap: NonNullable<SSRManifest['serverIslandNameMap']>; injectedTypes: Array<Omit<InjectedType, 'content'> & Partial<Pick<InjectedType, 'content'>>>; /** * Determine if the build output should be a static, dist folder or a adapter-based server output * undefined when unknown */ buildOutput: undefined | 'static' | 'server'; } /** Generic interface for a component (Astro, Svelte, React, etc.) */ export interface ComponentInstance { default: AstroComponentFactory; css?: string[]; partial?: boolean; prerender?: boolean; getStaticPaths?: (options: GetStaticPathsOptions) => GetStaticPathsResult; } export interface RoutesList { routes: RouteData[]; } export interface AstroPluginOptions { settings: AstroSettings; logger: Logger; }