@tanstack/router-plugin
Version:
Modern and scalable routing for React applications
44 lines (43 loc) • 1.76 kB
TypeScript
import { default as babel } from '@babel/core';
import { Config, DeletableNodes } from '../config.js';
import { CodeSplitGroupings } from '../constants.js';
import { SplitNodeMeta } from './types.js';
import type * as t from '@babel/types';
export type CompileCodeSplitReferenceRouteOptions = {
codeSplitGroupings: CodeSplitGroupings;
deleteNodes?: Set<DeletableNodes>;
targetFramework: Config['target'];
filename: string;
id: string;
addHmr?: boolean;
hmrHotExpression?: string;
sharedBindings?: Set<string>;
};
export type ReferenceRouteCompilerPluginContext = {
programPath: babel.NodePath<t.Program>;
callExpressionPath: babel.NodePath<t.CallExpression>;
insertionPath: babel.NodePath;
routeOptions: t.ObjectExpression;
createRouteFn: string;
opts: CompileCodeSplitReferenceRouteOptions;
};
export type ReferenceRouteSplitPropertyCompilerPluginContext = {
programPath: babel.NodePath<t.Program>;
callExpressionPath: babel.NodePath<t.CallExpression>;
insertionPath: babel.NodePath;
routeOptions: t.ObjectExpression;
prop: t.ObjectProperty;
splitNodeMeta: SplitNodeMeta;
lazyRouteComponentIdent: string;
opts: CompileCodeSplitReferenceRouteOptions;
};
export type ReferenceRouteCompilerPluginResult = {
modified?: boolean;
};
export type ReferenceRouteCompilerPlugin = {
name: string;
getStableRouteOptionKeys?: () => Array<string>;
onAddHmr?: (ctx: ReferenceRouteCompilerPluginContext) => void | ReferenceRouteCompilerPluginResult;
onUnsplittableRoute?: (ctx: ReferenceRouteCompilerPluginContext) => void | ReferenceRouteCompilerPluginResult;
onSplitRouteProperty?: (ctx: ReferenceRouteSplitPropertyCompilerPluginContext) => void | t.Expression;
};