/** * Shared helpers for the Rolldown-backed build adapters. * * @remarks * The standard {@link RolldownBuildAdapter} uses these helpers for * BuildOptions → Rolldown mapping, dependency-graph extraction, and the * post-build rewriting pipeline. * * @module */ import type { InputOptions, OutputOptions, RolldownPlugin } from 'rolldown'; import type { EcoBuildPlugin } from '../contracts/build-types.js'; import type { BuildDependencyGraph, BuildLog, BuildOptions, BuildResult, BuildTranspileOptions, BuildTranspileProfile } from '../build-adapter.js'; export declare function transpileProfileToOptions(profile: BuildTranspileProfile): BuildTranspileOptions; /** * Resolves Node builtins as external before Rolldown falls back to file resolution. * * @remarks * Rolldown documents two first-class externalization points: its `external` * option is checked before resolution, and a plugin `resolveId` hook can return * `{ id, external: true }`. Core uses the latter to keep Node-builtin ownership * explicit in the Node-target plugin pipeline. * * The hook runs before Rolldown's internal filesystem resolver, leaving imports * such as `node:fs` intact for the Node runtime. It is installed only for * Node-target builds, so browser bundles still surface accidental Node builtin * imports as resolver failures. * * See {@link https://rolldown.rs/in-depth/external-modules | Rolldown external modules}. */ export declare function createNodeBuiltinExternalPlugin(): RolldownPlugin; /** * Rejects Node builtins in browser-target builds before Rolldown externalizes them. * * @remarks * With `platform: 'browser'`, Rolldown leaves `node:*` imports in the output as * bare specifiers. This plugin fails the build instead so server-only graphs * cannot reach the browser as silent CORS errors. */ export declare function createBrowserNodeBuiltinGuardPlugin(): RolldownPlugin; export declare function extractDependencyGraph(chunks: Array<{ facadeModuleId: string | null; moduleIds: string[]; }>, contextRoot: string): BuildDependencyGraph; export declare function toBuildLogs(error: unknown): BuildLog[]; /** Translated Rolldown options for one {@link BuildOptions} request. */ export interface ResolvedRolldownOptions { inputOptions: InputOptions; outputOptions: OutputOptions; } /** * Translates a {@link BuildOptions} into Rolldown's `InputOptions` and * `OutputOptions`. Always sets `experimental.nativeMagicString: true` * and always consolidates eco plugins via the bridge. */ export declare function resolveRolldownOptions(options: BuildOptions, contextRoot: string, outdir: string, appRootRequireCache: Map): ResolvedRolldownOptions; /** * Rewrites manifest-owned runtime specifiers in emitted JS output * files. Skips work when the specifier map is empty or when a * `(specifierMap, path, content)` tuple was already seen. * * The content cache is module-level and is keyed on a djb2 hash of * the input bytes plus a sorted fingerprint of the specifier map. A * manifest change correctly invalidates prior entries; different * content of the same length does not collide. */ export declare function rewriteBrowserRuntimeImportsInOutputs(result: BuildResult, contextRoot: string, plugins: EcoBuildPlugin[]): BuildResult; /** Test-only: clears the rewriter content cache. */ export declare function clearRewriteCacheForTests(): void; /** Normalizes node-runtime import paths in emitted outputs. */ export declare function rewriteNodeRuntimeImportsInOutputs(result: BuildResult, contextRoot: string): BuildResult; /** Maps a Rolldown `output` to a normalized {@link BuildResult}. */ export declare function buildResultFromRolldownOutput(output: { output: Array<{ fileName: string; type?: string; isEntry?: boolean; facadeModuleId?: string | null; moduleIds?: string[]; }>; }, outdir: string, contextRoot: string): BuildResult;