@tanstack/router-plugin
Version:
Modern and scalable routing for React applications
1 lines • 4.34 kB
Source Map (JSON)
{"version":3,"file":"rspack.cjs","names":[],"sources":["../../src/rspack.ts"],"sourcesContent":["import { createRspackPlugin } from 'unplugin'\n\nimport { configSchema } from './core/config'\nimport { createRouterCodeSplitterPlugin } from './core/router-code-splitter-plugin'\nimport { createRouterGeneratorPlugin } from './core/router-generator-plugin'\nimport { unpluginRouterComposedFactory } from './core/router-composed-plugin'\nimport { createRouterPluginContext } from './core/router-plugin-context'\nimport type { CodeSplittingOptions, Config } from './core/config'\nimport type { RouterPluginContext } from './core/router-plugin-context'\n\ntype RspackRouterPluginOptions = Partial<Config> | (() => Partial<Config>)\n\nconst defaultRouterPluginContext = createRouterPluginContext()\n\n/**\n * Rspack uses webpack-compatible `module.hot` / `import.meta.webpackHot` HMR.\n * Force `plugin.hmr.style = 'webpack'` so the router HMR adapter emits\n * `module.hot`-style accept/dispose code instead of Vite's callback-receive\n * variant, regardless of what the user passes (or doesn't pass).\n */\nfunction withWebpackHmrStyle(\n options: RspackRouterPluginOptions | undefined,\n): RspackRouterPluginOptions {\n const mergeHmrStyle = (\n config: Partial<Config> | undefined,\n ): Partial<Config> => ({\n ...config,\n plugin: {\n ...config?.plugin,\n hmr: {\n ...config?.plugin?.hmr,\n style: 'webpack',\n },\n },\n })\n\n if (typeof options === 'function') {\n return () => mergeHmrStyle(options())\n }\n\n return mergeHmrStyle(options)\n}\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterGeneratorRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterGeneratorRspack = (\n options?: RspackRouterPluginOptions,\n routerPluginContext?: RouterPluginContext,\n) => {\n const pluginContext = routerPluginContext ?? defaultRouterPluginContext\n return createRspackPlugin((pluginOptions) =>\n createRouterGeneratorPlugin(\n pluginOptions as Partial<Config | (() => Config)> | undefined,\n pluginContext,\n ),\n )(options)\n}\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterCodeSplitterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterCodeSplitterRspack = (\n options?: RspackRouterPluginOptions,\n routerPluginContext?: RouterPluginContext,\n) => {\n const pluginContext = routerPluginContext ?? defaultRouterPluginContext\n return createRspackPlugin((pluginOptions) =>\n createRouterCodeSplitterPlugin(\n withWebpackHmrStyle(\n pluginOptions as RspackRouterPluginOptions | undefined,\n ) as Partial<Config | (() => Config)>,\n pluginContext,\n ),\n )(options)\n}\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [tanstackRouter()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterRspack = /* #__PURE__ */ createRspackPlugin(\n (options, meta) =>\n unpluginRouterComposedFactory(\n withWebpackHmrStyle(\n options as RspackRouterPluginOptions | undefined,\n ) as Partial<Config | (() => Config)>,\n meta,\n ),\n)\nconst tanstackRouter = TanStackRouterRspack\nexport default TanStackRouterRspack\nexport {\n configSchema,\n TanStackRouterRspack,\n TanStackRouterGeneratorRspack,\n TanStackRouterCodeSplitterRspack,\n tanstackRouter,\n}\nexport type { Config, CodeSplittingOptions, RouterPluginContext }\n"],"mappings":";;;;;;;;;;;;AAYA,IAAM,6BAA6B,8BAAA,2BAA2B;;;;;;;AAQ9D,SAAS,oBACP,SAC2B;CAC3B,MAAM,iBACJ,YACqB;EACrB,GAAG;EACH,QAAQ;GACN,GAAG,QAAQ;GACX,KAAK;IACH,GAAG,QAAQ,QAAQ;IACnB,OAAO;IACR;GACF;EACF;AAED,KAAI,OAAO,YAAY,WACrB,cAAa,cAAc,SAAS,CAAC;AAGvC,QAAO,cAAc,QAAQ;;;;;;;;;;;;;;;AAgB/B,IAAM,iCACJ,SACA,wBACG;CACH,MAAM,gBAAgB,uBAAuB;AAC7C,SAAA,GAAA,SAAA,qBAA2B,kBACzB,gCAAA,4BACE,eACA,cACD,CACF,CAAC,QAAQ;;;;;;;;;;;;;;;AAgBZ,IAAM,oCACJ,SACA,wBACG;CACH,MAAM,gBAAgB,uBAAuB;AAC7C,SAAA,GAAA,SAAA,qBAA2B,kBACzB,oCAAA,+BACE,oBACE,cACD,EACD,cACD,CACF,CAAC,QAAQ;;;;;;;;;;;;;;;AAgBZ,IAAM,uBAAuC,iBAAA,GAAA,SAAA,qBAC1C,SAAS,SACR,+BAAA,8BACE,oBACE,QACD,EACD,KACD,CACJ;AACD,IAAM,iBAAiB"}