@tanstack/router-plugin
Version:
Modern and scalable routing for React applications
81 lines (80 loc) • 2.59 kB
JavaScript
import { configSchema } from "./core/config.js";
import { createRouterPluginContext } from "./core/router-plugin-context.js";
import { createRouterCodeSplitterPlugin } from "./core/router-code-splitter-plugin.js";
import { createRouterGeneratorPlugin } from "./core/router-generator-plugin.js";
import { unpluginRouterComposedFactory } from "./core/router-composed-plugin.js";
import { createRspackPlugin } from "unplugin";
//#region src/rspack.ts
var defaultRouterPluginContext = createRouterPluginContext();
/**
* Rspack uses webpack-compatible `module.hot` / `import.meta.webpackHot` HMR.
* Force `plugin.hmr.style = 'webpack'` so the router HMR adapter emits
* `module.hot`-style accept/dispose code instead of Vite's callback-receive
* variant, regardless of what the user passes (or doesn't pass).
*/
function withWebpackHmrStyle(options) {
const mergeHmrStyle = (config) => ({
...config,
plugin: {
...config?.plugin,
hmr: {
...config?.plugin?.hmr,
style: "webpack"
}
}
});
if (typeof options === "function") return () => mergeHmrStyle(options());
return mergeHmrStyle(options);
}
/**
* @example
* ```ts
* export default defineConfig({
* // ...
* tools: {
* rspack: {
* plugins: [TanStackRouterGeneratorRspack()],
* },
* },
* })
* ```
*/
var TanStackRouterGeneratorRspack = (options, routerPluginContext) => {
const pluginContext = routerPluginContext ?? defaultRouterPluginContext;
return createRspackPlugin((pluginOptions) => createRouterGeneratorPlugin(pluginOptions, pluginContext))(options);
};
/**
* @example
* ```ts
* export default defineConfig({
* // ...
* tools: {
* rspack: {
* plugins: [TanStackRouterCodeSplitterRspack()],
* },
* },
* })
* ```
*/
var TanStackRouterCodeSplitterRspack = (options, routerPluginContext) => {
const pluginContext = routerPluginContext ?? defaultRouterPluginContext;
return createRspackPlugin((pluginOptions) => createRouterCodeSplitterPlugin(withWebpackHmrStyle(pluginOptions), pluginContext))(options);
};
/**
* @example
* ```ts
* export default defineConfig({
* // ...
* tools: {
* rspack: {
* plugins: [tanstackRouter()],
* },
* },
* })
* ```
*/
var TanStackRouterRspack = /* @__PURE__ */ createRspackPlugin((options, meta) => unpluginRouterComposedFactory(withWebpackHmrStyle(options), meta));
var tanstackRouter = TanStackRouterRspack;
//#endregion
export { TanStackRouterCodeSplitterRspack, TanStackRouterGeneratorRspack, TanStackRouterRspack, TanStackRouterRspack as default, configSchema, tanstackRouter };
//# sourceMappingURL=rspack.js.map