Types
Complete type reference for browser-metro.
FileMap
interface FileMap {
[path: string]: string; // absolute path → source code
}ModuleMap
interface ModuleMap {
[id: string]: string; // module ID → transformed source
}Transformer
interface Transformer {
transform(params: TransformParams): TransformResult;
}
interface TransformParams {
src: string; // source code
filename: string; // e.g. "/app.tsx"
}
interface TransformResult {
code: string; // transformed source code
sourceMap?: RawSourceMap; // optional source map
}BundlerConfig
interface BundlerConfig {
resolver: ResolverConfig;
transformer: Transformer;
server: { packageServerUrl: string };
hmr?: { enabled: boolean; reactRefresh?: boolean };
plugins?: BundlerPlugin[];
env?: Record<string, string>;
routerShim?: boolean;
}ResolverConfig
interface ResolverConfig {
sourceExts: string[];
paths?: Record<string, string[]>; // tsconfig "paths"
}HmrUpdate
interface HmrUpdate {
updatedModules: Record<string, string>;
removedModules: string[];
requiresReload: boolean;
reloadReason?: string;
}IncrementalBuildResult
interface IncrementalBuildResult {
bundle: string;
hmrUpdate: HmrUpdate | null;
type: "full" | "incremental";
rebuiltModules: string[];
removedModules: string[];
buildTime: number;
}FileChange
interface FileChange {
path: string;
type: "create" | "update" | "delete";
}ContentChange
interface ContentChange {
path: string;
type: "create" | "update" | "delete";
content?: string; // omitted for delete
}BundlerPlugin
interface BundlerPlugin {
name: string;
transformSource?(params: {
src: string; filename: string;
}): { src: string } | null;
transformOutput?(params: {
code: string; filename: string;
}): { code: string } | null;
resolveRequest?(
context: { fromFile: string },
moduleName: string
): string | null;
moduleAliases?(): Record<string, string>;
shimModules?(): Record<string, string>;
}