@tanstack/router-plugin 1.124.2 → 1.125.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/core/code-splitter/compilers.cjs +43 -21
- package/dist/cjs/core/code-splitter/compilers.cjs.map +1 -1
- package/dist/cjs/core/code-splitter/compilers.d.cts +3 -2
- package/dist/cjs/core/config.cjs +11 -1
- package/dist/cjs/core/config.cjs.map +1 -1
- package/dist/cjs/core/config.d.cts +45 -0
- package/dist/cjs/core/router-code-splitter-plugin.cjs +20 -4
- package/dist/cjs/core/router-code-splitter-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-generator-plugin.cjs +6 -3
- package/dist/cjs/core/router-generator-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-hmr-plugin.cjs +25 -2
- package/dist/cjs/core/router-hmr-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-hmr-plugin.d.cts +1 -6
- package/dist/cjs/esbuild.d.cts +20 -0
- package/dist/cjs/rspack.d.cts +20 -0
- package/dist/cjs/vite.d.cts +25 -0
- package/dist/cjs/webpack.d.cts +20 -0
- package/dist/esm/core/code-splitter/compilers.d.ts +3 -2
- package/dist/esm/core/code-splitter/compilers.js +43 -21
- package/dist/esm/core/code-splitter/compilers.js.map +1 -1
- package/dist/esm/core/config.d.ts +45 -0
- package/dist/esm/core/config.js +11 -1
- package/dist/esm/core/config.js.map +1 -1
- package/dist/esm/core/router-code-splitter-plugin.js +20 -4
- package/dist/esm/core/router-code-splitter-plugin.js.map +1 -1
- package/dist/esm/core/router-generator-plugin.js +6 -3
- package/dist/esm/core/router-generator-plugin.js.map +1 -1
- package/dist/esm/core/router-hmr-plugin.d.ts +1 -6
- package/dist/esm/core/router-hmr-plugin.js +25 -2
- package/dist/esm/core/router-hmr-plugin.js.map +1 -1
- package/dist/esm/esbuild.d.ts +20 -0
- package/dist/esm/rspack.d.ts +20 -0
- package/dist/esm/vite.d.ts +25 -0
- package/dist/esm/webpack.d.ts +20 -0
- package/package.json +5 -5
- package/src/core/code-splitter/compilers.ts +52 -35
- package/src/core/config.ts +25 -0
- package/src/core/router-code-splitter-plugin.ts +20 -3
- package/src/core/router-generator-plugin.ts +6 -7
- package/src/core/router-hmr-plugin.ts +27 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["/**\n * It is important to familiarize yourself with how the code-splitting works in this plugin.\n * https://github.com/TanStack/router/pull/3355\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig, splitGroupingsSchema } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n detectCodeSplitGroupingsFromRoute,\n} from './code-splitter/compilers'\nimport {\n defaultCodeSplitGroupings,\n splitRouteIdentNodes,\n tsrSplit,\n} from './constants'\nimport { decodeIdentifier } from './code-splitter/path-ids'\nimport { debug } from './utils'\nimport type { CodeSplitGroupings, SplitRouteIdentNodes } from './constants'\nimport type { GetRoutesByFileMapResultValue } from '@tanstack/router-generator'\nimport type { Config } from './config'\nimport type {\n UnpluginContextMeta,\n UnpluginFactory,\n TransformResult as UnpluginTransformResult,\n} from 'unplugin'\n\ntype BannedBeforeExternalPlugin = {\n identifier: string\n pkg: string\n usage: string\n frameworks: Array<UnpluginContextMeta['framework']>\n}\n\nconst bannedBeforeExternalPlugins: Array<BannedBeforeExternalPlugin> = [\n {\n identifier: '@react-refresh',\n pkg: '@vitejs/plugin-react',\n usage: 'viteReact()',\n frameworks: ['vite'],\n },\n]\n\nclass FoundPluginInBeforeCode extends Error {\n constructor(\n externalPlugin: BannedBeforeExternalPlugin,\n pluginFramework: string,\n ) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin/${pluginFramework}'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n tanstackRouter(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n const getGlobalCodeSplitGroupings = () => {\n return (\n userConfig.codeSplittingOptions?.defaultBehavior ||\n defaultCodeSplitGroupings\n )\n }\n const getShouldSplitFn = () => {\n return userConfig.codeSplittingOptions?.splitBehavior\n }\n\n const handleCompilingReferenceFile = (\n code: string,\n id: string,\n generatorNodeInfo: GetRoutesByFileMapResultValue,\n ): UnpluginTransformResult => {\n if (debug) console.info('Compiling Route: ', id)\n\n const fromCode = detectCodeSplitGroupingsFromRoute({\n code,\n })\n\n if (fromCode.groupings) {\n const res = splitGroupingsSchema.safeParse(fromCode.groupings)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const userShouldSplitFn = getShouldSplitFn()\n\n const pluginSplitBehavior = userShouldSplitFn?.({\n routeId: generatorNodeInfo.routePath,\n }) as CodeSplitGroupings | undefined\n\n if (pluginSplitBehavior) {\n const res = splitGroupingsSchema.safeParse(pluginSplitBehavior)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings returned when using \\`splitBehavior\\` for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const splitGroupings: CodeSplitGroupings =\n fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings()\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n runtimeEnv: isProduction ? 'prod' : 'dev',\n codeSplitGroupings: splitGroupings,\n targetFramework: userConfig.target,\n filename: id,\n id,\n })\n\n if (debug) {\n logDiff(code, compiledReferenceRoute.code)\n console.log('Output:\\n', compiledReferenceRoute.code + '\\n\\n')\n }\n\n return compiledReferenceRoute\n }\n\n const handleCompilingVirtualFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Splitting Route: ', id)\n\n const [_, ...pathnameParts] = id.split('?')\n\n const searchParams = new URLSearchParams(pathnameParts.join('?'))\n const splitValue = searchParams.get(tsrSplit)\n\n if (!splitValue) {\n throw new Error(\n `The split value for the virtual route \"${id}\" was not found.`,\n )\n }\n\n const rawGrouping = decodeIdentifier(splitValue)\n const grouping = [...new Set(rawGrouping)].filter((p) =>\n splitRouteIdentNodes.includes(p as any),\n ) as Array<SplitRouteIdentNodes>\n\n const result = compileCodeSplitVirtualRoute({\n code,\n filename: id,\n splitTargets: grouping,\n })\n\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n\n return result\n }\n\n return [\n {\n name: 'tanstack-router:code-splitter:compile-reference-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: {\n exclude: tsrSplit,\n // this is necessary for webpack / rspack to avoid matching .html files\n include: /\\.(m|c)?(j|t)sx?$/,\n },\n code: 'createFileRoute(',\n },\n handler(code, id) {\n const generatorFileInfo = globalThis.TSR_ROUTES_BY_ID_MAP?.get(id)\n if (generatorFileInfo && code.includes('createFileRoute(')) {\n for (const externalPlugin of bannedBeforeExternalPlugins) {\n if (!externalPlugin.frameworks.includes(framework)) {\n continue\n }\n\n if (code.includes(externalPlugin.identifier)) {\n throw new FoundPluginInBeforeCode(externalPlugin, framework)\n }\n }\n\n return handleCompilingReferenceFile(code, id, generatorFileInfo)\n }\n\n return null\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n\n if (compiler.options.mode === 'production') {\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n },\n {\n name: 'tanstack-router:code-splitter:compile-virtual-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: /tsr-split/,\n },\n handler(code, id) {\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n return handleCompilingVirtualFile(code, id)\n },\n },\n },\n ]\n}\n"],"names":["defaultCodeSplitGroupings","debug","detectCodeSplitGroupingsFromRoute","splitGroupingsSchema","compileCodeSplitReferenceRoute","logDiff","tsrSplit","decodeIdentifier","splitRouteIdentNodes","compileCodeSplitVirtualRoute","config","getConfig","pathToFileURL","fileURLToPath"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["/**\n * It is important to familiarize yourself with how the code-splitting works in this plugin.\n * https://github.com/TanStack/router/pull/3355\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig, splitGroupingsSchema } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n detectCodeSplitGroupingsFromRoute,\n} from './code-splitter/compilers'\nimport {\n defaultCodeSplitGroupings,\n splitRouteIdentNodes,\n tsrSplit,\n} from './constants'\nimport { decodeIdentifier } from './code-splitter/path-ids'\nimport { debug } from './utils'\nimport type { CodeSplitGroupings, SplitRouteIdentNodes } from './constants'\nimport type { GetRoutesByFileMapResultValue } from '@tanstack/router-generator'\nimport type { Config } from './config'\nimport type {\n UnpluginContextMeta,\n UnpluginFactory,\n TransformResult as UnpluginTransformResult,\n} from 'unplugin'\n\ntype BannedBeforeExternalPlugin = {\n identifier: string\n pkg: string\n usage: string\n frameworks: Array<UnpluginContextMeta['framework']>\n}\n\nconst bannedBeforeExternalPlugins: Array<BannedBeforeExternalPlugin> = [\n {\n identifier: '@react-refresh',\n pkg: '@vitejs/plugin-react',\n usage: 'viteReact()',\n frameworks: ['vite'],\n },\n]\n\nclass FoundPluginInBeforeCode extends Error {\n constructor(\n externalPlugin: BannedBeforeExternalPlugin,\n pluginFramework: string,\n ) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin/${pluginFramework}'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n tanstackRouter(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n const getGlobalCodeSplitGroupings = () => {\n return (\n userConfig.codeSplittingOptions?.defaultBehavior ||\n defaultCodeSplitGroupings\n )\n }\n const getShouldSplitFn = () => {\n return userConfig.codeSplittingOptions?.splitBehavior\n }\n\n const handleCompilingReferenceFile = (\n code: string,\n id: string,\n generatorNodeInfo: GetRoutesByFileMapResultValue,\n ): UnpluginTransformResult => {\n if (debug) console.info('Compiling Route: ', id)\n\n const fromCode = detectCodeSplitGroupingsFromRoute({\n code,\n })\n\n if (fromCode.groupings) {\n const res = splitGroupingsSchema.safeParse(fromCode.groupings)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const userShouldSplitFn = getShouldSplitFn()\n\n const pluginSplitBehavior = userShouldSplitFn?.({\n routeId: generatorNodeInfo.routePath,\n }) as CodeSplitGroupings | undefined\n\n if (pluginSplitBehavior) {\n const res = splitGroupingsSchema.safeParse(pluginSplitBehavior)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings returned when using \\`splitBehavior\\` for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const splitGroupings: CodeSplitGroupings =\n fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings()\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n codeSplitGroupings: splitGroupings,\n targetFramework: userConfig.target,\n filename: id,\n id,\n deleteNodes: new Set(userConfig.codeSplittingOptions?.deleteNodes),\n addHmr: options.codeSplittingOptions?.addHmr && !isProduction,\n })\n\n if (debug) {\n logDiff(code, compiledReferenceRoute.code)\n console.log('Output:\\n', compiledReferenceRoute.code + '\\n\\n')\n }\n\n return compiledReferenceRoute\n }\n\n const handleCompilingVirtualFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Splitting Route: ', id)\n\n const [_, ...pathnameParts] = id.split('?')\n\n const searchParams = new URLSearchParams(pathnameParts.join('?'))\n const splitValue = searchParams.get(tsrSplit)\n\n if (!splitValue) {\n throw new Error(\n `The split value for the virtual route \"${id}\" was not found.`,\n )\n }\n\n const rawGrouping = decodeIdentifier(splitValue)\n const grouping = [...new Set(rawGrouping)].filter((p) =>\n splitRouteIdentNodes.includes(p as any),\n ) as Array<SplitRouteIdentNodes>\n\n const result = compileCodeSplitVirtualRoute({\n code,\n filename: id,\n splitTargets: grouping,\n })\n\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n\n return result\n }\n\n const includedCode = [\n 'createFileRoute(',\n 'createRootRoute(',\n 'createRootRouteWithContext(',\n ]\n return [\n {\n name: 'tanstack-router:code-splitter:compile-reference-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: {\n exclude: tsrSplit,\n // this is necessary for webpack / rspack to avoid matching .html files\n include: /\\.(m|c)?(j|t)sx?$/,\n },\n code: {\n include: includedCode,\n },\n },\n handler(code, id) {\n const generatorFileInfo = globalThis.TSR_ROUTES_BY_ID_MAP?.get(id)\n if (\n generatorFileInfo &&\n includedCode.some((included) => code.includes(included))\n ) {\n for (const externalPlugin of bannedBeforeExternalPlugins) {\n if (!externalPlugin.frameworks.includes(framework)) {\n continue\n }\n\n if (code.includes(externalPlugin.identifier)) {\n throw new FoundPluginInBeforeCode(externalPlugin, framework)\n }\n }\n\n return handleCompilingReferenceFile(code, id, generatorFileInfo)\n }\n\n return null\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n applyToEnvironment(environment) {\n if (userConfig.plugin?.vite?.environmentName) {\n return userConfig.plugin.vite.environmentName === environment.name\n }\n return true\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n\n if (compiler.options.mode === 'production') {\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n },\n {\n name: 'tanstack-router:code-splitter:compile-virtual-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: /tsr-split/,\n },\n handler(code, id) {\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n return handleCompilingVirtualFile(code, id)\n },\n },\n },\n ]\n}\n"],"names":["defaultCodeSplitGroupings","debug","detectCodeSplitGroupingsFromRoute","splitGroupingsSchema","compileCodeSplitReferenceRoute","logDiff","tsrSplit","decodeIdentifier","splitRouteIdentNodes","compileCodeSplitVirtualRoute","config","getConfig","pathToFileURL","fileURLToPath"],"mappings":"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"}
|
|
@@ -77,11 +77,14 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
77
77
|
configResolved() {
|
|
78
78
|
initConfigAndGenerator();
|
|
79
79
|
},
|
|
80
|
-
|
|
80
|
+
applyToEnvironment(environment) {
|
|
81
81
|
var _a, _b;
|
|
82
|
-
if ((
|
|
83
|
-
return;
|
|
82
|
+
if ((_b = (_a = userConfig.plugin) == null ? void 0 : _a.vite) == null ? void 0 : _b.environmentName) {
|
|
83
|
+
return userConfig.plugin.vite.environmentName === environment.name;
|
|
84
84
|
}
|
|
85
|
+
return true;
|
|
86
|
+
},
|
|
87
|
+
async buildStart() {
|
|
85
88
|
await generate();
|
|
86
89
|
},
|
|
87
90
|
sharedDuringBuild: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-generator-plugin.cjs","sources":["../../../src/core/router-generator-plugin.ts"],"sourcesContent":["import { isAbsolute, join, normalize } from 'node:path'\nimport { Generator, resolveConfigPath } from '@tanstack/router-generator'\nimport { getConfig } from './config'\n\nimport type { GeneratorEvent } from '@tanstack/router-generator'\nimport type { FSWatcher } from 'chokidar'\nimport type { UnpluginFactory } from 'unplugin'\nimport type { Config } from './config'\n\nconst PLUGIN_NAME = 'unplugin:router-generator'\n\nexport const unpluginRouterGeneratorFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}) => {\n const ROOT: string = process.cwd()\n let userConfig = options as Config\n let generator: Generator\n\n const routeGenerationDisabled = () =>\n userConfig.enableRouteGeneration === false\n const getRoutesDirectoryPath = () => {\n return isAbsolute(userConfig.routesDirectory)\n ? userConfig.routesDirectory\n : join(ROOT, userConfig.routesDirectory)\n }\n\n const initConfigAndGenerator = () => {\n userConfig = getConfig(options, ROOT)\n generator = new Generator({\n config: userConfig,\n root: ROOT,\n })\n }\n\n const generate = async (opts?: {\n file: string\n event: 'create' | 'update' | 'delete'\n }) => {\n if (routeGenerationDisabled()) {\n return\n }\n let generatorEvent: GeneratorEvent | undefined = undefined\n if (opts) {\n const filePath = normalize(opts.file)\n if (filePath === resolveConfigPath({ configDirectory: ROOT })) {\n initConfigAndGenerator()\n return\n }\n generatorEvent = { path: filePath, type: opts.event }\n }\n\n try {\n await generator.run(generatorEvent)\n globalThis.TSR_ROUTES_BY_ID_MAP = generator.getRoutesByFileMap()\n } catch (e) {\n console.error(e)\n }\n }\n\n return {\n name: 'tanstack:router-generator',\n enforce: 'pre',\n async watchChange(id, { event }) {\n await generate({\n file: id,\n event,\n })\n },\n async buildStart() {\n await generate()\n },\n vite: {\n configResolved() {\n initConfigAndGenerator()\n },\n
|
|
1
|
+
{"version":3,"file":"router-generator-plugin.cjs","sources":["../../../src/core/router-generator-plugin.ts"],"sourcesContent":["import { isAbsolute, join, normalize } from 'node:path'\nimport { Generator, resolveConfigPath } from '@tanstack/router-generator'\nimport { getConfig } from './config'\n\nimport type { GeneratorEvent } from '@tanstack/router-generator'\nimport type { FSWatcher } from 'chokidar'\nimport type { UnpluginFactory } from 'unplugin'\nimport type { Config } from './config'\n\nconst PLUGIN_NAME = 'unplugin:router-generator'\n\nexport const unpluginRouterGeneratorFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}) => {\n const ROOT: string = process.cwd()\n let userConfig = options as Config\n let generator: Generator\n\n const routeGenerationDisabled = () =>\n userConfig.enableRouteGeneration === false\n const getRoutesDirectoryPath = () => {\n return isAbsolute(userConfig.routesDirectory)\n ? userConfig.routesDirectory\n : join(ROOT, userConfig.routesDirectory)\n }\n\n const initConfigAndGenerator = () => {\n userConfig = getConfig(options, ROOT)\n generator = new Generator({\n config: userConfig,\n root: ROOT,\n })\n }\n\n const generate = async (opts?: {\n file: string\n event: 'create' | 'update' | 'delete'\n }) => {\n if (routeGenerationDisabled()) {\n return\n }\n let generatorEvent: GeneratorEvent | undefined = undefined\n if (opts) {\n const filePath = normalize(opts.file)\n if (filePath === resolveConfigPath({ configDirectory: ROOT })) {\n initConfigAndGenerator()\n return\n }\n generatorEvent = { path: filePath, type: opts.event }\n }\n\n try {\n await generator.run(generatorEvent)\n globalThis.TSR_ROUTES_BY_ID_MAP = generator.getRoutesByFileMap()\n } catch (e) {\n console.error(e)\n }\n }\n\n return {\n name: 'tanstack:router-generator',\n enforce: 'pre',\n async watchChange(id, { event }) {\n await generate({\n file: id,\n event,\n })\n },\n async buildStart() {\n await generate()\n },\n vite: {\n configResolved() {\n initConfigAndGenerator()\n },\n applyToEnvironment(environment) {\n if (userConfig.plugin?.vite?.environmentName) {\n return userConfig.plugin.vite.environmentName === environment.name\n }\n return true\n },\n async buildStart() {\n await generate()\n },\n sharedDuringBuild: true,\n },\n rspack(compiler) {\n initConfigAndGenerator()\n\n let handle: FSWatcher | null = null\n\n compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate())\n\n compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {\n if (handle) {\n return\n }\n\n // rspack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n handle = chokidar\n .watch(routesDirectoryPath, { ignoreInitial: true })\n .on('add', (file) => generate({ file, event: 'create' }))\n\n await generate()\n })\n\n compiler.hooks.watchClose.tap(PLUGIN_NAME, async () => {\n if (handle) {\n await handle.close()\n }\n })\n },\n webpack(compiler) {\n initConfigAndGenerator()\n\n let handle: FSWatcher | null = null\n\n compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate())\n\n compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {\n if (handle) {\n return\n }\n\n // webpack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n handle = chokidar\n .watch(routesDirectoryPath, { ignoreInitial: true })\n .on('add', (file) => generate({ file, event: 'create' }))\n\n await generate()\n })\n\n compiler.hooks.watchClose.tap(PLUGIN_NAME, async () => {\n if (handle) {\n await handle.close()\n }\n })\n\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': route-tree generation done')\n })\n },\n }\n}\n"],"names":["isAbsolute","join","getConfig","Generator","normalize","resolveConfigPath"],"mappings":"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"}
|
|
@@ -3,7 +3,15 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const routerUtils = require("@tanstack/router-utils");
|
|
4
4
|
const routeHmrStatement = require("./route-hmr-statement.cjs");
|
|
5
5
|
const utils = require("./utils.cjs");
|
|
6
|
-
const
|
|
6
|
+
const config = require("./config.cjs");
|
|
7
|
+
const includeCode = [
|
|
8
|
+
"createFileRoute(",
|
|
9
|
+
"createRootRoute(",
|
|
10
|
+
"createRootRouteWithContext("
|
|
11
|
+
];
|
|
12
|
+
const unpluginRouterHmrFactory = (options = {}) => {
|
|
13
|
+
let ROOT = process.cwd();
|
|
14
|
+
let userConfig = options;
|
|
7
15
|
return {
|
|
8
16
|
name: "tanstack-router:hmr",
|
|
9
17
|
enforce: "pre",
|
|
@@ -11,7 +19,9 @@ const unpluginRouterHmrFactory = () => {
|
|
|
11
19
|
filter: {
|
|
12
20
|
// this is necessary for webpack / rspack to avoid matching .html files
|
|
13
21
|
id: /\.(m|c)?(j|t)sx?$/,
|
|
14
|
-
code:
|
|
22
|
+
code: {
|
|
23
|
+
include: includeCode
|
|
24
|
+
}
|
|
15
25
|
},
|
|
16
26
|
handler(code, id) {
|
|
17
27
|
var _a;
|
|
@@ -32,6 +42,19 @@ const unpluginRouterHmrFactory = () => {
|
|
|
32
42
|
}
|
|
33
43
|
return result;
|
|
34
44
|
}
|
|
45
|
+
},
|
|
46
|
+
vite: {
|
|
47
|
+
configResolved(config$1) {
|
|
48
|
+
ROOT = config$1.root;
|
|
49
|
+
userConfig = config.getConfig(options, ROOT);
|
|
50
|
+
},
|
|
51
|
+
applyToEnvironment(environment) {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
if ((_b = (_a = userConfig.plugin) == null ? void 0 : _a.vite) == null ? void 0 : _b.environmentName) {
|
|
54
|
+
return userConfig.plugin.vite.environmentName === environment.name;
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
35
58
|
}
|
|
36
59
|
};
|
|
37
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-hmr-plugin.cjs","sources":["../../../src/core/router-hmr-plugin.ts"],"sourcesContent":["import { generateFromAst, logDiff, parseAst } from '@tanstack/router-utils'\nimport { routeHmrStatement } from './route-hmr-statement'\nimport { debug } from './utils'\nimport
|
|
1
|
+
{"version":3,"file":"router-hmr-plugin.cjs","sources":["../../../src/core/router-hmr-plugin.ts"],"sourcesContent":["import { generateFromAst, logDiff, parseAst } from '@tanstack/router-utils'\nimport { routeHmrStatement } from './route-hmr-statement'\nimport { debug } from './utils'\nimport { getConfig } from './config'\nimport type { UnpluginFactory } from 'unplugin'\nimport type { Config } from './config'\n\n/**\n * This plugin adds HMR support for file routes.\n * It is only added to the composed plugin in dev when autoCodeSplitting is disabled, since the code splitting plugin\n * handles HMR for code-split routes itself.\n */\n\nconst includeCode = [\n 'createFileRoute(',\n 'createRootRoute(',\n 'createRootRouteWithContext(',\n]\nexport const unpluginRouterHmrFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n return {\n name: 'tanstack-router:hmr',\n enforce: 'pre',\n transform: {\n filter: {\n // this is necessary for webpack / rspack to avoid matching .html files\n id: /\\.(m|c)?(j|t)sx?$/,\n code: {\n include: includeCode,\n },\n },\n handler(code, id) {\n if (!globalThis.TSR_ROUTES_BY_ID_MAP?.has(id)) {\n return null\n }\n\n if (debug) console.info('Adding HMR handling to route ', id)\n\n const ast = parseAst({ code })\n ast.program.body.push(routeHmrStatement)\n const result = generateFromAst(ast, {\n sourceMaps: true,\n filename: id,\n sourceFileName: id,\n })\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n return result\n },\n },\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n applyToEnvironment(environment) {\n if (userConfig.plugin?.vite?.environmentName) {\n return userConfig.plugin.vite.environmentName === environment.name\n }\n return true\n },\n },\n }\n}\n"],"names":["debug","parseAst","routeHmrStatement","generateFromAst","logDiff","config","getConfig"],"mappings":";;;;;;AAaA,MAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACF;AACO,MAAM,2BAET,CAAC,UAAU,OAAO;AAChB,MAAA,OAAe,QAAQ,IAAI;AAC/B,MAAI,aAAa;AAEV,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,MACT,QAAQ;AAAA;AAAA,QAEN,IAAI;AAAA,QACJ,MAAM;AAAA,UACJ,SAAS;AAAA,QAAA;AAAA,MAEb;AAAA,MACA,QAAQ,MAAM,IAAI;;AAChB,YAAI,GAAC,gBAAW,yBAAX,mBAAiC,IAAI,MAAK;AACtC,iBAAA;AAAA,QAAA;AAGT,YAAIA,MAAO,MAAA,SAAQ,KAAK,iCAAiC,EAAE;AAE3D,cAAM,MAAMC,YAAAA,SAAS,EAAE,MAAM;AACzB,YAAA,QAAQ,KAAK,KAAKC,kBAAAA,iBAAiB;AACjC,cAAA,SAASC,4BAAgB,KAAK;AAAA,UAClC,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,gBAAgB;AAAA,QAAA,CACjB;AACD,YAAIH,aAAO;AACDI,8BAAA,MAAM,OAAO,IAAI;AACzB,kBAAQ,IAAI,aAAa,OAAO,OAAO,MAAM;AAAA,QAAA;AAExC,eAAA;AAAA,MAAA;AAAA,IAEX;AAAA,IACA,MAAM;AAAA,MACJ,eAAeC,UAAQ;AACrB,eAAOA,SAAO;AACD,qBAAAC,OAAAA,UAAU,SAAS,IAAI;AAAA,MACtC;AAAA,MACA,mBAAmB,aAAa;;AAC1B,aAAA,sBAAW,WAAX,mBAAmB,SAAnB,mBAAyB,iBAAiB;AAC5C,iBAAO,WAAW,OAAO,KAAK,oBAAoB,YAAY;AAAA,QAAA;AAEzD,eAAA;AAAA,MAAA;AAAA,IACT;AAAA,EAEJ;AACF;;"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import { Config } from './config.cjs';
|
|
2
1
|
import { UnpluginFactory } from 'unplugin';
|
|
3
|
-
|
|
4
|
-
* This plugin adds HMR support for file routes.
|
|
5
|
-
* It is only added to the composed plugin in dev when autoCodeSplitting is disabled, since the code splitting plugin
|
|
6
|
-
* handles HMR for code-split routes itself.
|
|
7
|
-
*/
|
|
2
|
+
import { Config } from './config.cjs';
|
|
8
3
|
export declare const unpluginRouterHmrFactory: UnpluginFactory<Partial<Config> | undefined>;
|
package/dist/cjs/esbuild.d.cts
CHANGED
|
@@ -26,6 +26,11 @@ declare const TanStackRouterGeneratorEsbuild: (options?: Partial<{
|
|
|
26
26
|
tmpDir: string;
|
|
27
27
|
enableRouteGeneration?: boolean | undefined;
|
|
28
28
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
29
|
+
plugin?: {
|
|
30
|
+
vite?: {
|
|
31
|
+
environmentName?: string | undefined;
|
|
32
|
+
} | undefined;
|
|
33
|
+
} | undefined;
|
|
29
34
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
30
35
|
routeFilePrefix?: string | undefined;
|
|
31
36
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -68,6 +73,11 @@ declare const TanStackRouterCodeSplitterEsbuild: (options?: Partial<{
|
|
|
68
73
|
tmpDir: string;
|
|
69
74
|
enableRouteGeneration?: boolean | undefined;
|
|
70
75
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
76
|
+
plugin?: {
|
|
77
|
+
vite?: {
|
|
78
|
+
environmentName?: string | undefined;
|
|
79
|
+
} | undefined;
|
|
80
|
+
} | undefined;
|
|
71
81
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
72
82
|
routeFilePrefix?: string | undefined;
|
|
73
83
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -110,6 +120,11 @@ declare const TanStackRouterEsbuild: (options?: Partial<{
|
|
|
110
120
|
tmpDir: string;
|
|
111
121
|
enableRouteGeneration?: boolean | undefined;
|
|
112
122
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
123
|
+
plugin?: {
|
|
124
|
+
vite?: {
|
|
125
|
+
environmentName?: string | undefined;
|
|
126
|
+
} | undefined;
|
|
127
|
+
} | undefined;
|
|
113
128
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
114
129
|
routeFilePrefix?: string | undefined;
|
|
115
130
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -143,6 +158,11 @@ declare const tanstackRouter: (options?: Partial<{
|
|
|
143
158
|
tmpDir: string;
|
|
144
159
|
enableRouteGeneration?: boolean | undefined;
|
|
145
160
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
161
|
+
plugin?: {
|
|
162
|
+
vite?: {
|
|
163
|
+
environmentName?: string | undefined;
|
|
164
|
+
} | undefined;
|
|
165
|
+
} | undefined;
|
|
146
166
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
147
167
|
routeFilePrefix?: string | undefined;
|
|
148
168
|
routeFileIgnorePattern?: string | undefined;
|
package/dist/cjs/rspack.d.cts
CHANGED
|
@@ -30,6 +30,11 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
|
|
|
30
30
|
tmpDir: string;
|
|
31
31
|
enableRouteGeneration?: boolean | undefined;
|
|
32
32
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
33
|
+
plugin?: {
|
|
34
|
+
vite?: {
|
|
35
|
+
environmentName?: string | undefined;
|
|
36
|
+
} | undefined;
|
|
37
|
+
} | undefined;
|
|
33
38
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
34
39
|
routeFilePrefix?: string | undefined;
|
|
35
40
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -76,6 +81,11 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
|
|
|
76
81
|
tmpDir: string;
|
|
77
82
|
enableRouteGeneration?: boolean | undefined;
|
|
78
83
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
84
|
+
plugin?: {
|
|
85
|
+
vite?: {
|
|
86
|
+
environmentName?: string | undefined;
|
|
87
|
+
} | undefined;
|
|
88
|
+
} | undefined;
|
|
79
89
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
80
90
|
routeFilePrefix?: string | undefined;
|
|
81
91
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -122,6 +132,11 @@ declare const TanStackRouterRspack: (options?: Partial<{
|
|
|
122
132
|
tmpDir: string;
|
|
123
133
|
enableRouteGeneration?: boolean | undefined;
|
|
124
134
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
135
|
+
plugin?: {
|
|
136
|
+
vite?: {
|
|
137
|
+
environmentName?: string | undefined;
|
|
138
|
+
} | undefined;
|
|
139
|
+
} | undefined;
|
|
125
140
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
126
141
|
routeFilePrefix?: string | undefined;
|
|
127
142
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -155,6 +170,11 @@ declare const tanstackRouter: (options?: Partial<{
|
|
|
155
170
|
tmpDir: string;
|
|
156
171
|
enableRouteGeneration?: boolean | undefined;
|
|
157
172
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
173
|
+
plugin?: {
|
|
174
|
+
vite?: {
|
|
175
|
+
environmentName?: string | undefined;
|
|
176
|
+
} | undefined;
|
|
177
|
+
} | undefined;
|
|
158
178
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
159
179
|
routeFilePrefix?: string | undefined;
|
|
160
180
|
routeFileIgnorePattern?: string | undefined;
|
package/dist/cjs/vite.d.cts
CHANGED
|
@@ -17,6 +17,11 @@ declare const tanstackRouterAutoImport: (options?: Partial<{
|
|
|
17
17
|
tmpDir: string;
|
|
18
18
|
enableRouteGeneration?: boolean | undefined;
|
|
19
19
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
20
|
+
plugin?: {
|
|
21
|
+
vite?: {
|
|
22
|
+
environmentName?: string | undefined;
|
|
23
|
+
} | undefined;
|
|
24
|
+
} | undefined;
|
|
20
25
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
21
26
|
routeFilePrefix?: string | undefined;
|
|
22
27
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -59,6 +64,11 @@ declare const tanstackRouterGenerator: (options?: Partial<{
|
|
|
59
64
|
tmpDir: string;
|
|
60
65
|
enableRouteGeneration?: boolean | undefined;
|
|
61
66
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
67
|
+
plugin?: {
|
|
68
|
+
vite?: {
|
|
69
|
+
environmentName?: string | undefined;
|
|
70
|
+
} | undefined;
|
|
71
|
+
} | undefined;
|
|
62
72
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
63
73
|
routeFilePrefix?: string | undefined;
|
|
64
74
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -101,6 +111,11 @@ declare const tanStackRouterCodeSplitter: (options?: Partial<{
|
|
|
101
111
|
tmpDir: string;
|
|
102
112
|
enableRouteGeneration?: boolean | undefined;
|
|
103
113
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
114
|
+
plugin?: {
|
|
115
|
+
vite?: {
|
|
116
|
+
environmentName?: string | undefined;
|
|
117
|
+
} | undefined;
|
|
118
|
+
} | undefined;
|
|
104
119
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
105
120
|
routeFilePrefix?: string | undefined;
|
|
106
121
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -143,6 +158,11 @@ declare const tanstackRouter: (options?: Partial<{
|
|
|
143
158
|
tmpDir: string;
|
|
144
159
|
enableRouteGeneration?: boolean | undefined;
|
|
145
160
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
161
|
+
plugin?: {
|
|
162
|
+
vite?: {
|
|
163
|
+
environmentName?: string | undefined;
|
|
164
|
+
} | undefined;
|
|
165
|
+
} | undefined;
|
|
146
166
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
147
167
|
routeFilePrefix?: string | undefined;
|
|
148
168
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -179,6 +199,11 @@ declare const TanStackRouterVite: (options?: Partial<{
|
|
|
179
199
|
tmpDir: string;
|
|
180
200
|
enableRouteGeneration?: boolean | undefined;
|
|
181
201
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
202
|
+
plugin?: {
|
|
203
|
+
vite?: {
|
|
204
|
+
environmentName?: string | undefined;
|
|
205
|
+
} | undefined;
|
|
206
|
+
} | undefined;
|
|
182
207
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
183
208
|
routeFilePrefix?: string | undefined;
|
|
184
209
|
routeFileIgnorePattern?: string | undefined;
|
package/dist/cjs/webpack.d.cts
CHANGED
|
@@ -26,6 +26,11 @@ declare const TanStackRouterGeneratorWebpack: (options?: Partial<{
|
|
|
26
26
|
tmpDir: string;
|
|
27
27
|
enableRouteGeneration?: boolean | undefined;
|
|
28
28
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
29
|
+
plugin?: {
|
|
30
|
+
vite?: {
|
|
31
|
+
environmentName?: string | undefined;
|
|
32
|
+
} | undefined;
|
|
33
|
+
} | undefined;
|
|
29
34
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
30
35
|
routeFilePrefix?: string | undefined;
|
|
31
36
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -68,6 +73,11 @@ declare const TanStackRouterCodeSplitterWebpack: (options?: Partial<{
|
|
|
68
73
|
tmpDir: string;
|
|
69
74
|
enableRouteGeneration?: boolean | undefined;
|
|
70
75
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
76
|
+
plugin?: {
|
|
77
|
+
vite?: {
|
|
78
|
+
environmentName?: string | undefined;
|
|
79
|
+
} | undefined;
|
|
80
|
+
} | undefined;
|
|
71
81
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
72
82
|
routeFilePrefix?: string | undefined;
|
|
73
83
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -110,6 +120,11 @@ declare const TanStackRouterWebpack: (options?: Partial<{
|
|
|
110
120
|
tmpDir: string;
|
|
111
121
|
enableRouteGeneration?: boolean | undefined;
|
|
112
122
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
123
|
+
plugin?: {
|
|
124
|
+
vite?: {
|
|
125
|
+
environmentName?: string | undefined;
|
|
126
|
+
} | undefined;
|
|
127
|
+
} | undefined;
|
|
113
128
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
114
129
|
routeFilePrefix?: string | undefined;
|
|
115
130
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -143,6 +158,11 @@ declare const tanstackRouter: (options?: Partial<{
|
|
|
143
158
|
tmpDir: string;
|
|
144
159
|
enableRouteGeneration?: boolean | undefined;
|
|
145
160
|
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
161
|
+
plugin?: {
|
|
162
|
+
vite?: {
|
|
163
|
+
environmentName?: string | undefined;
|
|
164
|
+
} | undefined;
|
|
165
|
+
} | undefined;
|
|
146
166
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
147
167
|
routeFilePrefix?: string | undefined;
|
|
148
168
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { GeneratorResult, ParseAstOptions } from '@tanstack/router-utils';
|
|
2
2
|
import { CodeSplitGroupings, SplitRouteIdentNodes } from '../constants.js';
|
|
3
|
-
import { Config } from '../config.js';
|
|
3
|
+
import { Config, DeletableNodes } from '../config.js';
|
|
4
4
|
export declare function compileCodeSplitReferenceRoute(opts: ParseAstOptions & {
|
|
5
|
-
runtimeEnv: 'dev' | 'prod';
|
|
6
5
|
codeSplitGroupings: CodeSplitGroupings;
|
|
6
|
+
deleteNodes?: Set<DeletableNodes>;
|
|
7
7
|
targetFramework: Config['target'];
|
|
8
8
|
filename: string;
|
|
9
9
|
id: string;
|
|
10
|
+
addHmr?: boolean;
|
|
10
11
|
}): GeneratorResult;
|
|
11
12
|
export declare function compileCodeSplitVirtualRoute(opts: ParseAstOptions & {
|
|
12
13
|
splitTargets: Array<SplitRouteIdentNodes>;
|
|
@@ -85,6 +85,15 @@ function removeSplitSearchParamFromFilename(filename) {
|
|
|
85
85
|
const [bareFilename] = filename.split("?");
|
|
86
86
|
return bareFilename;
|
|
87
87
|
}
|
|
88
|
+
const splittableCreateRouteFns = ["createFileRoute"];
|
|
89
|
+
const unsplittableCreateRouteFns = [
|
|
90
|
+
"createRootRoute",
|
|
91
|
+
"createRootRouteWithContext"
|
|
92
|
+
];
|
|
93
|
+
const allCreateRouteFns = [
|
|
94
|
+
...splittableCreateRouteFns,
|
|
95
|
+
...unsplittableCreateRouteFns
|
|
96
|
+
];
|
|
88
97
|
function compileCodeSplitReferenceRoute(opts) {
|
|
89
98
|
const ast = parseAst(opts);
|
|
90
99
|
const refIdents = findReferencedIdentifiers(ast);
|
|
@@ -97,6 +106,7 @@ function compileCodeSplitReferenceRoute(opts) {
|
|
|
97
106
|
const PACKAGE = frameworkOptions.package;
|
|
98
107
|
const LAZY_ROUTE_COMPONENT_IDENT = frameworkOptions.idents.lazyRouteComponent;
|
|
99
108
|
const LAZY_FN_IDENT = frameworkOptions.idents.lazyFn;
|
|
109
|
+
let createRouteFn;
|
|
100
110
|
babel.traverse(ast, {
|
|
101
111
|
Program: {
|
|
102
112
|
enter(programPath) {
|
|
@@ -106,20 +116,41 @@ function compileCodeSplitReferenceRoute(opts) {
|
|
|
106
116
|
if (!t.isIdentifier(path.node.callee)) {
|
|
107
117
|
return;
|
|
108
118
|
}
|
|
109
|
-
if (!(path.node.callee.name
|
|
119
|
+
if (!allCreateRouteFns.includes(path.node.callee.name)) {
|
|
110
120
|
return;
|
|
111
121
|
}
|
|
122
|
+
createRouteFn = path.node.callee.name;
|
|
112
123
|
function babelHandleReference(routeOptions) {
|
|
113
124
|
const hasImportedOrDefinedIdentifier = (name) => {
|
|
114
125
|
return programPath.scope.hasBinding(name);
|
|
115
126
|
};
|
|
116
127
|
if (t.isObjectExpression(routeOptions)) {
|
|
128
|
+
if (opts.deleteNodes && opts.deleteNodes.size > 0) {
|
|
129
|
+
routeOptions.properties = routeOptions.properties.filter(
|
|
130
|
+
(prop) => {
|
|
131
|
+
var _a;
|
|
132
|
+
if (t.isObjectProperty(prop)) {
|
|
133
|
+
if (t.isIdentifier(prop.key)) {
|
|
134
|
+
if ((_a = opts.deleteNodes) == null ? void 0 : _a.has(prop.key.name)) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
if (!splittableCreateRouteFns.includes(createRouteFn)) {
|
|
144
|
+
if (opts.addHmr) {
|
|
145
|
+
programPath.pushContainer("body", routeHmrStatement);
|
|
146
|
+
}
|
|
147
|
+
return programPath.stop();
|
|
148
|
+
}
|
|
117
149
|
routeOptions.properties.forEach((prop) => {
|
|
118
150
|
if (t.isObjectProperty(prop)) {
|
|
119
151
|
if (t.isIdentifier(prop.key)) {
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
);
|
|
152
|
+
const key = prop.key.name;
|
|
153
|
+
const codeSplitGroupingByKey = findIndexForSplitNode(key);
|
|
123
154
|
if (codeSplitGroupingByKey === -1) {
|
|
124
155
|
return;
|
|
125
156
|
}
|
|
@@ -128,7 +159,6 @@ function compileCodeSplitReferenceRoute(opts) {
|
|
|
128
159
|
opts.codeSplitGroupings[codeSplitGroupingByKey]
|
|
129
160
|
)
|
|
130
161
|
];
|
|
131
|
-
const key = prop.key.name;
|
|
132
162
|
const isNodeConfigAvailable = SPLIT_NODES_CONFIG.has(
|
|
133
163
|
key
|
|
134
164
|
);
|
|
@@ -178,16 +208,10 @@ function compileCodeSplitReferenceRoute(opts) {
|
|
|
178
208
|
)()
|
|
179
209
|
]);
|
|
180
210
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
} else {
|
|
186
|
-
prop.value = template.expression(
|
|
187
|
-
`${LAZY_ROUTE_COMPONENT_IDENT}(${splitNodeMeta.localImporterIdent}, '${splitNodeMeta.exporterIdent}')`
|
|
188
|
-
)();
|
|
189
|
-
}
|
|
190
|
-
if (opts.runtimeEnv !== "prod") {
|
|
211
|
+
prop.value = template.expression(
|
|
212
|
+
`${LAZY_ROUTE_COMPONENT_IDENT}(${splitNodeMeta.localImporterIdent}, '${splitNodeMeta.exporterIdent}')`
|
|
213
|
+
)();
|
|
214
|
+
if (opts.addHmr) {
|
|
191
215
|
programPath.pushContainer("body", routeHmrStatement);
|
|
192
216
|
}
|
|
193
217
|
}
|
|
@@ -293,7 +317,7 @@ function compileCodeSplitVirtualRoute(opts) {
|
|
|
293
317
|
if (!t.isIdentifier(path.node.callee)) {
|
|
294
318
|
return;
|
|
295
319
|
}
|
|
296
|
-
if (!(path.node.callee.name
|
|
320
|
+
if (!splittableCreateRouteFns.includes(path.node.callee.name)) {
|
|
297
321
|
return;
|
|
298
322
|
}
|
|
299
323
|
function babelHandleVirtual(options) {
|
|
@@ -618,11 +642,9 @@ function resolveIdentifier(path, node) {
|
|
|
618
642
|
return node;
|
|
619
643
|
}
|
|
620
644
|
function removeIdentifierLiteral(path, node) {
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
binding.path.remove();
|
|
625
|
-
}
|
|
645
|
+
const binding = path.scope.getBinding(node.name);
|
|
646
|
+
if (binding) {
|
|
647
|
+
binding.path.remove();
|
|
626
648
|
}
|
|
627
649
|
}
|
|
628
650
|
function hasExport(ast, node) {
|