import type { BuildEnvironment } from './core'; export interface ModuleConfig { lib?: boolean; entry?: ModuleConfigEntry; links?: Record; imports?: ModuleConfigImportMapping; exports?: ModuleConfigExportExports; } /** * Framework entry declaration (RFC 0001 Phase 2). * * Per side: a `./`-relative source file path declares a custom entry, * `false` disables the side, and `undefined` keeps the legacy default * (`./src/entry.client` / `./src/entry.server`). */ export interface ModuleConfigEntry { client?: string | false; server?: string | false; } export type ModuleConfigImportMapping = Record>; export type ModuleConfigExportExports = ModuleConfigExportExport[]; export type ModuleConfigExportExport = string | ModuleConfigExportObject; export type ModuleConfigExportObject = Record; export type ModuleConfigExportObjectValue = string | Record; export interface ParsedModuleConfig { name: string; root: string; lib: boolean; entry: ParsedModuleConfigEntry; links: Record; environments: { client: ParsedModuleConfigEnvironment; server: ParsedModuleConfigEnvironment; }; } /** A resolved framework entry: export name + source file path. */ export interface ParsedModuleConfigEntryTarget { /** Export name (import specifier suffix), e.g. 'src/entry.client'. */ name: string; /** Source file path, e.g. './src/entry.client' or './custom/main.ts'. */ file: string; } export interface ParsedModuleConfigEntry { client: ParsedModuleConfigEntryTarget | null; server: ParsedModuleConfigEntryTarget | null; } export type ParsedModuleConfigExports = Record; export interface ParsedModuleConfigExport { name: string; file: string; pkg: boolean; } export interface ParsedModuleConfigEnvironment { imports: Record; exports: ParsedModuleConfigExports; scopes: Record>; } export interface ParsedModuleConfigLink { name: string; root: string; client: string; clientManifestJson: string; server: string; serverManifestJson: string; } /** * Single source of truth for the default framework entries, used as the * fallback when a module declares no explicit `entry` (RFC 0001 Phase 2 * threads resolved entries through the config instead of hard-coding them). */ export declare const DEFAULT_MODULE_ENTRY: Record<'client' | 'server', ParsedModuleConfigEntryTarget>; export declare function parseEntryConfig(config: ModuleConfig): ParsedModuleConfigEntry; /** * Manifest chunk identifier for an entry target: `@` * including the file extension (bundlers key chunks by the resolved source * file, so the legacy extensionless default maps to `.ts`). */ export declare function getEntryChunkId(moduleName: string, target: ParsedModuleConfigEntryTarget): string; export declare function parseModuleConfig(name: string, root: string, config?: ModuleConfig): ParsedModuleConfig; export declare function getLinks(name: string, root: string, config: ModuleConfig): Record; export declare function getEnvironmentImports(environment: BuildEnvironment, imports?: ModuleConfigImportMapping): Record; export declare function getEnvironments(config: ModuleConfig, env: BuildEnvironment, moduleName: string, entry?: ParsedModuleConfigEntry): ParsedModuleConfigEnvironment; /** * Builds the per-environment exports for the resolved framework entries. * Each entry exports its source file in its own environment and an empty * file on the other side (the inactive side is skipped by adapters). */ export declare function createEntryExports(entry: ParsedModuleConfigEntry, env: BuildEnvironment): ParsedModuleConfigExports; export declare function processStringExport(exportString: string): ParsedModuleConfigExports; export declare function processObjectExport(exportObject: ModuleConfigExportObject, env: BuildEnvironment): ParsedModuleConfigExports; export declare function resolveExportFile(config: ModuleConfigExportObjectValue, env: BuildEnvironment, name: string): string; export declare function processExportArray(exportArray: ModuleConfigExportExports, env: BuildEnvironment): ParsedModuleConfigExports; export declare function getEnvironmentExports(config: ModuleConfig, env: BuildEnvironment, entry?: ParsedModuleConfigEntry): ParsedModuleConfigExports; export declare function addPackageExportsToScopes(exports: ParsedModuleConfigExports, scopes: Record>, moduleName: string): Record>; export declare function parsedExportValue(value: string): ParsedModuleConfigExport;