rsbuild-plugin-react-router
Version:
React Router plugin for Rsbuild
62 lines (61 loc) • 2.52 kB
TypeScript
import type { BuildManifest as ReactRouterBuildManifest, Config as ReactRouterConfig } from '@react-router/dev/config';
import type { NormalizedConfig } from '@rsbuild/core';
import type { RouteConfigEntry } from '@react-router/dev/routes';
import * as Effect from 'effect/Effect';
export type BuildEndHook = {
bivarianceHack(args: {
buildManifest: ReactRouterBuildManifest | undefined;
reactRouterConfig: ResolvedReactRouterConfig;
viteConfig: NormalizedConfig;
}): void | Promise<void>;
}['bivarianceHack'];
type SplitRouteModulesConfig = boolean | 'enforce';
export type Config = Omit<ReactRouterConfig, 'buildEnd' | 'future' | 'splitRouteModules' | 'subResourceIntegrity'> & {
buildEnd?: BuildEndHook;
future?: Partial<FutureConfig>;
splitRouteModules?: SplitRouteModulesConfig;
subResourceIntegrity?: boolean;
};
type FutureConfig = {
unstable_optimizeDeps: boolean;
unstable_subResourceIntegrity: boolean;
unstable_trailingSlashAwareDataRequests: boolean;
v8_middleware: boolean;
v8_splitRouteModules: boolean | 'enforce';
v8_viteEnvironmentApi: boolean;
};
type RouteManifestEntry = {
id: string;
parentId?: string;
path?: string;
index?: boolean;
caseSensitive?: boolean;
file: string;
};
type RouteManifest = Record<string, RouteManifestEntry>;
type ResolveReactRouterConfigResult = {
resolved: ResolvedReactRouterConfig;
presets: NonNullable<Config['presets']>;
hasConfiguredServerModuleFormat: boolean;
};
export type ResolvedReactRouterConfig = Readonly<{
appDirectory: string;
basename: string;
buildDirectory: string;
buildEnd?: Config['buildEnd'];
future: FutureConfig;
prerender: Config['prerender'];
routeDiscovery: Config['routeDiscovery'];
routes: RouteManifest;
serverBuildFile: NonNullable<ReactRouterConfig['serverBuildFile']>;
serverBundles?: Config['serverBundles'];
serverModuleFormat: NonNullable<ReactRouterConfig['serverModuleFormat']>;
splitRouteModules: SplitRouteModulesConfig;
subResourceIntegrity: boolean;
ssr: NonNullable<ReactRouterConfig['ssr']>;
allowedActionOrigins: string[] | false;
unstable_routeConfig: RouteConfigEntry[];
}>;
export declare const resolveReactRouterConfigEffect: (reactRouterUserConfig: Config) => Effect.Effect<ResolveReactRouterConfigResult, Error, never>;
export declare const resolveReactRouterConfig: (reactRouterUserConfig: Config) => Promise<ResolveReactRouterConfigResult>;
export {};