@tanstack/router-plugin
Version:
Modern and scalable routing for React applications
33 lines (29 loc) • 1.02 kB
text/typescript
import { createViteHmrStatement } from './vite-adapter'
import { createWebpackHmrStatement } from './webpack-adapter'
import type { Config, HmrStyle } from '../config'
import type * as t from '@babel/types'
export type CreateRouteHmrStatementOpts = {
hmrStyle: HmrStyle
targetFramework: Config['target']
routeId?: string
}
/**
* Dispatches to the configured HMR adapter. `hmrStyle` is set explicitly by
* the bundler-specific plugin entry (e.g. `rspack.ts` → `'webpack'`), so there
* is no runtime inference based on config string shapes.
*/
export function createRouteHmrStatement(
stableRouteOptionKeys: Array<string>,
opts: CreateRouteHmrStatementOpts,
): Array<t.Statement> {
const routeId = opts.routeId === '/__root' ? '__root__' : opts.routeId
if (opts.hmrStyle === 'webpack') {
return createWebpackHmrStatement(stableRouteOptionKeys, {
targetFramework: opts.targetFramework,
routeId,
})
}
return createViteHmrStatement(stableRouteOptionKeys, {
routeId,
})
}